見出し画像

【プログラミングの進化:人間からAIへ】英語解説を日本語で読む【2023年12月23日|@Matthew Berman】

この動画は、AIの台頭によりプログラミングが大きく変わる可能性を探っています。AIアシスタント、特にGitHub Copilotのようなツールはコーディングの生産性を向上させています。AIは人間よりも効率的にコードを書くことができ、休憩の必要がなく、スケーリングも容易です。これにより、人間のプログラマーの生産性も向上します。ただし、AIコーディングにはまだ大規模なコードベースの理解や最新のAPIへの対応などの制限があります。将来的には、これらの制限もデータと合成データの成長により克服され、AIが主なプログラミングのタスクを担うようになる可能性があります。しかし、現時点では人間の介入が依然として必要です。
公開日:2023年12月23日
※動画を再生してから読むのがオススメです。


The end of programming is within sight.

プログラミングの終わりは近い。

I wish this were hyperbole.

これが誇張表現であってほしい。

When I first started doing the research for this video, I had a very different idea of what the outcome was going to be.

このビデオのためにリサーチを始めた当初、私は結果がどうなるのかについてまったく異なる考えを持っていた。

But after thinking through this so much, doing a bunch of research, I have come to the conclusion that programming as we know it is going to die.

しかし、このことを考え抜き、たくさんの調査をした結果、私たちが知っているようなプログラミングは滅びるという結論に達した。

And I'm going to explain how I arrived at that reasoning, and I'm going to show you exactly why I think that way.

その結論に至った経緯を説明し、なぜ私がそう考えるのかを具体的に示すつもりだ。

So let's go through it.

それでは説明しよう。

If you want to find the slides in this video, I'll drop them in the description below.

このビデオのスライドを見たい人は、下の説明文に書いておく。

And if you disagree with anything in the slides, please let me know in the comments.

そして、もしスライドに書かれていることに異論があれば、コメントで教えてほしい。

First, I want to give a shout out to Matt Welsh, who did an incredible talk called Large Language Models and the End of Programming.

まず、「Large Language Models and the End of Programming(大規模言語モデルとプログラミングの終焉)」という素晴らしい講演をしたMatt Welshにエールを送りたい。

And if you haven't seen it, I'll link it in the description below.

まだご覧になっていない方は、下の説明にリンクを貼っておきます。

I definitely recommend checking it out.

ぜひチェックしてみることをおすすめします。

I was very inspired by it.

私はとても刺激を受けました。

I want to start with three things that I know to be true.

まず、私が真実だと知っている3つのことから始めたい。

First, coding is by far the best skill set that I ever learned.

第一に、コーディングは私がこれまでに学んだ中で断然最高のスキルセットだ。

Now, I started my programming career back when I was in high school, and I was always obsessed with video games and computers.

私がプログラミングを始めたのは高校生のときで、いつもビデオゲームやコンピューターに夢中だった。

And I wanted to know how they worked.

そして、それらがどのように動くのか知りたかった。

And the idea that I could build my own video game blew my mind.

そして、自分でビデオゲームを作れるというアイデアが私の心を揺さぶった。

And so I did everything I could to learn how to code myself.

それで、自分でコードの書き方を学ぶためにできることは何でもやった。

And when I got a little bit older, right out of college, coding allowed me to take my ideas and build whatever I wanted.

大学を卒業して少し大人になったとき、コーディングのおかげで自分のアイデアを取り入れて、好きなものを作ることができるようになった。

And I didn't have to rely on anybody else.

他の誰かに頼る必要はありませんでした。

And this was really key.

これは本当に重要なことだった。

I was always thinking of new ideas and wanted to build something.

私は常に新しいアイデアを考え、何かを作りたいと思っていました。

And having to rely on somebody else to build my vision just did not work for me.

自分のビジョンを構築するために誰かに頼らなければならないことは、私にとってうまくいかなかった。

And I could really build as quickly as my passion drove me to do so.

自分の情熱に突き動かされるように、本当にすぐに作り上げることができた。

And that led me, after multiple failed startups, to one that was actually successful.

そして、何度も起業に失敗した後、実際に成功した起業へと導いてくれた。

My previous company called Sonar.

前職はSonarという会社でした。

I started Sonar by myself, wrote all of the initial code, got the first customers.

私はひとりでSonarを立ち上げ、最初のコードをすべて書き、最初の顧客を獲得した。

And then, of course, I brought on an incredible team to help me build it into what it became.

そしてもちろん、素晴らしいチームを迎え入れ、今のような会社に成長させることができた。

But it all started with a conversation with a friend of mine who had this problem.

でも、すべてはこの問題を抱えていた友人との会話から始まったんだ。

And I told them, Hey, let me try to solve that for you using software.

私は彼らに、ソフトウェアを使ってそれを解決してあげようと言ったんだ。

And that led to the next 10 years of my life building out that company.

そしてそれが、その後の10年間、私の人生の中でその会社を築き上げていくことにつながった。

But the key is, I was able to just have a conversation.

でも重要なのは、私はただ会話を交わすことができたということです。

And then, in the same day, I was building the second thing.

そして、その日のうちに2つ目のものを作り上げた。

I know for sure coding is very hard, even after 20 plus years of doing it.

コーディングがとても難しいことは、20年以上やっていてもよくわかる。

It is extremely difficult for me.

僕にとっては非常に難しい。

I mean, python package management continues to be the bane of my existence, and it seems to be hard for most people.

pythonのパッケージ管理は僕の悩みの種であり続けているし、ほとんどの人にとっても難しいようだ。

For those who can get over the fear of even starting to learn it, there's a huge learning curve.

それを学び始める恐怖さえ乗り越えられる人にとっては、大きな学習曲線がある。

Coding requires you to think through every possible permutation of a problem, for in some cases extremely complex systems.

コーディングは、場合によっては非常に複雑なシステムのために、問題のあらゆる可能な順列を考え抜くことを要求する。

And then, you have to write down all of these instructions in a language that is very foreign and doesn't come naturally.

そして、これらの指示をとても外国語でかつ自然には出てこない言語で書かなければなりません。

And of course, bugs are really hard to see when you're actually in the code.

そしてもちろん、実際にコードを書いているときにバグを見るのは本当に難しい。

Number three, because of everything I mentioned, humans are just really bad at coding, at least most are.

3番目に、私が挙げた全ての理由から、人間はコーディングが本当に苦手です。少なくともほとんどの人は苦手です。

The human brain isn't really wired to keep every single edge case, every single permutation of a complex system.

人間の脳は、複雑なシステムのエッジケースや順列をすべて把握できるようにはできていない。

That's why we write code in little batches and then try to put all of these different batches together.

だから、私たちはコードを少しずつ書いて、それからそれらの異なる部分を組み合わせようとします。

And if you think coding was hard today, you have no idea how hard coding was back in the day.

もしあなたが、今のコーディングが難しいと思っているのなら、昔のコーディングがどれだけ大変だったか知らないでしょう。

Look at these two pictures.

この2枚の写真を見てください。

On the left, we have computers that basically took up entire rooms.

左側には、基本的に部屋全体を占めるコンピューターがある。

And then, on the right, software had to be actually physically punched into these cards.

そして右側は、ソフトウェアを実際に物理的にカードに打ち込まなければならなかった。

And then, it got a little easier.

その後、少し楽になった。

Of course, we started with brittle, unforgiving syntax, manual memory management, and thinking about every single byte.

もちろん、最初はもろくて容赦のない構文や、手作業によるメモリ管理、1バイト単位で考えることなどから始まった。

But it got easier.

しかし、だんだん簡単になっていった。

We have now expressive languages, dynamic languages, metaprogramming, automatic memory management, and a wide range of very powerful tools to help us because we are so bad at coding.

私たちは今、表現力豊かな言語、動的言語、メタプログラミング、自動メモリー管理、そしてコーディングがあまりに苦手な私たちを助けてくれる非常に強力なツールの数々を手にしている。

Look at what we started with.

私たちが始めたことを見てみよう。

On the left, we have assembly code, and it is not friendly to humans.

左側はアセンブリコードで、人間には親しみにくい。

Then, we got BASIC, and it became a little bit easier.

それからBASICを手に入れ、少し簡単になりました。

You can start to see it looks a little bit like natural language.

少し自然言語のように見えるようになってきます。

Then, we had C and Java, JavaScript, and things became easier.

その後、C言語やJava、JavaScriptが登場し、より簡単になりました。

And we had more libraries, and we were able to have object-oriented programming.

ライブラリも増え、オブジェクト指向プログラミングもできるようになった。

And we started to craft programming in a way that made it easier for humans to understand.

そして、私たちはプログラミングを人間が理解しやすいように工夫し始めました。

And now, we have more modern programming languages like Python and Go, which if you look at them, they look pretty similar to natural language.

そして今、PythonやGoのような現代的なプログラミング言語がありますが、それらを見ると自然言語にかなり似ています。

Obviously, not perfect.

もちろん完璧ではない。

And if you miss a character here and there, the software is still not going to work.

ここでもそこでも文字を見逃しても、ソフトウェアはまだ動作しません。

But it is definitely a lot better than it used to be.

しかし、以前に比べれば格段に良くなっているのは間違いない。

We've even had enormous advancements in coding tools.

コーディングツールも格段に進歩した。

So, we have better IDEs, and engineers can have every customization that they could possibly think of.

より優れたIDEがあり、エンジニアは思いつく限りのカスタマイズができる。

We have linters, we have cloud editors so you can collaborate with other people anywhere in the world, versioning so we can keep track of where we are in our progress.

リンターがあり、クラウドエディターがあるので世界中どこにいても他の人と共同作業ができますし、バージョニングがあるので進捗状況を把握することができます。

We can also revert changes if we make a mistake.

間違いがあれば変更を戻すこともできる。

We have automation, we have tests, we have package management, even though that doesn't really work all that well still for Python.

自動化も、テストも、パッケージ管理も、Pythonではまだそれほどうまく機能していないけれど。

Syntax highlighting, potential bug warnings.

構文のハイライト、潜在的なバグの警告。

I mean, we really do have a wide range of tools that we could use today.

つまり、私たちは今日、使えるさまざまなツールを持っているのです。

But programming is still super hard.

でも、プログラミングはまだ超難しい。

And then, in 2022, GitHub Copilot changed everything.

そして2022年、GitHub Copilotがすべてを変えた。

For $10 a month, you can have an AI assistant to help you write code.

月額10ドルで、AIアシスタントがコードを書くのを手伝ってくれるのだ。

It was incredibly impressive right away.

それは一目見ただけで、驚くほど感動的でした。

Just write a few words and it will complete entire methods for you.

いくつかの単語を書くだけで、メソッド全体を完成させてくれる。

And there were enormous productivity gains from this, and better code was being written.

これによって生産性が飛躍的に向上し、より良いコードが書かれるようになった。

I really cannot overstate how important GitHub Copilot is.

GitHub Copilotの重要性は、いくら強調してもしすぎることはありません。

And when we look back at the history of programming evolution, GitHub Copilot is going to be an inflection point.

プログラミングの進化の歴史を振り返ったとき、GitHub Copilotは変曲点になるでしょう。

Copilot is not just guessing at what you're writing.

Copilotは、あなたが書いていることを推測するだけではありません。

It's looking at the context of the file, the context of the entire code base.

ファイルのコンテキスト、コードベース全体のコンテキストを見ているのです。

It truly is incredibly impressive.

これは本当にすごいことだ。

And in Matt Welsh's talk, he gives a great analogy.

Matt Welshの講演で、彼は素晴らしい例えをしています。

The way that GitHub Copilot changed programming pretty much overnight is analogous to if we had Pong and then all of a sudden a month later, Red Dead Redemption 2.

GitHub Copilotがプログラミングを一夜にして大きく変えた方法は、まるで私たちが『ポン』を持っていて、そして突然一ヶ月後に『レッド・デッド・リデンプション2』が出たかのようなものです。

Like that type of graphics evolution is essentially what we got with programming with GitHub Copilot.

このようなグラフィックの進化は、GitHub Copilotを使ったプログラミングで本質的に得られたものです。

And there's a lot of reasons why GitHub Copilot had such a big productivity gain.

GitHub Copilotが生産性を大きく向上させた理由はたくさんあります。

And I can't imagine programming without it anymore.

もうこれなしでプログラミングすることは考えられません。

It allows me to stay in the zone of programming.

これのおかげでプログラミングのゾーンにいられます。

So, a day before Copilot came out, if I had to write some code and I wasn't sure how to write it or I didn't know how to access a piece of data in a JSON object, I would go to Stack Overflow, I would Google it, I would try to figure it out, and it would take a lot of time.

Copilotが登場する1日前までは、コードを書かなければならないのに書き方がわからなかったり、JSONオブジェクトのデータにアクセスする方法がわからなかったりすると、Stack Overflowにアクセスしたり、ググったり、解決しようとしたりしていました。

I would essentially leave my IDE, lose my train of thought, go figure it out, and then try to get back into the flow of coding.

私は基本的にIDEを離れ、思考の流れを失い、それを解決しようとしてから、再びコーディングの流れに戻ろうとします。

But now, I don't have to do that.

でも今はその必要がない。

All I do is either type out what I want and it creates it for me, or I start typing what I want and it will just fill out the rest.

私がすることは、私が欲しいものを入力すると、IDEがそれを作成してくれるか、私が欲しいものを入力し始めると、IDEが残りを埋めてくれるかのどちらかだ。

It greatly reduces the amount of trial and error, and you don't have to remember every single syntax.

試行錯誤を大幅に減らすことができるし、構文をいちいち覚える必要もない。

You can just start writing something and it will fill out the rest.

ただ書き始めるだけで、残りを自動的に埋めてくれます。

Coding has become so much less tedious because of GitHub Copilot.

GitHub Copilotのおかげで、コーディングの手間がとても減りました。

So, let me show you what my coding workflow is.

では、私のコーディングのワークフローをお見せしましょう。

And granted, I'm not building production-level applications anymore.

もちろん、本番レベルのアプリケーションはもう作っていません。

I haven't done that in a couple of years.

それは数年間やっていません。

But I am still coding every single day, testing out AI projects.

しかし、私はまだ毎日コーディングし、AIプロジェクトをテストしている。

So, I still do a lot of coding.

だから、今でもたくさんのコーディングをしている。

But here's my coding workflow.

しかし、私のコーディングのワークフローはこうだ。

First, I ask ChatGPT to write me some code.

まず、ChatGPTにコードを書いてもらう。

I am not shy about admitting that the first thing I do, especially with Python because prior to about a year ago, I had no experience with Python, I just ask ChatGPT to write it for me.

特にPythonの場合、1年前まではPythonの経験がなかったので、最初にやることは恥ずかしがらずにChatGPTに書いてもらうことです。

Then, I paste it into my code base and I test if it works.

そして、それを自分のコードベースに貼り付けて、動くかどうかテストします。

Then, after that, I basically weave the different pieces together with Copilot.

その後、基本的にCopilotを使ってさまざまな部分を編み込んでいきます。

Copilot fills in all the gaps for me.

Copilotは私のためにすべてのギャップを埋めてくれます。

And this is me in the middle, the orchestrator.

そしてこれが真ん中にいる私、オーケストレーターです。

That's all I do.

これが私の仕事です。

I'm basically orchestrating AI to write software for me.

私は基本的に、AIが私のためにソフトウェアを書くようにオーケストレーションしている。

And it turns out, AI is actually much better at coding than humans for a lot of reasons.

そして、多くの理由から、AIは人間よりもコーディングが得意であることがわかった。

First, let's say you're a software company and you can either hire a human with a salary who takes breaks, who has wants and needs, who needs benefits, health insurance, onboarding time.

まず、あなたがソフトウェア会社だとして、給料をもらって人間を雇うか、休憩を取り、欲求があり、福利厚生や健康保険、入社までの時間が必要な人間を雇うか。

I mean, the list goes on.

つまり、数え上げればきりがない。

Versus, you can just easily spin up a new AI to write more code.

それに対して、あなたは簡単に新しいAIを立ち上げて、より多くのコードを書かせることができる。

And AI scales horizontally incredibly easily.

AIは驚くほど簡単に水平方向に拡張できる。

And AI coders are not only much faster at coding, but they're much less expensive too.

AIのコーダーはコーディングが速いだけでなく、コストもはるかに安い。

Software engineers take years of training to become good.

ソフトウェア・エンジニアは、優秀な人材になるために何年もトレーニングを受ける。

AI is going to be trained once, and it's going to be good no matter how much you scale that horizontally.

AIは一度トレーニングを受ければ、どれだけ水平方向に拡張しても優秀になる。

And AI is really good at the things I personally struggle with, like finding the right way to access data that's hidden deep in a JSON object or remembering the syntax for some random piece of code that I have to write.

そしてAIは、JSONオブジェクトの奥深くに隠されたデータにアクセスする正しい方法を見つけたり、ランダムに書かなければならないコードの構文を覚えたりといった、私が個人的に苦労していることが得意なのだ。

Now, I'm going to show you a clip of Matt Welsh's talk, and he actually does some math to figure out the difference in cost between a human programmer and an AI programmer.

さて、マット・ウェルシュの講演のクリップをお見せしますが、彼は実際に人間のプログラマーとAIプログラマーのコストの違いを計算しました。

Take a look.

見てください。

How much does it cost to replace one human developer with AI?

人間の開発者1人をAIに置き換えると、どれくらいのコストがかかるのか?

Well, I did the math.

さて、計算してみた。

So, let's say that a typical software engineer salary in Silicon Valley or Seattle is around $220,000 a year.

シリコンバレーやシアトルでの典型的なソフトウェア・エンジニアの給与が年間約22万ドルだとしよう。

That's just the base salary, doesn't include benefits, doesn't include equity packages, doesn't include your free lunch and your bowling alley and all that kind of stuff.

それは基本給だけで、手当や株式パッケージ、無料の昼食やボウリング場などは含まれていません。

So, let's just assume that that stuff costs, you know, $92k a year.

では、そのようなものが年間9万2000ドルかかると仮定しましょう。

This is again a little conservative.

これはまた少し保守的です。

So, the total cost to your employer is roughly $300,312k for one S. How many working days are there in a year?

ということは、あなたの雇用主が負担する総費用は、1人のSでおよそ30万312ドルということになります。

About 260.

約260日です。

And so, it costs $1,200 a day to employ you as an S at one of these companies.

ということは、このような会社でSとしてあなたを雇うには、1日あたり1200ドルかかることになる。

Let's do the math.

計算してみよう。

How many lines of code do you think an average developer checks into the code base every day?

平均的な開発者は毎日何行のコードをコードベースにチェックすると思いますか?

I mean, finalized, tested, reviewed, and approved lines of code.

つまり、最終化され、テストされ、レビューされ、承認されたコードの行数だ。

Most of us who've worked in industry know that the median value is zero because there are so many days that you go by where you're waiting on somebody else or you're in meetings all day, you didn't get anything done, you didn't check it in.

業界で働いたことのある人なら、中央値はゼロだと知っているはずだ。なぜなら、誰かを待っていたり、一日中ミーティングに参加したりして、何もできず、チェックインもしなかったという日がたくさんあるからだ。

But let's just be generous here and say it's about 100.

でも、ここでは気前よく、約100としましょう。

I know 100 doesn't sound like a lot.

100という数字が多くないことは分かっている。

People are like,But I was programming all day.

でも、一日中プログラミングしていたんだ。

Yes, but 90% of your code, you ended up throwing out or somebody reviewed it and said it was no good, you have to rewrite it, you were trying to figure out what to do, you were revamping it.

でも、コードの90%は、結局捨てたり、誰かがレビューして「これはダメだ、書き直さなきゃ」と言ったりして、どうすればいいかを考え、改良していたんだ。

So, like the final result of your output is something like 100 lines of code a day.

だから、最終的なアウトプットの結果は、1日100行のコードということになる。

That's the final result.

それが最終的な結果です。

How many GPT-3 model tokens is that?

それはGPT-3モデルのトークン数ですか?

It's about 10 tokens per line, more or less.

1行あたり10トークンくらいです。

And the cost for GPT-3, currently, this is probably a little out of date, but at the time I made this slide, it was 2 cents for 1,000 tokens.

GPT-3のコストは、現在、これは少し古いかもしれませんが、このスライドを作成した時点では、1,000トークンで2セントでした。

So, if you do the math, then the total cost for the output of one human software developer on GPT-3 is 12 cents.

ということは、GPT-3の人間のソフトウェア開発者1人のアウトプットにかかる総コストは12セントということになります。

This is a factor of 10,000.

これは10,000分の1だ。

This should scare us all.

これはわれわれ全員を脅かすものだ。

This suggests potentially a very large shift in our industry.

これは、我々の業界に非常に大きな変化が起こる可能性を示唆している。

Now, obviously, this is super rough math, and I think one thing that he missed is that he assumes that AI just needs to write code once and it'll just work.

さて、これは明らかに超大雑把な計算であり、彼が見落としていることのひとつは、AIはただ一度コードを書けば動くという前提に立っていることだ。

And that is just not the case, especially when you have teams of agents.

特にエージェントのチームがある場合は、そうではありません。

They're going to be working with each other and iterating on their own code.

彼らは互いに協力し合い、自分たちのコードを反復することになる。

So, I don't think the cost is as simple as he put it, but still, it's a good illustration of the exponential difference in cost between a human programmer and an AI programmer.

だから、彼が言うほど単純なコストではないと思うが、それでも人間のプログラマーとAIのプログラマーとの間に指数関数的なコストの差があることを示す良い例だ。

But today, AI coding still has a lot of limitations.

しかし今日、AIコーディングにはまだ多くの限界がある。

One of them is context window limitations.

そのひとつがコンテキスト・ウィンドウの制限だ。

So, how do you take huge code bases and allow a large language model to understand the entire code base all in one go?

では、膨大なコードベースを、大規模な言語モデルで一挙に理解するにはどうすればいいのだろうか?

You can't simply copy the whole code base.

単純にコードベース全体をコピーすることはできない。

You're just going to be limited by the token size.

トークンのサイズに制限されてしまうからだ。

And also, even if you were able to fit an entire codebase in a prompt, there's this thing called Lost in the Middle where basically large language models can remember things at the beginning and at the end of prompts, but often struggle with remembering things in the middle.

また、仮にコードベース全体をプロンプトに収めることができたとしても、「ロスト・イン・ミドル(Lost in the Middle)」と呼ばれるものがあり、基本的に大規模な言語モデルは、プロンプトの最初と最後には記憶することができるが、途中の記憶には苦労することが多い。

And right now, the biggest bottleneck for AI getting better is data.

そして今、AIがより良くなるための最大のボトルネックはデータだ。

Companies don't want to share their code, and humans can only write so much code.

企業はコードを共有したがらないし、人間が書けるコードは限られている。

But that's going to change, and I'll explain that in a minute.

しかし、それは変わる予定で、すぐに説明します。

And lastly, large language models are often not up to date with the latest APIs and SDKs.

そして最後に、大規模な言語モデルは最新のAPIやSDKに対応していないことが多い。

And current solutions to fix that, like retrieval augmented generation and web crawling, are pretty brittle.

そして、検索拡張生成やウェブクローリングのような、それを解決するための現在のソリューションはかなりもろい。

But as I mentioned, it is getting better, and we're going to have this snowball effect, especially with data and synthetic data.

しかし、申し上げたように、それは改善されつつあり、特にデータや合成データでは、雪だるま式に効果が出てくるでしょう。

So, I mentioned the current bottleneck is data, but it's also compute.

現在のボトルネックはデータだと言いましたが、コンピュートでもあります。

But I'm not even worried about compute.

しかし、私はコンピュートについては心配していません。

The compute bandwidth will grow, especially with all this investment in silicon.

特にシリコンへの投資によって、コンピュート帯域幅は拡大するでしょう。

That is why NVIDIA is a massive company now.

だからこそ、エヌビディアは今や巨大企業なのです。

And the data will grow too.

データも成長するでしょう。

I've been talking a lot about synthetic data recently, and this is a great example.

私は最近、合成データについてよく話していますが、これは素晴らしい例です。

First, as humans are able to write more code with AI tools assisting them, all of that code can go back into models to train them to be better.

まず、人間がAIツールの支援を受けてより多くのコードを書くことができるようになると、そのコードはすべて、より優れたモデルに戻すことができる。

And not only that, as AI writes code at a much faster rate than a human ever could, all of that new code will go back into the model to make it better at coding.

それだけでなく、AIが人間よりもはるかに速いスピードでコードを書くようになると、その新しいコードはすべてモデルに戻され、より優れたコーディングができるようになる。

And so, we do have this nice snowball effect.

こうして、雪だるま式に効果が現れる。

As everybody becomes more productive at coding and more code gets written, all of that code will be fed back into the AI models to make them better.

誰もがコーディングの生産性を上げ、より多くのコードを書くようになると、そのコードはすべてAIモデルにフィードバックされ、より優れたものになる。

And so, there are a few solutions to the current limitations.

現在の制約に対するいくつかの解決策があります。

One is codebase mapping or compression.

ひとつは、コードベースのマッピングや圧縮だ。

Basically, taking massive code bases and mapping them using shorthand that large language models can understand.

基本的には、膨大なコードベースを、大規模な言語モデルが理解できる省略記法を用いてマッピングする。

A project that I've reviewed that does this really well is called AER AI-D, and they use something called Universal cags to define in shorthand all of the methods and all of the code that you have in your code base.

私がレビューしたプロジェクトでは、AER AI-Dというものがあり、彼らはUniversal cagsというものを使って、コードベースにあるすべてのメソッドとすべてのコードを速記法で定義している。

and then is able to feed that very compressed mapped version into a large language model so it can actually understand an entire code base.

そして、その非常に圧縮されたマッピング・バージョンを大規模な言語モデルに送り込むことで、実際にコードベース全体を理解することができる。

This is also why most AI coding projects want you to start from scratch and can't iterate on existing code bases.

ほとんどのAIコーディング・プロジェクトが、ゼロから始めることを求め、既存のコードベースを反復できない理由もここにある。

It's for this exact problem.

まさにこの問題のためだ。

But this problem will be solved, whether it's from increased context sizes solving the lost in the-middle problem, or mapping and compressing code bases so that large language models can understand them easily.

しかし、この問題は解決されるでしょう。コンテキストのサイズを大きくすることで、中途半端なロスト・イン・ミドルの問題を解決したり、大規模な言語モデルが簡単に理解できるようにコードベースをマッピングして圧縮したりすることができます。

And then also, we're going to be fine-tuning models specific to coding tasks.

さらに、コーディング作業に特化したモデルの微調整も行っていく。

So we're going to take these models that were already good at coding, and we're going to make them even better.

だから、私たちは既にコーディングが得意なモデルを使って、それをさらに向上させる予定です。

Now, what will coding look like in the near future?

さて、コーディングは近い将来どのようになるのだろうか?

And this is what I believe: there's going to be a human project manager who takes the requirements from the business side and puts it into a format that a large language model can understand.

それは、ビジネスサイドからの要求を、大規模な言語モデルが理解できるようなフォーマットに落とし込む人間のプロジェクトマネージャーが登場することだ。

Then, that human project manager is going to feed it into an AI agent team.

そして、その人間のプロジェクト・マネージャーがAIエージェント・チームにそれを送り込む。

So that team will have coders, testers, project managers of their own, but it's all going to be AI.

そのチームには、コーダー、テスター、プロジェクト・マネージャーがいますが、すべてAIが担当します。

And they're going to write the code, they're going to iterate on it, they're going to test it themselves.

彼らはコードを書き、それを反復し、それを自分でテストするでしょう。

And then finally, all of that is going to be fed to a human quality assurance person.

そして最後に、そのすべてが人間の品質保証担当者に渡される。

So somebody who's going to make sure it checks all the boxes, the functionality that is required.

だから、全ての要件を満たすことを確認する人が必要です。

And then it's going to go back to the human PM to think about new features that they want to release after talking to users.

そして、ユーザーと話した後にリリースしたい新機能を考えるために、人間のPMに戻される。

But what's missing from this diagram?

しかし、この図に欠けているものは何だろう?

Can you see it already?

もうわかりますか?

There are no programmers.

プログラマーはいない。

Well, no human programmers, that is.

そう、人間のプログラマーがいないんだ。

And it's true, in the near future, I don't think there's going to be human programmers on most projects.

近い将来、ほとんどのプロジェクトで人間のプログラマーがいなくなると思う。

And I'll talk about what those timelines look like a little bit later.

そのタイムラインがどのようなものかは、もう少し後でお話しします。

And don't believe me, it's already happening.

そして、私を信じないでください、それはすでに起こっているのです。

So here's a tweet from Amjad Mad at a hackathon where a winner is a non-technical PM and her work powered by Repet + AI is more technically impressive than teams of Engineers.

ハッカソンでのAmjad Madのツイートです。優勝者は技術者ではないPMで、Repet + AIを利用した彼女の作品は、エンジニアのチームよりも技術的に印象的でした。

I was surprised at first, but it struck me that PMs must be exceptional prompting.

最初は驚いたが、PMは卓越したプロンプトを出すに違いないと思った。

After all, that is their job.

結局、それが彼らの仕事なのだから。

So somebody at a hackathon who was non-technical, a product manager, was able to win the hackathon.

だから、ハッカソンで非技術者であるプロダクト・マネージャーの誰かがハッカソンで勝つことができた。

And this is who it was.

それがこの人だった。

She replied to that post, Hello, I had a lot of fun building DocuTalk with Repet, and a huge fan.

こんにちは、RepetでDocuTalkを作るのはとても楽しかったです。

Repet has collapsed the distance between a vision in my head and a fully functional product.

Repetは私の頭の中のビジョンと完全に機能する製品との間の距離を縮めてくれました。

So if she had no coding ability whatsoever, she was able to take the ideas in her head and implement them using software.

だから、もし彼女にコーディング能力が全くなかったとしても、頭の中のアイデアをソフトウェアを使って実装することができた。

So impressive.

とても印象的だ

And Vinod Khosla from Khosla Ventures, the founder of Khosla Ventures, who has had his hand in so many massive Silicon Valley success stories, has this to say: Portfolio companies OpenAI and Repet set this off.

そして、シリコンバレーの巨大なサクセスストーリーを数多く手掛けたKhosla Venturesの創設者であるKhosla VenturesのVinod Khoslaは、このように語っている: ポートフォリオ企業であるOpenAIとRepetが、これを引き起こしました。

A total paradigm shift.

完全なパラダイムシフトです。

No surprise a marketing person just won a coding competition.

マーケティング担当者がコーディング・コンテストで優勝したところで、驚くことはない」。

This was in response to that post by Amjad.

これはアムジャドの投稿に対するものだ。

And actually, Vinod Khosla put together a list of predictions for the future, and one of them is prediction number two: There could be a billion programmers, all programming in natural language.

そして実は、ヴィノッド・コスラは未来予測のリストをまとめていて、そのうちのひとつが2番目の予測だ: 10億人のプログラマーが存在し、全員が自然言語でプログラミングする。

Many parts of the craft of coding would be commoditized, and the entire field would be opened up to those without CS degrees.

コーディング技術の多くの部分がコモディティ化され、この分野全体がCSの学位を持たない人々にも開放されるだろう。

Democratizing computer coding is well on its way.

コンピューター・コーディングの民主化は順調に進んでいる。

In the next 10 to 15 years, he says, there could be a billion programmers.

今後10年から15年で、10億人のプログラマーが誕生すると彼は言う。

But I don't even think we should call them programmers at that point, and I'll tell you why in a moment.

しかし、私はその時点で彼らをプログラマーと呼ぶべきではないと思っている。

Here's another one: Dr. Jim Fan, ChatGPT turns one today, a year that felt like a decade.

もう一人: ChatGPTのジム・ファン博士が今日で1歳になりました。

And I just want to read the top bullet point:English as the hot, modest new programming language.

一番上の箇条書きを読んでほしい:英語はホットで控えめな新しいプログラミング言語である。

Natural language, that is the future of programming.

自然言語、それはプログラミングの未来です。

And the best part is, anybody who speaks English could get computers to do exactly what they want.

英語を話せる人なら誰でも、コンピューターに思い通りのことをさせることができる。

But it's not all rainbows and unicorns right now.

しかし、今は虹とユニコーンばかりではない。

There's still a lot of friction with using AI coding, some of which I've already touched on.

AIのコーディングにはまだ多くの摩擦があり、そのいくつかはすでに触れたとおりだ。

And I thought this was such a funny meme.

そして、これはとても面白いミームだと思った。

So days before OpenAI, developer coding 2 hours, developer debugging 6 hours.

OpenAIの数日前、開発者のコーディングに2時間、開発者のデバッグに6時間。

Then days after OpenAI, ChatGPT generates code in 5 minutes, developer debugging 24 hours.

そしてOpenAIの数日後、ChatGPTは5分でコードを生成し、開発者は24時間デバッグする。

So this still does happen.

つまり、これはまだ起こっていることなんだ。

It's not as bad as this, but this is funny and I just wanted to show it to you.

これほどひどくはありませんが、これは面白いのでお見せしたかったのです。

And Bindu Reddy had something to say about it as well.English is the new programming language, but it has its own challenges.

そして、Bindu Reddyもそれについて何か言っていました。英語は新しいプログラミング言語ですが、それには独自の課題があります。

Prompting is very brittle, so you change the prompt to accommodate one edge case and another will break.

プロンプトは非常にもろいので、あるエッジケースに対応するためにプロンプトを変更すると、別のプロンプトが壊れてしまう。

Very similar to how coding works today.

今日のコーディングの仕組みとよく似ている。

And prompting is going to need versioning, testing, monitoring, and evaluation.

そしてプロンプトには、バージョン管理、テスト、モニタリング、評価が必要になる。

And these are all tools that are just starting to be built right now.

これらはすべて、今まさに構築され始めているツールだ。

So I do believe in the short term and probably the midterm, humans need to be in the loop to just make sure the software is behaving exactly like expected.

だから私は、短期的には、そしておそらく中期的には、ソフトウェアが期待通りに動作しているかどうかを確認するために、人間がループに入る必要があると考えている。

Here's an example that's available today.

ここに今日利用可能な例があります。

Take a look at this video.

このビデオを見てください。

This is called Jarvis by McKay Wrigley, and all he does is speak about what he wants built, and the entire software stack is built for him.

これはMcKay WrigleyによるJarvisと呼ばれるもので、彼が何を作って欲しいかを話すだけで、ソフトウェア・スタック全体が彼のために構築される。

Run Jarvis.

Jarvisを走らせる。

Yes, I need another Next.js with Tailwind.

そうだ、Tailwindを使ったNext.jsがもうひとつ必要だ。

One sec.

ちょっと待って。

You want me to create a new Next.js app with Tailwind CSS?

TailwindのCSSで新しいNext.jsアプリを作りましょうか?

Yes, one moment.

はい、少々お待ちください。

What would you like the app to do this time?

今度はどんなアプリにしますか?

I want a basic social networking app, and it needs to have three things.

基本的なソーシャルネットワーキングアプリが欲しいです。そして、3つの機能が必要です。

It needs to have a profile creation form.

プロフィール作成フォームが必要です。

It needs to have a profile viewer.

プロファイル・ビューアが必要です。

And I also want a way to see all the users on the network.

また、ネットワーク上の全ユーザーを見る方法も欲しい。

One sec.

1秒。

You want a basic social networking app that includes a profile creation page, a profile viewer, and a list of all the users?

あなたは、プロフィール作成ページ、プロフィール・ビューワー、全ユーザーのリストを含む基本的なソーシャル・ネットワーキング・アプリをお望みですか?

What would you like the profiles to have?

プロフィールに何を持たせたいですか?

Let's keep it kind of simple.

シンプルにしましょう。

Let's just do a name, an email, and a username.

名前、Eメール、ユーザー名だけにしましょう。

One sec.

ちょっと待って。

I'll add those fields to the profile schema.

これらのフィールドをプロファイルスキーマに追加します。

What else can I do?

他にできることは?

I want you to optimize the site so that it works with mobile and desktop devices, and I also want you to style it in like a dark mode on it.

サイトを最適化して、モバイルとデスクトップデバイスで動作するようにしてください。また、ダークモードでスタイリングしてください。

Okay, I'll optimize it for both mobile and desktop and style it in dark mode.

わかりました、モバイルとデスクトップの両方に最適化し、ダークモードのスタイルにします。

Anything else?

他に何かありますか?

Start building.

作り始めてください。

Okay, I'll start working.

よし、作業を始めるよ。

I created a new repo called Basic Social Network.

Basic Social Networkという新しいレポを作った。

Continuing, I initialized the app.

続けて、アプリを初期化した。

Continuing, I'm creating a profiles table in your database.

続けて、データベースにプロファイル・テーブルを作成します。

Continuing, I'm building the features you asked for.

続けて、リクエストされた機能をビルドしています。

Continuing, the app is building correctly.

続けて、アプリを正しくビルドしています。

Would you like me to deploy it?

デプロイしてもらえますか?

Oh yeah, okay, deploying to Versal.

はい、Versalにデプロイします。

Continuing, I deployed your project to Versal on M personal.

続けて、あなたのプロジェクトをMパーソナル上のVersalにデプロイしました。

Continuing, I'm all done.

続けて、私は全部終わりました。

Wasn't that fast?

早かったでしょ?

You should give me a raise.

昇給してください。

Okay, if we refresh this, okay, we have Basic Social Network.

さて、これをリフレッシュすると、基本的なソーシャルネットワークがある。

Where's the just now?

ジャストナウはどこだ?

Okay, just now it's building.

わかりました、今ビルドしています。

It's building Basic Social Network.

ベーシック・ソーシャル・ネットワークを構築中です。

Okay, just building.

オーケー、構築中。

Just now, you know the drill.

ちょうど今、あなたはドリルを知っている。

This is all live.

これはすべてライブです。

Oh, let's jump into Superbase.

スーパーベースに飛び込もう。

You should be able to see.

あなたは見ることができるはずです。

Yeah, see, we now, guess what?

はい、見てください、今、分かりましたか?

We have now, we have a profiles table with the correct schema.

正しいスキーマのプロファイル・テーブルができた。

Boom, dark mode.

ダークモードだ。

Let's see if it's responsive.

反応があるか見てみましょう。

Okay, that looks fine.

よし、問題なさそうだ。

Okay, now we gotta try this out.

よし、次はこれを試してみよう。

I'm gonna put, uh, test.

テストしてみよう。

Let's do, uh, just test.

テストしてみましょう。

And we'll just do test@gmail.com.

test@gmail.com

We should be able to submit this, and this should work.

これを送信すれば、うまくいくはずです。

Profile created successfully.

プロファイルの作成に成功しました。

Okay, okay, it shows the profile.

プロフィールが表示されました。

You see, we have an all profiles list.

すべてのプロフィールのリストがあります。

Let's click that.

それをクリックしてみましょう。

Okay, this is showing us the profiles.

これでプロフィールが表示されました。

Now let's go, let's make sure this is responsive.

では、これがレスポンシブであることを確認しましょう。

It is, it is.

その通りです。

And if we go to our database, it is in our DB.

データベースに行けば、DBにあります。

The game has changed, everyone.

皆さん、ゲームは変わりました。

Right now, we are going through an explosion of AI coding.

今、私たちはAIコーディングの爆発的な普及を経験しています。

This is where we're at right here.

私たちは今、ここにいるのです。

We're at the very beginning of it.

まさにその始まりなのです。

Remember, GitHub Copilot came out only about a year ago.

GitHub Copilotが登場したのはほんの1年ほど前のことです。

ChatGPT just about a year ago.

ChatGPTが登場したのも約1年前です。

But it's going to grow exponentially.

でも、指数関数的に成長していくだろう。

And when we get up to this point, there's not going to be any more programming, I'm sad to say.

そして、ここまで来たら、悲しいことだが、もうプログラミングはできないだろう。

And here's a chart that Ben Tossel grabbed from Google search trends.

これはベン・トーセルがグーグルの検索トレンドから取ってきたグラフだ。

This is AI coding search volume over time.

これはAIコーディングの検索ボリュームの経年変化だ。

And as you could see, right at the end of 2022, we had an explosion in people searching for AI coding tools.

ご覧の通り、2022年末にAIコーディングツールを検索する人が爆発的に増えました。

So that's all right now and the midterm.

これは現在と中期的なものです。

What about the long term?

長期的にはどうでしょうか?

I see it being direct natural language to computation, nothing in between.

私は、自然言語から計算機へと直接的に移行すると見ています。

So what does that mean?

では、それは何を意味するのか?

Let's talk about it.

それについて話そう。

At the top, we have humans, and they are just going to speak in natural language, whatever language they want.

一番上には人間がいます。彼らは自然言語で話すだけです。どんな言語でも構いません。

That language is going to be processed and computed by the large language model.

その言語は大規模な言語モデルによって処理され、計算される。

And then, we're going to have end devices, whatever device it is.

そして、エンドデバイスがあるでしょう、どんなデバイスでも。

Whether it's lights around your house, it's your car, computers, phones, anything.

家中の照明でも、車でも、コンピューターでも、電話でも、何でもいい。

The large language model is going to program those devices to do exactly what we want.

ラージ言語モデルは、私たちが望むとおりの動作をするよう、それらのデバイスをプログラムする。

So, the large language model is the operating system.

つまり、大きな言語モデルはオペレーティング・システムなのだ。

There are no programmers anymore, humans are the programmers.

もはやプログラマーは存在せず、人間がプログラマーなのだ。

And since all we have to do is say what we want, I wouldn't even consider that programming at that point.

私たちがしなければならないのは、私たちが望むことを言うことだけなので、その時点ではプログラミングとは考えません。

So, there are no programmers, no teams, just humans talking to large language models.

つまり、プログラマーもチームも存在せず、人間が大規模な言語モデルと会話しているだけなのだ。

And so, how do we get to this point?

では、どうすればここまでたどり着けるのか?

We need large language models to get really good at understanding what humans want and converting that into code.

人間が何を求めているかを理解し、それをコードに変換することに長けている大規模言語モデルが必要なのです。

And they're already really good at that.

そして、彼らはすでにその能力に長けている。

And today, it's the worst it's ever going to be, it's only going to be better.

そして今日、それはこれまでで最悪の状態であり、より良くなる一方だ。

So, this is the future, this is the end of programming.

つまり、これが未来であり、プログラミングの終焉なんだ。

And what will we need in the future?

そして、これからの時代に必要なものは何だろう?

To be honest, I'm not sure.

正直なところ、よくわからない。

I have a few thoughts.

いくつか考えがある。

Maybe computer scientists to do the really low-level deep Innovative work.

本当に低レベルの深い革新的な仕事をするコンピューター・サイエンティストが必要かもしれない。

Maybe we'll need quality assurance.

品質保証が必要になるかもしれない。

Well, certainly AI can do a lot of that, but maybe we always want to have a human in the loop at some point.

まあ、確かにAIはその多くをこなすことができるが、おそらく我々は常に、ある時点ではループの中に人間がいたいと思っている。

And we probably also want to verify alignment, and that's again another example of when humans need to be in the loop.

また、おそらくアライメントの検証も行いたいでしょうし、これも人間がループに入る必要がある場合の例です。

So, what's the timeline for all of this?

では、これらすべてのタイムラインは?

And of course, this is just my estimate.

もちろん、これは私の予想に過ぎない。

In 1 to 2 years, we are going to have an absolute explosion in the number of non-technical people who can write software.

1〜2年後、非技術的な人々がソフトウェアを書ける数が爆発的に増えるでしょう。

These are people who have never written a line of code in their entire lives.

彼らは、これまでの人生で一行もコードを書いたことのない人たちだ。

They are able to write software that drives value for Humanity.

彼らは、人類に価値をもたらすソフトウェアを書くことができる。

5 years from now, non-technical people are going to manage huge teams of AI agents to build complex software.

5年後には、技術者ではない人々が、複雑なソフトウェアを構築するAIエージェントの巨大なチームを管理するようになるだろう。

And again, these are people who have never written a line of code in their life.

そしてまた、彼らは人生で一行もコードを書いたことがない人たちだ。

They're going to have entire teams, entire companies of these AI agents.

チーム全体、会社全体がAIエージェントで構成されるようになるでしょう。

And then, lastly, 10 years from now, natural language to computation, also known as the end of programming.

そして最後に、今から10年後、自然言語から計算へ、プログラミングの終焉とも呼ばれる時代がやってきます。

So, I started this talk by saying programming was the best skill I ever learned, and I really want to emphasize how true that is.

だから、私はこの話を始めるときにプログラミングは私が学んだ中で最高のスキルだと言いましたが、それがどれだけ真実かを強調したいです。

But is coding still a must-learn skill?

しかし、今でもコーディングは習得しなければならないスキルなのだろうか?

Would I have my son and daughter learn how to code?

息子や娘にコーディングを学ばせるだろうか?

Well, the answer is yeah, I still would.

はい、答えはそうです、私はまだやります。

I think learning to code, first of all, it's just super interesting.

コードを学ぶことは、まず第一に、とても面白い。

Second, it teaches you how to think about problems, how to break problems down, how to use logic and reasoning to solve difficult problems.

第二に、問題についての考え方、問題の分解方法、難しい問題を解決するための論理と推論の使い方を学ぶことができる。

And so, yes, I still think learning to code, learning computer science is valuable.

だから、コードを学ぶこと、コンピューター・サイエンスを学ぶことは、今でも価値があると思う。

But what will become vastly more valuable in the very near future is learning how to work with AI to accomplish that coding.

しかし、ごく近い将来、より大きな価値を持つようになるのは、そのコーディングを達成するためにAIと協力する方法を学ぶことです。

So, thank you very much.

ありがとうございました。

And of course, I'm sorry, I love programming.

もちろん、申し訳ありませんが、私はプログラミングが大好きです。

I want to be clear about that.

そのことははっきりさせておきたい。

And it does make me sad to think about in the very near future, in my lifetime, there probably won't be a need for that skill set anymore.

そして、ごく近い将来、私が生きている間に、おそらくそのスキルセットの必要性がなくなってしまうことを考えると悲しくなります。

Let me know if you agree, let me know if you disagree.

賛成なら私に、反対なら私に教えてください。

Leave all your thoughts in the comments below.

あなたの考えをすべて下のコメントに残してください。

I am going to read them all and I'm going to respond to them.

私はそれらをすべて読み、それらに答えるつもりだ。

And if you liked this video, please consider giving a like.

そして、もしこのビデオが気に入ったら、「いいね!」を押してください。

And subscribe, and I'll see you in the next one.

そして、登録して、次回お会いしましょう。


この記事が気に入ったらサポートをしてみませんか?