京都大学大学院経済学研究科准教授 山﨑潤一
(2023年に書いてます)
目次
なるべく簡単に、異なるマシン間で同じ結果や作業環境を担保するためのセットアップガイドです。これさえあれば、
などの研究者にとっては厄介なトラブルからオサラバできるはずです。ついでにGitというバージョン管理ソフト/GitHubというWebサービスを使うので、draft_final.tex
, draft_final2.tex
, draft_final_final.tex
…などの後から見返したら完全に謎なファイルたちの出現を抑えたり、協業をスムーズにすることができます。
基本的に全て無料です。強いていえば、rawデータを保存しておくストレージは有料な可能性がありますが、大学で利用可能なストレージ等を使えば良いでしょう。
セットアップにはDockerとGitを使います。
Rを使って分析するDockerのコンテナと、Latexをコンパイルするためのコンテナの二つを使い分けます。二つをまとめた自作のものを用意した方がスッキリするのですが、維持管理するコストが高いので、やめました。自前でdockerのイメージ作成をする必要がなく、必要に応じてR→Pythonなどとコンテナを入れ替え可能なので、応用しやすいと思います。
説明の便宜上、この研究プロジェクトには管理者と作業者の役割を担う人たちがそれぞれいるとします。単独で行うプロジェクトの際は、管理者の役割も行うことになります。特定の役割の人のみ必要な作業等は、適宜(管理者向け)などと記載します。
山﨑がmacを使っているのでmac的な言葉遣いになっていますが、ターミナル→コマンドプロンプト、cmd
→ ctrl
と読み替えればwindowsでもほぼ同じはずです。
Docker Desktopをマシンにインストールする
VSCodeをマシンにインストールし、Remote Developmentのextensionをインストールする
Gitをマシンにインストールし、GitHubのアカウントを取得する
GitHubの画面右上からsettings→Developers Settings→Personal Access TokensからTokens (classic)を選択し、適当な名前をnoteに書き(access_github
など)expirationをno expirationに設定、repoだけにチェックを入れ、Generate Tokenする。これでGitHubとの接続時に使うパスワードが得られる。後で使うので手元のテキストファイルにメモしておく。これでrepositoryの内容を書き込むアクセス権のためのパスワードとして使える。複数台所持していても同じパスワードで大丈夫。一回しか表示されないので、忘れた場合は消して再度作成する。2台目に入力する際に忘れていても、追加で作成して違うパスワードを入れても良い。ただしパスワードの管理は厳重に(ネット上に上げないこと)!
(管理者向け)
テンプレートとなるリポジトリyamasaki/r-latex-researchenvのページに行き、緑色のUse This Templateボタンをクリック、Create a new repositoryを選択。ここで自分の新しいプロジェクト名などを設定し新しくリポジトリを作成。リポジトリはprivateにしておく。include all branchesはチェックなしで基本的にok。
aで作成したリポジトリから、code→HTTPS→アドレスの右側に出る二重四角のボタンを押してアドレスをコピー
その後、ターミナル画面でGit関係のファイルをおきたい場所(適宜documents/git
などとすると良いかも)まで移動してから、git clone さっきコピーしたアドレス
とうつ。するとユーザー名とパスワードを求められるので、tokenでのログインを選択し、GitHubでのユーザー名と上で発行したpersonal tokenをパスワードに入力する。そうするとGitHubから手元にファイルがダウンロードされる。
最低限必要なコードなどを適宜追加して、ターミナルでdocument/git/デポジトリの名前
にcdする。そこから以下のようにコミット(記録)、GitHubにプッシュ(GitHubサーバーにローカルの内容を同期)する。ただし、初めてgit push
する際には、ユーザー名とstep4で作ったトークンをパスワードとして入力する必要がある。
git add . # 変更内容を全てコミット(記録)対象にする
git commit -m "initial commit" # コミット
git push # コミット内容をGitHub側に同期させる
必要な生データをdropboxなどでチームメンバーに共有する。その入手方法(dropboxのリンクなど)をreadme
に記載するなどしてプロジェクトメンバーに知らせる。