Hylable Discussion の改良の歴史 ―ソフトウェア・システム編―

こんにちは。ハイラブル株式会社の菅原です。開発責任者として日々ハイラブルのサービスの開発・改良に取り組んでいます。
ハイラブル株式会社は、2021年11月21日をもちまして創立5周年を迎えました。
対面の話し合い見える化サービス Hylable Discussionが創立当初の初期版と現在の最新版とでどれくらい改良されたのかを紹介したいと思います。

はじめに

前回の記事ではハードウェアや筐体など物理的な部分の改良について紹介しました。
この記事では、ソフトウェアやシステム構成の改良について紹介します。

主な改良ポイントは、レコーダーをIoT化してインターネットに繋がっていればどこからでも録音操作や状況確認ができるようになったことと、録音中にリアルタイムで分析結果が表示できるようになったことです。

初期版 (2016/11~2019/3)

創業当初、サービス名はDiscussion Assessment Service (略称:DAS。読み方:ダス。) としていました。
しかし、お客様にはなかなか浸透せずサービス名も社名と同じく「ハイラブル」と呼ばれることが多かったです。

初期版は以下のようなシステム構成でした。

まずStationという専用アプリをパソコンにインストールする必要がありました。このStationからのみ録音操作ができるようになっていたのですが、Stationをインストールしたパソコンとマイクを制御する制御用デバイス(Raspberry Pi)が同一のWi-Fiネットワークに繋がっている必要がありました。
そして録音停止後に録音データを制御用デバイスからStationに吸い出し、そこからサーバにアップロードされるようになっていました。
分析処理の進捗状況や分析結果はアップロード完了後にブラウザから見れるようになっていました。

この構成で辛かったポイントは下記です。


初期版:辛かったポイント
  • Stationのインストールが必要
  • Wi-Fiルータの上限台数までしか接続できない
  • Stationから制御用デバイスの存在を検知する方法の効率が悪く、ネットワークの圧迫や検知の失敗が頻発する
  • 起動しているかどうかや録音中かどうか、録音データのアップロード状況がStationからしかわからない
  • 録音データのアップロードに時間がかかる
  • 録音データのアップロードに失敗すると最初からアップロードやりなおし
  • 録音後アップロードが完了してから分析するため分析結果が確認できるまでに時間がかかる
  • 制御用デバイスの電源をON/OFFすると、その中の制御プログラムがごくまれに壊れて起動しなくなる

前回の記事でもご紹介した800人規模の新人研修の際にもいろいろとありました(汗)


  • 事前に各講師のパソコンに各講師のアカウントでログインし、Stationをインストールする必要があった
  • モバイルルータで運用していてWi-Fiが不安定となったためか検知できない制御用デバイスが続出した
  • 80台のうち何台か起動しなくなり、予備機と差し替えたりその場で復旧を試みたりした

また実際の利用時に外部から状況がまったくわからないため、研修中はお客様の運営担当者2名とハイラブル代表取締役の水本と私でトランシーバーでやりとりしながら、研修している各部屋を巡回し講師のパソコンを覗いて状況を把握していました(汗)
Station経由でデータがアップロードされることが講師にうまく伝わっておらず、録音停止後にパソコンがシャットダウンされてしまってまったくアップロードが進んでいなかった、なんてこともありました(泣)


最新版 (2019/4~)

2019年4月にUIおよびシステム構成を刷新しました。これに合わせてサービス名もHylable Discussionに変更しました。
現在(2022/01/28時点)のシステム構成はこちら



まずレコーダーをIoT化し、インターネットに繋がっていればどこからでも録音操作や状況確認ができるようになりました。専用アプリのインストールが不要でブラウザさえあれば利用できるようになりました。
ある学校では生徒がそれぞれ自分たちの班の座席設定をして録音操作するという運用でご利用いただきました。

さらにレコーダーで録音しながら分析のための一次処理をし、そのデータを逐次アップロードすることにより、録音中にリアルタイムに分析結果が確認できるようになりました。録音データも録音中に逐次アップロードする、アップロードが失敗しても途中から再開するという処理に変更することで、アップロードの完了も格段に早くなりました。

制御プログラムが起動しなくなる原因も調査し対策を講じました。初期版ではNode.jsというプログラミング言語を使っていたのですが、使用しているライブラリも含めるとかなり大量のファイルに依存する構造になってしまっていました。電源のON/OFFでその大量のファイルのうちのいくつかが破損することがあり、その結果まったく動作しなくなっていました。現在はGolangというプログラミング言語を採用しています。Golangの場合、事前にコンパイルしてひとつの実行ファイルを生成します。これによりプログラムの実行に必要なファイルがかなり少なくなりました。また、レコーダーの起動時に実行ファイルの破損チェックと復元も行うことで、電源ON/OFFしても安定して起動するようになりました。

最後に

まだまだ紹介したい改良ポイントや苦労話は尽きないのですが、また別の機会に。

今後もより多くの方々に簡単に安定してご利用いただき、より多くの価値を届けられるように開発を進めていきます。
「こんな機能が欲しい」「ここが使いづらい」などご意見・ご要望があればお気軽にご相談ください。

この記事を書いたメンバー

菅原 (開発責任者)

3児の父。5歳の娘が補助輪なしで自転車に乗れるようになりました。メキメキ上達し、もはやダッシュでは追いつけなくなりました(汗)
最近は近所の土手を家族でサイクリングしています🚲🚲