AirPrint可能なプリンタ共有にしておく

iOS4.2.1がリリースされ、iPadもいよいよマルチタスキングに対応して、その使い勝手が向上してきた。追加された機能の詳細は、以下のページが詳しい。

最大のウリであるAirPlayと並んで、気になる機能にAirPrintがある。これは、iPadやiPhoneから無線LAN経由で印刷する機能。個人的には、iPadは紙に代わるメディア(写真のアルバムや電子書籍、PDFビューア等)として存在しているのに、今さら紙に印刷するのは流れに逆行するように思えてしまう。しかし今後、iPadでの作業が主流になり、MacBookなどは家庭内のサーバー的な役割になってくると、いずれは紙に印刷機能も必要になってくるのかもしれない。いくら薄く安価になっても、iPadが完全に紙の代替になることはあり得ず、どうしても紙に印刷する需要は残ってしまう。(例えば、そろそろ気になってくる年賀状だろうか)

ところが、このAirPrint、現状ではヒューレッド・パッカードのプリンタしか対応していない。当初はOSXでプリンタ共有されたプリンタからも印刷できたらしいのだが、OSX 10.6.5が正式リリースされた時に、その機能は削除されてしまったらしい。理由は分からないが、非常に残念ことだ。

でも、世界は広い。そして、どこかで誰かが同じように残念に思って、どうにかAirPlay対応のプリンタ共有を復活できないかと試行錯誤し、優秀な人達は、遂に復活させてしまった!その情報には、東の端っこの島国に住む自分でも簡単にアクセスできる。Webの力って凄い。

あるいは...

手順

  • 作業前には、必ずバックアップして、いつでも元の環境に戻せるようにしておくべき。
  • TimeMachineなら安全確実にマシン環境全体を復元できるので、気兼ねなく作業できる。
MacBookでの作業
  • OSX 10.6.5にアップデートしておく。
  • 必要なファイルAirPrintFix-ChuckG.zipをダウンロードして、解凍する。
  • 上記ファイルを必要な場所にコピーする。(管理者権限が必要)
$ sudo cp ~/Downloads/AirPrintFix-ChuckG/urftopdf /usr/libexec/cups/filter/
$ sudo cp ~/Downloads/AirPrintFix-ChuckG/mime/* /usr/share/cups/mime/
  • システム環境設定 >> プリントとファックス を開いて、AirPrint対応なプリンタ共有にするプリンタを一旦取り除く。(−ボタンを押す)
  • MacBookを再起動。
  • システム環境設定 >> プリントとファックス を開いて、追加ボタンを押して、プリンタを追加した。(+ボタンを押す)
  • 「ネットワークでこのプリンタを共有」にチェック入りにする。
iPadやiPhoneでの操作
  • iPadã‚„iPhoneで写真アプリを開いて、早速AirPrintを試してみる。

  • MacBookでプリンタ共有している Canon BJ F900 が選択可能になっている!

  • プリント ボタンを押してみると、L版サイズで印刷された!


専用アプリ

仕組み

apple.convs・apple.typesの差分
  • OSX 10.6.5のapple.convs・apple.typesと、ダウンロードしたAirPrintFix-ChuckGのapple.convs・apple.typesの差分は以下のようになった。
  • image/urf形式のデータを、PDFに変換する処理が追加されているようだ。
$ diff -u /usr/share/cups/mime/apple.convs ~/Downloads/AirPrintHacktivator.app/Contents/Resources/apple.convs
--- /usr/share/cups/mime/apple.convs	2009-06-23 16:53:27.000000000 +0900
+++ ~/Downloads/AirPrintHacktivator.app/Contents/Resources/apple.convs	2010-11-22 09:17:19.000000000 +0900
@@ -30,6 +30,7 @@
 # tries to mimic the Preview application (and actually respects embedded
 # ColorSync profiles, etc...)
 image/*			application/pdf	25	cgimagetopdf
+image/urf		application/pdf 0	urftopdf
 
 # For pdf to pdf conversion with features applied
 application/pdf		application/vnd.apple-pdf	25	cgpdftopdf
  • +image/urf application/pdf 0 urftopdf
    • image/urf形式を、application/pdf形式に変換するには、コスト0で、urftopdfフィルタ(実行コード)を使う、という設定。
  • では、image/urf形式とは何か?と言えば、apple.typesに以下のように定義されている。
$ diff -u /usr/share/cups/mime/apple.types ~/Downloads/AirPrintHacktivator.app/Contents/Resources/apple.types
--- /usr/share/cups/mime/apple.types	2009-06-23 16:53:27.000000000 +0900
+++ ~/Downloads/AirPrintHacktivator.app/Contents/Resources/apple.types	2010-11-22 09:17:19.000000000 +0900
@@ -4,6 +4,8 @@
 # Copyright 2002-2009 Apple Inc.  All rights reserved.
 #
 
+image/urf			urf string(0,UNIRAST<00>)
+
 application/pictwps		pictwps string(0,<726244470001>)
 text/rtf			rtf string(0,"{\rtf") priority(200)
 
  • +image/urf urf string(0,UNIRAST<00>)
    • image/urf形式とは、urf拡張子を持ち、ファイルの先頭が UNIRAST<00> という文字列で始まるファイル。
  • しかし、image/urf形式の中身や利用される状況というのは、結局のところ分からなかった...。
  • /usr/libexec/cups/filter/urftopdfについては、新規の追加ファイルである。urfã‚’pdfに変換するフィルタ。
コストとは
  • 世の中には様々なプリンタがあり、印刷するためには、それぞれのプリンタに適合するデータに変換する必要がある。
  • その処理を行うのが /usr/libexec/cups/filter/ 以下にある実行ファイルのようだ。
  • 目指すデータ形式に変換するまでに、通常、複数のフィルタが組み合わされる。
  • その組み合わせをフィルタの経路と言い、もしかしたらその経路は複数存在するかもしれない。
  • その中から最適な経路を決定するために、コストが判断材料になるようだ。
  • なるべく少ないコストの経路が選択されるのだ。
  • コストが0ということは、最も優先されるフィルタ、と言うことになる。

AirPrintの使い心地

  • 写真では、iPad・iPhoneどちらで印刷しても、L版サイズの出力となった。
  • 一方、Safariで印刷すると、A4サイズの出力となった。
  • 用紙サイズや縦・横、紙質を選択する余地はない。
  • Numbersでは、A4サイズは固定だが、用紙の縦・横と拡大・縮小の調整は出来た。

  • 横方向に切り替えてみた。

  • スライダーを動かせば、拡大・縮小できる。
  • 用紙切れなど何らかのエラーで印刷が停止すると、アラートが表示された。

  • キャンセル ボタンを押すと、残りの印刷ジョブは削除された。
  • 用紙を追加するなどしてエラーの要因を取り除けば、アラートは消え、自動的に印刷は再開される。
  • 続ける ボタンを押すと、アラートは消えるが、エラーの要因を解消するまでは印刷できない。

CUPS管理ページ

  • http://localhost:631/
  • 上記ページにアクセスすることで、CUPSの様々な設定が出来る。



  • ちなみに、AirPrint中であっても、MacBookのプリントキューにはジョブは表示されない。

  • エラーが発生すると、エラーの状態だけは表示された。


所感

  • HPのプリンタは持っていないけれど、これでiPadã‚„iPhoneからもある程度は印刷できるようになった!
  • 用紙のサイズや品質は選択できないので、細かな不満は残るかもしれない。(古ーいBJ-F900ではできなかったが、最新のHPプリンタならできるのか?)
  • しかし、ほとんど何も考えずにプリンタを選択するだけで、そこそこの印刷品質に仕上がるところは素晴らしい。
  • 料理のレシピなど、調理しながらのiPadの操作は、水気や汚れが気になっていた。
  • 紙に印刷しておけば、気兼ねなく触れるところがいい。
  • しかし、iPadã‚„iPhoneから紙に印刷する需要というのは、極力最小限にしたいと思っている。
  • 苦労して紙から電子データ変換したデータを再び紙に戻してしまうのは、悔しい...。
  • あらゆる情報を画面で見て満足する習慣や環境になって欲しいものだ。

参考ページ