コンフリクトを自分で起こす? 知識を増やせる4つの方法を紹介!
ここからはどのようにGitを学んでいけば良いのか、具体的な学習法を紹介します。今回解説する学び方は、他のスキルを学ぶ際にも参考になるのではないかと思います。
コマンドを知る
「そもそもコマンドを知らない......」という方向けです。まずは「git 便利 コマンド」などで検索してみましょう。多くの人が、ブログなどで便利なコマンドをまとめてくれています。たくさんのコマンドが出てきて混乱するという場合は、いくつかの記事を読んで、共通して登場するコマンドを探してみてください。それらコマンドは使用頻度が高いものだと思うので、優先的に学習を始めると良いでしょう。
また、GitHubではGitのチートシートを公開しています。チートシートにはよく使うコマンドやオプションがコンパクトにまとまって記載されていますので、このシートを眺めて知らないコマンドがあれば、それについて調べてみるのもおすすめです。
1つ新しいコマンドを知ると、そのコマンドを実行する前後に関連するコマンドが出てくることが多いです。関連する知識を芋づる式に増やしていくことで、理解が深まりやすく、定着もしやすいです。何から始めたらいいか分からないという方は、まず新しいコマンドを1つ知るところから始めてみましょう。
説明できるようになる
理解を深めるために有効な方法の1つは「コマンドの説明をしてみる」ことです。たとえばadd
について、「commitの前に実行しなくてはいけないもの」以上の説明ができますか? add
をきちんと説明しようとすると「インデックス」という言葉が出てくるので、この意味が分からなければ「インデックス」について合わせて調べることになります。このように、1つのコマンドを深く掘り下げることで理解がどんどん深まっていきます。
また、「技術記事を書く」ことで、「説明する」ことと同様の効果を得られると考えています。人に説明する場合、相手とタイミングを合わせる必要がありますが、技術記事は自分のペースで書くことができます。個人的には書く(タイピングする)ことが知識の定着にもつながっていると感じます。
コンフリクトを自分で起こしてみる
コンフリクトを自分で意図的に起こしてみるのも、勉強になります。コンフリクトを起こすには、ブランチやコミット、マージの知識を土台に、コンフリクト自体の仕組みも理解する必要があり、複合的な知識が必要です。ソースコードをイチから作成することにより、Gitリポジトリの作成作業も行えます。意図的にコンフリクトを起こせるようになると、他のメンバーが書いたコードと実際にコンフリクトが生じた時にも慌てずに対応できるはずです。
Gitを使い始めて最初にぶつかる大きな壁は、コンフリクトかもしれません。本連載を読んでいる方の中には、コンフリクトが起こると「うっ」となる、あるいは必要以上にコンフリクトを避けるという人もいるのではないでしょうか。しかし、複数人で開発していればコンフリクトが起こるのは当たり前ですし、この仕組みがあるからこそ並行開発が可能になります。コンフリクトは決して悪い面だけではありません。苦手意識がある方も、少しずつ慣れていきましょう。
大きなコンフリクトを減らすには?
コンフリクトは悪い面だけではありませんが、コンフリクトしている箇所が多く複雑な場合は、解消に時間がかかり、解消時にミスをしてバグを生む可能性もあります。そのため、以下のようなやり方を取り入れることで大きなコンフリクトの懸念を解消することも重要です。
- フィーチャートグルなどを取り入れ、こまめに中央ブランチにマージする:ビッグバンマージを避けて、コンフリクトの量を減らすことができる。
- コンフリクト発生時のペア作業:コンフリクトしているコードを開発したメンバーとペアで解消することで、解消ミスを抑制できる。
- 作業の調整やペアプロ、モブプロの導入:並行作業を減らし、そもそもコンフリクトが発生する機会を減少させる。
ここでは詳しい説明は割愛しているので、興味のある人は自分でも調べてみてください。リリース頻度など、開発の他の要素も総合的に考えて、チームやシステムにあった方法を取り入れていただければと思います。
10分だけやってみる「10分ルール」
Gitのコマンドは「使ってみる」ことが大切です。何度も使い慣れることで、普段の開発の効率が上がると思います。
新しく知ったコマンドを使う場合、最初は慣れていないために時間がかかります。つい知っているコマンドで済ましてしまい、新しいコマンドを忘れてしまうこともあります。そんなとき筆者が実践するのは、新しいコマンドに10分だけ挑戦する「10分ルール」です。「あのコマンドが使えそうだな」と思いついたら、10分だけ試してみる時間を取って新しいやり方にチャレンジします。もしミスをした時に戻すのが大変なコマンドなら、別ブランチを切ったり先にリモートにプッシュしたりして、元の状況に戻れるよう準備をしてからチャレンジします。10分でうまくいかなければ、潔く諦めていつものやり方に戻ります。
試行回数を増やすことは、慣れるためにとても重要です。10分でなくても、5分や15分と自分でルールを決めて、試行回数を増やしてみてください。
想定外のことが起こった時こそ、学びどき
Gitに限らず想定外のことが起こったとき、パニックになったり手が止まったりしてしまうことは誰にでもあります。しかし、そんな時こそ学びのチャンスです。特にGitでは、複雑な作業をローカル環境で行うことが多いと思います。もちろんサーバー上でもGitを利用することはありますが、筆者の経験ではほとんどの場合、手順の決まった簡単な操作のみを行います。Gitは時間の経過とともに自動的に状況が変化するツールではないので、問題が起こったときは状況を確認し、調べながらひとつひとつ対処できるはずです。
想定外なことが起こった時こそ、意識的に時間をとって対応策を理解しながら作業することが大事です。多くの場合、調べれば対処法がコマンドレベルまで見つかるでしょう。しかし、見つかったコマンドをとにかく打つところから、もう一歩踏み出してもらいたいです。
例えば、「reset
というコマンドを使えばいいらしい」とコピペして実行するのではなく、「reset
はどういうコマンドで、このオプションを付けるとどういう効果があるのだろう。今の自分の環境で実行するとどうなるのだろう」と少しでも時間をとって、調べてから使いましょう。問題を解消できる頃には、なぜこのような想定外のことが起きたのか、説明できるようになっているはずです。これにより、今後同じ問題を防ぐことができ、またもし起きても落ち着いて対応ができるはずです。
まとめ
今回は以下について説明させていただきました。
- Gitを学ぶメリット
- Gitを学ぶオススメの方法
本連載は今回で最終回となります。ここまで読んでいただきありがとうございました。みなさんがGit中級者への第2歩、第3歩目を踏み出していけるよう、応援しています。