TDX2025 Agentforce Hackathonに参加した

## Agentforce Hackathon
今、サンフランシスコで開催されている[TDX 2025](https://www.salesforce.com/tdx/)に参加しています。秋のメインイベント（Dreamforce）は何度も行ってるんですが、何気に春は初めてです。

その前哨戦として[Agentforce Hackathon](https://www.salesforce.com/tdx/hackathon/)というのが開催されるらしいとRegistration時に言われたので念のため申込をしておいたのですが、そのまま参加することになりました。

SalesforceのHackathonと聞いて思い出すは約10年前の[$1M Hackathon](https://developer.salesforce.com/blogs/developer-relations/2014/10/results-salesforce-1-million-hackathon)。~~高額賞金に目がくらんだ~~多数の開発者が自らの腕っぷしを試していたのですが、自分も参加していました（もちろん賞金ゲットはならず）。今回はそのときよりは賞金は少なめですが、それでもGrand Prizeで$100,000とそれなりに高額な賞金設定となっています。

なお前回はチームを組んでましたが、今回はそもそもチームを作る時間もなかったし実際にチームを組んだとしてどれだけ貢献できるかも不明なので責任を負わないソロ参加にしました。

## 日記
### Hackathon Day 1 (Mar 3, 2025)
夕方頃にTDXのバッジをMoscone Southへ取りに行くと、その2FでもうすでにHackathon会場もオープンしていました。
![IMG_3123.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6495/bb7c4df5-9035-4756-9d8d-6c101bbb5bf8.jpeg)

会場ではすでに説明が始まっており、約100名くらいの人数がテーブルに分かれて説明を聞いています（ぱっと見では日本人はいなそう）。時間内に本申込をしていないと参加できないらしいので、チーム作りは諦めてソロ登録。その後そのままHacking開始。軽食（スナックなど）やドリンク（コーヒー、清涼飲料水）は自由にとってよし。なおその日は夜の12時まで会場空いていたらしい。

### Hackathon Day 2 (Mar 4, 2025)
朝7時から会場オープンしていて朝食も取り放題なので、また会場へ移動して作業開始。TDX的にはこの日はDay 0なのだけれども別途でPartner関係の集まりもありフルには参加できない。参加した以上はもったいないので頑張る。締切は20時だけれども18時の手前でなんとか形にして動画をとってSubmit完了。おつかれ自分。

## 何を作ったか
一言では説明しにくいので、下のリンク先にある動画を御覧ください。
https://github.com/stomita/tdx2025-hackathon
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6495/4f9a1266-4159-4839-9b64-6b45f439f26e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6495/e1f21775-2ddf-4419-8f91-faa338b67164.png)

AgentforceではユーザーはChatインターフェースを通じてAgentとコミュニケーションをしますが、そのようなインターフェースだけではAgentが情報として表現できるものは限られてしまいます。

そこでUIをコントロールするActionを定義することで、ユーザが表示している画面（LWCで構成）へ直接画面の描画指示を送るようにしました。更に画面上でのユーザの操作をAgent側に伝えることで、UI上でのユーザの文脈を理解しAgentが推論する際に役立てることができるようにしました。

いわば[ChatGPTのCanvas](https://openai.com/index/introducing-canvas/)あるいは[ClaudeのArtifact](https://www.anthropic.com/news/artifacts)のようなことをできるようにと考えて作られたものです。

## 開発
最近はCline (Roo Code）の活用を積極的に試していたのですが、今回のHackathonでガンガンに使いました。まあ控えめに言ってすごいですね。ReactやTypeScriptのコードが書けるのはもはや驚かないんですが、ApexコードもLWCの開発も全然問題ないですね。まあModelとして使っていたClaude 3.7 Sonnetが賢いのかもしれないですが、Salesforce CLIのコマンドもOK。deploy実行してエラーになったらちゃんと直してくれるし。なんだAgentforce for Developersなんていらんかったんや。

地味にデモ用途で有用だなと思ったのがロードするデータの生成。オブジェクト定義に従ってCSVファイルの生成をできるのはもちろん、作成した他のCSVデータを読み込ませて関連を保ったCSVデータも生成できる。たとえば商談情報に関連づいたToDo活動履歴とか。コンテキストに従ってダミー情報を入れるのもお手の物。これ人間が手でやったら大変だし、[FactoryBot](https://github.com/thoughtbot/factory_bot)のようなもので明示的に生成させるのもそれはそれで面倒なので、全デモエンジニアはノウハウ習得すべきじゃないかなと思いました。

一点、`.clinerules`に「指示への回答は指示者の言語でよいが、コード、データ、UIメッセージは常に英語で書けよ」と書いていたにも関わらずときどき日本語をコード内に入れられたのは辟易したけど（Hackathonのルールでは全部英語で作れと言われているため）。

最終的に成果物の9割以上はClineが書いてくれたし、Hackathon品質では概ね訂正の必要なしでした。これがなかったらこの短時間でのHackathonの完走は無理だった。まじで。

今回の実体験も踏まえて考えたとき、現在のところAI AgentのパワーというのはBusiness UserよりもDeveloperが先に実感する構造となっていると思います。ClineやCursorは単に開発の効率化という話だけではなく、今後徐々に展開されるであろうBusiness UserへのAgenticなアプローチにおいて、一体何をすればいいかが直感的にわかるという点で大変有用です。

ちなみにHackathonのルールには生成AIでコードを書くなといったことは書かれていないのですが、説明用の動画資料を作るときに画像や動画、音声を生成AIで作ったらだめよ、と書いてありました。おもしろい。

## 結果
結果はTDXの期間内に発表あるらしいけど、まだこれを書いている時点ではわからないです。ただ、作成したものはAgentによる業務の実装というよりはテクノロジーの組み合わせによるPoCのようなものなので、審査基準から考えるとそれほど受けはよくないだろうなとは思います。まあオリンピックと同様に参加することに意義があるのです。寝て待ちましょう。