いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

ランキング表を表示できるようにしました

 シューティングゲームを公開しましたが、ランキング機能は実装しませんでした。しかしレビューしていただいた中に「他者とのポイントの競い合いがないのは少し残念」というコメントが。

gameappch.com

そうですよね。インターネット時代なのです。ランキングくらい表示できた方がいいに決まっています。実装しなかった理由はいくつか記事にしています。

www.omoshiro-suugaku.com

実装できたらあとでアップデートすればいいか、と思っていました。

 世間にある仕組みを利用するのではなく、もっと自分で管理できる(従って、何かエラーが出てもその理由が分かりやすい)方法はないのかな、と考えて調べているとGAS(Google Apps Script)というのが見つかりました。Googleドライブ上にスプレッドシートを用意しておき、アプリからそこへアクセスします。スコアなどのデータを受け取ったら、スコア順に並べ直してアプリに送ります。アプリ側ではそれをランキング表にまとめ、表示するのです。スプレッドシートのデータを並べ直したりするのはやはりドライブに保存したスクリプトで行います。初めてだったので、これまたとにかくあっちでもこっちでもつまづきましたが、ようやくうまくいってさっきアプリの公開の手続きをしました。ランキング表はこんなのが表示されます。↓

f:id:Inuosann:20210730194650p:plain

 参考になる素晴らしいサイトもたくさんあるのですが、聞きたいポイントがずれていたりして、そのまま「コピペ」してもうまくいきません。それでもその情報を参考に(もちろん公式サイトも見て)何度も実験を繰り返しました。大変だったのは

①アプリとスプレッドシートの間でデータのやりとりができるようになるまで

②トンネルなどに入るなどで通信(ネット)が途絶えた場合の処理

③排他処理

でした。排他処理はぼくは初めてで面白かったんですが。要するに、ひとつのスプレッドシートを複数の人間で使うわけで、誰かがデータを書き込んでいたりソートをしている最中に別の誰かが読み書きに行ったりするとトラブルが起こるわけです。そのため、GASにはロックの仕組みが用意されています。誰かがシートをいじっている最中には他人には触らせないのです。

 もう大丈夫。未知のシステムを使うのではなく、自分でコーディングしたわけですから何をしようが自由自在です。今後はランキングはもちろんアプリ同士の簡単なやりとりも同じ方法で実現できると思います。面白いことができそうです。

 

 ゲームもいいけれど、次には変わったアプリ、ちょっと面白いアプリ、……みたいなのを書いてみようかな、と考えています。