始めの言葉

「プリンターから印刷できて当たり前」と、ユーザーからもSIerからも軽視されがちなプリンターの世界ですが、実際にはお困りだったり、思ったような印刷結果が得られないまま我慢してお使いの皆様のために、今までの経験が役立てばと、このブログを立ち上げました。印刷の基本から、応用情報、問題の解決方法を情報発信すると共に、PDF化など、これからどうするかについても、ご相談に乗れれば幸いです。ご質問はコメントでお寄せください。

2017年4月22日土曜日

IBM 小型レーザー・プリンターの今まで -第8回- "PAGES"-2

1988年に発表された初代の "5587-G01" や、翌年 1989年の "4216-510"のコマンドは、"5577互換"レベルか、その拡張の "3222" レベルまででした。
"PAGES" に初めて対応したのは、1990年に発表された、"5587-G01"と同じ筐体の "5587-H01" プリンターでした。
そしてその翌年、1991年には、より小型で安価な "5585-H05" プリンターを発表しています。
"5587" プリンターは、A3 サイズの用紙までに対応していましたが、その結果、次のような課題がありました。
- プリンター全体が大きくなった。
- 高めの価格となった。
- 当時、A3 サイズのプリンターの需要は小さかった。
そこで、B4 サイズまでの用紙に対応し、小型化も実現した、別のプリンター・メーカー製の機構を採用して、"5585-H01" プリンターが企画されました。
私は、プリンターの製品企画の担当者として、営業部門のマネージャーの方から、PAGES コマンドに対応したソフトウェアを揃えない限り、お客様はレーザー・プリンターの良さが使えないのだから発表できないと発破を掛けられたことを、良く覚えています。
OS である J-DOS や、OS/2 を始めとして、IBM 製ワード・プロセッサープロである"DOS文書プログラム"、OS/2 用の IBM 製アプリケーション"Smartシリーズ" などのサポートを得ることができました。
ソフトウェア製品を開発する側から見れば、PAGES コマンドに対応すれば、そのソフトウェアがどれだけ多く売れるかという見方になるのは当然です。そのような目で見れば、開発の手間に見合うだけの成果を、プリンター部門から保証することは非常に困難です。それでもサポートを得られたのは、私に発破を掛けてきた営業部門のマネージャーの方からの支援によるものだったと、今でも深く感謝しています。

5585-H01 レーザー・プリンター
ただ、1991年は私にとっては大きな変革の年でした。世界中の IBMに「分社化」の嵐が吹きまくり、日本の開発部門の中では、真っ先にプリンター開発部門が、TEC 社(今の東芝テック社) との合弁会社に切り出されてしまったのです。
"5585-H01"プリンターは、秋の発表の直前に分社化という大きな荒波を受けました。私自身はその新会社に異動しなかったことによって、発表のための最終的な作業を行なえず、どうなることか心配しましたが、何とか発表に漕ぎ着けることができました。(新会社発足直後に、その社長に対して、このプリンターの発表の意義を説明に行ったことを、良く覚えています。)

アプティと名付けられた新会社からは、その後、PAGES 対応のレーザー・プリンターが次々と発表されていきました。
1992年には、最大 A3 サイズ対応の"5589-H01"、
1993年には、最大 A4 サイズ対応の"5584-H02"、"5584-G02" プリンターが発表されています。

この "5584-H02/G02" プリンターで、それまでの "PAGES" 対応のプリンターと大きく変わったことがあります。それは、解像度です。"PAGES" 以前の "5587-G01" から "5589-H01" までの解像度は、240DPI という日本のレーザー・プリンターに共通の値でしたが、"5584-H02/G02" では、360DPI という値に変わったのです。何故、わざわざインパクト・プリンターの2倍の解像度に変更したのかは、その場にいなかった私には不明ですが、プリンター機構部を製造する OEM メーカーから見れば、特殊な解像度のモデルを製造しないとなりませんから、製造コストには影響があったのではないかという疑問は残ります。
5589-H01 プリンター
5584-H02 プリンター


2017年4月16日日曜日

IBM 小型レーザー・プリンターの今まで -第7回- "PAGES"-1

PC(Personal Computer) の OS(Operating System) が、Windows と、iOS となった今から見れば、苦笑するようなことでしょうが、個人用のコンピューターという意味での PC が、IBM では "PS/55" だった時代には、レーザー・プリンターのメーカーが他社に比べて優位に立つには、自社独自仕様のコマンドの機能を、いかに多くのアプリケーション・ソフトウェアに対応してもらって、「業界標準」の地位を獲得するかにかかっていると考えられていたものです。
しかし、この考え方は、何もプリンターに限った話ではなく、当時は画期的だった OS、"OS/2" であれ、PC 自体であれ、あるいはゲーム機であれ、使えるアプリケーションの種類が多くないと、生き残ることができないという点では、共通のものではないでしょうか ?

IBM のプリンター開発の本部である Boulder(コロラド州) では、ちょうど、メイン・フレームや AS/400 から、直接プリンターにグラフィカルな印刷を行なうための "AFP(Advanced Function Printing -> 後に Presentation)"というアーキテクチャーを実現するための "IPDS" というコマンド体系を定義していました。
そこで、日本でもこれを元に "PAGES" という PC 向けのレーザー・プリンターのコマンド体系を定義しました。
"PAGES" を定義するに当たっては、先行して複数のアプリケーション・ソフトウェアが対応していた "5577" コマンドと互換であることは、当然の前提です。
これは、別の表現で言うと、"5587-G01" プリンターのオプションで対応した "3222" コマンド体系の拡張ということになります。

実際に、"PAGESコマンド解説書"の概要を見てみると、このコマンドは、次のように分類できることが分かります。

(1) 基本制御コマンド
"5577" コマンドと同じか、その拡張コマンド

(2)拡張制御コマンド
"PAGES" で追加されたコマンドで、"ESXコマンド" と "グラフィックス・コマンド" に分かれます。
"PAGES"コマンド体系
 しかし、現在でも使用されるコマンドは、PDT ファイルを使ったプリンター・セッション経由の印刷や、HPT(ホスト印刷変換)機能を使った、OS/400 からの直接印刷で使用されるコマンドに限られると言って良いのではないでしょうか ?
それらは、その使用目的から自然と、ページ全体に対する制御を行なうコマンドとなります。

1. PAGESモード設定
1B 7E 12 00 01 11

2. メディア座標原点(用紙回転)
1B 7E 50 00 01 00 => 用紙縦長
1B 7E 50 00 01 03 => 用紙横長

3. 用紙トレイ選択
1B 7E 46 00 05 00 00 nn 00 00
nn = 11 => A3 トレイ指定自動選択
nn = 13 => A4 トレイ指定自動選択
nn = 00 => 第 1 給紙カセット指定
nn = 01 => 前面トレイ指定
等々

4. 両面印刷指定
1B 7E 3B 00 04 00 00 nn 01
nn = 00 =>片面印刷指定
nn = 01 => 両面:長辺綴じ
nn = 02 => 両面:短辺綴じ

5. 縮小指定
1B 7E 51 00 01 nn
nn = 03 => 連続用紙サイズ(15x11 インチ) -> A4
nn = 02 => 連続用紙サイズ(15x11 インチ) -> B4
nn = 01 =.> 縦横 75%
等々

6. 余白設定
1B 7E 53 00 0A 00 X座標オフセット 00 Y座標オフセット 00 00

つまり、これらのコマンド以外のもの、例えば次のようなコマンドは、プリンター側に機能としては持たせたものの、アプリケーション・プログラムから使われることはほとんど無しに、Windows のプリンター・ドライバーを使った印刷の時代に変わってしまったということです。
- フォーム・オーバーレイ
- 32 x 32 ドットの外字のダウンロード
- 内蔵アウトライン・フォントの使用
- ベクトル座標を使った図形の記述
- グラフィックの記述



2017年4月8日土曜日

IBM 小型レーザー・プリンターの今まで -第6回- "PAGES"まで

"5587-G01" レーザー・プリンターが発表された頃は、日本独自の製品であった"マルチステーション 5550 シリーズ" から、World Wide 標準製品である "PS/2" シリーズの日本語対応版である "PS/55"シリーズに切り替わっていく時代でした。
その移行に対応するために、プリンター側としては、"コンバージド・インターフェイス"と"3バイトECC"に対応しています。
"コンバージド・インターフェイス"と"3バイトECC"については、"プリンターへのデータの流れ - レベルE機能と双方向通信 -"の回をご参照ください。

コンバージド・インターフェイスに対応したプリンターとしては、ドット・プリンターである"5577-G01"が先に発表されています。
ちなみに、"PS/55"では、"PS/2"に対して、日本語フォントをメモリーに内蔵したディスプレイ用のカードを搭載していました。
そして、OS である"J-DOS"は、文字を文字コードとして処理し、画面にはディスプレイ・カードに内蔵した日本語フォントのイメージを表示するという方式を使っています。
ちなみに、"5550 シリーズ"では、"K-DOS"( 漢字 DOS の意味)でしたし、"PS/55" の後の "PC/AT" 互換機では、"DOS/V" となって、共にソフト・フォント(メモリーではなく、ソフトウェアとしてのフォント) となっている点が、大きく異なります。
これは、ちょうどプリンターによる印刷も同じ原理で、J-DOS からは文字コードがプリンターに送られ、プリンターは内蔵しているフォントのイメージを印刷します。
例えば、"5587-G01" プリンターは、240DPI(ドット/インチ)の解像度で、32 x 32 ドット構成の文字を内蔵していましたから、文字コードが送られてくると、32 x 32 ドット構成の文字イメージを印刷します。
この文字が、解像度 180DPI のドット・プリンターが内蔵する 24 x 24 ドット構成の文字と同じ大きさになることは、比例計算すればお分かりになると思います。
"5587-G01" プリンターは、24 x 24 ドット構成の文字、つまりドット・プリンターと同じ文字も内蔵していました。こちらの文字を使うと、ちょうど 3/4 に縮小された文字を印刷することができました。

この当時、"PS/2" から "PS/55" が開発されたように、プリンターの世界でも World Wide 製品を元に日本語対応した製品を開発するという方式が、流行りました。そのレーザー・プリンター版が、"4216-510" プリンターです。
4216 プリンター本体(本来は右に給紙トレイが付く)

"4216" プリンターは、"5587-G01" のプリンター OEM 製造元の会社が開発した、小型のレーザー・プリンターで、接続先のシステムによって、いくかのモデルに分かれます。
それに対して、日本で、"5577互換" の機能(コマンド対応、日本語フォント内蔵)追加を行なったのが、"4216-510" になります。
開発期間の短縮化も求められていたため、"5587-G01" と同じ "3222"互換ではなく、"5577" 互換レベルとしたことは、今から思えば一つの見識だったと思います。
プリンターの機構自体は、小型化を追求した設計となっていて、良いプリンターでしたが、残念ながら対応する用紙サイズが "A4" まででは、国内ではあまり受け入れられませんでした。

一方、その間に、国内の他のレーザー・プリンター・メーカーは、各社独自のコマンド体系を拡充し、それを様々なアプリケーション開発会社に持ち込んで、サポートしてもらってその数を競っていました。そこで、当時のプリンター開発グループでも、各社のコマンドを調査したり、IBM World Wide では標準規格として定義されてきたばかりの "IPDS(Intellient Printer Data Stream)" に習って、"PAGES"(Page printer Advanced Graphics Escape Set)を定義しました。
そして、他社に習って、コマンド解説書を本として準備し、社内のソフトウェア・グループはもちろん、社外のソフトウェア開発会社やユーザーにも情報提供始めました。
"PAGES" のコマンド解説書は、Web でも公開しています
そして、"PAGES" を装備したプリンターとして始めて発表されたのが、"5587-H01" プリンターです。

2017年4月1日土曜日

IBM 小型レーザー・プリンターの今まで -第5回- 5577互換からの拡張と更なる拡張

J.D.氏が赴任される前までのチームの方針は、プリンターの機能の中核を成すマイクロコードと、それを実装する制御基板は、アーキテクチャーと基本設計を内製することでした。
しかし、J.D.氏の方針は、"3812"プリンターで採用した外部会社のアーキテクチャーと基本設計を基礎とすることでした。
IBM 3812 プリンター

- アーキテクチャーとしては、2層構造となっています。つまり、実際に印刷するイメージを生成する層と、入力データを処理して印刷イメージを生成する層の内部処理に渡すためのデータ変換を行なう層でできています。その効果として、PC からの印刷データ以外にも、AS/400 や、汎用コンピューターからのデータに対しても、データ変換層を変えるだけで対応できるという点があります。

- ハードウェアとしては、当時はまだ珍しかった"3.5 インチ・フロッピー・ディスク"にマイクロコードを格納して、起動時に読み込むようにできていました。これによって、マイクロコードの修正や、機能拡張があっても、フロッピー・ディスクの内容を書き換えるだけで簡単に対応可能になります。

私たち、チームのメンバーは、自分たちの力が発揮できる、別の表現をすれば外部会社に依存することを避けられる内製を主張したのですが、最終的には、J.D.氏の方針で進めることに決まりました。この決定までの時間も、開発全体の遅れに影響したことは、否定できないと思います。

もう一方の、重要な要素であるレーザー・プリンターの機構部分も、どの OEM メーカーのものを採用するか決まるまでも時間を要しました。
特定のお客様向けに開発した "5569" レーザー・プリンターの経験から、国内で多くのお客様に採用していただける製品とするには、用紙サイズは "A4" だけでは不十分で、"B4"サイズも必須であることは分かっていましたので、その条件を元に、J.D.氏と共に、開発中の OEM 製品を何社も見て回ったものです。
実は、メンバーの間では某社の B4 サイズ機に決めていたのですが、突然、天の声がかかり、まだ試作機段階以前とも言えるレベルの、別の会社の A3 サイズ機を採用することになってしまいました。大は小を兼ねると言いますが、さずがに A3 サイズの用紙に対応するプリンターとなると、かなり大きくなります。それにも増して、デスク・トップ型のコピー機としてできているだけで、これから改造してプリンターとするわけですから、とても短期間では困難であることは明らかです。
案の定、開発期間は長期化し、最後に、そのメーカーのリーダーの方が、原稿を元にコピーを作成する機械と、原稿そのものを作成する機械では、印字品質一つをとっても、要求されるレベルが全く違うことが良く分かりましたとおっしゃっていたことを、よく覚えています。

開発期間が長期化した影響もあって、製品としての価格が予定よりも高くなってしまうことも、問題となりました。そこで、J.D.氏のアイデアで、プリンターの構成を次のように分けることになりました。
- 基本モデルは、5577互換レベルの機能
- 追加オプション(基盤のカードに指す、カートリッジ)によって、"3222"と呼んだ、レーザー・プリンターとしてのコマンド機能を追加
という構成です。
"3222"と呼んだ機能の主なものは、5577コマンドに追加する機能として下記のとおりです。
- 用紙方向縦/横の切り換え
- 縮小印刷
- 給紙トレイの指定
- 明朝体とゴシック体の内蔵フォントの切り換え
- 解像度 240DPI のイメージ・データ
- 32 x 32 ドットで構成された外字

このようにして、発表されたのが、"5587-G01" プリンターです。
(残念ながら、写真等を残していないので、形をお目に掛けられません。)

一方で、当時、PS/55 の OS は、J-DOS と OS/2 で、その上で稼動するアプリケーションが、直接印刷データを生成する方式でした。
今の Windows のプリンターに付属するドライバーが印刷データを生成する方式と異なり、様々なアプリケーション・プログラムが直接、プリンターが持っているコマンドを発行することで、初めてそのプリンターの機能を使って刷できるという方式です。
従って、いくらプリンター側で高機能なコマンドを用意しても、アプリケーション・プログラムがそのコマンドを送って来なければ、宝の持ち腐れでしかありません。
そのため、レーザー・プリンターを販売する各社は、それぞれ独自の定義で決めたコマンドを、様々なアプリケーション・プログラムのメーカーに開示して、対応していただくよう働きかけをしていたものです。
例えば、ワープロ(文書作成)プログラムでは、"一太郎"が圧倒的なシェアを占めていましたので、各プリンター・メーカーは、開発元であるジャスト・システム様に日参していたはずです。
つまり、当時のレーザー・プリンターのメーカーは、独自コマンドを拡張し、それに対応するアプリケーション・プログラムを増やし、その結果、自社コマンドが業界標準の地位を築くことを目指していたという訳です。

私も、IBM 社内のソフトウェアの開発チームに対して、"3222" のコマンド対応をお願いして回りましたが、各製品の開発項目の優先順位とリソースの関係もあって、なかなか思ったようには進みませんでした。最終的に、OS/2 や J-DOS という OS の開発チームからは、32 ドット対応の外字をサポートするという協力はいただけたのですが、当初は、何故、外字の対応だけなのかが理解できていないというありさまでした。
コマンドの拡張に関しては、プリンター開発チームの中で、他社のものと同等以上のものを目指して行なわれ、後に "PAGES" と呼ぶ、コマンドのセットが定義されました。