フロントエンドエンジニア必見!JavaScript開発現場で人気の「Webpack」とは?
ホームページを作るためには、HTMLファイルだけでなく、CSSやJavaScript、画像やWebフォントなど、さまざまなファイルを用意する必要があります。
こうしたWebで必要なファイルをワンパッケージにまとめてくれる便利なものとして、*「Webpack」*という技術が次第に注目を集めています。
Webpackは、複数のファイルを1つのメインファイルにまとめてくれるだけではなく、SassやLESSなどのCSSプリプロセッサー言語をコンパイルしてくれるので、大変便利です。
GruntやGulpのようなタスクランナーと並んで、非常に注目を集めています。
今回は、JavaScriptの開発現場で人気を集めている*「Webpack」について、入門記事としてその概要や簡単な使い方*をご紹介します。
Webpackとは?
Webpackとは、CSSやJavaScript、画像などWebコンテンツを構成するあらゆるファイル(アセット)を*「モジュール」という単位で取り扱い、「バンドル」*という1つのファイルに最適な形で変換するためのツールです。
例えば、1つのJavaScriptファイルに長い処理を書くと、可読性が悪くなり、バグが生まれやすくなったり、結果的に開発スピードが遅くなったりする原因になります。
これを解決するために、「モジュール」という単位でJavaScriptを複数ファイルに分割して開発することがあります。
こうすれば、エラーが起こったり仕様変更をした場合に、どのモジュールを修正すればいいのかが分かり、開発スピードが早くなります。
しかし、JavaScriptの現行の仕様では、モジュールを扱うための仕組みが整っていないため、これまでにモジュールを取り扱うためにさまざまな仕様が検討されてきました。
Webpackを使えば、JavaScriptモジュールをブラウザで扱える形に簡単に変換することができます。
さらにユニークなのは、Webpackでは、JavaScriptだけでなくCSS、画像、Webフォント、音声、動画など、あらゆるアセットをモジュールとして扱い、1つの「バンドル」として出力することができる点です。
Webpackコマンドを使ってビルドすることで、ビルドされた「バンドル」の中にさまざまなファイルが「コード」として埋め込まれます。
これにより、ファイルのリクエスト数が減少し、ページ読み込み速度の改善が見込めるのです。
Webpackを使うための準備
Webpackを使うには、npm経由でダウンロード・インストールを行います。
Macではターミナル、Windowsならコマンドプロンプトに下記のコマンドを入力するだけでOKです。
npm install -g webpack
もしMacでインストール中にエラーが出る場合は、コマンド冒頭に「sudo」と指定して管理者権限で実行してください。
参考:
知っておいて損はなし!新人Webデザイナーのための「npm」入門
インストールが完了したら、コンテンツのファイル一式を保存するためのフォルダーを任意の場所に作成し、コマンドでその場所に移動してください。
移動後、下記コマンドを実行してnpmを初期化します。
npm init
すると、プロジェクトの設定情報が記述された「package.json」というファイルが生成されます。
Webpackを実行するために、Webpack本体をプロジェクトフォルダにもインストールします。
npm install --save-dev webpack
これでWebpackを使用するための準備が整いました。
Webpackを使ってみる
Step1. モジュールの作成
それでは、3つのモジュールを使ったJavaScript処理を例にして、Webpackの使い方を解説していきます。
メイン処理を行う*「main.js」にサブモジュールである「hello.js」と「bye.js」*で定義されたメソッドを呼び出す仕組みを作ります。
▼ main.js
var voice1 = require(./hello.js);
voice1.hello();
var voice2 = require(./hello.js);
voice2.bye();
▼ hello.js
module.exports.hello = function() {
alert(“こんにちは。”);
}
▼ bye.js
module.exports.bye = function() {
alert(“さようなら。”);
}
Step2. Webpackの設定
JavaScriptモジュールは、このままではブラウザでは使用できないので、ブラウザが解釈できる形に変換する必要があります。
Webpackを使うことで、JavaScriptモジュールをブラウザで解釈できる形に変換することができます。
*「webpack.config.js」*というファイルを作り、「バンドル」にまとめるための設定をします。
▼ webpack.config.js
module.exports = {
entry: “./main.js”,
output: {
path: “./”,
filename: “bundle.js”
}
}
「entry」では、メインとなるJavaScriptファイル(「エントリーポイント」と呼びます)を指定し、「output」でファイルの出力設定を行います。
設定ができたら、「webpack」コマンドを実行してビルドを行います。
webpack
これで、*「main.js」と「hello.js」「bye.js」が統合され、「bundle.js」*に統合されました。
*「bundle.js」には統合されたコードだけでなく、メソッドまわりの処理を現行のブラウザでも処理するために必要なコード、各モジュールの処理も含まれています。
HTMLで「bundle.js」を読み込むことで、「hello.js」「bye.js」*内の処理が実行されます。
タスクランナーとの違い
以上、ごく基本的なWebpackの機能を見てきましたが、概要でも述べた通り、SassやLESSをコンパイルしたりという自動化の側面から、タスクランナーであるGruntやGulpの代わりとして紹介されることがあります。
確かに、Webpackではタスクランナーにできることの多くが実行できます。
しかし、WebpackはCSSや画像を含むさまざまなアセットファイルを1つのJavaScriptファイルとして「バンドル」にまとめて出力することが基本的な使い方となっているので、CSSや画像を別ファイルとして扱いたい場合にはタスクランナーが必要になります。
そのため、タスクランナーとWebpackは、どちらか一方を使うというよりは併用して使うほうが望ましいといえます。
まとめ
大規模なJavaScript開発を行うときには、モジュールシステムを使って開発したほうがミスも少なくなり、開発スピードも上がります。
Webpackを使うことで、JavaScriptのモジュールを簡単に一本化することができるだけでなく、他のアセットファイルまでもまとめてくれるという他にはない機能を提供してくれます。
他にも、*「ローダー」*と呼ばれるプラグインをインストールすることで、様々なメタ言語のコンパイルやコードの圧縮など、面倒なことを取り除いてくれたり便利な機能を扱ったりすることができます。
npmさえインストールしていれば導入はとても簡単です。
JavaScriptを扱うことがあるなら、ぜひ一度は使ってみてください。
参考:
知っておいて損はなし!新人Webデザイナーのための「npm」入門
- ページ
- 印刷物のカタログやパンフレットは、通常複数のページから成り立っています。インターネットのホームページもまったく同じで、テーマや内容ごとにそれぞれの画面が作られています。この画面のことを、インターネットでも「ページ」と呼んでいます。ホームページは、多くの場合、複数ページから成り立っています。
- HTML
- HTMLとは、Webページを記述するための言語です。"HyperText Markup Language "の略です。"<"と">"にはさまれたさまざまな種類の「タグ」によって、文章の構造や表現方法を指定することができます。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- フォント
- フォントとは、同一の特徴を持った文字の形状を一揃いでデザインしたものです。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- コンテンツ
- コンテンツ(content)とは、日本語に直訳すると「中身」のことです。インターネットでは、ホームページ内の文章や画像、動画や音声などを指します。ホームページがメディアとして重要視されている現在、その内容やクオリティは非常に重要だと言えるでしょう。 なお、かつてはCD-ROMなどのディスクメディアに記録する内容をコンテンツと呼んでいました。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- フォント
- フォントとは、同一の特徴を持った文字の形状を一揃いでデザインしたものです。
- ページ
- 印刷物のカタログやパンフレットは、通常複数のページから成り立っています。インターネットのホームページもまったく同じで、テーマや内容ごとにそれぞれの画面が作られています。この画面のことを、インターネットでも「ページ」と呼んでいます。ホームページは、多くの場合、複数ページから成り立っています。
- コンテンツ
- コンテンツ(content)とは、日本語に直訳すると「中身」のことです。インターネットでは、ホームページ内の文章や画像、動画や音声などを指します。ホームページがメディアとして重要視されている現在、その内容やクオリティは非常に重要だと言えるでしょう。 なお、かつてはCD-ROMなどのディスクメディアに記録する内容をコンテンツと呼んでいました。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- HTML
- HTMLとは、Webページを記述するための言語です。"HyperText Markup Language "の略です。"<"と">"にはさまれたさまざまな種類の「タグ」によって、文章の構造や表現方法を指定することができます。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- プラグイン
- プラグインは、本来あるソフトウェアに機能を拡張させるために追加するプログラムのことです。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
おすすめ記事
おすすめエントリー
同じカテゴリから記事を探す
カテゴリから記事をさがす
●Webマーケティング手法
- SEO(検索エンジン最適化)
- Web広告・広告効果測定
- SNSマーケティング
- 動画マーケティング
- メールマーケティング
- コンテンツマーケティング
- BtoBマーケティング
- リサーチ・市場調査
- 広報・PR
- アフィリエイト広告・ASP
●ステップ
●ツール・素材
- CMS・サイト制作
- フォーム作成
- LP制作・LPO
- ABテスト・EFO・CRO
- Web接客・チャットボット
- 動画・映像制作
- アクセス解析
- マーケティングオートメーション(MA)
- メールマーケティング
- データ分析・BI
- CRM(顧客管理)
- SFA(商談管理)
- Web会議
- 営業支援
- EC・通販・ネットショップ
- 口コミ分析・ソーシャルリスニング
- フォント
- 素材サイト
●目的・施策
- Google広告
- Facebook広告
- Twitter広告
- Instagram広告
- LINE運用
- LINE広告
- YouTube運用
- YouTube広告
- TikTok広告
- テレビCM
- サイト制作・サイトリニューアル
- LP制作・LPO
- UI
- UX
- オウンドメディア運営
- 記事制作・ライティング
- コピーライティング
- ホワイトペーパー制作
- デザイン
- セミナー・展示会
- 動画・映像制作
- データ分析・BI
- EC・通販・ネットショップ
- 口コミ分析・ソーシャルリスニング