AIエージェントのススメ 第1回 AIエージェントって何ですか?
AIエージェントと並走することで得られる新たな開発体験や、作業の効率化の実際を、具体例を交えて紹介していきます。初回は、AIエージェントをどう捉えたらいいか、そしてそのインパクトについて語ります。
はじめに
この連載は筆者高津戸が、読者にAIエージェントを使っての開発、ドキュメント作成、その他諸々を勧めるものです。自分自身、Claude Code(クロード・コード)を使ってから仕事の仕方が劇的に変わっていて、これはおそらくもう元には戻らないと考えています。
よくAIを使うと生産性が爆上がりだとか、効率が何倍になるとかいう話を聞くかと思います。自分自身も、だいたい常時2〜3件の作業をAIに並行してやらせるようになっており、何かAIに任せておけるタスクがある限りは、使う前に比べて数倍の効率になっていると感じています。
これについて自分は、日々「スゴイ、スゴイ」と感じているのですが、ただ「Claude Codeが超スゴイ」みたいな話をしても、おそらく自分が感じている感覚はなかなか共有が難しいとも感じています。
それは、おそらく今まで自分がしてきた仕事の種類や、やり方にも依存している部分が多くあると考えるからです。結局のところ、それが読者の方にとって本当にAIエージェントを有効に活かせるのかどうかはわかりません。ただ、日々コードやドキュメントを書いている人にとっては、「絶対に活かした方が良い!」と私は感じているので、この記事を読むことで何かヒントになるところがあると良いと考えています。
なお、筆者はClaude Codeを使っていると述べましたが、この連載の内容はClaude Codeについてというよりも、AIを使っていくための心構えとか考え方的な点にフォーカスを当てて書いていきます。それは、昨今のAI関連の変化は激しく、今「こんな新機能がすごい!」という話をしたところで、おそらく数ヶ月後には「もうそんなの使ってないよ」となってしまうことが想像されるがゆえです。今後ほかのAIエージェントや、その後続となりそうなソフトウェアやサービスが登場したとしても、ここで書いた内容が無駄にならないように心がけて書くつもりでいます。
AIエージェントって何? Claude Codeってどういうもの?
Claude Codeとはどういうものなのかというのを詳しく書いていく前に、まずは「AIエージェント」と世間的に呼ばれているものについて軽く触れておきます。
AIエージェントとは何か……。原稿を書いていくうちに、「そもそもAIエージェントって何だ?」と考え込んでしまいました。ですので、適切そうに思われた、ChatGPTの回答を以下に引用します。
AIエージェントとは、目標を達成するために、環境を観測し(情報を取り込み)、内部で判断・計画し、外部に行動(ツール実行やAPI呼び出しなど)を選択して実行するソフトウェア上の主体です。LLMはしばしばその"頭脳"として使われますが、エージェント=LLMではありません。
なるほど。では実際に使ってみましょう。Claude CodeはCLIタイプのAIエージェントでして、ターミナルでclaudeと打つと起動します。
そうしたら後はChatGPTやGrokと同じで、そこにテキストを打ち込めば、それをClaude Codeが受け取り、コードや文章を書いてくれるというものです。
この時、一つ一つ確認しながら実装を進めることもできますが、ある程度まとまった作業を自律的に判断して進めさせることも可能です。そういうものがAIエージェント(代理人)です。
ではその中で、Claude CodeとはどういうAIエージェントなの? と言いますと、それはClaude Codeを提供しているAnthropic社の方が話されていた説明がわかりやすかったので、以下に翻訳して紹介します。
(これから話すことは)僕が持っている「Claude Code」の頭の中でのイメージで、人に説明するときにもこう話してます。Claude Codeっていうのは、端末(ターミナル)で全部やっちゃう同僚みたいな存在なんです。GUIなんて絶対触らないタイプ。とにかく端末の達人です。
僕が新人エンジニアだった頃、あるメンターがいて、彼のデスクに行って「ねぇトニー、このバグ助けてくれない?」って頼むと、彼はサッと端末を開いて、すごいBashコマンドをガンガン打ったり、Vimでファイルをいじったりしてくれました。で、僕はいつも「うわ、すげぇ。俺もこれできるようにならなきゃな」って思って帰るんです。でも、結局できるようにはならなかった(笑)。Claude Codeを自分のPCに入れるっていうのは、常に隣にトニーが座ってるようなものなんです。
じゃあClaude Codeってどう動いてるのか。Anthropicでは「シンプルに動くものを作る」っていうのを大事にしていて、それをClaude Codeにも当てはめています。つまり、Claude Codeは「純粋なエージェント」なんです。Anthropicでエージェントって言うとき、それは「いくつかの指示」と「強力なツール」を与えて、モデルが『もう終わった』と判断するまでループで動かし続ける、って意味です。Claude Codeもまさにそうで、ツールと、それを駆使できる能力があるんです。端末に強い人なら、ファイルの作成や編集、コマンド実行なんかをツールとして扱えますよね。さらに、MCPを使って他のものを引っ張ってくることもできます。(翻訳:著者)
CLIで話しかけると、CLIでできることをあれやこれやなんでもやってくれる人!を模したソフトウェアという感じですね。そして、一通りの作業を、もう終わったと判断するまで動かし続けるという点も大きなポイントかと思います。これについては追って詳しく見ていきましょう。
Claude Codeの利用方法
Claude Codeは前述の通り、Anthropic社の提供しているサービスで、2025年9月現在、月額$17(年払いの場合)のProプラン以上の契約で利用可能です。
なお、AIエージェント的なソフトウェアとしては、Claude Codeのほかにもありますが、こういったツールは、何かしら個人が自分にマッチしたものを使えばそれで良いと考えております。本シリーズは、あくまで高津戸という人間がClaude Codeをこういう風に使っているという読み物としてお読みください。
AIの利用仕方変遷
Claude Codeの話に進む前に、そもそも自分はAIをどうやって使ってきたんだ? 皆はどう使っているのだろうか? というのを改めて振り返りました。ちょっと長くなりますが、まずはAIの使い方の変遷を紹介したいと思います。
筆者としては、以下のような利用の仕方の移り変わりがありました。
- ChatGPTスゴイ時代
- VS Code+GitHub Copilotスゴイ時代
- Claude Codeスゴイ時代
普段コードを書いている人なら、1と2までの流れが同じ人は多いのではないかと考えます。2はもしかしたらCursorだったりするかもしれません。この移り変わりについて、それぞれ見ていきます。
1. ChatGPTスゴイ時代
まず、ChatGPTが登場してすごかったということを、かなり多くの方は当時感じていたのではないでしょうか。そして、今ではもう当たり前のように使っている人がほとんどなのではないかと想像しています。ピクセルグリッドとしてもChatGPTをチームプランで社員全員分契約し、継続して利用しています。
このChatGPTについて、いろいろな側面があるとは思いますが、個人的にはまず、自分がGoogle検索をして消化していた問題解決の方法を置き換えるものになっていると感じます。
ググり力の置き換え
プログラマーは普段何をしているのか、昔、ミーム画像で見かけたことがあります。探しても見つからなかったので、ここはAI記事らしくChatGPTで作った画像を載せてみましょう。
- 世間的なプログラマーのイメージ: PCを何台も並べて並行作業、ハッカーのようなイメージ
- 現実のプログラマー: Google検索をして結果を待つ、Stack Overflowを見る→コードを打ち込んで待つ→エラーが出る→修正する
実際に我々開発者の仕事というのは、この「現実のプログラマー」がやっていたことの繰り返しであること(あったこと)はある程度事実でしょう。このネットミームは、インターネットにある情報の中から必要な解決方法を探しているのが、現実的な開発者の姿であることを意味しているというわけです。
図にするとこんな感じでしょうか。開発者がGoogle検索で検索し、その結果からサイトにアクセスするということを、解決策にたどり着くまで繰り返しているわけです。
ただ、この方法で必要な情報を見つけるのには、無数にある情報の中から取捨選択するという、ある種のスキル、いわゆる検索力のようなものが必要です。そして、それが開発者に必要なスキルの一つであるとも言えます。
そこでChatGPTの話に戻りますが、ChatGPTはインターネットを検索して得られる情報も含めてまとまった答えを返してくれるものです。ですから、このGoogle検索力のようなものはもうAIがやってくれる、それもかなりの精度で──となっているという事実が、一つ確実にあるかなと。筆者自身、何か検索して調べるより前にまず、ChatGPTに聞くことのほうが多くなっています。
こちらも図にするとこういうイメージです。
旧来の情報習得では、検索結果からサイトAの記事を選んで読み、解決策が見つからなければ、また検索してサイトBの記事を読む……ということを、人が繰り返していました。しかし、ChatGPTは検索した結果から、サイトAとBとCと……の記事の要点抽出や、補足情報の取得といった一連の流れを統合して人に提示してくれます。
判断基準はAI依存になりますが、人のやっていたことを代替してくれています。どの情報を選ぶかという、検索力は必要ありません。
教師/メンター的役割
その他、ChatGPTなどのAIは、質問に対し質問者のスキルや理解度に合わせた回答をしてくれるという点が大きいでしょう。物事を新しく学んだり、単純に回答を見つけるのが難しいケースについて、それまでと比較すると圧倒的に効率的に理解を進められる状態を、人類は手に入れることができたと筆者は感じます。
筆者は、よく英語のニュアンスを確認したり、こういうときにどういう風に言ったら適切なのかをChatGPTに聞くことが多いです。たとえばこんな感じでChatGPTに聞いてみたとします。
この英語って、
Some of the JSON files in this directory may also be missing this property. Please check and fix them.
missってのは動詞で、抜けてるとか漏れてるとかそういう意味なの?
それに対して、ChatGPTは次のように答えてくれます。
はい、その理解で合っています。
この文脈での "missing" は「(あるべきものが)欠けている」「抜けている」「存在しない」という意味です。 動詞 "miss" は「見落とす」「逃す」「~がない状態になる」といったニュアンスを持ちますが、この場合は形容詞的な "missing"(欠落している)として使われています。
したがって、
Some of the JSON files in this directory may also be missing this property.
は直訳すると、「このディレクトリ内のいくつかの JSON ファイルにも、このプロパティが欠けている可能性があります」という意味になります。
ここでいう "欠けている" は「意図せず入れ忘れられている」というニュアンスで、単純な物理的欠損ではなく「必須項目が入っていない状態」を指しています。
昔々を思い返せば、分厚い英語の辞書から意味を探し、その説明と例文を読み、なるほどそういう風に使うのかという具合で意味を把握したり、英語のテキストを作っていました。その後電子辞書やスマホが登場して探しやすくなり、「これは便利だな」と思いました。
ですが、今はChatGPTに聞いたほうがベターです。効率が良いだけでなく、その細かいニュアンスの解説、別の言い方候補まで提案してくれます。
そしてそれだけでなく、「こういう場合にはどういう風に言ったら良いかもご紹介できます」ということも言ってくれたりするわけです。辞書を引けばその単語の別の使い方も理解できるという側面はありましたが、そういうメリットさえも、AIに聞いたほうが深く知れるわけです。これはあくまでAIによりキュレーションされた結果ではありますが、辞書だって辞書を作っている人間がキュレーションした例文や補足を掲載しているわけですから、そのコンテンツを作った人の違いでしかありません。
これは当然、英語だけでなく、開発において何か新しくプログラミング言語を覚えるときでも大助かりです。何かわからないことがあった場合――具体的なプロジェクトで仕事をしている場合が多いわけですが――ペタッとコードを貼って「これってどういう意味?」とか聞くだけで丁寧に教えてくれます。検索では答えにたどり着きづらい、以下のようなコードであっても丁寧に解説してくれます。
(function() { return a === b ? x : y })();そこからさらに質問を繰り返していけば、いくらでもわからないことを、ものすごい速さで、自分が質問することが尽きるまでこれを繰り返せるわけですから、すごい時代になったものです。AI以前のことを思い返せば、親身になってくれる家庭教師や先輩のような存在が身近にいなければ達成することが難しかったことが、非常に手軽に達成できるわけです。
2. VS Code+GitHub Copilotスゴイ時代
そんな便利なChatGPTの次にインパクトがあったのが、VS Code上でのGitHub Copilotのコード補完でした。今さら説明する必要はないかもしれませんが、エディタ上でコードを書いていけば続きの内容を予測してその場で書いてくれるので、圧倒的に効率良くコードを書けるようになりました。
Copilotを使うようになって感じたのは、プログラミングの文法を知っているとか、うまい書き方を暗記しているというようなことの価値は、もうあまりなくなってしまったのかも……ということでした。
文法やライブラリのメソッド知識
昔の話でジジイっぽい感じですが、たとえばJavaScriptでquerySelector()/querySelectorAll()が主要なブラウザで利用可能になったタイミングがありました。Internet Explorer 8以降ぐらいの話ですが……。
こういう使える技術のボーダーラインが上がったとき、当時、私は大きな喜びを感じていました。今までそれをやるためにがんばって要素を取得してくる関数を用意したり、当時は必須級のライブラリであったjQueryを使っていたわけでして、それなしにDOMを取得できるようになったからです。他にも、Array.prototype.forEach()やArray.prototype.map()が使えるようになったりなど。そういう時、実際にそのメソッドなどをエディタに打ち込んでみて、言ってみれば新品の靴を履き慣らすようなことを楽しんでやってきていました。
ただ、今の時代、このような情報が頭の中に入っていて暗記している、履き慣れた靴になっているという、そのこと自体にあまり価値のあることではないように感じます。それは、VS Codeですぐに日本語でコメントを書いたら、Copilotがサジェストしてコードが候補として表示されるようになっているからです。
さらに、既存のコードベースを元に、適切と思われるコードもガンガン補完候補として表示され、タブを押しているだけである程度コードが書けてしまいます。そのような現代の環境では、必ずしもその文法通りに一文字一文字打ち込む必要がなくなっています。
もちろん、AIのサジェストしたコードが正しいのか、本当に適切なのかの判断をするのは最終的には人間です。ですが、少なくとも文法やメソッド名などを丸暗記していなければならないという必要はなくなっていることは事実でしょう。「昔はhogeというクラスの付いたDOMを取ってくるのにこんなに苦労していたんじゃよ」みたいなのは、もうおじいちゃんの昔話でしかないですよね。
Reactの書き方ではなく、Reactで何をしたいか
Copilotを使えば、自分にとっては、そこまで深く理解しているわけではなかったReactをサクサク書けてしまうと感じたのをよく覚えています。現在の自分の会社での役割はディレクターです。ディレクター的な働き方を始めた頃、世間的にはReactが盛り上がってはいましたが、その時自分は仕事でコードを直接書く機会が減っていました。「Reactのことは雰囲気ではわかるが、実際にそれで何か作ったことがあるわけではない」という状態だったわけです。
そういう人間がReactを覚えたいと思えば、手元で何か作ってみて、Reactの、JSXの書き方を一つずつ覚えていくというステップを経るのが昔ながらの覚え方でした。個人的にはプライベートも忙しい時期だったので、Reactでコードを書く機会は少なかったものの、家事をしながらUdemyのReact講座みたいなものを見るなどしていたことを覚えています。
ですが、今はエディタ上でガンガン補完されるので、ざっくりとした文法や理屈がわかっていればそれでよく、なおかつその場でAIに質問できるわけです。
結果、そのようにサクサクコードが書けるようになった今では、開発者はコードをどう設計すればよいのかという側面にフォーカスして考えることができるようになったと筆者的には感じられます。Reactの(というか主にJSXの)文法を知っていることは重要ではなく、Reactが「どういうもので」「何ができて」「どういう時にどういう設計をすれば良いか」、それがわかっていれば良いということです。
そんなわけで、そうやってAIを使う際には、何をしたいのかが重要というのが、日に日に強まってきているという印象があります。
余談ですが、昔苦労していた人間は時代が進むといろいろ効率的になって、現環境を心地よく感じることができる、実際に傷ついた人は人に優しくできるみたいな理屈が働いていそうな気もします。今の若い人ってこんな状態から開発を始めるのか……みたいなことを感じてしまいますね(ジジイ)。
3. Claude Codeスゴイ時代
ここまでは、まぁ皆結構そうしてるという人が多いのではと思われます。自分も、「いやー、AIを使うと圧倒的に効率がよくなるよ。Copilotは神」ぐらいに思っていました。しかし、Claude Codeを導入したときに感じる飛躍は、ここまでのAIによりもたらされたアレやコレやの飛躍を凌駕しているように感じています。
このClaude Codeの何がすごいのかということですが、以下の2点が挙げられるかと考えています。
- LLMのモデルとClaude Code自体の組み合わせがよくできている(おそらく)
- 自律的に作業を進めるので、ユーザーはその作業から離れられることができる
これらについてそれぞれ見ていきます。
1. LLMのモデルとClaude Code自体の組み合わせがよくできている
1つ目のポイントの説明はClaude Codeでなくてもよいのですが、「そういう風に動いているんだよ」という解説が必要ですので、Claude Codeがどう動いているかという話で進めます。もちろん、今後時間が経てばClaude Code以外でも、他の何かベターなものがどんどん登場してくるとは思われます。
たとえばChatGPTは、いわゆる脳みそ部分であるLLM(Large Language Model)と、そのLLMを利用するフロントのソフトウェアの二層に分かれていると考えるとシンプルです。テキストを受け取り、それに対する回答を作るのがLLMで、iPhoneアプリやブラウザから利用できるWebサービスがフロントのソフトウェア。フロントはAPI経由でOpenAIのサーバーにユーザーが入力したプロンプトを送り、返ってきた結果を表示する、という仕組みになっています。今は音声でChatGPTと会話できたりもしますが、それはそのフロントのソフトウェア部分が変わっているんだということです。
VS Code+GitHub Copilotも基本は同じ構造です。VS Code本体がフロントで、その上で動くCopilot拡張機能が、編集中のファイルや関連ファイル、エラーメッセージ、選択範囲などの文脈をまとめてLLMにAPI経由で投げます。返ってきた出力はインライン補完やチャット、クイックフィックスといった形でエディタに反映されます。つまりVS CodeなどのIDE側は、「LLMにどんな情報をどう渡すか・どう見せるか」を担当し、推論そのものはクラウド上のモデルが担う、という役割分担です。
それでClaude Codeについてですが、Claude Code自体はCLIのフロントソフトウェアで、冒頭に書いたようにターミナルでclaudeと打ち込めば起動します。Claude Codeは受け取ったプロンプトをLLMにAPI経由で渡し、返ってきた結果をもとにコマンド実行やファイルの生成・編集、差分の適用などを行う、という構成になっています。
Claude Codeというのは、CLIのソフトウェアであり、その中身のコアな機能としては、以下のような単純なコマンドの集合になっています。
Read:ファイル内容の読み取りWrite:新規作成/上書き保存Edit:既存ファイルの部分編集LS:ディレクトリやファイルの一覧Glob:パターン(ワイルドカード)でファイル検索Grep:ファイル内容の全文検索Bash:シェルコマンド実行
実際にClaude Codeを使うと、以下のように今現在Claude Codeが何をしているのかが表示され、これらコマンドを使用していることがわかります。
このあたりの「人が実際にどうやってコードを理解し、実装するのかを模しているのだ」という設計思想が語られていたのを、先ほども紹介したAnthropic社のプレゼンで見かけました。
つまり、受け取ったプロンプトを元に、何をしたらいいかをLLMに問い合わせ、ファイルを読んだり変更したり、そしてそれを連続で行えるということをしてくれるソフトウェアがClaude Codeです。こういうのを「オーケストレート(orchestrate)する」という言い方をすることもありますね。
仕組み的にはそういうものではあるのですが、その実行結果として、かなり期待した結果になるよう調整できるというのが、まず1のClaude Codeがすごい点かなと筆者は考えています。
2. 自律的に作業を進めるので、ユーザーはその作業から離れられる
2つ目は、このような作業をある程度任せて継続してやってくれる、それも、自分は他の作業に切り替えられるぐらいに、というのが筆者的には大きなインパクトでした。たとえば今この原稿を書いている間も、以下2つの作業を別々にClaude Codeにやらせています。
- 画像のホスティングにimgixを使っていたが、それをやめたいので、ローカルで適切な画像フォーマットにコンバートするパッケージを作ってそれに置き換える
- プロジェクトでメンテナンスしているドキュメントで、コードの例がイマイチだったので、その全体的な修正
1については、始めに要件をテキストでまとめて、進め方もそこに含めます。私がこの原稿を書いているたった今、裏でClaude Codeはテストを書きながら画像フォーマット変換するCLIコマンドを実装し終え、Reactで作られた既存の実装をこの仕組みに置き換える実装をしています。これをE2Eテストを随時実行させながら、実装を自律的に進めさせています。
2については、Claude Codeの書いたMarkdownのテキストのフォーマットでイマイチな部分があったので、どういう箇所をどういう風に変更すべきなのかを例示、各ドキュメントで似たような箇所がないか探し、あれば修正を繰り返させています。そうやって修正した後は、そのテキストのスタイルを抽出してドキュメントにさせたりなどなど。
この2つの作業については、Claude Codeはちょいちょい、作業のステップが一段落したタイミングで内容を報告したり、次に何をするかを聞いてきます。つまり自分のすることとしては、そうやってClaude Codeがやった実装だったりドキュメント作成についてレビューし、問題があれば指摘、終わったら次に何をするかの方針を示すことが主な仕事です。なんだったら、次にどうしたら良いかをClaude Code自体に考えさせることもできます。
筆者がClaude Codeを使うようになってから、仕事の時間はだいたいこういう風に複数のことをやらせながら何かをするように変化しました。これまで、仕事のできる人はよく、マルチタスクだと言われることがありますが、実際には複数の仕事を順次切り替えながらやっていて、それが高速なのでそう見えるというのが実態だったはずです。
ですが、AIエージェントを使えば、本当にパラレルに、並行で物事を一人で進めることができるんだ……というのを筆者は感じて感心するという日々が続き、そしてそれが1ヶ月ぐらい続いたら、もうそれが当たり前のような状態になってしまいました。コードでも文章でも、とりあえずAIにやらせて、ダメだったら自分が作ったり調整したりレビューしたり評価したり、そういう仕事の仕方に変化しています。基本的にはそういうようなことが、このClaude Codeを使うことでもたらされた、自分の仕事の仕方の変化です。
ただし、そのようにAIがやってくれた成果物に対して、手放しで任せておけば万事解決! とはまったくもってなりません(重要)。しかしながら、ありえない速度でコードを書いてくれたり、文章を作ってくれることは事実なので、それをどう活かすかというのを、この連載では書いていこうと考えています。