見出し画像

アルゴリズム改善が事業改善に直結する職場。数理最適化を担うエンジニアに仕事の醍醐味を聞く

ファンファーレ株式会社は、持続可能な社会の実現に貢献するエッセンシャルテック企業です。私たちが提供するSaaS事業「配車頭(ハイシャガシラ)*」では、廃棄物回収の配車計画を自動作成するために、数理最適化という手法を用いています。これは現実の問題を数理モデルとして定義し、制約条件を満たしながら、コストの最小化や利益の最大化を実現する値を求める手法のことです。

「『配車頭』における数理最適化の業務は、アルゴリズムや競技プログラミングなどに興味のある人にとって魅力的」だと、アルゴリズムエンジニア・CTOの矢部顕大(写真右)とアルゴリズムエンジニア・バックエンドエンジニアの松田康太郎(写真左)は述べます。

矢部は東京大学大学院を修了後、NECのデータサイエンス研究所で数理最適化理論の研究と最適化技術に基づく新規事業開拓を経験。2020年3月にファンファーレに入社しました。また、松田は大学院修士課程修了後にNTT情報ネットワーク総合研究所に勤務して数理最適化の研究に携わった後、2022年7月にファンファーレに入社。各種プログラミングコンテストで上位入賞するほどの“競プロガチ勢”でもあります。

そんな数理最適化の専門家である2人が語る、ファンファーレの仕事のやりがいとは。

*…「配車頭」は、産業廃棄物業界に特化した配車表作成サービスです。産業廃棄物の収集運搬のための配車計画を自動作成することで、今いる乗務員でより多くの配車を実現し、複雑で手間だった配車計画作成に必要な作業時間の大幅な短縮や、労働負荷の軽減を実現します。

業界に特化したアルゴリズムで、課題を解決する

――お二人が担当されている、数理最適化関連の機能の概要を教えてください。

矢部:私たちは産業廃棄物業界の配車業務を効率化する「配車頭」というVertical SaaSを提供しています。産業廃棄物業界では、排出事業者が回収依頼を出すタイミングが不定期であるため、収集運搬事業者はその日の依頼に応じて配車計画を練らなければなりません。

これはかなり大変な業務で、人の手で作業していたら配車計画の作成に何時間もかかるうえに、追加の受注や乗務員の急病などで収集運搬の条件が少し変われば作り直しになってしまいます。そうした課題を解決するのが「配車頭」で、ボタンを押すだけで廃棄物回収の配車計画を数分ほどで自動作成できるサービスです。この処理の裏側で、数理最適化が用いられています。

――数時間もかかるとは大変な労力ですね。なぜ、それほど時間がかかるのでしょうか?

矢部:さまざまな条件をふまえて、配車計画を作らなければならないためです。まず、産業廃棄物を回収する時間帯の指定があります。排出事業者は収集運搬事業者に対して「この時間帯に回収に来てください」と指定するため、それに従って作業しなければなりません。また、産業廃棄物の種類や量、収集運搬事業者が所有するトラックの大きさなどに応じて、配車依頼の受注可否が変動するのも特徴です。それに加えて、複数の現場を回って廃棄物を一緒に荷台に載せて処分場に運ぶ、ルート回収という仕組みも考慮する必要があります。

こうした数多くの制約をふまえてサービスを提供するためには、業務に特化したアルゴリズムを組まなければ使いものになりません。この産業廃棄物業界の課題をCEOの近藤(志人)さんから最初に聞いたときに「かなり難しい数理最適化だが、私ならばなんとか解けるかもしれない」と思い、入社を決めました。数理最適化の高度なスキルだけではなく、その技術を新規事業として立ち上げる力が求められる。私の前職までの経験がプラスに働くと考えました。

混合整数線形計画法を用いたコアアルゴリズム

――「配車頭」のコアアルゴリズムをどのように立ち上げたのかを教えてください。

矢部:産業廃棄物業界のように複雑な前提条件のある問題を解く場合には、「完全に独自のアルゴリズムを構築する」か「ある程度、汎用的な枠組みに落とし込む」かの2つが有力な選択肢です。

仕様が決まった問題だけを解けばいいならば、その用途に特化した独自アルゴリズムを作ることで事足ります。ですが、私たちの事業では顧客ごとに配車計画の前提条件が多種多様であり、業界の制度や構造も日々変化していきます。特定業務だけに特化した独自アルゴリズムでは、こうした変化に対応しきれないと考えました。

そこで、私たちが採用したのは混合整数線形計画法という汎用的な枠組みに落とし込む方法です。この手法は、新たな業務制約が発覚したときに、制約式の追加という形で実装を拡張しやすいという利点があります。とはいえ、当然ながら「混合整数線形計画法に落とし込めばそれで終わり」というほど簡単な仕事ではなく、常にロジックの改善を続けなければなりません。

たとえば考慮しなければならない要素として「結果の正確性と処理時間とのトレードオフ」があります。というのも、ありとあらゆる行動パターンを考慮した数理モデルを定義すると、厳密な答えを出せる一方で、計算にかかる時間が莫大になってしまうんです。

処理高速化のためにはある程度の“枝刈り”が必要になります。要するに、業務フローを理解したうえで「複数の隣接した排出事業場から回収依頼がある場合に、それらを一緒にルート化回収しないことは、たとえそれが全体最適であろうともユーザーの違和感が強くありえないだろう」といったことを考えて、処理の分岐のパターンを絞り込む必要があります。そうした工夫を数えきれないほどくり返すことで、やっと実用化できるレベルのアルゴリズムになります。アルゴリズムに関する知見はもちろん、産業廃棄物業界のドメイン知識を学ぶ必要のある、解きがいのある問題です。

また、数理最適化をVertical SaaSに適用させることの、構造的な難しさもあります。数理最適化では基本的に、あるひとつの課題に対して最適なアルゴリズムを作ることを目指して設計します。ですが、Vertical SaaSでは異なるニーズを持った複数の顧客に対して、ビジネスを横展開していきます。

つまり、特定顧客の課題を解決するためにアルゴリズムを特化させなければ使いものにならないのに、同時にそれを他の顧客にも横展開する方法を問われるわけです。これは「アルゴリズムをどの程度特定のドメインに特化させ、どの程度汎用化するかのトレードオフ」といえます。ここが数値最適化の技術をVertical SaaSにおいて実用化するうえで非常に難しく、かつ面白い点です。

処理時間を30秒→1秒に短縮

――次に、松田さんの担っている業務を教えてください。

松田:私の業務は大きく分けて2つあり、既存アルゴリズムの改善と新機能の開発です。まずは前者からご説明すると、ドライバー数や受注数といった配車表のサイズが大きくなるにつれて、計算時間は線形ではなく指数的に伸びていきます。

仮に、配車表の自動作成の処理が1時間経っても終わらない状況になってしまうと、サービスとして使いものにならなくなります。そのため、アルゴリズムの処理のボトルネックになる箇所を特定し、処理がより短時間で完了するように改善していくことが私の役割のひとつです。この業務は、各種の制約があるなかでプログラムを改善するという特性上、私の持つ競技プログラミングの知見がかなり生きています。

矢部:サービス立ち上げの時期は「まだ顧客数が少ないから、パフォーマンスの高速化よりも、機能を早くユーザーに届けることを優先しよう」という判断基準のもとにコードを書いていた箇所がいくつもあります。ですが、事業拡大に伴って顧客数が増えたことで、私が初期の頃に書いたコードでは徐々にパフォーマンスの課題が生じていたんですよ。

そのタイミングで、処理速度改善のスペシャリストである松田さんに参画してもらえたのは大きな意義がありました。入社前に、お試しで松田さんに特定のアルゴリズムを改善してもらったところ、処理に30秒くらいかかっていた箇所が、わずか1秒ほどで終わるようになりました。「これがスペシャリストの力か!」と感動しましたね。

松田さんが取り組んだパフォーマンス改善の一例。heapというデータ構造を導入することで処理を高速化した。こうしたアプローチに競技プログラミング経験者らしさが出ている。

松田:そう言ってもらえるとありがたいです。また、アルゴリズム改善の方法を検討するだけではなく、「どの箇所を高速化するとコスパが良いか」を考える楽しさもあります。利用頻度の低い処理を高速化してもユーザーへの恩恵が低いですから。事業の展開や機能の利用状況などをふまえて改善する箇所を決めるのは、難しくもあり面白くもあります。

それ以外にも、まだ詳細はお伝えできないのですが、私は廃棄物回収の配車計画作成とは別の、新しい機能の開発にも取り組んでいます。この機能開発においては、他職種のメンバーからの要望をふまえて「○○の処理には○○秒、後段の○○の処理には○○秒かけて良い」といった処理時間の制約があるなかで、実現方法を考えてきました。

数カ月ほどかけて、機能の全体的な設計や実装を行い、PoC(Proof of Concept:概念実証)の段階まで持ってこられました。この例のように、「配車頭」の機能をベースとしつつも、できることを広げていく楽しさが私たちの業務にはあります。

アルゴリズム改善がプロダクトのコアバリューに直結する

――アルゴリズムに関連する業務に携わることの醍醐味は何でしょうか?

松田:私はそもそもアルゴリズムが純粋に好きでITの世界に入ったため、その知見を実際の業務に生かせることに楽しさがあります。自分の書いたコードが社会インフラである産業廃棄物業界の方々の業務に役立っているのを肌で感じられるのは、やりがいが大きいです。

処理を高速化するとか、問題になっている箇所を調査するといった仕事は、難易度が高く一筋縄ではいきません。頭をフル回転させて働くのは、私のようにアルゴリズムや競技プログラミングが好きな人間にとって、非常に挑戦しがいのある環境です。

矢部:世の中の多種多様なシステムにおいて、比較的容易に活用できるアルゴリズムはあらゆるところに組み込まれていますし、複雑なアルゴリズムは用途が限られるためなかなか出番がありません。だからこそ、アルゴリズムを実務で使う機会というのは、実はかなり希少なんですよね。弊社の場合はアルゴリズム改善がプロダクトのコアバリューに直結しているため、この環境そのものが相当に貴重です。

――今後、どのようなスキルやマインドの人に参画してほしいですか?

松田:ファンファーレで開発を行う際には、大なり小なり、アルゴリズムや競技プログラミングの知見は非常に役に立ちます。仕様が決まった問題を解くことだけではなくて、ユーザーのことを最優先に考えて開発を行うことに興味を持てる人と一緒に働きたいですね。

自分自身も、ファンファーレのことを知ったときに「数理最適化を業務に活用できる環境があるのか」「産業廃棄物業界を本気で変えようと思っているんだな」といった感想を抱き、強い魅力を感じて入社しました。そういった点に共感してもらえれば嬉しいですし、アルゴリズムが好きな方が社内に増えると私自身も毎日が楽しいです。

矢部:大前提として弊社は事業拡大中で、ありとあらゆる職種のエンジニアを受け入れています。そして今回のインタビューでお話ししたように、他社と比較するとアルゴリズムの知見や興味がある方に、力を発揮してもらいやすいのが特徴です。

松田さんのようにもともとバックエンドの知識はないけれどアルゴリズムに強い人も、エンジニアとして活動しつつアルゴリズムにも少し興味がある人も、どのようなバランスの方でも活躍できる環境です。もしも、この記事を読んでわくわくしてもらえたならば、その気持ちが一番大切だと思います。私たちがカジュアルに話をしますので、ファンファーレに関心のある方はぜひ遠慮なくご連絡ください。

ファンファーレでは、一緒に働くメンバーを募集しています!
CTO候補、エンジニア、UI/UXデザイナー、カスタマーサクセス、セールスなど、幅広い職種で採用強化中です。この記事を読んで少しでもご興味をお持ちいただけたら、ぜひご応募ください。
★採用ページ(https://fanfare-kk.com/career/
まずは、選考ではなく ”会社の雰囲気” や ”気になる職種の業務内容” について話を聞きたいという方向けにカジュアル面談も実施しています。
「気になるけれど選考に進むか悩んでいる」という方にオススメです。
★カジュアル面談申し込み用(https://herp.careers/v1/fanfare/RTPE3NsIZm-y

この記事が気に入ったらサポートをしてみませんか?