QuickDraw
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/06/28 16:02 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2012年8月) |
QuickDraw(クイックドロー)とは、かつてAppleのClassic Mac OSで使われていた画像描画API の一種である。
macOSでは後継のQuartz 2Dを利用する。従来との互換維持のためQuickDrawもMac OS X v10.4で非推奨となったが、移行期間としてOS X Mountain Lionまで残されていた[1]。
概要
QuickDrawの最初のバージョンはビル・アトキンソンほぼ一人により書かれた。元々はLisa用の描画関数群としてLisaGrafという名前で開発されていたが、Macintoshにも搭載されることが決まりQuickDrawと改称された。
1979年にApple社員がXEROXの研究所PARCを見学した際、Altoで動くSmalltalkシステムを見せられた。当時のSmalltalk GUIでのウインドウは単純な矩形の組み合わせで描画され、また、他のウインドウに隠れて一部分しか見えていないウインドウの表示内容の更新もおこなわれていなかった。しかし、Altoのハードウェア機能(描画に必要なビット転送ルーチンであるBitBLTのマイクロコード化など)を介した比較的高速な描画を見て、不定形クリッピング描画が実現されていると誤った思い込みをしてしまったビル・アトキンソンは、その認識のまま遂に“リージョン”の描画や演算処理を比較的高速に扱えるLisaGrafやQuickDrawを完成させてしまった。後に、QuickDrawの功績により彼はAppleフェローの地位を与えられた。
QuickDrawは直線、矩形、正円及び楕円などの図形描画を当時のマシンとしては高速に行うだけでなく、Macintoshを特徴付けるウインドウの重ね合わせの際に必須の不定形クリッピング描画を可能とし、その後のソフトウエアに大きな影響を与えた。
歴史
QuickDrawは、Apple Lisaの開発の一環としてLisa Grafとしてスタートした。Macintoshでは、当初は簡略化されていたが、後に拡張された。当初、QuickDraw GrafPortsはビット深度1、つまり1ピクセルあたり1ビット、つまり白黒のみをサポートしていた。これは、512×342ピクセルという固定サイズの初期Macintoshの内蔵スクリーンに適していた。QuickDrawは粗い平面モデルを使って限定的なカラーをサポートし、多色リボンを使用するタイプのドットマトリクスプリンタを駆動することができたが、この機能をサポートするアプリケーションはごくわずかであった。
1987年、Macintosh IIが開発・発売され、コンピュータ、モニタ、キーボードが分離した、よりオーソドックスな3ボックスのデザインになった。モニタが独立し、初代Macよりも大きくなったため、ビデオアーキテクチャも必然的に変更しなければならなかった。さらに、Macintosh IIはフルカラー化を可能にした。この時、Appleは業界で初めて、複数のモニタにまたがるシームレスなデスクトップをサポートすることを決定した。こうして、オリジナルのQuickDrawを大幅に拡張したColor QuickDrawが誕生した。オリジナルのアーキテクチャは拡張性に乏しかったが、Appleの開発者たちは一連のハッキングを駆使して、カラーの追加と新しいビデオアーキテクチャを、開発者とエンドユーザの双方にとって実質的にシームレスにすることに成功したのである。
Color QuickDrawは、接続された各ビデオカード/モニタを表すGDevices、色を扱う新しいカラーGrafPort(CGrafPort)構造体、さらに1ピクセルあたり複数ビットの画像用にBitMapの代わりにPixMapなどの新しいデータ構造を導入している。ここで使われた互換性のためのハックの1つは、新しい構造体が古い構造体とまったく同じサイズで、ほとんどのデータメンバが同じ場所にあるが、BitMapフィールドの代わりにカラー構造体のハンドルとポインタが追加されている。rowBytesフィールドの上位 2 ビットは、GrafPort と CGrafPort を区別するためのフラグとして使用された(旧式の GrafPort では常に0だが、これはBitMapがこれらのビットを設定するほど広くなり得なかったためだ)。なぜなら、32ビットのPixMapの最大行幅はわずか4,095であり、高解像度のグラフィック作業では問題となったからだった。後の開発版(Carbon)ではこの制限はなくなったが、完全な後方互換性はなかった。Color QuickDrawでは、インデックス付きビデオデバイスの色の調停を管理するパレットマネージャも追加された。ほとんどのグラフィックスプリミティブの操作は変更されず(ただしカラーで動作)、あるいは白黒のAPIの新しいカラーバージョンが追加された。
当初、Color QuickDrawは1、2、4、8ビットのビデオカードでのみ動作可能であった。その後24ビットのビデオカードが登場し(いわゆるトゥルーカラー)、QuickDrawは再び更新され、1ピクセルあたり32ビット(実際には24ビット、未使用は8ビット)のカラーデータまでサポートするようになった(「32-Bit QuickDraw」)。しかし、アーキテクチャは既にこれを許容していたので、新しいAPIは必要なかった。色データ構造自体は、1、2、4、8、15、24ビットの色深度を許容し、それぞれ2、4、16、256、32768、1677216色、または4、16、256スケールのグレーを生成した。QuickDrawは、実際のビデオハードウェアの利用可能な色深度への色の再サンプリングや、オフスクリーン画像バッファ間の転送を管理し、オプションで画像を低深度にディザリングして画質を向上させることも行った。また、カラーサンプリングユーティリティも追加され、プログラマはインデックス付きのビデオデバイスで使用するために最適なカラーパレットを生成することができるようになった。
QuickDrawのアーキテクチャは、常にGrafPortとそれに関連するBitMapまたはPixMapを「オフスクリーン」で作成することを可能にしていた。ピクセルは、QuickDrawのブリット機能であるCopyBitsを使って、これらのオフスクリーンポートとスクリーン間で転送することができた。このようなオフスクリーン合成は、ゲームやグラフィックスを多用するアプリケーションの主力となるものである。しかし、32ビットQuickDrawが登場するまでは、このようなオフスクリーンワールドは、プログラマがアプリケーション内で手作業で作成・設定する必要があった。これは、3つ以上の別々のかなり複雑なデータ構造(CGrafPort、PixMap、GDevice、インデックス付きデバイスの場合は、カラールックアップテーブルとその逆)を含むため、エラーが起こりやすい可能性があった。32ビットQuickDrawでは、これを処理するためのOSサポートが追加され、「オフスクリーン・グラフィック・ワールド」(GWorld)が用意された。GWorldのビデオバッファ(PixMap)は、メインメモリに格納されるか、またはビデオRAMの未使用部分に格納され、画面へのコピーは、メインメモリバス上で大量のピクセルデータを転送する必要性を回避し、速度を最適化することができた。
QuickTimeの登場により、QuickDrawはJPEGのような圧縮されたラスターデータを扱う能力を獲得した。QuickTimeの画像圧縮マネージャはQuickDrawと密接に統合され、特に画像の解凍コールは本格的なQuickDrawの描画コールであり、画像が記録されている場合、圧縮データは画像の一部として保存され、後で画像を描画する際に表示される。また、画像圧縮マネージャでは、ColorSyncカラーマッチングとの連携も追加された。
この後、新しいプロセッサアーキテクチャ(PowerPC)に最適化するためのバックエンドの変更を除けば、QuickDrawはクラシックMac OSの残りの期間中、ほとんど変更されることなく存続した。QuickDraw GXとQuickDraw 3Dは、QuickDrawの名前を共有し、QuickDraw PixMapと画像データ構造を相互運用することができたが、それ以外の機能では完全に別個のもので互換性がなかった。
Mac OS Xでは、QuickDrawはCarbon APIの一部となった。2005年、Mac OS X v10.4のリリースに伴い、QuickDrawは公式に非推奨とされた。
2010年、MacPaint 1.3のソースコードがコンピュータ歴史博物館から公開され、QuickDrawの歴史的なソースコードも利用可能になった[2][3]。
脚注
- ^ “Apple Developer Documentation”. developer.apple.com. 2022年1月24日閲覧。
- ^ “MacPaint and QuickDraw Source Code” (英語). CHM (2010年7月18日). 2022年1月24日閲覧。
- ^ “🕞 👨🏽🎤 🚮 博物館に送られたMacPaintおよびQuickDrawのソース 🌏 👨🏻🌾 ⏏️”. tech-in-japan.github.io. 2022年1月24日閲覧。
関連項目
外部リンク
- MacPaint and Quickdraw source code - ソースコードがコンピュータ歴史博物館において公開されている
Quick, Draw!
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/20 13:50 UTC 版)
ナビゲーションに移動 検索に移動ジャンル | 推測ゲーム |
---|---|
対応機種 | ブラウザ |
発売元 | Google A.I. Experiments |
デザイナー | Jonas Jongejan, Henry Rowley, Takashi Kawashima, Jongmin Kim, Ruben Thomson, Nick Fox-Gieg[1] |
発売日 | 2016年11月 |
『Quick, Draw!』(クイック ドロー)は、Googleが開発したオンラインゲームである。プレイヤーは何らかの物や形を描くよう要求され、その絵が何を表しているかをニューラルネットワークによる人工知能が予想する[2][3][4]。人工知能は新たな絵を認識するたびに追加学習し、以後さらに正しく予想する能力を向上させる[3]。コンセプトはPictionaryに似ている。ただし描ける時間制限は20秒である[2]。描くテーマは「足」の様なシンプルなものから、「動物の移動」のような難しいものまである[4]。このゲームはGoogleの人工知能プロジェクトA.I. Experimentsの一環として制作されたゲーム集の中の一つである。
ゲームプレイ
まずプレイヤーは何を描くか指定される。(例えば「次の絵を描いてください:イス」など。)そして絵を描ける時間が20秒与えられる。描かれた絵を元に、描かれようとしているものが何かを人工知能が予想する。その絵が指定されたものであると適切に認識されれば「わかりました。イスです!」といったメッセージが現れ、プレイヤーは次のラウンドに進める。AIが認識できなかった場合は「すいません、何の絵かわかりませんでした。」というメッセージが表示される。Quick, Draw!は六ラウンドで構成されており、最後にプレイヤーがうまく描けなかったものについて、他のプレイヤーがどのように描いたかを確認することができる。
脚注
- ^ “quick-draw”. 2016年11月28日閲覧。
- ^ a b Burgess, Matt. “You can now play a Pictionary-style game called Quick Draw against Google's AI”. Wired.co.uk. 2016年11月16日閲覧。
- ^ a b Lu, Wendy. “How Does Google "Quick, Draw!" Work? This Game Makes Learning About Artificial Intelligence Fun”. 2016年11月24日閲覧。
- ^ a b Capewell, Jillian. “Let A Computer Guess What You’re Drawing In This High-Tech Pictionary Game”. Huffington Post. 2016年11月21日閲覧。
外部リンク
固有名詞の分類
- QuickDrawのページへのリンク