B IT ツール
いくつかの便利なツールについて紹介します。
B.1 Git と GitHub
Git は バージョン管理システムで、GitHub はそれを、活用し、かつ他のメンバーと協力して開発など、さまざまな活動をするためのサイトです。公開が基本となっています。非公開にすることも可能ですが、公開することで、世界中のひとたちと協力していくことが可能になりますので、その利点も学んでいただければと思います。
B.1.1 概要
RStudio で R を使っている場合、Git-GitHub-RStudio の連携で使うことをお勧めします。しかし、これらは、三つとも、まったく異なるものですから、簡単な概要を書いておくことにします。
B.1.1.1 Git
これは、ファイルのバージョン(更新履歴)の管理システムで、単独で機能します。他の、プログラムなどに関係しない、他の文書ファイルであっても、バージョンを管理する場合に活用できます。特に、テキスト・ファイルの場合には、どこがどう改訂されているかを確認することもできます。また、基本的には、Unix の Shell プログラムで動作させるのが一般的です。Mac は、Unix システムの上に構築されているため、最初から、ユーティリティ(Utility)> ターミナル(Terminal)で、Shell コマンドが利用可能になっていますが、Windows の場合には、bash と呼ばれる Shell プログラムをインストールすることをお勧めします。Windows システムについてよくご存知の方は、他の方法を使っていただいて構いませんが、Git のインストールの時に、Git bash を選択して、簡単に インストールできますし、Unix システムの基本を理解するチャンスでもあり、Mac とも同じ環境で説明できますから、ここでは、そちらを使います。Shell コマンドは、R Studio の中のターミナルを使って、利用することも可能です。(注:Windows のコマンド・プロンプト、または、パワー・シェルをお使いの方は、利用環境が変化する可能性がありますから、そのまま使われる方が良いかもしれません。)
基本的なコマンドとしては、以下のものがあります。いまは、このようなものがある程度に、眺めておいてください。
-
git init
: 特定のディレクトリ(フォルダ)で バージョン管理を始める時に使います。 -
git status
: 現在の状況を確認するときに使います。 -
git diff file_name
: ファイルへの変更を確認します。 -
git log
: 過去の commit による履歴を確認する時に使います。 -
git add file_name
: ステージングという中間的な場所に登録します。 -
git commit -m "log message here"
: ステージングにあるものを、確定させます。引用符で囲まれた短いコメントを加えます。50文字が上限です。 -
git help
: Help のリストが表示されます。- 例:
git help init
などと入力すると、説明を見ることができます。
- 例:
B.1.1.2 Git Hub
Git でバージョン管理されているディレクトリ(フォルダ)の状態を示す、クラウドサービスです。更新されている、状態を確認するとともに、変更履歴なども確認できます。また、Git Hub サービスを利用して、ファイルを公開、共有することも可能です。Pages サイトを利用することで、ホームページとして HTML ファイルなどを公開することもできるため、レポートを公開したり、この電子書籍のように、bookdown
パッケージを利用して作成したものを、インターネット上に公開することも可能です。
お気付きかと思いますが、この電子書籍も、リンクされている、他の文書も、URL(アドレス)をみると、GitHub になっていますし、パッケージや、データなども、GitHub へのリンクが示されている割合が、非常に高いと思います。
最初に、Git で管理されている、ディレクトリ(フォルダ)(これを、ローカル・リポジトリと言います)と、GitHub 内のリポジトリ(リモート・リポジトリまはたアップストリーム・リポジトリと言います。ここでは、リモート・リポジトリと呼ぶことにします)を結びつけるステップが必要です。
B.1.2 はじめかた
- Git のインストール
- Windows と Mac で異なりますので注意が必要です。Mac については、Mac と書いてあるところを読んでください。
-
Windows の場合は、git-scm にアクセスしてダウンロード、インストールしてください。セットアップ(Setup)で、2箇所、注意点があります、それ以外は、すべて、初期設定のままで変更は必要ありません。
- Choosing the default editor used by Git: 設定で、エディタ(Editor)を設定しますが、vi, vim に慣れていない方は、nano を選択することをお勧めします。(nano25 は、メニューが下に出るので、それを見て操作することが可能なエディターです。)
- Adjusting Your Path Environment: Windows の コマンドライン・ツール(command line prompt) を使っていない方は、Git Bash のインストールを選択してください。さらに、Git and optional Unix tools from the Windows Command Prompt を選択することをお勧めしますが、上で書いたように、Windows の コマンド・プロンプトになれておられる方で、それを使い続けたいかたは、Use Git from Git Bash only を選択されるのが良いかもしれません。
- 最後に、RStudio の設定(Tools > Global Option)で、Terminal から、Git Bash を選択26し、Tools から、New Terminal を選択27します。
-
Mac は、最初から、Install されていると思います。ユーティリティ(Utility)> ターミナル(Terminal)を開いて28、
git --version
とすると、インストールされているバージョンが表示されると思います。バージョンがでない場合には、Install するかと聞かれます。このときに、Git だけをインストールすることも、Xcode という開発環境を同時にインストールすることも可能です。(インストールするように指示が出なければ、App Store からも、インストールできます。もし、そのあとで、git などのコマンドで xcrun: error などとエラーが出たら、xcode-select --install
としてください。)インストールが終了したら、もう一度、git --version
と Terminal に入力して、結果を確認してください。
- GitHub のアカウント取得
- GitHub サイト に、アカウントを作成します。アカウント名は、短く、分かりやすく、覚えやすいものをよく考えて決めてください。Email Address だけで、無償で作成できます。
- RStudio の 左下の窓枠のTerminal タブ29から、GitHub アカウントに連携する設定を行います。 下の2行を、1行ずつ、コピーして、Terminal に入力してください。
git config --global user.name "Your Name" # GitHub の User Name
git config --global user.email "your@email.com" # GitHub に登録したメールアドレス
- RStudio の、Tools > Global Opton の、Git/SVN タブを開き、Git Executable とあるところに、Git 実行プログラムのある場所を入れます。
-
Windows の場合は、
C:/Program Files/Git/bin/git.exe
だと思いますが、Browse ボタンから確認してください。 -
Mac の場合は、
/usr/bin/git
になるかと思いますが、Browse ボタンから確認してください。
その下に、Create RSA key とありますから、それを押し、Create ボタンを押しててください30。すると、View RSA key から、暗号キーも確認できます。(この作業は、Terminal から、
ssh-keygen -t rsa
として作成することも可能です。この作業で、~/.ssh/
内に、SSH キーが記述されたファイルが作成されます。)GitHub アカウントで公開鍵を利用できるようにします。まず、RStudio の方で作成した、RSA key (Tools の、Global Option の Git/SVN)の下にある view を押すと見ることができ、上に、書いてあるように、そこに出てきたものを、コピーします。次に、GitHubにログインし、右上のアイコンの右の三角から、設定(Setting)を選択し、SSH公開鍵(SSH and GPG Keys)を選択します。新しい公開鍵を追加(New SSH Key)を選択すると、SSH キーを貼り付けることができます。(リポジトリの左上にある、アカウント名をクリックし現れるダッシュボードの左上の大きなアイコンをクリックしても「アカウント設定」が現れ、SSH and GPG Keysを見つけることができると思います。)
(なお、RStudio ではなく、Terminal からコピーするときは、Unix では、pbcopy < ~/.ssh/id_rsa.pub
などとします。Windows の場合は、pbcopy
が使えない可能性があるので、そのときは、Terminal から、Git Bash を使い、use < ~/.ssh/id_rsa.pub
とします。Terminal に慣れておられない方には、上に紹介した、RStudio からコピーする方が簡便かと思います。)
- これで設定終了ですので、R Studio を再起動させてください。
B.1.3 GitHub にあるリモート・リポジトリ(Remote Repo)から始める場合
- GitHub にログインして、既存のリポジトリを開きます。
- Code の、Clone から、リンク先のアドレスを入手。https と SSH を選べますが、SSH を選び、コピーします。
- RStudio から、New Project とし、Version Control を選択し、ディレクトリーを決めたら、上でコピーした、ものを、貼り付けて、Project を作成します。
この手続きで、リモート・リポジトリのファイルがすべて、RStudio のプロジェクトに入ります。
実はこの手続きで、公開されている、他のリポジトリも取り込むことができます。ただし、編集して、改訂していくには、自分のリポジトリに、繋ぐことになります。そのときは、次の項目を見てください。
B.1.4 自分のコンピュータのリポジトリ(Local Repo)から始める場合
- RStudio から新しい、プロジェクト(Project) を作成
test0
としておきましょう。 - GitHub に、新しい、レポジトリを作成して繋げる
- 自分の GitHub アカウントに、新しい、レポジトリをプロジェクトと同じ名前
test0
で作成します。同じ名前でなくてもかまわないのですが、関連がしやすいので、同じ名前がお勧めです。 - Quick Setup というページが表示されますから、その、下の Set up in Desktop or の右から、https と SSH を選べますが、SSH を選び、コピーします。
- プロジェクトの中の 左下の窓枠の、Terminal から次を実行します。
echo "# Project test0" >> README.md # REAME の表題を書きます。
git init
git add README.md
git commit -m "First commit. README.md"
git branch -M main
git remote add origin `git@github.com:icu-hsuzuki/test0.git`
# わたしのアカウントの場合には、コピーしたものを貼り付けると、上のようになります。
git push -u origin main
再起動すると、プロジェクトの右上の窓枠に、Git と表示されていると思います。開いて、いくつかファイル名があれば、これを選択し、Commit ボタンを押し、短い message を書いて、Commit とし、そのあとで、Push ボタンを押してください。 HEAD -> main
と表示されれば、OK です。
B.1.5 GitHub Pages について
GitHub は、Web 上のサービスですが、たとえ、リポジトリーの中に、HTML ファイルなどが存在しても、ブラウザーで表示させることはできません。公開する方法として、わたしは、以下のようにしています。
公開しブラウザーで読めるようにしたいファイルを、docs
という ディレクトリに入れます。Setting を選択し、左の帯から、Pages を選び、Branch を、main
、/docs
として、Save します。すると、docs に入っているファイルは、リンクを指定すれば、ブラウザーで、見ることができます。
リンクは、まず、リポジトリーの右上の、About の右のギアマークから、Use your GitHub Pages website に、チェックを入れると、URL が表示されますから、その URL に続けて、ファイル名を加えたものが、そのファイルの、リンクとなります。
B.1.6 Bookdown パッケージによる、電子書籍の執筆
bookdown を利用して、始める方法を簡単に記します。
Git-GitHub-RStuio の設定は済んでいると仮定して書きます。また、Bookdown を利用するには、bookdown
パッケージのインストールが必要です。RStudio の Tools から、Install Packages を選択して、インストールしてください。また、bs4_book
スタイルを利用する場合は、RStudio などのバージョンによっては、bslib
と downlit
も、インストールする必要があるようです。
以下では、R Studio で新しい、プロジェクトとして始める場合と、テンプレート・リポジトリ を使う方法を説明します。
B.1.6.1 RStudio での設定
- 新しい book プロジェクトを始めます、標準設定の
book
と、bs4_book
を選択できます。このディレクトリ(フォルダ。ローカル・リポジトリと呼びます)の名前をリモート・リポジトリの名前と同じにして、作成します31。 - Files の、Rename 機能を使って
_book
ディレクトリ(フォルダ)の名前を、docs
に変更します。 -
_bookdown.yml
を編集し次の行を加えます(私は2行目に入れています)。output_dir: docs
GitHub Pages の機能を使って、公開するための変更です。 - @GitHub: 新いリポジトリー(リモート・リポジトリと言います)を作成します。ローカル・リポジトリと同じ名前にし、簡単な説明を加えます。
- 左下の窓枠から、Terminal タブを選択します。 以下は例です。
git remote add origin
のところは、適当に変更してください。
echo "# ds-book" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:icu-hsuzuki/ds4aj.git # 変更
git push -u origin main
- RStudio を一旦終了し、もう一度、そのプロジェクトを立ち上げると、右上の窓枠に、Git タブが表示されるはずです。
- Build から、Build Book ボタンを利用すれば、作成されます。
- Git タブから: Commit “first build” とし、 Push をします。
- @GitHub: Settings から、Pages > main > docs と変更すると、公開されます。
- Code に戻り、About の右のギアマークから、
B.1.6.2 テンプレートを利用する方法
B.1.6.2.1 bookdown-demo
bookdown
の電子書籍(bookdown: Authoring Books and Technical Documents with R Markdown) の、はじめてみよう(Get started)から、GitHub リポジトリー rstudio/bookdown-demo にリンクがついています。
- 自分の、GitHub アカウントに、ログインします。
- rstudio/bookdown-demo にアクセスし、Use this template から、create a new repository を選択します。
- 自分のアカウントの中に、コピーされたリポジトリーがつくられます。
- 上で説明した「GitHub にあるリモート・リポジトリ(Remote Repo)から始める場合」を利用してください。
よくできているテンプレートです。しかし、このままでは、公開されません。bookdown: Authoring Books and Technical Documents with R Markdown には、いくつかの公開方法が書かれていますから、参照してください。
B.1.6.2.2 jtr13/bookdown-template
YouTube ビデオ 5分間で、bookdown の本を作成する方法(How to create a bookdown book in 5 minutes) で紹介されているものです。
- 自分の、GitHub アカウントに、ログインします。
- jtr13/bookdown-template にアクセスし、Use this template から、create a new repository を選択します。
- 自分のアカウントの中に、コピーされたリポジトリーがつくられます。
- 上で説明した「GitHub にあるリモート・リポジトリ(Remote Repo)から始める場合」を利用してください。
ビデオの中では、簡単に、GitHub Pages(GitHub のホームページサービス)に、公開する方法が説明されています。最も、大切な部分は、テンプレートがコピーされた、自分のリポジトリの Settings から、Pages を選び、Branch を main > docs とする部分です。このようにすることで、公開されます。上の、「GitHub Pages」で説明していることと同じです。
B.1.6.2.3 日本語テンプレート
bs4_book
スタイルでの、簡単な、日本語テンプレートを作成しました。
- 自分の、GitHub アカウントに、ログインします。
- icu-hsuzuki/bs4_book_template にアクセスし、Use this template から、create a new repository を選択します。
- 自分のアカウントの中に、コピーされたリポジトリーがつくられます。
- 上で説明した「GitHub にあるリモート・リポジトリ(Remote Repo)から始める場合」を利用してください。
まだ、不十分ですが、少しずつ、改訂していきます。 使い方は、リポジトリの README に、注意点などは、最後の章 Bookdown に書いておく予定です。
B.1.7 大きなファイルに関すること
100M 未満のファイルだけを利用するのがよいですが、それより大きいものを、GitHub に挙げようとして、問題が起こることがあります。その対処法を書いておきます。
個人的には、大きなデータや、本などを、Build して、100M 以上の、非常に大きな、TeX 関連のファイルができることがありました。
備忘録も含めて、書いておきます。
B.1.8 複数のコンピュータから利用する方法
わたしも、いくつかのコンピュータから、同じGitHub アカウントにアクセスして作業しています。
同じSSHキーを、複数のコンピュータで利用することも可能です。特に、コンピュータの更新時に、移行する場合は、元の環境をそのまま使うことも可能で便利です。
ただし、基本的には、それぞれのコンピュータで別々のSSHキーを使用するのがお勧めです。問題が発生した時に、個別のコンピュータの課題として解決することができます。
(たとえば、RSA 形式で作成した)複数の SSH キーを使用するときは、GitHub アカウントに公開鍵を追加する必要があります。
GitHub アカウントに別の公開鍵を追加するには、GitHubにログインし、右上のアイコンの右の三角から、設定(Setting)を選択し、SSH公開鍵(SSH and GPG Keys)を選択します。新しい公開鍵を追加(New SSH Key)を選択すると、SSH キーを貼り付けることができます。(リポジトリの左上にある、アカウント名をクリックし現れるダッシュボードの左上の大きなアイコンをクリックしても「アカウント設定」が現れ、SSH and GPG Keysを見つけることができると思います。)
コピーを貼り付ける時には、RStudio の、Global Option の、Git/SVN タブから、View public key を見ると、コピーできるようになっています。
Terminal からコピーするときは、Unix では、pbcopy < ~/.ssh/id_rsa.pub
などとします。Windows の場合は、pbcopy
が使えない可能性があるので、そのときは、Terminal から、Git Bash を使い、use < ~/.ssh/id_rsa.pub
とします。Terminal に慣れておられない方には、上に紹介した、RStudio からコピーする方が簡便かと思います。
SSH キーの最後には、コンピュータ名とコンピュータのアカウント名などが入っていると思います。
この設定をすれば、どちらのマシンからでもSSH経由でGithubリポジトリにアクセスできるようになります。
B.1.9 複数のアカウントを一つのコンピュータから利用する方法
わたしも複数のGitHub アカウントを利用しています。
- ~/.ssh 内に 複数(例では三つ)、ssh-keygen -t rsa でファイル作成
- id_rsa , id_sub1_rsa, id_sub2_rsa
- 上の複数のコンピュータから利用する時に説明してあるように、SSH キーを GitHub に登録
- ~/.ssh 内の config ファイル(~/.ssh/config)を編集 (nano などを利用)
- ~/.gitconfig, ~/.gitconfig_sub1, ~/.gitconfig_sub2 を作成
詳しくは、参考にしたサイトを参照してください。
B.1.10 共同作業をする場合
以下では、ひとり管理者(とりまとめ役)がいて、その人がまずは、レポジトリーを作成し、何人かの編集者で、共同編集することを想定して、書きます。内容は本でなくても、プログラムでも、ノートでも構いませんが、イメージしやすくするため、本を編集することを想定して書いていきます。
編集に関わる全員が、それぞれ、個人の、GitHub アカウントを作成します。
リポジトリを フォーク(Fork): 共同編集する(本の)レポジトリ(オリジナル・レポジトリと呼ぶことにします32)にいき、フォークします。フォークすることで、編集者のリポジトリに、コピーが作成され、大元のリポジトリ(オリジナル・レポジトリ)の変更を依頼することができます。名前をつけますが、元のものと同じでも、フォークしたことがわかるようにしておいても良いでしょう。
- 一回フォーク(Fork)したら、2度目以降は、オリジナル・レポジトリから、フォーク(Fork)する必要はありません。ただし、改訂されているかもしれないので、更新(Sync fork)する必要はあります。GitHub 上の、フォーク(Fork) した、自分のレポジトリを見ると、更新されている場合は、オリジナル・レポジトリーに、Sync することができますから、Sync し33、最新の状態にしておきます。よくみると、オリジナル・レポジトリーとの関係が読み取れるかと思います。
(フォークした)リポジトリをクローン: 編集者のコンピュータにフォークして得られたリポジトリを、クローンし、自分のコンピュータ内に、ローカル・リポジトリを作成ます。
RStudio の右上の、Git タブの右にある、New Branch に、新しい、Branch(編集用枝)を作成します。すると、その右に、Branch 名が記載されます。それが、現在の Branch 名です。その右の三角を押すと、main など、すべての Branch が見えるはずです。編集のための Branch が表示されている(アクティブ)になっていることを確認します34。
編集: 編集者のコンピュータ(RStudio 上)で編集を行います。
編集結果をコミット : 編集者のコンピュータで編集した後に、簡単な説明を書いて、コミットします。
編集結果をプッシュ : フォークした GitHub の自分のリポジトリに、プッシュします。
- 実際にどうなるかをみるために、Build をする場合もあるかもしれませんが、すると、たくさんのファイルが書き換えられます。管理者も、一つ一つ丁寧に見るのは大変ですから、実際に、書き換えた、Rmd ファイルなどだけに、チェックを入れて、Commit + Push するのも良いでしょう。
- この時点で、RStudio 上の、Branch を main に戻しておくと良いでしょう35。
- プル依頼を作成 : フォークした自分の(リモート)リポジトリで、編集の内容を簡単に記述して、プルリクエスト(Pull Request)をします。
- 編集して、プッシュした、Branch を選択し、オリジナル・レポジトリーと異なった状態であることを確認します。
- Pull Request を選択します。
- オリジナル・レポジトリーの管理者は、修正をしやすいように、修正の要点を書いておきます。
- ここまでで終了です。管理者にメールが届きます。
- このあと、編集者が何をするか、確認してください。
- 管理者:編集結果の確認 : オリジナル・リポジトリの所有者は、編集結果を確認し、承認する場合は、main に、統合(マージ)します。
- 統合(マージ)すると、Pull Request をした編集者に、メールが届きます。
- 変更の同期: 編集者は、承認された、オリジナル・リポジトリを、フォークした自分のリポジトリに、同期(Sync Fork)させます。
- 自分のコンピュータ上の、ローカル・リポジトリの main branch も(アクティブな、Branch 名を確認して)Pull をして、更新しておくと良いでしょう。
- 少し、複雑な、変更の場合には、注意が出ます。詳細は省略しますが、Terminal で、一つの選択肢の、
git config pull.rebase true # rebase
を入力して、それから、もう一度、Pull をすると良いでしょう。これによって、オリジナル・リポジトリと同じ状態を維持することができます。
B.1.10.1 要点
- フォークして作成したリポジトリ(リモートも、ローカルも)の、main branch は、オリジナル・レポジトリと同じ状態にしておく。
- 編集は、編集用に、branch を作成して、その branch を、リモート・リポジトリにプッシュして、プル・リクエストを行う。
- プル・リクエストの結果が反映されたら、リモートも、ローカルも、同期しておく。
- プル・リクエストが反映される前に、また編集するときは、別の branch を作成して、また、プル・リクエストをするのがよいでしょう。
- 管理者は、merge で、編集結果を反映するときに、注意を要しますから、管理者が編集結果を反映しやすいように、丁寧に、プル・リクエストのときの説明をしておくのがよいと思います。
B.1.11 参考にしたサイト
B.1.11.1 Git - GitHub - RStudio 関連
-
git – everything is local
- About、Documentation など
- GitHub Docs: Hellow World
- 基本的なことがコンパクトにまとまっている GitHub のサイトです。日本語もサポートしています。
- Introduction to Data Science, by Rafael A. Irizarry
- Git and GitHub
- edX の、データサイエンスのコースの教科書に入っています。よく、まとまっていると思います。原語は英語ですが、Google などの翻訳機能を使っても、十分理解することができると思います。Git と GitHub の概要から、Bookdown パッケージによる、電子書籍の執筆の前までは、基本的に、この教科書を参考にしていますが、それぞれのステップでの、スクリーンショットもたくさん掲載されており、確認がしやすいようになっています。
- Git-GitHub-RStudio: 個人的メモ
B.1.11.2 Bookdown 関連
The bookdown book: https://bookdown.org/yihui/bookdown/
The bookdown package reference site: https://pkgs.rstudio.com/bookdown
How to create a bookdown book in 5 minutes: https://www.youtube.com/watch?v=m5D-yoH416Y