GitHub Actionsの2000分の無料枠をハッカソンで使い切ったニッシー☆です。ハッカソン前までに準備してきたことを時系列順に紹介します。
P.S. 作ったものは特設サイトで紹介しているよ!
開催1ヶ月と1週間前
ざっくりと以下の3つです。
- チームメンバーを募集する
- メインの技術を決める
- チームとしての開発テーマを考えてもらう
チームメンバーを募集する
大学の情報技術系サークルのOBなのでそのコミュニティSlackで募集を募りました。興味がありそうな人はだいたい予想がついていたのでメンションしたらすぐに返事をもらえました。
実はこの時からオンラインゲームを作ってみたいと思っていたので、部で一番Unityができそうな現役生が来てくれてとっても嬉しかったです。(実際に大活躍します)
メインの技術を決める
最初っからオンラインゲームを作る気満々なぼくだったし、誘った後輩の得意技術だったので迷わずUnityがメインの技術として確定しました。
未知への挑戦はわくわくしますよね!(このときはサイコパス感だしてましたが)
チームとしての開発テーマを考えてもらう
未知な事柄に対しては多くの時間を使って仮説・検証をしないと戦えないと思ったのでチームとしての開発テーマを考えてもらいました。
1ヶ月前
以下6つで、そのうち3つを紹介します。
- 専用Slackチャンネルの開設
- チームメンバー確定
- 前泊希望確認
- ハッカソンに応募
- チームとしての開発テーマの確定
- 仮説・検証開始
専用Slackチャンネルの開設
弊サークルではSlackを利用してコミュニケーションをとっています。ハッカソンの抽選に漏れても開発を完了させることを約束した上で事前準備のための情報共有や仮説・検証時の作業ログを残していきました。
チームとしての開発テーマの確定
何かモノを作る時は目的意識がないとモチベーションが上がらないし何をすればいいかわかりません。(持論)
ということで一番開発経験が少ない現役生に目的と目標を立ててもらいました。
目的がわかれば後悔しないし、目標があればあとはそれに近づけるように組み上げていくだけです。
仮説・検証開始
技術選定も兼ねてハッカソンで作るモノに使えそうなものを実際に触って選びます。割と初期につよつよなチームメンバーがゲームサーバーサービスのPhotonを提案してくれたのでバックエンド側の開発コストをかなり落とすことができました。最高。
も、もちろんPhotonサーバーのセルフホストも自宅サーバー上で試しました。が、ネットワークの知識が足りなかったようで、LANからの接続に失敗しました。
1ヶ月切って抽選発表日
抽選発表日!どきどき、、!
当日割り振られたハッカソンコミュニティのチーム専用Slackチャンネルにて↓
見事に選ばれました。やったね!
抽選発表から前日まで
ひたすら検証をしていました。
- プロトタイプの作成
- Photonが動くか
- Auth0連携できるか
- ライセンスや秘匿情報を守れるか
プロトタイプの共有
抽選発表の次の日にメインとなるシーンのプロトタイプを現役生が作ってくれました。天才すぎる、、!
Photonが動くか
Photonも重要な連携サービスの一つなので検証しました。
クラウドサービスから提供されるアプリケーションIDを専用のアセットの設定ファイルに書くだけで連携できるので超簡単でした。(れ、連携自体はね、、!(重要))
参考にしたサイト↓
Auth0連携できるか
ReactやVue.jsみたいなWebアプリケーションライブラリやフレームワークならSDKが提供されていて簡単に連携できますが、Unityはそうはいきません。今回はデバイス認証をAuth0が提供するREST APIを叩くことで実装することにしました。
ライセンスや秘匿情報を守れるか
ライセンスについてUnityで簡単にゲームを作ろうと思うとUnity Asset Storeのアセットを使うことが多いです。ただし、そのアセットがAsset Storeの標準のライセンスを提示している場合は再配布は認められていません。つまり、GitHubのPublicリポジトリでアセットを公開するのは再配布可能な環境にしているのでライセンス違反であると解釈しています。
Asset Storeの利用規約↓
なのでPublicリポジトリで開発する場合はAsset Storeのアセットを別途Privateな場所で共有したり同期できたりする仕組み、もしくは開発はPrivateで行い、別途公開用リポジトリではAsset Storeのアセットを取り除いたものをプッシュする仕組みを考えました。
秘匿情報について、実のところ今回のアプリでは秘匿情報はなく、パブリックに公開されても問題はありません。ですがAPIのエンドポイントやAuth0連携のための情報が見えるのは好みではありません。UnityはWebアプリと違って環境変数による値の参照はできず、ビルド時にスクリプトで値を書き込む必要があります。(AWKで邪道にやろうとしました)
今回はアプリに関係ないことについて時間を割く暇はないし、そもそも価値を感じなかったので審査の時間以外はPrivateリポジトリにすることにしました。
PhotonのアプリケーションIDを取り除こうとしたときのAWKスクリプトをここに供養しておきます↓
ハッカソン前の土日
バーチャルオフィスサービスGatherを用いてGit講習会や作業を行いました。RPG風の2次元空間で通話はもちろんのこと画面共有もできます。ハッカソン-3〜-1日目をやりました。
以下のことをやりました。インフラ構成イメージはこの時にはすでについています。サイトに割り当てるドメインも決定して割り当てています。DNSの反映に時間が掛かる場合があるため、ハッカソン前にやっておきます。それからCORS対応もします。
- Git講習
- WebGLデプロイパイプラインの構築
- ドット絵制作
WebGLデプロイパイプラインの構築は手こずったので今度どこかに記事にしておきます。
ドット絵制作は楽しかったです(小並感)
全然関係ないけど台風酷かったね。
というわけでいっぱい時間を使っちゃったのでこの辺にしておきます!