SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

HTML/JavaScript開発作業を効率化する便利ツールの活用

Webページの構成ファイルをまとめる、モジュールバンドラー「webpack」入門

HTML/JavaScript開発作業を効率化する便利ツールの活用 第9回

  • X ポスト
  • このエントリーをはてなブックマークに追加

JavaScriptライブラリの依存関係とwebpack

 webpackのようなモジュールバンドラーが必要とされる背景を、JavaScriptを例に説明します。一般的に、WebページでJavaScriptライブラリを利用するには、リスト2のように、ライブラリを先、ライブラリを利用するコードを後に、それぞれHTMLファイルのscriptタグで記述します。順番を間違えると、ライブラリが参照できずエラーになります。

リスト2 JavaScriptファイルの依存関係
<script src="libs.js"></script><!-- ライブラリ -->
<script src="logic.js"></script><!-- ライブラリを利用するコード -->

 この方法では、利用するライブラリが複数あって、かつ相互に依存関係があると、正しい記述順番を判断するのが非常に難しくなります。

 さらに、最近のJavaScriptライブラリでは、ライブラリ自体が複数のモジュールから構成されたり、別のライブラリに依存していたりする場合があります。図1はJavaScriptフレームワークAngularの構成ファイルです。Angularが「@angular/***」という複数のモジュールから構成されており、また、Angular自体も別のライブラリ(rxjsなど)に依存しています。

図1 Angularを構成するモジュール群と、Angularが依存するライブラリ
図1 Angularを構成するモジュール群と、Angularが依存するライブラリ

 このように、JavaScriptの依存性を正しく解決するのは、ますます難しい状況になってきており、自動的に依存性を解決するwebpackといったツールが必要とされています。例えば以下の環境では、webpackが標準採用されています。

  • Angular、React、Vueのコマンドラインツールで生成したプロジェクト
  • Ruby on Railsのフロントエンド側コード

 このようにwebpackは、Webフロントエンド開発における依存性解決ツールの標準的な存在になっています。

webpackと似たツール

 webpackは多機能であるがゆえ、ほかのツールと比較されることがあります。ここからは、ほかのツールと比較しながら、webpackの特徴を説明していきます。

JavaScriptの依存性解決:Browserify、RequireJS

 webpack以前にも、BrowserifyRequireJSといった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-webpackgulp-webpackといったプラグインで、Gruntやgulpからwebpackの機能を利用することもできるので、webpackだけで済ませるか別のタスクランナーを利用するかを、状況によって選択できます。

 なお、本連載では、BrowserifyGruntgulpを過去に紹介しているので、参考にしてみてください。

次のページ
webpackをコマンドラインで利用する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
HTML/JavaScript開発作業を効率化する便利ツールの活用連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10408 2017/09/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング