Devsumi2008

2,589 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,589
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • はじめに  5 分 構成管理  5 分 Subversion 20 分 デモ 5 分 Maven 10 分 まとめ  5 分 計測結果 (65 分 ) はじめに  5 分 構成管理  8 分 Subversion 20 分 デモ 分 Maven 20 分 まとめ  3 分
  • Devsumi2008

    1. 1. 縣 俊貴 株式会社ヌーラボ   取締役 The Seasar Foundation 14-E-3 Subversion と Maven 2 による構成管理 〜バージョン管理・ビルド・リリース・自動化〜 Copyright 2008 Nulab inc. All Rights Reserved.
    2. 2. 最初に自己紹介 <ul><li>縣俊貴(あがたとしたか) </li></ul><ul><li>OSS 活動 </li></ul><ul><li>執筆 </li></ul><ul><li>Blog </li></ul><ul><ul><li>アガテナ http://d.hatena.ne.jp/agt/ </li></ul></ul>Copyright 2008 Nulab inc. All Rights Reserved. http://www.backlog.jp/ 本社:福岡市 アジャイル開発の
    3. 3. アジェンダ <ul><li>構成管理とは? </li></ul><ul><ul><li>なぜ今構成管理なのか? </li></ul></ul><ul><li>Subversion </li></ul><ul><ul><li>構成管理の実践的な運用パターン </li></ul></ul><ul><li>Maven2 </li></ul><ul><ul><li>Maven2 で構成管理 </li></ul></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    4. 4. Copyright 2008 Nulab inc. All Rights Reserved.
    5. 5. 構成管理とは? <ul><li>構成管理とは? </li></ul><ul><li>Subversion </li></ul><ul><li>Maven2 </li></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    6. 6. 身の回りにこんな 問題ありませんか? 構成管理に対しての意識を高めていかないと、問題は永遠に解決しません。 Copyright 2008 Nulab inc. All Rights Reserved. 田中リーダー 佐藤 鈴木
    7. 7. 構成管理って簡単にいうと何? <ul><li>ソフトウェア構成管理 (SCM:Software Configuration Management) </li></ul><ul><ul><li>「開発中のソースコードなどへの変更や修正を記録し、成果物を過去のものも含めていつでも作成できるようにすること」 </li></ul></ul>1.0 1.1 1.2 変更履歴の記録 変更履歴の記録 1.0 1.1 1.2 ソフトウェア構成管理とは、「変更管理」と「確実な成果物の作成」を実現するもの。 Copyright 2008 Nulab inc. All Rights Reserved. ・リリースの構成を把握 ・任意のバージョンの  を再作成 ソース 成果物
    8. 8. で、なぜ今構成管理なの? 自動化 昔と比べて効率化や品質保証に 関して手法が普及してきた。 次に開発全体の中で大きく改善できるポイント。 構成管理を「なんとなく」から「意識的」にして、ソフトウェアの安全で迅速な提供を Copyright 2008 Nulab inc. All Rights Reserved.
    9. 9. Subversion <ul><li>構成管理とは? </li></ul><ul><li>Subversion </li></ul><ul><li>Maven2 </li></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    10. 10. Subversion の特徴 <ul><li>構成管理をサポートしやすいバージョン管理システム </li></ul>Subversion は構成管理に最適なバージョン管理ツール! Copyright 2008 Nulab inc. All Rights Reserved. SVN 問題点の改善 ・ ブランチのコストがほぼ0。 ・ツリー全体でリビジョンを管理。  ある瞬間の状態のソースツリー  取得が簡単 項目 CVS Subversion ディレクトリの移動・削除 未サポート サポート ブランチ化 全コピー・コスト大 参照コピー・コスト小 通信方式 独自プロトコル、 SSH 独自プロトコル、 SSH 、 HTTP リビジョン番号の単位 ファイル毎 ツリー全体
    11. 11. Subversion を使った 構成管理の実践パターン <ul><li>構成管理にもパターン </li></ul><ul><li>パターンを知ることで、 </li></ul><ul><ul><li>意識的に構成管理ができる </li></ul></ul><ul><ul><li>開発者間の共通認識ができる </li></ul></ul><ul><li>基本パターンを紹介 </li></ul><ul><ul><li>メインライン </li></ul></ul><ul><ul><li>リリースブランチ </li></ul></ul><ul><ul><li>タスクブランチ </li></ul></ul>構成管理のパターンを知ると構成管理を自信を持って行えるようになります。 Copyright 2008 Nulab inc. All Rights Reserved.
    12. 12. メインライン <ul><li>開発の本流をひとつに保つ。 </li></ul><ul><ul><li>最新の開発はメインラインに対して行う。 </li></ul></ul><ul><ul><li>開発プロセスの簡略化・効率化。 </li></ul></ul><ul><ul><li>ブランチ・マージのコストを最小限に。 </li></ul></ul><ul><li>ルール </li></ul><ul><ul><li>メインラインはビルドできる状態を保つ。 </li></ul></ul><ul><ul><li>ブランチはメインラインからおこなう。 </li></ul></ul><ul><ul><li>ブランチのブランチはおこなわない。 </li></ul></ul><ul><ul><li>ブランチしたらなるべく早くメインラインに戻す。 </li></ul></ul>/trunk /Release1 リリース 1 /Release2 リリース 2 に 向けての作業 リリース 2 メインラインを使うと、開発がシンプルになります。ブランチは必要なときだけ意識的に。 Copyright 2008 Nulab inc. All Rights Reserved.
    13. 13. リリースブランチ <ul><li>特定のリリース作業向けのブランチ。 </li></ul><ul><ul><li>ブランチ=並行作業のためのコードラインの分岐。 </li></ul></ul><ul><ul><li>リリース期間中もメインラインの開発を止めない。 </li></ul></ul><ul><ul><li>リリース専用ラインで安全にリリース作業を進めることができる。 </li></ul></ul><ul><ul><li>リリースブランチでの修正は、メインラインにマージする。 </li></ul></ul>/trunk /Release1 リリース 1 /Release2 リリース 2 に 向けての作業 リリース 2 リリース時はブランチを切ろう。 Copyright 2008 Nulab inc. All Rights Reserved.
    14. 14. リリースブランチ(メンテナンス時) <ul><li>リリースブランチをメンテナンス用のブランチとしてそのまま利用する </li></ul><ul><li>バグの修正などを行い、 trunk にマージする(その逆もあり) </li></ul>/trunk /Release1.0 リリース 1 リリース 2 に 向けての作業 リリース 1.0.1 メンテナンスは前回リリースブランチの最終状態から始める。 Copyright 2008 Nulab inc. All Rights Reserved.
    15. 15. タスクブランチ <ul><li>大きな新機能追加や実験的なコードを試すためのブランチ。 </li></ul><ul><ul><li>メインラインの開発に大きな影響を及ぼす場合。 </li></ul></ul><ul><ul><li>プロトタイプなど捨てられる可能性があるもの。 </li></ul></ul><ul><li>最終的にコードが採用となれば、マージしてメインラインに取り込まれる。 </li></ul>/trunk /TaskBranche 実験的な作業 大きな変更はタスクブランチで安全に実験する。 Copyright 2008 Nulab inc. All Rights Reserved.
    16. 16. タグ付け <ul><li>リリース時にリリース用ブランチの HEAD (最新)をタグ付けして、復元可能にしておく </li></ul><ul><ul><li>正式リリース </li></ul></ul><ul><ul><li>バグフィックスリリース </li></ul></ul>/trunk /Release1 リリース 1 /Release2 リリース 2 に 向けての作業 リリース 2 タグを付けて「リリース構成」を記録しましょう。忘れやすいのですぐにやること。 Copyright 2008 Nulab inc. All Rights Reserved.
    17. 17. タグ&ブランチの例 /project1 /branches /1.0.x ・・・リリースブランチ /1.1.x /postgresql-support ・・・タスクブランチ /tags /1.0.0 ・・・リリースタグ /1.0.1 /1.1.0 /trunk ・・・メインライン Copyright 2008 Nulab inc. All Rights Reserved.
    18. 18. マージ <ul><li>ブランチからメインラインへ、メインラインからブランチへ、変更を反映させる。 </li></ul><ul><li>トランクやブランチ間で変更した差分を、「作業コピー」に適用するだけ。 </li></ul><ul><li>ブランチをリポジトリ上で直接マージするわけではない。 </li></ul>/trunk 1 /Release1.0 3 4 6 5 2 マージ! Copyright 2008 Nulab inc. All Rights Reserved.
    19. 19. マージの具体例 /trunk 1 /Release1.0 3 4 6 5 2 A B C A B c D A c D a B C A c D 作業コピー ① マージ先を チェックアウト ② マージ元の 差分を適用 ③ 競合が起きた場合は、手作業で修正 ④ テストの実行 ⑤ マージ結果をコミット マージは変更の差分を作業コピー適用するだけ! Copyright 2008 Nulab inc. All Rights Reserved.
    20. 20. Eclipse によるマージのデモ <ul><li>trunk からブランチ (1.0.x) svn cp svn://localhost/cubby-examples/trunk svn://localhost/cubby-examples/branches/1.0.x </li></ul><ul><li>ブランチでの作業 </li></ul><ul><ul><li>変更 </li></ul></ul><ul><ul><li>コミット </li></ul></ul><ul><li>trunk での作業 </li></ul><ul><ul><li>ブランチ (1.0.x) の内容を作業コピーにマージ svn marge -r FROM:TO svn://localhost/cubby-examples/branches/1.0.x </li></ul></ul><ul><ul><li>競合を解決 svn resolved PATH </li></ul></ul><ul><ul><li>コミット </li></ul></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    21. 21. Subversion まとめ <ul><li>構成管理パターンで効果的な運用を行いましょう。 </li></ul><ul><li>ブランチはポイントを絞って意識的に使いましょう。 </li></ul><ul><li>マージは概念を理解すると意外と簡単です。 </li></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    22. 22. Maven2 <ul><li>構成管理とは? </li></ul><ul><li>Subversion </li></ul><ul><li>Maven2 </li></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    23. 23. Maven2 で何ができるの? 成果物 Maven2 リポジトリ 依存ライブラリ管理 Maven2 POM (プロジェクト定義ファイル) JAR WAR テストレポート JavaDoc プロジェクトサイト テスト 本番サーバ コンパイル パッケージング サイト生成 リリース CI サーバ ( Continuum ) 継続的 ビルド JAR Maven2 が構成管理をサポートするプロジェクト管理・ビルドツール。 Copyright 2008 Nulab inc. All Rights Reserved. Subversion リポジトリ SCM 連携
    24. 24. 構成管理で役立つポイントその① 「ビルド手順が統一される」 <ul><li>ビルドの手順(コマンド)が統一されているため、「誰でも」「いつでも」「どこでも」ビルドが可能に。 </li></ul><<Seaser2 のビルド >> svn co https://www.seasar.org/svn/s2container/tags/2008-01-25/seasar2-2.4.22/seasar2 cd seasar2 mvn clean package << 社内プロダクト Backlog のビルド >> svn co ・・・・・ /backlog/tags/R20071225 cd R2007-12-25 mvn clean package Maven2 を使うと誰でもどのプロジェクトでもビルドができるようになります。 Copyright 2008 Nulab inc. All Rights Reserved.
    25. 25. 構成管理で役立つポイントその② 「環境毎のビルドの自動化」 <ul><li>プロファイル </li></ul><ul><ul><li>環境毎の設定やビルドプロセスを切り替える(フックする)仕組み </li></ul></ul><ul><ul><li>-P オプション。例: mvn clean package -P release-staging </li></ul></ul><ul><ul><li>DB の接続情報の書き換え、 DB データの初期化、モックによるハードウェアエミュレート </li></ul></ul>コンパイル テスト パッケージング <ul><ul><ul><li>ステージング(テスト)リリース用 </li></ul></ul></ul><ul><ul><ul><li>プロファイル </li></ul></ul></ul><ul><ul><ul><li>本番リリース用 </li></ul></ul></ul><ul><ul><ul><li>プロファイル </li></ul></ul></ul><ul><ul><ul><li>CI ビルド用 </li></ul></ul></ul><ul><ul><ul><li>プロファイル </li></ul></ul></ul>手作業で設定ファイルの書き換えはダメ、絶対ダメ。プロファイルを活用しましょう。 Copyright 2008 Nulab inc. All Rights Reserved. 成果物 ソース
    26. 26. 構成管理で役立つポイントその③ 「依存ライブラリの把握と管理」 <ul><li>依存ライブラリが依存するライブラリも芋づる式に管理。 </li></ul>依存ライブラリとそのバージョンを明示的に管理できるようになります。 <dependency> <groupId> struts </groupId> <artifactId> struts </artifactId> <version> 1.2.9 </version> </dependency> <<pom.xml への記述例( Struts を使う場合) >> Copyright 2008 Nulab inc. All Rights Reserved. struts 1.2.9 commons-beanutils 3.8.2 commons-logging 1.0 commons-collection 2.0 servlet-api 2.2 commons-lang 2.0
    27. 27. Maven2 まとめ <ul><li>Maven2 の枠組みに乗っかれば構成管理の手法が統一され、楽になります。 </li></ul><ul><li>反面、導入、教育、基盤構築にきちんと時間をかけていく必要があります。 </li></ul><ul><li>全社的に導入することで標準化のメリットが大きくなります。 </li></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    28. 28. 具体的な構成管理基盤構築例 社内テスト用仮想サーバ CI& テストサーバ 開発用マシン Subversion サーバ 社内リポジトリサーバ CI& テストサーバ 本番サーバ コミット 成果物の デプロイ ライブラリの ダウンロード 社内ネットワーク インターネット Subversion Apache HTTP Apache HTTP Tomcat Continuum Maven2 Eclipse Subversive Maven2 ソースの チェックアウト ライブラリの ダウンロード VMWare Server XEN Maven2 セントラルリポジトリ サードパーティリポジトリ Apache HTTP ライブラリの ダウンロード チェックアウト Subversion Tomcat Copyright 2008 Nulab inc. All Rights Reserved. Apache Archiva or
    29. 29. 社内リポジトリ <ul><li>社内で作成したライブラリを 登録するためのリポジトリ。 </li></ul>社内リポジトリサーバ 社内リポジトリで、社内のライブラリを簡単に利用可能に。 Copyright 2008 Nulab inc. All Rights Reserved. 開発用マシン Maven2 セントラルリポジトリ サードパーティリポジトリ デプロイ 社内ライブラリの JAR 公開されていない JAR 公開されたライブラリの JAR 開発用マシン ローカル リポジトリ ダウンロード ローカル リポジトリ 社内ネットワーク インターネット
    30. 30. CI で開発ラインの故障をガード <ul><li>CI(Continuous Integration) とは? </li></ul><ul><ul><li>継続的・定期的に自動化されたテスト・ビルドを行うこと。 </li></ul></ul><ul><ul><li>開発ラインの故障の即時発見->修理 </li></ul></ul><ul><ul><li>構成管理的には、安定が求められるコードラインの 維持(メインライン) </li></ul></ul><ul><ul><li>CI ツール: Apache Continuum など </li></ul></ul>開発者 Subversion リポジトリ Continuum サーバ ② コミット ③ コミットに連動して最新ソース取得 ④ ビルド・ テスト パッケージング デプロイ pom.xml ① 登録 ⑤ 結果の通知 CI でコードラインの最新状態を見える化しましょう。 Copyright 2008 Nulab inc. All Rights Reserved.
    31. 31. おわりに Copyright 2008 Nulab inc. All Rights Reserved.
    32. 32. 構成管理導入のポイント <ul><li>まずはやってみる。 </li></ul><ul><ul><li>実践なくして実績無し。 </li></ul></ul><ul><ul><li>サーバ構築や認証など細かい部分も多いので、すこしづつ試していくしかない。 </li></ul></ul><ul><li>修繕ではなく、修理をする。 </li></ul><ul><ul><li>その場しのぎではダメ。 </li></ul></ul><ul><ul><li>配管工事なので先送りされがち、今日やれることは今日やっておく。 </li></ul></ul><ul><li>余裕があるときに素振りすること。 </li></ul><ul><ul><li>余裕がないときは、対処療法に終始しがち。 </li></ul></ul><ul><ul><li>ノウハウや経験値を増やしておく。 </li></ul></ul><ul><li>ノウハウややり方を共有したり、教える。 </li></ul><ul><ul><li>達人だけが知っていることが多い。 </li></ul></ul><ul><ul><li>「構成管理は特別な人だけが知っていればよい」というものではない。 </li></ul></ul><ul><ul><li>例えば、新人研修に入れるなど。 </li></ul></ul><ul><li>経営者 / 管理者が必要性を認識する。 </li></ul><ul><ul><li>システム開発のアウトプットは「実行可能なソフトウェア」。 </li></ul></ul><ul><ul><li>そのソフトウェアの基盤プロセスの整備により、効率化やリスクヘッジができることを認識する。 </li></ul></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    33. 33. ご静聴ありがとうございました。 <ul><li>コンサルティング、トレーニングのご相談は下記連絡先まで。 </li></ul><ul><ul><li>株式会社ヌーラボ </li></ul></ul><ul><ul><li>URL:http://www.nulab.co.jp/ </li></ul></ul><ul><ul><li>Email:agata@nulab.co.jp </li></ul></ul><ul><li>Subversion が統合されたプロジェクト管理ツール「 Backlog 」については下記まで。 </li></ul><ul><ul><li>URL:http://www.backlog.jp/ </li></ul></ul>Copyright 2008 Nulab inc. All Rights Reserved.
    34. 34. 資料 <ul><li>Subversion </li></ul><ul><ul><li>Subversion http://subversion.tigris.org/ </li></ul></ul><ul><ul><li>Eclipse http://www.eclipse.org/ </li></ul></ul><ul><ul><li>Subversive(Eclipse Subversion プラグイン ) http://www.eclipse.org/subversive/ </li></ul></ul><ul><li>Maven2 </li></ul><ul><ul><li>Maven2 http://maven.apache.org/ </li></ul></ul><ul><ul><li>Continuum ( CI サーバ) http://maven.apache.org/continuum/ </li></ul></ul><ul><ul><li>Archiva( 社内リポジトリ&プロキシーサーバ ) http://maven.apache.org/archiva/ </li></ul></ul><ul><ul><li>Wagon( デプロイツール ) http://maven.apache.org/wagon/ </li></ul></ul>Copyright 2008 Nulab inc. All Rights Reserved. <ul><li>Web 記事 </li></ul><ul><ul><li>構成管理 実践入門( WEB+DB PRESS Vol.39 ) http://www.nulab.co.jp/kousei/chapter1/01.html </li></ul></ul><ul><li>書籍 </li></ul><ul><ul><li>パターンによるソフトウェア構成管理 http://www.amazon.co.jp/dp/4798112593 </li></ul></ul><ul><ul><li>Subversion 実践入門 http://www.amazon.co.jp/dp/4274066800 </li></ul></ul><ul><ul><li>Apache Maven 2.0 入門 http://www.amazon.co.jp/dp/477412964X </li></ul></ul>
    35. 35. Copyright 原著作者: Masahiro Hayata http://www.flickr.com/photos/mrhayata/392881756/ 原著作者: Brian Solis http://www.flickr.com/photos/briansolis/2246628132/ 原著作者: piyush sarode http://www.flickr.com/photos/mrhayata/392881756/ 原著作者: IzaD KasmijaN http://www.flickr.com/photos/hatemaster/933035138/ 原著作者: sarflondondunc http://www.flickr.com/photos/sarflondondunc/2180759074/ 原著作者: Francesco http://www.flickr.com/photos/panico_francesco/2235020848/ 原著作者:三角形 井上恵介 http://www.freemap.jp/ Copyright 2008 Nulab inc. All Rights Reserved.

    ×