
目次 |
---|
50万行が500行になった日:Googleが証明した新しいプログラミング
2017年、Googleの技術責任者Jeff Deanが放った一言が、ソフトウェア業界に衝撃を与えた。
「Google翻訳の新しいニューラル機械翻訳システムは、わずか500行のTensorFlowコードで実装されている。従来の統計ベース翻訳システムは50万行だったのに」
1000倍のコード削減。
参考: https://www.oreilly.com/radar/what-machine-learning-means-for-software-development/
これは単なる最適化の話ではない。プログラミングそのものの定義が根本的に変わったことを意味している。
元テスラAI責任者が提唱する「Software 2.0」という革命
この劇的な変化を理論化したのが、Andrej Karpathyだ。OpenAIの共同創設者であり、テスラでAutopilot開発を指揮した彼は、2017年に「Software 2.0」という概念を提唱した。
参考: https://karpathy.medium.com/software-2-0-a64152b37c35
従来のプログラミング(Software 1.0)では、人間がif文やfor文、関数を駆使して明示的にルールを記述する。一方、Software 2.0では、ニューラルネットワークの重みがプログラムそのものになる。
人間エンジニアの役割は「ルールを書く」ことから「データを用意して学習させる」ことに変わった。
従来のアプローチ(Software 1.0)とSoftware 2.0の違い
自動運転の例をとって違いを説明すると、従来のアプローチ(Software 1.0)では、あらゆる場面(if)をプログラマが想定してソースコードを書く
- if文: 人が左から飛び出してきたら
- if文: 信号が赤だったら
のような感じだ。それに対しニューラルネットワークベースのSoftware 2.0では、このようなif文を書かずに、必要な運転動画等のデータセットをAIに与えることにより解決してしまう。
実例で見るSoftware 2.0の威力
NVIDIA GameGAN:プログラミングなしでPac-Man再現
NVIDIAは2020年、GANという技術を使ってパックマン(Pac-Man)のゲームを「コードを書かずに」完全再現することに成功した。ゲームのルールやエンジンを一行もプログラミングせず、単にゲームプレイの動画を学習させただけで、操作可能なPac-Manが生成された。
参考: AI is Driving Software 2.0… with Minimal Human Intervention – DataScienceCentral.com
まとめ:「プログラミングの死」ではなく「進化」
これらの概念などが発表されてからすでに7年以上。AIの進化とともに実際の現場にも浸透しつつある。
Software 2.0は、プログラミングの終わりを意味するわけではない。むしろ、プログラミングの抽象化レベルが上がったと考えるべきだ。
アセンブリ言語からC言語へ、C言語からPythonへと抽象度が上がってきたように、今度は「コードを書く」から「データで学習させる」へと進化している。
重要なのは、この変化を恐れるのではなく、新しいスキルセットを身につけて適応することだ。そして何より、Software 2.0によって、従来では不可能だった複雑な問題を解決できるようになったという事実を楽しむことだ。
コードを書くことから、未来を設計することへ。これがSoftware 2.0時代の開発者に求められる新しいマインドセットなのかもしれない。