こんにちは、株式会社ACES でソフトウェアエンジニアをしている奥田(@masaya_okuda)です。
独自 AI による話者ごとの自動文字起こしや重要なシーンの可視化を行い、オンライン商談における成約率の向上と現場の工数削減に寄与する商談解析 AI ツール「ACES Meet」を開発しています。
現職で初めてAIが根幹にあるソフトウェアサービスを開発し、従来の開発と比較して「設計の難易度が明確に上がった」と感じています。AI機能はユーザーが使えば使うほど精度が上がる一方で、学習が十分でないフェーズでは期待値を下回ってしまう可能性があります。
それを乗り越えてユーザーにご利用いただくため、開発時にはAIエンジニアとソフトウェアエンジニアが協働して機能開発を行います。AIエンジニアがAI自体の精度向上を担当し、ソフトウェアエンジニアがAIをユーザーが利用可能なUIを持ったソフトウェアとして実装します。
特に、「いかにユーザーにストレスを感じさせない体験を作るか?」「100%ではないAIの精度をソフトウェア側でどうカバーするか?」をAIエンジニアと共に設計しプロダクトに落とし込んでいく過程に、これまでにない面白さを感じています!
そこで今回は、ソフトウェアエンジニア目線でAIプロダクト開発の課題や魅力をご紹介したいと思います。
ACESの開発組織
まずは簡単に組織についてご紹介します。ACESは「アルゴリズムで、社会はもっとシンプルになる。」というビジョンのもと、アルゴリズム事業を展開する会社です。SaaSを提供するAIソフトウェア事業に加え、クライアントとプロジェクト型で伴走するDXパートナー事業、AIソフトウェアの研究開発部門があり、時短社員も含めると30名以上のエンジニアが所属しています。
私はAIソフトウェア事業に所属しており、研究開発部門と連携して「ACES Meet」を開発しています。
直近のAI機能リリース
ACES Meetは先日、「同じマイクで複数人が話しても、話者を識別する機能」をリリースしました。ユーザーの音声データを学習し、同じマイクに対して複数人が話しても話者を特定して文字起こしを行うことができます。この機能によってオフライン会議でもACES Meetを活用できるようになります。
この機能を実装する中でAIプロダクトの難しさに直面しました。
AI故の課題
これまで私が経験してきたソフトウェア開発は、「あらかじめ機能要件を定義し、要件を実現するように実装する」というプロセスで行われていました。エンジニアが開発した以上のことはできませんが、十分に検証すれば不具合のリスクは小さくできます。一方で、AIの期待性能を100%にすることは難しいため、AIが間違えたときの体験を保証する必要があります。
エンジニアの精度テストでは高い性能で話者を識別できていたにも関わらず、いざビジネスサイドの方を交えてレビューを行ったところ、稀に起こる失敗によってユーザーの体験を大きく損ねるのではないか?というリアクションが返ってきました。
音声を聞いて話者を識別することは人間にとって簡単であり、それをAIが間違えると、ユーザーは自分で手を動かした方が速いと見切りをつけてしまうリスクが高まります。
この機能の場合、会議参加者の発話量や音声の学習状況によっては3人で会議しているのに4人に過剰分割されるといったことが起こり、ユーザー体験の悪化が懸念されました。
トラストの観点をもとにユーザー体験を考える
仕様を再度検討するにあたり、AIエンジニアからトラストの観点をもとに見直そうと提案が上がりました。AIをプロダクトやサービスに組み込む場合には、人とAIの間にトラスト(信頼関係)が構築され、人が安心して使える状態を追求することが重要です。
たとえばAIの技術そのものが素晴らしくても、人が使い方を理解できなかったり、期待と異なる動作をし且つその理由がわからないと継続的な利用には繋がりません。
以下はMicrosoftの「人間と AI の相互作用に関するガイドライン」を参考に、特にACES Meetに重要な部分をピックアップした観点です。
トラストの観点
- 機能を使う前に、
- AIが「何ができるか」を容易に理解できるか?
- AIが「どれくらい上手くできるか」を容易に理解できるか?
- AIが間違えた時に、
- ユーザーが「なぜAIがそのように間違えたか」を理解できるか?
- ユーザーがAIの失敗を容易に修正することができるか?
- AI機能をすぐさまオフにできるか。また必要な時だけ呼び出せるのか?
この中でも、
- AIが「どれくらい上手くできるか」を容易に理解できるか?
- AI機能をすぐさまオフにできるか。また必要な時だけ呼び出せるのか?
に着目し、最終的にはソフトウェアエンジニアとAIエンジニアで役割分担してリリースまで走り切ることとなりました。
- AIエンジニア
- AIの精度自体をさらに向上させる
- 発話量が少ない場合、無理に分割しない
- ソフトウェアエンジニア
- 機能をON / OFFできるようにし、ユーザーが必要なときだけONにできるようにする
- 「どんな環境なら高い精度で利用できるか?」を厚く説明したサポートページを設け、機能のすぐ近くに導線を設置する
AIプロダクトの面白さ
ACESで働くソフトウェアエンジニアとして、AIという新しいパラダイムのユーザー体験をAIエンジニアと共に考え作り上げていくことが、最も面白い瞬間です。
ACESにはAIアルゴリズムのプロフェッショナルが多数在籍しており、AIの精度をチューニングし理想の状態に近づけることができます。一方で、どんなに精度が高くてもAIの処理では間違いは発生し、結果ユーザーは難解であると感じやすいのです。
そのため、ソフトウェアエンジニア側では「どのようなインターフェースが分かりやすいのか?」「AIの精度が及ばない部分をどうフォローするか?」を設計し、ユーザーがより利用してくれる状態を目指します。
私はフロントエンドを中心に開発していますが、AIを利用したプロダクトにおいてどのようなUIがユーザーにとって分かりやすいのか?に関する国内の事例はまだ多くありません。具体的な実例が限られているチャレンジングな環境での開発を日々楽しんでいます!
今回はトラストの観点に沿って、以下の工夫を行いました。
- 機能のON / OFFを簡単に切り替えられる
- 設定導線の中にサポートページへのリンクを設置し、「AIに何ができるか?どれくらい上手くできるか?」を説明する
サポートページでフォローできることには限界があるため、機能設計時点でいかにUI/UXをシンプルにできるかが今後の課題です。
おわりに
本記事では、AIプロダクト開発の課題や魅力についてご紹介してきました。今後もAIエンジニアとソフトウェアエンジニアの協働を通して、お客様にとって使いやすいプロダクトづくりに努めてまいります。
これを実現するために、ソフトウェアエンジニアをはじめNLPのアルゴリズムエンジニアなど幅広く募集しています。弊社の取り組みにご興味をお持ちいただける場合は、下記の募集ページから是非ご応募ください!
Serverside Engineer
https://open.talentio.com/r/1/c/aces/pages/22028
Front-end Engineer
https://open.talentio.com/r/1/c/aces/pages/22026