Claude Proお試し中
ChatGPTアプリ連携に飽きてきたので、Claude Proを試すことに。試してから気づいたけど、Proだとまだ Opus 4 は使えないのね。ということで使用したモデルは Sonnet 4。
始める前にChatGPT経由で作成したリポジトリはあるけど、Claude向けじゃないので CLAUDE.md みたいなものはない状態からの開始。
- まず ChatGPT 側で CLAUDE.md を作成して貰う。ChatGPT自身が既に全体把握し切れてないので、間違ってたり、重要ファイル見落としてるような内容で仕上げてくるけど、これを叩き台として修正する分には十分有用。以下の内容を含めています。
- プロジェクト説明: プロジェクト概要、利用中のライブラリ、システム全体像(≒クラス図)、ディレクトリ構造、主要ファイルとその概要、シナリオ一覧
- 現在の課題・TODO: 最新シナリオで達成したいこと、現状、実行ログ抜粋
- CLAUDE.mdを用意したら、claude codeを起動。以前は "claude-code" だったっぽいけど、今は単に "claude" になってる。
- 既存プロジェクトの理解からして貰うために、まずは全体を見て貰う。
@read CLAUDE.md
: @readでファイルやディレクトリ単位で直接読み込ませる。CLAUDE.mdはプロジェクト全体像の認識共有するためのファイル。@tree
: リポジトリ構造を把握。@read hoge/
: 今回だと主要コードを設置してるディレクトリ全体を指定。
- CLAUDE.mdに「現在の課題・TODO」を書いていたからか、@read した時点でtodoに向けた提案をしてくるので必要に応じて実行(承認)。
- 他便利そうなコマンド
@update CLAUDE.md "現状と残された課題"
: トークン制限に引っかかる前にこれやっとくと、その後での継続がやりやすそう。- あれこれあるようだけど、自然文での指示でも問題なさげ。コマンドとして定義されてるのを使うことで指示が明示的になることと、トークン数抑えられる(説明文が少なくなる)のがメリットという位置づけなのかも。
このぐらいの流れで既存リポジトリをベースに claude code で実行できるっぽい。
以下は少し(トークン制限を4回食らうぐらい)使ってみた雑感。
- 私の使い方だと1〜2時間ぐらいで制限に引っかかる感じかな(Claude Proの5時間毎の制限)。ただし今回はシミュレータ作成中で、あちこち動作確認のためだけに数十秒〜数分の実行を要してるので、そこまで動作確認の時間を要しないタスクならもっと早く制限に引っかかるかも。
- デバッグ用print埋め込んで
シミュレータ実行 | grep 正規表現
みたいなのことをちらほらやってて、人間でもやってるような作業をうまく仕込んでる印象あり。 - 「目標はこれこれ。現状はこうなってる。目標に届いていない要因分析して」みたいなタスク投げると、ファイル数40ぐらい(テスト含む)、行数2500行ぐらいだからか簡単に消費トークン1k超える。関係する箇所を @read で指定するか、アクセスファイルを制限すると減るかもしれない。
- 短期的に従量課金も考えてみたけど、同じ使い方を1時間しちゃうと「従量課金なら1時間あたり$10〜$20ぐらいじゃね?(by claude見積もり)」らしく、それはちょっと、、、。
- デバッグ用print埋め込んで
- ハードコーディングしてくる。
- シナリオファイルとそれを読み込んでループ実行するmain関数があるとして、具体的な処理は別ファイルに用意している状態から、
- 一度目の実行(初めてシナリオファイルを読むタイミング)では特に問題ない。
- 暫くすると「シナリオを知っている」ことを前提として、直接具体的な数値をmain関数内にがしがしかいて修正するようになる。(CLAUDE.mdでルールとして書いてやればこういう挙動を減らせるだろうとは思う)
- シナリオファイルとそれを読み込んでループ実行するmain関数があるとして、具体的な処理は別ファイルに用意している状態から、
- 新規ファイル作成を自動許可してなかったら、
python -c "プログラム"
みたいなの用意して実行許可を求めてくることがある。- 素直に新規ファイル作成を提案してくれよ。
@exit
しても終わらないどころか修正継続してくることがある。- 公式ドキュメントを探し切れていないのだけど、チャットで動作尋ねる限りでは以下のような処理をしているっぽい(本当か?)。次回継続時の動作を人間が期待するとおりに近づける工夫だと思うけど、exitの概念が違いすぎるな。
- @exit実行時の内部処理:
- 未保存の変更を検出
- 不完全な状態のコードを発見
- 自動的に安全な状態まで修正を実行
- その後、正常終了プロセスに移行
- @exit実行時の内部処理:
- 公式ドキュメントを探し切れていないのだけど、チャットで動作尋ねる限りでは以下のような処理をしているっぽい(本当か?)。次回継続時の動作を人間が期待するとおりに近づける工夫だと思うけど、exitの概念が違いすぎるな。
- ChatGPT同様、改善案として「場当たり的処理」を提案してくることはある。
- 場当たり的処理 = テストを通すだけの処理。CLAUDE.mdとの整合を取れる範疇で楽な修正案を提案してくる。ので、単純にあれこれ修正案を自動承認するのは避けたい(避けてる)。
- テストを詳細化(タスク分割)していくことで「狙ってるゴール」に導きやすくなる。Sonnet 4使ってる範囲では、具体的なタスク分割方法をこちらで指示した方が良い。Opus 4だとこの辺りもやってくれるのかしら。
- ChatGPTアプリ連携との違い
- ChatGPTアプリ連携だと文脈把握できなくなるケースが出てきましたが、claude codeでは今のところなし。
- (@readで読ませたからか)関連ファイルを必要に応じて参照してそれぞれ修正提案してくれるのは楽。ChatGPTアプリ連携の場合は個別にやる必要があった。
- Claude code だと、ターミナル上での進捗ががしがし流れていく(スクリーンアウトしていく)ので、途中過程を眺めるのはそこそこ面倒。
- ターミナルの画面サイズを大きくしたくなるw
MAXプラン使いたくなるのも理解できるし、その分で圧縮できる開発コストを他に回せるのはとても美味しいのだけど、金銭的になぁ。。
P.S. 5時間制限システムは、ソシャゲのスタミナ回復時に使い切るように行動するようになるのと同じ状況になるな。