Siv3D 勉強会 in 筑波 (2018) 参加報告 | OpenSiv3DのチュートリアルとLinux版のインストールと格闘
概要
項目 | 内容 |
---|---|
イベント名 | Siv3D 勉強会 in 筑波 (2018) |
URL | https://amusement-creators.connpass.com/event/91201/ |
ハッシュタグ | #Siv3D |
開催地 | 筑波大学サテライトオフィス 茨城県つくば市吾妻1−8−10 |
開催日時 | 2018-07-07 13:30-16:30 |
参加人数 | 10 |
connpass上は9人だったが,当日飛び入り参加があった。
当日のGNU Socialでの投稿は以下から閲覧可能。
経緯
Twitterを眺めていたら,以下の投稿が再投稿経由で目に入った。
C++ 入門本(鈍器ではない)を出版します!https://t.co/8DKybzLy2M #冒険で学ぶはじめてのプログミング pic.twitter.com/7Kgle6qvAF
— Ryo Suzuki『冒険で学ぶ はじめてのプログラミング』 (@Reputeless) 2018年7月6日
このタイミングでC++の入門本が出版されることに驚いた。興味を持ち,Ryo Suzukiを購読して,投稿内容をさらに眺めていたら。以下の再投稿が目に入った。
いよいよ明日はSiv3D勉強会です! 当日参加も歓迎ですので、ご気軽に参加くださいね!#siv3d pic.twitter.com/uEKNO565ys
— AmusementCreators (@ac_is_not_am) 2018年7月6日
Ryo Suzukiが開発しているSiv3Dというライブラリーの勉強会があるとのことだ。なんともすごいタイムリーで,縁を感じた。
ちょうど半年ほど前に,C++をやるのにゲーム業界もいいかと思い,C++で開発できるゲームエンジンについて調べていた。Coco2d-xとUnreal Engineが目につき,Siv3Dというのもそのときに存在を知った。そのときは,Siv3Dはかなり短いコードで開発ができるが,モバイル端末向けのOS (Android, iOS) はサポート対象外だったということだけ印象に残っていた。
会場が筑波大学サテライトオフィスということで,若干遠いので躊躇したが,当日の朝に起床できたので参加することにした。当日参加のため,connpassのページでは参加登録できなかった。
感想
主に,筑波大学公認サークル Amusement Creators 人向けに開催されたようで,おそらく部外者は僕とその他1-2人程度だったのではないかと思われる。駅前の建物の中の1フロアで開催された。
今回の勉強会は,Siv3Dの開発者による,Siv3Dの紹介とチュートリアルやアプリ開発の紹介だった。以下のページに公開されている資料を元に話が進んだ。
Siv3D勉強会は今回で3回目とのことだ。今回,つくばで開催したのは,Siv3Dに2番目に貢献している人がこの筑波大学に所属しているからだそうだ。Siv3Dの開発は,その後継のOpenSiv3Dに移っており,OpenSiv3DのLinux対応を対応されたのがこの人だそうで,そのことについても紹介があった。
実は,当日の11:00から「OpenSiv3D 実装会」があったようで,おそらく開発者同士でここでやりとりがあった。おそらく,これが今日のメインだったのだろう。
チュートリアルもアプリ開発も,シンプルなコードで,差分を示しながら,どのように組み立てていくのか示しており,わかりやすかった。元々,OpenSiv3D自体がかなり短いコードで,直感的な意味論になるような命名規則,構成になっているので,複雑な挙動や機能を驚くほどに手短に簡単に記述できて,驚いた。
特に印象に残ったのは,以下2点だ。
- OpenSiv3Dでは文字列にUTF-32を採用し,文字列を1文字あたり4バイト固定
- 絵文字をふんだんに活用
OpenSiv3DはFontAwesomeなどの絵文字を,アイコンや画像などにふんだんに活用している。このために,開発で使用する文字列をUTF-32の1文字4バイトの固定文字長採用している。絵文字はUnicodeの後ろの番号だから,この設計は理にかなっていた。絵文字を活用することで,開発者側で用意するリソースが少なくて済む。
アプリケーション開発におけるリソースは僕も気にしており,Qtで標準アイコンを使う方法を以下の記事に書いたりしていた。
標準アイコンもいいのだが,それよりもバリエーションが豊富で品質が高い,Font Awesomeを使うのはいいなと思った。幸いなことに,QtAwesomeというQtでFont Awesomeの絵文字を使うためのライブラリーが用意されている。今後はこれも検討してみてもいいと思った。
会の内容的には,ハンズオンみたいに解説に合わせて,手を動かしながら確認できればよかったのだろうが,今回はだいたい眺めるだけに終わった。作業できるようにノートパソコンを持参したが,この会に参加することを決めたのが直前だったのものあり,OpenSiv3Dをインストールしていなかったからだ。
僕のノートパソコンはLinux (Ubuntu 16.04) をインストールしており,Linux版のOpenSiv3Dをインストールする必要がある。すぐにできるかと思ったが,これが思っていた以上に苦戦した。以下のリポジトリーを参考に作業をした。
まず,OpenSiv3Dのリポジトリー自体がけっこうサイズが大きくて単純にgit cloneに時間がかかった。そして,依存ライブラリーの用意に手間取った。OpenALはAPTで以下のコマンドでインストールできた。
sudo apt install libopenal-dev
turbojpegも同じように以下のコマンドでAPT経由でインストールしてみたのだが,開発用のヘッダーとライブラリーが付属していないのかダメだった。
sudo apt install libturbojpeg libjpeg-turbo8-dev
しかたなく,libturbojpegをソースコードからインストールした (libturbojpegのインストールにさらにNASMかYASMが必要だった)。
ようやく,これでOpenSiv3Dをビルドできるかと思ったら,OpenSiv3DはC++の最新の規格であるC++17が必要なので,自前の環境のコンパイラーのGCCのバージョンが5.4.0と古くて,コンパイルに失敗した。
GCCのソースコードをダウンロードしたり,Clangの新し目のバージョンをダウンロードしたりしていて,結局タイムオーバーになってしまった。
完全に失敗だった。ゲームエンジンなどの最新技術の分野では,最新の開発環境が必要になるのだから,ローカル環境も常に最新の環境にしておくべきだった。せっかく開発者が同席している機会だったのに,踏み込んだ意見交換ができなくてもったいなかった。
結論
OpenSiv3Dのインストールがうまくいかず,実際に手元のマシンでビルドして動作を確認できなかった。しかし,いくつものチュートリアルやサンプルアプリや,作り方の紹介があり,参考になった。
QtのAPIもかなり洗練されているが,OpenSiv3Dもそれに負けないくらい洗練されていた。特に,リソースにFont Awesomeを採用しているは発見だった。
食わず嫌いをせずに,Cocos2d-xやUnreal Enginも世の中に出回っているのだから,一度チュートリアルを試してどんなものかみておいたほうがいいと感じた。今回発見したような新しいことが何かわかるかもしれない。
また,今後のためにローカルの開発環境は何があっても対応できるように,ソースコードから最新版をコンパイルして使えるようにシておこうと思う。特に,GCCやGit,CMakeあたりは開発で今後もよく使うと思われるので,注意しておきたい。それと,ノートパソコンの電池がすぐになくなるので,モバイルバッテリーを用意するなど対策も練ることにする。