Forkwell Press

エンジニアの生き様をウォッチするメディア

「煽って盛り上げるのは“自分がその技術を使いたいから”なんです」-Increments 竹馬光太郎(mizchi)氏

この連載では、「Forkwell Jobs」の開発にも関わるフリーランスエンジニアの後藤大輔(@idesaku)が、さまざまな企業で働くエンジニアとリレー形式で対談を行っていきます。

前回のfreee山本(@ymrl)氏からご指名のあった第2回のゲストは、ソフトウェア開発に携わるエンジニアにフォーカスした数々のサービスを展開している「Increments」の竹馬光太郎氏(@mizchi)です。技術情報共有サービス「Qiita」、ドキュメントベースのコラボレーションサービス「Qiita:Team」など、Incrementsのプロダクトを日々使っているという人も多いのではないでしょうか。また、竹馬氏自身もQiitaや「mizchi's blog」などでの情報発信を積極的に行っておられます。竹馬氏のキャリアや情報発信のスタンス、そして現在注目している技術について、今回もじっくりとお話しを伺いました。竹馬さんご指名のリレー相手は、インタビューの最後で!

「フロントエンド」へのこだわりを生かせる職場を求めてIncrementsへ

後藤
今回は、前回のfreee山本さんからのご紹介で、Incrementsの竹馬さんにお話しを伺います。

竹馬
よろしくお願いします。

後藤
最初にお伺いしたいんですが、なぜネット上でのお名前が「mizchi」なんでしょう?

竹馬
本名が「竹馬光太郎(ちくば こうたろう)」なので、最初は名前の1文字目の「光」にちなんで「miz」と名乗っていたんですが、これが結構かぶるんですよ。で、苗字の「竹(ちく)」から「chi」をつけて、「mizchi」を使うようになったという感じです。…特に面白くないんであんまり言っていないのですが。

後藤
山本さんとはどこで知り合われたんですか?

竹馬
大学受験に入ったのが2008年なのですが、そのころ梅田望夫さんの「ウェブ進化論」や「ウェブ時代をゆく」という著書が話題になっていて、そのなかで「Twitterというサービスで新しいコミュニケーションの形が生まれる」みたいなことが言われていたんですね。それで自分も始めてみたんですが、当時のTwitterには、昔ながらの濃いインターネットコミュニティの人たちが大勢いて、そのなかに山本さんもいたんです。当時まだ日本人が少なかったコミュニティの中で、山本さんとは同じ年齢と言うこともあって、話をするようになったんです。

後藤
では、Incrementsに入られたのは、どのような経緯だったんでしょうか。

竹馬
大学を卒業した後、最初はゲーム会社に入り1年半ほどいて、次に前職の教育サービス系の会社に入りました。前職を辞めた理由はいろいろあるんですが、中でも大きかったのは、僕自身が興味を持っている技術を仕事として使える会社で働きたいという思いでした。僕自身は、フロントエンドの技術に対して、強い思い入れがあったのですが、前職では、その分野でできることがなくなってしまったんですね。フロントエンドで、中でもエッジなことを仕事としてやっていきたいとなると、そういう技術が必要とされる会社でないと難しい。そう考えていたところ、「Increments」は所属しているエンジニアもスゴいし、会社としても勢いがあるという印象を持ったので、僕のほうから声をかけました。

後藤
竹馬さんが参加されたときには、もう「Qiita」は始まっていたんですよね。

竹馬
はい。僕が入ることになったきっかけは、当時なかったWindows版の「Kobito」を作るという案件でした。以前から興味を持っていた「Electron」—当時は「Atom-Shell」と呼ばれていました—を使えば、Windows版も作れるんじゃないかという話をしていて、それを僕がやることになったんです。

後藤
では、入ってからは、ずっとKobito for Windowsに関わっているわけですね。

竹馬
最初はそれが中心だったんですが、最近はQiita本体も触っています。今のところリファクタリングが中心で、新機能の追加なんかには携わっていないのですが。

後藤
前回お話しを伺った山本さんは、freeeに入社早々、かなり激しい調子で製品に使われている技術に大ナタを振るった、というお話しをされていたんですが、竹馬さんもそんな感じだったんでしょうか。

竹馬
…そうしたいところもありますけどね(笑)。Qiitaのコードベースは、2012年以降、徐々に継ぎ足しながら拡大してきています。それに伴って、特に僕が関心を持っているフロントエンドは技術の陳腐化が非常に早いこともあって、僕から見て、その、「つらさ」というか、を感じるところが出てきてはいます。

ただ、Qiita自体は現時点でも非常に価値が高いサービスであり、多少つらい部分があったとしても、十分に動いています。動いているものを作り直すのには、それなりに大きな理由と、相当なエネルギーが必要なんですね。ですので、現状では負債だと認識した部分から段階的にリファクタリングで対応するようにしています。

「React」は自分が使いたいし、広く使われるべき技術だと思った

後藤
たしか、Kobito for Windowsでは、Electronの上にReactを乗せているんですよね。Reactについては、竹馬さんが日本での第一人者のようなイメージもあるんですが、現在も引き続きReact愛は継続中ですか。

竹馬
継続中です。あまり表には出ていないんですが、実はQiitaのリファクタリングにも使っているんですよ。Reactは、既にリリースから1年以上生き残っていますし、今後も長く使える技術になるだろうと思っています。

後藤
Reactの最初のリリースは2013年でしたね。

竹馬
2014年の段階では、海外の「Hacker News」あたりでReactが非常に盛り上がっているにも関わらず、日本ではあまり注目されていなかったんですよね。それを盛り上げたいと思って、ブログやQiitaでReactに関する記事を量産していました。

後藤
2014年末の「なぜ仮想DOMという概念が俺達の魂を震えさせるのか」という記事などは、非常に注目され、議論も呼びましたよね。山本さんは「炎上芸人のmizchiさん」みたいな言い方もされていたんですが(笑)、意図的に「煽る」ような書き方をされていたりする部分はありますか。

竹馬
それはあります。僕の場合、煽って盛り上げる動機は「その技術を僕自身が使いたいから」なんです。大げさに表現するなら、世間のWebサービスのフロントエンドが、古くさい技術をベースにしたものばかりだ、という状況は、自分がこの世界でやっていくにあたって、良くないことなんです。

この先、どこかで自分がエッジな技術を提案したときに、それが受け入れられる土壌やコミュニティを作っておきたい。そのために、自分が良いと思った技術を煽って盛り上げるようなことは意図的にやっていますね。

後藤
英語圏で新しく出てきた技術に対して、日本語で読める情報をコミュニティにどんどん提供して盛り上げていくという活動には価値があると思います。Reactのように、新しい思想を持っているものについてはなおさら。

竹馬
Webのフロントエンド界隈は玉石混交の状態が続いています。新しい物が次々と出てくるけれど、本当に使えて、残っていくものは一握りです。その中からどれかを選んでプロダクトを作り、継続的にメンテナンスできる状況を作ろうとすると、その技術が使えるものか、そうでないかを、早い段階でかぎ分けるセンスが必要になります。僕は、その能力については自信があるんです。

後藤
選択眼は大切ですよね。私も以前SIerで仕事をしていたころは、当時はWebアプリケーションフレームワークというものが登場してまだ日が浅かったこともあって、どのフレームワークを選ぶべきか、テンプレートエンジンはどうしよう、みたいなことに毎回悩まされていました。現在のJSの世界も、それと同じような状況にあるようです。

竹馬
JSの世界では、エコシステムというか、下回りは整ってきたんですが、それを使うコミュニティ側の文化のようなものが整っていないと思っています。JSのライブラリを書く人って、さまざまな言語のバックグラウンドを持っているんですね。Rubyをやっていた人はRubyっぽい書き方をしますし、C#をやっていた人はC#っぽい作法で書いてしまうんです。その結果、お互いの共通認識が定まらない。ついでに言うと新しいエコシステムの中では、特にプログラミングマニアのような人たちの声が大きくなりがちで、それが百家争鳴の状況になっている一因ではないかと思っています。

「記事を書くときには、何度も読み返して想定反論への対策まで考えます」

後藤
JSの新たなエコシステムの中で、いろんな言語の思想や作法がシノギを削っている…という状況なわけですか。面白いですね。竹馬さんとしては、そうした状況の刈り込みの意味も込めつつ、自分が目をつけた技術をアピールする記事を出していたりするわけですよね。先ほど「自分のために煽る」というお話しをされていましたが、そうした記事を書くことに、エンジニアとしてのセルフブランディングとしての意味合いはあるんでしょうか。

竹馬
ないわけではないと思います。僕は大学時代にサークルでフリーペーパーを作っていたり、「はてな」でホットエントリー入りする記事はどうやれば書けるか、みたいなことを楽しんでやっていたんですね。いわゆる「はてな村」での「言葉の殴り合い」みたいなことも大好きでした。「はてなブックマーク」も7年以上見続けて、どういう記事を人は求めているのか、自分が書いたことに対してどんな反応があるのかといったことは、ずっと研究していましたね。

後藤
ネットでの「言葉の殴り合い」が、エンジニアとしての自分に影響を与えることってあるんですか。

竹馬
僕の場合、記事を書くときには、まず自分で何度も読み返して、想定される反論への対応までを盛り込んだ上で公開するようにしているんです。ただ、そうやって公開したとしても、自分が想定していなかったリアクションがあるわけです。もしその内容が、正当なものだったら「勉強になります」みたいな感じで感謝します。

後藤
想定される反論を意識しながらの情報発信というのは、エンジニアにとって自分のスキルを上げていくためにも、いいやり方かもしれませんね。

竹馬
こういうのは得手不得手がありますから、ほかのエンジニアに自分のやり方を勧めることはしません。ただ、僕の場合は、対面で話すよりは、文章で書くほうが思いを表現しやすいんで、得意なやり方でやっているといった感じです。…まぁ、インタビューを受けておいて、そういうこと言うのもなんなのですが(笑)。

「誰もできていないことが、今の俺にできているんじゃないか」が原動力

後藤
ブログに考えをまとめていくほかに、竹馬さんが、エンジニアとしてのスキルアップのために意識してやっていることはありますか。

竹馬
そうですね、これは昔から趣味でやっていることでもあるのですが、新しいフレームワークや環境を見つけると、とりあえずそれを使ってゲームを作ることにしています。

後藤
ゲームも作っているのですか。

竹馬
僕が最初に「プログラミングで何かをつくりたい」と思ったのは大学4年のころでしたが、そのときにまずやろうと思ったのが「Webアプリ」を作ることと「ゲーム」を作ることでした。ただ、僕の場合、両方を同時にやろうとしてしまったんです。

後藤
大変だったでしょう。

竹馬
大変でした。2011年ごろに、当時まだ未成熟だったWebSocketとCanvasを使ってゲームを作ろうとしていたわけですから、かなり苦労しました。周辺のいろんな技術要素も揃っていませんでしたし。そうした状況でシューティングやMMOのようなゲームを作ろうと思うと、おのずとJSフロントエンドの限界を酷使しなければならず、そのためにエッジを攻め続けることを強いられます。でも、それが僕には楽しかったんです。

後藤
おおー、楽しいと。

竹馬
「誰もできていないことが、今、俺にはできているんじゃないか」という感じがして楽しいんです。そういう理由で、例えばReactを見つけた時も、SVGと物理エンジンを組み合わせて、差分描画で弾幕シューティングのようなものを作ったんですよ。「初見でムチャをする」というのが、このところの定番になっています。

後藤
あれはReactの性能を知る上で、分かりやすいデモでした。

竹馬
ゲームプログラムというのは、基本的に複雑性が高くて、コード量もどんどん増えていくという性質を持っています。それを抑えるための秩序を手に入れるために、ReactにはFluxという設計思想があって…という感じで、割とすんなりと入っていけました。その点では、ゲームを作ってよかったと思っています。

後藤
エッジな技術で難度の高い実装に立ち向かうためには、海外からの積極的な情報収集も欠かせませんよね。

竹馬
実は僕、あまり英語が得意なほうではないんですよ。

後藤
それは意外です。

竹馬
ですので、先ほど挙げた「Hacker News」や、JS版のHacker Newsのような「Echo JS」といったサイトで、まずは見出しを中心に目を通すようにしています。「最近、この単語が見出しによく出ているのに、自分は手を付けていないな」と感じた時に、きちんと調べ出すといった感じですね。

後藤
そこまできたら、後は英文をバリバリ読みながらいじっていくという感じですか。

竹馬
まぁ、説明文よりも、動いているコードのほうが雄弁ですので、軽くQuick Startを見て、既存のどんな技術と組み合わせられるかを考え、デモを作って、GitHubで公開して、満足するといった感じでしょうか。

書いたブログは社内での説得材料としても使える

後藤
Reactについても、そうやって自分で試してみた上で「イケる」という感触を得たわけですね。

竹馬
そうですね。それで「自分がReactを使いたいから」という理由はもちろん、みんなReactを使っていくべきだという思いがあって、それを主張する記事を書きました。その時はかなり強い言葉を使ったのですが、それはなぜかといえば、ReactやVirtual DOMという技術が持っている思想が、既存のJSの文化と完全に衝突するからなんです。

後藤
そうですよね、jQueryを捨てろ、と言っているようなものです。

竹馬
「jQueryを捨てろ」というのはかなり強い言葉だから、それだけの理由を共に明示しないといけない。そうするだけのメリットが、React/Virtual DOMという設計思想、設計方法、ライブラリによって手に入るんだというビジョンを見せないといけなかったんです。だから、いろんな言葉を考えて、その思いが一番響いて欲しいところに響くよう、がんばって書きました。

後藤
「こんな技術があるよ」ということだけでなく、その技術が持っている「意味」や「思想」を伝えたいというのはいいですね。

竹馬
ただ、最近は読者層に合わせて、そのあたりはだいぶ雑になってきてしまってはいるのですが。

後藤
今の読者層に合わせると雑になるんですか?

竹馬
うーん。今の僕の読者は、基本的にリテラシの高い人たちなので、そういう人たちは核心をピンポイントで示しておけば、それを見て勝手に先に進んでくれるんですよ。余計な修飾が必要ないというか。だから、昔はやたらエモい感じの文章を書いていたんですが、最近はそのあたりが分かってきたので逆に感情的な表現をごっそり抜いたりもしますね。

後藤
竹馬さんが「エッジ」を攻めることに関心が強いというのはよく分かったのですが、一方でそういった部分に興味がないエンジニアも一定数いますよね。「今使えているものがあるのだから、それでいい」というような。そうした人との衝突はありませんか。

竹馬
それはすごくあって、社内でもありますよ。IncrementsにはRailsのエキスパートが多いのですが、「Railsで出力できているのに、なんでそれをJSで書き直す必要があるの?」という意見は、やっぱり出てきます。ただ、それを説得するのも自分の責任だと思っています。説得材料としてブログを書いておいて、「結局何が言いたいの?」という人には、「ここに書いてある」と示して読んでもらう。「はてブ」の数も、その際の説得力という意味で重要なパラメータになっています。

後藤
なるほど。

「エッジ」を攻め続けるフロントエンドエンジニアとして

後藤
竹馬さんには、エンジニアとしてのキャリアにおける目標というか、ロールモデルのような方はいらっしゃるんですか?

竹馬
具体的に挙げられる目標は、正直なところないですね。それは、僕がフロントエンドをやっていて、そのフロントエンドの概念が新しすぎるから、というのが理由のひとつです。さらに、僕がエッジな技術ばかりを攻めているために、周囲に似たようなキャリアをたどってきた人がいないというのもあります。

後藤
むしろ竹馬さん自身が、後進に対するロールモデル的な役割を担っていくことになるのかもしれないですね。既に、そうなりつつあるような気もしますし。

竹馬
もし、そうなれているのであれば、それは自分が今、それなりにコストをかけて取り組んでいるからでしょう。例えば、何か新しいライブラリが出たときには、資料を読むだけでなく、実際に手を動かして試していますし、ニュース記事などの関連情報も読み込んだ上で、善し悪しを判断するようにしています。今は、それができているんですが、もし将来的に自分にそれができなくなったら、別の方に引き継いでやってほしいとは思っていますね。

後藤
既に後継者探しまでを視野に入れている。(笑)

竹馬
いやいや、まだ大丈夫ですよ。現役です。(笑)

後藤
これまでそういうことをやってきて、「読みが外れた」ということはないですか。例えば、最近CoffeeScriptに別れを告げたようですが

竹馬
CoffeeScriptは、今でも非常に好きな言語です。ただ、「エッジを攻める」ということを信条にしている以上、JSそのものの進化にCoffeeScriptが追いつけなくなったということが自分の中で明らかになった段階で、捨てざるを得なかったというのが正直なところです。例えば ECMAScriptの「async/await」の仕様が決まって、実際に自分でも書いてみたら、コードもシンプルになって素晴らしいと思ったんですよ。ただ、これが将来的にCoffeeScriptにやってくるかどうかと考えたら、リポジトリなどをウォッチしている感覚として、それは望めないなと感じてしまったんです。恐らく、今後も新しくて良い仕様が次々とJSに実装されていくでしょうが、それらについても同じ事が言えるだろうなと。

後藤
やはりこれからは「ECMAScript 2015」なんでしょうかね。

竹馬
それが、これからのJSのスタンダードになるのは間違いないです。ただ、その周辺の領域にある「絶対にJSを書きたくない」という需要に対しては、AltJSのような存在が役に立つ場面は引き続きあると思っています。例えば「Scala.js」ってご存じですか?

後藤
どういうものなんですか?

竹馬
文字どおり、ScalaをJSにコンパイルするというものです。ネタみたいに聞こえるかもしれませんが、できは非常にいいんですよ。Scalaとフロントエンドを橋渡しするエンジニアがいて、その人が必死に支える橋の上を、Scalaのスゴい人たちがコードを大量に流していく、そんな体制を作ることができれば相当なパワーを発揮できるはずなんですが…そこまでできる会社って、たぶんあまり多くないですよね。でも、そういうものに対する需要は残ると思うんです。

「LLVM」とその周辺が今後の注目株

後藤
竹馬さんは、それこそScalaのようなJS以外の言語にも触られたことはあるんですか。

竹馬
はい。本格的に書くまでは至らない、趣味レベルでですが。

後藤
今だと何が良さそうですか。

竹馬
Swiftあたりの言語仕様は好きですね。あとどちらかというと、特定の言語というよりも「LLVM」というコンパイラ基盤への関心が高いです。将来的には、LLVMで吐けるものは、JSやWebAssemblyなどWebブラウザ上で実行可能な形式にコンパイルできるようになる可能性があります。かつ、環境に依存がない状態でコードが書ければ、単純に速いコードを書くために使ったり、ネイティブコンパイルして使ったり、またはサーバサイドで使ったりと多様な使い道があるはずなんです。なので、LLVM環境下の言語については全部注目しています。具体的には、Rust、オープンソース化が進んでいるC#、Swiftあたりは、次の時代を見据えてすべてウォッチしていますね。

後藤
ほかに現在注目されている技術はありますか。ライブラリでも、言語でも、インフラでもいいのですが。

竹馬
僕はフロントエンドほどには、インフラやデータベースの分野には強くないんです。その上で、フロントエンド側でリッチな静的アプリケーションを作りたいというようなときに、さっくり作れるようなバックエンドが登場してほしいというのはいつも考えています。最近だとFirebaseあたりが、そういった思想のものなんですかね。実際、使ってはみたものの、あまりピンとこなかったのですが。

後藤
ないわけではないんでしょうが、たしかに今のところ「決定版」は出てきていない状況かもしれませんね。

竹馬
現状ではいくつか不足しているアクセス制御等の機能があって、それを得るためには結局自分でサーバ側にもう一層専用のレイヤを作らなければならないので、「これだけでできる」というものではないですね。

世界的な影響力のあるエンジニアになって、「コード」で殴り合いたい

後藤
竹馬さん自身は、今後もフロントエンド道を突き詰めていくというスタンスなんですね。

竹馬
しばらくは、フロントエンドを楽しんで続けていると思います。

後藤
まさに今、盛り上がっている分野でもありますしね。

竹馬
僕としては「盛り上がっている」というより「荒れている」状況だと思っています。まだ、淘汰が進んでいるとも思えないので。2年後に答え合わせをすることはできると思うのですが、正直なところ未来がどうなっているかは分からないですよね。もちろん、自分として「これが生き残るだろう」と思っているものはあります。今やれることは、自分が「イケる」と思っているものを盛り上げて、「ヤバい」と思うものには「やめてくれ」と発言していくような、うるさいオジさん的な役回りなのかなぁとも思います。

後藤
であれば、当面はブログも辞められませんね。

竹馬
ただ、日本国内向けにだけやっていてもらちが明かないという思いもあるんですよね。海外に行きたいというわけではないのですが、どうにかして世界的な影響力を持てるようになりたいなぁと最近思うようになりました。

後藤
英語で殴り合えるようにならないといけませんね。

竹馬
そうなんですよ。少しずつやろうとはしているんですが、英語は書くのが難しくて。できれば、共通言語である「コード」で殴り合いたいですよね。

気になる次のリレー相手は?

後藤
ぜひオススメの「この人の話聞きたいなぁ」という方をご紹介いただけますか?

竹馬
僕としては藤村大介さん(@ffu_)にお願いしたいなと思います。前職の上司というのもあるんですが、Web界隈にいながらWebに対してすごく皮肉っぽい目線を持ってるというか、矛盾してるんだけどだからこそ成り立ってるみたいなおもしろい人なので。

後藤
私も藤村さんとは一緒に仕事したことがありますが、本当に優秀な方ですよね。皮肉っぽい目線、というのも、なんとなくわかります(笑)。では次回は藤村さんのインタビューをお届けしたいと思います。今日は長い時間、楽しいお話しをありがとうございました!

執筆:高橋美津



もしあなたが竹馬さんのように「エッジを攻め続けたい」「新しいライブラリが出たときには、実際に手を動かして試す」というタイプの方なら、そのスキルと情熱を求めている企業から高いオファーが来るかもしれません。

Forkwell では、ITエンジニア宛に一括送信されたスパムのようなスカウトをなくし、一読する価値のあるオファーが届くスカウトサービスを運営しています。自分を高く評価してくれる会社があるのか知りたいという方は、ぜひご登録してみてください。

登録はこちら jobs.forkwell.com