株式会社ナレッジワークの川中 真耶さんは、学生時代に情報科学を学び、その後IBMやGoogle等を経て、2020年にナレッジワーク社を共同創業。学生時代から膨大な課題量をこなし、技術を磨かれてきました。また、就職後は技術フォーカスから、徐々に価値を出すことに価値観がシフトしていったキャリアを語っていただきました。また、外資系企業で働くにあたっての英会話レベルなどもお話しいただきました。成長したいエンジニアの方、必見となっている内容です。
1週間で9日分の課題があった学生時代、プログラミングに没頭
―エンジニアの世界に入るキッカケのようなもはあったのでしょうか?
初めてコードを書いたのは3歳の時だったと親から聞いています。当時、ファミリーコンピューターの周辺機器に、ファミリーベーシックというものがありました。サンプルプログラムがついていて、それを打ちこむと新たなゲームが遊べました。それを買ってくれと親にせがんだそうです(笑)。それ以来、コードを書くことから離れていたのですが、中学生のときに技術家庭科の授業でBASICに触れていました。さらに、高校でC言語にチャレンジしました。当時の自分にはまだ内容が難しかったことと、受験があったこともあり、本1冊を終えたくらいにとどまっていました。
―本格的にプログラミングや開発をするようになったのはいつ頃でしょうか?
大学の時です。入学当初は、数学が好きだったので数学を専攻したいと考えていました。その理由としては、問題を解くことだったり、何かをできるようになることが好きだったことにあったと思います。いざ、入学して周りを見ていると、数学において猛者ばかりでした。数学オリンピックの上位者もたくさんいて、生半可な勉強ではとても追いつく気がしませんでした。そのときに、自分が好きな分野で、かつ、自分が勝負できるところは何かと考えて情報科学科に進むことにしました。そこで、尋常じゃない量の課題を出されていました。一番ひどいときは、2日に1回くらいは大学に泊まって、課題を解いていた気がします。1週間の講義で9日間かかる量の課題を出されていました(笑)。先生もできないことはわかっていて、減点されない真の締め切りが夏休みの最後に設定されていました。正確には、課題は必須課題と任意課題の構成になっており、必須課題だけという方法も可能だったのですが、周りの学生たちは「両方やるよね」という雰囲気でした。
―学生時代にプログラミングに没頭されていたようですが、卒業後はどのような道に進んだのですか?
大学院に進学をして、更に情報科学の勉強を続けました。当時、技術としてはXMLが非常に流行っていました。それに関連したことを研究していましたね。特に、興味があったことは、「人が苦労しなくても価値が出せるようにすること」です。世の中に、問題と呼ばれるものは多くあります。しかし、問題というものは本質的に難しいものと、本質的には簡単だけど表面上難しいものがあります。前者は、どう頑張っても難しいですが、後者は頑張って解きほぐしてあげれば、誰にとっても易しい問題になる。そんな風に、問題を分解していくことが好きでした。プログラミング言語が問題を解きほぐすことを可能なようにできていれば、頑張らなくても難しいと思えることが簡単にかけたりします。
Webの楽しさに気づき、技術で価値を出すことにシフト
―大学院を経て、更に研究を進めていったのですか?
今思うと、一種のモラトリアムがあったのか、「XMLを研究できる環境」での就職を考えていました。それが実現できる環境はあまりなかったのですが、IBMの研究所にその環境があったので、同社に就職しました。入社をすると、Webサービスの研究グループに配属されました。XMLを使った情報交換をするだとか、XSLT の高速化だとか、WSDL という言語を使ってサービスを探すなどのことをやっていました。最初の部署で2年間働いた後に、XMLを使ってWebのアクセシビリティを向上させる部署に異動となりました。そこでやっていた開発は、視覚障害者向けのものでした。「目が見えない人がWebを見るには?」という難しい問いですが、簡単に言うと音声で内容を読み上げればWebの内容をとらえることができます。普通、文章であれば左から右に読んでいくものなのですが、HTMLの場合はスタイルをあてる都合でその順番に書いてないことがあります。上から読んでいくとめちゃくちゃな情報になってしまいますよね。そのHTMLを組み替えて読みやすくするということをやっていました。この技術を学んだことがある人が、研究所に3人しかおらず、一番若かった自分がアサインされました。この辺りのタイミングで、技術で価値を出すWeb開発の面白さに気づき、Webサービス開発に興味を持ち始めました。
―研究所ですとWebサービス開発とは遠いようですが、そこからどうキャリアを歩んだのでしょうか?
Webサービスをやりたいという想いで、IBMを飛び出してから、Googleに入社することになりました。Googleでは、いわゆるソフトウェアエンジニアとしての仕事をやっていました。最初の2年間はChromeのWebKit (当時はまだ blink ではなく WebKit を使っていました) の中の一部のコンポーネントを開発する仕事を行っていました。Web Componentsという仕様があり当時は未完成だったので、どのような仕様にするかを社員同士で話し合い実装し、Chromeで実験していくということに携わっていました。Google Japanというと、知らない人は主にローカライズをやっていると誤解しているのですが、Googleの開発には特色があります。Chromeの開発の主体はマウンテンビューの本社ですが、Web Componentsに関連する技術やメモリーに関連する技術は日本でも多く開発していましたし、JavaScriptのエンジンはドイツで開発しているというように、分野ごとにコアとなるチームが全世界のいろんなところにあります。最初の2年を過ぎて、コンパイラーが好きだったので別の部署に異動しました。当時、Chromeの開発において、コンパイルが遅いことが問題でした。具体的に言うと、当時100万円くらいするマシンで、Chrome をフルビルドしようとすると1時間もかかっていました。しかも、全世界に開発者がいて、みんなそれぞれで開発をしており、同じコンパイル作業をやっていました。ということは、誰かがやったものを共有できれば効率が良いのではないかという取り組みがあり、分散型コンパイルというチームで、コンパイルの処理時間を削減する仕事をしていました。
―難しい話になってきました(苦笑)。どのような成果があげられたのでしょうか?
分散型コンパイルを機能させることで、従来1時間かかっていたものが数分でできるようになりました。私の成果としては、特に Windows 上でのビルド速度の向上が顕著でした。結果、開発者が仕事をするスピードが速くなり、開発効率の向上に非常に貢献したと思います。例えば、Chrome上での文字入力・編集作業において、日本語だとIMEを用いて入力するため複雑さが増します。日本のチームが主にそのあたりのコードの担当をしていましたが、Windows 上で開発になるため、ビルド速度に非常に不満がある状態でした。速度を向上させることで、開発のイテレーションを早く回せるようになったわけです。
―川中さんがいなかったらここまでChromeが高速で進化しなかったかもしれないと思うとすごいですね。Googleの話は読者のみなさんも気になると思います。一緒に働く人達は優秀な方ばかりでしたか?
全く私一人の力じゃないですけどね。世界のトップ層を集めているという意味では、飛び抜けた人はやはりたくさんいます。幼少期からしっかりと教育を受けてきたと感じる人も多かったです。ただ、飛び抜けた存在を別にすれば、技術レベルはアメリカのエンジニアと日本のエンジニアに大きな差はないと思ってます。しかし、アメリカが強いのは、どの技術をいかにビジネスにつなげるかという点です。あくまでも相対的な比較ですが、日本ではエンジニアサイドはやや技術だけにフォーカスする意識が強いように思っています。エンジニアがビジネスサイドと、技術やビジネスの話をすることは少ない気がします。また、開発の環境として、投資の考え方にも違いがあるように思います。Googleなどでは、スキルや環境を向上させていくことに時間もお金も投下していました。例えば、開発するにあたっての基礎的なツールをつくるなどを行っています。常に、開発の生産性を向上させることに対して努力をしているし、お金も時間もかけています。
すぐに役立つものはすぐに役立たなくなる
―エンジニアの姿勢の話になりましたが、特に若いエンジニアの方は技術トレンドや今後のために何をすべきかということに悩んでいます。川中さんはどう捉えていますか?
技術でもなんでも、すぐに役立つものはすぐに役立たなくなると考えています。基礎的な学習のような、今すぐに役立たないことこそ、実は長く役立つと考えています。新しい言語やフレームワークが出ても、基本的なことを身につけておけばキャッチアップは早いです。一見違うように見えても、それらは本質的な部分は非常に似通っているからです。しっかりとコンピュータサイエンスの知識を身につけておけば、なにかトラブルがあったときに原因を突き詰めることができます。最近は、分業化されており、Web開発している人にとっては、例えばOSが何をしているかはわからないということもあると思いますが、基本的なことがわかっていると、対処できることも多いでしょう。
―基礎が大事とのことですが、川中さんが最も成長したなと思うご経験はありますか?
基礎練習の究極系のようなものですが、競技プログラミング(という言葉は当初ありませんでしたが)をやっていたことは非常に役立っています。また、大学のときにバイトで、2年でコードを20万行くらい書いたのですが、とにかく量をこなしたことから生まれる質があると思います。量をこなしていると、ときどきわからなかったことの一部がパッとわかることがあります。成長グラフとしては階段的に成長しているのだと思っています。
―もう一つエンジニアの方が気にされている英語に関してお聞きしたいです。外資で長く働いていらっしゃいましたが、英語は元々できたのですか?あるいは勉強しましたか?
私自身の英語レベルとしては、ネイティブになんとか伝わる程度だと思います。向こうが聞く気で聞いてくれていれば伝わります。学生時代に論文を書いていたこともあるので、書く方も伝える程度ならできます。実際には、とっかかりとしては受験英語で十分じゃないかなと思っています。エンジニアの場合、英語としては受験英語ができて、その上にコンピュータで使う単語をいれていけば、会話は伝わると思います。専門用語はどの言語でも同じ意味ですし。むしろ、日常会話や雑談の方が、話の展開も飛ぶし、よっぽど難しいです。
―話を、現在そして将来に移していきたいと思います。IBMやGoogleなどの経験を経て、今のナレッジワークを創業するに至ったキッカケはありますか?
自分自身でやりたいテーマとして、「できなかった人ができるようにする」というものがありました。自身で起業しようと思っていましたが、ビジネスサイドの人と組んだほうがうまくいくなと思っていました。そんなときに知人の紹介で、麻野(株式会社ナレッジワークCEO)と出会いました。麻野は、ビジネスサイドに非常に強く、さらに基礎的な価値観や組織のあり方に対する考え方が同じで「一緒にやったほうがいいな」と感じました。
―具体的にはどのような点が同じ考えだったのでしょうか?
まずは、先程申し上げたテーマですね。人のパフォーマンスに関する考え方なのですが、「人は適切な教育を受けたり、正しい環境があればできるようになる」ということが一致していました。また、組織に対する考え方については、「正しいルールをつくって、何かあった場合はその原理原則に応じて意思決定する。また、そのルールでできないケースがあったら、そのルール自体を見直す。」というものです。そうすることで、組織の透明性が上がると思っています。
―今後、CTOとしてどのようなプロダクト・会社にしたいと思っていますか?
まだ、正式に出していないのでどのようなプロダクトを作っているか申し上げられない部分があるのですが、ナレッジによって人がより仕事ができるようになるのがテーマの会社ですので、そのようなプロダクトになります。先程申し上げたように、誰もができるような教育や環境を実現するものを作っていきたいです。組織として技術者として、人の成長とともに組織が大きくなっていく仕組みをつくっていきたいです。
取材を終えて
技術者としてトップ層が集まる職場で長年開発をされてきた川中さん。その川中さんが、「できるようになるには、教育と環境」と言い切られていることが印象的でした。また、ご自身の成長においても量をこなした時代があったということは、今一生懸命仕事に自己研鑽に学習されている人には励みになると同時に刺激になるなと思いました。また、すぐ役立つものはすぐ使えなくなるというセリフにも取材陣一同唸ってしまいました。そんな川中さんが新たな挑戦する「誰でも、教育や環境でできるようになる」というプロダクトが楽しみですし、川中さんが作っていくエンジニアリング組織にも目が離せません。
プロフィール:川中 真耶
東京大学大学院情報理工学系研究科コンピュータ科学専攻修士課程修了。日本IBM東京基礎研究所では研究者としてXML、ウェブセキュリティ、ウェブアクセシビリティの研究に携わる。Googleではソフトウェアエンジニアとして、Chrome browserの開発や、Chrome browserで用いられている分散コンパイル環境の開発に関わった。2020年4月に株式会社ナレッジワークを共同創業。ACM国際大学対抗プログラミングコンテスト世界大会出場。
「王様達のヴァイキング」(週刊ビッグコミックスピリッツ)技術監修。