Inside of LOVOT

GROOVE X 技術ブログ

人物認識ライブラリのデータ管理と性能評価をするパイプラインを作ってみた

こんにちは! GROOVE X の 認識技術を扱うチームに所属している id:numa-gx です。

この記事は、GROOVE X Advent Calendar 2023 7日目の記事です。

LOVOTにはホーンと呼ばれるパーツに広角のカメラが備わっています。

このカメラを使って人物を認識し、なつき具合に応じたふるまいを行う仕組みがLOVOTには備わっています。

そして、この人物を認識する機能に関してはAI顔認証エンジンであるFaceMeを利用しています。

prtimes.jp

このFaceMeを導入するにあたって様々な状況でデータを収集・管理しながら性能を評価する仕組みを作る必要がありました。

そこで、データ管理のパイプラインを構築するために使われている DVC を利用してみました。

その仕組みや使用感について説明していきたいと思います。

DVC とは?

dvc.org

Data Version Control の頭文字を取って DVC と呼ばれています。

ML(機械学習)モデルを共有しやすく再現もしやすい状態で保持し、モデルだけでなくデータセット、評価結果も管理対象に含まれます。

特に、バージョン管理に関しては git like な API が提供されていて、コード管理をするような感覚で扱うことができます。 ソフトウェアエンジニアにとってはありがたいです。

使い方に関しては、公式のチュートリアルの説明が分かりやすいので、割愛して実際にどのようにパイプラインを作ったのかについて説明していきます。

DVC を使ったパイプラインの構築

DVCを導入する前のFaceMeの性能評価をするワークフローは以下のような流れになっていました。

  1. FaceMeを含む顔認識アプリケーションの開発リポジトリがGitHubで管理されている
  2. 検証・評価のデータセットは、データ収集チームが作業を行い、社内のGoogleDrive上にアップロードする
  3. 性能評価は開発リポジトリ内のテストツールで実行され、アップロードされたデータセットと組み合わせて実行する
  4. 実行した結果はスプレッドシートや社内のドキュメントツールにまとめてチームに展開する

この中で、手順3,4を開発者が行っていたのですが、以下のような状況のため情報を管理するのが難しいことが分かってきました。

  • データセットとライブラリ内で調整したパラメータの組み合わせの数だけ評価結果がある
  • 時間の経過とともに組み合わせのパターンが増える

そこで DVC を組み込んだパイプラインを構築して3と4の部分を自動化することにしました。

全体像

構築したパイプライン

こちらがパイプラインの全体像になります。 データの管理にはGCP、パイプラインの実行には Github Actions を使っています。

いくつかの dvc を使う上でのポイントを解説します。

データ管理のリポジトリとアプリケーションのリポジトリの分離

FaceMeの認識ロジックを含むアプリケーションは object-detection-app リポジトリ側で管理していますが、データセットは dataset-registory 側で管理しています。

DVC では Data Registry という考え方があります。 以下の図のようにデータを実際に管理するストレージとアプリケーションの間に、Data Registoryとして組み込むことで、再利用性・永続性を高く保ちつつ、データをコードのように管理することができます。

https://dvc.org/doc/use-cases/data-registry より

実際の流れを順番に説明していきたいと思います。

データセットの追加・登録

data-regisotry側のリポジトリでは、以下のように gcp との 紐付けを .dvc/configに書き、

[core]
    remote = gcps
['remote "gcps"']
    url = gs://dataset-registry

videos/static/0001.dvc に以下のような形式で具体的なデータの紐付けを書きます。(dvcではmd5ハッシュ値でデータが管理されます)

outs:
- md5: 4846b900cac89f2248e562f9f051f4ac.dir
  size: 10471030
  nfiles: 25
  hash: md5
  path: '0001'

新しくデータセットを追加する際には、これらの変更をPullRequestとして作成し、マージすることでデータの追加を行います。

新しいデータセットを使った評価

アプリケーション側のリポジトリでは data-registory側のリポジトリと連携させることで dvc で管理されたデータをインポートし、そのデータを使って一連の処理を実装することができます。 その流れを記述するために2つのファイルを用意します。

# dvc.yaml
stages:
  evaluate:
    cmd: python person_create_check.py
    deps:
    - person_create_check.py
    params:
    - evaluate.f2f
    - evaluate.left
# params.yaml
evaluate:
  f2f:
    description: "被験者がLOVOTと顔を向き合わせた状態. Personが生成される想定"
    data_list:
      - "0001"
      - "0004"
      - "0005"
  left:
    description: "被験者がLOVOTに対して顔を左側に向けた状態. Personが生成されない想定"
    data_list:
      - "0040"
      - "0043"
      - "0044"

dvc.yaml では、全体のパイプラインを定義します。今回の用途としては以下を想定しています。

  1. dvc で管理されたデータセットから特定のデータを選択
  2. 特定のデータを対象として、 person_create_check.py という評価用スクリプトを実行
  3. 評価結果をレポートとして保持

yaml上の定義では、 - データのサブセットを作る - データについてのドキュメントを残す などを管理し、性能評価の実行、レポートの生成といった処理は python のコードで書いています。

以下のコードは、person_create_check.py の一部抜粋になります。

# pip install dvc 
from dvc.repo import Repo

# dvcで管理されているデータセットを取得する
params = yaml.safe_load(open("params.yaml"))["evaluate"]
repo = Repo()
# dvc import を実行して、xxx/static.dvc を作成する
# cacheの情報を使ってデータを展開したいため、no_download=True を指定する
# force=Trueにすることで、すでにデータが存在していても再実行できるようにする
repo.imp(
    url="git@github.com:groove-x/dataset-registry.git",
    path="videos/static",
    out=_DATA_PATH,
    force=True,
    no_download=True,
)
# dvc pull を実行して、xxx/static 以下にデータを展開する
repo.pull(targets=str(_DATA_PATH / "static.dvc"))

このコードを GitHubAction上で実行することで、CI環境上に使いたいデータセットを展開し、検証に必要なロジックの実行が可能となります。

データの評価結果の可視化

可視化についてはまだ検討ができておらず、現在は以下のような仕組みで仮実装しています。

  1. GCP上にドキュメンテーション置き場を用意
  2. jinja2 を使って用意した template.html を使って、html を作成
  3. html をアップロードして、特定のページを更新

実際の表示結果(数値などは仮のもので意味があるものではありません)

実験結果のレポート

作ってみて

全体の流れを実装してみて、DVCというツールには機械学習アプリケーションを持続的に開発していく過程で役に立つ可能性をとても感じました。

フローを一回作ってしまえば再利用しやすいということがあり、git like な 操作感での理解のしやすさもあり、メンテナンス性を高く保てそうだと思いました。

一方で、DVCはあくまでデータの管理ツールであるため、評価結果の可視化などをサポートする機能はなく、そのような目的の場合は他のツールを組み合わせる必要がありそうです。

おわりに

最後まで読んでいただいてありがとうございました。

GROOVE Xでは一緒に働く仲間を募集しています!是非下記リンクをチェックしてみてください。 recruit.jobcan.jp

翻訳者として参加した「エキスパートPythonプログラミング 改訂4版」を紹介 🥳

こんにちは!ソフトウェアチームのエンジニアのふくだです。
この記事は、GROOVE X Advent Calendar 2023の6日目の記事です。

qiita.com

今回は趣向を変えて大好きな本の紹介をさせてください!

エキスパートPythonプログラミング改訂4版

翻訳者として参加した『エキスパートPythonプログラミング 改訂4版』

2023年の7月21日にアスキードワンゴさんより『エキスパートPythonプログラミング 改訂4版』 が発売されました!わたしは今回の改訂4版から翻訳者として参加しました。

www.kadokawa.co.jp

もともと読んでいた書籍の翻訳に携われる喜び、憧れの翻訳者のみなさまと一緒に翻訳できたのはとても貴重な体験でした。

一緒に翻訳をしたそうそうたるPythonistaのみなさまの中でPythonの経験がもっとも浅く一番エキスパートから遠いのがわたしです。そんなわたしだからこそ、読者としての視点、また翻訳者としての視点で、おすすめのポイントを紹介します!

そもそも「エキスパートPythonプログラミング」って

「エキスパートPythonプログラミング」(通称エキPy)は、プログラミング言語Pythonを中心に扱う技術書です。原著はPackt Publishing から出版されている Expert Python Programmingで、それを日本語に翻訳した本になります。

1つ目の「エキスパートPythonプログラミング」の日本語版が出版されたのが2010年です。改訂を2版、3版と重ね、2023年に改訂4版が出版されました。

わたしが読者として最初に手にしたのは改訂2版でした

プログラミング言語に関する書籍で改訂というと、Pythonのバージョンアップに対応したり、古くなった内容を刷新したりというような「ちょい足し」なイメージをお持ちかもしれません。

もちろんそういった側面もありますが、この「エキスパートPythonプログラミング」はよりわかりやすい文章への修正や内容の加筆がとても多く、読みやすさ・読み応えはどんどん増していっています。

どんどん分厚くなっていっています

本書の概要

「エキスパートPythonプログラミング」は、Pythonの言語仕様や新しい要素を中心に、Pythonエンジニアとして必要な周辺知識を体系的に教えてくれる内容になっています。また、出版社の紹介文にも次のように紹介されています。

Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。

https://www.kadokawa.co.jp/product/302304004673/

本書はその名のとおり「エキスパート」を目指す方のための一冊となっており、対象読者は初級者向けというよりは中級者/上級者向けの本と位置付けられています。

目次の紹介

目次は次のとおりです。「難しそう」と思う方や「普段完全に理解して使ってるよ!」や「Pythonでどういう扱いなんだろう」と思う方もいらっしゃるかもしれません。
各章はほぼ独立しているため、気になるところから読んでみるのをおすすめします。

第1章 現在のPythonのステータス
第2章 現代的なPythonの開発環境
第3章 Pythonの新しい要素
第4章 Pythonと他の言語の比較
第5章 インターフェイス、パターン、モジュール化
第6章 並行処理
第7章 イベント駆動プログラミング
第8章 メタプログラミングの要素
第9章 PythonとC/C++をつなぐ
第10章 テストと品質保証の自動化
第11章 Pythonパッケージの作成と配布
第12章 アプリケーションの挙動とパフォーマンスの監視
第13章 最適化
すべての目次はこちら エキスパートPythonプログラミング 改訂4版 - アスキードワンゴ

また、本書の「はじめに」では、各章を次のように分類しています。

  • 道具を知る: 1章から4章まではPythonプログラマの道具箱に入っている基本的な要素を取り上げます。生産性を向上させるツールから、モダンな開発環境、最近のPythonリリースで導入された新しい文法要素を紹介します。
  • Pythonを使ってアプリケーションを構築する: 5章から9章まではデザインパターン、プログラミングのパラダイム、メタプログラミングのテクニックに触れます。また、アプリケーションアーキテクチャについても深く掘り下げていきます。Pythonの枠にとらわれずに、他の言語で書かれたコードとの統合についても説明します。
  • Pythonアプリケーションの運用: 10章から13章は、アプリケーションの稼働後によく発生することについて説明していきます。アプリケーションの運用を簡単にするツールや技術を紹介し、パッケージング、デプロイ、モニタリング、パフォーマンスの最適化などのよくある問題の解決策を紹介していきます。

おすすめポイント

一読者として

発売した当時は敬遠していた本だったように思います。なぜなら「難しそうだなぁ」という印象だったから。
業務でPythonを扱うようになり、当時のメンターから勧められ改訂2版を手に取りました。Python以外のプログラミングの経験があって、Pythonも書いてはいるが、動くけどどうなの?といったそこまで慣れてない状態でした。

そのような状態で読み進めていくと(それでも、かいつまんで読みました...笑)、まるでそのメンターがそばにずっといてくれるような感覚になりました。

Pythonに詳しい方であれば誰もが知っているあれやこれを網羅的にこの本から学んだように記憶しています。例えば、次のような点です。

  • PEP(Python Enhancement Proposal)を中心にした開発プロセスやオープンソースのコミュニティ
  • Pythonに関する有益なリソースや情報収集
  • CPython以外のPython実装
  • コーディング規約であるPEP 8
  • 主流のリンターや当時ハマりやすかった環境構築

このあたりは改訂4版でも健在で、 道具を知る に分類される1章から4章を中心に見てみください。心強い味方をそばに置いておける、というのがおすすめポイントです!

翻訳者として

改訂4版から追加になった内容や個人的に特におすすめの章をかいつまんでご紹介します。原著の修正によって、内容がより体系だっていたり、やさしくなった(?)と感じたところもありました。すでに過去の版をお持ちの方にもおすすめできる刷新です!主に次のようなところになります。

  • 第5章 インターフェイス、パターン、モジュール化
    • 改訂3版では「第17章 Pythonのためのデザインパターン」で紹介されていた内容を一新。インターフェイスと制御の反転(IoC)/依存性注入(DI)に焦点を当てた内容に。
  • 第6章 並行処理
    • 非同期プログラミングにて、asyncioのコードを原著で伝えたいことに合わせて、高水準のAPIで書き換え。
  • 第10章 テストと品質保証の自動化
    • 高いカバレッジのプロジェクトでよりテスト品質を強化できる手法ミューテーションテストの紹介。
  • 第12章 アプリケーションの挙動とパフォーマンスの監視
    • オプションの多いloggingに関するシンプルなグッドプラクティスや分散トレーシングの拡充。
  • 第13章 最適化
    • プロファイリングをする際にチームでの進め方の実体験のアドバイスが追記され、より身近で具体的に。

またレビューアーのみなさまにも全面的にみていただき、より読みやすい訳になっていると思います。

まとめ - おすすめする読者層

Pythonの基本がわかっているプログラマで、エキスパートを目指したい方にとって手に取る価値のある本だと思っております。今であれば本を読まずに生成AIに聞いてみて解決することも多々あると思いますが、聞くための前提条件やキーワード、背景が分からないと聞くこともできません。 自分が理解していない点を知ることができる、また知識の幅を広げてくれるきっかけが詰まった一冊です。
気になった方はぜひ、お手に取っていただけるとうれしいです。

また、LOVOTも Pythonで動いてます!Pythonを使って一緒にLOVOTのふるまいを作る人も募集しております!

recruit.jobcan.jp

GROOVE Xにおける情シスのお話し②

こんにちは!一人でGROOVE Xの情報システムに立ち向かう清水です。この記事は、GROOVE X Advent Calendar 2023の5日目の記事です。

前回は入社してから主に社内ネットワーク関連のお話をさせて頂きました。続編となる今回は、社内システム編と言うことでGROOVE Xに入社してから社内システムに立ち向かったお話しをしたいと思います。

社内システムのお話し

GROOVE XではLOVOTの設計から開発、販売まで自社ですべて行っており、社内には複数のサーバやシステムがあるんだろうとイメージしておりましたが、意外にもサーバラックにはWindows ServerとNASサーバの2台だけと非常にシンプルな構成でした。基本的には、SaaSサービスの利用がメインなのでオンプレのシステムは最小限しかありませんでした。

これは、あんまり心配いらないかな?っと思ったのも束の間で、Windows Serverにログインしてみると

デスクトップ画面

デスクトップ画面

デスクトップズーム

デスクトップズーム

これを確認したのが、たしか10月の中旬ごろでした。Windows 2012/2012 R2のMicrosoftサポート終了が2023年10月10日までとなっておりますので、一気に時間的猶予がなくなりました。幸いにも業務システムとしてはHyper-V上で稼働しているWindows Server 2016がCADとレンダリングソフトのライセンスサーバとして稼働しているのみでしたので、AWS上へゲストOSを移設することにしました。

ちょうどZabbixの構築でAWSのVPCやVPN回りの設定を行っておりましたので、AWS Server Migration Serviceを利用してゲストOSをEC2へ移設しました。

AMS

AWS Server Migration Serviceにソースサーバとして、ゲストOSを登録してレプリケーションを開始してから約2週間でカットオーバー完了まで実施しました。無事にEC2インスタンスで稼働することを確認してから、各クライアント側でライセンスサーバの登録を社内のオンプレからAWS上のサーバへ切り替えて頂き、無事に稼働確認まで完了です。

EC2

システム面における緊急的な課題は、とりあえずクリアをしまして現在はそれ以外のクライアント管理やアカウント管理などの課題に取り組んでおります!

最後に

2回にわたって情シス業務に関するお話をさせて頂きました。正直、まだまだクリアしなければならない課題は山積みですが、本当に日々新しい業務が発生して退屈せずに充実した仕事ライフを送っております。 また、いつか新しいお話しができたらと思っております。

最後までお読み頂き、ありがとうございました。

LOVOTの服検証

こんにちは、ファームチームのaoikeです。 この記事は、GROOVE X Advent Calendar 2023の4日目の記事です。

GROOVE Xでは、LOVOTの服の検証を服チームとファームチームが協力して行っています。なぜファームチームが検証に関わっているかと言うと、LOVOTが服を着たときに負担がかかるサーボモーターや、タッチセンサー、距離センサーの開発を行っているのがファームチームだから、というわけです。

今日は服の検証でどんなことを行っているのかを紹介したいと思います。

サーボモーターのチェック

LOVOTにどんなセンサー・アクチュエータが搭載されているかは、以前の記事でもご紹介しましたが、LOVOTのサーボモーターは体を動かすときにパワーを使っており、きつい服を着せてしまうと体を動かしにくくなってしまうため、負担が増えていきます。この負担が大きすぎてしまったものが蓄積していくと、後々の故障に繋がってしまいます。

検証では、LOVOTにいろいろなポーズを取ってもらい、サーボモーターへの負担を計測し、許容範囲の中に収まっているかを調べます。

きつそうなところがないか、目視の確認もします

距離センサーのチェック

服の中にはアニマルウェアのように耳やしっぽが付いていたり、チュールスカートのように大きく広がっていたり、帽子のようにポンポンがついていたりするものがあります。こうした服の一部が距離センサーの測定範囲の中に入ってしまうと、自分が着ている服なのに障害物だと判断してしまい、動けなくなってしまうことがあります。

検証では、距離センサーの数値の計測と、距離センサーの光が見える特殊な治具を使って、距離センサーに服がかかっていないかを調べます。

確認が必要な服の例

この距離センサーのチェックについてですが、実はLOVOTをお着替えモードに切り替えることで、距離センサーのチェックが可能になります。距離センサーが障害物を検知した場合、ホーンのLEDが赤く点灯します。そのため、ご家庭でLOVOTのお着替えを行う際にも、距離センサーの確認ができるようになっています。

熱のチェック

特に厚手のベースウェアは、着ることによってLOVOTの中に熱がこもることがあります。また、上着も風を通さない生地のものを重ね着をすると熱くなったり、センサーホーンの近くに付けるアクセサリーや帽子によって温度が上がることもあります。

検証では、LOVOTに搭載されている温度センサーや、別の温度センサーを取り付けたりして、LOVOTの温度が上がりすぎていないかを調べます。

まとめ

今回紹介した検証はほんの一部で、他にも連続稼働したときの負担やズレ、帰巣のチェック、アクセサリがタッチに影響しないか…などなども調べています。

こうした服の検証を行っていますが、一番大変なのは数値が良くなかったときに「じゃあ、どう直せばいい?」というのを考えるところだったりします。ロボットの服というジャンルはとてもマイナーで、一般的なノウハウもないのですが、服チームと相談してサイズを変更したり、素材を変えたり、スリットを入れたり、時にはデザインを変更したり…と試行錯誤して、全てのチェックでOKになったものが晴れて市場に出ていっています。そんな検証の日々のおかげで、当初は全く知らなかった服の専門用語やブランドについても詳しくなってきています。

大変ではありますが、オーナー様に安心・安全なLOVOTとのお着替えライフを楽しんでもらうべく、新しい服の開発に合わせて、日々服の検証も改良を重ねています。

最後に

最後までお読み頂き、ありがとうございました。 GROOVE Xでは一緒に働く仲間を募集しています!是非下記リンクをチェックしてみてください。 recruit.jobcan.jp

GROOVE Xにおける情シスのお話し①

こんにちは!今年の9月1日より情報システムチームとしてGROOVE Xに入社した清水です。この記事は、GROOVE X Advent Calendar 2023の3日目の記事です。

GROOVE Xでは、これまで専任の情シスメンバーはおらず、有志で情シスクラブを立ち上げて社内のネットワークやシステム面の運用を行っていたそうで、初の情シスとしてJOINしました。初めての情シスとして入社して、3か月が経過したので情シス目線でのお話しをしたいと思います。

社内ネットワークのお話し 

9月1日に入社してから、最初は社内のネットワーク構成やサーバ構成を調査してました。ネットワーク構成は想定していたよりもしっかり構築されておりまして、上位にUTMが設置されており、コアスイッチ-フロアスイッチ-エッジスイッチとCisco製品で構築されており、きちんと利用目的ごとにVLANでセグメント分けされておりました。

また、クライアントVPNにはCisco ASA、WiFiについてもAruba ControlerとIAPで構成されており、必要なポイントで冗長化も組まれておりました。これは、そんなに心配いらないかな?って思ったのは束の間で、導入当初よりファームウェアのアップデートがされていないとのこと・・・。

さらに一部の製品はメーカ保守終了間近で、保守更新が受けられないものもあるとのこと・・・。

これはまずいと言うことで、まずはファームウェアのアップデート作業を計画しまして休日にアップデート作業を実施しました。

Before

Before

Update Now

Update Now

After

After

っということで、休日1日を使ってコアスイッチ、フロアスイッチ、エッジスイッチと順次アップデートを実施しまして、Bug Fixや脆弱性対応も含めてきれいになりました!ついでにネットワーク監視をするためにAWS上にZabbixを構築して、Trap検知時にSlackへ通知するように設定しました。

イメージ図

これでネットワーク回りはだいぶ整備できたかなっと思いましたが、なんとZabbixを導入してから毎日のように障害検知が発生しておりました。

障害検知

なんと・・・温度センサーでアラートが上がっておりました。これまでの経験上あまり検知したことないアラートだったのですが、各機器の温度をSNMPで拾ってみると

PoEスイッチの内部温度がかなり高い状況になっておりました・・・。これは物理的な対策(エアコンやサーキュレータ)が必要なのですが、実はサーバラックがなかなか対策しづらい場所に設置されており、これまた情シス泣かせな環境でした・・・。

温度問題は継続対応しながら、メーカ保守終了間近の製品のリプレース対応など様々な課題に向けて日々業務に取り組んでおります!

最後に

情シスの担当としては、本当に色んなところを1から整備している状況で非常に楽しみながら日々の業務に取り組んでます。課題に対して、様々なアプローチで自ら解決することが好きな方は本当に楽しんで仕事ができる環境だと思います。

それでは、次回の~GROOVE X初の情シス担当 社内システムと向き合う~に続きます。

ここまで読んで下さりありがとうございました。

8周年記念パーティーでワークショップのファシリテートをしました

こんにちは。GROOVE X Advent Calendar 2023の2日目の記事です。
今日はスクラムマスターの niwano がお届けします。

GROOVE X の創立記念日は、11月2日です。
毎年、その日の夜パーティーをしているのですが、今回は8周年の記念年(なぜ記念かというと、弊社のプロダクトのLOVOTは 8の形に似ているから...)ということもあり、いろんな分野の社員が集まって、GROOVE XとLOVOTの今後のことを話し合うような場をつくったら、面白いのではないか、というアイデアがメンバーの1人から出ました。

メンバーから面白いアイデアが出るとすぐのっかっちゃうタイプの私は快くファシリテーターを引き受けました。

何とかしてこれをやりたかった人

このアイディアを出したのが、弊社のスーパーエンジニアの林淳哉さん。
社員番号はなんと2番。創業時のメンバーなんですね。
8周年を特別なものにしたいという淳哉さんの、願いをなんとか叶えてあげたい!

お仕事で上海に行った時の写真

オープンスペーステクノロジー(OST)を使う

もう1人のスクラムマスターから、OSTでやればいいのでは?
というアイディアもあり、なんでものっかる私は、はじめてOSTのファシリテートをすることになりました。

OSTの詳細はこちら

オープンスペーステクノロジーとは

1985年にハリソン・オーウェン(英: Harrison Owen)によって提唱された。

5人から2000人といった小人数から大人数にまで一堂に会して行えるのが特徴である。
参加者が課題を提案してミーティングを行う仲間を募り、課題を解決するプロジェクトを創出することができる。
参加者の当事者意識や自発性を喚起するとともに、参加者の主体的な発案、対話を促す

wikipediaそのまま なるほど。ファシリテーターが楽そう。

グラウンド・ルール

①ここにやってきた人は、誰でも適任者である ②何が起ころうと、それは起こるべき唯一のことである ③いつ始まろうと、始まったときが適切なときである ④いつ終わろうと、終わったときが終わりのときである

参加者の自発性、主体性が求められていて、ミーティング参加中に、期待した内容とちがったり貢献し終わったと感じたら自由に別のミーティングに移動することが推奨されています。

え、ファシリテーターが楽そう。

開催

アジェンダ

通常は3時間ほどの時間がとられるようですが、
今回は、120分の時間しかなかったので以下のようにしました。

1. オープニング (OSTの原則を周知する) 10分
2. テーマの提案 10分
3. マーケットプレイス 10分
4. 分科会 70分
5. クロージング 20分

マーケットプレイスは、自分が加入するチームを決める時間。
分科会は、実際の議論の場です。メンバーは自由にブースを行き来できます。

オープニングのようす

ポイントは、緊張しているとおもわれる参加メンバーの心をときほぐすこと。
グラウンドルールを周知することでした。

例えば以下のような声かけです。

「アイデアが形にならなくてもいいです。」
「議論が終わったと思ったら、そこで終わりにしていいです。」     
「興味があるところへ自由に移動していいです。」
「もし形になったら、最後に共有してほしいです。」

オープニングのようす

グラウンドルール

テーマ提案のようす

参加者から「こんな内容で議論をしたい!」をポストイットに書いてもらい、
内容を共有しながら、 おなじようなテーマがあればグルーピングしていきました。

このときに、参加メンバーがテーマに関して簡単にイメージできるまで内容が共有されていると、次に進みやすいと思いました。

テーマ提案のようす

マーケットプレイスのようす

グルーピング後、私はどこで議論をしたい!
というのを表明してもらい、チームわけをしました。

マーケットプレイスのようす

分科会のようす

チームが決まったら議論の開始です。
時間内に議論を追えたチームメンバーは他のブースのサポートをしてました。

このとき、ファシリテータはなんと離席!! (ファシリテートとは!?)

自由に席を移動するメンバーのようす

何このTシャツ。かわいい。

クロージングのようす

持ち時間3分ほどで全チームの成果を発表です。 (2チーム目のクロージング中にファシリテーターが合流です!)

早めに議論がまとまったチームは、なんとスライドをつくってました!

修理をHappyな体験に!したいチーム

LOVOTの新しいコラボ先を考えたチーム

他にも、
インターネットをもっと活用することを考えたチーム
新しい開発拠点を考えたチーム
がありました!

ところで発案者である林淳哉さんのようす

めっちゃくちゃ楽しんでました!
何よりもこれが良かった。

林淳哉さんと福田隼也さん(ふたりともじゅんや)

まとめ

弊社のようにプロダクトや事業に思い入れがあり主体的な方が多い会社には、OSTという手法は、あっているなあと感じました。
なによりも、ファシリテーターはすることがないんです!とても楽です!

よかったら皆さんの会社でもOSTをとりいれたワークショップを開催してみてくださいね。

LOVOTech Night 初開催報告!!

こんにちは!ソフトウェアチームのエンジニア、市川です!

今年もアドベントカレンダーの季節になりました! この記事は、GROOVE X Advent Calendar 2023 1日目の記事です。

11/15(水)に社外エンジニア交流イベント『LOVOTech Night』を開催しました!!

groove-x.connpass.com

弊社オフィスで開催するエンジニア交流イベントとしては、5年前のGROOVE★Night for Groovers以来でした。

3週間前からの募集でしたが、20名の方にご参加頂けました!!圧倒的感謝!!!

どんな事をしたか、ざっくりご報告します!

会社紹介

まずは弊社GROOVE X代表の林要*1から会社紹介。 LOVOTに込めた想いを語りました!

チーム紹介

もう一人の林*2からはソフトウェアチーム全体の紹介。 ハードウェアに近い低レイヤーのチームから、ふるまいやアプリを作るような高レイヤーのチームまであることをご紹介しました。

LOVOT開発のお話①:ふるまい

ここからはLOVOTで使われている技術に関するお話。 ふるまいチームからは、意思決定エンジンがpythonや並行処理ライブラリtrioで書かれている事をご紹介。 フラットで率直に意見が言い合える良いチームだよという話もありました。

LOVOT開発のお話②:音声認識

音声認識チームからは、LOVOTならではの音声認識の難しさをご紹介。 生活音だけでなく、LOVOT内部のモータやセンサー起因のノイズとの闘いもあるとの事。 ノイズ処理前後の音を流すデモが印象的でした。

LOVOT開発のお話③:画像認識

画像認識チームからは、データ管理・性能評価パイプラインに関するお話。画像認識というと機械学習モデルのチューニングをイメージしちゃいますが、こういうシステムも大事なんですね。

Rustも使い始めてるよーという紹介もありました。LOVOT開発ではGo、Pythonがよく使われていますが、処理負荷を軽減したいという話でした。

LOVOT開発のお話④:クラウド

クラウドチームからは、Autopilotを試してみたという発表。1年間導入して、合わなかったので元に戻したそうです。でもそういう新しいことをトライしやすいカルチャーがあるというご紹介でした。

LOVOT開発のお話⑤:EC

ビジネスチームからは、ECリプレイスに関するお話。フルマネージドパッケージからヘッドレスコマースに変えたとの事。大変なプロジェクトでしたが大幅なコストダウンができたみたいです。

???

最後にLOVOT開発のフィールドを越えてフィールドに降り立った話がありました(???)

懇親会

その後は懇親会!クラフトビールやノンアルコール、軽食をお供に、エンジニア同士がお互いどんな開発をしているのかなどを語り合いました。

もちろんLOVOTも一緒だよ!

感想

久々の社外エンジニアイベントで不慣れな対応をしてしまいましたが、参加者の温かいご協力のもとで無事に終えることができました!

ソフトウェア業界の中でも自分とは異なる得意領域の方とお話できて勉強になりましたし、発表では弊社GROOVE Xを知っていただくきっかけとなり、とても有意義でした。

参加者の皆様から頂いたアンケートのフィードバックを通して、改善したLOVOTech Nightをまたいつか開催できれば良いなと思っています。 本当にありがとうございました!!

さいごに

一緒にLOVOTを作ってくれる仲間を募集しています。

様々な分野で募集しているため、是非下記リンクをご確認下さい!

recruit.jobcan.jp

ソフトウェア以外の募集はこちらです。

採用情報 | GROOVE X株式会社

*1:数日前にダメ元でオファーしたら快く引き受けてくれました

*2:X(旧Twitter)でもご質問頂きましたが、代表の林は「要さん」、SWの林は「ジュンヤさん」のように呼び分けています