[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

例題: 新しいプログラムを作る

Table of Contents
ケーススタディ: fmlsch を作る。
ケーススタディ: fmlsch.cgi

ここでは、単純なスケジュール表示ソフトを例にとり、 fml8 のフレームワーク中で 新しいプログラムを追加するにはどうすれば良いのかを説明します。 以下、プログラム名は fmlsch とし、その CGI 版が fmlsch.cgi です。

なお、fml8 +サードパーティ拡張として出荷するソフトウエアでは、 3rdparty/ 以下に同様の配置でファイルを生成し、 [1] インストーラ等の設定ファイルを変更して下さい。

ケーススタディ: fmlsch を作る。

ステップ 1: インストーラに fmlsch を付け加える

fml/bin/fmlsch.in シェルスクリプトを用意し、 fml/etc/install.cf.in の bin_programs 変数に fmlsch を追加します。 bin_programs にあるスクリプトはインストーラが $prefix/bin/ へインストールする対象です。

fml/bin/fmlsch および fml/etc/install.cf の生成は configure (GNU configure)が行ないます。 configure.in に、この2つのファイルの変数展開をするように登録し、 autoconf を実行して configure を生成して下さい。

ステップ 2: モジュールを作る

fmlsch の実体のモジュールとして、 fml/lib/FML/Demo/Calendar.pm を書きます。

また、ほかに必要なライブラリがあれば適宜輸入してください。 今回は CPAN から HTML-CalendarMonthSimple-1.02.tar.gz をインストールする必要があります。

Date-Calc も必要なので適宜インストールしてください。

ステップ 3: FML::Process:: を修正

仕事のほとんどの部分は FML::Demo::Calendar が実行しますが、 fml8 のブートローダから FML::Demo::Calendar を呼び出すために FML::Process::Calender クラスを作成します。

Caution

クラスの階層は fml/etc/modules の設定次第なので、 FML::Process::Calender である必要はなく、 どの階層でも(もちろん FML:: 以外でも)かまいません。

まず、fmlsch プロセスの初期化から実行といった大まかな一連の手順を fml/lib/FML/Process/Calender.pm に書きます。このファイルは新規に作成して下さい (the Chapter called バージョン依存性を解決するための fml ブートローダ 章を参照)。

そして、ブートローダーへ fmlsch プログラムが起動された場合には FML::Process::Calender を呼び出すことを教えるために fml/etc/modules ファイル と fml/etc/command_line_options ファイルに fmlsch のモジュール名との対応関係を追加します。

FML::Process::Calender は同じディレクトリのモジュールを適当にぱくって hack してください :-) なお、fmlsch は機能が最小なので、FML::Process::Calender では FML::Process::Calender::run() メソッドだけ用意すればおしまいです。 未定義の関数は FML::Process::Kernel のメソッドが使われます(継承)。

Notes

[1]

とはいえ、さすがに設定ファイルは、 さすがに fml リポジトリ以下の設定を変更する必要がありますね。 「追加で済むもの」 であればサードパーティ以下にスクリプトを作ればすむかと…

たぶん、そういった場合は、 サードパーティ以下に fml リポジトリ以下を参考に、 インストーラを一式作るほうが楽でしょう。

それでも、トップディレクトリの Makefile と configure の変更は必要ですなぁ。

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >