世界を動かす技術を、日本語で。

クロードコードの6週間

概要

  • Claude Code の導入により、コード作成・保守の方法が劇的に変化
  • 技術的負債 の解消や日常的な保守作業が大幅に効率化
  • プロトタイピングと実験 が容易になり、開発の自由度が向上
  • チーム全体のコラボレーション とアイデアの実現速度が加速
  • モノレポ 環境がClaude Code活用の成功要因

Claude Code導入による変化とインパクト

  • Claude Code の登場で、コードとの向き合い方が根本的に変化
  • コード品質は維持しつつ、 表現の自由度 が飛躍的に向上
  • すべてのコードを手書きする必要がなくなり、 全体像を一気に構築 できる体験
  • 写真技術の登場時のような プログラミングのパラダイムシフト 感覚
  • 責任は自分 にあるが、コードレビューと編集で理想形に仕上げる新たなワークフロー

6週間の回顧と実績

  • Claude Code導入後、 6週間で膨大な技術的負債の解消 に成功
    • React NativeからReactへの大量コンポーネント移行
    • RedwoodJSシステムの置き換え
    • 複数プロジェクトのREPL構築
    • DBモデルのflagsシステム統一
    • JestからVitestへのテスト移行
    • フロントエンドテスト戦略の策定
    • CMS連携やSSR対応の推進
    • iOSアプリ起動システムの刷新
    • LLMによるドキュメント自動生成
    • デザインシステムやアニメーションの最適化
    • Node 22への全プロダクション移行
    • PuzzmoアプリのiPad対応
  • これらは本来の業務外の 副次的プロジェクト として短期間で完遂
  • 時間の捻出コスト が激減し、会議前の短時間でも着手可能

「まず書いてから考える」文化

  • アイデアを即実装→検証→廃棄 のサイクルを推奨
  • Claude CodeでPRごとにテストを書き、後で削除することで 多様なアプローチを学習
  • テスト戦略や抽象化の実験も 手軽にトライ&エラー できる環境

Two Clones運用法

  • VS Codeの異なるプロファイルと2つのリポジトリクローン を活用
  • 各クローンが 独立したPR作業単位 となり、作業の切り替えが容易
  • devサーバーのポート管理も自動化し、Claude Codeによる同時進行が効率的

ゲームデザインとプロトタイピングの革新

  • Puzzmoでは プロトタイプ→フィードバック→本番コード化 が従来の流れ
  • Claude Code導入後は 数時間でアイデアを実際に動作する形に
  • 新規モノレポ「prototypes」導入で ゲームデザイナーも即座に実装・検証
  • 「Missing Link」など新作ゲームもこの手法でリリース
  • プロトタイプコードの本番化・管理について 新たな課題 が発生
    • 実験終了後の取り扱い
    • 本番コードへの書き直し
    • 機能制限付きゲームの扱い
    • プロトタイプの品質向上方策
  • 実験的ゲームの爆発的増加 による運用リスクの高まり

GitHubトリアージでの即時実装

  • 週次トリアージ中にClaude CodeのGitHubアクション でPRを自動生成
  • 小規模な修正は 一発で実装可能 なレベルに到達
  • 十分なリポジトリ整備 が前提

チーム内でのClaude Code活用状況

  • 全員にClaude Codeを即時開放
  • プロダクト・技術・自律性 を兼ね備えたメンバーが特に活用
  • 「最初の一歩の不安から解放された」との声
  • Justin Searlsの「フルブレッド開発者」論
    • かつては「バイオリン演奏家」、今は「オーケストラ指揮者」に例える
    • 自律的にバーティカルを動かせる人材 が活躍

Claude Code活用を成功に導く要素

  • モノレポ運用 が最大の成功要因
  • DBスキーマやGraphQL API、画面ごとのリクエスト全てが 一元管理
  • Claude Codeが リポジトリの文脈を把握 できるため、曖昧な指示でも的確に実装可能
  • 技術選定やリポジトリ構成の蓄積が Claude Codeの効果を最大化

このように、 Claude Codeの導入 はPuzzmoにおける開発スタイル・保守性・チームコラボレーションに 抜本的な変化 をもたらしています。今後も変化が加速する中で、 柔軟かつ自律的な開発体制 の重要性が高まる見通しです。

Hackerたちの意見

クロードのコードがどれだけ優れているかは別として(使ったことはないけど、この記事はすごく説得力があると思う)、ちょっと気になることがあるんだ。俺はまだ初心者で、遅くて汚いgdscript(基本的にPython)で書かれた大きなコードベースを持っていて、それをC#に変換してきれいにして早くしたいと思ってる。これは個人プロジェクトで、C#を書いたこともあまりないし、こんなにリファクタリングをしたこともないから、いろんな意味で勉強になるかもしれない。もしこの作業にクロードを使ったら、自分がたくさん学べるチャンスを奪ってる気がするんだ(将来的にコードをもっと良く構造化するモチベーションにもなるかもしれないし)。クロードを使わなかったら、(すごく少ない)自由な時間を、将来的にはほとんど自動化されるかもしれない、あまり刺激のない作業に無駄にしてる気がする。プログラミングの技術に対する(間違った?マゾヒスティックな?)信念から来てるのかもしれない。今はプロジェクトについて、こういう考えが頭の中でぐるぐるしてる。

あなたがやるべきタスクを見つけたと思うよ。コードを書くこと自体があなたにとって助けになるなら、AIにその助けを奪われないようにしよう。「生産性」の漠然とした必要性のためにね。私たちは皆、自分の技術を向上させるために時間をかける必要があるし、AIにはその部分を代わりにやってもらえないから。だけど、例えば、行き詰まったり初稿が終わった後に、より良いパターンや言語、ライブラリの機能を示してくれることで助けてくれることはあると思う。それは cheating じゃなくて、友達に頼むことだよ。

これは本当に面白いポイントだと思う。ちょっと年配の視点からいくつか考えがある。今は物事が急速に進んでいるけど、過去10年間の遅さのせいで、さらに速く感じるのかもしれない。俺は90年代中頃から後半にかけてウェブ開発に入ったけど、その頃も似たような感じだった。接続されている人たちはウェブが大きくなることをなんとなく知っていたけど、同時に物事が急速に変わることもわかっていた。学んだことはすぐに役に立たなくなって、次の新しいことを学ぶための肥料になってしまう。ここ10〜15年は本当にずっと安定しているように感じる(人によって感じ方は違うかも)。だから、俺が言いたいのは、そう、実際にこれは普通に戻りつつあるってこと。少なくとも、俺が楽観的な気分のときはそう見える。何かを選んでやってみるといいよ。それが脳の肥料になるかもしれないけど、良い深い肥料があれば、あなたはシニアデベロッパーになれると思う。あまりメタファーが伸びすぎてないといいけど!

数年前、「ライブラリを使う代わりに自分でxを書く」というブログ記事のトレンドがあった。自分のバージョンを作ることで、ソフトウェアについて多くを学べる。クライアントサイドのルーティングがどう機能するかを学びたい?クライアントサイドのルーターを書いてみなよ。LLMのおかげで、何でも「ライブラリ」コードになったと思う。だから、結局はプロジェクトから何を得たいかにかかっている。C#を上達させたいなら、自分でポートするべきだと思う。ポートされたコードを手に入れて他の側面に集中したいなら、クロードにやらせればいい。もし学ぶことが目的なら、何をしても何らかの苦労が必要だと思う。何かが簡単に感じるときは、あまり学んでいないことが多いと気づいた。

35年以上の開発者キャリアの終わりに近づいているけど、LLMに関することではいつもこうしている: 自分が解決できることを一般的に解決するように頼むんだ。ただ、やる気が出ないだけ。例えば、昨日はOpen API 3.0のスキーマに取り組んでいた。サンプル入力に合わせてスキーマを「修正」できることはわかっているけど、つまらないからやる気が出なかった。以前やったことがあるし、何も学べないから。だから、クロードにやらせたら、うまくいった。それから「例」セクションがスキーマと合わなくなったので、クロードが適切な例を書いてくれた。でも、ここでのポイントは、これをやっても何も学べなかったってこと。だけど、何かを学べるときもある。だから、LLMが新しいことを教えてくれたときは、その知識を「知識バンク」に入れている。AnkiのSRSフラッシュカードアプリを使っているけど、他にも「TILブログ」に追加する方法(これもやってる)や、新しいことを解決策を見ずに何度か書き出してコンパイル/実行する方法がある。その後、その知識を別の方法で使う方法を考えたり、要件を変えてそれを書くことを試みたりする。基本的に、脳がこの新しいことと少なくとも2つの方法で関わるようにして、他のことと統合できるようにする。これが重要なんだ。新しい(話し言葉の)言語を学ぶときも、こういうことが多い。新しい単語を学んだら?3つの異なる文に入れてみる。新しいフレーズを学んだら?それに基づいて少なくとも2〜3の新しいフレーズを作る。これで、俺の脳が運動し続けられることを願っている。

プロとして16年コーディングしてきたけど、Claude Codeのおかげで、頭を打ちつけて学ばなきゃいけなかったことがかなり上達したよ。新しいことを学ぶ時は、効率のために、他の学習体験と同じように「簡単に来て、簡単に去る」って感じだね。私の意見としては、完全に学ぶことが目標なら、ゆっくりと忍耐強い方法を優先すべきだと思う(どんなに「物事」が早く進んでいても)。早く学ぶことが目標なら、Claude Codeや他のAIツールが役立つよ。「エージェント」モードより「アスク」モードを使う方が効果的だと感じてる。新しい概念を理解するために、アナロジーやシナリオ、記憶術を作るのが好きだよ。もしただ物事を終わらせたいだけなら、仕様書を書くのが上手くなって、エージェントに任せるのがいいと思う。その際、もちろんたくさんのテストを追加することを忘れずにね。何かを作っている限り、どのアプローチにも少なからず価値があると思うよ。

私の経験では、生成されたコードをレビューしないと、C#に十分精通することができず、コードベースがすぐにゴミになっちゃう。LLMでのコーディングではエラーが重なっていくし、修正しない限り、実際に価値のあるコードベースにはならないよ。友達はその問題がないみたいで、LLMに十分なテストを書かせて、早い段階で脆弱性をキャッチしてるって言ってたけど、私はそのアプローチを試したことがない。残念ながら、私のコードはあまりアルゴリズミックじゃないから、テストが難しいんだよね。

AIの前はコピー&ペーストがあったよね。Stackoverflowからコードをコピーして理解せずに使ってた人は何も学ばなかったし、それを何度も目の当たりにしてきた。アドバイスや概念を求めるのは全然問題ないと思う。でも、すべてを自動で書かせるのは、確実に学べなくなるよ。とはいえ、開発者として自分の時間を守る必要がある。学ぶべきことは山ほどあるし、ジュニアとしてゲームを作るのが目標なら、GDscriptのコードを移植するのはあまり時間の使い方として素晴らしくはないと思う。もちろん、そこから学ぶことは確実にあるけどね。

コードを生成させて、その後別のインスタンスにそのコードを批評させて、どう改善できるか、なぜそうなるのかを言わせるんだ。そしたら、そのインスタンスに分からないことや理解できないことについて質問してみて。リンクも聞いて、リンクを読んでメモを取る。内面化していく。ある日、ClaudeとRubyのコアメソッドについて議論してたんだけど、全然合意できなかったから、実際のドキュメントを確認しに行ったら、そいつが正しかった。2009年からRubyを使ってるのにね。

こんな感じの時は、Claude Codeにプロジェクトをレビューさせて、設計とアーキテクチャの文書を作成させるかな。次に、C#で再作成するための計画を作らせる。そして、計画文書で定義した小さなステップに従って、C#で新しいプロジェクトを生成させる。最後に、アプリを作る際の経験をレビューさせて、そのインサイトで元の計画文書を更新させる。最初のC#プロジェクトは捨てて、もう一度挑戦する。計画にはテストから始めることを含めるのを忘れずに。

著者のメンテナンスに関する考えには本当に同意する。TODOを書いたり、リファクタリングのためにチケットを作ったりする場面にたくさん遭遇したけど、代わりにクロードでその場でやっちゃったことがある。リファクタリングのアイデアを試すためにクロードを使ったこともあるけど、結果が気に入らなくて放棄したこともあった。こういうメンテナンス作業のためのハードルが低くなるのがいいよね。クロードを休ませるっていうのも、記事の中でのいいポイントだった。払ったお金に対して得られる価値が大きいから、いくつものことを並行してオフラインでクロードにやらせることはしてない。気をつけないと、早く燃え尽きたり、無駄なものが増えたりするかもしれないから、俺は人間に監視されるモードを守ってる。数週間前に、もっと考えをまとめたのがここにあるよ: https://www.modulecollective.com/posts/agent-assisted-coding....

クロードコードは他の何よりも一歩先を行ってる、すごく目立つ形でね。(2023年からAIコード生成のためのCLIツールを自分で作っていて、その過程でほとんどの選択肢を試してきたから、そういうことがわかる。)著者がやっていることには賛成することが多い: 1. モノレポは時間を節約できる 2. 良い仕様から始める。仕様に十分な時間をかけること。良いアウトラインを提供すれば、AIにほとんどの仕様を書かせることができる。 3. 最初からテストを確保する。これが最も重要な部分。テスト(良い仕様とともに)は、AIエージェントが良い解決策に再帰する方法だ。TDDが戻ってきた。 4. 型は助けになる(かなり!)。リンターも助けになる。これらはガードレールだ。 5. 外部ドキュメントはプロジェクトのドキュメント内に入れる、例えば docs/external-deps の中に。 6. 最後に、すべてのツールと同様に、自分に最適な技術を見つけるには時間がかかる。特にクロードコードを使うと、以前より簡単になっているかもしれないけど、まだ学ぶべきことはある。知っている人は皆、少しずつ違うワークフローを持っているから、コーディングと似たようなものだ。今週はかなりコーディングしたよ。その中の一つがPermiso [1] - 超シンプルなGraphQL RBACサーバー。まだ十分にテストされていないし、レビューもされていないけど、シンプルなものが欲しいなら、かなり役立つと思う(レビューされるまで待てるならね)。[1]: https://github.com/codespin-ai/permiso

Hacker Newsで議論の続きを見る