連載
» 2014年03月04日 18時00分 UPDATE

Gruntで始めるWeb開発爆速自動化入門(1):ブラックなWeb開発現場の救世主、Gruntのインストールと使い方 (1/2)

JavaScriptメインでWeb開発を行う際にさまざまな作業を自動化して開発効率を爆発的に高めるツール(Grunt、Yeoman、Bowerなど)やエディター、IDE、実行環境などを紹介していく連載。初回は主なビルドツールを紹介し、Gruntの概要と特長、環境構築の仕方や基本的な使い方に加え、CoffeeScriptを使った設定も解説する。

[中村修太,クラスメソッド]

ついて来られてますか? 複雑化/多様化したWeb開発

「Gruntで始めるWeb開発爆速自動化入門」のインデックス

連載目次

 一昔前であれば、HTMLJavaScriptCSSを使用してWebアプリを作成する場合、(筆者の経験では)所定の位置にファイルを置くだけでした。最近はHTML/JavaScript/CSS関連の技術も複雑化/多様化し、いろいろなことを考慮しなければなりません。

 例えばJavaScriptファイルの場合は、以下の作業を行うこともあるでしょう。

  • minify(圧縮)や結合
  • 単体テストの実行
  • JSLint(構文チェック)の実行

 さらに、CoffeeScriptTypeScriptを使用している場合にはコンパイル(JavaScript変換)を行う必要もあります。

 また、SCSS(Sass)LESSなどのCSS拡張メタ言語を使用している場合にも、コンパイル(CSS変換)作業が必要です。

 ファイルを修正してビルドするたびに、これらの作業をいちいち手作業で行っていては非常に面倒でしょう。こういった面倒な作業を簡単に自動化するために、ビルドツールがあります。

代表的なビルドツールいろいろ

 ビルドツールの歴史は古く、皆さんも今まで何かしらのツールを使用したことがあるかと思います。代表的なものを幾つか紹介しましょう。

make

 ビルドツールとして最も有名なものではないでしょうか。コンパイル、リンク、テスト、インストールなどのルールを記述したファイル(Makefile)を使用し、作業を自動的に行います。

Ant

 XMLでビルドのルールを記述する、Java用のビルドツールです。代表的なIDEであるEclipseには、Antプラグインが標準で組み込まれています。

Maven

 Antに代わるものとして開発されたJava用プロジェクト管理ツールです。ビルドだけではなくライブラリの依存関係管理など、いろいろな機能を持っています。

Gradle

 GroovyのDSLを利用してビルドスクリプトを記述することのできるビルドツールです。Groovyを使用することで柔軟な記述が可能になっています。

 また、Mavenとも互換性があるので、タスクをそのまま利用可能になっています。

 これら以外にも言語や環境に応じたさまざまなビルドツールが存在します。こういったビルドツールのうちの1つが、本連載で紹介する「Grunt」です。

Web開発現場の救世主Gruntとは

 Gruntとは、先ほど紹介したような自動化のためのビルドツール(タスクランナー)です。

grunt1_01.jpg Grunt公式サイト

 Node.jsを使用し、ビルド用のスクリプト(Gruntfile.js)をJavaScriptで記述してタスクを定義します。

 また、後述する「プラグインモジュール」を使用して、タスクを独自に定義でき、任意の処理を行えます。

 Node.js上で動作しているため、Webサーバーを使用することやライブリロード(ファイル更新を検知して任意のタスクを実行)も可能です。

Gruntの定義ファイル「Gruntfile.js」

 ここでGruntの定義ファイルを見てみましょう。Gruntを使用したいアプリのディレクトリに「Gruntfile.js」というファイルを用意し、そこにタスク内容を記述します(※環境設定手順は後述します)。

module.exports = function(grunt) {
  //Gruntの設定
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json')
  });
  //defaultタスクの定義
  grunt.registerTask('default', 'Log some stuff.', function() {
    //ログメッセージの出力
    grunt.log.write('Logging some stuff...').ok();
  });
};
Gruntfile.js

 grunt.registerTaskで「default」というタスクを定義しています。ここではログメッセージを出力するだけの単純なタスクです。

 コンソールでgruntコマンドを入力することで、Gruntを実行できます。

% cd /path/your/gruntproject
% grunt
Running "default" task
Logging some stuff...OK
Done, without errors.

 また、以下で定義したタスクが実行されます。

grunt {タスク名}

 「default」という名前のタスクは、タスク名を省略した場合に実行されるタスクです。もちろん、「grunt default」とコマンドで入力しても、同様の結果になります。

 以上が簡単なタスク定義ファイルとGrunt実行方法です。

Gruntのプラグインモジュールとは

 次にプラグインモジュールについて説明します。Gruntではプラグインモジュールを読み込むことにより、いろいろなタスクを実行可能です。

 例えば、ファイルを連結する、圧縮する、「JSHint」を実行するなど、よく使用されるような処理は、すでにプラグインモジュールとして用意されています。

 プラグインモジュールはGruntfile.js内でgrunt.loadNpmTasks関数を使用して読み込みます。

//uglify(圧縮)プラグインを読み込む例
grunt.loadNpmTasks('grunt-contrib-uglify');

 上記のようにGruntfile.jsで「grunt-contrib-uglify」プラグインを読み込めば、「uglify」タスクを使用できるようになります。

 プラグインモジュールは、Gruntの公式サイトのPluginsページ(英語)で探すことができます。

grunt1_02.jpg Gruntプラグイン検索ページ

 Gruntで実現したいタスクがある場合、まずはここで探してみてください。

 また、Gruntのプラグインモジュールは自分で作成して公開することも可能です。Node.jsのモジュールを使用するときもよく利用する「npm」を使って登録します。なお、自作プラグインの作成方法については、今後の連載で解説する予定です。

 次ページからは、Gruntをインストールして実際に使用してみましょう。

       1|2 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

編集部からのお知らせ

@IT編集部では、編集記者を募集しています。ご興味のある方は奮ってご応募ください。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。