ボリス・チャーニーと共にClaude Codeを構築する

Anthropic・Claude・ダリオアモデイ
この記事は約77分で読めます。

ボリス・チャーニーはAnthropicにおけるClaude Codeの創設者であり、エンジニアリングリードである。Metaで7年間を過ごし、Instagram、Facebook、WhatsApp、Messengerのコード品質を統括した後、Anthropicに参加した。本エピソードでは、Claude Codeがサイドプロジェクトから最速成長の開発者ツールへと進化した過程、Anthropic内部でのリリース是非をめぐる議論、そしてボリス自身が1日20〜30件のプルリクエストを手書きコードなしで送信する日常的ワークフローについて語られる。ボリスは現在の変革期を印刷機の発明に喩え、どのエンジニアリングスキルがより重要になり、どれが不要になるかを考察する。AIコーディングエージェントに最も近い人物が実際にどのようにソフトウェアを構築しているのか、そしてそれが他のエンジニアにとって何を意味するのかを理解したい人にとって必見の内容である。

Building Claude Code with Boris Cherny
Boris Cherny is the creator and Head of Claude Code at Anthropic. He previously spent five years at Meta as a Principal ...

技術との出会いとキャリアの始まり

技術やソフトウェアエンジニアリング、そしてコーディング全般にどのように入っていったのか、その経緯を教えていただけますか。

それはかなり昔に遡りますね。2つの並行した道が交差したという感じです。13歳くらいの時、eBayで古いポケモンカードを売り始めたんです。そしてeBayでHTMLが書けることに気づきました。他の人のポケモンカードの出品を見ていて、大きな色やフォントなどを使っている人がいることに気づいたんです。そしてblinkタグを発見しました。blinkタグという名前のタグです。

それをつけると、カードが49セントではなく99セントで売れるようになったんです。そうやってHTMLを学び始めました。その後HTMLの本を手に入れて、HTMLについて学んでいきました。もう1つは、中学校の頃だったと思いますが、古いTI83のグラフ電卓を持っていて、それを数学の授業で使っていました。

そこで気づいたのは、数学のテストの答えを電卓にプログラムしておけば、より良い点数が取れるということでした。それで小さなプログラムを書いて答えをプログラムしました。その後テストが難しくなって、次は答えそのものではなくソルバーをプログラムしなければならなくなりました。係数などが事前にわからなかったからです。翌年には数学がさらに高度になって、BASICからアセンブリに落とし込んでプログラムを少し速く走らせなければなりませんでした。

高校でアセンブリまで落とし込んだんですか。

中学か高校の8年生か9年生くらいだったと思います。そこで気づいたのは、クラスの全員が私がソルバーを持っていることに気づき始めて、嫉妬するようになったことです。それで小さなシリアルケーブルを買って、彼らにも渡せるようにしました。次の数学のテストでは、クラス全員がAを取ったんです。先生は「何が起きているの?」という感じでした。そして最終的に気づいて、「今回は見逃すけど、もうやめなさい」と言われました。でも私にとって、それはとても実用的だったんです。学校では経済学を専攻しました。実際にはスタートアップのために中退しましたが、コーディングがキャリアになるとは全く思っていませんでした。私にとってコーディングは常に実用的なものでした。物を作り、有用なものを作るための手段だったんです。

最初のスタートアップは、友人たちと大麻を手に入れようとしていて、大麻レビューのスタートアップを始めたんです。ウェブサイトを作り、いろいろなディスペンサリーに電話をかけて、大麻のサンプルをもらってレビューできるようにしようとしました。実際にかなり盛り上がったんです。その後、当時はこういったものをテストしている人がいなかったので、化学テスト、化学分析に興味を持つようになりました。その後いくつかのスタートアップをやって、YCにかなり早い時期に参加し、Palo AltoのYCスタートアップの最初の雇われ人になりました。

次々とスタートアップに行くことをどう決めたんですか。

雰囲気というか、直感ですね。スタートアップは決して直線的な道ではありません。いつもピボット、ピボット、ピボットです。市場が何を求めているか、ユーザーが何を求めているかを見つけ出さなければなりません。そして思っていたものとは決して同じではありません。いつもアイデアを試しますが、アイデアは常に仮説であり、ほとんどの場合1回、2回、3回とピボットしなければなりません。この医療ソフトウェア会社、Agile Diagnosisという会社では、2011年か2012年頃の初期のYC企業でした。医師向けの医療ソフトウェアで、臨床意思決定プロトコルというものがあります。これは病院ごとに大きく異なります。私たちのアイデアは、シカゴのある病院が心臓症状に特化した本当に優れたプロトコルを持っていたので、アメリカのすべての病院が同じプロトコルを使えば、結果が良くなるのではないかということでした。それで標準化しようとしました。

医師が使うための意思決定ツリーソフトウェアを作りました。私もソフトウェアの一部を書きました。チームは小規模で、数人でした。ソフトウェアを書いて、ウェブブラウザで動くようにしました。Internet Explorer 6の時代だったのを覚えています。

それが病院で使われていたものだったんですね。

SVGレンダラーを書きました。TypeScriptで書かれていて、視覚的な意思決定ツリーだったからです。ローンチして、DAUチャートを見たら、DAUが横ばいでした。原因がわからなくて、当時いくつかの病院でパイロットをしていました。Palo Altoにいて、UCSFなどでパイロットをしていました。当時バイクに乗っていたので、UCSFまでバイクで行って、数日間医師をシャドウイングして、実際にどう使っているか見ました。そこで気づいたのは、医師はコンピュータの前に座る時間がないということでした。患者を診察して、次の患者まで5分しかありません。その5分間で廊下を歩き、コンピュータステーションに行き、レガシーなコンピュータを開かなければなりません。起動するだけで3分かかります。

その後Internet Explorer 6を開くのに30秒かかります。それから私たちが作ったアプリを開いてサインインする必要があります。もう5分が終わってしまいます。使う時間さえないんです。それでAndroidで動くようにすべて書き直しました。それでもまだ使われませんでした。気づいたのは、医師は後ろに研修医を連れて歩いているということです。

この状況では社会的な状況ですよね。重要なのは権威として見られることです。スマホを見ているところを見られたくないんです。それでまたピボットしました。その時点で、医師がターゲットユーザーではないかもしれないと考えました。実際には看護師やX線技師などに使ってもらいたかったんです。

その時点で私は辞めました。これは私がやりたかったことからかなり離れていたからです。私にとって最も楽しいのは、このプロダクトマーケットフィットを見つけることです。いつも驚きがあるからです。1つの大きなアイデアを持つことはできません。アイデアはおそらく間違っているでしょう。だから仮説を立てて、それを追いかけて、何が正しいかを見るんです。

この話を聞いていてとても面白いと思うのは、多くのスタートアップの成功ストーリーの背後には、成功ストーリーが語られますよね。どのように進んだかの道筋を聞きます。でも第一に、多くのスタートアップはこんな感じです。第二に、印象的なのは、あなたはソフトウェアエンジニアとして雇われていたんですよね。これはプロダクトエンジニアという言葉ができる前の話です。でもあなたはただバイクに乗って行って、人々をシャドウイングして、どう使っているか、なぜ使っていないかを理解して、アイデアを得ていました。これが当時の、そして今日でも優れたソフトウェアエンジニアを作るものだと思います。テクノロジーに焦点を当てていたようには見えません。成果に焦点を当てていたように見えます。

そうですね。いろいろなタイプのエンジニアがいますし、いろいろなやり方があります。今のチームでも、Jared Sumarのようなエンジニアを見ると、彼は信じられないほどの技術的頭脳を持っています。誰よりもシステムを理解しています。そういう人が必要なんです。この種の深さを持った人が必要です。私にとってエンジニアリングは常に実用的なものでした。私は常にジェネラリストで、デザインをやっているか、エンジニアリングをやっているか、ユーザーリサーチをやっているかは関係ありません。

Sonarによるコード品質の重要性

AIとソフトウェアエンジニアリングへの投資テーゼは明快です。AIがより多くのコードを書けば書くほど、より多くのコードを検証する必要があります。しかし落とし穴があります。AI生成コードは平均的に、人間が書いたコードよりも検証が難しいのです。だからこそSonarがあります。SonarCubeのメーカーです。AI対応世界における重要な検証レイヤーとして、SonarはAIによるスピードとボリュームがコードベースを損なわないことを保証します。

Sonarの競争上の地位は、基盤モデルが複製できない17年間の専門知識の上に構築されています。シンボリック実行やクロスリポジトリデータフロー追跡のような深い分析エンジンについて話しています。これらはコードが実際にどう動作するかをシミュレートするものであり、単に何と書いてあるかではありません。AIの生産性とコード品質の間の溝を埋めるため、SonarはSonarCube MCPサーバーをリリースしました。

このツールは、AIアプリケーションとSonarCubeプラットフォームの間の普遍的な翻訳者として機能します。モーダルコンテキストプロトコルを使用することで、Claude Code、GitHub Copilot、CursorのようなAIツールにSonarCubeの分析機能への直接アクセスを提供します。コンテキストスイッチングの代わりに、AIエージェントが本格的なコードレビューと品質保証のコパイロットになります。コードスニペットの問題を分析したり、重大度でバグをフィルタリングしたり、コードをコミットする前にプロジェクトの品質ゲートステータスをチェックしたりできます。

コーディングアシスタントと作業していても、完全なエージェントワークフローにスケールアップしていても、Sonarは Fortune 100の75%が依存している自動検証を提供します。これは、コードベースを壊す心配なしに開発者がイノベーションする自由を与えることです。sonarsource.com/pragmaticにアクセスして、SonarがどのようにAIのスピードで開発する自信を可能にするかについて詳しく学んでください。

それでは、ボリスのキャリアと彼がスタートアップで学んだことに戻りましょう。

Facebookでの経験とキャリア成長

私が初めて持った仕事は、16歳の時で、エレキギターが欲しかったんです。それでフリーランスを始めました。ウェブサイトを作ろうと思ったんです。当時Fiverrはまだなかったと思います。他のフリーランスウェブサイトがありました。ウェブサイトを立ち上げて、入札を始めました。最初の給料をすべてエレキギターに使いました。でもそれはとても実用的でしたよね。この種のセットアップでは、エンジニアリングをやらなければならないし、経理もやらなければならないし、デザインもやらなければならないし、顧客と話さなければならない。私にとってはいつもそうでした。

いくつかのスタートアップの後、現在Metaと呼ばれているFacebookに行き着きました。そこでの7年間について話していただけますか。学んだこと、そして7年間で4回昇進したという顕著なキャリア成長について、その経験から何を得ましたか。

Facebook Groupsで始めました。Vlad Klesnikovが雇ってくれました。彼はまだFacebookにいると思います。今は別のチームにいると思います。面白かったのは、私が一緒に働いた人たちの大きなグループが初期のJavaScriptの人たちだったことです。私もJavaScriptをたくさんやりました。面白いことに、こういう人たちと何度も道が交差しました。Vladは、後にReactJSになったAds Managerを動かしていたフレームワーク、Bolt.jsで働いていました。こういう人たちと何度も道が交差して、後にはさらに多くの人がいました。

Facebook Groupsで働いていて、人々をコミュニティにつなぐというミッションに本当に興奮していました。これが私を引きつけたものです。当時、私は大きなRedditユーザーでした。10代の頃にRedditユーザーになったのは、コーディングをする人を他に知らなかったからです。大学でさえ、コーディングをする人を本当に知りませんでした。正直言って、いつも恥ずかしく思っていました。オタクっぽいことだと思っていたからです。自分ができることだと思っていましたが、クールな子になりたかったし、コーディングをすることを人に言えませんでした。とてもオタクっぽかったんです。ある時点でRedditのプログラミングコミュニティを発見して、衝撃を受けました。こんなニッチな趣味に興味を持っている人が他にもいるなんて。同じ考えを持つ人たちとのつながりを見つけることがとても刺激的で、これに何らかの形で貢献したかったんです。

Facebook Groupsでしばらく働きました。いろいろなプロジェクトがあります。詳細に入る必要はありません。最終的にFacebook Groupsのテックリードになりました。その役割に成長していきました。組織が成長するにつれて、仕事は本当に変わりました。構築することから、多くのドキュメント作成や調整、他の人への委任になりました。文化も変わっていました。初期のFacebookの文化が消えつつありました。ドキュメントが入ってきました。アライメントミーティングが入ってきました。プライバシー、セキュリティなどの基礎的なことに関する多くの作業がありました。正直なところ、初期には成長のために多くの手抜きがあったと思います。でもある時点でその負債を払わなければならず、それがその時だったんです。

その後Instagramで数年過ごしました。それも面白い話です。妻が仕事のオファーをもらって、本当に興奮してやって来て、「ねえ、このオファーをもらったんだけど、引っ越さなきゃいけないの。いい?」と言いました。私は「ああ、いいよ」と。テック業界で働いているし、どこでもリモートで働けるから。どこの仕事かって聞いたら、「名です」って。私は「それってどこ?」って。名は田舎の日本です。

タイムゾーンも違いますね。

タイムゾーンも違います。12時間くらい違うか何かです。2021年でした。それでスポンサーしてくれるチームを見つけようとしました。いなければならないタイムゾーンやチームを一緒に配置しなければならないなど、奇妙なHRルールがあったからです。Instagramの東京に小さな新生チームがありました。Will Baileyがそのチームを率いていました。彼はInstagram Storiesを作った人でもあります。しばらく私のマネージャーでした。それで一緒にそのチームを成長させることにしました。私は名からリモートで働き、チームのほとんどは東京にいました。この間、Instagramをハックし始めました。スタックは本当に驚異的でした。Facebookは世界で最高のウェブサービングスタックでした。

Hack言語からHHVMランタイム、トランスポートレイヤーとしてのGraphQL、Relayのようなクライアントライブラリまで、すべてが最適化されていて、Reactもありました。ただ素晴らしかったです。世界に他にこんなに良いdevスタックはありませんでした。完全に最適化されていました。それからInstagramに行ったら、型チェッカーが動かないPython、クリックして定義に行くが動かない、DjangoをハックしたものとCythonランタイムが混在していて、何も本当に動きませんでした。Instagramに来て、日本のLabsチームに参加しました。アイデアはInstagramの次の大きなものを見つけることでした。いくつか試しましたが、すぐに気づいたのは、このスタックで作業するのが効果的ではなかったということです。本当にひどいスタックだったからです。それでDev Infraで働き始めました。修正する必要があったからです。いくつかのプロジェクトに取り組みました。

1つはPythonから大きなFacebookのモノリスへの移行でした。もう1つはRestからGraphQLへの移行でした。これらのプロジェクトは実際には進行中です。何百人ものエンジニアが何年もかけてこれを行います。大きなコードベースです。大きな移行です。今はもっと速いです。

今はこれらのツール、AIツールがあるからですね。移行はそれらにとってかなり良いユースケースです。

そうですね。完璧なユースケースです。それでさらに深く入っていきました。Instagramを辞める頃には、Dev Infraで働いていて、これらの移行の多くをリードしていました。そこでFiona Funとも交差しました。彼女は今Claude Codeチームのマネージャーです。彼女と一緒に働きました。彼女は本当に素晴らしいリーダーで、信じられないほどの深さとテクノロジーの歴史を持っています。このチームにとってこれ以上のマネージャーはいないと思いました。

それからコード品質にも取り組み始めました。Instagramでの仕事は少し拡大しました。辞める頃には、Meta全体のコード品質をリードしていました。Instagram、Facebook、Messenger、WhatsApp、Reality Labsなど、すべてのコードベースのコード品質に責任を持っていました。

Metaには、Better Engineringというプログラムがありました。アイデアは、2016年か2018年頃だったと思いますが、Zuckが会社のすべてのエンジニアに対して、時間の20%を技術的負債の修正に費やさなければならないと命じたんです。

興味深いですね。

それをBetter Engineeringと呼びました。

その一部はボトムアップで、チームが修正しなければならない技術的負債を最もよく知っています。そして一部はトップダウンで、非常に大きな移行を行う必要があります。新しい言語機能、新しいフレームワークなどに移行する必要があります。Facebookのスケールでは、毎年何万ものこれらの移行がありました。

それでこれらすべてをリードし始めて、すぐに気づいたのは、もう少し秩序が必要だということでした。目標がありませんでした。誰も成果が何かを知りませんでした。追跡がありませんでした。それでいろいろなものを開発しました。アイデアの1つは、異なるコード品質の取り組みを優先する中央集権的な方法でした。2つ目は、コード品質がエンジニアリング生産性に与える影響を把握することで、それは重大であることが判明しました。

どう測定したんですか。何を発見しましたか。

いろいろありました。一部は公開されていると思います。すべてが公開されているかはわかりませんが、基本的には因果分析と因果推論を行おうとします。これが方法論です。エンジニアがより生産的になる要因は何かを把握しようとします。一部はコード品質、一部はコード品質以外です。例えば、Metaは在宅勤務ではなく、オフィスに戻ることにしました。それは部分的にこれによって推進されました。因果関係があると思われるかなり強い相関関係を見つけたからです。

品質は実際に生産性に二桁のパーセントで寄与します。最大規模でもそうです。これを聞くのは心強いです。これを実際に測定する場所があるのは稀だと思いますが、クリーンで モジュラーなコードベースがあると作業が楽になるというのは感じることだと思います。LMにとっても作業しやすくなるはずだと推論できます。データはほとんどありませんが、そうあるべきだという感覚があります。

そうですね。多くの大企業がこれについて公開しています。Facebookも何か公開したと思います。Microsoftも多く公開していますし、Googleもそうです。でも完全にそうです。機能を構築するたびに、フレームワークXかYかZか、どれを使うべきか考えなければならないとします。コードベースが部分的に移行された状態で、これらすべてがコードのどこかにあるため、これらはすべて検討できるオプションです。エンジニアとして、悪い時間を過ごすことになります。新入社員として、悪い時間を過ごすことになります。モデルとして、間違ったものを選んでしまい、ユーザーが修正しなければならなくなるかもしれません。

実際により良いのは、常にクリーンなコードベースを持つことです。移行を始めたら、常に移行を完了することです。これはエンジニアにとって素晴らしいことで、今日ではモデルにとっても素晴らしいことです。

AnthropicでのClaude Code開発

それからAnthropicに参加しました。Adam Wolfがあなたの最初のプルリクエストを却下したという話を聞きましたが、確認したり、もっと詳しく教えていただけますか。

彼は私のランプアップバディでした。Anthropicに参加する時、次に何をすべきか考えようとしていました。すべての異なるラボで多くの人に会いましたが、Anthropicはミッションのために明白な選択でした。これが個人的に最も必要なものだとわかっていました。また、起きているこのすべての変化を見て、これについて考えるフレームワークを持つこと、その中での私たちの役割を考えることが重要です。私はSF小説の大ファンでもあります。それが私のジャンルです。大きな読書家で、家に巨大な本棚があります。これがどれだけ悪くなる可能性があるかを知っています。ここは真剣に考えている場所、真剣に考えて、これをより良くするために何ができるかを考えている人々がいる場所だと感じました。

Anthropicに参加した時、いろいろなランプアッププロジェクトをやりました。ハッキングしていたいろいろなものです。最初のプルリクエストを手で書きました。それがコードの書き方だと思っていたからです。

かつてはそれがコードの書き方でした。

かつてはそうでした。でも当時Anthropicには、Clydeというものがありました。Claude Codeの前身でした。超不安定でした。Pythonで、起動に40秒くらいかかりました。リサーチコードでした。エージェント的ではありませんでした。でも非常に慎重にプロンプトして、ツールを正しく持てば、あなたのためにコードを書いてくれます。それでAdamが私のPRを却下して、「実際には、代わりにこのClydeというものを使うべきだ」と言いました。私は「わかった、いいよ」と。このツールの使い方を理解するのに半日かかりました。いろいろなフラグを渡して正しく使う必要があったからです。

でもそれで動くPRを吐き出しました。ワンショットでした。

これは2024年、9月か8月くらいでした。私にとって、これがAnthropicでの最初の「すごい」瞬間でした。モデルがこれができるなんて知りませんでした。IDEでのタブ補完、行レベルの補完のようなものに慣れていました。私のために動くプルリクエストを作れるなんて全く知りませんでした。

ボリスは、職場でAIモデルを使って本当の「すごい」瞬間を持ったという話をしました。非常に異なる「すごい」瞬間は、職場でツールを使って、以前よりもはるかに簡単になる時です。

これは私たちのプレゼンティングスポンサーであるStatsigにうまくつながります。Statsigは、エンジニアリングチームに実験と機能フラグのためのツールを提供します。これは以前は何年もの内部作業が必要だったものです。MetaやUberのような大企業だけが独自の高度なカスタムツールを持っていたような、とても複雑に構築するツールの種類です。

実際のStatisigはこんな感じです。機能ゲートの後ろで変更を出荷し、最初は1%または10%のユーザーに徐々にロールアウトします。何が起こるかを見ます。クラッシュしただけでなく、気にかけている指標に何をしたか。コンバージョン、リテンション、エラー率、レイテンシ。何かおかしいと思ったら、すぐにオフにできます。正しい方向に向かっていれば、ロールアウトを続けます。鍵は、測定がワークフローの一部であることです。3つのツールを切り替えて、事後にセグメントとダッシュボードを一致させようとしているわけではありません。機能フラグ、実験、分析はすべて同じ基盤となるユーザー割り当てとデータを使用して、1か所にあります。

これがNotion、Brex、Atlassianのような企業のチームがStatsigを使用する理由です。Statsigには始めるための寛大な無料ティアがあり、チーム向けのプロ価格は月額150ドルから始まります。詳細を学び、30日間のエンタープライズトライアルを取得するには、stats.com/pragmaticにアクセスしてください。

それでは、ボリスとClaude Codeの起源ストーリーに戻りましょう。

Anthropicに参加した時のことを取り上げましたが、Claude Codeがサイドプロジェクトやクールなハックのように見えたものからどう生まれたかを簡単に振り返っていただけますか。

いろいろなものをハックし始めました。プロダクトでいくつかのことに取り組みました。しばらく強化学習に取り組みました。構築しているレイヤーの下のレイヤーを理解するためです。これは今でも多くのエンジニアに与えているアドバイスです。常に下のレイヤーを理解してください。それは本当に重要です。それは深さを与え、実際に作業しているレイヤーで少しより多くのレバーを持つことができるからです。

これは10年前のアドバイスです。今日でも同じアドバイスです。ただし、下のレイヤーは今は少し違います。以前は、JavaScriptを書いているならJavaを理解する、JavaScriptのVMとフレームワークなどを理解するということでした。今はモデルを理解するということです。いろいろなものをハックしていました。

いくつか出荷したものもあれば、出荷しなかったものもあります。ある時点で、公開のAnthropicAPIを理解したくなりました。以前に使ったことがなかったからです。UIを構築したくありませんでした。かなり早くハックしたかっただけです。当時Claude Codeがなかったからです。まだ手でコードを書いていました。

Anthropic APIを叩く小さなバッチツールを書きました。基本的にはターミナルのチャットベースのアプリケーションでした。それがAIがかつてそうだったものだからです。エンジニアが最初の採用者だと今でも考えています。会話型AIからエージェント型AIに移行し始めた時、少し時間がかかりましたが、エンジニアはかなり早く理解しました。

今、非エンジニアにAIとは何かと尋ねると、会話型AI、チャットボットのようなものだと言うでしょう。だから私は、エンジニアが非常に早期に見たのと同じものをすべての人に持ってくる新製品のCo-workにとても興奮しています。

Claude Codeについて考える時、元々はClaude Codeではありませんでした。チャットボットでした。それがAIだと思っていたからです。でも次のものが何かを見つけ出す必要がありました。当時このチャットボットを構築しました。それなりに便利でしたが、ただのチャットボットでした。次に試したのは、ツールを使わせたかったということです。ツール使用が出てきたばかりで、それが何かわからず、実験してみようと思いました。バッシュツールという1つのツールを与えました。バッシュツールで何をすればいいかわかりませんでした。それで、これができるかどうかさえわからなかったんですが、聞いてみました。私が聴いている音楽は何かと。そうしたら、sedか何かを使って小さなAppleScriptプログラムを書いて、音楽プレーヤーを開いて、何を聴いているかクエリしました。そしてSonnet 3.5でワンショットでやりました。これは実際に最初の直後の2番目の「すごい」AI瞬間でした。

モデルはただツールを使いたがっているんだと気づきました。それがわかったんです。ツールを与えれば、それを使って物事を成し遂げる方法を見つけ出します。当時、人々がAIとコーディングにアプローチする方法を考えると、みんな基本的にモデルを箱に入れて、インターフェースは何か、このモデルとどう相互作用したいか、何をさせたいかを考えるという精神モデルを持っていました。

基本的には、プログラムがあれば、モジュールをスタブアウトし、関数をスタブアウトして、「これは今AIです」と言います。でもプログラムの残りはただのプログラムです。これはモデルについて考える方法ではありません。考える方法は、モデルはそれ自身のものです。ツールを与えます。実行できるプログラムを与えます。プログラムを実行させます。プログラムを書かせます。でもこのようにより大きなシステムのコンポーネントにはしません。

これはbitter lessonのバージョンだと思います。Bitter lessonは非常に特定のフレーミングですが、多くの系があります。これは系の1つです。モデルにそのことをさせればいいんです。箱に入れようとしないでください。特定の方法で振る舞うように強制しようとしないでください。

あなたがそれを見た最初の方法の1つは、ツールを与えること、バッシュへのアクセスを与えること、その後ファイルシステムへのアクセスを与えること、そしてさらに多くのツールを与えることでしたね。

そうです。バッシュを与えて、それから2番目がファイル編集でした。

興味深いことの1つは、前回のディープダイブで話したことですが、これを構築して、持っていたツールでコードを実際に書き始めた時、Anthropic内部で議論がありましたね。自分たちだけのために保っておくべきかという。突然エンジニアリング全体に広がって、みんなをずっと生産的にしていたからですよね。

そうです。最終的に、野生でのセーフティを研究できるように、リリースする決定をしました。セーフティについて考える時、セーフティという言葉を使い続けていますが、Anthropicがラボとして存在する理由はセーフティです。これが設立された理由です。これが存在する理由です。Anthropicの誰に聞いても、なぜそれを選んだのか、それはセーフティのためです。モデルセーフティについて考えると、考えるべき異なるレイヤーがあります。アラインメントとメカニスティック解釈可能性があります。これはモデルレイヤーです。それからevalsがあり、これはモデルをペトリ皿に入れて合成的に研究するようなものです。それから野生で研究できます。実際にどう振る舞うか見られます。ユーザーがそれについてどう話すか見られます。野生でのリスクが何かを見られます。そしてこの方法で実際に多くを学びます。

これを行うことで、モデルをはるかに安全にすることができました。振り返ってみれば、完全に正しい決定でした。あなたの視点から聞くのは面白いです。外から見ると、私や多くのエンジニアが見たのは、AnthropicがClaude Codeをリリースした、すごい、これはコードをかなりよく書けるという最初のリリースでした。Sonnet 4のリリースと一緒に出たのか、Sonnet 4.5だったか。

4だったと思います。それが2月のgeneral availabilityでしたが、それ以前にresearch previewだったと思います。

出た時、私の印象は、このものはコードをかなりよく書けるということで、時間とともにはるかに有能になりました。私たちの視点からは、使い始めて、あらゆる種類のますます生産的な部分に使う本当に有能なコーディングツールでした。最も急成長している開発者ツールの1つになったと思います。実際にはリサーチから来ていて、人々がモデルをどう使うかを理解するのが目標だったという話を聞くといつも驚きます。一方で、スタートアップが意図的に開発者ツールを構築して採用を得ようとしているのに、このリサーチツールははるかに多くの採用を得ているからです。

Anthropicはリサーチラボであり、セーフティラボです。プロダクトは側面に付け加えられたようなものです。プロダクトが存在するのは、リサーチをより良くサポートし、モデルをより安全にできるようにするためです。これが私たちがすべてについて考える方法です。初期の面白い瞬間もありました。ローンチレビューがあって、ローンチすべきかどうか決めていました。その瞬間を覚えています。部屋にいました。Mike Cregerがいて、Darioがいて、他の人たちもいました。何をすべきか決めていました。内部採用チャートを見ていました。垂直でした。クレイジーでした。

垂直は100%ですよね。

100%です。今日では、Anthropicのすべての技術的従業員が毎日Claude Codeを使っています。ほぼ100%です。非技術的従業員もかなり100%に近づいています。

実際にかなり早く増えています。営業チームの半分がClaude Codeを使っています。それが増えていると思います。クレイジーです。Darioは、どうしてこんなに早く成長したのか、人々に使うよう強制しているのかという質問をしました。私は、いいえ、このツールを提供して、人々が足で投票するだけですと言いました。人々に好みのツールを使わせればいいんです。

人々がそれを選んだんですね。

あなたは人々にツールを使うよう強制するような人には見えませんね。

そうです。やった方法は、ローンチして、ユーザーの声を聞いて、人々と話して、どう使っているか見て、フォローアップして、より良くしました。今では、Claude CodeはAnthropicで平均して約80%のコードを書いていると思います。確実に私のすべてのコードを書いています。

これはあなたから始まりましたね。11月にすべてのコードを書き始めたと思います。いつその切り替えが来て、それを信頼してコードを書かせるようになったのか、そのコードをどれくらいレビューしたのか、何が起こったんですか。

切り替えはOpus 4.5を使い始めた時に即座でした。リリース前に、少しドッグフーディングしていました。すぐでした。はるかに有能なモデルです。もうIDEを開く必要がないことに気づきました。その時点でIDEをアンインストールしました。必要なかったからです。

実際には1か月後にやりました。もう使っていないことに気づかなかったからです。

Opus 4.5が公開された後、多くの人が似たような経験をしました。特に冬休みの間。私も似たような経験をしました。正直に言うと、このものは、私が非常に慣れているスタックと私のコードベース、私のサイドプロジェクト、私が知っているところでは、私が書いただろうのと同じくらい良いコードを書きます。そして、私があまり慣れていないコードベースやテクノロジーでは、私ができるよりもはるかに良いです。

正直に言うと、私よりも良いコードを書きます。

そこまで行きたくないです。まだプライドを保ちたいですが、おそらく本当です。

気づいたのは、12月に少し旅行していたからです。コーディング休暇みたいなものでした。これについて前に話しましたが、ヨーロッパに行きました。異なるタイムゾーンで遊牧していました。とても楽しかったです。毎日一日中コーディングしていました。これが私の一番好きなことです。毎日10〜20件のプルリクエストを書いたと思います。Opus 4.5とClaude Codeが100%書きました。手動で1行も編集しませんでした。その月の終わりに気づいたのは、Opusが2つのバグを導入したのに対し、もし私が手で書いていたら20個くらいのバグがあっただろうということです。

開発ワークフローとベストプラクティス

開発ワークフローについて話していただけますか。これについてスレッドを書いていますね。ソーシャルメディア、ThreadsとXに。でもClaude Codeを今日どう使っているか、並列性の観点から、そしてあなたとチームが学んだティップスとトリックについて教えていただけますか。

いろいろありますが、1つの正しいClaude Codeの使い方があるわけではないと思います。いくつかのティップスを共有できますが、間違った結論は、これらをただコピーして使うことだと思います。

Claude Codeを構築する方法は、ハッカブルに構築することです。すべてのエンジニアのワークフローが異なることを知っているからです。1つのやり方はありません。同じワークフローを持つエンジニアは2人といません。

ワークステーションのセットアップと同じですよね。キーボード、モニターの配置、すべて。みんな違います。

私たちは職人のようなものですよね。ツールを選びます。深くこだわります。だから1つの正しいやり方はありません。私の場合、一般的には5つのターミナルタブを持っています。それぞれがリポジトリのチェックアウトを持っています。5つの並列チェックアウトです。通常、ラウンドロビンで各1つでClaude Codeを起動します。ほぼ毎回、プレーンモードで開始します。ターミナルでShift Tabを2回です。タブを使い切るとオーバーフローします。ターミナルタブは限られているからです。以前はこれにWebをよく使っていました。claude.ai/codeです。今日では実際にはデスクトップアプリを使っています。

より便利です。Claude Code、何ヶ月もデスクトップアプリにありました。Claudeアプリのコードタブです。本当に気に入っています。組み込みのワークツリーサポートがあるからです。

しばらく前から存在しています。並列性に便利です。複数のチェックアウトは必要ありません。1つだけで、Gitワークツリーを自動的にセットアップします。環境の分離が得られます。そうする理由は、実際にはコマンドラインでgitワークツリーをいじるのが本当に嫌いだからです。少し面倒です。

gitワークツリーに慣れていない人のために。別のローカルフォルダを持つ代わりに、別のブランチをチェックアウトするようなものですよね。それで別々に作業できますが、マージ時だけ複雑さがあります。

そうです。フォルダがあると想像してください。でもgitがそのフォルダを5つコピーしますが、とても安価で捨てやすい方法で。この種の分離が得られます。並列に作業でき、Claudeが干渉しません。

最近ネイティブサポートを追加したと思いますが、あなたのワークフローでは、別のフォルダにチェックアウトする古い方法にこだわっているんですね。

そうです。実際には、時間とともにこれにデスクトップアプリをますます使うようになっています。

別のチェックアウトが必要なく、並列にたくさんのClaudeが動いていて、考える必要がないからです。もう1つの驚きのヒットはiOSアプリです。毎日、起きて電話でいくつかのエージェントを起動します。

ネイティブのアプリですね。

ネイティブのアプリです。Claudeアプリのコードタブです。まったく同じClaude Codeです。

クラウドで動きますよね。

クラウドで動きます。環境を設定する必要があります。幸運なことに、私たちの環境はかなりシンプルです。フックを使います。セッション開始フックを使って設定します。これはClaude Codeを本当にハッカブルにすることの利点の1つです。この種の設定が非常に簡単です。これは正直なところ、6ヶ月前に言われても決して予測しなかったことです。コンピュータでコーディングします。6ヶ月前に電話でコードの3分の1を書いているなんて言われたら、それはクレイジーです。でもそれが今日やっていることです。

並列エージェントを使い始めたのはいつですか。そしてそれはあなたの仕事をどう変えましたか。私自身に気づいたことの1つは、実際にはそんなに多くの並列エージェントを使っていないということです。多分同時に2つくらいです。でも私は担当でいたい人です。特にClaudeは。Claudeはついていけるツールです。何をしているか教えてくれます。例えば、はるか以前に出荷されたlearn modeもあります。ついていけます。タスクをくれます。1つのタブにとどまって、モデルについていく感じです。モデルはかなり速いです。ついていけます。あなたもある時点でこれをやったと思いますが、いつ並列に変わったんですか。コントロールを失っている感じはしますか。それともあまり関係ないですか。

2つのモードまたは2つのワークフローについて考える方法があると思います。コードベースが初めての時、learn modeは本当に素晴らしいです。Claude Codeチームにオンボードする人、Anthropicにオンボードする人に強く推奨しています。推奨しているのは、Claude CodeでSlashconfigをして、出力スタイルを選んで、learnまたはexplanatoryを選ぶことです。

以前に使ったことがないコードベースには、一般的にexplanatoryを推奨しています。私の場合、コードベースに慣れたら、生産的になりたいだけです。できるだけ多く出荷したいし、それをやる上で効果的でありたいです。役割が本当に変わります。

もうタスクを深く掘り下げません。プレーンモードでClaudeを起動します。何かを開始させます。Opus 4.5で、そこに到達したと思います。4.6では本当に本当にそうです。良いプランがあれば、ほぼ毎回実装をワンショットします。

最も重要なのは、プランを正しくするために少し行ったり来たりすることです。やることは、1つ起動して、プレーンモードに入って、プロンプトを与えます。それが動いている間に、2番目のタブに行って、2番目のClaudeも起動します。プレーンモードで。動かします。それから3番目のタブ、4番目のタブに行きます。それから完了の通知を受けたら、最初のタブに戻るかもしれません。

通知はオンにしていますか、オフにしていますか。

実際には両方のモードで動作します。時々、Macのフォーカスモードのようなものをやります。オフにしているだけです。でも時々システム通知を使います。

PRでとても生産的ですね。休暇期間中もソーシャルメディアで非常に目立っていました。誰かがバグや機能リクエストを報告したと思います。どちらかわかりませんが、1〜2時間後に完了していました。あなたがやったからです。1日のプルリクエストの数についても話していましたが、自慢するためではなく文脈として。プルリクエストは通常どの程度の複雑さを含みますか。超些細なものもあれば、実際にはより大きな作業もありますか。

プルリクエストはそれぞれ大きく異なります。時には数行、時には数百行や数千行です。すべて非常に異なります。すごく変わりました。Instagramにいた頃、書いたコードの量で、Instagramで最も生産的なエンジニアのトップ2かトップ3の1人だったと思います。

私はいつもたくさんコーディングしてきました。コーディングは自己表現の方法です。脳の思考方法でもあります。今はただそれができます。でもClaude Codeでは、非常に生産的な場合に書くコードの種類は、PRの数自体が起きていることを過小評価していると思います。昔、AIアシスタンス前に非常に生産的だった人は、多くのコードがコード移行のようなものだったかもしれません。毎日20〜30のPRを出荷した人は、多くがワンライナーやAからBへの移行のようなものでした。

今日、私は毎日20〜30のPRを出荷しますが、すべてのPRが完全に異なります。数千行のものもあれば、数百行、数十行、ワンライナーもあります。コード移行はClaudeがやってくれるので、その一部である必要がありません。

コードレビューの変化とAI時代の品質管理

これだけのコードやこれだけ生産的に出荷する。どんなソフトウェアプロフェッショナルにも出てくる明白な質問は、レビューです。チームがかつて働いていた方法、Instagramがこれをやったかわかりませんが、多くの他の企業がこれをやっていたのは、プルリクエストを作って提出して、必須の人間レビュアーがいます。Googleでは実際には2人です。1人はコード品質にもいるからです。このワークフローはどう変わりましたか。Claude Codeチームはコードレビューについてどう考えていますか。時間とともにどう変わりましたか。

私のためにコードレビューがどう機能していたかから始めます。やっていた方法は、最も多産なコードレビュアーの1人でもありました。

両方ですね。

そうです。それはタイムゾーンが違うことの利点の1つです。超人間ではありません。ミーティングがなかっただけです。コードレビューへのアプローチは、何かについてコメントしなければならない時はいつでも、スプレッドシートに落としていました。問題を説明しました。

例えば、誰かが関数のパラメータに悪い名前をつけたら、それをスプレッドシートに入れます。誰かが悪いReactパターンか何かをやったら、それをスプレッドシートに入れます。時間とともにスプレッドシートを集計して、特定の行が3〜4つ以上のインスタンスを持つ時はいつでも、それに対してlintルールを書きました。

それでopで自動化するんですね。

それが私のやり方でした。いつも自分を自動化しようとしてきました。やることがたくさんあるからです。これは私たちエンジニアのスーパーパワーの1つです。

退屈な作業をすべて自動化できました。これができる他の分野はほとんどありません。これは私たちが唯一できることです。これは私がいつも楽しんできたことです。より多くの自由時間を与えてくれますし、実際に楽しむ仕事ができるからです。今日ではそれは少し違いますが、これに少し似ています。

Claude Codeがコードを書く時、一般的にローカルでテストを実行します。これはClaudeが関連性がある時によく決定することです。または新しいテストを書きます。この種の検証をします。Claude Codeに変更を加える時、Claude自身もテストします。サブプロセスのように自分自身を起動します。

これは内部のClaude Code実装用ですね。だから自分自身をテストできるテストスイートのようなものがあるんですね。

そうです。でも文字通り自分自身をbashプロセスで起動して、まだ動くか見るんです。

すごい。

それをやります。それから私たちもclaudepを実行します。これはClaudeエージェントSDKです。CIで。AnthropicのすべてのプルリクエストはClaude Codeによってコードレビューされます。それで実際に約80%のバグを捕まえます。

最初のラウンドのコードレビューです。Claudeはこれらのいくつかを自動的に対処します。いくつかは人間に残します。何をすべきか確信が持てないからです。常に第二パスのコードレビューをするエンジニアがいます。変更を承認する人が常にループにいなければなりません。

チームでは、本番環境に入る前に、エンジニアが見ます。

あらゆるタイプのプロジェクトでこれをやりますか、それとも特にこれが実世界に影響を与え、人々が依存しているとわかっているからですか。多くのユーザーがいます。逆に言えば、エンジニアにコードをレビューさせない状況が見えますか。どんな状況ですか。

どう使われるかによると思います。でもあなたの言う通りだと思います。個人的なサイドプロジェクトを作っているなら、mainに直接yoloできます。

AIの前でも、レビューしなかっただけですよね。自分を信頼するか、本番に出荷するか、本番にSSHして変更を加えるような感じですよね。

まさに。最初の内部版のClaude Codeでは、mainに直接コミットしていました。でもユーザーがいるとすぐに、Anthropicの主要顧客ベースは企業です。私たちが最も気にかけているのはこれです。私たちにとって、セーフティ上の理由から、セキュリティは本当に重要です。プライバシーは重要です。これらはすべて関連しています。顧客にとっても非常に重要です。これは企業製品なので、セキュアでなければなりません。

ある基準を満たすことを確認しなければなりません。だから多くの自動化を使いますが、少なくとも今のところ、確認するためにループに人間がいなければなりません。

LMについて知られていることの1つは、非決定的だということです。レビュアーとして要素を入れることで、Claudeがレビューをすると、良いフィードバックを与えますが、常にフィードバックを与えると確信できないという事実にどう対処しますか。問題を捕まえることができても、必ずしも捕まえるとは限らないと確信できません。このループで決定的なことをやっていますか。例えば、lintingは非常に決定的です。ご存知のように。これらのアイデアを組み合わせることを考えましたか。例えば、コードベースでlinterを使っていますか、それとも必要性を感じませんでしたか。

絶対に。

これはただYesですね。

linter、型チェッカーがあります。ビルドを実行します。Claudeはlintルールを書くのが本当に得意です。実際に今やっていることは、スプレッドシートに集計していました。今は、同僚がプルリクエストを出して、これはlint可能だと思ったら、そのPRでClaudeにこれに対するlintルールを書いてくださいとタグします。SlashI think setup GitHubか何かです。Claude Codeでこれができます。GitHubアプリをインストールして、どんなプルリクエストでも、どんなissueでもat Claudeをタグできます。

毎日使っています。とても便利です。決定的なステップが欲しいです。Claudeをもう少し決定的にする方法もあります。例えば、best of Nができます。複数パスをやらせることができます。

実際にはかなり簡単です。例えば、内部で使っているコードレビュースキル、オープンソースです。

Claude Codeリポジトリで利用できます。やることは、並列エージェントを起動して何かをさせて、それから偽陽性をチェックするために並列デバッグエージェントを起動します。基本的にbest of Nの実装方法は、Claudeに3つのエージェントを起動してこれをやってくださいと言うだけです。それだけです。

エンタープライズインフラとWork OS

企業インフラレイヤー、O、権限、セキュリティの構築について話しました。実際の顧客に出荷する前にすべて動作しなければなりません。これはWork OSについて話す良い時です。SaaSを構築している場合、特にAI製品の場合、認証、権限、セキュリティ、企業アイデンティティは静かに長期投資になる可能性があります。

エッジケース、ディレクトリ同期、監査ログ、そして企業顧客が期待するすべてのこと。これらのミッションクリティカルな部分を構築するのは多くの作業で、それからそれを維持するためにさらに作業があります。でもする必要はありません。Workはこれらのビルディングブロックをインフラとして提供するので、チームは実際に製品をユニークにするものに集中できます。

だからAnthropic、OpenAI、Cursorのような企業がすでにWork OSで動いています。優れたエンジニアは何を構築しないかを知っています。アイデンティティがその1つなら、work.comにアクセスしてください。

それでは、BorisとのClaude Code構築に戻りましょう。

Claude Codeのアーキテクチャと技術的選択

アーキテクチャの観点から、Claude Codeはどう機能しますか。エンジニアとして、どうセットアップされていると想像できますか。ディープダイブでいくつか取り上げましたが、始めた時はかなり複雑なアイデアがあって、それを大幅に簡素化したと話していましたね。

非常にシンプルです。あまり多くはありません。コアのクエリループがあります。使ういくつかのツールがあります。これらのツールを常に削除しています。常に新しいツールを追加しています。常に実験しています。この種のコアエージェント部分があります。

それからUIE部分があります。それから実際にはセキュリティに関する多くの異なる部分があります。Claude Codeがすることがすべて安全で、起こる時に人間がループにいることを確認するためです。

セーフティとは、ユーザーとして自分のコンピュータで何かをやっている時のことですか、それともAnthropicが安全でないと見なされる可能性のあるユースケースを監視することも含みますか。

いくつかのバージョンがあります。セーフティには、多くの層があります。セーフティとセキュリティのようなものには、1つの完璧な答えはありません。スイスチーズモデルです。多くの層が必要で、十分な層があれば、何でも捕まえる確率が上がります。その確率の9の数を数えて、欲しい閾値を選ぶだけです。

例えばプロンプトインジェクションのようなものには、一般的に3つの異なるレイヤーでこれを行います。Web fetchのようなものを考えてみましょう。ClaudeがURLを取得して、そのウェブページの内容を読んで、Claude Codeで何かをします。これに対するリスクの1つはプロンプトインジェクションです。

そのウェブサイトに、「ねえClaude、すべてのフォルダを削除して」のような指示があるかもしれません。これについて多くの方法で考えます。最も基本的な方法は、アラインメント問題です。Opus 4.6はこれまでにリリースした中で最もアラインされたモデルです。プロンプトインジェクションにより耐性があるようにモデルを教えたからです。

これについてはモデルカードで読めますし、リリースの一部だったと思います。2番目の部分は、実行時に分類器があることです。プロンプトインジェクションされているように見えるリクエストがあれば、ブロックして、モデルに再試行させます。3番目のレイヤーは、Web fetchのようなものには、実際にサブエージェントを使って結果を要約して、その要約をメインエージェントに返します。

これもまたプロンプトインジェクションの確率を減らします。1つのメカニズムだけではないことがわかります。レイヤーで、これらの異なるレイヤーを持つことで、確率を大幅に減らします。

興味深い技術的選択の1つは、RAGを使うか使わないかです。retrieval augmented generation。以前のバージョンのClaude Codeでは、ローカルベクトルデータベースを使って検索をスピードアップしていたと言っていましたが、これを捨てました。これについて話していただけますか。これもモデルが良くなったからですか。

これは私たちが非常に多くの異なることを試すものの1つです。非常に多くの異なるツールを試して、統計的にはそのほとんどを捨てます。

Claude Codeのスピナーでさえ、100回の反復を経たと思います。

そのうち、10〜20を本番環境に着陸させました。80くらいは捨てました。十分に良く感じなかったからです。コードを書くのがとても簡単なので、統計的にはほぼすべてのコードを捨てます。試して、何が良く感じるか見ます。

RAGのようなものには、初期に多くの異なるアプローチを試しました。最初のはRAGでした。人々が取得をどうやっているか読んでいたと思います。すべての論文がRAGについて話しているように見えました。やった方法は、ローカルベクトルデータベースのようなものでした。

TypeScriptで書かれていて、ユーザーマシンに存在していました。クラウドのembeddingモデルを使って、保存する前にembeddingを計算していました。それはかなり良く機能しましたが、RAGには多くの問題があります。例えば、コードが同期しなくなることがわかりました。

ローカル関数を作ったら、まだインデックスされていないので、RAGは見つけられません。インデックスがどう権限設定されているかという質問もあります。誰がアクセスできるか。私はアクセスできます。でもそれを権限ポリシーにどうエンコードするか。他の誰もアクセスできないことをどう確認するか。会社内に悪意のあるIT担当者がいて、他の誰かのデータにアクセスできないことをどう確認するか。これについて考えることは本当に本当に重要です。

それで、一種機能していましたが、多くの欠点もありました。それでたくさんの他のものを試しました。1つは、すべてを再帰的にインデックスするためにモデルを使うことでした。かっこいいアイデアでした。別のバージョンでは、globとgrepを試しました。いろいろなものを試しました。

エージェント的検索がすべてを上回ることが判明しました。

エージェント的検索と言う時、これはglobとgrepの洒落た言葉です。それだけです。

モデルが十分に良くなって、これらのツールをかなり効率的に使えることに気づいたんですね。

そうです。

これは部分的にInstagramでの経験にインスパイアされました。Instagramでは、devスタックが壊れていて半分の時間クリック定義が動きませんでした。今はもっと良いと思います。エンジニアが代わりにやっていたことは、関数fuの定義を探しているとしましょう。クリック定義の代わりに、グローバルインデックスを使います。これはMetaではかなり良いです。それからfu開き括弧を検索します。これはかなりよく機能しました。面白いことに、これはモデルにとってもかなりよく機能します。

あるエリアからのアイデアが別のエリアに来ることができるのは興味深いです。Claude Codeのより高度な部分の1つは、以前に話した権限システムです。これについて何が複雑だったか話していただけますか。また、最近サンドボックスをオープンソース化しましたよね。

権限設定は本当に複雑です。セキュリティと関係する他のすべてのものと同様に、スイスチーズモデルです。コマンドが安全であることを確認するために実行される多くの分類器があります。コマンドが安全であることを確認するために行う静的解析もあります。ユーザーとして、安全だとわかっている特定のパターンをallow listすることもできます。

例えば、いくつかの標準的なUnixユーティリティは事前許可しています。読み取り専用だとわかっているからです。データを外部流出させたりできないとわかっているからです。だから権限をプロンプトしません。でも実際にはこのカテゴリに入るツールはかなり少ないです。findコマンドのようなものでさえ、実際にはそのコマンドの一部として任意のコードを実行する方法があるからです。使えるシステムフラグがあるからです。

sedコマンドのようなものでさえ。これを使う方法があります。これらの様々なUnixユーティリティに関するすべてのこの奥義があって、実際には思っているほど安全ではありません。デフォルトでは、デフォルトで許可するものについてかなり保守的でありたいです。ユーザーとしてallow listを設定できます。例えば、これらのパターンは許可されている、これらのパターンは許可されていないと言えます。それを定義させて、安全であることを確認するためにこのallow listもチェックします。

それから、コマンドを実行するたびに権限が必要な場合、1回実行するか、このセッションまたはグローバルに許可するかを決定できる洒落た権限システムがありますよね。

そうです。これは面白いアーティファクトです。実際には最初のバージョンのClaude Codeにありました。権限が機能した方法です。これが最初のリリースです。2024年9月のような最初の内部リリースでした。当時、エージェント的セーフティがそもそも解決できるかどうか確信が持てませんでした。

それで実際にセーフティチームから多くのプッシュバックがありました。モデルにbashコマンドを実行させるだけなんて、それは安全ではないと。どうするんだと。これは解決可能な問題ではないから、ローンチできないと。Ben Mannとブレインストームしました。BenはLabs teamを始めました。Anthropicの創設者の1人です。実際には彼が私をAnthropicに雇った人です。権限プロンプトをこれを行う方法として思いつきました。確信が持てない場合は、人間に尋ねて、彼らが決定できます。

ソフトウェアエンジニアリングの文化と役職

一般的にAnthropicでソフトウェアエンジニアリングがどう行われているかについて聞きたいです。最初の質問の1つは、よりフォーマルなもの、または外から見たものですが、役職またはその欠如です。Anthropicのすべての人は同じ役職、member of technical staffを持っています。なぜこうなったのか、これは何をもたらしますか。基本的に役職がないということですよね、1つを除いて。

これは、みんなただ物事を見つけ出しているという認識のようなものだと思います。人々がやっている仕事を目を細めて見ると、すべてかなり似ていて、かなりジェネラリスト的です。平均的なソフトウェアエンジニアと話すと、コーディングだけをやっているわけではないかもしれません。少しデザインもやっているかもしれません。ユーザーと話しているかもしれません。独自のプロダクト要件を書いているかもしれません。ソフトウェアを書いていると同時にリサーチもやっているかもしれません。プロダクトコードと同時にインフラコードも書いているかもしれません。Anthropicにはたくさんのジェネラリストがいます。これも私のバックグラウンドからです。これが私がそれに引き寄せられた理由の1つです。member of technical staffは、人々が互いに話す方法にこれをエンコードしているだけだと思います。互いを知らなくても。

この役職がなければ、デフォルトはSlackで名前を見て、名前の下にsoftware engineerと書いてあることでした。そうしたら、あなたはコーディングする人なんだなと思います。だからプロダクトの質問はしません。でもみんなの役職がmember of technical staffの時、デフォルトでは、みんながすべてをやると仮定します。だから互いをまだよく知らなくても、人々の間のこの関係を逆転させます。

ある意味、これは構造に組み込まれた楽観主義のようなものです。また、これは未来の一瞥だとも思います。ソフトウェアエンジニアリングが向かっている方向だと思うからです。すべての分野が向かっている方向だと思います。このジェネラリストモデルにもっと向かっています。ソフトウェアエンジニアリングでは確実にそう感じます。Mark Andreによる面白いコメントを聞きました。テクノロジーの世界でメキシカンスタンドオフが起きていると。デザイナーは実際には今PMとエンジニアリングの仕事をやっていると言っています。エンジニアはデザインをやっていると言っています。みんな他の人の仕事もやっていると思っています。現実にはみんなの役割が拡大しています。ほとんどはAIのおかげです。エンジニアがプロダクトの仕事をしたり、プロダクトの人がエンジニアリングの仕事をしたりするのが簡単になったからです。

あなたが言った通りです。

昨年の6月か7月に、オフィスに歩いて行ったのを覚えています。データサイエンティストの列があって、少なくとも当時はClaude Codeチームのすぐ隣に座っていました。歩いて行ったら、Claude CodeチームのデータサイエンティストがモニターにClaude Codeを開いていました。使っていました。面白いと思いました。データサイエンティストなのに、なぜターミナルを使っているんだと。当時Node.jsに依存していたから、Node.jsをインストールしていなかったはずです。ドッグフーディングしているのか、このものがどう動くか見つけようとしているのかと聞きました。「いや、クエリを実行するために使っているんだ」と。SQLを実行するために使っていて、ターミナルに小さなASCII可視化がありました。次の週には、データサイエンティストの列全体がコンピュータでClaude Codeを動かしていました。これが拡大して、今日のチームを見ると、Claude Codeチームではみんながコードを書きます。エンジニアがコードを書き、エンジニアリングマネージャーがコードを書き、デザイナーがコードを書き、データサイエンティストがコードを書き、財務担当者がコードを書き、チームのみんながコードを書きます。部分的にはClaude Codeがとても簡単にしているからだと思います。コードベースを本当に理解する必要はありません。飛び込んで、かなり簡単に小さな変更を加えることができます。

でももう1つは、人々がClaude Codeを使って自分の仕事をもっとできることです。財務予測であれ、データサイエンスであれ、何であれ。これをやることで、実際にはかなり簡単に少しコードも書くために使うようになります。水に足をつける方法です。

あなたの働き方についてのもう1つの興味深いことは、Cat Wooがこれについて話していましたが、役職は同じだと思いますが、人々は役割に少し引き寄せられるかもしれません。彼女は少しプロダクトの役割にいると思いますが、PRD、プロダクト要件ドキュメントはAnthropicの内部ではあまり書かれていないと言いましたね。ビッグテックやますます大きなスタートアップで有名な成果物です。仕様を書いて、アイデアです。考えを書き留めて、人々が調整して、送って、今何を構築すべきかわかります。でもあなたはこれをあまり、または全くやっていないようですね。

これの一部は、Anthropicがまだスタートアップだからだと思います。実際にはそんなに多くの人と調整する必要はありません。ただ話すか、Slackでやるかできます。でも、部分的には、Catは以前エンジニアリングマネージャーでした。彼女は非常に技術的で、プロダクトチームもこう考えていると思います。PRを送る方が良いです。

たくさんのプロトタイピングをやっています。Claude Codeを初期に構築していた時の話をした時、to-doリストのために15〜20のプロトタイプをやったというスレッド全体がありました。すべてインタラクティブで動作していました。私の過去のテクノロジー経験と比べて驚いたのは、これを1日半でやったと言ったことです。全20個。試して、感触を得ました。私にとっては理解できません。1週間か2週間かかっていたでしょう。人々は20はやらなかったでしょう。3つやっていたでしょう。

チームでは、文化は本当に書きません。ただ見せます。以前の時代を振り返るのは少し難しいです。今はすべてをプロトタイプすることが構築する方法に焼き付いていると思うからです。すべてが複数回プロトタイプされます。今週初めに発表したagent teamsのようなものです。これはswarmsの実装です。Claudeがより長く、より自律的により多くの仕事をできるのでとても刺激的です。たくさんの異なる相関しないコンテキストウィンドウがあり、エージェント間のコミュニケーションがあります。もっとできるだけです。DaisyとSuzanneとチームの他の人たち、Karenが、これを何ヶ月もプロトタイプしました。本当に良いユーザーエクスペリエンスを得る前に、おそらく何百ものバージョンを試しました。

これを正しくするのは本当に本当に難しかったです。Figmaの静的モックで始めたり、PRDのようなもので始めたりしてこれを出荷する方法はありません。構築して、感じて、どう感じるか見なければならないものです。

私にとっての大きな収穫の1つは、もっとプロトタイプすべきで、プロトタイプを構築するのにどれくらいかかったか、誰が構築する必要があったかという以前の思い込みを解放すべきだということです。当時はいつもエンジニアが構築する必要がありましたが、おそらくもうそうではありません。

そうです。今、私たちが正しい答えが何かわからない世界にいます。昔の構築方法を振り返ると、構築のコストが高かったので、ショットを取る前に非常に注意深く狙いを定めるために多くの努力を費やさなければなりませんでした。ショットを取った後、コース修正するのは非常に難しいからです。取れるショットは限られています。

でも今は変わりました。構築のコストは非常に低いです。でもどこを狙っているかわかりません。だからただ試さなければなりません。何が良く感じるか見なければなりません。とても探索的です。大きな部分は謙虚さだと思います。個人的には、私は半分くらいの時間間違っていると思います。私のアイデアのほとんどは悪いです。少なくとも半分は悪いです。

試すまでどちらの半分かわかりません。

そうです。自分で試さなければならないし、他の人が何を思うか見なければなりません。私の直感は常に他の人と一致するわけではないからです。タスクがどう構築されたかのプロトタイプを見せていた時、プロトタイプを構築して、最初に自分で見て、試して、感触を得て、良いと感じたものを他の人に見せるというプロセスをいつもやっていると話していましたね。時々彼らはフィードバックをくれて、これはうまくいかないと。そして時々良く感じたら、さらに広く共有しました。だから、時々自分で決められるし、時々フィードバックを得て、最終的にいくつかの良いアイデアが出てくるという混合ですよね。

そうです。この例はたくさんあります。ファイル読み取りとファイル検索のための凝縮されたビューをローンチしました。モデルが今非常にエージェント的だからです。画面の半分がこれらのファイル読み取りのような感じで、実際には気にしません。読んで、実際には何かわかりません。それで出力をもう少し読みやすくするために凝縮しました。

おそらく30のプロトタイプの後に本当に気に入りました。それが本当に良く、クリーンに感じるようにするのに非常に多くの努力がかかりました。Anthropicの従業員に約1ヶ月ロールアウトしました。みんなにドッグフードさせて、このフィードバックすべてに基づいて別のおそらく十数個のバグ、十数個の調整を修正しました。

外部にローンチして、ほとんどすべてのユーザーが気に入りましたが、気に入らなかった数人のユーザーがいました。もっと拡張された出力が欲しかったからです。GitHubのissueで、何が気に入らないのかと人々と行ったり来たりしました。人々がたくさんのフィードバックをくれました。別のバージョンを出荷しました。

何人かは気に入り、何人かは気に入りませんでした。それで再び反復して、良くしました。実際にはほぼそこにあると思います。人々が望む方法で設定できます。でもデフォルトは本当に良いです。でもこれがプロセスです。時々正しくできます。

ユーザーから学ばなければなりません。正しくできるように人々から聞きたいです。

仕事にチケットシステムを使いますか。やりたい仕事をキャプチャするような、それとも入ってくる仕事をやるだけですか。

Anthropicでは、チームに任せています。Claude Codeチームでは、各人に任せています。異なる人が異なる使い方をします。例えば、私はチケットシステムを使いません。AsanaやNotesのようなものを使うのが好きな人もいます。見た中で最もかっこいいことの1つは、3ヶ月前くらいだったと思いますが、pluginsをローンチしました。ローンチした方法は、Daisyが週末に、swarmsの非常に初期のバージョンを持っていました。swarmを動かして、あなたの仕事はpluginsを構築することだと言いました。

仕様を考え出さなければなりません。それからAsanaボードを作って、タスクに分割しなければなりません。そしてすべての異なるエージェントがそれを構築しなければなりません。コンテナをセットアップして、dangerous modeでClaudeをセットアップしました。週末全体動かしました。数百のエージェントを生み出しました。Asanaボードに100のタスクを作りました。

それから実装しました。それが私たちが出荷したpluginsのバージョンとほぼ同じです。かつて人間のためだったこの種の調整システムですが、今日ではモデルのためでもあると思います。

Claude Co-workの開発と展開

Claude Co-workについて話しましょう。これについての非常に印象的なことの1つです。見た目が素晴らしいです。試しました。Claudeの中にあります。Co-workタブがあります。エージェントを実行したり、相互作用したりするはるかに視覚的な方法だと感じます。驚きの1つは、10日間で構築されたと聞いたことです。何がかかったか、実際には何を意味するのか教えていただけますか。アイデアからですか、それとも構築する決定からですか。どれくらいの規模のチームが構築していましたか。

チームは本当に小さかったです。長い間数人だけでした。非エンジニア向けに構築すべき製品があると長い間感じていました。そう感じた理由は、長い間Claude Codeを使っている人々が非エンジニアだからです。プロダクトの世界で、自分たちのために設計されていない製品を使うために飛び越えている人々、潜在的な需要を見る時、それは彼ら専用に構築された別の製品を構築する時だという本当に良いサインです。Twitterには、Claude Codeを使ってトマト植物を監視している人がいました。大好きです。ウェブカムをセットアップしていて、Claudeは「植物が芽吹いてとても嬉しい」という感じでした。

ウェブカムを持っていて、毎日監視していて、トマトが育っているのがとても嬉しかったんです。壊れたハードディスクから写真を回復するためにClaude Codeを使っている人がいました。彼の結婚式の写真でした。

すごい。

AnthropicのFinance team全体がClaude Codeを使っています。Sales teamがClaude Codeを使っています。

だから、Claude Codeを使っている非エンジニアがたくさんいるだけです。その時点でClaude Codeは多くのフォームファクターで利用可能です。ターミナルで始めて、それから拡大してIDEのサポートを追加しました。すべてのVS CodeベースのID、すべてのJet BrainsベースのIDEに拡張機能があります。iOSとAndroidアプリもあります。デスクトップアプリもあります。Webもあります。

それからSlackとGitHubアプリもあります。だからエンジニアにとってClaude Codeを簡単にするためにこれらすべての場所に拡大しました。でも最終的にはこれらのどれも非エンジニア向けには構築されていません。だからClaude Codeは大きく進化しましたが、まだギャップがあり、人々にとってこれをさらに簡単にできる製品があるという感じでした。

だから過去数ヶ月間、チームはハックしていて、正しい製品は何かと言っていました。ある時点で誰かがこのアイデアを思いつきました。Claude Codeを取って、いくつかのガードレールを追加したらどうかと。例えば、Co-workは仮想マシンと一緒に動作します。これは本当に安全にする多くの方法の1つです。

特に、何をやっているか把握するためにbashコマンドを読みたくない非技術的ユーザーにとって。彼らはこれをハックしていました。10日間くらいエンドツーエンドだったと思います。Claude Codeで完全に構築されました。それから出荷しました。

このようなアプリの背後の複雑さの感覚を教えていただけますか。どの部分を構築する必要があったか歩いていけますか。外から見るのは少し難しいです。これはただの洒落たUIラッパーで、わかりません、数百行のコードですか。明らかに挑発的です。それとも裏では実際には本当に複雑なソフトウェアですか。聞く理由は、Uberが良い例です。人々はアプリを見て、本当にシンプルに見えます。そこで働いていましたが、本当に本当に複雑だと知っています。多くの地域的なことがあるからです。すべて隠されている多くのバックエンドのことがあります。だからそれを見ただけでは、Claude Co-workがどれだけ追加のビジネスロジックが慎重に考え抜かれる必要があったのか、それとも実際にはモデルの上の洒落た薄いラッパーなのかを言うのは難しいです。

場所によっては、思うよりも複雑さが少ないです。場所によっては、もっと複雑さがあります。プロダクト側では、かなりシンプルです。Claude desktopアプリだからです。Claudeアプリをダウンロードします。1つのデスクトップアプリです。Co-workのタブ、Codeのタブ、Chatのタブがあります。

だから1つのアプリで、多くのプロダクトロジックを継承できました。裏ではいくつかのUIレンダリングコードがあります。同じClaude Codeが動いています。Claude Codeを動かす同じClaude agent SDKです。複雑さの多くは実際にはセーフティについてです。ユーザーが非技術的だとわかっているので、良い体験をしてもらいたいからです。例えば、誰かがアプリを起動して、たくさんの家族写真を削除してしまったら、それは本当に良くありません。だからこれに対して保護したいと確認したかったんです。そこから多くのガードレールが来ました。バックエンドで動いているたくさんの分類器があります。これはセーフティのためです。プロンプトインジェクションやセキュリティに関するこのようなリスクに対する追加の緩和策です。フロントエンドには出荷する仮想マシン全体があります。

人々が誤って削除しないことを確認するための多くのオペレーティングシステムレベルの統合があります。だからセーフティの周りだけで、そこには多くあります。それから権限システムも再考しなければなりませんでした。Claude Codeから権限システムを継承するからです。でもCo-workにとって、実際には大きな価値の部分は、ローカルで動くだけでなく、Claude Codeが使う方法ですべてのツールを使うことです。

でも非技術的ユーザーにとっては、ツールは実際にはCLIとして利用可能ではありません。いくつかはMCP経由で利用可能です。多くはブラウザで利用可能です。だからCo-workは、Chromeエクステンションとペアにした時に本当に本当に良いです。これが私が通常使う方法です。例えば、チームのプロジェクト管理を毎週やるために使います。

みんなが何をやっているかを非常に高いレベルで追跡するスプレッドシートがあります。これが私の個人的なプロジェクト管理の方法です。他の人は、AsanaやNotesなどを使います。私自身のテストには何も使いませんが、チーム全体にはスプレッドシートがあります。Co-workにチェックインしてもらいます。毎週、ステータスが記入されていない行を見て、Slackでエンジニアにpingできますかと尋ねます。すると、Chromeでスプレッドシートのために1つのタブを開きます。Slackで別のタブを開きます。それからSlackでエンジニアにメッセージを送り始めます。ワンショットでやります。1人のエンジニアの名前は何らかの理由でオートコンプリートできません。でも他のすべてはできます。だからセーフティの観点からも、このChromeエクステンションとどう動作するか、権限モデルがこのローカル権限モデルとどう相互作用すべきかについて深く考えました。

だからそれがスムーズに感じることを確認するための多くのコードもあります。

技術側は何ですか。Claudeアプリと多くが似ていると思いますが、Electron、TypeScriptのようなものですか、それとも他の何かですか。

Electron とTypeScriptです。実際には、それに取り組んでいる人々の何人かは初期のElectronの人たちです。Co-workerのクリエイター、Felixは、Electronです。構築を手伝いました。

素晴らしい。Co-workはMac OSのみでローンチしました。このプラットフォームを最初に選んだ理由、そして今このプラットフォームだけを選んでいる理由は何ですか。

Windowsは近日公開予定です。おそらくこのポッドキャストが公開される頃には、Windowsサポートがあると思います。早く始めて、学び始めたかっただけです。Anthropicでやることすべてがこんな感じです。自分の話をした方法に本当に一致します。Anthropicについて好きなことの1つは、ここの人々が考える方法と本当に一致することです。

構築するものについて高い確信を持っていないし、直感はしばしば間違っている、だからユーザーから学んで、人々が実際に何を望んでいるかを見つけ出し、人々の話を聞き、フィードバックを深く理解するために多くの時間を費やさなければならないという点に戻ります。これが製品を構築する方法です。だから常に準備ができる前に少しローンチします。

Claude Codeを最初にローンチした時もこれをやりました。Windowsもサポートしていませんでした。多くの異なるスタックもサポートしていませんでした。それから来る週で、すべてのスタックのサポートを追加しました。今Claude Codeはすべての単一のスタックをサポートしています。Windows、どんな変なLinuxディストリビューションを使っていても、Mac OS、すべてをサポートしています。Co-workでも、早くローンチしたかっただけです。Macで始めたかっただけですが、それがスタート地点でした。でもすべてをサポートする予定です。

おっしゃったことの1つはフィードバックを得ることです。ロールアウトする時のobservability、monitoringのようなことについて好奇心があります。feature flagsを使っていますか。これについてカスタムツールを構築したのか、特定のベンダーを使うことにしたのか、より興味があります。特にobservabilityは、これは重要だと確信していますが、かなり高いスケールにも聞こえます。派生できるユーザー数の観点から、これは小さな操作ではないでしょう。

いくつかの既製のベンダーを使っています。カスタムコードも使っています。だから実際には両方の混合です。それについて特に驚くことはありません。Anthropicについて興味深いことが1つあります。企業であり、プライバシーとセキュリティを非常に気にかけているので、人々のデータを見ることができません。

誰かがバグを報告しても、実際にはログを引き出して何が起こっているか見ることができません。イベントをログする方法などをプライバシーを保護する方法で見つけ出すために多くの作業が費やされています。これは私たちの運営方法にとって本当に重要です。

Co-workについて、これまでどんな学びがありましたか。数週間出ていると思います。何か予期しないことを見ましたか。受けているフィードバックに基づいて製品を形作っていますか。

毎日チームが非常に多くの修正を着陸させています。最も驚くべきことは、人々がどれだけ愛しているかです。正直に言うと、Claude Codeが最初に出た時、実際には一夜にしてヒットではありませんでした。これは人々が思っていることですが、最初はゆっくりした立ち上がりでした。最初の大きな変曲点は5月にOpus 4とSonnet 4をリリースした時だったと思います。その時本当にクリックして、成長が指数関数的になりました。でも最初は、一種のresearch previewでした。人々は本当にそれの使い方を知りませんでした。

一部の人はすぐに理解しましたが、ほとんどの人は理解しませんでした。少し時間がかかりました。Co-workでは、Claude Codeが最初にあった時よりもはるかに急な成長軌道です。だから瞬時のヒットでした。それは実際に非常に驚くべきことでした。本当に期待していませんでした。

最近のリリースの1つは、昨日か一昨日、このポッドキャストを録音している時に出たagent teamsです。私が理解している限り、単一エージェントの代わりに、エージェントフォームを持つことができるというアイデアです。リードエージェントを持つことができ、異なるチームメイトに委任できます。これで実験を始めて、出荷することをどう決めたんですか。

常に実験をやっています。Claude Codeからもっと使えるようにするあらゆる種類の方法があります。1つの方法はコンテキストを拡張することです。別の方法はコンテキストを自動圧縮することです。基本的に無限のコンテキストです。それが今持っているものです。別の方法はサブエージェントを使うことです。複数のエージェントが一緒に働きます。コンテキストウィンドウからもう少し使えるようにする多くの異なるアプローチがあります。

uncorrelated context windowsと呼んでいるアイデアが1つあります。アイデアは、複数のコンテキストウィンドウがあることです。でも基本的には新鮮に始まります。互いを知りません。例えば、correlated context windowは、モデルがあってタスクをやって、同じコンテキストウィンドウで2番目のタスクをやらせる場合です。

この場合、2番目のタスクは同じウィンドウにあるので、最初のタスクについて知っています。でもサブエージェントのようなものはuncorrelatedです。メインエージェントがサブエージェントにプロンプトするからですが、サブエージェントのコンテキストウィンドウは新鮮です。そのプロンプト以外には、親のコンテキストウィンドウに何があるか知りません。

実際にこれを少し見ることができます。例えば、サブエージェント対スキルのようなもので、スキルを実行すると、親のコンテキストウィンドウが見えます。サブエージェントの場合は見えません。だからuncorrelatedです。そのコンテキストが欲しい場合があります。欲しくない場合があります。

uncorrelated context windowsと問題により多くのコンテキストを投げることと、ウィンドウがuncorrelatedの時により多くのトークンを投げることで、より良い結果が得られるという興味深いことがあります。実際にはこれを行うテスト時間計算の形式です。teamsのようなものでは、しばらく実験してきました。10月か9月頃からだと思います。Opus 4.6で、本当にクリックした感じでした。モデルが本当にこれの使い方を見つけ出しました。時々、エージェントが互いに話していて、何かについて議論しているこれらのかわいいやり取りを見ます。とてもクールです。ある意味人間的です。

でも他の時には、ただ非常に良い結果が得られます。だから内部評価がたくさんありました。例えば、Claudeに非常に非常に複雑なものを構築させます。単一のClaudeが構築するよりも複雑なものです。結果がOpus 4.6とteamsで本当に本当に改善したのを見ました。

だからリリースする正しい時だと感じました。慎重でもありたかったです。オプトインする理由、research previewである理由は、大量のトークンを使うからです。ただたくさんのClaudeが動いているだけです。みんながこれを常に望んでいるわけではありません。だから人々がどう使うか見るのが楽しみです。フィードバックを聞くのが楽しみです。

かなり複雑なタスクに望むものです。すべてのタスクにこれを望むことはおそらくないでしょう。

メインのClaudeがサブClaudeのルールを決めます。これを行うための厳格な方法はありません。コンテキスト固有です。1つの正しいやり方があるとは言いません。実際に多くの魔法はこのuncorrelated context windowsのアイデアから来ると思います。

エージェントの特定の設定についてではありません。でも人々は実験すべきです。万能サイズはないと思いません。

研究中でもユースケースを見ましたか。有望に見えるユースケース、swarmアプローチ?

言ったように、pluginsはswarmsで完全に構築されました。この方法で構築された他のたくさんの機能があります。だから、単一のClaudeが苦労しているのを見るものすべてに、swarmsが助けになると思います。見るのは興味深いです。

変化への適応とエンジニアリングの未来

一般的な変化について話しましょう。Andrew Carpathyと、12月に本当に興味深いやり取りがありました。彼がプログラマーとして今ほど遅れていると感じたことはないと投稿した時です。AIの進歩のために。それからメモリリークを昔ながらの方法でデバッグし始めたという話を共有して、Claudeがワンショットでやったという話をしました。みんながどれだけ速く変化しているか、休暇期間中に物事が本当に変化したと感じ始めたという反映だったと思います。この変化にどう折り合いをつけたのか、受け入れ始めたのか。

これは私が本当に苦労していることです。モデルは非常に速く改善しているので、古いモデルで機能したアイデアは新しいモデルでは機能しないかもしれません。新しいモデルでは、古いモデルでは機能しなかったものが機能するかもしれません。これのような他の技術はあまりないので、奇妙です。だからこれにどうアプローチすべきか、引き出す経験があまりありません。これは学ばなければならなかった新しいスキルです。ある意味、常にこの初心者の心を持たなければなりません。正直に、謙虚さという言葉を多く使っていますが、常にこの種の知的謙虚さを持たなければなりません。以前に悪かったアイデアのすべてが今は良くなったり、その逆だからです。

これは正直、常に自分自身に思い出させなければならないことです。昔の世界を振り返ると、面白いことに、誰かが再びアイデアを試して、過去に試したことがあって機能しなかった時、通常のフィードバックは、なぜまたこれをやっているのかです。

学ぶべきです。

ある種のゲートキーピングと呼ばれていましたが、ある程度有効でした。アーキテクチャで誰かがマイクロサービスをやらないのかと来て、誰かが試したけどうまくいかなかったと言いました。1年、2年、3年前に試したなら、あまり変わっていないので、ある程度有効でしたよね。

そうです。マイクロサービスでは面白いことに、10年ごとに流行ったり流行らなくなったりします。でも今は、実際にはクレイジーではないと思います。数ヶ月ごとに同じアイデアを試すことが。モデルが改善して、ただうまくいくからです。実際にチームのエンジニアでこれを見ます。

チームに新しい人、エンジニアリングに新しい人は、時々私よりも良い方法でやります。ただ見て、学んで、期待を調整しなければなりません。例えば、機能をリリースする時、時々XやThreadsなどで自分が使っているスクリーンショットを撮って話します。

でも最近、DevRelの担当者、Tarが、実際にはたくさんコードを書きます。素晴らしいです。これの自動化を始めました。Claude Codeにローンチのための独自のビデオを生成させています。彼はただこれを始めました。これは私が可能だと思ったことですが、試さなかったでしょう。モデルが準備できていると思わなかったからです。でも彼はただやって、うまくいきました。

コーディングスキルの変化と喪失感

自分自身について少し奇妙に感じてきたことがあります。多くの開発者が共感できると思いますが、Opus 4.5から始めて折り合いをつけてきました。GPT 5.2も似たような雰囲気を与えたと思います。モデルはコードを書くのが本当に得意で、物事を成し遂げたい時、実際には手でコードを書かないだろうと気づきました。まだコーディングの喜びを得たければできますが、振り返ってみると、コーディングが得意になるために非常に多くの努力をしてきました。学び始めた時のことを覚えています。ハックしていたところから大学に行って、CとC++を学ぶところまで、本当に血みどろに難しかったです。実際に最初の数年の仕事で上手くなり始めました。上手くなって、デバッグが上手くなって、アイデンティティの多くがコーディングが得意であることに結びついていた時点があります。それがより高い給料の仕事を得る方法でした。Uberでエンジニアリングマネージャーだった時、インタビューループを設計した時、マネージャーと何をスクリーニングすべきか話しました。開発者は時間のほとんどで何をするか話しました。時間の約50%はコーディングします。

だから、シグナルの約50%をすべてコーディングに置きました。コーディングに結びついた多くのことがありました。それは難しいからです。みんな知っていると思います。根気が必要です。得意になるにはある程度の知性が必要です。喪失感があります。一方ではモデルができるのは素晴らしいと思います。

でも、私が個人的に思うよりもはるかに早く起こると思わなかった何かが本当に早く奪われた感覚があります。多くの他の人も感じていると思います。一部の人はもう少し簡単に移行しますが、確実に喪失感があります。どう考えましたか。繰り返しになりますが、あなたはFacebookでも外でも非常に多くのコードを書いた例です。

ツールだったとは知っていますが、あなたがやったことをできる人はそう多くありませんでした。今ではモデルもあなたと同じくらい、またはそれ以上に働けます。

それが課題です。

これがかつて私たちがソフトウェアエンジニアとしてやっていたことの1つでした。みんなができることになっています。コーディングを始めた時、非常に実用的なもので、物事を成し遂げる方法でした。ある時点で、コーディングの芸術と言語、ツール自体に恋に落ちました。ある時点でこのウサギの穴に落ちました。プログラミング言語について書いた本を書きました。

TypeScriptです。O’Reillyで最初のTypeScriptの本を書きました。

そうです。実際に面白い瞬間がありました。日本の小さな町の本屋に行って、日本語に翻訳されたその本を見つけました。

まさか。

最高の瞬間でした。それから気づいたのは、TypeScriptを全く覚えていないことでした。その時点で数年間Pythonだけを書いていたからです。ある時点で最初の、世界で最大のTypeScriptミートアップを始めました。

それはSFでした。多くのヒーローに会うことができました。一般的な反応性理論を書いたChris Cowellがいました。NodeJSを作ったRyan Dahlがいました。このコミュニティと言語自体、ツール自体に本当に深く入り込んだ最初の時の1つでした。TypeScriptのようなものには、型システムに美しさがあります。Hilsbergは本当に素晴らしいです。条件型のアイデア、何でもリテラル型になれるというアイデア。最もハードコアな関数型言語でさえ持っていない非常に深いアイデアがあります。Haskellのようなものでさえ、ここまで行きません。Andersはそれを取って、これまで押されてきたよりもはるかに遠くまで押しました。Joe Pamerや他の多くの人々がこれらのアイデアの多くを探求し、考えました。彼らにとっても非常に実用的だったと思います。これらの大きな型なしJavaScriptコードベースがあったからです。型付けされた何かに徐々に移行する方法は。これを行うために、これらの非常に美しいアイデアを思いつかなければなりませんでした。私にとってはScalaが落ちたもう1つのウサギの穴でした。この種の関数型プログラミングの世界で。

今でもコードを書く時、モデルがコードを書く時、いつも型を最初に考えます。それがコード自体よりも重要なことです。型シグネチャは何かです。それを正しくすることです。

だからそれに美しさがあります。芸術があります。確かに。でも最終的には実用的なものです。最終的にはこれは物事を構築するために使うものです。手段です。それ自体が目的ではありません。今この瞬間のためのメタファーの1つは、1400年代の印刷機だと思います。

その瞬間、実際にはかなり似ていましたよね。書き方を知っている書記官のグループがいました。

私の理解では、もちろん私たちはそこにいませんでしたが、想像すると、学ぶための芸術的なプロセスでした。学ぶ必要がありました。設備を手に入れる必要がありました。おそらくスポンサーシップか選ばれる必要がありました。同じものを何度も何度も作り出す必要があったからです。少数の人しかできませんでした。高い名声か高い給料かわかりませんが、そうだったと仮定しましょう。

でも印刷機が来ました。

そうです。ヨーロッパでは、少なくとも、領主か王か何かに雇われなければなりませんでした。それから何年もの訓練を経なければなりませんでした。書き方を知っていたこの書記官のクラスがありました。誰かに雇われていました。しばしば王自身、女王は読み書きができませんでした。だからこれは非常に非常にニッチなスキルでした。ヨーロッパでは当時、人口の1%未満が読み書きができました。それから印刷機が出て、何が起きたか。印刷物のコストは次の30年、50年くらいで100分の1くらいに下がりました。印刷物の量は次の50年、100年で10,000倍くらいに上がりました。これが最初の効果でした。読み書き能力は追いつくのに少し時間がかかりました。世界の読み書き能力は70%くらいまで上がったと思います。でもそれには200年、300年かかりました。読むことを学ぶのは本当に難しいからです。書くことを学ぶのは難しいです。多くの努力が必要です。教育システムが必要です。紙とインクを持つインフラが必要です。農場で働く代わりにそれをする自由時間が必要です。だから工業化の初期段階に到達するのが必要でした。

でもこの象牙の塔に閉じ込められていたものを、今はみんながアクセスできるようにする効果だと思います。これがなければ、私たちの周りのものは今日存在しなかったでしょう。読み書きができなかったら、このマイクを作った人々が読み書きができなかったら、現代経済を持つのは非常に難しかったでしょう。

これらのものは存在しなかったでしょう。印刷機が出た時に何が起こるか予測しなければならなかった当時に戻って考えると、誰もマイクが出るとは予測しなかったでしょう。だから、今いるこの瞬間の最良の類似だと感じます。

王の中に書記官を雇っている文盲の人がいたと言うのは興味深いです。正直に言えば、構築したいものを知っていて、コードを書けないから自分でソフトウェアエンジニアを雇っているビジネスオーナーがいます。CEOを少しからかうのが好きだと思います。チームに来て、描いたプロトタイプやホワイトボードを持ってきて、これは簡単なはずだと言いますが、もちろん彼らはどれだけ難しいか理解していません。人が望むものを持っていて、今まではそれを構築できる専門家を雇う必要があった人がいるという類似があるように見えます。アイデアと人の間には常に断絶がありました。印刷機のように、王が実際に自分の手紙を読んだり書いたりできたら、その仲介者は必要なくなります。物事はより効率的になります。でも書記官にとっては必ずしも最良のニュースではありません。でも賢い書記官は何かできます。誰かが本を書く必要があります。印刷機を動かすなど。

まさに。書記官に何が起こったかを考えると、書記官であることを止めますが、今は作家や著者のカテゴリーがあります。これらの人々が今存在します。

存在する理由は、文学の市場がものすごく拡大したからです。

当時の書記官の仕事は少数の人に読まれていたと思います。印刷機と著者では、はるかに多くの著者がいて、その中には本当に読まれない人もいますが、想像できたよりも広い範囲に届く人もいます。そのために存在する新しいキャリアがあります。

この類似は大好きです。

私にとって最もエキサイティングなことは、これが起こった後、この移行が起こった後に何が起こるか、今日予測することが不可能だということです。私たちが知っている経済は、これなしには存在しなかったでしょう。

では次は何か。誰でもこれができるために存在する、今日予測できないものは何か。

予測はできませんが、今うまくいっていることを見ることができると思います。環境を見回すと、Anthropic全体のソフトウェアエンジニアやビルダー、member of technical staffでも、誰が目立っているか。何をやっているか。どんなスキルを構築したか。働き方をどう変えたか。

個人を名指しするのは難しいです。なぜなら、正直に、これはキャリアで一緒に働いた中で最強の人々だからです。あらゆる種類の異なるアーキタイプがあります。本当に素晴らしいプロトタイパーがいます。

ゼロから0.5に持っていく。クールなアイデアは何か見つけ出す。技術は何かを歩く。プロダクトマーケットフィットを見つけるのが素晴らしい他の人々がいます。0.5から1、または多分ゼロから1に。異なる分野にまたがる他の人々がいます。プロダクト、エンジニアリング、インフラエンジニアリング、またはプロダクトとデザイン、またはデザインとエンジニアリングにまたがる人々がますます増えています。

これらのハイブリッドがますます増えていると思います。

昨年から今年に変わった信念は何ですか。信じていたか、持っていた確信が修正されたか、完全に捨てたもの。

確信が持てなかった1つのことは、セーフティがどれだけ大きな問題かです。正直に。

参加したのは、SF小説をたくさん読んでいたからです。これがうまくいかなかったらどれだけ悪くなるか知っています。確信はありませんでした。でも内側から見て、昨年に出てきた新しいリスクを見ると、それについてはるかにはるかに心配になります。

これは私にとって重要なことでした。今では最も重要なことです。これがうまくいくことをどう確認するかです。

AIのことが始まる前でもあなたは本当に素晴らしいソフトウェアエンジニアだったと言っても安全だと思います。チームの一部でもありますが、個人としても非常に生産的なエンジニアです。以前のソフトウェアエンジニアであることのスキルで、まだ価値があるか、以前よりもさらに価値があるものは何ですか。そして最良でないもの、残された方が良いものは何ですか。

残された方が良いものは、コードスタイル、言語、フレームワークについての非常に強い意見のようなものです。

これらの終わりのない言語論争、フレームワーク論争、すべてのことを乗り越えることが待ちきれません。モデルがどんな言語やフレームワークでも使えるからです。気に入らなければ、書き直してくれます。だからもう関係ありません。今日でもまだ重要なことは、方法論的で仮説駆動であることです。

これは製品設計でも重要です。すべてが破壊されていて、次に何を構築すべきか見つけ出す必要があるこの世界で、みんながこれについて考えています。でもエンジニアリングの日常でも重要です。デバッグのようなもの。それについて非常に方法論的である必要があります。

モデルはこれができて、多くを助けてくれます。でもまだスキルを持つ必要があると思います。6ヶ月後もまだ持つ必要があるかわかりません。より価値があると思う他のスキルは、好奇心があり、自分のスイムレーンを超えたことをすることにオープンであることです。

エンジニアリングで働いているが、ビジネス側を本当に理解していれば、本当に素晴らしい製品を構築できます。次の、Claude Codeの後の次の10億ドルの製品、次の1兆ドルになる次のスタートアップは、クールなアイデアを持った1人の人間かもしれません。彼らの脳がエンジニアリングとプロダクトとビジネス、またはデザインとファイナンスと他の何かにまたがって考えることができます。人々はますますますますマルチディシプリンになり、これはますます報われるでしょう。だからある意味、これはジェネラリストの年になると思います。実際に報われている他のスキルは、短い注意持続時間を持つことです。

今は報われています。

10代の人々がTikTokなどを使っているのは、ある意味、社会にとって危険だと思います。深く考え、アイデアを熟考できる人が欲しいし、次のアイデアに非常に早く移行しないでほしいからです。でもある意味、今年は報われる年になると思います。ADHDの年のようなものです。仕事がClaudeの間を飛び移ることになったからです。

Claudeを管理することになりました。だから深い仕事についてではありません。コンテキストスイッチングがどれだけうまいか、複数の異なるコンテキストを非常に早く飛び越えることについてです。

言ったことすべてから追加できることがあるとすれば、適応性かもしれません。ADHDと飛び越えると言っていますが、もちろん以前はあなたも1つのことに深く集中することが非常に得意でした。あなたと他の人々についても真実かもしれませんが、あなたについて印象的なのは、働き方を適応させることに非常にオープンであることです。この段階でうまくいくものを見るということです。特に物事が変化している時。確実に言える1つのことは、次のモデルが出る時、また変わるでしょう。働き方をどう適応させるか、好奇心を持ってオープンでいる必要がありますよね。

そうです。

締めくくりとして、推奨する本は何ですか。

ウサギの穴に落ちました。劉慈欣です。三体問題の人ですが、実際には他に多くの本当に素晴らしい本があります。

彼の短編小説が本当に好きです。短編小説の本がいくつかあります。大ファンです。SF初心者で、少しハードなSFが欲しい人には、Charles Strossの『Accelerando』を本当に推奨します。これは基本的に次の50年のプロダクトロードマップです。

テイクオフが始まり、AIシンギュラリティのようなもので始まり、木星を周回するこの種のグループロブスター意識で終わります。素晴らしいです。本当にキャプチャしていると思うのは、このペース、早まる、早まる、早まるペースがどう感じるかです。

今の感覚に本当に一致します。それから技術側では、Scalaでの関数型プログラミングを強く推奨します。言語選択がもうそれほど重要ではなくても、コードをより良く書く方法を教えてくれる関数型プログラミングの芸術があると思います。

型で考える方法を教えてくれます。この本を読んだら、本当に重要なのはエクササイズもやることです。私は全部やって、おそらく3回くらいやりました。素晴らしいです。関数型の型のアイデアを本当に頭に叩き込んでくれます。考えずにはいられないことです。

Boris、本当にありがとうございました。

ありがとう、Lenny。

これは本当に興味深い会話でした。何度も戻ってくるのは、Borisのプリンティングプレスのアナロジーです。中世の書記官は書くことができるこの小さなエリートで、自身がしばしば文盲だった王に雇われていたというアイデアです。私たちソフトウェアエンジニアが似たような立場にあるかもしれません。

私たちが書記官です。この技術を習得するために何年も費やしました。今、プリンターが到着しています。でもBorisが言ったのは、書記官は消えなかったということです。作家や著者になり、書かれた作品の市場全体が誰も予測できなかったほど拡大しました。希望を見出せます。Borisが糖衣しなかったことも感謝します。

もう1つ印象に残ったのは、Claude Codeチームがどれだけ違う方法でソフトウェアを構築しているかです。PRDはありません。必須のチケットシステムはありません。デザイナーとデータサイエンティストとファイナンスの人々がすべてコードを書いていて、機能を出荷する前に数十または数百のプロトタイプを構築しています。Borisは1日に20〜30のプルリクエストを出荷していて、手で1行も編集していません。

異なる検証システムがあります。Claude Codeがコードをレビューし、自動化されたlintルール、best of Nパス、人間のコードレビューがあります。このポッドキャストを楽しんでいただけたなら、お気に入りのポッドキャストプラットフォームとYouTubeで購読してください。番組に評価を残していただけたら特別な感謝です。ありがとう、次回お会いしましょう。

コメント

タイトルとURLをコピーしました