SlideShare a Scribd company logo
医療データ解析者へ向けた Git・GitHub 入門
Yui Tomo
October 25, 2020
@tomoybs
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 1 / 59
目次
1 目的
2 解析プログラムのバージョン管理(よくある実態)
3 どういった問題があるのか?
4 Git · GitHub の紹介
5 Git · GitHub を使ってみよう
6 実際のプロジェクト運用の例
7 さらなる話題
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 2 / 59
目的
目的
本資料の目的
• Git, GitHub というツールを知る
• Git, GitHub を使ったコード開発のイメージを掴む
• Git, GitHub の最小限の機能を使って開発ができるようになる
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 3 / 59
解析プログラムのバージョン管理
(よくある実態)
解析プログラムのバージョン管理(よくある実態)
あるある管理(?)
• XX 試験統計解析.sas
• XX 試験統計解析 _2.sas
• XX 試験統計解析 _2(〇〇先生更新).sas
• XX 試験統計解析 _3(統合済み).sas
• XX 試験統計解析 _4.sas
• XX 試験統計解析 _4_1.sas
• XX 試験統計解析 _4_ 最終版.sas
• XX 試験統計解析 _var1 固定.sas
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 4 / 59
解析プログラムのバージョン管理(よくある実態)
少し進化した管理方法
• 20200829_XX 試験統計解析.sas
• 20200904_XX 試験統計解析.sas
• 20200928_XX 試験統計解析.sas
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 5 / 59
どういった問題があるのか?
どういった問題があるのか?
Case 1. 変更前に戻りたい
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 6 / 59
どういった問題があるのか?
Case 1. 変更前に戻りたい
日付管理でも大丈夫?
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 7 / 59
どういった問題があるのか?
Case 1. 変更前に戻りたい
しかし現実には...
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 8 / 59
どういった問題があるのか?
Case 1. 変更前に戻りたい
しかし現実には...
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 9 / 59
どういった問題があるのか?
Case 1. 変更前に戻りたい
問題点
• 現実には変更内容が多岐にわたり、単純に追跡して統合するのは大きな
労力が必要
• 度重なる修正を保ったまま変更前に戻ることはほとんど不可能
• 変更のたびに管理表のような書類を別に作成するのも面倒
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 10 / 59
どういった問題があるのか?
Case 2. 複数人での作業
追加機能を切り分ければ大丈夫?
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 11 / 59
どういった問題があるのか?
Case 2. 複数人での作業
しかし現実には...
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 12 / 59
どういった問題があるのか?
Case 2. 複数人での作業
しかし現実には...
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 13 / 59
どういった問題があるのか?
Case 1. 変更前に戻りたい
問題点
• 現実には変更内容が多岐にわたり、単純に追跡して統合するのは大きな
労力が必要
• 作業者それぞれが独自に行った変更まで追跡するのは非常に面倒
• 変更の競合を追跡することも面倒
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 14 / 59
Git · GitHub の紹介
Git · GitHub の紹介
Git とは?
• 分散型バージョン管理システム
• コマンドラインで動作するソフトウェア
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 15 / 59
Git · GitHub の紹介
分散型とは?
• リモートとローカルにそれぞれ作業用のリポジトリ(変更管理場所)が
存在する
• 用語は後ほど説明します
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 16 / 59
Git · GitHub の紹介
GitHub とは?
• ソースコードホスティングサービス(クラウドのようなもの)
• ローカルとリモートの「リモート側」
• ブラウザからアクセスできる Web サービス
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 17 / 59
Git · GitHub の紹介
Git, GitHub を使うと何が嬉しいのか?
• ファイル名変更や管理表によるバージョン管理に頼らなくて良い
•「枝」のように分枝させコード更新ができる
• 複数人での共同開発がやりやすい
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 18 / 59
Git · GitHub を使ってみよう
Git · GitHub を使ってみよう
Git のインストール
Windows の場合:
• Git for windows をダウンロード
• https://git-scm.com/download/win
•(慣れている方は WSL で)
Mac の場合:
• コマンドライン・デベロッパー・ツールをダウンロード
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 19 / 59
Git · GitHub を使ってみよう
Git をどこから使う?
Windows の場合:
• Git Bash を使用
• Git for windows をインストールすると入っている
•(慣れている方は WSL で)
Mac の場合:
• ターミナルを使用
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 20 / 59
Git · GitHub を使ってみよう
Bash コマンド(最低限)
息をするように使えるようになっておくと楽です
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 21 / 59
Git · GitHub を使ってみよう
GitHub を使用する準備
• GitHub(https://github.com )へアクセスしユーザー登録
• コマンドラインから接続(SSH 接続)できるように、SSH キーを作成し
GitHub へ登録(下記 URL などを参照)
• https://qiita.com/shizuma/items/2b2f873a0034839e47ce
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 22 / 59
Git · GitHub を使ってみよう
Git · GitHub の用語
• リポジトリ
• ローカルリポジトリ
• リモートリポジトリ
• ブランチ
• プルリクエスト
• マージ
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 23 / 59
Git · GitHub を使ってみよう
リポジトリ
• ファイルやフォルダ(ディレクトリ)の変更履歴を管理する場所のこと
•「バージョン管理したいコード類が入っているフォルダ」
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 24 / 59
Git · GitHub を使ってみよう
ローカルリポジトリ
• 自分の(手元の)作業環境にあるリポジトリ
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 25 / 59
Git · GitHub を使ってみよう
リモートリポジトリ
• 自分の環境から「離れた」専用サーバー上にあるリポジトリ
• GitHub 上のリポジトリはリモートリポジトリに該当
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 26 / 59
Git · GitHub を使ってみよう
リモートリポジトリ
• リモートリポジトリは複数人(複数の作業環境)で共有できる
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 27 / 59
Git · GitHub を使ってみよう
ブランチ
• 並行して 複数のファイル変更やバージョンを管理する機能
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 28 / 59
Git · GitHub を使ってみよう
プルリクエスト
• レビューアー(他の作業者 or 自分)に変更(ブランチ)の統合を依頼す
ること
• プルリクエストを受けたレビューアーがコードレビューを行い、変更を
統合する
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 29 / 59
Git · GitHub を使ってみよう
マージ
• 異なるブランチを統合すること
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 30 / 59
Git · GitHub を使ってみよう
Git コマンドの使い方(最低限)
• add
• commit
• push
• pull
• checkout
• branch
• clone
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 31 / 59
Git · GitHub を使ってみよう
add コマンド
• 更新内容を管理対象に追加する
$ git add 更新対象としたいもの
• 更新したファイル(main_analysis.sas)を管理対象に追加する
$ git add main_analysis.sas
• 更新したフォルダ・ディレクトリ(analysis/)を管理対象に追加する
$ git add analysis
• カレントディレクトリ以降の階層にある更新したファイル, フォルダ・デ
ィレクトリを全て管理対象に追加する
$ git add .
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 32 / 59
Git · GitHub を使ってみよう
commit コマンド
• add で管理対象にした更新内容を保存する
• –m オプションで更新メッセージ(コミットメッセージ)を追加する
$ git commit –m ” メッセージ(変更の概要など)”
• ”modify covariates of linear regression” というメッセージを付与して変
更内容を保存する
$ git commit –m ”modify covariates of linear regression”
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 33 / 59
Git · GitHub を使ってみよう
push コマンド
• ローカルリポジトリでの変更内容(commit した内容)をリモートリポジ
トリに反映する
$ git push origin ブランチ名
• コミット内容をリモートの master ブランチへ反映する
$ git push origin master
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 34 / 59
Git · GitHub を使ってみよう
pull コマンド
• リモートリポジトリの内容をローカルリポジトリに反映する
$ git pusll origin ブランチ名
• リモートの master ブランチをローカルの master ブランチへ反映する
$ git pull origin master
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 35 / 59
Git · GitHub を使ってみよう
checkout コマンド
• 新しいブランチを作成してそこへ移動する
$ git checkout -b 新しいブランチ名
• ローカルリポジトリでブランチを移動する
$ git checkout ブランチ名
• develop ブランチを作成しそこへ移動する
$ git checkout -b develop
• master ブランチへ移動する
$ git checkout master
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 36 / 59
Git · GitHub を使ってみよう
branch コマンド
• 現在のブランチ一覧を表示する
$ git branch
• リモートリポジトリのブランチも含めた一覧を表示する
$ git branch -a
• master, develop ブランチが存在し、master にいる際に現在のブランチ
一覧を表示する
$ git branch
> develop
> * master
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 37 / 59
Git · GitHub を使ってみよう
clone コマンド
• リモートリポジトリと同じものをローカルに作成する
$ git clone クローン URL
• リモートリポジトリの特定のブランチと同じものをローカルに作成する
$ git clone –b ブランチ名クローン URL
• t-yui の causaltrtRiskRatioCI リポジトリと同じものをローカルに作成す
る(HTTPS URL, SSH URL のいずれでも可)
$ git clone https://github.com/t-yui/causaltrtRiskRatioCI.git
$ git clone git@github.com:t-yui/causaltrtRiskRatioCI.git
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 38 / 59
実際のプロジェクト運用の例
実際のプロジェクト運用の例
リポジトリの作成とクローン
• GitHub へアクセスし、リポジトリを作成する
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 39 / 59
実際のプロジェクト運用の例
リポジトリの作成とクローン
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 40 / 59
実際のプロジェクト運用の例
リポジトリの作成とクローン
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 41 / 59
実際のプロジェクト運用の例
リポジトリの作成とクローン
• Git Bash (Windows) やターミナル (Mac) へ移動し、リポジトリをローカ
ルにクローンする
$ cd ∼/Develop    # リポジトリを置きたいディレクトリへ移動
$ git clone https://github.com/t-yui/test_repo.git
$ ls
> test_repo/   # test_repo リポジトリが作成されている
$ cd test_repo
$ ls –a
> ./ ../ .git/   # .git/というディレクトリが git 管理の本体
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 42 / 59
実際のプロジェクト運用の例
README ファイルの作成
README ファイルとは?
• リポジトリの説明を記述するファイル
• マークダウン形式で記述する
$ touch README.md    # touch コマンドでファイル作成
• touch コマンドなどでファイルを作成する
• その後は、VSCode, Atom, メモ帳などのテキストエディタで編集する
• コマンドラインで作業を続けたい場合は vim 等で作成&編集しても OK
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 43 / 59
実際のプロジェクト運用の例
.gitignore ファイルの作成
.gitignore ファイルとは?
• 管理対象にしたくないものを記述するファイル
• 特に、医学系研究ではデータ(xlsx, csv, sas7bdat, sav など)を誤ってア
ップロードしないためにも、作成を推奨。
$ touch .gitignore    # touch コマンドでファイル作成
• touch コマンドなどでファイルを作成する
• その後は、VSCode, Atom, メモ帳などのテキストエディタで編集する
• コマンドラインで作業を続けたい場合は vim 等で作成&編集しても OK
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 44 / 59
実際のプロジェクト運用の例
.gitignore ファイルの作成
右の書き方で、下記のものを管理対象にしないことになる
• csv ファイル
• xlsx ファイル
• report ディレクトリ(フォルダ)
より詳細な書き方は下記などを参照
• https://qiita.com/inabe49/
items/16ee3d9d1ce68daa9fff
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 45 / 59
実際のプロジェクト運用の例
README と.gitignore をリモートに反映
• 作成したファイルを、デフォルトのブランチである master に反映させる
$ git add README.md
$ git commit –m ”create README.md”
$ git add .gitignore
$ git commit –m ”create .gitignore”
$ git push origin master
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 46 / 59
実際のプロジェクト運用の例
ブランチの作成
目標とするブランチ構造と各ブランチの役割
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 47 / 59
実際のプロジェクト運用の例
ブランチの作成
1. master ブランチ
• 固定した版(動くことが保証されている版)を置く
• develop からのみマージする
2. develop ブランチ
• 開発中の版を置く
• 機能開発用ブランチはここから枝分かれさせる
3. dev_function_X
• 機能 X を開発するためのブランチ
• 機能が完成したら develop へマージする
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 48 / 59
実際のプロジェクト運用の例
ブランチの作成
• ブランチを作成し枝分かれさせる(push でリモートにも反映させる)
• 俗に「ブランチを切る」と言う
$ git checkout –b develop
> Switched to a new branch ’develop’
$ git branch
> * develop   # 新たに作成した develop ブランチへ移動した
> master
$ git push origin develop
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 49 / 59
実際のプロジェクト運用の例
コードの開発
• develop ブランチでコードの雛形を作成し、push する
• 解析用ディレクトリの構成をここで作成してもよい
$ touch main_analysis.sas
           ↓  
~~~main_analysis.sas を編集~~~
           ↓  
$ git add main_analysis.sas
$ git commit –m ”create main_analysis.sas”
$ git push origin develop    # develop ブランチへ push
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 50 / 59
実際のプロジェクト運用の例
コードの開発
• dev_function_1 ブランチを作成し(ブランチを切り)、main_analysis.sas
に機能 1 を追加する
$ git checkout –b dev_function_1
$ git push origin dev_function_1
           ↓  
~~~main_analysis.sas を編集し機能 1 を追加~~~
           ↓  
$ git add main_analysis.sas
$ git commit –m ” 機能 1 を追加”  # 日本語でも OK
$ git push origin dev_function_1 # dev_function_1 ブランチへ push
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 51 / 59
実際のプロジェクト運用の例
プルリクエストを出す
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 52 / 59
実際のプロジェクト運用の例
プルリクエストを出す
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 53 / 59
実際のプロジェクト運用の例
マージする
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 54 / 59
実際のプロジェクト運用の例
develop ブランチの変更をローカルに反映する
• ローカルで develop ブランチへ戻り、リモートでなされた変更
(dev_function_1 の統合)を pull コマンドにより反映する
$ git checkout develop
$ git pull origin develop
• ブランチ移動は commit 後でないとできないので注意(stash コマンドと
いう一時的な回避方法はある)
• あとは同様に機能 2, 機能 3, …を追加していく
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 55 / 59
さらなる話題
さらなる話題
master ブランチが main ブランチに
• リポジトリのデフォルトブランチ名が、2020 年 10 月より master ブラン
チ -> main ブランチへと変更になるようです
• 2020 年 10 月以前より存在するリポジトリでは変わらず master ブランチ
がデフォルトのようです
• 現在はまだ master として使用しても動作上の問題はありません
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 56 / 59
さらなる話題
Git はコマンドラインでなくても使える
• 今回はコマンドラインによる CUI での操作方法の紹介がメインであった
• CUI はハードルが高いと感じる場合、GUI での操作が可能なツールも開発
されている(GitGUI, TortoiseGit, SourceTree, GitHub Desktop)
• ただし、Git の機能をフル活用しようと思った場合は CUI の方が良い
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 57 / 59
さらなる話題
GitHub がコマンドラインでも使える
• GitHub CLI ver.1.0 が最近リリースされ、GitHub がコマンドラインでも使
用できるようになりました
• Web ブラウザにアクセスして手動で行っていた作業をコマンドラインで
実現できます
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 58 / 59
さらなる話題
運用ルールの策定
複数人や組織で使用する場合、ルールを策定することで運用がスムーズ
になる
• リポジトリの命名規則
• プルリクエストの記入項目(どのような変更を、どのような目的で行っ
たのか?)
• README に書く項目(ex. 各ディレクトリやファイルの役割, 動作環境,
etc…引継ぎコストを下げる)
• etc ...
Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 59 / 59

More Related Content

PDF
LightGBM: a highly efficient gradient boosting decision tree
PDF
Hyperoptとその周辺について
PPTX
[DL輪読会]DropBlock: A regularization method for convolutional networks
PPTX
x86x64 SSE4.2 POPCNT
PDF
深層自己符号化器+混合ガウスモデルによる教師なし異常検知
PPTX
[DL輪読会]Invariance Principle Meets Information Bottleneck for Out-of-Distribut...
PPTX
【DL輪読会】Reward Design with Language Models
PDF
VAEs for multimodal disentanglement
LightGBM: a highly efficient gradient boosting decision tree
Hyperoptとその周辺について
[DL輪読会]DropBlock: A regularization method for convolutional networks
x86x64 SSE4.2 POPCNT
深層自己符号化器+混合ガウスモデルによる教師なし異常検知
[DL輪読会]Invariance Principle Meets Information Bottleneck for Out-of-Distribut...
【DL輪読会】Reward Design with Language Models
VAEs for multimodal disentanglement

What's hot (20)

PDF
On the Convergence of Adam and Beyond
PPTX
[DL輪読会]Focal Loss for Dense Object Detection
PDF
[DL輪読会]VNect: Real-time 3D Human Pose Estimation with a Single RGB Camera
PDF
「今日から使い切る」 ための GNU Parallel による並列処理入門
PDF
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
PDF
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PDF
【DL輪読会】Implicit Behavioral Cloning
PDF
いろんなバンディットアルゴリズムを理解しよう
PDF
機械学習モデルの判断根拠の説明
PPTX
【論文紹介】How Powerful are Graph Neural Networks?
PDF
Retty recommendation project
PPTX
遺伝研スパコンの『ここが困った!』事例集と今後への提言
PDF
【メタサーベイ】Video Transformer
PDF
タクシー運行最適化を実現する機械学習システムの社会実装
PDF
工学系大学4年生のための論文の読み方
PDF
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
PDF
猫でもわかる! モデル検査器 SPIN 入門
PPTX
深層強化学習による自動運転車両の経路探索に関する研究
PDF
AdaFace(CVPR2022)
PDF
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
On the Convergence of Adam and Beyond
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]VNect: Real-time 3D Human Pose Estimation with a Single RGB Camera
「今日から使い切る」 ための GNU Parallel による並列処理入門
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
【DL輪読会】Implicit Behavioral Cloning
いろんなバンディットアルゴリズムを理解しよう
機械学習モデルの判断根拠の説明
【論文紹介】How Powerful are Graph Neural Networks?
Retty recommendation project
遺伝研スパコンの『ここが困った!』事例集と今後への提言
【メタサーベイ】Video Transformer
タクシー運行最適化を実現する機械学習システムの社会実装
工学系大学4年生のための論文の読み方
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
猫でもわかる! モデル検査器 SPIN 入門
深層強化学習による自動運転車両の経路探索に関する研究
AdaFace(CVPR2022)
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
Ad

Similar to 医療データ解析者へ向けた Git・GitHub 入門 (20)

PDF
@s_ssk13さん向けGitHub入門
PDF
GitHub勉強会
PDF
Git_GiHub講習会.pdf
PPTX
今さら聞けない人のためのGit超入門
PPTX
今さら聞けない人のためのGitLabの始め方 Ubuntu編
PPTX
GitHub勉強会~当日資料~
PPTX
GitHub Handson
PDF
GitHub最新情報キャッチアップ 2023年6月
PPT
Gitの紹介
PPTX
今さら聞けない人のためのGit超入門 2019/11/21
PPTX
今さら聞けない人のためのGit超入門 GitLab 14対応版
PDF
Git_GitHub 入門者向けスライド.pdf
PPTX
今さら聞けない人のためのgit超入門
KEY
Yapc2012資料
PPTX
色んな環境用の たった一つの.gitConfig
PDF
GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順
PPTX
Git @ NNCT programming workshop
PPTX
今さら聞けない人のためのgit超入門
PDF
Python for Data Analysis第1回勉強会(+git入門)
@s_ssk13さん向けGitHub入門
GitHub勉強会
Git_GiHub講習会.pdf
今さら聞けない人のためのGit超入門
今さら聞けない人のためのGitLabの始め方 Ubuntu編
GitHub勉強会~当日資料~
GitHub Handson
GitHub最新情報キャッチアップ 2023年6月
Gitの紹介
今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 GitLab 14対応版
Git_GitHub 入門者向けスライド.pdf
今さら聞けない人のためのgit超入門
Yapc2012資料
色んな環境用の たった一つの.gitConfig
GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順
Git @ NNCT programming workshop
今さら聞けない人のためのgit超入門
Python for Data Analysis第1回勉強会(+git入門)
Ad

医療データ解析者へ向けた Git・GitHub 入門

  • 1. 医療データ解析者へ向けた Git・GitHub 入門 Yui Tomo October 25, 2020 @tomoybs Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 1 / 59
  • 2. 目次 1 目的 2 解析プログラムのバージョン管理(よくある実態) 3 どういった問題があるのか? 4 Git · GitHub の紹介 5 Git · GitHub を使ってみよう 6 実際のプロジェクト運用の例 7 さらなる話題 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 2 / 59
  • 4. 目的 本資料の目的 • Git, GitHub というツールを知る • Git, GitHub を使ったコード開発のイメージを掴む • Git, GitHub の最小限の機能を使って開発ができるようになる Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 3 / 59
  • 6. 解析プログラムのバージョン管理(よくある実態) あるある管理(?) • XX 試験統計解析.sas • XX 試験統計解析 _2.sas • XX 試験統計解析 _2(〇〇先生更新).sas • XX 試験統計解析 _3(統合済み).sas • XX 試験統計解析 _4.sas • XX 試験統計解析 _4_1.sas • XX 試験統計解析 _4_ 最終版.sas • XX 試験統計解析 _var1 固定.sas Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 4 / 59
  • 7. 解析プログラムのバージョン管理(よくある実態) 少し進化した管理方法 • 20200829_XX 試験統計解析.sas • 20200904_XX 試験統計解析.sas • 20200928_XX 試験統計解析.sas Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 5 / 59
  • 9. どういった問題があるのか? Case 1. 変更前に戻りたい Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 6 / 59
  • 10. どういった問題があるのか? Case 1. 変更前に戻りたい 日付管理でも大丈夫? Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 7 / 59
  • 11. どういった問題があるのか? Case 1. 変更前に戻りたい しかし現実には... Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 8 / 59
  • 12. どういった問題があるのか? Case 1. 変更前に戻りたい しかし現実には... Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 9 / 59
  • 13. どういった問題があるのか? Case 1. 変更前に戻りたい 問題点 • 現実には変更内容が多岐にわたり、単純に追跡して統合するのは大きな 労力が必要 • 度重なる修正を保ったまま変更前に戻ることはほとんど不可能 • 変更のたびに管理表のような書類を別に作成するのも面倒 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 10 / 59
  • 14. どういった問題があるのか? Case 2. 複数人での作業 追加機能を切り分ければ大丈夫? Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 11 / 59
  • 15. どういった問題があるのか? Case 2. 複数人での作業 しかし現実には... Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 12 / 59
  • 16. どういった問題があるのか? Case 2. 複数人での作業 しかし現実には... Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 13 / 59
  • 17. どういった問題があるのか? Case 1. 変更前に戻りたい 問題点 • 現実には変更内容が多岐にわたり、単純に追跡して統合するのは大きな 労力が必要 • 作業者それぞれが独自に行った変更まで追跡するのは非常に面倒 • 変更の競合を追跡することも面倒 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 14 / 59
  • 18. Git · GitHub の紹介
  • 19. Git · GitHub の紹介 Git とは? • 分散型バージョン管理システム • コマンドラインで動作するソフトウェア Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 15 / 59
  • 20. Git · GitHub の紹介 分散型とは? • リモートとローカルにそれぞれ作業用のリポジトリ(変更管理場所)が 存在する • 用語は後ほど説明します Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 16 / 59
  • 21. Git · GitHub の紹介 GitHub とは? • ソースコードホスティングサービス(クラウドのようなもの) • ローカルとリモートの「リモート側」 • ブラウザからアクセスできる Web サービス Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 17 / 59
  • 22. Git · GitHub の紹介 Git, GitHub を使うと何が嬉しいのか? • ファイル名変更や管理表によるバージョン管理に頼らなくて良い •「枝」のように分枝させコード更新ができる • 複数人での共同開発がやりやすい Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 18 / 59
  • 23. Git · GitHub を使ってみよう
  • 24. Git · GitHub を使ってみよう Git のインストール Windows の場合: • Git for windows をダウンロード • https://git-scm.com/download/win •(慣れている方は WSL で) Mac の場合: • コマンドライン・デベロッパー・ツールをダウンロード Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 19 / 59
  • 25. Git · GitHub を使ってみよう Git をどこから使う? Windows の場合: • Git Bash を使用 • Git for windows をインストールすると入っている •(慣れている方は WSL で) Mac の場合: • ターミナルを使用 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 20 / 59
  • 26. Git · GitHub を使ってみよう Bash コマンド(最低限) 息をするように使えるようになっておくと楽です Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 21 / 59
  • 27. Git · GitHub を使ってみよう GitHub を使用する準備 • GitHub(https://github.com )へアクセスしユーザー登録 • コマンドラインから接続(SSH 接続)できるように、SSH キーを作成し GitHub へ登録(下記 URL などを参照) • https://qiita.com/shizuma/items/2b2f873a0034839e47ce Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 22 / 59
  • 28. Git · GitHub を使ってみよう Git · GitHub の用語 • リポジトリ • ローカルリポジトリ • リモートリポジトリ • ブランチ • プルリクエスト • マージ Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 23 / 59
  • 29. Git · GitHub を使ってみよう リポジトリ • ファイルやフォルダ(ディレクトリ)の変更履歴を管理する場所のこと •「バージョン管理したいコード類が入っているフォルダ」 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 24 / 59
  • 30. Git · GitHub を使ってみよう ローカルリポジトリ • 自分の(手元の)作業環境にあるリポジトリ Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 25 / 59
  • 31. Git · GitHub を使ってみよう リモートリポジトリ • 自分の環境から「離れた」専用サーバー上にあるリポジトリ • GitHub 上のリポジトリはリモートリポジトリに該当 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 26 / 59
  • 32. Git · GitHub を使ってみよう リモートリポジトリ • リモートリポジトリは複数人(複数の作業環境)で共有できる Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 27 / 59
  • 33. Git · GitHub を使ってみよう ブランチ • 並行して 複数のファイル変更やバージョンを管理する機能 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 28 / 59
  • 34. Git · GitHub を使ってみよう プルリクエスト • レビューアー(他の作業者 or 自分)に変更(ブランチ)の統合を依頼す ること • プルリクエストを受けたレビューアーがコードレビューを行い、変更を 統合する Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 29 / 59
  • 35. Git · GitHub を使ってみよう マージ • 異なるブランチを統合すること Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 30 / 59
  • 36. Git · GitHub を使ってみよう Git コマンドの使い方(最低限) • add • commit • push • pull • checkout • branch • clone Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 31 / 59
  • 37. Git · GitHub を使ってみよう add コマンド • 更新内容を管理対象に追加する $ git add 更新対象としたいもの • 更新したファイル(main_analysis.sas)を管理対象に追加する $ git add main_analysis.sas • 更新したフォルダ・ディレクトリ(analysis/)を管理対象に追加する $ git add analysis • カレントディレクトリ以降の階層にある更新したファイル, フォルダ・デ ィレクトリを全て管理対象に追加する $ git add . Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 32 / 59
  • 38. Git · GitHub を使ってみよう commit コマンド • add で管理対象にした更新内容を保存する • –m オプションで更新メッセージ(コミットメッセージ)を追加する $ git commit –m ” メッセージ(変更の概要など)” • ”modify covariates of linear regression” というメッセージを付与して変 更内容を保存する $ git commit –m ”modify covariates of linear regression” Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 33 / 59
  • 39. Git · GitHub を使ってみよう push コマンド • ローカルリポジトリでの変更内容(commit した内容)をリモートリポジ トリに反映する $ git push origin ブランチ名 • コミット内容をリモートの master ブランチへ反映する $ git push origin master Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 34 / 59
  • 40. Git · GitHub を使ってみよう pull コマンド • リモートリポジトリの内容をローカルリポジトリに反映する $ git pusll origin ブランチ名 • リモートの master ブランチをローカルの master ブランチへ反映する $ git pull origin master Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 35 / 59
  • 41. Git · GitHub を使ってみよう checkout コマンド • 新しいブランチを作成してそこへ移動する $ git checkout -b 新しいブランチ名 • ローカルリポジトリでブランチを移動する $ git checkout ブランチ名 • develop ブランチを作成しそこへ移動する $ git checkout -b develop • master ブランチへ移動する $ git checkout master Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 36 / 59
  • 42. Git · GitHub を使ってみよう branch コマンド • 現在のブランチ一覧を表示する $ git branch • リモートリポジトリのブランチも含めた一覧を表示する $ git branch -a • master, develop ブランチが存在し、master にいる際に現在のブランチ 一覧を表示する $ git branch > develop > * master Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 37 / 59
  • 43. Git · GitHub を使ってみよう clone コマンド • リモートリポジトリと同じものをローカルに作成する $ git clone クローン URL • リモートリポジトリの特定のブランチと同じものをローカルに作成する $ git clone –b ブランチ名クローン URL • t-yui の causaltrtRiskRatioCI リポジトリと同じものをローカルに作成す る(HTTPS URL, SSH URL のいずれでも可) $ git clone https://github.com/t-yui/causaltrtRiskRatioCI.git $ git clone git@github.com:t-yui/causaltrtRiskRatioCI.git Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 38 / 59
  • 45. 実際のプロジェクト運用の例 リポジトリの作成とクローン • GitHub へアクセスし、リポジトリを作成する Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 39 / 59
  • 46. 実際のプロジェクト運用の例 リポジトリの作成とクローン Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 40 / 59
  • 47. 実際のプロジェクト運用の例 リポジトリの作成とクローン Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 41 / 59
  • 48. 実際のプロジェクト運用の例 リポジトリの作成とクローン • Git Bash (Windows) やターミナル (Mac) へ移動し、リポジトリをローカ ルにクローンする $ cd ∼/Develop    # リポジトリを置きたいディレクトリへ移動 $ git clone https://github.com/t-yui/test_repo.git $ ls > test_repo/   # test_repo リポジトリが作成されている $ cd test_repo $ ls –a > ./ ../ .git/   # .git/というディレクトリが git 管理の本体 Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 42 / 59
  • 49. 実際のプロジェクト運用の例 README ファイルの作成 README ファイルとは? • リポジトリの説明を記述するファイル • マークダウン形式で記述する $ touch README.md    # touch コマンドでファイル作成 • touch コマンドなどでファイルを作成する • その後は、VSCode, Atom, メモ帳などのテキストエディタで編集する • コマンドラインで作業を続けたい場合は vim 等で作成&編集しても OK Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 43 / 59
  • 50. 実際のプロジェクト運用の例 .gitignore ファイルの作成 .gitignore ファイルとは? • 管理対象にしたくないものを記述するファイル • 特に、医学系研究ではデータ(xlsx, csv, sas7bdat, sav など)を誤ってア ップロードしないためにも、作成を推奨。 $ touch .gitignore    # touch コマンドでファイル作成 • touch コマンドなどでファイルを作成する • その後は、VSCode, Atom, メモ帳などのテキストエディタで編集する • コマンドラインで作業を続けたい場合は vim 等で作成&編集しても OK Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 44 / 59
  • 51. 実際のプロジェクト運用の例 .gitignore ファイルの作成 右の書き方で、下記のものを管理対象にしないことになる • csv ファイル • xlsx ファイル • report ディレクトリ(フォルダ) より詳細な書き方は下記などを参照 • https://qiita.com/inabe49/ items/16ee3d9d1ce68daa9fff Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 45 / 59
  • 52. 実際のプロジェクト運用の例 README と.gitignore をリモートに反映 • 作成したファイルを、デフォルトのブランチである master に反映させる $ git add README.md $ git commit –m ”create README.md” $ git add .gitignore $ git commit –m ”create .gitignore” $ git push origin master Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 46 / 59
  • 54. 実際のプロジェクト運用の例 ブランチの作成 1. master ブランチ • 固定した版(動くことが保証されている版)を置く • develop からのみマージする 2. develop ブランチ • 開発中の版を置く • 機能開発用ブランチはここから枝分かれさせる 3. dev_function_X • 機能 X を開発するためのブランチ • 機能が完成したら develop へマージする Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 48 / 59
  • 55. 実際のプロジェクト運用の例 ブランチの作成 • ブランチを作成し枝分かれさせる(push でリモートにも反映させる) • 俗に「ブランチを切る」と言う $ git checkout –b develop > Switched to a new branch ’develop’ $ git branch > * develop   # 新たに作成した develop ブランチへ移動した > master $ git push origin develop Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 49 / 59
  • 56. 実際のプロジェクト運用の例 コードの開発 • develop ブランチでコードの雛形を作成し、push する • 解析用ディレクトリの構成をここで作成してもよい $ touch main_analysis.sas            ↓   ~~~main_analysis.sas を編集~~~            ↓   $ git add main_analysis.sas $ git commit –m ”create main_analysis.sas” $ git push origin develop    # develop ブランチへ push Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 50 / 59
  • 57. 実際のプロジェクト運用の例 コードの開発 • dev_function_1 ブランチを作成し(ブランチを切り)、main_analysis.sas に機能 1 を追加する $ git checkout –b dev_function_1 $ git push origin dev_function_1            ↓   ~~~main_analysis.sas を編集し機能 1 を追加~~~            ↓   $ git add main_analysis.sas $ git commit –m ” 機能 1 を追加”  # 日本語でも OK $ git push origin dev_function_1 # dev_function_1 ブランチへ push Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 51 / 59
  • 58. 実際のプロジェクト運用の例 プルリクエストを出す Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 52 / 59
  • 59. 実際のプロジェクト運用の例 プルリクエストを出す Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 53 / 59
  • 60. 実際のプロジェクト運用の例 マージする Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 54 / 59
  • 61. 実際のプロジェクト運用の例 develop ブランチの変更をローカルに反映する • ローカルで develop ブランチへ戻り、リモートでなされた変更 (dev_function_1 の統合)を pull コマンドにより反映する $ git checkout develop $ git pull origin develop • ブランチ移動は commit 後でないとできないので注意(stash コマンドと いう一時的な回避方法はある) • あとは同様に機能 2, 機能 3, …を追加していく Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 55 / 59
  • 63. さらなる話題 master ブランチが main ブランチに • リポジトリのデフォルトブランチ名が、2020 年 10 月より master ブラン チ -> main ブランチへと変更になるようです • 2020 年 10 月以前より存在するリポジトリでは変わらず master ブランチ がデフォルトのようです • 現在はまだ master として使用しても動作上の問題はありません Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 56 / 59
  • 64. さらなる話題 Git はコマンドラインでなくても使える • 今回はコマンドラインによる CUI での操作方法の紹介がメインであった • CUI はハードルが高いと感じる場合、GUI での操作が可能なツールも開発 されている(GitGUI, TortoiseGit, SourceTree, GitHub Desktop) • ただし、Git の機能をフル活用しようと思った場合は CUI の方が良い Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 57 / 59
  • 65. さらなる話題 GitHub がコマンドラインでも使える • GitHub CLI ver.1.0 が最近リリースされ、GitHub がコマンドラインでも使 用できるようになりました • Web ブラウザにアクセスして手動で行っていた作業をコマンドラインで 実現できます Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 58 / 59
  • 66. さらなる話題 運用ルールの策定 複数人や組織で使用する場合、ルールを策定することで運用がスムーズ になる • リポジトリの命名規則 • プルリクエストの記入項目(どのような変更を、どのような目的で行っ たのか?) • README に書く項目(ex. 各ディレクトリやファイルの役割, 動作環境, etc…引継ぎコストを下げる) • etc ... Yui Tomo (@tomoybs) 医療データ解析者へ向けた Git・GitHub 入門 October 25, 2020 59 / 59