Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHubをちゃんと使おうって話
Search
akatsuki1910
July 11, 2023
30
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHubをちゃんと使おうって話
akatsuki1910
July 11, 2023
More Decks by akatsuki1910
See All by akatsuki1910
機械の気持ちを考えてコードを書こう
akatsuki1910
0
16
サーバーを使って遊ぼう
akatsuki1910
0
23
お前、GCってまあ別に気にしなくていいだろって思いながらwebサイト作ってるだろ
akatsuki1910
0
19
業務を効率化させるためのAIツール3選(超実践編)
akatsuki1910
0
48
後輩に伝えたいこと
akatsuki1910
0
33
難解(かもしれない)言語
akatsuki1910
1
49
Reactのチュートリアルをしよう3
akatsuki1910
0
39
クソドメインを取ろう
akatsuki1910
0
76
Reactのチュートリアルをしよう2
akatsuki1910
0
34
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Rails Girls Zürich Keynote
gr2m
96
14k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
220
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Transcript
GitHubをちゃんと使おうって話 らり
対象者 • Gitを使ったことがある人 • GitHubを使ったことがある人 • ある程度Gitを使った開発をしたことある人 • ある程度Gitの仕組みを知っている人 •
なんとな~くコマンドを知っている人
ごめんなさい めっちゃ詳しく説明しているわけでなく、上辺だけです もっと詳しい説明が欲しい方はコメントに書いてください
Gitって、何 Git(ギット)は、プログラムのソースコードなどの 変更履歴を記録・追跡するための分散型バージョン管理システムである。 ↓ ファイル管理システムじゃないよ https://ja.wikipedia.org/wiki/Git
Gitをどうやって入れる? 公式のインストールガイドがあるので、そちらをご覧ください https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
作業の流れ 1. リモートサーバ等にある中心リポジトリをローカルに複製する (git clone)。 2. ローカルでコンテンツの修正・追加・削除を行い、ローカルリポジトリに変更履歴を 記録する (git commit)。必要に応じて過去の状態の閲覧や復元などを行う。場合
によってはこのステップを何度か繰り返す。 3. ローカルの変更内容を中心リポジトリに反映させる (git push)。作業者ごとの変更 内容が衝突することもある。Gitが自動で解決できる場合もあれば、手動での解決 (git merge)が必要なこともある。 4. 更新された中心リポジトリ(他者の作業内容も統合されている)をローカルの複製に も反映する (git pull)。これによりローカル環境のコードも最新の内容になるので、 改めてステップ2の作業を行う。 https://ja.wikipedia.org/wiki/Git
git clone 既存のリポジトリをローカル環境に複製するコマンド 大体、1案件に1回しか実行しない cloneする際に、保存するディレクトリやもってくるブランチを指定できたりする
git commit git addをした後、ローカルリポジトリにコミットするためのコマンド コミットメッセージと説明を一緒に載せることが出来る コミットメッセージ 説明
コミットメッセージって何 そのコミットで何を行ったかを書く また、他人が見たときにそのコミットで何を行ったかがわかるものを残す コミットメッセージだと長文になりそうなときは説明(Discription)に追記する 「何が、どうした」という感じの残し方が多い気がする レビューの修正時、メッセージに「修正」って残すのはやめよう https://gist.github.com/mono0926/e6ffd032c384ee4c1cef5a2aa4f778d7
• 戻したい単位 • 正常に動く単位 • ToDoリスト単位 コミットの粒度 https://qiita.com/jnchito/items/40e0c7d32fde352607be
戻したい単位 git revert(コミットを打ち消すコマンド)をしやすい単位 例えばパッケージのバージョンをアップデートした時、package.jsonとyarn.lockが変更さ れる その時に全然関係ないプログラムの修正が入っていると、コミットを戻そうとしたらその 修正も一緒に戻すはめになる あ!この修正やめたい!って思った時に戻せるようにしよう
正常に動く単位 コンポーネントであれば、ちゃんと表示される単位 機能であれば、ビルドが通る単位 関数であれば、返却内容の意味が変わる単位 どこまでを正常動作として区切りをつけるかは人による
ToDoリスト単位 issueにToDoリストを用意し、その粒度に合わせてコミットを行う ToDoリストがだめだと全て崩壊するが、ToDoリスト以外のことは行わないはずのため、 実装者は粒度を気にする必要がなく、レビューもしやすい
git push リモートリポジトリのブランチ履歴を更新するためのコマンド ただ、リモートリポジトリの子孫である時でないと実行できない git pullし忘れ等
git merge 分岐したブランチを統合するコマンド 分岐元のブランチとのコンフリクトがあると行えない
git pull リモートリポジトリにある変更を取得できる レビューする時にpullするのを忘れてて、あれ?変更されてない?ってなりがち
ソースコードをホスティングするソフトウェア開発のプラットフォーム コードのバージョン管理システムにはGitを使用 ↓ Gitと関係はないよ GitHubって、何
プラットフォームを有効活用しよう 例) とある開発フロー 1. issueを立てる 2. assignされた人が修正 3. ブランチを切り、修正をおこなう(ここで先ほどの説明のフローが入る) 4.
pull requestを立てて、レビューをしてもらう 5. approveされたらマージ
issue 開発中の課題や、発生した問題を書くところ その内容についてディスカッションをすることもOK 共有メモや、ドキュメントを書く場ではない そちらはGitHub上のwikiに記載してください https://docs.github.com/ja/communities/documenting-your-project-with-wikis/about -wikis
issue 公式でドキュメントが準備されているのでそちらをご覧ください https://docs.github.com/ja/issues
issue issueはテンプレートを用意することが出来る https://docs.github.com/ja/communities/using-templates-to-encourage-useful-issue s-and-pull-requests/about-issue-and-pull-request-templates 「何」を書いてほしいかを考えて用意する issueの作成者はそれに沿って作ることが出来るので、記載漏れを事前に防ぐことがで きる
issue(やっておいた方がいいなと思うこと) • assignは実装者を入れる ◦ 誰が管理しているかがわかる • タイトルに角括弧([])で対象ページとかを書かない ◦ issueにはラベルをつけることができ、それで管理する ◦
ソートが出来るため、確認も容易
pull request 本開発への変更提案 レビューをすることで、その変更提案が問題ないかを確認してからマージする 人は何かしら間違えるので、「レビューする」ことによって変な修正が入らないように防ぐ ことが目的 ちゃんとレビューしてますか? てきとうに見ただけでOKにしてませんか?
pull request 今までマージはしたくないけどPRを立てたい場合(簡易的なコードレビューや、進捗状況 確認のため)には、タイトルにWIPって書くことが多かった 今では「Draft Pull Request」というものがあるので、それを使いましょう 逆に進捗を共有するためにも、毎度Draft Pull Requestを立てて、リーダーが確認しや
すい状況にするのも1つだと思います https://github.blog/jp/2019-02-19-introducing-draft-pull-requests/
pull request 公式でドキュメントが準備されているのでそちらをご覧ください https://docs.github.com/ja/pull-requests
pull request pull requestはテンプレートを用意することが出来る https://docs.github.com/ja/communities/using-templates-to-encourage-useful-issue s-and-pull-requests/about-issue-and-pull-request-templates 「何」を書いてほしいかを考えて用意する pull requestの作成者はそれに沿って作ることが出来るので、記載漏れを事前に防ぐこ とができる
pull request それでも人は間違えるため、機械で自動的に確認をする方が望ましい CIをGitHub Actionsで行えるため、入れておくだけでも嬉しい https://knowledge.sakura.ad.jp/23478/ これで確認事項が通らなかった場合、レビューがOKでもマージをすることが出来ないた め、確認漏れによって変な修正が入ることを防ぐことが出来る
pull request 確認事項 • 関数のテスト • ちゃんとビルドが通るか • Lintで怒られていないか
pull request(やっておいた方がいいなと思うこと) • assignは実装者を入れる ◦ 誰が管理しているかがわかる • issueの番号を記載( - #<issueの番号>)
◦ 何の修正かが分かる • マージされた時に、自動的にブランチを消す ◦ また同じ名前のブランチが作成されても大丈夫なように
おわりに GitHubの管理の方法や実装方針は、入った人やプロジェクトの規模感により、ベストプ ラクティスがある訳ではありません そのため、先導者がいないと一瞬で崩壊し、後から入った人が何を行っているのかわか らない、見にくいリポジトリが出来上がります 特に、OPは高速で案件が回るため、急に人を補充した時に状況を説明する時間がな かったりする場合、状況把握のための1つの情報源にもなります なので、プロジェクト内でGitHubを扱う方々(主に実装者)のリーダーになる方は、この辺 りを先導してもらえると助かります
課題 • GitHubの運用時に気を付けていること • 自身で使っているテンプレートやルール ◦ squash and merge •
これは導入しておくべきだと思ったシステム ◦ wiki ◦ projects ◦ milestone • みんなが誤解してそうだなと思ったこと • 運用するのに参考になりそうなもの ◦ OSSのリポジトリはしっかりしてる