プログラマは、プログラムの変更を管理するために Git というツールを使っています。
GitHub は、Git で管理されたコードをインターネット上にアップロードするためのサービスです。
GitHub を使うと、他の人のコードに対して変更依頼を送ることができます。この仕組みによって、プログラマ同士が協力して開発を進めることが可能になり、OSS(オープンソースソフトウェア)というエコシステムが成立しています。
Git と GitHub は、プログラマが誰かといっしょに開発するときの基本的なツール/サービスです。GitHub の使い方を覚えることは、プログラミングの世界において、挨拶の仕方を覚えるようなものだと言えるでしょう。
大抵のプログラミング言語には、外部ライブラリを管理する仕組みがあります(例: npm, pip, cargo)。これらのライブラリは、多くの場合 GitHub で更新管理されています。
Gitとは
Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するためのシステムです。バージョン管理システムと呼ばれるものの一つで、以下のことができます。
- 過去のバージョンに戻る
- 複数人での共同開発
- 変更履歴の確認
なぜGitが必要なのか?
もしGitのようなバージョン管理システムがなかったら、どのようにファイルを管理するでしょうか?
- ファイル名に日付を入れる (e.g.,
main_20231225.py,main_20240101.py) - ファイルをコピーしてバックアップする
- 変更内容を手動で記録する
これらの方法では、以下のような問題が発生します。
- ファイルが増えすぎて管理が大変になる
- 過去のバージョンに戻すのが難しい
- 複数人での共同作業が困難
Gitを使うことで、これらの問題を解決し、効率的に開発を進めることができます。
バージョン管理とは
バージョン管理とは、ファイルの変更履歴を記録し、管理する仕組みのことです。これにより、過去のバージョンに戻ったり、変更履歴を比較したり、複数人での共同作業を円滑に進めることができます。
Gitの仕組み
Gitは、以下の3つの領域で構成されています。
- ワーキングディレクトリ: 実際にファイルを編集する場所
- ステージングエリア: 次のコミットに含める変更を一時的に保存する場所
- リポジトリ: コミットされた変更履歴が保存される場所
Gitの基本的な操作
Gitを使う上で、覚えておきたい基本的な操作は以下の通りです。
- 初期化: Gitリポジトリを作成する。
- ステージング: 変更をコミットの対象にする。
- コミット: 変更履歴をリポジトリに記録する。
- プッシュ: ローカルの変更をリモートリポジトリに反映する。
- プル: リモートリポジトリの変更をローカルに反映する。
- ブランチ: 複数の変更を並行して行う。
- マージ: 複数のブランチを統合する。
リモートリポジトリ
GitHub によって、Git プロジェクトはネットワーク上に分散されています。誰かの手元に、そのコードのコピーが存在しており、お互いにその状態を引っ張ったり、変更依頼を出し足します。
リモートリポジトリとは、ネットワーク上にあるリポジトリのことです。GitHubなどのサービスを利用することで、リモートリポジトリを簡単に作成・管理することができます。
コンフリクトとマージの難しさ
Gitを使う上で、コンフリクト(衝突)とマージは避けて通れない道です。複数人が同じファイルを変更した場合、Gitは自動的にマージできない場合があります。その場合、手動でコンフリクトを解消する必要があります。
コンフリクトの解消は、最初は難しく感じるかもしれませんが、慣れてくると効率的に行えるようになります。
GitHubとは
GitHubは、GitのリポジトリをホスティングするWebサービスです。世界中の開発者が利用しており、共同開発やオープンソースプロジェクトでよく使われています。
GitHubでできること
GitHubを使うと、以下のことができます。
- Gitリポジトリのホスティング
- 共同開発
- Pull Requestによるコードレビュー
- Issueによるバグ報告や機能提案
- プロジェクトの公開
Pull Requestとは
Pull Request(プルリクエスト、略してPR)とは、コードの変更を提案するための仕組みです。GitHub上で、あるブランチ(通常は自分の作業ブランチ)から別のブランチ(通常はメインの開発ブランチ)への変更を提案し、レビューや議論を行うことができます。
Pull Requestの背景
複数人で開発を行う場合、それぞれが自分の担当する機能や修正を独立して行う必要があります。Pull Requestは、それぞれの変更をメインのコードベースに統合する前に、チームでレビューし、品質を確保するための重要なプロセスです。
Pull Requestの目的
- コードレビュー: 他の開発者によるコードのチェック
- 議論と改善: 変更内容に関する意見交換
- 品質保証: バグの早期発見と修正
Pull Requestの流れ
- 自分のローカル環境で新しいブランチを作成し、変更を加えます。
- 変更をGitHubのリモートリポジトリにプッシュします。
- GitHub上で、自分のブランチからメインブランチ(通常は
mainやdevelop)へのPull Requestを作成します。 - 他の開発者があなたのコードをレビューし、コメントや修正依頼を送ります。
- レビューコメントを元にコードを修正し、再度プッシュします。
- レビューが完了したら、Pull Requestをマージ(統合)します。
Pull Requestのメリット
- コードレビューによる品質向上
- 変更履歴の明確化
- チーム内での知識共有
- バグの早期発見
Issueとは
Issue(イシュー)とは、プロジェクトに関する問題や提案を共有・議論するための機能です。バグの報告、新機能の提案、タスクの管理など、様々な目的に利用できます。
Issueの活用例
- バグの報告: 「〇〇の機能でエラーが発生する」
- 新機能の提案: 「〇〇の機能を追加してほしい」
- タスクの割り当て: 「〇〇の機能を実装する」
- ドキュメントの改善: 「〇〇のドキュメントを修正する」
Issueのメリット
- 問題の可視化: プロジェクトの問題点を明確にする
- 議論の記録: 解決策や決定事項を記録する
- タスク管理の効率化: 誰が何をするかを明確にする
- 知識の共有: プロジェクトに関する情報を共有する
Issueの作成方法
GitHub上で、リポジトリの「Issues」タブをクリックし、「New issue」ボタンをクリックします。タイトルと説明を記述し、必要に応じてラベルや担当者を設定します。
GitHub Flow
GitHub Flowは、Pull RequestとIssueを活用した、シンプルで効果的な開発ワークフローです。
GitHub Flowの基本
- 新しい機能や修正のために、新しいブランチを作成します。
- ブランチで変更を加え、コミットします。
- リモートリポジトリにブランチをプッシュします。
- Pull Requestを作成します。
- コードレビューを受け、必要に応じて修正します。
- Pull Requestをマージします。
- メインブランチをデプロイします。
GitHub Flowは、小規模なプロジェクトから大規模なプロジェクトまで、様々な規模の開発に対応できます。
まとめ
GitとGitHubを効果的に活用することで、チームでのコラボレーションを円滑に進め、より高品質なソフトウェアを開発できます。Pull RequestとIssueは、そのための強力な武器となります。
GitとGitHubは、現代のソフトウェア開発において欠かせないツールです。これらのツールを使いこなすことで、効率的な開発や品質の高いコードの維持、そして世界中の開発者とのコラボレーションが可能になります。
- Gitはバージョン管理システム。変更履歴を記録して、過去の状態に戻ったり、複数人で共同開発したりできる。
- GitHubはGitのリポジトリをホスティングするWebサービス。共同開発やオープンソースプロジェクトでよく使われる。
- Pull RequestやIssueを使って、コードのレビューや議論ができる。
WIP
ライブラリとは
ライブラリとは、再利用可能なコードの集まりです。他の人が作った便利な機能を、自分のプログラムで簡単に利用することができます。
なぜライブラリを使うのか?
もしライブラリがなかったら、自分で全ての機能を実装する必要があります。例えば、Webサイトを作る場合、HTMLやCSSの表示、ネットワーク通信、データの保存など、様々な機能を自分で実装する必要があります。
ライブラリを使うことで、これらの機能を簡単に利用でき、開発効率を大幅に向上させることができます。
npmとは
npm (Node Package Manager) は、JavaScriptのライブラリを管理するためのツールです。npmを使うことで、簡単にライブラリをインストールしたり、アップデートしたり、削除したりすることができます。
npmの使い方
npmを使うには、Node.jsをインストールする必要があります。Node.jsをインストールすると、npmも一緒にインストールされます。
ライブラリのインストール
ライブラリをインストールするには、npm installコマンドを使います。例えば、lodashという便利なライブラリをインストールするには、以下のコマンドを実行します。
npm install lodash
このコマンドを実行すると、node_modulesというディレクトリにlodashがインストールされます。
ライブラリの利用
インストールしたライブラリは、JavaScriptのコードで簡単に利用できます。例えば、lodashのchunkという関数を使うには、以下のように記述します。
const _ = require('lodash');
const array = [1, 2, 3, 4, 5];
const chunkedArray = _.chunk(array, 2);
console.log(chunkedArray); // => [[1, 2], [3, 4], [5]]
まとめ
ライブラリを使うことで、開発効率を大幅に向上させることができます。npmは、JavaScriptのライブラリを管理するための便利なツールです。