SFML とは|窓・描画・音・通信をまとめた C++ の無料のライブラリ
SFML は、窓の表示・描画・音・ネットワーク通信をまとめて扱える C++ のマルチメディアのライブラリです。zlib/libpng ライセンスで公開されていて、商用でも個人でも無料で使えます。SFML を使っていると書かなくてもかまいません。
- 分類
- ゲームエンジン・フレームワーク
- 日本語対応
- 日本語非対応
- 費用
- 無料
- 公式サイト
- https://www.sfml-dev.org/
このページの目次
SFML の概要
SFML(エスエフエムエル、Simple and Fast Multimedia Library)は、環境をまたいで使える、オブジェクト指向のマルチメディアの API です。窓の表示、描画、音、ネットワーク通信への入り口を用意します。
書かれている言語は C++ です。C・.NET・Ruby・Python など他の言語からも使えるように接続部(バインディング)が用意されています。
開発は master の枝にある版3に集まっていて、2.x の系列にはこれ以上の機能の追加は予定されていません。
SFML の特徴
SFML が持っている5つのモジュール
SFML は、パソコンのさまざまな部分を単純な形で呼び出せるようにして、ゲームとマルチメディアのアプリケーションを作りやすくします。system・window・graphics・audio・network の5つのモジュールでできています。
| モジュール | 扱うもの |
|---|---|
| system | SFML の土台のモジュールで、さまざまなユーティリティを定めます |
| window | OpenGL を使った窓と、イベントと入力の扱い |
| graphics | 2Dの描画(スプライト・文字・図形など) |
| audio | 音・ストリーミング(音楽か自前の音源)・録音・音の空間での配置 |
| network | ソケットを使った通信・ユーティリティ・上位のネットワークプロトコル(HTTP・FTP) |
APIとは
プログラムから別のプログラムの機能を呼び出すための決まりごとのことです。ここでは、SFML が用意している関数やクラスの並びを指します。
graphics のモジュールが扱うのは2Dです。sf::RenderWindow は、2Dの描画の対象にできる窓です。
公式の API の資料に載っている短い例では、窓を作り、テクスチャからスプライトを作り、フォントから文字を作り、音楽を読み込んで再生し、イベントを拾いながら画面を消して描いて表示する、という流れが1つの main に収まっています。
SFML の使用言語
本体は C++ です。公式の接続部(バインディング)は、C と .NET の言語向けのものです。
そのほかにも、コミュニティの手で、Java・Ruby・Python・Go など多くの言語から使えるようになっています。それぞれの接続部は、公式サイトの接続部(Bindings)のページから探せます。
SFML の対応プラットフォーム
SFML で作ったアプリケーションは、次の主な OS で、そのままコンパイルして動かせます(Android と iOS は制限つき)。
| OS | 対応 |
|---|---|
| Windows | そのままコンパイルして動かせます |
| Linux | そのままコンパイルして動かせます |
| macOS | そのままコンパイルして動かせます |
| Android と iOS | 制限つきで対応します |
主な OS 向けには、コンパイル済みの SDK が配布のページに置かれています。
SFML の動作環境
SFML 3.0.2 の配布のファイルは、OS ごとに分かれています。Windows 向けのファイルでは、コンパイラの版が完全に一致していなければなりません。
| OS | 配布されているもの |
|---|---|
| Windows | Visual C++ 17(2022)の32ビットと64ビット/GCC 14.2.0 MinGW(UCRT)の32ビットと64ビット |
| Linux | GCC の64ビット |
| macOS | Clang の64ビット(macOS 14.2 以降)/Clang の ARM64(macOS 15.5 以降) |
| どの OS でも | ソースコードと HTML の資料 |
Windows では、32ビットと64ビットのどちらのライブラリを選ぶかは、手元の OS ではなく、どちらの環境に向けてコンパイルするかで決めるべきものです。MinGW のパッケージを使うときは、GCC の版が見かけ上そろっているだけでは足りず、WinLibs UCRT 14.2.0(32ビット・DW2)または WinLibs UCRT 14.2.0(64ビット・SEH)のどちらかのコンパイラを使う必要があります。
Linux では、パッケージマネージャーにある SFML(十分に新しい版のとき)を使うか、ソースから組み立てることもできます。32ビット向けの SFML が要る場合は、自分で組み立てることになります。macOS では Homebrew からも入れられます。
CMake を使ったプロジェクトの雛形も用意されています。この雛形は、自分のアプリケーションと一緒に SFML を自動で取ってきて組み立てます。
SFML が読み込める形式
SFML は外部のライブラリとして、stb_image・stb_image_write(パブリックドメイン)、freetype、libogg、libvorbis、libflac、dr_mp3、miniaudio、cpp-unicodelib、HarfBuzz、SheenBidi、qoi、Mbed TLS、wepoll、libssh2 を使っています。これらはそれぞれのライセンスで配られています。
公式の API の資料の短い例では、画像に .jpg、フォントに .ttf、音楽に .ogg のファイルが読み込まれています。
SFML の資料
SFML を学ぶ場には、公式のチュートリアル、オンラインの API の資料、コミュニティの Wiki があります。導入の手引きは、対応する環境とコンパイラごとに用意されています。
API の資料は、SFML 3.1.0 から 1.6 までの版ごとに分かれています。公式サイトの Learn のページには、SFML の書籍の一覧もあります。
SFML の費用とライセンス
無料です。SFML のライブラリとソースコードは、zlib/libpng ライセンスで配られています。
SFML は、どんな用途にも無料で使えます。商用でも個人でも、ソースを公開しない作りでも公開する作りでも構わず、自分のプロジェクトに入れられます。ただし、元のソフトウェアの由来を偽ってはならず、元のソフトウェアを自分が書いたと言ってはいけません。改変したソースの版はそうと分かるようにはっきり示し、元のソフトウェアと偽ってはいけません。ソースの配布物から、このライセンスの表示を消したり変えたりしてはいけません。SFML を使っていると書くことは省いてもかまいませんが、書くことは歓迎されます。
| 項目 | 内容 |
|---|---|
| 費用 | 無料です |
| ライセンス | zlib/libpng ライセンスです |
| 商用の利用 | できます |
| ソースを公開しない作り | できます |
| 表記の義務 | ありません(書くことは歓迎されます) |
| 外部のライブラリ | それぞれのライセンスで配られています |
| 著作権の表示 | Laurent Gomila |
最新の正式な版は公式サイト sfml-dev.org から入手します。開発中の版は Git の置き場から、最新の断面は成果物の置き場からダウンロードできます。
ソースコードは GitHub の SFML/SFML にあります。作者は、Laurent Gomila をはじめとする開発者と、SFML のコミュニティの多くの参加者です。
- SFML の公式サイトhttps://www.sfml-dev.org/
情報源
- SFML — 公式サイト(5つのモジュール・対応する OS・公式とコミュニティの接続部)https://www.sfml-dev.org/確認日 2026-10-18
- SFML — GitHub(名乗り・対応する言語・開発の状況・入手の3つの道・ライセンスの要約・外部のライブラリ)https://github.com/SFML/SFML確認日 2026-10-18
- License — SFML 公式(zlib/png ライセンスの全文・著作権の表示・外部のライブラリの一覧)https://www.sfml-dev.org/license/確認日 2026-10-18
- Documentation for SFML 3.0.2 — 公式の API の資料(短い例・クラスの説明)https://www.sfml-dev.org/documentation/3.0.2/確認日 2026-10-18
- Download SFML 3.0.2 — 公式サイト(OS ごとの配布・コンパイラの版の一致・Homebrew)https://www.sfml-dev.org/download/sfml/3.0.2/確認日 2026-10-18
- Learn — SFML 公式サイト(チュートリアル・API の資料・版ごとの資料・書籍)https://www.sfml-dev.org/learn/確認日 2026-10-18
- Topics — SFML 3.0.2 の API の資料(5つのモジュールの説明)https://www.sfml-dev.org/documentation/3.0.2/topics.html確認日 2026-10-18