デフォルトでGoogleクラウドプリントに対応して欲しい
「Ubuntu」のメーリングリストにて、デフォルトで「Googleクラウドプリント」に対応して欲しいという要望が寄せられています。なぜUbuntuではデフォルトでGoogleクラウドプリントがサポートされていないか疑問に思っていたんだ。
Fedoraはこの機能持ってるよ。
(Fedoraは利用していないのでテストできてないけど。)
この機能はCUPS Cloud Printって呼ばれている機能なんだ。
CUPS Cloud Printは、クラウドプリントを経由してGoogleアカウントからローカルに接続されたすべてのプリンターを利用できるようにする機能だよ。
オンラインアカウント設定でGoogleアカウントを追加したら、CUPS上で通常のローカルプリンターやネットワークプリンターのように関連するすべてのプリンターを表示するってのはどう?
オンラインアカウント
「Ubuntu」では、「オンラインアカウント」を一括管理する仕組みが提供されており、「システム設定」の「オンラインアカウント」から各アカウントの管理を行うことができます。以下のように、オンラインアカウントの登録や管理ができるようになっています。
アプリ側がこの仕組みに対応している必要がありますが、オンラインサービスのアカウントの管理は、それぞれのアプリが個別に行うより一括して管理した方が、ユーザーにとって煩雑さが解消され分かりやすいかと思います。
しかしその方法はセキュリティー上問題がある
この要望に対し、その方法ではセキュリティー上問題があるとの回答が寄せられています。ヒントありがとう。
でもその方法には以下の問題があるよ。
CUPSのキューはシステムワイドなんだ。
CUPSキューのセットアップが完了すれば、システム上のすべてのユーザーにそのプリンターが有効になってしまうんだ。
プリンターを無効にしたとしても、少なくともそのプリンターは見えてしまう。
Googleクラウドプリントはそのユーザー個人のリソースだよ。
Googleクラウドプリントを利用するためには、ユーザーは自身のGoogleアカウントにプリンターを登録する必要がある。
そうすればユーザーは、ユーザーが自分のGoogleアカウントにアクセスできる場所からならどこでも、そのプリンターを利用できるようになる。
例えばあるユーザーがローカルのCUPSキューにGoogleクラウドプリントに対応したプリンターを登録したとしよう。
そのPCを利用している他のユーザーは全員それらプリンターが見えるし、大抵それらのプリンターは有効になっている。
ということはだ、他のユーザーはそのプリンターに対し印刷ジョブを生成でき、本来のユーザーにとって意図しない印刷が行われることになる。
それに他のユーザーはそのプリンターがどこにあるのか、どこで印刷されているのか分からないよ。
加えて悪意あるユーザーがインクや紙などを無駄に消費させるため、そのプリンターに大量の印刷ジョブを送り付けることもできるし、DoS攻撃を行うこともできる。
正しい実装方法は、印刷ダイアログに現在ログインしているユーザーのGoogleアカウントにアクセスする機能を持たせ、CUPSとは無関係にそのユーザーのクラウンドプリンターの一覧を表示させることだね。
そして印刷ダイアログから直接印刷ジョブをクラウンドプリンターに送信するんだ。
この方法が本来のユーザーだけが自分のクラウドプリンターを利用できるようにする唯一の方法だね。
Google Summer of Code 2017のOpenPrinting projectsにこの内容があるよ。
印刷ダイアログ
印刷ダイアログは、GTK+やQtなど主にツールキットが提供しているダイアログです。共通して利用されるダイアログであり、アプリによる独自実装がなく同じツールキットを利用していれば操作方法は同じです。
印刷ダイアログには出力先プリンターを選択する項目があります。
このプリンター一覧にクラウドプリンターを表示させ、ユーザーがクラウドプリンターを利用できるようにしよう、ということですね。
現時点では、Googleクラウドプリントに対応するのか、対応するとしたらどのバージョンから対応になるのか不明ですが、少なくとも「Ubuntu 17.04」には間に合わないでしょう。