旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

GitHubはいいものだ

2012年11月16日

一ヵ月余りGitHubを使ってみて好感を持ったので
「会社の仕事でも使った方がいいと思う」というのを結論とした
オススメ記事を書いてみることにしました

これから「自社でSVNサーバを建てる」ケースと
メリット・デメリットを比較する形で書きますが
その前に一言だけ伝えたいのは
「技術好きな人達が楽しむだけのもの」ではないということです、単に便利

なまじ聞きかじっているために
「結局は開発者内で楽しいだけでしょ?」という先入観がある
PM/PLさんは多い気がする(自分とか..)

なお、想定する会社の規模は、社員100人以下で
1~数名程度で回す案件が多い会社 です

メリット

1. サーバを建てる必要がない
当たり前の話ですが、最大の利点
自社SVNの場合は、構築・運用共にある程度の人的コストが掛かります
GitHubでも運用責任者は必要になりますが、段違いに楽です

2. 安定・軽い
一ヵ月ちょっとの利用経験からですが
リポジトリもWebサイトも障害は無く、充分に軽いです
あなたの会社のSVNは、一ヵ月間何の障害も無く動いていますか?

3. 開発用の周辺機能が付属されている
Wiki / ファイルアップロード / タスク管理 の機能が一緒に付いてきます
Wikiとファイルアップロードは充分便利だと個人的には感じました
タスク管理は力不足かも?別途Redmineなどが欲しいところ

4. Pull-Request がある
ひとことで説明すると、「シンプルなコードレビュー機能」です
GitHubではコードの差分が見易く表示されるのと相まって、使い易いです
現在、PLさんがそういった機能無しに svn diff などでコードの確認をしているのであれば
その労力を大きく減らすことができます
ただ、自分は今までに、専用のコードレビューアプリを使ったことが無いので
それらとの比較はできていません

5. Git であるということ
これはデメリットと一体ですが、ここではメリット面だけを
・ブランチ機能が充実しているので、マスターリポジトリに不正なコミットが入り難い
・分散リポジトリだから持ち歩ける、ローカルで開発したい人には便利
・かつてのCVSのようにSVNも廃れつつあって、その後継がGitになりそう

デメリット

1. 外部サービスである
当たり前の話ですが、「何が起こってもおかしくはない」ということです
朝起きたら全てが消滅しているかもしれませんし、
プライベートにしたはずのリポジトリが何故か公開されているかもしれません
・・・しかし、同じことがそれ以上の確率で、自社SVNにも発生し得るはずです
大抵は、「自社だから安心」ということで、それ以上考えてないだけと思われます

2. Gitであるということ
SVNからGitへ切り替えた際の唯一にして最大の問題点は
「概念も操作も難しい」ということです
例えば、ブランチ機能はマスターリポジトリを守りますが
その分難解なため、各メンバーの誤操作の回数は増えているでしょう
こればっかりは、どうしようもありません

3. 有料である
リポジトリをプライベートにするのには課金が必要です
5個までなら $7/月、50個までなら $50/月 です
他に Enterprise プランもあるようですが、詳しく見ていません
公開リポジトリなら、いくら作っても課金されません

ということで

上記のような点を比較検討して
大半の会社なら、GitHubの方がいいと思いました

上司を説得する際のネタで使ってもらえたら幸いです

補足や蛇足

メリットからは意図的に除外しましたが
プログラマなら単純に楽しいという補正も付きます
自分のしょーもないライブラリでも、GitHubに上げると素晴らしく見えたり
コードに行単位でコメントを入れられるので、ツッコミを入れて盛り上がったり

逆に、サイトが英語だし、全般的に技術用語で埋められているので
技術に興味がない人にはマイナス補正になりそう
例えば、GitHubへpushする為には、まずSSH鍵の生成が必要になるのですが
ここからしてハードルが高いと感じるエンジニアの方は多いのではないでしょうか

他社へ自社のセキュリティ体勢をプレゼンする際に
外部サービスでリポジトリを管理しているという点が障害になるかもしれませんが
Googleのサービスを使ってることを考えれば、トーク次第でどうにでもなる気がします
デメリットの1で書いてあるように、ちゃんと管理している会社で無ければ
事実上のリスクは、GitHub と同じか、GitHubの方がやや安全でしょう
まぁ、営業をしたことが無い人の意見になりますけども

個人的に注目しているのは
「通常業務の他にバージョン管理体制を構築・運用できる人」や
「プログラミングも出来るプロジェクトリーダー」という
いわゆる「仕事が出来る人」の労力を抑えられるという構造になっていることです
その分、そうでも無い人が苦労することになりますが
前者が足りないという会社さんの方が、圧倒的に多いはず