2009年10月24日土曜日

Kindleで日本語を表示できた(あくまで絵として)

先日入手したKindleは非常に楽しいおもちゃである.ただ,当初の目論見が外れたのは,PDFを正しく閲覧するのがそれほど簡単ではないということである.この記事では,PDFファイルをKindleで読める形式に変換する方法と,それを多少改良して,日本語を含んだPDFファイルをKindleで読める形式に変換する方法を説明する.

Amazon.comから割り振られたメールアドレスに,Kindleで読みたいPDFファイルを添付書類として送ると,Kindleで読めるファイル形式に変換してくれる.変換されたファイルが,Whispernetで自分のKindleに送り込まれる.ただし1MBあたり$0.99かかる.また,スパム防止のために,amazon.comのKindle専用のページで,PDFファイルを送るアドレスを指定しておく必要がある.

問題は,この変換がかなり機械的なもので,英文の箇所以外はほぼ使い物にならない.図は無視されるようだし,表組みも乱れる.そしてなにより,数式も保たれない.

■PDFを画像にしてしまい,電子ブックとしてKindleに転送
解決法の一つは,PDFを各ページごとの画像にしてしまうことである.実際にこれをやってくれるのが,PDFread 1.8.2である."PDFRead 1.8.2 released!"の,#1の記事の末尾に,ファイルが添付されている.Microsoft Windowsのユーザは, pdfread-1.8.2-Installer.zipをダウンロードし,解凍すると現れるインストーラを起動すればよい.

上記で使えるようになるPDFread 1.8.2 (Windows版)は,GUI形式でパラメタを設定できる.ファイルのフォーマットはprc, profileは prc-mobi-pとしてPDFを変換すると,Kindleで表示できるファイルが出来る.KindleをPCにUSBで接続すれば外付けドライブとして認識される.Kindleのdocumentsというフォルダに,PDFreadの出力ファイルをコピーして接続を解除すると,Home画面で今コピーしたファイルを確認できる.写真が上の手続きの例である:

From Kindle

いうまでもなく,いったん画像に変換してしまっているので,検索などは出来ない.

このPDFread(Windows版)は,GUIで指定されたパラメタからコマンドライン版(pdfread)のオプションを組み立て,このコマンドライン版(実はPythonスクリプト)を起動しているだけである.また,pdfreadを読んでみると,だいたい次の処理をしている:
  • GhostscriptでPDFファイルの各ページををpng画像に変換し,特定の書式のHTMLファイルを生成する
  • 上記のHTMLファイル(とpng画像)から,mobipocket形式のファイルを生成する

■日本語を含むPDFファイルを画像に変換して同じ事をする
つまり,PDFread内で起動されるGhostscriptが日本語を理解するもの(ghostscript-cjkなど)ならば,日本語のPDFファイルからでも,Kindleで読めるファイルが生成できるはずだ.

Windows版でやるなら,PDFreadのインストールされたフォルダ内のgsというフォルダを,日本語対応版のそれ(例えばcygwinに含まれるもの)と入れ替えれば良いのだと思う.実際には試していない.

コマンドライン版のpdfreadが,Windows版のPDFreadがインストールされたフォルダ内のsrcというフォルダに含まれている.あるいは,正式配布場所の「Welcome to PDFRead」からダウンロードできる.これをLinux環境で実行した.幾つか必要なパッケージがある.Ubuntuなら,次のようにして揃えられる:

sudo apt-get install pdftk python-imaging pngnq gs-common djvulibre-bin libtiff-tools unpaper optipng


さらに,gs-cjk-resource他,mapfileのcmap-adobe-japan1や日本語フォントttf-kochi-gothic, ttf-kochi-minchoも必要である.synapticsでインストールすれば良い.

Windows版の時を参考に,コマンドラインを指定する:
  • プロファイル(-p)がprc-mobi,
  • 出力ファイル(-f)prc

がポイント.
$ python ./pdfread.py -p prc-mobi -t "On 2-part of Tame kernel of quadratic fields" -a "Iwao KIMURA" -c "math" -f prc ~/DocMath/HokurikuNT2009May/handout.pdf
(実際には1行で)のようになる.


ただし,私が試したときにはHTMLファイルとpng画像しか生成されなかった.これらのファイルを再びWindows環境に(USBメモリで)移動して,GUI版のPDFreadに同梱のNRhtml2mobiというファイルでmobipocket形式に変換した.これは,mobiperlという,mobipocket形式のファイルを操作するためのperlスクリプト群の一つを,実行形式(exeファイル)に変換したもののようである.

出力結果が,次の写真である:
From Kindle

もう少し工夫の余地があると思うので,追求していくつもりである.

2009年10月23日金曜日

Kindle購入.数式混じりのPDFを表示させたい

amazon.comの電子ブックリーダ,Kindleが,ついに日本でも使えるようになった.

まだ日本語の書籍は手に入らない.英語の本,新聞,雑誌やブログのみ.しかし,日本国内でも,オンラインでこれらコンテンツが購入できる.本体に3G携帯電話が内蔵されていて,コンテンツの購入など必要なときにはネットワークにアクセスできる.通信費用などは,本体価格に転嫁されているので月々の回線使用料などはかからない.

手持ちのPDFファイルを,電子ブック形式に変換してKindleにコピーし,読むことも出来る.問題は,数式やグラフなどが正しく表示されるようにする事である.

これについては明日以降説明を加えることとさせていただき,参考までにPicasaのアルバムを掲載する.

2009年10月19日月曜日

テスタ購入・SanwaデジタルマルチメータPM3

小学生~中学生の頃,ラジオ少年だった.キットを買ってきて半田付けしたり,雑誌記事(「子供の科学」や「初歩のラジオ」)を見て部品を買い集めて組み上げたりしたものだ.田舎町だったが,子供の足で行ける範囲に,そんな品揃えの部品店があったのは幸運だった.

最近になって,またそんな遊びをしてみようと思い立った.ちょっとしたキットと,ブレッドボードを買ってきた.基盤に半田付けしてしまう前にブレッドボードに仮組みして,悦に入っているような段階である.

From Electronics


上は,単にブレッドボードで発光ダイオードを光らせているだけ.下の動画は無安定マルチバイブレータで発光ダイオードを点滅させているのだが,まだブレッドボードの使い方が分かっていなかったので,一番上のVccやGNDの線を使っていない.本来は,「武蔵野電波のブレッドボーダーズ」にあるような,コンパクトな実装があるべき姿と思う.



導通の確認や,抵抗値を読み取るのに,もらい物の古いテスタ,正確にはデジタルマルチメータを使っていた.Kaiseの製品だ.しかし机の上に出しておいたら,子供がいじって壊してしまったようだ.抵抗・電圧などを測るモードで,006Pの積層乾電池に直結してくれたのだ.

新しいものに買い換える口実を作ってくれたので,むしろありがとうという感じ.さっそく,「Sanwa デジタルマルチメーター PM-3」を購入.今までの製品と比べると測定値が安定するのが早いし,値もふらふら変わらないし,嬉しい買い物である.

参考書として,「図解 つくる電子回路 (ブルーバックス)」と,「図解・わかる電子回路―基礎からDOS/V活用まで (ブルーバックス)」を見ている.特に前者は,取り上げる電子回路を「無安定マルチバイブレータ」に絞っている.代わりにイラスト,図版入りの説明が大変詳細,懇切丁寧である.無安定マルチバイブレータの動作原理,定数の決め方,部品のデータシートの見方,基盤への部品の取り付け方,半田付けの仕方,計測器具(ノギス,マルチメータ)の使い方,ユニバーサル基板での実装,ブレッドボードでの実装などが縷々述べられている.テキストというのはこのくらい書き込まなければならないのかと,大変感銘を受けた.

しばらく遊んだら,徐々にマイコン(Arduino)などにも手を出したいと思っている.


2009年10月14日水曜日

代数学II・環

火曜日の代数学IIの2回目.環の定義から.

定義を述べて,解説.さらにいくつか例を挙げる.ここらへんは,「だからどーした」という感想を持たれがちな箇所であるような気がする.零元の一意性などをやっている内に時間切れ.次回,分配法則を使って(-a)×(-b) = ab なんかをやる予定.

前回はオリエンテーションで,講義に入った初回が今回だったのでかなり安全運転.受講生の皆さんには,予習復習をするよう繰り返しお願いしている(そしてそれが出来るテキストを選んだつもり).次第に快適なペースに移行していこう.

2009年10月11日日曜日

そば処おきな

体育の日の連休は,特に遠出することもなくのんびりと過ごす.

天気がよいので,ドライブがてら昼食へ.ミニコミ誌で知った「そば処おきな」へ.しかし地図があまり手がかりにならずうーろうーろ.田んぼで農作業している方に尋ねたりしているうちに,時々看板が目に入るようになる.近づいてはいるのだが?

ようやくたどり着いて,すぐに座れた.田舎屋敷風の作りの建物で,庭もよく手入れされていて風情がある.頂いたのは天ざる.シメジのご飯と,子供用の掛けそば.大変美味しく頂いた.

お店がある場所は少し高台になっていて,東芦見尾根の末端が見えているのではないかと思う.

From そば処おきな

2009年10月9日金曜日

隣町セミナ・Sturmの定理の拡張

折からの台風18号の接近で,開催が危ぶまれていた後期最初のセミナである.しかしスピーカ氏は台風接近前に移動を完了しており,8日午後には天候も回復してきていた. 

テーマは,Sturmの定理を実2次体上のHilbert modular cusp formに拡張しようというものである.楕円保型形式に対する,もともとのJ. Sturmの定理というのは以下のようなものであった:lを奇素数とする.f(x)がウェイトk, レベルNの楕円保型形式で,無限遠点での展開が
f(z) = \sum_{n=0}^{\infty} a(n)q^n, \text{        } \forall\,a(n)\in \mathbf{Z}
なるものとする.すると,kとNで具体的に書ける(lには依らない)ある定数κが存在して,
\text{if } l\mid a(n) \text{ for } \forall n \le \kappa, \text{      then   } l \mid a(n) \text{    }\forall n\in\mathbf{Z}.

この定理は20年程前に発表されていたが,Kohnen-Onoが,虚2次体の類数の非可除性や,有理数体上定義されたCM楕円曲線のTate-Shafarevich群の位数の非可除性を示すのに応用して注目を集めた.ポイントは,虚2次体の類数や,CM楕円曲線のTate-Shafarevich群の位数に密接に関係する量(実はそれらのL関数の特殊値)を係数に持つ半整数ウェイトの楕円保型形式が存在することである.この保型形式に,Sturmの定理を適用する.

虚2次体の類数を,総実代数体上のCM体の相対類数に拡張しようというのは自然な発想で,すると基本的なツールとして,Sturmの定理を,総実代数体上のHilbert保型形式に拡張したものがひつようになる.

スピーカ氏の結果は,総実代数体として実2次体をとれば,Sturmの定理の類似が成り立つ,というものであった.証明の方針は,Sturmのもともとのものではなく,Doi-Ohtaによる,modular曲線のreduction mod lに対するRiemann-Rochを使うものを,Hilbert modular surfaceの場合に適合させるというもの.代数幾何的なセットアップが必要になるので,技術的には非常に込み入ったものになる.大変興味深く拝聴した.

毎回,セミナ終了後に会食していた店が9月いっぱいで閉店していたのが,最後に待っていたサプライズ.有為転変である.

2009年10月7日水曜日

後期の代数学II開始

後期の担当講義,「代数学II」が開始.内容は,環・体・群の初歩.

数年前から,前期の代数学Iが初等数論から代数系の導入くらいまで,後期からいわゆる代数学の講義を始めるようになった.カリキュラムの改訂があってから,この講義を持つのは初めてかもしれない.

初回なので,シラバスに沿って事務的な事柄を確認.導入のためのお話など.前期に学んだ初等数論は,殆どFermat, Euler, Gaussらによって開拓されたんですよ,などと,彼らの肖像をプロジェクタで投影しながら.教科書の演習問題から,√2 + √3 が無理数であることを示せ,というクイズに答えて貰う.

今回の講義,教科書は「代数と数論の基礎 (共立講座21世紀の数学)」.普通のテキストのよりずっと書き込まれた行間のおかげで,受講者諸君の自習・予習がしやすいだろうと期待しているところ.