ここまで、Qt Insightの無料トライアルの登録方法から、実際に確認可能な情報について説明してきました。
本稿では、それらの情報を実際のGUI改善にどのように活用できるのかについて、いくつかの例をご紹介します!
目次
フィールドテスト(実地試験)では、製品のプロトタイプをパイロットユーザー、自社の社員、リセラー、キーカスタマーなどに実際に使用してもらい、A/Bテストを行います。
A/Bテスト(エービーテスト)は、マーケティング、製品開発、ウェブデザインなどの多くの分野で用いられる実験手法の一つです。このテストでは、2つの異なるバージョン(AとB)を用意し、それぞれのパフォーマンスを比較します。目的は、どちらのバージョンが目標とするKPI(Key Performance Indicator、主要業績評価指標)に対して優れた結果を出すかを明らかにすることです。
具体的には、ウェブサイトのランディングページ、広告、メールキャンペーンなどでよく用いられます。例えば、ウェブサイトのランディングページであれば、ボタンの色やテキスト、レイアウトなどを変更したバージョンを作成し、訪問者をランダムにどちらかのページに誘導します。その後、どちらのページがより多くのコンバージョン(例:購入、サインアップなど)を生むかを分析します。
このようにして、A/Bテストはデータに基づいた意思決定を可能にし、製品やサービスの最適化に貢献します。
Qt Insightでは、A/Bテストを以下のような方法で行うことができます。
[使用例1] 異なるソフトウェアバージョンをそれぞれA/Bとして扱う
Qt Insightでは、異なるアプリケーションのバージョンのデータを別々に表示可能です。
また「Comparisons」タブでは、異なるソフトウェアバージョン間でそれぞれのデータの比較も行うこともできるので、例えば、最新バージョンにソフトウェアをアップデートした後のユーザー行動の違いなどを分析することも可能です。
これにより、例えば以下のような気付きを得られます。
[使用例2] 異なる国、デバイス、スクリーン解像度をA/Bとする
また、先ほどの「Comparisons」タブでは、違う地域同士のそれぞれのデータ項目の比較も可能です。(以下はアメリカと日本でのユーザー行動の比較)
さらに、デバイスのモデルやスクリーン解像度別の情報もQt Insightで確認が可能なので、それらの要素によるユーザー行動の違いなども分析ができます。スクリーン解像度の大小はアプリ自体のコンテンツにも影響を与える可能性があり、それがユーザー行動の違いに結びつくことも考えられます。
[使用例3] UIやUXに微妙な違いを持たせたアプリケーションをA/Bとする
OTA(Over The Air … 製品出荷後にリモートでソフトウェアアップデートを行う方法)を使用して、ボタンの位置やUIの配色を微妙に変えたアプリケーションを特定のユーザーグループのデバイスに対してデプロイし、それぞれに対するユーザー行動を分析することで、ユーザーにとって最も効果的なUI/UXがどういったものなのかのフィードバックを得ることができます。もちろん上述の「Comparison」機能を使用して、それらの異なる分類同士で各データを比較することも可能です。
結論として、A/Bテストを行うことで、以下のような知見を得ることができるでしょう。
オンボーディング体験とは、新規ユーザーが製品に慣れ親しんでいく過程や、既存ユーザーが新規機能に慣れ親しんでいく過程を意味します。
使い慣れたユーザーが心地よいと感じるUI/UXは、必ずしも新規ユーザーにとっても最適なものとは限りません。初期体験でユーザーの心をつかむためには、オンボーディング体験の最適化はとても重要なものとなるのです。
ユーザーが新機能を体験する過程の中で「アハ体験」という瞬間があり、これは「製品や機能がユーザーの期待や予想と合致した瞬間」を意味します。
最適化されたオンボーディング体験は、以下のような効果を生むとされています。
Qt Insightを使用すると、ユーザーがUIをナビゲート(遷移)していくフローを視覚的に確認することができます。
以下のUser flowsの図は、どれくらいのユーザーが、どの画面からどの画面にナビゲートしているかの情報を可視化しており、この情報を用いることで「ユーザーが本当に開発側の意図通り、スムーズに新機能を使用しているのか?」などの情報を得ることができ、そうでない場合、変更が必要な箇所はどこなのかについても知見を得ることができるでしょう。
また、Funnels(ファネル)機能を使用すると、Qt Insight Web Consoleで定義した特定の段階的ユーザー行動を、制限時間以内にどれだけのユーザーが実際に行ったかの分析も行うことができます。以下では、ファネルの定義を行っています。
以下は、ファネルの結果の例です。どれくらいのユーザーセッションが実際に定義されたフローを開始し、またその中の何%が意図通りのステップを踏んだのかを定量的に確認することができています。例えば新機能リリース時にその機能へのファネルと意図した制限時間を定義することで、その機能に本当にユーザーがたどり着けているかどうかを確認することができます。もしそれができていないとすれば、画面の構成や遷移の順番などを改善する必要があるかもしれません。
オンボーディング体験の最適化によって、以下のメリットを得ることができます。
一般的に、ユーザーが製品の価値を認識するのが早ければ早いほど、ユーザー満足度は高くなる傾向があり、かつ継続使用する可能性も高くなると考えられています。
プロダクトマネージャー(プロダクトオーナーとも呼ばれる)は日々、様々な情報源から製品に対するフィードバックを得ています。(自社顧客、競合他社、市場分析、開発者、サポートエンジニア、セールス、マーケティングなど)
しかし、それらのフィードバックを優先度づけていくのは困難であることが多く、かつそれらのフィードバックには主観的バイアスがかかっている場合もあります。
そんな中で、Qt Insightを使用して、24時間365日、実際のユーザーから定量的な行動データを取得できることは、プロダクトの分析に新たな視点を得ることにつながります。
例えば、ある機能の定着度を国、ユーザーグループ、デバイスモデルなどのカテゴリ毎に確認することもできるようになります。
機能定着分析には以下の4つの観点が存在します。
機能定着分析によって、以下のメリットを得ることができます。
UIパス分析を行うことで、機能定着分析では見えてこない視点を明らかにすることができます。Qt Insightでは、ユーザーがホームスクリーンからどのような経路でUIをナビゲートしているのかを視覚的に確認したり、どれくらいのユーザーがどのような経路を通ってどのようにアプリを探索しているのかを、アプリ起動時からアプリ終了時まで確認することができます。また、上述したファネル機能もUIパス分析に有効です。
UXデザイナーにとっても、UIパス分析は有益です。各画面のミクロの視点でのUXだけではなく、マクロの視点(アプリ全体)を通したUXを考慮したアプリデザインを行うためのヒントを得ることができるのです。最高のGUIアプリは、画面や部品単位のUI/UXだけではなく、画面遷移の流れにまで設計者の意図が反映され、最適にデザインされいます。
企業が想定するユーザー層と、実際のユーザー層は異なることがあります。
実際のデータから情報を得ることで、マーケティングや価格設定、UIデザインの改善に役立てることができるようになります。Qt Insightでは、プライバシーの観点から収集される情報は匿名化されていますが、以下のデータはユーザー層の特定に役立てることができるでしょう。
製品が優れたオンボーディングと多くの機能を持っていたとしても、トライアル期間やフリー版の使用後にユーザーが製品の使用をやめてしまう場合、何か問題がある可能性があります。
この問題は「価値までの時間(TtV)」に起因していることが多くあります。
Time to Value(TtV)とは、顧客が製品から実際の価値を得るまでの時間を意味しており、プロダクトアナリティクスによって、イベントとユーザーインターフェース(UI)のパスを追跡することで、TtVを短縮することができます。
実際に何を追跡するかは、製品の性質に依存します。ユーザーがすぐに製品の価値を見い出せないことが判明した場合、UIを最適化してユーザーがより簡単に価値を得られる構成とするか、より早く価値を提供するための機能を追加することを検討する必要があります。一部の製品(例えば、4半期ごとに使用される決算用のアプリなど)は、価値を示すまでに時間がかかる性質がありますが、そのような場合は、過去のデータに基づいたシミュレーションが速やかに大きな価値を提供することがあります。Qt Insightでは、User flowやファネルを使用することで、意図した価値がどの程度ユーザーにとって実現されているのかについての知見を得ることができるでしょう。
ミュンヘン工科大学の研究によると、エンタープライズソフトウェアの25%のコードは、デッドコードとなってしまっているという結果がでています。(Research of Technical University Munich, “How Much Does Unused Code Matter for Maintenance?”, 2012)
また、そのほかの研究によれば、クラウドソリューションの80%のコードは、ユーザーによって殆ど使われることはないという結果が出ています。(Study of Pendo.io, “The 2019 Feature Adoption Report”, 2019)
ここでのデッドコードは、静的解析ツールが特定する「構造的に到達不可能なコード」や「コールされていない関数」に限られません。
そのどちらでもないが、ユーザーによって殆ど、または全く使われることのない機能(見つけられない、または必要とされていない)のソースコードもデッドコードと考えることができるのです。
仮に25%のソースコードが実際には意味をなしていないのであれば、製品、そして開発チームは大きな重荷を背負っていると言えるでしょう。
なぜなら、これらのデッドコードはデッドコードであることが認知されていないので、使われていないのにもかかわらず製品に残り続け、その間、開発やメンテナンスに費用と工数をかけ続けなければならないのです。
メンテナンスの中には、デッドコード部分に含まれるサードパーティのライブラリのアップグレードや、セキュリティテストやペネトレーションテストの実施、ユニットテストやGUIテストの作成や実施、プログラミング言語やコンパイラのバージョンアップ対応などが例として挙げられます。
使われる機能ではないので、もちろんバグレポートなども上がらず、だれもデッドコードであることに気づかないまま、企業は無下にリソースを費やすことになってしまいます。
もちろん、デッドコードはメモリフットプリントなどにも悪影響をもたらします。
Qt Insightを使用すると、ユーザーが実際に使用している機能と、そうでない機能がどれなのかについて知見を得ることができるので、デッドコードの特定に役立てることができるでしょう。
また、デッドコードとされてしまっている機能が、本当は使ってほしい機能であれば、その発見と改善によってユーザーに意図する価値体験を提供することができますし、逆にデッドコード部分が不要機能であると割り切れるのであれば、その機能への開発リソースは抑え、よりユーザーにとって人気のある機能の開発に集中することで、ROI(投資対効果)を引き上げることができます。リソースを効率的に使うことで、より少ない投資で最大の効果を得ることができるかもしれません。
Qt Insightを使用したデッドコード分析によって、以下のようなメリットを得ることができます。
Qt Insightを使用すると、アプリケーションのクラッシュ(異常終了)情報を分析することが可能になります。Qt Insight TrackerはQCoreApplication::aboutToQuitシグナルを聞いており、これが発生した場合はアプリケーションが正常に終了したと判断しています。
Application failuresタブでは、以下のように一定期間内に実際にユーザーがアプリを使用中に発生したクラッシュ情報を確認することができます。
Application failuresタブでも、当然「国」「ソフトウェアバージョン」「デバイスモデル」「スクリーン解像度」「ソフトウェアバージョン」によるフィルタリングが可能です。そういったフィルタリングを活用することで、クラッシュの原因特定がより容易になるでしょう。
また、以下のようにアプリがクラッシュに至るまでのUIの経路も確認することができます。
クラッシュに至るまでのユーザーフローに加えて、「クラッシュに至ったユーザー操作」のランキングと「クラッシュに至った画面」のランキングも確認することができます。
さらに、個別のクラッシュがいつ、どこで、どのような操作を経て発生したかのトレース情報も確認することができます。市場からレポートされたクラッシュというのは、往々にして再現が難しいものです。そういった状況において、いち早く再現条件を特定し、アプリケーションを迅速に修正することで、製品の品質をこれまでより速く改善していけるでしょう。
最後に、プロダクトマネージャーがユーザー行動を分析する際に一般的に適用されるKPIをご紹介します。
コマーシャルプロダクトマネージャーの一般的なKPI
テクニカルプロダクトマネージャーの一般的なKPI
なかなかの長文となってしまいましたが、以上がQt Insightを活用する際の実践的な例になります。
データを分析する際の工夫次第で、上記以外にも様々な観点からGUIアプリケーションの改善を行っていただくことができるでしょう。
Qt Insightを活用して最高の製品をつくる上で、少しでもお役に立つことができればうれしいです!
では、次稿【Qt Insight入門その6】Qt Insightにデータを送信する方法ではいよいよ、Qt Insightにアプリケーションからデータを送信する方法をご紹介します。
お楽しみに!
Qt Insight お問い合わせフォームはこちら