トップ > msearchのケータイ対応化改造
 

msearchのケータイ対応化改造

msearchを携帯電話等の携帯端末(以下、ケータイと記述)に対応させるための 改造方法の提示、さらに必要ファイルの配布を行います。

本改造を行うことで、1つのURL(http://www..../msearch.cgi)でパソコン・ケータイ両対応になります。 msearchをパソコンから利用した時はパソコン用の設定ファイルを用いた検索結果表示が行われ、 ケータイから利用した時はケータイ用の設定ファイルを用いた検索結果表示が行われるようになります。 設定ファイルの切り替えはmsearch.cgi内部でアクセス元の種別を判定して行いますので、config引数を使う必要はありません。

Googleやgooにパソコンからアクセスした時とケータイからアクセスした時では、 検索結果表示が異なるのをイメージしてもらえば、いいでしょう。 (ケータイからアクセスすると、ケータイで見やすいケータイ向けの画面表示になる。)

なおここでいっているmsearchは本家版msearchのことです。 Unicode版msearchについては、Version 1.52(U2)より標準でケータイに対応しているため、 下記改造を行う必要はありません。(というか、改造方法が若干異なります。)

なお本改造について、毛流麦花は一切の責任を持ちません。自己責任で実施してください。 また本改造は毛流麦花が提案しているものであり、msearch作者のまっとさんの手をわずらわせるようなことはしないでください。 (本家BBSの関連スレッド:1986番)

本改造に関する質問、新機種対応などの要望は、Unicode版msearchの掲示板(ケータイ対応)でどうぞ。 実稼働のサンプルはこちらでどうぞ。(「アセンブラ」で検索してみてください。)

目次

改造手順

1.msearch.cgiの改造
2.ダウンロード
3.mobile.cfgの修正
4.アップロード
5.動作確認

その他

1.リンク集
2.対応機種
3.制限事項

改造手順

1.msearch.cgiの改造

本家版msearch Version 1.52のmsearch.cgiを改造します。全部で3箇所あります。 まず、1番目の改造箇所です。(198行目付近)

【msearch.cgi(1.52)の改造(1/3) - 修正前】

### 検索結果のセット数
if($qarg->{'set'} ne "") {
    $v_set = $qarg->{'set'};
    $v_set++;
    $v_set--;
    $v_set = 1 if($v_set eq "");
}

### HTMLのContent-typeを出力する
printcontenttype();

### インデックスと設定ファイルを確定する
#require './allow.pl';
identifyindex();

### 設定ファイルの読み込み
parseconfig();
$v_home = $f_home;
$v_rpp = $f_result_num;

### 検索結果一覧表示数
if($qarg->{'num'} ne "") {
    # cgi引数にnumが指定されている場合はそれを優先する
    $v_rpp = $qarg->{'num'};
    $v_rpp++;
    $v_rpp--;
    $v_rpp = 10 if($v_rpp eq "");
}

上記プログラムを以下のようにします。朱書き箇所を移動させます。(追加ではなく移動です。ご注意を。)

【msearch.cgi(1.52)の改造(1/3) - 修正後】

### 検索結果のセット数
if($qarg->{'set'} ne "") {
    $v_set = $qarg->{'set'};
    $v_set++;
    $v_set--;
    $v_set = 1 if($v_set eq "");
}

### インデックスと設定ファイルを確定する
#require './allow.pl';
identifyindex();

### 設定ファイルの読み込み
parseconfig();
$v_home = $f_home;
$v_rpp = $f_result_num;

### HTMLのContent-typeを出力する
printcontenttype();

### 検索結果一覧表示数
if($qarg->{'num'} ne "") {
    # cgi引数にnumが指定されている場合はそれを優先する
    $v_rpp = $qarg->{'num'};
    $v_rpp++;
    $v_rpp--;
    $v_rpp = 10 if($v_rpp eq "");
}

2番目の改造箇所です。(場所は1番目の改造箇所のすぐ近く。)

【msearch.cgi(1.52)の改造(2/3) - 修正前】

### インデックスと設定ファイルを確定する
#require './allow.pl';
identifyindex();

### 設定ファイルの読み込み
parseconfig();
$v_home = $f_home;
$v_rpp = $f_result_num;

上記プログラムを以下のようにします。朱書き箇所を追加します。

【msearch.cgi(1.52)の改造(2/3) - 修正後】

### インデックスと設定ファイルを確定する
#require './allow.pl';
identifyindex();

### 携帯端末対応ここから
require './judgeua.pl';
$sjishtmmb = &judgeua::get_terminfo(\$ENV{'HTTP_USER_AGENT'});
if($sjishtmmb) {
   $g_config = "./mobile.cfg";
   # $g_indexfile = "./mobile.idx";
   # 携帯端末からのアクセス時にindex引数の指定に関わりなく特定のインデックスを使う場合に有効化
}
### 携帯端末対応ここまで

### 設定ファイルの読み込み
parseconfig();
$v_home = $f_home;
$v_rpp = $f_result_num;

3番目の改造箇所です。(1220行目付近)

【msearch.cgi(1.52)の改造(3/3) - 修正前】

###
### HTML Content-type出力
###
sub printcontenttype {
        print "Content-type: text/html\n\n";
}

上記プログラムを以下のようにします。朱書き箇所を追加します。(セミコロンをお忘れなく。)

【msearch.cgi(1.52)の改造(3/3) - 修正後】

###
### HTML Content-type出力
###
sub printcontenttype {
        print "Content-type: text/html;charset=$f_encoding\n\n";
}

2.ダウンロード

これをダウンロードして ください。(makmはmsearch adaptation kit for mobile-phoneの略のつもり。) 解凍すると、以下のファイルが出てきます。

【makm.lzhに含まれるファイル】

judgeua.pl 携帯電話の種類を判定するためのライブラリ
mobile.cfg 設定ファイルの例(携帯電話用)

makm.lzhに含まれるmobile.cfgは本家版msearch専用です。Unicode版msearch用としては使えませんので、ご注意ください。 judgeua.plは本家版msearch・Unicode版msearch共用です。

3.mobile.cfgの修正

mobile.cfgの「1.変数の設定」の$homeをあなたのホームページのURLに書き換えます。 mobile.cfg保存時の文字コードはEUC、改行コードはLFです。

4.アップロード

以下の3ファイルをサーバーのmsearch設置ディレクトリ(フォルダ)にテキストモード(アスキーモード)でアップロードします。

【アップロードするファイル】

改造したmsearch.cgi
judgeua.pl
mobile.cfg

アップロードしたら、3ファイルについてパーミッションを確認します。 修正が必要な場合は、修正します。(judgeua.plはjcode.plと同じパーミッションに、 mobile.cfgはdefault.cfgと同じパーミッションにしてください。)

5.動作確認

さっそくmsearchを動作させてみましょう。 まず、パソコンからアクセスします。検索結果の画面、ヘルプの画面ともに従来と同じであることを確認します。 次に、ケータイからアクセスします。検索結果の画面、ヘルプの画面ともに パソコンからのアクセス時とは異なる画面、ケータイで読みやすい画面表示になるはずです。

ケータイを持っていなくても、ケータイのシミュレータを使えば、 ケータイでの見え方がパソコン上で確認できます。 シミュレータの入手先等は本ページのリンク集をご覧ください。 (ドコモのiモードHTMLシミュレータ(mova相当)とiモードHTMLシミュレータII(FOMA相当)を推奨します。)

その他

1.リンク集

各キャリアの開発者向けサイトです。エミュレータ等もこれらのサイトから入手可能です。

WILLCOM
DoCoMo
au
SoftBank
EMOBILE

ケータイ用ブラウザを開発している会社・組織のサイトです。

Opera for Mobile
NetFront
jig browser
Scope
SiteSneaker
ibisBrowser

ケータイ関連で参考になるサイトです。

AIR-EDGE PHONE 情報館
ゆきの研究室
CGIぽん
携帯電話キャリア自動判別ライブラリ
My First HDML
Net_UserAgent_Mobile
MobileUserAgent
Nokia Tools and SDKs mobile applications develoment

2.対応機種

judgeua.plの履歴です。

【judgeua.pl 履歴】

 Ver. 1.00  2005/09/22  最初のバージョン

    対応: DoCoMo(i-mode(mova, FOMA))
          au(EZweb(HDML, WAP2.0))
          Vodafone(J-SKY(2GのWEB), 3G)
          TU-KA(EZweb(HDML, WAP2.0))
          WILLCOM(AirEDGE, H")
          ASTEL(dot-i)
          L-mode
          一部のPDA

    UTF-8対応:DoCoMoのFOMA
               auとTU-KAのWAP2.0対応機(すべてUTF-8対応とみなす)
               VodafoneのP4(2)型(J-N51, V601N)とW型(V801SH, V801SA)と3GC型
               WILLCOMのAH-K3001V/AH-K3002V

 Ver. 1.01  2005/10/01  下記端末・ブラウザに対応した(つもり)

    WILLCOM WX300K/WX310K/WX310SA/WX310J(すべてUTF-8対応とみなす)
    Javaベースのブラウザ(jig browser/Scope)(すべてUTF-8対応とみなす) 
      (SiteSneaker/ibisBrowserには未対応。)
    PDAに搭載されたNetFront(すべてUTF-8対応とみなす)

 Ver. 1.02  2008/02/25  下記端末に対応した(つもり)

    SoftBank(3G, すべてUTF-8対応とみなす)
    Disney Mobile(SoftBank(3G)と同じ)

 Ver. 1.03  2008/02/29  下記端末に対応した(つもり)

    EMOBILE(すべてUTF-8対応とみなす)

3.制限事項

makm.lzhに同梱している設定ファイルはHTML機のみの対応です。 au/TU-KAのHDML機(WAP2.0以前の機種)には対応していませんし、対応する予定もありません。 これは、msearchの検索対象は基本的にHTMLであり、HDML機でHTMLを検索しても仕方がないであろうとの考えによるものです。 まあ、HDML機でもHTMLを変換して表示する仕組みがあるらしいですが、掲示板CGIのように 自前でデータを保持しておいて、そのデータをHTML形式なりHDML形式にして表示するならまだしも、 全文検索CGIでHDML機を対象にする必要はなかろうと考えます。

auとTU-KAのWAP2.0対応機はすべてUTF-8対応とみなしています。 これは、UTF-8対応機と非対応機を見分ける方法がわからなかったことによるものです。 PCサイトビューアー(=Opera)搭載機はUTF-8対応とみなしても大丈夫そうですが、 非搭載機でUTF-8対応の機種があるのかどうか、わかりません。 (UTF-8未対応と判断したとしても結局PC用のUTF-8エンコードな設定ファイルで表示するのだから、 それくらいだったら、WAP2.0対応機はすべてUTF-8対応とみなした方が楽だしパケット代の節約にもなるだろう、との判断です。)

外国のキャリア(携帯電話会社)、外国のケータイ(GSM機、W-CDMA機など)には対応していませんし、対応する予定もありません。 これは、必要性を感じないためです。


HP内全文検索エンジン - Unicode版msearch