DXライブラリ

DXライブラリ（ディーエックス・ライブラリ、またはダイレクトエックス・ライブラリ、デラックスライブラリ）とは、2001年に山田巧がC++用に開発した、無料のコンピュータゲーム開発用ライブラリである。広義にはゲームエンジンに分類される。DxLibとも表記される。

ライブラリ自体の著作権は開発者の山田巧が保持しているが、ライブラリはオープンソースとして公開されているダウンロードページ 「改造希望の方へ」。ライブラリの使用に制限や条件は一切なく、ソースコード配布時に限りライブラリの著作権表示を求めている著作権関係　<<DXライブラリのライブラリファイルやソースコードの再配布について>>。

 概要 
専門学校のゲーム学科学校名などの詳細は公表されていないで既に使用されていた一般公開されていない教材（ライブラリ）を元に、関係者の協力の下、山田巧がパソコンゲーム（Windows）用に開発した仕様＆特徴説明　「ライブラリ制作にご協力していただいた方」インタビュー1-2 of Visual Studio2010編予告サイト（LibroWorks Inc）。2001年5月に初版がリリースされてから、2019年10月現在でも開発が進んでいる。名称は「DirectXライブラリ」から由来している説明書参照（Ver 3.06c時点）。

ライブラリ独特の仕様が少なく自由度が高いため、ゲームジャンルや開発規模に制約されないことを特徴に上げている。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がなくてもコンパイルできる。ライブラリは静的リンク方式（*.LIB）でのみ提供されておりDLLは存在しない。DXライブラリのソースコードはライブラリ自体には入っておらず、山田巧により DxLibMake というファイルで別途公開されている。

公式サイトにライブラリの関数リファレンスページやサンプルプログラムが用意されているが、「主な関数の説明」とされており掲載されていない関数もある関数リファレンスページリファレンスページとライブラリのヘッダファイルを比較のこと。公式リファレンスページ上で全ての関数が掲載されていない状況について、2010年10月に山田巧も「ドキュメントが整備し切れていない」と認めているインタビュー2-2 of Visual Studio2010編予告サイト（LibroWorks Inc）。なお、公式サイトは2016年3月に一度移転している。

2015年12月、DrawFormatStringなどの文字列を渡す関数でバッファオーバーランが発生し、任意のコードを実行される脆弱性が公表されたＤＸライブラリの脆弱性情報　2016年3月26日確認。2016年1月、JVN iPediaにて告知されIPA上にも掲載されたJVNDB-2016-000001 ＤＸライブラリにおけるバッファオーバーフローの脆弱性　2016年3月26日確認「DXライブラリ」におけるバッファオーバーフローの脆弱性対策について(JVN#49476817)　2016年3月26日確認。脆弱性は3.16で修正されている。

開発者の名前について、公式サイトや付属の説明書では山田巧で統一されているが、ミラーで配布されているベクターではハンドルネームで夏夕樹と名乗っている作者：夏夕樹　2015年3月9日確認。

 沿革 
小規模なアップデートは省略する。

+ DXライブラリの更新履歴 日時  バージョン  更新内容 2001年5月 1.00  初版リリース 2001年5月 1.30  通信関係の機能追加 2001年5月 1.41  lib形式（静的リンク方式）での配布に決定・変更 2004年4月 2.12b  開発環境・Borland C++に対応 2005年9月 2.19  DirectX SDK不要でコンパイル出来るように 2008年11月   開発環境・Visual C#に対応 2009年9月 3.00  DirectXのバージョンを9に変更 2010年7月 3.02f  Unicode設定によるコンパイルに対応 2011年7月 3.05a  通信関係がIPv6に対応 2012年5月 3.08  Visual C++のx64版追加 2014年4月   DirectX 11に対応 2015年9月   PlayStation Vitaプラットフォームに対応 2015年10月   PlayStation 4プラットフォームに対応 2015年12月 3.15f  DrawFormatStringなどの文字列を渡す関数でバッファオーバーランとなってしまう問題を修正 2017年2月 3.17b  Androidに対応 2018年6月 3.19b  Nintendo Switchに対応 2019年3月 3.20c  iOSに対応 2019年10月 3.21b  Live2D Cubism 4に対応2021年11月3.23Windows 11に対応

 サポートされている機能 
ゲーム開発用に設計されたライブラリのため、ゲーム開発における関連技術を中心にサポートしている。一方で、一般的なアプリケーションの開発に必要なウィジェット（コントロール）はサポートされていない。

なお、3Dグラフィックス機能としてMikuMikuDanceのモデルファイルとモーションファイルの読み込みにも対応しているが、一部仕様に違いが見られる。

 グラフィックス関係
 2D描画
 3D描画
 サウンド
 サウンド再生全般
 MIDIファイルの演奏
 ムービー再生
 入力関係
 マウス・キーボード入力
 ジョイパッド入力
 通信関係（TCP/IP）

 サンプルプログラム 
最も一般的なHello worldプログラム
#include "DxLib.h"

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;
}

 採用実績と評価 
ライブラリ自体の用途に制限は一切無く、使用した旨を記載・公言する義務も課せられていないため、採用数（使用した作品数）は不明である。ただし、一部機能を使用した場合著作権・ライセンス表記が必要である。

公式サイトに使用作品を紹介するページが開設されているほか、動画投稿サイトやその他ウェブサイトなどでも使用作品が公開されている。

ライブラリを教材として授業に使用する大学や専門学校もあるカリキュラム（芸術学部）　（東京工芸大学）TDG BLOG » 【ゲームクリエイター科】第2回目 AOプレスクール！　（東京デザイナー学院）ほか、独自に作成した派生ライブラリを活用している事例もある環境情報学科 プログラミング入門 ゲーム作成コーナー　「DXライブラリについて」　（東京情報大学）。

DXライブラリについて、「（DirectXを扱うことと比較し）画像ファイルを読み込んで画面上に動かす、効果音や音楽を再生するといったゲームに欠かせない処理を簡単に実行できる。」14歳からはじめるC++わくわくゲームプログラミング教室―Windows98/2000/Me/XP対応 ISBN 4-8997-7165-7　第1章「ゲーム作りに欠かせないDXライブラリ」「C言語で楽にゲームを作る機能を提供してくれる　（引用略）　一般的なゲームプログラムの組み方を学習するという意味でも、優れたライブラリ」ゲームプログラマS.S-新卒の方々へ　株式会社イニス　2011年7月20日と評価する声もある。

 関連書籍 
DXライブラリを使用したゲームプログラミングの入門書も多数発売されている。

 14歳からはじめるC言語わくわくゲームプログラミング教室 Windows98/2000/Me/XP対応 ISBN 4-8997-7151-7
 14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2008編―Windows XP/Vista対応 ISBN 4-8997-7217-3
 14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2010編 ISBN 4-8997-7281-5
 14歳からはじめるC言語オンラインゲームプログラミング教室 Windows XP/Vista対応 ISBN 4-8997-7240-8
 14歳からはじめるC++わくわくゲームプログラミング教室―Windows98/2000/Me/XP対応 ISBN 4-8997-7165-7
 14歳からはじめる リアルに動く!ゲーム物理プログラミング教室 C言語編―Windows 98/2000/Me/XP/Vista対応 ISBN 4-8997-7180-0

 脚注 

関連項目
 ゲームエンジン
 WOLF RPGエディター

 外部リンク 
 DXライブラリ置き場（公式サイト）
 DXライブラリPortable（PSP動作の派生ライブラリ）
 DxPortLib（似た構文を利用するマルチプラットホーム環境）

Category:ゲームエンジン
Category:グラフィックライブラリ
Category:オープンソースソフトウェア
Category:コンピュータゲーム制作ソフト
Category:C++