• menu

イベントレポ!「PayPayアプリでのスピードと品質の両立への試行錯誤」

編集チーム

2022.09.08

2022年6月7日にLINE株式会社 / PayPay株式会社 / 株式会社ZOZO / ヤフー株式会社の4社合同でWWDC Extendedが開催されました。WWDC Extendedは、WWDCのメインセッション(Keynote)をさらに楽しむためのイベントとして、オンラインで開催され、今年はLINE、PayPay、ZOZOからもiOSエンジニアのみなさんにLT大会に登壇をしていただきました。

PayPayからは山本(PONTA)が参加し、「PayPayアプリでのスピードと品質の両立への試行錯誤」というテーマで話がありました。

本記事では当日のLTの内容をご紹介します。
※イベントは日本向けに行われたため、文中の資料は日本語のみでのご提供となります。

山本 直也(やまもと なおや)

山本 直也( PONTA )(やまもと なおや)

バックエンド エンジニア

2020年1月に iOSエンジニアとしてPayPayに入社しました。現在、Feature Teamにて主にto C向けの新機能開発に関わっています。

PayPayの開発サイクル

PayPayではサービスのリリース以降、一週間に1度リリースを行なっています。キャッシュレスサービスのなかで比較的後発であるPayPayは、スピード感を武器にしています。 しかし、スピード感を重視した結果、インシデントや不具合を頻発させることはあってはなりません。

そこで、PayPayではスピードと品質を両立させるために試行錯誤を繰り返してきました。 開発とテスト、リリースのサイクルは下記のイメージをご覧ください。

例えば青色がバージョン1、黄色がバージョン2だとして、月曜日にバージョン1のベータテストを開始し、金曜日に終了、問題がなければ次の月曜日にパブリックリリースのために申請を行います。

同時にその日にバージョン2のベータテストを開始します。これを毎週繰り返すサイクルになっています。このサイクルのなかで、スピードと品質を担保するために実施した施策をいくつか紹介します。

社員数百人を巻き込んだベータテスト

まずは、大規模社内ベータテストについてご紹介します。

これまでQAテストが完了したら、TestFlightの内部テスター機能を使って、開発チームメンバーやPdMに申請前に確認をしてもらっていました。
しかしそれだとテストの母数がかなり少ないという課題がありました。 私たちとしては、限りなくリリースのリスクは減らしていきたいので、TestFlightの外部テスター機能を使って、社員数百人でベータテストをしてもらう仕組みを作りました。

内部テストの場合はApp store connectにアカウント登録をしないといけなかったり、それにより余計な権限を与えてしまうので、大人数の場合はあまり向いていないです。 外部テスターの場合はベータテストだけできるという最低限の権限だけを付与することが可能です。

また、ベータテストをしてもらって、もし何か問題やフィードバックがあった場合は、気軽に投稿できるように、社内のSlackにフィードバック用のチャンネルを設けています。 そのチャンネルに何か投稿があった場合は、開発者やPdMが対応するようにしています。 レスポンスがなかったり、遅かったりすると徐々にワークしなくなるので、素早い返信をすることも心がけています。

開発内部だと、バイアスがかかっており、本来であれば気づけるような箇所というのもスルーしてしまうことがあります。プロジェクトに関係ない人が使ってくれることで、より実際のユーザに近いフィードバックをもらうことができています。 また、比較的大きな新機能がある場合は、Slackで内容の告知や念入りなテストのお願いもしています。

IFTTTを利用したSNS上に投稿されたネガティブフィードバックのモニタリング

次に、ネガティブフィードバックのモニタリングについてです。

これまで 、リリースした後にモニタリングに引っかからない不具合を検知するのが遅いという課題がありました。
フロントエンド特有の問題を検知することはなかなか難しいです。 クラッシュや API エラーなどは各スタンダードなモニタリングサービスがあり、問題が発生したら比較的容易に見つけることができます。

しかし例えば画面が崩れていたり、正しく画面遷移しないなどの不具合を検知することはなかなか難しいです。
そのため、PayPayではIFTTTを利用したSNSのモニタリングの仕組みを運用しています。 IFTTTとは、Webサービス同士をブロックのように組み合わせることができるサービスで、これを使ってPayPayではTiwittetとSlackを連携させて運用しています。例えば、「バグ」「不具合」「おかしい」「できない」などのネガティブな検索クエリに引っかかったネガティブフィードバックのツイートのリストをSlackのチャンネルに投稿するようにしています。

運用しているサービスの特性にもよりますが、関係ないツイートを拾ってしまうことも多いため、検索クエリにフィルタリングをするなどの調整が必要です。実際に運用するなかでは、比較的クリティカルな不具合が発生したときに一定の方々が呟いていくれて、私たちも早く検知することができた事例がいくつかありました。

機能をロールバックできるフューチャーフラグの導入

次にフューチャーフラグの導入についてです。 これまで、何か大きな不具合が見つかった場合に、修正やロールバックをするには アプリを申請して審査を待つという必要がありました。金融サービスの特性上それらが許されない場合もあります。そこで外部から動的に変更に加える必要がありました。

そこで、機能をロールバックできるように、機能ごとにオンオフすることができるフューチャーフラグの仕組みを導入し ました。 アプリが起動されるタイミングでフラグのリストを取得するようになっています。 この仕組みにより、問題を検知したら直ぐにロールバックすることが可能です。このフラグは単純にオンオフだけではなく、iOS,AndroidのどちらのOSなのか、どのバージョンから有効にするかなどの設定が可能です。

実装面でもVC(View Controler)レベルで差し替えることができ、低リスクでロールバックができるようにしています。
基本的に大きな新機能の場合や、 画面を作り直した場合はこのフラグを導入するようにしています。

最後に
PayPayでは、現在積極的にiOSエンジニアを募集しています。
現在PayPayには数十名のiOSエンジニアが在籍しており、10か国以上の国から多様なメンバーが集まっているチームになっています。App Store Award 2021トップAppランキング1位にもなったPayPayアプリをぜひ一緒に作っていきましょう!

対象職種
※採用予定人数に達し次第、募集を終了させていただきます。予めご了承ください。

iOS Engineer

その他の職種でも採用中です!

Android Engineer Kotlin Multiplatform Mobile Engineer

執筆:Naoya Yamamoto / 編集:Misaki
※社員の所属等は、取材当時のものです。