テンポ良く・心地良い開発環境を実現した朝日新聞のモダンなエンジニア組織とは?
全国紙「朝日新聞」を発行する新聞社であり、ニュースサイト「朝日新聞デジタル」の運営を行う、株式会社朝日新聞社。エンジニア組織における個人の振り返りや組織の課題発見に、エンジニア組織支援クラウド「Findy Team+」を活用いただいています。
今回は、朝日新聞社の社外CTOを務める広木大地さんと、朝デジ事業センター カスタマーエクスペリエンス部で次長を務める西島寛さんにインタビュー。システム刷新プロジェクト「Plasma」のお話を中心に、「Findy Team+」のデータを踏まえながら、開発チームにおけるこれまでの歩みや今後の取り組みについて伺っていきます。
※Findy Team+のサービス詳細は以下よりご覧いただけます。 https://findy-team.io
目次
歴史ある会社で、開発組織をつくっていくという挑戦
ーーまず最初に、お二人のこれまでの主なご経歴や、現在の役割について教えてください。
広木: 2022年9月から朝日新聞社の社外CTOとして、さまざまな技術面やDXなどを担っています。もともと2018年ごろから、「朝日新聞デジタル」でスピーディな価値を提供できる組織体制や仕組みをつくっていくということで、技術顧問として声を掛けていただき、4年間並走してきました。
その中で、さらに経営全体を含めたところで、テクノロジー+ジャーナリズムの価値を、より世の中に広めていくために、社外CTOとしてお招きいただきました。私自身ジャーナリスティックなものが好きなので、大事な価値を残していきたいという思いから、お受けさせていただいています。
新聞社というとレガシーなイメージがあるかと思いますが、 実はこの4年間でかなりモダンな技術組織に進歩してきました。 今回はそういった一連の話を、テックリードの西島さんと一緒にお伝えできたらと思っています。
西島: 前職はヤフー株式会社で、入社から4年ほどは主にフロントエンドの開発に携わり、JavaScriptでSPAをつくったりしていました。その後は、アプリのテストツールをつくる仕事をしていて、そのチームのスクラム導入に関わったり、エンジニアチームのチームリードを務めたりしていました。
そして、2020年に朝日新聞社へ入社して、「朝日新聞デジタル」のシステム刷新に携わってきました。チームではスクラム開発を取り入れていて、私はスクラムマスターとして、みんなのお母さん的な役割を担っております(笑)。
私はフロント技術が好きで、表現したいものがしっかりとある朝日新聞社で、そうしたフロント部分に関わっていけるのは夢があるなと。 こうしたレガシーな会社で、これから開発組織をつくっていくことにチャレンジできるのは、キャリアとしても非常に面白い挑戦 だと思い、携わらせてもらっています。
ーー朝日新聞社のデジタル化について、背景を簡単に教えていただけますか?
広木: 朝日新聞社のデジタル化は、2000年代初頭の元々スマートフォンが流行り始めるもっと前の頃から、率先して新しい技術を取り入れてスタートしていた部分がありました。なので、システムの中身を見てみると、少し前に主流だったアーキテクチャや、私の学生時分ぐらいの技術が先行して取り込まれていました。
例えば、CDN+ESI(Edge Side Includes)を利用した設計や、たくさんのトラフィックを捌いて、安定して配信するための仕組みを、当時の最新技術で作ろうとしていたんです。そうした背景がある中で、時が流れていきました。2020年代としてモダンで高速な開発をしていこうと思ったときに、ちょっと置いていかれてしまっていた部分があったんですね。
より高速で品質の高いサービスを展開するにあたって、SPA的な技術であったり、サーバーサイドレンダリングの中でもReactのエコシステムなどのモジュール化の技術を使って、スピーディーな開発にしていきたい。でも、これまでのアーキテクチャでは、いろいろな見せ方をしたり、機能を足し込んだり、というのは難しくなりそうだという状況がありました。
そこで、 Webフロントエンド側でスピーディーかつ安全な開発ができるような体制にしていこうと、フロントエンド刷新のプロジェクトが立ち上がりました。 それが「Plasma」というプロジェクトで、そのリーダーを担っているのが西島さんです。
ゼロからスタートした刷新プロジェクト「Plasma」
ーー今お話に挙がったプロジェクト「Plasma」について、立ち上げ時のことを教えてください。
西島: 「Plasma」は、広木さんとお話するようになってから立ち上がったプロジェクトで、立ち上げ時点では進め方も何もまったく決まっていませんでした。
当初はエンジニア4人から始まったのですが、本当に長い歴史のあるシステムなので、本来あるべき姿がよく分からなくなっている部分も多々あり、これまで「朝日新聞デジタル」に長く関わってきた方などをチームに巻き込んでいきました。
そういった形で、 自分たちで全てを決め切れて、全てを作れるようなチームを組成していったのが「Plasma」の成り立ちです。 チームには、企画やデザイナーの担当者に加わってもらい、さらに2名ほどエンジニアが加わって、そこから一貫してスクラム開発を続けています。
ーー「Plasma」というプロジェクト名には、どのような由来があるのでしょうか?
西島: これまで朝日新聞社のシステムには、「SORA」や「Orion」など、空を見上げたときにあるものの名前がつくことがあったんです。今回も検討する中で、星のようにキラキラしたイメージのある「Plasma」という名前が出て、これに決まりました。実は開発チームで一番最初にやったことが、プロジェクト名を決めることでした。
古いシステムを紐解きながら、課題を解決する新システムへ
ーープロジェクトの立ち上げから携わられて、システムを刷新していくなかで難しい面もあったと思いますが、いかがでしょうか。
西島: ものすごく難しくて、広木さんと隔週でお話させていただきながら、毎回ご指導いただいていました。まず難しかったのは、コードしか残っていない部分もあったので、コードから「これは何をやりたかったんだっけ?」と紐解いていくところです。
その部分は、経緯を把握していた企画の担当者にリーダーシップをとって進めてもらい、作りながら不明瞭な箇所はお話しつつ、出来上がったものを一緒に確認しながら進めていきました。
加えて、システム的な観点では、やはり古いシステムとのつじつまをどう合わせるかということも課題になっていました。それまで動いていたシステムの構成概念図は、下記のようになっています。
広木: 記事配信の仕組みは元々存在し、そこをAPI化させるためのFacadeのような層がGolangで書かれていて、フロントエンド側にはPreactをベースとしたサーバーサイドレンダリングのBFF、フロントエンドサーバーがあります。そこで様々な処理をしているので、構成としては比較的モダンに作っています。
広木: 元々は、Webサイト時代のメカニズムだったんですね。たくさんのトラフィックを捌いていく仕組みだったのに対して、Webサービス的なつくりを持ちたいというのが1つの目的でした。
つまり、一方的に配信するだけではなく、今後はより読者の方々とインタラクティブにコミュニケーションしたり、読者の方が独自にカスタマイズしたり、そういった部分を実現できるようにしたいと考えたとき、Webサイト的な作りから、Webサービス的なつくりに変えていく必要があったんです。
西島: 今までは完全に静的なHTMLをどこかに配置して、それを配信する仕組みだったので、当時はWebサービス的なことがやりにくい状況でした。ロジックを含まないHTMLだけでなく、様々な仕組みを入れて、ユーザーに対して、適切なアウトプットができる基盤を整えるというのが、実現したかったことの1つです。
広木: そして、もう1つ課題となっていたのが、コンテンツを組み合わせたり、機能を足したりしたいと考えたときに、事故が起きてしまう可能性があり、検証作業に時間が掛かっていたことです。
スピード感のある仮説検証や開発をして、安全に新しい機能等を提供できるようにならないと、お客様にWebサービス的な価値をデリバリーするのが遅くなってしまう。なので、スピーディーに提供するための仕組みを作りたいというのが、「Plasma」のコアになる部分でした。
西島: 元々はCSS1つをとっても、超巨大なCSSがサービスの広い範囲で使われていて、少しの修正がどこまで影響を及ぼすか、全然わからない状態だったんです。なので、リリースのためには勇気というか、気合と根性が求められるような状況がありました。
そのため、リリースしたときにどの部分に影響があるかが、明確になる仕組みにしていこうと。そうやって上手くコンポーネント化していき、開発スピードも上げていきたいと考えていました。
広木: 自動テストや型推論で比較的安全に依存関係をトレースしながらデプロイできる、そういう仕組みに切り替えましょう、というプロジェクトだったんですね。これが、その後「Findy Team+」を導入することにも繋がっていきました。
安全に仮説検証しながら、お客様に価値提供していくことを目指しているので、それがより良くなっていることが測れるのは、すごくポジティブなことです。 なので、「Findy Team+」を導入してみて、さらにスピード感ある開発ができているかを確かめられるようにしよう、という流れになったんです。
実現したテンポの良い開発を、「Findy Team+」で振り返る
ーーご活用いただいている「Findy Team+」を用いて、実際に「Plasma」チームのデータを見ていきたいと思います。こちらは今年4月から9月末までのデータで、6月ごろからデプロイ頻度(棒グラフ)が右肩上がりに増加し、変更リードタイム(折れ線グラフ)も安定して下がっています。こちらに関する実感や、取り組み内容について教えていただけますか?