ブラウザ確認が一瞬!
Gulp・Gruntと始めるBrowsersync入門

20
28
56

ウェブサイトを閲覧するユーザーの環境は多岐に渡ります。したがって、ウェブ制作者は多くの環境の動作確認をしなければなりません。その時の手間を大きく省いてくれるBrowsersyncというツールを紹介します。

Browsersyncとはファイル変更を監視し、自動でブラウザリロードを行ってくれるツールです。ローカルサーバーも起動できたり、複数のブラウザで操作の同期が可能といった便利機能も満載です。

Browsersyncのデモ動画

Browsersyncのデモ動画を紹介します。デスクトップブラウザとスマートフォン(iPhone)のブラウザが同期しており、ファイルの編集後に自動リロードしています。CSSでハリネズミを走らせるアニメーションです。HTMLやCSSのファイル編集がリアルタイムに反映されていることがわかります。

Browsersyncは何を便利にしてくれるのか

ファイルの編集後に複数ブラウザの確認をする際、以下のような手間があります。

  1. ファイルを編集する度に、ブラウザをすべて手動でリロードする手間
  2. 別のデスクトップブラウザやスマートフォンブラウザでの表示確認の為に、ローカルサーバーやリモートサーバーを立てる手間

Browsersyncを使用すると、これらの手間が省け制作効率を多くアップさせることができます。Browsersyncの主な特徴は以下です。

  1. ローカルサーバーが自動で起動
  2. 同じネットワークにある端末のすべてのブラウザが同期される
  3. 同期されたブラウザにおいては、スクロール、クリック、再読み込み等のユーザーアクションがすべて同期される

Browsersyncを単独で導入する方法

ローカルでのNode.jsのプロジェクトを作成します。

npm init -y

Browsersyncをインストールします。

npm install browser-sync -D

package.jsonファイルのscriptsフォールドを次のように編集します。 --server srcsrcはフォルダーを指します。任意のフォルダーを指定してもらってかまいません。これがブラウザを同期した場合のルートフォルダーとなります。

{
  "scripts": {
    "start": "browser-sync start --server src"
  },
  "devDependencies": {
    "browser-sync": "^2.27.5"
  }
}

次のコマンドを実行するとBrowsersyncが開始します。

npm run start

BrowserSyncが開始されるとログに以下のように出力されます。

[Browsersync] Access URLs:
 --------------------------------------
       Local: http://localhost:3000
    External: http://192.168.86.23:3000
 --------------------------------------
          UI: http://localhost:3001
 UI External: http://localhost:3001
 --------------------------------------
[Browsersync] Serving files from: src

「External」が自動で立ち上がったローカルサーバーのURLです。同じネットワークにあるデスクトップブラウザやスマートフォンのブラウザからこのURLにアクセスすれば、すべてのブラウザが同期されます。

GulpとBrowsersyncの連携

Browsersync単独でも便利なのですが、Gulpといったタスクランナーと連携するとさらに便利です。たとえば、Sassをコンパイルした後にブラウザをリロードしたり、スプライトシートを作りながら実機で表示確認をしたり等ができるようになります。ここではGulpと連携する例をご紹介します。Gulpの基本的な導入方法については、以前の記事「5分で導入できる! タスクランナーGulpを使ってウェブ制作を爆速にしよう」をご覧ください。

Gulpの導入方法

npm init -y
npm install -D gulp

Browsersyncのインストールは簡単です。Node.jsがインストールされた環境で、以下のコマンドを使ってBrowsersyncプラグインをインストールします。

npm install browser-sync -D

Browsersyncの基本は2つのAPI

Browsersyncを使うときにおさえておきたいAPIは以下の2つです。

  • browserSync({server: {baseDir: ルートフォルダ}})
    ブラウザを同期した場合のルートフォルダーを指定します。
  • .reload()
    同期しているブラウザをすべてリロードします。

Gulpでのタスク設定

gulpfile.jsファイルでプラグインの読み込みとタスクの設定を行います。srcフォルダー以下のファイルの更新を監視し、ファイルが更新されたら同期しているブラウザをリロードするというタスクを作ってみます。

// gulpプラグインの読みこみ
const gulp = require("gulp");

// browser-syncのプラグインの読み込み
const browserSync = require("browser-sync");

// タスクの設定
gulp.task("browserSyncTask", function () {
  browserSync({
    server: {
      baseDir: "src", // ルートとなるディレクトリを指定
    },
  });

  // srcフォルダ以下のファイルを監視
  gulp.watch("src/**", function () {
    browserSync.reload(); // ファイルに変更があれば同期しているブラウザをリロード
  });
});

タスクを実行するとBrowsersyncが開始します。

npx gulp browserSyncTask

BrowserSyncが開始されるとログに以下のように出力されます。

「External URL」が自動で立ち上がったローカルサーバーのURLです。同じネットワークにあるデスクトップブラウザやスマートフォンのブラウザからこのURLにアクセスすれば、すべてのブラウザが同期されます。

最後に

Browsersyncを使うと、複数のブラウザや複数の端末における動作確認が容易になり、制作者のみならずチーム内のメンバーによる確認の手助けにもなります。動作確認がスムーズになると、制作のブラッシュアップに注力できるようになります。ぜひお試しください。

※この記事が公開されたのは6年11ヶ月前ですが、 今年8月に内容をメンテナンスしています。