サイバーエージェントを支える技術者たち

第62回 開発ツールキットやサウンド再生用ライブラリをオープンソースとして公開

この記事を読むのに必要な時間:およそ 3 分

多数の端末で検証済みのオーディオライブラリ「boombox.js」

――boombox.jsの概要を教えてください。

船ヶ山:Webブラウザでサウンドを出力するときに利用する「HTMLAudio」「WebAudio⁠⁠,⁠HTMLVideo」を,統一したインタフェースで利用可能にするライブラリです。最近ではブラウザゲームでもBGMやSEが普通に使われていますが,そのために必要となるAPIの呼び出し方法やブラウザのサポート状況はまちまちなんです。その環境差異を吸収し,ラジカセを操作するイメージで簡単に使えるようにしたのがboombox.js図3です。

図3 boombox.js

図3 boombox.js

boombox.jsは,beezと同様にOSSとしてGitHubで公開されている。Pure JavaScriptとして書かれているため,依存関係などを気にせず使えるのはうれしい

平木:多くの端末で検証していることもboombox.jsの特長です。特にAndroidは数多くの端末があり,しかも日本には固有の端末もあるため,なかなか検証が難しいのが実情です。しかしboombox.jsでは,サイバーエージェントが所有している多数の端末で検証しているため,サウンド周りの検証の負担を軽減できると思います図4⁠。その他ブラウザが非アクティブ状態になると音を停止したり,複数のサウンドを同時に利用するといった細かな機能も提供しています。

図4 boombox.jsのデモページ

図4 boombox.jsのデモページ

手軽に利用できることに加え,サイバーエージェントが所持している多数のデバイスで検証が行われていることも大きな魅力だ

船ヶ山:さらに,社内からオーディオスプライト注1は使えないのかという問い合わせがあったので,最近アップデートを行い,オーディオスプライトをサポートしています。機能的には大分良い感じに仕上がっていると思っていますが,有益な要望があれば追加していきます。それと今後のアップデートという意味では,新しい端末が出た場合の検証や対応も随時行っていく予定です。

注1)
ゲームなどで利用する複数の音を1つのファイルにまとめ,再生時に開始時間と終了時間を指定することにより目的の音だけを出力する手法。個別にファイルを読み込むよりも遅延を軽減できる。

beezとboombox.jsをGitHubで公開した理由

――beezとboombox.jsをOSSとしてGitHubで公開した理由を教えてください。

船ヶ山:前職でも開発したものをOSSで公開したこともあって,もともと抵抗感がなかったんですね。むしろ,出せるものがあれば積極的に出したいと考えていました。それでbeezとboombox.jsは外部に公開しても問題のないものだったので,じゃあOSSとして公開しようということになったんです。

平木:タイミングも良かったんですよね。実は以前までは開発したものをオープンソースとして公開するための明確なルールが社内になく,個別で対応していたんです。ちょうどOSS化するためのルールやフローが整備されたので,それを使ったという形です。

――GitHubで公開して,何か反応はありましたか。

平木:まだそれほど多くありませんが,boombox.jsについて海外の方から英語のドキュメントが欲しいとメッセージをいただきました。もともと日本語のドキュメントしかなかったので,あわてて英語版を作って公開しました。あと意外なところでは,OSSとして公開されているのを社内の別のエンジニアが見つけて,我々に連絡してきたことがありました。

船ヶ山:こういった反応があると公開して良かったなと思いますね。やっぱり使ってもらってフィードバックをいただけると,このあとどのように進化させていくのかを考えるうえでもすごく参考になります。

――beezやboombox.jsで今後取り組みたいことはありますか。

平木:ドキュメント類を充実させていくことです。機能がわかりやすいboombox.jsはドキュメントを書きやすいのですが,beezは難しいですね。実は現在公開しているドキュメントも,書いたりレビューしたりで2~3ヵ月かかっているんですよね。

船ヶ山:ああでもない,こうでもないと,かなり悩みながら作りました。すごく詳しく説明したのに,書き過ぎて意味がわからないと言われて直したり。本当に手間がかかっています。

平木:小さいライブラリであれば簡単な説明だけでも十分なんですが,beezほどの規模ではしっかりしたドキュメントがないと厳しいので,そこはがんばって充実させていきたいと思っているところです。

――beezとboombox.jsのそれぞれについて,利用上のアドバイスがあれば教えてください。

平木:beezについて言えば,サイバーエージェントのWebアプリケーション開発のフローに即したベストな解を盛り込んでいます。その意味で,ユーザのニーズが我々のものと近く,beezの考え方に共感していただけるのであれば有効なのではないでしょうか。

船ヶ山:beezはWebサーバを組み込んで簡単にテストができるほか,サーバへのアップロードを自動化できるなど,かなり細かい部分まで作り込んであるので,ぜひ活用していただきたいですね。boombox.jsに関してはいろいろな端末で検証していますし,機能もシンプルなので,音源さえあれば気軽に使ってもらえると思います。

――本日はありがとうございました。

著者プロフィール

川添貴生(かわぞえたかお)

株式会社インサイトイメージ代表取締役。企業サイトの構築及び運用支援のほか、エンタープライズ領域を中心に執筆活動を展開している。

メール:mail@insightimage.jp