[モダンアプリ勉強会]今更聞けないGit/GitHub入門
by
つくぼし
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
モダンアプリ勉強会 #1 今更聞けないGit/GitHub⼊⾨ 2026/5/11 つくぼし
Slide 2
Slide 2 text
2 ⾃⼰紹介 ● 部署 ○ クラウド事業本部 ○ モダンアプリコンサルチーム ● ニックネーム ○ つくぼし ● 推していたAWSサービス ○ AWS App Runner ● SNS/ブログ ○ X(@tsukuboshi0755) ○ DevelopersIO(つくぼし) 職種歴: 1. インフラエンジニア:3年 2. クラウドエンジニア:3.5年 3. 開発エンジニア:2年
Slide 3
Slide 3 text
はじめに
Slide 4
Slide 4 text
4 みなさんAI駆動開発してますよね?
Slide 5
Slide 5 text
5 バイブコーディングでコードがどんどん変わる 頻繁に変更するとGit/GitHubが⽋かせなくなる
Slide 6
Slide 6 text
6 でも何となくGit/GitHubを使っていませんか?
Slide 7
Slide 7 text
7 本スライドで最低限のGit/GitHubの使い⽅を 知って頂けると幸いです
Slide 8
Slide 8 text
本スライドの対象者 ● ターミナルの基本操作は分かる ● Gitを使ったことがない、またはほぼ初めて ● GitHubをなんとなく使っているが、仕組みがよくわからない 8
Slide 9
Slide 9 text
⽬次(1/2) ● バージョン管理ってなに? ○ バージョン管理とは ○ Gitとは ○ GitHubとは ○ ブランチとは ○ プルリクエストとは 9 ● Gitの基本操作を理解しよう ○ Git全体の流れ ○ リポジトリを⼿元にコピーする ○ リモートのファイル変更を取り 込む ○ 作業ブランチを作る ○ 記録するファイルを選ぶ ○ 変更を記録する ○ 変更をリモートに反映する
Slide 10
Slide 10 text
⽬次(2/2) ● GitHubでチーム開発しよう ○ GitHub全体の流れ ○ タスクを管理する ○ コードの取り込みを依頼する ○ コードの変更をチェックする ○ コードを本番に取り込む 10 ● トラブルを防ぐ技術を知ろう ○ 今の変更状態を確認する ○ 変更を取り消す‧やり直す ○ 記録しないファイルを指定する ○ コミット前に⾃動チェックを⾛らせる ○ 変更の衝突を解消する ○ ブランチの使い分けを知る ● 良い開発習慣を⾝につけよう ○ 認証情報/秘匿情報はコミットするな ○ コミットメッセージに種類をつける ○ こまめにプルとプッシュを実⾏する ○ プルリクエストは⼩さく作る
Slide 11
Slide 11 text
バージョン管理ってなに?
Slide 12
Slide 12 text
バージョン管理とは 12 バージョン管理:ファイルの変更履歴を記録‧管理する仕組み 変更履歴の追跡 「いつ‧誰が‧何を変更したか」という情 報を詳細に記録し、後から追いかけること が可能。 復元と⽐較 過去の任意の時点の状態にファイルを戻し たり、現在の変更点との差異を視覚的に⽐ 較可能。
Slide 13
Slide 13 text
バージョン管理システムがない世界 13
Slide 14
Slide 14 text
バージョン管理システムがある世界 14
Slide 15
Slide 15 text
Gitとは Git:最も広く使われている分散型バージョン管理システム ● プロジェクトをリポジトリ(ファイルと変更履歴をまとめた保管庫)として管理 ● 変更履歴を コミット(ある時点のファイルの変更記録)として1つずつ記録 15 Gitの主な特徴 分散型 ローカルに履歴のコピーを持つため、オフラインでも作業可能 ⾼速 差分ではなくスナップショット⽅式で履歴を管理 軽量なブランチ ブランチを気軽に作成‧切り替え‧削除できる データの完全性 すべての変更をハッシュ値で管理し、改竄を検知可能
Slide 16
Slide 16 text
⽬次(1/2) ● バージョン管理ってなに? ○ バージョン管理とは ○ Gitとは ○ GitHubとは ○ ブランチとは ○ プルリクエストとは 16 ● Gitの基本操作を理解しよう ○ Git全体の流れ ○ リポジトリを⼿元にコピーする ○ リモートのファイル変更を取り 込む ○ 作業ブランチを作る ○ 記録するファイルを選ぶ ○ 変更を記録する ○ 変更をリモートに反映する
Slide 17
Slide 17 text
GitHubとは 17 GitHub:Gitリポジトリのホスティングサービス ● リモートリポジトリの置き場所として最も⼈気 ● コードの共有‧レビュー‧プロジェクト管理機能を提供 GitとGitHubの関係(ローカルとリモートの役割分担) Git = ローカルリポジトリ ⾃分のPCで動くバージョン管理ツール GitHub = リモートリポジトリ Web上でリポジトリをホストするサービス
Slide 18
Slide 18 text
Git/GitHubによる開発 18 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ
Slide 19
Slide 19 text
19 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git commit -m “ファイルA追加” Git/GitHubによる開発 commit: ファイルA追加
Slide 20
Slide 20 text
20 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git push Git/GitHubによる開発 commit: ファイルA追加
Slide 21
Slide 21 text
21 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git pull Git/GitHubによる開発 commit: ファイルA追加
Slide 22
Slide 22 text
22 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git commit -m “ファイルA更新” Git/GitHubによる開発 commit: ファイルA更新
Slide 23
Slide 23 text
23 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git push Git/GitHubによる開発 commit: ファイルA更新
Slide 24
Slide 24 text
ブランチとは ブランチ(branch):本流(mainブランチ)から分岐させた作業⽤の枝 ● 機能追加やバグ修正を本流と切り離して進められる ● 作業が終わったら本流に統合(マージ)する 24 ブランチを使うメリット 安全な開発 本流に影響を与えず、独⽴した環境で試 ⾏錯誤が可能です 並⾏作業の推進 複数の開発者が、それぞれのブランチで 同時に別機能を開発できます 失敗のリセット 不要になったブランチは破棄するだけ で、簡単に元の状態に戻せます
Slide 25
Slide 25 text
25 ブランチが無い世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ
Slide 26
Slide 26 text
26 ブランチが無い世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git commit git commit
Slide 27
Slide 27 text
27 ブランチが無い世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git push
Slide 28
Slide 28 text
28 ブランチが無い世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git push
Slide 29
Slide 29 text
29 ブランチが無い世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git push 最新コミットと矛盾するため pushできません
Slide 30
Slide 30 text
30 ブランチがある世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git branch feat/A git branch feat/B
Slide 31
Slide 31 text
31 ブランチがある世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git commit git commit
Slide 32
Slide 32 text
32 ブランチがある世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git merge
Slide 33
Slide 33 text
33 ブランチがある世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git push
Slide 34
Slide 34 text
34 ブランチがある世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git pull
Slide 35
Slide 35 text
35 ブランチがある世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git merge
Slide 36
Slide 36 text
36 ブランチがある世界 ローカルリポジトリ ローカルリポジトリ リモートリポジトリ git push
Slide 37
Slide 37 text
プルリクエストとは 37 プルリクエスト(PR):変更を取り込むための依頼 ● 「レビューして問題なければマージして」という申請 ● GitHub上で利⽤できる機能(Git単体の機能ではない) プルリクエストを使うメリット 品質の担保 マージ前にコードレビューを挟める 履歴の蓄積 変更内容や議論がGitHub上に残り、後か ら追える ⾃動化との連携 CIによる⾃動テストを経てからマージで きる
Slide 38
Slide 38 text
38 プルリクエストがない世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ コードレビューめんどいな 直接変更をプッシュしたろ!
Slide 39
Slide 39 text
39 プルリクエストがない世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ コードレビューめんどいな 直接変更をプッシュしたろ! 許可
Slide 40
Slide 40 text
40 プルリクエストがない世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ コードレビューめんどいな 直接変更をプッシュしたろ! 許可 勝手に変更が追加されてる! 書き方がコード規約に則ってない! めっちゃバグ出る!
Slide 41
Slide 41 text
41 プルリクエストがある世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ コードレビューめんどいな 直接変更をプッシュしたろ!
Slide 42
Slide 42 text
42 プルリクエストがある世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ コードレビューめんどいな 直接変更をプッシュしたろ! 拒否
Slide 43
Slide 43 text
43 プルリクエストがある世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ しゃーない、 プルリクエスト作成するか それはOK
Slide 44
Slide 44 text
44 プルリクエストがある世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ しゃーない、 プルリクエスト作成するか それはOK レビューしまーす
Slide 45
Slide 45 text
45 プルリクエストがある世界 リモートリポジトリ ローカルリポジトリ ローカルリポジトリ はわわ インデントがずれています。変 数名が命名規則に則っていま せん。余分な空白行が追加さ れています。コミット粒度が粗 すぎます。関数の挙動が変 わっていますがこれは意図した ものでしょうか?このクラスの 設計意図は何でしょうか?テス トに失敗しています。
Slide 46
Slide 46 text
Gitの基本操作を理解しよう
Slide 47
Slide 47 text
Git全体の流れ 47 基本フロー:クローン → プル → ブランチ → ステージング → コミット → プッシュ 1. クローン リモートリポジトリをローカルに複製する (最初の1回だけ) 2. プル リモートの最新変更をローカルに取り込む (作業開始前に毎回) 3. ブランチ 作業⽤のブランチを切って切り替える 4. ステージング コミットに含めたい変更を選択する 5. コミット 選択した変更をローカルリポジトリに記録 する 6. プッシュ ローカルのコミットをリモートに反映する ローカル(⾃分のPC)とリモート(GitHub)を⾏き来しながら作業を進めるのが基本
Slide 48
Slide 48 text
リポジトリを⼿元にコピーする(クローン) 48 クローン (clone) リモートリポジトリをローカルにコピーするこ と 実⾏のタイミング 最初に1回だけ実⾏する必要があるコマンドです。プ ロジェクトへの参加時に最初に⾏います。 git clone
Slide 49
Slide 49 text
リモートの変更を取り込む(プル) プル (pull) リモートリポジトリの最新変更をローカルに取 り込むこと 実⾏のタイミング 他のメンバーの変更を取り込むために、作業開始前な どに定期的に実⾏します。 49 git pull
Slide 50
Slide 50 text
作業ブランチを作って切り替える(スイッチ) 50 スイッチ (switch) 作業するブランチを切り替えること 実⾏のタイミング -c オプションで新規作成と切り替えを同時に実⾏でき ます。作業開始前にまず実⾏しましょう。 git switch -c
Slide 51
Slide 51 text
記録するファイルを選ぶ(ステージング) ステージング (staging) コミットに含める変更を選択すること 実⾏のタイミング コミット前に毎回実⾏します。ファイル変更の記録を 残す起点となるのでこまめに実⾏しましょう。 51 git add
Slide 52
Slide 52 text
変更を記録する(コミット) 52 コミット (commit) ステージングした変更をローカルリポジトリに 記録すること 実⾏のタイミング 作業の区切りがついた時や、機能の実装が終わったタ イミングで⾏います。 git commit -m “message”
Slide 53
Slide 53 text
変更をリモートに反映する(プッシュ) 53 プッシュ (push) ローカルのコミットをリモートリポジトリに反 映すること 実⾏のタイミング ローカルでの作業(コミット)が完了し、その成果を 共有リポジトリに公開したい時に実⾏します。 git push origin
Slide 54
Slide 54 text
GitHubでチーム開発しよう
Slide 55
Slide 55 text
GitHub全体の流れ 55 基本フロー:イシュー → プルリクエスト → レビュー → マージ → イシューのクローズ 1. イシュー タスクやバグをチケットとして起票し、誰が何 をやるかを明確にする 2. プルリクエスト 作業ブランチの変更を本流に取り込むよう依頼 する 3. レビュー 他のメンバーがコードの品質‧設計‧バグの有 無をチェックする 4. マージ レビューで承認された変更をmainブランチに 統合する 5. イシューのクローズ 対応が完了したイシューを閉じて状態を整理す る ローカルでのGit操作 → GitHub上での議論‧承認、という流れでチーム開発を回す
Slide 56
Slide 56 text
タスクを管理する(イシュー) 56 イシュー (Issue):タスク‧バグ‧要望などを管理するチケット機能 「何をやるべきか」をチームで共有‧追跡するために使う イシューに書く内容の例 タイトル やることの概要 説明 背景‧再現⼿順‧期待する動作など ラベル bug, enhancement, documentation などで分類 担当者 (Assignee) 誰が対応するか
Slide 57
Slide 57 text
GitHub Issueの例 57
Slide 58
Slide 58 text
GitHub Issueの例 58
Slide 59
Slide 59 text
GitHub Issueの例 59
Slide 60
Slide 60 text
コードの取り込みを依頼する(プルリクエスト) 60 プルリクエスト (Pull Request):ブランチの変更をmainブランチに取り込む依頼 「このコードをレビューして、問題なければマージしてください」という申請 PRに書く内容の例 タイトル 変更の概要 説明 変更内容‧関連するイシュー番号 #123 で⾃動リンク レビュアー レビューを依頼する相⼿を指定 適切な情報を記載することで、スムーズなレビューと品質の維持が可能になります
Slide 61
Slide 61 text
GitHub Pull Requestsの例 61
Slide 62
Slide 62 text
GitHub Pull Requestsの例 62
Slide 63
Slide 63 text
GitHub Pull Requestsの例 63
Slide 64
Slide 64 text
コードの変更をチェックする(レビュー) 64 レビュー (Review):PRの変更内容を他のメンバーが確認すること コードの品質‧バグの有無‧設計⽅針をチェックする レビューの種類 Comment 質問やコメントのみ (承認でも却下でもない) Approve 問題なし → マージOK Request Changes 修正が必要 → 修正後に再レビュー 適切なレビューサイクルを回すことで、チーム全体のコード品質を向上させることができます
Slide 65
Slide 65 text
レビューの例 65
Slide 66
Slide 66 text
レビューの例 66
Slide 67
Slide 67 text
レビューの例 67
Slide 68
Slide 68 text
レビューの例 68
Slide 69
Slide 69 text
コードを本番に取り込む(マージ) 69 マージ (Merge):PRの変更をmainブランチに統合すること レビューでApproveされた後に実⾏する マージの種類 Create a merge commit マージコミットを作成 (履歴がそのまま残る) ← 迷ったら基本これ Squash and merge 複数コミットを1つに まとめてマージ Rebase and merge コミットをmainの先頭に 付け替えてマージ マージ後はイシューのクローズも忘れずに
Slide 70
Slide 70 text
マージの例 70
Slide 71
Slide 71 text
マージの例 71
Slide 72
Slide 72 text
トラブルを防ぐ技術を知ろう
Slide 73
Slide 73 text
今の変更状態を確認する(status / diff / log) 73 🔍 status 作業ツリーの状態を確認 ファイルの追加、変更、削除など、現 在の作業状況を把握します。 git status 📝 diff 変更内容の差分を確認 具体的にどの⾏が追加‧削除されたの か、詳細な変更箇所を表⽰します。 git diff 📜 log コミット履歴を確認 過去のコミットメッセージやIDを⼀覧 で確認し、開発の経緯を辿ります。 git log --oneline
Slide 74
Slide 74 text
変更を取り消す‧やり直す(reset / stash) 🔄 reset コミットを取り消す ● 直前のコミットを取り消し(変更は残す) git reset --soft HEAD~1 HEAD=今いる位置、~1=1つ前。つまり1つ前の状態に戻り ます。 ● 直前のコミット内容やメッセージを修正 git commit --amend 74 📦 stash 作業中の変更を⼀時退避する ● 変更を⼀時的に脇に置いておく git stash ● 退避した変更を元に戻す git stash pop 間違ったブランチで作業を始めてしまった時などに、別のブ ランチへ移動する前に使うと便利です。
Slide 75
Slide 75 text
記録しないファイルを指定する(.gitignore) 75 .gitignore:Gitの追跡対象から除外するファイルを指定する設定ファイル リポジトリのルートに .gitignore ファイルを作成する 🔐 秘匿情報 流出厳禁の情報 ● .env ● credentials.json ● *.pem 📦 依存パッケージ 再⽣成可能な外部ライブラリ ● node_modules/ ● __pycache__/ 🛠 ビルド成果物 実⾏⽤に変換されたファイル ● dist/ ● build/ 💻 OS固有ファイル システムが⾃動⽣成するファ イル ● .DS_Store ● Thumbs.db
Slide 76
Slide 76 text
コミット前に⾃動チェックを⾛らせる(pre-commit) 76 Gitフック:特定のGit操作(コミット等)の前後でスクリプトを⾃動実⾏する仕組み チェック失敗時にコミットを中断し、不備のあるコードが混⼊するのを防ぐ 🛠 代表的なフレームワーク pre-commit (Python製‧多⾔語対応) ● YAMLで設定を宣⾔的に記述 ● Python中⼼や⾔語混在プロジェクトで定番 husky (Node.js製) ● シェルスクリプトを直接記述 ● JS/TSプロジェクトのデファクト 🔍 主な⽤途 フォーマッタ‧リンタ コードスタイルを⾃動整形‧指摘。レビュー負荷を軽減しま す。 秘匿情報の検出 APIキー等の混⼊を未然に防⽌(例: gitleaks)。
Slide 77
Slide 77 text
変更の衝突を解消する(コンフリクト) 77 💥 コンフリクト (conflict) 同じファイルの同じ箇所を複数⼈が変更した場合に発⽣する 衝突 ● Gitが⾃動マージできず、⼿動で解決が必要になる 🛠 対処⽅法 1. 該当ファイルのマーカーを確認 2. 残すべき変更を修正&コミット ※ マーカー:<<<<<<< ======= >>>>>>> conflict_example.txt <<<<<<< HEAD 自分が行った変更内容 (Current Change) ======= 他の人が行った変更内容 (Incoming Change) >>>>>>> feature/other-branch ※ コンフリクトマーカーの例
Slide 78
Slide 78 text
78 ブランチ戦略とは チームでブランチをどう運⽤するかの共通ルール GitHub Flow イメージ図 ブランチの使い分けを知る(ブランチ戦略) 🚀 GitHub Flow から始めよう シンプルで分かりやすいため、最初の導⼊として⾮常に おすすめです。 ● 構成: main + feature/xxx のみ ● ルール: featureからPRを出してmainへマージ ● メリット: 常にmainがデプロイ可能な状態に保たれる
Slide 79
Slide 79 text
良い開発習慣を⾝につけよう
Slide 80
Slide 80 text
認証情報や秘匿情報はコミットするな 80 🚨 秘匿情報とは 外部に漏れると重⼤な被害が出る情報 ● APIキー‧トークン ● パスワード‧秘密鍵 ● 公開されると世界中から閲覧可能 になる ⚠ 削除は困難 ⼀度のコミットで完全削除が不可能に ● 履歴消去後もクローン済みなら⼿ 遅れ ● GitHubキャッシュに残る可能性 ● 漏洩時は必ずローテーション(再 発⾏) ✅ 事前の対策 コミットによる流出を未然に防ぐ習慣 ● .env で情報を分離 ● .gitignore で除外設定 ● gitleaks を⽤いてpre-commitに よるコードスキャンを実⾏
Slide 81
Slide 81 text
コミットメッセージに種類をつける Conventional Commits の prefix を使うと変更の種類が⼀⽬でわかる feat: 新機能の追加 fix: バグ修正 docs: ドキュメントの変更 refactor: リファクタリング test: テストの追加‧修正 chore: ビルド設定などの変更 例: feat: ログイン機能を追加、fix: メール送信エラーを修正 81
Slide 82
Slide 82 text
こまめにプルとプッシュを実⾏する 82 ✅ こまめにプル 作業開始前に必ず git pull で最新の状 態を取得 ● コンフリクトを最⼩限に ● 他者の変更を早期把握 🚀 こまめにプッシュ キリのいい単位で git push してリモー トに反映 ● PC紛失等の消失リスク回避 ● チームへの変更の早期共有 ⚠ 同期しないと… 同期を怠ると発⽣する負の連鎖 ● ⼤量のコンフリクトが発⽣ ● マージ作業が極めて複雑に ● ローカルの変更を事故で紛失
Slide 83
Slide 83 text
プルリクエストは⼩さく作る 83 PRは⼩さくする レビューの品質を⾼め、マージを迅速 に ● ⽬安は変更300⾏以内 ● 1つのPRに1つの⽬的 ● 機能追加とリファクタを混ぜない 明確な説明を書く ⽂脈を共有し、意図を正しく伝える ● 何を‧なぜ変更したかを簡潔に ● 関連イシュー番号をリンク ● レビュアーの負荷を軽減する セルフレビュー 提出前に⾃分のコードを客観視する ● ⾃分でdiffを最終確認 ● ケアレスミスを事前に修正 ● ⾃信を持ってレビュー依頼へ
Slide 84
Slide 84 text
最後に
Slide 85
Slide 85 text
まとめ ● Git = ローカルで動く分散型バージョン管理ツール ● GitHub = Gitリポジトリのホスティングサービス ● clone → pull → switch → add → commit → pushの流れを押さえる ● イシューで起票 → PRで依頼 → レビュー → マージの流れで品質を担保 ● 秘匿情報はコミットしない、コミットメッセージに種類を付ける、こまめ にプルとプッシュ、PRは⼩さく作る 85
Slide 86
Slide 86 text
次に学ぶべきGit/GitHubの仕組み ● GitHub Actions:CI/CDによる⾃動化 ● GitHub Projects:タスク‧進捗の可視化 ● タグ‧リリース(tag / release):リリースノートと配布物のパッケージ化 ● GitHub CLI(gh):ターミナルからのGitHub操作 86
Slide 87
Slide 87 text
No content