生産性を向上させ”最高の開発体験”を。
開発者のための「Developer Productivity室」を設立

技術・デザイン

サイバーエージェントは、開発者の生産性を向上させることで、サービス開発を支える「Developer Productivity室」を新設しました。デリバリからリリース後の検証までの期間を1/20に短縮することを目指す「Developer Productivity室」。組織設立の背景や、目指す姿についてお伝えします。

Profile

  • 山田明憲 (ヤマダ アキノリ) Twitter : @stormcat24
    2012年、サイバーエージェント中途入社。ゲーム開発や特命的ミッションを経験。その後、ライブ配信サービス「FRESH LIVE」のテックリードを経て「OpenSaaS Studio」のチーフテックリードに従事。2020年7月からDeveloper Productivity室の責任者も兼務。著書「Docker/Kubernetes 実践コンテナ開発入門(技術評論社)」は総発行部数1万部を突破するベストセラーに。

Developer Productivity活動の先に目指す世界

「Developer Productivity室」は、開発者の生産性向上を加速することでコストはもちろん、品質担保やチャンスポイントの増加に貢献し、サービス開発を支えていくことを目的に今年の6月に設立した組織です。

特に「デリバリ」「品質担保」「リリース」「検証」といったソフトウェアのリリースのために繰り返し行われる一連のプロセスに集中して効率化を進めており、これらの無駄な部分を短縮することで、リリースサイクルを早めることを目指しています。

サイバーエージェントはメディア、広告、ゲームと、事業領域の異なるプロダクトが多数存在しているので、敢えて技術統制が取られておらず、技術選定や技術カルチャーもそれぞれが自由に決めることができます。開発者にとって恵まれた環境であると感じる一方で、大規模なエンジニア組織になった今、デメリットも表面化してきました。人的リソースの最適化という面もそうですが、技術的な知見が分散してうまく活用されなかったり、競争力が出そうな技術を継続して育てて組織全体で成果を出すといった意識が希薄であった点は否めません。

またメディアサービスに求められるニーズは刻一刻と変化しており、特に昨今のコロナ禍のように社会情勢が大きく変わるタイミングにおいて、これまでのエンジニア組織や技術投資に対する考え方では通用しなくなることは目に見えていました。

そこで、メディア管轄では中長期を見据えてエンジニア組織の大きな指針となる「TECH VISION」について改めて議論を進めています。今後、事業を支えるために我々は技術をどう考え、何に注力していくべきなのかという指針のようなものです。

その中で社内の各プロジェクトが別々で行っていた、開発生産性向上のためのDeveloper Productivity活動が、大きな武器になる可能性があるという話になり、それぞれのチームを統合して「Developer Productivity室」を設立することにしました。
 

「Developer Productivity室」が担う3つのプロジェクトとは

「Developer Productivity室」は社内で既にあった3つのチームを統合して設立しています。

1つ目は「ABEMA」のA/Bテスト&Feature FlagプラットフォームBucketeerチームです。大規模な開発組織においては、たくさんのブランチが発生し、リリースマネジメントだけで疲弊してしまうということが起きがちです。巨大化したブランチはいわゆる「ビッグバンリリース」になってしまい、成功すれば良いですが失敗した場合のロールバックは大変です。そこでBucketeerではトランクベース開発で、どんどんmasterを更新していき、フラグによって機能のオンオフを切り替えるというスタイルを支援していました。また、A/Bテストやユーザーターゲティング等の高度な機能も備えており、開発やリリースの安全性に貢献しています。

2つ目はクライアント領域の専門技術組織CATS (Client Advanced Technology Studio ) の
Client Productivityチームです。このチームではUIコンポーネントカタログ(Playbook)と画像回帰テスト(Visual Regression Test)の改善に取り組んでいます。
Playbookはカタログを通じてクライアントエンジニアとデザイナーとの意思疎通や、デザイン崩れの発見などに活用でき、iOS版はすでにOSSとして公開されています。
Visual Regression Testはコードの変更によってUIにどのような差異が生じたかをチェックするという仕組みです。この分野はWebフロントエンドでStorybookが有名ですが、このiOS/Android版に取り組んでいます。

3つ目はSaaSプロダクトを開発する「OpenSaaS Studio」の中で、サイバーエージェントグループの開発生産性向上を目的に活動していた、Developer Productivityチームです。
このチームでは、CI/CDプロダクト「Kapetanios」「PipeCD」の開発・運用に携わっています。「Kapetanios」はServerlessで動作するCIです。CIとしての基本機能はもちろん、高度なWorkflow Automationの仕組みを提供しており、レビュアーの自動アサイン、リリースノート自動生成、Dockerイメージのビルド、TerraformやStorybookのワークフローが簡単な設定で実現できるようになっています。目指すところは「CIの自動運転化」です。直近ではGitHub Enterpriseにも対応され、社内プロダクトでの活用事例を増やしています。

CDの分野で「PipeCD」を開発しています。これまでは「Argo CD」や「Flux CD」「Spinnaker」等を評価してきましたが、それぞれ学習や運用コストが掛かり、我々の組織に柔軟にフィットできるものとしては足りないという判断で、シンプルなCDを社内で開発することにしました。現在はKubernetesのデリバリを優先に開発していますが、LambdaやECSといったアプリケーションにも対応する予定です。現在は「Kapetanios」「PipeCD」ともに、サイバーエージェント内のみでの活用ですが、「PipeCD」に関しては、10月6日にOSSとして公開したばかりです。CD領域にはまだデファクトとなるツールは存在していないので、OSS公開をきっかけに早期に市場認知と優位性を獲得していきたいと考えています。

デリバリからリリース後の検証までの期間を1/20に短縮したい

ソフトウェアのリリースって機能を実装する時間より、その先のテストや品質担保、リリース後の検証に費やす時間が多くなりがちです。例えば、デリバリからリリース後の検証まで2週間かかっているとしたら、最終的にはこれを2時間にまで短縮するのが大きな目標です。

サイバーエージェントにおいては、まずは「ABEMA」やスタートアップのプロダクトが中心になると思いますが、これらで成功事例を生み出し2023年までにはメディア事業全体に定着させたいと考えています。これが実現できれば会社としては大きな競争力を持ち、変化に柔軟に対応でき、賢く試して賢く失敗するといった良いサイクルが生まれると思うのです。

開発者に最高の開発体験を届けたい

昨今は、パブリッククラウドのマネージドサービスや、その他にも便利なSaaSプロダクトが揃っているので、開発に必要なものはほぼコモディティ化されている状態です。つまり、サービス開発者が世界中に存在するSaaSを自ら評価し、それを開発プロセスに上手く取り入れ、いかに早くユーザーにサービスを届けられるか、トライアンドエラーの回数を増やせるかが問われています。

そのような状況下において、「Developer Productivity室」は、サービス側のエンジニアの開発効率を上げ、本質的な価値に繋がる技術選定・意思決定をする際の助けとなるような役割を果たしていきたいです。

そこで重要になってくるのが、クライアント・バックエンド技術全てを含めた総合的なベストプラクティスの確立です。例えば、Microservicesでのベストプラクティス構成がすぐ手に入り、CI/CDの設定はもちろん、Canary ReleaseやBlue Green Deploymentといったリリース手法や、A/Bテストやクライアントテスト技術を活用したQAフローの最適化といった仕組みが備わっている、そんな理想的なソリューションがあったらどうでしょうか?サービス開発者にこのレールに乗ってもらえれば、より本質的な開発に専念してもらうことができるでしょう。

これを実現するには、「Developer Productivity室」はサービス側より先回りして技術を研究し、迅速にアウトプットを出していくことが重要になってきます。さらに、サービス側の開発者のニーズを汲み取りながら協働していく、DevRelやAdvocateといったスキルも要求されます。
また、クライアント技術においてはFlutterの重要性が高まってきていますので、知見の足りない領域に積極的にチャレンジしていくマインドを持ったエンジニアがより求められていくでしょう。

最終的には「Developer Productivity室」のプロダクトを使えば、みんなが最高の開発体験を得られるようになって、「技術のサイバーエージェント」の代表事例を目指して行きたいですね。正直まだまだ先は長いので、愚直に取り組んでいきます。

この記事をシェア

オフィシャルブログを見る

ゼロから始めたARコミュニティが
事業貢献につながるまで

技術・デザイン

記事ランキング

Page Top