「いちばんやさしいGit&GitHubの教本」はタイトル通りやさしさに溢れていた

book.impress.co.jp

宇賀神さん、横田さん、ご出版おめでとうございます!

元同僚である宇賀神さん(@syobochim) から頂いたので、読んだ感想を書こうと思います。

感想

タイトルに いちばんやさしい 、表紙に はじめてでも、挫折しません。 と書かれているのですが、言葉の通り、 かな 〜〜〜りやさしく 書かれています。

目次は以下の通りで、Gitがどういったものなのか、なぜ必要なのかから始まり、Gitのインストール、基本的な操作、GitHubを使った共同作業のやりかたまで書かれています。私自身は普段からGitを利用しているため、サクサク読み進めて4時間ほどで読み終えました。Gitを初めて使うという人が操作しながら読み進めても、恐らく2日はかからないで開発に参加できるようになるかな、といったボリューム感です。

  • Chapter 1 Gitの基本を学ぼう
  • Chapter 2 Gitを使う準備をしよう
  • Chapter 3 ファイルをバージョン管理してみよう
  • Chapter 4 GitHubリポジトリをパソコンに取得しよう
  • Chapter 5 ブランチを使ってファイルを更新しよう
  • Chapter 6 複数ブランチを同時に使ってファイルを作業しよう
  • Chapter 7 コンフリクトに対処しよう
  • Chapter 8 GitHubをさらに使いこなそう

どう"やさしい" のか

全体を通して、キャプチャや図が多く使われています。Git…というかDVCSは特有のとっつきにくさがあるように思うのですが、図を使うことで、とてもわかりやすく伝えています。以下のリンクから試し読みができるので、どんな感じか気になる方は読んでみると良いと思います。

本文では基本的にCUIによる操作で学ぶことを推奨しているのですが、どうしても馴染めない人に対してGUIの利用についてもフォローしています。 個人的に良いなと思ったのが 大切なのはツールではなく、Gitで何ができるのかを理解し、実際にバージョン管理ができる状態になることです。 (p.66) の一文です。Gitもツールだろというツッコミはおいておいて、本質的に大切な点、学んでほしい点が表れているように感じました。

CUIに関しては、 pwdmkdir など基本的なコマンドまで丁寧に説明してあり、挫折のしようが無い感じです。 逆に、普段ソフトウェア開発などを行っている人にとっては冗長に感じるかもしれません。

その他、読み進めていくと人気講師(!!)のお二人に褒められる?タイミングがあり、成長を感じられる点も良いなと思いました。 (省略)… 少しずつ、でも着実に、できることが増えていますね! など。

焦点を絞って実践的な内容をコンパクトにまとめている

これは個人的に感じたことなのですが、あえて内容をかなり絞っているように思いました。本で紹介されているコマンドには、tagの作成や、revert, rebase(GitHubのマージのオプションで軽く触れている程度)、stashなどは含まれていません。その代わり、基本的な内容を丁寧に、230ページ程のボリューム(しかも図やキャプチャがかなり多め)で理解できるようにまとまっています。

一言で表すと、ソフトウェア開発に必要となるGitの基本的な操作・知識をコンパクトに、丁寧に説明している本 かなと思います。

Gitを利用した開発をしたことが無い人や、新人研修などに適しているように感じました。 また、雰囲気だけ理解してGitを利用してきた人にとっても、理解を深められる良い本だと思います。

まずは いちばんやさしいGit&GitHubの教本 を読み、Pro Git や他のGitの本で更に深く学ぶのが良さそうです。

少し気になった点

Lesson 21 Gitで管理しないファイルを設定しましょう.gitignoreファイルはローカルリポジトリ配下であればどこに置いてもいいですが、.gitignoreファイルが配置されたディレクトリ配下のパスにしか効果がありません。 (p.104) と書かれていますが、以下のようにユーザーのホームディレクトリに配置すると、どのローカルリポジトリ配下でも有効に動作します。以下では .gitignore_global というファイルを作っているので .gitignore_global の方が良いのかもしれませんが…

$ cat ~/.gitignore
*.swp
*.swo
*.vim
.idea
.iml
files.list
tags
.netrwhist
*.log
.DS_STORE
node_modules

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean

$ touch hoge.log
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean

しょぼちむとの思い出

しょぼちむとは、2015年の今頃の季節に同じプロジェクトで働いていました。

そのプロジェクトは決済サービスの開発プロジェクトで、私としょぼちむはアプリケーションの基盤チームのような部隊に所属していました。

アプリケーションを主に開発する部隊は今までSubversionをずっと利用してきており、クレジットカードの基幹システムなどの固い領域をずっと担当してきた人たちでした。当然Gitを利用したことがある人など皆無です。そして、20人以上いる開発者が一斉に開発をスタートしなければいけないような状態でした。

しかし、プロジェクトのコンテキストとして、

  • 同時に開発が進む接続先
  • 数多く入るであろう仕様変更
  • 並行して進む目的の異なるテスト

などなどの要因があり、柔軟な構成管理が必要だと判断し、思い切ってGitを採用しました。

当然初めてGitを使う人が20人もいるので導入は容易では無いのですが、しょぼちむが丁寧なガイドを作ってくれたおかげで大した混乱もなく開発を進めることができました。

プロジェクトの状況に合わせ、どうブランチを作るか、ライブラリのバージョニングをどうするか、一緒に考えて説明したのは良い思い出です。

当時書いた資料、どう書いたら彼らに理解してもらえるか、いろいろ悩みながら作ったんだと思います。 今回出版された本を読み、当時似たような図を書いていたなーと思い出したりしました。

あの時の経験が今に活かされているのだろうなと、感慨深く読ませていただきました。

……

これであの資料を封印できる!!

いちばんやさしいGit&GitHubの教本 を渡せばそれで済むのでは!!??

もう「Gitわかりません」なんて言わせないぞ٩(๑`^´๑)۶

良い本を書いてくれてありがとー!!