3つの技術への投資

藤門千明氏(以下、藤門):先ほどからのつなぎになりますが、90以上のリリースができた3つめもう1つの理由。技術への投資があります。

先ほどもいくつか伝えましたが、この90以上のサービスでこのコロナ関連特集や混雑情報の可視化、旅行、飲食、イベントの支援といったさまざまなサービス開発を独自で我々はやってきましたが、これを担当したエンジニアに対して「なんでみんなこんなに早くサービスをローンチできたの? リリースできたの?」と、ヒアリングをしています。

結果、すべての開発者に共通して出てきたワードが実は3つありました。CI/CDの導入。CIはContinuous Integration、テストの自動化やアプリケーションのビルドの自動化。加えてCDです。Continuous Delivery、これはリリースの自動化が進んでいたからというのが1つ。

2つ目がYahoo! JAPANの開発環境。先ほど東日本大震災の時は物理サーバーの確保に奔走していたと伝えましたが、クラウドネイティブな環境を自ら構築して、開発したいときにすぐサーバー環境に入らせるようにしていたのが2つ目。

そして3番目は、2番目と関連しますが、クラウドネイティブな環境で動作させていれば、その中で動くサービスプラットフォームを組み合わせることで、よりリッチなサービス体験を提供できるようになっていたから。この3つがあったからこそ、サービスが早くリリースできたとみんな口を揃えて言っていました。

CI/CDの導入

じゃあこれはいつ頃から着手していたのかですが、実はかなり前からです。早いものだと2014年ぐらいから実は着手をしていて、今この環境がすべて整っています。今日はまず、どういう技術投資をしてきたか、3つのポイントを伝えられればと思っています。まず、CI/CDの導入です。

私が2015年にCTOに就任してから、ヤフーで初めて、すべてのエンジニア、デザイナーを集めて「これからのYahoo! JAPANはどういう技術開発、サービス開発をしていくんだ」という集会、オールハンズをしました。この時に、Yahoo! JAPANは今度CIを導入してテストを自動化しようと。しかも、それを半年以内にやり遂げて、テストが自動化できる会社に変えようとしたがこの2015年12月の話です。

なぜテストを自動化するのか。これは、よいサービスをユーザーに早く届けるためにテストをしているんだと。全従業員に朝礼など、いろいろな場所で繰り返し伝えています。これがどうして今のコロナ禍において機能しているかというと、よいサービス、よい機能がユーザーに待たれているから作りたい。

ただ、今動かしているサービスに、どうしても手を加えて変更しなければいけない。もし変更して間違ったらユーザーに適切な情報を届けられないかもしれない。ただテストを自動化していれば「大丈夫、僕は大丈夫。なぜならテストを自動化しているから。ソースコードを修正してもし間違っていても、必ずテストでそれが発見できる。だからよいサービスを作るために、ワイルドにソースコードに手を入れて機能開発できるようになる」ということです。

実際に半年でCI/CDの仕組みを立ち上げて、Yahoo! JAPAN開発サイクルもどんどん早まってきています。加えて、このCI/CDのプロセスがYahoo! JAPANにとって非常に大事なものになってきていて、Yahoo! JAPANの開発環境や、サービス規模により最適なCI/CDのツールを作ったほうが、更に私たちの開発サイクルを早められると思いました。

CI/CDのツールも、今は自分たちで作っています。具体的にはアメリカのYahoo!とベライゾンメディアとヤフーがの共同で作った、ScrewdriverというオープンソースでCI/CDツールを公開していますが、自らこのCI/CDのツールを作って、Yahoo! JAPAN上でテストやリリースの自動化を今しております。

今現在どうなっているのかがこのグラフです。これは始まってから今までの話ではなく、実は2019年と比べてどうだったか、1年間の差分だけでもこれだけ違うことを今日は伝えられればと思っています。例えばCIに関して言うと、1年で1日のビルド回数は1万回以上増えていて、トータルでいっても1.5倍のビルドの回数。アプリの変更の回数は、CIの導入によってどんどん増えてきています。

加えてCD、Continuous Deliveryです。青いグラフがリリースの数ですが、1年を通じて倍増しています。加えて、黄色の折れ線グラフ。

これはサービスを開発しようと思って手を加えてから、実際に世に出るまでの時間を表しています。このChange Lead Timeがどんどん下がっている。ほぼ半減するところまで来ています。ユーザーのみなさんにとって価値のある課題解決を、ものすごい早さでできるようになったのが、このCI/CDの導入によるものだと私は思っています。

そして2つ目。クラウドネイティブな開発環境を自ら作っていったこと。これが早くリリースできた2つ目の技術投資のポイントです。現在自社で開発しているヤフーのクラウドネイティブな環境は3つあります。上から、Platform as a Service、PaaSというもの。そして真ん中が、コンテナ技術を使ったContainer as a Service。

そして最後、2017年4月にいわゆるサーバーレスという、サーバーを使わない技術ですが、Function as a Service。この3つをYahoo! JAPANの新しいクラウドネイティブな環境として構築し、今多くのサービスがこの環境下で動いています。どうしてこのPaaS、CaaS、FaaSを使うとサービスの開発スピードが速くなるのか。

サービス開発スピードを速くするために実施していること

これはPaaSの例ですが、Yahoo! JAPANには、大きく分けてアプリケーションを作るエンジニアとインフラを作るエンジニアがいます。サービスを作るエンジニアがユーザーのタッチポイント。ブラウザやアプリなど、ユーザーとコミュニケーションするアプリケーションを書くエンジニアが、このサービスクリエイターという職種です。サービスクリエイターのみなさんには、やってほしいことがある。

それは何かというと、ユーザーの課題解決だけにフォーカスしてほしい。一方で、例えば物理サーバーを買ってしまうと、サーバーのOSの設定やストレージの設定、ネットワークの設定を全部やらないといけません。ただ、私たちがサービスクリエイターにやってほしいところはそこじゃない。PaaSの右側の青い部分だけを一生懸命やってもらうと、本質的な開発業務に集中できると。

サービス開発、機能開発に集中してもらって、90以上のサービス開発につなげられます。Yahoo! JAPANで開発しているContainer as a Service、みなさんが大好きなLinuxコンテナを使った開発環境の利用状況ですが、社内サービス開発当時はグラフの一番左側です。

たった5クラスタから始めましたが、Yahoo! JAPANのサービスがこのクラスタの環境を利用することで、今現在では130倍に成長しています。多くのヤフーサービスがこのコンテナ上で今動くようになり、結果として素早い開発ができるようになったのが、Yahoo! JAPANの2番目、クラウドネイティブな開発環境の話になります。

クラウドネイティブで動作するプラットフォームへの投資

最後、3つ目のポイント。クラウドネイティブな環境で動作するプラットフォームに対する技術投資をして、サービス開発のスピードが速くなった話です。Yahoo! JAPANの開発環境の上で、クラウドネイティブな環境で動作するサービスのプラットフォーム。ここに全部は書いていませんが、例えばこういうものがあります。

例えば「Yahoo! 〇〇」というサービスを立ち上げようとしたとき、何か機能を加えようとしたとき。キュリティのフレームワークを入れたいと思ったら、一番の左にあるセキュリティのフレームワークをプラットフォームとして導入し、サイト内で検索エンジンを作りたいと。

そういう場合は、右の上の検索エンジンのプラットフォームを使えば簡単に作れます。AIを使って、ユーザーに何かおすすめの記事を出したり、おすすめの商品をレコメンデーションしたい場合は、左下のAIのプラットフォームを使えばすぐ簡単に作れるようにYahoo! JAPAN上ではなっています。

例えば、マイクロソフトのAzureや、AmazonのAWSを想像してもらえればわかるかと思いますが、その社内版がYahoo! JAPANには構築されていて、多くの従業員がこれを使ってYahoo! JAPANのサービスを作れるようになっています。

まとめると、Yahoo! JAPANはこのクラウドネイティブな環境で動作するアプリケーションを実は作っているから、この真ん中の雲で書いてあるサービスのプラットフォームを使うことで、よりリッチなユーザー体験を作れる。開発の効率もどんどん上がるので、サービス開発のスピードがどんどん速くなっていく、というのがYahoo! JAPANの特徴になっているのです。

(次回につづく)