先日、スマートバンク史上初となる生成AIを活用したプロダクトである「AIレシート読み取り機能」をリリースいたしました。この機能はざっくり言うと生成AI (本記事では「大規模言語モデル」と同じ意味として利用します) を用いてレシートの内容を解析し、店舗名や総額などを抽出しつつその支出カテゴリを推定してB/43アプリ内の家計簿に登録できるというものになります。なかなか良い感じにレシートを読み取ることができ、それだけでもなかなか楽しいのでまだお試しになられていない方は是非使ってみていただければ嬉しく思います。
さて、そうして世に出たAIレシート読み取り機能なのですが、生成AIを始めて利用したプロダクト作りということもあり試行錯誤を重ねながらの開発となりました。本記事ではその過程で得られた知見について共有したいと思います。
なお、今回は技術的詳細に踏み込んだ話ではなくプロダクト作りそのものにフォーカスした話題をお届けします。技術的なお話についてはまた別の機会にできればと存じます。
高速なプロトタイピングによるプロダクト作り
かつては自分たちで頑張って機械学習モデルを訓練により作り、場合によってはそのモデルをホストしなければ提供できなかったような機能が、生成AIを用いることによりお手軽かつ十分満足できるクオリティで作れるようになりました。これはある種の「機械学習技術の民主化」と見做すことができるかもしれません *1。
従来「データの収集」「訓練・検証データの作成」「訓練」「評価」などといった比較的長めのサイクルを複数回さなければ作れなかった機能が、生成AIに対してプロンプトを送ることで実現できるようになったため試作にかかる時間が劇的に短縮されたのです *2。
そうした背景があり、また界隈の情勢としてもAI熱が高まった折、スマートバンク社内で「自由研究」というイベントが催される運びとなりました。
今回の自由研究では「生成AIを用いたB/43の新機能を考えて実際に作ってみる」というテーマのもと行われ、その結果として様々なアイデアとプロトタイプが生まれました。今回リリースされたAIレシート読み取り機能もこの自由研究の成果のひとつです。この一連の過程については同僚のrocknameが先日公開したブログ記事も併せてご覧ください:
このように、生成AIによる高速なプロトタイピングが可能になったことにより、従来のような「機能や目的を厳選してから念入りに準備、実装および評価する」というプロセスに対し、「生成AIを用いてMVP*3をクイックに作って評価する」という施策を大量に実施できるようになりました。
これにより「試したいものを片っ端から作る」というイマジネーションを刺激するタイプのアプローチができるようになり、その過程で作られたものの中から有望そうなものを選択して発展させる、という従来とは異なる発想のプロダクト作りができるようになったのではないかと思います。えてして生成AIは人間の想像力を奪うなどと言われがちですが、ことこういったプロダクト作りではむしろ逆にイマジネーションを加速させる道具として使えるのではないかという印象があります。
高速にプロダクトを作って評価できるということは「高速に失敗できる」ということに言い換えられるのではないでしょうか。「失敗」と聞くとなにがなんでも回避したいもののように思えますが、こと流動性が求められるスタートアップのプロダクト作りでは基本的に失敗は避けられません。その失敗の積み重ねから方向性の微調整を繰り返し、キラリと光る良いプロダクトを見つけて育てるというのが王道のパターンであるように思っており、その糧となる「失敗」を恐れずにアジリティを高く進めてゆくためのツールとして生成AIは極めて優秀であるというふうに捉えています。
もちろん「フリーランチは無い」ので、高い性能が強く求められるような用途・機能においては汎用的な生成AIではなく機能特化した機械学習等の別の手法を用いる必要が出てくるかもしれません。このあたりは上手な使い分けができるのが理想ですね。
「魔力」のあるプロダクト
かねてから機械学習を用いたプロダクトにはある種の「魔力」を有しているように感じます。たとえば高性能な外国語の機械翻訳であったり、高度にパーソナライズされた情報推薦であったりと、それまでのソフトウェアではほぼ不可能であった機能が機械学習によって実現される様はあたかも魔法のようです。
生成AIについても同様で、従来であれば到底実現できなかったような機能が生成AIの活用によって簡単に (と言うと語弊がありますが) できるようになるという体験には非常に魔力的な魅力があります。
一方、生成AIを利用したプロダクトが何か間違えた結果を返却してしまったり、あるいは結果を出すまでに異常な時間がかかったりしてしまうとどうしてもつくりもの感が透けて見えてしまい、むしろ普通のプロダクトよりもより幻滅されてしまう、いわば魔法が解けてしまうということにもなりがちです *4。
そういった「魔力を失なってしまう」ことを避けるためにも、まずは生成AIが効果的にマッチするユースケースを見極めたり、あるいは一連の体験を上手くデザインする必要があるように思います。現時点での生成AIはいかに調整したとしても結果を間違える可能性があり完全にコントロール下に置くことが難しいパーツであると捉えたほうが良いため、例えば生成AIになんらか生成してもらい人間がそれをチェックして必要に応じて修正した上で結果を取り込む、というような生成AIの間違えを許容できる体験設計になっていたりすると良いのではないかと考えています。本当に面倒なところだけ生成AIにやらせて、チェック等の軽い部分は人間がやるというような建て付けです *5。
今回のAIレシート読み取りでは生成AIを適用する対象領域がかなりうまくハマったというのもありますが、前述のような体験設計もうまくできたのではないかと思います。併せ技としては、多くの場合数秒程度かかってしまう生成AIに対する問い合わせについて、その待ち時間を単なる「待ち」に感じさせないようなUI上の工夫を盛り込んだりもしており、生成AIの利用のみに留まらない「良いwebアプリ」に共通するデザインを盛り込むことで生成AIの機能を滑らかにアプリ内に組み込めたと実感しています。
生成AIには様々な使い方がありますが、その中でも真っ先に思い浮かぶのはChatGPTに代表されるチャットではないかと思います。もちろんチャットがうまくフィットするアプリケーションであれば良いのですが、インターフェースとしてそれが不適切であるにも関わらず無理矢理組み込んでしまうとぎこちない体験になってしまったり、そもそも役に立たないものになってしまう可能性もあります。従ってどういったインターフェイスがベストであるかは提供したい体験から逆算して追求してゆく必要があり、そこを見極めることこそが魔力の源泉となるのではないかと思っています。
スマートバンクではAIレシート読み取り機能に留まらず、決済や家計管理、あるいはその他広範な領域ででより良い魔力を持った体験を提供すべく今後も生成AI活用の道を探求していく予定となっております。
その一方で……
実はスマートバンクのエンジニアリングチームの中には機械学習や生成AIを専業としているスペシャリストは存在しておらず、文字通り手探りで機能開発をしている、いわば実利的なエンジニアリングのみによって生成AI活用が行われている状況となっております。
しかし今後、活用を更に加速させて非連続的な成長をするためにはやはりスペシャリストの存在が必要であるというふうに考えており、そこに力を貸してくださるメンバーを強く求めています。
機械学習や生成AI技術を研究と開発の両面から捉え、実際のプロダクトに組み込んで価値とともに「魔力」を提供することに興味のあるエンジニア・スペシャリストを熱烈に募集しております。ぜひ私たちと一緒にプロダクト開発しませんか?