Ameba流 長期間続けるためのシステム開発

Amebaの開発はどのようになっているのか、サイバーエージェントのDeveloper ExpertsでありAmebaのテックリードでもある原に聞きました。

著者・インタビュー:原 一成

  • 原 一成
    Amebaのテックリード、Web Developer。Amebaに関連する機能開発や設計、開発環境構築、アクセシビリティ、パフォーマンス面からの品質向上やデザインシステムの構築の傍ら、サイバーエージェントのDeveloper ExpertsとしてWebアプリケーションの発展に従事している。

Amebaでの様々な技術的挑戦

ーーー Amebaでの経歴を教えてください

2008年、マークアップエンジニアとしてサイバーエージェントに入社しました。その時はAmebaブログでPCやフィーチャーフォン向けのマークアップ作業をしていました。最初に任されたプロジェクトがフッターの共通化で「フッター王子」と呼ばれていたのを思い出しました(笑)


ーーー 印象的だったプロジェクトは何ですか

最も印象に残っているのは2016年にリリースしたAmebaブログのフロントエンド刷新です。技術の力で開発効率の改善だけでなく事業的な成果も上げられました。その他にもピグのWeb化ネイティブアプリのディレクションなど今の活動に経験として役立っているプロジェクトも印象に残っています。


それぞれに共通しているのは技術の力を使って新しいものや良いものを作りたいということです。今の市場環境は良いものを作ったからといって必ずしも成功するとは限りませんが、やはり技術者としては良いもの、納得のいくものを作るのを前提として、それが何かに役立つと嬉しいものです。


ーーー 今の作業割合はどのようになっていますか

時期によって微妙に比率は変わりますが、おおまかにチームのマネージメントが20%、事業系の打ち合わせが10%、採用系が20%、技術的な戦略作成や対外発表などが10%、残りの40%は実装に当てています。よく「実装に時間かけられないのではないか」と質問されることがあるのですが、少なくとも半分近くの時間はコードを書いたり技術を調べたりする技術的な時間に当てられるように意識しています。

長期間の運用で学べることがある

ーーー 今Amebaで取り組んでいることは何ですか

今Amebaでは次の10年また成長できるような仕組みを構築しています。例えば10x(テンエックス)という生産性を向上させるプロジェクトが動いています。そこではFour keysの考え方に従ってタスクやデプロイの時間や頻度を計測、可視化して改善しようとしています。最終的にはシステムの力で生産性を10倍にすることを目指しています。


Spindle(スピンドル)というプロジェクトではブランドをアップデートしそれに基づいてデザインシステムを作っています。利用いただける方により一貫性のある体験を提供できるようにするのはもちろん、これにより重複する思考や実装を省いて生産をあげたり、チームのみんなで使いやすいものになるよう目指しています。


また、ヘッドレスCMSを有効活用して生産性をあげる試みもスタートしています。今まではコンテンツを制作、更新する際に編集者・デザイナー・エンジニアが関わっていたところを、作業を分解し重複していた作業を削りました。その結果コンテンツ数が増やせたり、他の作業に使える時間が増えたりといった効果も見え始めています。


実際にはこういった改善が3~5年くらいの周期で回っています。それぞれでやっていることはAmebaの歴史の中で何度も取り組んできたことではありますが、アップデートされているなと感じています。


ーーー 新規プロジェクトをやってみたいエンジニアの方が多いと聞きますが

普段の情報収集の中で得た知識や刺激を実践で活かす場として新規プロジェクトは重要です。やはり最初から実装すると設計力の向上につながると思います。今までの知識で欠けていた部分も分かり、そのタイミングで調べることで新たなインプットも期待できます。


一方で長期間プロダクトを運用して学べることもたくさんあります。先日社内で開催したt_wadaさんの講演の中で「システムを設計するための判断力をつける一番の方法は、自分で設計したシステムを長い間メンテすること」と言われていました。これは自分で身をもって体験したことでもあります。長く運用していくと劣化しやすい部分や多くの人が理解しにくい構成も分かりますし、逆に長持ちする部分も分かります。これらを知っているとリスクを取れる部分、取れない部分の判断がしやすくなると思います。


長期間運用するということは、いくつかの意思決定をしなくてはならず、さらにその結果を見届けることにもなります。その結果は、次の意思決定の改善に生かすことができますし、そのサイクルを繰り返すことで判断の精度をあげていけることも利点です。


ーーー サービスを長く続けるために工夫していることはありますか

Amebaではエンジニアが様々な経験をできるように、システムにポートフォリオ的な考え方を取り入れています。影響範囲が少ない場合やハイリターンが見込めるプロジェクトの時には、比較的攻めたシステム構成にすることもあります。影響範囲が大きかったり、メンテナンスコストを低く作りたい場合には人気があり、情報が業界内に流通しているフレームワークを採用したりします。


何かしら問題を解決する上ではいくつかの選択肢があることが多いはずで、常に同じ仕組みでいいのか疑う必要があると思います。リスクが取れる場合には時には違う方法を試して、より改善したり新たな発見をできるようにします。それが結果的に既存のシステムに流用できることもあります。


Amebaではブログシステム運用の印象が強いかもしれませんが、実はいくつものサービスがあり、その中で新規と言えるサービスが毎年開発されています。新規開発、運用のどちらも経験できるのがAmebaの特徴でもあります。

業界内で使えるスキルを身につける

ーーー Amebaで働いているエンジニアはどのような方が多いですか

チームで働くのが好きなエンジニアが多いと感じます。様々な職種のメンバーと関わるのがAmebaの特徴で、日々Slackや打ち合わせでコミュニケーションをとります。特にSlackはリアクションの反応が比較的早く、職種関係なく付け合うのでみていて楽しいです。それは一例ですが、発言の敷居が低い組織だなと感じます。


また、事業や技術の好奇心が高いメンバーもいて、それぞれに活躍の場があります。事業への貢献と言うと施策や数値を出したり、できるだけ早くリリースにもっていくことが重視される印象ですが、それだけでなく意見を伝えることも重要です。技術者・実装者だからこそ気づけるリスクや矛盾点があり、それらが事業の判断を助けていると思います。


Amebaには長く運用しているシステムがあり、一つのフレームワークにとらわれない総合的な問題解決スキルを求められることがあります。その意味では、技術的な探究心があり、技術をうまく使って問題解決をしたいエンジニアに活躍の場があります。


ーーー チームの技術的な好奇心を高めるために工夫していることはありますか

業界で使えるスキルを身につけられるように工夫しています。基本的には特定フレームワークやライブラリを選んで使うだけでなく、それらを使って品質や生産性を向上したり、プロダクトを安定的に運営できるスキルがつくように心がけています。


また、職種内で品質向上にまつわる活動もしています。例えばWebチームではアクセシビリティ・パフォーマンス・プロダクティビティに分かれ、それぞれの品質を高める活動をしています。


アクセシビリティではAmeba Accessibility Guidelinesの運用や設計レビュー、実装改善などをしています。パフォーマンスではパフォーマンス計測の指標を理解したり、計測システムの構築、実装改善などをしています。プロダクティビティでは生産性を向上を目的とし、開発環境をコントロールできる状態に保つための施策をうったりライブラリを作ったりしています。


これらの活動では定期的に成果発表会をし、知識を共有する機会を設けてます。また、チームを移って新たな経験を得られるようにもしています。


ーーー 今後の展望について教えてください

Amebaではブランドビジョンとして「100年愛されるメディアを創る」を掲げています。100年続けるためには、事業や組織、システムをアップデートしていかなければならないと思います。「続ける」というと現状維持をイメージしてしまいがちですが、実際には続けるために変化し続けないといけないと思いますので、それを実現できるチームを作っていきたいです。

大画面に映しながらSpindleチームでディスカッションする原
  • 著者・インタビュー原 一成

公開日:

最終更新日: