みんな分散SCMを使えばいいと思うよ    浦嶌 啓太 (uid:ursm) (株)永和システムマネジメント
お品書き1. 分散SCMとは2. 分散SCMツールの比較3. Mercurial体験コース4. Q&A
Subversionほど無意味なプロジェクトはない        Linus Torvalds
Subversion    爆発しろ• すべての変更がトラッキングされる• お粗末なマージ機能• オフラインだと何もできない• 何をするにも遅すぎる
そこで分散SCM  ですよ!
分散SCMとは
従来のSCMと分散SCMの違い
分散SCMのアプローチ • 開発者それぞれが独立した  リポジトリを持つ • 必要な時に変更を伝播する • 主従関係がない
分散SCMの           作業フロー                        3. push/pull1. clone    2. commit                           (merge)
分散SCMが   提供するもの• オレオレブランチ• 柔軟なデータフロー• 強力なマージ• オフラインアクセス
オレオレブランチ• 自分のリポジトリは自分専用のブランチ• 好きなだけコミットして好きな時に マージすればいいよ• もちろん捨ててもOK
柔軟なデータフロー• すべてのリポジトリは対等な関係• 変更を受け渡すフローを自由に変更 できる• 隣の人から直接変更を貰ってきたり できる!
強力なマージ• マージは「日常的な作業」• 優れたマージアルゴリズム• svn upぐらいの手軽さ
オフラインアクセス• 各リポジトリは完全な情報を持つ• push/pull以外の操作はすべてローカルで 完結する• いつでもどこでも開発できる• すっごく速いよ!
まとめ• 分散SCMはいいものですよ! • 気軽で • 柔軟で • パワフルで • 速い!
アジャイルな組織には分散SCMが よく似合う
分散SCMツールの    比較
いろいろあります
どれを使えば良いの?• 実績があるのは Git と Mercurial• Git • Linux Kernel, X.Org, Samba, Rails• Mercurial • OpenJDK, OpenSolaris, Mozilla
Gitの特徴• 機能性を重視• 低レベルな部分も触れる• Subversion連携がしっかりしている• Rails界隈のデファクトスタンダード• GitHub
Gitのここが駄目• コマンドが100個以上ある…• 依存関係が多くてビルドが面倒• まともなGUIクライアントがない
Mercurialの特徴• シンプルさを重視• 痒いところに手が届くインターフェース• 拡張性が高い• ドキュメントが充実している• GUIなクライアントも一応ある
Mercurialの    ここが駄目• やや保守的• Subversion連携がイマイチ• GitHubがない
Git vs Mercurial      Git           Mercurial  C + Perl + sh     Python + C  多機能・実利的          シンプル・理論的     何でもできる         ...
結論• どっちでもいい• 強いて言えば… • Subversion連携を重視するならGit • 手軽に使いたいならMercurial
Mercurial体験コース
Step 1 リポジトリを作る• hg init• hg add• hg status (st)• hg commit (ci)• hg log
Step 2   cloneしてみる• hg clone• hg outgoing (out)• hg push• hg incoming (in)• hg pull• hg update (up)
Step 3   マージしてみる• hg heads• hg merge
Mercurialとうまく付き合うコツ• メッセージはちゃんと見よう• ローカルとリモートを意識しよう• マージは頻繁にやろう
Congratulations!
Q&A• 日本語大丈夫?• バックアップってどうすんの?• ユーザ管理は?• http(s)通るのか?• どうすればVSSを追放できるのか?
日本語大丈夫?• 鬼門は日本語のファイル名• Mercurialは大体OK、Windows環境の 問題もMBCS Extensionで克服した• Gitはログ中の多バイト文字がエスケー プされてるけど問題ない (らしい)
バックアップって  どうすんの?• cloneすれば良いんじゃないかな
ユーザ管理は?• 基本的にはUNIXユーザ/グループの アクセス権で管理• HTTP経由なら今まで通りApacheで• MercurialだとACL Extensionという のもあります (使ったことないけど)
http(s)通るのか?• Of course.• MercurialはWebDAVじゃないので プロキシ環境でも安心ですよ
どうすればVSSを   追放できるのか?Social change starts with YOU.                     Kent Beck
ご質問は?
ご静聴ありがとう ございました
Upcoming SlideShare
Loading in …5
×

DSCM is Agile

2,086 views
2,011 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,086
On SlideShare
0
From Embeds
0
Number of Embeds
459
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

DSCM is Agile

  1. 1. みんな分散SCMを使えばいいと思うよ 浦嶌 啓太 (uid:ursm) (株)永和システムマネジメント
  2. 2. お品書き1. 分散SCMとは2. 分散SCMツールの比較3. Mercurial体験コース4. Q&A
  3. 3. Subversionほど無意味なプロジェクトはない Linus Torvalds
  4. 4. Subversion 爆発しろ• すべての変更がトラッキングされる• お粗末なマージ機能• オフラインだと何もできない• 何をするにも遅すぎる
  5. 5. そこで分散SCM ですよ!
  6. 6. 分散SCMとは
  7. 7. 従来のSCMと分散SCMの違い
  8. 8. 分散SCMのアプローチ • 開発者それぞれが独立した リポジトリを持つ • 必要な時に変更を伝播する • 主従関係がない
  9. 9. 分散SCMの 作業フロー 3. push/pull1. clone 2. commit (merge)
  10. 10. 分散SCMが 提供するもの• オレオレブランチ• 柔軟なデータフロー• 強力なマージ• オフラインアクセス
  11. 11. オレオレブランチ• 自分のリポジトリは自分専用のブランチ• 好きなだけコミットして好きな時に マージすればいいよ• もちろん捨ててもOK
  12. 12. 柔軟なデータフロー• すべてのリポジトリは対等な関係• 変更を受け渡すフローを自由に変更 できる• 隣の人から直接変更を貰ってきたり できる!
  13. 13. 強力なマージ• マージは「日常的な作業」• 優れたマージアルゴリズム• svn upぐらいの手軽さ
  14. 14. オフラインアクセス• 各リポジトリは完全な情報を持つ• push/pull以外の操作はすべてローカルで 完結する• いつでもどこでも開発できる• すっごく速いよ!
  15. 15. まとめ• 分散SCMはいいものですよ! • 気軽で • 柔軟で • パワフルで • 速い!
  16. 16. アジャイルな組織には分散SCMが よく似合う
  17. 17. 分散SCMツールの 比較
  18. 18. いろいろあります
  19. 19. どれを使えば良いの?• 実績があるのは Git と Mercurial• Git • Linux Kernel, X.Org, Samba, Rails• Mercurial • OpenJDK, OpenSolaris, Mozilla
  20. 20. Gitの特徴• 機能性を重視• 低レベルな部分も触れる• Subversion連携がしっかりしている• Rails界隈のデファクトスタンダード• GitHub
  21. 21. Gitのここが駄目• コマンドが100個以上ある…• 依存関係が多くてビルドが面倒• まともなGUIクライアントがない
  22. 22. Mercurialの特徴• シンプルさを重視• 痒いところに手が届くインターフェース• 拡張性が高い• ドキュメントが充実している• GUIなクライアントも一応ある
  23. 23. Mercurialの ここが駄目• やや保守的• Subversion連携がイマイチ• GitHubがない
  24. 24. Git vs Mercurial Git Mercurial C + Perl + sh Python + C 多機能・実利的 シンプル・理論的 何でもできる 親切なUISubversionと仲が良い 拡張性が高いRails界隈で一大ブーム 関連ツールが充実してる 複雑すぎる もう少し弾けて欲しい Windows? シラネ Subversion? シラネ
  25. 25. 結論• どっちでもいい• 強いて言えば… • Subversion連携を重視するならGit • 手軽に使いたいならMercurial
  26. 26. Mercurial体験コース
  27. 27. Step 1 リポジトリを作る• hg init• hg add• hg status (st)• hg commit (ci)• hg log
  28. 28. Step 2 cloneしてみる• hg clone• hg outgoing (out)• hg push• hg incoming (in)• hg pull• hg update (up)
  29. 29. Step 3 マージしてみる• hg heads• hg merge
  30. 30. Mercurialとうまく付き合うコツ• メッセージはちゃんと見よう• ローカルとリモートを意識しよう• マージは頻繁にやろう
  31. 31. Congratulations!
  32. 32. Q&A• 日本語大丈夫?• バックアップってどうすんの?• ユーザ管理は?• http(s)通るのか?• どうすればVSSを追放できるのか?
  33. 33. 日本語大丈夫?• 鬼門は日本語のファイル名• Mercurialは大体OK、Windows環境の 問題もMBCS Extensionで克服した• Gitはログ中の多バイト文字がエスケー プされてるけど問題ない (らしい)
  34. 34. バックアップって どうすんの?• cloneすれば良いんじゃないかな
  35. 35. ユーザ管理は?• 基本的にはUNIXユーザ/グループの アクセス権で管理• HTTP経由なら今まで通りApacheで• MercurialだとACL Extensionという のもあります (使ったことないけど)
  36. 36. http(s)通るのか?• Of course.• MercurialはWebDAVじゃないので プロキシ環境でも安心ですよ
  37. 37. どうすればVSSを 追放できるのか?Social change starts with YOU. Kent Beck
  38. 38. ご質問は?
  39. 39. ご静聴ありがとう ございました

×