「プログラミング」タグアーカイブ

2008年冬、64bit OS時代到来

今年2008年冬の年末商戦以降、一気に64bit OSが浸透するかもしれません。これはWindows Vista登場間近から噂されていた事ですが、いよいよ現実味を帯びてきました。

去年から続いていたDDR2 SDRAMの大暴落は、PCのメモリ搭載量を飛躍的に押し上げる要因となったのは記憶に新しいところ。今や、新しいPCでメモリ合計4GB未満を選ぶことは、余程の理由がない限り避けたほうがいいでしょう。少ない投資で快適さを得るならメモリの増量が一番効果的だからです。例えば、複数のアプリケーションを起動したときに、ガリガリと音を立てて動作が重くなるHDDスワップも、大容量メモリなら回避出来ます。

さて、ここで問題となるのがOSの認識出来る最大メモリ量。今、一番普及しているWindows XPは、多くの人が32bit版を使っていることでしょう。この32bit版XPで扱えるメモリの最大値は、2の32乗である4GBまで。実際はOSの制限で3GB程です。余剰メモリをRAMドライブとして使用することを抜きにすれば、Windows XPの機能だけでは、どうがんばっても、それ以上認識させることは不可能。そこで、標準で4GB以上のメモリを扱える64bit OSに注目が集まってきたのです。海外のPC通販サイトでは、OSにWindows Vistaの64bit版を搭載するのが主流になってきています。その効果もあってか、Vistaにおける64bit版の割合は、2008年10月に全ユーザの20%を超えました

では、64bit OSを使用するにあたり、注意しなければいけない事はなんでしょうか?2つあります。

1つは、使用中の機器に対応したドライバが存在するか。32bit用のドライバは流用できません。Vista発売時に散々言われていたデメリットです。しかし、それも今では解消されました。有名なメーカーの機器なら、64bit版ドライバが提供されていますので安心してください。また、サポート期間の過ぎた古い機器でも、OSに標準で用意されていたり、メーカーのサイトで公開されている場合があります。例外として、新製品でも地デジ用チューナーボードだけは注意しなければなりません。国内メーカーの製品は、どれも32bitドライバしか提供されておらず64bit OSで使用不可能。これは販売側の怠慢としか思えません。しかも、酷いメーカーになると、64bitドライバを提供していないのにVistaロゴに似せたマークを印刷して販売しています。有名なメーカーでも、日常的に行っている商法なので、64bit OSを使うときは十分注意してください。

2つ目は、使用中のアプリケーションが対応しているかどうか。現行の32bitアプリケーションであれば、驚くほど何の障害もなく動作します。問題なのは「16bitアプリケーション」と「特殊なドライバが必要」な場合です。Windows 95時代のアプリケーションは、インストーラーや本体が16bitの物が多く存在しました。64bit OSでは、「16bitアプリケーション」のサポートが切り捨てられてしまったので、それらを動かすことは出来ません。どうしても動かしたいのであれば、仮想環境にWindows 95をインストールして使ってみてください。

「特殊なドライバが必要」なケースのほうは、最近の32bitアプリケーションでも起こります。一番問題になりそうな例をあげると、不正使用防止のために設けたセキュリティ機構が該当します。一時期騒がれた、ルートキットまがいのドライバをOSに寄生させアプリケーションを監視するタイプは、最早絶望的です。64bit Windowsでは、未署名のドライバ、32bit以下のドライバはインストールできません。これらが代替の利くアプリケーションなら、使用を諦めれば済む話です。ですが、思い入れのあるゲームだったりしたら、泣かざるを得ません。とりあえず最良の解決策は、「古いOSを仮想環境のために保管しておく」、「ゲームは買ったら早い内に遊び、飽きるまでやり尽くす」ことです。

これら以外にも64bit OSの特徴が上手くまとまった特集記事が下記にありましたので、時間があれば読んでみてください。

64bit Vista完全導入ガイド (DOS/V Power Report - Impress)

最後に、もう1つ。別途、開発者が注意しなければいけないことがあります。64bitアプリケーションの作成のとき、OSのAPIやコンパイラがサポートしているデータモデルを常に意識しておく必要があります。C/C++を例にお話をします。64bit WindowsのVC++はLLP64モデルを採用しており、short int:16bit、int:32bit、long int:32bit、long long int:64bit、pointer:64bit。対する64bit Linux系のGCCはLP64モデルが採用され、long int:64bitだけ、LLP64モデルと異なっています。この相違点は、マルチプラットフォームでの開発で問題になります。LP64モデルを想定して作ったアプリケーションをLLP64モデルの環境でコンパイルすると、桁落ちを起こし異常動作するかもしれません。回避策は相違点のあるlong intを使わない、もしくはstdint.h(inttypes.h)をインクルードして明示的に変数幅を固定すること。それさえ守れば、OSやコンパイラ間、そして、32bitアプリケーションとの互換性を維持するのも難しくはないでしょう。

64bit#64ビットデータモデル (Wikipedia)

64ビットになると何が変わる?――64ビットプログラミングのデータモデル (2/2) (ITMedia)

Linuxと64bit環境 (VA Linux Japan株式会社)

2008年11月16日、Intelの新CPU、Core i7が発売されました。ハイパースレッディングによりOS上からは8コアに見えるそうです。対応マザーボードは、DDR3 SDRAMを3チャンネル単位で使うことが推奨され、合計6枚も挿せます。これは最大24GBのメモリが使えることを意味します。新しいPCの購入を考えている方は、これを機に思い切って64bitOSの世界に足を踏み入れてみては如何でしょうか。

2008年11月19日追記:デルを含む各ショップブランドから、OSにVista x64版を採用したCore i7搭載モデルが続々と販売開始されました。一応、XPにダウングレード出来るとこもあるようですが、メモリの問題も含め5年以上昔のOSで真価を発揮できるか疑問です。やはり、Vista x64版が妥当かと思います。

APNGが普及しない2つの理由、2つの望み

Firefox3とOpera9.5以降では、APNGと言うアニメーション画像形式が表示可能です。これはGIF代替を目標にMozilla Foundationが独自に策定したフォーマットでPNGをベースにしています。しかし、いまいち普及に弾みがつきません。その尤もたる理由を2つ述べたいと思います。

APNGが考案された経緯はGIFのライセンス問題に端を発します。かつて、GIF画像の作成に採用されているLZWアルゴリズムの権利保有元が、突然、特許料の徴収を強化し始めました。既にブラウザの標準的画像形式であり、自由に使えていたGIFに降りかかった予想外の事件。この自由を奪う行為に反発した多くの人々が立ち上がり、代替フォーマットを考案したのでした。それが静止画像形式PNGと、アニメーション画像形式MNGです。PNGが一定の成功を収めた一方、残念なことに、MNGは策定の遅れと難解な仕様のため次第に忘れ去られていきました。このMNGの反省点から、再度GIF代替アニメーション形式として発表されたのがAPNGです。しかし、時既に遅し。LZWの特許期間が満了し、GIFを昔のように自由に使える現在、APNGの出る幕はありません。全てのブラウザで表示できないAPNGを誰が使うのでしょうか。

第2に、この新しい画像形式に対応させるために開発リソースを割く価値が薄いこと。APNGは野心的にもフルカラーアニメーションをサポートしていますが、可逆圧縮であるが故にPNGと同様の欠点があります。それは、ファイルサイズが大きくなってしまう、と言うことです。ブロードバンド時代とは言え、無意味に大きなファイルは転送に時間がかかり、閲覧者とサーバ双方のストレスの原因になります。結局、256色以下に減色した画像を使うのが最良の選択。そうなると、わざわざAPNGを使わずともGIFで事足りてしまうのです。しかも、FlashやJavascript全盛の昨今、ブラウザでのアニメーション画像の活用範囲は、非常に限定的ものとなってしまいました。そのような状況で積極的にAPNGをサポートするブラウザが増えるのか、甚だ疑問です。

ですが、普及の望みがない訳でもありません。ブラウザシェア70%のIEがAPNGに対応すれば、一気に普及の道が開けるかもしれません。近頃は他のブラウザにじわじわとシェアを奪われていますが、まだまだ、その存在感は大きいです。IEの動向は要注目です。

また、APNGはGIFと同様、シンプルなフォーマットです。libpngに読み書き用のAPIが実装済みと言うことなので、ブラウザ以外の用途で道が拓ける可能性もあります。ブラウザでの利用に拘らず、ゲームのリソースとして使ってみてもいいかもしれません。興味のある開発者は挑戦してみては如何でしょうか。

以上、MNGアニメーション編集ソフトを開発したことのある筆者の見解でした。

IrrlichtML 1.4.2を公開しました

先日アップデートされたオープンソースの3DエンジンIrrlicht 1.4.2を元に、多言語環境修正パッチを適用したIrrlichtML 1.4.2をリリースしました。

IrrlichtML 1.4.2

変更点は1つ、Freetypeライブラリをバージョン2.3.6から2.3.7にアップグレード。パッチ自体のコードには一切修正を加えておりません。ちなみにXIMプログラミングの知識が皆無ですので、Linux環境では動作未確認です。もし、動かなくなっているようでしたら、ぜひ、パッチの提供をお願いします。

ダウンロードは以下のページから。

IrrlichtML 1.4.2 ダウンロード

Irrlicht 1.4.2の変更点一覧

2008年09月23日、3Dエンジン Irrlicht 1.4.2がリリースされました。変更内容は次のとおり。

  • 透過マテリアルのZバッファ書き込みを統一
  • q3シェーダのテクスチャに関する修正
  • irrAlocatorパッチの適用
  • VC9プロジェクトを追加
  • パーティクルシーンノードにgetEmitterを追加
  • getScreenCoordinatesFrom3DPositionの不具合修正
  • ソフトウェアレンダラの色のちらつきを修正
  • irrMapのルートノードが常に黒くなるのを修正
  • パーティクルノードがコアダンプを吐くことがあるのを修正
  • b3dローダのメモリーリーク修正
  • ジョイントの子ノードの二重レンダリングの回避
  • d3d draw2dimageクリッピングのサポート
  • アニメーションバグの修正
  • OpenGL2.x互換性に関する問題修正
  • .objファイルの読み込み不具合修正
  • Linuxデバイスでのメモリーリークの修正

また、シーンエディタのIrrEditもVer.1.4.2対応版が同時リリースされています。こちらはWindows VistaのAeroに正式対応したそうです。

MODxサブドメイン対応版0.9.6.2

MODx 0.9.6.2をマルチドメインに対応させるパッケージをアップデートしました。

MODxマルチドメイン対応版

Subsites the MAD [HACK] Ver.2.1.0962(MODx Ver.0.9.6.2版)

詳しい特徴などは以前の記事を参照してください。

それにしても、この時期にアップデートが来るとは思いもせず油断してました。0.9.6系はいつまでメンテナンスされるのでしょう。現在、この改造版を私自身が一切使用していない関係で、もしかしたら、保守は今回限りになるかもしれません。