新プログラムの作成

fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev |  | Next

# Chapter 34. 新プログラムの作成

# プログラムを作る(コマンドライン用)

まず FML::Process:: クラス以下にモジュールを用意します。 最小構成の見本としては FML::Process::Calender 、 最大構成としては FML::Process::Distribute (記事配送プログラムの本体) を参考にすると良いでしょう。

各 FML::Process::○○○ モジュールが用意しなければいけない関数(メソッド)は FML::Process::Flow::ProcessStart() を見ると分かります。 FML::Process::Flow::ProcessStart() がプロセスを駆動していますので、その中身を辿ってみて下さい。 2002/07 現在、これらのメソッドが必須です。

    new()
    prepare()
    verify_request()
    run()
    finish()
    help()

ダミーでもよいので、これらのメソッドを適宜用意しておいて下さい。各メソッ ドの具体例は、FML::Process 以下のモジュールを見て下さい。メソッドの役 割を知るためには最大構成の FML::Process::Distribute が一番適当かもしれ ません。

            FML::Process::Kernel
                    |       uses-a FML::Process::{Flow,Utils} FML::Parse ...
                    |
                    A
            FML::Process::○○○
                            uses-a FML::ほえほえ
                            uses-a CPAN モジュール
                            uses-a …

FML::Process::○○○ を用意したら、 etc/modules にプログラムとクラスの関係を定義して下さい。 これはプログラム名からロードするべきモジュールを定義するファイルです。 また、 etc/command_line_options にオプションとＭＬ名の有無などを定義してください。 名前の通り、可能なオプションについて指定するファイルです。 これらのファイルフォーマットは、これらの中身を見て推測して下さい。 Unix 伝統のスペース区切りなので、すぐ分かります。

これら３つを準備すれば、新しいプログラムの実行の準備が出来ました。

最後に、呼びたい名前のファイルを loader と link もしくは symlink する ことで実行が可能になります。 たとえば、標準のインストールでは、次のようになっています。

    % ls -l /usr/local/libexec/fml
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 command@ -> loader
    drwxr-xr-x  2 root  wheel   512 Apr 14 18:25 current-20030414/
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 digest@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 distribute@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 error@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fml@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fml.pl@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmladdr@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlalias@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlconf@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmldoc@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlhtmlify@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlsch@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlserv@ -> loader
    -rwxr-xr-x  1 root  wheel  6863 Apr 14 18:24 loader*
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 makefml@ -> loader
    lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 mead@ -> loader

デフォルトのプログラムについては、インストーラがこれらの symlink 処理 をしてくれています。インストーラに symlink (後述)を実行してもらう必要 があるなら、etc/install.cf.in の bin_programs か libexec_programs にプ ログラム名を定義して下さい。テスト段階では手動で symlink を行なってか まいません。

Prev | Home | Next
レシピ’s | Up | プログラムを作る( CGI 用)

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.