2008-02-20 :-)
_ [植松伸夫][ファイナルファンタジーV]通勤ったー
ファイナルファンタジーV
ゲームは何度かプレイしました。作曲は植松伸夫さん。私がゲーム音楽に心酔するようになった原因です( きっかけではないです )。FF4 がまだスーパーファミコンの音を使いこなしていない印象があるのに対して、FF5 はかなり完成度が高いです。FF5 の世界が北欧の雰囲気になっていてゲーム全体が穏やかで心地よい世界になっています。「現実逃避して FF5 の世界に住みたい」と思うくらいの世界です。音楽はこのゲームの世界にぴったり合った音楽になっています。激しい曲はあまり無く、全体的に温かい印象です。1 曲目「ファイナルファンタジーVメインテーマ」が FF5 のすべてを表しています。
FF シリーズは FF5 から CD が 2 枚以上になりました。曲が増えたのは「場面における曲」が増えたからです。これまでの FF 音楽が「場所を表す曲」でした。ゲーム中のすべてのダンジョンに「ダンジョン」を使い、ゲーム中のすべての街に「街」を使う、といった使い方です。それが FF5 から「物語の場面を表す曲」になっています。たとえば FF3 ではフィールドは浮遊大陸と地上世界のフィールドがありましたが、使っている曲はすべて「悠久の風」でした。 FF5 はフィールドが第一世界、第二世界、第三世界の 3 つあり、フィールド曲も各々の世界ごとに書いてあります。最初は何でもない今まで暮らしていた世界だったのが( 第一世界 )、じつは別の世界が存在することが分かり( 第二世界 )、世界の全貌が明らかになりエクスデスにより世界が無になろうとしている( 第三世界 ) という曲になっています。曲を聴き進めると FF5 の世界が変貌していくことを感じ取れます。
- オープニング:ゲーム最初のオープニングです。オープニング専用の曲は 5 が初めてです。
- 4つの心:第一世界のフィールド曲です。メインテーマのアレンジです。
- ダンジョン:ダンジョンの曲。恐ろしい魔物が潜むような印象ではなく、神秘的な世界を表現したような曲になっています。
- 街のテーマ:街です。静かで穏やかな印象です。こんな街に住んでみたいですね。
- ハーヴェスト:どこの曲だっけ。harvest( 収穫 )という名のとおり、収穫を祝う祭りのような賑やかな曲です。聴いているだけでワクワクします。
- 想い出のオルゴール:バッツの故郷にあるオルゴールの曲です。オルゴールのぜんまいが尽きるように曲が終わります。
- 暁の戦士:ガラフたち暁の戦士が登場するときの曲です。心を奮い立たせるような勇ましい曲です。
- 未知なる大地:第二世界のフィールド曲です。
- 新しき世界:第三世界のフィールド曲です。第三世界では飛空挺に乗っても飛空挺用の曲にならず「新しき世界」を一貫して使っています。飛空挺に乗ると「新しき世界」を BGM にして飛空挺のプロペラの「シャッシャッシャッ」という音が鳴り響き、それがなんともいえない不気味さを作っていました。
- 決戦:エクスデス戦の曲です。8 小節目辺りからのドラムの音が野蛮さ、野生さ、猛々しさを表しています。植松さん得意?の「期待を裏切る曲」[ 20071020#p02 ]になっています。
- 静寂の彼方へ:エンディングの曲です。基本のメロディを 3 ループする構成になっています。エンディングの進行に合わせて曲が明るくなっていきます。1 ループ目は寂しい曲ですが( ゲームエンディングでは無に閉ざされた絶望感が描かれている場面 )ループするごとに使う音が増えていき、最後は無から脱出する活路を見出した希望を表す明るい曲になります。
- 親愛なる友へ:エンディングの曲です。クルルからシドへ宛てた手紙を読む場面です。解散し各々の生活を始めた光の戦士たちの現状を紹介しています。
- ファンファーレ1:FF2「ファンファーレ」と同じ曲です。
サントラの最後のほうに「ファンファーレ」など SE のような短い曲が集められています。「ピアノのおけいこ1」〜「ピアノのおけいこ8」はゲーム中に登場するピアノを演奏したときの曲です。エンディングを聴き終わり、サントラの最後に「ピアノのおけいこ8」を聴くと「ああ、FF5 が終わったんだな」と実感し、少し寂しくなります。
B00005FNVO
_ 仕事
0830 出勤。
_ [Perl][高林哲][がらくた][コードリーディング]がらくたを読む - all-substrs
高林哲さんの がらくた置き場 にあるプログラムを読みます。
http://0xcc.net/attic/all-substrs
部分文字列を作成するプログラムです。
冒頭にコマンドの呼び出し方と、コマンドの結果の例が書いてあります。
#! /usr/local/bin/perl # # Generate all substrings. # Number of substrings = n * (n + 1) / 2 # # % echo abcd | perl all-substrs # a # ab # abc # abcd # b # bc # bcd # c # cd # d
次の行は使用する Perl のバージョンを要求しています。バージョン 5.004 以上を必要としています。
require 5.004;
次のコードはコマンドラインで指定した標準入力から読み込んでいます。標準入力 <> を "" を区切り文字にして連結しています。
$text = join "", <>; chomp $text;
これと同じことを以下のように書いても実現できるのですが、join しているのはなぜなんでしょうか。
$text = <>;
次のコードがメインになる処理です。gen_suffixes を呼び、その結果を使って gen_prefixes を呼び、その結果を印字しています。
for $suffix (gen_suffixes($text)) { for $prefix (gen_prefixes($suffix)) { print $prefix, "\n"; } }
最初に gen_suffixes を読みます。ここでは文字列 $text の suffix を作成し、@suffixes に格納します。suffix とは suffix array でいう suffix です。日本語にすると「接尾辞」になるけど「suffix」と呼ぶほうが多いようです。
sub gen_suffixes() { my ($text) = @_; my @suffixes = (); do { push @suffixes, $text; } while ($text =~ s/^.(.)/$1/); return @suffixes; # arrange in long order. }
while ($text =~ s/^.(.)/$1/); で $text の先頭から 1 文字ずつ削っていきます。$text を削っていく様子は以下のようになります。
abcd bcd cd d
この文字列を push @suffixes, $text; で 1 つずつ @suffixes へ格納しています。
その結果を使って gen_prefixes を呼び出します。gen_prefixes の $text には gen_suffixes で作成した @suffixes の配列要素が渡されていきます。すなわち abcd bcd cd d について各々 gen_prefixes で処理します。
sub gen_prefixes() { my ($text) = @_; my @prefixes = (); do { push @prefixes, $text; } while ($text =~ s/(.).$/$1/); return reverse @prefixes; # arrange in short order. }
while ($text =~ s/(.).$/$1/); で $text の末尾から 1 文字ずつ削っていきます。たとえば gen_prefixes に abcd が渡されたときの $text を削っていく様子は以下のようになります。
abcd abc ab a
この文字列を push @prefixes, $text; で 1 つずつ @prefixes に格納しています。
return reverse @prefixes; で上記の文字列を格納した配列を逆順に並べ替えて返します。@suffixes の最初の要素を処理したときの印字は以下のようになります。
a ab abc abcd
同様に @suffixes の残りの要素を処理していきます。最終的な印字は以下のようになります。
a ab abc abcd b bc bcd c cd d
_ 買い物
@渋谷タワーレコード、秋葉原ソフマップアミューズメント店
BETTA FLASH ニューアルバム。イベントがあるので買ってきました。
ref.
- 2008/03/15(日) mini ALBUM「BETTA FLASH」発売記念!ライブ&サイン会開催決定!
- 2008/03/21(金) インストアライブ in ソフマップ
- BETTA FLASH - インタビューが続々掲載!
B00120VG6Y