$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Build@Mercari Week 1 Git + Development flow
Search
mercari
PRO
June 19, 2020
Programming
0
4.1k
Build@Mercari Week 1 Git + Development flow
Week 1 slides of our Build@Mercari (Software Engineering training program)
mercari
PRO
June 19, 2020
Tweet
Share
More Decks by mercari
See All by mercari
[DevDojo] Getting Started with BI: Looker Essentials - 2025
mercari
PRO
0
26
[DevDojo] Introduction to LLMs & AI Agents - 2025
mercari
PRO
0
37
[mercari GEARS 2025] Techniques for Reliable Code Generation Using AI Agents
mercari
PRO
0
67
[mercari GEARS 2025] Foundations of AI - The Invisible Forces Driving Product Innovation
mercari
PRO
0
100
[mercari GEARS 2025] Building Foundation for Mercari’s Global Expansion
mercari
PRO
1
260
[mercari GEARS 2025] The Past, Present, and Future of Anti-Phishing Measures at Mercari
mercari
PRO
0
66
[mercari GEARS 2025] Backend Standardization with MCP
mercari
PRO
0
85
[mercari GEARS 2025] Transforming customer engagement with Google Customer Engagement Suite
mercari
PRO
0
120
[mercari GEARS 2025] PJ Aurora’s Vision and Automated UI Quality Evaluation Agents
mercari
PRO
0
88
Other Decks in Programming
See All in Programming
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.9k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
160
FluorTracer / RayTracingCamp11
kugimasa
0
240
AIコーディングエージェント(Manus)
kondai24
0
190
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.9k
dotfiles 式年遷宮 令和最新版
masawada
1
790
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
エディターってAIで操作できるんだぜ
kis9a
0
730
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
150
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
170
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
110
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Become a Pro
speakerdeck
PRO
31
5.7k
Producing Creativity
orderedlist
PRO
348
40k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Why Our Code Smells
bkeepers
PRO
340
57k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Context Engineering - Making Every Token Count
addyosmani
9
530
RailsConf 2023
tenderlove
30
1.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Transcript
1 Confidential - Do Not Share Build@Mercari Week 1 Git
+ Development flow Hunter Che
2 Confidential - Do Not Share Table of Contents •
Introduction • ターミナルの使い方 • Gitとは • Gitコマンド 基礎編 • Gitを用いた開発を始めてみよう! • Githubを用いた複数人開発の解説 • チーム開発 実践編 • 宿題の説明
3 Confidential - Do Not Share Introduction • Hideaki Touhara
• iOS Engineer • Hobbies: ◦ 二郎系、カレー屋めぐり ◦ スノボ ◦ 学生時代はARアプリとかVRゲームとか作って ました!
4 Confidential - Do Not Share コマンドって? • コンピュータに指示するための命令 •
ターミナルやコマンドプロンプトといったツールを用いて実行する • 別名: 「黒い画面」 • これ ->
5 Confidential - Do Not Share 何ができるの? • 今回の講座ではディレクトリ操作のためのコマンドのみ使用 •
でも、他にもコマンドの方が効率が良いことがたくさんある! • 自動化もしやすい!
6 Confidential - Do Not Share ファイル操作のための基本コマンド • ls •
pwd • cd • mkdir • touch
7 Confidential - Do Not Share ls • 現在いるディレクトリ内のファイル一覧を取得できる ◦
ls -a で隠しファイル含めて全表示
8 Confidential - Do Not Share pwd • 現在のディレクトリ位置を表示
9 Confidential - Do Not Share cd • ディレクトリ間を移動する ◦
cd ~でホームディレクトリに移動 ◦ cd .. で一個親の階層に上がる ◦ cd ディレクトリ名で特定の子の階層に移動 • ↑でExampleディレクトリに移動したいときは “cd Example”
10 Confidential - Do Not Share mkdir [ディレクトリ名] • ディレクトリを作成
11 Confidential - Do Not Share touch [ファイル名] • ファイルを作成
12 Confidential - Do Not Share Git
13 Confidential - Do Not Share Git以外でバージョン管理する • 例: Excel
「レポート_東原秀亮」 ↓ 「レポート_東原秀亮_20200403」 ↓ 「レポート_東原秀亮_20200501」
14 Confidential - Do Not Share Git以外でバージョン管理する • 例: Excel
↓ 「レポート_東原秀亮_最終版」 ↓ 「レポート_東原秀亮_最終版_修正版」
15 Confidential - Do Not Share Git以外でバージョン管理する • 例: Excel
↓ 「レポート_東原秀亮_最終版_20200520」 ↓ 「レポート_東原秀亮_最終版_latest」
16 Confidential - Do Not Share 最終版 _latest? ??
17 Confidential - Do Not Share Gitとは • バージョン管理システム ◦
履歴確認、バックアップ、複数人開発などに適している • 前に記録した部分からの差分を見て、また記録 -> サーバー側に保存 ◦ サーバーを提供してくれているのが Github • 昔の状態に戻す、参照するのが簡単 • 複数人で開発するときに、自分の変更差分が分かりやすい • -> 安全に開発できるので仕事での開発に向いている • -> ほとんどのIT企業で使われている!(はず)
18 Confidential - Do Not Share もうちょっと詳しく • プロジェクトのソースコードに今までの変更 履歴も含めたものをRepositoryといいま
す • やることは大きく分けて2つ ◦ 1. 自分の変更をサーバー上にあげる ◦ 2. 誰かがあげた更新を自分の手元に取り込む ◦ -> 1,2を必要に応じて使用することで複数人で開 発を進めることができる リモート Repository(Github上にある) ローカルRepository A ローカルRepository B リモートを更新 反映されたリモートを手元に取 り込む
19 Confidential - Do Not Share Gitコマンド • git init
• git status • git diff (--cached) • git add • git commit • git log • git remote add • git push
20 Confidential - Do Not Share git init • 現在いるディレクトリ以下をgitの管理下に置きます
• .gitという隠しディレクトリができる • これでローカルリポジトリを作成したことになります • -> 後述するgit cloneかこのコマンドでgit管理を始めます
21 Confidential - Do Not Share git status • 現在のどのファイルに変更が起きているかを知ることができます
• 変更差分がstagingにいるのか、working directory(後述)なのかなどもわかる
22 Confidential - Do Not Share git diff • git
diffだけだとworking directoryの差分が見れる • git diff --cachedとすると、stagingの差分が見れる • 赤の部分が削除、緑が追加を表します
23 Confidential - Do Not Share
24 Confidential - Do Not Share Staging? Working directory? •
変更したものは一旦 Working directory上に はいる • commitしたい変更だけ stagingに移動させる • その後commitすることで Local repositoryに記録さ れる • commitしたものしか remote側には反映されな い Local repository add commit push Staging/ index Working directory
25 Confidential - Do Not Share git add • 差分をstagingにあげるコマンドです
• “git add .”で変更した全ての差分をstagingにあげます • “git add ファイル名”で特定のファイルの変更部分だけstagingにあげます • “git add -p”でどれをあげるか選ぶことができます
26 Confidential - Do Not Share git commit • Stagingにあがっている変更をlocal
repositoryに記録します • git commit -m “メッセージ” ◦ ひとつひとつのコミットにはコメントをつけることができます ◦ 何をやったか具体的に書けるレベルで commitするのが良いです ◦ 悪い例: git commit -m “Implement funcA, funcB and funC” ◦ 良い例: git commit -m “Add text label to xxxView”
27 Confidential - Do Not Share git log • コミットの変更履歴を見ることができます
• commit 1823449e….となっているのが commit hashと呼ばれるものです • これを参照して、履歴を行き来することがで きます(git checkout [commit hash])
28 Confidential - Do Not Share git remote add •
pushする前にリモートRepositoryとローカルRepositoryが紐付いている必要が あります • git remote add [リモート名] [URL]でできます ◦ 例: git remote add origin https://github.com/HideakiTouhara/sample1.git
29 Confidential - Do Not Share git push • git
push [リモート名] [ブランチ名] • git push -u origin masterみたいに、-uをつけると、次からgit pushのみでい けるのでおすすめです!
30 Confidential - Do Not Share Gitを用いた開発を始めてみよう! • ローカルで自分の名前ディレクトリ(e.g. HideakiTouhara)とREADME.mdファイルを
作成 ◦ 自分のプロフィールを作成 • Github上に自分の名前のRepositoryを作成 ◦ https://github.com/mercari-build • 紐付け • push! • 確認できたらOK OSSのREADMEの例→
31 Confidential - Do Not Share 休憩 (10分)
32 Confidential - Do Not Share Githubを用いた複数人開発 • git init
or clone • git pull • git branch • git checkout • git commit ~ push • “Create a PR on Github” • “Review” • “Merge” • git pull
33 Confidential - Do Not Share 全体の流れ リモート Repository ①git
clone ③pushして、github上にPRを 作成 ②ブランチ切って、色々作業 ④他の人にReviewをもらって、 Merge ローカルRepository
34 Confidential - Do Not Share git clone • すでにgit管理されているプロジェクトを手元に持ってきたいときに使いま
す • 簡単に言うとプロジェクトのコピー • git clone [URL]
35 Confidential - Do Not Share ブランチとは? • 並列に作業できるようにするためのもの •
枝葉のように独立して履歴を記録することができる ブランチAでは機能1を開発して! ブランチBでは機能2を開発して! 最後に合わせる ことが可能!
36 Confidential - Do Not Share git branch • git
branch [ブランチ名] • git branchでブランチ一覧取得 • 例: `git branch HideakiTouhara/work1`
37 Confidential - Do Not Share git checkout • git
checkout [ブランチ名] • git checkout [commit hash] • 例: `git checkout HideakiTouhara/work1`
38 Confidential - Do Not Share メルカリのブランチマネジメント • 基本的にgit-flowに沿っている ◦
https://nvie.com/posts/a-successful-git-branching-model/ • プロジェクトごとに異なるので、初めて働くチー ムでは、オンボーディング資料などからどういう フローで開発しているのか確認しよう!
39 Confidential - Do Not Share Create a PR •
Github上で特定のbranchとの差分 を表示することができる • ここでCode reviewしてもらう
40 Confidential - Do Not Share Code review • 1.
コードが何をしているか把握する ◦ わからない部分はコメントして聞く • 2. 現状の実装方法に対して、なにか意見があればコメントする • 仕事でのコードレビューとしてはかなりアバウトですが、今回はCode reviewの質の話はスキップします • Reviewの一例 ◦ https://github.com/HideakiTouhara/Poi/pull/10
41 Confidential - Do Not Share Merge • 枝分かれしていたブランチを合体させるときなどに使う •
git merge [branchの名前] ◦ この場合は今いるブランチに [branchの名前]を取り込む形になります ブランチAでは機能1を開発して! ブランチBでは機能2を開発して! 最後に合わせる ことが可能!
42 Confidential - Do Not Share Conflictが起きた場合 • Merge時にはconflict(変更の衝突が 起きる可能性があります)
• 例えば、同じファイルの同じ行をAさん、 Bさんが別々のブランチで作業していた 場合、2人がmergeするときに起こりま す。 • それぞれのブランチの差分が表示され ます • この場合は<<<<や>>>>を手動で消す などする必要があります
43 Confidential - Do Not Share チーム開発 実践 • HackerRankの問題をみんなで完成させよう
◦ https://docs.google.com/document/d/1258tUQQWMLWeSDk5d9t_q2dSot8a_ IaqlY04LENMaI8/edit#heading=h.anu7stay1vi2 ルール • 1~3までの問題を修正 • 該当Repository cloneする • ブランチ作成後、チームメンバーの誰かのApproveを もらってからmasterにマージ
44 Confidential - Do Not Share チーム開発 実践2 • HackerRankの問題をみんなで完成させよう
◦ https://docs.google.com/document/d/1258tUQQWMLWeSDk5d9t_q2dSot8a_ IaqlY04LENMaI8/edit#heading=h.anu7stay1vi2 ルール • 4~6を自力で解く • 言語は問題ごとに違ってOK! • ブランチ作成後、チームメンバーの誰かのApproveを もらってからmasterにマージ
45 Confidential - Do Not Share 困ったときはこうしよう • git reset
• git revert
46 Confidential - Do Not Share 宿題の提出方法について • HomeWork RepositoryのそれぞれのWeekディレクトリー配下に自分の
名前ディレクトリーを作成 ◦ https://github.com/mercari-build/HomeWork • e.g Week0/HideakiTouhara/xxxx
47 Confidential - Do Not Share 宿題1 • git clone
• 自分の名前/func1という名前でブランチ作成&移動 • homework.txtを作成
48 Confidential - Do Not Share 宿題1 • 以下のようなコミットログになるようにしてください ◦
(3番目はgit revertを使ってください) • 自分の名前ディレクトリー以下で list1 homework.txt Add list 1 list1 list2 homework.txt Add list 2 list1 homework.txt func1 ・ファイル名 ・ファイル内容 ・コミットメッ セージ ・ブランチ名
49 Confidential - Do Not Share 宿題2 • 以下のようなコミットログになるようにしてください ◦
“自分の名前/func2” というブランチをmasterブランチから作成し、作業して ください • Week0/自分の名前ディレクトリー以下で list2 homework.txt Add list 2 自分の名前/func2 list2 homework.txt master masterに func2を merge ・ファイル名 ・ファイル内容 ・コミットメッ セージ ・ブランチ名
50 Confidential - Do Not Share 宿題2 • func2ブランチをmasterにマージ後、func1ブランチをmaster にマージし、以下の状態を作ってください。
◦ conflictが起きたらその対応もお願いします (不要な文字列を消すなど ) list2 homework.txt Add list 2 master list1 list2 homework.txt master Masterに func1を merge ・ファイル名 ・ファイル内容 ・コミットメッ セージ ・ブランチ名
51 Confidential - Do Not Share もっと練習したい人へ • http://k.swd.cc/learnGitBranching-ja/