プロダクトAI・IoT分野のオープンソース開発サポートツールをパソ...201月2020PRプロダクトAI・IoT分野のオープンソース開発サポートツールをパソナテックが独自に作った話TweetShareHatenaPocketRSS国内最大級の人材派遣企業パソナグループの人材育成に関わる活動はとても幅広く、例えば東京駅のパソナグループ本部ビル13階には、酪農を身近に感じることで地域産業の担い手となる酪農人材を育成することを目的とした「大手町牧場」を設けるなど、様々な切り口から人材育成に注力しています。株式会社パソナテック(以下、パソナテック)は、そのパソナグループの一員としてITやエンジニアリングに特化した人材サービスとしてスタート。エンジニアのキャリア創造のパイオニアとして、エンジニアの価値創造に力を注いできました。そんなパソナテックでは、近年自社独自のソフトウェア製品の開発に注力しています。2019年7月にオープンソースとして公開された組込ディープラーニングフレームワーク「Qumico(クミコ)」は、エッジAI領域のユニークな製品として高い注目を集めています。Qumicoは、機械学習やディープラーニングを使って構築したAIモデルを、組み込み機器上で動作するC言語のソースコードに変換してくれるという製品で、これまで交わることが難しかった完全に途絶していたAIとエンジニアリングの世界の間を橋渡しする技術として、大きな期待が寄せられています。そこで本記事ではこのQumicoが生まれた背景や開発秘話などについて、実際に開発を担当したパソナテックのエンジニアの方々に聞きました。Qumicoプロダクトマネージャー2013年パソナテック入社。Learning、データサイエンティストと幅広い業務をこなす。Learningの普及と人材育成を狙う。Leadメーカーにてカーナビ製品のソフトウェア開発に長年従事した後、パソナテックにソフトウェアエンジニアとして入社。社内の基幹システムの刷新プロジェクトに参画した後、Qumicoの開発プロジェクトメンバーの社内公募に応募。プロジェクトの立ち上げメンバーとして加わり、Qumicoの開発に一から携わる。現在はテックリードとして、プロジェクトにおける技術面全般の取りまとめを担当する。近年ニーズが急速に高まる「エッジAI」とは?──なぜQumicoを開発しようと思い立ったのでしょうか。夏谷:2016年頃、某家電メーカー様の組み込み開発プロジェクトに参画して、画像処理関係の開発を行っていました。そのころ、ディープラーニングを用いた画像認識技術が目覚ましい進化を遂げていたので、その成果をぜひ取り入れたいと思ったのですが、当時はディープラーニングのモデルを組み込み機器上で動かす技術がありませんでした。正確に言うとないことはなかったのですが、極めて高額なソフトウェアを導入する必要があり、とても手軽に試せるものではありませんでした。──そこで自ら、組み込み機器上で手軽にAIモデルを動かすことができる技術を開発されようと思い立ったのですね。当時はお客様側にもわれわれ側にも、AIと組み込みの両方が分かるエンジニアがいませんでした。そこで、「AIと組み込みのスキルを両方持つ人材を育成するためには、何らか新たな仕組みを導入する必要があるのでは」と考えたことも、Qumicoを開発しようと考えたきっかけの1つでした。──「組み込み機器にAIを搭載したい」という要望はかなり多いのでしょうか?夏谷:はい。組み込み機器やIoTデバイスなど、いわゆる「エッジデバイス」と呼ばれる機器に搭載するAIのことを「エッジAI」と呼びますが、そのニーズは近年急速に高まっています。エッジAIのための専用チップを製造するメーカーも既に多数存在しており、スマートフォン等に搭載される半導体にも初めからエッジAI機能のための回路が組み込まれるようになりました。「エッジAIのニーズが年々高まっていることを肌で実感しています」と夏谷さん──これだけエッジAIが求められるようになった背景には、どんなニーズがあるのでしょうか。林:幾つかの理由がありますが、「プライバシーの問題」はその代表的なものの1つです。IoTセンサーがとらえたユーザーの位置情報や、ユーザーのプライベートの様子を撮影したカメラ映像などは、クラウド上に集めるとどうしても漏えいのリスクがあります。そこで、エッジデバイス上でAIを使ってある程度の処理を行い、クラウドに対してはその処理結果だけを送るようにすれば、ユーザーのプライバシーは保たれることになります。クルマの自動運転のように、高速なリアルタイム処理が求められる分野でも、エッジAIは必須の機能だと言えます。クルマに搭載したカメラの映像をAIで処理するために、いちいちクラウドにデータを送っていては、自動運転にとって不可欠な「とっさの判断」に間に合わない恐れがあります。そのため、やはりクルマに搭載したエッジデバイス内でその場で画像認識処理を行う必要があるのです。──こうしたエッジAIの開発を支援するためにQumicoを開発されたとのことですが、具体的にはどのような課題をどんな仕組みを使って解決するものなのでしょうか。夏谷:機械学習やディープラーニングの分野では、主にPythonなどの開発言語やTensorFlow、Kerasといったフレームワークやライブラリを使ってAIモデルの開発を行います。組み込みソフトウェアの世界では依然としてC言語を使った開発が主流で、先ほど挙げたようなAIの開発環境をそのまま動かすことはできません。そこでこの両者の間を橋渡しするために、TensorFlowやKerasなどを使って開発したAIモデルをC言語のソースコードに変換する機能を一から開発しました。林:さらに正確に言うと、異なるAIフレームワーク間の互換性を実現するための共通フォーマットである「ONNX(オニキス)」で表されたモデルをC言語のソースコードに変換します。これによって、今後もし新たなフレームワークが出てきてもONNXに対応していれば、Qumicoには手を加えることなく引き続きC言語への変換を行うことができます。──組み込み機器上で動作するAIモデルを直接生成するのではなく、いったんC言語のソースコードに落とし込むようにしたのはなぜなのでしょうか?夏谷:世の中には無数の組み込み機器がありますから、それら1つ1つに最適化したAIモデルを生成するソフトウェアを開発するのは現実的ではありません。その点、どの機器プラットフォームにも大抵の場合はC言語の開発環境が用意されていますから、C言語のソースコードが生成できれば結果的にどんな機器にも対応できるようになります。林:ただし、Qumicoが生成したC言語のソースをそのままコンパイル・リンクしただけでは、ほとんどの場合は性能が遅すぎて使い物になりません。そこで、それぞれの機器に応じたチューニング作業を行う必要があります。このチューニングを柔軟に行えるようにするためにも、組み込み開発の環境に適したC言語のソースコードを提供するのが現時点では最適解だと思います。夏谷:加えて、組み込みエンジニアなら誰もが読めるC言語のソースコードを提供することで、エンジニアの教育効果も期待できます。弊社は単なる人材派遣会社ではなく、「人材育成」も重要施策に掲げていますから、Qumicoも組み込みエンジニアのスキルアップに役立つものにしたいと考えていました。そのためにも、可読性に優れるC言語のソースを生成するという機能にはかなりこだわりました。オープンソースとして公開することへのこだわり──ほかにもQumicoの開発でこだわった点はありましたか?夏谷:QumicoはMITライセンスのオープンソースとして公開していますが、これもやはりできるだけ多くの方々にQumicoを実際に手に取って触ってもらい、エッジAIを身近に感じてもらいたいという思いを込めてオープンソース化しました。現在、2020年の東京オリンピックに向けて半導体業界は活況を呈していますが、オリンピック後はその反動で業界全体が先細っていくとも言われています。そんな中、高齢化した多くの半導体エンジニアは自身の将来のキャリアの先行きに不安を抱えています。Qumicoはそうした方々に対して、将来有望だと言われているエッジAI分野へのキャリアパスを提示できると考えています。実際、Qumicoの開発チームメンバーの1人は50代の元半導体エンジニアなのですが、現在ではエッジAIの専門家として活躍しています。──オープンソースで公開することにとてもこだわっていたのですね。弊社ではこれまで、ソフトウェア製品をオープンソースとしてリリースした経験がなかったので、オープンソースとして公開することの意義や、その法律上の扱いなどについて経営陣や法務部門に説明するのにかなり苦労しました。今でもなお「有償で販売する方がいいのではないか」という声もあるのですが、やはりできるだけ多くの人に気軽に手に取ってもらって、将来のキャリア開拓に役立ててほしいという思いが強かったので、オープンソースで出すことにはとことんこだわりました。──ちなみに開発で最も苦労したのはどんなところでしたか?林:開発を始めた2016年、2017年頃は、まだエッジAIの技術情報が少なかったので、手探り状態で進めざるを得ませんでした。実際の開発はかなり地味な作業の積み重ねで、C言語に変換する前のモデルの予測結果と変換後の予測結果とを比べて完全に一致するかどうかを調べて、一致していなければその原因を推測して、修正を加えてさらに比較・評価して......こうした作業を地道に繰り返していくことで、少しずつ精度を上げていきました。──気が遠くなるような作業ですね。現在ではかなりノウハウが蓄積されてきましたし、世の中にも情報がかなり出回るようになったので、大抵の問題はすぐ当たりが付くようになりました。変換前後の値が完全に一致したときには、喜びのあまりSlackに「遂に人類が月に到達しました!」と書き込んだことを覚えています(笑)。それまで自分たちが探求してきたロジックやプロセスが正しかったことが初めて証明されたわけですから、今思い出しても感慨深い瞬間でしたね。「Qumicoが変換したC言語のAIモデルの値が元のAIモデルの値と初めて一致したときのことは、決して忘れることはないでしょう」と当時を振り返る林さんほぼ前例のない「内製でのソフトウェア製品開発」に挑む──現在、Qumicoの開発は何名で行っているのですか?林:夏谷と私を含め、6人で行っています。残り4人のうちの2人は、先ほども紹介した通り半導体エンジニアから転向したベテランで、もう2人はもともとWebアプリやスマホアプリを開発していた20〜30代のソフトウェアエンジニアです。夏谷:弊社には、プロジェクトメンバーを社内で公募できる制度があり、営業部門や採用部門ではよくこの制度を使ってメンバーを募集しています。私もこの制度を使ってQumicoの開発メンバーを募集したのですが、開発案件でこのようにパソナテックグループ全体に渡って応募を募ったのは初めてのケースでした。後から聞いた話ですがかなり多くの応募があったようで、中には開発経験ゼロの人が「ぜひやってみたい!」と応募してきたケースもあったそうです。──そういう意味でも、御社にとっては新たな取り組みだったのですね。自社プロダクトの開発案件はさほど多くないのですが、今回のQumicoの開発をきっかけに社内外に対して「ソフトウェアベンダーとしてのパソナテック」をアピールしていければと考えています。実際には、まだ社内でもソフトウェア開発の仕事に対する理解が進んでいない部分があって、今回のQumico開発プロジェクト立ち上げの際にも勉強や情報収集のために書籍代50万円を上申したところ、勝手に「これはきっと“5万円”の書き間違いなのだろう」と判断されて、5万円で申請されてしまいました(笑)。5万円では、業界誌の購読代にもなりません。本音を言えば50万円でも全然足りないところなのですが、これまで内製の製品開発や研究開発の実績がほとんどなかったため、学習のために書籍代がこれだけかかるということをなかなか理解してもらえなかったんですね。──前例のないことに踏み出す際には、やはり様々な障壁があるのですね。弊社の場合、これまでエンジニアの側から「こんなことをやりたい」「こういうものを作りたい」と声を挙げるケースがほとんどなかったので、今回のQumicoのプロジェクトでは初物づくしで社内各所との調整が大変でした。新規事業をどんどん起こせる会社が強いと思いますし、これからもぜひエンジニア起点で新しい事業を提案していってほしいですね。そのためには、現在Qumicoの開発チームに所属しているメンバーがこれまでの自身の経験を生かして、社内のそうした動きを率先してリードしていってほしいと思います。今後は一般のエンジニアにQumicoを広めていきたい──これからどんな人に、どのようにQumicoを使ってほしいと考えていますか?夏谷:既に何社かのお客さまのプロジェクトでは、Qumicoを使って一定の成果を上げています。今後も弊社の営業を通じてより多くの企業様にQumicoの良さを知っていただき、ぜひ広く活用していただければと考えています。加えて、個人的にはもっと一般のエンジニアにQumicoを広く知ってもらいたいですね。QumicoはMITライセンスで自由に利用できるオープンソースですから、誰でもダウンロードして使うことができます。気軽に触ってもらって、「Qumicoを使ってこんなことができた!」「こんなことをしてみた!」という成果をどんどん公表してもらえるとうれしいですね。AutoMLを使って学習させたAIモデルをQumicoでC言語ソースに変換するデモを披露しました。多くの方々に興味を持っていただけたので、これからはこうした機会を増やしていくとともに、ドキュメント類もどんどん整備していって、より多くの人にQumicoのことを知ってもらいたいですね。現在、大学生向けのワークショップも企画しています。AutoML+Qumico」の環境を実際に触ってもらって、Pythonの知識がなくても簡単にエッジAIを開発できることを体感してもらえればと考えています。──ちなみにQumicoそのものの開発や機能強化は、今後どのように行われていくのでしょうか。林:機械学習やディープラーニングの世界は日進月歩で、新たな技術が次々と生まれていますから、そうした動きに取り残されないよう、トレンドを着実におさえながらQumicoを進化させていきたいですね。当面は、主に2つの領域で機能強化を図っていきたいと考えています。1つは、自然言語処理や時系列処理の強化です。現時点のQumicoは、どちらかというと画像処理やリアルタイム処理に特化していますので、分野が少し異なる自然言語処理や時系列処理の機能も強化することで、より広い用途に適用できるようにしていく予定です。1つは、現在のQumicoは学習済みのモデルをC言語のソースコードに変換しているところを、今後は自身がエッジデバイス上で学習を行う「エッジ学習」の機能の対応を予定しています。これによって、エッジAIが使われる環境により最適化した学習がエッジデバイス上で行えるようになり、AIの精度をさらに高めることが可能になります。した機能を、早ければ2020年中にも実装できればと考えています。──今後の展開がとても楽しみですね。「人材サービス」のイメージが強いパソナテックが、実は自社独自のソフトウェア製品開発を行っており、しかもそれが最先端のAI技術を活用したものだということに、意外な印象を持たれた方も多いかと思います。同社によれば、今後はこうした自社開発案件を積極的に手掛け、エンジニアの可能性を最大に活かす取り組みを加速化していきたいとのことです。その一方で、長年多くのエンジニアのキャリア形成を支援してきた同社らしく、「製品開発も人材育成やキャリア構築に寄与するものでなくてはならない」という想いがインタビューを通じてひしひしと伝わってきました。Qumicoの次に同社がどんな製品を世に送り出してくれるのか、ぜひ楽しみにしたいと思います。