インタラクティブなアプリガイドの構築

サポートチームは、一度もインストールしたことのないアプリの操作に苦労することがよくあります。

スクリーンショットを載せたPDFが標準的な解決策ですが、ほとんどの人はPDFを読みません。私はもっと良いものを作りたいと考えました。実際のアプリのような感覚で使えるガイドです。ホーム画面が表示され、ボタンをクリックすると次の画面が現れる、といった体験です。

実際のスクリーンショットとクリック可能なホットスポットを使用して、インタラクティブなガイドを構築しました。

仕組み

画像にはFirebase Storageを、ロジックにはバニラJavaScriptを使用しました。外部ライブラリは使用していません。

  • 各画面は1枚のフル画像です。
  • 画像の上に「ホットスポット」と呼ばれる不可視の長方形を配置します。
  • これらのホットスポットは、ピクセルではなくパーセンテージを使用しています。これにより、ウィンドウサイズが変わっても位置がずれません。
  • シンプルなステートマシンがナビゲーションを制御します。各画面には、ID、画像、およびホットスポットのリストが含まれています。

エディタ

座標を手動で測定するのは時間がかかります。プロセスを高速化するために、スタンドアロンのHTMLエディタを構築しました。

  • スクリーンショットをアップロードする。
  • マウスをドラッグしてホットスポットを描画する。
  • ホットスポットをターゲットの画面にリンクさせる。
  • コードを直接エクスポートする。

デザインの選択

すべての画面に完全なナビゲーションがあるわけではありません。混乱を防ぐため、クリック可能なエリアに青いパルス状の光(グロー効果)を追加しました。これにより、ユーザーはどこをタップできるのかを正確に把握できます。

主な技術的教訓

  • Firebase Storage: URLを手動で構築しないでください。SDKの getDownloadURL メソッドを使用してください。これには、セキュリティルールをバイパスするために必要な認証トークンが含まれています。
  • CSS Flexbox: カラムレイアウトで flex: 1 を使用する場合、親要素には明示的な高さが必要です。オーバーフローを防ぐには、子要素に min-height: 0 を設定してください。
  • パフォーマンス: クリックのたびにFirebaseを呼び出すと遅延が発生します。インメモリキャッシュを実装し、モーダルが開いたときにすべての画像をプリロードするようにしました。これにより、ナビゲーションが瞬時に行えます。
  • スケーリング: CSSの transform: scale() プロパティを使用します。これにより、画面サイズに関わらず、画像とホットスポットが完全に一致したまま保たれます。

結果

  • 実際のスマートフォンのように操作できる20個の画面。
  • 視覚的な手がかりを持つ52個のホットスポット。
  • プリロードとキャッシュによる瞬時の読み込み。
  • あらゆるモーダルサイズに適応するレスポンシブデザイン。

出典: https://dev.to/androve2k/building-an-interactive-app-guide-with-clickable-hotspots-on-real-screenshots-o9e