ドキュメンテーションとバージョン管理と
今年最後のアウトプットということで、マウス合宿をもとに最近便利だったツールを幾つか紹介します。各ツールの使い方は適当にググッてください(雑)。
ドキュメンテーション
昔書いたソースコードを読みなおすのは意外にしんどいものです。こんな時にこそ、きちんとコメントを書くことの重要性を認識するのですが、具体的にどうすればよいかというと、よくわからなかったりします。
そこでDoxygenというツールを利用することを考えます。何かというと、ソースコードを解析することで、コメントからプログラムに関するドキュメントを生成するツールです。
具体的な作業としては、Javadocなどの書式に則ってコメントを書いていくことで、各関数の説明を記述していくだけです。
/** 関数の説明. * @note これはサンプルです * @param[out] a 出力引数の説明 * @param[in] b 入力引数の説明 * @return 戻り値の説明 * @see related_function() * @todo ToDo */ type function(type a, type b);
実際にはドキュメント化しないとしても、書式が固定されるためコメントを書きやすくなるのが利点だと思います。コメントをきちんと書いておくことは後からソースコードを読む際に重要ですし。
実際どんな感じになるのかは、例としてMRPT(私が研究で使っている、移動ロボット向けライブラリ)のドキュメントなどを見てもらうといいと思います。クラスの依存関係を図示したり、関数の引数にまで説明を加えることができます。
私に近いところでの用途だと、例えばサークル内でソースコードを共有するといった際に便利そうです。コメントの書き方が統一されますから。もちろん個人で使う分にも十分に便利でしょう。
バージョン管理
なにか大きな更新をするたびにプログラムをフォルダごとコピーし、「安定版」だの「大会用」だの、挙句「安定版2」「最新版1」とかなってしまっていませんか。こうなるともうどれが正しいプログラムかわかりません。これは困ります。
そんなときに便利なのがバージョン管理ツールです。「コミット」という作業をすることで更新を記録し、いつでも前の版に戻ったり、差分を確認することができます。
バージョン管理ツールとしてはSubversionとGitが有名で、マウス合宿ではTortoiseSVNというSubversionクライアントが紹介されていました。が、私はGitを使っています。単に研究室のファイルサーバーにインストールされていただけという理由なので、どちらか好きな方を使えばいいと思います。
ソースコードの管理だけでなく、PCで使用するファイルなら何にでも使えると思います。差分確認は無理かもしれませんし、リポジトリ(管理場所)の容量がひどい事になるかもしれませんが。