アーカイブ

Archive for 2010年6月

BSHSBE07を購入

バッファローコクヨサプライのBluetoothステレオイヤホン、BSHSBE07を購入しました。

僕は通勤電車で音楽を聞こうとした時に、イヤホンに二つ期待している事があります。

  • 音漏れしない -> カナルが良い
  • 混んでいる時にケーブルを周りに引っ掛けない ->ワイヤレスが良い

ワイヤレスのカナルは、あまり選択肢がありません。ペンダントに普通のカナル式イヤホンを付ける製品もあるのですが、ケーブルがそこそこ長いためか混雑時に引っ掛けてしまう事があって止めました。

スポーツ用のイヤホンに、ネックバンドのカナル式が数機種あるのですが、見た目に異様な物が多いので敬遠しています。スポーツウェアとサングラスでジョギングでもしてそうなデザインだったり。

そんな中、ソニエリからHBH-IS800という、コードの短いカナル式のドライバ部分に電池と受信機を内蔵してしまった製品が出て死ぬ程ストライクだったんですが、例によって国内販売がありません。

BSHSBE07はHBH-IS800に似たコンセプトの製品で、試しに買ってみました。

無音時のホワイトノイズは無し
ワイアレスのイヤホンやヘッドホンに付き物の、ホワイトノイズがありません。今時は、どこの製品でもノイズは乗らないのかもしれません。

イヤーピースのサイズは一種類
厳しいです。耳の穴が広がりそう。

コントローラは扱い難い
手探りでボタンを探す事が難しいです。正円に近いのでボタンの配置面が探し難い上、ボリュームアップと再生を間違い易い配置になっています。

他社からも、同様の製品が出てくると良いなぁと思います。選択肢的に。

広告
カテゴリー:ハードウェア

ScanSnapで読み取ったPDFを無劣化で画像ファイルに変換する

僕は技術書をScanSnapで読み取り、PDFとして電子化しています。Mac上で閲覧する時はそのままで問題がありませんが、iPadに転送する場合などは、ページ単位の画像ファイルに変換してから、ePubなどに再構成しています。

この画像ファイルに変換する作業は、Automatorを使ってページ単位でJPEG画像にレンダリングを行っていたのですが、非常に時間がかかる上に再圧縮の過程で劣化します。

元々ScanSnapはビットマップ画像として読み込みを行っているので、PDFの中にはページ単位のビットマップ画像データが存在するはずです。これをそのまま切り出せば、短時間に無劣化で画像ファイルへの変換が可能になるはずです。

PDFからのビットマップ画像の取り出し
調べた所、Xpdfに含まれるpdfimagesコマンドで抽出可能な事が解りました。XpdfはMacPortsでインストールするか、ここで配布しているバイナリパッケージなどをインストールしてください。次のようなコマンドで抽出可能です。

pdfimages -j PDFファイルパス 出力プリフィックス

画像は、「出力プリフィックス-xxx.pbm」か「出力プリフィックス-xxx.jpg」として出力されます。ScanSnapの読み取り時にモノクロになった場合は1ビットのPBM形式に、カラーになった場合はJPEG形式です。つまりモノクロは可逆圧縮で、カラーはDCTとしてPDFに格納されているようです。

PBMからTIFF形式のG4 FAX圧縮に変換
カラーの方のJPEGはそのままePubに変換できますが、モノクロの方は別のファイル形式に変換する必要があります。最初はGIFを試してみましたが、画像の合計サイズが元のPDFの1.5倍程度まで大きくなりました。次にPNGを試した所、GIFよりはファイルサイズが小さくなりましたが、元のPDFと比較すると大きなサイズになりました。一瞬、「ちょ、PDFのモノクロ圧縮はすごすぎだろ」とか思いましたが、冷静に考えると1ビットのモノクロなので、TIFF形式のG4 FAX方式で圧縮してみたら、見事に元のPDFファイルとほぼ同じサイズになりました。PDFの画像部分は、TIFFが手本なのかもしれません。カラーにJPEGをサポートしているのも同様ですし。

変換作業自体は、ImageMagickを使うと簡単です。MacPortsを使うなり、バイナリパッケージをダウンロードするなりしてインストールしてください。次のコマンドでTIFF形式のG4 FAX圧縮に一括変換できます。

mogrify -format tiff -compress Group4 PBMファイルパス...

GIFやPNGは問題無いと思いますが、TIFFをサポートしていないePubリーダーもあるかもしれません、その時はファイルサイズを犠牲にして、PNGに変換する事になると思います。ファイルは大きくなりますが、無劣化には違いありません。

ScanSnapの型が新しい場合は、モノクロがグレイスケールになると聞いています。その場合、pdfimagesがどのようなファイルを吐くか判りません。恐らくJPEGだと思うのですが……

カテゴリー:デスクトップ

ZIPアーカイブに固めた画像ファイルをePubに変換する

僕の所にもiPadが届いたので、ScanSnapで読み込んでおいた技術書(PDF)と、漫画(ZIPアーカイブに固めた画像ファイル)を転送して閲覧してみました。

重いです。特にPDFが。

最初から電子化されている書籍であればベクトルデータのPDFは軽いと思いますが、スキャンした書籍はビットマップ画像の固まりなので、ファイルサイズからして巨大になり、閲覧が重いです。
ただし同じ書籍で比較すると、PDFよりもZIPアーカイブの方が軽いようです。

閲覧にはCloudReadersを使っているのですが、出来ればiBooksを使いたいです。
なによりも、書籍をiTunesで管理したいのです。

そこでZIPアーカイブを、ePubに変換してみる事にしました。

まずPDFの場合はZIPアーカイブに変換する所からになりますが、こちらにすばらしい解説があります。

Desire for wealth
ScanSnap で作成した pdf を Mac OS X の標準機能で軽くする & zip に固める

ここで行うサイズ調整はかなり効果があります。

次にZIPアーカイブからePubへの変換ですが、こちらの情報によるとePubはそれほど複雑な物ではないようです。

横浜工文社
日本語Epubブックサンプル

ここの情報を参考に、変換スクリプトを書いてみました。
ZippedImagesToEpub.rb.gz

使い方
このスクリプトはZip/Rubyとuuidを利用しています。ターミナルからRubyGemsを使って、インストールしてください

gem install zipruby
gem install uuid

後は、スクリプトを実行します。

ruby ZippedImagesToEpub.rb ZIPアーカイブ

現状iPadを横画面にすると、画面の左側か右側のどちらかだけに画像が表示されてしまう書籍もあります
また著者やカバー画像などのメタデータもサポートしていません。
このあたりは、コツコツ改善していこうかと思っています。

GUIを付けても良いんですが、Automatorから使う方が幸せかもしれません。
RubyCocoaの本買うかな…

カテゴリー:開発 タグ:

Objective-CでYAMLをパースする

ZippedImages Etceteraはメタデータの書式にYAMLを使っています。
XMLは人間による読み書きには適さないとかいった理由はどうでも良いんですが、実装にあたってCocoaから使えるパーサが必要になりました。

残念ながら良さそうな好みにあったObjective-C用のライブラリが無かったので、C言語用のlibYAMLを使いました。
libYAMLはXMLで言う所のSAXのような逐次処理型なのですが、空間も時間も切迫しない用途なので、DOM的に使えるラッパークラスを書きました。

githubに、ビルド方法や使い方も含めて公開しました。

ZippedImages Etceteraに必要な分しか実装していないので、論理型とか、明示型指定なんかは未サポートです。サポートするプリミティブ型の追加は簡単だと思いますけど。
配列とか辞書とか構造体の方は出来ています。
あと、エミッタ側は作ってません。

libYAMLはパースまではやってくれるんですが、型判定なんかは使う側に任されています。
まあ、バインドする言語で型に差異があるので仕方無いような、もっとやりようがあるような。

YAMLのライブラリというとsyckが有名ですが、ソースをみたらyaccを使っていたので敬遠してみました。ビルドで力尽きそうだったので……

カテゴリー:開発 タグ: , ,