株式会社オーム社 様のご厚意により,
書籍 "CVS - バージョン管理システム" を
ブックレビューコーナー にご献本いただきました.
この本のレビューをして頂くべく,
Linux Users ML
や本サイトにおいて
公募
を行い,
これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.
ここに, レビューアの方々から寄せられたレビュー記事を公開します. (原稿到着順)
株式会社オーム社 様および レビューアの皆様のご厚意に感謝いたします.
なお, 以下のレビューは初版を対象としています.
CVS というと, 一般には「多人数が同時にソースをつつきまわすための便利なツール」 というイメージがありますが, 私自身は, 個人的なプロジェクト管理にも有効なツールなのではないかと, 考えています. 例えば, 論文を書く場合, 章毎にファイルを分けたり, 図版のファイルを別に用意したりで, 一つの論文に 10 や 20 のファイルが関係してくることは, ざらにあります. こういった場合にも, 個々のファイルではなくプロジェクト全体を管理する CVS の機能は非常に重宝だと思います.
以下では「個人的なプロジェクト管理に CVS を使う」という側面から, 本書をレビューしていきます.
まず全体の章分けは次のようになっています.
第 1 章 | オープンソース開発と CVS の関係 |
第 2 章 | CVS の概要 |
第 3 章 | オープンソースプロセス |
第 4 章 | CVS リポジトリ管理 |
第 5 章 | 分散開発の設計 |
第 6 章 | CVS の高度な機能 |
第 7 章 | ビルド, テスト, リリース |
第 8 章 | ヒントとトラブルシューティング |
第 9 章 | 完全 CVS リファレンス |
第 10 章 | CVS で使用できるサードパーティー製ツール |
このうち 2, 4, 6, 8, 9, 10 章は CVS 自体の使い方に関する章で, 残りの章はオープンソース開発についての説明にあてられています. 各章ごとの内容は比較的独立しているので, CVS についてある程度の知識を持つ読者ならば, 各自が興味を持つ部分だけ読んでいって問題はないと思います.
本レビューでは個人的なプロジェクト管理を念頭に置いているので, 以下のレビューでは, オープンソース開発に関する章は取り上げません.
第 2 章「CVS の概要」では, プロジェクトの開始から始めて, 日常的に最も良く使われる CVS の機能について, 一通りの説明がされています. 極端な話, 個人的なプロジェクトに関しては, この章だけ読めば, ほぼ必要な知識を得ることが出来ると思います. ただ, この章で取り上げられている例については説明が不十分なため, 読者が例を追っていこうとすると, 若干問題があります. 具体的に言うと, この章では各種機能の説明のため, myproj と呼ぶ仮想的なプロジェクトを取り上げているのですが, このプロジェクトがどのようなファイル群から構成されているのかについては, 何の情報も与えられていません. そのため本文中のコマンド実行ログなどを見ても, そのログが何に対応しているのかが非常に分かりにくくなっています. ですから, 初めて本章を読む場合は, とりあえず流し読みで myproj の全体像を知り, そのあとでもう一度読み返すようにすると良いと思います.
第 4 章「CVS リポジトリ管理」では, ソースの入手・インストールから始まり, CVS リポジトリのファイル構成や, CVS がリポジトリに行う操作の説明など, 管理者向けの内容が説明されています. これらの内容は, 複数の作業者がプロジェクトにかかわる場合に重要であり, 個人でプロジェクトを管理する場合には, 必要に応じて読めば良いと思います.
第 6 章「CVS の高度な機能」では, CVS 運用時に便利な機能について説明されています. この章も第 4 章と同様, 個人利用にはあまり関係のない章ですが, CVS を開発に用いる際の実践的な知恵が紹介されており, 一度は眼を通しておくべきだと思います.
第 8 章「ヒントとトラブルシューティング」 第 9 章「完全 CVS リファレンス」は 疑問が生じたところで適宜参照するリファレンスになっています.
全体を通して訳文の質は高く, CVS について日本語の文献を求める読者に広くお勧めできる本だと思います. ただし, 気にかかった点も幾つかありました.
最後に.
今回のレビューでは, オープンソース開発に関する章について全く触れませんでしたが,
オープンソース開発の実態について, 経験者の生の声が書かれている点も,
本書の特徴だと思います.
実際にプロジェクト管理を行わなくても,
オープンソース開発の「生態」に興味のある読者は,
一度手に取ってみてはいかかでしょうか.
私は, 最近 CVS を本格的に使い始め, 大変役に立つツールであることに気付きました. このような便利なツールは, 同僚や友人にも使わせたくなるものです. 彼らに読ませる教材として, 本書が役立ってくれることを期待しています.
本書の 目次 (実際に製本されたものとは若干異なるようです) を見ると, 章構成にちょっとした工夫があるのに気付きます.
9 章以降をリファレンスとして除外すると, まずオープンソース開発と CVS の関りを紹介したのち, 続く偶数章において CVS の使用方法を解説しつつ, 奇数章ではオープンソース開発について述べていることがわかります.
実は, CVS に関する章は, GPL に基いて公開されています. そこにオープンソース開発過程についての章が, 紙媒体でのみ, 独自に差し狭んだ形になっているわけです. これらを前半・後半とせず, それぞれの内容が交互に配置されているのは, 単調さを避けるためでしょうか. なかなかに面白い工夫です.
なお, CVS に関する章には, 日本語試訳 も存在します.
まず, てっとりばやく CVS を使用する必要に迫られている人には, 2 章の概要を読んでもらいます. 分量にして, 本書全体のうち 20%程度です. コンパクトな中に必要な知識がまとめられており, この章の知識があれば, ファイルを編集して更新を行う, という日々のルーティンワーク的な使用には差し支えないものと思われます.
CVS をシステムにインストールしたり, 諸々の管理業務に携わるなら 4 章も読みましょう. インストールに関しては, パッケージの充実した昨今の PC-UNIX の場合はあまり必要のない項目かもしれませんが, CVS リポジトリを外部に公開する上での作業についての後半の節は, 読まなくてはならないでしょう.
6 章は前半の重要度はさほど高くないのですが, 「6.5 ブランチの使いこなし方」は目を通しておいたほうがよいかもしれません.
書籍版独自の章群です. 正直なところ,
事前の紹介記事にあったオープンソースソフトウェアの開発手法についても,
経験者の視点からノウハウを提供
からは,
ここまでの内容が期待できようとは思ってもみませんでした.
やられた!という印象です.
プロジェクトの開始から, 公開, 保守のサイクルについて, オープンソース開発におけるよい設計とはどういうものか, といった点も交えて説明されています.
もちろん, CVS はその過程でソースコードのバージョン管理, 分岐 (ブランチ) の管理 (開発版と安定版, リリース版へのバグフィックスなど) を破綻なく行う仕組みとして, 重要な役割を果たしています.
多少なりともオープンソース開発の過程に興味があるなら, これらの章には読む価値があります.
「そもそも, 両者を一冊の本にまとめる意味があるのか?」という疑問もあるかもしれません. 実際のところ, CVS の使い方を修得するだけなら, GPL に基いて自由に入手できるオンライン版を読んでもよいし, 書籍化するにしても, この部分だけで構わなかったはずです. そのほうが, よりコンパクトで検索のしやすい書籍になりますから, 実用的なリファレンスとしては好都合だったでしょう.
とは言え, オンラインで入手可能なドキュメントを書籍化した場合,
といったメリットがありますから, オンラインで読めてもあえて書籍版を購入する人は少なくありません. 少なくとも, 私は, オンライン版と書籍版の両方があったら, 書籍版を買うことが多いです.
本書のランキングを見るに, CVS の解説書というのは, 多くの人に需要のあるもののようです. そんなテーマの本に, もともとそれに密接に関係したオープンソース開発というテーマを織り込むことで, オープンソースムーブメントの普及の一助とする, というのが著者の意図ではないかと想像しました. その試みは成功していると思います.
本書は, オープンソース世界の現在に基づいての説明を行おうとしているためか, CVS と他のリビジョン管理システムとの比較を熱心には行っていません (若干 RCS と CVS の歴史的な関係に触れているのみ). RCS や SCCS, Visual Source Safe などとの比較記事も欲しかったところです.
付録 C は, Windows 環境での CVS と題して, WinCVS の導入から CVS サーバの設置について解説しています. しかし, 日本語のエンコーディングに関しては, エンコーディングを統一するようにとの注意があるのみです. 使ったことはないのですが, 実は, WinCVS には日本語のエンコーディングを変換してくれるパッチが存在します. これについての解説があれば, CVS に対する日本の Windows ユーザにとっての垣根がより低くなったのではないでしょうか.
この本の邦名は「CVS バージョン管理システム」という名前であるが, ページの多くが Open Source について書かれてあり, 本の内容はむしろ原書の title である `Open Source Development with CVS' の名そのままの内容の方が相応しい.
昨今の Open Source な Project をはじめ, 業務上での市販ソフトの開発の多くでは CVS が使われる事が一般的となりつつある. いや, 歴史的事情を伴わないのであれば, CVS を使わない方がむしろ例外的とも言える. しかし, その CVS のために書かれた日本語の文献があまり多くなかった. とくに書籍として出版されている文献は寡聞にして聞かなかった. 今回の出版は多くの方にとって嬉しい一冊となる事は間違いない.
現在, CVS について書かれた日本語の online の文章, また雑誌の記事としては
‥などがある.
とりあえず, 既存の CVS を使った project に参加するとか, CVS でこれから管理をはじめるという, CVS について*のみ*の知識を求めるのであれば上記の雑誌記事もしくは上記 URI を辿ればひととおりの知識を修得することができる. 特に, この本の中の純粋に CVS について書かれた章 (2,4,6,8,9,10 章) は GPL として 公開されており, The CVS Book http://cvsbook.red-bean.com/ で読むことが出来る. 日本語では, 上記 URI の「たけうちかほり」さんの訳が公開されており, 訳者の違いから訳の内容が異なる部分はあるものの, 本という形態を望むのでなければ, この本をわざわざ買う必要は無い.
ただ, CVS を含めて, 何事も多くの入門者は, online の文章よりも, 活字という形態を好む. そして私もそうであるが, 本というものへの安心感, 執着心が強い. この本は, そういった CVS を使ってみようという者への安心感を提供し, また CVS の持っている強力でかつ難しい機能であるブランチについての説明が豊富でありかつ, リファレンスも立派に整備されてある. 読みごたえは充分ある. これは, CVS を使ってみようかという入門者から, 熟練した CVS 使いの方までを広くターゲットとし, 傍らに是非置いておきたい.
本書は, Open Source そのものや, Open Source と CVS の関わりについての記述が多く, CVS を使うために という How to 本としても読めるが, 著者自身が考えている Open Source 感や著者の経験が多く語られている. この Open Source に関する部分は本書の中の CVS の部分とは違い, 残念ながら GPL として公開されていないので, この本を買わずして読むことは出来ない. この部分は長年 free なソフトウェアに接してきている著者自身じゃないと 語ることの出来ない貴重な部分であり, ここだけでも充分読む価値がある. そして, CVS を知らない (あるいは知らなくて済む) 人にとっても読み物として読め, 面白く参考になる. 中では, free software の project において, その group 開発の難しさ, project の派生などについて, うたかたのような現在の free software の実態を統治モデルを作り説明されていて面白い.
例えば, 馴染み深い apache や linux などの開発管理手法も 触れている. 現在の開発の実状を我々の多くはその開発とは遠いところにいて, きっとその大部分はその開発スタイルを知らない. その開発スタイルのよくある 2 つのスタイルを優しい独裁者モデルと, 協議統治モデルとして定義付けている. 双方のモデルの比較があり, 開発者間で意見の相違があった場合に, それをどう対処するか, 統治保守担当者がそれを No! というのか, 協議統治モデルの場合の投票制であるとか. project が意見の相違から派生してしまう事について述べられている. なかなか興味のある話 である.
フリーソフトウェアの発生過程やその設計の方針に付いても述べられている. 必要な物が欲しい場合, これを筆者は痒いところをかくと表現しているが, (これは日本語で言うと書くに通じるかも;-)) そのために物を作るのであるが, 同じ思いをしている者がいる事を悟している. そして, 自身で物を作り仲間を募るときは, 公開は早すぎてもいけない. 遅すぎてもいけないとあって, まだ動かない不安定な物をリリースしても仲間は集まらず, 設計に対して変更がきかないくらい遅すぎても けない, と細部に渡りこれから開発をしようと志す者への良い指南書となっている. さらに, 著者の経験から software を version up をしていく際のインタフェース的な欠如からきた自身の失敗例もあり, いくつかの教訓を示してくれている. そうそう. と共感を呼ぶ事は多かった.
Open Source におけるプロジェクトについてこうあるべきだ. という強い主張と, そして CVS の関わり, また客観的な視野に立つ観察眼を感じつつ読み物として読むと大変面白い一冊である.
最後に, CVS を解説している部分に対して勝手ながら以下の評価を付けさせて頂きました.
読んで conflict? 無事皆さまの心に commit! できますように:-)
☆☆☆☆☆ 5 段階 | |
*初心者としての視点* | |
丁寧な記述である | ☆☆☆☆☆ |
内容の記述が平易簡便である | ☆☆☆ |
納得の行く書き方をしている | ☆☆☆☆☆ |
*repository 管理者としての視点* | |
(branch など) 詳細な記述があるか | ☆☆☆☆☆ |
陥りやすい問題についての記述 | ☆☆☆☆☆ |
Linux 以外他の OS 等環境についての記述 | ☆☆☆☆ |
*その他* | |
値段 (お買い特度) | ☆☆☆☆ |
本書は Karl Fogel, Open Source Development with CVS (Coriolis, 2000) の全訳である. 訳題を見ると単なる CVS の解説本に見えるが, 原題にあるように, オープンソース開発へのよきガイドブックでもある. なお原書の 2, 4, 6, 8, 9, 10 章は GPL のもと公開 されている (それをもとにした別の日本語訳もある). また, CVS 付属の info 形式のマニュアルの日本語訳は, GNUjdoc に含まれているので, そちらも参照することを薦める.
私の CVS 使用歴は約半年だが, もはや CVS なしの状況など考えられなくなっている. 他の人たちと共同でのオープンソースソフトウェアの開発やウェブサイトの管理に有益なのはもちろんだが, さらには「昔の自分」との共同開発までサポートしてくれる. ただ, CVS のような「きめこまかい」サービスを提供するソフトウェアは, 往々にして「敷居が高い」と思われがちである. はたしてこの書籍はそんな踏ん切りがつかない人たちの心を動かすことができるのか, そういう視点を中心にレビューしようと思う.
目次 をみれば分かるように, 1, 3, 5, 7 章がオープンソース開発に関する章で, (GPL で公開されている) 2, 4, 6, 8, 9, 10 章が CVS に関する章となっている. 「オープンソースって何?」という人はまず奇数章を読んで雰囲気を味わえばいいし, 「CVS について手短に知りたい!」と言う人は偶数章を飛ばし読みして必要な情報を得ればいいし, もちろん前から順に読み物として読むのも良い, というよく考えられた構成だと言える.
それなりのボリュームがあるので身構えてしまうかも知れないが, CVS の使い方は, 2 章の内容を理解するだけで日常的には十分すぎるくらいである. 勇気を持って使い始めてみれば, その効果は絶大で, 決して CVS が「敷居が高い」ソフトウェアではないことがわかるだろう.
本文中, コマンド名を Helvetica で組んでいるが,
小文字のエルと大文字のアイとの区別がつきにくい.
9 章「完全 CVS リファレンス」では,
エルやアイだけわざわざ別の書体を用いているが,
全て Courier で統一すればより確実に判別性を高められる.
コマンドの入出力の部分は,
例えば入力はボールドで出力はノーマルのようにウエイトを変えるなどして,
より読みやすくしてほしい.
また, 見出し書体に新ゴを用いているが,
日本語はともかく英数字を新ゴで組まれると著しく可読性を損なう.
特に付録 B 「GNU General Public License」は全文が英文なので,
見出しと本文とのアンバランスが目に余る.
大半の読者はそんなことを気にしない, と言えばそれまでだが, 出版社として「書籍」の発行を生業とする以上は, こういうことをないがしろにして欲しくない. オーム社に限った話でないのは言うまでもないが.
内容が素晴らしいだけに, 本の体裁についてかなりこきおろすことになったが, リファレンスとしても, 読み物としても, 今後私が幾度となく手にすることは間違いない. プログラムや文章など, Linux (に限らないが) で何かを作る全ての人に CVS を薦めるし, この本も薦める.
章ごとにおもしろく読める章と理解しづらい章があった. 全体的に説明が冗長なので, 丹念に読むことで理解できると思うが, 文章がていねいなわりにはわかりにくい. その反面, 私はブランチの概念について理解していなかったが, 本書のおかげで理解できた. 差分の見方についても細かく説明があり, よく理解できた.
第 1,3,5 章, 付録 A の各章は読み物としておもしろく読めた. CVS をネタにはしているがオープンソースソフトウェアの宣教書ともいえる内容だ. 今は直接的に必要なくても読み物として楽しみ, 私自身が将来プロジェクトを立ち上げる時に読み直すという感じで, 二度楽しめそうに思う.
しかしながら, 「第 4,6 章 CVS リポジトリ管理と CVS の高度な機能」については理解しづらく, 入門者には難易度が高いと思う.
Windows 版 CVS (cvs-1.10-win.zip) をダウンロードして解凍するとオンラインマニュアルが HTML ファイルで供給される. 私の環境で印刷すると 84 ペイジにもなる 420KB のファイルだが本書と内容が似ている. 「第 8 章 ヒントとトラブルシューティング」「第 9 章 完全 CVS リファレンス」については本書 (紙の本) と HTML ファイルとの競合を感じ, 本書にはもっと索引を充実してほしいと思った. 本の索引は複数箇所を指定できるが, キーワードに到達できるまで時間がかかる. それにたいして, HTML ファイルはその性質上ほぼ瞬時に該当のキーワードまで到達できるので単純索引としては使いやすいが, 一覧性に欠ける. 時間はかかるが複数のキーワードやいろんな切り口の索引の用意しやすい本と, スピードは早いが見づらい索引の HTML ファイルと, まさに痛し痒しである. 本という制限の中で, HTML ファイルを超える自由度のある索引がつくよう次版に期待する.
「付録 C Windows 環境での CVS」は期待していただけに, 非常にガッカリした. 5 ペイジしか紙面が使われておらず, よくわからなかった. 私の CVS の使い方は, ファイルの更新に Windows95 と Linux BOX (samba) を組み合わせて使っている. 普段は Linux BOX 上にあるファイルを Windows のエディタで更新し, telnet で CVS を使っている. 気を付けるべき問題として文字コードについて触れてはいた. しかし, ファイル名について Windows では大文字と小文字を使い分けできない問題を解決する妙案はないかと期待していたが, いい及んでおらず不満がのこる. また, ブックレビュー募集メイルでの内容紹介に web のコンテンツ管理について触れているが, web ファイルを CVS で管理している私でも本書を読んで, CVS をプログラム以外の文書管理に使えるとは思えなかった.
ダウンロードするアドレスに http://download.cyclic.com/pub/ が紹介されていたが, ftp://download.cyclic.com/pub/ の間違いではないかと思う.
Windows 版 CVS (cvs-1.10-win.zip)は MS-DOS プロンプト (いわゆる DOS 窓) から使うものだ. また, GUI な CVS として WinCvs の ダウンロードペイジ が紹介されていたが「WinCvs won't probably work on Windows 95 and Windows NT 3.51 ...」を見るまで Windows95 で使えないとは思いもしなかった. 使えないハズであることは紙面で一応触れておいてもよい. Windows 版 CVS (CUI) の説明はあっさりしすぎていて, WinCvs (GUI) と混同していた私は Linux で使用する CUI の CVS とまったく同様につかえることを理解するまで時間がかかった. WinCvs は Windows95 では使えないハズなのだがインストールしてみると動作はしているようである. ただ, 本書の説明では十分理解できなかったので, 私の環境にあわせることができず本当に正しく動作しているのはわからない.
WinCvs だとバージョンのすすみ方, ブランチのでき方がグラフィカルに見える. ファイルのバージョンの履歴やブランチが一目瞭然だ.
本屋に行って平積みの状態でみると表題の CVS の文字が沈んでしまっているので, 表紙を見たことがないと平積みの本の中で探すのはやや難しい. 裏表紙のように白地に CVS の方が, 味気ないが視認性は高まるだろう. 机の上に広げるには問題ないが持って読むには重い. 書体は本文と画面出力の違いが明瞭にわかるのでよいと思う. 注釈は適度に入っていて理解しやすい. 画面出力の説明の囲みの注釈は本文を読むよりわかりやすかった.
この本には 3,800 円 (税別) の値付けがされている. 私の評価は今 (2000 年 6 月時点) なら「買い」であると思う. CVS 関連の書籍がほとんど見られない中, これだけの内容を持っているからである. だが, 入門者が CVS に感じる高い壁を取り除くことができる本ではないと思う. 冒頭にも書いたように本書で入門することは難しいと思っているので, 他の CVS 関連の本がでてきたとき対象読者が入門者ならそちらを薦めるかもしれない. そして本書は初級を脱しようとしている者には, CVS を使いながら時どき読み返して修行していける本であると思うのでオススメだ.
snlug 勉強会での指摘だが, 本書の原書の GPL 部 (2,4,6,8,9,10 章) の訳があり, CVS としての解説は十分かもしれない. CVS の info の訳やCVS の MLのペイジを見てから, 本屋で購入するかどうかを最終確認すると良いだろう.