Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

NAntを活用して開発時の作業を自動化する

ソフトウェアのライフサイクルに応じて作業の効率化を図る

  • LINEで送る
  • このエントリーをはてなブックマークに追加

アプリケーションを開発していると、同じような作業を繰り返さなければいけないことがあります。このような定型作業は、オープンソースのビルドツールNAntを使って自動化すると、ちょっとした手間を省くことができ、プログラミングに専念できるようになります。

目次

はじめに

 アプリケーションを開発していると、同じような作業を繰り返さなければいけないことがあります。例えば、リリースモードでコンパイルしたり、VSS(Visual Source Safe:ソースコード管理ソフト)から最新ソースを取ってきてビルドしたりというような作業です。このような定型作業には慣れてしまっているかもしれませんが、NAntを使って自動化するとちょっとした手間を省くことができ、プログラミングに専念できるようになります。本稿では、NAntの概要と、使用例について紹介します。

 なお、NAntと同様の機能を持つ.NET Framework 2.0同梱ツール「MSBuild」についての紹介記事『MSBuildを活用して開発時の作業を自動化する』も併せてご覧いただくことをおすすめします。

対象読者

 Visual Studio (.NET)で開発を行っている方、作業の効率化・自動化に興味のある方を対象としています。

必要な環境

 このサンプルはVisual Studio .NET 2003と、NAntのバージョン0.85-rc3で動作確認をしています。NAntは同梱していますので、改めて入手することなく簡単に動作を確認できます(拡張版であるNAntContribは同梱していません)。

サンプルの概要

 ダウンロードできるアプリケーションは「(1)Windowsアプリケーションをコンパイル」「(2)アプリケーションを起動」という手順をNAntで実行するサンプルです。

 コマンドプロンプトを立ち上げて、ダウンロードファイルを解凍したフォルダ(日本語が含まれない場所を推奨)に移動し、「SampleNAnt.bat」を実行してください。これによって、「NAnt.exe」へのパスが通ります。後は、コマンドプロンプトに表示されるメッセージに従ってNAntを試してみてください。

 

NAntの特長

 NAntは、JavaのAntを.NETで利用できるように移植したオープンソースのビルドツールです。ビルドツールとは、アプリケーションの構築に必要なソースコードのコンパイルを容易にしたり、定型作業を自動化したりできるツールです。NAntでは、「ビルドファイル」というXMLの設定ファイルを書くことによって、手動で行っている定型作業を簡単に実行できるようになります。

 

 単純な処理であれば、Visual Studioのビルドイベントを使うこともできますが、ビルドイベントの機能は、Visual Basic 2003やVisual Basic 2005 Expressに実装されていない、バッチプログラムのため複雑な手順を記述できないといった問題があります。

 そこで、多くの環境で動作し、高度な処理を実行できるNAntについて紹介します。

豊富なタスク

 NAntの最大の魅力は呼び出せる機能の多さにあります。この機能のことをNAntでは「タスク」と呼んでいます。代表的なタスクには下表のようなものがあります。

NAntのタスク(抜粋)
タスク名 説明
copy ファイルをコピーする。
cl C/C++のソースコードをコンパイルする。
csc C#のソースコードをコンパイルする。
cvs ソース管理リポジトリのCVSのコマンドを実行する。
delete ファイルを削除する。
echo コンソールやファイルなどにメッセージを出力する。
exec システムコマンド(notepad.exe/ping.exeなど)を実行する。
mail メールを送信する。
mkdir ディレクトリを作成する。
ndoc NDocを実行してドキュメントを生成する。
nunit2 NUnit2でユニットテストを実行する。
unzip 圧縮ファイルを解凍する。
solution Visual Studioのソリューションをコンパイルする。
vbc Visual Basicのソースコードをコンパイルする。
zip 圧縮ファイルを作成する。

 このように、NAntによってコンパイルをしたり、メールを送信したりすることができます。この他にも多数のタスクがありますので、興味のある方はNAntのタスクリファレンスをご覧ください。

 また、NAntの拡張版として提供されているオープンソースライブラリ「NAntContrib」では次のようなタスクも提供されています。

NAntContribのタスク(抜粋)
タスク名 説明
gac GAC(Global Assembly Cache)を操作する。
fxcop ソースコードの規約をチェックする。
mkiisdir IISの仮想フォルダを作成する。
msi アプリケーションのインストーラを作成する。
nunitreport NUnitのテスト結果をレポートにする。
svn ソース管理リポジトリのSvn(Subversion)のコマンドを実行する。
vb6 Visual Basic6.0のソースコードをコンパイルする(注:正常に動作させるにはパッチが必要)。
vsscheckin ソース管理リポジトリのVSS(Visual Source Safe)にチェックインする。
vsscheckout VSSからチェックアウトする。
sql データベースにSQL文を発行する。

 このようにNAntContribにも多数の有益なタスクがありますので、興味のある方はNAntContribのタスクリファレンスをご覧ください。

設定が容易

 NAntでは、ビルドファイルと呼ばれるXMLの設定ファイルに従ってタスクを実行させることができます。本稿で作成するビルドファイルの完成形は次のようになります。

ビルドファイル「default.build」
<?xml version="1.0" encoding="utf-8" ?>
<project name="NAntSample" default="build" basedir=".">

  <!-- プロパティ -->
  <property name="basename" value="NAntSampleVB2003" />

  <!-- buildターゲット -->
  <target name="build" description="Visual Studioソリューションのビルド">
    <solution configuration="Debug" solutionfile="${basename}.sln" />
  </target>

  <!-- runターゲット -->
  <target name="run" depends="build" description="アプリケーションの実行">
    <exec program="${basename}.exe" basedir="bin" />
    <echo message="${datetime::now()}に実行しました。" />
  </target>

</project>

 ビルドファイルの書き方については後述しますが、タスクごとに必要となるパラメータを記述すれば目的の処理を呼び出すことができます。XMLの設定と聞くと難しそうに思われるかもしれませんが、Visual Studio .NETでは、XMLのスキーマを認識して、自動補完(補足1の「インテリセンスの設定」参照)も使えますので、バッチファイルよりも簡単に設定を記述することができます。

その他の便利な機能

 このほかにも、次のような便利な機能が備わっています。

  • 環境に依存しない(Visual Studioをインストールしていないアプリケーションサーバや、Linuxの.NET環境のMonoでもビルドできる)。
  • 「ビルドしてからアプリケーションを起動する」というような実行順序(依存関係)の設定ができる。
  • アセンブリや環境設定などの情報を取得できる関数が用意されている。
  • 条件に応じて分岐を行える。
  • エラー発生時に処理を中断し、特定の処理を呼び出すことができる。

 このようなメリットがあるため、NAntは、個人、企業、オープンソースといった開発で頻繁に利用されています。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 青木 淳夫 (株式会社ネクストスケープ)(アオキ アツオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5