携帯サイト開発 その1 全キャリア・全機種をゲット 
ネタ蔵カテゴリ:インターネット・IT

Filed under Web開発, 携帯サイト開発 | Tags ,

DoCoMo PRIME F-01A By Fujitsu Hands-on, the Ultimate Japanese mobile phone.
Creative Commons License photo credit: Akihabara News

なんの因果か、自作PHPフレームワークを携帯サイト対応させています。
携帯サイトを作る手間を軽減したい為なんですが(いっつも同じコードを書くのはしんどい)、調べれば調べる程・・・「実はそのことで別の仕事を増やす羽目になってないか?」と自問自答しながらの進行です。

「別の仕事」とは、携帯電話の進化に伴うフレームワークのメンテナンス作業のこと。
フレームワークで携帯サイトを作れるようになるのはいいのですが、新しい機種や技術が出る度にフレームワークをメンテしないといけないわけで・・・「楽したい」からやっているというのに・・・まさに「地獄めぐり」ですね(w

いまのところ携帯対応方針としては・・・

  • XHTMLしか吐かない(FOMA・WIN・3GC)
  • 内部エンコードはUTF-8
  • とりあえず絵文字のことは知らない

ってな緩さで進行中。
いままでやったのは・・・てか準備しかしてないって感じなんですが・・・

です。

今日は、その中でもみなさんも使える「Modify Headersのインポートデータを作る」スクリプトを発表しときます。

  • 各キャリアの個体識別情報用Header
  • User Agent

が揃っているだけですが、いちいち手で作るのは面倒だし、こうすれば全キャリア・全機種のUser Agentがゲットできるってことで。

#!/usr/bin/env php
<?php
$shortopts = "f:H";
$options = getopt($shortopts);

if(isset($options["H"])) {
    printUsage();
    exit;
}

if(isset($options["f"])) {
    $source = $options["f"];
    if(!file_exists($source)) {
        printUsage();
        exit;
    }
} else {
    printUsage();
    exit;
}

if(!mb_ereg("UserAgent_([^.]*).csv",$source,$regs)) {
    echo "csv file must be from impressrd.jp.";
    exit;
} else {
    $version = $regs[1];

    // read user agetn file
    $ua_handle = fopen($source, "r");
    if(!$ua_handle) {
        echo "can't open csv file...\n";
        exit;
    }
}

$xml = "<modifyheaders>";
$xml .= sprintf("<header><action>Add</action><name>X-Dcmguid</name><value>%s</value></header>","A1B2C3D");
$xml .= sprintf("<header><action>Add</action><name>X-Up-Subno</name><value>%s</value></header>","ABCD0123456789_gc.ezweb.ne.jp");
$xml .= sprintf("<header><action>Add</action><name>X-Jphone-Uid</name><value>%s</value></header>","a10Sty5ipolcWgb3");
$count = 0;
while(($line = fgets($ua_handle)) !== FALSE) {
    if(!$count) {
        $count ++;
        continue;
    }

    $line = mb_ereg_replace("\n","",$line);
    $line = mb_ereg_replace("\r","",$line);
    $line = mb_convert_encoding($line,"UTF-8","SJIS");
    $data = explode(",",$line);

    $useragent = $data[3].(($data[4]=="  ")?"":$data[4]);
    $career = $data[0];
    $model = $data[1];

    $xml .= sprintf("<header><action>Modify</action><name>USER-AGENT</name><value>%s</value></header>",$useragent);

    $count ++;
}
$xml .= "</modifyheaders>";
fclose($ua_handle);
file_put_contents("modifyheaders.xml",$xml);
exit;

function printUsage() {
    echo "Usage: php createImportData.php -f <useragetn csv file>\n";

    echo "  -f : csv file for import\n";
    echo "  -H : help\n";
}
?>

インポートにはちょっと時間がかかりますが、手でいちいちデータつくるのを繰り返すよりはいいはず。
Smartyとか使えばいいのですが、ここは面倒なのでハードコード。

お試しあれ。


関連記事

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*