Slide 1

Slide 1 text

Claude Code どこまでも 2025/6/18 KAGのLT会 #6 @nwiizo 10min #KAGのLT会

Slide 2

Slide 2 text

nwiizo 株式会社スリーシェイクで プロのソフトウェアエンジニ アをやっているものです 格闘技、読書、グラビアが趣味 でよく本を紹介してます 人生を通して"運動、睡眠、読書"をちゃんとやりたい 2

Slide 3

Slide 3 text

about 3-shake 3

Slide 4

Slide 4 text

We are Hiring!! 3-shakeは一緒にSRE界隈を盛り上げてくれる仲間を大募集中です! Mobility、FinTech、通信など大規模SREを存分に経験できます (最近社内はGenAI / GPU / Kubernetesが盛り上がってます) 是非、カジュアル面談しましょう!!!! 4

Slide 5

Slide 5 text

Claude Codeとは何か 従来のAIアシスタントとの決定的な違い 「コード生成器」→「開発パートナー」 単体機能の提案から、プロジェクト全体の理解・ 実装まで(限りなく4に近い性能を持ち始めている) エディタの外で動作、ターミナルネイティブな操作 自律性の飛躍的向上 複数ファイルの連携変更 git操作、テスト実行、デバッグまで一貫して処理 失敗時の自己修正・再試行 参考: エンジニアに許された特別な時間の終わり 5

Slide 6

Slide 6 text

Claude Codeが変えるエンジニアの役割 「コードを書く」から「意図を伝える」へ 今まで私たちエンジニアは、 「何を作りたいか」を考え、 「どう作るか」を実装していた Claude Codeは「どう作るか」を自動化する 私たちは「なぜ作るか」に集中できる 6

Slide 7

Slide 7 text

実は私たちが既にやっていること エンジニアリングの日常 要件定義を読んでコードに落とす 「ユーザーが求めているもの」から「具体的な実装」へ コードを読んで設計を理解する 「具体的な実装」から「意図や目的」を読み取る これが「具体と抽象の往復」 Claude Codeはこの往復を高速化するツール 7

Slide 8

Slide 8 text

なぜClaude Codeが「使えない」と感じるのか 抽象度のミスマッチ # 悪い例 "いい感じのWebアプリ作って" # 良い例 "認証機能付きのタスク管理システムで、 優先度による並び替えとフィルタリング機能を実装" 上司の「いい感じにしといて」と同じように、 AIに対しても適切な抽象度での指示が必要 8

Slide 9

Slide 9 text

なぜClaude Codeが「使えない」と感じるのか 具体化の方向性を示していない 抽象から具体への選択肢 「ユーザー管理」という抽象 メール認証? ソーシャルログイン? 多要素認証? AIは「ある一つの具体」を選ぶが、 それがあなたの期待と一致するとは限らない 9

Slide 10

Slide 10 text

なぜClaude Codeが「使えない」と感じるのか 往復の欠如 一度の指示で完璧を求めるのではなく 1. 初期の抽象的な指示 2. 生成された具体(コード)の確認 3. より精緻な抽象への昇華 4. 改善された具体化 この往復運動を繰り返すことが重要 10

Slide 11

Slide 11 text

「自分でやった方が早い」の落とし穴 これは具体に囚われすぎている状態 自問すべきこと その実装から抽象を導き出せているか? 次に類似の問題に直面した時、より良い設計ができるか? チームメンバーに説明できる抽象的な概念として整理できているか? 11

Slide 12

Slide 12 text

実装スキルから設計スキルへのシフト 価値の源泉が変化している 従来 実装の巧拙が エンジニアの価値を決めた → これから 設計の良し悪しが 成果の質を決める 実装はClaude Codeが担当、設計は人間の仕事 12

Slide 13

Slide 13 text

資料として良いものは前回のこの勉強会から https://speakerdeck.com/schroneko/getting-started-with-claude-code https://speakerdeck.com/minorun365/yasasiiclaude-coderu-men 今回は使ってみての感想を中心にお話をしていければと思います。 13

Slide 14

Slide 14 text

Claude Codeとの効果的な連携 特性を理解した上での活用 Claude Codeは圧倒的な実装スピードを持つ一方で、 コンテキストの保持や暗黙の了解には対応していない 暗黙知を形式知に変換し、明示的な指示を与えることが重要です。 この特性を踏まえた3つのポイント 明示的な指示 - 曖昧さを排除する タスク管理 - TodoWriteで状態を保存 コンテキスト制御 - 定期的な/clearで最適化 14

Slide 15

Slide 15 text

明示的な指示の重要性 # 曖昧な指示 "バグを直して" # 具体的な指示 "src/auth.rs の認証処理で panic! が発生しています。 エラーログを確認し、thiserror を使って適切なエラー型に変換し、 テストも追加してください" 💡 ファイル名、ライブラリ名、エラーメッセージなどを具体的に 15

Slide 16

Slide 16 text

タスク管理の徹底 # 一時的な指示 "あとでリファクタリングもやって" # TodoWriteで管理 "TodoWriteツールで'リファクタリング'を 低優先度タスクとして追加してください" 💡 複雑なタスクは必ずTodoに記録し、進捗を可視化 16

Slide 17

Slide 17 text

コンテキストの最適化 # コンテキストが大きくなりすぎたら /clear # セッションを分割して再開 claude --continue 💡 パフォーマンス維持のため、定期的なクリアが効果的 17

Slide 18

Slide 18 text

効率化のTips & トリック集 18

Slide 19

Slide 19 text

権限設定で高速化 # 権限チェックをスキップ(開発環境推奨),エイリアスを設定(alias c="claude")もおすすめ claude --dangerously-skip-permissions alias yolo="claude --dangerously-skip-permissions" 未来のあなたに殴られたくないのでしっかり言及しておくと --dangerously-skip- permissions は開発環境でのみ使うことを強く推奨します。 19

Slide 20

Slide 20 text

思考力を制御する方法 この辺は最近日本語にも対応してきたので、英語でなくても大丈夫ですが辞書登録し てしまったので英語でやってます。 # 軽い思考(4,000トークン) "think about this problem" # 深い思考(12,000トークン) "think harder about the architecture" # 超詳細思考(32,000トークン) "ultrathink this complex refactoring" 20

Slide 21

Slide 21 text

ショートカット & セッション管理 キーボード操作 # ファイル・画像の操作 Ctrl + j # 改行を入力 Ctrl + v # クリップボードから画像貼り付け @/path/to/file # ファイルを指定して読み込み # モード切り替え・ナビゲーション Shift + Tab # Plan Modeへ切り替え Shift + Tab×2 # プランニングモード Escape × 2 # 前のメッセージに戻る セッション管理 # セッションコマンド /clear # コンテキストをクリア /resume # セッション一覧・再開 /continue # 直前のセッションに戻る # CLIオプション claude --resume # 過去のセッション選択 claude --continue # 直前のセッション継続 21

Slide 22

Slide 22 text

細かい便利機能 こちらについては、どのように設定・活用しているかをブログに詳しく書きましたの で、ぜひご確認ください 22

Slide 23

Slide 23 text

MCP(Model Context Protocol)の戦略的活用 原則: 必要最小限での利用 基本操作はClaude Code標準機能で十分 MCPは「どうしても標準機能では難しい場合」のみ、パスごとに設定する 例:playwright-mcp でのブラウザ自動化 MCP使用時の注意点 パフォーマンスオーバーヘッドを考慮 セキュリティリスクの評価 基本的には後述の .claude/commands で対応可能な場合は、そちらを優先することを推奨します 23

Slide 24

Slide 24 text

カスタムコマンドによる自動化 .claude/commands/ ディレクトリの仕組み .claude/ └── commands/ ├── rust-qa-pipeline.md # Rust品質保証パイプライン ├── cargo-release.md # リリース準備チェック ├── benchmark.md # パフォーマンステスト └── security-audit.md # セキュリティ監査 24

Slide 25

Slide 25 text

カスタムコマンドによる自動化 基本的な使い方 # コマンド実行 /project:rust-qa-pipeline /project:cargo-release # 複数タスクの組み合わせも可能 /project:rust-qa-pipeline test clippy fmt audit 25

Slide 26

Slide 26 text

カスタムコマンドの実践活用例 1. Rust品質保証パイプライン(rust-qa-pipeline.md) Step 1: プロジェクト構造分析 (1タスク) Step 2: 品質チェック (並列4タスク) - cargo test | cargo clippy | cargo fmt --check | cargo audit Step 3: 問題修正 (並列複数タスク) Step 4: 最終検証とベンチマーク実行 26

Slide 27

Slide 27 text

カスタムコマンドの実践活用例 2. リリース準備チェック(cargo-release.md) 依存関係の最新化チェック CHANGELOG.mdの更新確認 cargo publishの事前検証 タグ作成とGitHub Release準備 効果: 手動30分の作業 → 自動5分で完了(MCPを立てるとリソースも喰うので⋯) 27

Slide 28

Slide 28 text

ログ設計の戦略 デバッグ情報の自動出力 // 開発モードでの自動ログ出力例 #[cfg(debug_assertions)] fn send_email(to: &str, subject: &str) { println!("DEBUG: Email sent to {} with subject: {}", to, subject); println!("DEBUG: Email link: http://localhost:3000/verify/{}", generate_token()); // 実際の送信処理... } 効果: AIが自動的にメール確認→リンククリック→認証完了までを実行可能 28

Slide 29

Slide 29 text

ログ設計の戦略 ログの「ちょうど良い」バランスも変わるのではないか? 情報不足: AIが問題を理解できない 情報過多: トークン消費量増加、推論速度低下 理想: 問題解決に必要な情報のみを適切なタイミングで簡潔に デバッグモードでは、AIが理解しやすいように、必要な情報を自動的に出力すること が重要になりそうです。 良いログ、悪いログの基準も変わる可能性があります。 29

Slide 30

Slide 30 text

Claude Codeが働ける環境をちゃんと整える 30

Slide 31

Slide 31 text

1. プロジェクト設定の最適化 CLAUDE.mdの戦略的活用 # ./CLAUDE.md プロジェクトルートに配置,再帰的に見てくれるので # コーディング規約 NEVER: unwrap()の多用を避ける YOU MUST: すべてのResultを適切にハンドリング IMPORTANT: カスタムエラー型でエラーコンテキストを明確化 # Rust固有の規約 - エラーハンドリング: thiserrorとanyhowを活用 - 非同期処理: tokioを基本とする - ログ出力: tracing crateを使用 # 階層化 ./CLAUDE.md # 全体設定 ./src/web/CLAUDE.md # Webサーバー固有 ./src/cli/CLAUDE.md # CLI固有 31

Slide 32

Slide 32 text

2. ツールチェーンの最適化 開発効率を上げる基本原則 高速フィードバック: コンパイル・テストの高速化 明確なエラーメッセージ: AIが理解しやすい診断情報 統一されたツールチェーン: 一貫したコマンド体系 自動化可能な品質チェック: 繰り返し作業の削減 開発効率を上げるMakefile設定 dev: # cargo watch -x run でホットリロード test: # cargo test --all-features lint: # cargo clippy -- -D warnings format: # cargo fmt --all check: # cargo check --all-targets release: # cargo build --release 32

Slide 33

Slide 33 text

3. 段階的アプローチの重要性 失敗パターン: 一括指示 「REST APIを完全実装して」 → エラーハンドリング不統一、unwrap()多用、テスト不足 成功パターン: 分割指示(分割をさせてもよい) Step 1: エラー型定義・thiserror適用確認 Step 2: APIエンドポイント設計・OpenAPI仕様準拠 Step 3: リクエスト/レスポンス構造体・serde活用 Step 4: ビジネスロジック・Result型での適切なエラー伝播 Step 5: テスト作成・tokio-testでの非同期テスト 33

Slide 34

Slide 34 text

4. 品質を高める並列開発 複数アプローチの同時検証 # メインプロジェクト git worktree add ../project-feature-a feature-a git worktree add ../project-feature-b feature-b # 別々のClaude Codeインスタンスで並行開発 cd ../project-feature-a && claude-code "axum REST API実装" cd ../project-feature-b && claude-code "tokio CLI ツール実装" 34

Slide 35

Slide 35 text

4. 品質検証の並列化 複数観点からのコード評価 ツールやCLAUDE.md を活用して、同じ機能を複数のアプローチで実装し、 最も良い品質のコードを選択することが可能です。 > 同じ機能を4つのアプローチで実装 Task(パフォーマンス重視実装) 並列実行 Task(メンテナンス重視実装) 並列実行 Task(セキュリティ重視実装) 並列実行 Task(テスト容易性重視実装) 並列実行 35

Slide 36

Slide 36 text

品質を保証するガードレール 高速開発と高品質の両立 スピードを活かして、より良いコードを Claude Codeの高速性は、単に「早く作る」ためのものではありません。 「何度も試して、最良を選ぶ」ためのツールです。 ただし、適切なガードレールなしでは、 技術的負債やセキュリティリスクが蓄積されてしまいます。 ここでは、特に効果的な3つのアプローチを紹介します。 36

Slide 37

Slide 37 text

1. 自動化されたチェック Claude Codeは高速でコードを生成しますが、コーディング規約やベストプラクティス の遵守は保証されません。自動化されたチェックにより、生成されたコードが一定の 品質基準を満たすことを機械的に担保できます。 # Cargo.toml [workspace.lints.clippy] all = "deny" pedantic = "warn" nursery = "warn" # .cargo/config.toml [alias] check-all = "check --all-targets --all-features" test-all = "test --all-features" lint = "clippy -- -D warnings" fmt-check = "fmt --all -- --check" 37

Slide 38

Slide 38 text

2. Git Hooks / Huskyでの制限 AIが生成したコードを無検証でコミットすることを防ぎます。とてもこの実行自体も 忘れてしまうことがあります。なので、機械的に実行させましょう。コミット前の自 動チェックにより、問題のあるコードがリポジトリに混入することを水際で阻止し、 チーム全体の開発品質を維持できます。 # .husky/pre-commit cargo fmt --all -- --check cargo clippy -- -D warnings cargo test --all-features 38

Slide 39

Slide 39 text

3. コンテナでの環境隔離 Claude Codeは --dangerously-skip-permissions 強力な権限でシステムにアクセスで きるため、意図しないファイル変更やセキュリティリスクが生じる可能性がありま す。コンテナ環境での隔離により、ホストシステムを保護しながら安全にAI開発を進め られます。 cd /path/to/repository npx @anthropic-ai/claude-code mcp add container-use -- stdio コンテナ使用時の制約設定例(CLAUDE.md ファイル追記) すべてのファイル、コード、シェル操作には必ずEnvironmentのみを使用してください。簡単な操作や一般的なリクエストであっても例外はありません。 environment_run_cmdツールでgit cliをインストールしたり使用したりしないでください。すべての環境ツールがgit操作を処理します。".git"を自分で変更すると、環境の整合性が損なわれます。 `git checkout `を使用して作業を確認する方法をユーザーに必ず伝えてください。これを怠ると、他の人があなたの作業にアクセスできなくなります。 39

Slide 40

Slide 40 text

開発プロセスの根本的な変化 エンジニアリングの価値軸が根底から変わった 「どう作るか」の時代は終わった 「なぜ作るか」の時代が始まった 実装の巧みさで差がつく時代は過去に 意図の明確さで成果が決まる時代へ Claude Codeは実装の奴隷から思考の解放をもたらした 40

Slide 41

Slide 41 text

開発の「速度」が変わると「質」も変わる 従来: 1週間かけて1機能 実装に時間を取られる 設計の見直しは困難 「動けばいい」で妥協 フィードバックサイクルが遅い Claude Code: 1日で10パターン 実装は瞬時に完了 複数の設計を比較検討 「最適解は何か」を追求 高速PDCAで品質向上 量が質に転化する - これがClaude Code時代の開発 41

Slide 42

Slide 42 text

「早いコード」ではなく「良いコード」を Claude Codeの真の価値は速度ではない 重要なのは「早く書く」ことではなく「何度も書き直せる」こと 質の高いコードが生まれる理由 1. 試行回数の増加 - 10倍のアプローチを試せる 2. 比較検討の容易さ - 複数の実装を並べて評価 3. リファクタリングの低コスト化 - 気軽に最適化 4. ベストプラクティスの適用 - AIが最新パターンを提案 42

Slide 43

Slide 43 text

新しい競争優位性の源泉 「実装力」から「構想力」へのパラダイムシフト 真の差別化要因 1. 問題発見力 - そもそも何を解決すべきか 2. アーキテクチャ設計力 - 全体最適を描く力 3. 意図の言語化力 - AIと協働する対話力 4. 品質基準の設定力 - 「良い」を定義する力 コードを書く能力ではなく、 コードに込める意図の質で勝負する時代 43

Slide 44

Slide 44 text

エンジニアリングの新たな地平 Claude Codeがもたらした「創造的破壊」 破壊されたもの 実装速度での差別化 暗記型の知識優位性 手作業による最適化 創造されたもの 設計思想での差別化 概念理解の優位性 試行錯誤による最適化 私たちは今、エンジニアリングの再定義の瞬間に立っている 44

Slide 45

Slide 45 text

参考文献 公式ドキュメント Claude Code 公式サイト Claude Code ドキュメント Claude Code Best Practices 45

Slide 46

Slide 46 text

参考文献 実践事例・解説記事 抽象化をするということ - 具体と抽象の往復を身につける How I Use Claude Code LLMの制約を味方にする開発術 Claude Code版Orchestratorで複雑なタスクをステップ実行する Agentic Coding Recommendations Claude Codeに保守しやすいコードを書いてもらうための事前準備 Claude Codeによる技術的特異点を見届けろ 46

Slide 47

Slide 47 text

ありがとうございました ご質問・ご相談はお気軽にお問い合わせください @nwiizo | https://3-shake.com