ニッシー☆の日記

とある地方のニッシー☆の記録

今週のお題「外でしたいこと」2024/04/16

後輩たちとニッコニコしながら BBQ 場で肉焼いて喰らい付きたい!あと昼間っからビール飲みたい!🍺

こんにちは〜〜

こんにちは〜〜、障害対応でお疲れ気味のニッシー☆です。日光浴とチキンが乗っかったサラダを食べることで超回復させています。

今回のブログについて

今週のお題」というはてなブログの機能を見つけたのと、テックブログのモチベが今、絶賛爆上がり中なのでブログを書いています。(なおテックブログはまだ書けてないです)

「外でしたいこと」

お花見

4月といえばお花見ということで1週目は桜が咲き誇る東京都目黒区の目黒川へ行きました。

目黒川の桜並木。川の両岸に咲くソメイヨシノの木がおよそ4キロメートルにも咲き渡る風景の一部です。
目黒川の桜並木。ずーっとこんな感じの風景が続いている。

いやぁー、全長約4kmに渡る桜並木は圧巻だったね!ひたすらに歩いていたんだけど、運動不足を解消できてよかった(?)

歩数計。いつもの4倍で1万歩あるいたよ。
いつもの4倍歩いた〜〜

道中でジンギスカンとビールが頂けるお店を見かけたからこんど行きたいなと思った。

maps.app.goo.gl

↑ここ。

で、本当は?

(再掲)後輩たちとニッコニコしながら BBQ 場で肉焼いて喰らい付きたい!あと昼間っからビール飲みたい!🍺

ハッカソン前に準備したこと

GitHub Actionsの2000分の無料枠ハッカソンで使い切ったニッシー☆です。ハッカソン前までに準備してきたことを時系列順に紹介します。

P.S. 作ったものは特設サイトで紹介しているよ!

開催1ヶ月と1週間前

ざっくりと以下の3つです。

  • チームメンバーを募集する
  • メインの技術を決める
  • チームとしての開発テーマを考えてもらう
チームメンバーを募集する

大学の情報技術系サークルのOBなのでそのコミュニティSlackで募集を募りました。興味がありそうな人はだいたい予想がついていたのでメンションしたらすぐに返事をもらえました。

実はこの時からオンラインゲームを作ってみたいと思っていたので、部で一番Unityができそうな現役生が来てくれてとっても嬉しかったです。(実際に大活躍します)

unity.com

メインの技術を決める

最初っからオンラインゲームを作る気満々なぼくだったし、誘った後輩の得意技術だったので迷わずUnityがメインの技術として確定しました。

未知への挑戦はわくわくしますよね!(このときはサイコパス感だしてましたが)

チームとしての開発テーマを考えてもらう

未知な事柄に対しては多くの時間を使って仮説・検証をしないと戦えないと思ったのでチームとしての開発テーマを考えてもらいました。

1ヶ月前

以下6つで、そのうち3つを紹介します。

  • 専用Slackチャンネルの開設
  • チームメンバー確定
  • 前泊希望確認
  • ハッカソンに応募
  • チームとしての開発テーマの確定
  • 仮説・検証開始

専用Slackチャンネルの開設

弊サークルではSlackを利用してコミュニケーションをとっています。ハッカソンの抽選に漏れても開発を完了させることを約束した上で事前準備のための情報共有や仮説・検証時の作業ログを残していきました。

チームとしての開発テーマの確定

何かモノを作る時は目的意識がないとモチベーションが上がらないし何をすればいいかわかりません。(持論)

ということで一番開発経験が少ない現役生に目的と目標を立ててもらいました。

目的がわかれば後悔しないし、目標があればあとはそれに近づけるように組み上げていくだけです。

仮説・検証開始

技術選定も兼ねてハッカソンで作るモノに使えそうなものを実際に触って選びます。割と初期につよつよなチームメンバーがゲームサーバーサービスのPhotonを提案してくれたのでバックエンド側の開発コストをかなり落とすことができました。最高。

も、もちろんPhotonサーバーのセルフホストも自宅サーバー上で試しました。が、ネットワークの知識が足りなかったようで、LANからの接続に失敗しました。

www.photonengine.com

1ヶ月切って抽選発表日

抽選発表日!どきどき、、!

当日割り振られたハッカソンコミュニティのチーム専用Slackチャンネルにて↓

見事に選ばれました。やったね!

抽選発表から前日まで

ひたすら検証をしていました。

  • プロトタイプの作成
  • Photonが動くか
  • Auth0連携できるか
  • ライセンスや秘匿情報を守れるか
プロトタイプの共有

抽選発表の次の日にメインとなるシーンのプロトタイプを現役生が作ってくれました。天才すぎる、、!

Photonが動くか

Photonも重要な連携サービスの一つなので検証しました。

クラウドサービスから提供されるアプリケーションIDを専用のアセットの設定ファイルに書くだけで連携できるので超簡単でした。(れ、連携自体はね、、!(重要))

参考にしたサイト↓

qiita.com

Auth0連携できるか

ReactやVue.jsみたいなWebアプリケーションライブラリやフレームワークならSDKが提供されていて簡単に連携できますが、Unityはそうはいきません。今回はデバイス認証をAuth0が提供するREST APIを叩くことで実装することにしました。

auth0.com

auth0.com

UnityでAuth0認証を実行した時の様子
ライセンスや秘匿情報を守れるか

ライセンスについてUnityで簡単にゲームを作ろうと思うとUnity Asset Storeのアセットを使うことが多いです。ただし、そのアセットがAsset Storeの標準のライセンスを提示している場合は再配布は認められていません。つまり、GitHubのPublicリポジトリでアセットを公開するのは再配布可能な環境にしているのでライセンス違反であると解釈しています。

Asset Storeの利用規約

unity.com

なのでPublicリポジトリで開発する場合はAsset Storeのアセットを別途Privateな場所で共有したり同期できたりする仕組み、もしくは開発はPrivateで行い、別途公開用リポジトリではAsset Storeのアセットを取り除いたものをプッシュする仕組みを考えました。

秘匿情報について、実のところ今回のアプリでは秘匿情報はなく、パブリックに公開されても問題はありません。ですがAPIのエンドポイントやAuth0連携のための情報が見えるのは好みではありません。UnityはWebアプリと違って環境変数による値の参照はできず、ビルド時にスクリプトで値を書き込む必要があります。(AWKで邪道にやろうとしました)

今回はアプリに関係ないことについて時間を割く暇はないし、そもそも価値を感じなかったので審査の時間以外はPrivateリポジトリにすることにしました。

PhotonのアプリケーションIDを取り除こうとしたときのAWKスクリプトをここに供養しておきます↓

#!/usr/bin/env awk -f

/AppIdRealtime/{print " " $1 " "; inTrigger = 1;next}
inTrigger == 1 {inTrigger = 0; next}
{ print; next }
ところでドット絵が描けること気づいたのもこの辺りですね。。

wizard

ハッカソン前の土日

バーチャルオフィスサービスGatherを用いてGit講習会や作業を行いました。RPG風の2次元空間で通話はもちろんのこと画面共有もできます。ハッカソン-3〜-1日目をやりました。

www.gather.town

以下のことをやりました。インフラ構成イメージはこの時にはすでについています。サイトに割り当てるドメインも決定して割り当てています。DNSの反映に時間が掛かる場合があるため、ハッカソン前にやっておきます。それからCORS対応もします。

  • Git講習
  • WebGLデプロイパイプラインの構築
  • ドット絵制作

WebGLデプロイパイプラインの構築は手こずったので今度どこかに記事にしておきます。

www.khronos.org

ドット絵制作は楽しかったです(小並感)

全然関係ないけど台風酷かったね。

というわけでいっぱい時間を使っちゃったのでこの辺にしておきます!