一時期はiOSアプリケーションの開発をよくやっていましたが、最近はアプリケーションというとWebばかり。 当工房はモノづくり全般に積極的に取り組んでいますので、ソフトウェア開発も主要な業務の一つです。作り手は自分が使う道具を自分で誂えるなんていうことをするのが普通ですが、これは刃物や治具に限ったことではなくてアプリケーションも含まれます。例えばギター製作者向け計算機のようなアプリケーションは自分がギター製作をするときに行う計算を行う便利ツールですが、以前はこれのiOS版を作って使っていました。iOS版だとマルチプラットフォームではないし、Apple社のバージョンアップに付き合わなくてはいけません。ビルドし直せば動くという場合ならまだしも、APIやアーキテクチャーが変わったために多くの書き直しが発生することもあります。そういうのにはちょっと付き合いきれない感じがします。

それでちょこっとした便利なツールを自分で作りたい場合に何が良いかを考えているときに見つけたのがSDLです。 SDLはOpenGLとDirect3Dを経由して、オーディオ、キーボード、マウス、ジョイスティック、およびグラフィックス・ハードウェアへの低レベルアクセスを提供するために設計されたクロスプラットフォーム開発ライブラリで、 Windows、Mac OS X、Linux、iOS、Androidをサポートしています。 SDLはCで書かれており、C++でネイティブに動作しその他の言語とバインディングが可能です。 ライセンス形態はzlibライセンス。

SDLを使ったアプリケーション開発ができるようになれば、例えばRaspberry Piに小さな液晶パネルを取り付けた機動性の高いアプリケーションを開発することができてモノづくりの幅も広がりそうです。

UbuntuでSDLを使うための方法を簡単に紹介します。Ubuntu 16.0.4LTSを対象に書きます。

SDLのインストール

SDL 2.0のソースコードのリポジトリはmercurialで管理されています。ソースコードをクローンするにはmercurialがインストールされている必要がありますので、もしインストールされていなければ次のコマンドでmercurialをインストールします。

$ sudo apt-get install mercurial

ソースコードのダウンロード

カレントディレクトリにリポジトリからソースコードをSDLという名前でクローンします。

$ hg clone https://hg.libsdl.org/SDL SDL

SDLのコンパイルとインストール

$ cd SDL
$ mkdir build
$ cd build
$ ../configure
$ make
$ sudo make install

入門プログラムの作成

Eclipse CDTを使って簡単なプログラムを書いてみます。 SDLプログラミングのチュートリアルを参考にしてやってみました。なかなか親切なチュートリアルだという感じがします。

Eclipse CDTでプロジェクトを作成

新規C++プロジェクトを作成してヘッダーファイルのインクルード設定とライブラリのリンク設定を行います。

インクルード設定

[追記] スクリーンショットではGCCのIncludes設定になっていますが、G++のIncludes設定を行ってください

リンク設定

ウィンドウを表示するプログラムを書く

チュートリアルのLesson 2を参考にしてやってみました。

コンパイルして実行するとこのようなウィンドウが開くはずです。

ほんの導入部を紹介しただけですが、この後はチュートリアルを見ながら学習を進めていけば良いと思います。

追記 SDLを使ってオーディオプログラミングをするチュートリアルビデオを見つけました。 #1 Audio Programming Tutorial: Project Setup

GCCでコンパイルするとSegmentation faultになります。G++でコンパイルされるようにソースコードはC++のソースコード (拡張子 .cpp)にしてください。