2013年12月31日火曜日

ChromeにおけるWeb MIDI APIの実装状況

2013もそろそろ終わりって事で今年色々と動きはじめたWeb MIDI APIの実装状況について簡単にまとめておきたいと思います。会社の方針とかそういう話ではなく、担当者として客観的事実の報告です。

ChromeではMac版のみで実装を進めてきました。最初の実装という事で、実装から仕様へのフィードバック、上位仕様とのすり合わせなどで仕様変更が伴います。全OSの対応を同時に進めると、イテレーションのコストが大きくなってしまうためです。

Chrome 30からchrome://flags#enable-web-midiが登場しました。この時点ではMacで入力ポートのみ動作していました。ただし、SysExメッセージ入力にバグがあり、このバグはChrome 32まで残っています。

Chrome 31で入出力ひと通りの機能が揃い、SysExメッセージ利用許可を求めるUI、設定などが入りました。Chrome的に言うとContent Settingsという仕組みの中に統合しています。

Chrome 32ではIAC Driver経由で外部ソフトウェア(音源)と連携できるようになりました。

Chrome 33からはいよいよWindows版でも動くようになりました。Timestampが異常値を返すバグがあるのですが、基本的な機能は動作するはずです。TimestampのバグはChrome 34で修正されています。

さて、ここまではリリース済み、またはブランチカット済みのバージョンの話でした。ここから先は予定の話になるので確約はできないことをご了承ください。現在、開発中の最新バージョンはChrome 34です。以下はChrome 34に向けて実装を始めている項目です。

  • Promise
    • 今まではthen()しか使えない限定的なWeb MIDI専用のPromiseもどきを返していました。Chrome 32から本物のPromiseが有効になるため、本物のPromiseに移行します。
  • Chrome OS / Linux
  • Android
    • いずれのプラットフォームでもラフな実装を終え、レビューを回している段階です。
これ以外に直近で計画しているのは

  • 入出力デバイスを列挙するAPIが変更になっており、その対応
  • デバイスの動的な追加・削除のイベント通知
ですが、詳細なスケジュールについては調整中です。対応プラットフォームの拡大も含め、いずれもデバイスの動的な追加・削除を実現するため仕組みを、すべてのプラットフォーム上で無理なく実装するための取り組みです。

という事で、仕様も実装も完全に安定したわけではありませんが、興味ある方はぜひ使ってみてください。また、不審な点に気づいた場合には私までご一報ください。

という事で、良いお年を!