少し前に発表されたGoogle Cloud Print構想ですが、まだ動くものがないせいか最初のニュースリリース以来何の進展もないのが現状です。
TechCrunchが一番詳しく報じていましたが、それでもGoogle Cloud Printが何をしてくれるのか、現状どういう状態にあるのか知ることが難しかったので元情報にあたってみました。そんなに難しい英語ではありませんが、後で参照することを考えて訳も残してあります。きちんと原文と対応する訳ではありませんが、参考にはなるんじゃないかと。
Google Cloud Printって何?
Webブラウザ/デスクトップアプリ/携帯端末全てから、ドライバの問題を気にすることなく世界中全てのプリンタに印刷出来るようにすることを目指すGoogleのプロジェクト。
GoogleはCloud Printのデザインドキュメントとプロトコルを公開し、さらにCloud Print Serviceを将来公開する。 アプリケーションは印刷指示をOSやドライバに送る代わりにGoogle Cloud Printに印刷ジョブを送る。Google Cloud Printが登録されている適切なプリンタにジョブを送り、アプリに印刷状況を伝える責任を果たす。
Googleがこのプロジェクトに取り組むのはChrome OSで全てのプリンタに対応するドライバを用意することが不可能だから。Chrome OSはCloud Printを使うように設計される、プリンタドライバは一切搭載されない。
現状何があるの?
Googleがこんなこと考えているよというデザインドキュメントだけ。
数ヶ月以内に追加の発表があるかも。
この段階でCloud Printを発表したのはプリンタメーカーとコミュニティの協力/フィードバックを早期に得るため。
どうやって実現するの?

Cloud Printではクラウド対応のプリンタと、レガシープリンタの2種類のプリンタを想定している。現在世の中にあるプリンタはWeb連携していてもレガシープリンタに分類される。Googleの考えるクラウド対応プリンタとはCloud Printで想定しているプロトコルを解釈出来るネットワーク対応プリンタを指す。かといって全てのプリンタがクラウド対応になるのを待ってるわけにも行かないから解決策も提供する。それはGoogle ChromeにCloud Printのプロトコルを解釈出来るプロキシを搭載することである。これにより、Google Chromeユーザは既存のレガシープリンタをPCをプロキシとして、Google Cloud Printのサービスを利用することが出来る。かといってこの方法だとPCもプリンタも常時電源をつけていなければならないので、例えばルータでプロキシが動くようにすればこの問題を解決出来ると考えている。(Google Cloud Printの絵にルータが書いてあるのはこのため。)
もう少し詳しい技術情報を
ユーザとプリンタの関連付けはGoogleアカウントを用いる。ユーザは既存のアカウントでログインし、はじめに利用するクラウド対応プリンタ(またはプロキシ下のレガシープリンタ)を登録する。プリンタはGoogle Docsのドキュメントのように扱うことができるので、プリンタを複数のユーザで共有することも簡単。
Cloud Print Serviceとプリンタの会話はHTTPで行う。サービスでは以下のAPIを定義
- register : プリンタの登録
- update : プリンタ情報の更新
- list : 特定ユーザが利用可能なプリンタ一覧の取得
- delete : プリンタの削除
- control : プリントジョブの状態取得
- fetch : 次のプリントジョブの取得
出力はjson, xml, textを選択することが出来る。
プリントジョブは永続化したXMPPコネクションを使ってGoogle Talkサーバから通知される。定期的にサーバからfetchしてもOK。
印刷データはfetch APIの出力に記載されているfileUrlから取得出来る。プリンタはfileURLにアクセスした際のHTTPのMIMEタイプを見て直接印刷可能かを判断する。 出来なければfetch APIに記載されたticketURLの方をアクセスし、PDFでデータを受け取ることができる。 当初はPDFのみをサポートするが他のフォーマット(例えばXPS)も将来サポートするかも知れない。PDFへの変換はGoogle Cloud Printが担当する。
雑感
Googleの今ある技術をうまく組み合わせてプリントジョブ管理の仕組みを作ってきたなという印象です。
プリンタドライバはジョブ管理以外にレンダリングなども担当していますが、この処理はプリンタ側に組み込む必要がありそうです。コピー機ぐらいのリソースがあれば問題ないかもしれませんが、1万から2万ぐらいの安いプリンタではリソースが厳しそうです。いずれにせよやるとなったら値段が高い方の機種から対応が進んでいくでしょう。
PDF内のデータは表示順に並んでいないと聞いたことがあります。1ページ目にある画像がファイルの後ろに格納されていると言った具合です。これではプリントジョブを受け取りながら印刷できないのでプリンタ側で一旦記録バッファリングしなくてはいけません。プリンタにはどれぐらいメモリの余裕があるんでしょう。
あとプリンタがGoogleアカウントと結びつけられるのは便利そうですが、近くに無いプリンタに出力してしまうこともよくありそうです。自宅の印刷物を会社のプリンタに出したりしては問題だと思うのですがどうするんでしょう? コピー機ではセキュアプリントなどと言った名目で、印刷ジョブを出した人がその場に行ってボタンを押さないと実際に印刷を行わないようにできます。こういう機能が一般的になるんでしょうか。
いずれにせよクラウド対応プリンタを実現するには、これまでよりもプリンタ側で製造コストをかけないとダメそうです。逆に言うとプリンタで使えるリソースが増えるのでこれまでは出来なかったことも考えられるかもしれません。プリンタメーカー各社にはピンチではなく、チャンスと思って色々考えて欲しいですね。