この記事は鈴鹿高専祭アドベントカレンダー21日目の記事です。




はじめに
今年、3年ぶりの開催となる鈴鹿高専祭に、延べ2800人の来場がありました。私も5年前に訪れた高専祭を機に高専を目指したので、誰かの心境の変化の種となっていれば幸いです。私は今年の3月ぐらいから本部のIT開発のCTOと、HPの作成を担当していました。その反省を綴れたらなぁと考えています。APIサーバーを実際に実装したのは僕の友達でそっちの話はこっちに書かれているのでぜひ。
事の成り行き
そもそも私って3年生で、実行委員の部門のトップになる必要はないんですよ。まぁその辺何があったかって話をちょっとします。
私の所属していた班が動き始めたのは6月ぐらい(遅い)で、その時に発覚したのですが実働できる人間が3人しかいなかったという事です。
え?って思った方もいるでしょう。私もそう思いました。困りましたねぇ。私が一番困ったわけですが。
そんなわけで人が足りない中、開発環境を整えるだとか、コードレビューができる人が私以外にいないだとかして、結果的にCTO的な立ち位置でおよそ10ヶ月を過ごしました。では反省していきましょう!
何をしたの?
時系列順に何をしたかを振り返りたいと思います。
4月
4月の11日に記念すべき初めてのcommitがなされました。
ここから実に7ヶ月間のデスマーチを経て、今年のホームページができたと思うと感慨深いですね。
良かった点は、CIをしっかり整備して、コードの品質を常に保っていたこと、Storybookを導入 1 して、レビューをしやすくし、デザイナーの方にも見やすい環境を整えられたこと、design tokenを整備することでデザインと実装の乖離をできるだけ防げたことだと思います。
反省として、当初Next.jsとtwin.macroを技術に採択したということです。フレームワークについてはここでReact.jsに載せ替えています。 載せ替えているだけあって、Next.jsはオーバースペックだったというのと、Cloudflare Pagesにデプロイする予定だったからです。 うーん、先を見据えて技術は選びましょうね。 twin.macroを選んだのは、tailwindの開発効率と、twin.macroならではのエラー表示で開発体験も良いという過去の経験から採択しました。 はい戦犯です。なんでチーム開発に保守性皆無なtailwindを採用したんですかね?まじで後悔しています。今私が技術をもう一回選び直せるんだったら、React.js(Vite)×emotionもしくはvanilla-extract(こっちはStorybookでの動作を確認できていないので選んでないかも?)にしています。絶対。
6月
6月に、先生を交えた会議で入場制限を設けるべきという声(これ言った教員を私は許さない)を頂いたため、私の方で入場管理システム(後のmonaqa)の提案書を書いて、処理フローなどを組みました。
このときの反省として、処理フローとかの前に大体当日どれくらいの人が来る予想か、本当に当日それで回るのか、障害対応マニュアルや問題発生時の順序の打ち合わせを本部の上の人間とするなどをしなさい。と五年生の先輩に言われて、学びになりました。 こういう大きなイベントで導入されるシステムを定義する際の考え方を教わりました。
夏休みに入るまでは、毎日のように入場管理システムの設計や、どうやって処理するか、ITに疎い民間の方のUX体験の良い招待方法などを議論していました。
これは学校に対する愚痴なんですけど、当初最初に立案された処理フローが、学校からもらった個人情報リストを使って承認する方法ってものだったんですけど、そのデータは絶対に学校のネットワーク外からアクセスしてはいけないという縛りが課せられていました(これは当たり前)。ただ、学校のネットワークはクソなので到底私達がやりたいことってのはできそうにありませんでした。これが議論が詰まっていた理由だったりします。
最終的に教員との相談で私達が規約を定めて正しく情報を管理するのなら勝手に収集して良いという判断が降りたのでその方針で定義書を書きました。(この時点で8月、ここで友人がデスマーチになっているのは実は私の判断が遅かったからなどがあったりします。ごめんね)
夏休み
夏休みに入ってすぐ、私はこのプロダクトとは別に2つのプロダクトを抱えていて精神的に完全に参ってしまってました。色々な方に迷惑をかけてしまったことをこの場を借りて謝ります、ごめんなさい。
自分の好きなアーティストさんのライブに行ったりして、リフレッシュできたあとは一瞬でした。
9月
9月9日にv1.0.0がリリースされました。当時のtagにはこんなメッセージを残しておきました。エモくないですか?
その後、何故か愚かな私はSplatoonを200時間やってしまった。高専祭が終わって2ヶ月が経とうとしている今だからこそ告白します。あのデスマーチは私が夏休みにSplatoonをやりまくっていたのが原因です。
10月
夏休みが明けると私は毎日が戦争でした、いやまじで。一日18時間近くコーディングして、実装とテストと修正と、全てをこなしました。 おかげさまで寮の点呼違反の反則点で来年は寮に居られなくなりました。
これも愚痴なんですけど、学校の行事の成功を願って心身をボロボロにしながら制作したはずなのに称賛の声もなく、ただ非情にも退寮を叩きつけられました。来年以降の私のモチベーションには大きく関わるでしょうね。
10月19日にv2.0.0-rcがリリースされました。これは緊急用のリリースで、このリリースの時点ではv2.0.0の外側のみが実装されていました。この状態でリリースすることは私のプライドがすごい許しませんでしたが、大型のプロジェクトではこういった妥協も大事だと学びました。
その後10月28日にv2.0.0をリリースしました。このときもtagにメッセージを残しておきました。ぜひ後輩とか未来の私はこれを見つけて「えも!!!!」って叫びたいですね。
完走した感想
およそ10ヶ月間に及んだ開発ですが、なんだかんだ言って楽しかったです。
高専祭の大工メンバーがみんな校長先生に三角チョコパイを奢ってもらっていて私はもらっていませんでした。
完成したホームページは述べ3000人に見てもらいました。誰も私が作ったことは知りません。でも影からなくてはならないものを支えるっていうのも悪くはないなと感じました。
私が設計提案定義した入場管理システム「monaqa」は一日目の朝のピークを一切の混雑なく捌けて、見知らぬおじさん(たぶん一般の人)からすごいねぇと褒められたりして、それがとても嬉しかったです。
10ヶ月前と比べて一段と強くなれたかなぁと思います。
最後まで読んでくださりありがとうございます。