PNaClとasm.jsの最近について喋ってきました(Code Lunch)

2014年3月15日土曜日

ある休日の昼下がり、@h13i32maru @iizukak 両氏のやっているCode Lunchというpodcastにお邪魔してきました。


収録機材はガチなマイク(すごい迫力)とMacのGarageBandでした

Code Lunch自体を簡単に紹介すると、Web周辺の技術について毎回トピックを決めて30-40分ほど喋るというもので、http://rebuild.fm/ にインスパイアされて始めたそうです。今回で4回目。

今回の内容は、次世代Web技術のひとつとして注目を集めつつあるPNaClとasm.jsについて、以前SlideShareで公開した社内ミーティング用資料


と、@mhidakaasm.jsとかPNaClとかLLVMに興味あったので調べて回ったら少しだけ理解できた話 を下敷きにしつつ、その後に調べを進めた結果見えてきたものなどを盛り込んでいます。

Vol.4 2014/03/15 PNaClとasm.js からお聞き頂けますので、通勤のお供などにいかがでしょうか。


内容の訂正など:
作業BGM的に聞いてくれた @vvakame から指摘をもらいました。
Q「あるコードがasm.js向けの最適化が効いた状態で動いてるかどうかはどうやって分かるの?」
A「なかった気がする。Firefoxだとデバッグオプションからasm.jsを無効化してみて速度変わるかで分かるんでは」
という話をしていた部分ですが、正しくは「Firefoxだとasm.js向け最適化コンパイルをするとか、失敗したので通常の実行へフォールバックするとかはコンソールに出るよ」ということでした。
確かに出てますね(Firefox 27.0.1で確認)。すっかり失念していました。
指摘ありがとうございます。

---

せっかくなのでこぼれ話をいくつか。

話の中で、某社のPlaygroundというオープンソースのゲームエンジン(https://github.com/KLab/PlaygroundOSS)をasm.js化してみた(けど途中で時間切れ)というくだりがあるのですが、失敗のままでは悔しいので引き続き作業をおこなって本家へコントリビュートしたいと考えています。
EpicとMozillaが共同でUnreal Engine 4をWebにポート, Webゲームの高速化いよいよ本番 といった記事もあり、いよいよasm.jsベースの処理系とネイティブの処理系での速度差が詰まってきている昨今です。やはりゲームエンジン丸ごとをWebへ持っていける可能性というのは大変面白いものです。

ところで、前回の(冒頭で紹介した)SlideShareの資料ではPNaClとasm.jsを同列に扱い、とりわけC/C++のマルチスレッド処理をそのままWebへ持って行くことのできるPNaClをメインとして扱っていました。
しかし、今回のpodcastをお聞き頂くと分かるように、現状の有力さでは圧倒的にasm.jsのほうが上との認識へ至っています。

podcast内では主な理由としてコア技術面でNaCl/PNaClをAndroid上で利用できるまでの道のりが遠いことを挙げていましたが、これに加えてコミュニティの盛り上がり(熱量)、広報などいくつかの面でasm.jsがかなり先行している印象です。

asm.js/emscriptenでは、ツールセットの改善やテスト用プロジェクトの充実にかなりの力がかけられています。とりわけ「普通に書かれたC++のコードをなるべく苦労なくWebに親和性高く変換する」ための工夫が多く盛り込まれており、これらに対してコントリビュートするコミュニティの熱量もかなり大きいと感じます。

一方のPNaClでは、今のところGoogle社内の優先度付によってプロジェクトを進行していく以上のものが特にありません。「次の大きなリリースまでひとまず様子見」としている開発者が多いように感じます。Google I/O 2014あたりが節目でしょうか。

このあたりは、近々もう一度資料にまとめて公開できればと考えています。

そうそう、冒頭写真のガチマイクについてもひとこと。私は普段結構ぼそぼそと喋ってしまうのでマイクで拾いづらい(声を張れって話ですが)のですが、さすが良いマイク、いい感じに拾ってくれているようでした。

さて、次回のCode LunchではPNaClでもasm.jsでも(そして最近ではAndroidのARTでも)使われているホットな技術、LLVMについてのトークを聞けるとのことです。楽しみですね!


ケーキと紅茶を頂きつつまったりと喋ってる図



2 件のコメント:

  1. 最近スレッド間でメモリ共有するためのAPIがFirefox Nightlyに入りました
    https://bugzilla.mozilla.org/show_bug.cgi?id=933001

    Googleも別のAPIを実装しようとしているようです
    https://chromiumcodereview.appspot.com/149053009/

    返信削除
  2. おおっ、ありがとうございます!

    返信削除