Slide 1

Slide 1 text

AI時代の新しい開発スタイルを探る AIエージェント活用 はてなインターン2025

Slide 2

Slide 2 text

自己紹介 azukiazusa https://azukiazusa.dev 趣味: 麻雀・ポーカー・読書

Slide 3

Slide 3 text

講義の目的 現状のコーディングと AI の関係を整理 AI エージェントを使いこなす方法を学ぶ AI エージェントを活用した開発スタイルの変化を理解

Slide 4

Slide 4 text

AIコーディング支援の進化 ⌨️ 補完型AI GitHub Copilot 2021年 → 💬 チャット型AI ChatGPT 2022年 → 🤖 エージェント型AI Cursor, Devin 2025年

Slide 5

Slide 5 text

補完型AI(GitHub Copilot) ユーザーが書いたコードを補完 Tab キーで提案を受け入れ ペアプログラミングの相方のような存在 function add // ← ここまで書くと... function add(a: number, b: number): number { return a + b; }

Slide 6

Slide 6 text

利点 定型コード自動生成: テストのモックデータ、決まり切ったコードの生成 新しい言語・フレームワークの学習支援: ユーザーが知らない書き方の提案 制約 ユーザーが書かない限りAIは何も提案しない 従来の開発スタイルから大きく変わらない 開発者の生産性向上はしたが、あくまで補助的な存在

Slide 7

Slide 7 text

チャット型AI(ChatGPT等) 自然言語での対話を通じ てコード生成 プログラミングの知識は 不要

Slide 8

Slide 8 text

利点 自然言語での指示: プログラミングの知識がなくても利用可能 課題 不明瞭な指示では品質の低いコードが生成される コードをレビューするエンジニアのスキルは依然として重要 チャット型のUIのため、往復のやり取りが必要 コードベース全体のアーキテクチャを理解し、適切なコードを生成するとい ったことは難しい

Slide 9

Slide 9 text

コーディングエージェントの登場 ユーザーからの指示に基づいて自律的にコードを生成し、実行するAI 人間の介入を最小限に抑えて、タスクの完了を目指す Cursor が登場したあたりから注目を集めた

Slide 10

Slide 10 text

AI エージェントの仕組み 複雑なタスクを最終的な解決に向けた論理的なステップの連続に区切る (Chain of Thought) 外部と対話するための「ツール」を使用してタスクを実行 ファイルの読み書き シェルコマンドの実行 ツールの実行結果からフィードバックを受け取り、次のステップを決定 (Self-Correction) 例えばテストが失敗した場合、元の計画を修正しコードの修正を試みる 計画・実行・フィードバックのループを繰り返すことで、タスクの完了を目指 す

Slide 11

Slide 11 text

エージェントの3つのタイプ ⌨️ エディタ型 自律レベル: 低 GitHub Copilot, Cursor, Windsurf, Cline 安全性重視 ⛯️ CLI型 自律レベル: 中 Claude Code, Codex CLI, Gemini CLI 効率性向上 🤖 自律型 自律レベル: 高 Devin, Cladue Code Actions 生産性最大化 1. https://blog.lai.so/agent/ ↩︎ [1]

Slide 12

Slide 12 text

どのタイプのエージェントを使うべきか? タスクに応じて使い分けられるのが理想 ユーザーの介入をほとんど必要としない自律型エージェントが最も効率的だ が、タスクが複雑になると失敗する可能性が高い 人間の仕事の進め方に例えるならば、マイクロマネジメントと放任主義をど のように使い分けるか 大まかに以下の 3 つのタスクの分類で使い分けを考えると良い 小規模なタスク チャレンジングなタスク 大規模なタスク

Slide 13

Slide 13 text

30分以内で完了する小さなタスク 自律型エージェント 例: バグ修正、小さな機能追加 明確な目的かつ、修正範囲が小さいもの 複数タスクを同時処理 開発者のコンテキスト切り替えを減らす 活用例 Slackで「表示が崩れているバグを修正して」とメッセージを送る → エージェントが自動でPR作成

Slide 14

Slide 14 text

エージェント活用の効果 従来の課題 小さなバグの修正が後回しになる 開発者のコンテキスト切り替えが発生 メインタスクの効率が低下 エージェント活用後 小さなタスクを即座に処理 開発者は重要なタスクに集中 開発全体の生産性向上

Slide 15

Slide 15 text

チャレンジングなタスク CLI型 or エディタ型、状況により自律型 特徴: 既存コードベースに参考がない、情報が不十分 自律型エージェントでは袋小路に入る可能性が高く、手戻り作業のほうが多 くなる可能性がある

Slide 16

Slide 16 text

CLI型を選ぶ場合 実装方針を AI と相談しながら決める Plan モードなどが有効 間違った方向に進みそうであれば、随時人間が介入する

Slide 17

Slide 17 text

大規模なタスク 人間によるタスク分解が必要 例: アプリケーションの大規模リファクタリング、複数マイクロサービスの修正 複数のサブタスクへの適切な分割が必要 When to Use Devin - Devin Docs タスクを適切な粒度で分解するには高度な知識と経験を持つテックリードや アーキテクトの判断が必要だった これからは 1 開発者にもこのようなスキルが求められる AI に限らず人間の開発者にタスクを任せるときも同じ

Slide 18

Slide 18 text

より戦略的で俯瞰的な役割にシフト 開発者の仕事の変化 ⌨️ コードを書く • 仕様をコードに変換 • バグ修正とデバッグ • テストコード作成 従来の役割 → 📋 タスクを管理 • タスクの適切な分割 • AIエージェントへの指示 • コードレビューと品質管理 未来の役割 参考: The End of Programming as We Know It – O'Reilly

Slide 19

Slide 19 text

タスク分割・割り当て能力の重要性 新たに求められるスキル 適切なタスク分解 プロジェクト全体の目標理解 実現可能なサブタスクへの分解 各タスクの特性の見極めてAI エージェントに仕事を割り当てる 質の高い指示作成 AIが理解しやすい明確な指示 プロジェクトの設計や目的を記述したドキュメント

Slide 20

Slide 20 text

AIを使うことは、もはやマネジメントである マネージャーの仕事は作業分担と権限委譲 指示の言語化が重要 上司が「あれやっといて」と言うだけで は不十分 AI に指示するプロンプトも同様 1. https://baigie.me/nippo/2025/07/10/ai_ma/ ↩︎ [1]

Slide 21

Slide 21 text

指示の言語化 曖昧な指示 🙅‍♀️ 明確な指示 🙆‍♀️ カンバンボードのテストを書いてください カンバンボードのタスク操作に関するテストケースを作成してください - カンバンボードに表示されるタスクは、API から取得したデータに基づいていること - 「新規追加」ボタンをクリックすると「新規追加ダイアログ」が表示されること - タイトルを入力するまで submit ボタンは無効化されていること - API のコールに失敗した場合、エラーメッセージがトーストで表示されること テストの記述は以下の要件に従ってください - API のモックは `msw` を使用すること - テストを書く際の注意事項は `docs/test-guidelines.md` を参照すること - `KanbanBoard.test.tsx` のテストの書き方が参考になります

Slide 22

Slide 22 text

AI時代も人間が設計・技術選定する点は AI時代も人間が設計・技術選定する点は 変わらない。コードに書き起こす手段が 変わらない。コードに書き起こす手段が 変わっただけ。 変わっただけ。

Slide 23

Slide 23 text

ドキュメントを育てる AI コーディングエージェントには長期記憶(メモリ)を管理する手段が用意 されている Claude Code: CLAUDE.md Cursor: .cursor/rules/ プロジェクトの設計やコーディング規約などを記述する メモリはセッションの開始時に自動でコンテキストに取り込まれる よく整備されたドキュメントは新規参入した人間にも有用

Slide 24

Slide 24 text

プロンプトエンジニアリングの学習 AI エージェントを効果的に活用するためには、プロンプトエンジニアリングの 理解が重要 → LLM の仕組みを理解し、適切なプロンプトを設計する Prompt Engineering Guide プロンプトエンジニアリングの概要 - Anthropic ChatGPT プロンプトエンジニアリング AI エージェント OSS のプロンプトを読むのもおすす め

Slide 25

Slide 25 text

テストや Lint の重要性 AI エージェントを十分に活用するためには、テストや Lint の整備が不可欠 AI エージェントはフィードバックを受けて自己内省するため、テストや Lint の結果が重要な情報源となる AI がコードを書く速度に比べてテストや Lint の実行時間はボトルネックにな りがち CI の高速化が生産性の向上に直結する プロジェクトのコーディング規約を自作 Lint ルールとしてつくるのも有効

Slide 26

Slide 26 text

コードレビュー中心の仕事 AI が素早くコードを生成するため、開発者の仕事はコードレビュー中心にシ フト 自分が出すプルリクエストも知らないコードとして、自己レビューする必要 がある レビュー比率の増加: コードを書く楽しさの減少 簡単なタスクは AI がすべて処理してしまい、人間には重要な判断だけが残 される AI生成コードの速度: 人間がボトルネックに

Slide 27

Slide 27 text

コードレビューがボトルネックにならないために レビューの自動化: Lint や自動テストを活用 プルリクエストを適切なサイズに分割 適切にモジュール化されているコードベースでは、AI エージェントが生成 するコードも小さなモジュールに分割されるため、レビューの負担が軽減 される AI によるコードレビュー 論理的な誤りやセキュリティの問題を検出するのは得意 Claude Codeによる生産性向上の限界|すてぃお

Slide 28

Slide 28 text

従来の開発生産性が高い組織がそのまま AIエージェ ントを活用できる可能性が高い ドキュメントの整備 テストや Lint の整備 コードを小さなモジュールに分割 コードレビューの文化 これらの文化が根付いている組織は、AIエージェントを活用する際にもスム ーズに移行できる

Slide 29

Slide 29 text

AI がコードを書くようになっても、 AI がコードを書くようになっても、 根本の部分は変わらない。 根本の部分は変わらない。

Slide 30

Slide 30 text

実演:Claude Codeを使ったタスク解決 実際のワークフローを見てみましょう Plan モード → 実装 → PR作成の一連の流れ

Slide 31

Slide 31 text

実演シナリオ 想定タスク: 看板ボードアプリにタスクのフィルタリング機能を追加 実演の流れ 1 探索: 既存コードの構造を理解 「カンバンボード」コンポーネントはどのように実装されているか調査して 2 計画: タスクのフィルタリング機能実装の設計 Plan モードで戦略を立てる 3 実装: コード生成 コンポーネント、状態管理、UI 4 検証: テスト実行とコード品質チェック lint、テスト、ビルド確認

Slide 32

Slide 32 text

プロンプト 探索フェーズ 計画フェーズ カンバンボードのコンポーネントがどのように実装されているか調査して カンバンボードに表示されるタスクのフィルタリング機能を実装してください - フィルタリングフォームに文字を入力すると、タスクがリアルタイム - カンバンボードの上部にフィルタリングフォームを追加 - 大文字小文字を区別せず、タスクのタイトルに部分一致するものを表示

Slide 33

Slide 33 text

コーディングエージェント活用のTips 実際にエージェントを使う際の実践的なノウハウ

Slide 34

Slide 34 text

Tip 1: セッションのクリア 新しいタスクに取り組む前にセッションをクリアする コンテキストが長くなりすぎると、はじめの方の指示を忘れることがある Claude Code や Cursor では、セッションをクリアするコマンドが用意され ている

Slide 35

Slide 35 text

Tip 2: コマンド許可設定 使用可能なコマンドの許可を与える 目的: 毎回の許可確認を省略し、スムーズな作業を実現 許可リスト npm run test npm run lint ls git status git diff 安全であることがあらかじめわかっているコマンド 拒否リスト rm -rf ~/ sudo chmod 777 dd if=/dev/zero システムやデータに危険を及ぼす可能性のあるコマンド

Slide 36

Slide 36 text

Tip 3: コードベース検索の活用 コードの生成だけでなく、コードリーディングが超得意 ポイント: 既存のコードベースを理解し、構造やパターンを分析するのが得意 活用例 「認証処理はどのように行っている?」 「データベースのスキーマ定義を教えて」 おすすめの使い方 OSSのレポジトリをクローンして、エージェントにコードベース質問してみよう

Slide 37

Slide 37 text

Tip 4: 探索→計画→実装→コミットのワークフロー 1. 探索 - 関連するファイルを読み取る(コード書き込み禁止で指示) 2. 計画 - アプローチを計画する(Planモード活用) 3. 実装 - 計画を元にコードを書く 4. コミット - 変更を確定する 全体像を把握してから実装することでプロジェクトの設計と整合があり 保守性の高いコードを生成できる

Slide 38

Slide 38 text

Tip 5: MCP ツールの活用 Model Context Protocol(MCP): 標準化された方法で AI がツールにアクセスする方法 例: Slack へのメッセージ送信、Google カレンダーのイベント作成など → 外部のツールと連携するために利用される コーディングエージェントの力を引き出す MCP ツールが積極的に開発されるフェーズ 「Serena」 「Context7」 「Cipher」などのツールが注目されている Serena の特徴 • AI エージェントは原始的なファイルの読み書きしかできず、コンテキストを多く消費していた • Serena は language server protocol (LSP) を使用して効率的にコードを検索・編集する

Slide 39

Slide 39 text

コーディングエージェントに期待しすぎない 適切な期待値設定が成功の鍵

Slide 40

Slide 40 text

「始めの一歩」のハードルを下げる ❌ 期待しすぎてはいけないこと • 何も介入せずに完璧なコードが仕上がる • 複雑な要求も一発で正確に実装してくれる • プロジェクト全体の設計を任せられる ✅ 実際の価値 • コードを書き始めるハードルを下げる • 最初の足がかりを提供してくれる • そこから人間が改善・修正していく

Slide 41

Slide 41 text

「机に5分座る」効果 🪑 勉強のやる気を出すテクニック 「とりあえず机に5分座る」 → 座ってしまえば、そのまま勉強を続けられることが多い 作業興奮(Arbeitsrausch) 「やる気が出るから行動する」のではなく、「行動するからやる気が出る」 💻 コーディングでも同じ 「とりあえずAIに骨格コードを生成してもらう」 → 何かができてしまえば、そこから改善していくのは楽になる コーディング版の作業興奮 動くコードが目の前にあると「もう少し改善しよう」という気持ちが自然に湧く

Slide 42

Slide 42 text

AIコーディングの確率的な性質 同じプロンプトでも結果が変わる新しいパラダイム

Slide 43

Slide 43 text

従来のプログラミングとの違い 🔧 従来のプログラミング 決定的(Deterministic) • 同じ入力 → 同じ出力 • 予測可能な結果 • バグは再現可能 function add(a, b) { return a + b; } 🤖 AIコーディング 確率的(Probabilistic) • 同じプロンプト → 異なる出力 • 不確実な結果 • 成功/失敗が確率的 「関数を作って」→ 毎回違うコード → 確率的思考へのパラダイムシフトが必要

Slide 44

Slide 44 text

AIコーディングでの実践的対処法 AIコーディングでは、良いコードが生成されるかどうかをしばしば「ガチャ」 と表現される 1度悪いコードが生成されたからといって、AIの能力が低いとは限らない 試行回数を増やして、長期的な視点で生産性が上がっているかどうかを判断 する必要がある 生成されたコードではなく、AIの思考プロセスに注目する 確率思考を磨くには麻雀やポーカーの学習が有効

Slide 45

Slide 45 text

AIは「よいお手本」を真似るのが得意 AI 既存のコードベースを調査してから実装を開始する 既存コードの設計品質が生成コードの品質を決める 「よいお手本を」作るアーキテクトとしての技術力は依然として重要

Slide 46

Slide 46 text

学習でのAI活用法 学習目的ではAIに頼らずに書く すぐに答えを求めるのではなく、自分で考える プログラミングでは写経と呼ばれる学習方法が広く行われてきた 自ら手を動かした経験は記憶に残りやすい 自分の言葉でAIに質問する 知らなかった構文や書き方を学ぶためにAIを活用 AIをパーソナルコーチのように活用することで、学習の効率を高める Junior developers aren’t obsolete: Here’s how to thrive in the age of AI - The GitHub Blog

Slide 47

Slide 47 text

基礎力 + 瞬発力

Slide 48

Slide 48 text

プログラミングの基礎知識を学ぼう AI はあくまでツールであり、最終的な判断は人間に委ねられる AI が生成したコードが正しいかどうかを判断するためには、プログラミング の基礎的な知識やスキルが必要 基礎的な知識は普遍的であり、長期間にわたって役立つ AI とのチャットでのやり取りでは体系的に学習することは難しい → 書籍での 学習をおすすめ https://azukiazusa.dev/blog/computer-it-books/

Slide 49

Slide 49 text

AI活用能力も鍛えるとスタートダッシュを切れる 日々新しい AI ツールが登場している 新しいツールが出たらとりあえず触ってみよう いち早く試すことで優位に立てる 新しいツールに触れることで、異なるアプローチや設計思想を学べる 子どものような好奇心旺盛な姿勢で新しい技術に触れる人が強い プラットフォーマーがシェアを争っている今がチャンス 競争が激化しているため、無料で高性能なモデルが利用できる 学生向けの無料プランもある(例: Gemini Pro)

Slide 50

Slide 50 text

生成AIの盲信 AI が生成したコードを無批判に受け入れてしまう危険性 批判的思考力を身につけて、AI を適切に活用しよう

Slide 51

Slide 51 text

劇場のイドラ(Theater of Idols) フランシス・ベーコンの「4つのイドラ」より 権威や流行に盲従してしまう認知バイアス AI時代における「劇場のイドラ」 AI の権威性:「AI が言うから正しい」 技術の流行性:「最新のAIツールなら間違いない」 自動化への過信:「機械の方が人間より正確」 🎭 権威への盲従は 判断力を奪う

Slide 52

Slide 52 text

批判的思考力の重要性 批判的思考:与えられた情報や状況を鵜呑みにせ ず、多角的な視点から分析し、論理的に考察し て、客観的な判断や評価を行うための思考力 AI時代に必要な批判的思考 出力の検証:生成されたコードの妥当性確認 複数の視点:異なるアプローチの検討 根拠の確認:なぜその解決策なのかを自分の言 葉で説明できるように

Slide 53

Slide 53 text

ファスト&スロー思考 私達の思考には、2つの思考モードがある システム1: 直感的で高速な思考 日常生活のおおかたの判断はこのシステムで行 われる システム2: 論理的で熟考する思考 意識的に働きかけないと使われない

Slide 54

Slide 54 text

例:「バットとボールは併せて1ドル10セントです。バットはボ ールより1ドル高いです。ではボールはいくらでしょう?」 システム1は直感的に「10セント」と答える システム2は「5セント」と正しい答えを導き出す AI は高速で出力し多くの判断を求められるため、システム1の思考で判断してしまいがち しかし、AI の出力を鵜呑みにせず、システム2での検証を行うことが重要

Slide 55

Slide 55 text

インターンでの注意点 業務情報の取り扱い 許可されたツール以外に業務情報を入力しない AI の学習に使用される可能性があるため 会社のコード、顧客情報、設計資料等は要注意 不明な場合は必ずメンターに確認

Slide 56

Slide 56 text

時代の転換点を楽しもう 人類の歴史は技術革新による仕事の変化の連続 狩猟採集 → 農耕社会 → 産業革命 → 情報化社会 → AI時代 歴史の転換点に立ち会える貴重な体験 変化を楽しみ、時代の波に乗ろう

Slide 57

Slide 57 text

まとめ ⌨️ AIエージェントの進 化 補完型 2021 チャット型 2022 エージェント型 2024 ⛯️ 適切な使い分け 小規模タスク 自律型エージェント チャレンジング CLI型(自律型) 大規模タスク 人間による分解 📋 役割変化 タスク分割 戦略的思考 コードレビュー 品質管理 AI協働 新スキル