さて、ここまででインストーラーとランタイムを紹介してきましたが、ここからはアプリケーションを提供する側、つまり開発側の視点に立ってみましょう。
アプリケーションを開発する際に、0から全ての機能を作り込むよりは、既にあるプログラムを利用した方が効率的です。他のアプリケーション・プログラムでも利用できるものは、他でも利用しやすいように、モジュール(ライブラリ)として提供されています。
世の中には、さまざまなモジュールが提供されていますが、自分が欲しいモジュールを、それぞれのサイトから集めてきてインストールするには手間が掛かります。
また、あるモジュール利用するために、別の依存するモジュールが必要であったり、依存するモジュールのバージョンによって動作しなかったりと、きちんと動作するモジュールを選別するのは骨の折れる作業となります。
そこで、開発者が簡単にライブラリやモジュールを利用できるように、モジュール・ライブラリを簡単にインストールするパッケージマネージャーの仕組みが用意されています。パッケージマネージャーを利用することにより、Web上にあるリポジトリ上に登録された数多くのライブラリやモジュールを簡単にインストールできます。
また、アプリケーションが利用するライブラリのバージョンを指定することにより、ライブラリのバージョン管理も行えます。
パッケージマネージャーは、ビルドツールと統合されることも多く、ビルドツールで指定したバージョンのライブラリを自動的にビルドされたリリース成果物に組み込むことが可能となっています。
各言語のモジュール管理のためのツールと代表的なビルドツールを表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のものについて簡単に紹介します。
Mavenは、モジュール管理を含めたビルドツールで、MavenリポジトリはJavaで利用するモジュールのリポジトリとして既に標準的なものとなっています。
一方、開発現場では、ビルドツールとしてMavenより歴史が古いAntを利用しているプロジェクトも多いですが、IvyはAntからMavenリポジトリのモジュールを利用できるようにするAntのプラグインです。
Mavenは、「pom」と呼ばれるXMLファイルでビルドスクリプトやモジュールの依存関係を記述します。Gradleは、JVM上で動く言語の一つであるGroovy言語を利用して、プログラマーにとって、より直感的にビルドスクリプトとモジュールの依存関係を記述できるビルドツールです。
モジュールを管理するツールとして、gemコマンドとbundlerがあります。gemコマンドは、OS環境にRubyのモジュールをパッケージ化したgemパッケージをインストールします。
gemコマンドでインストールしたモジュールは、全てのアプリケーションで利用されます。対して、bundlerは、gemパッケージをアプリケーション固有の環境にインストールします。
例えば、あるRubyのアプリケーションではモジュールAのバージョン1.0が、別のアプリケーションではモジュールAのバージョン2.0が必要な場合、モジュールAのバージョン1.0をOS環境にインストールしたのでは両方のアプリケーションを動かせません。
bundlerを利用してアプリケーション固有のgemパッケージを管理することで、他のアプリケーションのモジュールの依存関係を気にせずに利用できます。
npm(Node Package Modules)は、サーバーサイドのJavaScriptフレームワークとして人気があるNode.jsのJavaScriptモジュールを管理するツールとして開発されました。サーバーサイトで利用できるモジュール以外にも、jQueryなどのクライアントサイドのモジュールも提供されています。
Bowerは、ツイッター社が開発したWeb用のパッケージマネージャーです。Node.jsと比べるとJavaScript以外にも、CSSやフォルト、Webサイトに組み込んで利用するウィジェットなども提供されています。
JavaScriptのモジュール管理の代表といえば、Node.jsでしたが、Webサイトで利用するモジュールに特化する場合は、「Bower」も注目されています。
Copyright © ITmedia, Inc. All Rights Reserved.