DXライブラリ

DXライブラリ（ディーエックス・ライブラリ、またはダイレクトエックス・ライブラリ、デラックスライブラリ）とは、2001年に山田巧がC++用に開発した、無料のコンピュータゲーム開発用ライブラリである。広義にはゲームエンジンに分類される。DxLibとも表記される。
ライブラリ自体の著作権は開発者の山田巧が保持しているが、ライブラリはオープンソースとして公開されている。ライブラリの使用に制限や条件は一切なく、ソースコード配布時に限りライブラリの著作権表示を求めている。
概要.
専門学校のゲーム学科で既に使用されていた一般公開されていない教材（ライブラリ）を元に、関係者の協力の下、山田巧がパソコンゲーム（Windows）用に開発した。2001年5月に初版がリリースされてから、2019年10月現在でも開発が進んでいる。名称は「DirectXライブラリ」から由来している。
ライブラリ独特の仕様が少なく自由度が高いため、ゲームジャンルや開発規模に制約されないことを特徴に上げている。C++用のライブラリではあるがC言語の知識だけでも扱えるよう工夫されている。DirectXおよびWindows APIを意識せずに使えるように設計されているものの、プログラムのエントリーポイントは"WinMain"（その他プラットフォーム向けでは異なる）になる。基本的な設計思想について山田巧は、ライブラリの前身にあたる教材の影響を強く受けていると語っている。
2001年開発当初は、DirectXおよびWindows APIを使用しているため、全体的にWindowsに依存しておりマルチプラットフォーム設計ではなかった。2015年9月にPlayStation Vita、同年10月にPlayStation 4、2017年2月にAndroid、2018年6月にNintendo Switch、2019年3月にiOSにそれぞれ対応した。Windows版とその他プラットフォーム向けではソースコードの共有もできるが、一応対応していない関数・機能も存在する。また、有志によってPlayStation Portableで動作する派生ライブラリを開発するプロジェクトが存在する。
開発時のOSはWindows XP以降が必要である。サポートされている開発環境はVisual C++、C++ Builder (Borland C++)、Gnu C++の他にも、Visual C#用パッケージも用意されている。ライブラリ単体でDirectXが利用できるよう設計されているため、DirectXのSDKがなくてもコンパイルできる。ライブラリは静的リンク方式（codice_1）でのみ提供されておりDLLは存在しない。DXライブラリのソースコードはライブラリ自体には入っておらず、山田巧により DxLibMake というファイルで別途公開されている。
公式サイトにライブラリの関数リファレンスページやサンプルプログラムが用意されているが、「主な関数の説明」とされており掲載されていない関数もある。公式リファレンスページ上で全ての関数が掲載されていない状況について、2010年10月に山田巧も「ドキュメントが整備し切れていない」と認めている。なお、公式サイトは2016年3月に一度移転している。
2015年12月、DrawFormatStringなどの文字列を渡す関数でバッファオーバーランが発生し、任意のコードを実行される脆弱性が公表された。2016年1月、JVN iPediaにて告知されIPA上にも掲載された。脆弱性は3.16で修正されている。
開発者の名前について、公式サイトや付属の説明書では山田巧で統一されているが、[[ミラーサイト|ミラー]]で配布されている[[ベクター (企業)|ベクター]]では[[ハンドルネーム]]で夏夕樹と名乗っている。
沿革.
小規模なアップデートは省略する。
サポートされている機能.
ゲーム開発用に設計されたライブラリのため、ゲーム開発における関連技術を中心にサポートしている。一方で、一般的な[[アプリケーションソフトウェア|アプリケーション]]の開発に必要な[[ウィジェット (GUI)|ウィジェット]]（コントロール）はサポートされていない。
なお、3Dグラフィックス機能として[[MikuMikuDance]]のモデルファイルとモーションファイルの読み込みにも対応しているが、一部仕様に違いが見られる。
サンプルプログラム.
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
 LPSTR lpCmdLine, int nCmdShow )
 // DXライブラリ初期化
 if( DxLib_Init() == -1 ) {
 return -1;
 //文字列表示
 DrawString( 10, 10, "Hello, world", GetColor(255, 255, 255));
 //キー入力待ち
 WaitKey();
 // DXライブラリ使用の終了
 DxLib_End();
 return 0;
採用実績と評価.
ライブラリ自体の用途に制限は一切無く、使用した旨を記載・公言する義務も課せられていないため、採用数（使用した作品数）は不明である。ただし、一部機能を使用した場合著作権・ライセンス表記が必要である。
公式サイトに使用作品を紹介するページが開設されているほか、[[動画共有サービス|動画投稿サイト]]やその他[[ウェブサイト]]などでも使用作品が公開されている。
ライブラリを教材として[[授業]]に使用する[[大学]]や[[専門学校]]もあるほか、独自に作成した派生ライブラリを活用している事例もある。
DXライブラリについて、「（DirectXを扱うことと比較し）画像ファイルを読み込んで画面上に動かす、効果音や音楽を再生するといったゲームに欠かせない処理を簡単に実行できる。」「C言語で楽にゲームを作る機能を提供してくれる　（引用略）　一般的なゲームプログラムの組み方を学習するという意味でも、優れたライブラリ」と評価する声もある。
関連書籍.
DXライブラリを使用したゲームプログラミングの入門書も多数発売されている。
外部リンク.
[[Category:ゲームエンジン]]
[[Category:グラフィックライブラリ]]
[[Category:オープンソースソフトウェア]]
[[Category:コンピュータゲーム制作ソフト]]
[[Category:C++]]