農薬検査所DB用携帯農薬検索システム

1 はじめに

(1) 概要

 独立行政法人農薬検査所のデータベースに携帯電話等からアクセスできないのは、下記の2点が最大の原因です。現在の携帯電話等でこれらに対応しているものは、恐らく皆無です。

  1. 文字コードに UTF-8 を使用している
  2. JavaScript を多用している

 そこで、本システムは、文字コードの変換や JavaScript の動作を肩代わりする perl スクリプトを CGI として動作させ、それを経由して農薬検査所の検索システムにアクセスすることで、携帯電話等からの利用を可能にします。また、農薬検査所から送られてくるページデータは、携帯電話等の小さな画面でも見やすいように HTML タグの変換も行います。

(2) 特徴

 本システムには、下記のような特徴があります。

  1. 通信速度が低速な携帯電話等での使い勝手や Web 接続の使用料金を考慮し、ブラウザ側への送出データ量を低減
  2. ひとつのシステムで全ての携帯電話ブラウザに対応
  3. 画面表示は全て HTML で書かれたテンプレートを参照しているため、perl スクリプトが分からなくても、HTML の知識があれば見栄えをカスタマイズ可能
  4. パスワードによる利用者制限が可能(サーバ負荷対策)

2 動作環境

(1) CGI 実行サーバの条件

 本システムは、perl の CGI になっています。本システムを使うには、CGI を実行するサーバが下記の条件を全て満たしている必要があります。本システムが使用できるかどうかは、ご利用 ISP の CGI の説明をお読みください。

  1. CGI の処理系として perl 5.x が使えること
  2. perl の標準モジュールがインストールされていること
  3. Socket モジュールが使用できること

 ホスティングサービスは概ねこの条件を満たしていますが、一般的な ISP の Web スペースでは、これらを全て満たすものは残念ながらあまり多くありません。たとえば、ii の条件により、@NIFTY では使用できません。また、i, ii をクリアしても、セキュリティ確保のため、Socket モジュールを使用不可にしている ISP も多くあります。

 ただし、表示のカスタマイズのためにデバッグモードのみを使用する場合は、i だけ満たしていればOKです。

(2) 必要モジュール

 本システムを使用するためには、アーカイブに含まれるファイルのほかに、下記の perl モジュールが必要です。いずれも標準モジュールではないので、別途ダウンロードする必要があります。
 表示のカスタマイズのため、デバッグモードのみを使用する場合は、i だけダウンロードすれば OK です。

  1. Unicode::Japanse
  2. HTTP::Lite

3 使用方法

 下記に基づき、システムとライブラリをサーバ上に設置します。設置後のイメージは、下図のようになります。

CGI 実行可能ディレクトリ
acis   本システム用ディレクトリ
index.cgi   メインスクリプト (パーミッション 755 | 705)
*.pl   サブスクリプト (状況に応じてメインスクリプトが呼び出す)
     (snd*.pl : サーバサイド CGI への送出パラメータ処理)
     (rcv*.pl : サーバサイド CGI からの出力変換処理)
*.htm   入出力画面テンプレート
     (s?.htm : サーバサイド CGI への送出パラメータ設定画面テンプレート)
     (g*.htm, k*.htm : サーバサイド CGI からの出力変換画面テンプレート)
lib   ライブラリ用ディレクトリ
Unicode   Unicode::Japanese モジュール用ディレクトリ (ディレクトリ名変更不可)
Japanese.pm   Unicode::Japanese モジュール
HTTP   HTTP:Lite モジュール用ディレクトリ (ディレクトリ名変更不可)
Lite.pm   HTTP::Lite モジュール

 なお、本アーカイブ同梱の index.htm は、上位ディレクトリに移動するだけのダミーファイルです。自動実行ファイル(index.html 等)がないディレクトリにアクセスした際に、ディレクトリ内容をブラウザ上に展開してしまうサーバをお使いの方は、セキュリティ確保のため、acis ディレクトリ以外のディレクトリに index.htm を転送してください。
 自動実行ファイルが index.* 以外に設定されているサーバをお使いの方は、index.htm を指定されている自動実行ファイル名に変更して転送してください。たとえば、自動実行ファイル名が top.* の場合は、index.htm を top.htm に変更します。

(1) システムの設置

 ローカル HDD の任意のフォルダーに本アーカイブをディレクトリ付きで解凍し、acis\index.cgi の1行目に書いてある perl のパスをサーバの環境に合わせて変更します。一般的には、#!/usr/local/bin/perl か #!/usr/bin/perl のどちらかです。

 サーバの CGI 実行可能なディレクトリに、acis フォルダーをディレクトリ付きで丸ごとテキストモードで転送します。転送後、acis ディレクトリ下の index.cgi のパーミッションをプロバイダの推奨値にあわせて 755 または 705 に設定します。

 なお、自動実行ファイルが index.* 以外に設定されているサーバをお使いの方は、ファイル転送の前に index.cgi をサーバの仕様にあわせて *.cgi に変更してください。
 また、拡張子 .cgi を自動実行できないサーバをお使いの方は、index.cgi の $ma = './'; を $ma = 'index.cgi'; に変更してください。

(2) ライブラリの設置

 acis フォルダーを転送したサーバ上のディレクトリに、acis ディレクトリと同じレベルで、lib ディレクトリを作成します。、その直下に Unicode と HTTP ディレクトリを作成します(大文字/小文字を正確に!)。lib/Unicode ディレクトリに Unicode::Japanese のアーカイブから解凍した Japanese.pmlib/HTTP ディレクトリに HTTP::Lite のアーカイブから解凍した Lite.pmバイナリモードで転送します。

 lib 以外のディレクトリにライブラリを置きたい場合は、index.cgi の BEGIN 節にある unshift(@INC, '../lib') の '../lib' の部分を変更する必要があります。Unicode と HTTP ディレクトリは、perl のモジュール呼び出しの仕様によりディレクトリ名を変更することはできません。

(3) CGI の実行

 本システムは、メインスクリプトである index.cgi が状況に応じて自律的に動作を制御します。このため、最初にパラメータ無しで index.cgi を実行(具体的には、ウェブブラウザのアドレスバーに 'http://〜〜〜/acis/' と入力してジャンプ)すれば、あとは何もする必要がありません。HTML 上では、単純に index.cgi があるディレクトリ('acis/')に対して <A> 要素でリンクを張るだけで OK です。

 なお、index.cgi を自動実行できないサーバをご利用の場合は、acis/index.cgi のようにファイル名まで指定してください。

4 付加機能

(1) パスワードによるアクセス制限

 perl CGI を同時に複数実行すると、CGI を実行しているサーバの負荷が高くなります。このため、本システムでは、パスワードによるアクセス制限機能を実装しています。

 この機能を使うためには、index.cgi の $password 変数にパスワードを設定し、サーバに再転送すれば OK です。パスワードが設定されていると、index.cgi を実行した段階で、自動的にパスワード要求画面を表示し、入力されたパスワードのチェックを行います。

(2) デバッグモード

 開発時の動作チェックなどで頻繁に農薬検査所 DB にアクセスすると、農薬検査所のサーバの負荷が高くなります。このため、本ソフトウェアでは、農薬検査所にアクセスすることなく動作チェックができるデバッグモードを実装しています。

 この機能を使うためには、acis フォルダーを転送したディレクトリに、本アーカイブを解凍した際に作成された debug フォルダーをディレクトリ付きで丸ごとテキストモードで転送します。さらに、index.cgi の $debug 変数に debug ディレクトリのパス(書いたとおりのディレクトリに転送した場合は '../debug') を設定し、サーバに再転送します。

 サンプルとして添付したデバッグ用ファイルは、下記のような条件で抽出したものです。検索語は何を入力しても下記の結果しか得られませんが、適応表を正確に出力するためには、作物名一覧から「ねぎ」、病害虫名一覧から「ネギアザミウマ」を選択してください。

  1. 作物名「ねぎ」で検索した作物名等一覧
  2. 病害虫名「ウマ」で検索した病害虫名等一覧
  3. 作物名「ねぎ」、病害虫名「ネギアザミウマ」で検索した登録農薬一覧
  4. 農薬の名称「アドマイヤー1粒剤」の農薬登録票
  5. 農薬の名称「アドマイヤー1粒剤」の適用表

5 留意事項

(1) 利用/改変条件

 本ソフトウェアはフリーソフトです。自由に(無料で)本ソフトウェアをご自分のウェブサイトに設置し、利用することができます。ただし、サイト上のどこかに携帯農薬検索実験室へのリンクを張って、本ソフトウェアを使用している旨を明記してください。

 また、本ソフトウェアは自由に改変して利用することができます。ただし、改変したソフトウェアを本ソフトウェアと同じ条件で、携帯農薬検索実験室/実験成果に公開することを義務づけます。

 なお、本ソフトウェアをベースとしたシステムを商利用に供することは禁止します。

(2) 著作権

 本ソフトウェアの著作権は、Hidemi Oya が留保します。本ソフトウェアを改変した場合、原作者の著作権表示を削除することは禁止します(改変者の著作権表示を追加することは自由です)。

(3) 免責

 本ソフトウェアのバグ等によって利用者やサーバに何らかの損害を与えるようなことがあっても、作者は補償やバージョンアップの責務を負いません。自己責任でご利用ください。

(4) サポート

 本ソフトウェアのサポートは、携帯農薬検索実験室/研究会で行います。本ソフトウェアは農薬検査所とは全く関係ありませんので、本ソフトウェアに関して農薬検査所に問い合わせなどを行うことは厳に謹んでください