僕らが20年たっても成長しつづけるエンジニアでいるために

技術・デザイン

~WebフロントのDeveloper Expertsが担う「次にスゴイものを作るために、攻めすぎるくらい攻めておく理由」~

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

Profile

  • 原 一成 (ハラ カズナリ)
    2008年に新卒でサイバーエージェントに入社。主に『Ameba』関連の開発を担当。パフォーマンス、アクセシビリティ、アーキテクチャなど、Webアプリケーション品質の向上に注力している。

サイバーエージェントのWebフロントの12年間

― サイバーエージェントのWebフロントを12年間見てきてどう感じますか?

今でこそ、Webエンジニアとして日々開発に携わっていますが、2008年当時のユーザー端末はガラケーがメインで、WebフロントはFlashが全盛期の頃です。サイバーエージェントではFlashで開発された「PC版アメーバピグ」が象徴的なプロダクトでした。

当時を振り返るとJavaScriptはとっつきづらく、どこか敬遠していました。なにより関数が長くて(笑)「document.getElementById(id)・・・なんでこんなに長い関数をタイピングしないといけないだろう」と思ったり。プロダクトに導入した際も、機能実装のために可読性や保守性に目をつぶらざるを得ない状態だったのを覚えています。

流れが変わったのはNode.jsの登場です。サイバーエージェントのプロダクトに採用され始めたのは2010年あたりで、ちょうど「PC版ピグライフ」のサーバーサイドがNode.jsで実装されました。

それまで、可読性や保守性、テスト環境に難があったJavaScriptの課題が解消されていき、技術のトレンドが大きく変わっていくのを目の当たりにしました。社内でも多くのプロダクトがNode.jsとJavaScriptを選定するようになりました。

ー これまでネイティブアプリの勃興や、Flashの衰退など大きなトレンドの変化がありました。Webフロントエンジニアとしてこの流れをどう感じましたか?

Webは良くも悪くも、普遍的な技術と紐づいていて、あまり急激に変化しないのが特徴です。というのも、ネットワークとブラウザの関係性に大きな変化はありませんし、1991年に作られたWebページが今も閲覧できます。また、HTMLやCSSなど仕様のバージョンアップはあれど、W3Cを中心とした様々なワーキンググループでの仕様策定という流れに沿ったものです。

JavaScriptという観点だとWebフロントに限らず、サーバーサイドやIoTなど様々なプラットフォームに応用できる点も魅力的です。

Node.jsをきっかけに、社内のWebフロントエンジニアも、サーバーサイドを担うようになりました。

私も、アメブロのフロントエンドをReact/Reduxを活用してリニューアルした際には、より広範囲なインフラ寄りのサーバー管理に関わったりもしました。

その後、アメブロをフルCDN化したり、最近はPWA(Progressive Web Apps)という新しい機能を導入しながら今日に至ります。

次にスゴイものを作るために、Developer Expertsが担う役割

― これまでのエンジニア経験の中で、特に心掛けていたことはありますか?

スキルは「年輪のようなもの」だと考えています。一直線や垂直に伸びるものではなく、その時に必要な技術を身に付けていくうちに、少しずつ成長輪が増えていくイメージです。

私の場合、WebフロントとJavaScriptを1つ目の成長輪だとすると、積み重なっていったのがNode.jsの時もあればiOSであったり、CDNやPWAでした。

あとは「楽しむ力」でしょうか。「自分はこれ!」って決めつけずに、今あるトレンド、会社の環境、変化を楽しむのが大事です。

入社した当時、Flashがなくなってアメーバピグがネイティブアプリになるなんて想像できなかったし、自分がアメブロをフルCDN化するなんて想像もできませんでした。予測不能な世の中で「自分はこれ」と決めるのは、成長の幅を狭めてしまう気もします。

変化する環境を受け入れた上で仕事を楽しむ。その意味では社長の藤田が社員総会で「会社を楽しもう」とスローガンを掲げたのは嬉しかったです。

ー Developer Expertsに就任しましたが、今後どんな事をしたいですか?

サイバーエージェントは技術的に攻めていて、なにか面白いことをやっている会社だと思われているのではないでしょうか。

特にWebフロントに関しては、昔から技術的な挑戦は積極的でしたね。こちらのヤフーさんとの対談にもありますが「攻め過ぎるぐらい攻めるよね」と言われることもあります。

でも、攻める理由もちゃんとあるんですよね。習慣的にチャレンジしていないと、人は保守的になる傾向があります。技術組織においては、誰かが先陣を切ってリスクを負う姿勢を見せていかないと、やがて技術の幅が狭まっていってしまいます。もちろん最終的には攻守のバランスが重要ですが。

放っておくと「前と同じやり方でいいか」となってしまいがちなところを、意識して会社の技術の幅を広げていく。その役割を担うのもDeveloper Expertsがやるべきことの1つだと思います。

そういった経験を組織が積み重ねることで、リスクの取り方も変わってきます。1回対処した経験があればとれるリスクの幅が増えますし、成功確率も上がっていく。サービスの特性に合わせてリスクを選択することも可能になります。このリスクは許容できる、できないといった判断もできるようになっていきます。

リスクを恐れ過ぎると技術の幅が狭くなってしまう。技術の幅が狭いということはクオリティを上げられる幅も狭くなってしまいがちです。

次に何か凄いものを作ろうとした時に、作れなくなってしまう危険性もあるわけです。
 

20年たっても成長し続けるエンジニアでいるために

― 技術者として10年20年と成長し続けていくために、日頃から心がけている習慣はなんですか?

「手を抜けそうなところで手を抜かない」です。エンジニアだと「プロトタイプだからこれでいいかな」「モックだから適当な設計で済ませちゃおうかな」と雑に済ませてしまうことがありますよね。でもそこで手を抜くと往々にして最後まで手を抜いてしまいがちです。

「技術を突き詰める」という点ではスポーツ選手が参考になるかもしれません。すごい選手は練習を本番のつもりで打ち込むそうです。練習と思ってシュートを打つのか、本番と思ってシュートを打つのかで、成果が違ってくる。だから試合のように練習をして、逆に試合は少し肩の力を抜いて臨むそうです。

私はモックの段階からクオリティを高くすることを心掛けています。最初のレベルが低いと結局はその地点からスタートすることになってしまう。実は最初のレベルは高いほうが楽なんです。

時間の余裕もできるし、気持ち的にも余裕ができる。場合によってはそれまでの良い部分はそのまま使ったり、悪い部分は避けるようにしたりして作り直すことだってできます。特に時間的・精神的な余裕が作れるのは大きいですよね。

「技術書を読むだけでなく、掲載されているコードを書いて動かすのが大切」とよく聞きます。更に効果的なのは、本番さながらのプロトタイプやモックを作ってみることです。100%とはいかなくても近いものを出せるように意識する。

スポーツにおいて「本番に近い形で練習する」ことと感覚的には近いのかなと思います。それを繰り返しておくと、自然に力がつくうえに本番にも強くなります。エンジニアにとって本番というのは実際にプロダクトに導入する時ですよね。


― 原さんはアメブロに長年関わってきながら、アメブロ内の様々なプロジェクトで評価されてきました。運用プロジェクトで成果を出すためのコツを教えて下さい。

新規プロジェクトやスタートアップのようなゼロイチはやりがいがあります。自由に描いた理想形に近付ける形でものを作れるのは楽しいですよね。

一方アメブロのような既存サービスは「計画を練り、この機能を改善して、ビジネス的にこういう成果を出そう」という、計画と実行の結果を実感しやすいです。

長く続いているサービスなら、どのプロダクトであっても課題は多々出てきます。課題があるということは、言い換えれば改善できる余地が多いわけです。それに加え多くのユーザーさんに使ってもらっているので、改善できた時の影響が大きいということもモチベーションになると思います。


― 既存サービス運用の中で「手を抜かない」ためにどう意識したら良いでしょうか

運用中のサービスは手を抜こうと思えば簡単にできてしまうんですよね。「このプロダクトはあまり綺麗に作られていないから雑でもいいか」と思いがちなのをグッとこらえる。次の人にそう思われないように、自分は何ができるかを考えてみることをおすすめします。

この辺りは学生時代に野球部だった経験から来ているかもしれません。次の代に変な風習を回したくないと思うことがありますよね。我が校の部活には「先輩の水筒を倒したら即グラウンドダッシュ」という変な風習がありましたが、私達の代は全力で抵抗して変えました(笑)。後輩にそんな思いさせたくないじゃないですか。

技術も一緒で「おかしいな」と思ったところを手を抜かないで、自ら負担して直していくというのも成長する方法の1つだと思います。そういう改善点はむしろ既存のプロダクトのほうが多々あります。

アメブロのフルCDNは「誰もがおかしいなと思っているけど、なかなか進まないこと」にあえて手をつけました。プロジェクトのメンバーは結果的に実力に加え「最後までつきあってくれそうな人」になりました。一人でやると辛いので、そのような仲間を見つけると良いかもしれません(笑)

「配信と実行環境の変化」がもたらすアプリケーションの新しいありかた

― 最近注目している技術的なトピックスは何ですか?

個人的に注目しているのは「配信と実行環境の変化」です。

この分野が発展していくと、従来のWebサーバにアプリケーションを配置するだけではなく、アプリケーションをエッジサーバーやデバイス上など様々な実行環境で動かせるようにもなります。

これはコンピュータの計算処理能力とネットワーク速度の飛躍的な向上、さらには圧縮技術の向上といった進化があって実現が見えてきたと言えるでしょう。

そうするとアプリケーションの作り方や、パフォーマンスの出し方にも変化があるはずです。例えば、アプリケーションの一部をパッケージングして事前に配布して使ってもらったり、CDNやネットワークキャリアの基地局上で実行することで、ユーザーから一番近い環境で動かしネットワークの遅延を改善することもできます。ただし、どの実行環境でもアクセシブルできちんと動作させるためには、基本を突き詰めておくことが大切な気がしています。

結局のところ「ネットワークを介してユーザーにコンテンツを届ける」のは変わりません。環境の変化に合わせて、それを適切に動作させるのが我々エンジニアの役割です。だからこそ、技術的な進歩によってそのあり方が大きく変わっていくトレンドを目の当たりにすると、ワクワクしますよね。

2022年度新卒採用エンジニアコースエントリー

この記事をシェア

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

記事ランキング

「現場の技術に触れてもっと挑戦したいと思った」
インターンシップに参加した内定者インタビュー!

技術・デザイン

サイバーエージェントでは、毎年趣向を凝らしたインターンシップを開催しています。今回は、新卒エンジニア採用チームが企画した就業型インターンシップ「CA Tech JOB Lite」をご紹介します。本インターンシップを経験した内定者と、トレーナーとして参加していたエンジニア社員に、得られる技術スキルや、成長できるポイントなどについて聞きました。

「CA Tech JOB Lite」とは
約2週間、社員と同じ実務を経験する就業型インターンシップです。実務を通して技術面での成長を実感していただけるだけでなく、サイバーエージェントについて知っていただけるプログラムを予定しています。就業先の部署や取り組む業務は、個別相談の上、決定いたします。昨年も実施し、非常に応募が多かったため、今年はサーバーサイド/Webフロントエンド/Androidエンジニアの3職種、かつ2021年8月24日(火)~9月3日(金)、2021年9月7日(火)~9月17日(金)の2タームで開催します。

選考フローとしては、書類選考の後に2回の面接を予定しています。1回目の面接は主に技術について、2回目の面接は受け入れ先の社員を交え「CA Tech JOB Lite」でチャレンジしてみたいことなどについて伺います。
※受け入れ先については、エントリーシートにご記載いただく内容をもとに選定いたします。

Page Top