プラグイン仕様書。

しらぎくモバイルシステムを拡張するために作成するプラグインは、以下の仕様に従う事で作成が可能です。

目次。

プラグインの概要。

しらぎくモバイルシステムでは、変換するHTMLコンテンツを操作するプラグインを導入する事が出来ます。

プラグインは、HTML文書を変換する前に起動します。

また、第3.001版(平成17年 3月30日)からは、特定のHTML文書だけが呼出すプラグインを作る事も可能になりました。

プラグインの記述方法。

プラグインはPerl 5.xで記述したパッケージとします。

プラグインには予め定めた名前をパッケージ名及びしらぎくモバイルシステムが呼び出す函数名とします。

呼出す際に引数として、変換前のHTML文書データと、変換モード(キャリア系統コード)が与えられます。

プラグイン函数は、処理後のHTML文書をreturn文で返しますが、しらぎくモバイルシステムで処理不能なコンテンツを出力して、exit()函数かsysExit函数で処理を強制終了させる事も出来ます。

プラグインを設置する場所。

設置場所は「K.cgi」スクリプト設置ディレクトリに置かれたサブディレクトリ「Options」直下とします。

また、下請けスクリプトやデータファイルを収める作業用ディレクトリを要する場合は、原則的に

ものとします。

プラグイン名。

プラグイン名は、以下の書式に従っている事が必要です。

字数にはPerl言語での制限に依りますが、余り長いものは推奨しません。

プラグインのファイル名。

プラグインのファイル名は、以下の書式に従います(「[」「 ]」は記述しません)。

制限コードとは、プラグインを実行させないキャリア系統を指定します。

具体的には、実行させたく無い場合に以下の半角英字を記述します(順不同)。

e
WAP 1.0(EZウェブの旧型機)で実行しない場合。
w
WAP 2.0(EZウェブの現行機及びソフトバンクの700番台以上の機種)で実行しない場合。
j
ソフトバンクの在来機で実行しない場合。
h
H"リンク(エアーエッジフォンを除く)で実行しない場合。
i
上記以外のキャリア(特にiモードやPC)で実行しない場合。

例えば、プラグイン名が「AddPlugIn」で、H"リンクとWAP 1.0では実行出来ないプラグインのファイル名は以下のいずれかになります。

また、プラグイン名が「AddPlugIn」で、制限の無いプラグインのファイル名は以下のようになります。

尚、特定のHTML文書でのみ使われるプラグインは、ファイル名の先頭に「@」を付けます。

例えば、特定のHTML文書でのみ使われるプラグイン名が「AddPlugIn」で、H"リンクとWAP 1.0では実行出来ないプラグインのファイル名は以下のいずれかになります。

プラグインの形式。

プラグインは、プラグイン名で与えられるパッケージとなります。

すなわち、

となります。

しらぎくモバイルシステムはHTML文書を変換する前に、以下の処理を実行します。

つまり、「プラグイン名::プラグイン名」と言う函数を、「(変換前のHTMLコンテンツ収納変数,UA系統コード)」と言う引数で呼出し、処理の結果をHTML文書データとして受取ります。

但し、eval文内のため、実行出来なかった場合はエラーとならず、HTMLコンテンツは無処理となります。

例えば、プラグイン名が「AddPlugIn」で、iモード端末向けに処理しているなら、以下のように呼出されます。

プラグイン制作時の注意事項。

特定のHTML文書のみが呼出すプラグインの場合(平成17年 3月31日 追加)。

特定の文書が呼出すプラグインは、以下のようになります。

プラグインのファイル名。

通常のプラグインのファイル名の先頭に「@」が付きます(例:@AddPlugIn.pl)。

この書式に従ったプラグインファイルは、文書側で呼出を指定されていない限り呼出されません。

プラグインを呼出す文書の設定。

文書中の任意の箇所に「<!-- plug-in: プラグイン名-制限コード -->」という注釈宣言を入れます(例:<!-- plug-in: AddPlugIn-wh -->)。

この宣言が無い文書は、当該プラグインのファイルを呼出しません。

その他の処理は、通常のプラグインと全く同じです。

参考事項。

特定のHTML文書のみが呼出すプラグインは、全文書に適用されるプラグインより先に呼出されます。

データの受渡し。

しらぎくモバイルシステムから渡されるデータ。

上述のように、函数「プラグイン名::プラグイン名()」に「(変換前のHTMLコンテンツ収納変数,UA系統コード)」と言う引数でを与えます。

すなわち、$_[0]に変換前のHTMLデータが文字列の形で、$_[1]にUA系統コードが数値としてそれぞれ入る事になります。

UA系統コードは、どのUA系統かを示すものです。

この値を用いる事で、キャリアごとの処理分けなどが可能になります。

1
ソフトバンクの在来機。
2
WAP 1.0(EZウェブの旧型機)。
3
WAP 2.0(EZウェブの現行機及びソフトバンクの700番台以上の機種)。
4
H"リンク(エアーエッジフォンを除く)。
0
上記以外のキャリア(特にiモードやPC)。

しらぎくモバイルシステムへ引渡すべきデータ。

プラグイン処理したHTMLデータを文字列としてreturn文で返す事で、システム側に処理データを引渡します。

尚、プラグインによる新たなコンテンツをHTML文書に付足す場合は、必ず<html>要素開始タグより後ろにコンテンツを付足して下さい。

追記。(平成17年 6月 2日)

第3.113版(平成17年 6月 2日)より、プラグインがHTML文書を加工・生成する際に、当該プラグインを用いるページへのアンカー(<a>要素)を出力する際に、href属性値となるファイル名に専用のクエリを附加する事が出来ます。

この場合、ファイル名の後ろに「?」に続けてクエリ列を記述して下さい(例:<a href="document.html?query1=value1;query2=value2">アンカー</a>)。

しらぎくモバイルシステムで出来ない処理を行う場合。

しらぎくモバイルシステムで対応出来ない処理を行う場合は、変換した結果をprint文で標準出力に書き出して、sysExit()函数で処理から脱出します。

具体的には、以下のようにします。

WAP 1.0端末

原則的に、

のデータを出力します。

H"端末

オープンネットコンテンツの形式に従ったプレインテキスト(content-type: text/plain)のデータで出力します。

その他の端末

HTML (content-type: text/html;charset=○○)形式のデータを出力します。

H"リンク以外はcharsetパラメータ(上記の「○○」)を指定します。

データの文字コード。

日本語コンテンツの場合、しらぎくモバイルシステムから受取るデータはシフトJISコードとなり、しらぎくモバイルシステム及び端末の直接渡すデータもシフトJISコードとします。

英語コンテンツの場合は受取るデータも送るデータもiso-8859-1コードとします。

尚、言語の判断は、取得したHTML文書の<html>要素に付くlang属性またはxml:lang属性値で判断します。

フォームなどを利用する場合。

注意事項。

フォームをプラグインで発行する場合、以下の点に注意して下さい。

フォームで使えるクエリ。

クエリの取得方法。

しらぎくモバイルシステムでは、標準入力及びクエリの双方からデータを入力しております。

これらの変数は自由に参照出来ますが、内容を変える事は禁止します。

クエリ名の制限。

以下のクエリ名は使わないで下さい。

使用した場合の動作は保証しません。

しらぎくモバイルシステムで予約されているクエリ名。
ソフトバンク端末サーヴァが予約しているクエリ名
英数字と「-」及び「_」(アンダスコア)以外の文字を含んだクエリ名
しらぎくモバイルシステムではクエリ名のURLエンコード/デコードは行っておりません。

その他。

公開変数(平成17年 6月12日 追加)。

しらぎくモバイルシステムでは、以下の変数をプラグイン作成の手助けとなるよう公開しております。

$kconv::addr

変換前のHTML文書への相対パスが入ります。

$kconv::realdevice

ユーザエージェント文字列を見て、本物の携帯端末と判断された場合に非零値が、そうでなければ0が入ります。

$kconv::color_device (WAP 1.0及びH"リンクのみ)

カラー端末では非零値が、白黒端末では0が入ります。

$kconv::system_dir (平成17年 4月17日 追加)

「K.cgi」が入っているディレクトリへのパスが入ります。

$kconv::query_string (平成17年 4月17日 追加)

呼出時のクエリストリングが入ります。

$kconv::stdin_data (平成17年 4月17日 追加)

呼出時に標準入力に入っていたデータが入ります。

$kconv::ua_string (平成17年 4月17日 追加)

ユーザエージェント文字列が入ります。

$kconv::optionsCredits (平成17年 6月12日 追加)

プラグインのクレジットを入れる文字列変数で、この変数に限り、条件付で変更が可能です。

この文字列はPCで閲覧した場合にのみ表示され、当該プラグインへのリンクも機能します。

この他、「KConfig.pl」で設定される変数は自由に参照する事が出来ます(パッケージ名「kconv」)。

プラグイン設定変数。

プラグインを利用する際に設定される変数で、「KConfig.pl」にて設定するものは、公式プラグインで無い場合は必ず「プラグイン名_」(プラグイン名の直後にアンダスコアが一個付く)で始まる変数名にして下さい。

勿論、プラグインファイル内で設定する事や作業用ディレクトリ内に設定ファイルを置く事も出来ます。

公開函数(平成17年 4月16日 追加)。

しらぎくモバイルシステムでは、以下の函数をプラグイン作成の手助けとなるよう公開しております。

&kconv::f_lock(void)

ファイルロックします。

flock()函数が使えない場合はrename()函数で処理しますので、どんなシステムでも動くでしょう。

&kconv::f_unlock(void)

&kconv::f_lock()函数でのロックを解除します。

&kconv::f_lock()を呼出した場合は必ずこの函数を呼出してロックを解除して下さい。

&kconv::sysExit(void) (平成17年 4月16日 追加)

システムから脱出する場合に利用します。

&kconv::sysOut($gzip,$status,$header,\$body,$bin_mode) (平成17年 4月17日 変更)

コンテンツの出力に用います。

引数は以下の通りです。

$gzip
GZIP圧縮が可能な場合は1に、出来ない場合は0を入れます。
$status
HTTPでのステータスコードとメッセージ(例:「200 OK」)を入れます。空文字列の場合は「200 OK」となります。
$header

HTTP応答ヘッダを記述します。「"content-type: ○○\n"」などと記述します。

  • content-lengthフィールドは、内部で自動的に附加されますので、ここには記述せず省略して下さい。
\$body
出力するコンテンツを参照渡しします。
$bin_mode (平成17年 4月17日 追加)
バイナリモードで出力する場合は非零値、アスキィモードで出力する場合は零値を入れます。
&kconv::sysRedirect($status,$URL,$header) (平成17年 4月16日 追加)

HTMLベースの端末でのリダイレクトに用います。

引数は以下の通りです。

$status
HTTPでのステータスコードとメッセージ(例:「200 OK」)を入れます。空文字列の場合はサーヴァに任されます。
$URL
リダイレクト先を絶対URLで指定します。
$header

location以外のHTTP応答ヘッダがある場合はそれらを記述します。「"content-type: ○○\n"」などと記述します。

プラグインを公開する場合の注意事項。(平成18年 5月12日 追記)

プラグイン利用ページにおけるPCでのキャッシュコントロール。(平成18年 5月12日)

プラグインを「<!-- plug-in: プラグイン名 … -->」にて呼び出したページは、PCでの閲覧に対して原則的にHTTP応答ヘッダにLast-Modifiedフィールドを附与しません。

このため、この形式でプラグインを呼び出したページは、リロードで更新されるようになります。

但し、必要であれば、HTML文書内に「<!-- static-document -->」注釈宣言を記述する事で、HTTP応答ヘッダにLast-Modifiedフィールドを附与するようになります。

mod_perlに対応する場合。(平成19年 4月 2日)

プラグインはmod_perl上で動作する事を想定して作る必要はありません。

逆にmod_perl上でも動作するようにするには、以下の点にご留意下さい。

以上より、mod_perl対応のプラグインはその旨を表示する事が求められます。


ページ外へのご案内。