2021/06/11 更新
はじめに
このエントリーは SEQSENSE株式会社 への採用 (主にクラウドチームのエンジニア) を目的としたエントリーです。もし興味を持った方は Findy or Wantedly から、もしくは @kamatama_41 まで直接連絡ください。
転職ドラフトにも参加しているので、よければラブコールをお願いします。
SEQSENSEについて
2016年10月に創業したロボットのスタートアップです。惑星探査機はやぶさに搭載されたローバーのミネルバの開発にも携わった明治大学の黒田洋司教授の持つ自律移動ロボットの技術を広く一般に使える形で商用化したいという思いから、CEOの中村と組んで創業しました。
そういった経緯もあり、コアとなる技術は高度な自律移動性能を持ったロボットの製作技術なります。現在は深刻な人手不足に悩む警備業界にフォーカスを当てて、ロボット警備のサービスを提供しています。
2019年8月に商用化を開始して、2021年6月時点で都心のオフィスビルを中心に10の施設で警備ロボットが稼働しています。*1
2021年2月には東京都庁で実証実験も行い、SEQSENSEのロボット (SQ-2) が警備業務を1ヶ月間東京都庁で行いました。
- 『世界を変えない』
- 『ヒト型も、ネコ型も、目指さない。』
というちょっと変わったミッション・開発理念を持っていますが、これは「本当に実用性のあるロボットを世に送りだして、人口減少に向かう社会を、テクノロジーの力で悪い方向に変えない様にしよう」という意味を持っています。詳しくは以下のインタビューが参考になるかと思います。
チームについて
人数はSlackの#randomにいる人が40人で、数えてみるとエンジニアとそれ以外の人が2:1くらいの割合でした。
エンジニアリングチームは大きく4つに分かれていて
- ハードウェア (ロボットのハードウェアの設計・製造)
- ロボソフト (ロボ上で動く自律移動ソフトウェアの開発)
- クラウド (ロボットを管理するWebアプリなどの開発)
- AI (画像認識モジュールの開発)
というチームで仕事を行っています。全然使っている技術が違うので、普段はそれぞれのチームで開発を行っていますが、当然チームをまたいだ機能開発なんかもあるので、その場合は連携して仕事を行います。
クラウドチームの仕事
ここからは私の所属しているクラウドチームの仕事の紹介になります。
クラウドチームが担当しているのは主にクラウド上で動くアプリケーションの開発・運用です。具体的には以下のようなモジュールがあります *3
- 顧客 (警備員) が利用するWebアプリケーション
- 管理者 (我々) が利用するWebアプリケーション
- ロボットから上がってくる情報を処理するWorker
- ロボット上で動くクラウドと情報のやり取りを行うagentプログラム
- ロボットからの動画・音声を配信するサーバ
技術スタックとしては、顧客用のWebアプリケーションがRuby (on Rails)で書かれている以外は、バックエンドの処理はほぼGo言語で書かれています。フロントエンドはReact (Next.js)、内部サービス間の通信ではgRPC, GraphQLなんかが使われています。あとロボットから送られてくる動画をWebで配信する際にWebRTC (pion) を使っていたりもします。クラウドはAWSを使っていて、前述のアプリケーションすべてがECS上のDockerコンテナとして動いています。
その他監視はDatadog, CIはGitHub Actions, インフラ管理はTerraformを使っています。
仕事の進め方としては、すべてのチケットはGitHubのissueとして上げるようにしていて、2週間に1回のスプリント計画MTGで各人がissue一覧から何をやるかを決めて進めていきます。細かい見積もりとかスプリントバックログを作ったりといった厳密さはないゆるいスクラム*4でやっています。今の所は人数が多くないのとそれぞれのメンバーの自律性が高いので大きな問題は出ずにやれています。
システム的な詳細は2020年6月にAWS IoT Loftで発表したときの資料がパブリックに上がってるものでは一番詳しいです
クラウドチームの技術的課題
割と大きめなのを上げるとこんなのがあります。当然この他にもサービスの機能追加・改修などは随時発生しています。
管理アプリケーションのリプレース
社内用の管理アプリケーションは歴史的経緯から、現在Django + jQueryで構築されているのですが、メンテナンス性に課題があるため *5 現在React (Next.js) + GraphQLの構成の新アプリケーションに移行中です。
OTA (over-the-air) アップデートの仕組み構築
ロボットのソフトウェアをクラウド経由で自動でアップデートする仕組みを構築する。
- Docker imageの更新
- systemdサービスの更新
- その他細かいプロビジョニング
- など
現在はメンテナンス時間を取って手動で作業を行ってるのですが、稼働するロボットが100台を超えるスケールになると回らなくなるので、この仕組の構築は急務で、現在はAWS IoT Jobsとスケジューラ (今の所Rundeckを検討中) で行う予定です。
データ分析の基盤構築
商用化を開始して2年ほど経ち、ユーザーやロボットのデータも蓄積してきたので、データ分析をして素早い意思決定やサービス改善に活かしていきたいと考えています。サービス上にある各種統計情報・ユーザーのアクセス情報などデータを集めるところからBIダッシュボードツールを入れてレポーティングするところまで、やること盛りだくさんです。
エレベーター連携
現在は三菱電機さんとクラウド側で連携してロボットをエレベーターに乗せているのですが *6 オフィスビルには他にもたくさんのベンダーのエレベーターがあり、それらも使えるようにすることが喫緊の課題になっています。こちらは様々な方向性を検討中です。
SEQSENSEのクラウドチームで働いて面白いところ
いわゆる普通のWebサービスと一番違うところは、ロボットという実際のモノの開発に携われるところになります。自分の開発した機能でロボットが動いたりするところは非常にユニークな体験かなと思います。
技術的な観点でいうと、Webサービス以外でも、IoT的なロボットとクラウドの双方向のデータのやり取りだったり、動画配信、エレベーター連携など様々なモジュールがあり、それらを非同期で組み合わせて一つのサービスを実現しているところが、難しいながらもやりがいのあるポイントです。
また、SEQSENSEはハードウェアの設計からクラウドサービスの提供まですべて社内で内製しているので、多種多様なバックグラウンドの人と関われるところだったり、まだ未開拓の ロボット警備 という市場を1から作っていけるというのも、大変ですが面白いところだと思います。