NO IMAGE

YouTubeとGoogleは、なぜあんなに検索が速いのか?

YouTubeは何語で書かれているのか

Google が Python を社内公用語として使用していることはかなり有名な話ですが、実は Google 社内で最も使われている言語は C++ です。

特に検索に関わるインデックス等の生成処理などは、MapReduce 等を使っていると思いますが C++ で書いていることが多いと思います。

確かに YouTube は Python で書かれていることが有名ですが、全て Python で書かれているわけではありません。もちろん、フロントエンドは JavaScript で書かれており今現在はどうか知りませんが、10 年ほど前の時点では Google Closure Compiler とかを使ってフロントエンドの開発がされていました。

サーバーサイド Python で書かれていると言ってもおそらく、皆が想像するようなオープンソースのフレームワークを使って作っているわけではなく自社のニーズにあわせて自社でフレームワークを作っていると思います。

Google のエンジニアは、解決しようとする課題のスケールがでかいのでありあわせのもの(MySQL や PostgreSQL)などで WEB アプリを作るとは限りません。もちろん、Google 自体は MySQL のヘビーユーザーではありますが。使われる場所に応じて、適材適所必要な性能要件に見合った DB 技術を採用します。

Google の MapReduce は、後に Hadoop などのオープンソースフレームワークになってオープンソース界隈や競合他社に影響を与えていますが、その根底にある BigTable などの論文は 2006 年頃にかかれています。また、現在 Docker などのコンテナ技術や Kubernetes が巷ではもてはやされていますが、そもそも Google は Docker が登場するよりもはるか以前から独自のコンテナシステムを運用してきた歴史があります。

Google や Microsoft 、Apple ほどになるとそもそも自分たちで言語やコンパイラまで開発してしまうような企業です。Google が Python を好んで使うのは、単に当時 C++ 言語ともっとも相性が良いグルー言語だったからにすぎません。

今流行りのTypescrptに書き換えないのか

今なら、Node.js なども C++ 言語で書かれたライブラリとリンクすることも容易ですし、Google 社内の公用語として Microsoft の開発した Typescript が認められたことからもわかるように、今後は新規開発されるプロダクトなどでは Typescript に置き換えられるかもわかりません。

YouTube の開発現場では Python で書かれていることをよく思わない Noogler がいるようですが、それも時代ということでしょう。確かに今なら、なんで TypeScript で書かないんだよwっていいたい若いエンジニアの気持ちがわかります。なぜって、TypeScript で書けばフロントエンドも TypeScript で書くことができますし言語が異なることにより生じるインピーダンスミスマッチが発生しませんもんね。

 

Type hinting によるコード補完も効きますし、JSON のインターフェイスだって事前に定義しておけばサーバーサイドとクライアントサイドで異なる言語で書かれていると難しいチェックが自動化できコードカバレッジを上げて品質を上げることもできるでしょう。

表に見えている部分(フロントエンド)との間では JSON や AJAX による非同期通信を使用していると思いますが、データセンター内では gRPC や Google protobuf などを使っていると思います。なぜって、データセンターの内部で通信する部分がテキストベースの JSON で処理されていたら無駄が多いですからね。それらも本来は C++ で書かれていますが、現在では TypeScript(Node.js) にはバインディングが存在しますし、protobuf の定義から自動で TypeScript の定義を生成することもできます。

しかし、考えて見てください YouTube が Google に買収されたのは 2006 年のことです。もしかしたら、それ以前のコードベースすら残っているかもしれませんし、Google 流に染められてからも 15 年以上の歴史があるのです。

正直いって、今からコードを書き直すなんてことはコストが高すぎてやってられません。おそらく、当面 YouTube は今のまま Python を使い続けるのではないかと思います。

 

ですが、上記に述べた通りなので Google のマネをするのが良いとは思えません。私個人としては、今後新規に開発するなら TypeScript で書いた方が良いのではないかと思います。依然として Python も良い言語だと思いますが、ほとんどの人が作る WEB アプリは言語の性能の差が問題になるようなことはないはずです。

TypeScript を使って開発したほうが、フロントエンドとサーバーサイドを同一の言語で書けるので定義を使いまわしたりが容易である点などから私はそう判断しているだけで、Python で書いた方が良い WEB アプリというのも当然あると思います。要は要件次第です。

実践TypeScript【電子書籍】[ 吉井健文 ]

NO IMAGE
最新情報をチェックしよう!
>プログラミング 独学

プログラミング 独学

本当にプログラミングを学びたい人のためになるブログにしたいと思っていますので、些細なことでも気が付いたのであればご報告いただけると幸いです。

CTR IMG