freee CTOが語る技術スタック
システムの巨大化と戦うためにやったこと

Qiita Career Meetup for Server Side Engineers #6/6

2018年7月20日、エンジニア向け情報共有サービスQiitaが主催するイベント「Qiita Career Meetup for Server Side Engineers」が開催されました。Qiita初の採用イベントで、今回のテーマは「サーバーサイド」。インターネットを飛び出して、6社のIT系起業が、自社のサーバーサイドにおける事例や開発環境について紹介します。続いて登場したのは、freee株式会社CTOの横路隆氏。創業から6年が経過した同社の開発環境と、これからの取り組みについて語りました。

freeeのCTOが語る開発の裏側

横路隆氏(以下、横路):みなさん、こんばんは。みなさんが今いらっしゃるのはfreeeのオフィスなんですけども、ここでCTOをやっております横路といいます。

最近、あまりサーバーサイドや具体的な技術の話をする機会がなかったんですが、今日は懇親会も含めて、みなさんといろんな話ができればいいなと思っております。

私は創業時からおりまして、松江出身です。実家がお菓子屋さんをやっています。僕らのメインターゲットとしているテリトリーはスモールビジネスといって、中小企業や個人事業主の方たち向けのビジネスをしているんですが、実家の家族たちを見て、そういった人たちがどのように困っているかを肌で感じていました。

新卒はぜんぜん違う方向に行きまして、ソニーでカメラを作っていました。組み込みをやっていて、代表の佐々木と会って、「やっぱりこの分野でなにかやりたい」ということで2人で始めたのがfreeeになります。

freeeは最近ミッションが変わりまして、「スモールビジネスを、世界の主役に」というミッションでやっております。

みなさん会計のイメージが強いと思いますが、バックオフィスの効率をどれだけ上げてコストを抑えるかというところだけでなく、本当にスモールビジネスが儲かって、世界の主役になっていく。小さいビジネスほどかっこいいと、そういう世界をつくっていくことを目標に、プロダクトで勝負するということをやってます。

プロダクトは会計以外にも提供しており、税務申告ですとか、人事労務ですね。勤怠や、マイナンバー。あとは5分で会社がモバイルからつくれる会社設立みたいなものとか。あと、クレジットカードですね。自分で会社を立ち上げたりするとよくわかるのですが、カードの審査が通らないんですよ。クレジットカードって会社を立ち上げると必要な場面や便利な場面が多くあるのですが、freeeを使っていれば、クレジットカードを誰でもつくれるようにということなど、スモールビジネスを世界の主役にするためにやってます。

今、公称100万事業所、中小企業で言うと休眠ユーザーを除いて250万ぐらいです。あと400万ぐらいの個人事業主の方がいらっしゃるんですが、そのうち100万ぐらいはfreeeを使ったことがあるという形になっています。

会計分野においては。これもいろんな市場調査あるんですけど、会計freeeのシェアは35パーセントで1位になってます。

みなさん知らないかもしれませんがが、中小企業というのは日本の企業のうち、99.7パーセントを占めています。労働人口でいうと6割から7割ぐらいですかね。実際に、労働生産性を比べたデータでは、だいたい2倍以上大企業よりも低いと。同じ時間働いたら、大企業の人のほうが2倍付加価値が付くという状況をなんとかしたいというのが、うちのミッションです。

既にいろいろな企業様にお使いいただいて、バックオフィスにかかる時間が10分の1になってきているという例もあります。

freeeが採用している技術

今日は、だいたい3つぐらいお話しようかなと思っています。1つ目が、起業から6年経っていますので、システムがだいぶ巨大化しています。それとどうやって戦ってきたかという話。

2つ目が、データを使ってどう戦うか、そういったところの基礎技術について。もう1つが、将来に向けて、どういった未来をつくっていくかという3点をお話したいと思います。

最初、僕と佐々木の2人から始まったチームなんですが、今では開発の社員が120~130名ぐらいですね。全社では400~500名ぐらいなんですが、2012年創業なので、けっこう古いです。

AWSがやっと使い物になるかならないかぐらいの時期でした。その当時はサーバーサイドはRailsを使っていて、フロントエンドはBackbone.jsで始まりました。だいたい6年経ってだいぶ入れ替わってきて、フロントエンドはReactとか、Flux Utilsも自分でつくっていたりします。

あと、Babelが出て、けっこう変わってきました。freeeをリリースした当初はCoffeeScriptで書いていました。そういったところが、いくつも変わってきていますね。

最近はコンテナ化や、あとはKubernetesですね。本丸はまだRailsで書いてるんですが、基盤サービスと派生サービスといった小さなサービスはGolangで書いていたり。こういったところはだいぶ大きく変わってきた部分です。

BackboneとCoffeeScript、時代を感じますね。Chefとか、Zabbixももう聞かなくなりましたよね。職人の手で暖かくメンテナンスしてたんですが、今はMackerelを使っています。

Windowsアプリとかもやってるので、Xamarinで書いています。けっこうおもしろいです。WebバックエンドにはGolangを使っています。

あと、最近ストリーミング基盤をつくっているんですが、Javaも復権してきています。Railsに触って5年ぐらい経ってJavaに触ってみると、みんな「え、けっこういい言語になってる」みたいな話をしていて(笑)。いろんなパラダイムを見て結局Javaに戻る、みたいな人もけっこう出ています。

システムの巨大化とどう戦ったか?

インフラはKubernetes、Lambdaですね。あとは先ほど言ったストリーミング基盤の話は、ちょっと後で出てきます。

会計リポジトリです。マイクロサービス化を進めていると言っているんですが、けっこうでかすぎて。だいたい、コントローラーで7、800クラス。エンドポイントでも1,000とか2,000以上あり、JavaScriptが70万行弱で、けっこう大きくなってきています。

もともとサービス分割を心がけてはいたもの、1個1個のサービスがでかくなりすぎて、それを分割していくということを、今やっているところです。

Kubernetes上でやっています。ここは他の企業さんとあまり変わらないかもしれませんが、弊社はAWS上でKubernetes動かしていて、AWSコンテナヒーローという、世界で5人しかいないメンバーがうちに1人所属しています。ゴリゴリとKubernetes勉強会をみんなでしっかりやっているのでそういったキャッチアップをやりたい人は、ぜひ、freeeも楽しいかなと思います。

現在、とにかくいろんなところが大きくなっているんですが、テスト遅すぎ問題が発生しています。

もちろんパラレルテストもやっているんですが、業務システムって、全部モックすればいいというものではなく、マスタデータの掛け合わせで結果が出るみたいなことがあるので、シードデータが絶対必要なんですが、シードデータを突っ込むだけで1分かかるというところで、なんとか早くしていくみたいなことをやっています。

本当に、日々改善。社内にパフォーマンスチューニングの専用の部屋があり、有志が入って「じゃあ、次、俺これやる」みたいなかたちで早くしていったり。そういったカルチャーがあるかなと思います。

日々の課題を技術で解決する

以上が日々のWeb開発についてなんですが、それ以外にも、冒頭にお話していたような課題を技術で解決するということにも、いろいろチャレンジしています。

とくに、なぜバックオフィス作業が必要なのかというところにまず立ち戻るんですが、ヒト・モノ・カネというビジネスリソースを見えるようにしたいんですよ。見えるようにしないと、次にどんな手を打っていいかわからないし、どこにリスクがあるのかわかりません。

スモールビジネスは、そこ(ヒト・モノ・カネ)を見ることにすごくコストがかかっていて、それができないのが一番の問題です。そんなお金の流れを知るための技術について、いろいろな取り組みをしてきました。

まずは収集ですね。もちろん紙でやってらっしゃる方もいますが、最近はビジネスでも買い物をするとオンライン上に明細が残るので、それを拾ってきて、内部で利用するというのが1つあります。

そして、拾ってきたものをデータにします。OCR、これは外のエンジンを使ったり、中でも研究開発をしております。他には、自動仕訳エンジンですね。

あと、最近入力したものをチェックするという作業ですね。これは、今まで人がかなり時間をかけてやっていたんですが、これもチェックリストを自動化したり、「これは間違っているんじゃないの?」みたいなもの勝手に推薦したりだとか、こういったところで機械学習を使ったりということをやっています。

あとはレポートです。きれいに自動で見せてあげる、ということをやっています。

人工知能学会での発表も

次にAPIですね。今まさに取り組んでいるんですが、今はだいたい3,600ぐらいの外部のAPIと連携してます。

あと、学会発表ですね、教育研究もやっています。これは突合せ作業です。請求書を発行して、それに対して入金があるんですが、それをマッチングさせています。今まではルールベースで7割ぐらいだったんですが、機械学習ベースにすると97パーセントぐらいになったということを人工知能学会で発表しています。

あとは、先ほどの帳簿の内容からリアルタイムに異常を検知しています。だいたいエンタープライズシステムってバッチなんですよね。とりあえず入れておいて、分析はバッチみたいな。ですが、やはり入れた瞬間に間違っているのかどうか知りたい、またはなんらかのインサイトをリアルタイムに得たいということがあると思います。

そうしたお金の流れや人の流れをリアルタイム処理を、ストリーミング基盤で解決しようとしています。ここを、Kinesis Streamsや、AWS上のいろいろなものを使うと簡単にできるので、こういったところとか。

あとはDynamoDBやRedisで、インデックスの持ち方を工夫して、何十万件・何百万件集計したものを、いかに事前に計算しておいて、20ミリ秒で返すとか、そういったところをチャレンジしています。

今(画面に)出ているのは、税理士さんが実際に見ている帳簿です。「ここ、数字間違ってんじゃないの?」みたいなことを税理士さんに推薦するみたいな機能を出しています。税理士さん向けの機能などもやってます。

freeeのこれから

では、今後何やっていくのかというところです。この先10年でやりたいことなんですけども、スモールビジネスが強いということなんですが、本当に、なにかやりたいことがあるという人は、自分でビジネスを簡単にできるような世の中になっていくだろうと思います。それをfreeeがつくっていくということをすごく考えていて、こういったプラットフォームをつくっていきます。

マイルストーンなんですが、1つはお金の流れをとにかく簡単に見えるようにすること。2つ目は、誰と誰が取引してるのか、スモールビジネスの中ではすごくよくわかるわけですね。それから信用が可視化されて、大企業並みの好条件でみんな取引できるようになって。資金調達も今までは銀行の窓口に行って、1ヶ月以上待たないとお金が借りられなかったのが、一瞬で借りられるようになったり。

あとは、業務自体、自動執行できるところがけっこうあるんじゃないかと思っています。こういったところで、自動で業務をやってくれるエージェントを開発して、どんどんリリースしていきたいなと思っています。

すこし駆け足になってしまいましたが、freeeは最初は個人事業主向けの会計ソフトとしてちっちゃくリリースしたんですけど、この6年で巨大化したシステムがあります。そのシステムと、この先10年戦わないといけないので、しっかりキャッチアップしたり、システムのリプレイスをやっています。

もう1つは、中小ビジネスの課題は明確にあるので、そのためにしっかり技術投資や研究開発をやっているということが2つ目。

3つ目は、信用の可視化と業務の自動執行ですね。ここは今まさに取り組んでいるところです。金融機関にない強みがあります。

税金を納めるためには、中小企業はすべての現預金をシステムに入れておく必要があります。そういったことは、金融機関さんではなかなか取り得ないところなので、そういった情報はすごく重要です。

あとは税理士さんをプラットフォームに抱えているので、彼らが実際にデータを修正したりとか入れてくれて、それがリアルな教師データとして、残っていくということが、僕らの1つ強みです。

こういったところを使って、この10年でスモールビジネスが大企業にも勝るビジネスをやっていく、そんな世の中を技術でつくっていきます。このビジョンに共感される方は、ぜひ一度遊びに来てください。……あ、来てるか(笑)。

(会場笑)

この後も、ぜひ話しかけていただければと思います。懇親会でみなさんとお話できることを楽しみにしています。今日はありがとうございました。

(会場拍手)

Occurred on , Published at

Qiita Career Meetup

Qiita Career Meetupに関するログをまとめています。コミュニティをフォローすることで、Qiita Career Meetupに関する新着ログが公開された際に、通知を受け取ることができます。

スピーカーをフォロー

関連タグ

人気ログ

人気スピーカー

人気コミュニティ

ピックアップ

編集部のオススメ

ログミーTechをフォローして最新情報をチェックしよう!

人気ログ

人気スピーカー

人気コミュニティ

ピックアップ

編集部のオススメ

そのイベント、ログしないなんて
もったいない!
苦労して企画や集客したイベント「その場限り」になっていませんか?