見出し画像

課金をテストする

この記事は「GRIMOIRE アドベントカレンダー2021 ODD」の12個目の記事です

今回の記事はグリモアの天網兼Re:プロデューサーチーム所属のクラビノが担当します。

自己紹介

はじめまして。クラビノと申します。どうぞよろしくおねがいします。

私のエンジニアとしての始まりは1995年Windows会計ソフトのプログラマでした。その後 IT・Web業界を経験し、親会社であるHappy Elements株式会社で8年間エンジニアとしてゲーム開発を行いました。

そして2018年から2年間、管理部門の責任者をさせていただくまでの22年間、エンジニアとして開発に携わってきました。

2020年4月からはここグリモアにて Happy Elements 株式会社 から出向という形態でエンジニアとして参画させていただいています。

Happy Elements 共有ライブラリ

Happy Elements ではゲームタイトルごとのチームでそれぞれ開発が行われるのですが、技術を横展開しやすいように技術基盤を可能な範囲で揃えていたり、各チームが車輪の再開発を行わないように共有ライブラリを揃えていたりします。

今年の11月からAndroidアプリはGoogle Play Billing Library v3対応が必須になりましたが、ブレイブソード×ブレイズソウルもこれに対応するため、Happy Elements 共有ライブラリのひとつである課金共通基盤を利用して実装を行うことにしました。

課金を実装するためにはスマートフォンなどの実機で動作させて課金が正しく動いているかテストをしながら行う必要がありますが、テスト方法についてあまりまとまった情報がなかったため、今回の記事ではiOS・Androidそれぞれについて記載していきたいと思います。

iOS の場合

iOS版アプリを実機で動作させるためにはさまざまな手段がありますが、開発中は実装と確認を繰り返し行いたいため、実機への書き出しに時間がかからないことが重要です。

自動ビルド化してDeployGateやTestflightを利用するのも便利ですが、特にTestflightではアップロードから公開までに時間がかかることや、デバッグログの確認のしやすさから、私はPCからXcodeで書き出す方法を利用していました。

なお、デバッグログを出力するためには、Unity のBuild Setting をDevelopment Buildにする必要があります。

※DeployGate は株式会社デプロイゲートが提供するアプリテスト配信サービスです

使用されるアカウント

使用されるアカウントは方式(AppStore、AdHoc)ごとに異なっていて、通常のApple ID と SANDBOX用 Apple IDの2通りがあります。

Apple ID アカウント
設定 > 名前 をタップすると表示されます。

SANDBOX Apple ID
設定 > App Store をタップして表示される画面の下の方にSANDBOXアカウントが表示されます。

購入の中断テスト

iOSでは、以下のケースなどで購入が中断される場合があります。

  • 最新の利用規約に同意する必要がある

  • 期限切れの支払方法を更新する必要がある

App Store ConnectのSandbox テスターの設定で「このテスターの購入を中断する」にチェックを付けることで、SANDBOX環境上で特定ユーザーが購入した場合に利用規約を出すことができます。

チェックを付けて課金すると以下のような画面が表示され、購入が中断される挙動のテストを行うことができます。


ファミリー共有「購入と承認リクエスト」

iOSにはファミリー共有「購入と承認リクエスト」という機能があります。子供が購入を行うと親へ通知が届き、親がこれを承認するまで購入されない機能で、Androidのコンビニ決済と同じく遅延購入になります。

開発する上でこの機能にはひとつ厄介なことがあり、それはリリースするまでテストすることができないことです。子供の購入までは行えるのですが、親への通知が届かないため購入までを確認することができません。

App Store Connectからアプリを申請する際に「バージョンのリリース」を手動で行うように設定しておけば、「Pending Developer Release」の状態で事前にテストを行うことが可能です。

Android の場合

iOSとは異なりAndroidではPCからの書き出しでは課金のテストが行えません。Google Play Console にバイナリをアップロードしてGoogle Play ストアからインストールを行う必要があります。

内部テスト

Google Play Console にはリリース前のアプリをテストする用途として、内部テスト、クローズド テスト、オープンテストが用意されていますが、内部テスト以外はGoogleの審査が必要で更新に時間がかかるため内部テストを利用することをお薦めします。

内部テストで公開したアプリは、Google Play ストアから通常のアプリと同様にインストールすることができるようになります。

開発中は課金の挙動を試すために繰り返し内部テストから公開を行うことになると思いますが、なかなか反映されなくてイライラしながら待つ機会が増えると思います。

私が作業していたときは、概ね以下のような反映状況でした。

  • その日初めての更新は即座に反映される

  • 2回目以降はAndroidを再起動すると概ね反映される

  • Google Play ストアでアプリを検索する際に、アプリ名の後ろに数字を付けるなどこれまで入力したことのない名前で入力すると即座に反映される場合が多かった(ブレイブソード×ブレイズソウル 2など)

再起動や検索方法が反映を早めることに効果があるかどうかは不確かですが、イライラを抑えられなくなった場合はお試しください。

テスター

内部テストで公開したアプリをGoogle Play ストア上に表示するためには、Google Play Console にテスターとして登録し、「ウェブで参加」URLをブラウザから表示する必要があります。

すぐにはGoogle Play ストアにはテスター版は表示されず、30分くらい待つ必要があります。

請求されないように

テスターとして登録しただけでは、課金を行うと請求されてしまいます。
請求されないようにするためには、Google Play Console からライセンステスターへの登録が必要です。


その他

Development Build でバイナリを作成し内部テストとしてGoogle Play Consoleにアップロードを行おうとすると「Android App Bundleは署名されていません」というエラーが表示されてアップロードできません。

iOSとは異なりRelease BuildでもDebug.Logがlogcatで表示可能なため、ログを出す目的ならDevelopment Build である必要はありません。

最後に

ここまでお付き合いいただき、本当にありがとうございます!

今後もHappy Elements のノウハウも十二分に活用しながら中二病を救うゲームを開発していきたいと思います。

ということで、グリモアは一緒に【中二病を救う】側になってくれる仲間を大大大募集中です!

少しでも当社に興味を持って頂けましたら、是非とも下記の採用サイトを御覧ください!

※各社の会社名、製品名、サービス名は各社の商標または登録商標です。

読んでくださりありがとうございま――…… え?さぽーと…?いやいやいや!そんな恐れ多いですよ!でも、サポートいただけると、ゲーム開発が少しだけ楽になるかも…… あ!ごめんなさい、独り言ですっ!えへへへ……