Mobile Agricultural Chemicals Searcher for ACIS
Version 2.5.2 Copyright(C) 2004-2005 Hidemi Oya
そこで、本システムは、文字コードの変換や JavaScript の動作を肩代わりする perl スクリプトを CGI として動作させ、それを経由して農薬検査所の検索システムにアクセスすることで、携帯電話等からの利用を可能にします。また、農薬検査所から送られてくるページデータは、携帯電話等の小さな画面でも見やすいように HTML タグの変換も行います。
本システムには、下記のような特徴があります。
本システムは、perl の CGI になっています。本システムを使うには、CGI を実行するサーバが下記の条件を全て満たしている必要があります。本システムが使用できるかどうかは、ご利用
ISP の CGI の説明をお読みください。
動作確認は、Apache + perl 5.8.3 で行っています。
ホスティングサービスは概ねこの条件を満たしていますが、一般的な ISP の Web スペースでは、これらを全て満たすものは残念ながらあまり多くありません。たとえば、ii の条件により、@NIFTY では使用できません。また、i, ii をクリアしても、セキュリティ確保のため、Socket モジュールを使用不可にしている ISP も多くあります。
本システムを使用するためには、アーカイブに含まれるファイルのほかに、下記の perl モジュールが必要です。いずれも標準モジュールではないので、別途ダウンロードする必要があります。i は ISP によってはインストールされていますが、通常は 3.95 なので本システムでは使えません。
下記に基づき、システムとライブラリをサーバ上に設置します。設置後のイメージは、下図のようになります。
CGI 実行可能ディレクトリ | ||||||||
├ | .smd | セッションデータ保存ディレクトリ | ||||||
├ | acis | 本システム用ディレクトリ | ||||||
│ | ├ | help | 画面別ヘルプファイルディレクトリ | |||||
│ | │ | ├ | jsky | VodafoneLive! 端末用画面別ヘルプファイルディレクトリ | ||||
│ | │ | │ | └ | *.htm | VodafoneLive! 端末用画面別ヘルプファイル | |||
│ | │ | └ | *.htm | その他端末用画面別ヘルプファイル | ||||
│ | ├ | template | 入出力画面テンプレートファイルディレクトリ | |||||
│ | │ | ├ | doti | ドット i 端末用入出力画面テンプレートファイルディレクトリ | ||||
│ | │ | │ | └ | *.htm | ドット i 端末用入出力画面テンプレートファイル | |||
│ | │ | ├ | jsky | VodafoneLive! 端末用入出力画面テンプレートファイルディレクトリ | ||||
│ | │ | │ | └ | *.htm | VodafoneLive! 端末用入出力画面テンプレートファイル | |||
│ | │ | └ | *.htm | その他端末用入出力画面テンプレートファイル | ||||
│ | │ | (s?.htm : サーバサイド CGI への送出パラメータ設定画面テンプレート) | ||||||
│ | │ | (g*.htm, k*.htm : サーバサイド CGI からの出力変換画面テンプレート) | ||||||
│ | ├ | index.cgi | メインスクリプト (パーミッション 755 | 705) | |||||
│ | ├ | *.pl | サブスクリプト (状況に応じてメインスクリプトが呼び出す) | |||||
│ | │ | (snd*.pl : サーバサイド CGI への送出パラメータ処理) | ||||||
│ | │ | (rcv*.pl : サーバサイド CGI からの出力変換処理) | ||||||
│ | │ | (dic*.pl : かな漢字/別名変換処理) | ||||||
│ | └ | *.pm | モジュール(メインスクリプトあるいはサブスクリプトから使用) | |||||
│ | (tm.pm : 屋号削除処理モジュール) | |||||||
└ | lib | ライブラリ用ディレクトリ | ||||||
├ | CGI | CGI 関連モジュール用ディレクトリ (ディレクトリ名変更不可) | ||||||
│ | ├ | Session | CGI::Session 関連モジュール用ディレクトリ(ディレクトリ名変更不可) | |||||
│ | │ | ├ | Driver | CGI::Session::Driver 関連モジュール用ディレクトリ(ディレクトリ名変更不可) | ||||
│ | │ | │ | └ | file.pm | CGI::Session::Driver::file モジュール | |||
│ | │ | ├ | ID | CGI::Session::ID 関連モジュール用ディレクトリ(ディレクトリ名変更不可) | ||||
│ | │ | │ | └ | static.pm | CGI::Session::ID::static モジュール | |||
│ | │ | ├ | Serialize | CGI::Session::Serialize 関連モジュール用ディレクトリ(ディレクトリ名変更不可) | ||||
│ | │ | │ | └ | default.pm | CGI::Session::Serialize::default モジュール | |||
│ | │ | ├ | Driver.pm | CGI::Session::Driver モジュール | ||||
│ | │ | ├ | ErrorHandler.pm | CGI::Session::ErrorHandler モジュール | ||||
│ | │ | └ | Inspect.pm | CGI::Session::Inspect モジュール(本システム同梱ファイル) | ||||
│ | └ | Session.pm | CGI::Session モジュール | |||||
├ | HTTP | HTTP 関連モジュール用ディレクトリ (ディレクトリ名変更不可) | ||||||
│ | └ | Lite.pm | HTTP::Lite モジュール | |||||
└ | Unicode | Unicode 関連モジュール用ディレクトリ (ディレクトリ名変更不可) | ||||||
└ | Japanese.pm | Unicode::Japanese モジュール |
なお、本アーカイブの各ディレクトリに配置してある index.htm は、上位ディレクトリに移動するだけのダミーファイルです。自動実行ファイル(index.html
等)がないディレクトリにアクセスした際に、ディレクトリ内容をブラウザ上に展開してしまうサーバのセキュリティ確保のため、acis ディレクトリを除く全てのディレクトリに置いてあります。
自動実行ファイルが index.* 以外に設定されているサーバをお使いの方は、index.htm を指定されている自動実行ファイル名に変更して転送してください。たとえば、自動実行ファイル名が
top.* の場合は、index.htm を top.htm に変更します。
ローカル HDD の任意のフォルダーに本アーカイブをディレクトリ付きで解凍し、acis\index.cgi の1行目に書いてある perl のパスをサーバの環境に合わせて変更します。一般的には、#!/usr/local/bin/perl か #!/usr/bin/perl のどちらかです。
サーバの CGI 実行可能なディレクトリに、空フォルダーも含めて全てのフォルダー及びファイルを丸ごとテキストモードで転送します。転送後、acis ディレクトリ下の index.cgi のパーミッションをプロバイダの推奨値にあわせて 755 または 705 に設定します。
なお、自動実行ファイルが index.* 以外に設定されているサーバをお使いの方は、ファイル転送の前に index.cgi をサーバの仕様にあわせて
*.cgi に変更してください。
また、拡張子 .cgi を自動実行できないサーバをお使いの方は、index.cgi の $ma = './'; を $ma = 'index.cgi';
に変更してください。
各ライブラリのアーカイブファイルには多数のファイルが同梱されていますが、必要なのは前述の設置イメージに示した *.pm ファイルだけです。それぞれのファイルをサーバ上の指定ディレクトリに転送してください。Japanese.pm はバイナリデータを含んでいるので、バイナリモードで転送する必要があります。
サーバの制約等で lib 以外のディレクトリにライブラリを置いた場合は、index.cgi の BEGIN 節にある $lib = '../lib' の '../lib' の部分をライブラリを置いたディレクトリのパス名に変更してください。lib ディレクトリ下のライブラリ個別のディレクトリは、perl のモジュール呼び出しの仕様によりディレクトリ名を変更することはできません(大文字小文字も正確に作成する必要があります)。
本システムは、メインスクリプトである index.cgi が状況に応じて自律的に動作を制御します。このため、最初にパラメータ無しで index.cgi を実行(具体的には、ウェブブラウザのアドレスバーに 'http://〜〜〜/acis/' と入力してジャンプ)すれば、あとは何もする必要がありません。HTML 上では、単純に index.cgi があるディレクトリ('acis/')に対して <A> 要素でリンクを張るだけで OK です。
なお、index.cgi を自動実行できないサーバをご利用の場合は、acis/index.cgi のようにファイル名まで指定してください。
perl CGI を同時に複数実行すると、CGI を実行しているサーバの負荷が高くなります。このため、本システムでは、パスワードによるアクセス制限機能を実装しています。
この機能を使うためには、index.cgi の $password 変数にパスワードを設定し、サーバに再転送すれば OK です。パスワードが設定されていると、index.cgi を実行した段階で、自動的にパスワード要求画面を表示し、入力されたパスワードのチェックを行います。
2.0.0 以降では、転送データ量削減のためにサーバーサイドでセッション管理を行っています。これにより、付随的な機能として同時アクセス数によるアクセス制限が可能になりました。
デフォルトでは、同時アクセス可能数が 30、セッション有効期限は画面表示後 10 分(実際には他のサイトへジャンプしたりブラウザを閉じていたとしても、画面表示後
10 分間はそのユーザがアクセス中と見なされる)になっています。 index.cgi の $smax 変数で同時アクセス可能数、$sexp 変数でセッション有効期限を変更することができます。
$smax 変数に 0 を設定した場合、アクセス制限は無効になります。メイン CGI をパラメータ無しで起動した時に、期限切れセッションは全て自動削除します(2.5.0
以降では、$smax = 0 でも自動削除します)。 このため、同時アクセス数が多い場合は、メイン CGI 起動が遅くなる可能性があります。
$sexp 変数は、5〜15 に設定することを推奨します。セッションの有効期限は、各画面を表示するたびに更新されますので、普通は5分あれば十分です。
検索条件の入力画面や各種一覧出力画面などは、全て通常の HTML 形式のテンプレートファイルを読み込んで表示しています。 したがって、テンプレートファイルをホームページエディタなどで書き換えることにより、見栄えをカスタマイズすることができます。
テンプレート中の $ で始まる文字列は、本システムが必要に応じて書き換えます。
一覧のように同一表示形式を繰り返し表示する場合は、本システムが表示形式の位置を判断できるように、表示形式の開始位置と終了位置を特定のコメントで指定しています。
このため、$ で始まる文字列とコメントは書き換えられませんが、それ以外の部分はユーザが自由に変更できます。
2.0.0 以降は、キャリア別にテンプレートファイルを作成できるようになりました。index.cgi の @temp 配列にキャリア別のテンプレート保存ディレクトリを指定してください。
本ソフトウェアはフリーソフトです。自由に(無料で)本ソフトウェアをご自分のウェブサイトに設置し、利用することができます。ただし、サイト上のどこかに携帯農薬検索実験室へのリンクを張って、本ソフトウェアを使用している旨を明記してください。
また、本ソフトウェアは自由に改変して利用することができます。ただし、改変したソフトウェアを本ソフトウェアと同じ条件で、携帯農薬検索実験室/実験成果に公開することを義務づけます。
なお、本ソフトウェアをベースとしたシステムを商利用に供することは禁止します。ただし、ここでいう商利用とは、本ソフトウェアの販売や、本ソフトウェアを利用した有料サイトの構築を指します。たとえば、農薬販売業者が職員への情報提供や顧客サービスのために自社サイトに本ソフトウェアを設置し、無償で公開する場合は商利用には当たりません。
本ソフトウェアの著作権は、Hidemi Oya が留保します。本ソフトウェアを改変した場合、原作者の著作権表示を削除することは禁止します(改変者の著作権表示を追加することは自由です)。
本ソフトウェアのバグ等によって利用者やサーバに何らかの損害を与えるようなことがあっても、作者は補償やバージョンアップの責務を負いません。自己責任でご利用ください。
本ソフトウェアのサポートは、携帯農薬検索実験室/研究会で行います。本ソフトウェアは農薬検査所とは全く関係ありませんので、本ソフトウェアに関して農薬検査所に問い合わせなどを行うことは厳に謹んでください。
農薬の名称・農薬の種類・剤型の3種類による農薬検索機能でファーストリリース。