機械学習エンジニアとソフトウェアエンジニアは違うのか?

及川卓也氏(以下、及川):始めたいと思います。モデレーターを務めさせていただきます、Tably代表の及川と申します。よろしくお願いいたします。

(会場拍手)

ありがとうございます。私は気軽に一般参加者で申し込んだらscoutyのシマダさんから「モデレーターをやってください」と言われ、やらせていただくことになりました。

条件としては、私は聞きたいことをお聞きします。

(会場笑)

なので、たくさんスライドに質問がありますが、その前に私が聞きたいことを聞かせていただければと思います。たぶんみなさまの聞きたいことじゃないかと思いましたので、最初にきっかけとして聞かせていただきただければと思います。

今、4名の方々からライトニングトークでお話しいただきましたが、その前に私が聞きたいことを聞きたいと思います。機械学習人材、MLエンジニアは普通のソフトエンジニアとは違うのか。もしくは、採用した後、機械学習だけをひたすらやっていただき、それでキャリアを積んでいただくような人材として、別枠で考えるのか。それともあくまでもソフトウェアエンジニアだけれども機械学習を中心にやるのか。

質問の中にも、「実際にモデルを作った後に、デプロイして、といった分担はどうしていますか?」とか、「スクラムの時は多能工で全員がフルスタックが理想ですが、そこに機械学習が入ったときにどうするのか?」という疑問がありました。その元の部分って、おそらく私が今聞いてるところにも関係するかなと思いますので、まずはここから、どなたかお願いしたいと思います。

西場正浩氏(以下、西場):はい。

及川:お願いします。

西場:まず、他のSoft Engと違うかというと、あまり違わないと思いたいと思ってます。

僕もエンジニアリングが自体大好きなので、この前も開発合宿でVue.jsでアプリケーション作って「わぁ、楽しい」みたいなことをやっていたので、他のエンジニアと一緒でありたい。役割分担も、濃淡の差はありますが、基本的には全部できるようになりたいなと思って運用しています。

そちらほうがコミュニケーションもやりやすいし、ストレスもないと思います。スクラムの問題が一番の課題で、僕はスクラムをやろうと思って結局できていません。僕の代わりと、そこにいる笹川さんの代わりは、僕らがスワップしたら何もできない。できないことはないかもしれないけど、何も進まなくなって多能工にはならないので、スクラムはやっていません。

もうちょっと人が増えたらやるのかもしれませんが、3、4人ぐらいしかいなくて、基本的に違うプロジェクトをお互い担当していて、違うスキルセットなのであれば、スクラムじゃなくて得意なことをお互いやってフォーメーションでやろうかなと考えています。

サッカーのフォーメーションってころころ変えないよね、ということです。以上です。

コモディティ化しつつも、スペシャリストも生まれる

及川:ありがとうございます。1人で2つ質問しちゃって、2つお答えいただいてとても嬉しかったんですけど、1個1個聞きたいと思います。もし同じだったらということもあるんで、今お答えいただいたみたいに、「MLエンジニアと普通のエンジニアは基本的に一緒です」という方は、手を挙げていただいて……。

(スピーカー挙手)

あ、1人違う。じゃあ違うところからお願いします。

今井太宗氏(以下、今井):すごい難しい問いだな、と思いながら。あえてそこに「そういうのは違うんだ」というぐらいのMLエンジニアとしてのスペシャリストが出てくる。コモディティ化すると思うので、ある意味誰でも機械学習を触れるどころか、機械学習を触れないと何か機能を作れないと言われるまでいったときに、それでもそれを超えるパフォーマンスを発揮するような「俺は機械学習エンジニアだ!」みたいな、そういうキャリアはあるのかなぁと思っています。

たとえばネットワークとかも、だいたいそれなりのエンジニアならネットワークはいけると思うんですけど、その中でも「このレベルになるとやっぱ無理だな」みたいなところがあって、そこでパフォーマンスを発揮するエンジニアはいると思うので、そこをあえて自分で定義して作っていくというのが、今後コモディティ化する中で逆にあってもいいんじゃないかと思ったので、あえて逆張りしました。

(会場笑)

今後はスーパーマンが登場する?

及川:Reproさんではどうなんですか?

今井:正直言うと、先ほどのフォーメーションみたいなかたちで、逆に誰でもある程度ベースラインを理解できるというか、話せるみたいな感じで、Kaggle会やってみたり、話が通じるようにしたいなぁと思っています。ただ、あまりそこに強い人をフルタイムでコミットできている状態での採用は進んでいなくて、基本的に技術顧問というかたちで関わっていただいている感じですね。

及川:もう1個だけ聞きたいんですが、そういったソフトエンジニアとしてもバリバリ働けて、かつ機械学習の素養を持っているのは、人材市場にはそれほどいなくて採用が大変なんじゃないかと思いますが、いかがでしょうか?

今井:採用めっちゃ大変なんで、本当にWe are hiringですけど(笑)。

(会場笑)

求めるのはみんなスーパーエンジニアで、バリバリアプリケーションのコードが書けて、機械学習のコードを書けることなんですけど。なのでここはみなさんにも聞きたいんですが、サイエンス領域に尖った人がエンジニアリングを覚えるのが早いか、エンジニアリングに尖っている人がサイエンスを覚えるのが早いかなと思っています。

及川:じゃあ採用時はどちらか片方かもしれないけど、入ったら基本「覚えてください」方針ですか?

今井:今のフェーズだと仕方ないかなぁと思っています。たぶんスーパーマンが今後どんどん出てくるかと思いますが。

機械学習とスクラムの相性

及川:わかりました。先ほど西場さんからお答えいただきましたが、他の3社でスクラムをやられている会社ってどのくらいいらっしゃいますか?

高濱隆輔 氏(以下、高濱):僕の話はあんまり参考にならないんですけど、うちの会社でも最初はWeb側の開発と機械学習の開発を同じ枠組みに乗せているというか、同じタスク管理をしていて。Web側と一緒にスクラムやってたんですけど、そのあとはワークしないなとなって1回捨てたという経緯があります。

結局先ほどおっしゃられていた話に近いんですけど、機械学習系はある種のスペシャリストを求めるタスクが多いせいで、「全員がそのタスクをとれるようにする」というスクラムの思想と合わなさ過ぎて、結局廃しました。それでワークするビジョンが見えずにやめたんですね。それができる兆しがReproさんから見えて「怖いなぁ」っていうのがあります。

中途半端な知識からチームを守る方法

及川:スクラムに関して他にコメントのある方はいらっしゃいます? なければSli.doの質問を拾おうかと思います。

では3つ目の「中途半端な機械学習の知見を持ったステークホルダー(元データサイエンティスト)から機械学習チームを守る方法を教えてください」。これ「(元データサイエンティスト)」というのは質問をした方が実際に困られているからそう言ったと思うんですけど……。元データサイエンティストに限らず、中途半端な知識も持っている人は増えてきて面倒くさいなぁっと思ってるんですけど……。

(会場笑)

それ、どうやって対処されていますか?

高濱:偶然うちはそういったパターンがあんまりなくて僕はわりと自由にやらせてもらっているんですが、2パターンあると思っていて、元データサイエンティストの方が、実はけっこう良いビジネスインサイトを持っている場合。失礼かもしれませんが、質問されている方がビジネスのインサイトを十分に理解できていないまま、それを無下にしている可能性もあるのかなと思います。

そうじゃない場合は、本当にその人の知識がアップデートされないまま進んでいるに過ぎないので、会社の規模によりますが、僕はわりと小さい会社なら戦うだけでなんとかいけるんじゃないのかという気がしています。大きい会社の場合は、いわゆるジャパニーズトラディショナルで根回しというか、話を聞くしかないんじゃないかなぁって思う部分があって、解決の方法を聞きたいですね。

及川:なるほど。他のお三方は何かありますか?

(会場笑)

っていうか言えないですよね(笑)。自分の会社のことをさらしてることになりますもんね。自分の会社じゃなくていいです。知り合いから聞いて、その時どんな対処をしたかということにしましょう!

(会場笑)

西場:はい。知り合いから聞いたんですけど……。

(会場笑)

自分たちで全部できるようになれば、別に他からの干渉もされないので、中途半端な知識を持っている人のメイン知識を侵食しにいけばいいんじゃないかなと思います。あと、中途半端な知識を持っている人って、善意で言ってくれている可能性があるので、僕らも向こうに歩み寄って向こうの持っているベースとなる知識を学んで、お互い相乗効果を得られるような環境を作っていく姿勢がいいと感じています。

……知り合いから聞いた話なんですけど。

(会場笑)

及川:はい。他に知り合いから聞いた話を持ってらっしゃる方はいますか?

(会場笑)

大丈夫でしょうか? たぶんもっと聞きたいと思うので、懇親会でつっこんでみてください。