今回はR&Dの役割分担について話したいと思います。
Sansan株式会社の基本方針は、「R&DはライブラリをAPIとして提供してその運用まですべて自分たちで行う」です。
他社のR&Dですと、
・アルゴリズムの設計をMATLABなどで行って組み込むのは事業部
・DllやLibで機能を提供し、それを組み込むのは事業部
というようなところは多いと思います。
しかし、我々のやっている機械学習や画像処理、自然言語処理などの技術は組み込むのにも技術を必要とします。Deep LearningをするにはGPUを使ったインスタンスが必要になりますし、言語処理を行う場合、辞書ファイルが1GBを超えることもあります。「作っておいたから適当に入れてね。」で組み込めるほど簡単ではありません。
また、機械学習を使用したシステムであれば定期的に学習が必要になることもあります。性能が落ちていないか定期的に抜き取り検査を行い、頻繁に改善を行いたいケースもあります。その他、機械学習を用いたシステムの場合、判定したログが宝になることもあります。このような場合、自分たちがいつでもいじれる場所にシステムがあるほうが都合がよいのです。
以上のような理由から、R&Dでは自分でサーバーを立て、WebAPIとして提供することを基本としています。さらに、サーバーの監視やアラート対応も自分たちで行っています。これには賛否があって、今後どうしていくか今話し合っています。
監視やアラート対応自分たちで受け持つようにすることで、自由なタイミングやクオリティでリリースをすることができるメリットはあります。