Findy Engineer Lab

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

ほんの数行でも、自分のコードが世界を変えられる! Webサービスに魅せられた20代で技術的に諦めなかったこと

エンジニア組織をそれほどアピールしていなかったプレスリリース配信サービスのPR TIMESで、2021年4月に開発者ブログが立ち上がりました。同月にCTOに就任した金子達哉@catatsuyさんによる改善の決意により始まったブログは、現在まで順調に多くのエンジニアによって更新されています。

金子さんは、ピクシブやメルカリといったWebのサービスでインフラからアプリケーション開発まで担当し、サービスの常時HTTPS化といったプロジェクトも手掛け、キャリア8年の若さで執行役員CTOに就任しています。セミナーやブログでのアウトプット、ISUCONの成果や出題といった活動でも知られる金子さんに、どのようなマインドセットでエンジニアとしての20代を歩んできたのかを聞きました。

スペシャリストでもマネジメントでもないCTOの仕事

── PR TIMESのCTOとして、今のお仕事はエンジニアチームをマネジメントすることでしょうか?

金子 開発本部には20名ほどのエンジニアが所属していますが、その多くが新卒か2年目という若手中心の構成です。そのチームでバックエンドのシステム改善を進めつつ、できるところでは機能を追加しています。そのためマネジメントというより、技術の方向性についてメンバーと議論しながら、教育も進めています。

── そうすると、CTOという立場でありながら現場で一緒にコードも書いている形でしょうか?

金子 いえ、方向性が決まったらあとは任せています。本当に数人しかいないベンチャー企業なら、実装するところが一番のボトルネックだからどんどんコードを書くでしょうが。

── 先ほど「教育も」と言われましたが、エンジニアの育成を担当されているのですか?

金子 CTOに就任したときには、技術力が足りないことが最大の課題でした。新卒で入った正社員のメンバーが何人もいて、ポテンシャルが高くモチベーションもあるのに、きちんと教育する人がほぼいない。そのため技術の方向性も分からず、どんな仕様で作れば少ない工数で作れるかといったことも分からない状況でした。

そのメンバーを育成しつつ、一緒にWebサービスを進化させていくことでボトルネックを解消し、会社を変えていくのが私に求められている仕事と考えています。

── メンバーが育ってくれば、その先はマネジメント寄りの仕事にシフトされていくのでしょうか?

金子 いえ、考えてないですね。私はWebサービスを作りたいだけなんですよ。そして、目の前で困っている人を助けたい。スペシャリストかマネジメントかといったことは考えていませんし、この先また1人のエンジニアに戻るかもしれない。そこにこだわりはないです。

── なるほど。それでは金子さん自身が若手だったときのお話から聞かせてください。

分からないモヤモヤを解消するためインフラを経験する

── 金子さんのITエンジニアとしてのキャリアは、2013年に新卒でピクシブに入社されたことに始まりますが、その際に経験もなくインフラチームへの所属を希望されたと当時のブログに書かれていますね。これからキャリアを作っていく若手にしてはかなり思い切ったチャレンジのように思えますが、どういった判断だったのでしょう?

ピクシブ株式会社に入社しました

金子 もうアルバイトとしてピクシブの開発に携わっていましたし、フレームワークを使ってそれっぽく動くWebアプリケーションを作るだけだったら、当時の自分にもできました。だけど、そのコードがどのようにデプロイされ、どうやって動いているのかに関する知識がなくて、インフラチームの人が何を言っているかも全く理解できなかったんです。そこが分からないとコードを書いていてもモヤモヤしてしまい、このままやってても先に進めないなと感じたんです。

── ということは、アプリケーションエンジニアとして成長するために、まずインフラを仕事にしたということですか?

金子 そうですね。やっぱり私は、Webサービスを作りたい人間なんです。でもインフラの知識がないままでは、どう作り、どう運用すればいいのか分からない。

アプリケーションって、最後まで作り切るのが本当に大変なんです。8割くらいまでは、2割の労力でできる。最後の2割、デプロイし切るまでに、残り8割の労力がかかるのではないでしょうか。最後までデプロイし切る力は、当時のオンプレミスだったインフラを経験したからこそ身に付いたように思います。

── クラウドネイティブな環境が一般的になると必要な知識も変わってくるのではないかと思いますが、オンプレミスなインフラを経験して得たものは何だったでしょう?

金子 ネットワークやオンプレミスの知識がないと分からないこと、解決できないことって、サービスがクラウド化されても絶対にあるんですよ。マネージドサービスに任せれば、それっぽく動くWebアプリケーションだって作れるかもしれません。しかし、高パフォーマンスが求められたり、例えばメルカリほどの巨大なサービスを動かしたりする局面では、ボトルネックがどこかに出てくる。それを解消するためにインフラチームでの経験が役立つ。クラウドの時代だからインフラの知識がいらないということはありません。

── アプリケーションエンジニアとしての業務にも生きるものですか?

金子 もちろん生きます。インフラ部に2年半くらいいてアプリケーション開発に戻ってきましたが、それから担当した「サービスのHTTPS化」「PHP 5.5から7.1へのバージョンアップ」「広告サーバーの新機能追加」といった大きなプロジェクトは、全てインフラの知識がないと進められないものばかりでした。

pixivを常時HTTPS化するまでの道のり(前編) (後編)
テクノロジー x ビジネスで広告を本気で変革する。pixiv流 広告プロダクトの作り方 - pixiv inside

例えばHTTPS化のときには、ピクシブのインフラ構成を把握している私が中心となって「収益の根幹である配信広告が障壁になるから早めに見ておこう」「この変更の前にこっちをやっておかないと厳しい」といった議論を進めていきました。PHPのソースコードとインフラ構成の両方に詳しくないといけないですし、もともと広告周りのシステムは把握しており、広告チームと頻繁なやり取りをしていたことも役立ちました。

自分が書いたコードの通りに世界が変わる

── 話を少し戻しますが、なぜそれほどまでWebサービスをデプロイし切りたいのでしょう?

金子 大学生のときに、たまたま働いたベンチャー企業で初めて開発したWebサービスの経験も大きいですね。当時はやりたいことが見つからず「自分が生きる意味って何だろう?」って考えるくらい無気力な人間でした。でもWebサービスは、たとえ数行であっても自分が書いたコードをデプロイすれば、世界がその通りに変わるんです。

── それがWeb開発の良さですか?

金子 そうですね。周りに何を言われようが、リリースし切って結果を出せば勝てる。そこが面白いと思います。リリース後にパフォーマンスの問題が出ても、ちゃんと解決できれば勝てるし、機能追加できればやはり勝ち。そういう分かりやすいものが好きなんですよね。

それが「私でもこんないろいろなことができる」という原体験になって、Webサービスに関わっていたいという熱意が芽生えて、はてなインターンに参加したり、ピクシブで働くことにもつながっています。

── ただ、インフラのことが分からなくても、モヤモヤしていても、Web開発はできないでしょうか。

金子 それも原体験があって、高校生のときなんですが、物理が全く理解できなかったんです。それで教科書をよく読んでいると説明が足りてないところがあって、どうも間違っているように思える。そのときに、ちゃんと根本から教えてくれる人に出会えて、物理が理解できるようになったんです。

やっぱり理解できないところが少しでもあると、モヤモヤが出てくる。ソフトウェア開発が「よく分からないけれど、これを押したら、このコマンドが実行されて、それで終わり」というだけのものだったら、私の中でモヤモヤが残ってどうしていいか分からず、いいコードが書けなくなっちゃうんですよね。

── そのような「モヤモヤをなくす」ことを企業のソフトウェア開発で徹底していると、ビジネスサイドのロジックであったり経営的な視点も必要になってくるのではないかと思いますが。

金子 確かに広告サーバーの機能追加では、広告担当のビジネスチームが言っていることを理解するために、私なりにいろいろと勉強しました。その積み重ねで広告チームからも信頼を得られたと思います。

私は結局、目の前にいる人を助けたいんです。ただ、その人が何に困っているか理解しないと助けられない。それでビジネスも勉強しました。 相手がエンジニアであってもなくても、どんな機能が必要なのか聞いて、理解して、リリースし切って、それで価値を届けられるところがWeb開発の良さだと思います。

自分が楽しみ、人を楽しませたい、ブログでもISUCONでも

── 金子さんの経歴を拝見すると、業務でのチャレンジで自身の技術力を向上させて、その力で新たなチャレンジをするというサイクルを回しているようですが、意識して実行されたのでしょうか?

金子 いえ、後から見たらつながっているように見えるだけで、やっているときはそんなことを考えていません。目の前にある課題を解決しないといけないから解決しただけで、それが面白かったんです。繰り返していけば解ける問題も少しずつ増えて、「あ、これ前に見たことあるわ」ってなる。

── そうして得た学びを開発者ブログなどで積極的に公開されているのは意識されたものだと思うのですが、エンジニアがブログを書くことの意味はどういったところにあるのでしょう?

金子 というより「書かない」という選択肢の方がないでしょう。私はITエンジニアとして働いてきて、開発者ブログがない会社に入社したいということはまずありません。特にWeb界隈では、開発者ブログがない、誰もツイートしてないっていうのは、存在しないのも同じなんです。

入社前のPR TIMESについてもサービス自体は知っていましたが、開発者ブログがなかったのでエンジニア組織があるなんて考えてもいませんでした。なので、入社してすぐ作りました。

PR TIMESの開発本部が目指すこと −PR TIMES 開発者ブログ開設に寄せて−

エンジニア一人ひとりが発信する状態をつくりたかったので、いろいろなメンバーに「この取り組みは面白いから書こう」といって書いてもらってきました。半年ほど続けてきたら、開発者ブログを読んで選考に応募してくれる人が現れるまでになりました。それも複数です。

── セミナーや勉強会などでも積極的に発表されていますよね。

金子 それは単純に面白い話をしたいというだけですね。ブログでのアウトプットや勉強会での発表も、楽しませたいからやっているところはあります。自分が読んで面白く、わくわくするものなら、みんなにも喜んでもらえるはずと思っています。

── ISUCONへの参加もそうした流れからでしょうか?

金子 ピクシブで参加してたチームからメンバーが抜けたときに高山温@edvakfさん(後にピクシブCTO)に声をかけてもらい、ISUCON4(2014年)から参加しました。初出場で準優勝できたこともあって、以降は毎回参加しています。過去問を解いていくと、少しずつ知識が身に付いて「これは役に立つな」「業務がやりやすくなるな」という実感があります。何よりゲーム性が高くて、楽しいんですよね。

ISUCON4で準優勝でした #isucon - catatsuyとは

── 社内ISUCONを企画されたり、ISUCON6(2016年)とISUCON9(2019年)では出題されたり、コミュニティのその後にもつながるような関わり方をされてますよね。

金子 社内ISUCONは、それ以前もやっている会社はあったと思いますが、問題を完全に公開した形ではおそらく初めてだと思います。これを機に、それまでふわっとしていたフォーマットも固まって、いろいろな会社で社内ISUCONを実施できるようになり、ちょっとしたブームを起こせた感はあります。

社内ISUCONを公開したら広く使われた話 - pixiv inside [archive]

出題では、ISUCON6のときは高山さんと一緒にがむしゃらに作っていましたが、メルカリで出題したISUCON9の予選の問題は「今後のISUCONのスタンダードになる」ことを意識してはいました。

ISUCON6が終わったので出題した感想ポエム #isucon - catatsuyとは
ISUCON9予選の出題と外部サービス・ベンチマーカーについて by catatsuy | Medium

── メルカリではISUCONへの出題のほかにどういった活動をされていたのでしょう?

金子 業務ではあまりオープンにできるものが少ないのですが、越境販売のリリースなどに関わっていました。メルカリで技術も多く学びましたが、特に今につながっているのは、大きなサービスをたくさんのメンバーで「組織としてどう動かすか?」ということです。

技術的には、ピクシブで「こうやって解決するよね」という経験があっても、それがほかで通用するのかは分からない。2社以上を経験することで、はじめて解決法を一般化できたように思います。ただ、それを狙ったわけではなくて、基本的には「Webサービスを作りたい」という思いから転職しました。メルカリには知り合いも何人かいて、さまざまなチャレンジをしていることも知っていたので。

ただひたすら「Webサービスを作りたい」を追求し続けて

── あらためて現職のお話を聞きたいのですが、そもそも入社のきっかけは何だったのですか?

金子 数年前から公開していた私のレジュメを見られたようで、レガシー化したPHPアプリケーションのバージョンアップや新機能追加など、技術的な課題を解決できそうな人材だと思われたらしく、メルカリで働いていたときに「CTOをやりませんか?」と声をかけられました。

といっても、いきなりCTOは引き受けられないので、まず業務委託の形で週に数時間、メルカリでは副業がOKですから、PR TIMESの仕事をするようになりました。それで中に入ってみるといろいろな課題が見えてきて、これは本気で取り組まないと改善できないけど、本気でやればできると感じてフルタイムで関わることになったのです。

── 課題というのは最初に話していただいた「技術力が足りない」ことでしょうか?

金子 PR TIMESは、私が新卒で入社したピクシブとほぼ同世代の会社です(2005年12月設立)。だからシステムがあまりにレガシー過ぎるというのは分かりますが、それだけでなく「いくらメルカリの人が来ても(このシステムは)変わりませんよ」という雰囲気さえありました。

サービスに貢献するため何か1つ変更を加えようにも、他のどこかに影響が生じるのでリリースできないという状態で、技術的な負債があまりに多いから、それをどうしたら解決できてリリースできるかが分からなかったんですね。PHPのバージョンアップをとっても、やる前から「そんなことできるわけない」と諦めている状態でした。

でも私は動いているサービスのPHPをバージョンアップした経験があるので、やってできないことはないということを知っている。できるんだと実感を持ってもらうためには、できる人を呼ぶしかない。だからPHPについてはuzulla@uzullaさんにも業務委託で入ってもらって進めています。

今までは分かりやすいお手本がいなかったので、新卒メンバーもなかなか成長できるイメージを持ちづらかったんだろうと思います。uzullaさんのように強いエンジニアが来て、一緒に仕事をしていくうちにどんどん成長して、たった半年で若いメンバーもいろいろなチャレンジをしてくれるようになりました。

フロントエンドも一部をフルスクラッチで書き換えたばかりで、もう少ししたら新機能をリリースしていく予定です。

レガシーなフロントエンドを捨ててReact.jsでリプレイスした話 | PR TIMES 開発者ブログ

今から思うと、なぜPHPのバージョンアップができないと思い込んでいたのか。それを放置していたら、せっかく成長しているサービスが、技術のせいで立ちゆかなくなってしまいます。技術的な課題から絶対に逃げない、諦めないということを言い続けています。今やそんな雰囲気は一掃されて、みんなが前向きに、PR TIMESを開発で前に進めるんだという気持ちになっています。

── お話を聞いているとやはりエンジニアチームのマネジメントというか、むしろ事業全体を見る経営的な視点もあるように感じたのですが。

金子 いえ、そこはあんまり考えていないですね。私は単純にWebサービスを作りたいだけなんです。本当に。ただ、Webサービスを作るには、いろいろな人の力が必要だし、いろいろな人が集まると解決しなければいけない課題が、それもエンジニアが1人では解決できない課題がたくさん起きてきます。

今はCTOという立場でメンバーを率いながら、そうした問題をどう解決して、どんなWebサービスが作れるのかが私の興味の対象なんです。

── そこは最初に聞いたお話から一貫しているのですね。本日はありがとうございました。

※インタビューはWeb会議ツールを用いてリモートで行いました。

catatsuyさん近影
金子さん近影(PR TIMES提供)

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