Slide 1

Slide 1 text

AIエージェントと協働するCLI開発 BunとOpenClawで学んだこと 1 1 yoshikouki 事業開発部 エンジニアリングリード TSKaigi 2026 2026.05.23

Slide 2

Slide 2 text

2 ⾃⼰紹介 事業開発部 エンジニアリングリード 2020年 中途⼊社 yoshikouki よしこ / 吉本 康貴 ● 鹿児島.mk・エンジニアBar 主催(鹿児島在住) ● 理学療法士 → ソフトウェアエンジニア ● 自宅でAIエージェント OpenClaw が稼働中 ● デジタルプロダクト開発・3Dプリントが趣味

Slide 3

Slide 3 text

OpenClawが⼈間も含めたタスク を管理する git hooks の類似機能で拡張する よくあるフィードツール sitemap にも対応して便利に 使っている git hooks の類似機能で拡張する OpenClaw と作った CLIの例 3 ⾃⼰紹介 feeds-cli todai discorddaemon Discord Bot をCLI経由で操作 通知を起点にスクリプトを フックできる freecad-cli AIエージェントからFreeCADを 操作するCLI ⼈間の利⽤は想定していない applefm macOS 26+ でリリースされた Apple Foundation Models のCLI nota Notion API / SDK を使⽤するCLI 公式の ntn でお役御免に。

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

AIエージェントがCLIを使う時代 5

Slide 6

Slide 6 text

AIエージェントがCLIを使う時代 6 ● Claude Code, Codex, OpenClaw... など ● yoshikouki/freecad-cli ○ OSSの3Dモデリングツール FreeCAD をCLIから操作 ○ 想定利⽤者はAIエージェントのみ ● ⼈間もユーザーであり続けるだろうが、 今後はAIエージェントも主な想定利⽤者になる AIエージェントがCLIを使う時代

Slide 7

Slide 7 text

OpenClawが⼈間も含めたタスク を管理する git hooks の類似機能で拡張する よくあるフィードツール sitemap にも対応して便利に 使っている git hooks の類似機能で拡張する ほとんどが OpenClaw 向け 7 feeds-cli todai discorddaemon Discord Bot をCLI経由で操作 通知を起点にスクリプトを フックできる freecad-cli AIエージェントからFreeCADを 操作するCLI ⼈間の利⽤は想定していない applefm macOS 26+ でリリースされた Apple Foundation Models のCLI nota Notion API / SDK を使⽤するCLI 公式の ntn でお役御免に。 AIエージェント AIエージェント システム AI AIエージェント AIエージェント 人間 AIエージェントがCLIを使う時代 AI

Slide 8

Slide 8 text

$ gws drive files list --params '{"q":"name contains \"TSKaigi\""}' { "files": [ { "id": "****", "kind": "drive#file", "mimeType": "application/vnd.google-apps.presentation", "name": "AIエージェントと協働する CLI開発 - TSKaigi 2026" } ], "incompleteSearch": false, "kind": "drive#fileList" } AIエージェントがCLIを使う時代 8 gws CLI (googleworkspace/cli)

Slide 9

Slide 9 text

AIエージェントがCLIを使う時代 9 ハーネスとしてのCLI

Slide 10

Slide 10 text

AIエージェントのためのCLI設計 10

Slide 11

Slide 11 text

11 AIエージェントのためのCLI設計 前提として、AIは⼗分に賢い。しかし、カットオフで情報が数ヶ⽉遅い場合も また、⼈間にとっては⾯倒な⼿順も便利に使いこなしてしまう 例: gws CLI のクエリ, gh api など $ gws drive files list --params '{"q":"name contains \"TSKaigi\""}' . “ AIは賢くて⼿間を惜しまない”

Slide 12

Slide 12 text

プリミティブ 単⼀の概念に作⽤(CRUD) そのCLIで取り扱える概念の コンテキストにもなる 基本利⽤の中⼼となる機能 例: $ gh issue . 統合 複数の概念に対して作⽤ ドメイン知識を要求する操作 副作⽤‧危険操作へのガード (各コマンドに対するサブコ マンドとして提供されること も) 例: $ gh search . 緊急ハッチ 既存操作を超えて利⽤できる 機能 AIが⼗分な前提知識を保持 しているなら、ハッチの提供 だけで⼗分なケースもある 例: $ gh api . 12 AIエージェントのためのCLI設計 機能は3つの軸で⽤意する

Slide 13

Slide 13 text

--help. 事前にコンテキストを伝える しかし、必ず叩いてくれるとは 限らないことを念頭に置く Agent Skills も検討する 異常に気付ける インターフェースを⽤意する 13 AIエージェントのためのCLI設計 エージェントのコンテキスト補完 --json. 機械可読‧変換可能な出⼒ --json-schema. 結果‧出⼒を取捨選択できる ように渡しておく エラー 以下を伝える What なんのエラーか Why なぜエラーが起こったか How どのようにするべきか $ * doctor. $ * log. エラーの調査、エージェントの コンテキストを跨いだ操作など で探索可能なインターフェース を⽤意する

Slide 14

Slide 14 text

14 ● 必要な周辺道具が単⼀環境で実現 ○ 実装‧テスト‧配布が⾼速 ● 豊富な Bun API ● 開発上の摩擦が少ない 特徴は相対的に薄くなりつつあるが、 試⾏する開発リズムとの相性で採⽤ Bun がCLI開発を加速 AIエージェントのためのCLI設計 Bun API(例) SQLite/S3/Redis JSON/YAML/TOML Cron Secrets WebView Image

Slide 15

Slide 15 text

15 AIエージェントのためのCLI設計 利⽤者 インターフェース 機能 データ ⼈間 AI Agent CLI MCP Other Tools --json-schema. --help. $ * doctor. $ * log. --json. システム $ * {commands}. アプリデータ ユーザデータ 各種ログ 統合 プリミティブ 緊急ハッチ

Slide 16

Slide 16 text

Bun と⾔えば... 16

Slide 17

Slide 17 text

17

Slide 18

Slide 18 text

AIエージェントの時代でも変わらないもの 18 ● ここでは Bun の Rust 移⾏の是⾮は置いといて‧‧‧ ● Claude Max プランの Claude Code 対応が2025年5⽉ ○ まだ1年しか経っていない ○ ChatGPT 登場からは3年半 ● では1年後‧3年半後にどのように変わっているか? ○ → 結論、分からない。なので問いを変える AIエージェントによる変化

Slide 19

Slide 19 text

19 ジェフ‧ベゾス(Amazon.com 共同創設者) "It's interesting, I do get asked quite frequently what's going to change in the next 10 years. One thing I rarely get asked is probably even more important — and I encourage you to think about this — is the question: What's not going to change in the next 10 years." “今後も変わらないものは何か” 出典: Live from Las Vegas, it's re:MARS 2019 https://www.aboutamazon.com/news/innovation/live-from-las-vegas-its-re-mars-2019

Slide 20

Slide 20 text

20 利⽤者 インターフェース 機能 データ ⼈間 AI Agent CLI MCP Other Tools --json-schema. --help. $ * doctor. $ * log. --json. システム $ * {commands}. アプリデータ ユーザデータ 各種ログ 統合 プリミティブ 緊急ハッチ AIエージェントの時代でも変わらないもの

Slide 21

Slide 21 text

21 利⽤者 インターフェース 機能 データ ⼈間 AI Agent CLI MCP Other Tools --json-schema. --help. $ * doctor. $ * log. --json. システム $ * {commands}. アプリデータ ユーザデータ 各種ログ 統合 プリミティブ 緊急ハッチ ? ? 変わら ない? 変わら ない? AIエージェントの時代でも変わらないもの

Slide 22

Slide 22 text

22 利⽤者 インターフェース 機能 データ ⼈間 AI Agent CLI MCP Other Tools --json-schema. --help. $ * doctor. $ * log. --json. システム $ * {commands}. アプリデータ ユーザデータ 各種ログ 統合 プリミティブ 緊急ハッチ この流れは 変わらない AIエージェントの時代でも変わらないもの

Slide 23

Slide 23 text

利⽤者 インターフェース 機能 データ ⼈間 AI Agent システム アプリデータ ユーザデータ 各種ログ 品質 (ビッグワードを形で表現) AIエージェントの時代でも変わらないもの

Slide 24

Slide 24 text

品質 is 何 24

Slide 25

Slide 25 text

● Linter ● TypeScript ● Test ● Coverage ● Error tracking AIエージェントの時代でも変わらないもの 25 品質を担う仕組み ● Bundle size / Web Vitals ● Accessibility check ● Security scan ● Observability

Slide 26

Slide 26 text

地図としての SQuaRE ファミリー規格( ISO/IEC 25000 系のソフトウェア品質要求‧評価の規格群) 利⽤時品質モデル ISO/IEC 25019 データ品質モデル ISO/IEC 25012 製品品質モデル ISO/IEC 25010 26 26 AIエージェントの時代でも変わらないもの サービス品質モデル ISO/IEC TS 25011

Slide 27

Slide 27 text

27 機能適合性 性能効率性 互換性 対話性 信頼性 セキュリ ティ 保守性 柔軟性 安全性 機能完全性 機能正確性 機能適切性 時間効率性 資源効率性 容量満⾜性 共存性 相互運⽤性 適切度認識性 習得性 運⽤操作性 ユーザエラー 防⽌性 ユーザエンゲー ジメント 包括性 ユーザ⽀援性 ⾃⼰記述性 無障害性 可⽤性 障害許容性 回復性 機密性 インテグリ ティ 否認防⽌性 責任追跡性 真正性 耐攻撃性 モジュール性 再利⽤性 解析性 修正性 テスト可能性 適応性 拡張性 インストール性 置換性 運⽤制約性 リスク識別性 フェールセーフ 危険警告性 統合時安全性 共存性 相互運⽤性 製品品質モデル ISO/IEC 25010:2023

Slide 28

Slide 28 text

● データ周りの設計 ● 品質の担保 ● 「利⽤者→インターフェース→機能→データ」の設計 ● その他... 「こう作るのはどうか?」という試⾏を CLI開発では⼩さく‧⾼速に回すことができる 28 「変わらないもの」をどう作るか AIエージェントの時代でも変わらないもの

Slide 29

Slide 29 text

29 ただ開発が早くなるだけではない ● 「暗黙の思考や設計論をAIエージェントに指⽰する」 という外部化が強制される ○ 外部化されたモノからさらに再学習できる ● CLIならAIエージェントとのドッグフーディングも容易 AIエージェントの効⽤ AIエージェントの時代でも変わらないもの

Slide 30

Slide 30 text

まとめ 30 ● CLI開発は、単なる便利ツール開発に留まらない ● AIエージェントによって激動している時代に、 変わりにくいものへの⾃⾝の関⼼を再学習できる ● その⼀連の設計‧実現を⾼速に経験できるのがCLI開発 ● TypeScriptとBunは、その回転速度を上げる CLI開発は⼩さな設計実験場