2007年10月アーカイブ

i-depのナカムラヒロシとCanaによるボッサユニットSotte Bosseの新譜。

恥ずかしながら実はつい最近までSotte Bosse知りませんでした。
Stickamでいつも聴きにきてくれている方の部屋に入ったときに、たまたまかかってて教えていただきました。で、結局3枚とも買いました。

1枚目のEssence of lifeは全曲J-Popのカバーでインディーズで15万枚売り上げたそうです。2枚目のinnocent viewは1曲だけオリジナルで後はJ-Popのカバーでオリコンインディーズチャート1位、そして今回の3枚目は半分J-Popのカバーで半分オリジナルの構成になってます。
カバーもいいけど、オリジナルもいいです。まぁナカムラヒロシユニットなんで、そこはそこでちゃんとツボをついた楽曲。

今までボッサのカバー物は洋楽ばかり買っていてあまりはずれを引いたことがなかったのですが、今回はJ-Popということでちょっと不安でした。が、Sotte Bosseのカバーのクオリティはかなり高いです。
一辺倒なアレンジじゃなく、軽快なテンポなアレンジからレゲエ調なアレンジ、しっとり聞かせるスローなアレンジまで飽きさせません。
選曲も最初見たときはミーハーだなぁと心配だったのですが、いざ聴いてみるとなるほど~とうなずくものばかり。

なにより、Canaのまったりとしたボーカルはボッサにすごく合います。
i-depのフィルターなボーカルもいいですが、Sotte Bosseでは生の息の抜ける感じが、ほっと癒されます。

秋の夜長のボサノバもいい感じですよ。
3枚ともお勧め。

ここで試聴できます。

Essence of life
Essence of life
posted with amazlet on 07.10.16
SOTTE BOSSE
インディーズ・メーカー (2006/02/02)
売り上げランキング: 118
  1. 島唄(THE BOOM)
  2. 接吻 KISS(ORIGINAL LOVE)
  3. EVERYTHING(MISIA)
  4. 真夏の果実(サザンオールスターズ)
  5. 春の歌(スピッツ)
  6. 未来予想図II (DREAMS COME TRUE)
  7. One more time, One more chance(山崎まさよし)
  8. 世界に一つだけの花(SMAP)
  9. ガラス越しに消えた夏(鈴木雅之)
innocent view
innocent view
posted with amazlet on 07.10.16
Sotte Bosse
bloom/RAINBOW ENTERTAINMENT (2007/03/07)
売り上げランキング: 199
  1. ハナミズキ(一青窈)
  2. First Love(宇多田ヒカル)
  3. チェリー(スピッツ)
  4. 遠く遠く(槇原敬之)
  5. 言葉にできない(オフコース)
  6. やさしさに包まれたなら(荒井由実)
  7. 夜空ノムコウ(SMAP)
  8. メランコリニスタ(YUKI)
  9. イージュー★ライダー(奥田民生)
  10. hello(オリジナル曲)
moment
moment
posted with amazlet on 07.10.16
ナカムラヒロシ Sotte Bosse 岩里祐穂 米米CLUB Cana 桜井和寿 草野正宗 及川リン 絢香
UNIVERSAL SIGMA(P)(M) (2007/10/03)
売り上げランキング: 58
  1. 瞳がほほえむから (今井美樹)
  2. 君がいるだけで (米米CLUB)
  3. 太陽のキス (オリジナル曲)
  4. マンダリンパスタ (オリジナル曲)
  5. Take Me Away (オリジナル曲)
  6. Replay (Mr.Children)
  7. 楓  (スピッツ)
  8. グッバイ  (オリジナル曲)
  9. 三日月  (絢香)
  10. Breathing Space  (オリジナル曲)
  11. ひとひら  (オリジナル曲)

Catalyst::Model::Adaptor - use a plain class as a Catalyst model

要はどんなクラスでもCatalystのモデルにしてくれるクラスです。

たとえばこんなクラスを作って

lib/MyApp/DateTime.pm
package MyApp::DateTime;

use strict;
use warnings;

use base qw/DateTime/;
use DateTime::Format::W3CDTF;

sub now {
    my ($class, $args) = @_;

    $args->{time_zone} = 'local' unless $args->{time_zone};
    return $class->SUPER::now(%$args);
}

sub parse {
    my ( $class, $str ) = @_;

    my $dt = DateTime::Format::W3CDTF->parse_datetime($str);
    bless $dt, $class;
}

sub format {
    my $self = shift;

    return DateTime::Format::W3CDTF->format_datetime($self);
}

で、ヘルパーを使うと

script/myapp_create.pl model DateTime Adaptor MyApp::DateTime now 

こんなクラスを作ってくれます。

lib/MyApp/Model/DateTime.pm
MyApp::Model::DateTime

package Test::Model::DateTime;
use strict;
use warnings;
use base 'Catalyst::Model::Adaptor';

__PACKAGE__->config(
    class       => 'Test::DateTime',
    constructor => 'now',
);

1;

ヘルパーの使い方は

script/myapp_create.pl model [Modelクラスの名前] Adaptor [使うクラス名] [コンストラクタ名]

みたいな感じ

で、コントローラにこんな感じのを書いて

lib/MyApp/Controller/Root.pm

-snip-

sub now : Local {
    my ($self, $c) = @_;

    my $model = $c->model('DateTime');
    $c->res->body($model->format);
}

-snip-

サーバーをあげて/nowにアクセスすると現在の時間をW3CDTFな書式で表示してくれます。
便利!

・・・ですがリロードしても時間が変わりません。
で、M::DateTimeを変更します。

lib/MyApp/Model/DateTime.pm
MyApp::Model::DateTime

- snip -

use base 'Catalyst::Model::Factory';

- snip -

で、あげなおしてリロードしたらちゃんと現在の日時を返してくれます。

Catalyst::Model::Adaptorのパッケージには

Catalyst::Model::Adaptor - アプリケーションの起動時にインスタンスを生成
Catalyst::Model::Factory::PerRequest - リクエストごとにインスタンスを生成
Catalyst::Model::Factory - $c->model()で呼ばれるたびにインスタンスを生成

が入ってるのでそれぞれの用途で使い分けるといいです。

また、コンストラクタの引数を設定ファイルに指定する場合は

---
name: Test
Model::DateTime:
  args:
    time_zone: UTC

な感じでargs:の下に書くとよろし。

ただし、注意しなければいけないのはC::M::Adaptorからクラスのコンストラクタに渡る引数はハッシュリファレンスになります。今回はクラスのほうでDateTimeクラスに渡すときに変換していますが、C::M::Adaptorのprepare_argumentsとmangle_argumentsをオーバーライドすることで行うこともできます。

MyApp::DateTimeからnow()を削って、MyApp::Model::DateTimeに

sub prepare_arguments {
    my ( $self, $app ) = @_;

    my $args = $self->{args};
    $args->{time_zone} =  'local' unless $args->{time_zone};
    return $args;
}

sub mangle_arguments {
    my ( $self, $args ) = @_;

    return %$args;
}

を追加する感じ。

ドキュメントにありますが要は内部的に

my $args = $self->prepare_arguments($app);
$adapted_class->$constructor($self->mangle_args($args));

みたいな処理をしてアプリケーションからクラスのコンストラクタに渡してるのでそれぞれフックしてやる感じです。

というわけでCatalyst + Web::Scraperを使ってamazletのCISCO RECORDS版ciscoletを作ってみました。Web::Scraper++

ciscolet

こんなHTMLを作ってくれます。

All That She Wants
  • Label: Chic Flowerz
  • Release: 2007/10/01
  1. Sugar Remix
  2. All That Mix
  3. Original Mix
  4. "Booty" (Original Track)

完全にamazletのぱくりです。ごめんなさい。
CISCOにアフィリエイトの仕組みがないので何のメリットもありません。
多分ボクしか使いません。

Shibuya.pm Teck Talk #8に参加させていただきました。
というわけで、出遅れ感てんこ盛りなのでかいつまんで感想です。

(以下表題は敬称略で)

Class::Component (Yappo)
Class::Componentは使いこなせないまま投げ出したのですが、今回のプレゼンを見てまた触りたくなりました。喫煙所でDanさんの「あのサンプルだとC::Componentのありがたみないねー」のツッコミに対して「サンプルですから」とつぶやいたYappoさんの目が印象的でした。

Practical Web Scraping with Web::Scraper (miyagawa)
ちょうどのめり込んだ後だったのでわかりやすく聞けました。CUIは知らなかった。便利そうなので使ってみたいと思います。

Perlで入門テキストマイニング (Tatsuwo)
あーゆーアルゴリズム系な話大好き。形態素解析大好き。なので大変参考になりました。

6年前に作ったプログラムにテストコードを書きました ^^); ~~ テスト駆動開発の薦め (Yuumi)
「テストファーストは宗教です」とか言う声がどこかから聞こえてましたが、それはさて置きボクもテストほとんど書いてません。おっしゃるとおり後々楽になりたいので書きたいので、DBやネットワーク周りなんかを考慮したテストの書き方Tipsをこの次は期待しています。

Flash with perl (typester)
以前、Flashを使ったファイルアップロードやSocketを使ったチャットなんかを作ったことがあるので、perlの話がなくても楽しかったです。それにしても、Flashアップローダーのデメリットが知りたい。

続イメージファイト (TAKESAKO)
個人的に(っていうかみんな)毎回楽しみな竹迫さんのプレゼンはやっぱりステキでした。ブラウザの挙動というかバグというかを逆手に取った判別方法は使えるかどうか別にして新しかったです。それにしてもlynxまでちゃんと調べる辺りが・・・

リビドー駆動開発によるPlaggerとCatalystを使った(Mashup)サイト開発 (yusukebe)
今回、一番うけたプレゼン。技術的な話うんぬんはどーでもいいです。あのパワーは見習いたい。

というわけで、他にもたくさんのお話を聞けましたが、当方の勉強不足と経験不足で理解が足らなかったことも多々あったのが、ちょっと悔しかったです。特に、Gungho, Swarmage, POE::Component::MDBAによるデータ収集 (牧)やMogileFSのplugin拡張 (ZIGOROu)辺りは避け続けて来たけど、そろそろやらんといかんところなので今後の課題としたいと思います。

あと、関係ないとこで今回はustで顔出ししてることもあり、たくさん挨拶したいなと思ったのですが、照れ屋さんなのと時間がなくてtypesterさんだけ挨拶になってしまいました。この辺も反省。

あと、typesterさんに「中日ほぼ2位おめでとうございます。」言い忘れたのも反省。

とにもかくにも、関係者の皆様ご苦労様でした!

プロフィール

このアーカイブについて

このページには、2007年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年9月です。

次のアーカイブは2007年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。