独創アプリ開発日記 311日目 プラットフォーム/ブラウザ別WebGLベンチマーク

前回の予告通り、今回は各環境/各ブラウザでのWebGLのベンチマークを取って見ました。WebGLとの比較のために、C++やC#(OpenTK)のネイティブアプリでの計測も行いました。計測条件は以下の通りです。

計測条件:
・テクスチャ付きの立方体を200 * 200 * 200 = 8,000,000個 描画
・開始から60秒経過時の”total”FPSを記録
・WebGLはこのページで計測(コード)
・C#(OpenTK)はこのコードで計測
・C++はこのコードで計測
・ハードウェアは環境によって異なる
 (各テーブルの先頭に記述)
・EDGE?なにそれ?
・IE?滅びろ。

結果は以下の通りです。

3770K+GTX1070
OS Browser WebGL C# C++
Ubuntu Chrome 29.72 39.51 38.77
FireFox 39.60
Windows Chrome 45.86 38.26 31.00
FireFox 33.47
Macbook Pro 15-inch, Mid 2015
(2.5GHz Corei7+RadeonR9 M370X 2048MB)
OS Browser WebGL C# C++
Mac Chrome 6.57 7.06 6.94
FireFox 6.84
Safari 2~3くらい
iPhoneX
OS Browser WebGL C# C++
iOS 11 Safari 4.67

WebGLに比べてネイティブアプリは1.5倍〜2倍程度速いことがわかりました。また、ブラウザ別では、Chromeに比べてFireFoxの方が1.1〜1.5倍程度速いです。SafariもFireFox程度の速度が出ていることがわかりました。
8/22修正:WebGLだけ両面描画するようになってしまっていたため、裏面を描画しないように修正して再計測しました。なんと、WindowsのChromeでWebGLがネイティブアプリを凌駕しています。これは例外としても、WebGLはネイティブアプリに比べて同等~最大で30%程度劣るパフォーマンスとなりました。まずまずの結果で十分実用になるパフォーマンスです。

ブラウザ別では、SafariがChromeやFirefoxに対して半分未満のFPSという結果となりました。ただ、iPhoneXのSafariはMacのFPSを超えており、これはMacのSafariに何か問題があるのか、iPhoneXがすごいのか、どちらかは分かりませんが、いずれにしてもスマホでもある程度のパフォーマンスがでるようです。iOSでChromeやFireFoxの測定をしていませんが、レンダリングエンジンの制約があるため、iOS上でブラウザ間のパフォーマンスにはあまり差が無い筈です。

iPhoneやMacを使ってる人は、あまりブラウザを標準のSafariから変えない傾向があると考えます。Windows使ってる人は、標準以外のブラウザを使う人が多いですね!

以上から、WebGLでアプリを開発した場合、Ubuntu/Win用にChromeもしくはFireFoxを、Mac/iPhone用にSafariをサポートすれば良さそうです。

独創アプリ開発日記 297-310日目 WebGLで自由になろう

前回の投稿でappleを褒めていて何ですが、また、個人的にiPhoneは好きなのですが、流石にちょっと最近はappleのアプリ開発者に対する扱いのずさんな面に目を瞑ることが出来なくなって来ました。

その具体的な内容として、

・64bit移行時の32bitアプリ切り捨て
・バージョンアップに伴うObjective-CやSwiftの頻繁な仕様変更
・OpenGL切り捨て予告

・ギャンブル系アプリ(個人開発者だけ。大手はスルー)の予告なしの販売停止

等があります。もちろん、より良いアプリ市場となるようなappleの方針が元となっており、ユーザー目線が理由ではあるのですが、これらの対応が、開発者(主に私)の信頼を失ってしまう後戻り出来ない一線を超えてしまったように思います。

そこで、開発の軸足をiPhoneアプリから外すことにしました。

なお、Androidは嫌い(何となく)なので、WebGLを使って、ブラウザベースでマルチプラットフォームアプリを開発できないか考えることとしました。

はい、と言うわけで最近C#(OpenTK)c++で作成していたマルチプラットフォーム対応のOpenGLでの立方体描画コードをWebGLに移植しました。

このリンクから、WebGLが実際に動作するページに飛ぶことができます。飛んだ先はもう、そこはかとなくたくさんの立方体がくるくる回ってますよ。

ページ下部のx, y, z の数字を変えて「apply」を押すと、描画する立方体の数を変更することができます。あまりにたくさんの立方体を表示しようとすると、生半可なスペックのPCではブラウザが重くなったり固まったりすると思うので注意して下さいね。

次回は、各OS各ブラウザでベンチマーク(FPS)を取って見たいと思います。ネイティブアプリも比較対象として測定する予定です。

独創アプリ開発日記 284-296日目 アップルのユーザー目線

・・・iOS12ではOpenGLが非推奨となるようです。

アップルの言うOpenGL非推奨というのは、アップルの本音を分かりやすく言うと

「メタル使えやコラ。Metal使えやコラ。せっかく用意したんやから、めぇたぁるぅ、使えやゴルァ!OpenGLは無駄がおおいねん。最適化されてないねん。おいらのiPhoneやMacのバッテリー無駄食いするねんゴルァ!」

という意味です。

Metal(メタル)はアップルのオペレーティングシステム上でサポートされる、オーバーヘッドの小さいローレベル (low level) なコンピュータグラフィックスAPIで、iOSやmacOSに特化している代わりに速くてしかも省エネの3D描画の仕組みです。

OpenGLが使えなくなるのは、開発者から大顰蹙(ひんしゅく)を買っています。OpenGLとは、Win/Mac/Linux全て共通で利用できるAPIです。これがiOS/macOSで使えなくなったら、OpenGLに加えてMetalのコードも開発/維持していかなければなりません。大企業ならともかく、中小や個人開発者にとって開発リソースの増大は死活問題です。

開発者の苦労など微塵も考えて居ません。でもそこがアップルの良いところです。ユーザー目線なのです。

ユーザーからしてみれば、自分の使っていない機器まで考慮した汎用性のために、バッテリーの持ちが悪くなってはたまったものではないのです。

なお、MSはその逆です。Windows10に見られる自社都合でユーザー目線度外視のその姿勢は、今後永久にユーザーの信頼を取り戻すことはないでしょう。強制アップデートとかedge強制とか、ユーザーの皆さん、なめられてるんですよ。

・・・え?Windowsのシェアそんなに落ちてないって?みんな使ってるから惰性でみんなつられて使ってるだけだよ!

少なくとも私は信頼してないし!この信頼していないよ感を生涯周りに出しつづけるつもりだよ!影響力ないかもしれないけど・・・

・・・うん。こんなブログで書いてても影響力全くないな。早く次のアプリ開発しよっと。