Sunday, July 31, 2011

B'z/C'mon

2011/7/27発売。
今回タイアップが多くなっております。
曲紹介の記事があまりないので、僭越ながら私めが主観に基づいて紹介したいと思います。

[曲紹介]
1. C'mon
大震災後にできたというこの曲。
歌詞は「離れてしまえば ぼやける故郷(ふるさと)の灯」から始まる。
大事なものを失い、誰かの泣き声が聞こえてくる絶望の環境でも、
ゆっくり確実に立ち上がろう、というメッセージが全編に渡ってます。
曲は、アコースティックギターのゆったりとしたスクロールのメローなリフ、
サビは爽やかなシーケンスでメッセージ伝達重視の曲。
この曲自体のPVはyoutubeに開設されたB'z公式チャンネルで高画質動画を閲覧可能です。

2. さよなら傷だらけの日々よ
乾いたギターサウンドと乾いた歌詞で「はばたけ」っていう感じのコーラのCMに合わせた作りのハードロック曲。
個人的にはマーチっぽいなぁというサビと分厚いコーラスが売りだと思います。

3. ひとしずくのアナタ
3/4のディレイを利かせた得意の刻みのギターから入るサイケ風アレンジの曲。
メロディーは昔工藤静香が歌ってそうな懐かしい感じのするマイナー調。
歌詞は、ひたすら男の餓えと懇願、という感じ。切なさが出ている。

4. Homebound
コテコテしっとりのバラードで、アレンジは永遠の翼に近いストリングスとピアノ、ゆったりベース。
家族を思い起こさせる歌詞で、アルバムの中ではオアシス的な存在になっている。

5. Don't Wanna Lie
3拍子だが疾走感がある前向きな曲。変われない自分を変えるとき、という前向きな歌詞。
ギターは刻みに徹していてアレンジに溶け込んでおり、曲の完成度がかなり高い。

6. DAREKA
アルバム曲なのに一番はじけている曲。
自虐的かつ世の中を達観して、こんな感じで人生進んでいくよね、という若さを全面に出した歌詞。
はじけたホーンでビッグバンド的な楽しさを感じられる。

7. ボス
ジャズアレンジだがサビは完全に昭和歌謡曲という面白い曲。

8. Too Young
これはどっからどう聞いても昭和歌謡曲。
live gymがダンスホールになるのではないかと思ってしまいます。

9. ピルグリム
ゆったりリズムの乾いたマイナー調から入り、いきなりえぐるギターリフで目を覚ますロックバラード。
歌詞は訴えかける最後が印象的。

10. ザ・マイスター
サッカーの応援ソングのような縦ノリで「オウオウ」というコーラス。
自分を鼓舞する、自分を貫く、という歌詞。

11. デッドエンド
お気に入り。
ジュディーオングの曲のような入りで、「えええ??」と思っていたら濃いリフ、濃いコーラス、濃いベース、
ちょっと暗いメロディ。いやーオリジナリティ全開です。
歌詞は、いまいちわかってないが、追い詰められてるようだがそんな状況を続けてくのが自分の人生、といっている。

12. 命名
NHKみんなのうたで流れそうなバラード曲。
命名とは命に名をつけること、希望にあふれてたあのときの気持ちと一緒に生きる、という歌詞。はばいていきそうな曲。

13. Ultra soul 2011
夏、水泳、といえばこの曲。
アルバム全編でベースのバリー・スパークスが大活躍しているが、
バリーの効果が一番見える曲。
とにかく今回のB'zは刻みが気持ちよくなっている!

Thursday, July 14, 2011

Google App Engine for Goをインストール

2009年11月ごろにお披露目されましたGo言語で2010年初頭に遊んだ経験がありました。
2011年5月に、やっとGoogle App Engineのサポート言語第3号としてGo言語が登場しました。
(第一がPython, 第二がJava)
これは、あまりぱっとした適用分野が見つかっていなかったGo言語陣営にとって期待の星のようです。

早速Google App EngineのGも知らない私が、Go言語を1Kステップくらい書いたことがあるレベルで取り組んでみます。

1.まず、Go言語開発環境を作り直しです(笑)
Goのランタイムエンジンはだいぶ頻繁に改良を重ねております。
2011年7月現在r58.1という数字がついており、そんなメジャーバージョン番号あるのか?と突っ込みたくなるだけでなく、
本当にいろいろ改良されており、Makefileやら周りのツールも全く互換性がありません。
2010年に私が作った環境からはだいぶ差分が蓄積しているようでした。
(primitivesのひとつ、floatもないのかよ、というレベル)
そこで、開発環境をまっさらから作り直します。
下記資料を参照します。
http://golang.org/doc/install.html#tmp_17

1.1開発環境最新版ソースをダウンロード。
まず、googlecodeにあるGo言語開発環境の最新版をインストールします。
このためには、hg(mercurial)パッケージが必要です。
私の使っているFedora 14では、yum install hgと打つといろいろ依存性が解決されてhgがインストールされました。
ubuntu系ではapt-get install mercurialとなるでしょうか。
問題ないなら、下記を打ってみましょう。
hg clone -r release http://go.googlecode.com/hg/ <自分のGo用ディレクトリのパス>
hgパッケージがgooglecodeから開発環境最新版ソースをダウンロードしてくれます。
このディレクトリパスが、これからの作業場所になります。

1.2開発環境バイナリを自動生成。
ディレクトリ内のsrc/all.bashを叩くとバイナリは自動生成されます。
ただダウンロードしただけではsrc/all.bashは動いてくれません。
ちゃんと上の資料に書いてあるとおり、gawkやedをインストールすれば、ちゃんと動いてくれます。
all.bashが動けば、Go言語で書いたスクリプトをコンパイルするためのバイナリファイルが生成されます。
もしできなかった場合は、上記必要パッケージが入っていないか、Go専用環境変数($GOROOT, $GOARCH, $GOOS)が正しいか、
確認して下さい。おそらく、64bitなのに386と指定しているなどではないでしょうか。

2.Google App Engine用のSDKをダウンロードする。
Google App Engineでは、PythonやJavaやGoで書いたプログラムをGoogleにアップロードして、
サービスを動かします。
やるべきことは、プログラムを書くこととアップロードすることです。
プログラムを書くのを助けるのは、プログラムのテスト環境です。
アップロードを助けるのは、アップローダですね。
これらを提供するのがGAE SDKです。
いずれもpythonランタイム上で動くプログラムで書かれているので、
「私はGo言語だけをやりたい」という人でも、Pythonランタイムを入れておけばテストが簡単になったり嬉しいことがあります。
私はFedoraにyum install pythonして上記Pythonランタイムを用意しました。
本命のSDKは下記からダウンロードします。
http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Go
zipファイルなので好きなところに展開します。私はユーザディレクトリの直下。
よく使うコマンドが入っているので、パスを通してあげます。
私のFedoraでは、.bash_profile末尾に下記を追記して、最後にコマンドをうちます。
【追記】
export PATH=/***さっき展開したところ***/:$PATH
【コマンド】
source .bash_profile

下記資料も参照しました。
http://d.hatena.ne.jp/ma_chupic_chu/20110623/1308813211

3.helloworldを動かしてみる。
まずはHelloworldの詳細が書いてあるドキュメントをダウンロードします。
http://code.google.com/appengine/downloads.html
zipですので好きなところに展開し、index.htmlを開きます。
hello worldという章がありますので、ここに書いてある通りに、2つのディレクトリと2つのファイルを作ります。
myapp/
app.yaml
hello/
hello.go
hello.goの中身は下記のような感じです。
package hello

import (
    "fmt"
    "http"
)

func init() {
    http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello, world!")
}
私は匿名関数を何かと使いたがるので、下記のように書き換えてしまいます。

package hello

import (
    "fmt"
    "http"
)

func init() {
        http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) () {
                fmt.Fprint(w, "Hello, world!")
        })
}

myappディレクトリの上位に移動して、dev_appserver.py myappと打ちますと、テストが実行されます。
テストでは、自作プログラムが簡易webサーバ上で動くので、ブラウザからサーバにアクセスすると結果が得られます。
テストが実行されている最中に、ブラウザからlocalhost:8080を起動しますと、下記のような結果が得られました。

いかがでしょう。Goランタイムはもしかするとおまけかもしれませんが、開発環境として漏れのない環境を作ってみました。