Trac 入門 改訂版 執筆を振り返る

前回に引き続き、今回は改訂版執筆を振り返ってみます。

〔改訂〕Trac入門 ~ソフトウェア開発・プロジェクト管理活用ガイド (Software Design plus)

〔改訂〕Trac入門 ~ソフトウェア開発・プロジェクト管理活用ガイド (Software Design plus)

初版の時の ↓ みたいな内容です。

www.slideshare.net


Trac 入門」の改定話は2011年の秋ぐらいから頂いてました。当初は2012年の春ごろ出せるといいね! などと言ってました。初版当時は執筆陣がみな自社勤務だったんですが、いまや所属会社や常駐先もバラバラになってしまい、顔を合わせることもめったにありません。そこでパブリックな場所に検証環境が必要だねってことで、さくらインターネットVPS 借りて CentOS 上に Trac 環境を構築しました。ここまでは順調だったんですが、その後みんな公私共に忙しくなってしまい、ちゃんと取りかかれたのは、当初目標だった 2012 年の春。
私が担当している 2章・3章も 初版では一気に書き上げた気がしますが、2ヶ月ぐらいかかって修正が完了。休日深夜とか早朝しか作業ができず、なかなか進みませんでした。

共同で書いてる 6章(逆引き) も、追加内容を検討し VPS で検証しながら原稿を書いたりしているうちに真夏を迎えました。脱稿は8月下旬。脱稿までに Trac 1.0 が出そうだなあ、出るのかなあとウォッチしていましたが、執筆中は出なくて、9月に入ってからやっとリリースされました。リリース前から CSS とか 画面レイアウトが少々変化してることが分かってたので相当量のスクリーンショット撮り直しが予想されてました。まあ 1.0 対応は校正しながらだね〜ってことで 初校 は10月から開始。
送られてきた初校ゲラを見ると漫画もイラストもパワーアップしてる。いいね! などといいながら、緩やかペースで校正と 1.0 検証が続きます。VPSTrac をバージョンアップして、プラグインの動作を検証したり、スクリーンショットを撮り直したり・・そういえば、初版が出た時も Trac 0.10 ベースで書いていて校正中に Trac 0.11 がリリースされたためかなり加筆修正で苦労したのでした。Trac 入門は 偶然にも Trac のメジャーバージョンアップと共に世に出ているんです。

検証と修正はなんだかんだで師走までかかり、なんとか年内に初校が終わりました。年明け早々から再校作業開始して2月中旬やっとすべての作業が完了しました。

初版には、開発チームにテスターの「まめぞう君」がいましたが、改訂版ではヘルプデスクのみちこさんに変わっています。これは、初版に女子が登場しなくて残念だったのと、イラストレーターの方がワンカットだけ登場させてくれた女の子が可愛かったから。このため、あちこちに手が入りました。あのズッコケ開発チームも実稼働するソフトウェアを保守しながら開発を続けているようです。

初版ではまえがきの後の扉にワインバーグ先生の言葉を入れてたのですが、改訂版では各章の扉にそれらしい格言を入れたりしてみました。各章に4コママンガを入れよう! って盛り上がったりしたのですが、ネームを考えたりする時間もなくポシャりました。

前の記事にも書きましたが、大規模なプロジェクトで構成管理やリリース管理を担当したりして、私自身、本当に「こんどう」状態になってました。当プロジェクトでは、Jenkins 執事さんも大活躍。いろんな技を覚えました。Git も会社のプロジェクトで使い始めたりと 5年の月日の流れを感じます。

カバーデザインですが、初版は Trac のシンプルな画面をそのままデザインしたような、白に Trac ロゴカラーと同じ赤のタイトル文字(一部で白本とも呼ばれていました)。今回は、Trac のロゴの足跡が一面の雪に点々とついている写真になりました。タイトル文字は青になり、白本のイメージも残しつつ新しさを印象づけています。他にも色々なデザイン案を見せていただき面白かったです。

執筆スタイルも初版の時とはかなり変わった気がします。

初版の時はまず Word で書いて Subversion リポジトリーで管理していましたが、改訂版では、Google Drive に初版のテキスト原稿を突っ込んで Google Docs で編集するスタイルを取りました。ほぼ Word っぽく使えて図も描けたりして Office がなくても Chrome だけで執筆が進みました。

入稿できる感じになった時点で、Google Docs から Word 形式にエクスポートして、Dropbox で共有しました。Google DocsDropbox も版管理ができて、Subversion のようにコミットも要らないのが楽でした。

初版の入稿は、最初メールで、校正は紙のやり取りでした。最後の方は、PDF コメントでしたが。今回は画面キャプチャーとWord ファイルを Dropbox の共有フォルダーで入稿し、初校からは PDF ファイルにコメントを入れ、Dropbox の共有フォルダーに置くという流れで作業を進めました。PDF へのコメントは Mac の人はプレビュー、Windows ユーザーは PDF-XChange Viewer を使用。相互運用もほぼ問題なく出来ました(プレビューだと、コメントへの返信ができなくて、プレビューで上書きしたら返信が消えた ということはありましたが)。

PDF は Retina ディスプレイの iPad で GoodReader などを使うと印刷したみたいなクオリティーで読めるので、iPad 片手に、パソコンで PDF にコメント入れるというスタイルでやってみました。GoodReader でもコメント入力できますが、入力はやはりパソコンの方が格段に速いので。初版の時はかなり紙を使いましたが今回はペーパーレス化が出来てよかったです。

オフラインの打ち合わせは技術評論社で集まったのを入れて3回ぐらい、あとは、初版の時と同様 Lingr でコミュニケーションしてました。SNS とかでもよかったんですが、Lingr は専用のルームが作れるし使い慣れてるというのが大きかったです。Lingr も初版が出た1年後ぐらいに一度サービス終了して、また復活してるんですよね。iOS アプリもあるしなにげに便利です。

纏めますと、初版→改訂版で

  • ローカルの Office 主体 → ブラウザとクラウドサービス主体
  • 郵便・メールで入稿 → ストレージサービスで入稿
  • SVN で版管理 → ストレージサービスの履歴で間に合う
  • パソコン主体 → パソコン主体だが、スマートフォンタブレットがサポート
  • オフラインますます減少

書きおろしと改訂、単著と共著ではまた違うと思うのですが、時の流れを感じます。

Trac はチーム開発をサポートするツールですが、Trac 入門も遠隔地メンバーによるチーム執筆。いろいろなツールやサービスのお世話になりながらなんとか完了することができました。

改訂 Trac 入門 出来!

2008 年秋・・・・・「Trac 入門」初版が出版されました。

会社の人とTracの本を書きました(技評から出ます) - kondoumh のはてなブログ

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

あれから足かけ5年・・・・

「[改訂]Trac 入門」 を皆さんにお届けすることができます。

〔改訂〕Trac入門 ~ソフトウェア開発・プロジェクト管理活用ガイド (Software Design plus)

〔改訂〕Trac入門 ~ソフトウェア開発・プロジェクト管理活用ガイド (Software Design plus)

発売日は 3/8 に決定。一部書店では先行販売もあるようです。

執筆中(というか校正中)に Trac 1.0 がリリースされ安定版として登場したので、内容も Trac 1.0 で検証・修正しました。
Trac 1.0 完全対応版です。

この5年間のトピックとしては

といったことが挙げられます。

Trac をはじめとする ITS が普及・定着し、なんらかの ITS を使ったことがない開発者というの今やはほとんどいません(多分)。構成管理ツール(SCM) については普及期にあった Subversion は後発の分散 SCM に押され、今や Git が SCM デファクトの地位を確立しました。GitHub にアカウントを持ちカジュアルに SCM/ITS を使いこなす開発者も増えています。

最初に SCM を導入して構成管理の基盤を築き、次にTracRedmine のような SCM と連携する ITS を導入して効果を上げている開発チームは多いでしょう。より先進的な開発チームでは Jenkins に代表される CI ツールを導入・活用して、ソフトウェアがいつでも動作する状態を維持しながら段階的に機能を拡張する開発メソッドを定着化させています。

Trac でも Git や Jenkins との連携が進みました。Trac 1.0 では標準で Git をサポートするようになりましたし、Jenkins, Trac 双方に連携用のプラグインが提供されています。オールインワンパッケージである Trac Lightning をインストールすると、ほぼワンクリックで SCM/ITS/CI の統合環境が出来上がってしまいます。

このような状況を踏まえ、改訂版では、Subversion に加え Git との連携、Jenkins との連携についても加筆し、活用方法を提示しています。

初版の出版以降、筆者らは数百人規模の開発現場で Trac Lightning を導入・定着化する経験をしました。リポジトリーへのコミットルール・チケット運用ルールを決めてプロジェクトメンバーに展開し、性能問題が発生した時に対策を講じ、様々なプラグインを導入・評価して適用しました。大規模でチーム数も多いのでアンチパターンに陥っているケースも目の当たりにしました。

改訂版の構成や基本的な内容は初版と大きく変わっていませんが、随所に5年間の歳月の流れと実プロジェクトでの経験がフィードバックされています。4章(プロジェクトへの適用)、5章(SCM/CI連携)、6章(逆引き Trac)が特にボリュームアップしています。

初版を執筆する時、単なるインストール・カスタマイズノウハウ集に終始するのではなく、問題管理の本質と Trac がサポートする領域について、具体的にわかりやすく解説することに努めました。Excel しか知らないプロマネに ITS 導入のメリットを理解させる材料を提供したいという意図もありました。
今や Trac のような ITS を使うことはプロジェクトのスタート時点の必須条件として認識されるようになっていると思います。
GitHub や Backlog のような ITS/SCM のクラウドサービスが、気軽に利用できるようになっているため、ITS のサーバーを構築し管理する必要性は希薄になっています。紹介しているプラグインも数年後には陳腐化しているかもしれません。ただし、問題管理の本質やチケット運用の部分は古くなることはないでしょう。

初版で登場した、筆者らをモデルにしたイラストや漫画のキャラクターは全員男子でしたが、今回は女子が加わりました。

色んな意味でパワーアップした Trac 入門改訂版 をぜひ読んでみてください。

#執筆うらばなし的な内容も後日エントリー予定です。

Issue 管理は一応やってるんです。

f:id:kondoumh:20160410114137p:plain

iEdit に関して、はてダに寄せられた要望とかバグレポートはどのようにしているかというと、iEdit の開発リポジトリーとして使っている Assembla で Trac のチケットとして管理しています。はてダ以外にも Vector の評価コメントなど、Web でフィードバックがあったものは、極力チケット管理するようにしています。

Assembla は Trac/Subversion のホスティングサービスです。チケットは スパムコメント対策で、僕しか更新できない設定にしてますが、カレントの Issue リストを閲覧できるようにしました。

1人 Issue 管理ですので記述は超適当ですが、それなりに仕様検討とか優先度決めとかに役立っていると思います。リクエストより自分の思いつきを優先しちゃうことが多いですが、タイミングとモチベーションによっては要望に応えるべく頑張ることも多いです。

オープンソースでもない個人作業なので、(ほとんどマニアの)ユーザーの皆さんには気長に待っていただくしかないのですが。Issue リストを見ると、今後どんな改修をするのかぼんやりと見えるとは思います。ロードマップ的な情報としてご参照ください。

(2019/03/10:追記)
今は Trello で private 管理してます。

TracWiki でページ内リンク

Trac の Wiki をプロジェクトのポータルに使っていると、トップページにお知らせやリンク集ができて情報量が多くなっていきます。Wikiページ間だけでなくページ内にもリンクを貼って、効果的にプロジェクトメンバーに情報を提示したいものです。

例えば、リリースノートをページの下の方にまとめておき、先頭のお知らせからリンクを貼りたいとします。

この場合リリースノートの見出し部分に

== リリースノート == #releaseNote

のようにアンカーを書いておき、お知らせの方には、

* xxx 1.2.0 リリースしました([#releaseNote リリースノート])

のようにリンクを記述します。これで、HTMLでid属性を指定したのと同じ効果が得られます。
idを指定した見出しの末尾はマウスオーバーすると ¶ という記号でアンカーのサインが表示されます。

InterTrac リンクで、他プロジェクトのリポジトリーツリーへのリンクを記述する

Trac の Wiki や チケットには、TracLinks の機能で、チケット、チェンジセット、Wiki ページへのリンクが簡単に貼れることは有名だと思います。リポジトリーのディレクトリーやファイルにも、リンクが貼れて、

source:<ファイル/ディレクトリーへのパス>

の形式でリンクを貼れます。/doc/trunk/foo 配下の bar.txt というファイルへのリンクは

source:doc/trunk/foo/bar.txt

のようにかけます。リポジトリーのパスを URL で記述してもいいのですが、日本語が含まれるパスはURLエンコードされて読めないし、サーバー名が変わるとリンクが切れちゃいます。source を使ったほうがメンテも楽でスマートです。
ちなみに、Word 文書などのバイナリーファイルはブラウザーで見ても嬉しくないので、export を使って

export:doc/trunk/foo/bar.doc

のように書けば、ダウンロードを強制できます。

Wiki や サイトへのリンクと同様 角括弧[] でタイトルのみの表示も可能です。

[source:doc/trunk/foo/bar.txt 読んでね]

ファイルのパスに空白(スペース)が含まれる場合は、クォーテーションする必要があります。シングルでもダブルでもOKです。

source:'doc/trunk/foo/hoge hoge/bar.txt'

開発プロジェクトが、大規模になると、Trac/SVN プロジェクトを1つで運用するより、サブシステム毎に設置することも多いと思います。
InterTrac リンク を使えば、他のTracのチケット、チェンジセット、Wiki ページへリンクを貼ることができます。詳細は↓
http://trac.edgewall.org/wiki/InterTrac

別のTracプロジェクトが http://hostname/OtherProject にあったとして、trac.ini の [intertrac] セクションに、

other = OtherProject
OtherProject.url = http://hostname/OtherProject

のように書いておけば、other:#12 あるいは OtherProject:#12 書くことで OtherProject のチケット #12 にリンクが貼られます(other は OtherProject の短縮名)。Subversion でコミットコメントに refs 指定することも可能ですので、複数のTrac プロジェクトにコミットコメントを残すこともできます。


さて、InterTrac リンクはとても便利なのですが、他のプロジェクトのリポジトリー/ディレクトリーへのリンクを記述するときにパス文字列に空白が混ざっていると、うまくリンクしてくれません。

other:source:'doc/trunk/foo/hoge hoge/bar.txt'

表示結果) other:source:'doc/trunk/foo/hoge hoge/bar.txt'
source 自体もクォートすれば無事にリンクされます。

other:"source:'doc/trunk/foo/hoge hoge/bar.txt'"

表示結果) other:"source:'doc/trunk/foo/hoge hoge/bar.txt'"
外側と内側は異なる引用符で記述する必要があります。

Mylyn 導入時チケットの同期エラーが出たら

久々に Eclipse 使ってます。Eclipse から Trac などの BTS/ITS のチケットを読み書きするためのプラグイン Mylyn を導入してみました。

Eclipse 3.5 Galileo Pleiades All in One に Mylyn の Trac Connector を追加して Trac Lightning に接続してるのですが、導入直後は XML-RPC でチケットを取りに行くところで、java.lang.NoSuchMethodError とかが出てうまくいきませんでした。

http://hondou.homedns.org/pukiwiki/pukiwiki.php?Win32%20Trac%20Lightning#vb07a9f7
↑のサイトを参考に、eclipse.ini を編集しいったん Pleiades を外して eclipse -clean で起動した後、Pleiades を戻して再び eclipse -clean で起動しなおすと問題が解消しました(eclipse インストールディレクトリー直下の eclipse.exe -clean.cmd を使えば、コマンドプロンプト不要です)。

ブラウザーを起動しなくても、Eclipse から直接チケット一覧を見たり、更新したりできるようになりました。
Mylyn とは別に、チケットの更新を Timeline のRSS から取得して、RSS Ticker で表示するというのもやってみました。チケット駆動開発の環境としては整った感じです。

関連記事
RSSでイシューを配信(2005/11/08)

「Trac入門」増刷決定しました

おかげさまで、増刷決定しました。購入していただいた皆様、ありがとうございました。

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Amazonでは、高値でしか入手できなくなっております。店頭発売までしばらくお待ちください。

私の勤め先で、最近新しい技術サイト(豆蔵ソフト工学ラボ)が立ち上げられたのですが、その中でも紹介させてもらいました。

プロジェクト管理ツール"Trac"入門

この記事は、「Trac入門」が手元にないときに、Tracの導入を周りに説得するためのツールとしてご利用いただければと思います(笑)。