tennki DOT AI 自動運転部・第1期コンペティションで最終6名のピッチ枠に選出。レアメタルと穀物の価格を14日先まで予測し、仕入れアラートを自動配信する「Sentient Supply-Chain Agent(S-SCA)」を開発。予測が外れると、AI自身が原因を分析してモデルのパラメータを書き換える。
「あと2日で発表資料を完成させねば」
── 最終6名のピッチ枠に選ばれたとき、率直にどう思いましたか。
ゴールデンウィークはほぼ今回のハッカソンに時間を費やしていたので、率直に嬉しかったです。
ただ、喜びの前に「あと2日で発表資料を完成せねば……!」という焦りが押し寄せました。
── 資料はどうやって。
ハッカソンの発表とはどうあるべきなのか、どんな資料を作ったら良いのか分からなくて。YouTubeで過去のピッチ動画やスライド構成の解説を貪るように見ながら、手探りで構成を組み立てていきました。
「昨日まで買えたものが、突然買えなくなる」
── 何を解決しようとして、このシステムを作ったんですか。
ホルムズ海峡の閉鎖によって、「昨日まで買えたものが突然買えなくなる」「あらゆる物資が爆発的に値上がりする」という事態が、現実のものとなっていました。
だから、企業の購買担当者と一般消費者が、予測をもとに先回りして行動できる通知システムをつくることで解決を目指しました。
── 対象にしたのは。
小麦、とうもろこし、ナフサ、銅、リチウムの5銘柄です。14日後の価格を予測して、変動が閾値を超えたら毎日19時にDiscordへアラートを飛ばします。
── なぜ14日なんですか。
物流の乱れが実際の価格に反映されるまでに、2〜4週間のラグがあるからです。バルチック海運指数が急変してから、それが商品価格に効いてくるまで時間がかかる。7日だと物流シグナルがまだ織り込まれていないので、予測の検証として不十分なんです。
── 何を手がかりに予測しているんですか。
価格そのものだけでなく、外生変数を8本入れています。海運指数、VIX、金、原油、ドル指数、天然ガス、中国ETF、ブレント原油。
たとえば銅は中国が世界消費の半分を占めるので中国ETFが効きますし、ナフサはブレント原油に直結する。銘柄ごとに効く指標が違うので、まとめて突っ込んで、モデルに重みを決めさせています。
「Human Out of the Loop = ハーネス仕様だ」
── テーマを最初に聞いたとき、どう解釈しましたか。
当時、Claude Codeでちょうどハーネス仕様を勉強していたんです。自動テストや外部エージェントに組み込んで、人間の確認をスキップする自動実行モードですね。
なので「Human Out of the Loop = まさにハーネス仕様のことだ」と直感的に解釈しました。
人間が毎回「y/n」の承認ボタンを押す(In the loop)のではなく、エラーが起きたらAI自身がログを読み、自律的に修復してテストを回し続ける。そんな完全自動化の実行基盤をハッカソンで体現せよ、というメッセージだと受け取りました。
── それがそのままシステムの構造になっていますね。PDCAが回っている。
はい。Oracleが予測して、Merchantが投稿して、14日後にAccuracy Evaluatorが実績と突き合わせて採点します。誤差率が基準を下回ったら、LLM Judgeが原因を分析する。
── 分析して、どうするんですか。
改善パラメータをJSONで出させて、次の予測にそのまま適用します。方向を読み違えていたら、間違った方向に引っ張った外生変数を除外リストに入れる。誤差が大きいけど方向は合っているなら、モデルの感度を調整する。同じ誤差が繰り返されているなら季節性の扱いを変える。
── 外部要因が大きすぎたときは。
そこは変えません。外部ショックのスコアが15%を超えていたら「一時的な外部要因だ」と判断して、パラメータ変更は最小限にします。たまたま当たらなかっただけのときにモデルをいじると、かえって悪くなるので。
VIXが高いときは許容誤差を1.5倍に緩めてもいます。相場が荒れている日に平常時と同じ基準で自分を採点したら、直さなくていいものまで直してしまうので。
── 精度はどのくらい出ているんですか。
バックテストの平均誤差率で、とうもろこし4.4%、小麦4.7%、リチウム6.0%、銅7.0%、ナフサ8.0%。5銘柄すべて基準は通っています。
「言葉がダメなら、構造を先に見せよう」
── 3週間で一番しんどかったところは。
ハーネス仕様という、目指すべきディレクトリ構造のイメージは頭の中にあったんです。ただ、それを言葉だけで的確に伝えるのが難しくて。設計の合意形成の段階が、一番の踏ん張りどころでした。
── どう突破したんですか。
「言葉がダメなら、構造を先に見せよう」と考えて、実際のフォルダを先に構築して提示したんです。
このアプローチが、面白いほど噛み合いました。目に見える形でフォルダを示すことで、システムがどう自律駆動するのかが一発で伝わる。結果として、ブレのない強固な設計基盤を短期間で作り上げることができました。
── 説明ではなく、現物を出したと。
そうですね。仕様書を書くより速かったです。
頭が真っ白になった審査
── 他の参加者のピッチを聞いて、どう感じましたか。
周りが強強の猛者ばかりで、とにかく勉強になることばかりの圧倒的な空間でした。
発表内容の素晴らしさはもちろんですが、限られた開発期間の中で、スライド資料の品質をどうやってあそこまで爆速で担保したのか。その「裏側のプロセス」が、同じ発表者としてピッチ以上に気になってしまいました(笑)。素晴らしいインスピレーションをたくさんいただいた時間でした。
── 審査はかなり厳しめだったと思います。
想定外の鋭い切り込みに、完全に頭が真っ白になって焦りました(笑)。
審査中は緊張のあまり、質問の意図が宙に浮いたような状態になってしまって。後から思い返しては「あぁ、的外れな回答をしてしまったな」と、一人で猛省しています。
ですが、こうした厳しいフィードバックをいただけることこそが、何よりも今後に生きる貴重な経験だと思っています。本気で向き合っていただけたことに、今では感謝しています。
トークンという、想定していなかった制約
── 参加してみて、正直どうでしたか。
開発プロセスにおいて、非常に多くの学びがありました。
特にClaude Codeでの自動化を進める中で、時間・月間の制限の壁にぶつかって。自律型システムにおけるトークン管理の重要性を再認識できたのは、大きな収穫です。
── 自分で動き続けるシステムだと、そこが直接コストになりますね。
そうですね。人が使うぶんには気にならない量でも、24時間勝手に回っていると、あっという間に上限に届く。どこにLLMを使って、どこを使わずに済ませるかを考えざるを得ませんでした。
開発期間中は予期せぬ制約との戦いもありましたが、このコンペティションという環境と熱量があったからこそ、途中で諦めることなく最後までやり切ることができました。
「楽しんで行いたい」
── これから入ってくる人に一言お願いします。
私よりも強強な方達ばかりなので特にはありませんが、楽しんで行いたいですね。
