Chapter 01

イントロダクション

Ryo Suzuki
Ryo Suzuki
2022.08.18に更新

1. Siv3D について

Siv3D (シブスリーディー) [1]は、2D / 3D ゲーム、メディアアート、ビジュアライザ、シミュレータなど、可視化やインタラクションに関わるプログラムを、非常に短い、楽しく簡単なコードで記述できるモダンな C++ フレームワークです。MIT ライセンスで配布され、2021 年 8 月時点における直近 1 年間の SDK ダウンロード数は約 1 万回です。動作プラットフォームは Windows / macOS / Linux / Web です。


マスコットキャラクターの Siv3D くん

1.1 機能の概要

Siv3D を導入することで、次のような操作を組み合わせたアプリケーションを非常に短いコードで記述できます。

  • 図形や画像、テキスト、動画、3Dモデルなど、グラフィックスの描画 (Direct3D 11 / OpenGL 4.1 / WebGL 2.0)
  • マウスやキーボード、Webカメラ、マイク、ゲームパッドなど、ヒューマンインタフェースデバイス (HID) の使用
  • ウィンドウ処理、ファイルシステム、ネットワーク
  • 画像処理や音声処理
  • 物理演算や経路探索、幾何などの計算
  • データ構造やアルゴリズム

Siv3D は標準的な C++ で書かれていますが、ユーザはほとんどのプログラムを、Siv3D が提供する便利な型や関数を使って記述します。そのため、描画やインタラクションのための DSL (domain-specific language) としての性格が強いです。例えると Java にとっての Processing です。

# include <Siv3D.hpp>

void Main()
{
	Scene::SetBackground(ColorF{ 0.8, 0.9, 1.0 });
	const Texture food{ U"🍿"_emoji };
	const Texture chick{ U"🐥"_emoji };

	while (System::Update())
	{
		Circle{ Scene::Center(), 100 }.draw();
		food.drawAt(Scene::Center());
		chick.drawAt(Cursor::Pos());
	}
}

Unity のようなゲームエンジンとの一番の違いは、Siv3D はビジュアルツールを持たず、すべてコードで完結するということです(Siv3D で独自のビジュアルツールを組むことはできます)。

1.2 Siv3D のここが最高

⚡ 非常に短いコード

Siv3D のコードは最短で 2 行です。描画やインタラクションを実現するための便利な関数とクラスが揃っているため、アプリケーションのほとんどは 1 つの .cpp ファイルだけで完成します。あなたのアイデアを、GitHub Gist などのコード共有サイトを使って手軽に保存・シェアして、世界中の Siv3D ユーザと技術を交換し学び合いましょう。

🛸 最新の C++ を学べる

Siv3D のサンプルとライブラリ API は、最新の C++20 スタイルで書かれているため、Siv3D を使っているだけで、モダンな C++ の書き方やテクニックが身に付きます。Siv3D の作者は、日本最大のゲーム開発カンファレンス CEDEC で 最新 C++ の活用に関する講演 をしたり、C++ の情報ポータル を作成したりするなど、最先端の C++ の普及に努めています。

🏬 一貫した API

Siv3D は 2,200 ファイルのソースコードと 90 のサードパーティ・ソフトウェアによって実現される、可視化やインタラクションのための様々な機能を、一貫した API で提供します。Siv3D のルールを覚えるだけで、ありとあらゆる機能が思いのままです。

⛰️ オープンソース

Siv3D は MIT ライセンスのもと GitHub 上で開発 されているため、いつでも内部のコードを調べたり改造したりできます。サードパーティ・ライブラリを含め、商用利用を妨げる条件は無く、開発したゲームやアプリケーションの収益は 100% 開発者が獲得できます。

🐦 軽量・迅速

Windows 版の OpenSiv3D SDK のインストーラのサイズは 120 MB 未満です。インストールはわずかなクリックで自動的に終わり、Visual Studio を起動すると、メニューには Siv3D プロジェクトを作成するアイテムが追加されていて、すぐにプログラミングを始められます。

💗 親切なユーザコミュニティ

Siv3D を使って困ったことがあったら、Siv3D オンラインユーザコミュニティ で質問しましょう。匿名で質問したい場合は BBS も利用できます。毎月オンラインで開催される Siv3D 実装会では、Siv3D の熱心なユーザ達や Siv3D の作者と、Discord 上で雑談や技術的な相談をすることができます。Twitter では定期的に #Siv3D, #OpenSiv3D ハッシュタグを巡回しています。ユーザコミュニティが、作品の宣伝やシェアに協力してくれるでしょう。オープンソースソフトウェア開発に貢献したい学生には、Siv3D を練習場にしたサポートプログラムを毎年実施しています。

🌐 Web ブラウザで動く

現在試験的に提供される Web 版(OpenSiv3D for Web)を使うと、Siv3D で作った C++ アプリケーションを、Web ブラウザ上で実行可能なプログラムに変換できます。世界中の人がスマホやタブレットからあたなの作品を体験できます。

1.3 Siv3D の制約

最新の C++ コンパイラが必要

Siv3D は最新の C++ を活用するため、モダンな C++ コンパイラが必要です。Windows の場合は無料で利用できる Visual Studio コミュニティの最新版、macOS では最新に近い世代の Xcode が必須の開発環境となっています。Windows XP や 32-bit OS などの古い実行環境では利用できません。

すでに書かれた C++ プログラムに後付けできない

多数のサブシステムを協調させて制御するために、Siv3D はプログラムのエントリーポイント (int main(), Windows の場合 WinMain()) やウィンドウハンドルなどを独自に管理します。そのため、既存の C++ アプリケーションのプログラムにあとから Siv3D を乗せることはできません。主従関係を逆にして、Siv3D のプログラムに対して、追加のプログラムやライブラリを乗せるようにしましょう。

まだ完全に API が安定していない

OpenSiv3D はバージョン 0.0.1 から始まり、4 年かけて 0.6 までたどり着きました。95% 以上の API は理想形に達していますが、まだ改善の余地のある機能も残っています。将来登場する新しいバージョンの Siv3D に乗り換えるときに一部のコードを修正する手間が発生するかもしれません。2022 年には API 安定版をリリースすることを目標としています。

1.4 ユーザ事例 (2021)

最近 Twitter に投稿された Siv3D 関連のツイートを紹介します。

https://twitter.com/e869120/status/1425458983154831363

https://twitter.com/Ryoga_exe/status/1429748042169602049

https://twitter.com/takara2314/status/1415649264085069829

https://twitter.com/agehama_/status/1410563076869394433

https://twitter.com/Ryoga_exe/status/1401098907195559938

https://twitter.com/G4rryS1ngh/status/1394752543364763648

https://twitter.com/azaika_/status/1393421628403380224

https://twitter.com/itakawa/status/1389944433177546757

https://twitter.com/Ryoga_exe/status/1388820367922188289

https://twitter.com/discosaan/status/1387061728974839809

https://twitter.com/r193333333/status/1377613363929247746

https://twitter.com/awotere7/status/1363471771836567559

https://twitter.com/agehama_/status/1346062702691565569

https://twitter.com/Shibaken_8128/status/1344967321454931969

1.5 ゲーム作品

Siv3D で開発された人気のゲームを 3 つピックアップします。


次のページでは、Siv3D で開発を始めるのに必要な環境を説明します。

脚注
  1. 2016 年まで開発されていた旧世代 Siv3D と区別して OpenSiv3D (オープンシブスリーディー) と呼ぶこともあります。 ↩︎