はじめに
卒論・修論のために解析する方、日頃から解析する方等いるんじゃないかと思います。そういう方向けの記事です。
3年越しに最適化してきたフォルダ構成を示しますので、参考にしてもらったり、いやこうした方が良いよとかフィードバックをいただけると幸いです。
2年前のものはこちら:
解析において僕の考える最強のフォルダ構成 - Qiita
環境
一応環境は、Windows10, 64bit, git bash, matlab 2015bを使っていますが、記事内容的には全然関係ないです。
フォルダ構成
tree.rb
したものをある程度編集したのが下記のとおりです。役割ごとにフォルダを切り分ける、という当たり前のことをしてファイルが散らかるのを防ぎます。
pythonも、matlabもこんな感じでできる(僕は普段matlabです)と思いますが、R言語はどうなんでしょう。分かったら記事にします。
なお、拡張子があればファイルを、/
があればフォルダを示します。
$ tree.rb
project-root
|-- README.md
|-- .gitignore
|-- data/
| |-- data1/ # data保存フォルダ 1
| `-- data2/ # data保存フォルダ 2
|-- experiments/
| |-- category1/
| `-- category2/
| |-- experiment1.m
| `-- experiment2.m
|-- libs/
| |-- +common/
| | |-- FigureGenerator.m
| | `-- Utility.m
| |-- +la/
| | |-- hessian.m
| | `-- jacobian.m
| |-- tests/
| | `-- runtests.m # tests/unittest/*Test.m を実行してテスト結果を返す関数を置く。test-driven-developmentが可能になる。
| `-- yaml/
| `-- YAMLMatlab_0.4.3/ # 非常に有用な外部ライブラリ. res/以下にあるyamlファイルを読む
|-- output/
| |-- docs/
| | |-- others/
| | |-- paper/
| | | |-- yyyy-mm-dd-first-paper/
| | | `-- yyyy-mm-dd-second-paper/
| | `-- thesis/
| | |-- bachelor/
| | `-- master/
| |-- refs/
| `-- slides/
| |-- conference/
| | |-- yyyy-mm-dd-conference1/
| | |-- yyyy-mm-dd-conference2/
| | `-- yyyy-mm-dd-conference3/
| |-- defense/
| | |-- bachelar-midterm/
| | |-- bachelar-final/
| | |-- master-midterm/
| | `-- master-final/
| |-- discussion/
| | |-- yyyy-mm-dd-discussion.pptx
| | `-- yyyy-mm-dd-discussion.pptx
| `-- others/
|-- res/ # yamlはlibs/yaml/*以下のYamlMatlabでmatlab変数にコンバートされる。その他プログラミングに関係するファイルを置く
| |-- const.yaml
| `-- litrconst.yaml
|-- results/ # experiments以下のフォルダ・ファイル名と対応するようにresults/以下にフォルダ等を作る
| |-- category1/
| `-- category2/
| |-- experiment1/
| `-- experiment2/
| |-- data1/
| `-- data2/
|-- scripts/ # 全スクリプトファイルから呼ぶような共通処理を置くフォルダ。
`-- tests/
|-- implementation/ # 実装用のplaygroundフォルダ
`-- unittest/ # unittestのtest suiteを置いておくフォルダ。
|-- HelperTest.m # helper class' test class
`-- LATest.m # linear algebra functions' test class
フォルダの説明
experiments, scripts, results, libs, data, res, testsがプログラミングに関係するフォルダです。役割は次の表のとおりです。
folder | description |
---|---|
experiments | 検証用スクリプトをたくさん置く |
scripts | 共通スクリプト |
libs | 関数ファイルをたくさん置く |
data | 解析に使う元データを置いておく |
results | 解析結果を保存するフォルダ。 experimentsと対応したフォルダ構成にすると良い |
res | プログラミングに使うけどソースコードでないもの、たとえばyamlファイルや、その他設定ファイルを置きましょう |
tests | test classをたくさん置いておきます |
プログラムは置かないけど、研究上大事なフォルダはoutputとして切り分けます。
folder | description |
---|---|
output | 研究のアウトプット。slideと、docsと、refsとかに大別されるかなと。 発表スライドなどはslideに、論文や卒論・修論はdocsに置きましょう。 |
なお、フォルダ名に日本語を使うのは絶対にやめましょう。プログラミング出来ない人だと思われます。
結言
上記のファイル構成が全部なので、細かい解説は書かないです。読み取ってください。
質問があればコメントでお願いします。
2017/11/19追記
最近少し再読されているようなので追記します。
下記のPythonテンプレートジェネレータも有効だと思います。ご利用ください。
CookieCutter for DataScience in Python
私は未だ試したことないのでなんともコメントできませんが、data scienceにおけるrails, djangoの様になるかもしれません。