■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                      2009年08月23日

    Java総合講座 - 初心者から達人へのパスポート
                  vol.167

                                セルゲイ・ランダウ
 バックナンバー: http://www.flsi.co.jp/Java_text/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


[このメールマガジンは、画面を最大化して見てください。]


========================================================
◆ 01.SOAPのアプリケーション(Webサービス)
========================================================


今回は、Eclipse(CVSクライアント)でCVSを使用する方法を解説します。

代表的な操作としては、以下のようなものがあります。

(C1) Eclipse(CVSクライアント)で作成したプロジェクトをCVSのリポジトリーに登録する。
 (これをインポート(import)という。)
 (このとき、プロジェクト配下のソース・ファイルが一挙にリポジトリーに登録される。
 なお、Eclipseのプロジェクト名に相当するものはCVSでは「モジュール名」と呼ばれる。
 つまり、EclipseのプロジェクトはCVSでは「モジュール」に対応する。)
(C2) CVSのリポジトリーからEclipse(CVSクライアント)へプロジェクトを取り込む。
 (これを「チェックアウト(checkout)」という。)
(C3) Eclipseのプロジェクト(内の各ソース・ファイル)とCVSのリポジトリー(内の各
 ソース・ファイル)の内容が一致しているか、状態(同期化の状態)の確認を行う。
 (これにより、自分が修正したファイルをリポジトリーに登録済みか、あるいは未登録
 か、あるいは他者が修正して登録済みのソース・ファイルを自分が取り込み済みか、あ
 るいはまだ取り込んでいないか、また他者が修正して登録済みのコードと自分が修正し
 たコードが干渉(ソース・ファイルの中で他者が修正したのと同じ場所を自分も修正し
 しかも異なる修正をしている(いわゆる「競合」している)ということはないか、と
 いったことが調べられます。)
(C4) Eclipseで変更したソース・ファイルをCVSのリポジトリーに登録する。
 (これを「コミット(commit)」という。)
(C5) CVSのリポジトリーに登録されている最新のソース・ファイルをEclipseに取り込む。
 (これを「更新(update)」という。)
(C6) 競合したときに対処する。
 (競合のしかたによって、「オーバーライドおよびコミット」で対処する場合と
 「オーバーライドおよび更新」で対処する場合と「マージ」する場合があります。)
(C7) リポジトリーにこれまでコミットされてきたソース・ファイルの履歴を調べる。
 (履歴のリストを表示し、必要があれば過去のソース・ファイルを復元することも
 できます。)



では、(C1)から順番に実際に操作してみましょう。

あるアプリケーションの開発プロジェクトにおいて、あなたが先行してEclipseで開発
を進め、CVSのリポジトリーにはまだそのプロジェクトが登録されていない場合を想定
しましょう。このような場合に、CVSリポジトリーにプロジェクト(モジュール)を
登録するときに(C1)の操作を行います。(ただし、Eclipseを使わなくても登録は行え
るので、必ず(C1)の方法を使わなければならないという訳ではない。)

では、実際に(C1)の操作を行ってみましょう。使用するプロジェクトとしてはJStudySOAP
を使うことにします。

(1) LinuxのPCを起動した後、EclipseのPCも起動しましょう。そしてEclipseを起動し、
EclipseはJavaのパースペクティブにしておきます。

(2) パッケージ・エクスプローラーにおいて、プロジェクトJStudySOAPを右クリックし、
「チーム」→「プロジェクトの共用」を選択します。

(3) 「プロジェクトの共用」ウインドウにおいて、「既存のリポジトリー・ロケーション
を使用」を選択し、ロケーションのリストの中から一つ選択(現在は一つしかないはず)
して、「次へ」ボタンをクリックします。

(4) 「プロジェクト名をモジュール名として使用」を選択し、「次へ」ボタンをクリック
します。(プロジェクト名とモジュール名を異なるものにしてもかまわないのですが、ただ
そうすると、わかりにくいし間違いの元になることがあるので、同じ名前にしておくこと
が望ましいのです。)

(5) 「終了」ボタンをクリックします。

(6) コミットのコメントを入力するためのウインドウが表示されたら、コメントを
入力し、「終了」ボタンをクリックします。
(ここでは、コメントは

初回のコミット

とでもしておきましょう。)


これで、リポジトリーへの登録が完了です。


パッケージ・エクスプローラーのJStudySOAP配下を見るとJStudySOAPやsrcやその配下の
パッケージのアイコンに小さな円柱のマークが付いたことがわかりますでしょうか。
そして、その配下の各クラスやインターフェースなどのソース・ファイルの名前の右側に
1.1というような数字が付いていることがわかりますね。これらはCVSリポジトリーに登録
されていることを意味しています。


LinuxのPCのほうで、

/var/cvs/repoディレクトリーの配下を調べて見て下さい。これらに対応してディレクトリー
が作成されていることがわかりますね。


以上で(C1)の操作は終わりです。


次に(C2)の操作をしてみましょう。

あるアプリケーションの開発プロジェクトにおいて、すでにCVSリポジトリーにプロジェ
クト(モジュール)が登録済みである段階であなたが開発に参加することになった場合
を想定しましょう。開発にはEclipseを使用するとすると、あなたがまず先に行うことは
CVSのリポジトリーからプロジェクト(モジュール)を取得してEclipseのプロジェクト
として取り込むことです。このような場合に(C2)の操作を行います。

では、実際に(C2)の操作を行ってみましょう。
本来、この操作は、先ほど使ったPCとは別の(別の人が使っている)PC(ただし同じLAN
につながっていて、Eclipseが使えるもの)で行う操作ですが、ここでは先ほどと同じPC
でこれを疑似体験できるようにしてみます。

(前提) LinuxのPCで、予めもう一人の開発者用に一般ユーザーを追加してある必要があ
ります。前回cvsippanという一般ユーザーを追加したのと同様に操作して、もう一つ
一般ユーザー(ここではcvsippan02というユーザー名にする)を追加しましょう。

┌補足─────────────────────────┐
念のため、一般ユーザー(cvsippan02)を追加する手順をここに
書いておきます。

(まずcvsユーザーになる。)
su - cvs

(CVSROOTディレクトリーに移動する。)
cd /var/cvs/repo/CVSROOT

(一般ユーザー(cvsippan02)を追加する。)
htpasswd passwd cvsippan02
(ここでパスワードを2回聞いてくるので答える。当メールマガジンではわかりやすく
12345678としておきますが、もちろんこんなわかりやすいパスワードは実際には使う
べきではありません。)

(passwdファイルを編集する。)
vi passwd
(次の変更を行います。)
cvsippan02:xxxxxxxxxx
という行を
cvsippan02:xxxxxxxxxx:cvs
に書き換えます。
(passwdファイルを保存して閉じます。)

(元のユーザーに戻る。)
exit
└───────────────────────────┘


(1) まず、先ほど使っていたEclipseのPCでEclipseを終了してから、そのワークスペース
(JavaWorksという名前になっているフォルダー)をコピーして別のフォルダー名(ここ
ではJavaWorks2にする)にしておきます。

(2) 再度Eclipseを起動し、起動時にワークスペースを聞いてきたときにJavaWorksではなく
JavaWorks2を指定します。(Eclipseの起動完了後にメニュー・バーの「ファイル」→
「ワークスペースの切り替え」を選択して行う方法もある。)

(3) パッケージ・エクスプローラーの中でJStudySOAPプロジェクトを削除します。
(パッケージ・エクスプローラーの中でJStudySOAPを右クリック→「削除」を選択し、
「プロジェクトの削除を確認」ウインドウで「'C:\JavaWorks2\JStudySOAP'のコンテンツ
も削除する」を選択して「はい」ボタンをクリックする。)

(ここからあとは、新規に参加した開発者が行う操作です。)

(4) 「CVSリポジトリー・エクスプローラー」パースペクティブを開きます。

(5) (本来ならば、ここで(前回と同様にして)新規にCVSリポジトリーの追加作業を行う
のですが、ここでは時間を節約するために(ワークスペースをコピーしたために既に設定
済みになっている)既存のリポジトリーの設定を変更するだけにします。)
「CVSリポジトリー」ビューにリストされている既存のリポジトリー(円柱のアイコンが
付いている)を右クリック→「プロパティー」を選択します。

(6) 「プロパティー」ウインドウが表示されるので、それぞれの欄に以下のよう
に入力します。(実際にはユーザーとパスワードの修正だけで済むはずです。)

接続タイプ: pserver
ホスト: LinuxのPCのIPアドレス(筆者の場合は192.168.0.5)
リポジトリー・パス: /var/cvs/repo
ユーザー: cvsippan02
パスワード: 12345678
「デフォルト・ポートを使用」を選択(これは先ほどの2401を使用するということ)
「パスワードの保管」にもチェック・マークを入れておく。

(7) 「OK」ボタンをクリックします。これでcvsippan02というユーザー名でCVSリポジトリー
に接続できるようになりました。

(8) (「CVSリポジトリー」ビューの中の)リポジトリーの円柱のアイコンの左側にある
+マーク(田のマークと言ったほうがわかりやすいかも)をクリックして展開したリスト
の中に「HEAD」というのがありますが、その左側にある+マークをクリックしてさらに
展開するとJStudySOAPがリストされますね。このJStudySOAPを右クリック→「チェックアウト」
を選択して下さい。(ここで「チェックアウト」の代わりに「別名チェックアウト」を
選択すれば、プロジェクト名をモジュール名と異なるものにすることができますが、
なるべくプロジェクト名はモジュール名と同じにしておいたほうがよいです。)

(9) ここで再度Javaパースペクティブを開いてみてください。パッケージ・エクスプロー
ラーの中にJStudySOAPができていていますね。アイコンに円柱のマークが付いていること
と各ソース・ファイルの名前の右側に1.1というような数字が付いているのは先ほどと
同様ですね。


以上で、(C2)の操作は完了です。


続いて、(C3)の操作をしてみましょう。

(1) パッケージ・エクスプローラーの中でJStudySOAPを右クリック→「チーム」→
「リポジトリーと同期化」を選択してください。

(2) 今はEclipse側とCVSリポジトリー側が完全に一致しているので「CVSを同期化中、
変更は見つかりませんでした。」というメッセージが出ますが、このメッセージは
「OK」ボタンをクリックして閉じて下さい。

もう一つ、「パースペクティブのオープンの確認」ウインドウが開いていますね。
(「「同期化」ビューはチーム同期化パースペクティブに関連付けられています。
・・・
このパースペクティブを開きますか?」というメッセージが書かれていますね。)
これも「OK」ボタンをクリックして下さい。

(3) すると「同期化」ビューが開きますが、今はEclipse側とCVSリポジトリー側が完全
に一致しているので「CVS(JStudySOAP)に変更点はありません。」というメッセージ
が表示されているだけですね。ではいったんJavaパースペクティブに戻って下さい。

(4) JStudySOAPプロジェクトのjp.co.flsi.lecture.webservice.hotelパッケージの中の
MailSender.javaを編集し、その中の各メソッドの初めと終わりにそれぞれ

logger.info("Start ...............");

の行と

logger.info("End ...............");

の行を追加し、保管(Ctrl + S)して下さい。

そうすると、パッケージ・エクスプローラーにおいてMailSender.javaのファイル名の左側
に>のマークが付きますね。これは変更が加えられたことを意味しています。

(5) ここで先ほどと同じく、JStudySOAPを右クリック→「チーム」→「リポジトリーと
同期化」を選択してください。

(6) 先ほど同じく「パースペクティブのオープンの確認」ウインドウが開きますが、
やはり「はい」ボタンをクリックします。

(7) ここで開いた「同期化」ビューの中にはJStudySOAPがリストされていますが、この
左側の+マークをどんどんクリックしていって、中を展開していってください。最後に
先ほど編集したMailSender.javaが出てきてその左側には灰色の右方向の矢印(→)が
付いていますね。これは、「CVSリポジトリーの内容に対して、自分が(このEclipseで)
変更を加えているのでコミットする必要がある」ということを意味しています。
ここで、これを右クリックして「コミット」を選択する方法もあるのですが、ここでは
そのままにして、いったんJavaパースペクティブに戻ることにしましょう。

ちなみに右方向の矢印(→)の代わりに(青色の)左方向の矢印(←)が付いている場合
は「自分は変更していないがCVSリポジトリーの内容には(他者によって)変更が加えら
れているので更新する必要がある」ことを意味し、あるいは(赤色の)両方向の矢印(⇔)
が付いている場合は「競合している(自分も変更しているし、CVSリポジトリーの内容も
(他者によって)変更が加えられているのでマージなどの対処をする必要がある」ことを
意味します。



では、続いて(C4)の操作をしてみましょう。

(1) Javaパースペクティブに戻ったら、パッケージ・エクスプローラーにおいて先ほどの
MailSender.javaを右クリック→「チーム」→「コミット」を選択します。

(2) 「コミット・ファイル」ウインドウが開いたら、コメント欄に

logger.info("Start ...............");
の行と
logger.info("End ...............");
の行を追加

というふうに入力し、「終了」ボタンをクリックしましょう。
すると、MailSender.javaのファイル名の左側にあった>マークが消え、左側の数字が1.1
から1.2に変わりますね。この数字は一種のバージョン番号なんですが、CVSの用語では
リビジョン(revision)番号と言います。


これでコミットの操作は完了です。現在Eclipse側とCVSリポジトリーとで内容が一致した
状態になっています。



あとの操作の説明は次回に回します。



(次回に続く)


では、今日はここまでにします。



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
★ホームページ:
      http://www.flsi.co.jp/Java_text/
★このメールマガジンは
     「まぐまぐ(http://www.mag2.com)」
 を利用して発行しています。
★バックナンバーは
      http://www.flsi.co.jp/Java_text/
 にあります。
★このメールマガジンの登録/解除は下記Webページでできます。
      http://www.mag2.com/m/0000193915.html
★このメールマガジンへの質問は下記Webページにて受け付けて
 います。わからない所がありましたら、どしどしと質問をお寄
 せください。
      http://www.flsi.co.jp/Java_text/
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Copyright (C) 2009 Future Lifestyle Inc. 不許無断複製