連載
» 2014年04月01日 18時00分 公開

ユカイ、ツーカイ、カイハツ環境!(32):exe/dmgしか知らない人のためのインストール/パッケージ管理/ビルドの基礎知識 (3/4)

[岡本隆史,@IT]

モジュール(ライブラリ)管理

 さて、ここまででインストーラーとランタイムを紹介してきましたが、ここからはアプリケーションを提供する側、つまり開発側の視点に立ってみましょう。

 アプリケーションを開発する際に、0から全ての機能を作り込むよりは、既にあるプログラムを利用した方が効率的です。他のアプリケーション・プログラムでも利用できるものは、他でも利用しやすいように、モジュール(ライブラリ)として提供されています。

 世の中には、さまざまなモジュールが提供されていますが、自分が欲しいモジュールを、それぞれのサイトから集めてきてインストールするには手間が掛かります。

 また、あるモジュール利用するために、別の依存するモジュールが必要であったり、依存するモジュールのバージョンによって動作しなかったりと、きちんと動作するモジュールを選別するのは骨の折れる作業となります。

モジュール管理を楽にする主な言語ごとのパッケージマネージャーとビルドツール

 そこで、開発者が簡単にライブラリやモジュールを利用できるように、モジュール・ライブラリを簡単にインストールするパッケージマネージャーの仕組みが用意されています。パッケージマネージャーを利用することにより、Web上にあるリポジトリ上に登録された数多くのライブラリやモジュールを簡単にインストールできます。

 また、アプリケーションが利用するライブラリのバージョンを指定することにより、ライブラリのバージョン管理も行えます。

 パッケージマネージャーは、ビルドツールと統合されることも多く、ビルドツールで指定したバージョンのライブラリを自動的にビルドされたリリース成果物に組み込むことが可能となっています。

 各言語のモジュール管理のためのツールと代表的なビルドツールを表1で紹介します。

表1 言語ごとのモジュール管理・ビルドツール
言語 モジュール管理ツール ビルドツール
Java Apache Maven
Java Apache Ivy Apache Ant
Java Gradle
JavaScript npm Grunt.js
JavaScript Bower
Ruby gem rake
Ruby bundler
Objective-C CocoaPods Xcode
Perl CPAN -
C#/VB.NETなど.NET Frameworkで利用する言語 NuGet VisualStudio
PHP Composer -
Python pip -
Python easy_install -

 一つの言語について、複数のツールが提供されているものもありますが、ここでは、代表的なJava、Ruby、JavaScriptのものについて簡単に紹介します。

Java:MavenとIvyとGroovy

 Mavenは、モジュール管理を含めたビルドツールで、MavenリポジトリはJavaで利用するモジュールのリポジトリとして既に標準的なものとなっています。

 一方、開発現場では、ビルドツールとしてMavenより歴史が古いAntを利用しているプロジェクトも多いですが、IvyはAntからMavenリポジトリのモジュールを利用できるようにするAntのプラグインです。

 Mavenは、「pom」と呼ばれるXMLファイルでビルドスクリプトやモジュールの依存関係を記述します。Gradleは、JVM上で動く言語の一つであるGroovy言語を利用して、プログラマーにとって、より直感的にビルドスクリプトとモジュールの依存関係を記述できるビルドツールです。

Ruby:gemとbundler

 モジュールを管理するツールとして、gemコマンドとbundlerがあります。gemコマンドは、OS環境にRubyのモジュールをパッケージ化したgemパッケージをインストールします。

 gemコマンドでインストールしたモジュールは、全てのアプリケーションで利用されます。対して、bundlerは、gemパッケージをアプリケーション固有の環境にインストールします。

gemコマンドとbundlerによるモジュール管理

 例えば、あるRubyのアプリケーションではモジュールAのバージョン1.0が、別のアプリケーションではモジュールAのバージョン2.0が必要な場合、モジュールAのバージョン1.0をOS環境にインストールしたのでは両方のアプリケーションを動かせません。

 bundlerを利用してアプリケーション固有のgemパッケージを管理することで、他のアプリケーションのモジュールの依存関係を気にせずに利用できます。

JavaScript:npmとBower

 npm(Node Package Modules)は、サーバーサイドのJavaScriptフレームワークとして人気があるNode.jsのJavaScriptモジュールを管理するツールとして開発されました。サーバーサイトで利用できるモジュール以外にも、jQueryなどのクライアントサイドのモジュールも提供されています。

 Bowerは、ツイッター社が開発したWeb用のパッケージマネージャーです。Node.jsと比べるとJavaScript以外にも、CSSやフォルト、Webサイトに組み込んで利用するウィジェットなども提供されています。

 JavaScriptのモジュール管理の代表といえば、Node.jsでしたが、Webサイトで利用するモジュールに特化する場合は、「Bower」も注目されています。

 2014年3月25日の原稿執筆時点で、npmは6万4799パッケージ、Bowerは1万28パッケージ提供されています。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

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

メールマガジン登録

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