エンジニアHubPowered by エン転職

若手Webエンジニアのための情報メディア

難プロジェクトに若手が挑む! 3000超の金融機関からデータを収集する「freee」同期機能の舞台裏

「若手エンジニア、どんな活躍してますか?」の第9回目は、『クラウド会計ソフト freee』などを手がけるfreeeです。「それ、マジで価値ある?」と問いかけ続ける、超課題解決型企業の同社で、若手エンジニアはどのような成長曲線を描くのでしょうか。

キーボードを叩き、叩き、コードを書く。ただただ、テッキーに。
エンジニアとしてのキャリアを積んでいく上での一つの方法論でしょう。しかし、「それだけではない」とばかりに、エンジニアにビジネス全域へのコミットメントを求める企業があります。『クラウド会計ソフト freee』に代表される、スモールビジネスを支援するクラウドソフトウェアを提供する、freeeです。

エンジニアもビジネスの上流から関わるべき、というカルチャーがある同社には、なるほど、「ちょっと変わったエンジニア」が集まっています。

1年強のインターン期間を経て2017年度に新卒入社した長幡陽太(ながはた・ようた)さん、先輩エンジニアの有馬慶(ありま・けい)さんに話を聞くと、freeeならではのエンジニアの成長曲線、そして課題解決型の企業文化が浮かび上がってきます。

あなたの仕事、マジで価値ありますか?

──自己紹介をお願いできますか?

有馬 2016年3月に入社しました。前職はWeb系企業でアプリケーション基盤寄りの仕事をしていたのですが、社会的課題を解決しようとするfreeeのミッションに惹かれて転職しました。現職でも同様にアプリケーション開発エンジニアとして勤務しております。

有馬慶さん

長幡 freeeとの関わりは、2015年9月に3日間の短期インターンとして来たときが最初です。当時はコテンパンにされて(笑)。ただただ打ちのめされた印象が残っています。その後、2015年11月から、今度は長期インターンを始めて、大学を卒業する2017年3月までインターンとして働いてから、新卒入社したんです。

長幡陽太さん

──実質的な社歴は、実は長幡さんの方が長い?

有馬 実はそうなんです(笑)。

──有馬さんは、freeeに入ってみて企業カルチャーについてどう感じました?

有馬 入社時の面接で「どんな社員が多いですか?」と聞いたところ、「テンションが高いエンジニアが多い」と言われました。エンジニアといえば、黙々とPCに向き合っている印象ですが、freeeはいい意味でにぎやかな職場ですね。扱っているプロダクトが会計ソフトで少し堅い印象があるぶん、職場の雰囲気は楽しくやろうと工夫しています。例えばチームリーダーが「パイセン」や「ジャーマネ」と呼ばれていたりします。

──オフィスからして開放的で明るい雰囲気がありますね。

有馬 もうひとつ特徴があって、ビジネスの最上流からエンジニアが関わります。何らかの課題がビジネス部門で定義されて、その解決がエンジニアに求められる、という流れではありません。どういった課題があって、それをどのように解決するのか、という大本の議論から参加します。

「その課題は正しいのか?」「何を作るのか?」「何のために作るのか?」「効果は出たか?」「課題は解決されたか?」という検証にもエンジニアが参加して、考えながらモノを作っています。ユーザーにとって本当に価値があるのか、を徹底的に考えるんです。我々は「マジで価値がある開発」から転じて、「マジ価値開発」と呼んでいます。

「マジ価値開発」の意味合いに関してはfreeeのCEOである佐々木大輔氏の記事に詳細がある。また、「マジ価値」とは開発だけでなく、同社全体を貫く企業哲学だ。同社ではその他、「理想ドリブン」、「あえて、共有する」などの5つの価値基準を掲げ、職制を問わず共有し、一体感のある組織作りを行っている。同社の価値基準に関してはコチラに詳しい。

インターンでコテンパンにされて見つけた「成長の機会」

──長幡さんは元々プログラミングに興味があって取り組んでいて、インターンに参加した形ですね。

長幡 プログラミングを本格的に始めたのは、大学に入ってから半年ほどたってからでした。最初は統計に関心を持ち、そこからプログラムに関心が広がっていったんです。2013〜2014年頃にビッグデータやデータサイエンティストという言葉がバズっていて、これは面白そうだと。

特に大きなデータセットを扱うにはプログラミングが必要で、RやPythonから入っていきました。大学のサークルでWebサービスを作っていて、そこではクローラーを書いたりスクレイパーを書いたりしていました。

エンジニアとしてのインターンはfreeeが最初でした。その頃は、学んだことを大学のサークルでのチーム開発のやり方に還元することを考えていたんです。サークルでは、みんなGitを我流で使っていて、例えばコミットメッセージも書き方にバラツキがあったりしたので(笑)。そこで「コミットメッセージはこう書こう」といったように、freeeで得た知識を共有しようと試みたりしていましたね。

──その後の長期インターンにはどんな経緯で?

長幡 短期インターンの後も、何回か面談の機会をもらっていて、当時のメンターの方に「インターンを探しているんですよ」と言ったら「じゃあ、うちにまた来ればいいよ」と誘ってもらって。

長期インターンの時は、最初の短期インターンでコテンパンにされた記憶があるので、最初はお腹が痛かったですね(笑)。それでも、ギャップを乗り越えて成長ができそうだという感触があって、それでまたチャレンジしようと。

──インターンながら、かなりの経験ができるのですね。

長幡 そうですね。インターン期間で一番打ちのめされたのは、長期インターンに入って半年ほど経ったときです。それまで社内用サービスの改善をやっていましたが、外向けのプロダクトに触らせてもらえるようになって。そこで与えられた最初のタスクが“激重”で、なおかつ会計領域の知識もキャッチアップしながらだったので、本当に大変でしたね。

見積もりが甘く想定の2〜3倍の時間がかかってしまって、なんとか仕上げても、Pull Requestへのコメントが170件とかついてしまい……。レビュワーの人に対して「すみません」と思いながらやっていました。

そういえば、今年(2017年)の1月も、卒論とサービスの機能リリースがかぶって、またお腹が痛くなってしまいました(笑)。

有馬 インターンをお客様扱いしているばかりでは、印象に残らないのかな、と考えて、あえて重めのタスクをお願いしていた側面はありますね。もちろん、freeeのプロダクトに触れてほしいという意図もあります。

──厳しいと思いつつも、他の企業に行かず、freeeへの入社を決めた、と。

長幡 そうですね。なりたい自分と今の自分にギャップがあればあるほど、それを乗り越えたら、成長していると実感できると思うんです。freeeのインターンで感じた実力差は、まさに成長のためのギャップとして感じることができたので。

──なるほど。freeeのカルチャーへの共感などはあったのでしょうか。

長幡 そうですね。freeeの事業が課題解決型な部分にはすごく共感できましたね。自分自身も課題解決型の人間と自認していますので(笑)。

もうひとつ、お客様に価値を届けるためにセールスもサポートも同じ方向を向いて仕事をします。そういう雰囲気を昨年の2〜3月の確定申告の繁忙期に見て、この会社は一致団結していてすごくいいなと感じたんです。

──確定申告の時期は、エンジニアにとっても繁忙期なんですね。

長幡 ユーザーの方のアクセスが集中する時期ですから、サポートの人に業務が集中します。そして、サポートだけで解決できない問題はエンジニアにもヒアリングがきます。そこで協力する体制を整えたり、QA(品質保証)チームがサポートの近くにいたりと、全社で支えるんだぞという勢いがあります。

──他に、入社の決め手になった要素はあるのでしょうか。

長幡 成長機会がありそう、と感じたことも大きいです。それに新卒でも古参でも関係なく裁量を持たせてくれるところも気に入っています。

freeeはレビュー体制の徹底や細かい権限管理によって、インターンでも最大限の裁量を持って仕事ができたんです。新卒として入社した後も、どんどん成長できるイメージが湧いてきました。インターン時代を振り返ると、freeeは裁量を与えてくれる点でずばぬけていたのが印象に残っています。

難プロジェクト「アカウントアグリゲーション」に挑む

──お二人が一緒のチームで働くようになったのは?

長幡 2017年1月にチームに参加してからです。僕は会社では「たいよう」と呼ばれているのですが、「たいようには次にあのチームに行ってもらおうと思っている」と言われ。その時点ですでに社内で話題になっていたチームでした。

──お二人が今のチームで取り組んでいる仕事について教えてください。

有馬 私たちは同期機能と呼んでいるのですが、銀行口座からデータを集めてくる「アカウントアグリゲーションエンジン」のリプレース開発をやっています。

アカウントアグリゲーションエンジンとは、お客様が日々使っている金融機関のログイン情報を預かって、明細のデータを取得して、それを集めてfreeeで扱えるデータにして記帳していく仕組みです。

2016年6月頃に障害が起きて、アカウントアグリゲーションエンジンの仕組みを見直さないといけないという結論になりました。それを作り直すプロジェクトが始まったのですが、なかなか大変で……。「火事を消してみたい人、求む」という社内公募があって、私はバックエンドの経験もあったので、そこに応募してチームに参加した形です。

──それは難しい課題が出てきそうですね。

有馬 そうですね。そもそも、金融機関のWebサイトからスクレイピングで取得したデータが不安定だった、という課題がありました。例えばDOMの要素が変わることもあります。画面上の情報を取得する場合、例えば各ページの1行目は何の情報なのか、idなどの情報がないので判別が難しく、重複を排除してデータを取り込むのが大変という状況でした。そこで抽象化したレイヤーのようなものを作り「正しく記帳するにはどうするか」を定義する必要がありました。

──freeeは約3,000の金融機関に対応していますが、ほとんどはAPIがないのでWebサイトのスクレイピングで情報を取得するということですね。3,000種類のWebサイトから共通のデータ形式を導くのは高度な取り組みが必要になるのでは。

有馬 そこで、アカウントアグリゲーションとは何をするものなのか、ステップを分けて考えていきます。データを漏れなく集めることを責務とするステップ。集めたデータをパースして、オリジナルのデータを共通データフォーマットに抽出するステップ。収集したデータが正しく取れているかをバリデーションするステップ。そういったいくつかのステップを定義して、それぞれの責務を決めて、バラツキが出ないように設計していきます。

──そういう設計はどんな形で構築していくのでしょうか。何らかのアーキテクトが主導する形なのか、それともチームで議論する形なのでしょうか。

有馬 チームでディスカッションしながらやっていくイメージが強いですね。行き着くところは、いかに疎結合にするか、です。機能を組み合わせることで、大きな仕事を実現する、という原理原則に従うのが良い設計だと思います。

長幡 僕もそういった場で、しっかり貢献できるようになることが、今の目標の一つです。現状では、設計の根幹にまつわるような話は、インプットし、理解するのが精一杯ですが、提案できるようになれたらいいなと。

──やはり、難易度が高いプロジェクトだけに、面食らう部分はありますか?

長幡 それまでの仕事ではフレームワークにのっとった開発をメインでしてきましたが、今はオールスクラッチで書いています。その分、アーキテクチャやデザインパターンを意識する局面が多くなりましたね。そこは今、自分には足りないと思っている部分です。

──いま使っているプログラミング言語は?

長幡 GoとRubyです。Goは、前のチームのときに触っていて。それまで触っていたのがみんなLL(軽量言語)だったので、そこで初めて低レイヤーのソフトウェアに触ったのですが、Goはいいなと思いました。それも今のチームに移った背景のひとつです。

長幡さんのGoとの苦闘が記されたAdvent Calendar

──GoとRubyはどんな使い分けをしていますか?

有馬 アカウントアグリゲーションエンジンは、それまではモノリシック(一枚岩)の大きなサービスの一機能でしたが、それを引きはがしています。そこで金融機関ごとにスクレイピングで情報を取りに行く部分はRubyで、そこから先のデータを共通のフォーマットで取り扱う部分についてはGoを使っています。

──1人のエンジニアが複数のプログラミング言語を扱う話題が最近増えたように思います。

長幡 そうなんですか? そういうものだと思っていました。

有馬 以前は、会社ごとに使うプログラミング言語を固定している場合が多かった印象もありますね。今はみんなチームやシステムの性質に応じて、複数の言語を柔軟に組み合わせて使っていることが多いと思います。

早く一人前のエンジニアに。そしてその先に

──有馬さんから見た長幡さんはどんな新人ですか?

有馬 インターン期間がけっこう長くて、バリバリやってきた人という印象があったのですが、今のチームで仕事をするときには緊張ぎみで、不安があるのかな、と思っていました。それでも、難しい課題にもへこたれず、ちゃんと咀しゃくして整理して進めていて、分析する力があるメンバーです。仕事の進め方を自分なりに改善しながら、ひとつひとつの物事に食らいついていく、そのたびに自信を持っていくタイプではないかと思います。

──長幡さんの現時点での自己評価はいかがですか?

長幡 最初のうちは、周囲のエンジニアと自分を比べてしまって「できないな」という部分が強く見えてしまっていました。ただ、成長できる機会を捉えていくことは意識的にやっているつもりです。

──会社として若いエンジニアをどのようにサポートしているのでしょうか。

有馬 新卒エンジニアを受け入れている以上、最速での成長機会を提供したいと考えています。短いスパンで1 on 1の面談を設定して、技術面だけでなく、仕事の進め方のような部分までアドバイスします。

Pull Requestへのコメント出しはもちろん、私からPull Requestを出して、自分のコードを見せて学んでもらうように心がけています。個人的に大事にしているのは、「仕事の意味」を考えてもらうことです。この仕事には、この作業には、このコードには、どんな意味があるのか。仕事の背景にはどのような課題があるのかを考えてもらいたい。

──ともすれば、エンジニアは技術だけを磨けばいい、と考えてしまいがちですが、freeeの場合は、鍛えるのは技術だけではないのですね。

有馬 高い技術を持ちつつ、それを使ってどういった価値を届けるのか、といった視野をもったエンジニアがfreeeにはフィットすると思います。

──長幡さんは、どのように成長していきたいと考えていますか。

長幡 まずは、一人前のエンジニアになることが先です。今は技術面の向上にリソースを割いていますが、将来的には人と人の関わりをファシリテートしていきたいという思いがあります。組織作りを工夫していくのが自分は好きだと感じていますので。エンジニアチームの活性化に寄与できたらうれしいですね。

──まさにfreeeの「マジで価値ある」を体現する人材ですね。

長幡 まだ、体現できているとは実感できませんが(笑)。しかし、「マジで価値ある」優秀な人たちに囲まれて仕事ができています。埋めるべきギャップの数だけ楽しめる環境です。

──新卒ながら、そういったマインドが持てるからこそ、freeeにフィットしているのだと強く感じます。今回は、どうもありがとうございました。

取材:星暁雄/写真:小高雅也

【修正履歴】2017年7月31日 - タイトルを修正いたしました。

連載バックナンバー

employment.en-japan.com