engineers_blogマネーフォワードの中の人を知ってもらうため、当社でフルタイムのRubyコミッターを務める卜部昌平が、マネーフォワードのエンジニアにインタビューをするこの企画。今回は、フロントエンドエンジニアの大須賀さんへのインタビューです。(フロントエンドエンジニア)情報系の大学でプログラミングに触れて以来プログラム歴10年。IT企業をながれて4社目。2016年にマネーフォワード入社。卜部:これは...インタビューしてるふりでいいのかな...。大須賀:僕は全くまわりの様子がわからないので言われた通りにします。大須賀:(指差しながら)ここにスマホが入るんですけど、昨日工作してたんですよ。卜部:意外と汎用的な仕組みなんですね。大須賀:スペックは必要ですけど、大きなAndroidとかじゃなければ遊べます。卜部:はい、ではインタビューしますね(笑)。この流れだと趣味の質問からでいいか(笑)。デジタルガジェットはお好きなんですか?大須賀:好きなものはありますね。自宅だとWiFiにつながっている赤外線リモコンを使って、1つ置いておくとスマホからテレビやエアコンをつけたりできるという。いうのを1日中セットアップして楽しんでいたりします。卜部:他に最近面白かったガジェットとかありますか?大須賀:一番はVRです。HTCのViveというものがあって、友達の家で体験しておもしろかったので購入してしまいました。床面積が必要なので、自宅のダイニングテーブルをどけて床を広くして、専用のフォーメーションを作りました(笑)。休みの日はそこでずっと遊んでいて、最近はそれが一番アツかったですね。卜部:インタビューを読んでる方に面白さを伝えてください。大須賀:これが難しくてですね(笑)。VRって、皆やる前は「ふ~ん」と言うんですが、我が家でやってもらうと、「ほしい」と言って帰っていくんですよ。はやってもらわないと伝わらなくて。近しい人は家に呼んで体験してもらっています。卜部:やっている人を遠巻きにみても何やっているかわからないですもんね。大須賀:わからないと思います。ここどこ?」となりますよ。被ってもらいたいです。卜部:結構お友達をご自宅に呼んでるんですね。大須賀:使ってくれそう、家広そう、お金に余裕ありそう、みたいな人は呼んでます(笑)。卜部:いろいろ条件があるんですね(笑)。大須賀:ある程度の家の広さは必要ですし、セット自体が10万円程します。加えて、それを動かすためのスペックがあるパソコンなどが必要なので、そこへの投資に対して躊躇がない人は楽しめると思います。卜部:色々ジャンルがあると思うのですが、大須賀さんのお気に入りは?大須賀:STEAMというプラットフォームで購入できるのですが、僕は大体シューティングです。卜部:VRにハマった理由は、元々興味の出発点としてゲームが好きだったからですか?大須賀:子どもの頃からゲームは好きではありました。僕は3人兄弟の末っ子で父と兄は完全に理系なので、そもそもの環境の影響とかもあるかもしれません。卜部:子どもの頃はどんなお子さんでした?大須賀:もくもくとゲームやっていたので、変わってないです(笑)。自分の財力で買えるようになってから加速しています。卜部:昔やりこんだものとかあります?大須賀:クロノ・トリガーとかやっていましたね。卜部:お、名作ですね。大須賀:でも、やっぱりVR仲間を増やしたいです(笑)。卜部:まずは体験してもらうことですね。大須賀:池袋や渋谷に体験できるアミューズメントがあるのでぜひ行ってほしいです。青木:社内でVR仲間います?大須賀:いない!いないんですよー。一式26万円くらいするのでハードルは高いですよね(笑)。Readyと呼ばれている性能の組み合わせみたいなものがありまして、それを揃えるだけでも大変ですね...。卜部:会社に持ってきて試乗会とかすればいいじゃないですか。大須賀:ノートPCじゃないので持ってこれないんですよね(笑)。フロントエンドでの論理的な設計の楽しさ卜部:そろそろ趣味以外の話をします(笑)。大学時代は何を勉強されてたんですか?大須賀:大学は情報科学部だったのですが、実は入る前はプログラミングを学ぶ学部だということは意識していなくて。CGなどが学べる学部だとパンフレットに書いてあって、当時のCGだとクリエイター方面のCGをイメージして入学したんです。そこで、がっつりプログラムでCGを書くような感じの勉強をしていました。卜部:レンダリングエンジンとかですか。大須賀:レイトレーシングとかもですね。そこでプログラムに触れていくうちに面白いなと思って惹かれていきまして。卜部:今でもCG関連は魅力を感じます?大須賀:いえ、それよりも当時からソフトウェアを作ることが面白いなって思っていました。卜部:ソフトウェアを作ることの面白さについて教えてください。大須賀:パズル的な面白さかもしれません。モノを作るだけなら簡単かもしれませんが、保守性や拡張可用性を考えながら簡単に実現できないものをバランスを考えながら作ることや、まだまだ人間の仕事だなぁと思う部分があるので、それが面白いですね。卜部:そういう面白さって今の仕事で出来ています?大須賀:それはかなりあると思います。サーバーサイドってサーバー負荷や物理的なことを考えないといけないはずですが、フロントエンドのプログラムはユーザ一人ひとりの端末で動くので負荷集中などは発生せず、そんなに問題にならないんですよ。すると論理的などのようなコードに落とし込むかという、アプリケーション開発で一番パズル要素の強い部分に一番注力できるので、特にフロントだからというので困っていないですね。卜部:今はフロントエンドのお仕事をされていますが、そこに至るまでにはどんな経緯がありましたか?大須賀:大学のプログラミングではC言語からはじまり、その後にデータ構造やアルゴリズムを学んでいきますが、そこが由来というよりかは、GreasemonkeyやUserScriptなどのジャンルが流行った時期にそれらを書いていたんです。そこでJavaScriptやブラウザのJSに触れていくわけですよね。その流れで仕事でもJavaScriptを書き始めたことでどっぷりハマっていった感じです。卜部:ちょうどJavaScriptに力を入れていかなくちゃという時期ですかね。大須賀:Ajaxとかも流行っていましたよね。GoogleMapとかが話題になった時期でもあるので、当時ホットだったというのはあるかもしれません。卜部:では、大学時代にそういうご経験をされて、そこからずっとJavaScriptを書かれていると。経歴上はPHPとMySQLもがっつり書いていたことがあります。JSを書かなかったのはその時だけだと思います。卜部:その頃は、所属されているチームが小さかったからとかですか?大須賀:いえ、JSの出番がないような初期のガラケー向けのソーシャルゲームの開発に携わっていたんです。卜部:ハードウェアの制約が厳しいタイプのやつですかね。やってみてこれはやっぱりJSの方が楽しいなとなりました?大須賀:どっちでも良いかなとも思う一方で、やっぱりJS書いている時の方が楽しいかもしれません。さっきお話したような、物理的制約がないから楽しいなと。フロントエンドでやっている論理的な設計の方が楽しいですね。卜部:今やられている仕事を細かくいうと、論理設計とかをやっているという感じですか?大須賀:全体の流れだと、プロダクトオーナーやデザイナーが考えた機能があり、それを実装する際に、実装する方法を考えます。その際に論理設計や、クラスを分割したりだとか、フレームワークを使うのはそういうところですね。その中で論理的な部分をチームで相談しあい、自分たちが足すべきところの役割について検討しています。卜部:今ってサーバーサイドはサーバーサイドであるじゃないですか。サーバーサイドからレンダリングされてきたHTMLはそれはそれであり、JavaScriptはそれはそれであるのだと思いますが、それはフロントエンドチームの中でJavaScriptで完結するよう自分たちの責任範囲でやるという感じです?それともサーバーサイドとのやりとりが発生したりとか?大須賀:サーバーサイドがHTMLをレンダリングするような環境というのはプロダクトによっては違うのかもしれませんが、基本的にはサーバーサイドのエンジニアと連携とりながらになっていくと思います。最近だと、HTMLの生成もライブラリで出来るReactと呼ばれている技術があるので、それを採用するページでは「こういうJSONを返してくれ」と決めて、あとは全部フロントチームでやってしまいます。卜部:そこでのフレームワークの選択って、結構時期によって変わってきたりすると思いますが、今だとSPAっぽく作っているものがナウいんですかね?大須賀:採用実績はまだ多くはないですが、そういうパターンの方がナウいですね。ほかにも、コード品質やテストがちゃんと書いてあるとかを重要視していると思います。卜部:これから増やしていく感じですかね?大須賀:そうですね。何も考えずにそっちでというよりかは、長所短所を踏まえて、このページだったらナウくないけどそっちの方がコスパは良いかな、みたいな判断は随時やっています。卜部:マネーフォワードって、プロダクトがたくさんあって、意外と共通化されていない部分があり、常に何かがリニューアルしているという状況のプロダクトもありますが、その度にちょっとずつそういう風に寄せていってるみたいな感じですか?大須賀:僕の場合は「MFクラウド経費」に携わっているのですが、その中ですと、今は新規の機能が増えているタイミングで、(そういうところは)まだ1バイトもHTMLが書かれていないので、まっさらなところに過去の経緯に縛られずにあるべき姿で実装しています。卜部:過去の経緯とかなくて自分が好きなようにできるって割りと楽しいですよね。大須賀:チームで選択できるという感じではありますが、楽しいですね。今のメンバーでもっと密度を上げていきたい卜部:フロントエンドチームってどんな感じですか?大須賀:最近は5人になったところで、ちょっと前までは3人でした。(1人はマネージャなので)JavaScriptを書くのは実質2人ですね。卜部:その中で複数のプロダクトをそれなりに役割分担してやっている?大須賀:はい。僕は「MFクラウド経費」、ほかのメンバーが「MFクラウド会計」や「MFクラウド請求書」など別サービスに携わっています。卜部:チームってそれなりに一緒にやっているという感じですか?大須賀:フロントチームはかなり一緒にやっていると思います。人数が少ないので、いつ自分にまわってくるかわからないですし他人事じゃないので。レビューとかも厳しいと思いますし、皆でやっている感じはありますね。卜部:チーム外のやりとりだと、デザイナーとかバックエンドの方とやりとりがあるという感じですね。大須賀:それ以外ですとCSの方から、バグの話とかがあがってきます。間に誰かが入る時もありますが、最終的に修正作業をはじめると直接やりとりします。CSの方だと新機能リリース時に、サービスをさわっていただいてフィードバックをもらう「試食会」をやっているので、コミュニケーションは多いですね。CSチームのモチベーションや作業品質はとんでもなく高いと思います。卜部:CSの方以外だと、誰と話す時間が長いですか?大須賀:作業工程でいうと直前の工程になるので、話す時間が長いのはデザイナーさんですね。卜部:当社って、どこまではこっちで、どこまであっちで、という分担ってどうなっているんでしょう?実は僕あまり知らなくて(笑)。大須賀:そうですよね(笑)。人が少ないので組織と組織というよりかは、人と人レベルでのコミュニケーションになっていますね。卜部:人が少ないからというのもあるでしょうが、今まで働いてきた会社と比較してどうでしょうか?大須賀:デザイナーに関してはどこの会社も少ないですよね。どの会社でもデザイナーとやりとりする時はチームと、というよりは人ベースでのコミュニケーションが多かったのでそれはあまり変わらないです。卜部:もっと人が居たほうがいいです?デザイナー然り、ご自分のチーム然り。大須賀:どっちだろう...メンバーこれくらいでやること減った方がいいと思います(笑)。大須賀:選択と集中をしても良いのかなと(笑)。卜部:具体的にどういうところですか?大須賀:今のメンバーでもっと密度を上げるイメージですかね。やることを減らして、浮いたリソースを既存部分に充てていくという感じです。人が増えると、守っていきたい価値観、重要な価値観の伝達が疎かになっていくので、急には増えない方がいいかなと思っています。卜部:以前すごく大きなチームで働かれていたことがあるんですか?大須賀:急に大きくなった組織に属していたことがあって、その時は良くわからない感じになりましたね。経営層と現場の価値観って異なる部分もありますよね。卜部:新機能の追加を減らして、密度を上げていく方向に倒す方が良い?大須賀:個人的には、プロダクトに充てる人を増やした方が良いような気はしています。先日来てくれていたインターンの方には、僕がみることができる範囲で作業をしてもらって、コード品質の良い部分をさわってもらったんです。普段だったら余裕があったら作り込む(ただし余裕はない)みたいな部分をやってもらったのですが、そうするとクオリティが全然違ったんですよ。個人的にはもう少し作り込みにリソースを使えた方が良いのかなと思います。「お金の不安を解消する」は、やりたい卜部:こういう人と働きたいとかありますか?大須賀:フロントチームであれば、今仕組みが増えているので、ただただライブラリを使って成果を得るだけではなくて、仕組みをわかったうえでの選択が必要になっていくと思います。個人的には、そういう仕組みにこだわれる人と一緒に働きたいですね。フロントチームとしては、エンジニアの枠にとらわれず広い責任範囲の仕事がしたい方が良いのかなと思います。青木:「お金の不安を解決する」という部分を身近に感じて、入社を決められたという話を伺いたいです。大須賀:お金って不安じゃないですか。お金があればどうにかなることって、あると思うんですよ。いろんなことが予測できるようになってきていますが、お金だけが予測できないですし。手元に持っていても相対価値も変わっていきますし、流動的なものですし、基本的には予想がつかない。予想がつかないということは、不安ですよね。マネーフォワードで働くと、僕の不安は解消されるかもしれないなって思ったんです。卜部:何時くらいに会社来て何時くらいに帰られてますか?大須賀:平日は10時くらいに出社して、帰るのは20時半くらいですね。卜部:割りと健康的な感じですね。お家は近いんですか?大須賀:電車に乗ってるのは30分くらいです。電車の中では読書かゲームしてますね。どの話題でもゲームの話題になってしまうんですが(笑)。ゲームは何やってるんですか?大須賀:今まででやりこんだのは「白猫プロジェクト」で、今やっているのは「アナザーエデン」です。小川:僕もやってます(笑)。井上:あれは面白いですね。「クロノ・トリガー」も好きです。大須賀:音楽が同じ方なんですよね。最初興味がなくて嫁にやらせてたら楽しそうにやってたので、そんなまさかと思って(笑)。試しにやってみたら面白かったです。あれは良いゲームですよね。卜部:ゲーム以外だと読書なんですね。大須賀:割りと読書だけは意図的にジャンル外のものとか、人におすすめされたものは読むようにしています。自分が好きなのはコミックです。卜部:全然知らないものを読むのって刺激になって良いですよね。大須賀:最近だと、社外取締役の御立さんの著書とか、マイケル・ポーターの『競争の戦略』とか読みました。このひとに紹介された本は面白そうってものは読みますし、そういう本は割りと面白いし読んでよかったなってなります。卜部:休日はどう過ごしてますか?大須賀:基本的に家に引きこもっていて、時間によってやっているゲームが違うだけですね(笑)。それ以外は、自炊しています。共働きで基本平日は2人とも作れないので休日は自炊するようにしてますね。卜部:好きな料理、得意料理はありますか?大須賀:こないだリゾット作ったんですが、我ながら美味いものを作ってしまったと思いました(笑)。あれは美味しかったなぁ。卜部:料理って、アレンジが決まるとグッときたりしますよね。大須賀:今持っている材料にぴったり合致するレシピってなかなかないじゃないですか。これたまねぎ2つって書いてあるけど1つしかないしなぁとか...。うまく調整するんですけど、結果うまくいくと「よしっ」ってなります(笑)。卜部:材料に茄子って書いてるけど季節じゃないし...とかね。大須賀:ですです(笑)。いうの面白いですよね。片付けは嫌いですけど、嫁にやってもらえることになったので意気揚々と料理しています。目の前にある不便なものを自動化したい卜部:今後新しく手を伸ばしたいジャンルとかありますか?大須賀:元々の動機は目の前にある不便なものを直すとかなので、ユーザースクリプトとかなんですが、日々の生活の中で「ああ、これ自動化したいなぁ」みたいなものがあると、それに必要な技術を引っ張ってきて使うってことをやっていますね。最近だとそのためだけにOpenCVとかを使ってみたりしています。卜部:OpenCVで何をやられたんですか?大須賀:OpenCVではPCを自動操作するプログラムを書いてました。毎日押さなきゃいけないボタンとかあるじゃないですか。いうものを勝手にやらせたりしてます。ブラウザで表示しているものならクローラでいいんですがそうじゃなかったので画像処理でやってみました。卜部:どこにボタンあるのかなとかわからないですよね。大須賀:それも画像処理で見つけてくるんですよ。僕の家のパソコンでは人知れずマウスが動いています。卜部:案外重要で、Webの場合だとPhantomJSとかが使えるからまだ良いんですけど、がっつりしたアプリのオートメーションテストとかになると似たような話になるんですよね。大須賀:ああ、そうですね。実際にそれをやろうとした時に既存の研究みたいなものはあって。似たようなライブラリとかあったんですけど、うまくカスタマイズできなかったんですよね。分野的には昔からあるけれど、割りと...諦められてるんですかね、あの辺り(笑)。「最近のruby-core」はなぜ読んでしまうのか?大須賀:では、卜部さんになんでも聞いていいということだったんですが...。僕と卜部さんの接点って、実はあまりなくて。僕の中で一番身近な接点って、エンジニアブログの「最近のruby-core」なんですよ。最初は「Rubyわかっていないと面白くないのかな」と思ってたんですが、読み始めるとそんなことなくて、めちゃくちゃ面白くて読んじゃうんですよ。卜部:ありがとうございます。大須賀:フロントチームとかでランチ行く時にも「これはすごい!」って話していて。卜部さんが文章を書く時に気をつけてることがあれば教えてほしいです。卜部:わかっている人がわかるようにするだけの文章だと面白くないので、多少わからない人にもわかるようにという背景技術の説明とかは多少は入れるようにしています。全部書いてしまうとそれはそれで面白くないので、リンク先で議論が行われていてみたいなところは、ある程度までしか解説しなくて、あとはこの先を読んでねみたいな感じにはしています。大須賀:やっぱりそこは狙ってたんですね。大須賀:まんまと毎月2、3個はリンク押しちゃうんですよね。誘導されてるなと思いつつ。確かに議論は面白いなと思って読んでいます。卜部:実はあれは全てを紹介している訳ではなく、普通にバグ報告されていて、「バグですね、はい直しました」みたいなものは、さすがに載せていなくて。ある程度議論が面白いものを頑張ってひろってくるっていうのがあります。いう意味では素材の良さかもしれません(笑)。面白いものを選んでるのか...!卜部さんの選球眼もあるんですね。卜部:多少あると思います(笑)。大須賀:卜部さん以外がやっても、ああいう興味深い文章になるのかなっていうのは気になっているところです。卜部:いやこれは、いろんな人がやってくれたらいいなと思っています。jser.infoとかもあるじゃないですか。大須賀:Pythonも稲田さんがやってますよね。いろんな人がいろんなことやればいいなって思います。今月のReactとか。大須賀:あれいいですよね。読ませたい人に読んでもらうための文章を書くって、本当すごいなって思っていて毎月楽しみに見てます。卜部:ありがとうございます。大須賀:いつも、「おかしい俺そんなRubyのこと好きとかじゃないのに読んでしまう...!最後まで読んじゃうし、リンク先も踏んでる...!」となるので、すごいなと思っています。それで、もしも文章書く上での言語化したノウハウがあれば自分にも活かしたいなと思って聞いてみたんです。言語化できるものは意識してなかったですね。大須賀:もしも、この先うっかり言語化できたら教えてください!卜部:わかりました(笑)。大須賀:やっぱり自分が書いたものを読んでもらわないといけないシーンって、エンジニアでもたくさんあるじゃないですか。大須賀:だから毎月読んでいつか解明したいと思います。卜部:究極、読んでくれるプログラムとかもあるかもしれません。同じことでも読みやすいプログラムと読みにくいプログラムがあるとは思います。いうのって裏では、似通った部分もあるのかなと。その研究は続けていきたいですね。青木:あ、写真を最後にもう一枚撮りたいです。大須賀:これ皆でじゅんぐりに被っても良いんですよ。意外と何もみえないなと実感すると思います。完全に無能になります。最後に今回のインタビューを読んで、マネーフォワードに興味を持たれた方は是非、以下のボタンをクリックして頂ければと思います。