- By BPR
- 0 comments
私のClaude Code体験記:身につけるべき開発者スキル
本日は、2025年夏にインターンに参加してくれたヘンリー・オニルデによるゲスト投稿をご紹介します。
私の視点を変えたインターンシップ
近年、開発者の役割は大きく変化しています。GitHub CopilotのようなAIコーディングアシスタント、Cursorのようなエディタ、そして自然言語でAIを導くことでコードを一行ずつ書くのではなく「バイブコーディング」の登場により、ソフトウェア開発の方法は根本的に変わりつつあります。私はBest Path Research社のインターンシップで、Claude Codeとの協働を通じてこの変革を直接体験しました。しかし、予想外のことを学びました:AIは正しいことによってではなく、AIが生成するすべてについて批判的に考えることを促すことで、より優れた開発者になるのです。
3つの障壁、1つの挑戦
私はHenry Oniludeです。コンピュータサイエンスで首席卒業し、現在はノーサンブリア大学でウェブ・モバイル開発技術の修士課程に在籍しています。私は常にアクセシブルなソフトウェアソリューションの作成に情熱を持ち、エンドツーエンドのソリューションを提供する能力の構築に焦点を当ててきました。
東京のBest Path Research株式会社でウェブアプリケーション開発者として夏期インターンシップに参加する機会を得たとき、私は予想もしなかった方法で自分自身に挑戦することができました。Edward Whittaker氏の指導の下、私はビジネス界での戦略的思考に焦点を当てた、モノポリーのような構造のゲームを開発しました。技術スタックはDjango、Python、SQLite、JavaScriptで構成されていました。これらの技術は比較的シンプルでしたが、開発アシスタントとしてClaude Codeを統合することで、現代のソフトウェア開発実践に対する私の理解を根本的に問い直す複雑さが生まれました。
このプロジェクトには3つの大きな課題がありました:ゲームリソースは日本語で書かれており、私は日本語を話せませんでした。Djangoは私にとって全く新しいフレームワークでした。そして、私はこれまでゲームを作ったことがありませんでした。これらの障壁にもかかわらず、私はプロジェクトに必要な基礎的なパターンとアーキテクチャを理解するために、コアとなるコンピュータサイエンスの知識を活用しました。
AIがすべてを過度に設計するとき
私の最初のアプローチは、Claude Codeを使用して日本語のゲームリソースを変換し、Djangoフレームワークをセットアップすることでした。AIのゲームメカニクスとUIのコード生成能力は印象的で、ゲーム開発への異なるアプローチを理解しやすくしてくれました。しかし、Claude Codeはシンプルなタスクを過度に複雑にすることが多く、簡単な実装で十分なところに精巧なソリューションを生成することがすぐにわかりました。明確で正確な指示がなければ、Claude Codeは要求されたことと正反対のことをすることがあり、タスクを維持するためには、すべてのやり取りに注意深い監督が必要であることを示していました。
第一原理思考
この経験により、私はAIコラボレーションに第一原理思考を適用することを学びました。複雑なゲーム機能の実装をClaudeに求める代わりに、問題を基本的な構成要素に分解することを学びました。「プロパティ購入を実装」と要求すると、Claudeは精巧な抽象化レイヤーを生成しました。しかし、それを第一原理に分解したとき ‐ プレイヤーの資金の検証、プロパティの利用可能性の確認、所有権の更新、プレイヤーの残高の修正、ゲームイベントのトリガー ‐ 生成されたコードは焦点が絞られ、効率的になりました。このアプローチにより、AIの支援を求める前に、コア問題を理解することを余儀なくされました。第一原理で考えることで、必要なものだけを正確に生成するようClaudeを導くことができました。
特異性がすべて:精密なコミュニケーション
私は、プロンプトエンジニアリングが重要なスキルになったことに気づきました。AIモデルが情報を解釈する方法は人間の理解とは根本的に異なり、非常に意図的で正確なコミュニケーションが必要です。ゲームメカニクスの実装についての支援を求めたとき、AIが提供するコードは私のビジネスロジックに特有の重要なエッジケースを見落とすことがよくありました。ソフトウェアエンジニアリングのスキルを活用して、これらのギャップを特定し、エッジケースを正確に処理するためのカスタム検証ロジックを開発しました。
ブレークスルーは、効果的なAIコラボレーションには正確な技術的コミュニケーションと包括的なコンテキストの提供が必要であることを理解したときに訪れました。高度なラバーダックデバッギングの一形態であるClaude Codeと作業することで、AIが理解できるほど明確に問題を説明することが、Claudeがコードを生成する前に私自身で解決することにつながることがよくありました。違いは、このラバーダックが私の明確化に基づいて実装を書くことができることで、ソリューションを正しく表現した後の開発を加速させることでした。
既存のコード構造、ビジネスルール、エッジケース、期待される動作を含む詳細な仕様を提供することで、Claude Codeはコードベースとシームレスに統合されるソリューションを生成し始めました。私は全体的なシステム設計とデータモデルを自分で設計し、特定のコンポーネントの実装を加速するためにClaude Codeを使用しました。このアプローチにより、コード品質を維持しながら生産性が大幅に向上しました。
Pythonテストフレームワーク
プロジェクトの最も困難な側面の1つは、異なるブラウザ、デバイス、エッジケースでゲームが完璧に動作することを確保することでした。上司の提案に従い、私は洗練された27モジュールのPythonテストフレームワークに進化したウェブAIエージェントを開発しました。このフレームワークは、私の技術スキルと、適切に指示されたときにClaude Codeが私の能力をどのように増幅できるかの両方を示しました。
私自身でテストアーキテクチャを設計し、オブジェクト指向パターンを実装し、コアテストエンジン構造を作成しました。単純な遅延の代わりに、WebDriverWaitを使用してAJAXロードコンテンツを処理するインテリジェントな待機戦略を実装しました。これは、ゲームの投資フォームがJavaScriptを介して動的にロードされ、Seleniumがクロスブラウザ互換性を確保しながらこれらの要素を待機して相互作用する必要があったため、重要でした。
最も複雑な側面は、本質的にランダムなゲーム環境で決定論的な動作を実装することでした。私は、生産範囲、価格しきい値、投資確率、リスク許容度を含む正確なAIパーソナリティパラメータを定義するJSON戦略設定ファイルを個人的に設計しコーディングしました。
テストサイクルごとに40時間の節約
このPythonテストフレームワークは、何十時間もの手作業を必要とするものを自動化し、すべてのテストシナリオで一貫した結果を保証しました。Claude Codeは私のPython学習曲線を加速させましたが、アーキテクチャの決定、アルゴリズム設計、デバッグプロセス、技術的実装はすべて、私自身のプログラミングスキルとゲーム要件の深い理解の産物でした。
決して信頼せず、常に検証する:防御的プログラミング
セキュリティテストは開発プロセスの重要な部分となりました。私はこのフェーズを通じて防御的プログラミングの考え方を採用し、すべての入力を潜在的に悪意のあるものとして扱い、Claudeが生成したすべての検証を潜在的に不完全なものとして扱いました。DjangoのORMはSQL注入の試みを適切に防ぎ、基本的なXSS保護を提供しましたが、防御的プログラミングにより、フレームワークの保護では捕らえられないビジネスロジックの脆弱性が明らかになりました。
例えば、投資システムが負の金額を検証できず、プレイヤーが数学的な悪用を通じて残高を操作できることを発見しました。入力を決して信頼せず、出力を継続的に検証するというこの防御的アプローチは、悪意のある使用ケースを予期しないかもしれないAI生成コードを扱うときに不可欠であることが証明されました。私の発見に基づいて、厳格なサーバーサイド検証を含む包括的なソリューションを設計し実装しました。
私が学んだ最も価値のあるスキル
この経験は、プロンプトエンジニアリングが従来のプログラミングスキルに匹敵する重要な技術能力として登場したことを強調しました。AIシステムと効果的にコミュニケーションを取るには、複雑な問題を正確な仕様に分解し、システムを圧倒することなく適切なコンテキストを提供し、無関係なソリューションを避けながら機能的なソリューションに向けて導く能力が必要です。このスキルセットは、ソフトウェア開発においてますます重要になる新しいカテゴリーの専門スキルを表しています。
開発者がまだ重要な理由
このインターンシップは、AI支援開発が置き換えではなく、人間の能力の強化を表すことを示しました。クリティカルシンキング、システム設計、アーキテクチャの決定は、最終的に開発者の責任です。Claude Codeは迅速なプロトタイピングと広範なテストのための強力なツールとして機能しましたが、すべての重要な決定には私のプログラミング知識と技術的判断が必要でした。この技術により、個々の開発者は以前チーム全体を必要としたことを達成できるようになりましたが、それは厳格な検証と思慮深い監督と組み合わされた場合のみです。
来るべきものに備えて
インターンシップ中のこれらのAIツールの経験に基づいて、人間とAIのコラボレーションに対する強い需要があると信じています。開発者は高レベルの設計、批判的思考、創造的な問題解決に焦点を当て、同時にAIはルーチンの実装を処理し、ソリューション空間の迅速な探索を提供します。この環境での成功には、AIを強力だが常に正しいとは限らないツールとして扱い、継続的な検証、明確なコミュニケーション、慎重なプロジェクト管理が必要です。AIツールの私の経験は、それらを使用する開発者と同じくらい有用であることを証明しました。それらは速く動作しますが、ミスを犯します。動作するコードと動作するように見えるだけのコードの違いを生むのは、あなたの知識と好奇心です。
謝辞
この洞察に満ちた刺激的なインターンシップの機会をいただいたEdward Whittaker氏に感謝申し上げます。彼の指導とガイダンス、特に提供していただいた様々なリソースを通じて得た貴重な経験は、私にとって変革をもたらすものでした。

