SlideShare a Scribd company logo
1 of 55
Download to read offline
Copyright © 2024 Yamanouchi M. Hayato
GitとGitHubによる
プログラム管理の基礎
⼭ノ内 勇⽃(名古屋⼤学, 理学研究科)
Copyright © 2024 Yamanouchi M. Hayato
⽬次
1. git, GitHubとは
2. レポジトリの作成・更新
3. レポジトリを公開する
1
Copyright © 2024 Yamanouchi M. Hayato
参考⽂献
2
いちばんやさしい
Git&GitHubの教本
Web制作者のための
GitHubの教科書
https://amzn.to/3tvXF7E https://amzn.to/4ajaiUt
Copyright © 2024 Yamanouchi M. Hayato
GitとGitHubについて
・ファイルがバージョンの
分だけ増える
・変更履歴がわかりにくい
コラム:OneDriveでは変更履歴を保存しなくても、⾃動保存によって
⾃動的にバージョン管理がなされている。
・・・プログラムのバージョン管理を簡単にするツール
3
Copyright © 2024 Yamanouchi M. Hayato
Gitのバージョン管理システムの概念
“各ファイルの差分のみを履歴に保存する”
前に戻りたい時には
追加した部分を消去すればいい!
おはよう
こんにちは
こんばんは
おはよう
こんばんは
ハロー
ー “こんにちは”
+ “ハロー”
テキスト.txt
Gitのログ
テキスト.txt
4
Copyright © 2024 Yamanouchi M. Hayato
GitとGitHubについて
git GitHub
https://git-scm.com https://github.com
バージョン管理システム
ローカルでファイルの
バージョン管理を⾏う
(ローカルレポジトリ)
オンラインでファイルの
バージョン管理を⾏う
(リモートレポジトリ)
5
Copyright © 2024 Yamanouchi M. Hayato
GitHub Desktopについて
GitHub Desktop
https://desktop.github.com
GitやGitHubの操作をGUI上で⾏うことができる
・・・本来CUIベース(ターミナルとか)で⾏うものを簡単
に⾏えるようにしたツール!!
6
Copyright © 2024 Yamanouchi M. Hayato
GitHub のアカウントの種類
・個⼈⽤アカウント
・Enterprise アカウント
・Organization アカウント
・・・通常これ!!ひとりごとにひとつのアカウント。
・・・無制限の数の⼈が多くのプロジェクトで同時に
コラボレーションできる共有アカウント。
組織ごとにひとつのアカウント。
・・・企業⽤アカウント。
よくわからないが、基本使わない。
7
Copyright © 2024 Yamanouchi M. Hayato
アカウントの所属関係について
Organization アカウント
Aさん
Bさん
Organizationに所属して
いる⼈たちで共有可能
8
Copyright © 2024 Yamanouchi M. Hayato
共同制作について
9
1. レポジトリのcollaboratorに追加する
・Privateで公開しているレポジトリに、アクセス権限を割り振ることができる
・アクセス権限には、観覧のみ、編集可能、管理者など種類がある
2. Organizationに⼊っている⼈たちで共有する
・Organizationに所属している⼈たちにレポジトリの管理者権限がある
・特に特別な操作は必要ない
Copyright © 2024 Yamanouchi M. Hayato
⽤語説明
・レポジトリ・・・プログラム等の”保管場所”
10
・ローカルレポジトリ・・・⾃分のパソコンにおけるレポジトリ
・リモートレポジトリ・・・ネット上にあるレポジトリ
・ディレクトリ・・・フォルダのこと
狭義には、⾃⾝が作業しているフォルダ
・コミット・・・ディレクトリ→ローカルレポジトリ
・プッシュ・・・ローカルレポジトリ→リモートレポジトリ
・プル・・・リモートレポジトリ→ローカルレポジトリ
Copyright © 2024 Yamanouchi M. Hayato
概要図
11
リモートレポジトリ
ローカルレポジトリ
コミット
プッシュ
プル
ローカルレポジトリ
コミット
プッシュ
プル
ローカルレポジトリ
リモートレポジトリ
クローン
*初回のみ
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 - 新しいレポジトリを作る
12
・・・GitHubでCreate a new repositoryを押す
@GitHub
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 - 新しいレポジトリを作る
13
レポジトリの名前 = プロジェクトの名前
レポジトリの公開範囲
・Public:世の中の⼈全員
・Private :⾃分と共有を許可した⼈たちのみ
@GitHub
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 - 新しいレポジトリを作る
14
READMEファイルを追加するか否か
ライセンスについて .gitignoreファイルについて
@GitHub
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 - 新しいレポジトリを作る
15
@GitHub
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ クローンする
16
ZIPファイルで
ダウンロード
ターミナルでクローン
するときのコード
@GitHub
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ クローンする
17
・・・GitHub Desktopを使ってクローンもできる!
@GitHub Desktop
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ クローンする
18
このパスに
クローンされる
@GitHub Desktop
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ クローンする
19
@GitHub Desktop
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ コミット
20
@GitHub Desktop
・・・プログラムに変更を加えると。。。
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ コミット
21
@GitHub Desktop
簡単なコミットの説明
詳しいコミットの説明
*慣例的に最初のコミットは
“first commit”とすることが多い
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ プッシュ
22
@GitHub Desktop
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ プッシュ
23
@GitHub
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ 履歴を⾒る
24
@GitHub Desktop
Copyright © 2024 Yamanouchi M. Hayato
適切なコミット/プッシュのタイミング
・コミット・・・1タスク単位で⾏う
25
・プッシュ・・・タスクのまとまり単位
Ex. ⼀つのバグの修正
ある統計解析のコードの追加・修正
Ex. ⼀連の統計解析の追加
⼤きな機能の追加
・・・履歴を戻るときに⾃分がわかりやすい単位で
* コミットにはそのコミットが何であるかのコメントと
共に⾏う必要がある
* チームで⾏う場合には、チームで共有しておくこと
Copyright © 2024 Yamanouchi M. Hayato
.gitignoreファイルについて
26
・・・レポジトリで共有しないファイルの指定
レポジトリに預けられるファイルの⼤きさには限界がある
→ 動画とかは⼊れたくない
Copyright © 2024 Yamanouchi M. Hayato
.gitignoreファイルについて
27
・・・レポジトリで共有しないファイルの指定
・特定のファイルを⼊れたくない
ファイル名全部を書く (Ex. sample.txt)
・特定のファイル形式を⼊れたくない
アスタリスクと拡張⼦ (Ex. *.mp4)
・特定のフォルダを⼊れたくない
フォルダ名とスラッシュ (Ex. Sample/)
あとはただ羅列するだけ
Copyright © 2024 Yamanouchi M. Hayato
ブランチ
28
・・・履歴の流れを分岐して記録していく
元コード
機能の追加
プログラムの統計の検討もしたいし、
新たなデータの追加もしたいし、
やりたいことがいっぱい・・・・
ブランチを作る(切る)ことで
それぞれに特化して作業を進められる
バグの修正
Copyright © 2024 Yamanouchi M. Hayato
ブランチをマージする
29
main
Branch A
Pull request
marge
ブランチのマージにはプルリクスト(Pull request)を⾏
なって、承認作業(⾃分or共同開発者)が必要となる
他の変更と変更内容が異なったりする場合には、プルリク
エストでどれを反映させるかを選択、修正を⾏う
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ ブランチを切る
30
@GitHub Desktop
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ ブランチを切る
31
@GitHub Desktop
・・・Current Branchを選択すると、
ローカルレポジトリで勝⼿にブランチが切り替わる
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ Pull request
32
@GitHub Desktop
Copyright © 2024 Yamanouchi M. Hayato
実際の作業⼿順 ‒ Pull request
33
@GitHub Desktop
・・・ブランチ間の変更を⾒る!
Copyright © 2024 Yamanouchi M. Hayato
やってみよう
34
@GitHub
・・・Create pull requestを押すとGitHubに⾶ばされる
どんな修正を⾏なったのかなどの、
Pull requestの内容を記述する
Copyright © 2024 Yamanouchi M. Hayato
やってみよう
35
@GitHub
・・・Pull requestに表⽰される。
Copyright © 2024 Yamanouchi M. Hayato
やってみよう
36
@GitHub
OKであれば、“Marge pull request”を、
Noであれば、修正依頼や議論、拒否を⾏う
Copyright © 2024 Yamanouchi M. Hayato
やってみよう
37
@GitHub
・・・Margeすると、pull requestが閉じられる
Copyright © 2024 Yamanouchi M. Hayato
GitHubのブランチモデル
38
・・・プログラムのバージョン管理⽅法のモデルフロー
共同制作するときにどのようにするか
GitHub Flow
ほかにもgit-flowモデルなどがあり、プログラムの規模やソフトウェア
の種類によって変わってくる。
⼤切なのは、プログラムの共同管理の⽅法を
チーム内で共有すること
main
feature-x
Pull request
Copyright © 2024 Yamanouchi M. Hayato
Project (任意の名前 ルートフォルダ)
Output (出⼒されるFigureなど)
Data (⼊⼒するデータなど)
Script (プログラムコード)
Documents (補⾜資料など)
README.md
LICENSE
39
プロジェクトのファイル構成の参考 (解析コード)
Copyright © 2024 Yamanouchi M. Hayato
プロジェクトのファイル構成の参考 (OSS)
Project
tests
Project
README.md
LICENSE
requirements.txt パッケージ情報など yamlなどもある
ライセンス情報
パッケージの説明など
ルートフォルダ
ソースコード
プロジェクト内でのライブラリの保存
各種設定ファイルの保存
ログファイルの保存
ドキュメント類
他のプロジェクトと共通のパッケージなど
テストコードやテストデータなど
libs
config
logs
docs
libs
40
Copyright © 2024 Yamanouchi M. Hayato
README.mdについて
・・・プログラムの説明をするもの
GitHub上でプログラムの
下に表⽰される部分
ぱっと⾒でどのような
プログラムかを理解
するために重要!!!
41
Copyright © 2024 Yamanouchi M. Hayato
README.mdについて
“マークダウン記法”で書かれる
42
Copyright © 2024 Yamanouchi M. Hayato
マークダウン記法 チートシート
⾒出し
# ⾒出しh1
## ⾒出しh2
⾒出しh1
⾒出しh2
リスト
* テキスト1
* テキスト2
* テキスト3
• テキスト
・テキスト
・テキスト
番号付きリスト
1. テキスト1
2. テキスト2
3. テキスト3
1. テキスト1
2. テキスト2
3. テキスト3
空⾏・改⾏
⾏1 _ _(←半⾓スペース2つ)
⾏2
<br>
⾏3
⾏1
⾏2
⾏3
リンクの挿⼊ [タイトル](URL) タイトル
参考:https://qiita.com/kamorits/items/6f342da395ad57468ae3
43
Copyright © 2024 Yamanouchi M. Hayato
マークダウン記法 チートシート
参考:https://qiita.com/kamorits/items/6f342da395ad57468ae3
コードの挿⼊
```⾔語:タイトル
コード
```
引⽤
> テキスト1
>> テキスト2
テキスト
テキスト
太字 **テキスト** テキスト
斜体 *テキスト* テキスト
⽔平線 ***
44
Copyright © 2024 Yamanouchi M. Hayato
ライセンスについて
・・・プログラムコードを利⽤する⼈へのルール
オープンソース(OS)のソフトウェアの公開が
推奨されているが、⾃由勝⼿にプログラムを
⾃分のもののように公開されるのを防ぎたい!!
ユーザーのプログラム使⽤の範囲を限定する
Ex. コードの引⽤元を付けさせる
商⽤利⽤不可 など
解析コードに関しても同様に考えなければならい
45
Copyright © 2024 Yamanouchi M. Hayato
ライセンスの種類について
MIT, BSD, Apache License 2.0, GPL v2.0 など。。。
⾃分が適応したい範囲に合わせて
選択する必要がある
⼀番利⽤者側の⾃由度が⾼いのがMITライセンス
・コピー利⽤、配布、変更の追加、変更を加えたもの再配布、商⽤利
⽤、有料販売など可
・⼀切の保証、責任は製作者は取らない
46
Copyright © 2024 Yamanouchi M. Hayato
ライセンスの適応の仕⽅
GitHubのフォルダーの中にLICENCEというのを⼊れる
適応したいライセンスを選択すると、
GitHubが⾃動的に作ってくれる
47
Copyright © 2024 Yamanouchi M. Hayato
コードを論⽂に載せるため
48
“Zenodoは研究データリポジトリである。研究者がデータセットを
置くための場所を提供するためにOpenAIREとCERNによって作ら
れた。2013年に始められ、いかなる研究分野の研究者も50 GBまで
ファイルをアップロードできるようになった。"
from Wikipedia
・・・ZenodoでGitHubと連携して、レポジトリにDOIを
発⾏する
https://upload.wikimedia.org/wikipedia/commons/e/e8/Zenodo-gradient-square.svg
もちろんGitHubと連携せず、Zenodo単体でも
データセットの保存、DOI発⾏は可能
Copyright © 2024 Yamanouchi M. Hayato
ZenodoとGitHubを連携させる
49
・・・ZenodoにGitHubアカウントでSign upするだけ!
Copyright © 2024 Yamanouchi M. Hayato
GitHubのレポジトリにDOIを発⾏する
50
0. レポジトリをPublic にする
1. Zenodoで選択する
2. GitHubで”release”を作成する
3. レポジトリのREADME.mdにDOIの表記を⼊れる
Copyright © 2024 Yamanouchi M. Hayato
レポジトリのReleasesを作る
51
・・・コードのバージョンの発⾏ (ver 1.0.0みたいな)
発⾏することで、その時のバージョンの
コードが保存される
Branches Tags (version)
Copyright © 2024 Yamanouchi M. Hayato
GitHubのレポジトリにDOIを発⾏する
52
Zenodoには、DOIを発⾏した時のバージョンのフォルダ
が格納されている。
Copyright © 2024 Yamanouchi M. Hayato
GitHubやプログラミングを快適に⾏うために
53
・・・Visual Studio Code (略VS Code)を使いましょう!!
(Visual Studioと混合しないように)
・WindowsやMacで使えるコードエディタ
https://upload.wikimedia.org/wikipedia/commons/9/9a/Visual_Studio_Code_1.35_icon.svg
・拡張機能でGitHubへのプッシュ/プルなどが可能に
・.yamlや.mdファイルなどの様々な拡張⼦のファイルの
表⽰、編集ができる
・使いやすい、知⾒もいっぱいある
Copyright © 2024 Yamanouchi M. Hayato
+@要素
54
・・・ディスカッションやプロジェクトの進⾏管理など
多様な機能がある
・Issues・・・プログラムで問題があったときなどに
Issuesを作成することで、その問題の
対応などを管理できる
・Actions・・・GitHubの拡張パッケージ
Ex. プッシュ時に⾃動的にコードを整える
・Insights・・・プロジェクトの全体の動きを⾒れる

More Related Content

Similar to GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順

GitHub Releasesからインストールしたコマンドを管理する
GitHub Releasesからインストールしたコマンドを管理するGitHub Releasesからインストールしたコマンドを管理する
GitHub Releasesからインストールしたコマンドを管理するjiro4989
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CDIssei Hiraoka
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウTakeshi Mikami
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門kazuki kuriyama
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルComputational Materials Science Initiative
 
20120324 git training
20120324 git training20120324 git training
20120324 git trainingTakeshi AKIMA
 
Git講習会
Git講習会Git講習会
Git講習会galluda
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Koji Shinba
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用賢次 海老原
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきたHiromu Shioya
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回kinme modoki
 
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話i35_267 Ishigaki
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月Kazumi IWANAGA
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理Masafumi Yokoyama
 
Nutanix エンジニアのための Git 入門 :序
Nutanix エンジニアのための Git 入門 :序Nutanix エンジニアのための Git 入門 :序
Nutanix エンジニアのための Git 入門 :序Wataru Unno
 

Similar to GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順 (20)

Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~ Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
 
GitHub Releasesからインストールしたコマンドを管理する
GitHub Releasesからインストールしたコマンドを管理するGitHub Releasesからインストールしたコマンドを管理する
GitHub Releasesからインストールしたコマンドを管理する
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
 
Git_GiHub講習会.pdf
Git_GiHub講習会.pdfGit_GiHub講習会.pdf
Git_GiHub講習会.pdf
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアル
 
20120324 git training
20120324 git training20120324 git training
20120324 git training
 
Git講習会
Git講習会Git講習会
Git講習会
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきた
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
 
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
プロダクトがリリースされるまでを『見える化』することで組織体質を変えていった話
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
Nutanix エンジニアのための Git 入門 :序
Nutanix エンジニアのための Git 入門 :序Nutanix エンジニアのための Git 入門 :序
Nutanix エンジニアのための Git 入門 :序
 

GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順

  • 1. Copyright © 2024 Yamanouchi M. Hayato GitとGitHubによる プログラム管理の基礎 ⼭ノ内 勇⽃(名古屋⼤学, 理学研究科)
  • 2. Copyright © 2024 Yamanouchi M. Hayato ⽬次 1. git, GitHubとは 2. レポジトリの作成・更新 3. レポジトリを公開する 1
  • 3. Copyright © 2024 Yamanouchi M. Hayato 参考⽂献 2 いちばんやさしい Git&GitHubの教本 Web制作者のための GitHubの教科書 https://amzn.to/3tvXF7E https://amzn.to/4ajaiUt
  • 4. Copyright © 2024 Yamanouchi M. Hayato GitとGitHubについて ・ファイルがバージョンの 分だけ増える ・変更履歴がわかりにくい コラム:OneDriveでは変更履歴を保存しなくても、⾃動保存によって ⾃動的にバージョン管理がなされている。 ・・・プログラムのバージョン管理を簡単にするツール 3
  • 5. Copyright © 2024 Yamanouchi M. Hayato Gitのバージョン管理システムの概念 “各ファイルの差分のみを履歴に保存する” 前に戻りたい時には 追加した部分を消去すればいい! おはよう こんにちは こんばんは おはよう こんばんは ハロー ー “こんにちは” + “ハロー” テキスト.txt Gitのログ テキスト.txt 4
  • 6. Copyright © 2024 Yamanouchi M. Hayato GitとGitHubについて git GitHub https://git-scm.com https://github.com バージョン管理システム ローカルでファイルの バージョン管理を⾏う (ローカルレポジトリ) オンラインでファイルの バージョン管理を⾏う (リモートレポジトリ) 5
  • 7. Copyright © 2024 Yamanouchi M. Hayato GitHub Desktopについて GitHub Desktop https://desktop.github.com GitやGitHubの操作をGUI上で⾏うことができる ・・・本来CUIベース(ターミナルとか)で⾏うものを簡単 に⾏えるようにしたツール!! 6
  • 8. Copyright © 2024 Yamanouchi M. Hayato GitHub のアカウントの種類 ・個⼈⽤アカウント ・Enterprise アカウント ・Organization アカウント ・・・通常これ!!ひとりごとにひとつのアカウント。 ・・・無制限の数の⼈が多くのプロジェクトで同時に コラボレーションできる共有アカウント。 組織ごとにひとつのアカウント。 ・・・企業⽤アカウント。 よくわからないが、基本使わない。 7
  • 9. Copyright © 2024 Yamanouchi M. Hayato アカウントの所属関係について Organization アカウント Aさん Bさん Organizationに所属して いる⼈たちで共有可能 8
  • 10. Copyright © 2024 Yamanouchi M. Hayato 共同制作について 9 1. レポジトリのcollaboratorに追加する ・Privateで公開しているレポジトリに、アクセス権限を割り振ることができる ・アクセス権限には、観覧のみ、編集可能、管理者など種類がある 2. Organizationに⼊っている⼈たちで共有する ・Organizationに所属している⼈たちにレポジトリの管理者権限がある ・特に特別な操作は必要ない
  • 11. Copyright © 2024 Yamanouchi M. Hayato ⽤語説明 ・レポジトリ・・・プログラム等の”保管場所” 10 ・ローカルレポジトリ・・・⾃分のパソコンにおけるレポジトリ ・リモートレポジトリ・・・ネット上にあるレポジトリ ・ディレクトリ・・・フォルダのこと 狭義には、⾃⾝が作業しているフォルダ ・コミット・・・ディレクトリ→ローカルレポジトリ ・プッシュ・・・ローカルレポジトリ→リモートレポジトリ ・プル・・・リモートレポジトリ→ローカルレポジトリ
  • 12. Copyright © 2024 Yamanouchi M. Hayato 概要図 11 リモートレポジトリ ローカルレポジトリ コミット プッシュ プル ローカルレポジトリ コミット プッシュ プル ローカルレポジトリ リモートレポジトリ クローン *初回のみ
  • 13. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 - 新しいレポジトリを作る 12 ・・・GitHubでCreate a new repositoryを押す @GitHub
  • 14. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 - 新しいレポジトリを作る 13 レポジトリの名前 = プロジェクトの名前 レポジトリの公開範囲 ・Public:世の中の⼈全員 ・Private :⾃分と共有を許可した⼈たちのみ @GitHub
  • 15. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 - 新しいレポジトリを作る 14 READMEファイルを追加するか否か ライセンスについて .gitignoreファイルについて @GitHub
  • 16. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 - 新しいレポジトリを作る 15 @GitHub
  • 17. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ クローンする 16 ZIPファイルで ダウンロード ターミナルでクローン するときのコード @GitHub
  • 18. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ クローンする 17 ・・・GitHub Desktopを使ってクローンもできる! @GitHub Desktop
  • 19. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ クローンする 18 このパスに クローンされる @GitHub Desktop
  • 20. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ クローンする 19 @GitHub Desktop
  • 21. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ コミット 20 @GitHub Desktop ・・・プログラムに変更を加えると。。。
  • 22. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ コミット 21 @GitHub Desktop 簡単なコミットの説明 詳しいコミットの説明 *慣例的に最初のコミットは “first commit”とすることが多い
  • 23. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ プッシュ 22 @GitHub Desktop
  • 24. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ プッシュ 23 @GitHub
  • 25. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ 履歴を⾒る 24 @GitHub Desktop
  • 26. Copyright © 2024 Yamanouchi M. Hayato 適切なコミット/プッシュのタイミング ・コミット・・・1タスク単位で⾏う 25 ・プッシュ・・・タスクのまとまり単位 Ex. ⼀つのバグの修正 ある統計解析のコードの追加・修正 Ex. ⼀連の統計解析の追加 ⼤きな機能の追加 ・・・履歴を戻るときに⾃分がわかりやすい単位で * コミットにはそのコミットが何であるかのコメントと 共に⾏う必要がある * チームで⾏う場合には、チームで共有しておくこと
  • 27. Copyright © 2024 Yamanouchi M. Hayato .gitignoreファイルについて 26 ・・・レポジトリで共有しないファイルの指定 レポジトリに預けられるファイルの⼤きさには限界がある → 動画とかは⼊れたくない
  • 28. Copyright © 2024 Yamanouchi M. Hayato .gitignoreファイルについて 27 ・・・レポジトリで共有しないファイルの指定 ・特定のファイルを⼊れたくない ファイル名全部を書く (Ex. sample.txt) ・特定のファイル形式を⼊れたくない アスタリスクと拡張⼦ (Ex. *.mp4) ・特定のフォルダを⼊れたくない フォルダ名とスラッシュ (Ex. Sample/) あとはただ羅列するだけ
  • 29. Copyright © 2024 Yamanouchi M. Hayato ブランチ 28 ・・・履歴の流れを分岐して記録していく 元コード 機能の追加 プログラムの統計の検討もしたいし、 新たなデータの追加もしたいし、 やりたいことがいっぱい・・・・ ブランチを作る(切る)ことで それぞれに特化して作業を進められる バグの修正
  • 30. Copyright © 2024 Yamanouchi M. Hayato ブランチをマージする 29 main Branch A Pull request marge ブランチのマージにはプルリクスト(Pull request)を⾏ なって、承認作業(⾃分or共同開発者)が必要となる 他の変更と変更内容が異なったりする場合には、プルリク エストでどれを反映させるかを選択、修正を⾏う
  • 31. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ ブランチを切る 30 @GitHub Desktop
  • 32. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ ブランチを切る 31 @GitHub Desktop ・・・Current Branchを選択すると、 ローカルレポジトリで勝⼿にブランチが切り替わる
  • 33. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ Pull request 32 @GitHub Desktop
  • 34. Copyright © 2024 Yamanouchi M. Hayato 実際の作業⼿順 ‒ Pull request 33 @GitHub Desktop ・・・ブランチ間の変更を⾒る!
  • 35. Copyright © 2024 Yamanouchi M. Hayato やってみよう 34 @GitHub ・・・Create pull requestを押すとGitHubに⾶ばされる どんな修正を⾏なったのかなどの、 Pull requestの内容を記述する
  • 36. Copyright © 2024 Yamanouchi M. Hayato やってみよう 35 @GitHub ・・・Pull requestに表⽰される。
  • 37. Copyright © 2024 Yamanouchi M. Hayato やってみよう 36 @GitHub OKであれば、“Marge pull request”を、 Noであれば、修正依頼や議論、拒否を⾏う
  • 38. Copyright © 2024 Yamanouchi M. Hayato やってみよう 37 @GitHub ・・・Margeすると、pull requestが閉じられる
  • 39. Copyright © 2024 Yamanouchi M. Hayato GitHubのブランチモデル 38 ・・・プログラムのバージョン管理⽅法のモデルフロー 共同制作するときにどのようにするか GitHub Flow ほかにもgit-flowモデルなどがあり、プログラムの規模やソフトウェア の種類によって変わってくる。 ⼤切なのは、プログラムの共同管理の⽅法を チーム内で共有すること main feature-x Pull request
  • 40. Copyright © 2024 Yamanouchi M. Hayato Project (任意の名前 ルートフォルダ) Output (出⼒されるFigureなど) Data (⼊⼒するデータなど) Script (プログラムコード) Documents (補⾜資料など) README.md LICENSE 39 プロジェクトのファイル構成の参考 (解析コード)
  • 41. Copyright © 2024 Yamanouchi M. Hayato プロジェクトのファイル構成の参考 (OSS) Project tests Project README.md LICENSE requirements.txt パッケージ情報など yamlなどもある ライセンス情報 パッケージの説明など ルートフォルダ ソースコード プロジェクト内でのライブラリの保存 各種設定ファイルの保存 ログファイルの保存 ドキュメント類 他のプロジェクトと共通のパッケージなど テストコードやテストデータなど libs config logs docs libs 40
  • 42. Copyright © 2024 Yamanouchi M. Hayato README.mdについて ・・・プログラムの説明をするもの GitHub上でプログラムの 下に表⽰される部分 ぱっと⾒でどのような プログラムかを理解 するために重要!!! 41
  • 43. Copyright © 2024 Yamanouchi M. Hayato README.mdについて “マークダウン記法”で書かれる 42
  • 44. Copyright © 2024 Yamanouchi M. Hayato マークダウン記法 チートシート ⾒出し # ⾒出しh1 ## ⾒出しh2 ⾒出しh1 ⾒出しh2 リスト * テキスト1 * テキスト2 * テキスト3 • テキスト ・テキスト ・テキスト 番号付きリスト 1. テキスト1 2. テキスト2 3. テキスト3 1. テキスト1 2. テキスト2 3. テキスト3 空⾏・改⾏ ⾏1 _ _(←半⾓スペース2つ) ⾏2 <br> ⾏3 ⾏1 ⾏2 ⾏3 リンクの挿⼊ [タイトル](URL) タイトル 参考:https://qiita.com/kamorits/items/6f342da395ad57468ae3 43
  • 45. Copyright © 2024 Yamanouchi M. Hayato マークダウン記法 チートシート 参考:https://qiita.com/kamorits/items/6f342da395ad57468ae3 コードの挿⼊ ```⾔語:タイトル コード ``` 引⽤ > テキスト1 >> テキスト2 テキスト テキスト 太字 **テキスト** テキスト 斜体 *テキスト* テキスト ⽔平線 *** 44
  • 46. Copyright © 2024 Yamanouchi M. Hayato ライセンスについて ・・・プログラムコードを利⽤する⼈へのルール オープンソース(OS)のソフトウェアの公開が 推奨されているが、⾃由勝⼿にプログラムを ⾃分のもののように公開されるのを防ぎたい!! ユーザーのプログラム使⽤の範囲を限定する Ex. コードの引⽤元を付けさせる 商⽤利⽤不可 など 解析コードに関しても同様に考えなければならい 45
  • 47. Copyright © 2024 Yamanouchi M. Hayato ライセンスの種類について MIT, BSD, Apache License 2.0, GPL v2.0 など。。。 ⾃分が適応したい範囲に合わせて 選択する必要がある ⼀番利⽤者側の⾃由度が⾼いのがMITライセンス ・コピー利⽤、配布、変更の追加、変更を加えたもの再配布、商⽤利 ⽤、有料販売など可 ・⼀切の保証、責任は製作者は取らない 46
  • 48. Copyright © 2024 Yamanouchi M. Hayato ライセンスの適応の仕⽅ GitHubのフォルダーの中にLICENCEというのを⼊れる 適応したいライセンスを選択すると、 GitHubが⾃動的に作ってくれる 47
  • 49. Copyright © 2024 Yamanouchi M. Hayato コードを論⽂に載せるため 48 “Zenodoは研究データリポジトリである。研究者がデータセットを 置くための場所を提供するためにOpenAIREとCERNによって作ら れた。2013年に始められ、いかなる研究分野の研究者も50 GBまで ファイルをアップロードできるようになった。" from Wikipedia ・・・ZenodoでGitHubと連携して、レポジトリにDOIを 発⾏する https://upload.wikimedia.org/wikipedia/commons/e/e8/Zenodo-gradient-square.svg もちろんGitHubと連携せず、Zenodo単体でも データセットの保存、DOI発⾏は可能
  • 50. Copyright © 2024 Yamanouchi M. Hayato ZenodoとGitHubを連携させる 49 ・・・ZenodoにGitHubアカウントでSign upするだけ!
  • 51. Copyright © 2024 Yamanouchi M. Hayato GitHubのレポジトリにDOIを発⾏する 50 0. レポジトリをPublic にする 1. Zenodoで選択する 2. GitHubで”release”を作成する 3. レポジトリのREADME.mdにDOIの表記を⼊れる
  • 52. Copyright © 2024 Yamanouchi M. Hayato レポジトリのReleasesを作る 51 ・・・コードのバージョンの発⾏ (ver 1.0.0みたいな) 発⾏することで、その時のバージョンの コードが保存される Branches Tags (version)
  • 53. Copyright © 2024 Yamanouchi M. Hayato GitHubのレポジトリにDOIを発⾏する 52 Zenodoには、DOIを発⾏した時のバージョンのフォルダ が格納されている。
  • 54. Copyright © 2024 Yamanouchi M. Hayato GitHubやプログラミングを快適に⾏うために 53 ・・・Visual Studio Code (略VS Code)を使いましょう!! (Visual Studioと混合しないように) ・WindowsやMacで使えるコードエディタ https://upload.wikimedia.org/wikipedia/commons/9/9a/Visual_Studio_Code_1.35_icon.svg ・拡張機能でGitHubへのプッシュ/プルなどが可能に ・.yamlや.mdファイルなどの様々な拡張⼦のファイルの 表⽰、編集ができる ・使いやすい、知⾒もいっぱいある
  • 55. Copyright © 2024 Yamanouchi M. Hayato +@要素 54 ・・・ディスカッションやプロジェクトの進⾏管理など 多様な機能がある ・Issues・・・プログラムで問題があったときなどに Issuesを作成することで、その問題の 対応などを管理できる ・Actions・・・GitHubの拡張パッケージ Ex. プッシュ時に⾃動的にコードを整える ・Insights・・・プロジェクトの全体の動きを⾒れる