連載
NAgileで始める実践アジャイル開発

第4回 ミッション:ビルドを自動化セヨ!

NAgiler 黒石 高広
2006/09/06
Page1 Page2 Page3

登場人物:
師匠:ナジャイラ師(マスター)(♂)
NAgiler(ナジャイラー=.NETにおけるアジャイル開発の実践者)。謎の多い人物。ちょっと偉そう。だが、実は弟子思い。
弟子:点網 滝(てんもう たき)(♀)
.NET開発者。ウォーターフォール型の開発を行っているが、アジャイル開発を明るく真摯(しんし)な態度で学ぼうとしている。
Back Issue
1
.NET+アジャイルなら本当に幸せになれるのか?
2 ソフトウェア開発をシンプルにする考え方のコツ
3 ソフトウェアの良い設計を行うコツ
※ご注意 ……本稿の物語やそこで交わされる会話はすべてフィクションであり、実在の人物、団体などとは一切関係ありません。登場人物の役柄はストーリー上の設定であり、筆者や読者を代表するものではありません。あくまでフィクションとしてお読みください。

■■1. はじめに■■

師匠〜。

 
ん? どうした? そんなに慌てて。
 

大変なんです!! こんなえたいの知れない紙が机の上に……。

何だ、恋文でももらったのか?

恋文って、いつの時代ですか……。違いますよ。だいたい、そんなうれしいものだったら師匠に見せませんよ。

それもそうだな。なになに……。

図1 指令書のイメージ図

……。

   

なるほど、確かに変わった恋文だな。

 

だから恋文じゃないですってば!!

 

ハハ、いまのは軽い冗談だ。朝飯前の豚カツぐらい軽い冗談だ。

 

……そんなの全然軽くないじゃないですか。もう、まじめに相談してるのに……。エージェント滝とか訳分かんないし……。

 

あっ!! 分かった! きっと私に一方的な好意を抱くストーカーが私の気を引くために、これを置いていったのね!? 美しいのも罪だわ……。

 

違うだろ。落ち着け。これは……書いてあるとおりじゃないのか? ビルドの自動化をしろと。まぁ誰がこれを書いたかは分からんがな。

   

ビルドってあれですよね? Visual Studioのメニューにある。

   

そうだな。ただ、この書がいいたいことは、単なるコンパイルのことじゃなくてビルドにかかわるより広いことを指していると思うぞ。

   

より広いこと、というと?

   

そうか、そういえばまだビルドの自動化について話していなかったな。よい機会なのでNAgileでも重要な奥義の1つである「ビルドの自動化」について、今回は説明しよう。

   

奥義の1つって、何だかすごそうですね。師匠、お願いします。

   

■■2. ビルドの自動化とは?■■

そもそもソフトウェアはコンパイルだけ通ればそれで動くというものではない。例えば、滝がいま開発しているソフトウェアを顧客が使えるようにするには何をすればよいか?

 

え、唐突ですね。えっと……いま開発しているのはWebアプリケーションなので、まずは最新コードを取得して……。

 

そうだな、1人で開発しているわけではないから、バージョン管理ソフトウェアに保存されている最新コードを取得するのは重要なことだな。

 

それをコンパイルして……えっと、次に完成したプログラムをお客さんが使えるサーバにコピーして……そっか、必要な初期データもデータベースにそろえなきゃ……。

 

そこだ、そこ。

 

え? どこどこ?(キョロキョロ)

 

そんなベタなボケはいらん。滝がいまいった作業はどうやって行っているんだ? と聞いているんだ。

 

え? それは……ファイルのコピーなら、エクスプローラを開いてマウスでドラッグして……。

 

つまり手動で行っているんだな?

 

はい。

 

それらの作業は、開発期間中に何回も必要とならないか?

 

……はい。確かに何回もやってます。

 

それらを毎回手動でやっているんだな?

 

……はい。

 

なぜそれらを自動化しない?

 

……わーん(涙)、そんなにいじめないでくださいよ〜。確かに普段は特に深く考えずに手動で作業を行っていました……ごめんなさい……。

 

別にいじめているわけじゃない。

 さっき滝がいったようなビルドに関連して必要となるもろもろの作業は、ソフトウェア開発の中で頻繁に行う必要がある作業でもある。それらは単純な作業が多いので、ついつい手動で済ませてしまいがちだが、そこでよく考えてみてほしい。この作業を自動化するといったい何分節約できるのだろうか? とな。

 そこで自動化の出番というわけだ。まぁ1回のビルドでソフトウェアが完成し、ビルドを行った後のバグや仕様変更による修正もないというのであれば、別にビルドの自動化は必要ないかもしらんがな。

 

うう、まだいじめる……今日は“どS”キャラですね……。

 

いまのはただの皮肉だ。私が伝えたいことは分かるな?

 

……はい。自分の未熟さと自動化の重要性を痛感しました……。

 

分かってくれたようだな。

 自動化というのはアジャイル開発においても非常に重要なキーワードだ。ソフトウェア開発の中の無駄を省くという考え方に基づいているからな。それこそ、ビルドに関係なくても自動化できる作業はたくさんある。

 例えば、バージョン管理ソフトウェアから最新バージョンのソース・ファイルを取得し、ほかの開発者が作成したコードを自分の開発環境に取り込む作業、テストの際に生成された不要なファイルやデータを削除する作業など、ソフトウェア開発の中で繰り返し行う可能性の高い作業ほど、自動化を行うことで得られるメリットは大きいのだ。

 

確かに普段何げなく行っている作業でも自動化できるものはたくさんありそうですね。では、どうやって自動化を行えばいいんですか?

 

まぁ慌てるでない。自動化に利用できる技術やツールは数多く存在する。今回は、.NET開発で利用できるビルド・エンジンについて解説しよう。

 

はい! お願いします。

 

 INDEX
  NAgileで始める実践アジャイル開発
  第4回 ミッション:ビルドを自動化セヨ!
  1.ビルドの自動化とは?
    2.MSBuildとNAntの概要
    3.NAntとMSBuildどっちを使う?
 
インデックス・ページヘ  「NAgileで始める実践アジャイル開発」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間