どうも、株式会社ヤプリのサバゲ部所属のわたなべです。
今回は、真面目にサバゲ部活動をしてたら、最終的にはなぜかアプリを作ることにまで行った話をしていきたいと思います。
サバゲって何?
エアガンを使って撃ち合いをするスポーツです。
銃を含めた全身に当たり判定があるので、どこに当たってもヒット(死亡扱い)になります。
基本的には自己申告なので、紳士淑女のスポーツとなります。
よくやるゲームルールは、こんな感じですね。
フラッグ戦:相手チームの電子フラッグを鳴らした方の勝ちのゲーム。1発でも当たるとそのゲームは退場
カウンター戦:ヒットされたら自陣に戻ってカウンターを1回進めて復活できるゲーム。カウンター数の少ないチームが勝ち。FPSっぽい
こういったゲームを5分くらいの短い時間で何度も遊びます。
サバゲのゲーム進行ってどうするの?
大抵のゲームでは、5分間などと時間を決めてゲームをすることになります。
この中でゲームマスターは、ゲームの開始、終了をお知らせする必要があるため、アラームを仕掛けたりしてゲーム時間を管理します。
もちろん、フィールド側に有償でお願いすることもできるのですが、毎回となるとお金ももったいないし…
何が困ったの?
そんな訳で、ゲームの進行を自分でやることになると、ちょっと困ったことになりました。
ストップウォッチを持ってずっと時間を見ていられればいいのですが、自分もゲームに参加する場合、なかなかそうもいきません。
だって、自分も必死でゲームをしているので。
そこで、カウントダウンなどの機能があるタイマーアプリを十数個ほどダウンロードして使ってみました。
ですが、残念ながら欲しい機能が全部入っているタイマーアプリが存在しなかったのです…
欲しいのは、
- ゲーム開始前カウントダウン*1
- ゲーム中の「適切な」カウントダウン
- ゲームの開始&終了時に、効果音としてホーン音を鳴らす
程度だったのに…
どう解決したの?
ここまで来れば、誰でも解決策は思いつきます。
そうです。
無ければ、作るのです(当たり前)
ちなみに、私はサーバエンジニアなのでアプリなんぞ作ったことがありませんが、そんなことは些細なことでしょう?
運良く、手元にほとんど使ってない安物Android9の端末があったので、それでサバゲタイマーアプリを作ることにしました。
何を作ればいいの?
まずは作る機能の洗い出しですね。欲しい機能としては、こんな感じです。
- ゲームの開始前カウントダウン(30秒、20秒、10,9,8,7,6,5,4,3,2,1)
- ゲーム開始時の大きなホーン音を鳴らす
- ゲーム中の「適切な」カウントダウン(3分、2分、1分、30秒、20秒、10,9,8,7,6,5,4,3,2,1)
- ゲーム終了時の大きなホーン音を鳴らす
ピックアップしてみると、なんでこの程度のモノがないのだろう?と不思議になりますね。
で、欲しい機能を技術要素に分解するとこんな感じで3つくらいで行けそうだし、ググってみると参考になりそうな情報も多そうです。
1. カウントダウンタイマー :【はじめてのAndroidアプリ開発】タイマーアプリを作ってみよう | CodeCampus
2. テキスト読み上げ :【Android】音声読み上げの実装 - tomokiの備忘録
3. サウンド再生 :[Android] SoundPool で効果音を鳴らしてみる
なんだこんなの簡単じゃん、すぐできるだろ、と適当に始めたのですが、もちろんそんなことはありませんでした。
アプリ開発者って、まじすげーな…
アプリってどう作るの?
もちろんアプリの作り方なぞ知らんので、ググって調べてやってみる、の繰り返しです。
Android Suditoを入れて、コードをちまちまと打ってシミュレータで動作確認して、動きそうなら端末繋いで動作確認して…
んー、なんか楽しい!
30年前に組み込みアプリを作ってた時のことを思うと、画面を出したり音を出したりするのが、とっても簡単でマジで楽しい!
あの頃はマジでロジックアナライザとか使ってデバッグしてたっけ…(遠い目)
で、そんなこんなで出来上がったアプリはこんな感じで実際に使ってみました!
(デフォルト色も変えてないクソUIは見なかったことに)
ふりかえって見て
いやー、素直に作って良かったです。
作ってても、結構楽しかった!
実際にゲームで使ってみても、自分自身もゲームに集中できたし、みんなのストレスも無かったし、それにサバゲフィールドASOBIBAの人にも「それめっちゃいい」と言ってもらえたのは素直に嬉しかったなー
ちなみに、その時の事がASOBIBAさんのほうでも公開されてますので、良かったらぜひ見てみてくださいな。
最後に
株式会社ヤプリでは、常に新兵(特にアプリ、サーバ、フロント、UXなどのエンジニア全般的)を募集しています。
いや、マジでやりたいことが多すぎて、ぜんぜん人手が足りないのです。
ほんと、カジュアルにお話を聞くだけでもいいので、声を掛けてくれると嬉しいです!
*1:みんなの気分を盛り上げるためと、ゲームマスターの私がゲームスタート地点まで移動する時間稼ぎのためですね