学園祭を、ひとつのプロダクトとして動かす。会津大学 学園祭IT部長が挑んだシステム開発の記録のトップ画像

学園祭を、ひとつのプロダクトとして動かす。会津大学 学園祭IT部長が挑んだシステム開発の記録

投稿日時:
竹尾健(しゃけのきりみ。)のアイコン

会津大学 / 会津大学学園祭実行委員会 前IT部長

竹尾健(しゃけのきりみ。)

Xアカウントリンク
黒猫のアイコン

会津大学 / 会津大学学園祭実行委員会 現IT部長

黒猫

Xアカウントリンク

来場者2,500人を超える大学の学園祭。その運営を、学生の手でひとつのプロダクトとしてつくり直した2人がいます。

コンピュータサイエンスの単科大学である会津大学で、学園祭実行委員会に「IT部」を新設した前部長のしゃけのきりみ。(以下、しゃけ)さんと、システムのメイン実装を担い、今年度から部長を引き継いだ黒猫さん。二次元コードによる受付、備品管理、来場者向けWebアプリからDiscord Bot、さらには会場の内線電話まで、2人とIT部が担った範囲は「学園祭でここまでやるのか」と驚くほど広いものでした。

締切は動かせず、ユーザーは実在する。学校の課題とも個人開発とも違う「本番」を、二人はどうつくり、どう運用したのか。技術選定の裏側から、前部長から現部長への引き継ぎ、そしてAIが当たり前になった時代をこれからどう歩むのかまで聞きました。

しゃけのきりみ。さん(前IT部長)

会津大学 3年。学園祭実行委員会にIT部を新設し、初代部長として全体設計と技術選定を担った。GDGoC Aizu Organizer。Cloudflareを軸にした個人開発と技術コミュニティ活動を続ける。

黒猫さん(現IT部長)

会津大学 2年。1年次からIT部に参加し、学園祭システムのメイン実装を担当。今年度からIT部長。Webアプリ開発が中心。

全寮制高校の「電話番」から始まったプログラミング

― まずは、普段どんな活動や開発をしているのか教えてください。

しゃけ:会津大学の学部3年で、前IT部長です。個人的には、好きなものや欲しいと思ったものをCloudflareの技術を使って開発することが多いです。他には、GDGoCというGoogleの技術コミュニティで、日本全国で300人ほどの学生が参加するハッカソンを主催したり、学内ハッカソンを何度か企画したりしています。

黒猫:会津大学の学部2年で、今年度からIT部長になりました。開発はWebアプリ系がメインで、たまにDiscordのBotをつくったり、ハッカソンに出たりもしていました。

― お二人がプログラミングやものづくりに関心を持ったきっかけを教えてください。

しゃけ:高校時代に全寮制の学校に通っていて、今では信じられないんですが、スマホもパソコンもインターネットも全部禁止だったんです。寮にかかってくる親からの電話は寮のスタッフが受けて、「何番の内線に行きました」と放送で呼び出す仕組みで、スタッフさんが2時間電話を取り続けている。「そりゃないだろう」と思って、これをシステム化したいなと思ったのがきっかけです。

電話を受けたら合成音声で放送する仕組みをつくり、それを先生に提案したくて、プログラミングを始めました。あの時代はAIがなかったので、本を借りてきたり、ひたすら分からないなりにググり続けたり、完全に独学です。

そこからプログラミングにはまってしまって。プログラミング自体というより、自分がつくったものでほかの人が便利になったり、「これ欲しいわ」「あってよかった」と言われるのが嬉しくて、そのサイクルにはまった感じです。もともと母が大阪人で「ないものは作ったれ」という人で、父はハードウェア系のエンジニアなんです。それが合わさって昔からものづくりが好きで、『仮面ライダー』や『プリキュア』を見ずに『ピタゴラスイッチ』を見続けている幼少時代でした。

― 黒猫さんはいつ頃からですか?

黒猫:触り始めたのは小学5年生の頃で、きっかけは僕も父親ですね。Scratchあたりから触り始めて、そこからWebアプリ、中高の頃にネイティブアプリを触るようになりました。

13歳の頃からは、その当時遊んでいたゲーム用のツールをつくっていました。ゲームのjQueryのバージョンが古くて一部の機能が使えなかったので、ゴリゴリに関数を書き換えてつくったものを提供したりしていました。

主観ではなく、データに基づいた運営を

― ここからは学園祭について教えてください。まず、どのような規模の催しなんでしょうか。

しゃけ:去年は2,539名の来場者が来られて、地方大学の一般的な学園祭という感じです。ただ、それが気に食わなくて。「私たちは会津大生なんだから情報系の企画をもっとやろう」と。ゲームを自作したり、紙に描いた絵をスキャンしてAIに属性値を出させて戦わせる「お絵かきバトラー」という企画を始めたり、少しずつ会津大らしさを出していきたいねと話しています。来場者は半分以上が会津若松市の方で、中高生やお子さんも多いです。


しゃけのきりみ。さん

― 昨年(2025年)、しゃけさんが2年生の時にIT部を新設されたんですよね。新設やシステム化に踏み出した経緯を教えてください。

しゃけ:先輩に読まれる可能性があるので言いづらいんですけど(笑)、1年生の時に全く新しい企画を始めたら、「過去こんな感じだったからちょっと厳しいんじゃない」と、憶測で話をされることが多かったんです。でも、実際やってみると意外と違うこともありました。

そういった背景があり、データがあれば後の価値判断にも分析にも使えるし、データに基づいた運営ができれば効率も良くなるだろうと思ったのがきっかけです。来場者の方に便利に学園祭を楽しんでほしいという思いもある一方で、分析を目的としてつくった部署です。

― そうして立ち上がった新設IT部に、当時1年生の黒猫さんが入られたんですね。

黒猫:大学に入ってサークルの案内が色々あったなかで、学園祭のIT部の紹介が面白そうだなと思って、先輩(しゃけさん)のところへ直談判に行きました。説明会の紹介では「ITを触る部です」としか言われなくて、かなりアバウトだなと思いながら(笑)。「予約システムのベース部分のプロトタイプ、もうつくってあるんですよ」という話をして、「嘘でしょ、マジかよ」みたいに喜んでもらえたのが始まりです。


黒猫さん

しゃけ:部の方向性は、あえて「何も決まってないです」と言って始めたんです。決めることもできたのですが、私が見えている問題と周りが見えている問題は違うだろうなと思ったので、いろんな価値観をもとにつくり上げていきたかったんです。そういう思いから、技術を触る、特に「人のために」技術を触る部署にしたい、とだけ話していました。

受付から内線電話まで。学園祭を支えたシステム群

― 昨年の学園祭の開発当時、IT部は何名いたんですか?

しゃけ:15人ほどです。学園祭実行委員会は全体で100人ほどの組織なのですが、その中ではいちばん小さい部署ですね。

そこからさらに、プロダクトごとにチームを組んでいました。データベースとAPIを専任するバックエンドチーム、Sho-Room(管理画面)のチーム、備品システムのチーム、という形です。各自がどれくらい技術に触れたことがあるかのアンケートと希望を聞いて配属を決めました。

― IT部新設から学園祭まで半年間ということでした。つくったシステムの全体像を教えてください。

黒猫:最初に担当した仕事は「Trackable Links」です。学園祭の広告用ポスターを会津若松市内に40~50枚貼っているのですが、「二次元コードごとの読み込み回数を記録したい」という話が挙がりました。そこで、Hono + Cloudflare Workers + D1で媒体情報つきの短縮URLを生成し、リダイレクト前にクリック情報をD1へ保存する構成で実装しました。

話が挙がってからポスターを貼り始める1週間半ほどでつくる必要があり、先輩と2人で分担して一気につくりましたね。


Trackable Linksの管理画面と、集計用の二次元コードを使用したポスター

― 新設部署の初仕事が、いきなり1週間半で実運用とはすごいスピード感ですね。そこからシステムはどう広がっていったのでしょうか。

黒猫:その後は、備品管理システムをつくりました。机、椅子、ホワイトボードなどの備品を出展団体に貸し出すんですが、過去に机が焦げた事例があったらしく、ちゃんと管理したかったんです。備品1個ごとに固有のIDを発行してラベルを貼り、貸し出しや移動のたびに読み込んで、今どこにあって誰が使っているかが分かるようにしました。物流倉庫や図書館のようなイメージです。

しゃけ:あとは運営メンバーが使う管理画面の「Sho-Room」、広報部とやり取りしながらつくった公式Webサイトもありますね。それからLINE公式アカウントに登録すると開ける、来場者向けWebアプリも。アプリでは、会場マップや露店のメニュー、イベントのスケジュールが確認できます。「ドローン体験会」などのすごく並ぶイベントには、事前予約で早めに入れるファストパスのような仕組みもつくりました。

― 学園祭を丸ごと支える基盤ですね。2,500人ほどの来場者を迎える受付は、どのような工夫があったのでしょうか。

しゃけ:宅配の配達員の方が荷物のバーコードを「ピッ」と読み込む、あの業務用端末を使いました。来場者には事前にWebアプリで入場予約をしてもらい、当日は画面の二次元コードを受付でスキャンすれば入場完了、という流れです。

さらに、学園祭名物のビンゴ「大抽選会」ではカードを1人1枚に制限する必要がありました。そこで入場スキャンと同時にレシートプリンターから半券を印刷し、ビンゴカードにホチキスで留めて配る。デジタルとアナログを組み合わせた運用です。


スムーズな予約・入場を実現した「蒼翔祭アプリ」

従来はリストバンドで対応していたのですが、巻くのに時間がかかるし、混雑時に無くしてしまう人もいるんですよね。大抽選会は12時台に200人ほどが一気に来るので、受付を省力化したいというのが目的でした。

― 業務用端末ということですが、あまり触れる機会はなさそうに思います。どのような経緯で実装に至ったんですか?

しゃけ:端末は「Yahoo!オークション」で見つけました。私は暇な時にオークションページを見てはお財布と相談している人間なんですけど(笑)、10台で1万円というとんでもない安さで売られていて。


受付で実際に使用した端末を見せてくれた

スキャナーは速いし、業務向けなのでバーコードでも二次元コードでも何でも読めるんです。予備を含めて15台確保して、受付では7台ほどが同時稼働していました。スマホアプリも考えたのですが、スピードの面だと業務用端末には全然勝てないんです。距離があっても余裕で読み込めるのでとても優秀です。

あと、受付が2箇所あって連携が必要なので、内線電話もしれっと構築していました。大学が広いうえにコンクリート打ちっぱなしで電波が届きづらく、特定小電力の無線機だと通らないんです。元から用意がある実行委員会の大きい無線機は10台しかなくて部長しか持てないので、本部、受付、ネットワークセンターなど5箇所を内線で繋ぎました。イベント運営だとインカムになりがちですが、電話の方が安定していたので、構築して正解でした。

― 当日に使うシステム以外にも、工夫した点はありますか?

しゃけ:メールチェックのシステムですね。出展企業の方など、外部の方にメールを送るとき、1年生は文書を書き慣れていないので上級生が確認する際の仕組みです。以前は文面をDiscordに貼ってチェックしていたんですが、進捗が分からないし、本番直前期はすごい量のメールが飛ぶので追いきれなかったんです。そこで、DiscordのBotでコマンドをつくり、どこまで終わっているか、誰が担当かを追えるようにしました。

黒猫:そのほかには、タスク管理ツールもつくりました。どの部署の誰が担当していて、進捗がどうなっているかが一目で分かるものを。

しゃけ:ただ、実はそれは「今は亡きもの」で(笑)。結局使ってもらえなかったんです。なくてもいいものだと人は使わないんですね。「ないとできない」レベルじゃないと使ってくれない、という学びでした。私自身、技術チームを運営した経験がなかったので、手探りかつ雑だったと反省しています。

技術選定の軸はコストと引き継ぎやすさ

― 技術スタックは全体的にCloudflareで統一されているんですね。選んだ理由を教えてください。

しゃけ:シンプルにコストがとても安いことですね。初年度の部署なので予算を抑える必要があったのですが、他のクラウドを使うとすごく大きな金額になりそうでした。また、人的コストの面で、インフラの整備にリソースを割かなくて良い点も大きかったです。1年生の負担を増やさないためにも技術スタックは統一したく、スキルセットの統一とコストの両面でCloudflareを選びました。

あと、学習コストが低いのも大きいです。WorkersやPagesはGit連携やWranglerコマンドひとつでデプロイ完了できるくらいのシンプルさなので、頑張れば私1人でも回せる想定でした。

― 黒猫さんはメイン実装を担当して、技術面で苦労した点はありましたか?

黒猫:ほとんど全てが知らない技術だったので、ゼロから学んだものが多いです。まず知ることから始めて、実際に使われている実装を見ながら「こういう使い方をするんだな」と軽く学んで試して、という感じで試行錯誤しました。

その中でもいちばん大変だったのは受付端末です。React Nativeを使っていたのですが、端末のOSが古いAndroidだったため、Expoが対応していなかったんです。そのためビルドにもすごく時間がかかって、検証のたびに毎回インストールして、というのをずっと繰り返していました。端末固有の仕様もあって、正直よく分からないことだらけでした。

端末を持ちながら話す黒猫さん

しゃけ:そもそも端末のSDKのドキュメントがほぼ転がってないので、AIに聞いても全然情報が出てこなかったり。彼がとても苦労して実装してくれたんですけど、本当に大変でしたね。

エラー率ゼロの本番と、それでも「成功」とは言えなかった理由

― 新しい技術をキャッチアップしながら、学園祭全体を支えるシステムをつくられたんですね。本番を振り返って、印象に残っているシーンはありますか?

しゃけ:私には明確に1つあって、技術そのものより、それが与えた影響です。先ほど話した、1年生の時になんとなくの理由で「ダメなんじゃない」とアドバイスをくださった先輩が、データに基づいて話をしてくれたんです。びっくりしました。組織に対してプラスに働いているんだろうと感じて、やってよかったなと本当に思いました。

黒猫:学園祭の前日、大学の近くの学生が使える場所で、徹夜でギリギリまでデバッグしていたことですね。ギリギリまで対応するのはエンジニアあるあるかもしれないですけど、ハッカソンみたいで少し楽しかったです。組織的には健全じゃないかもしれないですが、なんとか動いたので本当によかったです。

― 本番中のトラブルや想定外の出来事はありましたか?

しゃけ:システム障害はありませんでした。後からCloudflareのダッシュボードを見ても、期間中のエラー率はゼロだったんです。ただ、説明不足によるトラブルはありました。

受付のスキャンには、ビンゴカードを1人1枚に管理する目的と、入場データを集める目的の2つがありました。ところが、運営メンバーには「ビンゴカードと人間を1対1で対応させます」という管理側の話を中心にしてしまっていて。だから大抽選会が終わった後は、もうスキャンは必要ないと判断されて、スキャナーを通さずに入場させてしまったんです。「データが取れていない!」となって、走って追いかけて説明する、という場面がありました。

これは反省点ですね。新しいものを導入するとき、何のために、どうやったら使えるかは説明していたのですが、「なぜやっているのか」という意図をあまり説明できていなかったんです。目的通りに運用してもらうには、背景もしっかりと話さなきゃいけないという学びを得ましたね。

― 昨年の学園祭を経て、「次にやるならつくり直したい」点はありますか?

黒猫:実は、今年度は既にほとんど全てのシステムをゼロからつくり直しています。JavaScriptとTypeScriptが混ざっている構造は良くないよね、と全部TypeScriptに統一したり、D1を直接叩いていた部分をDrizzleで安全に叩くようにしたり。情報基盤の見直しを全面的に進めています。

しゃけ:全体的な設計や部署間連携の面でも、改善を進めています。「もっと他部署と話そう」ということですね。大抽選会の件もそうですが、他部署と話せていないから現状が分かっておらず、適したシステムもつくれていなかった。システム的に見れば上手くいったのかもしれないけど、全体として成功とはそこまで言えないんじゃないかと思っています。「ちゃんと話そうね」というところを引き継いだつもりです。

PCを膝に置きながら話すしゃけさんと黒猫さん

― 学園祭は期限が動かせず、来場者も実在する本番環境だと思います。これまで経験してきた開発とは違いましたか?

しゃけ:個人開発は確実に使ってくれる人がいる保証はないし、学校の課題は使われることが想定されていない。人のためにシステムをつくるのは違うなと。技術は何らかの目的のためにあるものだと思っているので、そこを追い求める組織でありたいと思っています。

黒猫:個人開発ならミスがあっても、時間が空いた時に直せばいい。でも学園祭はその2日間のためにやっているので、ミスがあったら速攻で戻して早く対応しないといけない。他の方へ影響するシステムをその場で直さなきゃいけない体験は初めてで、当時は内心すごく焦っていました。

しゃけ:彼には申し訳ないですけど、初年度は予期しないことがたくさん起こるし、失敗するのは仕方ないと思っているし、責めるつもりもない。それが今後活かされるなら組織としてはプラスなので、それでいいという気持ちです。

― 黒猫さんは現IT部長として、次の学園祭で挑戦しようと考えていることはありますか?

黒猫:目指しているのは、来年度も同じものを使い回せる基盤をつくることです。毎回つくり直すのは大変ですし、差があると確認漏れやミスが起きます。同じものを使えば、以前問題があった箇所が次には直っている。極力そういう仕組みをつくろうとしています。

開発フローも見直しています。以前は完成したものをこの2人でレビューする流れでした。今年度はプロジェクトリーダーを置いて、メンバーはまずプロジェクトリーダーにレビューしてもらい、Approveされたら部長の自分に飛んできて、もう一度確認して最終的にマージする。2段階できちんと厳格にやろうとしています。

AIがコードを書く時代に、何のためにつくるのか

― AIが当たり前の世代として、数年後に社会へ出ることへの思いや、ワクワクしていることがあれば教えてください。

しゃけ:正直、「人間を雇うのに本当に価値があるのかな」と考えてしまいますね。仮に月収が30万だとして、私はその30万を払う価値を出せる人間なんだろうか、という気持ちには本当になります。ジュニアからシニアの手前ぐらいまでのエンジニアが書くコードなら、AIが全然出せてしまうと思うんです。なので、どういうエンジニアになるべきなのかはずっと考えていますし、今のインターンで学ばせてもらっているところでもあります。

― AIを使ってプログラミングをしている、今この瞬間は楽しいですか?

しゃけ:そうですね、楽しいです。札束の殴り合いで面白くないなと思う部分は少しありますが(笑)、つくりたいと思ってから実際に出来上がるまでのスピードが格段に速い。その点はとてもいい社会になったなと思います。

だからこそ、設計の段階で、何をつくりたいのか、何のためにつくるのかを考えるのがすごく大事だなと。ChatGPTのリリースが2022年で、この4年を想像できたんですかという話で、2026年から2030年なんて想像できないんですよ。ただ、そういう社会だからこそ、IT部としても社会で求められる人間を育成できる部署でありたいと思います。

― 最後に、これを読んでいる学生エンジニアや、現場で働く先輩エンジニアに伝えたいことはありますか。

しゃけ:皆さんへ、というより未来の自分に言いたいこととして、自分の限界を決める人間にはなってほしくないなと思います。1回やってみよう、と。IT部も正直、新設した時は彼のように技術力がある人が入ってきてくれるとも、あんなことができるとも思っていなかった。やってみたら、案外人は集まってくれる。もしかしたら自分がラッキーだっただけなのかもしれないですが、そういう環境をつくれる人間でありたいし、未来の自分にもそう言いたいですね。

黒猫:先輩も言っていましたが、今はAIでコーディングは基本的にできるので、実装に移る前の段階で、どこまで仕様や要件を細かくできるかが全体に関わってくると感じています。そのために、まず自分がどうしたいかをしっかりと言語化できる力が重要かなと。自分もそう言いながらできていないんですけど(笑)、IT部も昨年の1年間でいろんなものが変わったので、ここからです。

PCを膝に置きながら話すしゃけさんと黒猫さん

しゃけさん・黒猫さんへのお便り