第2回目のゲストとしてお迎えしたのはamachangこと天野仁史さん。これまでのこと、これからのこと、熱く語ってくださいました。
JavaScriptのスターからベンチャーの立ち上げへ
天野: 天野仁史です。amachangのハンドルネームで活動しています。2007年ぐらいにインターネットで活躍していました。サイボウズ・ラボでJavaScriptをがんばっていた時期があって、そこで技評さんにお世話になったり、いろんな勉強会に顔を出したりしていました。2010年以降はベンチャーを立ち上げたり手伝ったり。
経歴を言うと、高専でコンピュータ系の科目は得意だったので、先輩に誘われて中堅通信機メーカーに入りました。そこで交換機とかを作っていたんですけど、そこに音声通話ガイダンスを流すプログラムがありました。その中にVoice XML という業界標準の仕様があって、そこでECMAScriptが動いていたんですね。それで、その調査をすることがあって。
当時まだJavaScriptが日の目を見ない時代だったので、自分で実行エンジンをビルドしたりして、そこでちょっとJavaScriptに詳しくなっていました。その後、Ajax(Asynchronous JavaScript and XML )が流行ったときに、騒がれているけどこれってただのJavaScriptだよなって思っていて、当時流行っていたPrototype.jsの発表をしたら大ウケ。それが2005年。
竹馬: 僕がプログラミングの勉強を始めたのが2008年ごろなんですが、そのときにamachangさんが界隈のスターで、ブログ「IT戦記」はよく読んでました。「 JavaScriptなら、この人を倒せばよいのか!」みたいに思って勉強していました。
天野: (笑) 。そういう意味では、ちょうど世代交代したのかもしれないですね。僕も2007年がピークで、2009年は活動を減らしていった時期だった気がします。2008年ごろから、ブログはほとんど書かなくなったのかな。その後は6年くらい会社をやっていました。引きこもって誰にも会わないように、ただひたすら会社の成長を追い続けてやったんですけど、この前、スマートニュースに会社を売却しました。
自分では会社を成功させることはできなかったけど、スマートニュースはまだまだベンチャーの気質も残っているし、一エンジニアでも会社の価値に直接貢献できるくらいのコンパクトさで、それでかつ成長の角度が大きいっていうところで。自分の起業した経験もUI(User Interface )の経験も活かせるんじゃないかと。
今はiOSやAndroidを束ねたアプリケーションチームのエンジニアリングマネージャーをやっています。コードを書く時間は少なくなりましたけど、UIに長けたエンジニアの人がいたら一緒に成長する会社を作っていきませんか、という宣伝。
竹馬: なんでアウトプットが減っていたんですか?
天野: ブログをやめたきっかけは、自分の中ではけっこう明確なんですよね。これからベンチャーでやっていくうえで、ブログを書くよりも実質的にアントレプレナー的な、起業家としてもう少し有名になるまでは、いったんゼロから始めよう。そう思ってブログをやめました。
竹馬: ちょうどスキルをリセットするタイミングだったと。
天野: そうです。それとは別に、JavaScriptをやめようという意思も、ちょっとありました。僕はプログラミングが得意だという自覚はないんですが、サイボウズ・ラボの技術者集団に入ったときに、すごく自分の限界を感じたんですよね。JavaScript以外のこともできるようになって、ちゃんとしたエンジニアとして活躍して認められるなら納得できるけど、JavaScriptしかできないのにっていう劣等感があって、それ以外のこともちゃんとやろう、という想いが強くありました。2007年にデブサミ でベストスピーカー賞をとったあたりが一番僕の中の違和感のピーク。僕がこんな目立って、ちょっと違うんじゃないかな、みたいな。
周りがJavaScript以外を許してくれない
竹馬: JavaScriptしか書けないのに目立っても、っていうの、僕もすごくわかるんです。僕の場合、逆に時代が勝手に追いついてしまって、JavaScriptでなんでも作れるようになってしまって、それ以外を書く動機がどんどんなくなってしまった。結局その仕事しか来なくなっちゃって。
天野: 今になって思うと、1つのジャンルに突き抜けることによって広いジャンル、UIそのものの深淵に触れられるってのも、あるんじゃないかと思っています。
サイボウズのプロジェクトで、まだコモディティになっていないころに、SPA(Single Page Application )と呼べるような複雑なアプリケーションを作ったんですね。その過程で、どうしたってMVVM(Model-View-ViewModel )的な考えとか、設計論が必要になってくるわけですよ。
起業してからはネイティブアプリケーションのコードを書く仕事が多かったんですが、その過程でも一番大事なViewとデータの分離とか、UIのライフサイクルとか、前に見た別のアレ、という感じでうまく書けたという実感がありました。
本質的な部分がわかっていれば、AndroidでもObjective-Cでもぜんぜんイケるじゃないですか。でも、JavaScriptが得意だと周りがそれ以外を書くのを許してくれないって話ですよね。僕はその危機を感じて自ら離れていったけど、どうなんでしょうね。運に任せるのも怖くないですか? JavaScript衰退しました、みたいな未来が。
竹馬: あー、それはあるんですけど、僕は少なくとも国内においては自分から自分のスキルが活かされる環境を作りに行こうしています。それが僕のブログを書く動機なので。
GoogleやAppleの事情に振り回されるのはあるんだけど、技術的に正しいことをしていれば報われると思っています。良いコードは何か? ってのは、言語に限られない普遍的な部分だと思っています。
天野: そうですね。言語に依存しない部分を、逆に一つの言語に集中することによって、本当に大事な部分を学べるってことがあるのかもしれないです。
ネイティブアプリか? Webアプリか? PCか? モバイルか?
天野: 僕はJavaScriptだけでやっていかなくなった理由の一つが、iPhoneのブーム。自分が起業して、ベンチャーに携わっていく中で、自分が好きなものと現実はまったく違うんだなと考えて、自分のJavaScriptのブランディングは足かせになるんじゃないかと思うようになったんです。
iPhoneがネイティブアプリケーションだったっていうのが、あの時代の空気からすると衝撃的で、基本的にアプリケーションというとWebだったんですよね。最初はiPhoneのネイティブアプリケーションは流行らないと思っていて、でも現実はそうじゃなかった。自分が間違っていたんだな、と。自分がJavaScriptに思考を捻じ曲げられてしまった、みたいなことをすごく感じるようになりました。そこから次に起業するときはモバイルアプリケーションだ、と。
そういう点で、mizchiさんは僕と反対かなと思ったんだけど、JavaScriptをずっとやっていくんですか? 今日のインタビューで、どう話したらmizchiさんがモバイルに来てくれるのか、ってのを考えてたんだけど。
竹馬光太郎氏
竹馬: (笑) 。自分としてはこだわっているつもりじゃなくて、ある種の縛りがある環境で、ちょっと無理してリッチなものを作るっていうのが好きなんです。それがWebだったって感じですね。
あと、単にそもそもスマートフォンが好きじゃないっていうのがあります。僕にとってはPCでやるインターネットというのが一番で、モバイルはその劣化版。それでモバイルをやらざるを得ない通勤時間ってのが嫌い。好き嫌いとは別に、仕事で必要だから、勉強はしているんですけど。
天野: mizchiさんにとって、PCにあってモバイルにないものってなんですか? たくさんあると思うけど、モバイルに足りないものってなんですかね。
竹馬: うーん、先に言っておくと、自分が古いタイプだという自覚はありますよ。そのうえで言いますけど、一番大きいのは画面のサイズと縦横比、次点で入力の問題。
縦横比ってGUIを設計するにあたって本質的な要素だと思っていて、たとえばタブレット用のアプリケーションってPCのデザインとすごく近くなりますよね。それに比べると、モバイルの縦画面って、基本的にデータが一本のストリームになる。単に縦と横が変わったっていう変化じゃなくて、情報の受け取り方が根本的に変わったんじゃないかなと思っています。
天野: 縦画面って、集中を大事にするUIですよね。気が散らなくはあるが、情報量は少ない。
竹馬: 僕は、大画面で情報をガッと読みたい、情報の密度に満足感を覚えてしまうタイプ。ただ主流じゃないと思うんですよね。ほとんどの人はデータをしぼったほうが使いやすい。
天野: 画面の広さというのはある種の手段のような気がして。いかに大量の情報を摂取するかみたいなところなのかな。
竹馬: 今は入力をしぼって、レコメンデーションで、いかに適したものを提供するか、って時代だと思っています。
天野: すばらしい。そうなんですよね。僕は、ほしい情報へのアクセスがしにくい時代だったから、画面が広くなければいけなかったのではないかという気もしていて。レコメンデーションの精度が上がると、画面の広さは解決できると思いません? どう思います?
竹馬: そこを思うところはあって、最近はRSSリーダーで大量の情報を読むみたいな体験がなくなった替わりに、サービス側が提供するレコメントエンジンとかの優秀さが、サービス品質に本質的に関わるようになってきた。だからAIっていうのもそのトレンドに合っているし、わかるんですよ。わかるんだけど、優秀なレコメンデーションエンジンを作れるような、データをたくさん持っていて技術力がある会社って本当に少数なんですよね。大きな会社にはいいけど、小さなプレイヤーたちがまねすると痛い目を見る時代なんじゃないかと思っています。
今書いているコードは企業の価値を上げるか?
竹馬: 結局ベンチャーやってみた感想、どうでした?
天野: いやー、苦しいですね。苦しかった。とても大変だったけど、ベンチャーをやって、良いことも悪いこともありました。
良いことは、常に会社の価値に貢献する行動指針を意識するようになったこと。つまり、会社にとって何が必要か、会社の価値といっても抽象的な意味ではなく、株価そのものを意識するようになったということ。会社が次の調達のときとか、IPOのときに今の価値はどのくらいに付くんだろう、って、成長に寄与できるような行動から逆算して行動するようになりました。今書いているコードが、どのように企業の価値を上げることにつながるか、すべて企業価値に換算して自分で行動する。そうしないと、逆に不安でドキドキしてしまう。
その半面、自分への投資がおろそかになってしまったという反省はあります。よく休みの日は自分の勉強しろって話がありますが、会社価値にひも付かない勉強をしなくなってしまいました。
竹馬: 正しい意味で経営者目線を持てた、みたいな話ですよね。経営者目線を持つこと、個人的には立場や状況によって難しいと思っているんですが、エンジニアのポジションで自分が書いたコードがどれぐらい会社の成長に寄与したか、生の数字を知ることは、基本的に珍しいことですよね。
天野: エンジニアがどういう風に目標を与えられるかってのは難しい課題だと思います。今の会社でも、あなたはこういう行動をとれば最終的にこの会社の価値が高まります、みたいなのがあるんです。それってチームのマネージャーとかが、メンバーと話し合って決めるんですが、自分でその感覚を持っているのと、与えられたりしてやったりするのとは違いますよね。
この話も今の会社で盛り上がったんですが、納得感を持ってプログラムを書くのか、納得感を持たないでプログラムを書くのか、どっちがいいか? って話があったんです。これはとある会社の話なんですが、パクリのアプリケーションを作ろうとして、当のエンジニアたちは、パクリだから適当に作るか、みたいなそんな感じでやってた。でもビジネスとして成功したんです。
で、片や僕らは納得感を持って作りたいと思っているわけで、それってなんなんだろうって考えるわけです。細かい作り込みみたいなものは、作っている人しかわからないという自負もある。きっとそこに正しい部分もあると思っていますよ。
経営陣には説明責任もあるし、われわれエンジニアとしてもいったん自分のやりたいことをフラットに考えて、本当のその会社の方針とか仮説に対して一緒にコミットできるのかを考えないといけないとは思います。お互い歩み寄って、会社とのすり合わせをしっかりやるってのは大事だと思うんですが、難しいですよね。
スマートニュースに貢献し、もう一度起業を
竹馬: 今後の話なんですが、10年後何していたいですか?
天野: 今はスマートニュースの成長に貢献できればそれでよくて。その中で私が活躍できるフェーズがあれば活躍したいと思っています。
もしそのフェーズを脱したんであれば、その知見を持ってもう1回起業したいって思いもあります。やっぱり起業してよかったと思っているんでしょうね、エンジニアとして。さっき言った自己投資がおろそかになる欠点もありますが、結局判断の基準みたいなものをはっきりと得られたのが良かったと思っています。資本主義社会では、数十年単位ではブレなさそうな価値観を。
もちろんスマートニュースで活躍、ってことがまず大前提。感謝しているんです。自分の会社をしっかりと終えられたということは。
竹馬: 他人に起業を勧めたりは?
天野: しちゃいけないもののような気がするんですよね。いばらの道ですからね。mizchiさんを見ていると、1回、JavaScriptから解き放たれて、新たな考え方の軸を得れる一つの選択肢としておもしろいよ、とは言いますよ。でもするべきだとは思ってないです。大変だってわかっているから。
起業家として僕がレベル高いかっていうとあんまり高くないんですが、エンジニアとしての生き方がある意味さわやかになったという気がします。あんまり自分の技術に対して、ある意味オーナーシップを感じなくなったというか。
それよりも何作るのかな? とか、今この会社に必要なことは何かな? とか次に流行るアプリケーションはどんなもので、それを作るためにはどうしたらいいんだろうとか。ある意味エンジニアとしての成長に必須なのかも。いろいろプログラミング言語を触らざるをえないじゃないですか。起業するとサーバもクライアントも。デザインもやらなきゃいけないんで。
竹馬: 僕もJavaScriptに呪われているところがあるんで、いつかそういうフェーズを経験する必要はあるとは思っています。
天野: そうそう、呪いを解きたいなって。身軽ですよ。JavaScriptの人って言われなくなるとすごく楽だから。
特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現!
特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう
特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT