Claude Code体験記 ―― Agentic Codingの第一印象と良し悪し

はじめに

先月末からClaude Codeを使い始めたのでその感想を書こうと思う。

使用期間は約3週間。平日に仕事で使ってみた感想である。個人ではほとんど使っていない。

まず筆者のAIの使い方のクセからはいる。なぜこの話をするかというと、そもそもどんなプロンプトを打っているか、どんな使い方を好んでいるかを言わずにAIプロダクトを評価することに意味がないからだ。

現在のAIが成果物にどれだけ寄与できるかは、かなりユーザーの力量に依存している。だから、筆者がどんな風に使っているかを語らずしてこのAIプロダクトはxxxができないというのはフェアではない。それはAIのせいかもしれないが、筆者のせいかもしれないからだ。

次に、このクセの話をしたあとでどんな風にClaude Codeを使っているかを書く。

最後に筆者が思うClaude Codeの便利なところと、逆にここは便利じゃないと思ったところを書いてこの記事は終わる。

筆者のAIの使い方のクセ

筆者はプロンプトエンジニアリング(最近はこのワードもコンテキストエンジニアリングってフレーズに変わったんだっけ?)に疎い。昔から興味がなかった。

根拠のない偏見だが、プロンプトのテクニックについて良い印象がない。得られる便益の割に考えることが増えるという感覚がある。

僕はプロンプトを短くすることが多い。思いついたことを推敲せずにエンターを叩いて応答させる。

理由は書くのが面倒だからだ。それに尽きる。

僕がClaudeなりに仕事でなにかを持ち掛けるのはたいていこんな感じで始まる(Claudeに先日聞いた原文ママである):

mysql の JSON列が空配列かどうかを知りたい

これだけである。これだけで、質問の意図を正しくくみ取ってくれた。曖昧な問いでも、「こういう方法と、こういう方法と、こういう方法がありますよ!」と最近のAIアシスタントは返してくれる。

これで僕が知りたいことに答えてなかったら、例えば

そのカラム、こんな感じなんだよね (実際のJSONをペースト)。この "foo" の配列が空かを判定したい

みたいにあとで情報を足す。

こんな感じで、僕はAIと認識を揃えるための情報を最初から全部出そうとするのではなく、答えを見て違和感があったら情報を足して軌道修正をしていくスタイルをとっている。

ちなみにClaude Codeはこれをやるといきなり実装をし始めて困る、ということが分かった。だから最近、Claude Codeには「僕がいいというまで実装を始めないでください」とわざわざ言っている*1

筆者のClaude Codeの使い方

使い始め

まず、会社のチケットをとる。

たいていこの段階では細かいことが決まっておらず、Claude Codeを起動する以前の問題なことが多い。しかし本筋ではないので、ここでは簡単のためリポジトリの中に必要な情報が全部あるタスクだったとしよう。

この場合、僕は claude コマンドをたたき、上述のように「僕がいいというまで実装を始めないでください」と言ったうえで、たいてい次のように言う。

このタスクをやりたいんだけど、まずxxxの処理があるファイルがどれか探して ~~~(チケット全文貼り付け)

この後は正直決まっていない。

流れであるとしか言いようがないのだが、あえて言語化していこう。

調査フェーズ

基本的には、自分の仕事の仕方をそのままAIにやらせている。まず、そもそもタスクを理解し、そのタスクを完了するためにはどんな状態になっているかを理解する。

次に、そのタスクを完了した状態にするためにどんな調査が必要かを考える。

例えば、現状この処理はどのファイルに書かれているのか。複数のファイルや関数にまたがっているのか。その場合その設計でなるべく早くタスクを完了するにはどんな手段をとりえるか。

この調査を今まで僕は git grep だとかを使ってソースコード検索をしたり、WebアプリならChrome開発者ツールを開いて使っているエンドポイントを確認したりしてとっかかりを掴み、実際にコードの中を定義ジャンプなどを駆使して読むということをしていた。

ソースコードじゃなくてデータが鍵の開発もある。開発用DBにアクセスしてSQLをたたいたり、既存のマイグレーションを git grep したりしてテーブル定義を知ったりする。

これらが、いまはだいたいClaude Codeでできる。

テーブル起因で調べたければ、このテーブルのデータを使うAPIってなにがある?と聞けばよい。APIのユースケースを知りたければこのAPIはフロントエンドのどこから呼ばれている?とか聞けばよい。ひとこと聞けば調べてくれる。

それも開発環境を起動するより「僕は」楽だ*2

実装フェーズ

「これで自分でもコードを書けるなぁ」

と思い始めてきたら実装を始める。最近は実装もClaude Codeにやらせることが多い。そのほうが早いからというより、自分の心が楽だからそうしている。

AIと実装するときは最初に動くものをバッと作らせることが多い。調査フェーズでだいたい頭に入っているので、出してきたコードの細部に文句を言いたくはなる。が、最初に全部言うより、あとで直させたほうが結局早い気がするし、なにより僕が長文プロンプトを書かなくていい(回数書く必要はあるが)。

そして大まかに実装が終わり、セルフレビューを軽くする。自分だったらこの実装はしないなと思う部分をひとつひとつ直させる。

だいたいこれで自分が納得のいくコードができる。

動作確認フェーズ

動作確認も、APIの場合はcurlコマンドを出力させたりするなどAIが簡単に手伝える部分は手伝ってもらっている。

実行はいま自分でやっている。理由は後述する。

検証タスクの場合

一度、あるタスクでプロダクトにコミットする前に複数案を検証しないといけないタスクがあった。3通りくらいの実装を試し、そのうちのどれかをプロダクトに採用する形である。

このときは僕の仕事はほとんどなかった。まずコードは成果物じゃないのでClaude Codeに最初からアルゴリズムの概要を伝えて実装させた。 tmp というフォルダを作り、そこで npm install もコマンドの試運転も全部走らせた。 S3 にあるファイルを大量に取得したかったので、そのためのスクリプトも Vibe Coding で書いた。

コードの品質を気にしなければ読まなくていいので、うまく動かなかった時だけ指摘すればいい。

Claude Codeの便利なところ

調査には申し分ない

調査をするにはとても便利だ。

業務を始めるのに必須なのは、現状のコードがどうなっているのかを把握することにある。

人間よりも大量のコードを一気に読めるし、検索パターンも結構芯を食った検索をしてくれる。なので代わりに調査をしてくれることで、人間が知りたい情報をピンポイントでとってきてくれる。

たまに想定しているものと違うファイルに騙されたりもするが、見れば人間は気付けるのでご愛嬌といったところだろう。

検証、実験の使い捨てコードを書くのに便利

プロダクトにのせない、レビュー不要なコードを書くのには便利だ。

場当たり的なコードを書く時間が業務ではそこそこある。画像処理を実験するためにとりあえず1,000枚くらい画像をダウンロードしてきたりするとかよくあるだろう。

データの前処理とかをしているとこういう場当たり的なコードの嵐になる。そういうコードが簡単に書けるのはとてもありがたいことだ。

いずれにせよ、プロダクションの実装にはそのまま使わないが、やらないといけないことをやるのにはとても便利だ。特に成果物の品質を気にする必要がない。Vibe Codingの真骨頂である。

あまり便利と思わないところ

出てくるコードはプロダクション品質ではない

プロダクション品質のコードを指摘なしで書いてくれる感覚は今のところない。大学生みたいなコード書いているな~とよく思う。

設計の難をひとこと指摘すると理解して修正してくれることが多い。それでも、細かい部分はなんだかんだ僕が手で直したほうが早いなと感じる。プロダクションコードを書くために手放しで使えるツールではないなと思う。

すぐ実装しようとする

何度か書いたが、油断するとすぐ実装しようとするので困る。これも大学生っぽいなと思う一因だ。

開発においてはなにかを開発することより課題を理解するほうが1,000倍大事だし時間をかけるべき工程である*3

AIはしかし、僕の最初のひとことやチケットの不十分な情報だけでまず実装に走ろうとする。あまりにも若者仕草すぎる。

プロンプトに気を付けさえすれば実装を抑制できるし、調査をする過程でAIも理解が深化していく感覚がある。

それもあってClaude Codeと一緒に調査をしている。僕が十分だなと思うまで調べたら、だいたいClaudeも実装方針をあまり説明せずともわかってる。

現状認識が甘い

実装後の評価に関してAIはあまり便利じゃないと感じている。特に、何かに失敗したりうまくいっていない時に自力で直す方向性がめちゃくちゃなことが多い。

そのため、僕はClaude Codeにコマンドを実行させずに、自分が実行してフィードバックと直す観点をプロンプトで渡すことが多い。自力で直す観点を探させると、たいてい失敗するからだ。

僕の印象では、なにかに失敗したときに自分の持っている狭いコンテキストでどうにかしようとすることが多いと感じる(これも大学生っぽい挙動だ)。

例えばDBに接続しようとして認証が通らない時に、わざわざDockerを立ち上げてORMを介してDBに接続しようとしたりする。

いや、僕にパスワードとか接続方法を聞けよ。そのほうが早いだろ。

僕は物事を上達するためには、うまくいかなかったときに現状を適切に評価し行動を修正する以外に方法はないと思っている。

仕事に具体化すると、業務のアウトプットがいまの自分の持っている情報だけで十分に出せるかどうか。これは仕事の現状認識で特に重要だ。

  • 情報の確度が低く、実装コストが高いなら、先にやるべきことは上長の決裁や言質をとる
  • 情報の確度が低くても実装コストも低いなら、実装しきってからアウトプットを見せてから言質をとるほうがいい場合もある
  • 情報の確度が高いなら作業を始める。作業内容により以下のようなことから選ぶ
    • GoogleやPerplexityで調べる
    • コードを書く
    • 昼寝をして頭をスッキリさせる

いずれにせよ、自分の持っている情報で次の最適なアクションが決まる。情報を増やさずに、いま持っている情報だけで業務を終えようとしても結局アウトプットは出せない*4

しかし僕が見ている限り、このいま持っている情報とコマンドなどのフィードバックから、適切な行動を選択するという意識をClaude Codeはもっていない。

現状認識さえできればあとはロジカルシンキングでなにをすべきかわかるし、ロジカルシンキングはAIはものすごく得意だ。たぶん僕よりも得意だ。だから、あとは現状認識さえしてくれればもっと僕が楽なのになと思っている。

結論という名の雑感

最後に結論めいたものを書こう。

使っていて思ったのは、僕の仕事の仕方は何も変わんないなということである。

それが一番の驚きだったかもしれない。

AIエージェントがあったらもっと仕事の仕方を変えるべきなんじゃないかと僕は思っていた。変化に適応するぞ~という気持ちで使い始めた。

しかし結果としては、いまの仕事の仕方がAIエージェント時代になっても通用すると自信をもった。

なぜならば、改めて課題を理解しないとまともな実装を作れないという実感を持ったからだ。

これはAI側の推論精度の問題ではない。ソースコードにより表現されているものや、タスクのテキストとして表現されているものがコンテキストに依存しすぎていて、その会社、その事業、そのソフトウェア、そのタスクの置かれているコンテキストを理解せずに実装を始められないのだ。

だからそのコンテキストを理解してインジェクションする存在が必要で、おそらくしばらくはそれを人間が担うことになるだろう。

現状を把握しないと課題はわからない。課題がわからないと実装ができない。

現状認識の一部にAIが使えるのは確かだが、AIが現状認識を代行できる未来は僕の体験では見えなかった。

現在のAIでも、具体的に調査の内容を指示すれば思った通りの処理を実施してくれる。別にプロンプトをそこまで長く書かなくてもくみ取ってくれる。

しかし、このタスクやっといてとだけ投げてもお粗末なアウトプットが出てくるばかりだ。仕事の実行の補助にはなっても、仕事の発見や仕事の定義には役に立たない*5

あらゆる業務をAIでも実行できるように、コンテキストを明示することができれば話が変わってくるだろう。そしてそれはきっと、AIネイティブな組織づくりの重要な要素になる。

しかし結局、仕事の発見をする人、仕事の定義をする人がいなければ事業は進まないことに変わりはない。そしてそれは僕が目指しているものなので、僕がやることは特に変わらない。

結論便利なのでこれからもClaude Codeは使い続けたいと思うが、これがなくなったとて特に僕に不満はない。コードを書く量やスピードで給料をもらっているわけではないので、あまり危機感を感じてもいない。

参考文献

syu-m-5151.hatenablog.com

余談 Vibe Coding と Agentic Coding

この業界ではよくあることだが、新しい概念が現れるとそれに付随して複数のよく似た (しかし些末な違いしかない) 語が乱立する。

直近でもそれは起きていて、ちょうどいまAgentic CodingとVibe Codingが違うので使い分けしようと主張している記事を見つけた。

まぁ、違うとは思う。同じニュアンスで使われている言葉ではないことは確実だ。

しかし、どう定義すべきかはわりと難しい。たぶん共通認識ができるまでには年単位の時間がかかるのではないかと思う。そもそも、AIのコーディング力がさらに伸びればVibeでもかなり品質が高くなるかもしれないし、2025年時点でそれらを厳密に使い分けることにあまり意味があるとも思えない。

雰囲気でプログラミングしているなと思ったらVibe Codingしているといえばいいし、真面目にやっているなと思ったらAgentic Codingくらいの雰囲気でいいんじゃないかと個人的には思っている。

余談2 Claude Codeの体験記を書くのがめっちゃ遅い理由

Claude Codeが世間を騒がせたのがいつごろからかよく覚えていないが、2025年の2月か3月頃からだったような気がする。ClineとかCursorってやつを使わないとな~でもお金かかるのやだな~とか思っていたら、Claude Codeがすごいとか世界を変えるとか全人類が言い始めた。そしてそこまで言うなら従量課金で$10くらい課金しようかなと思っていたら、サブスクプランで使えるようになっていた。でも$100/monthはさすがに高いなとか思っていたら、$20/monthのProプランに会社の補助付きで入ることになった。

というわけで、身銭を切らずに済む状態になるまでClaude Codeを使い始めなかった。そのせいで結構遅い体験記になった。

たぶんあと5歳若かったらそもそもClineを使い始めていただろう。歳をとったなぁと思う。

関係ないけど、一時期全人類ObsidianとCursorでAIライティングしてなかった?いまもう誰もその話をしてなくない?あの流れなんだったん?

*1:これをしないために Claude.md とかを作ったほうがいいって話なんだろうけど、まともに作っていない。この記事を読ませて Claude.md を作らせるのがいいかもしれない。

*2:おそらく地球環境にとっては楽ではない。

*3:僕もこれができるようになるまで何年もかかったので一概に否定できない。

*4:自戒を込めている。2024年の自分は甘ちゃんだった。

*5:GTD的にいえば把握や見極め処理である。