Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

マネーフォワードエンジニアインタビュー 中川敦「隣のおじさんから学んだC言語と”Inside Macintosh”」

マネーフォワードの中の人を知ってもらうため、当社でフルタイムのRubyコミッターを務める卜部昌平が、マネーフォワードのエンジニアにインタビューをするこの企画。 今回は、Javaエンジニアの中川敦さんへのインタビューです。

社員ですら初めて聞くような、マネーフォワードに関わる人のストーリーをお届けします。

▼過去のエンジニアインタビューはこちら マネーフォワードエンジニアインタビュー 谷口徹「BtoBはユーザーとの距離が近い」 マネーフォワードエンジニアインタビュー 鈴木信太郎「モノポリーから始まったエンジニアへの道」 マネーフォワードエンジニアインタビュー 鈴木研吾「崖から落とさないためのディフェンス役」 マネーフォワードエンジニアインタビュー 児玉孝太郎「世の中の課題を解決できる人でありたい」 マネーフォワードエンジニアインタビュー 金子雄一郎「経理から会計の未来をつくるエンジニアへ」

日時

2017年3月某日

語り手

  • 中川敦 (Javaエンジニア) 学生時代より、Macintosh Classic用のフリーウェア制作とオープンソース開発でエンジニアリングの経験を積む。クイーンズランド大学にて情報技術を専攻、学士を取得。その後、国内大手レジメーカーでPOS本部システム開発に携わる。2014年にマネーフォワードに入社し、アカウントアグリゲーションの基盤開発に従事。

聞き手

  • 卜部昌平(Ruby開発者)

ガヤ

  • 青木香菜子(広報・書き起こし・編集担当)
  • 小川昌之(人事・撮影担当)
  • 井上玲(人事)

中川敦 インタビュー

eyecatching

アカウントアグリゲーション本部は、通称「アグリ村」

  • 卜部:中川さんは、アグリゲーション本部初のインタビューですね。普段だと、アイスブレイクみたいな話を聞いているんですけど、今日は先にお仕事のお話を聞ければと思っています。“アグリゲーション”※1って社外の方にはわかりにくいかと思いますので、まずはどういうお仕事をされているのかを教えてください。
  • 中川:わかりました。私は、2014年1月1日入社で、もう3年経ちました。所属するアカウントアグリゲーション本部、通称「アグリ村」※2では、ユーザーさんが連携している金融機関からデータが取り続けられるように運用保守をしています。

※1:アカウントアグリゲーション(Account aggregation) とは、インターネットバンキングなどに預金者が保有する、異なる金融機関の複数の口座の情報を、単一のコンピュータスクリーンに集約して表示するサービスの総称。(Wikipedia(アカウントアグリゲーション)より引用)

※2:「なんとなく」との理由から、「アグリ村」と呼称されているが、“多く複合語の形で用い、農業の、農業関連の、の意を表す“という「agri」が語源とも言われており、社内で諸説あり。

  • 卜部:連携している金融機関からデータを取ってくるプログラムがあって、それをメンテナンスしているということですね。
  • 中川:そうですね。
  • 卜部:チームはどのくらいの規模でしたっけ?
  • 中川:通常は5人で、その内3人がさっき言った運用保守の対応をしています。残り2人は、もう少しインフラとかフレームワークの改修をしてます。
  • 卜部:普通にサーバプログラムですよね?
  • 中川:そうです。
  • 卜部:3人とか5人とかで作っている割には、かなり大きいプログラムですよね。
  • 中川:はい。金融機関ごとに1クラスぐらいあるので、クラス数で言うとそこそこ多いですね。共通化されているところも多く、クラスで言うと1200ちょいクラスがあります。その大半が各金融機関に該当するクラスなので、それぞれ3人でメンテしているという感じです。
  • 青木:中川さんって社員何人くらいの時期に入社されたんですか?
  • 中川:20人目くらいです。ちっちゃかったです、当時は。
  • 卜部:最初からアグリ村だったんですか?
  • 中川:そうですね。アグリ村に入ったら、金融機関に対応しているソースファイルをサイトの変更に合わせて修正することから始まります。そして徐々にフレームワークや基盤チックな部分をやるようになっていったのが、入社2ヶ月後くらいです。
  • 卜部:ずっとアグリゲーションをやっているという感じですよね?
  • 中川:そうですね。現状は、私の場合は工数的には約2割以下で、残りはフレームワークに使っています。

日本の法人金融機関は電子証明書が必要

  • 卜部:「この人がこの担当」じゃなくて、皆で全部を見る、みたいな感じですか?
  • 中川:そうですね。ただ、入社時期によっては、新しい方に新規の金融機関を対応してもらうことがあります。そうすると、その人がその金融機関に対して一番詳しくなるので、以降の修正は、対応した人が一番効率的に直せるって感じです。
  • 卜部:なるほど。そんな感じでなんとなくあるんですね。中川さんは何をご担当ですか?
  • 中川:私は、法人の電子証明書系の金融機関をみています。電子証明書を取得する独立したサーバがあって、そのメンテと裏側や金融機関のデータ取得、保守運用をやっています。
  • 卜部:証明書というのは、ここではクライアント証明ですか?
  • 中川:そうですね。
  • 卜部:整理すると…金融機関側の証明書ではなくて、金融機関のお客さん向けに金融機関が配っている証明書がある。それを使って金融機関にアクセスする必要がある。そういった仕組みになっている金融機関があるっていうことですか?
  • 中川:はい。SSLハンドシェイク時に使う「クライアント証明書」というものが法人の金融機関からお客さんに配られています。それは、こちらの手元にはなく、お客さん側のPCに入っていて、それを使って通信しないといけないという前提があります。そのためにお客さんのPCにソフトをインストールしてもらって通信するという仕組みがあり、そこのメンテを私がしています。日本の法人金融機関はほぼこういった仕組みになっています。
  • 卜部:なるほど、法人だとそういう仕組みなのか。とすると、法人のインターネットバンキングというのは、「この証明書がインストールされているPCじゃないと使えません」という話になりがちなんですね。
  • 中川:そうですね。
  • 卜部:使ったことがなかったから知らなかったです。中川さんは、入社時に最初にそれを作られたんですか?
  • 中川:仕組み自体は私が入社した時に作って、現状の保守も私がやっているという感じですね。

例外が起きた時にバグトラッカーまで自動的に起票

eyecatching

  • 卜部:会社の規模も大きくなっているけど、アグリ村ってそんなに人数が増えて無いですよね。増えたり減ったりしてるわけでもなくずっと5人くらいで。
  • 中川:徐々には増えてはいるんですが、もっと増やしたいですね。
  • 卜部:ある程度は完結しているじゃないですか。アグリ村って結構完成されていて、他とインタラクションが少ないイメージなんですが。
  • 中川:他の部署との関わりで言うと、CSとは深い関わりがあって、「何かが取れなくなった」というフィードバックはCSと話すことが多いですね。さっきお話した電子証明書と連携するソフトなどの場合、個々の環境に結構依存するので、動かなくなった…という問い合わせは良くあります。
  • 卜部:金融機関さんがホームページをリニューアルをすると一気に取れなくなったりとかするんですけど、そういう時にお問い合わせがくるという感じですか?
  • 中川:そうですね、まさにその通りです。
  • 卜部:今の流れでいくと、基本的にCSに入るお問合せやアグリの失敗がトリガーになって仕事が始まるという感じ?
  • 中川:それもあります。それ以外だと、チームで最も追っかけている部分はRedmineを使って管理しています。実装にはScraperを使っていて、ちょっとでも想定していないものに遭遇すると、その時点で例外として落とすようにしていますね。「例外とした時の例外」はある程度まとまってRedmineに起票されていくので、片っ端からそれらを取り除き、例外が出ないよう根本的な問題を直していく…というフローでの運用を日々行っています。
  • 卜部:『メトリクス・フィードバック』ってやつですね。普通のWebサイトだと中々そこまでいかないけれど、例外が起きた時にバグトラッカーまで自動的に起票してくれるものが出来てるんですね。これはすごい話ですね。
  • 中川:これは、私が入社した頃には創業メンバーで取締役の浅野さんが作っていて、元からあったものなんです。
  • 卜部:ということは、その辺はかなり自動化されている?
  • 中川:そうですね。
  • 卜部:たぶん毎日何件も起票されていくと思うんですけど、毎日何回もリリースがあるという感じですか。
  • 中川:そうですね、日々2、3個はあるかなという感じですね。
  • 卜部:いいですね、細かくリリースできているというのは。大きくなっていくと徐々に大変になるので。

ANAとJALの領収書のPDFデータが連携

  • 卜部:最近だと、ユーザーから見て大きな変化だったもの…何かありますか?「便利になった」みたいな変化。MFクラウド経費では、ANAやJALの領収書データは最近になって取れるようになりましたよね。
  • 中川:そうですね。惣郷さんと黒田さんが対応してくれて、領収書データを取ってこれるようになりました。サイトによっては領収書のPDFデータとかが提供されているんですが、提供されていないところもあって。ANAとかJALは元々提供されてなくて、HTMLをPDF化して保存しておくという仕組みです。うちの場合だと、画像化する必要がないので普段HTMLを描画していないんです。
  • 卜部:金額だけ取れれば良いですからね。
  • 中川:そうですね。元々そういう仕組みがなかった部分に仕組みを入れる必要があったのがハードルではあったんですけど、無事実装することができました。
  • 卜部:これは便利ですよね。
  • 中川:そうですね、便利だと思います。
  • 卜部:これからの仕事のやり方とか、「こうしていきたい」みたいなことはありますか?
  • 中川:本当はもっと即時にリリースしたくて、さらに細かい単位でモジュールの入れ替えを出来るようにしたいですね。先程リリースは2、3回とお伝えしましたが、他のリリースによってユーザーが一時的にデータを取れなくなることもあり、それを意識した上でのことなんですよね。
  • 卜部:一番理想的なのは、インテグレーションがされていて、Pull Requestをマージすると自動的にリリースまで何もなくノンストップで…というのが理想ではあるんだけど、中々難しいですよね。
  • 中川:そうですね。サーバ自体が再起動してしまうというのは前提としてなくさないといけないので、仕組みから変えなきゃいけないのは大変ですね。
  • 卜部:デプロイ自体を順次やるというか、1台止めてリリースして、今度は隣を止めてリリースして、みたいな感じでちょっとずつやっていく。
  • 中川:Javaのクラス自体の入れ替えというやり方もありますね。
  • 卜部:あー、ClassLoaderで頑張ると。
  • 中川:そうですね。まだしっかり見ていないんですけど、目をつけています。
  • 卜部:いいですね、楽しいですね。アグリゲーションはサーバの台数が多いので、その辺ちょっと大変なところもあると思うんですけど、やれると面白いですよね。
  • 中川:そうですね。仰るように台数も1つの問題で、本当はもっと減らしたいです。
  • 卜部:リソースを切り詰めればそこまでいけると思いますが、なかなか難しいですよね。組織とか人の話ってどうですか?今後こういう人と働きたいな、みたいな。
  • 中川:今見てないところを見てもらえるような人が来てくれると嬉しいですね。うちがリソースが足りなくて手を出していない部分ってすごいたくさんあるので、そういうところをどんどん手伝ってほしいですね。
  • 卜部:具体的にはどんなことがあります?
  • 中川:サービスレベルで言うと、データ分析とかレコメンデーションとかですね。あとは細かいですけど、人や開発者を支えるフレームワークとかですね。
  • 卜部:そうですね。確かに弊社はアカウントアグリゲーションで情報を取っているけれど、取ってきた情報ってユーザーさんにお見せする以外のことに使っていないし、そういう人が来てくれると良いな、と。

アグリ村は「ほんわか」している

eyecatching

  • 青木:アグリ村の雰囲気についても聞きたいです。
  • 中川:アグリ村は楽しいですね。
  • 青木:ほんわかしてますよね。
  • 中川:そうですね。隣にいる盛田さんと本部長の内波さんが凄く和やかで、みんなをまとめてくれています。
  • 青木:内波さんって和やかですよね。
  • 中川:和やかですね。厳しすぎることもなく、ちゃんと言わないといけないところは言ったりするし、好きですね。
  • 青木:アグリ村って良く飲みに行っている気がします、チームで。
  • 中川:前は新規事業やっている冨山くんと内波さんと良く3人で飲みに行ってましたね。最近だとたまに内波さんと2人で飲みにいくことも多いです。
  • 青木:盛田さんは良く飲みにも誘ってくれますよね。
  • 中川:盛田さんはそうですね、良く誘ってくれます。
  • 卜部:今チームメンバーの人数的にもちょうど誘いやすい人数なのかもしれませんね。これがアグリ村が30人とかになっちゃうと「みんなで飲みに行こう」ってなかなか難しい。
  • 中川:そうですね、良い人数かもしれませんね。
  • 青木:飲みに行ったらどんな話をされているんですか?
  • 卜部:「あのプログラムが難しくて」みたいな感じですか?
  • 中川:あんまりそういう話はしないかもしれないですね。そういう開発上の夢はランチとかで良く話しているかもしれないです。

Stone AgeからModern Worldに来たような感じ

  • 卜部:では、この辺りで、中川さん個人のお話を。アグリゲーションって世の中に何社もやっているわけじゃないから、ここに来てから始められたと思うんですが、マネーフォワードに来る前って何をやっておられました?
  • 中川:以前は、POSシステムの本部システムの開発をしてました。その辺の分野は色々あって、例えば売上管理とかですね。前職では、売上管理や、マーチャンダイジングといって商品を決めるものやCRM、DWH(データウェアハウス)などいくつか製品を出していました。
  • 卜部:CRMまでPOSシステムでやるのはすごいですね。
  • 中川:そうですね。そこでポイントとかクーポンに対応していたり、DWHで売上分析とか。いくつかのところに分かれて作っていたんですが、その辺を行ったり来たりしていた感じですね。
  • 卜部:それって、本部にサーバマシンを納入してみたいな感じなんですか。
  • 中川:はい、取引先の本部にサーバマシンを納入し、そこにプログラムがあって、店舗からのデータが飛んでくるという。
  • 卜部:POS自体は店舗に設置されているやつですよね。
  • 中川:そうですね。
  • 卜部:大変ですねー。私もお客さんへの納入をやったこともあるんですけど、なかなか一回納品したらそうおいそれとプログラム変えられないじゃないですか。私らが日々やっているプログラムは今後変えていく前提だけど、納品すると簡単には変えられないから大変そうなイメージです。
  • 中川:そうですね。基本リモートで入れたので、許可さえ得られればいくらでも変えることは出来ますが、文化として変えられないですね。
  • 卜部:便宜上NGという。
  • 中川:私の前職は、SIerの中でもフレキシブルな運用をしていた気がしますが、リリースメモなどを書いて承認を得てからやるというフローでしたね。状況は違いますが、そういう意味では今はやりやすいです。
  • 卜部:金融機関側のシステムが日々変わっていくので、こちらもリリースノートを書いていると間に合わないですよね。
  • 中川:そうなんですよね。
  • 卜部:マネーフォワードへの入社は何かきっかけがあったんですか?
  • 中川:マネーフォワードが大好きな知り合いがいて、その人からWantedlyのリンクが送られてきて。面白そうだなと思って、「遊びに行ってみる」ボタンを押してみたんです。そしたら、遊びにいったはずが面接が始まって(笑)。でも話を聞いてたら面白そうだし良いかなと。
  • 一同:(笑)。
  • 卜部:来てみてどうでしたか。当然雰囲気の違いとか、そういった受ける印象は違ったと思うんですけど。
  • 中川:なんだろう…Stone AgeからModern Worldに来たような感じでした。
  • 卜部:堅めの業種からベンチャーに就職したことになりますが、そういう部分はどうでした?
  • 中川:いい意味でびっくりしましたね。やりやすさだらけで、なんでも柔軟に、オーバーヘッドなく開発ができるというのは凄く楽しいな、と思いましたね。
  • 卜部:その当時楽しいと思ったのは、今でも引き続き同じ感じですか?
  • 中川:そうですね。今でもチーム内での作業は楽しくてオーバーヘッドが少なく出来ていますね。

小学1年生の時に「海外行くぞ」と言われて、オーストラリアへ

  • 卜部:そろそろ最初にやるはずだったアイスブレイクに戻るんですけど、簡単なプロフィールとか。

  • 中川:私はこう見えて大阪生まれなんですよ。

  • 青木:どう見えて(笑)。
  • 一同:(笑)。
  • 中川:大阪の和泉市っていうところで産まれて、保育園と小1の半分まで大阪にいたんですけど、母親からいきなり「海外行くぞ」と言われて、オーストラリアに行ってしまったんですね。父親を残して。
  • 青木:え、お仕事ですか?
  • 中川:いえ、父親は仕事があるから残って、母親は自由気ままに、子どもを連れて海外に行くという。
  • 青木:中川さんも一緒に?すごい。
  • 中川:はい、私と妹を連れて。私は5人兄弟で、その当時はまだ妹が2人だったので、3人でいきなりオーストラリアに行って、オーストラリアの小学校に入学しました。こっちでは小1だったんですけど向こうでは小2になって、英語が喋れないまま、そこでポカーンという状態で1、2年くらいを過ごしました。そしたら、ある日気づいたら英語が話せるようになっていて、そこから英語を話してます。
  • 卜部:子どもってすごいですね。
  • 中川:はい。
  • 青木:今も日本語より英語のほうがお得意ですよね?
  • 中川:はい。もう日本語は読むのが辛くて。チャットとかめっちゃくると辛いです。
  • 卜部:(笑)。私達がEnglish Speakerのチャットに入ると手が追いつかなくて辛いのとだいたい同じですよね。
  • 中川:そうだと思います(笑)。

隣のおじさんから学んだC言語と”Inside Macintosh”にハマった

  • 卜部:エンジニアリングをするようになったのはいつ頃ですか?
  • 中川:小学6年生か7年生の時にオーストラリアのブリズベンに住んでいて、その時に隣に住んでいたおじさんがMacを持っていたんです。その人が車や機械を作るのが好きな人で、私にC言語を教えてくれたんです。うちにもMacがあって、私もPCが大好きだったのでC言語で遊んでみようということになって、家でひたすらC言語で遊んでました。
  • 卜部:日本だと中学1年生か2年生くらいですね。
  • 中川:昔のMacってインターネットとかなかったので、プログラムリファレンスというヘッダーファイルをひたすら読んでました。ヘッダーファイルって本当に優秀でなんでも書いてあるんですよ。その隣のおじさんが電話帳ほどの厚さの『Inside Macintosh』っていう本を2冊くらい持っていて、それをめっちゃ読んでいました。ホントに読みやすかったです。私の当時の夢が、File systemとかNetworkingとかUI Toolboxとかを揃えることだったんですが、それがあれば何でも作れるっていうような状況だったんで。昔は良かったなぁとたまに思います。
  • 卜部:『Inside Macintosh』ってすごい高くて、当時は買えなかったです。
  • 中川:高いですよね。でもインターネットが出てきた後に、『Inside Macintosh』がHTMLで読めるようになって、すごい画期的だなぁと思いながら読んでました。
  • 卜部:で、それでプログラミングをやり始めて、ずっとそれ以降もプログラミングの職に就いていらっしゃる。
  • 中川:そうですね。C言語を始めた時は遊び感覚でやっていて、あんまりプログラムのことを理解しないでやっていたんですが、中学の時に友達がTurbo Pascalっていうのを教えてくれて、そこで初めてプログラミングを理解して使うようになりました。大学ではオープンソースにハマり、ひたすらそこに時間をかけていました。
  • 卜部:その頃はインターネットがあったから。
  • 中川:そうですね。オープンソースの前は、Telnetを使って遊ぶロールプレイングゲームの『MUD』っていうゲームにハマっていました。今で言うMMORPG。
  • 卜部:あ、みんなでやるやつ。
  • 中川:はい、そうです。グラフィカルな部分は無くて、"s"って押したら南に行って、南に行くと「あなたは何々の教会に居ます。窓にこういうのがあります」みたいな状況をテキストで説明して、小説を読んでるような感じです。その頃から「プログラマになりたい」と思うようになって、そのゲームサーバをメンテするC言語のプログラムをやったり、別のオープンソースにハマったりで、ずっとやっている感じですね。
  • 卜部:大学まではずっとオープンソースのプログラミングをやっていたんですか?
  • 中川:そうです。

プログラミング欲は、やりきった気がしています

  • 卜部:日本に戻ってきてからですよね、プログラミングの仕事をやり始めたのは。
  • 中川:当時、ニート状態でオープンソースプログラマをずっとやってました。そうしたら親がキレて「お前は日本行ってこい」って。それで日本に来た感じです(笑)。
  • 卜部:今でもオープンソースのプログラミングをしたりとかします?
  • 中川:今はもう全然やらないですね。プログラミング欲は、やりきった気がしています。
  • 卜部:ありますよね。仕事もやってオープンソースもやって、ていうのはモチベーションが沸かないことがあります。逆に言うと今はプログラミングをしたいと思ったら結構プログラミングができる状況ということですね?
  • 中川:そうですね。本部長の内波さんも自由にやらせてくれてて、楽しいですね。
  • 卜部:では、あれば代表作とかを聞きたいんですけれど。
  • 中川:代表作…プログラミングのですか?
  • 卜部:プログラミングじゃなくても良いですよ。
  • 中川:どうだろう。私はゲーマーなんですが、ゲームをクリア出来た時は楽しいなと思います。全然代表作ではないですけど(笑)。
  • 卜部:ゲームの話をして頂いても良いですよ。最近何やりました?
  • 中川:最近『オーバーウォッチ』というゲームに凄くハマっていて、カジュアルでプレイ出来るのが凄く楽しくて。RPGとか課金しないと武器が増えないとかいうゲームって、いきなり入ってもメチャメチャにやられるだけで。
  • 卜部:既にいる人が強いみたいな。
  • 中川:そうそう。これはカジュアルにプレイできて、色んな強さの人でマッチングされるので、私がカジュアルに入ると向こうの人もたぶんカジュアルに遊べてっていうのが10分くらいですね。10分20分くらいのセッションでプレイできて、週末とかにやってますね。
  • 卜部:いいですね。オーバーウォッチ楽しいよって人は前もいた気がするし、この会社でもじわりと流行ってるのかもしれませんね。

週末は嫁と横浜を散歩しています

  • 卜部:そうだ、普段の中川さんがどういうふうに暮らしているかを聞きたいです。仕事をしていない時は何をしていますか?
  • 中川:家で嫁と仲良く暮らしています。
  • 卜部:お家までどのくらいの距離あります?
  • 中川:家は横浜なんですけど、京浜東北線で一本で40分で行けちゃいます。
  • 卜部:朝普通に来て夜普通に帰る生活?
  • 中川:そうですね。
  • 卜部:週末とかはどう過ごしてますか?
  • 中川:週末は、さっき言ったようにゲームしたり、嫁と録り溜めしたドラマを見たり、横浜が近いので散歩に行ったり、って感じです。
  • 卜部:横浜は散歩するには良いところですね。
  • 中川:いいですね。なにげに色々あって。まぁ、散歩と言いながら、嫁のウィンドウショッピングに付き合っているような感じですけど(笑)。
  • 卜部:幸せそうで良い感じです。

最後に

今回のインタビューを読んで、マネーフォワードに興味を持たれた方は是非、以下のボタンをクリックして頂ければと思います。

【採用サイト】

マネーフォワード採用サイトWantedly | マネーフォワード

【プロダクト一覧】

自動家計簿・資産管理サービス『マネーフォワード』 ■WebiPhone,iPadAndroid

ビジネス向けクラウドサービス『MFクラウドシリーズ』 ■会計ソフト『MFクラウド会計』確定申告ソフト『MFクラウド確定申告』請求書管理ソフト『MFクラウド請求書』給与計算ソフト『MFクラウド給与』経費精算ソフト『MFクラウド経費』入金消込ソフト『MFクラウド消込』マイナンバー管理ソフト『MFクラウドマイナンバー』資金調達サービス『MFクラウドファイナンス』

メディア ■くらしの経済メディア『MONEY PLUS』