Andrej Karpathyに詳しい説明は不要でしょう。元Tesla AIディレクター、元OpenAI創設メンバー、nanogptの作者です。AI界における彼の地位は、ロック界のBob Dylanに例えられるかもしれません。毎回最も美しいメロディを奏でるわけではありませんが、彼が発する言葉の1つ1つに、誰もが真剣に耳を傾けます。
最近、Karpathyが「LLMプログラミングにおける一般的な落とし穴」について観察した内容をまとめたCLAUDE.mdファイルが、GitHub上のandrej-karpathy-skillsとして公開されました。
140,420 個のスター、14,414 個のフォーク、そして毎日 2,600 以上のスターが増加しています。
1行のコードも含まない純粋なテキストファイルがこれだけの数字を叩き出したのです。Karpathyの洞察力がいかに価値あるものか、物語っています。
CLAUDE.md とは何か
簡単に言えば、CLAUDE.mdはあなたがClaude Codeに伝える「指示書」のようなものです。新しいセッションを開始するたびに、Claudeはプロジェクトのルートディレクトリにあるこのファイルを自動的に読み込み、「背景知識」として扱います。
これを使って、Claudeに「このプロジェクトで使っているフレームワーク」「コードスタイル」「触れてはいけないファイル」などを伝えることができます。
Karpathy版のCLAUDE.mdが果たしている役割は少し異なります:Claude(およびClaudeを使用する開発者)に対し、LLMにコードを書かせる際に何が頻繁に失敗し、何を避けるべきかを伝えることです。
核心的な洞察(エッセンス版)
このファイル自体はオープンソースですが、その真の価値はファイルの内容(誰でもフォーク可能)ではなく、Karpathyが問題を整理する視点にあります。コミュニティの議論やフォーク後の派生版を踏まえると、いくつかの重要な方向性に集約できます。
1. LLMは「自信満々に嘘をつく」
これは最も古典的な問題です。LLMに馴染みのないAPI呼び出しを書かせると、一見完全に妥当な関数名とパラメータをでっち上げます。コンパイルして初めて、それが存在しないことに気づくのです。
Karpathyのアドバイスはこうです:LLMに決して根拠のない呼び出しを生成させてはいけない。まずドキュメントを参照させ、その後にコードを生成させること。
2. 大きなファイルはLLMの盲点
5000行のファイルをLLMに渡して修正させると、高い確率で失敗します。モデルが賢くないからではなく、これほど巨大なコンテキストの中で修正箇所を正確に特定する必要があるためです。まるで、目録を使わずに図書館で特定の1ページを探すようなものです。
アドバイス:大きなファイルはまず分割し、LLMには小さなモジュールを処理させ、最後に組み立てること。
3. 状態管理は最大の難所
LLMの「現在の状態」を理解する能力は、人間よりもはるかに劣ります。「前回の修正の続きをやって」と頼んでも、前回何を修正したか全く覚えていない可能性があります。
アドバイス:タスクは毎回自己完結型にする。LLMの「記憶」に依存してはいけない。
4. コードよりテストが重要
LLMにコードを書かせる際は、まずテストを書かせ、その後に実装を書かせます。これにより、正しく書けているかどうかを判断する客観的な基準が少なくとも1つ得られます。
アドバイス:TDD(テスト駆動開発)は、AIプログラミングのシナリオにおいて、これまで以上に価値を持つ。
なぜこのファイルがバズったのか
14万スターを獲得したCLAUDE.mdが注目されているのは、ファイルそのものではなく、その背後にあるものです:
トップクラスのAI研究者であるKarpathyが、膨大な時間をかけて自らLLMでコードを書き、そこから得た教訓をまとめたもの。 これは理論的な推論ではなく、実戦経験です。
AIプログラミングの分野では、多くの「ベストプラクティス」はツールベンダーによって書かれています(「私たちのツールを使えばすべての問題が解決する」といった類いです)。Karpathyの異なる点は、ユーザーの視点に立っていることです。「私はこれらのツールを使い、これらの落とし穴を踏んだ。あなた方は同じ轍を踏まないでください」という姿勢です。
このような視点は、現在のAIプログラミングコミュニティにおいて極めて稀です。
コミュニティの反応
このプロジェクトのフォーク数(14,414)とスター数(140,420)の比率は興味深いです。スターを付けたユーザーの約10%がフォークを選択しています。これは、Karpathyのオリジナル版をベースに、多くの人が独自のカスタマイズを行っていることを意味します。
特定のフレームワーク向けのルール(React、Django、Rustなど)を追加したフォーク、チームの規範を追加したもの、言語の好みを取り入れたものなど様々です。
これは、CLAUDE.mdが「組み合わせ可能な知識の媒体」になりつつあることを示しています。1人が経験をまとめ、全員がその恩恵を受け、さらに改善を重ねていくのです。
使い方
最も直接的な使い方は以下の通りです:
- この
CLAUDE.mdをダウンロードする - プロジェクトのルートディレクトリに配置する
- 自分のプロジェクトに合わせて調整する(すべてのルールがあなたのシナリオに当てはまるわけではありません)
- Claude Codeを使用すると、自動的に適用される
しかし、より価値のある使い方はこうです:一度読み通し、各ルールの背後にある理由を理解した上で、自分自身に合ったバージョンを作成すること。
Karpathyの経験は出発点であり、終着点ではありません。
私の考え
このCLAUDE.mdで最も学ぶべき点は、中に何が書かれているかではなく、それが明らかにしたトレンドです:
AIプログラミングのベストプラクティスは、「ツール層」から「設定層」へと移行しつつある。
かつてプログラミングを学ぶ際は、本やチュートリアルを読んでいました。現在では「AIにプログラミングを補助させる方法」を学ぶ際、1つのMarkdownファイルを読みます。
これは退化ではなく、進化です。知識は長文の解説から、実行可能で組み合わせ可能、かつ反復可能な設定ファイルへと変化しています。
そしてKarpathyは、まさにこのトレンドを最初に具現化した人物なのです。
主な情報源: