目次
■エンジニアの軌跡
2016.04.05 2024.03.28 約5分
さまざまな企業で働くエンジニアとリレー形式で対談を行うDevRelay。vol.3のゲストは、藤村大介(@_ffu)氏です。現在、自ら共同創業者として起業した「Proper」(※現在は「Proper 」から改名し「マチマチ」に)の CTO を務める藤村氏にご自身のキャリアや、エンジニアへのアドバイスをお伺いしました。藤村さんご指名のリレー相手は、インタビューの最後でご紹介します!
idesaku:mizchiさんによると「藤村さんにはだいぶお世話になった」ということなんですが、知り合われたのはどういう経緯だったんですか。
ffu_:僕は以前 Aiming というゲームの会社にいたことがあり、そこで分析のための基盤を作っていました。最初僕1人だったそのチームに、その後インターンだったか、アルバイトだったかで入ってきたのが彼だったんですね。で、そこで彼に Git の作法を教えたり、trailing whitespace を指摘したりしてまして(笑)。
idesaku:(笑)あの mizchiさんにも、そんな指摘を受ける時代があったんですね。
ffu_:その後、僕がゲームのプロジェクトに移ってその開発リーダーになったんですが、そこで彼と一緒に HTML5/JavaScript でアプリケーションを作りました。で、実はそれで終わりではないんですよ。僕はその後フリーランスになって「Mercari」を手伝ったりした後に「Quipper」に入ったんですが、そこにもしばらくすると彼が入って来たんです。
idesaku:それは、藤村さんがスカウトしたとか、そういうことではなくて?
ffu_:ええ、違います。面接など採用プロセスからも外してもらいました。
idesaku:mizchiさんには Aiming のインターンだった当時の思い出もちょっとだけ聞いたんです。それによると「『Haskell で KPIサーバを書くぞ!』と言われて『えっ?』という感じだった」そうなのですが。
ffu_:たしか、その分析基盤のプロジェクトで使う言語を決めるにあたって、最初に何種類か言語を試したんですね。で、彼が Clojure で書いて、僕が Haskell で書いてみたんじゃなかったかな。結果的に Haskell のほうがうまくいったんで、彼にも Haskell を覚えてもらって、ペアプロしつつ開発を進めたということなんです。3〜4年前の話になりますかね。
idesaku:言語を選ぶにあたって、言語そのものの使いやすさというのも大切ですが、特に仕事で使う場合には周辺のライブラリやコミュニティが充実しているかというのも重要な選択基準になると思います。そのあたり Haskell ってどうでしたか?
ffu_:Haskell は自分で前から触っていて、バックエンドにデータベースを置いたアプリケーションをどうやって作るかみたいなことをいろいろ試していたんです。当時 Haskell で使える「Yesod」という Rails的なフルスタックのフレームワークが出ていて、完成度もかなり上がっていました。本家 Rails にはかないませんが、ライブラリの充実度という面では十分実用的という印象でしたね。
idesaku:われわれが以前、grooves で一緒に仕事をしていたときには Ruby on Rails で Webアプリを作っていたわけですが、それ以外の部分での藤村さんに対する私の印象は「Haskell の人」なんですよね。そもそも、何がきっかけで Haskell を使い始めたんですか。
ffu_:えーと、Rails や Ruby を始めて1年くらいしたころ、Ruby が「Matz LISP だ」と評価されているのを見たことがあったんですね。で、それはどういう意味なんだろうと気になって調べているうちに、「The Little Schemer」という本(日本語訳はオーム社より「Scheme手習い」として刊行)に出会ったんです。この本を読んで Scheme を使ってみたところ、自分には関数型プログラミングが「性に合っている」気がしました。
idesaku:まずは Scheme からだったんですね。
ffu_:それからしばらく Scheme を触っていたんですが、そのうちに Bruce A. Tateの「Seven Languages in Seven Weeks」(日本語訳は「7つの言語 7つの世界」としてオーム社より刊行。監訳者は、Matz こと、まつもとゆきひろ氏)が出版されました。この本の最終章で紹介されていたのが「Haskell」だったんです。Haskell には当時の自分が求めていたものが全部あると感じました。それで本格的に使い始めたと。
idesaku:藤村さんが求めていたものって、具体的には何なんでしょう。
ffu_:僕、割とざっくりとコーディングをするんでミスをしがちなんですよ。そうしたこともあって、開発者側のミスをカバーしてくれる仕組みが好きなんです。だから TDD なんかもやるんですが、Haskell のようなリッチな型システムがある言語を使うとさらにミスを減らせる。そういうところが自分に合っていると思います。僕の見解として、Haskell は実用レベルの言語の中では型システムが一番良くできていて、安全で正しいプログラムを書きやすい言語だと思っています。
idesaku:難しいことやろうと思えば思うほど、Haskell がいいということですね。
ffu_:難しいロジックほどしっかり書けますね。また、バックグラウンドの理論などは知的にも面白いです。Haskell を使うためには覚えなきゃいけないことがたしかに多いのですが、ひとつひとつ理解していけばそれほど難しくもないと思いますよ。
idesaku:もともと、どういう経緯でエンジニアの仕事を始められたんですか。文系の学部卒だと伺っていますけど。
ffu_:大学では哲学が専攻でした。で、昔から音楽が好きで、並行してバンドでギターを弾いていたりして、「仕事」や「就職」というものにあまり関心がなかったんですね。最初は研究職に進もうかと思っていたのですが、特に文科系だとその後の生活が厳しいというのも分かったので、その時ようやく就職しなきゃと思うようになって。
idesaku:最初に入ったのは、業務システムの開発会社だったんですよね。
ffu_:そうです。SAP のアドオンを ABAP で作るようなことをしていました。
idesaku:そこから、なんで grooves に移られたんでしょう? 当時の grooves はエンジニアリングに強いわけではなかったですよね。
ffu_:それは単純な理由で、人材紹介会社からの紹介です。本格的にエンジニアとして仕事をしていこうと決めて、最初の会社を辞めたあと、今はすでになくなってしまったスタートアップで Ruby を1年ほどやっていたんです。次の候補となる会社はいくつかあったんですが、Ruby でとなると当時はあまり選択肢が多くなかったので、自然と決まった感じですね。
idesaku:とはいえ、エンジニアリングの文化がまったくないところで、文字どおり一から環境を作っていくのは大変じゃなかったですか。
ffu_:そのへんは、松田さん(現 grooves 取締役で、Rubyコミッター、Railsコミッターの松田明氏)がいたんで…。
idesaku:たしか藤村さんが松田さんに声をかけたんじゃなかったでしたっけ。
ffu_:松田さんとは、Twitter でイタリアのプログレッシブロックの話で盛り上がって仲良くなっていたんです。で、その流れで「今、Ruby でこういうことやっていて…」という話をしたら、来てくれたんですよ。
idesaku:そんな経緯があったとは。当時すでに松田さんは Ruby on Rails の世界では有名人でしたけど、それゆえの声のかけづらさとかありませんでした?
ffu_:僕は、あんまりそのへんのことを気にしてなかったですね。むしろ僕の中での松田さんはプログレとかメタルの話が分かる人だという認識だったんで。
idesaku:音楽と Twitter の力だったんですね。でも、それがきっかけで grooves に松田さんが入って、松田さんが私に声をかけてくれたという流れになるので、 grooves のエンジニアリング文化のルーツは、やっぱり藤村さんにあるということになりますよね。
ffu_:僕のツイートと音楽のおかげというわけです(笑)。
idesaku:grooves で藤村さんはプログラマーをメインとして仕事をされていたと思うんですが、grooves を離れた後はどんな感じでしょうか。やはりプログラミングが仕事の中心ですか?
ffu_:だんだんと、マネジメントに関連した仕事の比率が増えてきていますね。マネジメントといっても「チームのお世話」とか「仕組みを作って回す」といった意味合いですが。ただ、それだけをやっている期間というのはあまり多くなくて、並行してコードも書いているといった感じです。
idesaku:仕事の範囲としては、幅広くやられているんですね。
ffu_:そうですね。今は起業していますが、「投資家と会った後に CSS を直す」といった感じです。
idesaku:目指すは究極のフルスタックエンジニア。
ffu_:どこまで「フルスタック」になれるかを突き詰める、ある種のエクストリームスポーツをやっているような感覚になりますね。今はアドビの Illustrator もちゃんと使えるようになりたいんです。本職のデザイナーさんに作ってもらったデザインを、開発の過程でほんのちょっとだけ直さなきゃいけないケースが出てくるじゃないですか。その時、それが自分でできなくて、やりとりに時間をかけてしまうと誰も幸せになりませんよね。その程度のことはできる限り自分でやれるようにしておきたいとは常々思っています。
idesaku:藤村さんと言えば、昨年 Quipper の退職&求職エントリを書かれた直後、即座に60件ほどのオファーがあったというのが話題になりましたが。
ffu_:あれは自分でもビックリしました。結局あまりの多さに心が折れてしまい、きちんとお返事できなかったところもあって、ちょっと失敗したかな、と反省しています。
idesaku:最近、退職エントリを書くエンジニアも増えてはいますけれど、それだけの反応がある人というのは珍しいんじゃないですかね。
ffu_:いや、そんなことはないと思います。結構、みんなオファーを受けていると思いますよ。エンジニア採用の界隈では常に「この人そろそろ動くんじゃないか」みたいなことをSlackの、エンジニアの集まるチャンネルで逐一チェックして待ち構えている人も多いみたいですから。ただ、具体的な件数を発表したのは僕だけかもしれませんね。
idesaku:会社の人事担当者から直接連絡をもらうというのが多かったんでしょうか。
ffu_:そうですね。エージェントからの連絡はなかったんじゃないかな。あと、スタートアップ界隈だとエンジニア以外の友人も比較的多いほうなので、彼らが「とりあえずメシ行きましょう」みたいな感じで声をかけてくれたというのもありました。
idesaku:今やっている新しいお仕事は、その中から選んだという感じですか。
ffu_:そうですね。その時期に紹介された話の中で一番面白いと思ったところと継続的にコンタクトをとって、いよいよ本格的に始動という段階です。
idesaku:今回は共同創業者という立場ですよね。社名は決まりましたか?
ffu_:「Proper」にしました。
(※現在社名はマチマチ)
idesaku:Proper ではどんなことをやるんですか?
ffu_:まだ具体的に何をやるかを話せる段階にはないんですが、テクノロジーを使って地域社会における人々の「暮らし」を今よりも豊かに、快適にするようなことをやっていきたいと思っています。事業領域は定まっていて、開発もスタートしています。
(藤村さんより追記: インタビューの後、ちょうど良い距離感でご近所さんと交流できる SNS「マチマチ」を公開しました。現在エリアを限定して展開中です)
idesaku:Proper のメンバーは今、藤村さんとパートナーの方の2人ですか?
ffu_:ええ。その2人が共同創業者です。僕は CTO で、もうひとりがビジネス面を見る CEO になります。
idesaku:基盤としては Ruby on Railsを採用するんですね。共同創業者で好きなことができるのに、なんで Haskell 使わなかったんですか?(笑)
ffu_:この間会った hspec の開発者にも「今度新しいサービスやるとしたら、何使うの?」と聞かれて、「Rails。だって、静的アセットを AWS とかにアップロードするような仕事、Haskell ではやりたいと思わないでしょう」と答えたんですね。そしたら「うん。俺もやらないと思う」って(笑)。
idesaku:たしかに、実務に使える周辺環境は、Ruby on Rails だと充実していますからね。とりあえずやりたいことは、すぐにひととおりできてしまいますし。
ffu_:プロジェクトの初期段階では、プログラミングに関して非常に複雑で難しい課題が出てくることは実はあまりないんですよね。その意味では「どれを使っても一緒」というか。むしろ、問題が出てくるのはサービスが始まって、機能が増え、規模が大きくなってきた段階なんで、そこでまた改めて考えようかとは思っています。
idesaku:藤村さんがこれまで関われた仕事の中には、それなりに大規模なサービスも多かったんじゃないですか。
ffu_:Quipper はそれなりに大規模でしたが、それ以前のものはそうでもなかったと思います。あと、既にできあがったシステムがあるところに途中から入るケース自体、実は少ないんですよ。大抵は新しいプロジェクトで、ゼロから作り始めるみたいな感じでした。
idesaku:今回の「Proper」でも、まさに「ゼロ」から「イチ」を生みだすことをやっているわけですよね。期待しています。
idesaku:藤村さんにインタビューするということで、grooves 社内のエンジニアに「どんなことを聞きたい?」と聞いて回ったら、「新人、若手のエンジニアに対してのアドバイス」を聞きたいという意見が多かったんですよ。これまで、いろんな会社で新人やインターンの面倒を見てこられた知見から、何かアドバイスはありませんか。
ffu_:うーん。難しいですね…。
idesaku:なんか、先日 grooves の若手がイベントの懇親会で藤村さんと話をして、非常にテンション上げて帰ってきたんですけど、その時ってどんな話をされたんでしょう?
ffu_:…どんな話したんでしたっけ? その時、酔っぱらっていたんですよ(笑)。
idesaku:(笑)
ffu_:あ、「エラーメッセージをきちんと理解しよう!」というのはどうでしょう?
idesaku:「エラーメッセージを理解しよう」ですか。それは「英語に憶さずきちんと読もう」みたいな意味ですかね?
ffu_:そもそも、システムのエラーメッセージやログをしっかり読んで、何が起こっているのか理解した上で対応をしている人って少ないんじゃないでしょうかね。
idesaku:あぁ、そうかもしれません。「何か動かないや」って言いながら、とにかくコード書き直してしまう人のほうが多いかも。
ffu_:あと、翻訳された情報だけでなく「オフィシャルのドキュメントをきちんと読もう」とか…。うーん、後藤さんからは、なんかないですか?
idesaku:私、今回はインタビュアーなんですけどね(笑)。うーん、たしかに改めて聞かれると難しいですね。ただ、藤村さんの流れに合わせると、面倒くさがらずに「英語を読む」習慣を付けておくことは、たしかに大切だと思いますね。いろんな分野でドキュメントの日本語化は進んでいますけれど、最終的には英語の一次情報にあたらないとどうしようもなくなるケースは多いと思いますし。
ffu_:そもそもプログラミング言語自体も、ほとんど英語がベースですしね。英語以外の自然言語をベースにしたプログラミング言語って、そうないでしょう。
idesaku:ちなみに藤村さんは、もともと英語ができたんですか?
ffu_:普通に日本で高校と大学を出たので、大学受験レベルですよ。ただ、音楽が好きだったのでインターネットを使って海外から情報を仕入れることに熱心でした。その点で普通の人よりは英語に触れる機会が多かったというのはあると思います。
idesaku:ここでも音楽がカギに!
ffu_:好きなバンドを見るために海外に出かけたり、同じバンドの海外のファンと交流したりといったことは普通にやっていましたからね。エンジニアとしてやっていくにあたって、音楽、特にメタルは重要な役割を果たしたと言ってもいいでしょう。
idesaku:英語以外では何かありますか。
ffu_:そうだなぁ、あとは「マスタリング TCP/IP」を読むとか、アルゴリズムよりも低レベルなコンピュータサイエンスの理論的な基礎についての本を読むとかでしょうか。このあたりは、一回読んで、そのあと忘れてしまってもいいんですよ。ただ、ネットでサービスを作っていくにあたっては避けて通れない知識になってくることもあるので、何かのきっかけで思い出せる程度にはなっていてほしいと思います。
idesaku:あと必要なのは「セキュリティ」に関しての基礎知識でしょうか。
ffu_:そうですね。ただ、こうやって挙げていくと「基礎知識」だけで大変な量になってしまうんですけれどね。
ffu_:あと、スタートアップに関わる人には「ストックオプション」に関する知識を絶対に身につけたほうがいいです。自分がどこで働けば、どのタイミングでいくらもらえるのか。もし何年か働いて上場すれば、いくらになるのか。その期間、別のところで働いた場合と比べて、どれくらい「お得」なのかといったことは、エンジニア自身がきちんと理解して、シミュレーションしておくべきだと思います。それは、自分が将来的にエンジニアとして生きていくためのスキルアップのプランと密接にリンクしてくるわけですから。
idesaku:たしかにエンジニア界隈には、お金というか、自分のスキルに対する報酬が適切かどうかという点についてあまり頓着しない人が多いかもしれませんね。
ffu_:僕はいろんな会社で働く機会があったので、そのあたりは勉強して意識するようにしていましたね。スタートアップにおけるスキルと報酬の関係に関しては、海外のサイトではたまに情報を見かけますけれど、日本だとほとんどないですよね。そこはもっと議論されてもいいし、エンジニア側にもリテラシが必要だと感じています。
idesaku:本日は、お忙しいところありがとうございました。さて、最後にリレーインタビューのバトンを渡す方をご紹介いただきたいのですが。
ffu_:島崎清山(@seizans)さんに話を聞きたいです。非常に頭がいい人で、「一緒に仕事してみたい人リスト」に常に入っています。昔、Haskell の勉強会で知り合って仲良くなりました。
idesaku:音楽で?
ffu_:いや、普通に Haskell仲間です。あと、mizchi のことも知ってますよ。三人で飲んだりしました。
idesaku:それにしても藤村さんに「非常に頭が良い」と言わせるとは、お目にかかるのが楽しみです。それでは今日は本当にありがとうございました。
執筆:高橋美津
※本記事の内容は掲載当時の情報であり、現在の情報とは異なる可能性がございます。