gitの新人研修でtigを使うことをおすすめする理由

# はじめに

４月まで残すところ２ヶ月と迫り、新卒などを対象とした新人研修の準備が始まっている頃かと思います。

新人研修の中でgitを教える際に、筆者は[tig](http://jonas.nitro.dk/tig/)の活用をおすすめしています。
講師の立場からすれば、短い時間に高効率でgitの本質を伝えることができます。
研修生の立場では、tigを利用して簡単で直感的にgitリポジトリを閲覧・操作することができます。

tigを使うとどうしてそうなるのか、いくつかの理由を以下に紹介します。

# セットアップが簡単ですぐ使い始められる

tigは依存関係が少なくポータブルな実装でありインストールが簡単です。
会社から提供する開発サーバーであっても、社員ひとりひとりが所有するPCやMacであっても、
yumやbrewなどのパッケージマネージャから少ない手順でインストールすることができます。
一例: [CentOS6.4にgit tigインストールと使い方 - Qiita [キータ]](http://qiita.com/s_tomoyuki/items/9557970f44847d5bd854)
（パッケージがない環境であっても、make && make installも簡単です）
準備に手間取らないツールは、研修講師としても研修生としても都合がよいものだと思います。

# 起動も操作も簡単

起動は `tig` コマンドだけで済みます。（引数も渡せますが最初は知らなくても問題ないです）
UNIXコマンドの多くはコマンドライン引数の確認・習熟が使いこなしの鍵です。
git関連コマンドも例外ではありませんが、初学コストが高いことは否めません。
研修講師はgitコマンドの紹介と引数の意味の説明に時間を割く必要があります。
研修生は長いコマンドを間違いなく打ち込む作業を行う必要があります。

研修生が学ぶべき本質はコマンドの記法ではなく、そのコマンドが何をしているかです。
tigを起動すればgitリポジトリを操作していることが自明になります。

その操作についても、基本の操作体系はviに近いところがありますが、複雑なキーストロークは無いため癖の少ないシンプルな構成です。限られた新人研修の時間でも操作方法の学習に割く時間は少なくできるでしょう。
しかも、不慣れなgitコマンドの操作に対して、tigによる操作はキー1つの押下で1つのアクションが実行されるため、高速です。gitリポジトリを短時間で効率よくブラウズしていくことでコードリーディング効率の助けにもなるでしょう。

参考：

[git - やけに丁寧なtigの設定ガイド（キーバインド概論編） - Qiita [キータ]](http://qiita.com/yoshikazusawa/items/3eaa6db78fa348d38bfe)

# gitの概念が容易に把握できるビューの構成

tigは以下のビューを切り替えてgitリポジトリを操作します。

* コミットログを表示・操作するmainビュー
* ブランチを表示・操作するbranchビュー
* コミット間の差分を表示できるdiffビュー
* ファイルの内容を確認できるblobビュー
* 変更のステージ・アンステージを操作できるstatusビュー

これはgitの中心の概念を学ぶ際に直感的です。ブランチを選択し差分をコミットし修正の履歴が生まれるという基本を、branchビューでチェックアウト → statusビューで差分のステージ＆コミット → mainビューでコミットログの確認 と流れを追って説明できます。

参考：

* [git - tigの画面をアニメGIFで紹介してみる（ブラウズ編） - Qiita [キータ]](http://qiita.com/yoshikazusawa/items/93653a6aa2013b3c3396)
* [git - tigの画面をアニメGIFで紹介してみる（ファイル編集・差分の削除・revert編） - Qiita [キータ]](http://qiita.com/yoshikazusawa/items/d0df1327dcc9797bb91d)

# TUIツールなためリモート接続環境でもローカルでも同じように使えるポータビリティ

社内の開発環境はそれぞれ異なるかと思います。
Webサイト開発事業であれば開発サーバーを立ててログインして利用することが多いかもしれませんし、
iOS/Androidのネイティブアプリケーション開発事業であれば、たいていは手元の開発機で完結するかもしれません。
あるいは、それらの両方を行う複合的で多様な開発環境かもしれません。

tigはTUI（ターミナル上のテキストで表現されたGUI）ツールであるため、リモートでもローカルでもターミナル上で同じように動きます。
そのため、もし複数の事業を行っており、部署ごとにリモート環境だったりローカル環境だったりする会社であっても、tigを使えなくなることは無いかと思いますので、tigの使い方を覚えて無駄になりづらいです。

# スタンドアロンであるため宗教戦争に巻き込まれない

エディタやIDEのプラグインを通じてgitを操作する開発者は多いと思います。
筆者も普段の開発環境ではエディタにVimを使い、gitのプラグインである fugitive.vim を愛用しています。
Emacsユーザーの間ではmagitが好評を博していると聞きます。

一方で、エディタやIDEに何を利用するかは個人の趣向が反映され、多種多様な広がりがあります。
そのため全社的に同じ開発ツールで揃っていることは稀かと思います。
エディタやIDEに結合したgitプラグインは、導入方法も、使い方も、備えている機能も千差万別なので、
使いこなせるようになれば便利な半面、新人研修という局面で紹介するには不向きです。

tigはエディタやIDE等とは独立したスタンドアロンのツールです。
他のツールの好みを邪魔することなく、難なくだれでも利用できるツールとして扱えます。

※ リモート環境を考慮する必要がなければGUIのSourceTreeを採用するのも良い選択だと筆者は思います

# 必要十分なデフォルト設定に加えて高いカスタマイズ性も備える底の深さ

tigは敷居が低いだけでなく、高度なカスタマイズを行い長く使える自由度も備えています。
デフォルト設定の基本操作を獲得した後は独自のコマンドをキーにバインドするなどして、
さらに使いやすいツールに仕上げていくことが簡単にできます。
gitの学習とは直接は結びつかないですが、 いわゆるdotfiles系の学習の題材にすることもできると思います。

参考：

* [やけに丁寧なtigの設定ガイド（表示制御編） - Qiita [キータ]](http://qiita.com/yoshikazusawa/items/d99e8b5d6f6a45aa6e2e)
* [tigカスタムキーバインド紹介（mainビューとbranchビュー編） - Qiita [キータ]](http://qiita.com/yoshikazusawa/items/c3eb0e299e6d96850c75)
* [tigとGitHubを連携させる幾つかのカスタムキーバインド - Qiita [キータ]](http://qiita.com/yoshikazusawa/items/a8812e2dc736f7f967bb)

# まとめ

以上、gitの新人研修で筆者がtigをおすすめする理由を紹介してみました。

gitの大事な概念を伝えることに集中させてくれる有用なツールとなると思いますので、
新人研修担当者の方や講師の方はぜひ検討されてみてはいかがでしょうか。


あわせて読みたい: [git - 日本語で読める！tigに関する有用な記事リンク集 - Qiita [キータ]](http://qiita.com/yoshikazusawa/items/6af83ab1cf4ad51cce2a)