読み込みや送信、AIの返事を待つ間の動きを14種類の型に分け、AIへの指示文・動く見本・コードを載せています。見本の下で時間や大きさを変えると、指示文とコードも同じものに変わります。
読み込み中の動きはどの型を選ぶか
まず、進み具合がわかる処理かどうかで分けます。わからないなら点・棒・流れる帯で「止まっていない」ことだけを伝え、わかるなら帯や輪で何%かを見せます。そのうえで、待たせる場所(押したボタンの中・画面の上の端・ページ全体)と、AIの返事のように中身が少しずつ届くものかどうかで選びます。
| こんなとき | 向いている動き | 近い型(ほかのページ) |
|---|---|---|
| 数秒で終わるが、終わるまでの時間が読めない | 3つの点が順に跳ねる(ドットローダー) | ローディングスピナー |
| 音声や動画を扱う画面で待たせたい | 縦の棒が順に伸び縮みする(バーローダー) | — |
| 一覧や表の上で、場所を取らずに待たせたい | 細い帯の中を筋が流れ続ける(インジケーター) | スケルトンスクリーン |
| ファイルの送信など、どこまで進んだかがわかる | 進み具合を帯と数字で見せる(プログレスバー) | — |
| カードの中など狭い場所で、何%かを見せたい | 輪が埋まって真ん中に数字(円形プログレス) | — |
| 送信ボタンを押したあと、二重に送らせたくない | 押したボタンの中で待たせる(ボタンローディング) | フォーム |
| 中身を差し替える画面で、ページを覆わずに伝えたい | 画面の上の端を細い線が伸びる(トップローディングバー) | — |
| ふだんは数秒だが、ときどき10秒を超える | 長引いたら文言を変える(待ち時間メッセージ) | — |
| 写真の多いトップページで、組み上がる途中を見せたくない | 読み終わるまで幕で覆う(ローディング画面) | オープニングアニメーション |
| ページを移るたびに、幕とロゴを短く見せたい | ロゴトランジション(画面の切り替えの動き) | — |
| AIの返事を待つ数秒を、静かに見せたい | 「考えています」の上を光が流れる(シマーテキスト) | — |
| AIが段を踏んで作業し、いまどこかを見せたい | いまの作業を段ごとに実況する(作業の実況) | — |
| チャットで相手が返事を書いている | 吹き出しの中で「…」が弾む(タイピングインジケーター) | — |
| AIの長い返事を、届いた分から見せたい | 返事が届いた順に流れ出る(ストリーミング表示) | タイプライター |
| AIが考えた過程も、読みたい人だけ読めるようにしたい | 考えた過程を折りたたんで残す(思考の折りたたみ) | — |
ローディング画面とオープニングアニメーションは、どちらもページを開いたときの動きです。ローディング画面は読み込みを待つ間を幕で覆う型で、オープニングアニメーションは読み終わったあとに見出しや写真を順に出す型です。ストリーミング表示とタイプライターも似て見えますが、タイプライターは決まった文を時間で区切って見せる演出で、ストリーミング表示は届いた順に出すだけで、わざと遅らせません。
どの型でも守ること
- すぐ終わる処理では出さない。0.3秒ほど待ってから出すと、すぐ終わる処理で読み込み中の表示が一瞬だけ出て、画面がちらつくことがありません。
- 動きだけで伝えない。「読み込み中」「送信中…」などの文字を添え、
role="status"(進み具合はrole="progressbar"とaria-valuenow)で読み上げにも伝えます。読ませるのは変わったときだけにします。 - 進み具合と段は、本当の処理から届いたものだけで動かす。時間で勝手に進めると、止まったときに表示だけが先へ行き、嘘だとわかったときの落胆が大きくなります。
- 終わったら外し、画面の外では止める。くり返す動きは読み込みの間だけにし、画面の外にある間は
IntersectionObserverで止めます。 - 動きを控える設定では止めて、文字で示す。点や輪は止まった形にし、文字だけで伝わるようにします(見本の「動きを控える設定で見る」で確かめられます)。