道具としてのDVCS     第7回RxTstudy           @irof
じこしょうかいirof (いろふ)  ぷろぐらま  Java/Groovy/Jenkins/Git Redmineとかよくわかりません(真顔
道具を使う目的は?
道具道具は問題を解決するもの
問題に対する2つの問題1. 面倒なままなんとかしてる2.解決できると気付いていない
なんとかしてる問題単純作業 「面倒だなー」と言いつつ、殆ど考え ずに機械的にこなす作業道具を使う? 「わざわざ使わなくても手でできる し……」
気付いていない問題無理と決め付けちゃってるもの 「常識」と言う思い込み道具を使う? 問題があることを認識出来ないの で、選択肢すら浮かばない
問題の問題対応出来る道具がある。かもしれない。「知らなかったー」は出来るだけ減らしたい。 減らして楽したい。
DVCSが解決する問題なんだろう。 なんとかしてる問題なのか。 気付いていない問題なのか。
VCSに求めること
VCSにして欲しいことバージョン管理 バージョン?
たいむましん変なことになったから元に戻したい 少なくとも昔動いていた必要がある 動いた時点のスナップショット
DVCSについて
ぶんさんばーじょんかんr第三世代と言われるようです。 第一世代 SCCR/RCS 第二世代 CVS/SVN/VSS 第三世代 Git/Mercurial/Bazaar……とかツラツラ話してもあんまり意味ないかなーと思いつつ。
小ネタ: Gitの名前”Global Information Tracker”の略……と言う後付けも。
段階的なGitの使い方
段階的なGitの使い方Gitはどう言う使い方が出来るのかを話してみようと思います。Gitに限らず、DVCSなら大体同じような使い方できます。
Git修得Step1. 日付ディレクトリの代わりに2. 作業の切り替えと統合3. 共有、そのいち4. 共有、そのに
Step1日付ディレクトリ代替
日付ディレクトリ   1. バックアップディレ      クトリを作っとく   2. 日付ディレクトリを      作る   3. ファイルを中にコ      ピーする
Gitで代替  1. gitリポジトリを作る  2. gitでコミットする
だいたい代替
日付ディレクトリの問題     1. 手間     2. ファイルが増えると        毎回コピーが重い     3. ディスクスペース     4. 何が変わったか記        録し辛い
Gitでの解決毎回全コピー重い 更新されたファイルを追加。ディスクスペース 更新分だけ+圧縮とか。記録 コミットログ使ってください。 diffとかも勿論あるし。
ここで覚えられること(保存)リポジトリの作成 git init構成管理対象ファイルの追加/削除 git addコミット git commit
ここで覚えられること(復元)履歴の参照 git log特定の時点に戻す git checkout
Step2作業の切り替え
コードAを編集中ここで割り込みが発生するコードAを戻してコードBを修正しなきゃいけない
DVCSを使わない場合Subversion  Aブランチを作成してコミット  Bブランチを作成してチェックアウト……ってなるだろうけど  チームのブランチ戦略にもよる。  何よりスイッチコストが高い。
例えばこうしちゃったり……
問題Subversion  コミットやブランチが重い。   ブランチ作成スタンプラリー  ブランチ運用が不明確だったり(そ  れはそれで問題だけど)手動  間違えやすい。忘れる。
Gitでの解決やることはSubversionと同じ。操作が軽いので、今までコスト諸々で妥協していたこともできる。
ここで覚えられること履歴の参照と復元(復習) git log / git checkoutブランチの作成、切り替え git checkoutマージ git merge
小ネタ: GitのGUI
小ネタ: GitのGUIごめん、しらん。
小ネタ: GitのGUIごめん、しらん。でも評価が高いのはSourceTree。
小ネタ: GitのGUIごめん、しらん。でも評価が高いのはSourceTree。アイコンとか格好いいし。
小ネタ: GitのGUIごめん、しらん。でも評価が高いのはSourceTree。アイコンとか格好いいし。一昨日(2/14)Windows用のbetaが出たとこ。
Step3共有、そのいち
共有、ひとりで。共有って辞書には「二人以上で」とか書いてるから日本語的に駄目な気がしなくもないけど気にしないでください。
共有のやりかた手動  (USBメモリやネットワークなど)何ら  かの手段でファイルをやりとりする。Subversion  サーバーを介してやりとりする。Git  リポジトリ間で履歴をやりとりする。
いめーじ
ありそうな問題手動  手段に応じた不確かさ  最新はともかくバージョンは厳しいSubversion  サーバーを用意しなきゃいけない  一人じゃコストに見合わないかも
Gitでの解決「サーバー」を用意しなくていい  それぞれのGitリポジトリが単独で  完全なので。単なるファイルなので”Gitリポジトリを入れたUSBメモリ”でもOK  Dropboxとか地味に使えたり
ここで覚えられることリポジトリの複製 git clone他のリポジトリからの変更のとりこみ git pull他のリポジトリに変更を送り込む git push
補足clone しなくてもディレクトリまるごとコピーでも問題無かったりする。  その場合 pull とかするときにとって  くる所を指定しなきゃいけない。全部 pull だけでもできなくはない。  お互いに繋がってれば。
Step4共有、そのに
状況複数のバージョンが同時に存在する。(少なくとも)片方のバージョンの更新に追従しなくてはいけない。  バグ修正とか。
手動でやる
Subversionでやる
Gitでやる
複数バージョン並行手動  ディレクトリを丸ごとコピーSubversion  ブランチを別々にチェックアウトGit  ディレクトリを丸ごとコピー  もしくはclone
複数バージョン並行の問題手動  差分をdiffとったりしてやるんだろう  けど……  追跡がぶっちゃけ無理ゲー。Subversion/Git  特に問題無く機能する。
ここで覚えられることありません。だって今までのでいけるし。
まとめ(Git)
Gitのいいとこ段階的な代替利用ができる 一気に使いこなせなくてもいい。 「日付ディレクトリの代わり」だけでも 十二分に役に立つ。   ここで Subversion を使うのは   コストに見合わなさそう。
Gitのいいとこ一人で素振りしやすい Subversionの各操作をおっかな びっくりやったことのある人は多いの では。 ほぼ全ての操作がローカルで完結 するので、試しやすい。 素振りしやすいのはとてもいい。
Gitのいいとこ一人でも使える 例えばチームがSubversionを使っ ていても、余裕で共存出来る。 1. git-svnを使う 2. 無視して init しちゃう。
Gitのいいとこローカルで完全なリポジトリ 履歴の閲覧もファイルの復元も、全 部ローカルの操作なので早い。 早いから色々試せる。  「時間かかるから諦めてた」ような  問題が解決出来る。
Gitのいいとこコミット/ブランチの軽さ 軽いから使いやすい 使いこむから使いこなせる さらに使いやすくなる
Gitのいいとこさらに先に進める。 分散ゆえの強みとかチームでの運 用とかは次回以降に聞けるんじゃな いかな。
DVCSが解決する問題なんとかしてる問題 「コストかかるし手動でいいや」は見 直していいんじゃないか。気付いていない問題なのか。 VCSが使いこなせてない理由はサー バーが遅い点にあるのでは。
まとめ(道具)
道具は重要けど”最も重要”ではない
道具を “ドウデモイイ” と言うために、道具の選択肢を増やす。問題を解決出来るなら、道具なんてどうでも良い。一方で、道具を蔑ろにすると選択肢すら出て来ない。
道具には問題に対応するパターンが詰まっている。道具を学ぶことで解法が身に付く。かもしれない。
おわり
Upcoming SlideShare
Loading in …5
×

道具としてのDVCS

1,656 views

Published on

第7回 RxTstudy の資料です。 http://www.rxtstudy.net/

タイトルの省略を補うと「(一人で使う)道具としてのDVCS(と言うかGit)」になる感じ。

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

No Downloads
Views
Total views
1,656
On SlideShare
0
From Embeds
0
Number of Embeds
42
Actions
Shares
0
Downloads
13
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

道具としてのDVCS

  1. 1. 道具としてのDVCS 第7回RxTstudy @irof
  2. 2. じこしょうかいirof (いろふ) ぷろぐらま Java/Groovy/Jenkins/Git Redmineとかよくわかりません(真顔
  3. 3. 道具を使う目的は?
  4. 4. 道具道具は問題を解決するもの
  5. 5. 問題に対する2つの問題1. 面倒なままなんとかしてる2.解決できると気付いていない
  6. 6. なんとかしてる問題単純作業 「面倒だなー」と言いつつ、殆ど考え ずに機械的にこなす作業道具を使う? 「わざわざ使わなくても手でできる し……」
  7. 7. 気付いていない問題無理と決め付けちゃってるもの 「常識」と言う思い込み道具を使う? 問題があることを認識出来ないの で、選択肢すら浮かばない
  8. 8. 問題の問題対応出来る道具がある。かもしれない。「知らなかったー」は出来るだけ減らしたい。 減らして楽したい。
  9. 9. DVCSが解決する問題なんだろう。 なんとかしてる問題なのか。 気付いていない問題なのか。
  10. 10. VCSに求めること
  11. 11. VCSにして欲しいことバージョン管理 バージョン?
  12. 12. たいむましん変なことになったから元に戻したい 少なくとも昔動いていた必要がある 動いた時点のスナップショット
  13. 13. DVCSについて
  14. 14. ぶんさんばーじょんかんr第三世代と言われるようです。 第一世代 SCCR/RCS 第二世代 CVS/SVN/VSS 第三世代 Git/Mercurial/Bazaar……とかツラツラ話してもあんまり意味ないかなーと思いつつ。
  15. 15. 小ネタ: Gitの名前”Global Information Tracker”の略……と言う後付けも。
  16. 16. 段階的なGitの使い方
  17. 17. 段階的なGitの使い方Gitはどう言う使い方が出来るのかを話してみようと思います。Gitに限らず、DVCSなら大体同じような使い方できます。
  18. 18. Git修得Step1. 日付ディレクトリの代わりに2. 作業の切り替えと統合3. 共有、そのいち4. 共有、そのに
  19. 19. Step1日付ディレクトリ代替
  20. 20. 日付ディレクトリ 1. バックアップディレ クトリを作っとく 2. 日付ディレクトリを 作る 3. ファイルを中にコ ピーする
  21. 21. Gitで代替 1. gitリポジトリを作る 2. gitでコミットする
  22. 22. だいたい代替
  23. 23. 日付ディレクトリの問題 1. 手間 2. ファイルが増えると 毎回コピーが重い 3. ディスクスペース 4. 何が変わったか記 録し辛い
  24. 24. Gitでの解決毎回全コピー重い 更新されたファイルを追加。ディスクスペース 更新分だけ+圧縮とか。記録 コミットログ使ってください。 diffとかも勿論あるし。
  25. 25. ここで覚えられること(保存)リポジトリの作成 git init構成管理対象ファイルの追加/削除 git addコミット git commit
  26. 26. ここで覚えられること(復元)履歴の参照 git log特定の時点に戻す git checkout
  27. 27. Step2作業の切り替え
  28. 28. コードAを編集中ここで割り込みが発生するコードAを戻してコードBを修正しなきゃいけない
  29. 29. DVCSを使わない場合Subversion Aブランチを作成してコミット Bブランチを作成してチェックアウト……ってなるだろうけど チームのブランチ戦略にもよる。 何よりスイッチコストが高い。
  30. 30. 例えばこうしちゃったり……
  31. 31. 問題Subversion コミットやブランチが重い。 ブランチ作成スタンプラリー ブランチ運用が不明確だったり(そ れはそれで問題だけど)手動 間違えやすい。忘れる。
  32. 32. Gitでの解決やることはSubversionと同じ。操作が軽いので、今までコスト諸々で妥協していたこともできる。
  33. 33. ここで覚えられること履歴の参照と復元(復習) git log / git checkoutブランチの作成、切り替え git checkoutマージ git merge
  34. 34. 小ネタ: GitのGUI
  35. 35. 小ネタ: GitのGUIごめん、しらん。
  36. 36. 小ネタ: GitのGUIごめん、しらん。でも評価が高いのはSourceTree。
  37. 37. 小ネタ: GitのGUIごめん、しらん。でも評価が高いのはSourceTree。アイコンとか格好いいし。
  38. 38. 小ネタ: GitのGUIごめん、しらん。でも評価が高いのはSourceTree。アイコンとか格好いいし。一昨日(2/14)Windows用のbetaが出たとこ。
  39. 39. Step3共有、そのいち
  40. 40. 共有、ひとりで。共有って辞書には「二人以上で」とか書いてるから日本語的に駄目な気がしなくもないけど気にしないでください。
  41. 41. 共有のやりかた手動 (USBメモリやネットワークなど)何ら かの手段でファイルをやりとりする。Subversion サーバーを介してやりとりする。Git リポジトリ間で履歴をやりとりする。
  42. 42. いめーじ
  43. 43. ありそうな問題手動 手段に応じた不確かさ 最新はともかくバージョンは厳しいSubversion サーバーを用意しなきゃいけない 一人じゃコストに見合わないかも
  44. 44. Gitでの解決「サーバー」を用意しなくていい それぞれのGitリポジトリが単独で 完全なので。単なるファイルなので”Gitリポジトリを入れたUSBメモリ”でもOK Dropboxとか地味に使えたり
  45. 45. ここで覚えられることリポジトリの複製 git clone他のリポジトリからの変更のとりこみ git pull他のリポジトリに変更を送り込む git push
  46. 46. 補足clone しなくてもディレクトリまるごとコピーでも問題無かったりする。 その場合 pull とかするときにとって くる所を指定しなきゃいけない。全部 pull だけでもできなくはない。 お互いに繋がってれば。
  47. 47. Step4共有、そのに
  48. 48. 状況複数のバージョンが同時に存在する。(少なくとも)片方のバージョンの更新に追従しなくてはいけない。 バグ修正とか。
  49. 49. 手動でやる
  50. 50. Subversionでやる
  51. 51. Gitでやる
  52. 52. 複数バージョン並行手動 ディレクトリを丸ごとコピーSubversion ブランチを別々にチェックアウトGit ディレクトリを丸ごとコピー もしくはclone
  53. 53. 複数バージョン並行の問題手動 差分をdiffとったりしてやるんだろう けど…… 追跡がぶっちゃけ無理ゲー。Subversion/Git 特に問題無く機能する。
  54. 54. ここで覚えられることありません。だって今までのでいけるし。
  55. 55. まとめ(Git)
  56. 56. Gitのいいとこ段階的な代替利用ができる 一気に使いこなせなくてもいい。 「日付ディレクトリの代わり」だけでも 十二分に役に立つ。 ここで Subversion を使うのは コストに見合わなさそう。
  57. 57. Gitのいいとこ一人で素振りしやすい Subversionの各操作をおっかな びっくりやったことのある人は多いの では。 ほぼ全ての操作がローカルで完結 するので、試しやすい。 素振りしやすいのはとてもいい。
  58. 58. Gitのいいとこ一人でも使える 例えばチームがSubversionを使っ ていても、余裕で共存出来る。 1. git-svnを使う 2. 無視して init しちゃう。
  59. 59. Gitのいいとこローカルで完全なリポジトリ 履歴の閲覧もファイルの復元も、全 部ローカルの操作なので早い。 早いから色々試せる。 「時間かかるから諦めてた」ような 問題が解決出来る。
  60. 60. Gitのいいとこコミット/ブランチの軽さ 軽いから使いやすい 使いこむから使いこなせる さらに使いやすくなる
  61. 61. Gitのいいとこさらに先に進める。 分散ゆえの強みとかチームでの運 用とかは次回以降に聞けるんじゃな いかな。
  62. 62. DVCSが解決する問題なんとかしてる問題 「コストかかるし手動でいいや」は見 直していいんじゃないか。気付いていない問題なのか。 VCSが使いこなせてない理由はサー バーが遅い点にあるのでは。
  63. 63. まとめ(道具)
  64. 64. 道具は重要けど”最も重要”ではない
  65. 65. 道具を “ドウデモイイ” と言うために、道具の選択肢を増やす。問題を解決出来るなら、道具なんてどうでも良い。一方で、道具を蔑ろにすると選択肢すら出て来ない。
  66. 66. 道具には問題に対応するパターンが詰まっている。道具を学ぶことで解法が身に付く。かもしれない。
  67. 67. おわり

×