fc2ブログ

ごめんなさい/BARBEE BOYS

 この曲大好きなんだ。なんてったって、
とりあえず 一つ二つ 
あやまらなきゃならない ことがある
ほんとなら 五つ六つ(七つ八つ)
あやまらなきゃいけない とこだけど

 こんな情けなくもカッコ悪いところがね。なんだか、思い当たるような当たらないような(笑)実は、大失敗して落ち込んでいる時に聴くと、結構救われたりする曲なんだ。そういうときって、がんばれなんて言われちゃうとかえってへこむから。
 でも、こういうのって、まったくしょうがないなぁ、とか思いながら許せる相手と、全然駄目な相手ってのがいるよね。相手と場所をわきまえよう(笑)

作詞・作曲:いまみちともたか
アルバム
「Listen!」

インデックス作成ツール/Core DataとCocoa Bindingの仕組み(その1)

 とりあえずプログラムを動かすところまで進んだので、少し仕組みについて説明しよう。この部分は知らなくてもある程度までは作れてしまうんだけど、やっぱりどうしてそうなっているのかを知っておいた方が良いだろう。
 OSXでプログラムを動かす仕組みはいくつかあるのだが、今回使ったのはAppleがCocoaと呼んでいる仕組みだ。Cocoaではいろいろな部品を、まるでレゴや電子ブロックのように繋ぎ合わせてプログラムを作っていく。今まで作ってきたプログラムでもNSTableViewやNSTextFieldといったレイアウト上の部品や、AlbumControllerといった部品を使ってきた。これらの部品はオブジェクトと呼ばれている。オブジェクトには、テーブルやボタン、テキストフィールドのように、プログラムを動かす時に眼に見えるものもあるし、AlbumControllerのようにプログラムの中にあっても画面には出てこないものもある。
 実は、AlbumエンティティやSongエンティティも画面には出てこないが一つのオブジェクト(部品)なんだ。もう一度、データモデリングの時に使った画面を思い出してみて欲しい。

 このエンティティ編集の画面の右側に書かれていた、NSManagedObjectというのが(NSTableViewやNSTextFieldと同じく)部品の種類を表している。エンティティの属性や、関係を決めていく作業というのは、実は、テーブルのカラム数や、ボタンに描かれる文字などをInterface Builderで決めているのと同じように、プログラムで使う部品(オブジェクト)をどんなものにするか、という設定であったわけだ。

 しかし、エンティティオブジェクトには、レイアウトウィンドウにあったテーブルやボタンとは違う特徴を一つ持っている。ウィンドウに配置されたオブジェクトというのは、プログラムが動き始めて、ウィンドウが表示された時に自動的に作られ、ウィンドウが消える時に消される。しかし、エンティティオブジェクトはユーザーが「+」ボタンをクリックした時に作られ、「ー」ボタンが押された時に消される。また、メニューを使ってファイルに保存したり、ファイルから読み込んだりすることも出来る。さらに、プロパティの内容を編集したり、編集の取り消しややり直しをしたりすることも出来る。
 このような動きを可能にするために、エンティティオブジェクトという部品を作ったり削除したり編集するための部品(=オブジェクト)がある。それがNSManagedObjectContextという種類のオブジェクトだ。Cocoa Bindingを行う時に、最初にAlbumControllerに対してBindを行ったのが、managedObjectContextだったことを覚えているだろうか? これがそのオブジェクトだったわけだ。

 次回は、実際これらのオブジェクト達の間でなにが起きているのかを説明しよう。

金色の音符/PSY・S

 チャカの一人コーラスが印象的な曲。言葉で感想を書くのがすごく難しい。全曲レビューを始めようと思った時に、いくつか”壁”になりそうに感じた曲があるんだけど、これはその一つだ。短い曲だけど、そのなんとも不思議な感触が強い印象を残す。
 なんだろう、曲が終わっているのに、終わらずにずっと音符が踊っているような、そう、
踊りましょ 優しく
永遠が 肩に止まるまで

 こんな風に。

 やっぱりうまく描けなかったよ……、降参。

作詞:森雪之丞
作・編曲:松浦雅也
アルバム
「Window」

インデックス作成ツール/ユーザーインターフェース(その3)

 ここからは、Cocoa Bindingを使ってエンティティと入力画面を接続する。

 まずは、パレットからCocoa ControllersのNSArrayControllerを選び、ドキュメントウィンドウ(レイアウトウィンドウではない!)にドラッグ&ドロップする。


 ドラッグしたら、名前のところをダブルクリックして、名前を”AlbumController"に変更する。さらにインスペクタのAttributeでMode:をEntityにしEntity NameにAlbumを入力する。

 続いて、インスペクタをBindingsに切り替えて、ParametersのmanagedObjectContextを指定する。頭の三角をクリックすると、詳細設定が現れるので、Bind to:にFile's OwnerをModel key pathにmanagedObjectContextを選ぶ。同時に右上のBind欄にチェックが入るはずだ。もし入っていないようであればチェックを入れておこう。これで、データモデリングで作成したAlbumエンティティと、今ドキュメントウィンドウに入れたAlbumControllerとの間の接続が終わったことになる。

 次はレイアウト画面上に置いた部品と、今作ったAlbumControllerとを接続する。最初はTableViewのTitleカラムを選ぶ。一旦テーブルをダブルクリックしてからTitle欄をクリックしよう。これで、カラムが選ばれた状態になるので、インスペクタのBindingsで接続の設定を行う。Valueの中にあるvalueの頭の三角をクリックしてBind to:にAlbumControllerをController Key:にarrenged Objectsを、Model Key Path:にtitleを設定する。Model Key Pathではリストから選べないかもしれないが、かまわずキーボードからタイプする。

 それが終わったら、今度は右側だ。タイトルを入力するTextFieldをクリックして同じようにValusにBindingを設定する。さっきの指定とだいたい一緒だが、Controller Key:には今度はselectionを選ぶ。TableViewの時には一覧を表示するためにarrenged Objectsを選んでいたのだが、今度はテーブルで選ばれた一つだけを対象にしたいからselectionを選ぶわけだ。
 Artist,Relese Date,ReviewについてもTitleと同じようBindingの設定を行う。Model Key Path:にそれぞれartist,releaseDate,reviewを指定する。これでAlbumエンティティの属性が画面上の部品と結びつき、編集や表示が出来るようになる。

 ここまで終わったら、今度は追加と削除のボタンの設定を行う。Controlキーを押しながら「+」ボタンをクリックしてマウスをドラッグすると、ボタンから線が伸びてくるので、この線をドキュメントウィンドウにあるAlbumControllerに接続してマウスボタンを離す。インスペクタウィンドウはConnectionsに変わり、Action in AlbumControllerと表示されているはずだ。

 ここで表示されたリストの中からadd:を選んでConnectボタンをクリックする。
同じように「ー」ボタンについてもAlbumControllerのremove:にConnectしよう。こうすることによって、ボタンが押された時にAlbumエンティティの新規追加と削除が行われる。

 最後は「+」ボタン、「ー」ボタンの状態変化の設定だ。例えば「ー」ボタンはAlbumリストで何かが選ばれていない状態では動作しないようにしなければならない。そのための設定を行う。インスペクタのBindingsでAvailabilityのenabledを設定する。「+」ボタンはBind to:でAlbumContollerを選び、Controller Key:にcanAddを選ぶ。Module Key Path:には何も選択しない。これで、エンティティを追加できる時だけ「+」ボタンが有効になる。「ー」ボタンも同じようにController Key:にcanRemoveを選ぼう。

 これで一通り設定は終わった。Interface BuliderのFileメニューからSaveを選んで、今までの設定をファイルに保存しておこう。

 じゃあ、プログラムを動かしてみようか。そう、もう最初に目標にしていたプログラムは出来てしまったのだ。Xcodeに戻って、プロジェクトウィンドウのビルドして実行ボタンをクリックすると、プログラムが作成されたあと、自動的に実行が始まる。(もし、エラーになるようだったら、どこかの設定が間違っていると思うので、最初に戻って間違いがないか順番に調べてみて欲しい)
 「+」ボタンでアルバムが追加されるし、タイトルやアーティストを入力したりもできる。ファイルに保存することも出来るのだ。

マイティ・スマイル/PSY・S

 この曲は力強く、たくましい。冬の寒さにも、夏の暑さにも負けず、曇りの日にも雨の日にも太陽を思わせる笑顔をみせる。前半で歌われているのは強さの理由かな。
 チャカの声が、強さに説得力を与えていると思う。Teenageの時の声が鋭いけど細いレーザー光線だとしたら、こっちはぶっといビームみたいなイメージがある。
見せてあげたい いつかは Mighty Smile
ほかに何もできないけれど
ただ伝えたい わたしの Mighty Smile
この気持ち 赤くたばねて

 無敵の笑顔をあなたのために!

作詞:神沢礼江
作・編曲:松浦雅也
アルバム
「Signal」 

これはすごいぞ!

 まずは、Cocoaハヤッパリの「 Quartz Composerにどっぷり 」を見てください。
 シンセサイザーを触ったことがある人は、似ている(というかそのまんまのような気もする)のに気が付くかもしれません。これは、まさしくグラフィックのシンセサイザー。いろいろ入力やパラメータを試しながら、変わっていく表示を楽しむことが、だれでも出来るプログラム。
 確かにこれだけでもTigerの価値はあるかもしれません。これがプログラムからも扱えるというのがまたすごい! 
 いやー、Appleって良い仕事するなぁ。

インデックス作成ツール/ユーザーインターフェース(その2)

 では、Interface Builderを使ってこの画面を作っていこう。


 画面の左側ではアルバムを表示して(1)、新しいアルバムの追加(2)や削除(3)を行うことにする。
 (1)のアルバムの表示にはNSTableViewという部品を使用する。パレットウィンドウの上のパネルからCocoa Data Viewというのを選んで、そのなかのNSTableViewをドラッグして、レイアウトウィンドウに持っていく。

 レイアウトウィンドウにTableViewを置いたら、サイズを適当に調整する。さらにインスペクタウィンドウを使って、テーブルのカラム数や、スクロールなどの設定を行う。インスペクタウィンドウは「Tools」メニューの「Show Inspector」を選ぶと表示される。これは、インタフェース作成の作業では一番良く使うウィンドウになる。インスペクタウィンドウで設定できることは非常にたくさんあるのだが、目に見える部分の細かい設定は”Attributes"で行う。

 まず、TableViewをダブルクリックしてテーブル全体の設定を行う。とりあえず、ここではタイトルだけを表示することにして、カラム数は1に、そしてスクロールバーは縦のみにしている。さらにカラムのタイトルをTitleにするため、カラムの設定を行う。カラムの設定をするには、ダブルクリックされた状態から編集したいカラムのタイトル行をクリックする。これでカラムごとの設定が変更できるようになる。とりあえずカラム幅を調整し、タイトル行を「Title」に変更しておく。

(2)と(3)はNSButtonという部品を使う。パレットウィンドウからNSButtonを選んでNSTableViewと同じようにレイアウトウィンドウにドラッグ&ドロップする。NSButtonを配置したらインスペクタウィンドウで形やボタンに描かれる文字などを設定する。追加ボタンには「+」、削除ボタンには「ー」の文字を表示するようにした。

 画面右側は、左側で選んだアルバムの属性を編集する画面だ。(4)(5)(7)はNSTextFieldを使う。今までと同様、パレットからレイアウトにドラッグ&ドロップする。

(7)は長文を書く場所なので、インスペクタを使って、テキストが折り返し表示されるように設定しておく。

(6)は日付を入力する欄なので、部品はNSDatePickerを使う。例によってパレットからドラッグ&ドロップしたら。インスペクタを使って日付だけを入力/表示するように設定しておく。

 ”Title" "Artist"などの文字は入力できないようにしてあるNSTextFieldである。これらもパレットからドラッグ&ドロップして適当にレイアウトウィンドウに配置する。ダブルクリックするとテキストが編集できるので、適当に修正しよう。

 これで一通りの画面レイアウトは終わりだ。次回はいよいとCocoa Bindingを使って、今作った画面とCore Dataのエンティティを繋いでみる。

魔法のひとみ/PSY・S

 最後のオリジナルアルバムEmotional Engineに収録された曲なんだが、曲調や歌詞にどことなく初期~中期のPSY・Sっぽい雰囲気がある。作詞がサエキけんぞうさんだというのもあるけどね。
モノクロームの 地図に えがかれた
不器用な 昨日を ぬりかえて

ここなんかLemonの勇気のこのフレーズ
忘れてしまおう Grayな季節
昨日を映した ネガのフィルムを
捨てる 勇気!

と呼応しているような気がしないだろうか。……やっぱり、しないか(笑)

 まあ、そんな妄想はともかく、ちょうど真ん中あたりにこの曲が入っていることで、「Emotional Engine」というアルバムはうまくバランスがとれているんじゃないかと思っている。

作詞:サエキけんぞう
作・編曲:松浦雅也
アルバム
「Emotional Engine」(Album Mix)
「Two Bridges」(New Mix)

インデックス作成ツール/ユーザーインターフェース(その1)

 さて、本来ならばここでBlogのデータを読んでくるところを作っていくべきなのだろうが、実はその部分の作りはなかなか難しいところなのだ。そこで、ちょっと寄り道。手動でアルバムの情報を入力するところを作ってしまおう。やっぱりなんか動くものが出来ないと寂しいし(笑)
 入力画面を作る時に、Cocoa Bindingという仕組みを使う。Cocoa Bindingというのは、Pantherから使えるようになったもので、極めて簡単に言ってしまうと、面倒なコードを書かなくてもプログラムが作れるような仕組みだ。とはいっても、ちゃんと動くようにするにはいろいろと考えないとならないことも多かった。それがTigerになってからはCore Dataと組み合わせることで、ぐんと使いやすくなっているように思う。それがどんなもので、どういう仕組みになっているかについては、実例を使って説明した方がわかりやすいだろう。
 ということで、これからしばらくは、Core DataとCocoa Bindingを使って実際にデータを入力する画面を作る方法について書いていこう。

 ユーザーインターフェースを作るには、まずプロジェクトの中からMyDocument nibというファイルを選んでダブルクリックする。するとInterface Builderというアプリケーションが起動して画面やメニューを編集できるようになる。Interface Builderの画面の簡単な説明はsite-aroさんのCocoaハヤッパリにある”はじめてのCocoaアプリ”を読んでもらうと分かると思う。
 最初はデザインウィンドウの真ん中にある”Your document contents here"というテキストを取りのぞくことから始めよう。
 そうしたら、パレットウィンドウからパーツを選んで画面を作っていく。とりあえず、最初はアルバムを追加してその属性を編集する画面を作ることにする。最終的にはこんな画面にする予定だ。

Friends or Lovers/PSY・S

 名前は忘れてしまったが、TBS系のドラマの主題歌だった曲(トレンディドラマってのも完全に死語になっちゃったねぇ)。そのせいもあってか、かなり早い時期からカラオケに入っていた。いたのだが、歌うのが難しいのだ。単純に歌うだけならなんとかできるんだけど、ちゃんと魅力を伝えるように歌うのはかなり難しいと思った。ここのcrash&relaxのところは特に。
友だちと 恋人と
決めるから こじれるのかな
クラッシュしてる みんな
近くても 遠くても
見えないね 声とどくかな
(ねえもっと)リラックスして


 そうだねぇ、Frends or Loversどっちでもいいんだけど、やっぱりたまには迷惑かけてみてよ。

作詞:松尾由紀夫
作・編曲:松浦雅也
アルバム
「TWO HEARTS」
「TWO SPIRITS」(Live Version)
「HOME MADE」(Acoustic Version)
「GOLDEN☆BEST」(シングルバージョン)

(2007/6/18追記:ドラマは「ママってきれい?」だったということをコメント欄で教えてもらいました)

インデックス作成ツール/データモデリング(その4)

 では、エンティティとエンティティの間の関係を設定しよう。まずはAlbumとSongListとの間に関係を設定する。

 Albumエンティティを選択した後、プロパティの追加ボタンをクリックして、「関係を追加」を選ぶ。これで、リストにnewRelationshipという名前で新しい関係が作られる。

 例によって左上の画面で関係の詳細を決めていく。名前、オプション、一時については属性の時と同じだ。SongListに対する関係なので、名前はsongListとしておく。ディスティネーションには関係付けるエンティティを指定する。当然SongListエンティティを選ぶ。
 「逆」は今は選べない状態のはずだ。ここはAlbumからSongListに向かう関係のみが設定されていて、SongListの方からはAlbumに対する関係は設定されていない状態ということだ。これは相手側(この場合はSongListエンティティ)の方に関係を追加すると、選べるようになる。
 「対多関係」にチェックを入れると、エンティティ一つに対して関係する相手が多数あるということになる。一つのアルバムには普通は何曲も入っているものだから、ここはチェックを入れよう。
 「ルールを削除」は英語版での表示はDelete Ruleで「削除のルール」と訳すべきところだ。(しかしひどい訳だな(^^;)エンティティを削除するときにこれに関係しているエンティティとの関係をどうするかを指定するところだ。ここの選択肢、アクションなし(No Action)、無効にする(Nullify)、重ねて表示(Cascade)、拒否(Deny)もなにがなんだか分からない訳なので、ここは英文に当たった方が良い。
 簡単に説明すると以下のような設定らしい。
 No Actionはその名の通り、削除されても何もしない。
 Nullifyはこのエンティティが削除されたら、相手のエンティティ側の関係プロパティを空にする。ただし、相手のエンティティ自体はそのまま残す。たとえば、アルバムの収録曲を削除するケースを考えてみよう。この場合、SongListエンティティが削除されるのだが、このときにAlbumエンティティは削除されたSongListとの関係を切る。が、Albumエンティティ自体は無くならないで残っている。このようなときにはNullifyを選択する。
 Cascadeはこのエンティティが削除されたら、関係している相手のエンティティも一緒に削除する。さっきとは逆にAlbumエンティティが削除された場合を考えてみよう。このときには収録されている曲はすべて削除されるので、このAlbumエンティティと関係しているSongListはエンティティごと削除される。このような場合はCascadeを選択する。ちなみにcascadeの辞書的な意味は、順送りに伝える、順々に並べるといったものだ。(もともとは階段状に連続する滝といった意味からこうなっているらしい。)
 最後のDenyだが、これは関係しているエンティティがまだ存在している時には、削除自体出来ないようにする設定だ。アルバムと収録曲の例で、アルバムを削除したら収録曲が勝手に消えてしまうことがないようにしたい場合、Denyを指定するといい。

 というわけで、この場合の関係は、CascadeかDenyが適切ということになる。ここはCascade(重ねて表示)を選んでおこう。

 さて、同じようにSongListにも関係を追加しよう。SongListにはAlbumとSongへの関係を追加する。Albumエンティティの時と同様にプロパティ画面で関係を追加して、左上の画面で編集する。Albumエンティティへの関係はalbumという名前に、Songエンティティへの関係はsongという名前にする。

 albumのディスティネーションにAlbumを指定すると、今度は「逆」の選択肢にsongListが現れるので、これを選択する。これは先にAlbumエンティティに追加してあったsongListプロパティ(関係)のことだ。SongListの方で「逆」の設定をしておくと、自動的にAlbumエンティティのsongListプロパティの方にも「逆」設定が追加される。ディスティネーションで選ぶのはエンティティだったが、「逆」で選べるのはプロパティであることに注意しよう。

 この手順を繰り返して、エンティティ間の関係を設定していく。今回の設定はここにまとめてある。

 すべての設定が終わると、下の画面にはこのような図が出来ているはずだ。以前にここで書いた下の図と比べてみて欲しい。ここまでで、このプログラムで扱うデータの設計が終わったことになる。この作業はデータモデリングと呼ばれる。

私的録音補償金って、何?

 iPodユーザーでもあり、ITMS日本版をずっと待っている身としては、こんな記事にはやっぱりもやもやしたものを感じてしまうのだが、この音楽産業界はiPodなどに褒賞金を出すべきという記事には言いたいことを言葉にしてもらった気分の良さがある。
 ここで言われている、
ましてやアルバムが一杯入るHDD型プレーヤーを手にすると、どうしてもいろんな音楽が聴きたくなる。ライブラリを充実させたくなるのが人情。

は、まさにその通りで、それまでに比べて音楽を買うことは確実に増えた。また、ITMSが日本で始まれば買いたい音源というのは結構あるのだ。
 しかし、どうしてもJASRACは、iPodのような携帯プレイヤーが増えるー>MDやCDーRの売り上げが下がるー>補償金の実入りが少なくなるー>新しい財源として携帯プレイヤーにも課金を、と考えているようにしか見えない。これでは補償金を取ることを目的としていると言われても仕方がないように思うけどね。

インデックス作成ツール/データモデリング(その3)

 では、エンティティにプロパティを追加していこう。まずは、Albumエンティティのプロパティを追加する。エンティティリストから「Album」を選んでおいてから、真ん中のプロパティ画面の「+」ボタンをクリックする。エンティティの時は、クリックするとすぐにエンティティが追加されたが、プロパティの場合は種類を選ぶリストが表示される。

 実はプロパティには種類がある。属性(attribute=意味はそのまんま属性)、関係(relation=これもそのまま関係という意味)、受信済みプロパティ(fetched properties、fecthは取ってくるという意味。しかし、この日本語訳はなんとかならんのか)の 三つだ。
 属性というのは、そのエンティティの中に持っているデータのことだ。アルバムだったら「タイトル」とか「リリース日」にあたる。
 関係というのは、他のエンティティとの関係になる。以前に書いたデータの図で
データのまとまりの間に線を引いていたが、この線の部分に当たるものだ。
 受信済みプロパティとは、条件を付けて、その条件に合うエンティティとの関係ということらしい。私もまだあんまりピンときてない。今回はまだ使わないので、とりあえず忘れておこう(^^;

 というわけで、まずは属性から追加してく。「+」ボタンをクリックした後、表示されたリストから「属性を追加」を選ぶ。すると、プロパティリストに「newAttribute」という名前で新しい属性が表示される。右上の編集画面でこの属性の内容を決めていこう。

 最初は、名前、オプション、一時、タイプ、の四つの項目が編集できる。名前はもちろん属性の名前。属性の名前には、先頭の文字は英小文字でないといけないという規則がある。オプションは、ここにチェックを入れておくと、この属性は値が無くてもいい、という意味になる。一時は、チェックを入れておくとファイルに保存する時にこの属性が保存されない。タイプは属性の種類である。
 
 タイプを指定すると、その下に、属性値として持てる値の条件と、最初にエンティティが作られた時にデフォルトで設定される値を指定する画面が表示される。この部分はタイプの種類によって変わってくるため、最初は表示されていなかったのだ。

 図は文字列の場合だ。文字列の場合、ここでは、長さの最小と最大、入力できる文字列の形式(正規表現の欄)を条件として指定できる。
 アルバムタイトルを格納する属性の場合、名前を「title」とし、オプションと一時のチェックは両方とも外しておく。タイプは文字列を選ぶ。
 条件としては、最小長に1を入れて、あとは空白にしておく。デフォルト値は「Title」にしておこう。

 同じようにしてAlbumや他のエンティティの属性を追加していく。どんな属性を追加したかは、こちらの表を見て欲しい。

 次は、関係を追加する。が、それはまた別の記事で。

インデックス作成ツール/データモデリング(その2)


 これが編集用の画面。大きく上下二つに分かれていて、さらに上の部分は三つに分かれている。

 まず、左上はエンティティの追加や削除を行うところ。Core Dataでは、「アルバム」や「曲」のようなデータのまとまりのことを、エンティティ(Entity=実存といった意味)と呼んでいる。この画面の左下にある「+」「ー」のボタンで追加と削除が出来るようになっている。追加したエンティティはここにリストで表示される。

 次に上段中央の部分、ここは、プロパティの追加や削除を行う部分である。プロパティ(property=特質、特性とかいった意味)というのは、エンティティの中に含まれている情報そのもの、例えば「アルバム」エンティティだったら、「タイトル」だとか「アーティスト」だとかだ。ここも「+」「ー」で追加・削除が出来る。追加したプロパティがリスト表示されるのも同じだ。

 右上は左や中央で選んだエンティティやプロパティの編集画面だ。リストからエンティティやプロパティを選ぶと、その詳細を編集できる。詳しいことはプロパティを編集する時に説明することにしよう。

 下段には編集したデータの内容がこんな風に図で表示される。

 ではまず、エンティティとして「Album」「Song」「SongList」を作ろう。エンティティ追加の「+」ボタンをクリックすると、新しいエンティティが「Entity」という名前で追加される。追加されたエンティティをクリックすると、名前を変更できるようになるので、名前を「Album」に変更する。同じように「Song」「SongList」を作る。

 エンティティが出来たら、それぞれのエンティティのプロパティを作っていくのだが、長くなるので、例によって続きは後日。

美は乱調にあり/上々颱風

 タイトルは瀬戸内寂聴の小説よりとったらしい。小説の方のタイトルも実は大杉栄の「美はただ乱調にある。諧調は偽りである」から来ているそうだ。
 そんなわけで、この歌。
ルンバ カリプソ
レゲエにチャチャチャ
あまたリズムのその中で
チャンチキリズムに敵は無し

 という最強のリズムに乗って、次々と繰り出されるフレーズは確かに乱調である。……だけど、やっぱり録音されたものを聴くのはやっぱり違うよなぁ。この宴はどこまで続くんだろう、というのは生で聴いている時にこそ感じるだろうし。
 全7分38秒、せめて雰囲気だけでも……本領はライブで、なんだろうなぁ。

作詞・作曲:紅龍
アルバム
「上々颱風3」

インデックス作成ツール/データモデリング(その1)

 データをどうまとめるかについて、おおまかに方針が決まったので、それぞれ詳しくどんなデータにするかを決めていくことにする。
 Tigerの新しい開発環境では、この段階になると実際に制作しながら設計を進めていけるようになる。開発ツールであるXCodeを立ち上げて、「ファイル」メニューから「新規プロジェクト...」を選ぶ。すると、プロジェクトの種類を聞いてくるので、「Core Data Document-based Application」を選び、「次へ」をクリックする。
次の画面では、プロジェクトの名前を聞いてくるので、ここは適当な名前を選ぶ。「SongReview」という名前にすることにした。
出来たプロジェクト中にMyDocumentxcdatamodelというファイルがある。このファイルにデータの定義を行っていくことになる。

このファイルをダブルクリックするとデータ編集の画面になる。

まだ続きます。

Woman・S/PSY・S

 初期PSY・Sの代表作の一つであり、傑作。まっすぐに向けられた気持ちが爽快で、元気にさせてくれる曲だと思う。リズムを刻むドラムが印象的なオリジナル版、少しやわらかくなったTWO HEARTS収録のNew Version、ちょっと気だるい(Bossa Nova Version)と、それぞれ雰囲気の違う三つのバージョンがあるのだけど、やっぱりオリジナル版かな。”まっすぐな気持ち”が一番良く出ている気がする。
 歌詞にはだいぶ80年代っぽさが入ってるけど、私の携帯の着メロは、
磁石のように 呼び合った 心を
20世紀には 迷うことばかり多くて

ここのフレーズなのだ。

作詞:佐伯健三
作・編曲:松浦雅也
アルバム
「PIC-NIC」
「Collection」(Bossa Nova Version)
「TWO HEARTS」(New Version)
「GOLDEN☆BEST」

インデックス作成ツール/データの持ち方

 Core Dataベースでツールを作るとして、まず最初にどんなデータを扱うか整理してみる。
 単純に考えると「アルバム」と「曲」に分けることができるように思う。図にするとこんな感じ。

 ところが、同じ曲でも別バージョンで他のアルバムに収録されていることがあったりするのだが、その場合はこの二つにまとめてしまうとうまく表現できない。そこで、「アルバム」と「曲」の他に、「収録されている曲」というデータを作ってそこにバージョンとかアルバムの収録順を入れておくようにする。こっちを図にするとこんな感じになる。

 続きは後日

Spiral Lovers/PSY・S

 これに限らずNon-Fiction収録曲はアルバムの状態で聴くのが一番だと思う。この曲も一曲目のParachute Limitが終わってから間髪入れずに入ってくるイントロがかっこよく、気分が盛り上がる。
 曲の方は、踊るベース! 歌うギター! って感じがなんとも素敵である。たまに入るピアノがまた良い。それが、可愛らしいけどちょっと危なげな歌詞とまた合うのだ。
猫の真似して 影を重ねた
見える 見えない 背中の羽に
ふれるふれない とまどうばかり

 実はこのアルバムの中で一番好きな曲なんだよね。身体が自然に動いてしまいますぅ。

作詞:松尾由紀夫
作・編曲:松浦雅也
アルバム
「Non-Fiction」

Core Data

 Tigerになって、目に見えないところでいろいろ強化されているのだけど、プログラム作成という面から見ると、Core Dataというフレームワークがちょっと興味深い。実はインデックス作成ツールでもこれを使ってみようとは思っていたんだ。
 連休中に少しドキュメント読んだり、チュートリアルをやったりした感じでは、だいぶプログラムを作るのが簡単になりそうな気がする。

 ふつう、プログラムを書く時は、そのプログラムで扱うデータをどんな構造にするかというのを考える。インデックス作成ツールだと、アルバムにどんな曲が収録されているかとか、曲だったら作曲者や作詞者、といったデータを扱うようになる。それらのデータがどんな構造を持って、それぞれどういう関係にあるかっていうのをプログラムしていくわけだ。普通はこのプログラムは直接プログラム言語を使って書いていく。OSXだとObjective-Cだとかが使われるわけだ。
 ただ、こういう部分っていうのは分かり切ったコードを毎回書くことが多くて、結構手間がかかる割につまらないところでもあるのだ。
 CoreDataというのは、この部分をある程度自動化して肩代わりしてくれる仕組みなのだ。これについては、もう少しいろいろわかってきたところで詳しく書いてみようかと思う。

TOYHOLIC/PSY・S

 ”ぷかぷかシリーズ”第二段。この曲も漂うような雰囲気が特徴的だけど、無邪気に浮かんでいたI・E・S・Pとは違って、ちょっとだけ大人っぽい。
Ah,最初のキスを許しながら
Ah,急加速で さよならが始まる

 でも、そもそもTOYHOLICってどういう意味なんだろう? 昔から疑問に思っているんだけど、未だにわからないんだ。おもちゃ中毒?

 オリジナル版よりもTwoSpritsに収録されているライブ版の方が”ぷかぷか感”は上のような気がする。

作詞:あさくらせいら
作・編曲:松浦雅也
アルバム
「Mint-Electric」
「Two Spirits」(Live Version)
「GOLDEN☆BEST」(Live Version)

I・E・S・P(アイ・エスパー)/PSY・S

 PSY・Sには、私が勝手に”ぷかぷかシリーズ”と名付けている曲がいくつかあるんだ。で、これはその一曲目。気持ちよく漂っている感じがする。ただ、タイトルと曲調が全く合ってない気がする、もうちょっと激しい感じかと思ったよ、最初は。
水素のように軽い体の記憶に倒れるように浮かぶ I・E・S・P

 この浮遊感は気に入るときっとクセになる。

作詞:?橋 修
作・編曲:松浦雅也
アルバム
「Different View」 

もうちょっとだね/PSY・S

 最初に聴いた時はPSY・Sっぽくないなぁと感じた。この曲が収録されているEmotional Engineには、そんな感じの曲が多かったようにも思う。もっとも、これに限らずどのアルバムでも最初に聴く時はなんとなく引っ掛かる事が多いんだが。
 何かどこかにとどかない感じはちょっと「Teenage」にも似ている。すぐそこに見えているのにもう一息足りない。
簡単で刺激的で
真剣勝負で
それでなきゃ ものたりないよ

 もっとも、かなりとんがっていた「Teenage」に比べるとだいぶ当たりが柔らかくなっているようだ。

作詞:小川美潮
作・編曲:松浦雅也
アルバム
「Emotional Engine」

Grapher

 Tigerになって新しく追加されたユーティリティにGrapherというのがある。これは、OSXになる前に付いていたグラフ計算機というやつのOSX版なのだ。どういうプログラムかというと、

このように、数式を入力してやるとグラフを作ってくれるのだ。例として上げているのは3Dだけど、y=x^2-2x+1なんて二次元のグラフも描ける。作ったグラフは画像として出力することも出来るので、理系の学生とか先生なんかにとっては結構便利なユーティリティなんじゃないだろうか。アプリケーション/ユーティリティフォルダの中に入っている。
 ただ、残念なことに、日本語ヘルプが入っていないみたいなんだ。トピックスの目次までは出てくるんだけど、クリックするとエラーになってしまう。ちょっともったいない。

(2007/6/17 追記:その後、ヘルプも日本語化されたけれど、読んでも使い方がよくわからなかったりする。チュートリアルみたいなものがあるといいんだけどね。まだ、機能の大半は使いこなせてはいないけれど、結構使えるアプリケーションである)

Teenage/PSY・S

 PSY・Sのデビュー曲(しかし、あんまり売れなかったそうだ)。
 初期のPSY・Sはテクノと思われていたそうだが、この曲はロックっぽい気がする。ロックって何? と言われると答えられないんだけど。
 十代のころって、歳を取ってから振り返ると懐かしく感じるかもしれない。しかし、その渦中にあるときは中途半端さにいらつくときもある。
ひとりきりは とても寂しい
もう倒れてもいいでしょう


 最初のころのチャカの声は、後期に比べてかなり”硬い”感じがするんだけど、その硬さがこの曲の雰囲気にとても合っているように思える。もしかしたら、それも松浦さんの計算だったのかもしれない。ヴォーカルも一つの楽器と考えて曲を作っていたんじゃないだろうか。

作詞:高橋修・安則まみ
作・編曲:松浦雅也
アルバム
「Different View」
「Two Spirits」(Live Version)
「GOLDEN☆BEST」