Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
go-spidermonkeyでAIエージェントのCode Modeを実装する
Search
syumai
August 24, 2026
Programming
1.6k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
go-spidermonkeyでAIエージェントのCode Modeを実装する
layerx.go #5 の発表資料です!
*
https://layerx.connpass.com/event/402006/
syumai
August 24, 2026
More Decks by syumai
See All by syumai
Workers Cache を知る
syumai
0
320
自分的「カンファレンスの楽しみ方」
syumai
0
220
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.9k
Oxlintのカスタムルールの現況
syumai
6
2.1k
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1.6k
『[入門] Cloudflare Workers』本はなぜ誕生したのか
syumai
0
630
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
9
3.4k
知られているようで知られていない JavaScriptの仕様 4選
syumai
3
1.3k
CloudflareのSandbox SDKを試してみた
syumai
0
1.1k
Other Decks in Programming
See All in Programming
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
420
AWSに止められる覚悟してますか?
morizo_1984
2
500
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
530
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
160
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
330
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.3k
FreeBSDでZabbixを動かす
kenkino
0
350
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
220
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
410
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
290
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
The Pragmatic Product Professional
lauravandoore
37
7.5k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
Raft: Consensus for Rubyists
vanstee
142
7.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
350
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building Applications with DynamoDB
mza
96
7.2k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
Transcript
go-spidermonkeyでAIエージェントの Code Modeを実装する 2026-8-24 layerx.go #5 @syumai
whoami syumai LayerX ソフトウェアエンジニア バクラクヘルプデスク エージェントを開発中 Asakusa.go / ECMAScript 仕様輪読会
主催 X: @__syumai Website: https://syum.ai © LayerX Inc.
Code Modeとは?
Code Modeとは? 「LLMに個々のツール呼び出しを生成させる」のではなく、「ツールを呼び出すコード を書かせ、そのコードをSandboxで実行する」 方式 生成されるのは基本的にJavaScriptのコード 2025年9月にCloudflare Blogで紹介された https://blog.cloudflare.com/code-mode/ 先行研究に、CodeActという手法があった
https://proceedings.mlr.press/v235/wang24h.html © LayerX Inc. 4
https://blog.cloudflare.com/code-mode/ © LayerX Inc. 5
Code Modeによる実行の例
ツール定義のイメージ © LayerX Inc. 7
ツールのTypeScript関数への変換のイメージ © LayerX Inc. 8
Code Modeによるツールの呼び出しイメージ © LayerX Inc. 9
Code Modeの優れた点
Code Modeの優れた点 中間結果をLLMのContextに持たない 複雑なツール呼び出しをコードとして合成できる LLMが得意なコード生成を活用できる © LayerX Inc. 11
1. 中間結果をLLMのContextに持たない 通常のTool Callingでは、ツールの結果が毎回LLMに戻る。 © LayerX Inc. 12
1. 中間結果をLLMのContextに持たない Code Modeでは、中間結果をSandbox内に保持できる。 © LayerX Inc. 13
2. 複雑なツール呼び出しをコードとして合成できる 以下のような、複数回のツール呼び出しを map で表現し、結果のソートを配列の sort で表現したりできる 決定的な処理をLLMに任せなくていい © LayerX
Inc. 14
3. LLMが得意なコード生成を活用できる 通常のTool Callingでは、ツール呼び出し固有の形式を生成する。 <tool_call> © LayerX Inc. など。この部分は変わりうる 15
3. LLMが得意なコード生成を活用できる Code Modeでは普通のコードを書く コードには大量の学習データが存在 LLMのプログラミング能力をそのまま活用可能 → 「ツールを呼ぶ能力」を「コードを書く能力」に寄せられる © LayerX
Inc. 16
Code Modeの優れた点 ツール呼び出しの中間結果と制御フローをLLMのContextから実行環境へ移すことがで きる トークン効率や実行時間などのパフォーマンスが向上することが期待できる © LayerX Inc. 17
直近の話題: Vercel AI SDKのCode Modeサポート TypeScript向けのAI機能提供ライブラリとして最も有名なVercel AI SDKがCode Mode をサポートした
Cloudflareがブログで示していたのはMCP toolにおけるユースケースだが、Vercel AI SDKはMCPに限らないツールのコード変換を対象としている Cloudflareに留まらず、活用が進んでいる https://ai-sdk.dev/docs/ai-sdk-core/code-mode © LayerX Inc. 18
Go製のエージェントでCode Modeを使うには?
Go製のエージェントでCode Modeを使うには? LLMが生成したコードを実行するSandboxが必要 Code Modeでは、関数に変換したツールの呼び出しくらいのライトなコードしか記述さ れない インタプリタ型言語が適切 いちいちコンテナを立ち上げると時間がかかる Go向けの軽量Sandbox実装が豊富なJavaScriptが有力な選択肢 ©
LayerX Inc. 20
Go製のJavaScriptインタプリタ実装
Go製のJavaScriptインタプリタ実装 いくつか存在する 特に有名なものはgoja https://github.com/dop251/goja 今回はgoccy/go-spidermonkeyを選択 https://github.com/goccy/go-spidermonkey © LayerX Inc. 22
go-spidermonkey FirefoxのJSエンジンのSpiderMonkeyを丸ごとPure Goに変換したライブラリ SpiderMonkeyベースなので、test262 (ECMAScript互換性テスト) のスコアが高い Web API / Node.js互換機能も一部提供
デフォルトでOSやネットワークへのバインディングを持たないので安全 Optionalで追加可能 goccyさん製 © LayerX Inc. 23
go-spidermonkey の基本的な使い方 spidermonkey.New でインスタンスを生成し、 Eval メソッド呼び出しで実行 実行結果は .String() / .Float()
/ .Object() などで取り出す © LayerX Inc. 24
Go側の関数のJSへの公開 Global().DefineFunc でGo側の関数をJSに公開できる 引数の取り出し方も実行結果の取り出し方と同様 © LayerX Inc. 25
GoによるCode Mode付きエージェントの実装例
実装例: funcbox-agent https://github.com/syumai/funcbox-agent syumaiが開発中のfuncboxというサーバーレス関数プラットフォームのエージェント funcboxにワークスペースを追加したり、関数をデプロイしたりするMCP tool実装を持つ エージェントとしては、チャット形式のUIを提供している © LayerX Inc.
27
funcbox-agentのアーキテクチャ Backend: Genkit Go https://github.com/genkit-ai/genkit/tree/main/go Backend (Sandbox): go-spidermonkey Frontend: Vercel
AI SDK + @genkit-ai/vercel-ai/client Genkitが公式でVercel AI SDKとのストリーム変換アダプタを提供している © LayerX Inc. 28
デモ
funcbox-agentの実装解説
run_js tool エージェントが公開するツールは run_js の1つだけ LLMがツール呼び出しをまとめて記述したコードを1回で実行する © LayerX Inc. 31
MCP toolのTypeScript型定義への変換 各MCP toolのJSON Schemaを、起動時にTSの型定義へ変換し、コード生成に利用して いる run_js © LayerX Inc.
toolのdescriptionに埋め込み、LLMに型付きのシグネチャとして見せている 32
LLMが生成するJavaScriptコード例 © LayerX Inc. 33
ツール呼び出し用関数のGoからJSへの公開 を使って、JSからGo側にあるMCP tool呼び出し関数を呼び出すバイ ンディングを行っている Global().DefineFunc : MCP toolの実呼び出し。Go側で CallTool を実行し、結果をPromiseとしてJSに返す
この関数が funcbox.listFunctions({}) などの内部で呼ばれる __fbx_call(name, argsJSON) © LayerX Inc. 34
ツール呼び出し用関数のGoからJSへの公開 © LayerX Inc. 35
まとめ Code Modeを使うことで、エージェントからのツール呼び出しを効率化できる Code Mode用のコードの実行にはJavaScriptを使うのが楽 Go環境下でのJS Sandboxとして、go-spidermonkeyが使える © LayerX Inc.
36