[保留中の変更]ビューで、「2.単体テスト終了」が[発信]というフォルダーに位置づけられているのは、「『ベースライン(2.単体テスト終了)宣言』という変更指示が、まだチーム全体の統合領域であるストリームに適用されていません。適用してください」ということを意味します。ここで、右クリックして[提出]を選択すると(図14)、

[保留中の変更]ビューは図15のように変わります。

今度は新しく作ったリポジトリー・ワークスペースに、[着信]というフォルダーができ、その中に「(2.単体テスト終了)」への変更情報が格納されます。この様子を説明するのが、図16です。
[提出]処理によって、ストリーム内のコンポーネントのベースラインも、「(2.単体テスト終了)」になりました。RTCはストリームに変更が発生すると、そのストリームに関連づけられているリポジトリー・ワークスペースに対して、変更が発生したことを通知します。それを[着信]としてみることができます。各メンバーは作業をしている最中ですから、強制的に変更内容を適用することは好ましくありません。各メンバーは、図17のように[受諾]処理を行うと、

自身のリポジトリー・ワークスペース(とそれに関連づけられているEclipseワークスペース)に変更を適用することができます。
複数の開発者が設定したリポジトリー・ワークスペースとストリームとの関係をグラフ化することができます。それがフローダイアグラムです。図9はリポジトリー・ワークスペースの新規作成の説明でみた画面イメージですが、このメニューにある[フロー・ダイアグラム]を選択します。
図18 は、jiroでログインしたRTCからフローダイアグラムを作成した結果です。
アジャイル開発のための便利なお砂箱、「リポジトリー・ワークスペース」
一見すると、リポジトリー・ワークスペースは、「一手間増やしている」ように見えるのではないでしょうか? リポジトリー・ワークスペースは、アジャイル開発を強く意識した仕組みです。アジャイル開発を、ソースコード管理という視点から見ると、次のような特徴があります。
- 必要最小限のドキュメントで、後は「ソースコードで会話する」というアプローチは、さまざまなアルゴリズムを設計書ではなく、コードを実装し動かしながら検討していくことにつながる。開発者は、場合によっては複数の異なるアルゴリズム、異なる環境を同時期に比較・検討を(ある時はトライ&エラーで)進めていく。また他の地域にいる開発者と意見交換する場合にも、これら「未完成のコード」を共有できる必要があるが、その場合にも、チームの統合領域を損なうことは避けたい。
- ペアプログラミングでは、1台のマシン環境を共有しコードやベータ版で相談する。オフショアなどの分散開発で同様な協調作業を実現しようとすると、単にコードの断片をやりとりするだけでは、再現環境を構築する手間が頻繁に発生する。稼働環境そのものが共有できる仕組みが必要となる。
- 他のメンバーの仕事をカバーする場合にも、迅速に作業環境を引き継げる仕組みがないと、自分のこれまでの作業環境を一時的にバックアップできる仕組みが必要。
リポジトリー・ワークスペースという作業領域をサーバー側に持たせることによって、上記の課題を解決します。いくつか例を挙げてみましょう。
- 開発者は、複数のリポジトリー・ワークスペースを簡単に作成することができます。おのおののリポジトリー・ワークスペースで異なるアルゴリズムを検討し、ベストなものだけを統合領域に登録することができます。開発者は検討の過程で必要なリポジトリー・ワークスペースからコンポーネントを「ロード」してEclipseワークスペースを置き換えたり、Eclipseワークスペースを「アンロード」して退避できます。これにより迅速に作業領域を切り替えることができます。
- 開発者は、リポジトリー・ワークスペースを他の開発者に公開することができます。これにより検討中のアルゴリズムの評価や検討を、ネットワークを介した別の開発拠点にいる開発者と実施できます。
- リポジトリー・ワークスペースのスナップショット(コピー)をとって、他の開発者と共有して作業を分担したり、そのスナップショットから新しいリポジトリー・ワークスペースを作ったりすることで、環境構築の手間を劇的に削減することができます。
「統合領域を『汚すことなく』、自由に環境を変えたり、遠隔地にいる他の開発者と安全にリソースを共有できる」という点で、リポジトリー・ワークスペースのことを、「サーバー側のお砂箱(Server-side Sandbox)」と呼ぶこともあります。
次はビルド管理…
…と思ったら、「今回は結構ヘビーだな」というコメントが社内であがりました。ということで、今回はこの辺でいったん終わりとしましょう。次回はビルド管理、そして憧れのCI環境へと邁進していきます。それまでに、ぜひ実際にリポジトリー・ワークスペースで遊んでみてください!
では次回!


