採用

CTOを目指す新卒エンジニアがテックリードで1年間やり通したこと

全職種152名の同期の中から最優秀新人賞に選ばれたエンジニア

Profile

  • メディア統括本部 CATS(CyberAgent Advanced Technology Studio) 江頭 宏亮
    バックエンドエンジニア 2018年サイバーエージェント新卒入社。 学生時代はiOSエンジニアとしてサービス開発に携わり、2017年4月「AbemaTV」にジョインしたタイミングでバックエンドエンジニアにキャリアチェンジ。 現在は今春リリースしたWinTicketリードエンジニアとして従事している。

サイバーエージェントのCTOになりたい

ー 最優秀賞おめでとうございます。受賞理由は「1年目とは思えない圧倒的な技術力でWinTicketの開発リーダーとして活躍」とあります。この1年でどんなプロジェクトに関わったのですか?

2017年4月に「AbemaTV」開発局で内定者アルバイトではいり、その後に横軸の開発組織CATS(CyberAgent Advanced Technology Studio)に異動しました。2018年4月に公営競技の投票サービス「WinTicket」の開発プロジェクトにジョインし、サーバーサイドチームの開発責任者を担当しました。

約12ヶ月の開発期間を経て「WinTicket」は2019年4月2日に無事リリースすることができました。
競輪のインターネット投票サービス「WinTicket」のサービスを開始「AbemaTV」で「競輪チャンネル」の開設も

ー サーバーサイドの開発責任者とありましたが、どんなチームを担当したのですか?

「WinTicket」のサーバーサイドチームは現在7名です。

メンバーの多くは、「アメーバピグ」や「AWA」、「 AbemaTV」などサイバーエージェントの主力サービスを開発してきたエンジニアばかりで、新卒入社7年目からキャリアの方までとても層の厚いチームです。

また、クライアントチームはGoogle Developer Expertsの降矢大地(??s?????)を始めとする、業界でもトップクラスのエンジニアが参加しました。

「WinTicket」の始まりは2018年4月で、自分と18卒同期の2名で開発していたのですが、7月に上記の先輩エンジニアのみなさんがジョインしてくる流れになりました。

経験豊かな先輩たちが一気に入ってきましたが、どんな人達かわからない状態で驚きもしました。サーバーサイドチームのほうは、自分が改めて開発責任者を担当することになりました。

ー 新卒1年目で開発責任者に抜擢されたのはなぜだと思いますか?

会社から多くのチャンスをもらったことだと感じています。

2017年4月に「AbemaTV」の開発局に内定者アルバイトで入った日、開発局のエンジニアチームで歓迎会を開いてもらいました。その席で「AbemaTV」 CTOの西尾に「将来はサイバーエージェントのCTOになりたい」と伝えました。入社初日でそんなことを言う内定者に対して、西尾や周りの先輩たちが真剣に耳を傾けてくれたのが印象的でした。

ー なぜサイバーエージェントのCTOになりたいのですか?

FacebookやTwitterなど世界中で使われているサービスはグローバル企業が開発しています。日本のプロダクトはそれらと比べると、まだ乗り越えなくてはいけない壁があると感じていましたし、何より悔しかった。サイバーエージェントのプロダクトで世界で勝負したいと思いました。その過程でサイバーエージェントのCTOを目指すことを思い描いていました。

歓迎会の翌日、西尾が技術管轄の取締役である長瀬に話をしてくれたそうです。その日のうちに、長瀬が私の席にやってきて「CTOになりたいんだって?」と話を切り出してくれました。

私は「いつかサイバーエージェントのCTOになり会社を技術で牽引し、いずれは役員になって経営を支えられる人になりたいです。そのためにはどのようにキャリアを積めば良いのかわからないから、チャンスをください」と思いを告げました。

歓迎会のエンジニアのみなさんと同じように、長瀬もまた私の話に真剣に耳を傾けてくれたのが印象的でした。

宣言するだけで開発責任者になれるわけではないですが、率直に伝えることで、周りは耳を傾けてくれて、チャンスを与えてくれる環境がサイバーエージェントにあると感じました。

ー 取締役の長瀬が2019年新卒向けのメッセージで「(江頭は)常に自分自身にプレッシャーをかけ、困難な場面でも逃げることなくやり抜ぬいた」と語っています。自分にかけるプレッシャーとは何ですか?

「WinTicket」はユーザーのお金を扱うサービスでもあるので、システム的なエラーが生じると本サービスの信頼を大きく失う可能性があります。

リリースできるかの不安もありましたし、サーバーダウンや遅延なくサービスを提供できるのか、常に重圧を感じて開発をしてきました。

2019年4月2日に「WinTicket」をリリースすることができました。ここから継続的な改善が求められますが、今は1つのシステムを作りきったという達成感も感じています。

自分が一番経験がないからこそ開発責任者として聞きまくった

ー 長瀬は「困難な場面でも逃げることなくやり抜ぬいた」とも言っています。具体的にどういう行動を心がけていたのですか?

周りの先輩を巻き込むことは意識していました。先輩エンジニアと比べ開発経験が圧倒的に少ないため、時間という埋められない壁が理由で自分に自信を持てなかったことが、そうさせたのだと思います。

ー 開発責任者として、自信がない状態だと何が困るのですか?

これで絶対いけるという確証がもてないですね。

「このサービスはこれくらいの規模のユーザーを想定していて、これくらいのアクセスがくるのでこういった対策をするべきだ」と仮設は立ちますが、それでうまくいくかどうかの確証が得られません。理由は、同じような状況に置かれたことがないので、経験値としての根拠がないためです。

ー その確証はもはや経験する事でしか得られないのですか?

「とりあえずやってみる」という選択肢もあるかもしれません。しかし「WinTicket」はなんとしても落とすことができないサービスなので、確証もなく設計することはできません。

そこで自分は先輩たちに「設計をこう考えています。先輩はどう考えますか?」を繰り返し繰り返し聞いてまわりました。

先輩たちからは、過去にこういった設計をしたけど、こんな失敗をしたなどのリアルな体験を聞いて参考にすることができました。また、要件に見合うライブラリや関数の使い方、シンプルなコードの書き方や、信頼性の高いアーキテクチャの設計などを教えてもらいました。

ー その結果「WinTicket」はどんな設計を選択したのですか?

「WinTicket」ではマイクロサービスアーキテクチャとゲートウェイパターンを採用しました。インフラはKubernetesを採用しマイクロサービス間の通信はgRPCを使っています。また、ミッションクリティカルな要件に対応するためデータベースはGCPのCloud Spannerを採用しています。

コードベースはテスタブルで変更に柔軟に対応できるようにクリーンアーキテクチャを採用しました。

ー クリーンアーキテクチャとは?

運用中のサービスでもミドルウェアを変更したいといった要件が出る事がありますが、コードが固有のミドルウェアに依存した書き方になっていると現実的には難しいです。 これをクリーンアーキテクチャを採用し責務ごとにレイヤー分けの依存関係を明確にすることで、データベースの変更が生じてもコアロジック部分には一切影響がないように設計されています。

全てのミドルウェアは抽象化してあるので、入れ替えが可能になっています。もちろんデータの移行などのオペレーションは発生するので、簡単に移行ができるわけではないですが、ソースコードレベルでいうと、大きく変える必要はありません。

ー 開発責任者の役割をどうとらえていますか?

プロダクトを成功させるための技術的な意思決定をするのが開発責任者だと思っています。「WinTicket」では自分が一番経験がないからこそ、自分が考えた設計が最適解なのか確証を得るために、周りの人たちに助言をもらい、その設計を正解に近づけました。

開発責任者と聞くと、周りのエンジニアを率いたり束ねたりするイメージがありますが、自分の場合は自分が選んだ選択肢を正解に近づけるために、周りの経験豊かな先輩の助けをもらうことで、プロジェクトの成功率を上げることだと考えています。

開発責任者といっても一人で全て抱え込む必要はないですし、サイバーエージェントグループには経験豊富なエンジニアが多くいるので、周りにいる人たちに自分の考えをあてにいくことが大切だと思います。

「WinTicket」では自分が一番経験がなく最年少でしたが、それを通して開発責任者として信頼してもらえた気がします。

エンジニアとして突き抜けるために日々繰り返している習慣

ー 仕事をする上で日々意識している習慣はありますか?

「AbemaTV」で内定者アルバイトをしていた時に経験したことは今でも習慣にしています。 CTOの西尾と一緒に仕事をしたのですが、西尾のタスクのふりかたは「AbemaTVにはこういう問題を抱えているからその課題を改善してほしい」というアプローチでした。

つまり「課題を与えるが、どう解決するかを任せる」スタイルです。

西尾が自分にふってくるタスクは難易度も、求めるクオリティレベルも高く、応えるためには何度も何度もあてにいく必要がありました。

「WinTicket」で先輩に考えを聞いてまわったのも、西尾との仕事で身についた「あてにいく習慣」があったからだと思います。

ー 今年入社した新卒向けに、普段からこういうことを習慣にしたほうが良いなどはありますか?

先輩社員で2015年新卒のLe Van Nghiaから教わったのが情報収集のやり方です。

具体的にはGitHubやTwitterの技術情報を毎日チェックして、トレンドをキャッチアップすることです。

例えば、GitHubの言語別トレンドランキングを朝に見るとか、技術分野で最先端にいる外国人のエンジニアのつぶやきをチェックするなどを、暇な時で良いので毎日見ることです。

ー トレンドを理解しているとは具体的にどういう状態でしょうか。

自分はGoを使っているのでGitHubのGoのトレンドランキングで、盛り上がっているOSSを発見できます。例えば、最近だとKubernetesの設定をメンテナンスする便利なライブラリがランキングに浮上すると、自分たちのプロジェクトに採用できるかもしれないという気付きになります。

技術トレンドを知っておくことで引き出しが増え、仕事にも活かせるからおすすめです。

サイバーエージェントのCTOとは?

ー サイバーエージェントのCTOを目指すにあたって、理想とするエンジニア像をおしえてください。

個人の技術力も大切ですがそれ以上に、強いチームを率いることができるエンジニアを目指しています。

強いチームを作れるエンジニアになりたいといつも思っています。

新卒採用のオフィシャルSNSアカウントをフォロー

  • Facebook
  • Twitter
Page Top