GitHub実践入門 ~Pull Requestによる開発の変革

Gitを始めるためのおすすめ書籍 – 6冊を紹介!も確認する

●はじめに

本書は、世界中の開発者が行っているGitHubを利用した開発方法を、みなさんが現場で使えるようになるためのガイドとして執筆しました。よって、GitHubの解説だけにとどまらず、開発ワークフローやそれを支えるほかのツールにも踏み込んで解説しています。あなたの開発現場で、次のようなことに心当たりはありませんか?

・コードレビューが十分にできていない。レビューにスピード感がない
・書いた本人しか知らないコード、不安に感じるコードが本番環境にデプロイされる
・書き間違い、思い違いによる簡単なコードのミスにより不具合が多発する
・コードをお互いに見せ合って、知識共有や相互学習・指摘・改善するような機会がない
・1日に何個もの機能を追加できるようなシンプルで高速な開発ワークフローではない

GitHubを活用すれば、この問題を解決するきっかけや機能を提供してくれます。本書にはそのノウハウが凝縮されています。筆者は多数の企業にGitHubを導入し、ワークフローの改善を行いました。それをまとめた本書が開発現場を良くするために必ず役に立つと信じています。

大塚 弘記 (著)
出版社: 技術評論社 (2014/3/20)、出典:出版社HP

 

●本書の構成

本書は、全10章と2つのAppendixにより構成されています。
第1章:GitHubの世界へようこそ
GitHubとは何か、どこが革新的なのかなどを解説しています。オープンソースソフトウェアの世界にGitHubは革命とも言うべきソーシャルコーディングを提供しました。これについて触れるとともに、得られる恩恵や機能を簡単に解説しています。

第2章:Gitの導入
バージョン管理システムであるGitは、GitHubを利用するうえで必須です。本章ではGitの知識と理解を深めるとともに、実際に動作させる
ための手順を解説しています。

第3章:GitHubを利用するための準備
GitHubを利用するにあたり、アカウントの開設(無料)から、本格的に利用する前に設定しておいたほうがよいものなどを手順を追って解説しています。また、動作確認を含めて実際にGitHubにリポジトリを作成し、コードを公開する手順を解説しています。

第4章:Gitを操作しながら学ぶ
GitHubを利用するうえで必要なGitの基本的な知識と操作方法について、実際にGitを操作しながら学んでいきます。
基本的な操作から、複数人で開発するうえで必要になる複雑な操作まで実際に手を動かして一通り実践できます。

第5章:GitHubの機能を徹底解説
GitHubの機能について、画面を一つ一つ確認しながら解説しています。ソースコードビューアとしての機能も詳細に解説しています。快適に動作するUIを味わってください。GitHubを使っている人も、一度目を通すことをお勧めします。明日から使えるTipsを見つけられるはずです。

第6章:はじめてのPullRequest
GitHubを代表する機能であるPullRequestについて、実際に手を動かして試せるように構成しています。ぜひ本書を参考にはじめてのPullRequestを送ってみてください。

第7章:PullRequestが送られてきたら
リポジトリをメンテナンスする側の視点に立って、PullRequestが送られてきた場合にどのように考え、判断し、操作をすればよいのかを
解説しています。

第8章:GitHubと連携するツールとサービス
前半ではGitHubをCLIから操作するためのhubコマンドを解説しています。また、継続的インテグレーションとして、GitHubと連携できるTravisCl、Jenkinsの構築、設定方法について解説しています。そのほか、GitHubと簡単に連携して使えるサービスを多数紹介しています。

第9章:GitHubを利用した開発フロー
GitHubを中心として開発をするGitHubFlow、GitFlowという2つの開発ワークフローについて、詳細に解説しています。それぞれに共通して、チームで開発するための心得から、それぞれのワークフローの特徴を含め、実際に手を動かして体験できる構成にしています。

第10章:会社でGitHubを使おう
会社でGitHubを採用する際に考えるべきことや役立つ情報をまとめています。セキュリティ、障害情報、事前に考えておくべきこと、GitHubEnterpriseの検討など、実際にGitHubを導入をする人が考えるであろうことや知っておくべきノウハウを解説しています。

AppendixA:GitHubをサポートするGUIクライアント
チームの誰もがCLIの操作に慣れているわけではないと思います。そこで、GitHubをサポートするGUIクライアントツールについてまとめています。
AppendixB:Gistで手軽にコードを共有
ちょっとしたサンプルコードやログなどをほかの人と共有するのに役立つ、Gistについて解説しています。日々の小さなコードはこちらを活用すると便利です。
GitHub実践入門
PullRequestによる開発の変革

大塚 弘記 (著)
出版社: 技術評論社 (2014/3/20)、出典:出版社HP

目次 – GitHub実践入門 ~Pull Requestによる開発の変革

はじめに
謝辞
本書の構成
第1章 GitHubの世界へようこそ
1.1 GitHubとは
GitHubCoctocat
ただのGitリポジトリのホスティングサービスではない
GitHubの利用状況
ColumnGitHubとGitの違い
1.2 GitHubを使うと何が変わるのか
コラボレーションの形が変化する
開発者たちが化学反応を起こすPullRequest
特定のユーザへのコメント
GitHubFlavoredMarkdown
Columnこんな書き方もできる!!
他チームのソフトウェアが今まで以上に見える
オープンソースソフトウェアの世界と同じ開発スタイル
1.3 ソーシャルコーディングとは
1.4 ソーシャルコーディングをするべき理由
世界を閉ざさず、多種多様な文化を見よ
コードを書けるプログラマが求められている
GitHubの最大の特徴は「人に目を向ける」こと
1.5 GitHubが提供する主な機能
Gitリポジトリ
Organization
Issue
Wiki
PullRequest
ColumnGitHubで注目されているソフトウェア
1.6 まとめ
参考資料

第2章 Gitの導入
2.1 誕生の背景
2.2 バージョン管理とは
集中型と分散型
集中型
分散型
集中型と分散型はどちらが良いか
2.3 インストール
MacとLinuxの場合
Windowsの場合
コンポーネントの選択
環境変数の設定
改行コードの扱い
GitBash
本書での環境
2.4 初期設定
名前とメールアドレスを設定する
コマンド出力を読みやすくする
2.5 まとめ

第3章 GitHubを利用するための準備
3.1 利用する前の準備
アカウントの作成
アイコンの設定
SSHKeyの設定
公開鍵の登録
ソーシャル機能の利用
3.2 実際に使ってみよう
リポジトリの作成
Repositoryname
Description
Public,Private
InitializethisrepositorywithaREADME
Add.gitignore
Add a license
リポジトリにアクセス
README.md
GitHub FlavoredMarkdown
コードを公開
作成したリポジトリをcloneする
コードを作成する
コミットする
Column 公開する際のライセンス
pushする
3.3 まとめ

第4章 Gitを操作しながら学ぶ
4.1 基本的な操作
git init——リポジトリを初期化
git status——リポジトリの状態を確認
git add——ステージ領域ヘファイルを追加
git commit——リポジトリの歴史を記録
1行のコミットメッセージを記述する
詳細なコミットメッセージを記述する
コミットを中止する
コミット後の状態を確認する
git log——コミットログを確認
コミットメッセージの1行目のみを表示する
指定したディレクトリ、ファイルのみのログを表示する
ファイルの差分を表示する
git diff——変更差分を確認
ワークツリーとステージ領域の差分を確認する
ワークツリーと最新コミットの差分を確認する
4.2 ブランチの操作
git branch—— ブランチを一覧表示
git checkout-b—— ブランチを作成し、切り替える
feature-Aブランチに切り替えコミットする
masterブランチへ切り替える
1つ前のブランチに切り替える
トピックブランチ
統合ブランチ
git merge—— ブランチをマージ
git log –graph—— ブランチを視覚的に確認する
4.3 コミットを変更する操作
git reset—— 歴史を戻る
feature-Aブランチを分岐する前に戻る
fix-Bブランチを作成する
feature-Aブランチをマージしたあとの状態に進む
コンフリクト(競合)を解消
コンフリクト部分を確認し解消する
解消した結果をコミットする
git commit –amendt—— コミットメッセージを修正
git rebase -t—— 歴史を押しつぶして改変
feature-Cブランチを作成する
スペルミスを修正する
歴史を改ざんする
masterブランチにマージする
4.4 リモートリポジトリへの送信
git remote addt——リモートリポジトリを登録
git pusht—— リモートリポジトリへ送信
masterブランチへ送信する masterブランチ以外のブランチへ送信する
4.5 リモートリポジトリから取得
git clone—— リモートリポジトリを取得
リモートリポジトリを取得する リモートのfeature-Dブランチをチェックアウトする ローカルのfeature-Dブランチに変更をコミットする
feature-Dブランチをpushする
git pull — 最新のリモートリポジトリブランチを取得
4.6 さらにGitを奥深く理解するための資料
Pro Git
LearnGitBranching
tryGit
4.7 まとめ

第5章 GitHubの機能を徹底解説
5.1 キーボードショートカット
5.2 ツールバー
UIの解説
1ロゴ
2Notifications
3検索ウィンドウ
4Explore
5Gist
6Blog
7Help
8アバター・ユーザ名
9Create a new …
10Account settings
11Sign out
5.3 ダッシュボード
UIの解説
1News Feed
2Pull Requests
3Issues
4Stars
6broadcast
7Repositories you contribute to
8Your Repositories
5.4 プロフィール
UIの解説
1ユーザ情報
2Popularrepositories
3Repositoriescontributedto
4Publiccontributions
5ContributionActivity
6Repositories
7PublicActivity
5.5 リポジトリ
UIの解説
1ユーザ名(組織名)/リポジトリ名
2Watch/Star/Fork
3Code
4Issues
5PullRequests
6Wiki
7Pulse
8Graphs
9Network
10Settings
11SHcloneURL
12CloneinDesktop
13DownloadZIP
a commits
b branches
c releases
d contributors
e Compare&review
f branch
g path
h ForkthisprojectandCreateanewfile
ファイルに関する操作
Column ファイルを名前の一部から検索する
差分の閲覧
ブランチ間の差分を見る
数日前の差分を見る
指定日からの差分を見る
5.6 Issue
表現力豊かで簡潔な記述方法
シンタックスハイライトする
画像を添付する
ラベルを付けて整理
マイルストーンを付けて管理
Column 貢献するためのルールを知らせよう!
タスクリスト記法
コミットメッセージによるIssueの操作
関連するIssueにコミットを表示する
IssuetをCloseする
特定のIssueをPull Requestに変換
5.7 Pull Request
Column diff形式とpatch形式のファイルを取得
Conversation
Column コメントの引用
Commits
Column コメントで絵文字を活用する
Files Changed
5.8 Wiki
Pages
History
Column Wikiにサイドバーを表示する
5.9 Pulse
active pull requests
active issues
commits
Releases published
Unresolved Conversations
5.10 Graphs
Contributors
Commit Activity
Code Frequency
Punchcard
5.11 Network
5.12 Settings
Options
①Settings
②Features
③GitHub Pages
④Danger Zone
Collaborators
Webhooks & Services
Deploy Keys
5.13 Notifications
5.14 Zolto
GitHub Pages
GitHub Jobs
GitHub Enterprise
GitHub API
5.15 まとめ
Column Macの通知センターでGitHubのNotificationsを確認

第6章 はじめてのPull Request
6.1 Pull Requestの概要
Pull Requestとは
Pull Requestの流れ
6.2 Pull Requestを送る準備
修正するソースコードを確認
Fork
clone
branch
トピックブランチで作業する理由
ブランチを確認する
トピックブランチを作成する
コードを追加
変更をコミット
リモートブランチの作成
6.3 Pull Requestを送る
6.4 Pull Requestをより効果的に使う方法
開発の途中でも論議するためにPull Requestを送る
開発途中であることを明確にする
ForkせずにブランチからPull Requestを送る
6.5 リポジトリのメンテナンス
リポジトリのFork、clone
オリジナルのリポジトリに名前を設定
最新のデータを取得
6.6 まとめ

第7章 Pull Requestが送られてきたら
7.1 Pull Requestを取り込む方法
7.2 Pull Requestを取り込む準備
コードレビュー
画像の差分を確認
2-up
Swipe Onion Skin
Difference
Pull Requestの内容を手元の開発環境に反映
受信側のローカルリポジトリを最新にする
送信側のリモートリポジトリを取得する
確認用のブランチを作成する
マージする
ブランチを削除する
Column コードマネジメントスキルを伸ばすには
7.3 Pull Requestを取り込む
メインのブランチにマージ
変更をpush
7.4 まとめ
Column 相互学習の場を作り上げるのに協力してください

第8章 GitHubと連携するツールとサービス
8.1 hubコマンド
概要
セットアップ
インストールする
動作確認する
エイリアスを設定する
シェルでの補完を実現する
~/.config/hubについて
コマンド
hub clone
hub remote add
hub fetch
hub cherry-pick
hub fork
hub pull-request
hub checkout
hub create
hub push
hub browse
hub compare
Column hubコマンドをGitHub Enterpriseに対応する
8.2 Travis CI
概要
使ってみる
設定ファイルを書く
設定ファイルに問題がないかチェックする
GitHubと連携する
Travis CIの結果をREADME.mdに追加する
8.3 Coveralls
概要
セットアップ
サインアップする
対象リポジトリを追加する
設定ファイルを記述する
gemを追加する
レポートを確認する
8.4 Gemnasium
8.5 Code Climate
8.6 Jenkins
概要
インストール
botアカウントを作成
botアカウントの権限設定
個人アカウントの場合
Organizationアカウントの場合
設定を確認する
JenkinsへのSSH鍵の設定
Jenkinsをはじめて利用する場合
すでにJenkinsを利用している場合
GitHub pull request builder pluginのインストール
Git pluginの設定
Github pull requests builder
Github server api URL
Access Token
Admin list ジョブの作成と設定
GitHub project
ソースコード管理
ビルド・トリガ
ビルド
結果の通知
テストを実行中のステータス
Failed
All is well
commit status コメントによるコントロール
ジョブを実行する
「White list」に登録する
もう一度ジョブを実行する
コメントする文字を変更する
8.7 まとめ
Column CoderwallでGitHubのプロフィールを作成

第9章 GitHubを利用した開発フロー
9.1 チームでGitHubを利用するうえで意識すべきこと
すべてをシンプルに
プロジェクト管理ツールとGitHubの違い
プロジェクト管理ツールとGitHubが異なる理由
リポジトリをForkしない方法
9.2 GitHub Flowデプロイを中心にした開発スタイル
9.3 GitHub Flowの流れ
常にデプロイ。リリースという概念はない
新作業はmasterブランチから新ブランチを作成
作成した新ブランチにコミットする
定期的にpushする
Pull Requestを使う
必ずほかの開発者からレビューを受ける
マージ後はすぐにデプロイ
9.4 GitHub Flowを実践するための前提条件
デプロイ作業は完全自動化する
デプロイツールを利用する
Web上でデプロイを実行するツール
開発に取り入れる際の注意
テストを重要視する」
テストを自動化する
テストを書き、すべてのテストを通過する
テストコードをメンテナンスする
9.5 GitHub Flowを疑似体験
Fizzbuzzの仕様
新機能を追加
新しいブランチを作成
新たにcloneする場合
以前にcloneしたことがある場合
トピックブランチを作成する
新機能を実装
Pull Requestを作成
フィードバックを受ける インデントを修正
テストを追加
Pull Requestを育てる
Pull Requestがマージされる
9.6 GitHub Flowをチームで実践するために
Pull Requestのサイズを小さくする
試せる環境を用意する
Pull Requestへのフィードバックを多くしすぎない
Pull Requestをためないようにする
9.7 GitHub Flowのまとめ
9.8 Git Flow——リリース中心の開発スタイル
理解しやすい標準的な流れ
複雑すぎる場合がある
9.9 Git Flowを導入するための準備
git-flowのインストール
Macの場合
Linuxなどの場合
動作確認
リポジトリの初期設定
リポジトリを作成する
git flowの初期設定を行う
リモートリポジトリにもdevelopブランチを作成する
9.10 Git Flowを疑似体験
masterブランチとdevelopブランチの違い
masterブランチ
developブランチ featureブランチで行うこと
ブランチを作成する
ブランチでの作業を行う
Pull Requestの送信
コードレビューでコードの品質を向上 ローカルのdevelopブランチを更新
releaseブランチで行うこと
Column デフォルトブランチを設定
ブランチを作成する
ブランチでの作業を行う
リリースとマージを行う
バージョンのタグを確認する

大塚 弘記 (著)
出版社: 技術評論社 (2014/3/20)、出典:出版社HP