🦫

なぜエンジニアはGitHubを使うのか

に公開

前提

  • 本記事は社内の開発メンバーの認識合わせを行うものです
  • メンバーのスキルとして以下を想定しています
    • Git、およびGitHubの使用知識はある
    • が、とりあえず使ってみているみたいな感じがある
    • Git、およびGitHubを用いた商用案件(チーム開発形式)でコードがよく変更されたり頻繁な取り込みが必要になる
  • これに当てはまらない人はちょっと物足りなかったり逆に意味わからんってなったりするかもです

言い訳

  • 本記事は以下が原因(言い訳)で未完全です
    • 私自身がGitやGitHubのことを完全に知っているわけではない
    • そもそもGitは奥が深い
    • 本記事の位置付けが「教科書」ではなく「参考にしていただた方々のさらなる発展要素の一助」としたい
  • 足りないところや発展要素は開発・勉強を通して共有をもらいたいです!
  • 上記の位置付けのため、本記事の内容は学術的根拠に基づいたものではなく一部経験説による断言も含まれていることをご了承ください!

Git

Gitとは

wiki には↓

プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。

なんらかのファイルを保存しておくだけでなく、そのファイルがどのように変わったか、どこが変わったか、どのタイミングで変わったかを管理することができる優れもの!
発展してさっきのバージョンに戻りたい、この変更を無かったことにしたいもできるタイムリープ物語。すごい。

なぜGit使うのか

  • 変更を管理できる
  • 複数人の開発で役に立つ
  • みんなが使っているから

があります。

変更を管理できる

先述の通りではありますが、別の言い方をすると
これが

こうできる。

Gitを使えばファイルを量産しなくて済むしどれが最新のデータかも分かりやすいです。

複数人の開発で役に立つ

エンジニアという職業であればチームでの開発は免れませんが、
ただの変更管理だけではなく以下のことにも有用です

  • 変更されたファイルをリアルタイムで共有できる
  • 「何」「どこ」「どのような」「いつ」に加え「誰」の変更かが分かる
  • 複数人での同一ファイル変更で起こりうる競合を察知してくれる

また、「ブランチ」という概念もチーム内の並行開発においてめちゃめちゃ力を発揮してくれます。

みんなが使っているから

というとだいぶ乱暴な聞こえ方になってしまいますが細分化すると以下のに分けられます。

  • 信頼性がある
  • エンジニアの共通言語として使用される
  • 拡張機能が潤沢である

1. 信頼性がある

万物がその限りではありませんが、多くのエンジニアや企業が使用している = しっかり機能している
という保証になります。
コードは製品を動かすのに欠かせないものであり、その個人や会社の資産です。
その管理をするためにはある程度信頼が保たれているという部分で採用されることが多いのかなと。

2. エンジニアの共通言語として使用される

これは若干ニワトリたまご論争を引き起こすかもしれないですが、
自分の作ったものを説明する時にGit上で示すことができるので会話時の手段の1つになります。
合わせて「Gitを使える」というスキル自体が測りやすい指標の1つとなります。

3. 拡張機能が潤沢である

みんなが使っていればみんながより使いやすくしてくれるものです。
なので現時点でみんなが使っているGitもより使いやすい拡張機能的なものがたくさんあります。
後述GitHubもそうですしVSCodeをはじめとするコードエディターにもGitを使いやすくする機能があります。
他にもSourcetreeなどもGit操作をやりやすくしてくれるものになります。

こんな感じで便利な機能をより使いやすくするものたちがたくさんあるのでGitを用いたバージョン管理が使用されることが多いです。

GitHub

GitHubとは

GitはGitHubの略ではありません。別物です。
前段階で少し書いていますがGitHubはGitを使いやすくするための1つです。
公式サイト には

GitHubは、ユーザのみなさんからヒントを得て作成された開発プラットフォームです。オープンソースプロジェクトやビジネスユースまで、GitHub上にソースコードをホスティングすることで数百万人もの他の開発者と一緒にコードのレビューを行ったり、プロジェクトの管理をしながら、ソフトウェアの開発を行うことができます。

みたいに書いてあり、ざっくり言うと「Git機能をWebサイトで見れるようにしたもの」です。

なぜGitHub使うのか

  • Webサイトが分かりやすい
  • 開発で役に立つ機能が付随されている

Webサイトが分かりやすい

正直、これに尽きます

これが

こうできる。

見慣れている人ならそんなに印象変わらないかもですが、ターミナル画面怖い勢の皆さんにとってはWebサイトの方が安心できるかもですね。

さらに、先ほど「エンジニアの共通言語である」という話をしましたがリポジトリのURLを共有するということはよくあると思います。
これはGitHubのお陰でできていることなので共通言語が共通言語として活躍している所以と言っても過言ではないです。

開発で役に立つ機能が付随されている

先ほどブランチという話をしましたが、ブランチをみんなのブランチ(masterとかmainとかstagingとかdevelopとか)にマージする場合に使う「プルリクエスト」などはGitHubで提供されている機能です。

マージする前にレビューを見れる環境を用意することで品質担保したりサービス障害の可能性を防いだりできます。

また、そのプルリクエストに準じて「このプルリクエストが〇〇ブランチにマージされたら××をする」みたいなこともできるので検証反映などが手順少なくできるようになっています。

Discussion