Findy Engineer Lab

エンジニアの"ちょい先"を考えるメディア

Node.jsコミュニティの運営経験を生かしたフロントエンド開発マネジメントー古川陽介さんが選んだ二足のわらじのキャリアとは

日本のNode.jsコミュニティの中心で活動してきた古川陽介@yosuke_furukawaさんは、仕事でもシニアソフトウェアエンジニアとグループマネジャーの二足のわらじを履きこなしています。アプリ開発の最前線における複数の役割にコミュニティの運営と、これだけわらじを履いていては足がもつれてしまうのではないかというのは勝手な印象で、古川さんにとってみればどれも地続きのことだと言います。

スペシャリストとしてキャリアを築いてきながら、どういった形でマネジメントにも取り組むようになったのか。フロントエンドに傾倒するようになったきっかけから、ひとつの技術領域を突き詰めた上でその分野のリーダーとしてチームをまとめ、育成に取り組む上での心がけなど、これまでの歩みも含めてお話をうかがいました。

スペシャリストでありマネージャーである必要性があった

── このインタビューではコミュニティのお話もうかがいますが、その前に現在取り組んでいるお仕事について具体的に教えてください。昨年末のブログにはマネジメントとシニアソフトウェアエンジニアの「二足のわらじで4年目」と書かれていましたが。

古川 リクルートのシニアソフトウェアエンジニアとしては、技術支援とエンジニアの育成ですね。リクルート社内ISUCON*1を開催するなどで技術を培っています。また他の会社と組んでR&Dに取り組むのも仕事の1つで、そうした成果を取り入れながら「ホットペッパービューティーコスメ」のアプリの開発もしています。

もう1つの役割は、グループマネージャーです。いわゆるエンジニアリングマネージャー的な立ち位置で、リクルート社内の仕事をどのメンバーにアサインすると、キャリアの方向性として最適かといったことも合わせて考えています。同時にリクルートの子会社であるニジボックスで約50名のフロントエンジニアからなる開発組織を新たに組織し、マネジメントの仕組みを整えていくことにも取り組んでいます。

── シニアエンジニアとマネージャーのどちらかに軸足を置いているわけでなく、どちらもしっかりと取り組んでいるのはかなりたいへんなのではないかと思いますが。

古川 そうですね。この2種類の仕事を同時にやるのはあまりないことだなと僕も思います。集中してパフォーマンスを発揮するなら、スペシャリストかマネージャー、どちらかに専念する方がよいでしょう。ですが自分のやりたいことを実現するには、2つのロールをミックスしていく必要があったんです。

── それはどういったことでしょうか?

古川 開発組織の規模が大きくて、フロントエンドのようなひっきりなしにアップデートがかかる技術領域においては、スペシャリストが1人だけで開拓しようとしても限界があることに気づいたのです。

例えば何か新しいアプリケーションを作るとなったとき、Rustで作ろうとかGoで作ろうとか、いやErlangでとか、エンジニアの興味に沿って新しい技術を導入し、よりよいソフトウェアを開発することはできます。しかし、作ったときに「すごいね」と言われても、運用できるメンバーが育てられなければ作り散らかしているようなことになってしまいます。

凄腕のエンジニアであれば新しい道を1人で切り開けちゃうんですけど、その後で誰もメンテナンスしなければ、せっかく開拓した道も自然に戻ってしまう。Node.jsでもReactでも何であれ新たにサービスを作るには作れる。ですが、その後をどうするんだ? ということですね。作ってはみたものの、あまりに技術が新し過ぎて次の人に任せられないことがある。

ですからスペシャリストとして新しい技術を開拓するだけでなく、それをエンジニアのマネジメントを通じて周りのメンバーにも広め、運用や改善ができるようにしていくことが必要なんです。

── それはパートナー企業を開拓するといったことでは解決が難しい……?

古川 システムインテグレーターといったパートナーと一緒になって、育成しながら開発する方法を試したこともあります。あらかじめ運用に当たる人をアサインしてもらって、技術を教えながら開発していく。これは、もちろんトントン拍子とはいきませんが、割とうまくいったと思います。

── トントン拍子にいかなかったのはどういった部分でしょうか?

古川 このやり方では力量だけでなく、マインドとして向く人とそうでない人がいるんです。フロントエンドの技術には、常に何かしらのアップデートがあります。それを頑張って吸収し、自分で知識を獲得しようとするマインドがないとうまくいかない。「やり方は教えるから、誰でもいいから人を当ててください」ではだめなんです。

── そうなると、同じ育成するのであれば社内にチームを作った方がいいということになりますね。

古川 そうですね。リクルートに入社したのが2016年ですが、しばらくしてこうした課題に気づき、組織的に取り組むべきだと考えていました。変化が速い技術を追いかけるためにも、採用のためにも「フロントエンドの専門組織があるといいよね」という話をしていたのです。

そこに「グループマネージャーをやらないか?」という話が来たので、両方の仕事に取り組んでみることにしました。最初は手探りのことも多かったですが、少しずつ開発グループを成長させ、メンバーを育ててこられたと思います。

ユーザーを喜ばせるためにフロントエンドを突き詰める

── ここから古川さんのキャリアを振り返って、フロントエンドに興味を持ったきっかけなどもうかがいたいのですが、そもそもITエンジニアとしてのスタートはどういった形だったのでしょうか?

古川 新卒で複合機メーカーに入社し、文書管理システムを作っていました。当時はバックエンドで、全文検索とデータベース周りを担当していました。

データベースのインデックスを後から容易に追加できるのが特徴で、お客様から「遅い」という問い合わせが来ると、いろいろ調べて「ここにインデックスを張ってないや」と気付いて、修正する。それでお客様が「速くなりました、ありがとうございます」と喜ばれるのはうれしかったですね。

そのシステムがある日、リリースして間もないGoogle Chromeに対応したんです。当時まだフロントエンドという認識はありませんでしたが、ただブラウザをChromeにしただけでサービスがとても速くなったことに衝撃を受けました。バックエンドで頑張って早くするより、Webブラウザのレンダリングが全体に与えるインパクトの方が大きかったんです。

これをきっかけに「システムはトータルで早くないと意味がない」と強く思いましたし、JavaScriptをはじめとするフロントエンド周りについて漠然と「こんなに喜ばれるなら、こっちをやってみたいな」と思い始めました。

── フロントエンドに取り組むきっかけにはユーザー体験があったんですね。

古川 ほとんどのエンジニアがそうだと思いますが、やはりユーザーに喜んでもらいたいという気持ちは大きいですね。僕の場合は、たまたまパフォーマンスという文脈で、もっと喜ばれたいならフロントエンドも突き詰めなければいけないことに気付きました。今でもISUCONに出たりしているのには、パフォーマンスを意識し続けたいという理由があります。

── その気付きはいつ頃の話でしょうか?

古川 2009年から2010年、ちょうどHTML5ブームが始まりかけた頃ですね。ただ、それまではOracleやJavaをやっていた人間なので、いきなりそっちに行こうとしても何から手を付けていいか分からない。そんなときに、たまたまPublickeyの記事で「これからサーバサイドJavaScriptが来るらしいぞ」という情報をキャッチして、好奇心から手を出したのがNode.jsだったんです。

勉強を始めてみたら、それまで書いてきたJavaと全然違う部分に驚き、非常に面白くなって、そのまま現在に至ります。

── コミュニティとの関わりはどのように始まったのでしょうか?

古川 Node.jsを勉強し始めたことで、それまではまったく無縁だった勉強会にも行くようになりました。中でも「Node.jsの地域勉強会があるらしい」ということで参加したのが東京Node学園祭でしたが、これがけっこう衝撃だったんです。

何がかというと、若いメンバーが多くて、しかも僕の分からないことを話していたこと。高校生もいましたし、内容も高度過ぎて付いていけなかったんです。参加者には何度も発表していたり、雑誌に寄稿している人もいました。それで「これはまずいな」というか、この焦燥感がきっかけになりました。

それから2013年にかけては、毎週勉強してブログにアウトプットして、コメントやフィードバックでインプットをもらい、また良くしていく。このサイクルの繰り返しでした。いつか自分も発表してみたいと思っていましたが、勉強会に足を運ぶうちに知り合いも増えて、東京Node学園祭2013ではスタッフ兼スピーカーとして参加できました。

Node.js国内コミュニティをグローバルとつなぎ支えた10年

── 登壇した翌2014年には勉強会を主催する立場になりますが、どういった経緯でコミュニティの中核メンバーになっていったのでしょう?

古川 その頃、メインファウンダーの1人が卒業を宣言したんです。実はNode.js自体の人気も、ハイプサイクル(hype cycle)で言うなら幻滅期(trough of disillusionment)に入ったような状況で、周囲でも「Node.jsはおもちゃでしかない」という雰囲気でした。本格的なWebアプリケーション開発に使われるなんて、想像もできなかった時期です。

僕も、そこで別の技術に取り組む判断をしてよかったのかもしれませんが、遅ればせながら勉強を始めてずっと頑張ってきたので、なんかやめられなくて……。そのとき「次のNode学園のリーダーをやるのはどうですか?」と言われ、周りからも推薦があったので「やってみよう」となった感じです。

── 古川さんがNode.js日本ユーザーグループの代表になられた2014年から翌2015年にかけて、開発の停滞からio.jsがフォークされるなど開発コミュニティがかなり複雑な状況でしたよね。

古川 東京Node学園の2代目リーダーとして一番やりたかったのは、「大元のNode.jsが分裂しそうになっているこの状況を何とかしたい」ということでした。そこで、何が起きていてどう落ち着きそうなのかを日本のメンバーに伝えたり、どちらのAPIでも互換性を保てるようにNode.js本体にコントリビュートするといった活動をしていました。

io.jsについて知っていること - from scratch(※古川さんがブログに掲載した解説記事)

── このフォークは、2015年9月に統合という形で決着しました。

古川 やはり開発者コミュニティには力があって、ある程度の方向性は見えていたんです。僕はその上で、どちらを使ってもいいようにコントリビュートしながら情報発信をしていました。

また、2015年の東京Node学園祭では「NodeDiscussion」という時間も設けるなど、開発メンバーを日本に呼んで話してもらいました。グローバルのコミュニティとローカルのコミュニティを意識してつなぎながら活動してきたことは、今にして振り返ると良かったように思います。

東京Node学園祭2015を開催しました。 - from scratch

── コミュニティに本格的に関わり始めてから10年近いですが、モチベーションはどのように保ったのでしょうか。

古川 途中からはモチベーションより使命感の方が大きかったように思いますが、新しい概念が出てきたり、エンジンの中身を深掘りしたり、パフォーマンスを追求したりと、いくら追いかけていても飽きないくらい周辺も幅広いですし、いくらでも深掘りできる領域がありますから、まだまだやれることがあるなと感じています。

もちろん他の言語をちょっとかじってみようかなという気持ちもあります。今はRustを勉強してますし。

── それはどのように知識を得ているのでしょうか?

古川 社内のメンバーにRust好きがいて、教えてもらっています。ISUCONに一緒に出ている仲間もですが、僕より全然年下なのに学ぶことがとても多いですね。1人はパフォーマンスチューニングの鬼で、Goを使いこなしています。Goってすごくシンプルな言語ですが、彼は深いところでどうなっているかを理解しているので、すごく参考になります。

社内では勉強会を週に1回開催して、自分が学んだこともチームのメンバーに展開しています。こうやって互いに教え合えるところが、今のチームの特徴かなと思っています。これってまさに勉強会コミュニティのような組織運営ですが、自分自身そうやって成長してきましたし、そのやり方が合っています。

超凄腕エンジニアは「制約を制約のままにしない」と学ぶ

── 話は前後しますが、2012年には複合機メーカーからWeb企業であるDeNAに転職されていますね。これは勉強し始めたNode.jsを仕事にも生かしたかったということでしょうか?

古川 いえ、DeNAにはサーバサイドエンジニアとして転職しました。「ちょっとフロント寄りのこともできるエンジニア」という立ち位置ですね。本格的にフロントエンドを仕事にするようになったのは、DeNAでも終盤でのことです。

── コミュニティでも多くの経験をされていて、エンジニアとしてかなり成長された時期ではないかと思いますが。

古川 そうですね。Webアプリケーションをまるっとちゃんと作れるようになったのは、とても貴重な経験でした。それから今はFasltyで仕事されている奥一穂@kazuhoさんをはじめとして超凄腕のエンジニアに会えたことは得がたい体験だったと思います。

── 古川さんから見ても超凄腕と感じたのはどういったところでしょうか?

古川 例えば、僕が「JavaScriptの実行を速くするには、どこをいじればいいのだろう?」というところで悩んでいたときに、一穂さんはJavaScriptを動かす言語ごと作ってしまう。そういう発想をするんですよ。それまでの常識や枠組みにとらわれず飛び越えていく人が、世界に通用するエンジニアになるんだと感じました。自分も、できるかどうか分かりませんが「制約を制約のままにしない」という考え方を持たなきゃいけないんだなと思いました。

── そういった考え方が古川さんの活動に生きてるところを挙げるとするなら?

古川 そうですね……。例えば、ライブラリやフレームワークで提供されている機能がここまでというときに、それを限界ととらえないで「じゃあ直接コミットしてしまえば拡大された使い方ができるよね」と提案したり、そもそも人が作ったものなのだから作っている人と直接コミュニケーションを取って元を直しに行く。そう考えられるきっかけをくれたのは、一穂さんをはじめとするエンジニアコミュニティのみんなでした。

── お話を聞いて、仕事での取り組みが、コミュニティのつながりにも生きているように感じました。

古川 そういうところはあります。例えば、自分が業務のために作ったライブラリなどをOSSとして提供する。それによってコミュニティから直接のフィードバックがもらえますが、さらに自分たちの仕事を理解してもらい、企業のプレゼンスが上がるという側面もあります。それを考えて始めたわけではありませんが、人材育成や採用の面でも役立ちますし、コミュニティに貢献したことが会社に戻ってきて、それをまたコミュニティに還元するというように、ぐるぐる回る感じになっているのはいいことですね。

逆に、コミュニティの運営や勉強会のスタイルは、僕の仕事におけるマネジメントのスタイルにすごく密接に関わっています。社内の技術支援のために勉強会や競技会を開催するのは、ハッカソンやコミュニティ活動と同じです。また、本人の目線を上げるきっかけとして「JSconf JPで発表することを目標に、アーキテクチャを設計してみなよ」とアドバイスしたりもしています。

自分はコミュニティに育てられてきたからこそマネジメントもそれに依っているし、そこで育成した人たちがコミュニティで発表することでコミュニティ側も強くすることができているように思います。

フロントエンドのエンジニアに必要なマインドセットとは

── 最後に、フロントエンドのスペシャリストを目指しているエンジニアに何かアドバイスできることはあるでしょうか。例えば先ほどマインドセットのお話がありましたが。

古川 そうですね。例えばSQLのように書き方を覚えればほとんど変わらず活用できるコスパのいい技術に比べると、フロントエンドの領域はやはりアップデートが早いです。JavaScriptからCoffeeScriptが出てきて、「これからはES6だ」とか言った後にTypeScriptが出てくる。そういうように言語レベルで変わっていますから、本当に動きが早い。アップデートされるのは仕方のないことですから、それをいかに早くキャッチアップしていくか、それを苦と思わない人じゃないとつらいかもしれません。

── これから新たに勉強を始める人は大変でしょうか?

古川 ただ、前の技術と次の技術はつながってはいるので、効率よく差分で学べる部分はあります。Webの技術は蓄積が「知の高速道路」になっていますから、ライブラリやフレームワークを活用して仕事ができる優秀なエンジニアもけっこういます。そこから先さらに伸びるかどうかは本人の興味や好奇心次第ですが、何も言われなくても自分で調べてきて「これはこうだと思うんですけど」と言ってきたりする若手がいると、知の高速道路をうまく乗りこなせてすごいと感じますね。

ただ、それだけで満足して過去の歴史を振り返らなければ、次どこに行けばいいかが見つけられないかもしれません。先人が作ってきた高速道路のどれに乗るかを判断しなければいけないこともありますし、高速道路を使って目的地に着いてみたら別の新しくて早い道ができていることもままあります。フロントエンドのライブラリやフレームワークを判断する目を養っていくことが必要かもしれませんね。

── ありがとうございました。ところで今年はNode.jsの大規模カンファレンスは開催されるでしょうか?

古川 東京Node学園祭は、2019年からJSConf JPというイベントに生まれ変わっています。2020年は新型コロナの影響もあって中止になりましたが、2021年はオンラインで11月ごろに開催する予定で調整を進めています。多くの方に参加してもらえるとうれしいですね。

取材中の古川陽介さん
※新型コロナウィルス感染拡大防止の観点から、インタビューはWeb会議ツールを用いてリモートで行いました。

取材・構成:高橋睦美
編集:はてな編集部

【アーカイブ動画】Findy Engineer Lab アフタートークイベント

ToriさんとYosuke Furukawaさんから学ぶ、エンジニアキャリア論

ToriさんとYosuke Furukawaさんから学ぶ、エンジニアキャリア論 -Findy Engineer Lab After Talk Vol.2-
・開催日時:2022/11/2(水)12:00~13:00
・アーカイブ視聴方法:こちらから
※視聴にはFindyへのログインが必要です。ご登録いただくと、Findy上でその他の人気イベントのアーカイブ視聴も可能となります。

*1:「ISUCON」は、LINE株式会社の商標または登録商標です。