IDEA7のShelve Changesが鼻血吹くほど便利な件について

昨日,IDEA7でバージョニングまわりが強化されたと言ってたヤツの一例。いつのころからかChangesウィンドウに"Shelve Changes..."ってメニューが追加されてたんだけど,よく調べもしなかったので放ぽっていたのだが,最近やっと意味が分かった(近頃,こんなんばっかだな)。


簡単に言うと「ローカルのチェンジセットをRevertする前に,パッチ作って寄せておいて,必要に応じて差し戻せる機能」だ。って,Subversionとか使ったことある人にしか通じない説明だな。もっと簡単に言うと「ローカルで変更した内容を,どっかに待避しておいて,好きなときに差し戻す機能」だ。当然,「どっか」ってのはリポジトリじゃないよ。


どんな風に使うかと言えば,こんな感じにローカルチェンジセットから「Shelve Changes...」を選ぶ。


軽く自慢しとくと,ローカルチェンジセットは任意のまとまりで管理することが出来る。つまり,同時並行で複数の作業をしていた場合,その作業ごとにチェンジセットを分けておけるってこと(といっても,同じファイルを修正してると意味無いけどね)。


話を戻す。「Shelve Changes...」を選ぶと,こんなダイアログが出るんで,テキトウにコメント(これがShelve Changesetの名前になる)を入れて,「Shelve Changes」ボタンを押す。


そうすっと,ワーキングコピーからそのチェンジセットの内容が破棄(Revert)され,元に戻る。破棄されたチェンジセットは,Changesウィンドウの「Shelf」タブに待避される。まさに「棚に上げた」って事だ。


待避されたチェンジセットはメニューの「Unshelve Changes」で,再度ワーキングコピーに展開することが出来るんで,リポジトリにコミットしなくても,ローカルだけである程度のバージョニングを行える。


言ってしまえば,ローカルパッチの作成と適用なんで,やる気になればSubversionだけで出来ると思うが,IDEに統合されてるってのに意味があるのじゃ。IDEA7のロードマップに「バージョニングの強化」があったとき「んなん,どーでもいいわ」と思ったが,スイマセン,私が間違ってました。


さほど用途の多い機能とは思わないけど,こうゆうのがあるってのを知っていると,イザというとき便利。
#例えば複数の実装案があって,どっちにしようか試してみるとかできるしね。

「プログラマの環境のほうが桁違いにスゲェ」

とは,最近いっしょにペアプロしてる人のお言葉.しばらく実装から離れてて久しぶりに開発したら,その環境の充実さに愕然としたそうな.


そりゃ,そうだよなぁ.まずはチームの環境として,Subversion+Tracでバージョニングや課題管理はバッチリやってくれるし,Hudson+JUnit+Seleniumのコンボで毎日インテグレーションビルドもする.さらに個人の環境になるとIDEが当たり前のようにコード補完やリアルタイム・インスペクションを行ってくれるし,コードブラウズだって縦横無尽,多角的に行ったり来たりする.IDEのローカルヒストリに加え,SCMと連携すりゃ変更管理だって,(ほぼ勝手に)やってくれる.
Subversionのannotateを見て,たいそう驚いていた.


それに引き換え,設計者は相変わらず「方眼Excel」で設計書を書いてるんだからねぇ.やるせない気持ちになるのも分からんでも無い.Excelだから全部ダメって断罪する気はないけど,バイナリファイルは不便だよなとは思う.とは言え,Wikiとかそれ系の形式記述が優れてるとも言い切れないので,難しいよなってお茶を濁すしか無いんだけど.


実装に近い側が恐ろしい勢いで能率化してるのを知らず,旧態依然としてる人たちは,いったいどんだけ損をしてるんだろ?と改めて考えされられる出来事でした.

RFCやJSRの様式は仕様書としてどんなもんなんだろう

ここ数年と言うか,あんまり業務系の仕様書を書いた事が無いのでアレなんだけど,RFCやJSRのフォーマットは仕様書的にはどうなんだろね?と思ってみたり.


否定的な事言うつもりはなくて,実際RFCとかJSRを読んでると「よく書いてるよなぁ〜」って正直思う.ただ,JSRとかを見て実際にプロダクトを作ったりしてる訳じゃないので,仕様書としての実用度合いは計り知れないんだけど,そこらの兄ちゃんが書いた業務系の仕様書よっかは,ぜんぜん出来がいいと思う.


世間知らずの世迷い言かも知れんが,ちょっと研究してみる価値はあるかな?