最近,Webプログラミングに関連して「マッシュアップ」という言葉をよく耳にする。マッシュアップとは,複数のWebサービスAPIを組み合わせて新しいサービス(Webアプリケーション)を創り出す手法のことである。例えば,リクルートとサン・マイクロシステムズは昨年,マッシュアップの開発者向けコンテスト「Mash up Award」を開催。引き続き今年も,利用できるWebサービスAPIの種類を増やして規模を拡大した「Mash up Award 2nd」を実施している(締め切りは2007年3月12日)。

 このマッシュアップという言葉,元々は音楽用語で「2つ(ないし複数)の曲を一つの曲に合成する音楽製作手法の一つ」(フリー百科事典「ウィキペディア(Wikipedia)」より)だという。複数のWebサービスAPIをプログラミングによって組み合わせて,一つの新しいサービスを創り出すというプロセスが似ていることから付けられたのだろう。

 プログラミングと音楽製作の類似点を指摘する文章としては,Derek Silver氏による「Programming is like Songwriting」(yomoyomo氏による日本語訳は「プログラミングはソングライティングに似ている」)がよく知られている。元ミュージシャンであるSilver氏は,プログラミングとソングライティング(楽曲製作)の類似点をいくつもリストアップしている。筆者はミュージシャンでもプログラマでもないが,マッシュアップに絡んでここに一つ,追加させていただきたいと思う。それは「プログラミングにおけるパラダイムの変遷が,楽曲製作(特に電子音楽)のプロセスの変遷に似ているのではないか」ということだ。

 まずは昔の,プログラミング言語のソースコードを一から記述してアプリケーションを開発する手法。これは,多数の端子やつまみを備えたシンセサイザーなどで,端子間をケーブルで接続して一から音色を作成する楽曲製作スタイルに似ている。

 続いて,プログラミング言語において,よく使われる機能などをライブラリとして整備されるようになった状況。これは,音色(を構成する各種パラメータ)をメモリーする機能を備えたシンセサイザーが登場し,以前に作った音色を再使用したり,他から提供を受けるようになった状況に近い。ただし,この時代に提供されていた音色で「そのまま」使えるようなものは少なく,多くの場合,音色を使う人がパラメータをいじって修正しなければならなかった。これは,プログラミングでライブラリを使うときに,用途に応じてライブラリの中身のコードを修正することに似ている。

 そして現在,プログラミングでは「コンポーネント指向」が主流だ。まとまった機能を提供する「ソフトウエア部品(コンポーネント)」を組み合わせて,アプリケーションを開発する手法である。一方,音楽製作では,サンプリング系の「そのまま使える」ような音源が主流になり,楽曲製作者は音色を作る代わりに,提供されている音色から必要なものを選んで,組み合わせて利用している。この場合,音色がコンポーネントに該当する。


図1●音楽製作ソフトの画面。フレーズを選んで貼り付けていく
[画像のクリックで拡大表示]

図2●アプリケーション開発ツールの画面。ソフトウエア部品を選んで貼り付けていく
[画像のクリックで拡大表示]
 ここまで考えたところで,独立行政法人「情報処理推進機構」「未踏ソフトウェア創造事業」にもテーマが採択されたことがある酒徳峰章氏に話を伺ってみた(酒徳氏は音楽製作用ソフトを開発して無償公開しているほか,自身で楽曲制作もしている)。すると,「クラブ・サウンドやテクノ系では,音色を選ぶのではなくサンプリング素材集からフレーズ単位でチョイスし,選んだ素材を音楽製作ソフトの画面にドラッグ&ドロップでペタリペタリと貼っていくことによって楽曲を制作していく(図1)。これは,アプリケーション開発ツールで,ボタンなどのコンポーネントをフォームに貼り付けていく(図2)のにそっくりだ」との指摘をいただいた。

 なるほど,コンポーネントの“粒度”が「音色」から「フレーズ」へと大きくなった格好だ。そして,さらに粒度が大きくなると,冒頭に挙げた「マッシュアップ」になるのだろう。もっとも,コンポーネント化が進んでも,良いアプリケーションや良い楽曲を作るためには,技術,アイデア,センスが決め手になることは変わらない。