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

95
Gitと出会って人生変わった 梅田昌太 CROOZ, Inc. @umesho1 1

Upload: shota-umeda

Post on 31-May-2015

5.373 views

Category:

Documents


6 download

TRANSCRIPT

Gitと出会って人生変わった梅田昌太

CROOZ, Inc.@umesho1

1

エンターテインメント企業CROOZ, Inc.

2

3

• 梅田昌太(34歳)• 技術統括本部という所でFW開発とかミドルの保守とか開発のサポートとかとかとかとかとか色々やってます

• 最近若い子がsublimeマンセーなのがちょっと悔しい

• LL房

まえがき

4

今日は

5

GHEとGITLabの話は出来ませんしません

6

pull requestな環境については

7

•@koichiroo(GHEの野良エバンジェリストじゃね?)•@onk(GitLab&モダンなRailsエンジニア)

この2人に聞いて下さい

8

アジェンダ

•第一章 ~技術的負債~•第二章 ~ヤク刈りな日々~•第三章 ~Gitと出会って人生変わった~•最終章 ~組織に新しいツールを導入するためのヒント~

9

技術的負債第一章

10

そんな格好良いもんじゃない

11

とあるtimestampでの弊社開発環境

12

Subversionを導入してるが

13

技術的負債

•使用しているのはtrunkのみ、開発ブランチは無い•何故か開発用と検証用とsvnリポジトリが別に有る•神がかり的な手動diff作業

14

大まかに図解してみましょう

15

16

local PC

開発環境

svnrepo

17

local PC

開発環境

svnrepo

trunk only!

18

local PC

開発環境

svnrepo

we don't have branchsvn checkout trunk

svn commit

のみ><

19

local PC

開発環境

svnrepo

検証環境

20

local PC

開発環境

svnrepo

検証環境

svnrepo

なぜお前がいる?

not svn svnsync

21

local PC

開発環境

svnrepo

検証環境

svnrepo

local PCでdiff取ってcommit

技術的負債

•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曰く

•「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて…」ということが延々と続く状況を表しています。ちなみに、ヤクとは毛が長い、牛の一種です。

40

現れたyak

•ブランチ開発環境の問題•デプロイの問題

41

ブランチ開発環境の問題

42

ブランチの実行環境が無い

•アプリケーションフレームワークが単一のブランチで開発する事しか考慮されていない

•リポジトリとappServerが同居しているのも問題

43

AppFWのバージョンアップ

44

最初 開発環境

WebServer

svnRepository

第一段階 開発環境

GitRepository

virtualhost(workRepo)

virtualhost(masterRepo)

virtualhost(feautureRepo)

AppFWのアップデートも行ってバーチャルホストへルーティングさせて開発

第一段階 開発環境

GitRepository

virtualhost(work)

virtualhost(master)

virtualhost(feauture)

ブランチ開発開始

第二段階(構築中) 開発環境

virtualhost(work)

virtualhost(master)

virtualhost(feauture)

RepositoryServergit&svn

第二段階(構築中) 開発環境

virtualhost(work)

virtualhost(master)

virtualhost(feauture)

RepositoryServergit&svn

リポジトリサーバー分割

理想

開発環境

webserver(work)

webserver(master)

webserver(feauture)

GHEorGitLAB

開発環境 開発環境

理想

開発環境

webserver(work)

webserver(master)

webserver(feauture)

GHEorGitLAB

開発環境 開発環境

GHE欲しいお

デプロイの問題

52

微妙にGit関係ない・・・

53

rsyncデプロイの限界

•リビジョン(ブランチ)指定のデプロイが出来ない•容易にロールバック出来ない•拡張性が乏しい

54

55

本番webServer

本番webServer

本番webServer

検証環境

rsync

Capistrano導入

56

Capistrano

•Ruby製のデプロイツール•容易なロールバック•もちろんリビジョン(ブランチ)指定可•sshが繋がればOKなので拡張もラクチン

57

本番WebServer 本番WebServer 本番WebServer

CapistranoServer

RepositoryServergit&svn

CheckOut&Deployロールバックディレクトリ作成

次々出て来るyak

•今時CIサーバーくらい有るべきだよねー•開発と検証の環境差異なんとかしたいねー•DBスキーマの差異もなんとかしたいよねー

59

スキーマ差異とかGit全くかんけーねー

60

Jenkins

CI導入

61

local

Repository

CIServer

push master

hooksbuild jenkins

Reporting

構築中ごめんなさい

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で実装

71

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

めんどくさい

88

怠惰で或る事はPGの美徳です

Q.どうする?

89

90

A.勝手に作る

偉い人には解らんのですよ

•ある程度動くものが無いと聞いてくれない•メリットが有ると思わせるのも俺たちの仕事•どや顔出来る

91

Q.会社に居づらくなったらどーすんだよ

92

A.CROOZ, Inc.ではエンジニアの採用を強化中です

93

仲間を待ってます僕を助けて下さい

@umesho1

94

ありがとうございました

95