おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

Open Source Conference 2009 Tokyo/Spring (Day 1)

すべてがすべて最高、完璧、とは言えないところもあったが、超面白かったのは間違いない。

まずは最初に、運営の皆様と、会期中にワタクシメとからんでくださった皆様に感謝の意を表します。
ありがとうございました!

まぁオープンソース最大の祭典でありますのでここを読んでる人には今更書くまでもありませんが、公式URLはこちら。

2/20 2nd Track 「Linux Printing 標準化の現状と将来」

本当は初日2/20金曜日は、日本 Linux 協会さんから依頼を受けて OpenPrinting Japan を代表して印刷のお話をするということになっていたのですが諸般の事情でダメになって、OpenPrinting Japan でご一緒させていただいており、PDF Print Path の実装者である (株)BBR 大谷さんにピンチヒッターをお願いした次第でございます*1
ので客席でちゃちゃを入れる&盛り上げ役として参加して参りました。

内容については私が過去にやった発表をもっと技術的に厳密にした感じです。
なにせ大谷さんは PDF Print Path に世界一詳しい人ですから。

ので、後日資料はどこかで公開されると思うので、それをご覧いただければいいと思うのですが、それでも一応私視点で補足しておきます。

OpenPrinting の意義
  • (Desktop) Linux の印刷環境って色々イケてないよね。
    • プリンタの箱あけてもドライバ入ってないし
    • Web に見に行ってもどれがどれやらわかんないし
    • Windows だと使えるけど Linux だと使えない機能とかあるし
    • UI もアプリごとにまちまちだし
    • 印刷するとフォント化けてたりするし
    • なんか色も変だったりするし
  • なんとかしよう! という団体が OpenPrinting
  • The Linux Foundation (TLF) の下部組織
プリンタドライバと OPVP
  • 伝統的に Linux で「印刷」というと PS を吐くことだった
  • けど PS を食えないプリンタは?→Ghostscript
    • オープンライセンスの(一時期クローズドライセンスでお金取ってたけど) Postscript インタプリタ
    • 出力デバイスを「ドライバ」という形で作ることができる
    • 昔は Unix/Linux で「プリンタドライバを書く」というと GS のドライバを書くこととイコール
  • しかし今は違う!
    • 今 GS コミュニティに GS ドライバを書いて提供してもリジェクトされる
    • もはや GS ドライバを書くことはできない
    • 代わりの手段:
      • pcl(mono|color)*2
      • Raster*3 なら IJS, CUPS Raster
      • Vector*4 なら OPVP!
  • OPVP とは
    • Open Printing Vector Printer driver interface の略。
    • ぶっちゃけ Windows DDI*5 みたいにエントリポイントを供給する仕組み。
    • GS ドライバとして実装されてるけど、ドライバ本体は別プロセスで IPC で通信するから GS の一部にはならない
      • ぶっちゃけバイナリで配れる。これがベンダに取ってメリットだったりする*6
  • あ、UI もあるね。
    • UI は PPD (Adobe の仕様+CUPS の拡張仕様) で記述するだけ
    • どう表示するかはアプリやユーティリティまかせ
    • 作るのかんたんだけど、凝った機能はどうやっても実装できないのよ。
GS CJK パッチ苦難の歴史
  • 一部の人にしか知られてないかもだけど、今の GS ってまともに日本語が扱えない
    • え? 俺の OOoFirefox だと印刷できるよ? って皆さん、それは OOoFirefox はフォント埋め込みという方法で PS データを作るからです。
    • PDF を lp/lpr で直接投げる人とか、TeX 使う人はこの問題に当たってるかも。
      • 特に縦書きやると超ハマります。
  • なんでそんなことになるのか?
    • まあいろいろと事情があるわけですよ。主に政治的な。
    • GS の開発主幹が移る度に外されるという……。
    • やっとこ GS 8.64 (今の最新) で (まだ問題はあるけど) CJK の機能が復活しました。
  • ちょっと関連して adobe cmap 問題
    • いつか d:id:naruoga:20081211:1228973749 に書くつもりなので略 (をい)
    • とりあえず evince とか TeX の出力で日本語化けてたら debian 系なら cmap-adobe-japan1 (場合によっては 2 も) を入れてください
    • 多分 openSUSE も似たようなことが必要
    • Fedora はこの問題は起きないらしい*7
PDF Print Path / Common Printing Dialog
  • このペースで書いてると終わらなくなるので省略。
  • PDF Print Path は大谷さんが専門家なので資料見てください(手抜き)。
  • CPD は過去にオイラが話した内容と大して変わりません。深刻な人手不足もそのまんま。
ついに *nix 印刷についての窓口開設!

大事なことなので強調。


Linux の印刷について分からないことがある」
Linux の印刷について提案がある」
Linux の印刷についてなんかやってみたい」
という人は、
opfc-user@lists.sourceforge.jp
という ML に参加してガンガンポストしてください!!!!

Q&A
Q
Mac OS X も CUPS を使っているということは、Mac OS X のドライバをそのまま Linux に持ってこれるのではないか?
A
CUPS はデータフォーマットによらないスプーラなので、グラフィックエンジンが違う Mac OS X のドライバはそのままでは持ってこられない*8
Q
独自でアプリを書く場合、PSの場合はジョブ制御*9をコマンドに埋め込む形でできたが、PDFの場合は?
A
PDFの場合は印刷データとは別にジョブ制御情報を流すパスがあるのでそちらで行う。
ここでタイムアップ

休憩時間ぐらい場所使えるのかと思ってたら、会場側の都合で時間終了と同時に外に叩き出されてしまった。ちぇ*10
ので、廊下で二人ぐらいの聴衆の方とお話してみた。

お一人は職場で Desktop Linux の導入を推進したいのだけど、印刷がネックになってしまうという方。
さすがにここでベンダの人間としては発言できないので、Windows を一枚かます手、PS プリンタなら CUPS の Generic PS が使えますよ、という話、いっそのこと出入りの SIerLinux で印刷できるようになんとかしろとねじ込むと、作り手側は外圧に弱いのでやりやすい*11などというお話をした。

もうお一人は二つ目の質問をされたかた。
Desktop Linux というより帳票アプリのお仕事をされているのだそうで。
今は OpenPrinting は Desktop Printing 中心なのだけど、そして帳票とかの世界だと、ベンダとアライアンスを組んで情報公開してもらってそれで周辺機を動かすってやり方になるんだけど、帳票の世界ってのもけっこう日本ローカルな事情がいろいろあって、それを OpenPrinting 的にソリューションを作って世界に提案するってのも面白いなあ、一度話をじっくり聞かせていただきたいなぁ、そんな話をいたしましたです。

そのあとラーメン食って大急ぎで帰社し、この日はおしまい。
講師の大谷さん、Linux 協会の松室さま、おつかれさまでした。

*1:ここ、長々説明がありましたが、OSC と全然関係ないのでばっさりカット。

*2:HP のプリンタ記述言語 PCL XL 用のデバイスドライバ。これは特別に残された。ずるくね? とはいえレーザープリンタ単体機の世界シェアの8割を持っている HP には誰も逆らえないのである。海外で売っているレーザープリンタはだいたい PCL XL 互換言語を載せているのである。

*3:一度ビットマップにしちゃう形式のこと。

*4:線は線、塗りつぶしは塗りつぶし、文字は文字として扱う形式のこと。

*5:Device Driver Interface

*6:個人的にはプリンタドライバぐらいオープンにすりゃーいいのにって思うけどさ。

*7:まあようはライセンスというものにどう向き合うかって話なので、User Experience として問題が起きないからといって Fedora がいいというわけでもないっす。

*8:ただし、CUPS Rasterベースのドライバは別なんだけど、そこまでは質疑応答としては複雑過ぎて答えなかった。つかこの質問には私が答えてたりします。

*9:両面とかステープルとかパンチとか

*10:ここらへんがややがっかりポイント。

*11:酷いけどホントの話。