見出し画像

研究に便利なツールまとめ

情報系の博士学生をしていて使っているツールなどをまとめてみました.しばらく自宅待機で研究室に行けない研究室入りたての人,などの役に立てば幸いです.

筆者の環境

ラップトップとしてMacBook Pro,タブレット端末としてiPad Pro+Apple Pencilを使っています.また,主にUbuntuの外部サーバーにアクセスすることを前提としています.

論文を読む

論文を読む際にはGoodNotesを使って,研究テーマやプロジェクトごとに論文をまとめた上で書き込んでいます.iPadとMacで同期して使うと端末の特徴に合わせた使い方ができます.例えば,論文に書き込みながら読むのにはiPadの方が向いていますし,複数の論文をテーマに応じてまとめるのはMacのほうが楽な気がします.

スクリーンショット 2020-03-29 20.28.35

論文を管理する際にはMendeleyを使っています.Mendeley自体はサポートもあまり良くなく,使いにくいのですが,PDFファイルやbibファイルをドラッグ&ドロップで取り込むだけでbibファイルにまとめてくれるので便利です.また,PDFファイルからの情報抽出の精度が高い気がします.

論文を書く

普段論文を書く際にはTeXPadを使っています.TeXPadはテキスト入力と同時にタイプセットされるので,直感的にLaTeXを書くことができます.補完もそれなりに強く,執筆に集中できます.

画像2

共著者が増えてくるとオンラインでLaTeXを用いた執筆ができるOverleafも便利です.Overleaf上で多くの会議のテンプレートが配布されているのですが,日本語原稿の場合,Overleaf版を使うのが楽な気がします.ただし,大きな会議の締め切り直前にはOverleafがダウンすることもあるので,完全に頼るのは危険です.

私はOverleafとDropboxを連携させた上で,Dropbox上のファイルをTeXPadから執筆しています.これでMac上で快適に執筆して,共著者に最新版を確認してもらうことができます.ただし,共著者もOverleafで編輯する段階に入ったら,上書きなどを防ぐためにもOverleafに移行します.

なお,しばしばTeXの環境構築は面倒なのですが,TeXPadやOverleafを使えば基本的にその面倒はありません.

コードを書く

大学院に入って以来,ほとんどのコーディングはPythonです.統合開発環境としては主にPyCharmを利用しています.非常に多くの機能がありますが,特に補間やリファクタリングが強力なこと,テストやデバックの支援があることが便利な点です.最近はJupyter Notebookも自然に使えます.

1,2ファイル程度の簡単なプログラムを書くときにはVSCodeも使っています.VSCodeはリモートサーバーのファイルを編輯する機能もあり,一時期使っていたのですが,結局後述するrsyncでの運用に戻りました.

実験設定はhydraを使ってyamlにまとめています.複数のyamlファイルをまとめた設定を記述できるので,設定の間違いが減る気がします.情報系研究者のためのtips 2019年度版にもあるように

「機能をオンにする」 フラグを書き、「機能をオフにする」フラグは書かない

設定を書くと,あとで楽です.しばしば実験ログの上書きなどという問題があるかと思いますが,hydraは実験時の出力をoutputs以下のよしななディレクトリにまとめてくれるので便利です.

テストにはpytestを利用しています.間違いがあると致命的そうな函数に対してはテストを書いておいたほうが良いですが,大体バグは問題ない,と思ったところにあります.

実験をする

研究室では複数のサーバーが利用可能なので,Mac上で開発を行い,rsyncを使って現在使えるサーバーと開発レポジトリを同期しています.この運用はD. Tran兄貴の記事に教わりました.

rsync -avz --delete --exclude-from $HOME/.rsync_exclude $PWD server:

ただ,実験のログなどは同期によって削除されたくないので,.rsync_excludeにrsyncに処理されたくないディレクトリやファイルをまとめています.

.idea
notebooks
outputs
results
...

プロジェクトごとに仮想環境を使い分けるためにcondaとdirenvを使っています.condaはPythonの環境構築に行い,direnvはディレクトリ以下の環境変数を変えます.例えば以下はenvnameという仮想環境を作り,project_dirではenvname環境を利用するようにしています.(2020/04/19:$HOME/.direnvrcを設定することで以下が使えます).

conda create -n envname python=3.8
conda install foo bar

cd project_dir
echo "layout conda envname" >> .envrc
direnv allow

リモートサーバー上ではターミナルを分割するtmuxを使って複数の実験を行えるようにしています.接続が切れても処理が終わらないのも便利です.画面右側はglancesnvtopでプロセスの監視をしています.

スクリーンショット 2020-03-29 22.08.39

巨大なデータセットのダウンロードや重みなどのバックアップにはrcloneを利用して,研究室のGoogle Driveにコピーしています.rcloneはrsyncのようなコマンドでGoogle DriveやDropboxとのファイル共有が可能です.

rclone copy -v remote:datasets/imagenet.tar .
rclone copy -v project_dir remote:project_dir

管理

研究のアイディアや,Todo,指導教員とのミーティングなどの文書はDropbox Paperにまとめています.数式が表示できること,他の文書とリンクできること,ある文書に書いたtodoが一覧できること,複数人と編集できるなど,便利です.

スクリーンショット 2020-03-29 22.47.22

そのほか

GitHubPyCharmは学生の場合は上位版が無料で使えます.

この記事が気に入ったらサポートをしてみませんか?