見出し画像

ハードもソフトもアルゴリズムも内製。真のフルスタックを実現するACCELStarsのエンジニアリング

ACCELStarsは、「睡眠を解明し、新たな医療を創造する」というビジョンのもと、2020年8月に設立されたスタートアップ企業です。世界最高精度の睡眠検出技術「ACCEL」を使用して、睡眠の把握・診断・予防・治療へとつなげるサービスの開発に取り組んでいます。

私たちの開発スタイルの特徴として「ハードウェアやソフトウェア、アルゴリズムなど幅広い領域の技術を扱い、かつそれらを内製していること」が挙げられます。この方針を採用している理由や利点について、執行役員の緒方貴紀さんに聞きました。

柔軟性の高い開発を行うためには内製が必要

――一般的なITスタートアップでは「ソフトウェアは内製するがハードウェアは外部の業者に開発を依頼する」など、特定領域のみを内製する会社が多い印象があります。なぜACCELStarsは、ハードウェアやソフトウェア、アルゴリズムなどを内製する方針を選んだのでしょうか?

まず大前提として、もしも利用できる外部サービスがあるならばそれを使うほうがいいですし、外部の業者に開発を依頼するほうがメリットが大きいならば、その方針を選ぶべきだと考えています。なるべく、自社で作らなくていいものは作らないことが重要です。その前提がありながら、あえて内製しているのにはもちろん理由があります。

ACCELStarsでサービスを開発するうえでは、事業の理解と顧客の理解、そしてエンジニアリングという3要素が求められます。たとえば医療現場のオペレーションを改善するためにシステムを導入する場合、事業や顧客についての知識が浅い状態でサービスを作ってしまうと、既存の仕組みの延長線上にあるアイデアしか出てこなかったり、理論上はうまくいくが現場のオペレーションが回らなかったり、そもそも役に立たないものを作ったりするようなことが起こり得ます。

そうした事態を防ぐためには、医療従事者や患者の方々と密に連携をとり、医療業界や各種疾患のことなどを学びながらサービスの仕様を考えていく必要があります。改善のサイクルを回し続けていくため、そもそも「仕様を確定させて外部の業者に開発を依頼すること」自体が難しいんです。柔軟性が高くドメイン知識を吸収し続ける開発スタイルを採用するために、内製の方針を選んでいます。

ハードウェアに関しても同様です。できれば既製品を使いたいのですが、私たちの取り組んでいるテーマではハードウェアそのものもカスタマイズ可能にしておかなければ、サービスで求められる機能を提供できません。それに、世の中にあるウェアラブルデバイスは高頻度に詳細なデータを取得することよりも利便性やバッテリーを長持ちさせることを優先する傾向にあるので、実は私たちのやりたいことにピッタリ合っているデバイスを見つけることができなかったのです。

アルゴリズムもそうで、私たちのプロジェクトはR&D的な要素が求められることが多いです。それに、たとえば若年層と高齢者の層で睡眠のパターンが異なっているので「すべての年齢の人に適用できる1種類のグローバルモデルを使う」といったことがやりにくいです。また、ブラックボックスのロジックでなく、途中の判断根拠を詳細に分析することで医師や患者に納得感を感じてもらう必要や、大学や病院と協力してエビデンス構築を行う必要があります。そのような事情があり、大部分を内製する方針を選んでいます。

システムの要件に応じて、開発の方針を柔軟に変える

――どのような組織構造で開発を進めていますか?

各事業部にエンジニアが数名ずつ所属しており、それぞれがプロジェクトベースで仕事を進めています。現在のフェーズでは事業立ち上げのスピードを優先して、あえて事業部間でのシステムの共通化などは後回しにしていますね。2023年中に徐々にサービスの設計やデータフォーマットなどの方針が固まってくるはずなので、2023年の後半には共通化が見えてくると思います。

一方、私が管轄しているデータサイエンスグループは横串の体制になっており、各事業部のプロジェクトに横断的に携わっています。私がコミュニケーションの窓口になり、各事業部の取り組みやロードマップを大まかに把握したうえで、優先順位をつけてタスクを進めています。

事業部ごとに、サービスの種類に応じて開発スタイルも異なります。たとえば、事業開発グループでは大阪大学との共同研究でパーキンソン病に関連するアプリの開発をしていますが、このプロジェクトではデバイスはApple Watchを使っています。

なぜなら、デバイスを通じてリアルタイムの通知やパーキンソン病の方特有の症状である手の震えの検知、加速度計や脈拍を活用した睡眠覚醒リズムの取得などをしたいのですが、これらの用途のみであれば既製品のデバイスを活用しつつ、アルゴリズムやソフトウェアを開発する方が利点が大きいためです。

他に臨床研究事業部では、睡眠検査が行える施設を作りデータのモニターを募っています。モニターの睡眠についてウェアラブルデバイスと脳波の同時計測をし、睡眠検査技師に睡眠ステージを判定してもらったものを教師データとして使って機械学習をしています。

また、これらのデータを扱ううえでは医療情報の保護を目的とした3省2ガイドラインに準拠していますし、2022年8月にはISMS(情報セキュリティマネジメントシステム)の第三者認証基準である国際規格「ISO/IEC 27001:2013(JIS Q 27001:2014)」を取得しています。ヘルスケアスタートアップということもあり、セキュリティにはかなり力を入れていますね。

――データ分析の手法は何を使っていますか?

Gradient Boosted TreeベースとDeep Learningベースのアルゴリズムを両方使っています。両方の利点をうまく活用しているのですが、Gradient Boosted Treeベースの場合はデバイスの消費電力を抑えられるのと、特徴量の生成・選択やハイパーパラメータのチューニングなどをあらかじめ実施しておくことで、推論の処理などを高速化できます。その状態にしたプログラムであれば、処理が軽量であるためオンチップで走らせることも可能です。

一方、ディープラーニングベースのアルゴリズムは処理が重たくなりますが高度な計算をさせるのに向いています。システムに求められる要件などをふまえて、手法を使い分けていますね。

抽象度の高い課題を解くことの難しさと面白さ

――他の種類のデータと比べて、睡眠に関連したデータを分析することの難しさはどのような点にありますか?

「わかりやすい正解が存在しない」という難しさがあります。例を挙げて説明すると、人間の睡眠は、睡眠の深さ(脳の活動性)によって(Wake,REM,NREM1,NREM2,NREM3)の5つのステージに分けられます。これらのステージ区分は、ソフトウェアによる周波数解析などが一般的でない時代に、人間が脳波の波形を目で見て、睡眠の状態を判定するためのルールからスタートしているんです。その名残から、現在でも人間が波形を目で見てステージを確認しています。

判定しやすい脳波の波形であれば良いですが、疾患の有無や年代、性別などによって個々人の脳波のパターンや特性が異なるため、判定ルールを単純に当てはめれば良い、というほど簡単ではありません。よって睡眠検査技師の方が、過去の症例や経験から難易度の高い判定部分や判定基準の境界となる症例を判断しなければならないという曖昧な部分があります。

たとえば5人の睡眠検査技師が同じデータをもとにステージを判定した場合、その一致率は81〜85%ほどと言われています。「人間が判定しても一致率が9割を超えることが難しい問題に対して、どのような方法で機械学習をさせるための教師データを作ればいいのか」というテーマから考えなければなりません。

つまり、単純な“正解を当てる問題”ではなくて、“正解を当てる問題に落とし込むためにどうすればいいかという問題”のようなものを、いままさに解いているところです。現在は睡眠検査技師の方々と、なぜその睡眠ステージだと判定したのか波形をもとに話したり、判定するときに苦労するポイントを話たりすることで、どういったアウトプットであれば睡眠検査技師の方の労力をAIで支援できるのか?ということを検討しています。

単純に精度の高さを指標にするのではなく、AIの誤り判定の傾向分析を行うことで、人間が判断に迷わないポイントは正答率を上げ、人間でも迷ってしまうところはAIの確信度も下げることで判断を人に委ねられるようにするためのロジックや指標づくりを行っています。

それから、機械学習という手法は乱暴に言えば過去の経験と勘から多数決や平均によって正解を求めていくものですが、各種の疾患においては「過去の症例が少ないもの」ほど重要かつ深刻度が高いケースが往々にしてあります。そういった機械からすると外れ値だが、人間にとって重要であるデータをどのように発見し扱うべきかということも、今後さらに各種のデータを収集・分析することで解明していく必要があります。

――難易度が高く、かつ意義のある問題を解いているのですね。いまの事業フェーズでは、どのようなタイプのエンジニアに参画してほしいですか?

基本的に全方位のエンジニアが必要ですが、あえて言うならばプロダクトのリードができるエンジニアに来てもらいたいです。先を見据えつつ、重要なポイントには時間をかけ、先々にリプレースすると割り切るポイントはスピード優先で取り組むなど、開発速度と未来の負債のトレードオフを意思決定しながら技術選定やプロダクト開発ができる人を求めています。

0→10を見越した上で、0→1のフェーズでは0→1に必要な振る舞いを、1→10フェーズでは1→10に必要な振る舞いをできる、その中で1→10で楽をするために0→1で投資すべきポイントを見極められる人ですね。

――ACCELStarsに参画することで、エンジニアはどのような経験を積めるでしょうか?

先ほども話題に上ったように、プライバシーやセキュリティに関してはかなり高いレベルでデータの取り扱いをしているため、ACCELStarsで経験を積むことで攻めの開発スキルだけではなく守りの開発スキルも身につけることができます。

また、人間の生体情報という膨大な量のデータをどのように取り扱うか、人間の持っているある種の“曖昧さ”をどうやってシステムに落とし込むかなど、難しい課題はいくつもあります。今回のインタビューで話したように、扱っている技術領域も幅広いです。

そして、医療業界においてはシステムそのものがまだ存在していない領域や、アナログな作業でまかなわれている業務もたくさんあります。そういった領域をIT化することにおいて障壁をどのように乗り越えるか、エンジニアの手腕が問われますね。それから、睡眠や各種疾患についての知識がかなり身につくので、人間の健康に興味のある人にとってはそういった部分も楽しめると思います。

私たちが開発しているシステムが、あと数年くらいすると健康診断のなかに取り込まれたり、人々が健康改善のために当たり前に使うサービスになったりするかもしれません。そのくらいのインパクトを世の中に与える可能性が、ACCELStarsにはあります。


この記事が気に入ったらサポートをしてみませんか?