なぜPythonの時代が終わりなのか

現時点で機械学習の分野で最もシェアが高いプログラミング言語はPythonであるが、将来的にはその地位が奪われていくという意見は少なくない。筆者も第3次AIブームの終わりと共に、いずれ別の言語によって置き換えられていくと考えている。本稿ではその理由とシナリオについて検討するものである。

なぜPythonが覇権を握ったのか

Pythonが没落し続けていると論じる上で、何故Pythonが繁栄しているかを示さねばならない。一言で言えば、Pythonのシェアが高くなったのは、最初に機械学習の分野でこぞって使い出したのがプログラミングのド素人だったからだ。

複数のプログラミング言語に精通している人にとっては常識だが、Pythonは文法が簡単であり習得しやすい。ループの扱いなんてこんな雑で良いのかというくらい、何でも回せてしまう。よく機械学習の論文で出てくる擬似言語はPythonに似たものが多いが、それほど文法や表記がJavaやC言語など旧時代の言語より簡単である。

研究者がプログラミング言語を扱う場合、嘗てはFortranやC言語などが使われたが、やはり習得コストが高く、彼らにとってハードルは高かった。そんな時登場したPythonというのは如何にも簡単で覚えやすかったというのは重要である。

Pythonはプレーンな状態では非常に遅いが、 numpyなどライブラリの拡充と共に低水準での計算も可能となり、数値計算における利便性や速度性の問題は改善されていった。その中でディープラーニングブームが登場したことにより、一気に機械学習エンジニアが採用するようになったというのが大まかな歴史である。

第3次AIブームの終わり

しかし、ライブラリ依存というのは如何にも他者任せであり、言語の進化としては不安定なものである。ライブラリのアップデートが終了したらどうなるのか、他のライブラリとの互換性は維持されるのかなど潜在的な問題は多い。これは前述の通り、プレーンなPythonでは数値計算としては使い物にならないのがポイントである。そして、スコープなど言語としての問題も多く、大規模なアプリケーションを想定した時、やはりPythonでは開発における障害が多いのも問題だ。

研究者が人工知能研究の過程でPythonを使って機械学習を進歩させ、多くのエンジニアが乗っかってPythonのシェアが伸びた。しかしこれからは誰でも多かれ少なかれ機械学習に関与する人が増えてくる時代である。多くの機械学習ライブラリやアプリケーションが開発され、プログラミングのド素人でも機械学習ができる時代になったのだ。

多くの人が機械学習に関与し、エンジニアも手軽に機械学習を初められる環境であるなら、わざわざ障害が多いPythonを使い続ける道理は無い。今後の進歩を考えれば、言語も時代に追いついていく必要がある。

尤も、現在の機械学習ブームが続いている限りにおいてはPythonも安泰である。しかし、残念ながら第3次AIブームが終わり、AIの「冬の時代」はすぐそこである。冬の時代は技術的制約と絡めて論じられることが多いが、実態としては「研究費が少なくなって生じるもの」であり、研究費が出ないのは経済的な理由である。新型コロナウイルスを起因とする世界的な不況でブームは一段落するだろう。

関連記事:第3次AIブームの終わり:AIの「冬の時代」

ITバブルを思い出せば分かるが、あの頃猫も杓子もITと言い、訳の分からないITを名乗る企業も上場し、バブル崩壊と共にそれらの殆どは市場からいなくなった。そして誰もが知るように、それを生き残った企業、その後に出てきた企業が今のITが当たり前の時代を築いているわけである。

現在は第3次AIバブルの末期と言える状態であり、世界的なリセッションと共に投資は一時的に落ち込むだろう。その後に出てくる企業が次の時代を牽引するわけだが、こうした企業がPythonを使っているとは筆者は思わない。

Rust, Go, Julia and Others

では次の時代を担うプログラミング言語は何か。特定の言語をバシッと出せれば良いが、そんな予想は聞こえは良いがほぼ当たらないと考えて良い。投資家として一つのポジションに賭けるのはリスクが大きいのと同じで、エンジニアとしても一つの言語だけで戦うのはリスクが高いし、そもそも複数のプログラミング言語を操るのは当たり前なのだ。

だから、見出しのように”Rust, Go, Julia and Others”とほぼ当たる予想にしている。Othersの中にPythonが入っていないという事だけは強く主張したい。そして最初に挙げた3つの言語が現時点で存在するもので有力なものと考えている。

Rustは筆者が個人的には推している言語だ。メモリ管理と高速性を兼ね揃える代わりに習得コストが非常に高い。習得さえしてしまえば非常に優れた言語である。問題はその習得コストでシェア拡大最大の障壁となるが、誰もがプログラミング言語を操る時代となれば、そんなものは問題にならないかもしれない。

Goはややクセの強い言語であるが、並行性に優れ記述も平易であり、何よりもGoogleが推進する言語であり、期待度は高い。Googleの時代がこれからの不況期の後も続くのであれば、シェアを更に拡大していく可能性はある。

但し、Googleは駄目だと思ったものはバサリと切り捨てることができる企業である。これは自社サービスでもツールでも例外ではなく、過去のサービスの中で終了しているものが少なくないのは言うまでもなく、ライブラリなども開発を辞めたり、互換性を切り捨てたりと開発者泣かせでもある。これを理由に筆者はGoはそこまで次世代を担う言語とは思えないのだが、世間的には注目されている言語の一つである。

GoもRustもGitHub人気プログラミング言語ランキングで急成長言語として挙げられるものであり、機械学習に関わるなら知っておくべき言語の一つだろう。

関連記事:GitHub人気プログラミング言語ランキング「解説」(2):急成長言語

JuliaはTIOBE Index for April 2020で50位にランクインした新しい言語である。数値計算に強みを持ち速度低下も小さいので、Pythonが持つような問題の多くが是正されているとして注目されている。まだまだシェアは低いが、今後伸びていく可能性があり、注目に値するだろう。

そして、未だそれほど注目されていない言語、未だ存在しない言語が次の主流言語として君臨する可能性もある。それがどの言語かは分からないが次のような特徴を備えていると考えられる。

  • 高速である
  • 数値計算がライブラリ依存ではない
  • メモリ管理に優れている
  • 大規模システムに対応できる
  • 第4次AIブームを牽引する企業が使っている

最後が重要である。最初の4つに対応できる言語は今後幾つも登場するだろうし、今でも存在する。しかし、結果的にどの言語が勝つかは次のブームを牽引するプレイヤー次第である。Pythonのシェアが伸びたのは研究者がプレイヤーの中心だったからだが、誰もが機械学習に関わる社会になれば、市場を席巻することが重要になる。投資家としてもエンジニア視点でも優れている言語でなければならない。

About HAL

金融・マーケティング分野の機械学習システム開発や導入支援が専門。SlofiAでは主に海外情勢に関する記事、金融工学や機械学習に関する記事を担当。

View all posts by HAL →