SlideShare a Scribd company logo
1 of 66
Download to read offline
医療データ解析者へ向けた 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

What's hot

Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Shintaro Fukushima
 
ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法Masaru Tokuoka
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法Nagi Teramo
 
畳み込みネットワークによる高次元信号復元と異分野融合への展開
畳み込みネットワークによる高次元信号復元と異分野融合への展開 畳み込みネットワークによる高次元信号復元と異分野融合への展開
畳み込みネットワークによる高次元信号復元と異分野融合への展開 Shogo Muramatsu
 
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成MobileRoboticsResear
 
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日Kitsukawa Yuki
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析Mayumit
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析Mitsuo Shimohata
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会takehikoihayashi
 
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用nmaro
 
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】Hiroyuki Muto
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデルMasashi Komori
 
データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法Tatsuya Shirakawa
 
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical FlowRAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical FlowMasanoriSuganuma
 
5分でわかるかもしれないglmnet
5分でわかるかもしれないglmnet5分でわかるかもしれないglmnet
5分でわかるかもしれないglmnetNagi Teramo
 
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptxARISE analytics
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Takashi J OZAKI
 

What's hot (20)

Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 
ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法
 
R高速化
R高速化R高速化
R高速化
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
 
畳み込みネットワークによる高次元信号復元と異分野融合への展開
畳み込みネットワークによる高次元信号復元と異分野融合への展開 畳み込みネットワークによる高次元信号復元と異分野融合への展開
畳み込みネットワークによる高次元信号復元と異分野融合への展開
 
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
 
PRML第3章@京大PRML輪講
PRML第3章@京大PRML輪講PRML第3章@京大PRML輪講
PRML第3章@京大PRML輪講
 
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
 
Juliaで並列計算
Juliaで並列計算Juliaで並列計算
Juliaで並列計算
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用
 
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
 
データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法
 
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical FlowRAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
 
5分でわかるかもしれないglmnet
5分でわかるかもしれないglmnet5分でわかるかもしれないglmnet
5分でわかるかもしれないglmnet
 
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx
【論文読み会】PiCO_Contrastive Label Disambiguation for Partial Label Learning.pptx
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
 

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

@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門Takashi Imagire
 
GitHub勉強会
GitHub勉強会GitHub勉強会
GitHub勉強会ArusuDev
 
GitHub勉強会~当日資料~
GitHub勉強会~当日資料~GitHub勉強会~当日資料~
GitHub勉強会~当日資料~Shintaro Mizuno
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月Kazumi IWANAGA
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版VirtualTech Japan Inc./Begi.net Inc.
 
Git_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdfGit_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdfYoshiki Tanaka
 
色んな環境用の たった一つの.gitConfig
色んな環境用の たった一つの.gitConfig色んな環境用の たった一つの.gitConfig
色んな環境用の たった一つの.gitConfigwataru uchiyama
 
GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順
GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順
GitHubの基礎からプログラム管理、そしてプログラムコードを論文に公開するまでの手順Hayato Yamanouchi
 
Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Makoto Kawano
 

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

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

医療データ解析者へ向けた 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