🍞

実務でのClaudeCodeの使い方

に公開

はじめに

実務ではモバイルのクライアントとサーバーサイドを開発しています。
機能実装する際に、クライアントとサーバーをどちらも1人で実装することもよくあるため、特定の領域だけに特化したAIエージェントの使い方よりも、クライアントとサーバーサイドのどちらでも安定した出力を出すことができる方法を模索しています。

今回は、現時点での実務で実装する際のClaudeCodeの使い方を共有します。

CladeCodeを動かすディレクトリの全体像

- workingDir -> このディレクトリをCursorで開き、ClaudeCodeを起動
    |- backend_repo -> このディレクトリをInteliJで開く
    |- ios_client_repo -> このディレクトリをXcodeで開く
    |- android_client_repo -> このディレクトリをAndroidStudioで開く
    |- .claude -> cluade関連のファイルはここに格納
    |   |- contexts
    |   |- doc
    |   |- done
    |   |- tmp
    |   |- commands
    |- CLAUDE.md

なぜこのような構成にしているかというと、workingDirをCursorまたはClaudeCodeで開いておくことで、クライアントとサーバーサイドを横断的に扱うことができ、サクッと何か調べたい時に、具体的に指定せずとも自律的に対応してくれるので便利だからです。

開発フロー

毎回のタスクで安定した出力を出すために、開発フローは決められたカスタムスラッシュコマンドを順番通りに実行していくだけのワークフローを採用しています。

ワークフローの型はAnthropicが公開しているClodeCodeを使用したAIエージェントコーディングのベストプラクティスに基づいています。
Explore(探索) -> plan(計画) -> code(実装) -> commit(コミット)
https://www.anthropic.com/engineering/claude-code-best-practices

特に、Explore(探索) -> plan(計画)が重要と言っているので、planの完成度を高めるために、AIに提供するコンテキストと、それによって出力されるplanを自身でレビューしアップデートするというサイクルをループするようにしています。

コンテキストが明確で軽量な場合は、探索はせずに、/designコマンドに渡します。
コンテキストが不明瞭な場合や、問題が複雑な場合等は、一度/analysisコマンドで探索を実施し、その出力をもって、/designコマンドに渡します。

  • Explore(探索)が
    • 必要な場合
      • context -> /analysis -> /design -> /implement
    • 必要でない場合
      • context -> /design -> /implement

開発タスクを対応する際の一連の流れ

基本的に、AIが出力した成果物にユーザーが手を加えることはしないようにしていて、入力コンテキストであるrequirements.mdのみを編集することにしています。

各カスタムスラッシュコマンドでは、mdファイルを成果物として生成するようにしていて、.claude/tmp/配下に格納するようにしています。
生成されたmdファイルは、後続のカスタムスラッシュコマンドの引数として入力するようにしています。

  1. /requirementsコマンドで、コンテキストを記載するためのテンプレートmdファイルrequirements.mdを生成する。
  2. requirements.mdにコンテキストを記載する。
  3. 探索が必要であれば、/analysisコマンドで、ソースコードの解析を実行します。
  4. /designコマンドで、requirements.mdを引数として渡し、実装プランを作成します。
    成果物はdesign.mdとして出力されます。
    前段で/analysisコマンドを実行している際は、参照できるようにrequirements.mdanalysis.mdファイルのパスを記載します。
  5. design.mdをレビューし、修正点がある場合は、requirements.mdに加筆修正を加え、再度/designコマンドを実行します。
  6. /implementsコマンドで、 design.mdを引数に渡し、実装します。
  7. /reviewコマンドの引数にdiffファイルを渡し、実装した内容をレビューします。
  8. レビューによる修正が必要な場合は、/fix-reviewコマンドの引数にreview.mdを渡し、指摘修正を実行します。
  9. /doneコマンドで、tmpディレクトリをクリーンし、doneディレクトリに使用したmdファイルや最終的な対応内容のサマリをmdファイルとして保存するようにしています。

まとめ

今回は実務で実際に使用しているClaudeCodeの使い方について紹介しました。

Explore(探索) -> plan(計画) -> code(実装) -> commit(コミット)をカスタムスラッシュコマンドで順番通りに実行していくことで、適当にVibe Codingする際と比べて、AIの出力が安定していると感じています。

今後の改善点としては、カスタムスラッシュコマンドの精度向上とワークフローの効率化に注力して、日々の実務の中でアップデートしていくことが重要だと考えています。

最後に

株式会社ジャンボではエンジニアを絶賛募集中です!
少しでも気になった方はぜひカジュアルにお話しましょう!
Wantedly: https://www.wantedly.com/companies/company_725162
HP Recruit: https://jambo-inc.io/recruit/

Jambo Tech Blog

Discussion