ユアスク by みんなシステムズ

MENU

【超簡単】プログレスバーを全ページの画面上部に設置する方法(NProgress.js)

2023/07/27

こんにちは!YKです!

アプリケーションを使っていてページ移動した際に、ページ移動時間が遅いときってありますよね。

そんなとき、ユーザーは「いまどうゆう状況?」と不安になったりストレスを抱えてしまいます。

ユーザーは、そのようなストレスがアプリケーションを使っている際に少しずつ溜まっていくとアプリケーションの使用をやめてしまうかもしれません。

このストレスを改善するための方法としてはいくつかあります。

  • ①ページ速度を改善する
  • ②ローディング中だとわかるUIを追加する

今回は、このうち②を紹介します。

②の中でもいくつかありますが、この記事ではNProgress.jsを使ったプログレスバーの実装方法について紹介します。

これを実装すると、以下のようなプログレスバーが実装できます。

Laravel Forgeでも採用されているNProgress.js

補足

         

ローディング中だとわかるUIは色々あります👇

前提

この記事の前提として、LaravelプロジェクトにNProgress.jsを実装する方法を紹介します。

環境

  • “laravel/framework”: “^9.0”
  • “laravel/ui”: “v4.2.2”
  • フロントのビルドツール: vite使用

手順1 NProgress.jsをインストール

今回使用するのはNProgress.jsです。

まず、npmでインストールします。

npm install --save nprogress

手順2 cssを読み込みます

resources/sass/app.scssに以下を追記します。

// Bootstrap
@import 'bootstrap/scss/bootstrap';

@import '/node_modules/nprogress/nprogress.css'; // 👈追記

手順3 jsを読み込みます

resources/js/app.jsに以下を追記します。

import './bootstrap';

// 追記ここから👇
import NProgress from 'nprogress'
NProgress.configure({ showSpinner: false });

window.NProgress = NProgress;

document.addEventListener('DOMContentLoaded', function() {
  NProgress.done();
});

window.addEventListener('beforeunload', function() {
  NProgress.start();
});
// 追記ここまで👆

手順4 npm run dev(またはnpm run build)

最後に、npm run devまたはnpm run buildコマンドを実行してください。

これだけで以下のようなプログレスバーが全ページの上部に表示されます。

補足:カスタマイズについて

今回少し手を加えている部分があります。それは以下の部分です。

NProgress.configure({ showSpinner: false });

スピナー(くるくる回るやつ)を表示しないようにfalseにしています。

デフォルトだと表示されているようになっているので、ここはお好みで変更してください。

色など変更したいとき

デフォルトだとバーに影がついていたりします。

そのような影を削除したり、色を変えたい場合は以下のようにしてみてください。

#nprogress .bar {
  height: 3px; // 高さを調整
  background: red; // 色を調整
}
#nprogress .peg {
  box-shadow: none; // 影を削除
}

まとめ

いかがだったでしょうか。

とても簡単に実装できたと思います。

プログレスバーなどの読み込み中であることがわかるUIを取り入れることで、ユーザーが待ってくれる許容時間が長くなるという研究結果も出ています。

[引用]https://uxdesign.cc/loading-progress-indicators-ui-components-series-f4b1fc35339a

Fiona Fui-Hoon NahassessedによるTolerable waiting time and the impact of feedback on user tolerance(許容できる待ち時間とフィードバックがユーザーの許容度に与える影響に関する研究)では、ユーザーがウェブページを放棄するまでにどれくらいの待ち時間が必要なのか、また、許容できる待ち時間に対するフィードバックの影響について論じている。その結果、フィードバックの存在はウェブユーザーの許容待ち時間を延長させることが明らかになった。

プログレスバーが表示された参加者の待ち時間の中央値は22.6秒であり、プログレスバーが表示されなかった参加者の待ち時間の中央値は9秒であった。

Fiona Fui-Hoon Nahassessed

このような結果からも、プログレスバーは取り入れたほうが良さそうですね!

NProgress.jsはサクッと導入できるだけでなく、ユーザーの体験も改善できるのでとてもおすすめです!

ぜひこの記事を参考に取り入れてみてください。