技術・デザイン

Web業界に技術ナレッジを流通させる
Developer Experts制度

技術コミュニティへの貢献が、技術のサイバーエージェントを形づくる

サイバーエージェントには、特定の分野に抜きん出た知識とスキルを持ち、その領域の第一人者として実績を上げているエンジニアに、新たな活躍の場を提供するとともに、各専門領域において、その分野の発展のための貢献・サイバーエージェントグループへ還元することを目指すための「Developer Experts制度」が存在します。現在は5名のエンジニアがDeveloper Expertsに任命されており、FEATUReSで順にご紹介していきます。

今回は「Android」の降矢と「Kubernetes/CloudNative」の青山による対談をお届けします。

Profile

  • 降矢 大地 (フリヤ ダイチ)
    株式会社サイバーエージェント メディア事業本部 CATS
    GitHub 
    Twitter

    2011年中途入社。さまざまな新規サービスの立ち上げに携わり「AbemaTV」の立ち上げにもリードエンジニアとして携わった。現在も新規サービスの開発を行っている。2016年にGDE(Google Developers Expert for Android)に加入し、shibuya.apkをはじめとする、多くの勉強会で登壇を行なっている。

  • 青山 真也 (アオヤマ マサヤ)
    株式会社サイバーエージェント AI事業本部 Strategic Infrastructure Agency
    GitHub 
    Twitter (@amsy810)

    2016年新卒で入社。OpenStackを使ったプライベートクラウドやGKE互換なコンテナプラットフォームをゼロから構築。国内カンファレンスでのKeynoteや海外カンファレンス等、登壇経験多数。世界で2番目にKubernetesの認定資格を取得。著書に『Kubernetes完全ガイド』『みんなのDocker/Kubernetes』。現在はOSSへの Contribute 活動をはじめ、Cloud Native Days TokyoのCo-chair、CNCF公式のCloud Native Meetup TokyoやKubernetes Meetup TokyoのOrganizerなどコミュニティ活動にも従事。

技術トレンドを社内外に還元する仕組み

ー 「Developer Experts 制度」は、青山さんの提案によって生まれた制度です。どんな課題を感じて提案したのですか?

青山:サイバーエージェントには、社外の技術カンファレンスや勉強会に登壇したり、運営に参加したり、技術書を執筆するなど技術コミュニティに貢献することに積極的なエンジニアが多数在籍しています。

そのように社外の活動で得た知見を、社内のプロダクト開発に還元する事は、社内で推奨されている一方、評価者にとって活動をどう評価するかは、裁量が難しいのではないでしょうか。

例えば私はKubernetesなど、クラウドネイティブに関する最新情報やベストプラクティスを社内に還元したり、Kubernetes as a Service基盤の開発に活かしています。また、降矢さんのように社外での評価が高まり業界全体を牽引したり、GDE(Google Developers Expert for Android)に任命されることでGoogleが提供する技術の裾野を広めることに貢献している方もいます。

私自身、特にこの1年は社外活動を通じて多くの技術者と出会い、ディスカッションする中で成長できた実感があります。会社がこれらに投資すると表明してくれることで、若手が挑戦するきっかけになれば嬉しいという想いもあります。

降矢:社外での活動は、一見すると直接プロダクトへの貢献に繋がらないことも多いですが、注力技術の盛り上げに貢献することは、長期的な技術投資だと言えますよね。

青山:オープンソースの世界は、コミュニティの貢献が大きな礎となっています。各社や個人がオープンに協力し合うことで、ソフトウェアを皆でより良いものにしていく。OSSはフリーソフトではないともよく言われます。サイバーエージェントのプロダクトも殆どがOSSで構成されているからこそ、それらの社外活動を「サイバーエージェントがやるべき業務」として制度化する時期だと思い、提案しました。サイバーエージェントもGood Citizenとして様々な形でオープンソースに貢献していくべきだと思っています。

降矢:この「Developer Experts制度」ができることで、将来的にこの制度の対象となる人が増えていき、業界に貢献していきたいと思っている若手が、サイバーエージェントの名前で胸を張って活動してもらい、同時に会社にはサポートをしてあげてほしいと思っています。社外での活動は、業界貢献はもちろん、自身の成長にも繋がると思います。

ー 社外で得た知見を社内に還元するとは具体的にどういうことですか?

青山:私はKubernetesといった、比較的世の中に普及して日が浅い最新の技術を追っています。情報収集の手段は海外のカンファレンスへの参加だったり、登壇した後のフィードバックや他の登壇者とのディスカッション。あとは技術コミュニティの運営に関わっているのでそこから得られる情報です。

今、Kubernetesはコミュニティを中心に、徐々にベストプラクティスが形づくられ、バッドプラクティスの事例も共有されています。

社内のプロダクトにもKubernetes関連の新しい技術が導入されていますが、その際にベストプラクティスに沿って導入できるようにアドバイザー的に関わっています。

降矢さんが関わっているAndroidの分野ではどうですか?

降矢:最新技術を海外からキャッチアップするという流れは青山さんと同じですが、Androidは社内還元という点だと少し異なるかもしれません。

というのは、現在のAndroidは開発手法が成熟してきたフェーズにあって、最新ライブラリの普及や、Android開発未経験者や初心者に向けた啓蒙活動など、開発者の裾野を広めるフェーズになっています。まさに自分がやっているGDE(Google Developers Expert for Android)がその役割の一部を担っていると思っています。

以前からサイバーエージェントのAndroidエンジニアは、社内で勉強会をするよりも、積極的に社外で情報発信するように推進してきました。そのため、技術カンファレンスへの登壇や、勉強会主催などの文化が既に根付いており、それぞれが最新技術をキャッチアップしているのが現状です。

その結果、それぞれが関わるプロダクトにベストプラクティスや最新技術を自主的に還元していたりもしています。アニメーションや動画再生など、Android開発の中で分野を細くしていくと自分より詳しい若手も沢山いるので頼りになります。

青山:なるほど。ちなみに最新技術を社内に還元するには、どんな環境が理想的なのでしょうか。

降矢:還元先という点では新規開発のプロダクトをおすすめしたいです。過去の記事(※1)でも話しましたが、クライアントアプリの開発者は、新規プロダクトを経験したほうが良いと思っています。

※1 30代に突入したエンジニアが「20代だからこそ、新規立ち上げを経験して欲しい」と考える理由

現在、CATS(CyberAgent Advanced Technology Studio)という開発組織では「WinTicket」をはじめとした新規開発も多く担当し、グロースも行う組織でありプロダクトに関わっていますが、短期間で得られる挑戦的な技術の経験値によって、特に若手が急成長していると思っています。(※2)

※2 サービスメッシュを導入してよかった話

青山:なるほど。インフラエンジニアの場合は、そこまで頻度高く新規プロダクトに関わるケースはないかもしれませんね(笑)。

運用中のプロダクトに対して抜本的な技術刷新という選択肢はとりづらいですが、運用中だからこその様々な制約や環境下の中で、パフォーマンス改善のためのアーキテクチャを考えられるスキルが、インフラエンジニアに必要だと思っています。

例えば、VMからコンテナに技術遷移が起きているトレンドの中で、データベースをまるごと刷新するのは難しいけれど、技術的制約やステークホルダーを調整しながら、サービスに影響を出さずに移行していく手法などは、インフラエンジニアにとって欠かせない技術です。

個人的には「ゼロベースでアーキテクチャを考えたときに、どんな技術選定にするのがベストなのか?」を考える習慣は、どんなエンジニアにとっても大切だと思います。

そういった思考習慣から、まだ世の中にない新しいアーキテクチャや、様々な技術課題を解決する可能性が生まれたりもします。実際、KubernetesはVM時代の従来の開発手法で抱えていた技術課題を解決するための新しい技術アプローチでした。
 

AndroidとKubernetesの今後

ー 今後は、どんな技術に注目していますか?

青山:Kubernetesと聞くとコンテナ化されたアプリを動かすだけの技術といったイメージがありますが「クラウド環境でのOSレイヤー」と呼ばれたりもするんです。今後、Kubernetes上でデータベースを始めとした様々なステートフルなアプリケーションや、様々なドメインに特化したアプリケーションが抽象化されて自動管理できるようになっていくと考えているので、その拡張性(※)に注目していきたいと思っています。

「分散システムフレームワーク」としてのKubernetes- Kubernetesで始める新しい開発-

既にAI事業本部でもこの拡張性を利用して独自のオートスケーラー(※)を作ったり、独自のGPUワークロード管理の仕組みを作成したりしています。可能な限りこういった成果物はOSSはとして公開することでも貢献していきたいですね。

Kubernetes拡張を利用した自作Autoscalerで実現するストレスフリーな運用の世界

降矢さんは、どうですか?

降矢:最近、社内でよく議論するのは「UIテストや機種依存テストなど、QAテストで行うようなことををCI上で自動化することにより、クライアントエンジニアの負担を減らす仕組みを作りたい」という話です。

Androidは画面表示に、機種依存やOSバージョンの影響が色濃くでます。例えば、機能改修でコードを一行追加したり、ライブラリーのマイナーバージョンを1つあげたことで、意図せぬデザイン崩れが特定端末に限って起きたりします。

もちろん、開発中にも実機テストはしていますが、複数端末で常に検証しながら開発できるわけではないので、特定端末でのみ再現するデザイン崩れなどを発見するのが遅れたりします。また「AbemaTV」をはじめとして当社は動画サービスが多いので、動画の再生が正しくできているかといった検証に工数がかかるテストも、CI上で自動化できるとしたらどれだけ心理的に楽になるでしょうか。

テストの自動化はクオリティの担保だけでなく、Androidエンジニアの開発コストの削減や心理的安全性にもつながります。これが実運用できれば全社的に展開できるので、開発リソースをプロダクトの改善や新技術の検証に割くことができます。

青山:現段階だと、どこまで自動化できているんですか?

降矢:Pull Requestを出してチームでコードレビューしている時に、テストの結果のスクリーンショットが共有されるような仕組みを、CATSが関わっている新規プロダクト開発でAndroidだけ試験稼働中であり、これから精度を上げAndroid以外も対応したいと思っています
 

※ (左) CATS で取り組んでいるスクリーンショットテストの一部。(右) Pull RequestごとにGithubに自動でコメントされてく様子。
※ (左) CATS で取り組んでいるスクリーンショットテストの一部。(右) Pull RequestごとにGithubに自動でコメントされてく様子。

全画面の全OSバージョンのスクリーンショットが自動的にキャプチャされて、Pull Requestに出力されています。

このように、端末が異なる機種を比較して、デザイン崩れが起きていないかのテストと、コードの修正をした際のリグレッションテスト(Before/After)でデザイン崩れが発生していないかが自動化されています。

CATSで試験的に運用していますが、精度が上がり、安定し、レポートの見え方も整理できてきたら全社に展開しようと考えています。

Developer Expertsの今後

ー Developer Expertsとして目指している方向性や、こんな人に加わってほしいとかありますか?

降矢:若手から見て「自分もDeveloper Expertsに加わりたい」と思われるように、アウトプットを通じて社内はもちろん、Android業界に貢献できる存在でありたいと思います。

青山:Kubernetesをはじめとしたクラウドネイティブな技術スタックは、まだまだ成長中の分野なので、これからも積極的にキャッチアップして社内に啓蒙していきたいと思います。

しかし、いずれはKubernetesもAndroidみたいに成熟して、特定の技術分野が出てきて細分化していくと思います。その時は、若手が率先して各分野をキャッチアップしていき、自分より詳しい人が出てきて、プロダクトにそれぞれ還元するサイクルになっていくと思います。

降矢:そんな若手がDeveloper Expertsに加わってくれたら嬉しいですね。

青山:はい。それこそDeveloper Experts制度を作った甲斐があります。

サイバーエージェントのオフィシャルSNSアカウントをフォロー

  • Facebook
  • Twitter
  • Instagram
Page Top