受託開発で身につけた「責任を取る覚悟」
田中氏:それではよろしくお願い致します。早速ですが、CTO(技術責任者)の会員組織である日本CTO協会の個人会員は600名弱です。会員になっていないCTOがその数倍がいるとしても、日本のエンジニア人口は96万人と言われていているので、CTOやVPoEの割合は1%もありません。
大谷さんは35歳を超えて現役のCTOですが、今までの大谷さんのCyberAgentやMetapsでの経験や、25歳から30歳ぐらいの間にされたミドルシニアやシニアの経験が若手のエンジニアにすごく参考になりそうだと思います。
クライアントでも「経験のある方を採用したい」企業は多いですが、特にミドルシニア・シニア層は市場には少ないのが現状です。そこで、これからのキャリアを考える方にどのようにスキルやキャリアを作っていくのかといった話をしていきたいなと思っています。
そもそもの話になりますが、大谷さんはプログラミング経験は何年あるんですか?
大谷氏:僕は15年くらいになります。
新卒で入った会社は2006年に入って7年いました。1社目が長かったですね。経路探索エンジンを作っているヴァル研究所という会社です。
▲ ヴァル研究所「駅すぱあと」
キャリアの最初はいちプログラマーとして始まり、SI業務で受託開発をしていました。当時はSI業務を担当する部門のメンバーは少なく、PdMも営業窓口もCSもいないという状態で、上に上司が1人いるだけでした。
顧客側の担当の方から連絡を受けて工数判断し、上司と金額感やスケジュール含めて相談していました。工場で運用されるプログラムでしたので、実際に現地に行ってテストをしたり、クレームが入ったらまた現地に行って直接デバッグしたりしていました。
当時の経験が今の根底にありますね。障害があったら自分で受けて直していく。自分自身で責任を取る覚悟がこの経験で身についたと思います。これが入社1-2年目で経験できたことです。
その後、3-5年目くらいは、プログラマーとしても成長してきたのでSI業務ではなく自社のAPIやWebサービスの開発に回ってバリバリ書いていました。まだ同じ会社でしたので、研究開発含めてやっており、そこでRubyなどの技術も身につきました。
経路探索エンジンを開発していた会社でしたので、何らかのデータインプット受けて経路検索の結果、つまり出発駅と到着駅のデータからどういう探索経路を辿るかみたいなもの返すAPIやサービスを基本的には作っていました。
APIの開発言語などにRubyを使って書いてたので、その段階でもうRubyを使っていました。ただ会社自体は、30-40年続いていたので色々なレガシーのプログラムが各所にありました。それを統合するプロジェクトとかもやったり、PHP、Perl、C、Java、Scalaで作ったプログラムをまとめるプロジェクトもあって、あらゆる言語を使っていました。
ひたすら開発に従事したミドルエンジニア時代
田中氏:結構泥臭いですね。
大谷氏:3-5年目は、色々な開発言語の面白みを含めて習熟しながらプログラマーとして成長したいという思いが強かったです。エンジニアとしても、まだちょっとした立ち上がり期でしたからね。
また、当時はSICPという魔術師本と呼ばれる本に心酔していました。Lispに目覚めて開発環境もEmacs, StumpWMというLispで内部動作書き換えられるものしか使わんみたいな意気込みでやってました。
3-5年目は個人よりはチームで仕事をする機会が多かったです。現在CTOをやっている方が当時チームのトップにいて、その下は4名くらいというチーム構成でした。私は3-5年目でしたがミドルエンジニア的なポジションで、マネージャー的な仕事はせずにプログラマーという感じでした。
田中氏:3年もプログラマーとしてコードを書いていたんですか?
大谷氏:やってましたね。ずっとガリガリやってました。
6~7年目のときにスター選手のような人たちを集めて研究開発の部隊を立ち上げることになった時がありました。幸いにして私の実績が評価され、そのR&Dプロジェクトに選ばれて2人でやっていました。
この時はAPI開発から離れて、ひたすら経路探索エンジンの研究開発をしていました。
研究開発部門で今の技術スタックを築く
田中氏:研究開発は具体的にどのような業務をされるのでしょうか?
大谷氏:簡単に言ってしまうと経路探索エンジンを作り直す業務です。30,40年開発されてきたプログラムであったので、仕様書としてドキュメント化されてない部分や、構造的に歪みが出てきていた箇所を、新しいモダンな形で作り直そうみたいなプロジェクトでした。
やってたこととしては、そのレガシーな既存エンジンの構造を解析したり、グラフアルゴリズムとしてどういう流れで経路が探索されているのか、また今後はどう探索すべきなのかみたいなことをひたすら試行錯誤していた感じです。
研究としてはグラフ探索の問題なので、ノードとエッジをいかに効率的に抽出するか、枝刈りとか言われますが無駄なエッジをいかに選ばないようにするかといった探索問題に対する解法を論文読んで実装し効率化してみたり、既存エンジンの構造解析してドキュメント起こしてみたりとか、あとはチューニングロジックをLuaなどの組み込み型言語で定義できるよう構成を考えたりといった取り組みをしてましたね。
ひたすら、CやC++、当時出たばかりのRustとか、D言語みたいなのを使って実装していたので、その時にBackendの低レベル部分からFrontendまでカバーする今の技術スタックベースが出来上がった感じです。
田中氏:幅広く仕事をされていたんですね。ただ、どちらかと言うと小数のチームで働くことが多く、研究開発も小規模でやっていたんですね。
大谷氏:そうです。大規模なチーム開発は当時はほとんどやっていませんでした。多くても関係者は3名とかでした。
その代わり、研究成果の発表を全社員(当時120名くらい)の前で定期的に話す必要があったので、そういう意味ではコミュニケーション能力や度胸みたいなものがついたかなと思います。
田中氏:8年目近くになってくるとどうですか?
大谷氏:社内では、この人に聞けば大丈夫、というポジションになってきて、だんだん他の場所で開発することにも興味が出てきました。転職を意識し始めて7年目の後半で、サイバーエージェントに転職しました。
チャレンジングな環境を求めCyberAgentに転職
田中氏:職場で頼られる存在になると、安定や安心、働きやすさを求めると会社に残る選択肢もあったと思いますが?
大谷氏:そうですね。今でも働いている同期もいますからね。
田中氏:給与やポジションが上がるという選択肢もあったと思いますが。
大谷氏:私はあまりお金に執着がなくて、楽しいところに行きたかったです。あとは技術的な興味しかなかったので、よりチャレンジングな環境にいきたいってだけの判断ですね。
当時はAmazonとCyberAgentを受けて両方受かってたんですけれど、CyberAgentは「アジアのGoogleを目指す」というメッセージを発信されていて、そのビジョンの素晴らしさと、業務内容に惹かれました。
会社としてAmebaプラットフォームを大きく育てていこうという中で、複数のコミュニティサービスを立ち上げるタイミングだったので、基盤サービスを乱発する気概がある時に入りましたね。
入社して数カ月後に、今のoverflow社創業メンバー(鈴木、田中)と一緒のチームとなり、新規サービスの立ち上げを行ってました。1ヶ月半くらいで超速リリースして、エンジニア賞をもらったりしていましたね。
大規模開発の経験
田中氏:確かにそうでしたね。懐かしいですね。
その時が初めての大人数のチームで他の人の面倒も見始めた時期でしたか?
大谷氏:そうですね。初めは1サービスのエンジニアリーダーをやってまして、5-6人のメンバーをリードしていました。その後徐々に、管理のスコープが複数サービス、1セクション、1部門と広がっていき、退職する前は100名くらいのメンバーがいる部門のサーバーサイドボードメンバーとしてアサインされて、組織施策を作るような業務をしていました。入社して1年後くらいの話です。
部門ボードとしては、面談や評価設計をしたり、横軸の施策を実行、設計したり、技術選定などもしていました。
田中氏:あの時はPHPなど色々な技術がサービス毎にバラバラで使われてたのを統一化しようという話もありましたね。
大谷氏:そうですね。統一する言語として、いくつかの言語が選ばれたのですが、他の言語は専門家がいたので、私はRubyの専門家として何かあったときの窓口として対応していました。
そういったボードメンバーとしての動きと同時に、チームのEMとしての動きもやってましたが、段々とEMとしてではなく、部門ボードとして施策まわりの動きが求められていきました。
その中でまた思ってたのと違うなぁという感情が芽生えてきた感じです。
田中氏:CyberAgentは1年半くらいでしたか?
大谷氏:そうですね。印象は濃いですが短かったです。
その時に現在技術顧問として関わって頂いている佐藤歩さんや、Offersの初期のマークアップを依頼させて頂いた谷さんなどいろいろな方と知り合うことができましたね。
組織づくりよりも手を動かしたい
田中氏:なるほど。そこからMetaps社に移られたんですよね?
大谷氏:そうです。組織作りよりも自分で手を動かしたいという思いがあり転職しました。
当時は20-30名くらいの組織で、まだ新宿二丁目のビルにありました。狭いオフィスでひたすらコードを書いていたのがエンジニアとして10年目にいくくらいまでです。
入社も何も考えてない頃に、社長の佐藤カツアキさんと夜遅くまで話す機会があり、彼の思い描くビジョンに共感してサービスを作りたいなと思いました。
そこでMetapsも3年ほどいました。世界中で使われているような広告サービスや、Spikeという決済基盤の調査やら設計やら、クラウドソーシングサービスやらを作って提供したりしました。
あとはモバイルアプリの行動分析ツールの立ち上げもしていました。
その時に初めてストックオプションをもらったり、成長期に知り合いのエンジニアを呼んで面談したりとかしていました。1社目のようにガリガリと書いていた思い出があります。髪も髭も長かったです(笑)
田中氏:CyberAgentでは見たことのない姿の大谷さんがMetaps時代はありましたね。アメリカでロックバンドでも始めたかのような外見でした。
大谷氏:IPOの際に、メンバー一同の一言コメントと写真が玄関に飾られたことがあったのですが「好きなことで生きていく」と送った結果「こいつ何者だ」みたいになっていました(笑)
IPO後は、Metapsも辞め、今もお付き合いのある方と一緒に会社を立ち上げることになり、自分たちでサービス作ったり、資金を集めるために駆け回ったりしていました。
その人が別で起業していた会社に、シニアエンジニア兼インフラ管理者として入って、overflowと復業していた期間も合わせると、3年ぐらいいましたね。
そんな感じのキャリアです。比較的最近まで物を作り続けたり、最近はマネジメントやインフラ管理をしているような感じです。
田中氏:ここまで大谷さんのファーストキャリアからCTOになるまでのキャリアを聞かせていただきました。ありがとうございます。次は4,5年目の時に特に意識していたことやインプットの仕方について伺っていきたいと思います。(後編に続く。)
エンジニアのスタンスやインプット方法などの後半記事(「活躍するエンジニアに求められる「野武士力」【CTO×CPO対談】」)はこちら。