
こんにちは、虎の穴ラボのH.Y.です。
今回は、2025年6~7月にClaude Codeを使って設計からテストまで一通り開発したので、その時の所感を話します。
Claude Codeとは
Anthropic社が開発したCUIベースのAIコーディングツール
Anthropic社が開発したCUI(コマンドラインインターフェース)ベースのコーディング開発支援ツールです。
Anthropic社のClaude Opus 4/Sonnet 4に最適化し、長時間・大規模タスク向けにチューニング済みのモデルを使用します。
デフォルトでは、学習されず業務でも使いやすいAIコーディングツールになっています。
Claude Codeの特徴
柔軟な料金プランと強力な「拡張思考」コマンド
従量課金だけではなくサブスクで使用もできる特徴があります。
サブスクの場合は、5時間ごとのセッションでプランごとに使える量が異なります。
Claude Code 利用プラン一覧
| プラン名 | 月額料金 | 対応モデル | Claude Code 使用制限(目安) | 特徴・用途 |
|---|---|---|---|---|
| Pro | $17/月(年割) $20/月 |
Sonnet 4 | 約 10~40 プロンプト/5 時間 | 軽めの開発や学習に最適。小規模なコード作業向け |
| Max(5× Pro) | $100/月 | Sonnet 4 + Opus 4(限定) | 約 50~200 プロンプト/5 時間 Sonnet:約140–280 時間/週 Opus:約15–35 時間/週 |
日常的な開発作業に対応。Opus 4 も試せる用途に適す |
| Max(20× Pro) | $200/月 | Sonnet 4 + Opus 4(広範) | 約 200–800 プロンプト/5 時間 Sonnet:約240–480 時間/週 Opus:約24–40 時間/週 |
パワーユーザー向け。大規模開発や複雑タスクに最適 |
今回、開発にはMax 5xプランを使用しました。
Claude Code 使用制限(目安)は目安なので、重い処理(/initなど)を2,3回実行するとOpusを5時間使用できなくなるので注意が必要です。
また、think、megathink、ultrathinkという拡張思考(Extended Thinking)を使用できる隠しコマンドのようなものがあります。
| モード | 割り当てられる思考トークン(Thinking Tokens) | 説明 |
|---|---|---|
| think | 4,000 トークン | 標準的な推論リソースを提供。軽めのタスクに適用。 |
| megathink | 10,000 トークン | think hard相当の中級モード。より深い推論を必要とする場面に。 |
| ultrathink | 31,999 トークン(最大) | 最深の推論モード。複雑な構造やアーキテクチャ設計などに最適。 |
ultrathinkやmegathinkを常用するとすぐにセッションあたりの制限に当たったり、余計な実装もするので、場面に応じて使うのが良さそうです。
開発したプロジェクトの技術スタック
今回Claude Codeを使ったプロジェクトは下の通りになります。
- バックエンド:Ruby on Rails
- フロント:Slim(一部React)
- バッチ:Rake
- ローカル実行環境:Docker
モデル数が数百あったり、外部連携もある巨大なシステムなので、
開発するときにそれなりに広い範囲を調べる必要があります。
開発フェイズごとの活用
初期設定
CLAUDE.mdを作ります。CLAUDE.mdはClaude Code向けのプロジェクトの概要資料になります。
CLAUDE.mdを作るとセッションのたびに調査させる必要がなくなるので、時短になります。
Claude Code実行中に/initコマンドでプロジェクトを大体網羅的に調査します。
コマンドだけでは英語で出力されたりするので、
/init 日本語で記載して下さい。 megathink
という出力にすることで、CLAUDE.mdが日本語で出力されます。
megathinkを入れている理由は、より広範囲を見ますし、初回だけなのでここはケチらずに入れています。
テーブル名などは適当に翻訳された日本語がコメントされるのでそこは実態に合わせて手動で変更した方が早いです。
また、プロジェクトごとのルールも記載する必要があります。
アプリは必ずDocker上で実行して下さい。 実装完了後は、rubocop(Rubyの静的コード解析ツール)を実行して下さい。
など記載すると都度指示する必要がなくなるのでほぼ毎回指示しそうなことは記載しました。
設計
設計では、要件定義の内容を大まかに入力し、Claude Codeと壁打ちするところから始めます。
要件で曖昧なところ(これらの処理を同一トランザクションにするのかなど)を聞いてくるので
そこで設計書の完成度を上げるようにしました。
また、製造もphaseごとに分けるようにしました。
1日以内で実装できる範囲でphase分けするのがおすすめです。
今回の開発前半ではこのフェーズ分けができていなかったため、
phase2の途中まで実装中で実装状況を確認して残作業を書き出して下さい。
から始まってClaude Codeの調査から始めるのでスタートが少し遅れたりします。
また、この調査も万全ではないので、調査漏れしたりします。
なので、できればフェイズは一つのセッションで動かすのがおすすめです。
設計に関しては調査を深めにした上で/docsなどに設計書を出力するようにしました。
設計に関してはOpusモデルが使えるのであれば使ったほうが考慮漏れが少なくなります。
また、megathinkを入れることでより良いものが出力できます。
ただ、ultrathinkまで入れると伝えてもいないのに非同期バッチにしたり、dbパフォーマンスツールを入れたりしようとするので
megathinkあたりがちょうどいいかなと思います。
実装
設計書のphaseごとに実装をしました。
実装においては、必ずしもOpusでなくても精度が低いわけではなく、Sonnetでも十分対応可能です。
ただし、モデルの種類を問わず、一度に多くの実装をさせると指示を忘れがちです。この対策として、
phase2の実装箇所をTODOリストにして修正して下さい。 think
のように指示を出すと、作業の抜け漏れが少なくなります。
実装を進めると、冗長な書き方になったり、巨大なメソッド、クラスを作ったりします。
この対策としてrubocopのようなlintを動かして品質を維持する必要はあります。
rubocopの指摘内容を伝えると大体、直してくれるので実装終わりにrubocopを実行するようにCLAUDE.mdに記載するのがおすすめです。
ただ、
# rubocop:disable RSpec/ExampleLength
などを入れて、lintの指摘を回避することがあるので注意が必要です。
レビュー・テストなど
lintで検知できない冗長な処理(例:同じメソッド内で同じテーブルデータを2回取得する)などは、
人間によるレビューや別のAIツールとの併用で防げます。
rspecなどの自動テストの失敗もClaude Code経由で実行させると失敗内容を確認して修正したりします。
ただ、本当はテストケースを修正して欲しいのに実装の方を修正したりするので、都度確認したのがおすすめです。
Claude Codeの気になったところ
開発で大いに役に立ったClaude Codeですが、もちろん気になる点はあります。
コンテキスト200kでは少ない
Claude Codeのコンテキスト上限である200kは、少し複雑な開発ではすぐに上限に達してしまい、指示を忘れるなどの問題が起こりがちです。
開発したプロジェクトの初期設定ファイルCLAUDE.mdなどの読み込みで35k、開発する設計書の読み込み38kのコンテキストを消費した状態からスタートとなります。
ここから、設計書をもとに開発する計画を立てるためにplanモードを実行すると100kしかコンテキストの空きがない状態で開発します。
コンテキストの空きがなくなると圧縮処理が実行されますが、CLAUDE.mdに「必ず日本語で返答して」と記載があっても英語で返答してきたり、「Dockerで動かして」という指示を忘れてローカルで実行しようとしたりするなど、手戻りが発生しがちです。
そのため、設計フェーズ完了後は/clearコマンドやセッションの再起動でコンテキストを解放し、消費量を抑えた状態で実装に移る必要があります。
巨大なファイルはうまく修正できない
現状のClaude Codeは巨大なファイルをうまく扱えず、既存のコードを破壊してしまう可能性があるため注意が必要です。
特に巨大なCSS、SCSS、Markdownファイルなどでこの傾向が強く、既存コードを完全に読み込めていないためか、修正のたびに同じような記述が繰り返されることがあります。
もともと25kトークンまでの入力制限があるため、Claude Codeで巨大なファイルを取り扱うこと自体が非推奨のようです。
今後、新しいプロジェクトではAIコーディングを前提としたファイル構成も考慮する必要があるかもしれません。
Max x5プランだとOpusはすぐに使えなくなる
使用率20%までOpusが使用できますが、Opusで計画を立てた状態で実装に移るとすぐにOpusのリミットが来てSonnetになります。
なので、今はそこまで性能を必要としない処理をしているからSonnetを使って後からOpusを使うという手法が使えます。
この場合は、次のセッションが来るまで待つか、APIで課金するという方法になってしまいます。
/modelでOpusを選択できますが、使用率20%を超えるとOpusが動かせないのでサブスクユーザはあまり恩恵はないと思います。
/modelでOpus Plan ModeというplanのみOpusで動かせるモードがありますが、これもAPIユーザ向けな感じがします。
まとめ
工夫なしにベテランエンジニア並みのコードが出力されるわけではありませんが、
工夫をすれば開発の効率化ができるので現在の状態でも十分に使えると思います。
今後
3.7→4と来て業務にガッツリと使えるようになり、4.1になって性能は上がっても使い勝手の悪化は感じなかったので
今後のアップデートでは、手直しをする機会がかなり減ると思われます。
また、コンテキスト長1Mに対応したClaude Sonnet 4がAPI利用のみで解放されているので、これがサブスク利用のClaude Codeでも使用できるようになると、コンテキスト圧縮による一時的な精度低下が起きにくくなるので期待しています。
個人的には、巨大ファイルの設計書やSCSSなどの出力制度が上がるアップデートがあるとClaude Codeのみで完結できるかなと思っています。
採用情報
虎の穴ラボでは一緒に働く仲間を募集中です!
この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧ください。
toranoana-lab.co.jp