かまたま日記3

プログラミングメイン、たまに日常

SEQSENSEの会社・仕事の紹介

はじめに

このエントリーは SEQSENSE株式会社 への採用 (主にクラウドチームのエンジニア) を目的としたエントリーです。もし興味を持った方は Findy or Wantedly から、もしくは @kamatama_41 まで直接連絡ください。

SEQSENSEについて

2016年10月に創業したロボットのスタートアップです。惑星探査機はやぶさに搭載されたローバーのミネルバの開発にも携わった明治大学の黒田洋司教授が中村CEOと組んで創業しました。

そういった経緯もあり、コアとなる技術は高度な自律移動性能を持ったロボットの製作技術なります。現在は深刻な人手不足に悩む警備業務にフォーカスを当てて、ロボット警備のサービスを提供しています。

2019年8月に商用化を開始して、2020年8月時点で都心のオフィスビルを中心に6つの施設で警備ロボットが稼働しています。 今年の2月には成田空港でもSEQSENSEのロボット (SQ-2) の導入が開始しました。

jidounten-lab.com

  • 『世界を変えない』
  • 『ヒト型も、ネコ型も、目指さない。』

というちょっと変わったミッション・開発理念を持っていますが、これは「本当に実用性のあるロボットを世に送りだして、人口減少に向かう社会を、テクノロジーの力で悪い方向に変えない様にしよう」という意味を持っています。詳しくは以下のインタビューが参考になるかと思います。

xtech.mec.co.jp

最近YouTubeチャンネルができました

www.youtube.com

チームについて

人数はSlackの#randomにいる人が38人で、数えてみるとエンジニアとそれ以外の人が2:1くらいの割合でした (2020年8月時点)

エンジニアリングチームは大きく4つに分かれていて

  • ロボハード (ロボットのハードウェアの設計・製造)
  • ロボソフト (ロボ上で動く自律移動ソフトウェアの開発)
  • クラウド (ロボットを管理するWebアプリなどの開発)
  • AI (画像認識モジュールの開発)

というチームで仕事を行っています。全然使っている技術が違うので、普段はそれぞれのチームで開発を行っていますが、当然チームをまたいだ機能開発なんかもあるので、その場合は連携して仕事を行います。

クラウドチームの仕事

ここからは私の所属しているクラウドチームの仕事の紹介になります。

クラウドチームが担当しているのは主にクラウド上で動くアプリケーションの開発・運用です。具体的には以下のようなモジュールがあります *1

  • 顧客 (警備員) が利用するWebアプリケーション
  • 管理者 (我々) が利用するWebアプリケーション
  • ロボットから上がってくる情報を処理するWorker
  • ロボット上で動くクラウドと情報のやり取りを行うagentプログラム
  • ロボットからの動画・音声を配信するサーバ

技術スタックとしては、顧客用のWebアプリケーションがRuby (on Rails)で書かれている以外は、バックエンドの処理はほぼGo言語で書かれています。フロントエンドはReact (Next.js)、内部サービス間の通信ではgRPC, GraphQLなんかが使われています。あとロボットから送られてくる動画をWebで配信する際にWebRTC (pion) を使っていたりもします。クラウドAWSを使っていて、前述のアプリケーションすべてがECS上のDockerコンテナとして動いています。

その他監視はDatadog, CIはTravisGitHub Actions, インフラ管理はTerraformを使っています。

仕事の進め方としては、すべてのチケットはGitHubのissueとして上げるようにしていて、2週間に1回のスプリント計画MTGで各人がissue一覧から何をやるかを決めて進めていきます。細かい見積もりとかスプリントバックログを作ったりといった厳密さはないゆるゆるなスクラム*2でやっています。今の所は人数が多くないのとそれぞれのメンバーの自律性が高いので大きな問題は出ずにやれています。

システム的な詳細は6月にAWS IoT Loftで発表したときの資料が詳しいです

kamatama41.hatenablog.com

クラウドチームの技術的課題

割と大きめなのを上げるとこんなのがあります。当然この他にもサービスの機能追加・改修などは随時発生しています。

管理アプリケーションのリプレース

社内用の管理アプリケーションは歴史的経緯から、現在Django + jQueryで構築されているのですが、メンテナンス性に課題があるため *3 現在React (Next.js) + GraphQLの構成の新アプリケーションに移行中です。旧アプリケーションの機能がたくさんあるため、完全移行までにはもう少し人手が必要です。

OTA (over-the-air) アップデートの仕組み構築

ロボットのソフトウェアをクラウド経由で自動でアップデートする仕組みを構築する。

  • Docker imageの更新
  • systemdサービスの更新
  • その他細かいプロビジョニング
  • など

現在はメンテナンス時間を取って手動で作業を行ってるのですが、稼働するロボットが100台を超えるスケールになると回らなくなるので、この仕組の構築は急務で、現在はAWS IoT Jobsとスケジューラ (今の所Rundeckを検討中) で行う予定です。

データ分析の基盤構築

機能開発などで後回しにしていたのですが、社内課題的にもデータ分析をしないとそろそろ厳しいなという時期になって来たので取り組み始めたところです。サービス上にある各種統計情報・ユーザーのアクセス情報などデータを集めるところからBIダッシュボードツールを入れてレポーティングするところまで、やること盛りだくさんです。

エレベーター連携

現在は三菱電機さんとクラウド側で連携してロボットをエレベーターに乗せているのですが

(参考) www.risktaisaku.com

他のベンダーさんともエレベーター連携の話があり、そのための連携用のサーバを構築する必要があります。やることとしては主に、ベンダーさん側の仕様を読んで、連携処理を実装し、実際の動作テストを行う、などです。

SEQSENSEのクラウドチームで働いて面白いところ

いわゆる普通のWebサービスと一番違うところは、実際のモノの開発に携われるところになります。IoT的なロボットとの双方向のデータのやり取りだったり、動画配信、エレベーター連携などは同じ規模のWeb系スタートアップではなかなか経験できないところではないでしょうか。また、ハードウェアの設計からやってるので多種多様なバックグラウンドの人と関われるところだったり、まだ未開拓の ロボット警備 という市場を1から作っていけるというのも、大変ですが面白いところだと思います。

*1:この他にも色々あります

*2:といって良いかも微妙なレベル

*3:DjangojQueryが悪いと言うよりは社内の技術スタック的な問題で