Webページの構成ファイルをまとめる、モジュールバンドラー「webpack」入門
HTML/JavaScript開発作業を効率化する便利ツールの活用 第9回
ダウンロード サンプルファイル (8.2 KB)
JavaScriptライブラリの依存関係とwebpack
webpackのようなモジュールバンドラーが必要とされる背景を、JavaScriptを例に説明します。一般的に、WebページでJavaScriptライブラリを利用するには、リスト2のように、ライブラリを先、ライブラリを利用するコードを後に、それぞれHTMLファイルのscriptタグで記述します。順番を間違えると、ライブラリが参照できずエラーになります。
<script src="libs.js"></script><!-- ライブラリ --> <script src="logic.js"></script><!-- ライブラリを利用するコード -->
この方法では、利用するライブラリが複数あって、かつ相互に依存関係があると、正しい記述順番を判断するのが非常に難しくなります。
さらに、最近のJavaScriptライブラリでは、ライブラリ自体が複数のモジュールから構成されたり、別のライブラリに依存していたりする場合があります。図1はJavaScriptフレームワークAngularの構成ファイルです。Angularが「@angular/***」という複数のモジュールから構成されており、また、Angular自体も別のライブラリ(rxjsなど)に依存しています。
このように、JavaScriptの依存性を正しく解決するのは、ますます難しい状況になってきており、自動的に依存性を解決するwebpackといったツールが必要とされています。例えば以下の環境では、webpackが標準採用されています。
- Angular、React、Vueのコマンドラインツールで生成したプロジェクト
- Ruby on Railsのフロントエンド側コード
このようにwebpackは、Webフロントエンド開発における依存性解決ツールの標準的な存在になっています。
webpackと似たツール
webpackは多機能であるがゆえ、ほかのツールと比較されることがあります。ここからは、ほかのツールと比較しながら、webpackの特徴を説明していきます。
JavaScriptの依存性解決:Browserify、RequireJS
webpack以前にも、BrowserifyやRequireJSといったJavaScriptモジュールの依存性解決ツールが存在します。BrowserifyはNode.jsのモジュール形式、RequireJSは「AMD」(Asynchronous Module Definition)と呼ばれる形式のモジュールに対応します。webpackはNode.jsの形式と似た「CommonJS」と、AMD、さらにECMAScript 6(ES6)で導入された「ES6 Modules」のモジュールを処理できます。これらの記述方法は後述します。また、webpackでは、CSSや画像ファイルといったJavaScript以外のファイルも処理できます(次回の記事で解説します)。
タスクランナー:Grunt、gulp
webpackでは「ファイルに前処理を適用した後にまとめる」「処理終了後に開発用Webサーバーを起動する」といったタスクを実行できます(設定方法は次回の記事で説明します)。この意味でwebpackは、Gruntやgulpなどのタスクランナーと比較される場合があります。必要ならばgrunt-webpackやgulp-webpackといったプラグインで、Gruntやgulpからwebpackの機能を利用することもできるので、webpackだけで済ませるか別のタスクランナーを利用するかを、状況によって選択できます。
なお、本連載では、Browserify、Grunt、gulpを過去に紹介しているので、参考にしてみてください。
この記事は参考になりましたか?
- HTML/JavaScript開発作業を効率化する便利ツールの活用連載記事一覧
-
- モジュールバンドラーwebpackの設定を調整して、より実践的に使いこなそう
- Webページの構成ファイルをまとめる、モジュールバンドラー「webpack」入門
- モジュール管理を簡単にするBrowserifyをAPIや他ツール連携で使いこなす
- この記事の著者
-
WINGSプロジェクト 吉川 英一(ヨシカワ エイイチ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
