2009年02月27日

予測できないメソッドライン

年末年始の頃の話ですが、時々電話で連絡を取っている中学の頃の友達と会って話をする機会がありました。その時自分と友達は両方とも自分のパソコンを持ってきていて、それを近所のマクドナルドで開いてお互いに見せ合ったのですが、わたしはMacBookを持って行ったので、そのMacBookにインストールされていたGarageBandを友達に見せることが出来ました。

GarageBandはそもそもが既存のループを組み合わせて曲を作るソフトなのですが、わたしのMacBookに入っているGarageBandにはMagic GarageBandと言う機能があります。(わたしはiBookも持っていてこちらにもGarageBandは入っていますが、こちらはバージョンが古いのでMagic GarageBand機能はありません。)これはステージを模したグラフィカルな画面上で、もともと入っている曲の構成からトラックに組み合わせる楽器をリアルタイムに選んで、試奏させながら曲を作れると言うものです。

せっかくなのでこのMagic GarageBandを友達にやってもらうことにしました。で、私にとってもうれしいことにこれは結構好評で、友達も曲作りを楽しんでくれました。友達が作ってくれたその曲はなかなかイカしていて、バランスがとれた曲だったと思います。

ただ、後日その友達が作った曲をミキシングしてメールに添付して送ったのですが、次会ったときに友達はこんな疑問を言っていました。

「これでほんとに自分で曲を作ったってことになるのかな。」

うーん、そう言われるかもしれないとは思っていました。Magic GarageBandはようは作る人が決められるのは楽器の選択ぐらいです。Magic GarageBandの画面からプロジェクトを作成したのち、編集することは出来るのですが、友達に作ってもらったときは自分が試しにタンバリンのループを配置したところ「ちょっとうるさくなった」と友達が言っていたので、基本的にプロジェクト作成後はトラックの音量を調節したことと、曲の終わりにリバーブをかけたこと以外は何も編集してないわけです。メロディーも元からある物を使うわけだし、これでほんとに曲を作ったって言えるのか?と言う疑問は当然生まれてきます。

そこを言えばGarageBandのコンセプト自体が問題になってきます。GarageBandは元からあるループを組み合わせて曲を作るソフトですから、やはりこれでも曲を作ってることになるのか?と言う疑問まで生まれてきてしまうわけです。(一応GarageBandでもやろうと思えばメロディー自体も作れるには作れますが。)

でも、私はそれでも曲を作っていると言えると思います。

そもそも考えてみてください、ミュージシャンとか芸術家と言ったたぐいのものは作品を完成させる作業の全てを一人で行っているのでしょうか。曲を作るにせよ何にせよ、演奏するためにはギターやピアノなどの楽器が必要で、録音するためにはマイクやコンピュータやらのなんやの機材が必要です。一つの曲でも作曲家と作詞家や編曲家はわかれていたりしますし、プロだって、既存の音声素材を利用しないわけではありません。極論を言えば曲を作るという行為は、作曲家だけでなくそれを成り立たせるスタジオの管理者やギター職人、音楽ソフトの開発者でさえ関わってきていると言えるのです。この考えから言えばGarageBandでループから曲を作ることに関しても同じことが言えそうです。

もちろんやっぱ作ってないよ〜という感想はあります。ただ、どんな作業もそうですが、自分が担当しないところは人が担当し、人が担当しないところは自分が担当してやっているわけですから、そう言う場合は自分が担当する範囲を増やす、たとえばGarageBandならメロディーを一から作ってみるとかドラムのループをアレンジしてみるとかすればいいわけです。

この考え方はプログラミングについても言えることです。大抵プログラミングを学び始める人は、まず本屋などで本を買って学ぼうとします。では、その本を読み終わると何か実用的なソフトが作れるでしょうか?答えはNOです

初心者向けのプログラミングの本というのはその名の通り初心者向けです。だから実用的なソフトが作れるようにまでなるかと言ったらそれは違います。この手の本はその言語の基本的な文法を教えるものです。それは例えば言語上で四則演算はどうやるのかとか、テキストファイルを読み込むにはとか、良くてもボタンはどう作成するのかとか、そう言ったことです。プログラミングの中でスタンダードで特に重要なC言語を例にとると、初心者向けの本では大抵CUIプログラミングに関する情報のみ取り上げられて完結します。これではたとえ一冊読み終わっても、ウィンドウ一つ作れないのです。これは初心者向けの本には低レベルの(とプログラミングでは言います)基礎的な関数しか載っていないと言うことから来ています。

でも、実際の開発者はそうではないですよね。彼らは実用的なソフトを作らなければ仕事になりませんし、実際作っています。じゃあ、彼らはそう言ったソフトを基礎的な関数から作っているのでしょうか? いいえ、そうではないことでしょう。大抵の言語にはライブラリのようなものがあります。これは低レベルの関数を組み合わせて、実際に使うときに使いやすいような中レベルのメソッドに構成するコード群です。実際に実用的なソフトを作ろうと思うなら低レベルの関数からコードを書くような手間はとれません。既にある(つまり会社内の他部門が作ったコードのような)既存のライブラリやコードを活用することになるのです。

でも、ソフトは作ってもライブラリは既存のものを使う。これってGarageBandのループと同じじゃないですか? ソフトを作っていると言っても、それはモジュールを繋ぐためのグルーコードやそのソフトに最低限必要な固有のコードを書くことであり、ライブラリを使っている部分は「作っていない」と言えるのではないでしょうか。

つまりは、さっき言ったことです。自分が担当しないところは人が担当し、人が担当しないところは自分が担当してやっているわけです。「どんなことでも外部のリソース(メソッド)を利用して、それを組み合わせて動かしている」と言うことを、私はメソッド理論と呼んでいます。それは「消しゴム鉛筆を作る」(?)と言う言葉が、鉛筆を作る作業と、消しゴムを作る作業、そしてそれを組み合わせる作業という一連の作業をまとめて(メソッド化して)表現していることと同じです。メソッド理論は音楽やプログラミングだとかに限らず、全ての事象にたいして言えることではないかと思います。

電車に乗っていたら見慣れた灰色のノートパソコンをもった二人組の学生が。iBookかと思ったらPowerBookでした。そして開いたるはLogic Express。GarageBand好きの私ですが、超かっこいいその画面を見て、いつかLogic Expressにステップアップできたらな、と思ったりしています。

■(2009.2.10)

posted by whitecaps at 14:36| Comment(0) | TrackBack(0) | 哲学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック