株式会社オーム社 様のご厚意により,
書籍 "Subversion実践入門: 達人プログラマに学ぶバージョン管理" を
ブックレビューコーナー にご献本いただきました.
この本のレビューをして頂くべく,
Linux Users ML
や本サイトにおいて
公募
を行い,
これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.
ここに, レビューアの方々から寄せられたレビュー記事を公開します. (原稿到着順)
オーム社様および レビューアの皆様のご厚意に感謝いたします.
なお, 以下のレビューは初版を対象としています.
実戦的な手法をリズミカルに解説してあり, 楽しんですぐ読めてしまう. リファレンス - ハンドブックとしても使える.
この本を端的に表す文として次を引用する.
"「リリースブランチを作成せよ」などと書いてあるドキュメントを読むのは結構な事だが, 実際のところそうするためには Subversion のコマンドで何と入力すればよいのか?"
タイトルにもある通り, 実用面に重きを置いた, 実戦的な解説書であると思う.
ここからはより具体的に参考になった点を述べたい.
プロジェクトへの導入には, ストレスレスなマニュアルの作成が必要な場合が多いだろう. 例えば, 本書をマニュアルとして使うのは, あまりにも無責任かもしれないし, IDE (統合開発環境) を使っているチームには, それに沿ったワークフロー等を持ったマニュアルの方が適切だろう. そんな中で, 非常に軽快に要点を説明してくれている本書は, 凖マニュアルとしても使えるだろう. 小量の文が整頓されて書かれている為, 「〜ページを読んで下さい」と伝えれば, 初見で該当カ所を読んでも理解できる為だ. マニュアル作成の上でも, 軽快な文章や構成は, 出来を善くするだろうし, 概念や言葉の説明ページではその内容を矛盾の無いものにするだろう.
また, 各所に「ユーザの疑問」というコラムが設けられており, 例えば成果物の取扱として, 「javadoc ファイルはバージョン管理システムのリポジトリに格納すべきだろうか?」といった内容に応えている. このような「指針」を与えてくれるのは非常に参考になるだろう.
さらに, 付録に "サードパーティ製の Subversion ツール" が付いている. 環境に合わせてツール選択の材料となるだろう. 例えば Eclipse 環境としては, subclipse プラグインが紹介されている.
さらに付録として, "Subversion のインストール, ネットワーク化, セキュリティ保護, および管理" という章がついており, 'Apache によるネットワーク化' や, 'リポジトリのバックアップ' 等, サーバ管理者側にも参考になるだろう.
プロジェクト全体で CVS を採用していたり, "社内ルール" の検問のせいで, すぐには乗り換えられない状況も存在するだろう. それを後押しする材料として, cvs2svn (python スクリプト) が紹介されており, 具体的なリポジトリの変換手順が書かれている. 「CVS ヒント」として, 各所に CVS との比較や Tips が置いてある.
バージョン管理システムは, 単純で, 明白であるべきであろう. その思想を背負った解説書として十分であると思う. これからバージョン管理システムを取り入れたい人にお薦め.
以前から Version 管理が有用なものとわかってはいたのですが, いまだにこれだ! と思える使い方が見つからない. 今回の書籍でその手がかりが見つかればと思い応募しました.
書籍が届く前はぶ厚い書籍を想像していたのですが, 本書は比較的薄いのに驚きました. 中身を読み進めるうち, バージョン管理の本質が基本的に単純だということに気づかされ納得がいきました. バージョン管理の基本は実に単純で, 単純であるが故に使い方によっては良い方法, 悪い方法が生まれてしまう. 本書は教科書のように一つずつ参考例が書かれていて, このように良い例を知る事ができるのと出来ないのでは, 活用に雲泥の差がでるのではないでしょうか. 読みやすい書籍ではありませんでしたが, 本書を読み進める間に自分の使用方法が思い込みで, あまりよくない使い方をしていたのだと幾つも気づく事ができました.
第 1 章の序章後, 第 2 章ではバージョン管理の概要と用語がざっと書かれています. 第 3 章では基本的な Subversion の使い方が書かれています. 具体的な問題項目や熟考しなければならない点は, 省かれ, 一般的な使い方がケーススタディとして書かれています. ここまででざっくりと Subversion を使ったバージョン管理について, 利用方法も含め, 知ることができます. 第 6 章では, Subversion の各コマンドについて具体例を増やし, 説明されています. 具体例があるので大体の使用場面を想定することができました. また, 行末スタイルや実行可能フラグなど, 細かいけど重要な事もしっかり網羅されています. 第 7 章から第 10 章では, リポジトリの構成の仕方, タグ/ブランチの説明などについて, サードパーティ製のソースの取り扱いなどについて, 参考例とともに書かれています. いかに使いやすい構成や使い方にするかについて大切な章なので, 自分にとっても, この 4 つの章が一番参考になりました. 付録では, Subversion のインストール方法, バックアップ方法, CVS からの移行方法, Subversion を便利に使うためのツール, コマンドリファレンス, 情報源がまとまっています. 特にコマンドリファレンスは, 参考に引くのには十分だと思います.
全体的に非常に読みにくい書籍でした. 文体的がダラダラとした感があり, また用語については説明不足が多く, 全体的に非常に読みづらく感じました. 本書を理解するには読むだけではダメで, 実際に Subversion に触れながらでないと理解が難しいように思います. 例えば, 第 2 章の用語解説された「タグ」については, 用語説明を読み, 第 8 章を読み, さらに Subversion で使ってみるまで, いったいどういう事なのか理解することができませんでした.
コマンドの使い方やインストールの仕方だけであればもっとわかりやすい書籍もあるのでは? と思いますが, 管理, 運営方法も含んだ, 全体を総括した内容を絞って学べる書籍としては良い書籍だと思います. バージョン管理をこれからはじめるという方は使い方の一つとして, また既に Subversion でバージョン管理をしているけど, なんとなくうまくいっていないという方も一読し, 自分の方法と比較するのもよいのではないでしょうか. 本書はかさばらない大きさと厚さなので, Subversion を使いつつ, 手のとどく場所においておき, 迷うたびに何度も見直すのにもよい本ではないでしょうか.
自分が「分散管理システム」 (当時はイコール CVS のことでしたが) を意識しはじめたのは, 1998 〜 1999 年頃, www.linux.or.jp の各種プロジェクトが再編されていった時期 と重なります. 他人の状況にロック (lock) されることなく 自分のペースで作業することを可能にした CVS は, 複数の参加者からなるプロジェクトにとって理想的な環境でした. プロジェクトに CVS をフィットさせていく過程で, 自分もタグ・ブランチ・マージなどの基本的な概念を学ぶことができました.
個人の環境でも, 従来の RCS に替えて CVS を使うメリットはありました. モバイル環境での作業が楽, 自宅でも職場でも同じように作業ができる, バックアップはサーバのリポジトリでしっかり取っておけば OK. このようなメリットから, 自分の周囲の作業のうち, テキストベースのもの (プログラム・スクリプト書き, TeX ベースの原稿執筆, WWW ページの管理) はすべて CVS の管理下に置かれるようになっていきました.
"better CVS" として Subversion の名前が自分の周囲で 良く聞かれるようになったのは, ここ二年くらいのことでしょうか. CVS にドップリ漬かっていた自分は, 周囲の評判は聞きつつも, なかなか乗り換える気にはなれなかったのでした. 乗り換えにかかるエネルギーと, その効果とを天秤にかけたとき, そのバランスを「乗り換えよう」という方へ傾ける錘として本書はどれほど有効か, そのような意識を持って, 到着した本書を読み始めました.
冒頭付近に「1.3 Subversion を選択する理由」という節がありますが, 実は自分はここを見た段階で, 既に天秤がググっと乗り換えの方向に傾きました. ディレクトリもバージョン管理の対象であり, ディレクトリ移動や名前変更の履歴が適切に保存されるという点は, CVS を使っていて最も痒いところを解決してくれています. SSH/Apache 経由でアクセスでき, Windows クライアントとの親和性が高いところは, 分散管理されている状況に他人を巻き込む際に非常に魅力的です. またこれは 6.4 節で詳述されるまでピンときませんでしたが, ファイルのメタデータもシステムで管理される, というのも情報の一括管理という上で非常に筋が良いと感じられます.
ただこのあたりでポジティブな驚きを感じたのは, 自分が CVS を使い込んでいるからなのかな, という気がしないでもありません. バージョン管理自体についての知識があまりない状況で 1.3 節を読んだとしたら, おそらく何のことかわからないまま呆然とするのではないでしょうか. そういえば, 表紙をめくると登場する「読者の声」, ここで本書を絶賛している 3 名すべてが CVS (と Perforce) からの移行組なのでした.
本書の目次は 書籍紹介ページ にあります. 第 2 章「バージョン管理とは何か」は概論ですから, CVS 習得者は飛ばし読みで OK, 第 3 章から 10 章までの 120 ページが取り組むべき内容となります. 自分はかなり熟読したつもりですが, 計 4〜5 時間で読破できました.
章ごとの分量にはかなりバラつきがあります. 3 章「Subversion の基本的な使い方」が 24 ページ, 6 章「一般的な Subversion コマンド」が 38 ページ, このへんが胸突き八丁といったところでしょうか (正直このレビューがなければ, 6 章あたりで投げ出していたかもしれません). 分量的なアンバランスを見るに, もうちょっと良い構成はないのか, と思わないでもありませんでした.
タグとブランチが本質的に同一である点は, CVS と比べて Subversion が大きく異なる点でしょうが, 本書でこのあたりの概念が整理してある 8 章は, 図・表を多用した優れた解説がなされています. 個人での利用でブランチを利用することは少ないですから, 最初は飛ばして良い内容でしょうが, CVS でそれなりにブランチを利用してきた経験者には, すっと理解できる書き方になっていると思います.
翻訳は, 過去に CVS 本をいくつか (BR35, BR67) 手がけてきた「でびあんぐる」のグループだけあり, さすがに手慣れたものです. 気付いた明らかな typo はひとつだけ, 訳語の選択でちょっとなあ, と思ったのが 2 つくらい, 総じて非常にスムースに読み進めることができました.
組版も明朝を主体に, あまり詰め込まれていなく読み易いものでした. 脚注があまり多くない (数ページに 1 個くらい) のも, 個人的には好ポイントでした (この点は無頓着な本が多すぎると思っています).
CVS ユーザ向けを謳った「CVS ヒント」や,
TeXbook 式の蛇行マークなどもあります.
これらは前半あたりは割と気がきくかたちで入っていたのですが,
先述の「胸突き八丁」のあたりでは, あまり効果を上げていなかった気がします.
例えば Subversion では管理外に置くファイルは,
そのファイルを保有するディレクトリのプロパティ svn:ignore
として指定しますが, これは CVS では .cvsignore
に相当するものですね. しかしこれに関する言及はありませんでした.
以上, 「CVS 使いが Subversion に乗り換えるための独習書」 という観点から整理してみました. 動機付けは充分合格, 内容も充実, ただし読ませ方にもう一工夫あっても, というところでしょうか.
通読して一通りが理解できれば, サーバ構築や移行ツールの解説, 本文への索引つきコマンド一覧などが含まれている付録を含め, Subversion 導入・移行の強力な味方になってくれそうです. 気軽に読み始めた人は挫折しそうですが, 冒頭部を読んで Subversion のメリットを充分理解し, 強い意思を持って読み進める読者には, それに充分報いてくれる本であると強く推薦できます.
RCS を使い始めてからかれこれ何年になるでしょうか. その間, CVS という現在の分散型バージョン管理の基礎を築き上げたツールが登場しましたが, 私には複雑すぎて使いこなせませんでした. Subversion が出たときも躊躇し, 現在に至るまで, RCS を使っておりましたが, 今回のブックレビューを機に, Subversion に乗り換えることができました. 今回のブックレビューがバージョン管理で悩んでいる多くの人々のお役に立てれば幸いです.
本書は, 全 10 章, 4 つの付録から成り立っています. 全体的に, コマンド解説と図説をおりまぜており, 親しみやすい内容となっています. 中盤以降は, 実際のプロジェクトを模倣した仮想プロジェクトでの利用を想定し, どのように Subversion を利用できるかをシチュエーションに応じてとても上手に, またドラマチックに仕立て上げています.
第 1 章では, 序章の位置づけで, あるプロジェクトでの出来事を例に, バージョン管理の必要性と「なぜ, Subversion なのか」を解説しており, バージョン管理ツールとしての Subversion の簡単な生い立ちと特徴がわかります.
第 2 章では, バージョン管理の概念と基本的な用語や動作についての解説です. 初めてバージョン管理を経験する方々も この章を読むことでバージョン管理についてスムーズに理解することができると思います.
第 3 章は, Subversion の導入と基本的な使い方です. UNIX 系と Windows 版双方での解説が載っており, 大変親切です. このあとの解説でも, パスの違いなど必要に応じて UNIX 系と Windows 版別々の説明がされているので, どちらを利用している人にとっても参考になるという点が, とても気に入りました. また, 所々, 他のバージョン管理システム (特に, CVS) と Subversion の機能の違いなどの説明もあり, 大変役に立ちます.
第 4 章は, 本書で一番短い章で, バージョン管理 (特に, Subversion) を有効に活用するための指針が述べられています. とても短いですが, 一読するべきでしょう.
第 5 章, この章は, 実践の第一歩, どのようにしてバージョン管理システムのデータ (リポジトリ) にアクセスするか, です. svnserver, SSH+SVN, Apache Server を使用した HTTP アクセスなど, 利用者が必要 (通信環境) に応じてアクセス手段を選択できるのがとても便利です.
第 6 章, ここからが, 実際のバージョン管理のいろいろです. Subversion の各コマンドをシチュエーションにあわせ活用します. チェックアウト, 最新状態の維持, 追加, プロパティ, コピー, 移動, 変更, 変更の確認, 差分の確認, マージ, 競合, コミット… バージョン管理には, 様々なシチュエーションがありますが, この章を読み, 実際に練習してみることで, ほとんどの操作は習得できるはずです. この章さえ念入りに実践すれば, Subversion の基礎を習得できます.
第 7 章, 本書で 2 番目に短い章です. 複数プロジェクトでのリポジトリ構成についての説明です.
第 8 章は, タグとブランチの管理です. これをマスターすれば, リリースを管理できるようになります. そうすれば, 自分の作成したソフトウェアを複数のバージョンにわたって管理することができるようになるでしょう.
第 9 章では, プロジェクト, または, ソフトウェアをどのように管理していくかが解説されています. ドキュメントをどのように配置するのがよいか, プロジェクトとしてのディレクトリ構成などが理解できます.
あなたは, 新しい機能を取り込むために, 必要に応じて他のソースやライブラリの参照などが必要になるかもしれません. 第 10 章, この章は, そんなときに役に立ちます.
以降は付録です. 付録 A は, Subversion の管理全般 (インストール, ネットワーク, セキュリティ, バックアップ) にまつわる付録です. リポジトリのバックアップに関しては, ここにしか載っていないので要チェックです. 付録 B は, 他のツールからの移行にまつわる付録です. ちょっと物足りません. 付録 C は, サードパーティ製の Subversion ツールです. 有名な TortoiseSVN を筆頭に著者が選んだツールの解説が載っています. ほかにもいろいろと存在すると思いますが, 役立つことは間違いなしです. 最後の付録 D は, Subversion のコマンド一覧と用法です.
私は, 日頃から Cygwin を利用しています. Subversion には Windows 版が存在しますが, Cygwin 版も存在するので, Subversion を導入するに当たってどちらを使ったらよいか悩みました. Windows 版は, コマンドプロンプトからの利用なので, 同じターミナルを使うなら, これまで RCS を使っていたように, Cygwin ターミナルからの利用が良いような気がしたので, Cygwin 版を利用しています. 当然, Cygwin 版 Apache も利用できますので.
付録を含め 200 ページ弱の中, とても簡潔, かつ充実した内容です. ブックタイトルである「実践入門」と「達人プログラマに学ぶ」という点でも満足いく内容だと思います. このブックレビューを見た方々には, 是非, 手持ちに加えてもらいたい 1 冊です.
今回, この Bookreview の機会を与えて頂いた, オーム社さま, および, www.linux.or.jp Webmasters Bookreview 担当の方々には, 大変感謝しております. また, このようなすばらしい本を書き上げた著者の方に対して敬意を払いたいと思います. 本当にありがとうございました.