読者です 読者をやめる 読者になる 読者になる

Git(GitHub)おじさんに俺はなるBefore Git, After Git

電波 リンク

Git(GitHub)おじさん

 何かを布教することをネットの一部では**おじさんというみたいです。最近、あまり得意ではないのですが、色々な事情で仕事でソフトをつくることが多くなり、その関係で何周か遅れでGitとGitHubを使うようになりました。そして、今頃その素晴らしさに感動して打ち震えている(大げさ)ので、私もGit(GitHub)おじさんになってみようかと思います。
 といっても、私が今更Git(GitHub)の何が素晴しいかを語ったところで…というのもあるのと、何よりうまく伝えられる気がしないです。何故ならそもそも自分がまだそんなにわかってないし使いこなせてない。なので、今回はGit(GitHub)を少し使ってどのようなことが変わった(良いことがあった)のかという具体例をGit使用前(Before Git)、Git使用後(After Git)として列挙した後、オススメのサイトをまとめておこうと思います。

Git(GitHub)使って変わったこと

「日付+プロジェクト名」のディレクトリが減った

 プログラムのバックアップをとる一番確実な方法として、様々な悲劇を繰り返した私が辿り着いた境地。ディレクトリの頭に日付をつけて丸ごとバックアップ。その結果がこれ。
f:id:karaage:20160107001739j:plain:w400
 Before Git

 これはヤバイ!どのソフトの最新版がどれで、いつどのような変更をしたのかまるでわからない。正確には、全部データは残っているので頑張って調べればわかるけど、そんなことしない。

 これがGit(GitHub)を使うとどうなるかというと。

f:id:karaage:20160107001753j:plain:w400
 After Git

 明らかにすっきりしました。差分もコマンド一発で確認できますし、Webのインターフェースでも確認できます。簡単に以前の状態に簡単に戻せるので安心ですし、GitHub上にバックアップもあるのが心強いですね。PC環境さえあれば、いつでもソフト開発ができてしまいます。

自分の作ったソフトがどんどん改良されていった

 GitHubはpull requestといって、公開されているソフトの改良提案(バグ直した・機能追加したから良かったら使ってよ)ということができます。最近GitHubで趣味で魚眼レンズ写真補正ソフト「uonome」を公開したのですが、多くの人からpull requestもらって、プログラムまずくて性能落ちていたところとか、自分がめんどくさくて作るの諦めていた機能や、こりゃ便利じゃんっていう機能までどんどん追加されていきました。

 こうやってネットの集合知でよりよいものが出来ていくのはちょっと感動しますね。

プログラムが(多少)上達した

 GitHubのTrendingとかで人気のあるプログラムのコードとかみると、こういう書き方もあるのかと結構勉強になります。

 あとpull requestもらったときもすごい勉強になったりします。自分みたいなヘッポコがプログラム書くには上手い人を真似るしかないのです。

Git(GitHub)誤解していたこと

 使う前に誤解していたことです。

一人で使っても意味ない

 複数人で開発するときに一番力を発揮するのは間違いないのですが、一人でも差分管理できたり、プログラムのバックアップになったりといろいろ便利でした。

ソフトのバイナリファイルを置けない

 バイナリファイルを置いて、使ってもらうとかはできないと思っていましたがリリース機能を使えばできることが分かりました。なので、今まで自作ソフトの公開場所はOSDN(旧SoftForge JP)に置いてたりしたのですが、全てGitHubに集約しました。

ソフト開発にしか使えない

 バイナリファイルだっておけるので、差分管理をしながら変更していきたいようなものなら大体使えます。ただ、やはりテキストだと差分管理が一目で分かるので便利です。例えば電子書籍の公開には最適。

 あとなんとWebページ公開することもできたりします。

 やろうと思えばブログを書くこともできますね。私はやりませんけど。この機能を応用して、はてなブログのCSSの管理に使っている人もいるようです。便利そう。

ライセンス重要

 ライセンスは明示しておいた方がよいです。多くの人に使って、改良してもらいたいならMITライセンスがよいかなと思います。GitHubでリポジトリ(ファイル置き場)つくるときに、選択するだけでライセンスの表記したファイルを作ってくれます。MITライセンスだから嬉しいとか、ライセンス確認してpull requestしてくれる人結構多いことを感じました。

オープンソースライセンス比較用早見表

難しい

 これも誤解で…といいたいところですが。これだけは誤解じゃなかったです。はっきりいって奥が深すぎます。基本はコマンドをかたかた打っていくので、LinuxとかMacのターミナル使わない人はちょっと辛いでしょう。もうちょっと簡単にできなかったのかという気もしますが、色々な使い方を想定した結果の設計なんだろうなということが、使っていくうちに朧げながら分かってきました。
 まずは最低限の操作から順に覚えていけばよいので、GitHubアカウントとってガンガン実戦で練習してくのがよいと思います。参考サイトをこれ以降にまとめておきます。ファイト!

Git(GitHub)の参考になったサイト

 以下自分が参考にしたサイトです。

ブランチの理解を深める

 GitではBranch(ブランチ)という概念が重要です。ブランカではありません。よくわからない人は下記サイトで理解を深めるのがよいと思います。

DevOps時代の開発者のための構成管理入門(3):知らないと現場で困るバージョン管理システムの基礎知識 (1/3) - @IT

A successful Git branching model » nvie.com

見えないチカラ: A successful Git branching model を翻訳しました
 上記サイトの日本語約

Pull Request

 pull requestって何?という話。複数の人と開発する場合には、いきなりpushしないでまずは必ずpull requestに関して学んでからpull requestしましょう。以下のサイトが分かりやすいかなと思います。

github初心者がPull Requestを送ってみた時の手順

初心者向けGithubへのPullRequest方法 - Qiita

チュートリアル

 実戦的なチュートリアル。やっぱり実戦が一番です。

Git チュートリアルとトレーニング| Atlassian

Gitを学んでいて「なるほど!」となる瞬間 | プログラミング | POSTD

Learn Git Branching
 ブランチを実践しながら学べるサイト

Githubでソフトウェアリリース

 バイナルファイルをGitHubにおきたいとき

GitHubのリリース機能を使う - Qiita

Git - タグ

はてなブログとGit

 はてなブログさんもGitを使っているよという話。はてなブログ使っている人は実はGitと無関係ではないのですよという話。

はてなブログチームの開発フローとGitHub // Speaker Deck

GitHubおすすめiPhoneアプリ

CodeHub - A Client for GitHub

CodeHub - A Client for GitHub

  • Dillon Buchanan
  • 仕事効率化
  • 無料
 CodeHubが複数アカウントにも対応しているし、使い勝手もよいかなと感じました

GitHub拡張(2016/06/19追記)

 Octotree, Sourcegraph入れておくと便利です。

書籍

GitHub実践宗門

 結構有名なようです。

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

 本屋でパラパラ立ち読みしてみましたが、自分はネットの情報でよいかなと思い買いませんでしたw。購入しました。結構良かったです、以下記事にレビュ書きました。

Pro Git

 なんと無料で公開されている電子書籍です。
Pro Git 日本語版電子書籍公開サイト

 内容は結構深めです、理解を深めたくなったときに読んでみるとよいかもしれません。

まとめ

 私のGitHubアカウントは以下です。pull request待っています!