W-SIM + W-ZERO3 シリーズから HONEY BEE 4 + Libero に機種変

WILLCOM と契約して以来、W-SIM + W-ZERO3 シリーズ(004/007/011)を使って来たが、この12月の初めに WILLCOM STORE で新ウィルコム定額プランGS契約となる HONEY BEE 4 + Libero 003Z セットが発売されたので、機種変更することにした。

SoftBank Libero 003Z

Libero 003Z は、諱を ZTE Blade といい、Android 搭載スマートフォンのローエンドモデルである。SoftBank からの発売はすでに一年ほど前であり、OS のバージョンは2.2。筐体はカッチリとして適度な密度感があり、これといった特徴はないが手になじむ形状には手堅さがある。性能には余裕はないが、標準アプリケーションを動かすのに不足は感じない。CPU は 600MHz ということなので Android 搭載機としては低いほうだが、その分電気も食わないと考えられるので、性能の限界を見極めて環境を構築できる人にとっては効率のいい機種ということになるだろう。

PIM を Palm から Android へ

さて私は9年ほど前から Palm OS 搭載機を使っており、W-ZERO3 シリーズを使っている間も特に PIM については Palm OS を使ってきた。Android では簡便さという点でどうにも Palm には全く及びそうにもないのだが、いろいろな条件を雑えて考えてみた結果、とりあえず試みに Android の PIM を使ってみることにした。Palm は Windows CE 系のデバイスと同期するために MS Outlook をハブにしていたので、予定とアドレスについてはそこから Google のアプリケーションに移すのに大した手間はかからない。To Do はどんどん消しこんでいくものであり過去のデータはなくてもよく、現在進行中の項目も特にないところだったのですることはなかった。問題はメモ帳である。


メモ帳を同期する必要はない

とりあえず Android 標準アプリの「ノートパッド」はとりあえず存在してるだけという感じなので、他のアプリを探してみることにした。Palm 使いとしては、とりあえずカテゴリによる整理や、閲覧または編集したアイテムを一覧の先頭に移動する機能があるとうれしい。とにかくいつでも側にあるはずの Libero をさっと取り出してさっさと参照したり書き込んだりできればいいので、最近流行りのクラウドサービス(=他人の私有物)と同期する機能などは無いほうがいい。

Palm Desktop からデータを読み込める「PalmNote」

というわけで探してみると「PalmNote」というアプリが見付かった。これはその名のとおり Palm OS のメモ帳に近い機能を持つアプリであり、さらに Palm Desktop のメモ帳から書き出したアーカイブファイル(*.mpa)やタブ区切りテキストなどを読み込める。

問題はやはり日本語というかマルチバイト文字の扱いである。試しに Palm Desktop から数件のメモを mpa に書き出して PalmNote に読ませてみたところ、やはり文字化けした。またタブ区切りテキストに書き出したものの文字コードを UTF-8 に変換してから読み込ませてみたが、これも文字化けしてしまった。

PalmNote はまた XML 形式でデータを一括してエクスポートする機能を持っており、もちろん自身で書き出した XML ファイルを読み込むこともできる。そこでその XML ファイルの内容を参考にして、タブ区切りテキストからこの XML の書式に変換するコマンドライン用の PHP スクリプトを組んでみた。手間というよりちょっとした頭の体操になるという程度のものだ。これで無事に Palm のメモ帳で書き貯めたデータを Android に移すことができた。

おまけ

参考として今回使用したスクリプトを付す。

#!/usr/bin/php
<?php
$line_delimiter = "\t\n";
$elem_delimiter = "\t";
$tsv = file_get_contents($argv[1]);
$tsv = mb_convert_encoding($tsv, "UTF-8","SJIS");
$tsv = preg_replace("/\r/u", "\n", $tsv);
$tsv = preg_replace("/([^\"])\"\n/u", "\${1}{$line_delimiter}", $tsv);
$div = explode($line_delimiter, $tsv);

$div = preg_replace("/^\n/u", "", $div);
$div = preg_replace("/^\"/u", "", $div);
$div = preg_replace("/\"\t\"/u", "\t", $div);
$div = preg_replace("/\"{2}/u", "\"", $div);
$div = preg_grep("/^$/u", $div, PREG_GREP_INVERT);

$out = "<notes>\n";
foreach ($div as $elem){
	$entry = explode($elem_delimiter, $elem);
	$out = $out . "<note>\n<category><![CDATA[" . $entry[2] . "]]></category>\n<text><![CDATA[" . $entry[0] . "]]></text>\n<readonly>" . $entry[1] . "</readonly>\n</note>\n";
}

$out = $out . "</notes>";
echo $out;
?>