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してくれる人結構多いことを感じました。
難しい
これも誤解で…といいたいところですが。これだけは誤解じゃなかったです。はっきりいって奥が深すぎます。基本はコマンドをかたかた打っていくので、LinuxとかMacのターミナル使わない人はちょっと辛いでしょう。もうちょっと簡単にできなかったのかという気もしますが、色々な使い方を想定した結果の設計なんだろうなということが、使っていくうちに朧げながら分かってきました。
まずは最低限の操作から順に覚えていけばよいので、GitHubアカウントとってガンガン実戦で練習してくのがよいと思います。参考サイトをこれ以降にまとめておきます。ファイト!
Git(GitHub)の参考になったサイト
以下自分が参考にしたサイトです。
Git 入門的なサイト
入門的なサイト。別に全部みなくてよいので肌に合いそうなやつを1つ2つ選んで読んでみると最低限の理解はできると思います。
GitHub おじさん スターターキット #Git - Qiita
git初心者への道 - お仕事で困らないレベルまでググっとします。 · GitHub
Git入門:Git初学習者のための効率的な学習方法を考えてみた
デザイナーにgitとGitHubを使ってもらうための心得 #Git - Qiita
GitHub - hatena/Git-for-Designers: はてなのデザイナ向けの Git 入門ドキュメントです。
サル先生のGit入門〜バージョン管理を使いこなそう〜【プロジェクト管理ツールBacklog】
【旧版】git入門 (全22回) - プログラミングならドットインストール
ブランチの理解を深める
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しましょう。以下のサイトが分かりやすいかなと思います。
チュートリアル
実戦的なチュートリアル。やっぱり実戦が一番です。
Git を学ぶ - チュートリアル、ワークフローおよびコマンド | Atlassian
Learn Git Branching
ブランチを実践しながら学べるサイト
Gitハンズオン研修 / Git Hands-on - Speaker Deck
ブレインパッド社の新入社員向けのハンズオン資料
はてなブログとGit
はてなブログさんもGitを使っているよという話。はてなブログ使っている人は実はGitと無関係ではないのですよという話。
GitHub拡張(2016/06/19追記)
Octotree, Sourcegraph入れておくと便利です。
書籍
GitHub実践入門
結構有名なようです。
本屋でパラパラ立ち読みしてみましたが、自分はネットの情報でよいかなと思い買いませんでしたw。購入しました。結構良かったです、以下記事にレビュー書きました。
まとめ
私のGitHubアカウントは以下です。pull request待っています!
関連記事
変更履歴
- 2024/12/10 リンク追記と微修正
- 2023/07/05 リンク微修正
- 2022/11/13 関連リンクなど追加
- 2020/07/15 参考リンク追加
- 2017/08/03 リンク追加