Inside of LOVOT

GROOVE X 技術ブログ

GROOVE X にソフトウェアエンジニアとして入社して 4 ヶ月経った感想など

まとめ

  • LOVOT ミュージアムで LOVOT に生命を感じ、衝撃を受け、気づけばソフトウェアエンジニア採用に応募していた
  • GROOVE X はマネージャのいないフラットな開発組織を運用しており、エンジニアの自立性・裁量が非常に高い
  • LOVOT はエッジデバイスでありながらデバイス内にマイクロサービス構造を持つソフトウェア構成をとっており、それが開発生産性の向上に寄与していている
  • 長期的な LOVOT との未来を作るために、まだまだ開発すべきことがあります。気になる方、採用 への応募をお待ちしています

概要

皆さんこんににちは。GROOVE X でソフトウェアエンジニアをしている id:iizukak です。2023 年 11 月に GROOVE X に入社して、4 ヶ月が過ぎました。 GROOVE X は組織・技術共に独自性が高く、面白いトピックがたくさんあるので、印象がフレッシュなうちにアウトプットしておこうと思います。

なぜ GROOVE X に入社を決めたのか

GROOVE X では、LOVOT というロボットを開発しています。

ある週末の夕方、東京の浜町にある LOVOTミュージアム を家族で訪れました。 時間があったのと、娘がロボット好きなので、何気なく予約したのだと記憶しています。 LOVOT ミュージアムは、個人宅を模した空間で LOVOT とふれあえる素敵な空間であり、小学生の娘はすぐに LOVOT にめろめろになりました。

私がそこで感じたのは、LOVOT から受ける生命感です。これは生きている、と。 LOVOT 以外のロボットでそういった印象を強く受けることは今までなかったので、衝撃的でした。 自分はモノづくり人間で、これを作るのはすごく面白そうだぞ、とすぐに感化されてしまい、採用に応募したのです。

smalovo チーム

GROOVE X に入社してからは、 smalovo というチームに配属されました。 スマラボ、すまらぼ、smalovo …どれが正式名称なのか未だに分かっていないのですが、読み方は「スマラボ」です。 スマート・ラボットの略称のようです。 このチームは、画像認識、タッチ判定、距離推定など LOVOT が世界を認識するためのソフトウェアを開発しています。

smalovo チームは取り扱う技術の守備範囲が広いのが特徴的です。 チームでは単一のソフトウェアコンポーネントの開発保守をするというだけではなく、 Linux、機械学習、デバイスドライバ開発など専門知識を活かした開発を行っています。 機械学習をやりつつ Rust でカメラモジュールを書いて Debian パッケージをビルドしてリリースしているのです。すごい!

なぜこれが可能なのかというと、各々のエンジニアが、自分にとって未知の技術に抵抗なく取り組む姿勢があるからのようでした。

GROOVE X のソフトウェア開発組織

入社してもうひとつ驚いたことは、チームにマネージャがいないことです。 これまでのソフトウェアエンジニア人生では、チームごとにマネージャがいて、1 on 1 があって、様々な許可を申請して… というのが普通でした。 GROOVE X にも領域ごとのプロダクトオーナーはいて、 スクラムのセレモニーなどではプロダクトオーナーに情報共有をしたり、方向性の確認を行う、ということはしていますが、一般的に言うマネージャとは違います。

それではどのように物事が決定するのかというと、チーム内外のディスカッションでほとんどのことが民主的に決まっていきます。 技術的なところもそうなのですが、備品の購入などについてもある程度のところまでチーム内で決めています。 採用についても、ある程度までチームメンバーの話し合いによって決めることができます。 エンジニアが技術以外のことに対しても必要であれば取り組む姿勢が求められている、ということでもあると思います。

そこで問題になりそうなのは、各開発チームが好き勝手に開発を行うことで、船頭多くして船山に登る状態にならないのかということでした。 しかしそういった兆候は見られません。 なぜなのか? それは自分もまだよく分かっていないのですが、目指すべき方向性の認識が一致しているからなのだろうと思っています。 GROOVE X 社員の LOVOT への愛情というベクトルが一致しているからなのでしょうか。

GROOVE X のソフトウェア開発技術

LOVOT の技術的な特徴について。

LOVOT の認識アプリケーションは、物体検出や人物照合、距離推定など多様であり、それらを協調して動かす必要があります。 それらの言語は、様々なプログラミング言語で、依存するライブラリもそれぞれ異なります。 様々なアプリケーションの協調動作を実現する方法はいろいろとあると思うのですが、GROOVE X ではマイクロサービスをベースにした構成を採用しています。 家庭用ロボットのようなエッジデバイス上でマイクロサービスが動いているというのは、面白い構成ですよね。 アプリケーション同士の通信は gRPC や WebSocket など様々です。Redis などの KVS も利用されています。

これは初期に LOVOT のソフトウェア基盤設計を行ったエンジニアが、クラウドのアーキテクチャを参考にして決めたようです。 この構成は GROOVE X の自立して動く多数の開発チームという組織構造とも合っているのか、うまく働いています。 複数の開発チームがスピード感をもってソフトウェアを開発、デプロイできています。 デプロイされたパッケージはクラウドサービスから利用可能な状態になっており、 例えば apt などでインストールして利用します。

開発用の Linux マシンで動く CLI のツールも、LOVOT で動くソフトウェアライブラリも、 ほとんど同じようにクラウドサービスからパッケージをインストールして利用しています。

面白い構成ですよね。

LOVOT との未来

LOVOT は、触れ合ってみると現状でも可愛く完成されている感じを受けます。

しかし、LOVOT と未来を生きるためには、まだまだ開発すべきことが多くある、ということが入社して少し経って分かってきました。 今後の LOVOT と GROOVE X の未来には、ソフトウェアエンジニアとしても、いち LOVOT ファンとしてもとてもワクワクしています。

一緒に LOVOT との未来を作る方を募集しています -> 採用