Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AIコーディングエージェント勉強会

Kiminori Yokoi
March 25, 2025
11k

 AIコーディングエージェント勉強会

2025/3/25: AIコーディングエージェント勉強会 (プライベート開催)
資料のみ公開版として

Kiminori Yokoi

March 25, 2025
Tweet

Transcript

  1. 4 今、皆さんが思っているであろうことの言語化 (基本) • 今まで手で書いていたコードがもっと楽に書けるようになりそう • 人間が一文字もコードを書かなくてもプロダクトが出来上がりそう • 人が書かないのだから、人的ミスがなくなるのではないか •

    想定と違ったら、違うよって言えば自動で修正してくれるのは凄い • でも、誰でもプログラムが書けるようになってしまうのではないか • 内製開発が進んでいくのではないか • お客様から頼られなくなってしまうのではないか
  2. 5 今、皆さんが思っているであろうことの言語化 (応用) • デプロイまで自動でやってくれそう • リファクタリングを自動でやってくれそう • パフォーマンス改善もできそう •

    依存関係の調査をしなくても自動でやってくれそう • パッケージング作業も自動でやってくれそう • インフラが完全に自動で構築できそう • OSやソフトウェアのインストールコマンド、シェルスクリプト、 設定ファイルも全自動で作れそう • 実機からドキュメントやパラメータシートを逆起こしできそう • フレームワークやライブラリが気にならなくなりそう • ペアプロの相手が人間ではなくなりそう
  3. 6 何が変わるのか 作業のやり方の変化 • 自然言語プロンプトで指示し、AIが即時にコードを提案 • デバッグ、リファクタリング、ドキュメント作成も自動化 エンジニアの役割の変化 • 「コードを書く」作業から「AIに意図を正確に伝える」作業へ

    • その上で、AIが出力したコードの検証や最適化(手直し)が重要に • ネットで言われる「ドライバーの交代」はこれらをわかりやすく説明したもの • プロンプトの設計力と言語化力の向上がより重要に • 要件定義やアーキテクチャ設計の重要性がより高まる
  4. 9 Clineとは • 今一番SNSでの言及が多いと思われるAIコーディングエージェント • 誰でも無償で入手し、インストールして使い始めることができ、 推論の料金のみクラウド利用料として発生 • 既に使用中のクラウドと接続すれば、新たな調達作業が不要 •

    コーディングに関連する様々な思考プロセスやタスクを自動化 • コードを考えて、書き、直すという一連のプロセスを自動化 • ターミナルでのコマンド実行も一連のプロセスに含めて自動化 • 動作確認や調査のためのブラウザ操作も自動化 • プロジェクト固有のルールや作法に基づいた作業が可能 (.clinerules)
  5. 11 Roo Codeとは • ClineからForkされた (ある時点までの成果物を元にして新たに立ち 上げられた) プロジェクトによるAIコーディングエージェント • 同じく無償で入手し、インストールして使い始めることが可能

    • Clineが持つ特徴をほぼ全て押さえており、より細かく設定が可能 • Amazon Bedrock がサポートするモデルを幅広く使用可能 (Clineは2025年3月時点でClaudeとDeepSeekに限定) • プロジェクト固有のルールや作法に基づいた作業が可能で、より意 図を細かく伝えやすくなる機能「モードごとの役割」「モード固有 の指示」「モード共通の指示」 「サポートプロンプト」を備える
  6. 13 GitHub Copilot Agentとは • GitHub公式のAIコーディングエージェント • ポイントは課金で、GitHub Copilotのライセンス費用で完結するた め、他のツールとは異なり、青天井になることがない

    • ただし2025年3月時点ではAgent機能がベータ版であり、標準のVS Codeでは動かず、VS Code Insidersを使用する必要あり • 利用できるAIのモデルは今のところ限定されているが、将来的には 他のツールに追いつくと予想される
  7. 14 どのツールを使うべきか • 正直、どのツールでも構わない • 選んでいる時間が無駄と思えるほど、出来ることは類似している • ダウンロード数から推測すると、この中で利用者が最も多いのはClineで、ナ レッジも大量かつ頻繁に飛び交っている •

    利用のハードルが最も低いのは、ClineとAmazon Bedrockの組み合わせと思 われる • 多くの会社では、既にAWSの利用開始や支払いの業務プロセスが確立さ れていると考えられるため • 但し開発プロセス全体を見渡した時、サポートや周辺機能との統合、ライセ ンスやコスト管理の容易さを求めてGitHub Copilotが選ばれるケースがある と考えられる (例: GitHub Actionsを使用しているケースなど)
  8. 18 MCP Server ClineやRoo Codeに、リソース(データ、ツール、サービス)へのアクセス手段を与えて 何かのドメインに特化した回答を得る、または外部サービスを利用するための機能 (実際の使用に基づく意訳です) 出典: https://modelcontextprotocol.io/introduction •

    ローカルに構築して利用する • ClineやRoo Codeと組み合わせて 使用することで効果を得る • Clineでは、VSCodeのプラグイン をインストールするような操作で 利用を開始可能 • MCP Serverが外部サービスと通 信する場合、外部サービスの認証 情報が必要となる場合あり
  9. 21 過去の会話や作業履歴を保存し、次に活かす機能 記憶するファイル名 内容 productContext.md プロジェクトの目的、解決する問題、 期待される挙動 activeContext.md 現在作業中の内容、最近の変更点、 次のステップ(最重要)

    systemPatterns.md システムの構成、技術的判断、設計 パターン techContext.md 使用技術、開発環境、技術的制約 progress.md 完成済みの機能、残作業、進捗状況 タスクの状況や結果を文書化して保存し、会話(タスク)を跨いで活用することが可能 例: Clineの場合は、Custom Instrictions (任意の指示を書く場所) に、Memory bank の機能を使う (構築する) ための指示をプロンプトで書くことによって使用可能 プロンプトで 記憶を指示
  10. 29 その後は、デプロイや改修の指示を出す 成果物が出来上がった後に行う指示は、様々ですが、ほぼ全て可能 例1: このアプリケーションを、Amazon S3バケットを作り、アップロードして 公開してください。S3バケットは特定のIPアドレスからのみ接続可能とします。 AIがS3バケットポリシーや静的Webサイトホスティングの設定を考えてくれ、 さらにAWS CLIを発行するなど、必要な一連の作業を全て実行してくれる。

    例2: このアプリケーション自体に認証機能を追加したいです。 ユーザディレクトリはAWS Directory Serviceで管理するものとします。 AIがAWS Directory Serviceのユーザディレクトリに関する設計を行う。 AWS CLIを発行し、ディレクトリの作成など、必要な一連の作業を全て実行。 さらに、アプリケーションのコードに認証ロジックを追加してくれます。
  11. 34 初めは小さく作り、継ぎ足していくのが良い • 詳細化はしても良いが、範囲は広げてはいけない (むずかしい) • 最後にテスト工程があるとは言え、人間は普段、細かい粒度でコードを書いて はローカルで実行し、動作確認することを繰り返して、コードを仕上げていく • 一方でClineなどは、指示に従い、一瞬でアプリケーション全体を開発してし

    まうため、人間は初めから出来上がった物の全体を確認することになる • これらの新旧の体験の間には、大きなギャップがある • 一度の指示で全体を作ろうとすると、うまくいかなかった時にそのコード全体 を破棄することになり、破棄したコードに費やしたコストが全て無駄になる • 少しずつ作ってはコミットして保存し、万が一の時に戻せるようにする
  12. 36 コーディング能力が高い (と言われる) モデルを使おう • 現状、経験に基づけば、Anthropic の Claude 3.7 Sonnet

    が群を抜いている • 最新のニュースやアップデートに常に目を向け、試しつつ、利用するモデルを 適宜変えていけるようにする
  13. 37 .clinerules は詳細に書く • Clineでは、設計標準やコーディング規約と戦略、テスト方法などを マークダウンに書き起こして .clinerules に細かく表現するようにする • しかし、それでも、生成AIの出力は不確実である

    (100%ではない) • .clinerules は人間によるやり直しや手直しの作業を極力減らすために 書くものであり、確認作業を放棄できるものではないことに注意する • 個人や社内でこれまで積み上げた、数多くの知恵を言語化しつつ、ト ライアンドエラーを繰り返して調整する • 先人の知恵に感謝し、優れたプラクティスを参考にする
  14. 50 プロモーションやマーケティングに活用する • 特定のフォルダに雑多に取材情報や写真を置いて指示するだけで、全ての情報からプロ モーション用のコンテンツを自動で生成することが可能 • ついに広報(CC)部や営業部がVS Codeを使用する時代が到来してしまうのか? <やっていること> •

    取材メモや画像を全てディレクトリに放り込む • 記事を書くように指示する • メモや画像、構成図 (アーキテクチャ) を理解し、 本物と見紛うインタビュー記事を作り上げてくれる 出典: https://www.tis.jp/service_solution/aws/managed support/multiaccountsuite/ <PR> <PR>
  15. 53 Amazon Q Developer CLI Agentとは? 主な機能 • ローカルファイルシステムの操作 •

    ファイルの読み書き • ディレクトリの一覧表示 • AWS CLIコマンドとBashコマンドの実行 • AWSリソースの管理 • コードの作成や修正 • インフラストラクチャのコードや設定ファイルの作成支援 • ベストプラクティスの提案 • トラブルシューティング AWS CLIを通じて利用できるAIアシスタント コマンドライン上で動作し、様々な開発タスクやAWS関連の質問に対応
  16. 54 Amazon Q Developer CLI Agent の使い方 使い方 • AWS

    CLIをインストールする • AWS Builders’ IDを作成する • 作成して https://profile.aws.amazon.com/ にログイン • Amazon Q でサインインする時に、AWS CLIからのアクセスを許可 • Share Amazon Q with AWS と Telemetry を Off にする • データを学習させないため • 会話を開始するにはターミナルで q chat コマンドを入力 • 会話を終了するには /quit と入力
  17. 61 Amazon Q Developer CLI Agent で構成図を図示 「VPCの構成図をHTMLで書いてください」 と依頼すると、非常にグラフィカルな図が 表示される

    実は、これに限らず、 「HTMLで書いてください」 という指示は、様々な図示に使える 覚えておくと役に立つ
  18. 62 Amazon Q Developer CLI Agent で構成図を図示 diagrams.net (draw.io) 用の

    XMLで出力してと依頼し、出力されたXMLを diagrams.net で開いた結果、精度の高い構成図が表示された Claude 3.7 Sonnet に匹敵する精度!
  19. 63 ローカルのナレッジを参照する • 最初に q chat ”指示したい内容” というコマンドを使うことが可能 • 例えば

    q chat ”XXXというKnowledgeを読み込んだ上で回答して” と指示する と、初回起動のタイミングで、パスを指定してナレッジ参照の指示ができる • ただし、絶対パスで指定する必要がある
  20. 64 AWS環境の運用やドキュメンティングの自動化に使おう • 手軽に使用でき、導入効果が高い • ターミナルで実行でき、Cline や Roo Code と共存することもできる

    • Cline を介して Amazon Q Developer CLI を制御できるのではないか (要検証) • 但し、リリース直後のサービスであ り、Claude 3.7 Sonnetのような最 新モデルでも使用方法を学習してい ないと考えられ .clinerules や MCP などとの合わせ技で使う必要がある と思われる -> MCPも重要 出典: https://x.com/whitebird_sp/status/19019296 75875836397
  21. 66 プログラマが職を失うのではなく、やり方が変わる 出典: https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/ <引用> AI はプログラマに取って代わることはありませんが、プログ ラマの仕事は変わります。最終的には、プログラマが現在 行っていることの多くは、オシロスコープでデバッグすると いう古いスキルと同じくらい時代遅れになるかもしれません

    (組み込みシステム プログラマ以外のすべての人にとって)。 熟練プログラマーであり、先見の明のある技術観察者である Steve Yegge 氏は、置き換えられるのはジュニアおよび中級レ ベルのプログラマではなく、新しいプログラミング ツールや パラダイムを受け入れず過去に固執するプログラマであると 指摘しています。新しいスキルを習得または発明する人への 需要が高まります。AI のツールを習得したジュニア開発者 は、習得していないシニア プログラマよりも優れたパフォー マンスを発揮できます。Yegge 氏はこれを「頑固な開発者の 終焉」と呼んでいます。
  22. 68 <再掲> 何が変わるのか 作業のやり方の変化 • 自然言語プロンプトで指示し、AIが即時にコードを提案 • デバッグ、リファクタリング、ドキュメント作成も自動化 エンジニアの役割の変化 •

    「コードを書く」作業から「AIに意図を正確に伝える」作業へ • その上で、AIが出力したコードの検証や最適化(手直し)が重要に • ネットで言われる「ドライバーの交代」はこれらをわかりやすく説明したもの • プロンプトの設計力と言語化力の向上がより重要に • 要件定義やアーキテクチャ設計の重要性がより高まる
  23. 69 皆様が気づいてしまったであろうこと • 「あれもこれもClineで出来そう」と、まず考えて手を動かして試してみると、意 外な発見がある • 知ってると知らないのとでは、天と地ほど生産性が変わる • 知らないし使えないでは済まされない •

    知っている人との能力差が歴然たるものとなってしまうため、絶対に無視するこ とはできない • 要件定義やドキュメンティングが得意なSIerにとっては、見方によっては、追い 風とも言えるので、早くキャッチアップした方が良い – しかし、それも使い方を知らなければ、永遠に気づくことはない – もし今日の勉強会がなければ、この会社で一体誰が教えてくれたんだろう、いつ知っていたん だろうと想像すると、背筋がぞっとするほど恐ろしいのではないか – 最新情報は自分の目と耳でキャッチアップして語れるようにしてかなければならない