
21,004 文字

エージェントが実際に受け入れられたチームメンバーとなり、コードを貢献できる段階に到達する必要があります。今日、エージェントはあなたの問題を診断するのを助けることができます。コードを変更するために、私がイシューを登録する代わりにCopilotとエージェントを使用して変更を加える段階に到達すると思います。人々が自分自身のためだけに、あるいは友人や家族のためだけにアプリを提供する時代に入っていると思います。
それでは詳しく見ていきましょう。トーマス、あなたがここにいて私たちと話してくれて超興奮しています。GitHubはAI分野で多くの素晴らしい製品リリースを行い、過去6ヶ月間で大きな役割を果たしてきたと感じています。GitHubのCopilotは長い間存在し、非常に広く使われていますが、AIスペースでの新製品リリースの特に顕著な点について概要を教えていただけますか?
ああ、話すことがたくさんありますね。まず、招待していただきありがとうございます。皆さんとここにいることができて本当に嬉しいです。私たちにとってCopilotから始まる旅でした。もう5年近く前の2020年6月のことです。今、私たちが録音しているのは2025年2月ですが、当時はGPT-3を使っていました。OpenAIと協力してCodexと呼ばれるモデルを微調整し、それは基本的に自動コード補完でした。開発者がコードを書いている場所にAIを導入し、次の行や複数行のコード、テストケースを予測していました。
これが開発者にとって非常に役立つことはすぐに明らかになりました。なぜなら、彼らはフロー状態を維持できるからです。エディタからブラウザへ移動したり、私たちが録音を始める前にノーランが言っていたように、何タブも開いているような状態から解放されます。私たち全員が経験していることですが、ブラウザでのさまざまな作業に気を取られてしまいます。エディタに戻ってブログやRedditの投稿、もちろんGitHubからコピー&ペーストするときには、あなたが持っていた思考の流れ、今ではモデルで「思考の連鎖」と呼ばれるものを失ってしまうのです。
そしてChatGPTが登場し、業界全体が変わりました。そして当然、私たちはチャットをエディタに導入し、開いているすべてのファイル、デバッガー、ターミナルのコンテキストをすべて与えました。ここ半年ほどを見てみると、私たちが1つのモデルから複数のモデルセットへ移行していることが明らかになりました。今、Copilotには、OpenAIのGPT-4oと01、03 mini、そして03 miniなしのバージョン、Claude 3.5 Sonnetがあります。先週からはGemini 2.0 Flashも利用可能になりました。
GitHubを運営するとき、単一のオープンソースライブラリだけで運営することはありません。Reactだけを使って、気に入らなければ「残念でしたね、他に行くしかない」というようなことはしません。開発者は選択肢を求めており、これらのモデルをすべて利用可能にして、適切なものを選べるようにしたいと考えています。おそらく彼らはお気に入りのモデルを持ち、それを使い始めると、そのモデルの動作を理解し、何が解決できて何が解決できないかを予測できるようになります。これが過去6ヶ月の間に根本的に変化したと思います。
そして数週間前にDeepSeekによって、再びゲーム全体が変わりました。第二に、AIを取り入れた状態からAIネイティブなワークフローやエージェントへと移行していることです。これらのエージェントはまだ初期段階にあり、先週、VS Codeでエージェントモードを発表しました。これにより、質問をするだけでなく、チャットが答えるのではなく、実際にファイルを生成したり修正したりでき、コマンドラインのコマンドを提供して「これを実行したい」と言えます。その場合は実行し、そうでなければ実行しません。もしファイルを削除してしまった場合、「やめよう、もう一度試してみよう」と言えるので、まだコントロールがあります。しかし、私たちが進んでいる旅を示しています。
これを車の運転支援システムのように考えています。完全自動運転が本当に機能するのは、サンフランシスコのVEO(特定の自動運転車両)に乗っているときだけなので、ステアリングホイールなどのコントロールがまだ必要で、注意を払う必要があります。車は注意するよう促します。これらのエージェントも同じです。地平線上にエージェントが自力で問題を解決できるというビジョンがある一方で、それまでの間、開発者が主導権を握る、よりエージェント的なワークフローが必要です。
GitHubが構築しようとしているものと、エコシステムの残りの部分に解決を任せたい問題について、どのように考えていますか?Copilotは明らかにVS Codeの重要な部分ですが、VS Codeは実質的にMicrosoft製品、またはオープンソース製品であり、GitHub製品ではありません。これらの体験を構築する際に、どのレベルの詳細に踏み込むかを決める上で、この緊張関係をどのように考えていますか?
ある意味、VS Codeは私たちの姉妹チームです。Microsoftの中で、約1ヶ月前に形成されたCore AIと呼ばれる新しい組織に所属しています。VS Code、GitHub、通常のVisual Studio .NET、そしてAI側ではAzure AIサービス、Foundryなどがすべて同じ組織に属しています。これが私たちがカバーしたいと考えている部分を示していると思います。つまり、インフラストラクチャプラットフォーム層からのAIスタックで、責任あるAI、推論、評価があり、IDE、プラットフォーム層、VS CodeやGitHubのための拡張機能があり、その上にGitHub層、つまりソフトウェア開発ライフサイクルが存在する開発運用層があります。そして当然、その上に、そのスタック上に独自のアプリケーションを構築するために使用できる多くのツールを構築しています。
現在、私たちはOpenAI、Claude、Google、またはDeepSeekなどのモデルを構築するために他の会社を活用しています。完全なモデルカタログを持っています。Microsoftにも、phi-4のようないくつかの小さなモデルもあります。それを基に、私たちがカバーすると考えているスタックです。その一部はGitHubブランドの下で、一部はVS Codeブランドの下で、一部はAzureやより一般的なMicrosoftブランドの下で行っています。
ノーランと私はNum Focusで長い間働いており、NumPy、SciPyなどのオープンソースプロジェクトに財務的、法的インフラを提供しています。昨夜、オープンソースの持続可能性と、AIが保守担当者の作業を補助するための世界についての会話をしていました。GitHubは、オープンソースをより持続可能にするための助成金プログラムなどを行ってきましたが、このAIツールがこれらのプロジェクトのメンテナにとって、持続可能性の観点からどのように役立つと考えていますか?
今日、メンテナが直面している最大の問題の一つは、オープンソースプロジェクトが成功すると、それは最終的には目標ですが、アイデアがあってオープンソースにし、牽引力を得て、スターを獲得し、他の人があなたのプロジェクトについて話すという夢を持ちます。最終的には、ソフトウェア開発者が評判やステータスを獲得する方法です。GitHubでのスターやフォロワーの数は、多くの開発者にとって、TwitterやBlue Sky、Mastodonなどでのフォロワー数と同じくらい重要です。
そして、プロジェクトが成功すると、突然、問題点やアイデア、質問で溢れかえります。さらに成功すれば、人々はプロジェクトをフォークしてプルリクエストを送り返してきます。そして突然、素晴らしいと思っていたものが、特に収益源をもたらさない場合や、実際に別のスタートアップアイデアに取り組みたい場合には、あなたの生活の負担になります。これはオープンソースでよく見られることです。インターネットを支えている人々、つまりあるブロックのスタックでネバダ州あたりのオープンソースメンテナという小さな部分が、ジェンガタワーのように崩れると、すべてが崩壊してしまうというミームやグラフィックがあります。
AIとエージェントがどのように役立つかを考えると、それらがこれらの問題の一部を拾い上げ、メンテナが各問題を一つ一つ調査し、それが自分にとって本当に価値があるのかどうかを判断する必要なく、作業を手助けすることができます。それは問題側で問題を分類したり、自動的に実装してプルリクエストを作成し、「ここに、使用しているオープンソースライブラリの最新バージョンに更新しました」と言ったりすることかもしれません。コードをレビューし、フォークからプルリクエストを通じて来たコードに対してフィードバックを提供することかもしれません。そうすることで、メンテナが起きて手動でそれを行う前に、そのフィードバックループがあります。
セキュリティ脆弱性の修正から、オープンソースメンテナが自然に経験しなければならないボイラープレートを減らすことまで。ソフトウェアは非常に速く古くなります。永遠に変更されずに残ることができるソフトウェアはほとんどありません。そのため、常にそれを維持し続ける必要があり、創造的な作業を取り戻すために時間を得るためにAIを活用することが、オープンソースに対して持つことができる最大の影響だと思います。
エージェントや私たちのIDEにJARVISを持つ未来について話すとき、多くの問題が単に非常に単純であり、まだ解決していないことも現実として認識する必要があります。通話中にミュートになっていて誰かが「トーマス、ミュートされていますよ」と言わなければならない頻度、インターネット接続が不安定な頻度、AIが近代化することを夢見ても、まだ数年先のような古いコードベースで作業する頻度などです。
それは素晴らしい指摘です。これはまた、インターネットの社会契約が、クローラーを除いて、何かのアクションの終わりに別の人間がいるという考えに依存しているという点も考えさせられます。今、エージェントで起こることは、GitHubに何億人もの開発者がいても、実際には何十億ものエージェントがインターネットを徘徊し、さまざまなものを突いたり、探ったりしている世界が想像できます。インフラの観点から、社会契約の観点から、セキュリティの観点から、この世界をどのようにナビゲートするかを考えると、特に世界の重要なインフラの多くが今、オープンソースソフトウェアとしてGitHubに存在している状況ではどうでしょうか?
私はこう考えています。多くの点で、私たちはすでにその世界にいます。リポジトリにコードをプッシュするたびに、何百万ものCI/CDプロセス、自動ビルドプロセス、自動テストプロセスを実行しています。それは単なるエージェント、単純なエージェントに他なりません。多くのインテリジェンスを持っていませんが、環境に反応します。コードをプッシュすると、そのコードを受け取り、仮想マシンで何かを行います。それはエージェントが行うこととまったく同じです。コードをコンパイルし、ステップバイステップで進もうとします。そのステップはハードコードされていますが、エージェントの場合はスクリプトからではなく、モデルから変数が出てきます。最後にログファイルと結果が得られ、結果が期待通りでない場合は、ログファイルで何が起きたのかを調べなければなりません。
これはChatGPTやCopilot、エージェントモードを使用する場合でも、エージェントの動作とまったく同じです。機能し、出力が期待通りであれば素晴らしいことです。機能しなくなった途端、makeコマンドで20年前と同じように見えるログファイルを無限にスクロールしなければなりません。AIがソフトウェア開発にとってすでに非常に成功している理由の一つは、DevOps、ユニットテスト、品質ゲート、人間のレビューとプルリクエストなしにメインブランチにプッシュしないこと、CI/CDなどのプロセスを確立することで、その世界に備えてきたからだと思います。
一方で、エージェントの未来について考えるとき、エージェントは予測可能である必要があります。エージェントを起動する前に、そのエージェントが自分の問題を実際に解決できるかどうかを知る必要があります。今日、CopilotにGitHubやFacebook、その他のコードを構築するよう依頼することができますが、明らかに意味のあることは何もしません。おそらく何かを提供し、そこから反復できますが、自分を抜け出せない隅に追い込んでしまうことはなく、「まあ、新しく始めよう」と思えます。そのため、予測可能である必要があり、始める前に知る必要があります。なぜなら、一度始めてエージェントが実行されると、計算リソースを無駄にしているからです。このものが長く実行されればされるほど、より多くのお金や時間を費やしていることになります。
それは安定している必要があります。私が望むものを予測可能性と組み合わせて指定できる必要があります。そうすれば出力が何になるかを知ることができます。「エージェントはジュニア開発者に取って代わるだろう」と言われることがよくありますが、私の頭の中では、ジュニア開発者に任せてから、そのジュニア開発者が何をしているか確認するまでどれくらいの時間がかかるのかを考えます。このフィードバックループは、シニア開発者よりもジュニア開発者にとってさらに重要です。エージェントを操縦できる必要があり、その出力を検証できる必要があります。
また、それを許容できる必要があります。エージェントを送り出して作業をさせ、戻ってきてプルリクエストをファイルする場合、最近、Copilotがファイルしたプルリクエストが人間がファイルしたように見えるというデモを行いましたが、その出力は許容できるものである必要があります。それを見て、役に立たないと感じ、エージェントが作業を行った時間で自分で行えるほどの入力を与えなければならない場合、再びそれを使用することはないでしょう。エージェントが実際にソフトウェア開発タスクを引き継ぐことができるようになるまで、これら4つのことが必要です。現在、それは非常に小さなタスクであり、より複雑になるほど、時間を無駄にしていることになります。
これを考えると、AIエージェントが公開されたGitHub貢献グラフを持つという考えは、開発者が本当に使用するような評価として興味深いと思います。オープンソースのプルリクエストを見るとき、まず最初に「この人は誰なのか、このプルリクエストをマージするために時間を投資すべきか」を考えます。これは、今日のAIの実際の能力を評価するための興味深いメカニズムだと思います。貢献グラフの公開評価を行って、エージェントの実際の能力を確認するようなことをしたことはありますか?
これについて考えると、人間として行う場合、あなたのプロジェクトに対してプルリクエストをファイルし、あなたが私のコードを気に入らなければ、フィードバックを与えます。人間として、あなたのフィードバックに調整したり、「ローガンは私のスタイルが好きではなさそうだし、彼のスタイルに合わせたくない」と言って去ることができます。これはオープンソースでもよく起こることです。特定のコミュニティには特定のコラボレーション方法があり、そのスタイルが好きではない人は離れて独自のプロジェクトを行います。
今日のエージェントにはそのフィードバックループがありません。望む方向に導くためのフィードバックを与えることはできますが、最終的にエージェントには社会的行動がなく、チームプレイヤーではありません。チーム構造のゲーミフィケーションでは、あなたがチームの新しい開発者である場合、既存のチームメンバーがあなたのための基準を設定し、プロジェクトの最初の週またはそれくらいで、チーム内での立ち振る舞いについて慎重に学びます。あなたのプルリクエストがマージされるまで、彼らがあなたのためにハードルを上げるからです。
このエージェントについて考えるとき、エージェントが実際に受け入れられたチームメンバーとなり、コードを貢献できる段階に到達する必要があります。今日、それは自動コード補完レベルで起こっています。非常に単純なフィードバックループで、何かを見てTabキーを押し、コードを受け入れ、カーソルやマウスを使用してそのコードを編集できます。これはソフトウェア開発者にとって学習された行動です。インターネットが登場する前からでも、雑誌や本からリスティングを入力し、それらのリスティングを修正して自分のアプリケーションで機能させていました。当時は、誰か他の人や他のエージェントに問題解決について尋ねることができないので、フラストレーションがありました。
今日、エージェント、Copilotは問題を診断するのを助けることができます。インターネットを通じてそれを行う能力はありませんでした。これらのエージェントが今日どのように機能するかを学び、そこから進化させることが、ソフトウェア、またはソフトウェアエージェントによって魔法のように実装できるという未来に飛び込むのではなく、重要です。それが今日、GitHubでのエンジニアリングの課題です。
オープンソースの持続可能性に関する会話に戻りますが、ノーランと話していたことの一つは、これらのコード作成アーティファクトの入力がAIの世界ではさらに重要になるということでした。GitHubのイシューを見ると、それはやや不透明で、メンテナが以前にプロジェクトで作業したことがない限り、あまり意味をなさないようなランダムなコンテキストを入れていることがあります。そして、今日のAIシステムはゼロから始まり、コンテキストがまったくない状態で、与えられたコンテキストしか持っていません。そのコンテキストが、あるリポジトリのニュアンスを必要とするような不透明なGitHubイシューだけであれば、効果的な仕事をするのは非常に難しいです。
これはAI世代の問題なのか、それとも伝統的に「ソフトスキル」と呼ばれる、物事を適切に文書化し、計画を立て、他の人との人間的なつながりを持つようなことを人々が行うのを助けるという問題なのか、どのように考えていますか?このコード生成のユースケースをうまく機能させるために解決する必要がある製品の問題はどの程度あるのでしょうか?
多くの部分がそうです。多くの点で、Copilotは人間と同じ課題を持っています。ほとんどのプロジェクトは大規模であり、現在の動作を実際に実装しているファイルを特定し、新しい動作のために変更する必要があるのは、人間にとっても、エージェント開発者にとっても同様に難しいことです。さらに、モデルには限られたコンテキストウィンドウがあり、プロンプトにどの部分を詰め込み、どの部分を省くかを判断することは、まだ解決されていない課題です。モノレポが大きくなるほど、それは難しくなります。
昨年から、私たちはCopilot Workspaceという製品を開発しています。これは文字通り、エージェントのワークフローの中心にあなたを開発者として配置するものです。イシューをファイルする最初のステップは、リポジトリにあるコードを分析して現在の動作を記述し、あなたの説明に基づいて、以前の状態と新しい状態を箇条書きで説明することです。それを編集できます。それはNotionやJotなどの箇条書きリストのようなものです。そのリストを編集して、「実際にこれは私がイシューを説明したときに望んでいた動作ではない」と言えます。また、ブレインストーミングモードがあり、他に何ができるかについてのアイデアを提供します。
そのワークフローのステップだけを考えても、より良いイシューを書くのに役立ちますが、次に「すべてのファイルにわたってこれらの変更を計画する」というパスを提供し、どのファイルを修正するかを示します。「READMEファイルを追加する」「テストフォルダのファイルを考慮する」などと言えます。それからすべての変更を実装し、実行するよう依頼できます。これはウェブアプリケーションに適しています。ブラウザでのフローで、クラウド環境があるためです。ウェブベースのアプリケーションに取り組んでいる場合、実行してプレビューを見て、プルリクエストをファイルできます。
非特定のイシューをファイルする代わりに、イシューから始めてCopilot Workspaceを使用することで、コードベースをAI(Copilot)が見て、あなたの仕様に基づいてそのワークフローを通じて支援することで、完全なプルリクエストをファイルできます。しかし、人間としてあなたはそれを操作する必要があります。そのワークフローを通過すると、すぐに新しいソフトウェア開発の方法を学ぶ必要があります。大規模言語モデル(エージェント)が分析したこれらの説明をすべて読み、「ここに何かが欠けている、ここに何かを追加する必要がある」と気づく必要があります。エンジニアリングスキル、システム思考、どのオープンソースライブラリを使用するか、どのデータベースを使用するかなどの意思決定スキルや知識はまだ必要です。コンピュータサイエンスのバックグラウンドやコーディングの経験がない人は、適切なサイズのリポジトリでそのワークフローを通過することはできません。
あなたのTEDトークで、AIは参入障壁を下げることで10億人の新しい開発者を可能にする可能性があると言及しました。GitHubはこの新しい開発者の流入、特に非伝統的なバックグラウンドの人々をオンボーディングし教育する課題にどのように取り組んでいますか?
いくつか例を挙げましょう。私のお気に入りの例は、子どもたちに関するものです。私には息子が二人いて、彼らはPythonでコーディングを学んでいます。Copilot以前は、ポッドキャストの真っ最中に私のデスクに来て、「これが私のコーディングチャレンジで、コードのバグを見つけて、ゲームを構築し続けられるようにしてほしい」と言っていました。彼らは、ソフトウェア開発の複雑さよりも、構築しているものの結果に興味があるからです。
ある時点で、彼らにCopilotを与えることができると気づき、VS CodeとCopilotをインストールしました。彼らはすぐに、英語でCopilotにプロンプトを与え、「ここのコードで何が問題なのか」や「このコードがJavaでどのように見えるか教えて」と言って、プログラミング言語を学ぶことができるようになりました。特に学齢期の子どもたちは、世界を探索することに非常に熱心です。親としては、彼らが質問し続けるのを見て、忍耐力や体力が尽きて「十分説明したからもう何か他のことをしなさい」と言ってしまうことがあります。
Copilotにはその問題がありません。無限の忍耐を持ち、質問を続けることができます。何度も何度も質問し続けると、最終的にはガラクタを得るかもしれませんが、決して答えを止めることはありません。これ自体が真に民主化されていると思います。なぜなら、今、私の子どもたちは私が30年前に自分で学んだコーディングの知識と、技術的なバックグラウンド、そして日々この話題に関わっているという利点を持っていますが、世界中の多くの子どもたちはその利点を持っていません。彼らは親がコーディングの仕方を知らない家庭に住んでおり、おそらくPythonやその他を見たことがないかもしれません。コーディングの世界を探索し、それを説明してくれるCopilotを彼らに与え、「ポンゲームやスネークゲームを作って」や「私の小遣いを追跡する小さなアプリを作りたい」などと言える能力は、非常に力を与えるものです。
さらに、これは英語だけでなく、実質的にすべての主要言語で機能します。ドイツやインドネシアなどの6歳の子どもは、最初に英語を学ぶのではなく、地元の言語を最初に学びます。そしてコーディングは主に英語です。このポッドキャストは英語で行われており、私たちはまだ、これに対してAIを実行して、私たちの声がすべて正確に自分たちのように聞こえ、異なるアクセントや異なる言語を持つという段階に達していません。
そこで、英語を学ぶ前にコーディングを学べるという点も民主化に繋がります。インターネットに行って、そこで人が何を言ったかを理解しようとすることなく、質問できます。そしてフォローアップの質問もできます。これらのAIチャットシステムの真の力は、2番目、3番目の質問を受け付けることだと思います。最初の回答を理解できなかった場合、単に「理解できない、説明して」と言えますし、「これは間違っていると思う」と言えば、それは謝罪します。これはプローブして、2番目の答えが何であるかを見ることができるという瞬間です。
これは新しい世代の子どもたち、そして最終的には任意の年齢の人々が、スマートフォンの「読み取り専用モード」から抜け出すのに役立つと思います。すべてのアプリをインストールしても、開発者が意図した方法で使用するのではなく、それが私たちに合わせてカスタマイズされるようにします。
先週、「パーソナルソフトウェア」というブログ記事がありました。リー・ロビンソンか誰かのものだったと思います。後でショーノートに追加できると思いますが、それはパーソナルコンピュータについて話しています。パーソナルコンピュータは実際にはパーソナルではありません。あなたが持っているソフトウェアとまったく同じソフトウェアをダウンロードしているだけで、唯一のパーソナライゼーションは、ドックやホーム画面のアイコンの順序と背景画像くらいです。
しかし、AIやGitHub Spark、Bold.ai、Lazy.dev、Vercel.devなどのツールを使えば、実際に自分だけの小さなソフトウェアを作成できます。サブスクリプションの購入や、これらのアプリに付随する他のサービス、トラッキングなどについて考える必要はありません。小遣い追跡や天気追跡、家族旅行で思い出を集めるための小さなアプリを作るなど、人々が本当に自分自身だけのため、友人や家族だけのためのアプリを提供する時代に入っていると思います。そしてそれを達成した段階に達すると、スマートフォンを使用している人が、自分自身のためにソフトウェアを作成しない理由はありません。
昨日、私たちは走っている時にCopilotとこれらのツールの進化について話していました。エージェントシステムがより良くなり、問題を解決し、GitHubリポジトリに入ってそれらの問題を解決する能力が向上するにつれて、私はこう問いかけました。これらのツールが依存しているオープンソースコミュニティにとって、基本的に「これらの問題があるから、コミュニティが解決するようにしよう」と言っているわけですが、これらのエージェントシステムがそれを行うようになると、オープンソースの新しいシステムは何になるのでしょうか?すでにエージェントシステムがそれを行おうとしているコードに貢献しようとしている開発者のコミュニティにとって、それは何を意味するのでしょうか?それは絶滅につながるのでしょうか?オープンソースコミュニティ自体のシフトについて、あなたのフィードバックと考えをお聞かせください。
今日のオープンソースについて考えると、私たちのほとんどはオープンソースのコンシューマーであり、ライブラリを取り込んでいます。多くのプロジェクトでは1つではなく1000のライブラリを使用しています。今ではオープンソースなしでソフトウェアを作ることは実質的に不可能です。そして、CIの1つに課題があるかもしれません。動作が予想通りではないか、メンテナが時間を割けなかった何か他のものが必要かもしれません。そこであなたはフォークして自分で解決します。
それ自体がすでに挑戦的です。なぜなら、他の人のコードベースをナビゲートする必要があり、それは難しい問題だからです。オープンソースプロジェクトに潜り込むにしても、新しい会社に参加するにしても、スタックが異なる可能性があります。プログラミング言語や使用している環境の異なるバージョンがあるかもしれません。「オープンソースプロジェクトを実行するために、ローカル環境をどれだけスクラップするか」という問題になります。Rubyでは、どれだけRVMをいじるかという問題になります。または、それをそのままにして回避するか、オープンソースライブラリを使用するのではなく、ローカルフォークを使用するかです。
AIを使えば、コードベースをより簡単にナビゲートできます。すでに述べたように、AIに動作を説明させたり、修正したいファイルを特定させたりできます。エージェントモードでは、実行したい変更を説明し、それがどうなるかを見ることができます。それだけでも、開発者が自然に入る「学びながら行う」という行動です。自然言語で達成したいことを説明し、エージェントに「これら3つのファイルを修正する必要があるかもしれない」と特定させ、F5キーを押すか実行して、「今、15のエラーメッセージが表示されている」という状態を確認できます。そしてエージェントに戻って「これらのエラーメッセージをどうすればいいのか」と尋ねることができます。
これによって、コンシューマーがオープンソースプロジェクトの貢献者になるのが容易になると思います。オンボーディングが容易になるからです。プルリクエストをファイルし、Copilotがそのプルリクエストをレビューして、導入したバグ、問題、またはそのプロジェクトのコーディング標準違反をすべて指摘します。そのプロジェクトのトップメンテナがあなたの杜撰な作業を見る前に、すべてを修正するのに十分な速さかもしれません。
次の人間の行動パターンは、オープンソースプロジェクトにコミットする前にどれだけの不安を感じるかということです。コミュニティで高いランクとステータスを持つリーナス・トーバルズのような誰かが私のコードを見て「これは何だ、まずコーディングを学び直せ」と思うのではないかと心配します。それは善意からのものですが、問題は貢献する恐怖を持つ人にもあります。ほとんどのオープンソースプロジェクトは実際に非常にフレンドリーですが、障壁を越えて実際にそのステップを踏み、「ローガンとノーランは実際にとても親切で、私の貢献を受け入れてくれる」ということを学ぶまでは分かりません。
そこで生活が楽になると思います。そして、私が問題をファイルする代わりに、CopilotとエージェントSVを使用して変更を加え、あなたにプルリクエストを送り返し、あなたは自分のエージェントを使用して私の作業をレビューする段階に到達すると思います。そしてあなたが下す最大の決断は「そのフィーチャを自分のライブラリに欲しいかどうか」です。それはまだあなた次第であり、そこでソフトウェア開発者はまだ必要です。AIだけでは製品を設計できないからです。
あなたは、お子さんたちがPythonでプログラムを学んでいる例を挙げました。これは私に、GitHubユニバースで発表したことを思い出させます。特定の指標が何であるかは分かりませんが、Pythonが現在、世界で最も人気のあるプログラミング言語になり、JavaScriptなどを上回っています。ノーランと私はチャーリー・マーシュ(UVやRufなどのPythonツールインフラを作成した人)と会話していて、AIが新しい開発者のオンボーディングや既存の開発者の生産性を劇的に加速させる世界で、Pythonは最終的なプログラミング言語なのか、つまり新しい言語の創造を基本的に止めるのかという質問をしました。
あなたと私は元々、私がオープンソースのJuliaプログラミング言語で行っていた作業を通じて繋がりました。私はGitHubチームに、Juliaのサポートを含むすべてのものを確実に持つように働きかけていました。それが私の経験でした。この分野に関するあなたの考えと、それについてどのように考えているかを教えてください。
最終的なプログラミング言語は人間の言語になると思います。それが英語でもドイツ語でもヒンディー語でも何でも。なぜなら、それは誰もが生まれてから学ぶ層であり、私たちがアイデアを表現する方法だからです。ホワイトボードに向かってノーランとプログラミング言語でブレインストーミングしているわけではありません。スケッチは非常にカオス的です。なぜなら、人間の言語は自然にそのようなものだからです。ホワイトボードにいくつかの単語を書くことができ、それらは後で会議室に入ってきてこれを見る私にとっては全く異なる意味を持つかもしれません。
したがって、最上位層は人間の言語になると思います。プロダクトマネージャーがいる大きな会社では、プロダクトマネージャーはすでにそれらの機能をすべて英語で説明しています。そのため、私たちはすでにその段階にいます。機能は英語で説明され、サポートチケットは人間の言語で説明され、ピッチデッキなどはすべて人間の言語です。
プログラミング言語は、CPUやGPUの上にある最も高い抽象化層で、依然として決定論的です。これが両者の違いです。人間の言語は本質的に非決定論的です。同じ文を言っても、コンテキストや背景、出身地によって異なる意味を持つ可能性があります。プログラミング言語では、通常同じ意味を持つ5つのキーワードを並べると、通常は同じことを意味します。
したがって、この2つの層、つまり非決定論的な層と決定論的な層を持つことになり、開発者はそれらの間を行き来します。Pythonであれ、Rustであれ、Goであれ、Rubyであれ、常に別のプログラミング言語があると思います。逆を予測する人は自然に間違っていると思います。以前は常に別のTwitterクライアントがありました。今はTwitterクライアントはもうありませんが、別のMastodonクライアント、Threads、Blue Skyクライアントがあります。常に私たちが試している別のアプリがあります。テック業界の誰もがそのアプリについて話しているからです。
しかし、これら2つの層が存在する必要があることを理解することが重要です。機械学習モデルは最終的にプログラミング言語に変換される必要があります。それは最下層で行うことができ、命令を実行するだけで、それはすでに見られています。あなたが電話に話しかけて何かをするよう指示したり、ChatGPTに口述するとき、それはあなたが言ったことをまずコードに変換して実行するのではなく、アプリケーションに組み込まれているからそのまま実行します。
しかし、コードインタープリターの場合は逆の例です。ChatGPTでコードインタープリターや単純な数学を使用すると、まずPythonスクリプトを書き、それからそのPythonスクリプトを実行して結果を得たりグラフをプロットしたりします。モデル自体がコードを書いて実行するよりも劣っている場合、突然決定論的な結果が得られます。したがって、これら2つの層は存在し続け、Pythonが永遠に最上位の言語になるということはありません。
これらのランキングについては、毎年GitHubユニバースで発表しています。引用したのは2024年のユニバースで、Pythonが初めて10年ほどで1位になり、JavaScriptが2位になりました。明らかに、JavaScriptエコシステムはJavaScriptとTypeScriptに分かれています。エコシステムの半分は「JavaScriptとTypeScriptを合わせると、まだPythonより大きい」と主張するでしょう。それは確かに事実ですが、昨年JavaScriptが1位で、Pythonが2位だったときはそうではありませんでした。システムを変えなかったのです。同じシステムで、それはただその言語の重要性のトレンドを示しています。
GitHubそのものと開発者のライフサイクルは、常に進化してきたように進化し続けると思います。30年前にCommodore 64でコーディングを始めたとき、大きな黄色の本、ドイツ語の大きなCommodore 64の本か何かを持っていましたが、行くところはありませんでした。土曜日の午後6時に行き詰まり、常に作りたいと思っていたサイドスクローラーの作り方が分からなくなっても、何もできませんでした。その洞察を与えてくれるページが抜けていないか本を見続けるか、ハックしてみて試行錯誤で機能するかどうかを確認するしかありませんでした。
そして、インターネットが登場し、それがすべてを変えました。初期の頃は、メールボックスにダイヤルして、同じエコシステムにいる他のオタクとチャットしていました。開発者が全員集まる単一の場所は実際には存在しませんでした。そしてSourceForgeとGitHub、オープンソースが登場し、突然、その世界があなたに利用可能になりました。今日の土曜日の午後にできることは信じられないほどです。生産性が飛躍的に向上しています。
「AIは開発者を置き換えるのか」という質問をするとき、私たちは常にそのようなことをしてきました。より生産的になるための努力をしてきました。オープンソースの力なしに今作っているものを作ろうとすると、同じものを作るために10倍の開発者が必要になり、市場で競争力を持つことができません。そのため、企業でのオープンソースの使用は、オープンソースを行わなければまだ存在するはずの労働力の一部を置き換えました。同じことが、より高速なコンピュータからインターネット、オープンソース、クラウド、DevOpsなどのすべての技術の進歩にも当てはまります。
同時に、私たちが日々行う作業の量も指数関数的に増加しています。毎日より多くのソフトウェアを書いています。削除するコードよりも多くのコードを毎日書いていないチームを、大小問わず会社で見つけてください。リファクタリングをした場合を除いて、そこでは一度に100万行のコードが追加され、200万行が削除されるような大きなコミットがあります。それも見たことがあると思いますが、現実には常に増加し続けるコードの山の上に座っています。
特にマイクロソフトやGoogleのように長い間存在している会社に参加すると、常に既存のレガシーコードベースで作業していることになります。私のジョークは、開発者にとって最も幸せな日は新しいプロジェクトを始める日で、そこからはすべて下り坂だということです。空白のシートから始め、これらの新しいPythonライブラリをすべて試してみます。そして3週間後、マネージャーに「テクニカルデットがあり、これらのライブラリについて間違った選択をしてしまった、思ったほど良くないので、ゼロから始め直すべきだ」と言います。3週間後にはまだそれが可能かもしれませんが、3ヶ月後には「いや、今はリファクタリングして機能させ、迅速に出荷するために導入したすべての応急処置を取り除く必要がある」となります。
AIは、アプリケーションの複雑さに対処し、正気を保ち、最終的にフローの中に留まり、創造的であるという旅の一歩先を行くのに役立っていると思います。
あなたはAI業界における競争の必要性も強調しています。GitHubはGitHub自体の中で、異なるAIモデル、プラットフォームの間で競争的かつ協力的な環境をどのように促進する計画ですか?
すでに複数モデルの選択肢について言及しました。Copilotに複数のモデルを追加し、今後数ヶ月でさらに追加する予定です。GitHub Modelsには完全なモデルカタログがあり、PlaygroundでMRL、Kohya、phi-4などを試すことができます。DeepSeekモデルを考えると、それはGitHubリポジトリであり、GitHubからHugging Faceへのリンクがあり、そこでデータを見て推論を実行することができます。多くの点で、GitHubはオープンソースの本拠地であるだけでなく、今やAIの本拠地でもあり、これらのAIプロジェクトの多くが協力しています。
私たちはエコシステムの一部です。私はGitHubを巨大な宇宙の中の一つの惑星として見ています。単一のソフトウェア開発スイートは存在しません。あなたのコンピュータを見れば、オペレーティングシステム、コンテナソリューション、VS Codeなどのエディタがあります。今ではVS Codeの多くのフォークがあり、それがオープンソースの本質です。エディタが気に入らなければ、フォークして独自のものを構築し、差別化できるかどうかを確認できます。
Pythonエコシステムにせよ、Reactエコシステムにせよ、多くのオープンソースライブラリがあります。GitHubは大きなRailsショップで、常にRubyとRailsで作業してきました。Rails Foundationの一部であり、Open SSF FoundationやLinux Foundationなどの一部でもあります。私たちはエコシステムの一部として、宇宙の中の一つの惑星であり、他の惑星と相互作用したいと考えています。APIやWebフックなどを通じて統合します。
彼らとパートナーシップを組み、共同ブログ記事を書いたり、会議セッションに参加したり、これらの財団の理事会に一緒に座ったりします。また、単に無料のリポジトリ、無料のCopilot、無料のイシュー、無料のActionsなどを提供することで、コミュニティに還元しています。また、RailsやGitHub、その他のプロジェクトにオープンソースとして貢献しています。
GitHubで働く最も素晴らしいことは、私であろうと他のハブであろうと、GitHubの他の開発者と会話をするのが非常に簡単だということです。私たちのブランドは惑星というよりもスターのようなものであり、誰もがGitHubを知っています。それには良い日と悪い日があります。多くの良いフィードバックがあり、また「なぜ3年間ずっと欲しかったその1つの機能に投資せずに、AIにこれらすべての投資をしているのか」というような生産的な不満もあります。私は頭を掻きながら、「2014年以来、私たちが構築したいと思っていた1万の機能があり、他のすべてのソフトウェア開発者と同様に、私たちも構築したいと思っている無限のバックログを持っています」と考えています。
私たちには、基本的なスケール、稼働時間、アクセシビリティ、セキュリティなど、改善したいと思っている無限のバックログがあります。CopilotとエージェントがそのE努力を減らし、すべての開発者の究極の夢に近づけるのに役立つと私たちは信じています。それは、朝に1つのアイデアを持ち、わずか数回の魔法のようなポンプとコマンドで、それをすべて実装し、夕方にあなたに見せることができるというものです。「あなたはどうやってそれをしたのか」というのが、私たちがソフトウェア開発者として頭の中に持っている夢だと思います。
これは私に、あなたが持っているという10,000の機能のバックログについて考えさせます。同時に、それらすべてをGitHubに組み込みたいと思っており、AIはそのプロセスを加速させることを望んでいます。同時に、以前に話したこの「パーソナルソフトウェア」や「テキストからアプリケーション」などのユーザー1人のための創造について、これはどのようにバランスするのでしょうか?今日、5年先を見ると、GitHubには10,000の機能が増えるのか、それとも実際には現在のGitHubのフローの外に存在する製品が広がるのでしょうか?あるいはより一般的に、ソフトウェアは100倍複雑になるのか、それとも次の5年で選ぶべき100倍多くの異なるソフトウェアを持つことになるのでしょうか?
両方だと思います。ある意味では、奥行きが非常に増すため、より複雑になります。すでにそれを見ています。ここにAIエンジニアリングの本がありますが、これを見て、いくつかのページを読んで、AIモデルによってフルスタックエンジニアリングが根本的に変化したことを理解しています。まだすべての人にとってではありませんが、プロンプトエンジニアリング、評価、責任あるAI、フィルター、モデルのアップグレード、あるモデルバージョンから別のモデルバージョンへの移行なども理解する必要がある方向に向かっています。これは、あるオープンソースライブラリのバージョンから別のバージョンに移行するほど簡単ではありません。それも私たちが思うほど簡単ではないこともよくあります。
ですから、世界はより複雑になると思いますが、同時に、Copilotチャットインターフェースの助けを借りて、単に会話することができるようになります。私はアイアンマンのようなJARVISを耳の中に持ち、私の考えについて反映し、「昨日、私たちはそのポッドキャストに出演し、あなたはこれとそれを言ったので、それはこの顧客ミーティングにも適したトーク内容かもしれません」といった非コーディングの例を使うことができる場所に向かっていると思います。
私たちが構築しているエージェントとCopilot、そして自然言語インターフェースは、その複雑さをより簡単にナビゲートすることを可能にすると思います。エージェントの古典的な例として、私たちの頭の中にあるのは旅行代理店です。「私の家族と春休みの旅行を予約してください。同じ妻、同じ子供たち」と言えるだけで、航空会社のウェブページに行って出発地、目的地、日付、生年月日、名前などを入力し、レンタカー会社やホテルのウェブページにも同じことを繰り返す必要がありません。毎年同じ春休みの旅行をするのであれば、同じ家族だが異なる目的地でも、あなたがビーチが好きで4月に暖かい天気を好むことを知っています。
これは非常に単純な例ですが、毎年2つか3つの休暇を予約する4人家族の場合を想像してください。今あなたはそれをすべて行うAIアシスタントを持っており、それは本当にこのオプション、あのオプション、またはこのオプションの視覚的な選択か、価格選択か、休暇を選ぶための他の基準かもしれません。この例を取り、人生で行わなければならないすべての決断に掛け合わせ、人間の言語インターフェースがクリックとマウス、ユーザーインターフェース、タッチスクリーンなどよりもはるかに簡単に相互作用できることを認識すると、私たちはより大きな容易さと幸福感ですべての複雑さをナビゲートできる生活を見ています。
最後にお聞きしたいことが2つあります。まず、あなたの個人的なテックスタックはどのようなものですか?日々使用しているツールは何ですか?
私たちはGitHubで「GitHubを使って、GitHubでGitHubを構築している」という言い方をしています。これはジョークではありません。朝にGitHubを開き、通知をチェックします。私のリーダーシップチームはGitHubディスカッションで状況の更新を投稿します。もちろん、ビジネスプランニング、価格設定、機能について決定が行われる多くのイシューがあります。Slackのヘビーユーザーでもあるので、それが私の2番目のツールです。GitHubの後でSlackをチェックし、お気に入りのチャンネルはデモチャンネルで、そこで人々が彼らのデモを投稿しています。「これは明日出荷される」というものから、「これはデザイナーがしばらく出荷されないものをプロトタイピングしている」というものまで、広範囲のデモを見ることができます。
時間があり、自分でコーディングするときには、VS Codeを使用します。他にも、ChatGPTを使っています。特に新しい推論モデルを使って、解決したいことを説明し、戦略文書の出発点を得たり、誰かへの簡単なメールを書いたりするときに、どう始めれば良いかわからない場合に使います。私は英語が第二言語なので、時々それが簡単です。これは前の質問に戻りますが、これがどのように世界を変え、20億の開発者をどのように得るかということです。実際には、より識字能力が高く、プロフェッショナルなテキストを書き、プロフェッショナルな会話に参加するのがより簡単な世界になると思います。
2025年に入って40日ほど経ちましたが、最後の質問として、2025年に起こってほしいことと、起こってほしくないことを1つずつ教えてください。
GitHubのCEOとして起こってほしくないのは、Log4jのようなもう一つのセキュリティインシデントです。ある意味では、そのようなことはまた起こるでしょう。しかし、金曜日の午後であろうとなかろうと、そのようなことが起こるたびに、世界中の多くの開発者がサーバーやスタックすべてを修正するために結集する大きな波が生まれます。オープンソースエコシステムをより安全にする段階に近づくほど、私たち全員が夜によく眠れるようになります。GitHubでは、エコシステムの多くのパートナーと共にこれに取り組んでいますし、次の大きなセキュリティインシデントが遠い将来であればあるほど、私たち全員にとって良いことだと思います。
2025年に起こってほしいことは、この1時間話してきたことについて進展することです。つまり、これらのエージェントシステム、これらのコパイロットが私の意図を解釈し、良いソフトウェアを書くのを助けるのが上手になる段階に到達することです。それによって、GitHubの1000人以上のエンジニアを通じて、また個人的に週末に子どもたちと、または自分の趣味のプロジェクトに時間があるときに、より多くのクールなものを構築できるからです。
私は90年代初頭からの開発者であり、2000年代初頭からのプロフェッショナルな開発者です。頭の中にはたくさんのアイデアがありますが、それらをすべて実装するのに十分な時間がないというのが現実です。2025年にそれに少し近づけて、構築したいものを数回のプロンプトで説明し、AIが構築を手助けし、コーディングの喜びを取り戻し、定型作業や行いたくないことを少し取り除くことができれば、産業として一歩前進したことになります。
素晴らしいです、トーマス。これは素晴らしい会話でした。現在、未来、そしてその間のすべてについて話をする時間を取ってくれてありがとうございます。


コメント