MacPaintとPICTフォーマット

f:id:juangotoh:20171031091702g:plain
 初代Macintoshに同梱されたMacPaintは、その後のビットマップペイントソフトの共通祖先となったと言っていい、偉大な影響力を誇った。左にツールパレットを配置し、中央にドキュメントウィンドウ。ツールパレットをクリックすれば鉛筆やブラシ、塗りつぶしバケツが切り換えられる。このあたり前のフォーマットを作ったのがこのソフトだ。これ以前のものは、例えばろくなパレットがなく、キーボードの特定のキーでツールを切り替えるなど、直感的とはいえない操作性のものが多かったのだ。ただ、初期MacPaintは、メインウインドウは一つだけで、動かすこともできない、ただの背景みたいな動作だっだりして、メモリが128KBしかなかった当時の妥協の産物でもあったりする。スクロールバーもなく、ハンドツールでスクロールする。画像も576×720ピクセルモノクロ固定だったりする。

 このMacPaintが作成する画像ファイルは、MacPaint形式と呼ばれる。構造としては、

  • 4バイトのバージョン
  • 8*38バイトの塗りつぶしパターン
  • 202バイト空き(将来の拡張用)

 という512バイトのヘッダーがあり、その後に圧縮したビットマップが並ぶ。塗りつぶしパターンは、画像の表示には必要ない。MacPaintの画面下部に並ぶパターンパレットに入れるためのもので、8バイトで一つのパターンが定義され(8×8ドットモノクロ)、それが38個並んでいる。なお、バージョン番号が0であれば、デフォルトパターンを使用することになっていたので、カスタムパターンが不要ならヘッダー512バイトを0で埋めればよい。
 画像本体は、1ライン576ピクセル=72バイトずつPackBits圧縮されてこれが720ライン分書き込まれている。PackBitsは、シンプルなランレングス圧縮の形式で、同じデータ(バイト単位)が続かない部分はバイト数をマイナスにして生データを並べている。バイト数は8ビットなのでsignedにすると127バイト以下しか扱えないが、MacPaint形式画像の1ラインは72バイト固定なので問題なく使える。このPackBits圧縮/展開ルーチンはQuickDraw APIに含まれていたので、これを呼び出すだけでよかった。

 MacPaintのインパクトは大きかったので、初期Macintoshにおいて、この形式は標準画像ファイルフォーマットに近い扱いだった。実装も簡単だったし。しかし、あまりにシンプルで固定化されたフォーマットのため、応用が効かず、数年で廃れていく。モノクロで画像サイズ固定だもんなあ。AppleがMacPaintの同梱をやめてしまったのも痛かった。

 さて、MacPaintと同様、MacDrawというソフトが初代Macには同梱されていた。
f:id:juangotoh:20171031101026p:plain
 こちらはベクター形式のツールで、保存形式はPICTファイル。これはMacの画面描画命令をそのまま記録したものだ。まずOpenPictureという命令を実行し、その後画面に好きなように描画する。最後にClosePictureという命令を実行すると、OpenPicture以降に実行された描画命令が記録されたメモリブロックが確定する。これをPictHandleというが、DrawPicture命令にこのPictHandleを渡せばいつでも記録した描画を再生してくれる。なお、ベクター系の命令ばかりではなく、ビットマップ転送命令も記録できるため、あらかじめウィンドウに描かれたビットマップがあったとして、OpenPictureしてすでにあるビットマップを自分自身に転送してClosePictureすれば、ビットマップそのものを記録可能だ。したがって、描画に時間がかかる複雑な画像や、MacPaint形式の画像を読み込んだものを、「自分自身に転送」して、PICT形式に変換できた。

 つまりPICT形式ならベクターもラスターも両方扱えたのだ。また、描画命令を記録するという性質上、OSのアップデートで新たな描画命令が追加されても、プログラムの変更なくそのまま使用可能な場面が多かった。実際、最初はPackBitsしかなかったビットマップ圧縮アルゴリズムも、QuickTimeの追加によって、JPEG他様々なコーデックが使用可能になっていった。

 なお、PICTデータはOS内部で自在に使われていたが、MacDrawが作ったファイル形式は、MacPaintと同様、ファイル先頭に512バイトのヘッダがあり、その後にPictHandleの中身を書き出したものだったため、これを読みこんで画面に表示するためには、頭512バイトをスキップする必要があったし、後のMacDraw以外のアプリケーションがPICTファイルを書き出す際は冒頭512バイトを0で埋めるのが基本になった。PICTデータとか、PICTハンドルというときは、頭からPICTの命令セットが入っているものだが、PICTファイルというと512バイトのヘッダがついているものになるので、若干注意が必要だ。

 PICT形式は大変便利だったため、Mac上で完全に画像ファイルの標準形式になっていった。しかし、その描画は変化していくMacOSに依存し、規格で範囲が定まるものではなかったため、他機種で再現するのは難しく、機種を超えて広く使われる形式にはならなかった。JPEG圧縮したPICTファイルなんてものは、他機種で見ることができない。だったら最初からJFIF形式にしたほうがいいだろう。やがて、MacOSがNeXT由来のOSXになって、Classic系のAPIが徐々にフェードアウトしていき、Mac上でも使う人がいなくなっていく。

 MacPaintやMacDrawが登場したのは1984年。まだJPEGもGIFもTIFFも存在していなかった。業界共通の画像フォーマットがなかった時代だから、Appleは画像フォーマットも作成せざるを得なかったのだ。


 なお、WindowsにはWMFという、MacのPICTみたいにGDIの命令を並べたファイル形式があるのだが、発表が1990年代に入ってからで、すでにその他の画像フォーマットが広く使われていたためが、さっぱり普及しなかった。

旧ソ連の宇宙技術すごい&戦時中の東芝やばい

最近「小説家になろう」に投稿されたエッセイが非常に面白かった。
ncode.syosetu.com
NASAの宇宙飛行士、ジム・ラヴェルがもう宇宙いくたびトラブルでうんこやゲロにまみれてなんとかしろといい続けてたとき、ソ連は座席に真空吸引トイレを備え、水分のリサイクルシステムも構築していたという爆笑ものの話から、SDI計画に対抗したソ連がエネルギアロケットで打ち上げた馬鹿でかいレーザー衛星が、実は歴史上最強の100メガトン水爆「ツァーリボンバ」を搭載してどこにでも投下できるシステムを作っていたとか、西側で常識とされた大気圏再突入の困難をぴょんぴょんジャンプで解決してたとか、実質現在アメリカのロケットエンジン旧ソ連開発のものしか使えてないとか、NASA史観で育った僕らには非常に面白い話だらけ。

この人がもう一つあげてるエッセイが
ncode.syosetu.com
戦前米GEが出資した東芝が、戦争中もずっとGEの先端技術を輸入し、帝国の特許出願しまくっていた話。日米開戦後、1944年までどうやって連絡取ってたのかはいまだに謎という。東芝東芝で、律儀にGEにライセンス料を振り込み続けていた。さすがにそのお金は国内で止められていたが。銀行にプールされていて、戦後回収できたとか。戦後軍事と工業を解体して日本を農業国にしようとしたGHQに、GEが「投資が無駄になる」と大反対。あの手この手で東芝の解体を阻止し、戦後日本の基礎を作ったという。これも非常に面白い。

小説家になろうって、異世界転移チートでハーレムとか、悪役令嬢大逆転だけじゃないんだなあと思わせてくれる作品だ。おすすめ。

「リベラル」という語が差別語に近づいている

 かつてリベラルといえば、理想主義的だがマルクス主義のようなギチギチの理論に縛られず、現実的な政治思想を指していたはず。なので知識人がリベラルであると表明するのはむしろ当然だった。しかしいま「リベラル」という言葉は、「反日左翼」「与党の方針に常に反対しかしないものを考えない連中」みたいなイメージで語られることが多く、リベラルであると自称する事自体ためらわれる時代になっていると感じる。

 「リベラル」がそもそも「リベラリズム」=「自由主義」なのだが、これは本来啓蒙思想から起こった考えで、権力が人民を支配する原理は神によるのではなく、社会契約に基づくということ、そこから平等思想が生まれ、人間の自由がうたわれた。この自由はすなわち権力からの自由であり、権力が個人の自由を侵すことを忌避する。個人の自由を最大限に尊重することから、この考えは国家を小さくして、極力民間の自由に任せる方向に向かう。このへんは古典的自由主義と呼ばれる。

 ただ、際限ない自由に任せると、貧富の差が広がり、むしろ自由が抑制される人々が多くなるおそれがある。その為、近代的な自由主義累進課税や過当競争の抑制、国家による補助などを行って、自分と他人の自由をバランスしながら尊重しようという方向に進んだ。この方向ではどちらかというと「大きな政府」が要求され、社会民主主義的な思想に近づく。

 この近代自由主義は、大きな政府による社会的なコストが増大するので、またここで規制緩和と公共事業の民間移譲で小さな政府を目指す新自由主義リバタリアニズムという動きが出てくる。小泉政権以降の自民党はどちらかというと新自由主義だ。で、一般に「リベラル」と呼ばれるのは新自由主義ではなく、近代自由主義の方だ。


togetter.com
www.sankei.com

 どうも日本のリベラルは特殊だとか、ソーシャルと言ったほうが良いみたいな話が最近ちょろちょろ出てるけど、近代自由主義は上で言ったように社会民主主義的な要素を含んでいるもので、これはイギリスの労働党もアメリカの民主党も程度の差こそあれ変わらない。憲法9条があるのは確かに日本の特殊事情だけど、リベラル勢力が反戦平和主義を謳うのもわりかし日本に限ったことではないと思う。

 上記Togetterのまとめで、コメント欄で複数の人がリベラルを「ファシスト」呼ばわりしているが、これを言う人の頭の中のリベラルとは、ナチスであり、ソビエト共産党であり、クメール・ルージュみたいなものなのだろうな。そりゃそんなリベラルは願い下げだが、問題はリベラルと名乗る勢力すべてそのようにみなされるということだ。これは広い集団を勝手に極端な統一意志にまとめて叩いている点で、民族差別などのヘイトクライムに非常に近い。

 結局「リベラル」という語の印象が非常に低下し、民進党はリベラルを切り捨てて分裂した。「リベラルでは選挙に勝てない」と前原代表が判断したのだろう。

 このように「リベラル」の主張自体が非難の対象になっていく現状、これは自由が徐々に失われているのではないかと思う。

エミュレーション型レトロゲーム/パソコン互換機

f:id:juangotoh:20171007191913p:plain
www.gizmodo.jp
 任天堂クラシックミニ シリーズみたいに、懐かしいコモドール64をミニサイズで再現したもの。やはりゲームソフトをあらかじめ内蔵して、基本的にはそれを遊ぶようにできている模様(名前に因んでか、64種類のゲームが内蔵されている)。

 このTHE C64 MINI のハードウェア構成は今のところ公開されていないが、おそらく任天堂クラシックと同様、ARMアーキテクチャのSoCでLinuxカーネルを走らせ、その上でコモドール64エミュレーターを動かす形式だろう。

 以前ディスカウントショップやオークションで流れていた中国製ファミコン互換機は、CPUとPPUを1チップ化して小型化してはいても、基本ファミコンの回路を互換性を持つ形で再現していた。2006年に発売された1チップMSXの場合、FPGAMSX互換ハードウェアを組んでいた。この時代にもパソコン上でファミコンMSXを実用的な速度でエミュレートすることは可能だったが、パソコンとなると高価で大きく、余計な機能が多い。また、組み込み向けのSoCの価格性能比もまだこなれておらず、中国で大量に製造されたらしきファミコン用チップや、FPGAでの再現のほうがお得だったのだろう。

 2012年に登場した、Raspberry Piが、エミュレーションの時代を開いたのではないだろうか。数千円程度で、小さな基板上に十分な速度とメモリを持つCPU、USB、HDMIを持ち、そのままデスクトップLinuxが動作する。Raspberry Piレトロゲーム機にするRetroPieというプロダクトも登場している。
retropie.org.uk

 2014年には、Retron5が登場。5種類のゲーム機のカートリッジを刺して遊べるマルチゲームマシンだが、これはカートリッジを刺すと、ROMデータを内蔵ストレージにコピーして、それを遊ぶという形になっている。カートリッジを刺してすぐさま遊べる昔のゲーム機とはちょっと趣が違うのだ。その後出たレトロフリークも同様である。

 これらのマルチゲーム機はソフトウェアエミュレーションで動いているため、カートリッジのROMをそのままエミュレートされたゲーム機のメモリにマッピングできない。工夫次第ではできるだろうが、リアルタイムでカートリッジ上のROMにアクセスする場合エミュレーターのヒープ上のRAMに比べてとてつもなく遅くなるだろう。そもそもゲームカートリッジは80年代の遅いCPU、遅いバスで動くように設計されている。また、パソコン用に書かれたエミュレーターはROMを直に読むようにできていない。普通はROMを吸い出したファイルシステム上のROMファイルをメモリに読み込んでから実行される。要するに、この種のマルチゲーム機は、ROM吸出し機+ゲームエミュレーターという構成になっていると思われる。

 そこで、任天堂クラシックシリーズが取った方法は、筐体をカートリッジが入らないミニサイズにして、ゲームは製造時にあらかじめ基板上のメモリにファイルとして格納しておくという方やり方だ。この方法ならカートリッジスロットに何十本もの線を接続する必要もなくなり、より製造工程も単純化でき、コストも下げられる。 THE C64 MINIも任天堂のやり方を真似たのだろう。

 さて、MSXも今の時代なら同じ方法で1チップMSXより安価に製造できるだろうが、やはりカートリッジによるハードウェアの拡張なども多かったことを考えると、任天堂方式でカートリッジ機能を殺したり、Retron5方式のROM吸い出しで済ませるのはよろしくない。カートリッジがエミュレーター上でしっかりZ80にバスを通してつながってるような形のエミュレーターを作成できればいいのだけど、どうだろうか。

衆議院選挙神奈川14区の大雑把なこれまで

 まもなく選挙だが、僕の住んでる神奈川14区はどういうところか。

 もともとは藤井裕久の地盤だった。藤井は大蔵官僚出身で、自民党から参議院議員になり、その後衆議院に転じる。自民党新生党新進党自由党民主党という、まあ小沢一郎の盟友だったどちらかというと保守派の人。この人が引退する時、自分の秘書だった本村賢太郎に地盤を引き継ぐ。本村も初当選時は自由党であり、その後民主党民進党所属である。

 この藤井裕久に対する対抗馬として自民党から立候補したのが赤間二郎赤間と本村がデッドヒートを繰り広げている。最近二回の選挙では公明党の支持を得た赤間がぶっちぎりで、本村は一度は完全に落選、一度は比例復活で議員になっているという状態。


 さて、今回の選挙に際して、民進党は事実上分裂して主流は小池百合子希望の党の公認を受けることになった。本村賢太郎はその出自からわかるように旧自由党系の保守派グループに属しているため、当然のように希望の党の公認を受けることになった。まあ、保守系でも小池百合子のイメージ戦略上、もし民主党政権時代などに顔が売れる党の重役的なポジションにいたら公認されなかった可能性が高いので、この人が全国的には無名のどうでもいい議員であったことが本村には幸いしたと言えよう。
k-motomura.jp

 幸いしたと書いたが、実際に幸いなのかどうかは蓋を開けてみなければわからない。小池百合子のあの言を左右にして自分の意見を隠しながら周囲を巻き込んで突き進む雰囲気が、徐々に嫌気されはじめている状況。一種のカリスマなのに本人は出馬しないことで選挙の神輿が徹底的に不足している状況から、思ったほど勝てない可能性はあると思う。そして、前回名簿順に救われた本村賢太郎が、後から参加した希望の党で有利な順番で比例名簿に載せてもらえるだろうかということを考えると、結構本村には厳しいのではないか?

 だからといって小沢自由党に近かった本村が、枝野幸男立憲民主党に参加するという選択肢は取れなかっただろうし、党勢を考えると「落ち目のリベラルよりイケイケの保守」に乗っかったほうが票が取れるというのは間違ってはいないだろう。

 本村賢太郎としては、森友や加計問題で自民党の支持がおもったより落ちて、赤間二郎に流れていた保守票が、民主党民進党に染み付いたリベラルイメージを払拭し、保守政党であることを明確にした希望の党の公認を受けた自分に来てくれることをみこんでいるのだと思う。政策的には同じようなものだから、むしろ選挙区で赤間に勝利できると思っているかもしれない。

 実際どうなるのか、結構ワクワクもので見守りたいのだが、僕自身の投票については非常に悩ましい。僕はいつも言ってるようにどっちかというとリベラルなのだ。なので一応リベラルとみなされていた民主党には毎回ではないが、それなりに投票していた。しかし今回希望の党に擦り寄った本村には投票する気がしない。では立憲民主党かという話になるのだが、立憲民主党は人数勢力的に全国に候補を立てるのは難しい。現在のところおそらく神奈川14区には候補を立てず。野党協力の共産党社民党の候補が出ることになるのではないかと思われる。なので立憲民主党を支持する有権者としては、これらの候補が立った場合、この野党共闘に協力するために、共産、社民候補に投票するのがベターということになる。しかし僕は共産党はなんというか、その、嫌いなのだ。もう前衛政党規定も削除されてるらしいのだが、やはりあの党は信頼できないという気がする。せめて党名を変えて、民主集中制の破棄くらいはしてもらわないと。

 というわけで、もし神奈川14区で共産党候補が立った場合とても困る。どうしようかなあ。

セブンイレブンCM集が懐かしい。

www.youtube.com

 1978年から1994年までのセブンイレブンTVCMをまとめた動画。日本のコンビニというものが、変わらないようで変わっているのがわかる。
f:id:juangotoh:20171004145438j:plain
1970年代末のレジ風景。なんともいえないハッピのような制服。あとポリのコンビニ袋がなく紙袋を使っていた。

f:id:juangotoh:20171004145614j:plain
同じ頃の店内、ドリンクコーナー。缶飲料がほとんどで、500ml「ホームサイズ」のガラス瓶が下の方にある。

f:id:juangotoh:20171004145815j:plain
1980年代半ばになると、スクリューキャップのガラス瓶、いわゆる「だるまボトル」が流行。ドリンクコーナーの主流になる。現在主流の小型PETボトルはこのころまだ登場していない。

f:id:juangotoh:20171004150137j:plain
この画面がいつのCMかはっきりしないが、服装を見るとバブルの頃かなあ。コンビニ袋の登場は多分もう少し前、1980年代前半の何処かだと思う。

 個人的に懐かしかったのは斎藤裕子が出演した一連のCM。
f:id:juangotoh:20171004151252j:plain
「今日は飛びませんねえ」が流行語になったハンバーガ

f:id:juangotoh:20171004151312j:plain
ブリトー」という低音のジングルが印象に残った、ブリトー初登場時のCMなど。

 実際人気で、この当時セブンイレブンのCMといえば斎藤裕子という位出まくっていた。

スタートレック映画で、日本ではスタートレックであることを隠して宣伝していたものがある。

www.youtube.com
スタートレック・ファーストコンタクト
 この映画、公開当時執拗に「スタートレック」の名前を言わなかった。ハリウッドの新作SF映画「ファーストコンタクト」として扱われていた。CMにはエンタープライズ号が写ってるので、知ってる人はわかるのだが、なぜ「スタートレック」を隠すのか、当時すごく不思議に思ったものだ。

 「スタートレック」は言わずと知れた超有名SFシリーズだ。日本でも「宇宙大作戦」としてTV放映され、それなりに知名度もあった。その後スターウォーズによってSF映画ブームが起き、1982年、「スタートレックII カーンの逆襲」、1984年、「スタートレックIII ミスター・スポックを探せ」が公開される。これは当時のILM渾身のCGで作られたジェネシスシーケンスなどが特撮マニアに話題になった。だけどこの時すでに、スタートレックを多くの日本人は忘却していた。マニアの支持はあったものの、洋画として配給する側の期待を上回る収益は出なかったのではないだろうか。
www.youtube.comwww.youtube.com

カーンの逆襲の段階で、TVのスタートレックシリーズの設定を知っていることが前提の映画だったので、知識のない初見の客にうけなかったとみなされた可能性が高い。その後1996年に新TVシリーズの設定で「ファーストコンタクト」が制作された時、過去の失敗から、「スタートレック」というシリーズ名を隠し、過去のしがらみのない、独立新作として売ろうとしたのだろう。しかしこれは悪手である。「余計な知識はいりませんよ」と言われて見に行ってみればそれはカーンの頃よりさらに歴史を積み重ねたスタートレック世界であり、前提なしではやはり完全に楽しめなかったろう。ボーグもバルカン人も知らずにあの作品をどれだけ楽しめるだろうか。

 これは、客を騙して劇場に入れてしまえば金は取れるという、一時しのぎの商売だと思う。これで裏切られた客は次はこなくなる。こういうの、この後もちょくちょく見かける。2013年に公開されたゾンビ映画ワールド・ウォーZ」を、ゾンビ映画であることを隠して、戦う父親の家族への愛で押し通したCMを流していた。TVCMではゾンビのゾの字もなかった。「Z」はあったけどな。

 肝心なことを隠して金をだまし取るのは詐欺だと思います。