[ English | Japanese ] [ 地球流体電脳倶楽部 / dcmodel / RDoc F95 / SIGEN.htm ]

チュートリアル: RDoc による数値モデルの自動ドキュメント生成


  1. RDoc とは?
  2. 概要
  3. インストール
  4. インストール (Debian GNU/Linux の場合)
  5. インストールの確認
  6. サンプル Fortran 90/95 プログラム作成
  7. RDoc によるドキュメント生成
  8. RDoc の便利な機能を使ってみる
  9. TeX を MathML で表示する
  10. RDoc ドキュメントのサンプル
  11. 参考資料

RDoc とは?

Ruby Documentation System (RDoc) とは, Ruby で書かれたソースコードから ドキュメントを自動生成する, Ruby 本体に付属する標準ライブラリの1つです.

RDoc は Fortran 90/95 で書かれたソースコードからも ドキュメント生成を行うことができます. Fortran 90/95 の解析機能を強化した, RDoc Fortran 90/95 ソースコード解析機能強化版 を用いることで, 実用レベルのリファレンスマニュアルの生成が可能です.

概要

以下では, まず RDoc Fortran 90/95 ソースコード解析機能強化版 のインストールを行います.

そして Fortran 90/95 で簡単なモジュールを作成し, RDoc を用いてそのプログラムからドキュメントを生成してみます.

前提として, Ruby 本体のインストールは行っておいてください.

インストール

ここでは, Ruby 本体は既にインストールされていると考え, RDoc Fortran 90/95 ソースコード解析機能強化版 から tar.gz パッケージを入手してインストールを行います. なお, Debian GNU/Linux をお使いの方は インストール (Debian GNU/Linux の場合) を参照ください.

上記サイトから「rdoc-f95 tar.gz パッケージ」をダウンロードし, 以下のように tar コマンドで展開後, 展開されたディレクトリに移動し, install.rb でインストールを行ってく ださい. なお, 既に rdoc がインストールされている場合, 上書きする可能性があります.

% tar -zxvf rdoc-f95.tgz
% cd rdoc-f95-XXXXXXXX
% ruby install.rb

インストール先のディレクトリや, 変更のためのオプションに関しては, 以下 のコマンドで知ることが出来ます.

% ruby install.rb --help

ただし, 明示的にインストール先のディレクトリを指定した場合には, 環境変数 PATH, RUBYLIB の設定も行ってください.

なお, RDoc Fortran 90/95 ソースコード解析機能強化版 では Ruby 本体のパッチも配布しています.

インストール (Debian GNU/Linux の場合)

以下の URL を APT のソースリスト (/etc/apt/sources.list) に加えま す. プロトコルとして http の代わりに ftp を用いることも可能です.

deb http://www.gfd-dennou.org/library/cc-env/Linux/debian-dennou etch/

APT のコマンドでインストールを行ないます.

% apt-get update
% apt-get install rdoc-f95

このパッケージはオリジナルの rdoc パッケージのファイル群を退避した場所 へ移動させるため, オリジナルの rdoc パッケージが使用できなくなりま す. オリジナルの rdoc パッケージを使用する場合は rdoc-f95 パッケージを 削除してください. 退避されたオリジナルの rdoc パッケージのファイル群が 本来の場所に復帰します.

インストールの確認

空のディレクトリを作成し, そのディレクトリ内に移動してください. その ディレクトリ内で, rdoc というコマンドが実行できることを確認して ください.

% mkdir rdoc_test
% cd rdoc_test
% rdoc

以下のようなメッセージが表示され, doc というディレクトリが作成 されていれば OK です.

Generating HTML...

Files:   0
Classes: 0
Modules: 0
Methods: 0
Elapsed: 0.262s

サンプル Fortran 90/95 プログラム作成

まず, サンプルとして Fortran 90/95 で 簡単なモジュールと主プログラムを作成します. もしも手元に Fortran 90/95 で書かれたプログラムがあるならば それを用いて試してみても良いでしょう. 以下では, 台形公式を用いた簡単な数値積分のプログラムを例として用います.

もしも Fortran 90/95 コンパイラが手元の環境にあるのであれば, 以下のようにコンパイルと実行ができます. 積分区間と領域分割数を 与えることで数値積分の結果が得られます. (なお, 今回のチュートリアルではプログラムのコンパイルや実行は 必要ではありません).

% f90 calc01.f90 integral01.f90 -o calc01
% ./calc01

RDoc によるドキュメント生成

まず rdoc を使ってみる

では次に, RDoc を用いてこのモジュールと主プログラムのリファレンスマニュアルを 自動生成してみましょう. calc01.f90 と integral01.f90 が置いてあるディ レクトリで以下のコマンドを実行してください.

% rdoc calc01.f90 integral01.f90 --main integral --ignore-case -U
引数 "calc01.f90 integral01.f90"
対象となるファイルです. ここでは明記していますが, ファイルを明記しな い場合はカレントディレクトリ以下に存在する全ての "f90", "F90", "f95", "F95" という拡張子を持つファイルを検索します.
引数 "--main integral"
メインページを指定します. ここではモジュール integral をメインページに 指定します.
引数 "--ignore-case"
英字の大文字と小文字を区別しません.
引数 "-U"
デフォルトでは更新されたファイルのみドキュメント化しますが, このオプションをつけることで全てのファイルに関してドキュメント化します. 一部のファイルのみドキュメント化すると, 既存のドキュメントとクロスリファレンスを 行わないため, 常にこのオプションをつけることを推奨します.

このコマンドにより, doc というディレクトリが作成され, その中に RDoc に よって作成されたドキュメントが出力されたはずです. ブラウザで doc/index.html を見てみましょう. 以下のようなページが表示されるはずです.

RDoc により作成されたドキュメント (コメント無し)

上段の 3 分割されたフレームにファイル, モジュール, サブルーチンや 関数や変数や定数などのリストが表示されています. 下の部分には integral モジュール の内容が 表示されています. 下のフレームのサブルーチンや関数の名称をクリックすると, ソースコードが表示されます.

コメントを書き込んでみる

ソースコードにコメントを埋め込むことで, ドキュメントにより多くの 情報を付加してみましょう. calc01.f90, integral01.f90 にコメントを追加した 以下のファイルを作成しましょう.

モジュール, サブルーチン, 関数, 変数, 定数の宣言文の行末もしくは 直後の行に書かれているコメントが 各々のドキュメントとして解釈されます. なお, 空行をいれた段階でそれよりも上部の部分 (上のソー スコードで言うと「※ 空行を入れると...」の部分) はドキュメントとして解釈 されません.

NAMELIST に関しても同様に, 付記されたコメントをドキュメントとして解釈します.

では, 再度 rdoc コマンドを実行してみましょう.

% rdoc -U calc02.f90 integral02.f90 --main integral --charset euc-jp --ignore-case
引数 "--charset euc-jp"
ソースコード内にマルチバイトの文字 (日本語など) が含まれる場合は必ず このオプションを指定してください. ソースコード内のマルチバイト文字の 文字コードに合わせ, "euc-jp", "shift_jis", "iso-2022-jp" のいづれか を指定します.

今度は, 以下のようなページが生成されます.

RDoc により作成されたドキュメント (コメントあり)

ソースコード内のモジュールやサブルーチンの行末もしくは直後の行に 書かれたコメントがドキュメントに反映されていることが分かります.

RDoc の便利な機能を使ってみる

コメント部の修飾

RDoc のコメント部はかなり自然に書くことができますが, いろいろな修飾も可能になっています.

integral02.f90 にコメントを追加した以下のファイルを作成しましょう.

では, 再度 rdoc コマンドを実行してみましょう.

% rdoc -U calc02.f90 integral03.f90 --main integral --charset euc-jp --ignore-case

今度は, 以下のようなページが生成されます.

RDoc により作成されたドキュメント (いろいろ修飾)

モジュールやサブルーチンなどに自動的にリンクがはられ, 見出し, リスト表示 が行われていることがわかります.

修飾のための書式に関しては, RDoc Fortran 90/95 ソースコード解析機能強化版 の「書法」を参照してください. ソースコード内で解説が書き込んである '#--''#++' の部分に関しては RDoc は無視するため, ドキュメントに反映さ れません.

便利なオプション

rdoc コマンドのオプションのうち, 上記で説明しなかった便利なものをいく つか紹介します. より詳しい情報は, 参考資料 2, 3 の "Usage" また は "使い方" の部分を参照してください.

--all, -a
PRIVATE 属性の言語要素もドキュメントに表示します. 開発者向けのドキュメントとして便利かもしれません.
--inline-source, -S
ソースコードの表示をポップアップではなく, ページ内で 表示するようにします.
--op, -o dir
dir ディレクトリにドキュメントを出力します.
--title, -t text
text を HTML のタイトルに設定します.

以下のコマンドで作成したドキュメントを載せておきます. (コマンドプロンプトや DOS 窓を利用している方がコピペしやすいように, 改行しないものも載せておきます)

% rdoc -U integral03.f90 calc02.f90 --main integral \
       --charset euc-jp --inline-source --ignore-case \
       --title "integral Documents"

% rdoc -U calc02.f90 integral03.f90 --main integral --charset euc-jp --inline-source --ignore-case --title "integral Documents"

TeX を MathML で表示する

TeX 記法で記したコメントを MathML 形式に変換して, 以下のような ドキュメントを作成してみます. (表示されている数式は画像張り込み ではありません).

RDoc により作成されたドキュメント (MathML 使用)

MathML とは XMLベースの数式記述言語です. 詳細については 参考資料 4, 5, 6, 7 を参照してください.

MathML 表示ブラウザの制限

MathML を含むドキュメントはブラウザによっては正しく表示されないことも あります. Mozilla Firefox および Internet Explorer (+ MathPlayer) では正しく表示されることを確認しています. その他のブラウザの MathML 対応に関しては, 参考資料 4, 5, 6, 7 を参照ください.

Ruby 用 MathML ライブラリのインストール

Ruby 用 MathML ライブラリのインストールを行います. なお, Debian GNU/Linux をお使いの方は Ruby 用 MathML ライブラリのインストール (Debian GNU/Linux の場合) を参照ください.

Ruby用MathMLライブラリ から math_ml-X.X.X.tar.gz ファイルをダウンロードします. (2008/03/14 現在の最新版は 0.8.0 です).

このファイルを展開し, lib 以下のファイル・ディレクトリを Ruby ライブラリの探索パスにコピーしてください. もしくは環境変数 RUBYLIB にこの lib ディレクトリを追加します. 以下の例では, 後者の方法でインストールを行っています.

Ruby 用 MathML ライブラリのインストール (Debian GNU/Linux の場合)

インストール (Debian GNU/Linux の場合) に記述されるように APT のソースリストを更新し, 以下のコマンドで Ruby 用 MathML ライブラリを インストールしてください. (なお, libmathml-macro-dennou-ruby は TeX マクロの導入 で必要となるパッケージです).

% apt-get update
% apt-get install libmathml-ruby libmathml-macro-dennou-ruby

オプション --mathml を指定して実行

では, 主プログラム 2 および モジュール 3 を再度ドキュメント化します. (コマンドプロンプトや DOS 窓を利用している方がコピペしやすいように, 改行しないものも載せておきます)

% rdoc -U integral03.f90 calc02.f90 --main integral \
       --charset euc-jp --inline-source --ignore-case \
       --title "integral Documents" --mathml

% rdoc -U calc02.f90 integral03.f90 --main integral --charset euc-jp --inline-source --ignore-case --title "integral Documents" --mathml

以下のようなページが生成されます.

RDoc により作成されたドキュメント (MathML 使用)

TeX マクロの導入

自作の TeX マクロを登録することもできます. 以下に 電脳スタイル TeX マクロ の一部の数式に関連するマクロを抜粋したマクロファイルがあります.

このファイルをダウンロード後, <Ruby のパス>/math_ml/macro ディレクトリを作成し, そのディレクトリ以下にマクロファイルを置きます. 例えば, /home/hoge/rubylib ディレクトリに Ruby ライブラリの探査パスが 通っている場合には, 以下のようにマクロファイルを設置します.

% mkdir /home/hoge/rubylib/math_ml
% mkdir /home/hoge/rubylib/math_ml/macro
% cp D6math.sty /home/hoge/rubylib/math_ml/macro/

導入が完了したら, マクロファイルに登録されているコマンドをコメントに 記入してみましょう. 今回は偏微分を表記する "\DP" コマンドを 書き込み, rdoc コマンドでドキュメントを作成してみましょう.

! \[
!    \DP{u}{t} + a \DP{u}{x} = 0
! \]

自作のコマンドを使用したい場合には, D6math.sty を参考に コマンドを作成し, マクロファイルを上記のように設置してください.

RDoc ドキュメントのサンプル

RDoc を用いて作成されたドキュメントをいくつか紹介します.

参考資料

  1. 森川靖大, 石渡正樹, 堀之内武, 小高正嗣, 林祥介, 2007: RDoc を用いた数値モデルのドキュメント生成. 天気, 54, 185--190.
  2. rdoc: Ruby Standard Library Documentation
  3. 大林一平さんによる上記ページの日本語訳
  4. MathMLによる数学的文書の作成と公開のシステム
  5. MathMLによる数式表現
  6. MathML 日本語情報
  7. MathML Software - Browsers

dcmodel Development Group / GFD Dennou Staff dcstaff@gfd-dennou.org
Last Updated: 2009/07/12, Since: 2008/03/08