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

Git(GitHub)おじさん

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

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

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

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

 Before Git

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

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


 After Git

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

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

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

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

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

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

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

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

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

一人で使っても意味ない

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

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

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

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

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

 GitHubを使って、Webページ公開することもできます。


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

ライセンス重要

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

オープンソースライセンス比較用早見表 - Google ドライブ

難しい

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

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

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

ブランチの理解を深める

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

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

A successful Git branching model » nvie.com

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

Gitのブランチの役割を考える | フューチャー技術ブログ

Pull Request

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

github初心者がPull Requestを送ってみた時の手順 - もぐめぽろぐ

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

チュートリアル

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

Git を学ぶ - チュートリアル、ワークフローおよびコマンド | Atlassian

Gitを学んでいて「なるほど!」となる瞬間 | POSTD

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

Gitハンズオン研修 / Git Hands-on - Speaker Deck
 ブレインパッド社の新入社員向けのハンズオン資料

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

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

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

https://git-scm.com/book/ja/v1/Git-の基本-タグ

はてなブログとGit

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

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

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

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


書籍

GitHub実践入門

 結構有名なようです。

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

ProGit

Git - Book

無料で公開されている電子書籍です。内容は結構深めです、理解を深めたくなったときに読んでみるとよいかもしれません。

ゼロから学ぶGit/GitHub

 なかなか良かったです。以下に勝手に補足記事を書きました。

まとめ

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


関連記事

変更履歴

  • 2024/12/10 リンク追記と微修正
  • 2023/07/05 リンク微修正
  • 2022/11/13 関連リンクなど追加
  • 2020/07/15 参考リンク追加
  • 2017/08/03 リンク追加