2008年2月14日木曜日

デブサミ 2日目

・・・に行ってきました。
今日は 2セッションのみ見てきたので、すでに会社に着いております。。

さて、1つ目は【14-E-3】SubversionとMaven 2による構成管理:バージョン管理・ビルド・リリース・自動化
まずはSubversion。構成管理のパターンからの説明でした。

1. メインライン ・・・ 基本の開発をするところ。 Subversionではtrunk。

2. リリースブランチ
会社の製品開発では リリースしたタイミングでブランチを切ったりすることの方が多かったのですが、話の中で、「リリース前でブランチを切る。リリース作業はそのブランチで作業する。もちろん、リリースチェック時に見つかったバグ修正は、メインラインにも戻す」というパターン紹介してくれました。
あー 確かになぁー と思うところが。 リリース という作業は、それなりに時間がかかったりもするんですが、その間、次の修正などが加えられなくて待つ・・・ってことありました。
リリース前でブランチを切ることにより、そういうことが回避されるわけですね。
リリースチェック時のバグ修正がやたら多いと手間になってしまいますが、そんな不具合が多い状態からリリース準備は普通しないでしょうし・・・ね。

3. タスクブランチ
実験的なコードを書いて試してみたりするブランチ。
採用!となったら、メインラインにマージ。
話の中では 普通ブランチっていったらこのイメージを持たれる方も多い・・・ 的な事を言っていたと思いましたが、(違ってたらごめんなさい) 私はしてませんでした。
これ・・・したいですねー。 何か始めるときに実験的なコードを書いて試してみるって結構な作業量が発生したりします。なんせ、"こうやろう!"と方法が決まっているわけでもないですし。
そんな実験的なコードって、今まではローカルでの作業でやっていました。
でもブランチ切ってやると、マージ作業も楽になるし、こっちのほうが断然よさそうです。

4.タグつけ
リリースタイミングなどで、タグをつける。 話にありましたが、重要だけど忘れがち。 その通り(笑)

スピーカーの方は ブランチは 1.0.x のように最後に x を付けて、タグのときに 1.0.0 としているとの事。
branch
    /1.0.x
    /1.1.x
tags
    /1.0.0
    /1.0.1
のような感じ。 これは 分かりやすくていいですね。

次はMaven2.
会社で丁度(やっとで?)ちゃんと導入してみようという感じになっている所なんです。
まず、”お、注意せねばな”とおもったのが、「POMは書き換えて実行するのはNG!」ということ。
プロファイル(-pオプション)を使ってやりましょう。
今まで、会社のオフィシャルな環境ではAntでのビルドをしていたんですが、個人でビルドするときにはAntの定義をちょこっと直してやったりしていることもありました。
リリース用のパッケージ、テスト用のパッケージ、テスト用の環境に接続しての自動テスト・・・とか環境毎のビルドの自動化はMavenをうまく使って・・・ 「みんな同じ環境、条件でBuild、テストしましょー!」って事ですね。まさしくその通り。

あと、話に出ていた "社内リポジトリ" 。 社内で蓄積した共有ライブラリとか置いておくのは、重要ですね。
社内の財産共有のためにも。 ○○使っていたけど、最新じゃないの!? なんて事が起きないためにも。

しかし、これも社内の開発環境がすべてMavenに移行できたら有効性が高まるけども、簡単に じゃー全部移行するか ゆーて出来るもんでもない。
スピーカーの人の会社では、2年かかったそうです。

といって、実際手を動かしてやってみないと分らないものでもあるので、時間に余裕がある時とかに色々ノウハウためていきましょう ・・・ というので シメでした。

セッションが終わり出口まで歩いている間に見かけたんですが、
管理者っぽい上司:どうなん? ウチでもコレつかって・・なんとかならんもんか?
作業者っぽい部下:いやぁ~、XMLで地道に描かないといけないしぃ・・・そんなスグにできるもんでも・・(困)
なんて会話が交わされていました。

現実の会社の象徴っぽい会話だなぁー と。
このツール使ったら便利そうやから、つかえや! と 管理者は当然思うと思うんですが、こぅいぅツールのノウハウは短期間で身につくものでもなく、全員が理解して使ってもらわないといけない部分も多く。。
会社全体が やるぞ! となってくれて、ノウハウを積む時間やリスクも考えてくれて・・・となって欲しい処ですね。


さて次は 【14-C-4】Inside JavaVM ~安定したシステム構築のための勘所~
こちらは・・・すいません、予想と違う内容だったんで、ちょっと残念でした。
「これからのアーキテクチャ」の内のセッションだったので、よけいに間違えやすかったんかなぁ。
内容としては、メモリのOld領域がいっぱいになるとFullGCが走って速度が遅くなる。
Old領域はSession情報が入るので、Session情報の容量と接続数などを考慮してOld領域がいっぱいになるタイミングのを計算で出す。メモリリークの検出はCosminexusでの機能の説明でした・・・。

期待していたのは、jconsole やhprof、jhat とか (J2SE5や6でより便利になったり、含まれるようになったりしたところ)するものとか、見方を変えて、JMX使って こんな感じ方法もあるよ とか・・・ あればなぁー なんて思っていました。

ということで2日目の報告でした。
あ、今日は 意識したせいか 女の人は多かった気がします。
あと、1日目よりも人は少なかったかなぁー。



Blogged with Flock

• • •