例によって中央大学の非公認学生団体によるプロジェクトです。
特に、私はもうOBなのでマジで中大公式の組織は関係ないです。
お問い合わせは◎部のTwitterまで。
はじめに
こんにちは。中央大学OBで、某不動産会社でAI推進やシステム開発をやっている、mizphsesです。最近はフロントエンドエンジニアとしての業務より、WEB解析とかUX関係とかバックエンド開発とかの比重が増えてきました。
昨年実施したiTL七夕祭が意外と好評だったからか、主催団体「行動企画サークル ◎部」1で今年もやりたいという話になり、2025年も7月にやることが決定しました。
どうせ企画に関する諸々は現役の後輩が書いてくれると思うので、今回実施した技術屋として昨年から改善に取り掛かった部分についてお話しします。
※技術記事というよりはインターンの体験談ブログみたいなノリで読んでください。
機能面での改善
細々とした最適化とか、コストカットとかは別途やっているのですが、大筋としては同じシステムです。
大きな変更としては以下の2点で、
- NextJS関連の部分をCloudflare Workersに移行しました
- 管理画面の認証をCloudflare Accessのユーザー数制限の都合で、自前実装に変えました
ただ、この辺の話は正直するほどのものでもないので2、ここでは、もう少し反省ベースでの機能追加を紹介します。
昨年度の反省: スパムを許すな!
昨年の反省点として、某政治家の名前を連呼する投稿が(しかも連投で)行われるという事案が発生しました。昨年当時のシステムでは投稿内容に部分一致があるかをチェックするシステムでNG判定を行っていましたので、結構すり抜け事案が発生しました。
ただ、これではカタカナや注音記号3などの見た目が似ている表記体系で書かれたら終わりです。そこで、本年は比較的安価なLLMを使用してフィルタリングさせることを目論みました。意味が通る文章であり、尚且つ不適切ではない文章である場合に0を、それ以外では1を出力させ、1が出た場合は人間のチェックでpassするまでは非表示(不適切フラグを立てる)というワークフローとしました。
今思えばGemini Flashを叩いた方が安いのですが、APIキーの管理が面倒だったため、CloudflareのWorkers AIにあるllama-3.3-70b-instruct-fp8-fastを叩いてスパム判定をすることとしました。いわゆるStructured Outputにより、{result: 0}などの極めて短いjsonを吐かせることでコスト削減を狙いました。実際、使用トークン数を見るとほとんどが入力トークンとなっています。
昨年の反省2: Switchbotくん、EAP非対応やんけ!
大学資産のディスプレイを借りる都合、対象外の時間は画面オフにするということになっていました。そこで昨年は主催者の私物Switchbotを使用して画面をスリープさせようとしました。しかし、大学のWi-Fi環境は2022年度にMACアドレス認証での接続が廃止され、IEEE802.1X認証を通した機器(またはeduroamに繋げる機器)以外は使用できなくなってしまいました。
Switchbotがそんな環境に接続できる性能を持っているはずもなく、どうにかして別のAPを建てる羽目になりました4。そこで、今年はアキバの某中古電話屋で購入したArcher MR400を持ち込み、会場専用のWi-Fiとしました。5
新機能: 短冊画像を直接シェアしたい
これは今年の主催チームのyumくんに書いてもらったのですが、Web Share APIを叩くことで短冊画像をシェアできるようにしました。どうせ短冊の生成はCanvasでやってんだから、共有用の画像も作れるやろってノリです。
大筋の仕組みは、生成された画像のblobをFileオブジェクトに焼き直して添付という感じです。CanvasオブジェクトはimageUrlを持っているので、それをfetchすることでblobとして持つことができます。
(まあ、あんまり使われてないんですけどね。パソコンだとTwitterのアプリかPWAか何かを入れてないと使えないので)
まとめ
昨年よりクレバーな実装に移した(というか昨年は脳筋実装が多かった)ので結構パフォーマンスは改善したと踏んでいます。一方、作り直し作業は概ね2日で行なった都合、脳筋実装が多く残っています。
ぜひ、治したい、あるいはこういうイベントに携わってみたい、という方がおられましたら◎部にご加入いただけますと幸いです。
おまけ: よくある質問
Q. 中央大学ってこういう企画が許される、自由な大学なんですか?
そもそも本企画は、団体の創設者とエレベーターホールで話していた思いつきをもとに始まった企画なのですが、昨年彼の人徳と政治力で企画を通したこと、そしてそれを引き継いでくれた後輩諸君の頑張りによって成し遂げられたものであると思います。さらには、協力していただいた各団体・教員/事務の皆様のご支援あってのものです。ただ、在学当時からもっと自由にやらせてくれよ〜という気持ちはずっと持ってますネ。
Q. mizphsesさんって経済学部の人ですよね。なぜiTLに...?
私はiDSプログラムで3年間iTLに通っていました。顔認証ゲートの登録もありました。一応ラボのHPに名前は残ってます。ちなみにiDSは経済学部生として取れる単位全部取りましたし、経済学部の方でも(貨幣供給周りで)卒論書いてます。どっちも楽しかったですよ。
Q. お金周りはどうなの?
多分一番お金かかってるのは装飾(折り紙代)。その次がLLM。それ以外の実行環境は(個人で課金して使い倒しているCloudflareの組織に相乗りさせてるので)0円です。せいぜいかかってもランチ1~2回分くらいですかね。大型モニターと電源という本企画に欠かせない大学資産の使用を許可してくれた中大に大感謝を。
-
長ったるい名前のサークルですが、要するに変なイベントをちゃんとした交渉のもとやるために、組織格を持たせたって感じである。◎より前の部分は、済生会病院の「恩賜財団」の部分みたいなもの。 ↩
-
Next移行は公式ガイドで。ログイン関係は
@hono/oauth-providersとかBasic認証とかなのでそんな面白くない。 ↩ -
ㄅㄆㄇㄈ(ポボモフォ)のこと。ネットでは「ㄘんㄘん」の「ㄘ」の文字などが有名。 ↩
-
昨年は表示用の端末がAPにできる仕様だったのでそいつから繋いだ。 ↩
-
当該機は我が家の光回線入れ替えの都合で2週間ほどフレッツが不通だった期間に、エアコン操作のためSwitchbot Hubを動作させるために使用していたので動作確認済み。なお、技適はついているが保守はついていない。なお、当該NWは中央大学の全学LANとは完全に別の回線であり、従って同規定による規制は受けない。 ↩
