スマートニュースにおけるエンジニアリングとチャレンジ

和田拓朗氏:では「スマートニュースにおけるエンジニアリングとチャレンジ」ということで発表させていただきます。

本日の流れですが、まずは簡単に私の自己紹介をさせていただきます。そして、「スマートニュースにおけるエンジニアリングとチャレンジ」ということで、本日のメインコンテンツです。最後に、私は入社してちょうど半年ほどなのですが、その中で感じていることについて率直にお話しできればと思います。

まずは、自己紹介です。私は和田拓朗と申します。

ソフトウェアエンジニアで、News Backendチームに所属しております。2018年9月に入社してたので、今月末でちょうど半年になります。

ちょっと趣味っぽい話なんですが、変なカレーを作ったりしています。あと、その下にあるのがキーボードで、自作キーボードを作ったりしています。

私の経歴についてです。

大学は東京大学を卒業しています。工学部電子情報工学科から、大学院では学際情報学府に進み、そこを修了しました。研究内容は裸眼立体視ディスプレイや、MR、VRの研究をしていました。

これは少しわかりにくいですが、私が作っていたMRディスプレイです。土偶が空間に浮かんでみえる、みたいな。そんなものを作ってました。このときはC++でWindowsのアプリケーションを書いたり、Objective-CでiPod touchのアプリを書いたり。あとはMax/MSPというグラフィカルなプログラミング言語を使ったりしていました。

その後、新卒で日立に入社しました。日立では主に大手金融機関向けのシステム開発をしていました。日立では上流から下流まで、つまり提案するところから納品したあとの障害対応までいろいろやらせていただいて、一通り満遍なく経験できたかなと思ってます。

転職をしようかなとぼんやり考えていた時に、ちょうど大学の先輩が起業をするという話があったので、その流れでカブクというスタートアップに転職をしました。

カブクはものづくりをテーマとしたスタートアップです。私が入ったときは(メンバーの数が)3人でした。日立は世界で30万人くらいの社員数なので、そこから3人の企業に転職という、かなりラディカルな転職だったかなと思ってます。

この会社では、スタートアップでエンジニアの数も少なかったため、かなりいろいろやらせていただきました。Pythonによるサーバーサイドの開発や、TypeScript・Angularを使ってSPAを作るということもやっていました。

そして2017年にカブクがM&Aでイグジットしたタイミングで、新しい挑戦をしようということで、今度はスタイラーというスタートアップに転職をしました。ここはファッションサービスを作っている会社で、オンラインとオフラインをうまいことつなげて新しい販売のかたちを作っていく、みたいな事業でした。

ここにはエンジニアリングの責任者のようなかたちで入っていたので、組織的な課題や技術的な課題、非常に幅広い課題に対して取り組みをさせていただきました。

スタイラーでも貴重な経験をいろいろさせていただいたのですが、少し思うところがあり、再度転職をすることにしました。そのときに考えていた転職先の条件としては、私はもともとグローバル事業に興味があったので「グローバル事業を展開している会社」ということと、技術的におもしろい挑戦があったり、技術者が大事にされているということです。

この2つの軸でいろいろな企業を探しました。実は日本の企業だけでなく、海外の企業に直接応募したりもしたのですが、丁度そのタイミングで、今日もいらしていますがもともと知り合いだったamachangにスマートニュースにランチに誘っていただきました。

私はその当時、スマートニュースがグローバルでがんばっていることはあまり知らなかったのですが、そのランチでいろいろ教えていただいて「すごくおもしろそうだ」ということで、そのまま選考に進ませていただきました。そこで無事に内定いただき、去年の9月から入社しています。

SmartNewsを支える技術

ここからは、本日のメインコンテンツの「スマートニュースにおけるエンジニアリングとチャレンジ」についてお話しいたします。

まず「スマニューを支える技術」ということで、アプリの裏でどんな技術が動いているのかを簡単に説明させていただきます。

あとは社内で具体的にどのように働いているのか、私が担当している業務の紹介、そしてエンジニアリング観点でのチャレンジについてお話したいと思います。

まず「スマニューを支える技術」についてです。みなさん、SmartNewsのアプリを使われたことがある方もいらっしゃると思います。実際にアプリを開くと、こんな画面が出てきます。

実際にスマートニュースのエンジニアが、どんなところでエンジニアリングを発揮しているのかを簡単にご説明したいと思います。

まずわかりやすいところでは、この「こだわり抜いたUI/UXを持つアプリ」です。当然我々はアプリの会社ですので、こういったアプリ部分を作っています。他には、またスマートニュースはニュース配信のアプリなので「ニュースを収集し配信するシステム」ということで、ニュースを集めて配信する部分の機能開発や機械学習による記事の分類やパーソナライズを行っております。

ニュース配信の社内向け管理システムもあります。SmartNewsにはいろいろな記事があるんですが、例えば「この記事はトップに出さないようにする」といった対応をするための社内向け管理システムです。

あとは媒体社様が見る業務システムです。例えばどの記事がSmartNewsのユーザーに読まれているのかを確認できる画面がありまして、そういったものも作っています。

先ほど浜本のお話にもありましたが、我々の収益の柱は今のところ広告なので、広告を配信するシステムにも、配信最適化のための機械学習が入っています。また、数値分析を支えるデータサイエンティストもいます。

最後に、大量のトラフィックを支えるシステム基盤についてです。スマートニュースでは、大量ののアクセス、リクエストがあります。それを支えるシステム基盤も、自分たちで設計、運用していています。

これがスマニューを支える技術です。

エンジニア組織の今

では、組織についてお話します。チーム構成はだいたいこんな感じです。

技術領域ごとのチームがあります。人数で言うと、2019年2月時点で54名です。

今、女性エンジニアがCorporate Engineeringに1名います。男性と比較すると少ないのですが、別に採用していないわけではなく、女性も積極的に募集してます。

チームごとに簡単にご説明すると、MobileAppはアプリ作っているチームです。その隣はMachine Learning、機械学習をしているチームです。広告の配信最適化や記事の並びなどのパーソナライズもやっています。

Media Engineeringは媒体社様向けのシステムや媒体社様の要望を汲みながら開発を進めているチームです。News Backendはニュースを集めて、それを配信するシステムを作ってます。私はここに所属しております。

その隣、Adsは広告配信のためのシステムを作っているチームです。SREはシステム基盤を支えてくれているチームです。Corporate Engineeringは、社内のITシステムや社員が使うためのSaaSソフトウェアのセットアップ、パソコンのセットアップをしてくれているチームです。

最後に、Data Scienceチームはデータサイエンティストが数値分析をしてくれているチームです。

こちら、全職種で採用募集中です。

Squad体制

では、実際に社内でどのように働いているのか、エンジニア視点でお話しさせていただきます。現在スマートニュースのプロダクトサイドでは、Squad体制を導入しています。

Squadというのはミッションベースのクロスファンクショナルな組織です。どういうことかと言うと、先ほどお見せしたように縦にいろいろなチームがあります。ちなみに一番右にProductチームがあるんですが、Squadにはプロダクトマネージャーも入っていますので、Productチームも記載させていただいております。

この縦方向のチームに横串を入れた、JP Growth、JP Ads、US Engagementの3つ。この横の切り方がSquadというものになります。私はNews Backendチームで、US Engagement Squadに入っています。ちなみに、ここで紹介しているSquadは一部でして、他にもいくつかあります。

したがって、いろいろなチームの人が1つのSquadに集まって、US EngagementであればUSのEngagement施策のための機能開発を一丸となってやっていくイメージです。

では、Squadとして実際にどのように働いているのかというと、まず四半期ごとにSquadにOKRの設定をします。OKRというのは目標管理の手法の1つです。

その設定したOKRに基づいて、スプリントを回していきます。スプリントの回し方はSquadによって違います。今回は、私が所属しているUS Engagementの話をさせていただきます。だいたい2週間ごとにスプリントを切っていて、最初にプランニングして、途中確認して、最後に振り返りして、といった感じで進めています。

他にはDaily Standupもやっていて、私の場合はUSチームとSlackのスレッド上で進捗報告をしたりしています。

このようにSquadでは、クロスファンクショナルなメンバーで協力しながら開発を進めています。

チームづくりと社内イベント

今度はSquadの横串ではなくて、チームとしてどのように働いているかについてお話します。

これも四半期ごとにチームのOKRを設定します。私のチームの場合はNews Backendチームなので、News Backendチームが持つべき目標を立てます。

これもチームによりますが、私のチームではウィークリーでOKRの進捗確認や、各エンジニアが所属しているSquad同士の情報共有を行います。例えば「今こういう機能を作っていて、レビュー依頼する予定なのでお願いします」みたいな話をしたり。

もうちょっとチームで議論したい内容があったりすると、「このアーキテクチャをこういうふうにしようと思ってるんだけど、これでいいと思う?」みたいな話をしたりもします。コードレビューもこのチームの単位でしています。

他には、いくつか社内横断のエンジニアイベントがあるので、ご紹介させていただきます。まず1個目、毎週金曜日にEngineering Recapというイベントをやっています。 その各チームの進捗だったり状況を「カジュアルに」報告する会です。なので形式張っているというよりも、フランクに話しながらお互いのチームの状況を共有します。これは任意参加なので、来たい人だけが参加します。

雰囲気がわかるように写真でご説明すると、ビールを並べたりしておつまみ食べながらやったり、右側はSlackのキャプチャーなんですが、Slackのスレッドに議事録……というほどちゃんとしたものではありませんが、どんなことが話されたかが書いてあります。

あとはEngineering Tech Talkという社内向けのテックイベントも隔週でやっています。技術的な内容で話したいことがある人がみんなの前で話して、みんなの知的好奇心を刺激したり、実際に業務に活かす、みたいなことをしております。

他には、寿司勉強会というイベントもあります。これは毎月やっている、非常にカジュアルな勉強会です。寿司を食べながら、ビールを飲みながら、いろいろなトピックに関する勉強会をしております。

一番下の技術書読書会は不定期開催です。例えばGoogleのSRE本をみんなで輪読したり、今ちょうど上がっている話では『Systems Performance』という有名な本を輪読しようという話が進んでおります。

Systems Performance: Enterprise and the Cloud (English Edition)

これは寿司勉強会の様子です。

寿司を食べながらビールを飲みながら、みんなでプロジェクターを見て議論する、という感じでやっています。

扱ったトピックは、今までやったものではDocker、R、TensorFlow、Scrapy、シェル芸やRust、GIS、Kubernetes、Androidなど。いろいろなテーマを持ち寄っています。

次に、「エンジニアがうれしい福利厚生」についてです。

これは先ほど社長も話していましたが、自主渡航制度があります。これは、個人的にすごく良い制度だと思います。半年に一度海外のカンファレンスに渡航可能ということで、私は9月に入社してあと、去年12月にシアトルで開催されたKubeCon NA 2018というKubernetesのカンファレンスにさっそく参加させていただきました。今年の5月にはKubeCon EUというカンファレンスもあるので、そこにも参加しようかなと考えています。

あとはSafari Books OnlineというO’Reillyの本が読み放題になるサービスがありまして、会社で入ってもらえるので、O’Reillyのebookが読み放題になります。O’Reillyのebookに限らず、基本的に技術書であれば会社の経費で購入できますし、先日の新しいアナウンスメントがあり、個人のKindle用に買う本も会社の経費精算で買えるようになりました。すごく素晴らしいなと思ってます。

入社してから取り組んできたこと

次に「担当業務の紹介」をさせていただきます。私が入社してから何やってきたのか、現在何やっているのかをお話しいたします。

先ほど申し上げましたとおり、私は9月に入社してまして、最初の2ヶ月は全体的なシステムのキャッチアップや、SmartNews VideoというiOSで使えるビデオ機能の開発に携わっていました。先ほど申し上げたSquadは、このタイミングで導入されてまして、ここからSquadに所属するようになりました。

その後、11月・12月はSmartNews Videoの開発がひと段落しそうだったので、現在News Backendシステムが抱えている技術的課題や、負債に近いものを直していきました。SquadとしてはNews Backend ScalabilityというSquadに入り、アーキテクチャの見直しを行いました。

今年入ってからはUS EngagementのSquadに入り、US向けの機能開発をしています。

もう少し詳細にお話しすると、先ほど申し上げたSmartNews Videoはビデオコンテンツを視聴できる機能になります。ただ、現在はiOSでしか使えません。こちらは2018年の12月にリリースしております。

私が担当していたのは、メインの開発というよりは、途中から入ったこともあり、テストが足りてない部分やモニタリング。監視が必要な部分のメトリクスの埋め込みなどをやっていました。これによって、システム全体で「どこをいじるとどこが変わる」とか、「これを実装するにはどうすればいいのか」といった業務ドメイン知識を深めることができたと思っております。

アーキテクチャの見直し

その後、アーキテクチャの見直しを行いました。

SmartNewsは現在ユーザー数が非常に伸びています。ユーザーもシステム負荷も増大傾向にあるので、スケーラブルなアーキテクチャにしていきたいという前提があります。

私がやったことは大きく2つあります。1つは一部のサービスが肥大化していたので、そこから独立していて、分けることができそうな機能についてはなるべく分けていこう、ということをやっていました。

あとは、SmartNewsの記事配信に使っている、セントラルにある検索システムにAWSのCloudSearchという製品を使っていたのですが、それをElasticsearchにしていこうという動きがありました。というのは、CloudSearchが既にあまりメンテナンスされている気配がなく、スケーラビリティに課題があったためです。ここでは、Elasticsearch移行に関する技術的な検証から実装までをやらせていただきました。

US向け機能開発について、具体的に何やってるのかと言うと、SmartNewsは実際に日本で非常に使われているアプリなんですが、USのユーザ数も伸びており、その中でUSと日本のユーザーとでは、アプリの使い方が違っているということがわかってきました。

したがって、日本では必要ないけれどもUSに入れたい施策を実装しています。具体的にはまだ言えませんが、もう少しでリリースされる機能をたくさん作ってます。

Squadの中で何を実装するかを決めて、プロトタイプして、ABテストして、プロダクションを実装するところまで、クロスファンクショナルなスモールチームで進めています。

チームとしてはサンフランシスコにいるメンバーと、JPにいるメンバーと、ニューヨークにいるメンバーも少し入っているので、3拠点の混成チームです。

USの拠点との働き方

ここからは、USの拠点とどのように働いているかをお話したいと思います。

これがUS Engagement Squadという、私が所属しているSquadの構成図です。左が日本で、右がUSです。日本からご説明すると、デザイナーとアプリの開発、News Backendのエンジニア、Media Engineeringのエンジニア、あとはデータサイエンティストがいます。

USにはプロダクトマネージャー、デザイナー、Machine Learningのエンジニア、あとはContent Operationをしている方がいます。ですので、メインの開発は日本にエンジニアが多くいるので日本の方で進めています。

言語の話をすると、これは当然英語になります。というのも、US側には当然日本語がわからない方もいるので、共通言語を英語にしなければ仕事が回りません。

ですので仕様書とやJIRAチケットの記載内容、Slackのコミュニケーションはすべて英語です。ただ、日本人同士の場合には、日本語でコミュニケーションすることも当然あります。基本的に、Slackのチャンネルは日本人同士であっても、日本語を喋れない人も内容をフォローできるように英語で書いています。

ミーティングは、フェイストゥフェイスでやりたいときには、Google Hangoutsを使って電話会議をしています。当然時差があるので、業務時間がかぶる時間帯にミーティングを設定しています。だいたいJPの午前中、朝9時くらいの時、向こうは16時なので、そんな感じで設定しています。

あとはHangouts用の機材が会議室に設定されているので、そういったものを使うと非常に効率良く会議を進めることができます。

JPからUS、USからJPの出張は比較的頻繁にあります。出張期間は目的に合わせてですが、短くて1週間、長いと3ヶ月ほどです。

私も今月の上旬に、ちょうど1週間サンフランシスコオフィスに出張しました。プロダクトマネージャーが向こうにいるということもあり、やはり直接会って進めていくのは効率が良いと感じています。

「スケーラビリティ」を目指して

次に、チャレンジについてお話しします。キーワードは「スケーラビリティ」です。その軸に沿って、いくつかご紹介したいと思います。まず1つ目が、「ユーザーは刻々と増加している」ということです。

現状のMAUが1千万超います。そしてニュースサーバーに対するリクエストが数万rpsあるという状況です。

これをどんなかたちにしていきたいかと言うと、我々の競合は、最終的にはFacebookやTwitterといったSNSも視野に入れています。そういった規模を目指していきたいと思っているので、例えば現在の100倍のMAU10憶、ニュースリクエストでは数Mrpsを目指していきたいと思っています。

理想的には、ピーク時には即座に無限にスケールできるアーキテクチャを目指していきたいと考えています。

スケーラビリティについて別の観点で言うと、社員・エンジニアの数も非常に増えています。

ですので、開発者が増えても開発効率が落ちないアーキテクチャが必須だと考えています。例えば社員・エンジニアが増えても同時に多くの機能を作れたり、どんどんリリースできたり。

これはマイクロサービスのようなイメージで書いていますが、まさにこういったものをどんどん入れていきたいと考えています。開発者が自律的にガンガン回していける開発体制を作っていきたいです。

また、グローバルなスケーラビリティということで、世界中の良質な情報を必要な人に送り届けられるようなアーキテクチャづくり。これは我々のミッションでもありますが、具体的にはマルチリージョナルアーキテクチャですね。

現在は日本にしかサーバーがありませんが、例えばアメリカの人に本当に最適な状態でニュースを届けるのであれば、やはりアメリカにサーバーを立てるべきだと思います。そういったところはまだできていないので、そこも設計して考えて進めていきたいと考えています。

あとは、これはエンジニアリングと言うより組織についてですが、社内の多国籍化・多拠点化についても、チャレンジがあると思っています。拠点が増えてきたときにどうやって打ち合わせをやっていくのか、コミュニケーションをどうするのか、といったことは1つのチャレンジです。

入社してみて感じたこと

最後に、私が入社して感じていることを簡単にお伝えできればと思います。

いくつかありますが、まず、優秀な方が非常に多いと思います。これは本当に仕事をしていても思うのですが、エンジニアの方もそうですし、事業サイドの方でもそうですが、非常に優秀な方が多いです。著名な人も多いですね。あとは、こだわりを持っている人も多いと思います。

オープンなコミュニケーションが徹底されているのもすごく気持ちが良いです。例えばSlackのDMやプライベートチャンネルは極力避けるといったことや、会社側が情報を極力社員に開示していく姿勢が感じられて、良いなと感じています。

あとは、事故や失敗の対処が建設的です。例えばシステム障害でインシデントが来た時に、そのインシデントをした個人を責めるんではなく、なぜそういうことが起きたのか、組織や仕組みでどう解決できるのかを探っていく姿勢を感じました。実際、私がインシデントを起こしてしまった時に、そんなことを感じました。

これはここまでかなり言ってきましたが、グローバルな環境であると感じています。私はこれを期待して入ってきているので、ここが感じられてるのはすごく良いなと思います。日本人以外の社員も増えていますし、英語の使用頻度も高いです。

会社の全社向けドキュメントは英語で書かれていて、補助的に日本語、というものがあります。あとは通訳・翻訳チームがあり、本当に英語が得意でない日本人の方もいるので、通訳・翻訳チームにサポート入ってもらって打ち合わせすることもあります。

英語学習をサポートする福利厚生もあるので、意欲がある方は自分の力でどんどん成長できる環境だと思います。

事業がエンジニアリングによって進んでいく

私はいろいろな規模の企業を経験してきておりまして、大企業と比較して感じるところでは、よく言われる話ですが、組織がコンパクトなのでとてもクイックであると思います。あとは、自分の成果をわかりやすく感じることができます。

とくにto Cのアプリなので、自分がやったことがダイレクトに見えるかたちになるのはすごく楽しいです。

少人数スタートアップとの比較で言うと、社内が整っている感じています。「整ってる」とはどういうことかと言うと、「エンジニアがエンジニアリングに集中できる環境」は既に構築されています。

私がかつて働いていたすごく小さい規模の会社では、ユーザーサポートといったこともエンジニアがやっていく必要がありました。ですがスマートニュースはそういう感じではなくて、本当にエンジニアリングに集中できています。

「事業がグイグイ進んでいく」というのもよく感じることです。人数が少ないと、本当にやれることを絞ってそれを着実にやっていく、みたいな感じにならざるを得ないと思います。スマートニュースでは、そのような会社と比較すると多くのメンバーがいるため、いろいろな領域でエンジニアリングを進めることができています。

私はUS Engagementに所属していますが、例えばSmartNews Videoの開発を考えているエンジニアもいますし、いろいろな事業が進んでいくのが目に見えて、すごく躍動感があります。

最後に、私個人としても会社としてもやりたいことがいろいろあります。ただ、人がぜんぜん足りてないので、それができていない部分もある、というのが実情です。なので、一緒に働いてくれる仲間を募集しております。以上です。ありがとうございました。

(会場拍手)