engineers_blogマネーフォワードの中の人を知ってもらうため、当社でフルタイムのRubyコミッターを務める卜部昌平が、マネーフォワードのエンジニアにインタビューをするこの企画。今回は、Javaエンジニアの中川敦さんへのインタビューです。社員ですら初めて聞くような、マネーフォワードに関わる人のストーリーをお届けします。Classic用のフリーウェア制作とオープンソース開発でエンジニアリングの経験を積む。クイーンズランド大学にて情報技術を専攻、学士を取得。その後、国内大手レジメーカーでPOS本部システム開発に携わる。2014年にマネーフォワードに入社し、アカウントアグリゲーションの基盤開発に従事。卜部:中川さんは、アグリゲーション本部初のインタビューですね。普段だと、アイスブレイクみたいな話を聞いているんですけど、今日は先にお仕事のお話を聞ければと思っています。“アグリゲーション”※1って社外の方にはわかりにくいかと思いますので、まずはどういうお仕事をされているのかを教えてください。私は、2014年1月1日入社で、もう3年経ちました。所属するアカウントアグリゲーション本部、通称「アグリ村」※2では、ユーザーさんが連携している金融機関からデータが取り続けられるように運用保守をしています。インターネットバンキングなどに預金者が保有する、異なる金融機関の複数の口座の情報を、単一のコンピュータスクリーンに集約して表示するサービスの総称。(Wikipedia(アカウントアグリゲーション)より引用)※2:「なんとなく」との理由から、「アグリ村」と呼称されているが、“多く複合語の形で用い、農業の、農業関連の、の意を表す“という「agri」が語源とも言われており、社内で諸説あり。卜部:連携している金融機関からデータを取ってくるプログラムがあって、それをメンテナンスしているということですね。卜部:チームはどのくらいの規模でしたっけ?中川:通常は5人で、その内3人がさっき言った運用保守の対応をしています。残り2人は、もう少しインフラとかフレームワークの改修をしてます。卜部:普通にサーバプログラムですよね?中川:そうです。卜部:3人とか5人とかで作っている割には、かなり大きいプログラムですよね。金融機関ごとに1クラスぐらいあるので、クラス数で言うとそこそこ多いですね。共通化されているところも多く、クラスで言うと1200ちょいクラスがあります。その大半が各金融機関に該当するクラスなので、それぞれ3人でメンテしているという感じです。青木:中川さんって社員何人くらいの時期に入社されたんですか?中川:20人目くらいです。ちっちゃかったです、当時は。卜部:最初からアグリ村だったんですか?中川:そうですね。アグリ村に入ったら、金融機関に対応しているソースファイルをサイトの変更に合わせて修正することから始まります。徐々にフレームワークや基盤チックな部分をやるようになっていったのが、入社2ヶ月後くらいです。卜部:ずっとアグリゲーションをやっているという感じですよね?中川:そうですね。現状は、私の場合は工数的には約2割以下で、残りはフレームワークに使っています。卜部:「この人がこの担当」じゃなくて、皆で全部を見る、みたいな感じですか?中川:そうですね。入社時期によっては、新しい方に新規の金融機関を対応してもらうことがあります。すると、その人がその金融機関に対して一番詳しくなるので、以降の修正は、対応した人が一番効率的に直せるって感じです。そんな感じでなんとなくあるんですね。中川さんは何をご担当ですか?中川:私は、法人の電子証明書系の金融機関をみています。電子証明書を取得する独立したサーバがあって、そのメンテと裏側や金融機関のデータ取得、保守運用をやっています。卜部:証明書というのは、ここではクライアント証明ですか?中川:そうですね。卜部:整理すると...金融機関側の証明書ではなくて、金融機関のお客さん向けに金融機関が配っている証明書がある。それを使って金融機関にアクセスする必要がある。いった仕組みになっている金融機関があるっていうことですか?中川:はい。SSLハンドシェイク時に使う「クライアント証明書」というものが法人の金融機関からお客さんに配られています。それは、こちらの手元にはなく、お客さん側のPCに入っていて、それを使って通信しないといけないという前提があります。そのためにお客さんのPCにソフトをインストールしてもらって通信するという仕組みがあり、そこのメンテを私がしています。日本の法人金融機関はほぼこういった仕組みになっています。卜部:なるほど、法人だとそういう仕組みなのか。すると、法人のインターネットバンキングというのは、「この証明書がインストールされているPCじゃないと使えません」という話になりがちなんですね。卜部:使ったことがなかったから知らなかったです。中川さんは、入社時に最初にそれを作られたんですか?中川:仕組み自体は私が入社した時に作って、現状の保守も私がやっているという感じですね。卜部:会社の規模も大きくなっているけど、アグリ村ってそんなに人数が増えて無いですよね。増えたり減ったりしてるわけでもなくずっと5人くらいで。中川:徐々には増えてはいるんですが、もっと増やしたいですね。卜部:ある程度は完結しているじゃないですか。アグリ村って結構完成されていて、他とインタラクションが少ないイメージなんですが。中川:他の部署との関わりで言うと、CSとは深い関わりがあって、「何かが取れなくなった」というフィードバックはCSと話すことが多いですね。さっきお話した電子証明書と連携するソフトなどの場合、個々の環境に結構依存するので、動かなくなった...という問い合わせは良くあります。卜部:金融機関さんがホームページをリニューアルをすると一気に取れなくなったりとかするんですけど、そういう時にお問い合わせがくるという感じですか?中川:そうですね、まさにその通りです。卜部:今の流れでいくと、基本的にCSに入るお問合せやアグリの失敗がトリガーになって仕事が始まるという感じ?中川:それもあります。それ以外だと、チームで最も追っかけている部分はRedmineを使って管理しています。実装にはScraperを使っていて、ちょっとでも想定していないものに遭遇すると、その時点で例外として落とすようにしていますね。「例外とした時の例外」はある程度まとまってRedmineに起票されていくので、片っ端からそれらを取り除き、例外が出ないよう根本的な問題を直していく...というフローでの運用を日々行っています。卜部:『メトリクス・フィードバック』ってやつですね。普通のWebサイトだと中々そこまでいかないけれど、例外が起きた時にバグトラッカーまで自動的に起票してくれるものが出来てるんですね。これはすごい話ですね。中川:これは、私が入社した頃には創業メンバーで取締役の浅野さんが作っていて、元からあったものなんです。卜部:ということは、その辺はかなり自動化されている?中川:そうですね。卜部:たぶん毎日何件も起票されていくと思うんですけど、毎日何回もリリースがあるという感じですか。中川:そうですね、日々2、3個はあるかなという感じですね。卜部:いいですね、細かくリリースできているというのは。大きくなっていくと徐々に大変になるので。卜部:最近だと、ユーザーから見て大きな変化だったもの...何かありますか?「便利になった」みたいな変化。MFクラウド経費では、ANAやJALの領収書データは最近になって取れるようになりましたよね。惣郷さんと黒田さんが対応してくれて、領収書データを取ってこれるようになりました。サイトによっては領収書のPDFデータとかが提供されているんですが、提供されていないところもあって。ANAとかJALは元々提供されてなくて、HTMLをPDF化して保存しておくという仕組みです。うちの場合だと、画像化する必要がないので普段HTMLを描画していないんです。卜部:金額だけ取れれば良いですからね。いう仕組みがなかった部分に仕組みを入れる必要があったのがハードルではあったんですけど、無事実装することができました。卜部:これは便利ですよね。中川:そうですね、便利だと思います。卜部:これからの仕事のやり方とか、「こうしていきたい」みたいなことはありますか?中川:本当はもっと即時にリリースしたくて、さらに細かい単位でモジュールの入れ替えを出来るようにしたいですね。先程リリースは2、3回とお伝えしましたが、他のリリースによってユーザーが一時的にデータを取れなくなることもあり、それを意識した上でのことなんですよね。Requestをマージすると自動的にリリースまで何もなくノンストップで...というのが理想ではあるんだけど、中々難しいですよね。サーバ自体が再起動してしまうというのは前提としてなくさないといけないので、仕組みから変えなきゃいけないのは大変ですね。卜部:デプロイ自体を順次やるというか、1台止めてリリースして、今度は隣を止めてリリースして、みたいな感じでちょっとずつやっていく。中川:Javaのクラス自体の入れ替えというやり方もありますね。卜部:あー、ClassLoaderで頑張ると。見ていないんですけど、目をつけています。卜部:いいですね、楽しいですね。アグリゲーションはサーバの台数が多いので、その辺ちょっと大変なところもあると思うんですけど、やれると面白いですよね。仰るように台数も1つの問題で、本当はもっと減らしたいです。卜部:リソースを切り詰めればそこまでいけると思いますが、なかなか難しいですよね。組織とか人の話ってどうですか?今後こういう人と働きたいな、みたいな。中川:今見てないところを見てもらえるような人が来てくれると嬉しいですね。うちがリソースが足りなくて手を出していない部分ってすごいたくさんあるので、そういうところをどんどん手伝ってほしいですね。卜部:具体的にはどんなことがあります?中川:サービスレベルで言うと、データ分析とかレコメンデーションとかですね。あとは細かいですけど、人や開発者を支えるフレームワークとかですね。確かに弊社はアカウントアグリゲーションで情報を取っているけれど、取ってきた情報ってユーザーさんにお見せする以外のことに使っていないし、そういう人が来てくれると良いな、と。アグリ村は「ほんわか」している青木:アグリ村の雰囲気についても聞きたいです。中川:アグリ村は楽しいですね。青木:ほんわかしてますよね。隣にいる盛田さんと本部長の内波さんが凄く和やかで、みんなをまとめてくれています。青木:内波さんって和やかですよね。厳しすぎることもなく、ちゃんと言わないといけないところは言ったりするし、好きですね。青木:アグリ村って良く飲みに行っている気がします、チームで。中川:前は新規事業やっている冨山くんと内波さんと良く3人で飲みに行ってましたね。最近だとたまに内波さんと2人で飲みにいくことも多いです。青木:盛田さんは良く飲みにも誘ってくれますよね。中川:盛田さんはそうですね、良く誘ってくれます。卜部:今チームメンバーの人数的にもちょうど誘いやすい人数なのかもしれませんね。これがアグリ村が30人とかになっちゃうと「みんなで飲みに行こう」ってなかなか難しい。中川:そうですね、良い人数かもしれませんね。青木:飲みに行ったらどんな話をされているんですか?卜部:「あのプログラムが難しくて」みたいな感じですか?中川:あんまりそういう話はしないかもしれないですね。いう開発上の夢はランチとかで良く話しているかもしれないです。Worldに来たような感じ卜部:では、この辺りで、中川さん個人のお話を。アグリゲーションって世の中に何社もやっているわけじゃないから、ここに来てから始められたと思うんですが、マネーフォワードに来る前って何をやっておられました?中川:以前は、POSシステムの本部システムの開発をしてました。その辺の分野は色々あって、例えば売上管理とかですね。前職では、売上管理や、マーチャンダイジングといって商品を決めるものやCRM、DWH(データウェアハウス)などいくつか製品を出していました。卜部:CRMまでPOSシステムでやるのはすごいですね。そこでポイントとかクーポンに対応していたり、DWHで売上分析とか。いくつかのところに分かれて作っていたんですが、その辺を行ったり来たりしていた感じですね。卜部:それって、本部にサーバマシンを納入してみたいな感じなんですか。中川:はい、取引先の本部にサーバマシンを納入し、そこにプログラムがあって、店舗からのデータが飛んでくるという。卜部:POS自体は店舗に設置されているやつですよね。