SaaS型チャットボットを手がけるNextremer

両角和軌氏(以下、両角):それでは、Nextremerの発表をさせていただきます。今日発表されてる企業の中で、おそらく私たちの会社がもっとも知名度がないと思ってます。なので、どれぐらい知ってる人いるか気になるんですけど、ほとんどいないと落ち込むので、聞くのはやめておくことにします。

(会場笑)

今日話したいことなんですが、いろいろある建前はどうでもよくて。要するに「うちに転職してください」という。

(会場笑)

まあ、そうした下心も全力に出して、今日はお話させていただきたいと思います(笑)。

では自己紹介なんですけども、私、両角と申します。今は採用や制度設計など、人事に関わることをやってるんですが、もともとNextremerにはエンジニアとして入社をしてます。その前はSIerにいまして、これまで約8年ぐらいWebの開発に携ってきました。Nextremerは、AIを扱うベンチャー企業なんですけども、その中でもとくにチャットボットや音声対話システムを手掛けています。

今日は、大きく3つに絞ってお話をさせていただきたいと思います。まずはNextremerがどういうものをつくっているのか見ていただきたいと思います。

まず、今年の3月にローンチしたカスタマーサポート特化のSaaS型チャットボットサービスについてお話したいと思います。

最近よく見かけると思うんですが、Webサイトにアクセスすると、画面下のほうにチャットのウインドウが出てきて、オペレーターの人と話せるみたいな案内が出てくると思います。私たちが提供しているものは、問い合わせに対してまずボットで話して、そこで対話が破たんしたら、裏で待ち構えているオペレーターに自動で切り替えるといった、AIと人の協働をテーマに製品開発、サービスの提供をしています。

その他にも、受託案件や実証実験で、これまでにいくつかチャットボットや音声対話システムを、いろいろな企業の方と協力してやってきました。1つは、まあ、ちょっと前の話ですが、TBSさんと一緒に世界陸上の公式バーチャルアシスタントを、私たちの仕組みで提供させていただきました。

その他には、自動車に音声対話の仕組みを付けて、観光案内をするという実証実験を、ホンダさんと協力して沖縄でレンタカーに載せて、約4ヶ月間実証実験を行いました。

これはスマホのアプリで動いてるんですが、このキャラクターがずっとラジオみたいに雑談をしていて、その地域のことや近くを通ったお店とかの話をしてくれるんですね。それに対して「もうちょっと教えて」と言うと、お店の詳細を教えてくれたり、「そこに行きたい」と言うと、車のカーナビと連携して目的地が自動でセットされるとか、そういった仕組みを過去に実験しています。

その他には、デジタルサイネージやお店の店頭にあるディスプレイの看板に音声対話の機能を付けました。小売店の店頭などで人が来たことをカメラで検知して、そこに対して話しかけて、新製品の紹介をしたり。あとは、施設の案内板あたりに置いておいて、音声対話の形式で施設の案内をしたりというサービスを提供しています。

Nextremerはこういったものをつくってるんですが、思い出していただきたいのは、「うちに転職してください」というただ1つのメッセージです(笑)。これ、しつこいぐらい差し込んでいくので、ぜひ覚えて帰ってください。

採用した技術とその運用

では、技術的な詳細のところを少しお話させていただきたいと思います。AI系のサービスや機械学習やディープラーニングって、興味を持ってなにか調べて見たことある人はわりといると思うんですが、実際にどのようにサービスがつくられているのか、あまりイメージがわからないと思います。

そのあたりについて、私たちの技術スタックは、主にnode.jsと、あとはRailsでサーバー側のアプリケーションをつくっていて、こう見ると実は普通のWebサービスとほぼ同じようなスタックなんですね。

いわゆるAIや自然言語処理と言われるものは、もうその中のロジックはうちの研究のメンバーが、主に論文を調査したり、課題に対してパフォーマンス上げるようなロジックを考えて実装するんですが、その1個1個は、ただの1個のAPIというか関数みたいなかたちになっています。

今うちだと、そのAIのロジックの部分だけをDockerコンテナにして、APIとして呼び出せるようにしています。なので、マイクロサービスの1つとして、ディープラーニングを使ったロジックが動いています。でも、それ以外の周りのところは普通のWebアプリと同じで、Railsだったり、あとはSocket.IOなどで通信しているところもあるので、そのあたりはnode.jsを使ったりしています。

チャットボットや音声対話のフロント側の画面の部分は、今はReactとReduxを主に使って実装されています。それ以外のCI/CDみたいなところは、まだ発展途上ではありますが、CircleCIを使って自動でテストして、自動でデプロイみたいな仕組みも、徐々に整備がされつつあるという感じです。

インフラは、Kubernetesをベースにしているという感じですね。今はAWSをメインで使用していて、その上でKubernetesを動かしています。これは、とくに特徴的なところはありませんが、普通のWebアプリっぽいスタックなんだとイメージしていただければと思います。

CI/CD環境のところは、ブランチごとにstaging/qa/productionと分けていて、そこにマージされると自動でテストが走って、Kubernetes上に自動でデプロイされるという仕組みになっています。

開発フローと環境

開発のフローについてですが、弊社はスクラムの開発を採用していて、スプリントの期間を1週間に区切ってやっています。タスクは、ZenHubを使ってGitHub上でタスク管理をしていまして、ブランチの運用はGit FlowとGitHub Flowの良いとこどりでやっています。このあたりも、ある程度メンバーの好みで決めているところがありますが、そんなに特殊なことはせず、わりとオーソドックスな仕組みでやっています。

あと、ちょっとスタックとは外れますが、社内に機械学習の開発環境がありまして、研究のメンバーもそうですし、Webのエンジニアでも、自分で勉強したいという人がけっこういるので、GPUの環境を自由に使えるようにしています。

AWSのインスタンスをつくることもできるんですがけっこうお金がかかるので、それぞれGPUを2枚ずつ搭載した物理マシンを会社のオフィスに3台置いています。それの上にそのユーザー専用のDockerコンテナが立ち上がって、すぐに開発が開始できるという環境を用意しています。これは誰でも使えるようになっているので、自習で使ったり、研究のメンバーが使ったりだとか、ということをしています。

こんな技術を使っている私たちなので、「うちに転職してください」というのを改めて、お伝えさせていただきたいと思います(笑)。

人でみるNextremer

では、3つ目ですね。どんなメンバーが私たちのNextremerに所属しているか、お話させていただきます。なかなかぶっ飛んだメンバーが何人かいるんですけども、そこをピックアップして紹介させていただきます。

まず1人目ですね。Common Lisperという時点で、ちょっと「なるほど」っていう感じがもしかしたらあるかもしれないんですけど、Common Lispが大好きな@t-sinさんという方がいます。

これはQiitaに投稿した記事なんですが、Pythonのリスト内包記法というものがあって、それだけを使ってLispを実装するっていう、わけわからないことをやったりします。これ、記事としてはけっこうおもしろいので、ぜひ後でまた見ていただけるとうれしいです。まあ、こういう変な人がいたりですとか。

あと研究のメンバーもけっこうすごい人がいます。入社した時には完全にAIの素人だったんですが、そこから論文をすごいスピードでサーベイして、もうニューラルネットワークの最先端のところをすぐに把握しちゃった人なんですが、Webカメラの画像から脈拍を推定するという、とんでもないことをやっていたりだとか、っていうのがあります。

これもNextremerのAdvent Calendarの記事で投稿してもらったやつなので、ぜひこれも見てください。

あと、なんでもできる人って、いろいろなチームにいると思うんですけど、サーバーのことやフロントのことや研究のことがひと通りわかる方がいまして、医薬品設計をニューラルネットワークでやるみたいなことを趣味でやったみたいで、これも記事を書いたりしています。これもぜひ読んでみてください。

こんな楽しい仲間がたくさんいますので、わからないことや新しいことを気軽に質問できますし、そこで教えてくれたりするので、お互いに教え合えるというか、すごい人がいるというのがNextremerのとてもいい環境だなと思っています。

こんなすばらしい人たちがいるので、ぜひ「うちに転職してください」ということを改めてお伝えさせていただきたいと思います。

なので、ぜひ一緒に仕事をさせていただきたいので、この後懇親会で話しかけていただいてもいいですし、Facebookや直接メールでいただいてもかまいません。いつでもオフィスをご案内しますので、面談という感じではなく、カジュアルにコミュニケーション取らせていただければと思います。

では、このあたりで終わりにしたいと思います。ありがとうございました。

(会場拍手)