2001年 7月 2日から、社団法人日本音楽著作権協会 JASRAC は、 非商用の個人のホームページに BGM として音楽を掲載するための 公式な手続きを開始した。
ホームページに掲載できる音楽は、ストリーム形式と呼ばれるもので、 ネットワークにつながっている状態でしか聞けないものに 限定されている。また、JASRAC は、曲の著作権は管理しているが、 著作隣接権は管理していないため、市販の CD(原版権のあるもの) から作成した MP3 などのファイルを掲載することは、著作隣接権を もっている者に別途許諾をもらう必要がある。楽譜・歌詞、着信メロ ディの入力記号、ジャケット、アーティストの写真を掲載するときも、 別途許諾をもらう必要がある。
以上から、「この曲が好きなんです」というホームページを簡単に 作ることは、相変わらず難しいようだ。
JASRAC のホームページを見る限り、CD から MP3 を作ることは できないので、最も現実的な BGM の作成方法は、MIDI を自作する 方法だと思う。または、コピーバンドで自演して録音する。ただし、 それでも、原曲のイメージを崩さないようにする必要があるという。
ファイル形式は、RealAudio, MidRadio, Quick Time, Windows Media Technologies などのストリーム配信によるものか、BGSOUND や EMBED タグを使った MIDI, MP3。しかし、MIDI や MP3 は、 キャッシュに入ってしまい、複製ができてしまうため、「暫定的」に ストリーム形式として認めている。
JASRAC に支払う使用料は、1曲につき年額1,200円。曲の入れ替え は可能で、ダウンロード数やページビュー数にはよらない。100曲 以上や商用の場合は、使用料や手続きがまた異なる。手続きは、 J-TAKTという24時間申込の開始ができるオンラインの窓口を用意 している。ただし、最終的には、書類や捺印が必要。手続きが完了 すれば、電子透かしの技術の入った許諾マークをホームページに 貼ることになる。JASRACが著作権を管理している曲かどうかは、 JASRACホームページの楽曲DB検索で確認できる。
JASRAC がインターネットの世界に、音楽を豊かにしていく方向に 向かっていることと、現実的な手続き方法を開始したことは、 非常にすばらしいことだと思う。しかし、現在の市販の曲は、 曲の著作者だけのものではない。CD を作成する人や、ジャケットを 作成する人、プロモーション活動をする人など、著作隣接権が 非常に広く渡っている。そのため、JASRAC だけでは手におえないという。
「この曲が好きなんです」というホームページを簡単に作る方法は、 (相変わらず)公式にサンプルを配信しているページへ、リンクを 張ることだろう。(リンクの条件を守る必要もあるが)
ここで、多少強引にソフトウェアの話に移るが、著作権のある プログラム(ソース、DLL)を流用したプログラムを公開するときは、 著作者に許諾を頂く必要がある。JASRAC のような窓口はないので、 1つ1つに許諾を頂く必要がある。オープンソースでは、その必要が ないため、商用ソフトウェアよりもその点で開発に有利である。 もし、音楽配信で、許諾手続きを簡単にするビジネスモデルが完成 したら、商用ソフトウェアでも使われるようになり、オープンソース に負けないスピードで開発が進むだろう。
2001年 7月 16日、Internet Watch で、 「ネット時代の一大プログラミング環境構築を目指す「dLoo」 プロジェクト」という題目で Blue Box の記事が掲載された。
Blue Box は、簡単に言えば、どんな言語でもコンパイルできる 環境である。HTML ページをダウンロードして表示するように、 プログラム・ソースをダウンロードして実行するのだが、 コンパイル(インタプリト)に必要なデータ(Words)も 一緒にダウンロードするため、どの言語でかかれたプログラムも 動作するという。コンテンツを表示するためにプラグインを ダウンロードするのと同じようなことだ。
ダウンロードしたファイルを見る限り、現在、Linux のみ 対応しているようだ。
コンパイラをダウンロードすると言ってしまうと、 プラグインと全く同じ仕組みでできるのだが、 Blue Box は、もっと高尚(こうしょう)なことをしようとしている。 それは、Word Oriented Programing というものだ。 Word Oriented Programing は、任意のプログラム言語を コンパイルできるようにする方法として、プログラミング言語を 構成する「語」を構成要素の基本とすることをさすようだ。
現在のプログラミングの主流は、データと手続きをカプセル化して オブジェクトを基本にした設計を行う、オブジェクト指向になっていて、 英語で書けば、Object Oriented Programing となる。 これにならって、〜 Oriented Programing という表現が よく用いられるが、Blue Box では、Word Oriented Programing を 主張している。言葉は似ているが、オブジェクト指向と視点が異なるため 同じ基準で比較できるものではない。
Word Oriented Programing は、実際に使われるようになるには、 まだまだクリアしなければならない問題が多いと思われる。 以下に私が予想する問題点を挙げる。
Blue Box には、まだ問題が多いが、プロジェクトの設計思想は 独特のものがあるので、そこで生まれた成果は、 さまざまな場面で生かされる可能性をもっている。 ソフトウェア設計者には、注目しておきたいプロジェクトだろう。
2001年 7月 12日、京セラ、シャープ、日本ビクター、英Tao Group社の4社は 特定のハードウェアや OSに依存しないアプリケーションやインターネット コンテンツが実行できるプラットフォームの仕様の策定、普及・啓蒙を 目的とした“オープン・コンテンツ・プラットフォーム協議会 (OCPA:Open Contents Platform Association)”を9月に設立すると発表した。 特定のハードや OSに依存しないプラットフォームの代表といえば、 Java がある。今回の発表では、英Tao Group社の intent が、 Java の仮想マシンだけでなく、C/C++ の仮想マシンとなり、 各種プラットフォームの違いを吸収する。
特定の〜に依存しない、というのは、よく聞かれるアピールポイントだ。 今回は、この言葉の本当の意味について考えてみよう。 特定の〜に依存しないという言葉をそのとおりにとれば、 どんなハードウェアやプラットフォームでも動くということだ。 しかし、それは本当に可能なことなのだろうか? 初期の Java の設計思想にあったものは、どの組み込み機器の上でも 動くということであった。しかし、Java 対応のブラウザが登場するまで 使えなかったりした。最近では、ようやく iモードの携帯電話に Java が使えるようになった。 これらの歴史から分かるように、特定の〜に依存しないものには、 依存しないための仕組み(プログラム)が必要だということだ。 つまり、「完全に〜に依存しない」もしくは「完全に汎用である」 ということはありえないのである。
では、特定の〜に依存しない、と言えるものは、どんなものであろうか。 Java の場合、はじめは、Sun の Java 開発チームが開発した、 実験室レベルの組み込み機器と、HotJava というブラウザしか 対応していなかった。しかし、特定のプラットフォームに依存しない ということをうたい文句にしていた。それは、Java のプラットフォーム である JavaVM(スタックマシンと呼ばれていた)の仕様をきちんと 定義していたために、汎用という言葉に説得力があったのである。 その後、Netscape や Internet Explorer や携帯電話に採用されて 本当に汎用になっていったのである。
一方、多くのプラットフォームでサポートされているにもかかわらず、 汎用であるとうたっていないものもある。たとえば、ワードや エクセルといった Microsoft Office の文章である。 いまや、エクセルのデータは、Windows や Windows CE だけでなく、 マックや Palm やザウルスでも見ることができる。 エクセル形式のレポートを出力するソフトウェアもある。 しかし、汎用であるとうたってはいない。 その代わり、スタンダード(標準)ではあるとは言えるだろう。
汎用と標準の違いは、もしかすると主観的なものなのかもしれない。
さて、今回 OCPA から発表された intent は、客観的に見てどれだけ 「特定のハードウェアやプラットフォームに依存しない」のだろうか。 intent は、仮想プロセッサー(VP:Virtual Processor)による アプリケーション実行環境を提供するため、実行ファイルを そのまま別のプラットフォームに持っていくことができるようだ。 少なくとも、WindowsCE や UNIX のように、〜用の実行ファイルが 別々になっていたり、再コンパイルをする必要は無さそうだ。 intent が、現在サポートする CPU は、ARM6/7/9、humb、StrongARM、 ColdFire、M-CORE、SH3/4、PowerPC、Tx86、R3000/4000/5000、V850。 サポートする(ホストとなる)OSは、EPOC、Linux、ITRON、QNX4、OS-9000、 VxWorks、Windows 95/98、Windows NT/2000、Windows CE と、 ほとんどのプラットフォームに対応している。 もし、これらのプラットフォームで不具合なく動くようであれば、 かなり期待ができそうだ。 もしかすると、携帯でダウンロードしたゲームが、パソコンはもちろん、 カーナビや電子レンジでも遊べるようになるのかもしれない。
しかし、現実には、もっと難しいだろう。現在、Java は、携帯電話でも 使えるようになっているが、すべての Java アプリケーションが 動くわけではない。なぜなら、携帯電話に載っているのは、 Embedded Java という Java のサブセット(一部)だからだ。 Java のフルセットには、ウィンドウの操作なども含まれているが、 携帯電話にそのような機能は必要ないので、カットされている。 もし、Java アプリケーションにウィンドウの操作が含まれていたら、 動作しないか、おかしな動作をすることになるだろう。 分かりやすい例でいえば、スピーカーがないのに音は鳴らせない、 ネットワーク・ケーブルや無線がつながらなければ、 インターネットはできないのである。 つまり、Java 自体が汎用的であっても、そのプログラムが操作する 対象となるものが無ければ使えないのである。いくら汎用的であっても、 そのプラットフォームが持っている装置によって制限を受けてしまうのだ。
残念ながら、「〜用アプリケーション」という表現は、遠い将来になっても 無くならないだろう。
[→ back number] |
2001年 6月 18日、GNU の C 言語コンパイラ GCC ver3.0 が発表された。 GCC 3.0 では、IA-64(Intel の 64bit アーキテクチャ)の出力をサポートし、 C 言語の新仕様 ISO C99 をサポートした。 GNU の Java コンパイラ GCJ は、Sun の picoJava プロセッサの 出力をサポートした。その他、数多くのバグを修正している。
GNU は Gnu is Not Unix の略で、「グニュー」と読む。 GNU は、FSF(Free Software Foundation) というフリーソフトを 開発する団体の1つのチームで、 フリーのプログラミング言語コンパイラを開発している。 これまでに、入力は、C 言語、C++ 言語、Java 言語に対応してきた。 出力は、Intel x86、PowerPC、Motorola、ARM、MIPS、SH などに対応してきた。 今回、メジャーバージョンが 2 から 3 になり、9年ぶりに メジャーバージョンアップがなされた。
IA-64 は、Intel 製の次世代の 64ビット・プロセッサの アーキテクチャ(設計タイプ)の総称で、最初の製品として 「Itanium(アイタニアム)」がある。Itanium 対応の OS は、ヒューレット・パッカード社の UNIX「hp-ux11i」や、 IA-64 Linux や、64ビット版 Windows がある。 マシンは、NEC、日立、富士通などから サーバや高性能ワークステーションが製品化されている。 EPIC(Explicitly Parallel Instruction Computing: 明示的並列命令コンピュータ技術)を搭載しており、 コンパイラによってスケジューリングされた並列実行を させることができ、クロックあたりの計算量が多い。
ISO C99 は、使いやすく若干の改良を行った C 言語の ISO 標準。 インライン関数、_Bool 型、restrict ポインタ、// コメント、 可変長マクロ引数、UNICODE 文字コード、可変長 auto 配列変数、 long long int 型(64bit整数)、__func__ マクロ、 for ループ内ローカル変数、などがある。 個人的には、可変長マクロ引数と __func__ マクロが 非常にありがたい。可変長マクロ引数が無かったときは、 PRINT_1( a ), PRINT_2( a, b ) のように マクロ名に引数の数を入れなければならなかったし、 それだけ #define 文を書かなければならなかった。 __func__ マクロが無かったときは、デバッグ用のマクロに、 FUNC_START( func )、FUNC_END( func ) のように 関数名を引数に指定しなければならなかった。 これらのサポートにより、デバッグ系のマクロが非常に 使いやすく(作りやすく)なる。
C99 は、早く Microsoft や Borland 社のコンパイラが対応して、 デファクトスタンダードになって欲しいものだ。 しかし、現在 C 言語が最も使われているのは、組み込み機器を ターゲットとした分野である。つまり、NEC 製や日立製といった メーカーが開発した、あまりメジャーではないコンパイラが 使われているのである。また、Green Hill や Code Warrior といった 組み込み機器の分野ではメジャーなコンパイラもある。 ここまで普及して初めて、新しい C 言語が安心して 使えるようになるだろう。C 言語の特徴は、仕様がシンプルであるだけでなく、 最も多くのプラットフォーム(出力)をサポートしていることである。 つまり、一度書いてしまえば、どのプラットフォームでも動くプログラムに なるということである。 C99 がそこまで汎用的にならなければ、C 言語とは言えないのかも知れない。 Java や C# 言語を使ったほうがまだマシというわけだ。
将来の C言語の仕様は、IA-64 の EPIC に対応した仕様が現れるかもしれない。 コンパイラに並列実行をスケジューリングするより、 人間がスケジューリングしたほうがいいことが多いからだ。 現に、DSP(Digital Signal Processor、画像処理など特定の処理を 並列処理できるプロセッサ)のプログラミングでは、 人間が明示的にスケジューリングできるような言語になっている。 EPIC に対応していないプロセッサでは、 EPIC 形式で記述された命令を、単位順次実行すればいいので、 汎用的な言語になるだろう。
2001年 6月 27日、(株)ヤッパは、イスラエルのMonfort社が開発した技術、 特別なプラグインソフトを必要とせずに、 3D オブジェクトを表示できる技術を発表した。
3D オブジェクトを回転・拡大・縮小して確認する技術は、 特に目新しいものではない。オンライン・ショップ(E コマースサイト)や、 3D グラフィックスを研究しているページでは、 かなり前から同じ技術を公開している。
しかし、3D オブジェクトを表示するには、比較的 CPU パワーやグラフィックス・アクセラレーションが 必要とされているため、特別なプラグインソフトを インストールする必要があった。たとえば、CosmoPlayer や PowerSketch/Viewer などがある。
今回発表された技術は、特別なプラグインを必要としないし、 ブラウザを拡張するわけでもない。しかも、 新しい技術を使っているわけでもない。
それは、Java(applet) を使っているのである。 Java は Java VM(Virtual Machine) の上で動くプログラムのことで、 どの OS であっても動くという特徴をもっている。 つまり、特別なプラグインを必要としないで、 3D のビューアを作ることもできるということだ。 (ただし、Java 対応の i モード携帯では、ビューア・プログラム 部分のサイズが大きいため不可能と思われる)
Java は動きが遅いというのが一般的な認識だが、 画面サイズ 410x275、テクスチャマッピングありで、 処理速度は、Crusoe 600MHz で 3〜6FPS(1秒あたりのフレーム数) を実現している。3D ゲームには向かないが、 テレビでよく見かける、家のデザインをバーチャル・リアリティで 見るといったことが手持ちのブラウザでできる。
ヤッパ社は、Monfort社の 3DAnywhere Designer toolkit というツールを 使ってデザインしているようだ。そのため、その技術を売り込むということは、 商売に考えていないようだ。 お客様の利便性を第一に考えるオンラインショップをターゲットに、 プラグインを必要としない 3D データを製作することで、 利益を上げようとしているようだ。 超高速な 3D グラフィックスがなくても、 プラグインを必要としない利便性がよいという特徴が、 オンラインショップのニーズにマッチして、これが、 将来ビジネスが成功していく自信になっていると考えられる。 3D グラフィックスの技術よりも、3D デザイン・ソフトを 使いこなす技術が重要になるだろう。
実際使ってみると、ビューアの画面が小さいのが気になった。 また、3D CAD ソフトなどを使ったことがない一般の顧客が、 3D オブジェクトを見たい位置に操作することは、少しつらいものがあった。 しかし、テクスチャマッピングによりきれいな画像が得られるため、 購買意欲をそそるには一役買っているだろう。 まさに、デザイナーの勝負である。