メニューボタン
IBMi海外記事2010.11.17

IBM Rational Team Concert for i でIBM成果物を構築する

ナズミン・ハージ、クシャル・ムニール 著

IBM成果物の設定、構成、ビルド結果の表示

IBM iの成果物の構築と管理に責任を持つソフト開発者であれば、IBM Rational Team Concert for i (RTCi)の導入を真面目に検討した方が良いかもしれません。RTCiはスケーラブルで拡張可能なプラットフォームの上に構築されたチーム共同作業ツールで、ソフトウェアのライフサイクル全般に渡るタスクを統合しています。このツールはIBM iプラットフォーム上で稼働するIBM Rational Team Concert for iクライアント、Jazz Team Server、Build System Toolkitの3つのコンポーネントで構成されています。このクライアントは、IBM Rational Developer for iのオプションのインストール可能な機能として入手可能でありますが、Jazz Team ServerとBuild System Toolkitの方はIBM iプラットフォーム用のライセンス・プログラムです。

RTCiの特長の1つは、サーバーとツールキットが共にIBM i上で稼働するという点です。IBM i上にサーバーをインストールして実行させることができるということは、サーバーを管理する際にIBM iオペレーティング・システムの機能を活用できるということになります。たとえば、IBM iの認証機能を使用してJazz Team Serverのユーザーを認証することができますし、システム・バックアップにJazz Team Serverのリポジトリ、すなわちIBM iオペレーティング・システム上のライブラリを含めることもできます。Build System Toolkitを使用すると、チームの定期的なビルドの自動化、監視、認知度向上のサポートが受けられます。同ツールキットはチームのビルド定義、ビルド・エンジン、ビルド結果を表現するモデルを提供してくれます。

RTCiの利点を活用できるように、Jazz Team Serverで管理するIBM i成果物を構築する方法について説明します。まず、Build System Toolkitのインストール方法とIBM i成果物用のビルドの設定と構成方法について説明します。次に、ビルドのユーザー・インタフェースについて、チーム・ビルドを実行する責任のあるチーム・メンバーの観点からと、ビルドが提供する結果を利用するチーム・メンバーの観点から説明します。また、ビルドの結果をチームの他のメンバーがどのように表示できるかについても説明します。

概要

成果物のビルドと、プロジェクトの生成物の作成のためにBuild System Toolkitを使用するには、プロジェクトの要件に合うようにビルド・プロセスをかなりカスタマイズする必要がある場合があります。通常は、ビルド管理者が設定時にこのカスタマイズを行います。チーム・ビルドの機能(Jazz Team Buildとも呼ぶ)はチームの作業をJazzリポジトリから取り出すためのインフラストラクチャを提供し、ビルド・スクリプトで利用可能な状態にして、生成された結果をRational Team Concertに戻します。ビルドの利用者としては、ビルドの進捗を監視してその結果にアクセスすることが可能です。

ビルド・インフラストラクチャの全体的な動作を見てみましょう。まずIBM i上にJazz Team Serverをインストールして構成し、実行することが必要です。ビルドを実行するには、RTCiクライアントとBuild System Toolkitもインストールしなければなりません。ビルドに限って言えば、RTCiクライアントを使用してビルド・エンジンとビルド定義を作成して構成し、ビルドをサブミットしてビルドの結果を表示させることができます。Build System ToolkitはIBM i上にインストールされ、ビルド・エンジンを起動してビルドを実行します。チームが専用のビルド・マシンを設置することにした場合は、Jazz Team ServerとBuild System Toolkitは同じIBM iオペレーティング環境上に置いても構いませんし、異なるオペレーティング環境上に置くこともできます。

詳細に進む前に、ビルドに関する話をする際に出てくる用語について、いくつかきちんと定義しておきましょう。ビルド・エンジンはビルド・サーバー上で動作しているビルド・システムのことを指します。ビルド・エンジンはクライアントで定義し、IBM iプラットフォーム上でビルドを開始するときに使用します。ビルド定義は週次の運用ビルド等といったビルドを定義します。ビルドの設定とビルド用に実行するコマンドはこのビルド定義で指定します。ビルド・エンジンは1つ以上のビルド定義をサポートできます。ビルド・リクエストとはビルドを実行するリクエストのことで、ビルド結果はビルドの出力を表示します。クライアントを使用してビルド・リクエストをサブミットし、ビルドの状態をチェックし、ビルドの結果を表示させることができます。ビルド・エンジンはビルド・リクエストがないかJazz Team Serverに対して定期的に問い合わせます。ビルド関連のすべてのアイテムはプロジェクト・エリアに属しており、ビルド関連の操作はプロジェクトのプロセスによって管理されます。IBM i Scrumテンプレートを使用してプロジェクト・エリアを作成している場合は、ビルダーのロールを持ったチーム・メンバーがビルドの設定と実行に責任を持ち、かつその権限を持っています。ビルド・エンジン、ビルド定義、ビルド・リクエスト、ビルド結果はビルド・プロセスをサポートしており、Jazzのリポジトリ内に格納されています。

ビルド・エンジンがビルド・リクエストを処理するためには、ビルド・エンジンがIBM iプラットフォーム上で稼働していなければなりません。ビルダーは手動でビルド・リクエストを発行することもできますし、ビルド・リクエストを定義して特定のスケジュールで実行させることもできます。Jazz Team Serverがビルド・リクエストを受け取ると、Jazz Team Server はリクエストを問い合わせるように割り当てられている1つ以上のビルド・エンジンにそのリクエストを転送します。ビルド・エンジンはビルド・コマンドを実行し、ビルドのステータスと結果をJazz Team Serverに対してリアルタイムでレポートします。するとJazzのユーザーは、Jazzリポジトリからビルドの実行結果にアクセスすることができるようになります。クライアント、サーバー、ビルド・エンジン間のやりとりを図―1に示します。

Build System Toolkitのインストール

成果物をビルドするにはBuild System Toolkitを使用します。Build System ToolkitはJazzビルド・エンジン (ビルド・マシン上で継続的に実行され、対応するビルド・リクエストがないかJazz Team Serverに対して問い合わせます)と、ビルドの起動と停止、ビルドの進捗の監視、ビルド結果の発行などといったビルド・プロセスを制御するタスク群で構成されています。

IBM iオペレーティング環境上で実行されるBuild System ToolkitとJazz Team Serverは、StandardエディションとExpressエディションの 2つのエディションで提供され、IBM iのライセンス・プログラムとしてインストールされます。これにより、オペレーティング・システム上の他のライセンス・プログラムと同様にBuild System ToolkitとJazz Team Serverを管理し、サービスを提供することができます。Jazz Team Serverは、最初は試用ライセンス版がインストールされていますが、IBMパスポート・アドバンテージのウェブサイトからサーバーのアクティベーション・キーをダウンロードすれば、永久ライセンス版に変更することができます。

Build System ToolkitとJazz Team ServerはIFSディレクトリにインストールします。Build System Toolkitのインストール場所とインストールのステップごとの説明については、インストレーション・ガイドを参照ください。

ビルド・エンジンの作成と起動

ビルドがビルド・リクエストの有無を問い合わせできるようするには、ビルドを起動しなければなりません。ビルドは、ビルド・エンジンが稼働しているIBM iオペレーティング環境上で行われます。RTCiクライアントを使用してビルド・エンジンを作成するには、[チーム成果物]ビューに移動します。プロジェクト・エリアで[ビルド]ノードを展開し、[ビルド・エンジン] を右クリックして、[新規のビルド・エンジン]をクリックします。するとビルド・エンジン・エディタが起動し、そこでビルド・エンジンを構成します。すべてのビルドは指定されたリポジトリ・チーム・エリアのコンテキスト内で作成しなければならないので、このエリアをビルド・エンジンと関連付ける指定をしなければなりません。チーム・エリアは、ビルド・エンジン上で操作が実行される際にどのプロセス権限が適用されるのかを決定します。ビルド・エンジンを識別するには、IDフィールドのビルド・エンジン識別子を指定します。 [アクティベーション]ペインで[アクティブ]チェック・ボックスにチェック・マークが入っていることを確認してください。ビルド・エンジンがアクティブになっていないとビルド・リクエストも処理できませんし、ビルドも実行できません。

作成したビルド・エンジンを起動する方法はいくつかあります。Rational Developer for iのリモート・システム・エクスプローラーでリモート・シェル・ビューを使用するか、エミュレータからQshellを使用するかです。ビルド・ディレクトリ(ビルド・エンジンがインストールされている場所)に移動するとstartup.qshコマンドがあります。このコマンドを使用してビルド・エンジンを起動します。このコマンドにはいくつかの必須パラメータとオプションのパラメータがあります。サポートされているパラメータのリストとその詳細については、startup.qshと入力してみてください。典型的な起動コマンドは以下のようなものです。

startup.qsh -repository https://jazzop01.torolab.ibm.com:9445/jazz/ -engineId MY_ENGINE -userId

BUILDER1 -pass just4now -jobname MYBLDENG

-userIdは、このビルド・エンジンが処理するビルド定義で指定されているリポジトリ・ワークスペースの所有者でなければなりません。-engineIdの値は、前述のリポジトリにあるビルド・エンジン定義を作成した際のIDフィールドに入力した識別子と一致していなければなりません。

ビルド定義の作成

ビルド定義はRTCiクライアントを使用して作成します。ビルド定義を作成するには、チーム成果物ビューに移動し、プロジェクト・エリアで[ビルド]フォルダを右クリックして[新規のビルド定義]を選択します。次に、新しいビルド定義を作成するチーム・エリアを選択します。RTCiはIBM i CommandとIBM i Continuous Loadという2つのビルド・テンプレートを提供しています。ビルド・テンプレートを選択するとビルド定義エディタが起動し、そこでビルド・ワークスペースとその他のビルドの構成情報を指定します。

IBM i Continuous Loadテンプレートはリポジトリ・ワークスペースとマッピングされたIBM iライブラリを同期させ、リポジトリのコンテンツがコピーされてビルドが実行されます。このテクニックにより、対応するライブラリのコンテンツがIBM i上で使用されるリポジトリ・ワークスペース中のライブラリと同期が取られたままの状態にすることができます。IBM i Continuous Loadテンプレートには、IBM iコマンドやビルド・コマンドを実行する用意がありません。ビルドを実行したりIBM iコマンドを実行したりしたい場合は、IBM i Commandテンプレートを使用してください。このテンプレートを使用すると、ビルドの度にワークスペースのコンテンツ全体を、マッピングされたIBM iライブラリに読み込むか、最後のビルド以後に変更された部分だけを読み込むかを選択することができます。

次に、作成するビルド専用のリポジトリ・ワークスペースを作成する必要があります。このワークスペースを使用すると、ビルドに対する変更を識別し、ビルドのソース・コンテンツのスナップショットを作成することができます。スナップショットとは、任意の時点におけるワークスペースのコンテンツの永続的なレコードであるリポジトリ・オブジェクトです。スナップショットは便利なオブジェクトで、ビルドに使用される成果物をあとで必要に応じて再作成することができます。ビルドを実行するたびにスナップショットが作成されます。

専用のビルド・ワークスペースを作成していない場合は、ビルド定義エディタにこのワークスペースを作成するオプションがあります。また、ビルド・ユーザーを作成して、そのユーザーをこの専用のビルド・ワークスペースの所有者に設定しておくと良いでしょう。ビルド・エンジンを起動するときに指定するビルド・ユーザーに、このワークスペースの所有者を設定しておくことが重要です。ビルドに対する最新の変更を受け付ける際に、ビルドがビルド・ワークスペースを修正できるようにするにはこうしておくことが必要です。

ここで注意していただきたい点は、ビルドはIBM i上で実行されソースがライブラリ内に保存されますので、ビルド・リポジトリ・ワークスペースのコンテンツは適切なライブラリにコピーされるということです。したがって、このワークスペース内の各iプロジェクトに対してライブラリを指定する必要があります。マッピングされたライブラリを指定するには、ビルド・リポジトリ・ワークスペースを右クリックし、[プロパティ]を選択して[iプロジェクトのライブラリへのマッピング]ダイアログボックスをオープンします。ここで、ワークスペース中の各iプロジェクトに対してライブラリを指定することができます。

ビルド定義内にビルドのスケジュールを作成することができ、そのスケジュールに従ってビルド・キューにリクエストが追加され、このキューをサポートする任意のビルド・エンジンがリクエストを受け取ってビルドを開始することができます。またワークスペースに変更を受け取って読み込むための構成オプションと、ビルドを実行するためのコマンドも指定しなければなりません。さらに、リポジトリ内が乱雑にならないようにするために、古いビルド結果を自動的に削除するようビルド定義中に指定することもできます。[一般]タブの[削除ポリシー]ペインで[ビルド結果の削除]を選択します。そして[成功したビルド結果の保存]フィールドに保存する成功したビルド結果の個数を指定し、[失敗したビルド結果の保存]フィールドに保存する失敗したビルド個数を指定します。

ビルドのサブミット

ビルド・エンジンを起動してそのビルド・エンジンをサポートするビルド定義を定義すれば、ビルドをリクエストすることができます。ビルドをリクエストするには、[チーム成果物]ビューでプロジェクト・エリア・ノードを展開し、[ビルド]フォルダを展開してビルド定義名を探します。そしてビルド定義名を右クリックして[ビルドをリクエスト]を選択してビルドをサブミットします。この時点でJazz Team Serverはビルド・リクエストを収集して、このビルド定義に割り当てられているビルド・エンジンにそれを転送します。

ビルド定義をオープンしてあれば、[ビルド定義]エディタの右上にあるビルド・アイコンをクリックして、ビルド・リクエストをサブミットすることもできます。

ビルド結果の表示

[ビルド]ビューに一覧表示されているチームは、ビルドの進捗を確認することができます。ビルドがリクエストされた時にこのビューがオープンされていなかった場合は、ビューがオープンされて[進捗]列にステータスが表示されます。ビルド・リクエストが一旦処理され始めるとそのビルド結果が利用可能になります。ビルド名を右クリックして[オープン]を選択すれば、進行中のビルド結果をオープンすることができます。こうすることでビルド結果エディタがオープンし、ビルドの識別子がウィンドウ・タイトルに表示されます。また[チーム成果物]ビューの[ビルド]ノードを拡張してビルド名を右クリックしてから[ビルド結果の表示]を選択することで、[ビルド]ビューをオープンすることもできます。

ビルドの進捗を表示するには、[アクティビティ]タブを開きます。進行中のビルド結果を更新するには、ビルド結果エディタの右上にある更新アイコンをクリックします。ビルド結果エディタ中で使用できるタブは、ビルド定義の構成によって異なります。IBM iコマンドとIBM i Continuous Loadビルドタイプに対しては、[概要]、[アクティビティ]、[ログ]の3つのタブが表示されます。[ログ]タブにはビルドのログが含まれており、ビルドによって読み込まれた成果物と、ビルド中に実行されたコマンドの詳細が表示されます。ビルドが失敗に終わったときは失敗したコマンドがどれなのかここで確認してください。

ビルド定義中で指定した削除ポリシーに従って、ビルド結果が削除されます。ポリシーを無視してビルド結果を保持したい場合は、ビルド結果の[概要]タブに移動して、[一般情報]ペインで[削除許可]チェック・ボックスのチェックを外します。

リポジトリ・ワークスペースとマッピングされたライブラリの同期

前述の通り、ビルドはビルド・エンジンが稼働しているIBM iオペレーティング環境上で実行されます。ビルドを実行するには、ビルド・リポジトリ・ワークスペース内にある成果物を、IBM i上のライブラリにコピーしなければなりません。リポジトリ・ワークスペース中のiプロジェクトとビルド用にコンテンツがコピーされるライブラリとの間には1対1の対応があります。このマッピングはリポジトリ・ワークスペースのプロパティ頁で設定します。[チーム成果物]ビューでビルド・リポジトリ・ワークスペースを右クリックし[プロパティ]を選択した後、[iプロジェクトのライブラリへのマッピング]を選択します。各iプロジェクトに対して、マッピングされたライブラリの名前を指定します。

たとえば、Rational Developer for iを使用している開発者用ビルドを実行するためにライブラリ・リスト中で上記のライブラリを使用している場合は、成果物を含むライブラリを同期させてリポジトリ・ワークスペースのコンテンツでビルドを実行することが重要です。ビルド・スクリプトを実際に実行することなくこれを行う方法が2つあります。1つ目の方法は、前述した通りContinuous Load定義を作成することで、リポジトリ・ワークスペース内のiプロジェクトへの変更が、マッピングされたライブラリに定期的にダウンロードされるようにしておく方法です。2つ目の方法は、Compare with IBM iビューを使って、iプロジェクトに対する特定の変更を手動で比較してからマッピングされたライブラリにダウンロードする方法です。

Compare with IBM iビューを起動するには、リポジトリ・ワークスペースを右クリックして[比較]を選択し、次に[IBM i]を選択します。するとCompare with IBM iビューがオープンして比較結果を表示します。このビューを使ってリポジトリ・ワークスペースのコンテンツをIBM iライブラリにコピーすることで、コンテンツを同期させることができます。このビューはオブジェクトまたはソース・メンバーの変更されたすべての属性を一覧表示します。変更された各ソース・メンバーに対してリポジトリ・ワークスペース内のコンテンツとIBM iファイル・システム内のマッピングされたライブラリとの違いを表示させるオプションが利用可能です。このビューは、Continuous LoadまたはIBM i Commandでビルドするときに、成果物を読み込む際に問題が発生した時に役立ちます。つまり、ライブラリのコンテンツとリポジトリ・ワークスペースのコンテンツを比較して同期がとれていない成果物を探すことができます。

RTCiを使ってみてください

チームの共同作業によりソフトウェア開発チームの効率や生産性が向上するのはなにも不思議なことではありません。RTCiがチームにもたらす恩恵を確認するには、jazz.netからTeam Concert for iの試用版をダウンロードすることができます。またIBMもwww-01.ibm.com/software/awdtools/rtciにTeam Concert for iの製品頁を用意しており、Rational Team Concert for i共同作業用ツールを使い始めるにあたって役に立つ製品、フォーラム、ブログ、ポッドキャストなどの技術情報が豊富に提供されています。

著者について
ナズミン・ハージ氏は、IBM iに20年以上従事しています。同氏はILE RPGコンパイラを担当し、Remote System Explorer for IBM iのチーム・リードおよびテクニカル・リードを務めています。同氏は現在、Rational製品のサポート・マネージャです。

クシャル・ムニール氏は、IBMトロント研究所でソフトウェア開発者として2001年から勤務しています。

本稿で述べられている見解は著者たちの見解でありIBM Corporationの見解とは限りません。

あわせて読みたい記事

PAGE TOP