つれづれなるままに、クソを垂れ流す

JPHACKS2023参加記録(下書き)

JPHACKS2023に出ました

JPHACKS2023に参加してきました。

チーム名はここに書きたくない。継続して名乗れる名前を付けよう。

普段は高校の同級生らとご注文は豆腐職人ですか?というこちらもなかなかにふざけているチーム名でハッカソンに半年に一回くらい出ている。何度も受賞歴がある優秀なチームだぞ。去年のJPHACKS2022もこのチームで出ているぞ。

今年も豆腐職人のほうで出ようと思ったのだがあまりに人が集まらず、バイト先のほうでいい感じに人が集まったのでバイト先の人を集めたチームに普段一緒にハッカソンに出ている高校の同級生を一人ぶち込む暴挙に出る。結果7人というハッカソンでは大所帯に。

JPHACKSって何ぞ

どんなイベントかは上のリンク先を見ればわかると思うので、かるーく書いていく。

全国何か所の各会場で2日間開発を行い発表、優秀な15チームが決勝に勝ち上がり追加で2週間開発という大規模なハッカソンである。スポンサーがたくさんついており、たくさんのスポンサー賞があるのも目玉の一つ。去年はオンラインでの開催。

ハッカソンに出始めたのがコロナウイルス感染症が流行し始めてからで実はオンサイト参加したことがなく、今年からまたオンサイトということでかなり楽しみにしていた。東京会場は東京大学。初めて入った。

事前準備

メンバーを集めてdiscordサーバーをつくる

チーム名を決める(自己紹介で名乗る時のことを考えよう)

各々のスキルセットを洗い出してある程度作れるものを考える

イデアを絞り出す

作るものを決める

分担を決める

という感じでした。何作るかは前々日の夜くらいに決まった。

 

何作ったの?

これ見て

ざっくり言うと、AIアシスタントにキャラクター性とアバターを付与してMR空間に召喚、一緒の空間で過ごしながらスマートホームの家電と連携してより生活を便利にしようというもの。MR空間にアンカーを設置しておき、そのアンカーに触れることで家電を動かしたり、キャラクターに動きがあったりする。

今思うと割と課題感とか解決方法がとっ散らかってると言われても仕方ないなという感じがする。

遅刻した

30分前につくつもりが開場時刻を30分間違えめっちゃギリギリになる。と思ったが、おなかは痛いし迷子になるしでめっちゃ遅れる。東大構内にスタバがあった。広い。北千住激狭大学に通っていると感覚が狂うが普通の大学こんなもんなんだろうか。まああっちはコンパクトなのでそれはそれで嫌いじゃない。そんなことを思いながらガイダンス中に入室。ごめんなさい。

ガイダンスが終わり午前10時に開発スタート。開発に用意されたのは会議室っぽいところ。椅子はよかった。電源もある。逆を言えばそれ以外はあんまりない。

 

自分の担当

私の担当はChatGPTをシバきまわすこと(何作ったの?の項でいうならAIアシスタントにキャラクター性を付与とスマートホームの家電と連携あたり)だったので、とりあえず普段使いしているAPIラッパーを引っ張り出してきてとりあえず必要な機能の追加を検討。

とりあえず逐次的な処理のためにstreamに対応すること。要は公式のページで使えるChatGPTのように、出力を逐次的に渡していくものに対応する。そしてFunctionCallingに対応すること。これはChatGPTにこういう関数があるので困ったらこれ呼んでいいよというのを覚えさせる機能である。ChatGPTは学習データは過去のものであるため天気予報などはできないが、天気予報の関数があることを教えておくと、天気の情報が必要になった時にその関数を用いて情報を取得して天気予報を行うことができるようになる。今回のプロダクトであれば家電に対して操作を行うことができる関数を教えておく必要がある。

FunctionCallingは便利な機能ではあるがなかなか厄介である。本当にリンク先を見てほしいのだが、天気予報一つにとんでもない量の記述である。関数そのもの、引数それぞれに型や説明の記述が辞書型およびJSONの形式で必要になる。これを各家電になど到底考えたくもない。

ということでこれらの面倒な機能を楽にしてテキストからIoT家電(APIから制御できる電球)を制御できるようにするのが私の任務1である。結局これが完成するのは翌朝4時だか5時だかになる。たった電球光らすのにどんだけかけてんだという話になるが、まあこいつらがとんでもなく厄介だったのである。

streamについては実装経験があるので大して苦労しなかったが、難しいのはFunctionCallingとそれの複合だった。

眠いので残りは明日書いて推敲します。