見出し画像

1年で指数関数的成長を体験した、私と図面解析プロダクトと。

こんにちは、imaimaiです。
皆さん、圧倒的成長してますか?私はしてしまいました。このグラフをご覧ください。

圧倒的成長グラフ

これは私が入社して図面解析プロダクト"Orama"のPdM になってから、社内の分析で一度に扱うようになった図面の枚数です。どのへんが圧倒的かというと、「縦軸が対数グラフ」というところです。社内の事業の伸びを考えると多項式成長なんてしていられません。

このように、指数関数的な一年だったわけですが、この指数関数的な成長の最中で何を学び、プロダクトや環境がどう変わっていったかを振り返ろうかなと思います。

※こちらは、CADDi Advent Calendar 2021の21日目の記事です

どんなプロダクトなの

一言でいうと「製造図面からできる限り多くの情報を抜き取る」プロダクトです。

私が入社する一ヶ月前、現チームのテックリードがこんな記事を書いていました。今取り扱っている図面解析プロダクトの1年前の姿です。

課題のひとつは、図番の自動検出です。(中略)まず外枠や罫線を自動認識し、これを消去した上で OCR に入力する必要があります。(中略)他にも差し替え図面との差分検出など、さまざまな課題に取り組んでいます。

すでにここのプロダクトマネージャーになることが決まっていた当時の私は、この記事をとてもワクワクしながら読んでいました。

1枚~10枚

 入って数ヶ月、まずは図面を読めるようにならなければなりません。社内の図面研修を受けたり、猛者が開催していた図面1万本ノックを受けるなどして、ドメイン知識を蓄えていきました。私の友人は「図面は製造へのラブレターだ」と言っていましたが、理解が深まっていくにつれ設計側の思惑や伝えたいメッセージが浮かび上がってきます。ふと振り返ると私は工学部出身なので授業で図面を書いていたのですが、全く何もわかっていなかったんだなと。私のひいた図面は「製造」を意識しない一方的なコミュニケーションだったのだなと、痛感しました。

製造図面。記号・文言の一つ一つにメッセージがある

こうしてドメイン知識を吸収しつつ、本分であるプロダクトの価値を見つける旅にでかけていきます。

100枚~1000枚

ビジネスサイドの案件にプロダクトを適用するためには、100枚から1000枚オーダーで図面解析ができるようにならなければなりません。100-1000枚というのは

☑ 頑張れば人手で色々がんばることがまだ可能
☑ 一方で、スクリプトを書いた自動化・効率化が活きはじめる

という具合で、「頑張りたいけど自動化できれば嬉しい!」題材が多く転がっています。当時はCTOのアキさんがビジネスサイドと連携し、そのあたりを突貫工事でこなしていたので、一度お願いしてその作業風景をDiscordに張り付いて見せてもらうことにしました。こっそり録画した作業風景をまずは写経しながら自分でもスクリプトを書き、その後自分でも解決できるように巻き取っていきました。

これにより、プロダクトへの理解がすごく高まりました。社内で図面解析を必要とされる案件に対して、実現の可否判断と、突貫工事は大体できるようになり、一旦社内要望を一手に引き受ける地獄駆動プロダクト開発(自分でオペレーションに入って手を動かし、地獄のような課題感に触れることで、ニーズを捉えたプロダクト開発をする、とてもマゾヒスティックな手法)をしていました。結果としてオペレーションサイドに良い機能をいくつか提供できたと思います。

10000枚

1万枚オーダーの図面を取り扱う影響はこんな感じです。

☑ 複数顧客の図面解析をすると、あちらをたてばこちらが立たず→テストが必要になった
☑ 1 枚 1 枚の処理アルゴリズムの蓄積が計算時間に大きく影響

1000枚オーダーとの明確な違いは、アルゴリズムを特定顧客への適用だけでなく、汎用化を目指したこと、そして処理の高速化のために何を拾って何を捨てるかを明確に考え始めたということです。

夏頃までの図面解析は「対象を1社に絞ったらどのくらい戦えるのか」という実現可能性を検証していました。例えば「矢印を認識する」という場合、特定顧客への対応だとその顧客の図面に現れる矢印のパターンを網羅してマッチングすれば、ある程度は認識できるようになります。しかし、それがたくさんの顧客になると、図面の癖の違いにより性能は低下していきます。認識タスクの実現可能性が見えたところで、個社最適しすぎず汎用化を求めるという方針にしました。

矢印コレクション。ノイズの乗り方、角度、太さと様々

汎用化のためには準備が必要です。「観測できないものは管理できない」を合言葉に、3ヶ月ほどかけて精度検証基盤を作りました。今までは図面を眺めて効きそうなところのアルゴリズム改良をしていましたが、テストという明確な羅針盤を持ったことで、チーム全体でアルゴリズム改良のベロシティが上がっていきました。

また、1万枚ともなると、1枚の処理アルゴリズムのスピード蓄積が計算時間に大きな影響を及ぼします。画像自体、データ量は普通の文字やバイト列に比べて多いので、解きたい課題に応じて情報を何らかの形で圧縮しなければなりません。ここの圧縮(特徴量ベクトル生成)アルゴリズムを開発し、1万枚規模の図面であっても高速に大量の検索ができるようになりました。

100000枚~

さて、いよいよドラゴンボールの戦闘力もびっくりの枚数になってくるわけですが、現在我々が直面しているのは、この規模の図面の取り扱いです。

☑ さらなるインフラ、水平スケールの必要性
☑ 高効率に図面情報を圧縮するアルゴリズム
☑ データが価値を産むようなサイクルづくり

こうなってくると、解析のアルゴリズムはより一層洗練させなければいけません。精度と速度の狭間に立ち、与えられた課題に対して最大の価値を提供できるような技術選定と研究開発が必要となってきます。また、アルゴリズムだけではなく、インフラ面の考慮も必要となってきます。例えば、図面検索をしたいときに10万枚を全探索していてもすぐに結果は返ってこないでしょう。そのため、スケーラブルな近傍探索DBを用意しなければいけません。様々な面で、素早く的確な情報を処理できる必要があります。

また、この規模のデータを対象と考えると、ディープラーニングをベースにしたアプローチも現実的になってきます。以前の記事に書いたように、CADDiでは図面に紐付いて様々なデータがアウトプットとして溜まっています。

今まで我々がアウトプットとして貯めてデータを、アウトカムにして事業に貢献していく、そんな転換期を迎えています。

このあたりの話は本日のイベントAI Lab爆誕で話すので是非来てください!

再び1枚

これだけ取り扱う図面が増えていく一方で、まだまだ1枚の図面に対してのアプローチが完成しているわけではありません。設計者から渡されたメッセージへの解釈はタスクによってはなおも幼稚園児のレベルです。

現在、図面解析はあらゆる技術を用いた総力戦で取り組んでいます。自然写真ほどリッチじゃない図面という画像情報に対してどう対応していくか。伝統的な画像処理技術とDeep Learning技術を、製造業のドメイン知識も取り入れながら適材適所で組み合わせながらチャレンジしています。
その1枚あたりの解釈性能の向上が10万枚オーダーの図面解析の底上げになり、キャディのデータを、そして製造業を支える礎になると信じています。

そんなわけで、10万枚を目指しながらもまた1からスタートします。図面解析自体の面白さ、図面から広がる世界に少しでも興味をもった方は是非一緒にこの分野の研究開発を進めていきませんか?お待ちしております。ではでは

サポートいただけると励みになります! よろしくおねがいします!!