auのT008で青空文庫する。

※とりあえずここでは私が試行錯誤した結果をつらつらと書いていきますが、もっといい方法があったら教えて下さい。

最近携帯電話をW43CAからT008に機種変しました。電波が変わる影響でW43CAが使えなくなるための無償交換機種から適当に選びました。まあ、ただだからいいけどちょっと使いかっては悪くなりました。MicroSDカードを刺す場所がバッテリーの奥になったので抜き差しするのはかなり不便になったので基本抜き差ししない使い方を強いられるようになりました。でもこれはパソコンにUSBでつないで外部メモリ転送モードで利用すれば特に不便はありませんが、W43CAがクレードルに載せれば通信も充電も同時にできていたことを考えるとかなり不便になったというのは否めません。

スマホにしようかとも思ったのですが、よく考えてみるとスマホにしてまでやりたいことがなかったので安く済ますためにガラゲーでいいかなーと思いガラゲーにしました。もしもスマホが欲しくなったら別に小形のタブレットでも買ってwimaxすればいいかなーと思ってます。

最近、しばらくの間、外で働くようになったのですが、帰りの電車で手持ちぶたさになるのですが、昔みたいに漫画を買って読む気にもならないので読書でもしようかと思ったのですが、お金を出してまで読みたい本がなかったので青空文庫しようと思ったわけです。

青空文庫 Aozora Bunko

ちょうど途中まで読んだことがある人間失格があったのでこれをダウンロードしてT008で何とか読むことができないかと思っていろいろ試しました。

結論から言うとT008で青空文庫をすることは可能ですが、結構手間が掛かかります。そこまでして青空文庫したかったらスマホにしたほうがいいかなーとも思わなくも有りません。

auの携帯で青空文庫する方法は幾つかあるようですが、PCドキュメントビューアが搭載されている機種ではテキストをPDFに変換して読むのがよさそうに思います。残念ながらT008にはPCドキュメントビューアは搭載されておらずこの方法は使えません。

また、ネットに定額制で繋げる契約にしている場合はネット上でテキストをページ分割して表示してくれるサイト等もあるのでこれらを利用したり、HTML版を読めばいいのではないかと思います。残念ながら私は安く済ませるために定額制の契約をしてないので携帯電話でネットには通常つなぎません、。

となると、私に残された方法はテキストを画像に変換して見る方法しか残されていなそうです。そこで探してみたところよさそうなフリーソフトがtxt2jpgでした下記のサイトの記事が大変参考になりました。

いる・ろぐ: W61CA(カシオ製AU携帯)で青空文庫を見ましょう!

T008は854×480と640×480のVGAサイズの画像を表示するのに向いている広さなので設定を調整する必要が有ります。

私の設定は以下のようにしました。

[フォント]メイリオを入れているので@メイリオをサイズ26で指定しました。メイリオを入れてなければ@MS Pゴシックでいいでしょう。

[サイズ]VGA 640*480にしました。

[画質]80のまま。

[配置]文字間隔12、余白上部25、あとは0

[出力]出力設定(毎回指定)、画像ファイル名(毎回指定)、ページ表示(ファイル名の末尾に4桁)、出力先フォルダ名(毎回指定)、最大枚数(10000)、出力形式(GIF)、タイムスタンプ(出力逆順に書き換え)、90度右回転出力

※重要なのはタイムスタンプ(出力逆順に書き換え)でこれを指定しないと携帯電話上でちゃんと画像が順番に並ばなくてまともに本としての機能を果たしません。

結果テキストファイルから画像ファイルに変換され作成されるページは以下のような画像ファイルになります。

GRP_0023

携帯電話で見ると以下のような感じです。ルビも振れるので本当に本みたいです。

CA350609

そういうわけで、T008で青空文庫出来るようになりました。先人の方たちの努力に感謝いたします。TXT2JPGの設定が保存されてるけど読み込めなんだけどなんでだろ?毎回設定するのが面倒なのが玉に傷。ルビのフォントの大きさはもう少し調整の余地があるかもしれません。

 

ここからは予断になりますので興味のない方は読み飛ばして下さい。 さて、私この記事を書いている途中まで画像がソートされて表示されないので途方にくれておりました。T008では青空文庫するのは無理なんじゃなかろうかガラゲーは使えねーと思っておりました。何のことはない、「タイムスタンプ(出力逆順に書き換え)」の設定を行なっていなかったからでした。この記事を書いていて気がついたのでまあ結果オーライなのです。

最初ファイル名でソートされるものと思い込んでいた私は自分で大きなワナにはまっていたわけです。タイムスタンプの設定が適切でないと以下の画像の様に表示順がバラバラになってしまいます。これでは本として役目を果たしません。しかもmicroSD上のファイルは携帯電話のソートする機能が使えないので、ファイル名でソートすることも不可能です。本体側に転送すればファイル名でソートすることが可能になりますが、転送に時間がかかって面倒な上に自動的に付けられるファイル名の番号部分に前ゼロが付かないのでちゃんとソートできません。お手上げでした。

「ガラゲーは所詮ガラゲーか、ガラゲーとスマホは日本のIT企業とアメリカのIT企業の縮図のようだ。コンプライアンスだとか何だとかでガチガチで制限だらけの日本のIT企業と自由でなんでもありのアメリカIT企業をそのままあらわしているじゃないか、なんでmicroSD上のファイルのソートが出来なんだ、青空文庫させないでLISMOのブックライブラリ買わせるための姑息な陰謀か?」などと見えない敵と戦っていました。www

CA350610

ファイ名の前ゼロをつければいいと思いましたが、人間失格で600枚以上ある画像ファイルのファイル名の変更を手動でそれをやるにはあまりに効率が悪い。

調べてみると画像と同じフォルダー内にファイル名を管理しているU1_F_000.MGR~U1_F_006.MGRの様なファイルがあり1ファイルで100個のファイルのファイル名を管理しているようです。そこでファイル名を前ゼロをつかた形で付け替えるperlのスクリプトを書いたりと涙ぐましい努力をした結果が下の画像。これなら本体に転送すると無事にファイル名でソートすることが出来ました。

このことを記事にするつもりだったので、はじめに「もっといい方法があったらおしえてね!」と赤文字でまで書いていたのですが全ては無駄な努力でした。www

 CA350611

まあ、何かに応用が効くかも知れないのでソースコードも載せておきます。

同じフォルダ内にある拡張子が.MGRのファイルの中身のファイル名をFILE0000という形で前ゼロ有りのファイル名に変換するperlスクリプトです。もしもタイムスタンプでソートできずにファイル名でならソートできる機種があったら役に立つかも知れません。(ないかな)

au_file_name.pl

my $offset = 0x22;
opendir(DIR,"./");
while(my $file = readdir(DIR)){
    next if($file eq ".");
    next if($file eq ".");
    next if($file !~ /\.MGR$/);
    next if( !-f $file);

    print "$file\n";

#    my $obj = sub{
#        local $/ = undef;
#        open(my $fh,$file);
#        binmode $fh;
#        my $str = <$fh>;
#        close($fh);
#    };
#
#   my $date = $obj->();

    my $buf,$h,$l;
    my $curp = $offset;
    open(FILE,"+<$file");
    binmode FILE;

    for(my $i=0;$i <100; $i++){
        seek(FILE,$curp,0) || die $!;
        read FILE,$h,1;
        read FILE,$l,1;
        my $num = unpack("S",$l.$h);

        seek(FILE,3,1);
        read FILE,$buf,1;
        my $flg = unpack("c",$buf);

        last if($num != 0 && $flg == 0);

        #ファイル1    = 5
        #FILE0000 = 8

        print "$num ";
        print "$flg ";

        seek(FILE,15,1);
#       read FILE,$buf,1;
#       my $len = unpack("c",$buf);
#       print "$len ";
        print FILE pack("c",8);

#       read FILE,$buf,$len;
#       print unpack("a$len",$buf),"\n";
        print FILE pack("a8",sprintf("FILE%04d",$num));

        $curp += 0x60;
    }

    close FILE;
#    exit(0);
}
closedir(DIR);

 

#お馬鹿な私でした。

(Visited 134 times, 1 visits today)

タグ : ,