皆さん、こんにちは!
クラビスでSTREAMEDのカスタマーサクセスをしている近江です。今回は2月よりCTOに就任した古濱 有佑さんに、クラビスの開発組織について語っていただきます!
今回の記事はインタビュー形式ではなく、古濱さんにバトンタッチをしてみっちり書いていただきました。
「何を開発をしているのか?」「どういった課題をもっているのか」といった切り口でエンジニアの皆さんに向けて情報を発信したいと思います。
ぜひ最後までご覧ください!
古濱 有佑(ふるはま ゆうすけ) 神奈川県出身
2016年にマネーフォワードにインターンとしてジョイン、その後2018年にエンジニアとして新卒入社。
2021年にクラビスに出向し、新規事業の開発リーダーとして従事。
その後、2022年2月クラビスのCTOに就任。
バトンを受け取りました、古濱です!今回はクラビスの開発組織について、その体制とチームごとに現在抱えている課題について私から発信したいと思います。今回の記事ではSTREAMEDを支えるアプリケーションチームにフォーカスして紹介を行おうと思っています。
私の自己紹介としてこれまでの経歴をここで説明すると長くなってしまうので、是非noteをご覧いただければと思っております。現在はクラビスのCTOとして事業計画から開発計画の策定、開発計画の実行、開発組織の改善活動、採用活動、新規プロダクトの開発責任者といった業務を行っています。
私自身が自覚しているCTOとしての役割は、クラビスの持っている資産・価値(得意技と言ってもいいでしょう)を使って様々な形でユーザーに価値を届けていくことの実現です。クラビスのビジネスはソフトウェアと切り離せない部分が多く、かつ開発によってビジネスをより加速していけるポテンシャルがあると考えています。このポテンシャルの発現に注力したいなと考えています。
クラビスの開発チームについて
さて、課題の紹介を始める前にまず今のクラビスの開発を支える開発チームについてご紹介します。
クラビスで開発しているサービスやサービスを起点とするチームの説明は鈴木の記事で紹介している通りです。私からはもう少し解像度を上げた各チームの特色について語っていきたいと思います。
クラビスには現在
- STREAMEDチーム
- データ化基盤チーム
- AIチーム
- Invoiceチーム
の4つの開発チームが存在し、これらのチームが管理するサービスは以下の図のように連携しています。
STREAMEDチームはその名の通り、クラビス唯一のサービスであるSTREAMEDを開発しています。STREAMEDはユーザーに証憑画像をアップロードしていただき、それを仕訳という会計向けの形式にデータ化してお返しするシンプルなサービスです。シンプルなコア機能を提供しているだけにユーザーがどれだけ簡単にアップロードを行えるかを重視していて、Webアプリだけでなくスマートフォン向けのアプリやWindows向け端末向けアプリなども存在しています。STREAMEDチームはそれらすべてを開発・運用する技術的守備範囲の広いチームです。
次にデータ化基盤チームです。データ化基盤チームはもともとDockチームと呼ばれていましたが、2022年2月に改名しました。AI-OCRとオペレータによる入力の双方を活用してデータ化を行うシステムを担っています。より詳細にお伝えすると、このシステムはSTREAMEDのユーザーが直接触るシステムではなく、AI-OCRのAPIを呼び出す機能やオペレータの入力のための管理画面などの機能を持ったシステムです。
STREAMEDでも、(このあと登場する)新たに開発を進めているサービスでも、データ化機能の提供のためにこのシステムを利用しています。正にクラビスの心臓部を担っているチームです。
AIチームはデータ化基盤チームの説明で登場したデータ化工程をAIによって効率化しているチームです。
STREAMEDではクラビス外部の汎用的なAI-OCRサービスを利用している箇所もありますが、同時に自社で開発したAI-OCRも活用しています。データ化と一口に言っても実際にはいくつかの工程に分かれていて、どの工程に対してどういったアプローチが存在するかの仮説構築から検証、そしてサービスへの組み込みのためのAPI提供と運用までを一貫して行うチームになっています。
そして私が主に関わっているのは、新規事業開発を担うInvoiceチームです。このチームはクラビスで一番最近に立ち上げたチームです。
クラビスではもともとSTREAMEDという唯一のサービスを通じて紙の記帳・データ化を効率化してきました。その上で、今後は記帳・データ化に留まらずその前後の業務も含めたバックオフィス業務全体を効率化していきたいと考えています。
その第一歩となるサービスを作っているのがこのチームです。現在は請求書の受取業務に特化し業務効率化を行っていくサービスを開発しています。
上記の組織体制図の説明をすると、現在クラビスは関わる事業・責務によって大きく4つの部に分かれており、経営管理部を除く3つの部に4つの開発チームが所属しています。これによって職種横断的に責務を同じくするチーム同士がコミュニケーションを取りやすいようにしています。また組織図とは別に開発チーム同士は密にコミュニケーションを取る文化があって、これによって部署をまたいだシステム連携を柔軟に実現しています。
開発において抱えている課題
こうした4つの開発チームがあるクラビスの抱える課題について、今回は2つの開発チームにスポットを当ててご紹介します。
STREAMEDチームの課題
プロダクトとしてのSTREAMEDの進化の歴史を見ていくと、コア機能であるデータ化部分の改善とデータ化前後のユーザー体験の向上という2つに大きく分けて見ることができると考えています。
前者のデータ化部分の改善としては新しい証憑への対応が例として挙げられます。こちらに関してはデータ化基盤チームでメンテしているシステムが主に責任を担っている部分になってくるため、データ化基盤チームのパートで詳しく後述しようと思います。
後者のデータ化前後のユーザー体験の向上としては証憑アップロードの経路拡充、つまりWebブラウザからのアップロード、Windowsアプリを提供することによるスキャナーからの直接アップロード、スマートフォンのアプリからのアップロードへの対応が例として挙げられます。
言い換えると、お客様のSTREAMED利用シーンにあわせたアップロード方法を提供することで、なるべく小さい負荷でSTREAMEDを業務に組み込んでいただくことを意図して進化してきました。
こうした背景からSTREAMEDは現在Web、Windowsアプリ、スマートフォンという3つのプラットフォームに対応していますが、ここの部分のメンテコストやプラットフォームの進化への追従という点がチームの課題の1つとなっています。
同じ機能のままプラットフォームの進化に追従していくだけでなく、プロダクトの進化のために各プラットフォームにおいて今まで以上に機能・価値を提供していくことも考えていますが、これを低い開発・運用コストで行っていくことにチャレンジしていきたいと考えています。
近年Flutterに代表される有用なマルチプラットフォーム技術が普及し始めており、こうした技術が我々のやりたいことにあっているのかの検証を含めて活用できないか考えたいと思っています。
データ化基盤チームの課題
冒頭紹介してきたようにデータ化基盤チームが開発・運用してきたデータ化システムは、STREAMEDを裏方としてずっと支えてきました。同時に実はSTREAMED以外のサービスにおいてもデータ化機能として裏側にクラビスのデータ化システムが入って支えているといった連携部分があります。
「ユーザーの代わりに適切にデータ化をする」というシンプルかつ強力な提供価値と責任範囲を持っているため、ユーザーの皆様からの要望やビジネス的な要求を受けやすいシステム、とも言えます。
新しいことへの要望と同時に既存機能の改善も欠かせません。
STREAMEDのユーザー数やアップロードされる証憑数は有り難いことに毎年継続的に増え続けています。年々増加するデータ化ニーズを同じクオリティ・価格でユーザーに提供し、かつコストは一定に抑えるため、データ化基盤チームでは入力業務を行っているオペレータの方々の作業の生産性向上を技術的な側面で支え続けるという使命を持っています。
現状の課題の1つ目は、使用しているフレームワークが新しくないことです。データ化基盤となるシステムは上述の通りでビジネス的にもやりたいことが多く、また毎年一定程度の改善も求められてきました。これにより非機能面の改善の優先度が上がりづらい側面があり、結果としてFuelPHPというフレームワークを現在も利用しています。
フレームワークは決して新しいものの方が優れているといったシンプルなものではないと考えていますが、Webアプリケーションを取り巻く環境が大きく変化している近年ではその変化に追従して進化ができているフレームワークのほうが、Webを支える環境の新しいメリットを享受しやすいはずです。これが結果的に開発生産性やシステムとしての安全性・堅牢性・柔軟性に繋がっていくと認識しています。
2つ目は、要求されるデータ化の処理量が増えるにつれて、現状の仕組みのままではスケールにいずれ限界がでてくることが予想されていることです。
クラビスが提供するサービスは常に一定のデータ化要求が来るようなものではなく、年次や月次でピークとそうでない時期があるといった季節指数の影響をうけるサービスです。ピークとそれ以外でのデータ化要求件数の比は一定であっても、全体が増えることでピークとそれ以外の差の絶対数はどんどん大きくなっていきます。
今後はこうした局所的なピークに柔軟に、かつ低コストで対応出来るようシステムを進化させていく必要に迫られています。
この問題の解決のために大きく2つのアプローチを考えています。
1つめは”システムの要件は今のものを維持する”という前提で、システムのリアーキテクチャを通した主にインフラ面からの改善です。
もう1つはシステムの要件からの見直し、より具体的にはオペレータの入力によって実現している機能のシステム化(= AI化)です。オペレータ入力部分はまだAI化の余地がいくつも残っていると認識しており、その実現によってシステム全体で見たときの負荷傾向・ボトルネックも今とは大きく変わるだろうという感覚があります。ただし人間が関わる工程を完全になくすことは難しく、今後も一定のオペレータ入力工程が残り続けるのだろうなという予想もしています。
終わりに
今回の記事ではクラビスの現行の開発チームの紹介、STREAMEDチームとデータ化基盤チームに焦点を当て今抱えている課題の紹介を行いました。
最後にこの記事を読んでくださっている皆さんに向けてメッセージです!
クラビスではユーザーの抱える課題に対して最適な方法でサービスを提供することを重視した開発を行っています。ユーザーのことを考えつつも同時にマルチプラットフォームの問題やスケーラビリティの問題など単体で技術課題として見ても面白い課題があるのも特徴的な点だと考えています。
「ユーザー課題を解決し、サービスを改善し、技術課題と向き合って解決していく」この三拍子揃った環境で一緒に開発を進めてくれる仲間を募集しています。
是非一度お話しをして、あなたのやりたいことが実現できる環境かどうか確かめてくださると嬉しいです!
いかがでしたでしょうか?
2月にCTOとして就任した古濱さんに開発組織についてみっちり発信していただきました。
開発サイド・ビジネスサイドそれぞれの業務領域は違いますが、クラビスでは全体で業務内容の共有時間(TaskshareやAllhands)を持ち、各チーム・組織としてどういった取り組みをしているのか理解を深めています。今後も両サイド共にパワーアップしてユーザーの皆様に嬉しい体験を届けていきたいと思います。
クラビスでは一緒に未来を創造していくメンバーを募集しています。ご興味持っていただいた方は、カジュアル面談や選考へのご応募をお待ちしております!