「今日は面白いのに話題になっていないよね、というHTML5のマニアックなAPIを紹介しようと思う」。冒頭でこう切り出して始まった羽田野太巳氏のセッション。テーマは「ようこそ、HTML裏APIの世界へ」。
HTML5のAPIはモテ系だけじゃない。非モテ系にも注目!
現在、HTML5の世界で世間の注目を集めているのはCanvasやWebGL、WebRTCなどのモテ系APIである。五感に訴えられる、派手で華やかなデモが作れるので仕事に結びつきやすい技術だ。「仕事に結びつきやすい」ことからモテ系と呼ばれているが、羽田野氏が紹介するのは非モテ系のAPI。
「語れる開発者仲間が少ないし、使ってもすごさがわからない。仕事になるかわからない。未熟なので仕様がなくなるかもしれない。でもいつか報われる日がくるんじゃないかと期待できる。そんな今はAPIを紹介する。ただ、さっきもいったようにハッピーエンドは期待をしないでほしい(笑)」
マニアレベル1「割とモテ系」の4つのAPI
羽田野氏は非モテ系APIをそのマニアック度から4つのレベルに分けて紹介。最初に取り上げたのはマニアレベル1(割とモテ系)のWebRTC DTMF(Dual-Tone Multi-Frequency)である。
WebRTC DTMFはいわばSkypeをブラウザで実現するためのAPIで、最大の特徴は映像、音声、データをP2Pで接続できること。IP電話の知識が必要になるため、「マニア心を揺さぶられる」(羽田野氏)という。「ダイヤルトーン音を発生させるできるため、自動音声装置(IVR)への応用が期待できる。
また将来的にはブラウザからコールセンターへ通話ができるようになるかも」と、ビジネス的にも注目されているAPIだという。実際にダイヤルトーン発信のデモを実施し、その実力を披露した。
次に紹介したのは「WebAudio API」。「音源の生成や合成ができるAPI。iOSなどで複数音源の同時再生に重宝する。高精度な再生タイミングが設定できるので、ゲーム系コンテンツにいい」と羽田野氏は説明する。
またこのAPIを使えば楽器のチューナーなど精度が求められるものには向いていないが、各種オーディオエフェクトやアナライザーなども作れるという。ただ「これはまだモテ系の機能。非モテ系の機能もある」と語り、非モテ系の機能の中からPannerNodeを使った立体音響のデモを実施。救急車のピーポー音のドップラー効果の例を再現。「仕事になるかどうかはわからないが」と言うものの、参加者の関心を大いにつかんだようだ。
三番目に紹介したのは「Media Souce Extensions(MSE)」で、「Internet Explorer(IE)11にしか実装されていない」APIです(もしかしたらChromeにも入っているかもしれないが試していないとのこと)。IEではMPEG-DASH(Dynamic Adaptive Streaming over HTTP)という国際標準のメディア・ストリーミングのプロトコルをサポートしている。
同APIの特徴は、HTTPアダプティブストリーミング配信。セグメントに分割されたビデオデータをVideo要素に流し込むだけのAPIで、低ビッドレートのストリーミングに途中で切り替えられるというもの。
「ファイルを取りに行くコードを一つ一つプログラマが書かなければならないなど、気が利かないAPI。プレイヤーを作るのは、プログラマの腕にかかっているので要注意。仕事にはならないAPIだが、チャレンジしたい人はぜひ」と羽田野氏と会場の笑いを誘った。さらにマニアレベル1では「Media Capture and Streams」も紹介。
これはChromeのみに実装されているAPIで、全画面がキャプチャーできるというもの。しかし「Windows上で実行するとOSが引きずられ大変なことになるので、今回はMacで紹介」と、Macでデモを実施。いろんなユースケースが考えられると、羽田野氏がその一例としてあげたのが、デジタルサイネージのリモート監視やヘルプデスク。「ビジネスにも応用できそうな面白いAPI」(羽田野氏)
縁の下の力持ち系。マニアレベル2のAPI
マニアレベル2(縁の下の力持ち系。目立たないので話題になっていない)で羽田野氏が取り上げたのは、「Encording」「Web Cryptography API」「DOMMatrix」「Transferable objects」という4つのAPI。「Encording」はブラウザに入っているAPIで、文字コードのデコード、エンコードに使えるAPI。
「Web Cryptography API」はIE11に実装されている、暗号論的擬似乱数列の生成やダイジェストの生成、公開鍵と秘密鍵の生成、デジタル署名の生成と照合、データの暗号化と複合化などの機能を持つAPIである。
「将来、ストレージに溜めたデータを暗号化したいというニーズはきっと出てくる。このAPIは単独で使えるのでそのときの有望株になるのでは」
ただ、暗号化の知識がないと使えないので、ハードルは高いAPIだそう。「DOMMatrix」は行列計算やグラフィックスにおける座標変換のためのAPI。元はCSSMatrixという名称だったとのこと。「Transferable objects」はデータ転送の機能を持つAPI。参加者で知っている人はたった一人というかなりマニアックなAPI。「ファイルサイズの大きい動画のリアルタイム処理などをするときに使うと有効だと思う」
「使い方がわからない」マニアレベル3のAPI
マニアレベル3とは、「きっとどこかに必要とする人がいるのだろうでも使い方がわからないというAPI。そこで羽田野氏が紹介したのは、「Clipboard API」と「Base64 utility methods」。
前者の「Clipboard API」はどんなものがペーストされたかが、リアルタイムで情報が取れるAPI。すべてのブラウザで実装していますが、「Web上でやる意味がいまひとつわからない。もちろん使ったこともありません」とのこと。
また「Base64 utility methods」はBase64エンコードとデコードの機能を持つAPI。ただ対応しているのはASCII文字だけで、バイナリーどころか日本語もNGとのこと。「利用シーンはまったく思い浮かばない。マニアの皆さんに考えていただきたい」と羽田野氏は参加者に呼びかけていた。
「きっといつかはモテ系に…」なマニアレベル4のAPI
マニアレベル4とは「きっといつかはモテ系APIになるだろう。でも利用できるブラウザが……」というレベルのもの。最初に紹介したのは「Screen Orientation」。これはAndroidやFirefox OSのFirefoxにしか実装されていないAPIで、オリエンテーションを固定できる機能を持っています。ただFullScreen APIを使ってフルスクリーンになっている状態でしか、使えません。「脱アップルストアを目指している人には魅力的なAPIでしょう」
「MediaStream Recoding」はFirefox Aurora(現在は音声のみ)しかサポートしていませんが、録画と録音機能を持つAPI。メディアストリームの記録を開始してから停止するまでの間に蓄積されたメディアデータをBlobオブジェクトとして取り出すことができる。 「Webアプリケーションの可能性を開くことが期待できるAPIだ」
最後に羽田野氏が紹介したのが「Web Animations 1.0」というタイムライン制御フレームワーク。連続処理や並列処理ができ、ビデオ再生のように扱えるというのが特徴だ。ただ「欠点は実装しているブラウザがまだ一つもないこと」と羽田野氏(Githubにて公開されているポリフィルがあるので紹介)。
「Githubではポリフィルが公開されており、私はそれを仕事で使っています。パフォーマンスも悪くない。もっと広まってほしいAPIです」 このようにマニア度の高いAPIを15個ほど駆け足で紹介し、羽田野氏のセッションは終了した。
(レポート:中村仁美/撮影:若狭一正)
【講演資料・セッション映像】