Gitと出会って人生変わった       梅田昌太     CROOZ, Inc.     @umesho1          1
エンターテインメント企業    CROOZ, Inc.         2
• 梅田昌太(34歳)    • 技術統括本部という所でFW開発とか     ミドルの保守とか開発のサポートとか     とかとかとかとか色々やってます    • 最近若い子がsublimeマンセーなのが     ちょっと悔しい    • LL房3
まえがき 4
今日は 5
GHEとGITLabの話は 出来ませんしません      6
pull requestな 環境については      7
この2人に聞いて下さい• @koichiroo(GHEの野良エバンジェリストじゃね?)• @onk(GitLab&モダンなRailsエンジニア)                  8
アジェンダ• 第一章 ∼技術的負債∼• 第二章 ∼ヤク刈りな日々∼• 第三章 ∼Gitと出会って人生変わった∼• 最終章 ∼組織に新しいツールを導入するためのヒント∼               9
技術的負債 第一章  10
そんな格好良いもんじゃない      11
とあるtimestampでの   弊社開発環境      12
Subversionを導入してるが        13
技術的負債• 使用しているのはtrunkのみ、開発ブランチは無い• 何故か開発用と検証用とsvnリポジトリが別に有る• 神がかり的な手動diff作業                14
大まかに図解してみましょう      15
開発環境 svnrepo       local PC          16
tru開発環境     nkon svnrepo   ly!       local PC          17
開発環境we dont have branch            svn checkout trunk      svn       svn commit     repo            のみ><             local...
開発環境              検証環境 svnrepo       local PC          19
なぜお前がいる? 開発環境                    検証環境  svn                     svn repo   not svn   svnsyncrepo             local PC      ...
loc      al          PC  開発環境              検証環境 dif     f取     で        って   svn               svnco  repo              re...
技術的負債• Appの環境差異出るの当たり前ですよね• もうバージョン管理とか遥か彼方• バージョン管理出来ないからソースがコメントアウトだらけ • とあるPJでは48%がコメントだった              22
ひかないで下さい   23
とはいえ 24
技術的負債• 今あるアーキテクチャは誰かが試行錯誤した結果 • って偉い人が言ってた• 正しい事がわかってるからといってそう簡単に移行は出来ない              25
安易な否定は良くない    26
でも27
さすがにsvnでメンテナンス し続ける気にはなれない      28
Git導入にかこつけてまとめてやっつちゃえ!     29
技術的負債の要約• ブランチ開発出来てない問題• バージョン管理出来てない問題• 環境差異が出てる問題               30
提案31
提案• 「Gitにしましょう!」(流行だし)• 「ブランチ開発しましょう!」(svnでも出来るけど)• 「ついでにRedmineも使ってTiDDにしましょう!」(古!)                 32
偉い人 33
「やれば良いじゃん」    34
ヽ( ^∀^)ノ   35
甘かった 36
ヤク刈りな日々  第二章   37
ヤク刈り(yak shaving )とは         38
Satoru Takabayashi曰く• 「一見無関係に見えるけど、真の問題を解くのに必要な問題を 解くのに必要な(これが何段階も続く)問題を解くのに必要な 活動」              39
Satoru Takabayashi曰く• 「ある問題を解こうと思ったら別の問題が出てきて、それを解 こうと思ったらさらに別の問題が出てきて…」ということが 延々と続く状況を表しています。ちなみに、ヤクとは毛が長 い、牛の一種です。      ...
現れたyak• ブランチ開発環境の問題• デプロイの問題                41
ブランチ開発環境の問題     42
ブランチの実行環境が無い• アプリケーションフレームワークが単一のブランチで開発する 事しか考慮されていない• リポジトリとappServerが同居しているのも問題                43
AppFWのバージョンアップ      44
最初    開発環境     svnRepository      WebServer
第一段階            開発環境               GitRepository     AppFWのアップデートも行って   バーチャルホストへルーティングさせて開発 virtualhost    virtualhost   ...
第一段階          ブラ    開発環境         開発  ンチGitRepository virtualhost   (work)            開始  virtualhost                 (mast...
第二段階                                      Repository                開発環境(構築中)                                   Server    ...
第二段階            リポ                           ジト                                       Repository                 開発環境(構築中)...
理想                          GHEorGitLAB開発環境        開発環境        開発環境webserver   webserver   webserver (work)      (master) ...
理想          GH              GHEorGitLAB        欲し   E           いお開発環境        開発環境        開発環境webserver   webserver   webs...
デプロイの問題   52
微妙にGit関係ない・・・      53
rsyncデプロイの限界• リビジョン(ブランチ)指定のデプロイが出来ない• 容易にロールバック出来ない• 拡張性が乏しい              54
rsync        本番webServer検証環境         本番webServer             本番webServer        55
Capistrano導入     56
Capistrano• Ruby製のデプロイツール• 容易なロールバック• もちろんリビジョン(ブランチ)指定可• sshが繋がればOKなので拡張もラクチン               57
Repository Capistrano                               Server   Server                              git&svn           CheckOu...
次々出て来るyak• 今時CIサーバーくらい有るべきだよねー• 開発と検証の環境差異なんとかしたいねー• DBスキーマの差異もなんとかしたいよねー               59
スキーマ差異とかGit全くかんけーねー     60
CI導入     Jenkins61
CI    Server   hooksbuild jenkins  Repository    Reportingpush master    local
構築中ごめんなさい  64
開発環境と検証環境との   環境差異問題     65
1.Applicationの差異問題        66
Gitのパッチでひたすら頑張る   間違った使い方な気もするけど気にしない            67
2.DBスキーマの差異問題      68
ツール作った! MySqlDeployUtil        69
慌てて名前つけた   70
MySqlDeployUtil• preとliveのdbスキーマを定期的に差分チェック• dev,pre,liveのDDLをGitで管理,Redmineへpush• liveデプロイ前に差分SQLを発行• 簡易なスコアリング機能• Perlで実...
GITと出会って人生変わった      第三章       72
Gitの導入それは    73
負債と向き合う事と    74
根気よく刈り続ける戦いだった      75
辛くも直視する負債• 枯れに枯れてしまった稼働中の愛しいソース達• 果てしない歴史を持つsvnのコミットログ• どうしてこうなったのか未だに解らない構成               76
刈り続けてるyak• AppFWの問題、実行環境の問題• デプロイの問題• CI環境の問題• 環境間差異の問題               77
これで人生変わって無いと言われたら人生辛過ぎです     78
補足79
開発者視点  80
開発者視点• mergeとcloneが爆速、リビジョン指定?ワロス• リポジトリの事を気にせずコードを書き始められる• gitというよりgit-hubの恩恵がハンパ無い                81
開発者視点• 日曜プログラマにとって恩恵が大きい• 何だかんだ言ってもミーハーでありたいという気持ちが強い•   .gitkeepの使用はいかがなもんですかね。。。                                82
最後に 83
組織に新しいツールを導入するための       ヒント       最終章        84
こんな事ありませんか?     85
新しい事やりたいと お願いしに行くと    86
めん      色々言われる         どく• 「やる意味あるの?」           さい• 「メンバーのチケット消化してやれ」• 「メリットを数値化しろ」               87
怠惰で或る事はPGの美徳です   88
Q.どうする?   89
A.勝手に作る   90
偉い人には解らんのですよ• ある程度動くものが無いと聞いてくれない• メリットが有ると思わせるのも俺たちの仕事• どや顔出来る               91
Q.会社に居づらくなったら    どーすんだよ      92
A.CROOZ, Inc.ではエンジニアの採用を強化中です        93
仲間を待ってます僕を助けて下さい  @umesho1     94
ありがとうございました     95
Gitと出会って人生変わった テックヒルズ2013-03-22
Upcoming SlideShare
Loading in …5
×

Gitと出会って人生変わった テックヒルズ2013-03-22

6,349 views

Published on

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

No Downloads
Views
Total views
6,349
On SlideShare
0
From Embeds
0
Number of Embeds
2,386
Actions
Shares
0
Downloads
11
Comments
0
Likes
14
Embeds 0
No embeds

No notes for slide

Gitと出会って人生変わった テックヒルズ2013-03-22

  1. 1. Gitと出会って人生変わった 梅田昌太 CROOZ, Inc. @umesho1 1
  2. 2. エンターテインメント企業 CROOZ, Inc. 2
  3. 3. • 梅田昌太(34歳) • 技術統括本部という所でFW開発とか ミドルの保守とか開発のサポートとか とかとかとかとか色々やってます • 最近若い子がsublimeマンセーなのが ちょっと悔しい • LL房3
  4. 4. まえがき 4
  5. 5. 今日は 5
  6. 6. GHEとGITLabの話は 出来ませんしません 6
  7. 7. pull requestな 環境については 7
  8. 8. この2人に聞いて下さい• @koichiroo(GHEの野良エバンジェリストじゃね?)• @onk(GitLab&モダンなRailsエンジニア) 8
  9. 9. アジェンダ• 第一章 ∼技術的負債∼• 第二章 ∼ヤク刈りな日々∼• 第三章 ∼Gitと出会って人生変わった∼• 最終章 ∼組織に新しいツールを導入するためのヒント∼ 9
  10. 10. 技術的負債 第一章 10
  11. 11. そんな格好良いもんじゃない 11
  12. 12. とあるtimestampでの 弊社開発環境 12
  13. 13. Subversionを導入してるが 13
  14. 14. 技術的負債• 使用しているのはtrunkのみ、開発ブランチは無い• 何故か開発用と検証用とsvnリポジトリが別に有る• 神がかり的な手動diff作業 14
  15. 15. 大まかに図解してみましょう 15
  16. 16. 開発環境 svnrepo local PC 16
  17. 17. tru開発環境 nkon svnrepo ly! local PC 17
  18. 18. 開発環境we dont have branch svn checkout trunk svn svn commit repo のみ>< local PC 18
  19. 19. 開発環境 検証環境 svnrepo local PC 19
  20. 20. なぜお前がいる? 開発環境 検証環境 svn svn repo not svn svnsyncrepo local PC 20
  21. 21. loc al PC 開発環境 検証環境 dif f取 で って svn svnco repo repo mm it local PC 21
  22. 22. 技術的負債• Appの環境差異出るの当たり前ですよね• もうバージョン管理とか遥か彼方• バージョン管理出来ないからソースがコメントアウトだらけ • とあるPJでは48%がコメントだった 22
  23. 23. ひかないで下さい 23
  24. 24. とはいえ 24
  25. 25. 技術的負債• 今あるアーキテクチャは誰かが試行錯誤した結果 • って偉い人が言ってた• 正しい事がわかってるからといってそう簡単に移行は出来ない 25
  26. 26. 安易な否定は良くない 26
  27. 27. でも27
  28. 28. さすがにsvnでメンテナンス し続ける気にはなれない 28
  29. 29. Git導入にかこつけてまとめてやっつちゃえ! 29
  30. 30. 技術的負債の要約• ブランチ開発出来てない問題• バージョン管理出来てない問題• 環境差異が出てる問題 30
  31. 31. 提案31
  32. 32. 提案• 「Gitにしましょう!」(流行だし)• 「ブランチ開発しましょう!」(svnでも出来るけど)• 「ついでにRedmineも使ってTiDDにしましょう!」(古!) 32
  33. 33. 偉い人 33
  34. 34. 「やれば良いじゃん」 34
  35. 35. ヽ( ^∀^)ノ 35
  36. 36. 甘かった 36
  37. 37. ヤク刈りな日々 第二章 37
  38. 38. ヤク刈り(yak shaving )とは 38
  39. 39. Satoru Takabayashi曰く• 「一見無関係に見えるけど、真の問題を解くのに必要な問題を 解くのに必要な(これが何段階も続く)問題を解くのに必要な 活動」 39
  40. 40. Satoru Takabayashi曰く• 「ある問題を解こうと思ったら別の問題が出てきて、それを解 こうと思ったらさらに別の問題が出てきて…」ということが 延々と続く状況を表しています。ちなみに、ヤクとは毛が長 い、牛の一種です。 40
  41. 41. 現れたyak• ブランチ開発環境の問題• デプロイの問題 41
  42. 42. ブランチ開発環境の問題 42
  43. 43. ブランチの実行環境が無い• アプリケーションフレームワークが単一のブランチで開発する 事しか考慮されていない• リポジトリとappServerが同居しているのも問題 43
  44. 44. AppFWのバージョンアップ 44
  45. 45. 最初 開発環境 svnRepository WebServer
  46. 46. 第一段階 開発環境 GitRepository AppFWのアップデートも行って バーチャルホストへルーティングさせて開発 virtualhost virtualhost virtualhost (workRepo) (masterRepo) (feautureRepo)
  47. 47. 第一段階 ブラ 開発環境 開発 ンチGitRepository virtualhost (work) 開始 virtualhost (master) virtualhost (feauture)
  48. 48. 第二段階 Repository 開発環境(構築中) Server git&svn virtualhost virtualhost virtualhost (work) (master) (feauture)
  49. 49. 第二段階 リポ ジト Repository 開発環境(構築中) Server git&svn サー リ バー 分割 virtualhost virtualhost virtualhost (work) (master) (feauture)
  50. 50. 理想 GHEorGitLAB開発環境 開発環境 開発環境webserver webserver webserver (work) (master) (feauture)
  51. 51. 理想 GH GHEorGitLAB 欲し E いお開発環境 開発環境 開発環境webserver webserver webserver (work) (master) (feauture)
  52. 52. デプロイの問題 52
  53. 53. 微妙にGit関係ない・・・ 53
  54. 54. rsyncデプロイの限界• リビジョン(ブランチ)指定のデプロイが出来ない• 容易にロールバック出来ない• 拡張性が乏しい 54
  55. 55. rsync 本番webServer検証環境 本番webServer 本番webServer 55
  56. 56. Capistrano導入 56
  57. 57. Capistrano• Ruby製のデプロイツール• 容易なロールバック• もちろんリビジョン(ブランチ)指定可• sshが繋がればOKなので拡張もラクチン 57
  58. 58. Repository Capistrano Server Server git&svn CheckOut&Deploy ロールバックディレクトリ作成本番WebServer 本番WebServer 本番WebServer
  59. 59. 次々出て来るyak• 今時CIサーバーくらい有るべきだよねー• 開発と検証の環境差異なんとかしたいねー• DBスキーマの差異もなんとかしたいよねー 59
  60. 60. スキーマ差異とかGit全くかんけーねー 60
  61. 61. CI導入 Jenkins61
  62. 62. CI Server hooksbuild jenkins Repository Reportingpush master local
  63. 63. 構築中ごめんなさい 64
  64. 64. 開発環境と検証環境との 環境差異問題 65
  65. 65. 1.Applicationの差異問題 66
  66. 66. Gitのパッチでひたすら頑張る 間違った使い方な気もするけど気にしない 67
  67. 67. 2.DBスキーマの差異問題 68
  68. 68. ツール作った! MySqlDeployUtil 69
  69. 69. 慌てて名前つけた 70
  70. 70. MySqlDeployUtil• preとliveのdbスキーマを定期的に差分チェック• dev,pre,liveのDDLをGitで管理,Redmineへpush• liveデプロイ前に差分SQLを発行• 簡易なスコアリング機能• Perlで実装 71
  71. 71. GITと出会って人生変わった 第三章 72
  72. 72. Gitの導入それは 73
  73. 73. 負債と向き合う事と 74
  74. 74. 根気よく刈り続ける戦いだった 75
  75. 75. 辛くも直視する負債• 枯れに枯れてしまった稼働中の愛しいソース達• 果てしない歴史を持つsvnのコミットログ• どうしてこうなったのか未だに解らない構成 76
  76. 76. 刈り続けてるyak• AppFWの問題、実行環境の問題• デプロイの問題• CI環境の問題• 環境間差異の問題 77
  77. 77. これで人生変わって無いと言われたら人生辛過ぎです 78
  78. 78. 補足79
  79. 79. 開発者視点 80
  80. 80. 開発者視点• mergeとcloneが爆速、リビジョン指定?ワロス• リポジトリの事を気にせずコードを書き始められる• gitというよりgit-hubの恩恵がハンパ無い 81
  81. 81. 開発者視点• 日曜プログラマにとって恩恵が大きい• 何だかんだ言ってもミーハーでありたいという気持ちが強い• .gitkeepの使用はいかがなもんですかね。。。 82
  82. 82. 最後に 83
  83. 83. 組織に新しいツールを導入するための ヒント 最終章 84
  84. 84. こんな事ありませんか? 85
  85. 85. 新しい事やりたいと お願いしに行くと 86
  86. 86. めん 色々言われる どく• 「やる意味あるの?」 さい• 「メンバーのチケット消化してやれ」• 「メリットを数値化しろ」 87
  87. 87. 怠惰で或る事はPGの美徳です 88
  88. 88. Q.どうする? 89
  89. 89. A.勝手に作る 90
  90. 90. 偉い人には解らんのですよ• ある程度動くものが無いと聞いてくれない• メリットが有ると思わせるのも俺たちの仕事• どや顔出来る 91
  91. 91. Q.会社に居づらくなったら どーすんだよ 92
  92. 92. A.CROOZ, Inc.ではエンジニアの採用を強化中です 93
  93. 93. 仲間を待ってます僕を助けて下さい @umesho1 94
  94. 94. ありがとうございました 95

×