テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(etiles report) PlayFabをバックエンドに使うようにした

1ヶ月ぶりくらいになると思うが, Betaを更新した.

https://play.google.com/store/apps/details?id=jp.gr.java_conf.etiles.android

以前はGoogle Play Serviceを使ってリーダーボードを提供していたが, iOS版もサポートすることを考えた時には両プラットフォームに対応したバックエンドを使うことが望ましいため, PlayFabを検討していた. この検討には長い期間をかけた. 実装自体はGWの数日で終わった.

Former PopCap exec starts PlayFab to help game studios with back-end support – GeekWire techcrunch.com

PlayFabはベンチャーが作ったモバイルゲーム専用のバックエンドサービスで, MSが今年のはじめに買収したもの. MSが買収したものなので, 他の野良サービスよりは信頼出来ると言えるし, Azureを利用してサービスを提供するということであれば, サービスが途絶える可能性は十分に低いと言える. 仮にPlayFabがディスコンとなっても, その時には他のより良いサービスが出来ていると思うし, 十分なユーザ数がいるのであればおれが自作するという選択肢もある. 従って今このサービスを使うのは問題がないと考えた. むしろ, iOS版をいきなりディスコンとしたGoogle Play Serviceの方が信頼に足らない. 今後Android版も突然切るということも考えられる.

PlayFabの特徴は, 全てのAPIをRESTで定義していて, それを利用するための各言語向けライブラリを自動生成していることだ. Google Play ServiceはAndroid向けのライブラリを提供していて, react-nativeから使うためにはブリッジを実装する必要があったりして鬱陶しいが, RESTならば最悪ケースScala.jsから直接リクエストを発行することも出来る.

etilesはsriというライブラリを使ってScala.jsによってreact-nativeのコードを生成するというスタンスをとっているため, node.js向けのライブラリを使うことにした. ただし, 直接的には使うことが出来ないので, GitHub - parshap/node-libs-react-native: Node core modules for React Nativeを使っている. なぜこのようなワンクッションが必要かというのはRunning Node Modules in React Native · GitHubに設計思想含めよくまとまっているから気になる人は読んで欲しい. 似たようなライブラリはいくつかあるが, これが一番後発でstarは20程度しかないがもっとも良いと判断した. やってることは当たり前のことで難しくなく, かつ多くの人から必要とされているため, 信頼に足る. ついでにいうと, Node.jsのライブラリを騙すためにhttps://github.com/parshap/node-libs-react-native/issues/8に書いたように無意味なバージョンを与えるハックもしているが, コードを大胆にいじるということではないし, このハックがダメだと分かってしまった場合にはREST APIを叩くライブラリを自分で書けばいいだけなので, このまま行くことにした.

バックエンドがPlayFabに置き換わったことで, 今はまだAndroidでしかリリースしていないが, 今後iOS向けにもリリースすることを予定している. 実際にiOSのemulatorではetilesはadも含めて完全に動いており, UIの違いで多少直すべきところはあるがAndroid版と同水準にある.

今後はまずAndroid版での正式リリースを目指す. 今回のリリースはPlayFabを正しく使えることがメインで, UIに関しては最小限なのでもう少しマシにする. 他には, アプリを広めていくシステムがないため, Shareなどの実装を検討している. iOSについては, Androidで実績を詰んだ後にリリースとなる. Androidリリースが5月, iOSが6月を計画している.

最後になるが, アカウントにアイコンをつけることについては技術的には出来るものの, 検討が必要だと思っている. 例えば, エロ画像をアイコンにするなどされた場合にはetilesが場合によってはBANされる可能性もあるため, これを弾くか, コントロール出来る仕組みが必要だと思う. 今考えてるのは, アイコンが表示されるのはトップ5までで, それ以下の人は表示されないという方法だ. これならば, 自分でチェックしてBANすることも出来るし, アイコンを載せることに付加価値をつけることも出来る. また, ある程度ユーザがいる場合に上位に載せるプレイヤーはetilesをまじめにやるプレイヤーだからそういうバカな真似はしないと考えられる. エロ画像の他にも宗教的・政治的な画像も禁止したいため, 究極的にはGoogle Games IDのように決められたアイコンセットの中から選ばせるとか, あるいはより信頼性の高いFacebookの画像を使うとか色々アイデアはある. すべてを検討した上で, やるかやらないかも含めて決定する.

etilesでプレイヤーを増やし, adでお金を稼ぎ, ホームジムと実況部屋のある家に住む.