smellman's Broken Diary

クソみたいなもんです

OSMのデータをつっこんだPostGISとTileStacheを組み合わせてベクタタイルを試してみた

手元でベクタタイル動かせたら面白いなぁというよくわからない欲求を持っていたんですが、ついうっかりやってしまいました。

今回使うのは以下のプログラム。

TileStache
軽量なタイルサーバ兼キャッシュサーバ
OSM.us-vector-datasource
http://openstreetmap.us/%7Emigurski/vector-datasource/ でつかわれてるTileStacheの設定

なお、今回はOSM.us-vector-datasourceにmacports向けの設定を書きつつ、PostGIS2に対応したものを用意しました。

前提条件として、前回の記事で書いた内容にあるデータを突っ込んでいる状態からスタートです。

MacPorts環境にosm2pgsql入れてOpenStreetMap CartoをTilemillで動かしたって話 - smellman's Broken Diary

まずは作業場所を作成します。

mkdir TileStache
cd TileStache
virtualenv-2.7 env
source env/bin/activate

次に依存関係の解消します。MacなのでPILの代わりにPillowを入れます。また、Shapelyはpipで入れようとするとgeos_c.hが見つからないとエラーになるので手動で入れています。

pip install -U Pillow
pip install -U modestmaps simplejson werkzeug
pip install psycopg2
git@github.com:Toblerity/Shapely.git
cd Shapely
python setup.py install
cd ..

次にTileStacheのインストールです。

git@github.com:TileStache/TileStache.git
cd TileStache
python setup.py install
rehash
cd ..

そして、OSM.us-vector-datasourceを導入します。今回は僕のレポジトリから取得します。

git clone git@github.com:smellman/OSM.us-vector-datasource.git local_vector_datasource
cd local_vector_datasource
git checkout macport_postgis2

最後にサーバの起動なんですが、標準のtilestache-server.pyだとアクセスが多いとsocket.pyでError 32が出てしまうので、gunicornを使って起動をします。

pip install gunicorn
gunicorn -b 127.0.0.1:8080 "TileStache:WSGITileServer('/Users/btm/develop/osm/TileStache/local_vector_datasource/tilestache.cfg')"

あとは確認をします。

curl http://127.0.0.1:8080/highroad/15/29088/12902.json

無事にJSONが帰ってきたら成功です。

では、d3.jsのVector Tilesのサンプルを参考にURLを127.0.0.1に向けて、最初の表示位置を日本にしてみます。gistからダウンロードして下さい。

https://gist.github.com/smellman/400adff2dece5f6854d6

これをブラウザで開いて上手く行けばOKです。

f:id:smellman:20141018030023p:plain

明日のOSC2014 Tokyo/FallのOpenStreetMapのブースでこちらのデモを行うと思います。ぜひ足を運んでみてください。

追記

ベクタタイルに必要なデータが足りなかったので補足します。

まず、OSM.us-vector-datasource にdataというディレクトリがあるのですが、この中のファイルを取り込む必要があります。

cd OSM.us-vector-datasource
cd data
unzip land-usages-naturalearth.zip
unzip water-areas-naturalearth.zip
PATH=/opt/local/lib/postgresql93/bin:$PATH ./shp2pgsql.sh|psql -U postgres gis

次にwater-polygonsを取り込みます。これは openstreetmapdata.com が配布してるWater PolygonsのShapeファイルを取り込みます。

mkdir water-polygons
wget http://data.openstreetmapdata.com/water-polygons-split-4326.zip
unzip water-polygons-split-4326.zip
/opt/local/lib/postgresql93/bin/shp2pgsql -dID -s 900913 -W Windows-1252 -g the_geom water-polygons-split-4326/water_polygons.shp water_polygons|psql -U postgres gis

あと、topojsonでも試してみました。

f:id:smellman:20141018061515p:plain

デモは全てgithubレポジトリにまとめました。

smellman/osm_vector_tiles_local_demos · GitHub

MacPorts環境にosm2pgsql入れてOpenStreetMap CartoをTilemillで動かしたって話

とある事情によりOpenStreetMap Cartoを手元で動かす必要があり、また個人的にもOpenStreetMapのデータが入ったPostgreSQLが欲しかったのでセットアップをしてみた。

まず、osm2pgsqlのインストールで必要なライブラリをいれる。

sudo port install protobuf-c protobuf-cpp
sudo port install proj47

他にもgeosとかいろいろいれる必要がありますが、qgisとかMacPortsで入れていればだいたい入ってると思う(何

あと、PostgreSQL 9.3+PostGISも別途入れておきます。

次にosm2pgsqlのインストールです。

git clone git://github.com/openstreetmap/osm2pgsql.git
cd osm2pgsql
./autogen.sh
./configure --with-proj=/opt/local/lib/proj47 \
  --with-protobuf-c-inc=/opt/local/include/google/protobuf-c
  --with-protobuf-c-lib=/opt/local/lib
  --with-protobuf-c=/opt/local
make
sudo make install

ポイントとなるのはconfigureで必ずproj47とprotobuf-cの場所を指定することです。特にprotobuf-cはincだけ指定してもダメだったりしてはまったりした。

次にpostgresqlgisというデータベースを作成します。注意点としてはMacPortsのデフォルトなので権限がかなり緩いです。

sudo su postgres -c 'createdb gis'
psql -U postgres -d gis -c 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;'

あとは日本のデータをosm2pgsqlを使って投入します。
なお、以下のものでだいたい10GBぐらいメモリ消費するっぽいのでそれなりに気をつけてください。

wget http://download.geofabrik.de/asia/japan-latest.osm.pbf
osm2pgsql --create -U postgres -H 127.0.0.1 --database gis --slim -C 8000 --flat-nodes fuga japan-latest.osm.pbf

では、次にopenstreetmap-cartoを導入します。

git clone git@github.com:gravitystorm/openstreetmap-carto.git
cd openstreetmap-carto
./get-shapefiles.sh

get-shapefilesはopenstreetmap-cartoのproject.mmlから参照されるファイルをセットアップするために必ず実行します。

あとはTilemillのprojectフォルダ(~/Documents/Mapbox/project)にopenstreetmap-cartoのディレクトリをまるごとコピーします。

次にTilemillを起動するとOpenStreetMap Cartoというプロジェクトが増えてるので開きます。

f:id:smellman:20141016004602p:plain

するとこけます。
これはPostgreSQLのユーザが同じではないからです。
手っ取り早く動かすにはPGUSER変数を使いましょう。

PGUSER=postgres open /Applications/TileMill.app

これでうまく...いきません。

f:id:smellman:20141016004623p:plain

上記のエラーではNAMEという属性が無いというのです。

実はさっきopenstreetmap-cartoのget-shapefiles.shを実行した時に次のようなエラーが起きてました。

processing ne_10m_populated_places...
ERROR 1: Failed to create field name 'SCALERANK' : cannot convert to UTF8
ERROR 1: Failed to create field name 'NATSCALE' : cannot convert to UTF8
ERROR 1: Failed to create field name 'LABELRANK' : cannot convert to UTF8
ERROR 1: Failed to create field name 'FEATURECLA' : cannot convert to UTF8
ERROR 1: Failed to create field name 'NAME' : cannot convert to UTF8
ERROR 1: Failed to create field name 'NAMEPAR' : cannot convert to UTF8
ERROR 1: Failed to create field name 'NAMEALT' : cannot convert to UTF8
ERROR 1: Failed to create field name 'DIFFASCII' : cannot convert to UTF8
...

これはogr2ogrで処理してる部分でどうも変換できないというものなんですが、なんとなくogr側の問題な気がします。

とりあえず動かすためにogr2ogrから--configの指定を削除します。

diff --git a/get-shapefiles.sh b/get-shapefiles.sh
index 65fc306..acc6087 100755
--- a/get-shapefiles.sh
+++ b/get-shapefiles.sh
@@ -69,7 +69,7 @@ unzip $UNZIP_OPTS data/land-polygons-split-3857.zip \
 #process populated places
 echo "processing ne_10m_populated_places..."
 rm -f data/ne_10m_populated_places/ne_10m_populated_places_fixed.*
-ogr2ogr --config SHAPE_ENCODING UTF8 data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp data/ne_10m_populated_places/ne_10m_populated_places.shp
+ogr2ogr data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp data/ne_10m_populated_places/ne_10m_populated_places.shp
 
 #index
 echo "indexing shapefiles"

これであとはget-shapefiles.shを実行します。

processing ne_10m_populated_places...
Warning 1: One or several characters couldn't be converted correctly from UTF-8 to ISO-8859-1.
This warning will not be emitted anymore.

上記のようにWarningが出ますが、とりあえずはOKとしておきます。

これであとは先ほどと同様にTilemillのprojectフォルダにopenstreetmap-cartoディレクトリをコピーしてから、PGUSERを指定した状態でTilemillを起動します。

f:id:smellman:20141016004656p:plain

無事起動しました。

f:id:smellman:20141016004708p:plain

時間はかかりますが日本のデータは入れているのでちゃんとスタイルが入った状態で表示されます。

さて、ここで編集...と思ったら速攻困ったことになります。

f:id:smellman:20141016004722j:plain

mmsファイルが4つしか表示されていません。

How to handle overflowing stylesheet tabs? · Issue #190 · mapbox/tilemill · GitHub

具体的にはこのバグなんですが、ここに手っ取り早い解決方法があるので手動で直してしまいます。

vim /Applications/TileMill.app/Contents/Resources/assets/css/style.css

ここの.tabsの定義を以下のようにします。

.tabs {
  float:left;
  position:relative;
  /* overflow:hidden; */ /* comment out */
  overflow-y: scroll; /* add */
  height:30px;
  padding-left:10px;
  }

やってることはoverflowの定義をコメントアウトしてoverflow-y: scroll;を追加するというものです。

これで起動します。

f:id:smellman:20141016004802j:plain

スクロールバーが出てきて無事に最初に見えていたファイル以外が編集が可能となりました。

とりあえず新しいUIのものをリリースして欲しいのだけど、どうもデスクトップ版Tilemillは今後出てくるのかどうかが微妙な気がします。Mapbox Studioも出てしまったし...

gdal2tiles.pyでコケるパターンの対処法

gdal2tiles.pyを使っているとたまにこんなエラーでコケることがあります。

ERROR 5: Illegal values for buffer size
ERROR 5: Illegal values for buffer size
Traceback (most recent call last):
  File "/usr/bin/gdal2tiles.py", line 2262, in <module>
    gdal2tiles.process()
  File "/usr/bin/gdal2tiles.py", line 478, in process
    self.generate_base_tiles()
  File "/usr/bin/gdal2tiles.py", line 1264, in generate_base_tiles
    dstile.WriteRaster(wx, wy, wxsize, wysize, data, band_list=list(range(1,self.dataBandsCount+1)))
  File "/usr/lib/python2.7/dist-packages/osgeo/gdal.py", line 796, in WriteRaster
    buf_pixel_space, buf_line_space, buf_band_space )
TypeError: not a string

これが起きるのはどうも元データの解像度が良くないというのがあって、画像のサイズを変更するとうまくいくというなんでそうなったんだみたいなFAQが出てきます。そして本当に画像のサイズを変更するとうまくいくのでなんじゃこりゃっていう感じなんですが、とりあえず対応手順をメモしておきます。

今回利用するのは地球地図のフィリピンの標高データです。というか僕が試してコケたのがこのデータだけなんですが。

地球地図については省略というか、今月末のFOSS4G 2014 Tokyoでセッションをやるので来ていただきたく(宣伝)。

さて、まずダウンロードしたzipファイル(gm-phl-el_1_0.zipという名前のはず)を解凍します。

解凍するとglobalmというディレクトリができます。
この中の globalm/area/raster というところにbilファイルが転がっているので、とりあえずこいつを一つのGeotiffにします。

gdalbuildvrt --config GDAL_CACHEMAX 1024 merged.vrt globalm/area/raster/*.bil
gdal_translate -a_srs EPSG:4326 --config GDAL_CACHEMAX 2048 merged.vrt merged.tif

次にこのファイルの解像度を変更してやるんですが、先に大きさを調べます。

gdalinfo merged.tif

出力でSize is というところをチェックします。

Size is 1800, 3000

次にこのファイルをgdalwarpで変換をかけます。ここでのポイントは2つあります。

  1. -ts オプションで倍の解像度にする(倍じゃなくていいけど)
  2. -srcnodata オプションをつけてno dataとして扱う値をちゃんと指定しておく。(これをしておかないと変なデータになる)
gdalwarp -overwrite -s_srs EPSG:4326 -r near -ts 3600 6000 -of EHdr -srcnodata 9998 merged.tif output.tif

あとはQGISで読み込んでSingleband pseudocolorでがんばって色付けします。

f:id:smellman:20141015003459p:plain

あとはこのレイヤーを画像として保存します。

f:id:smellman:20141015003800p:plain

この時の注意点は二つ。

  1. ExtentのLayer Extentというボタンを押す。
  2. Create OptionsでProfileを選んでおく。

これで変換可能なGeoTiffが出来たので、gdal2tiles.pyで処理します。

gdal2tiles.py -r near -e -v -z 4-6 el_phl_test.tif output_tiles

とりあえず、要点としては以下の二つ。

  1. gdal2tiles.pyでこけたらgdalwarpで解像度を変更する
  2. FOSS4G 2014 Osaka/Tokyoに遊びに来て下さい

なお、FOSS4G 2014 Osaka/Tokyoの固定ページがないのは僕がWebサイト構築をする余裕が無かったからだと思います!!!!!!!

千葉市のオープンデータを使った二種類のサイトを公開しています

先月あたりから千葉市のオープンデータを使って二つほどサイトを作りました。厳密には二種類のサイトですが。

千葉市ごみ分類辞典検索

一つ目のサイトは千葉市ごみ分類辞典検索です。

元のデータは 千葉市:ごみ分別事典(50音順) です。
たしか千葉市議員の方がFacebookで公開されたっていうのを紹介していて、その日のうちに作りました。
いわゆるむしゃくしゃしてやったってやつです。
やってることは Papa Parse というCSVパーサでさくっとテーブルを作って、 @hail2u さんの jquery.table-filter を使って検索文字列でフィルタを掛けるというお手軽なものです。
ちなみに Papa Parse で Content-Range に対応してないサーバ(具体的には python -m SimpleHTTPServer です)を使った場合にバグがあるので Pull Request 送ったら help wanted ってタグ付いてる状態なので誰か見て欲しい(汗

千葉市版5374.jp

2つ目のサイトは 5374(ゴミナシ).jp千葉市版です。
こちらは 千葉市稲毛区版5374.jp があったので、それ以外を作りました。

これは千葉市ごみ分類辞典検索を作ったところ、翌日に千葉市職員で千葉市のオープンデータ関係の前担当の知り合いから連絡が来て、現担当の方が5374.jpを作りたいというので相談に乗って欲しいという話をされたのがきっかけ。
で、現担当の方がそのタイミングだと用事があるというので、連絡を取り合う前に先に前担当の方が上記のごみ分類をベースに5374.jpように作っていたファイルをもらって内容を確認しつつ他に必要なデータとかを調べてたら、あとは 千葉市:家庭ごみ・資源物の収集日 というデータがあればできてしまうことに気づいてしまい、ついうっかり連絡取る前に作ってしまったというもの。
あきらかにむしゃくしゃしてやったってやつです。
作る上で面白かったものとしては、美浜区でゴミの収集がまったくないというものがあって、それが原因で動かないというのがありました。
これは空気輸送収集という仕組みがあるらしく、こんなやつらしい。

これは幕張ベイタウンにあるごみ処理システムで、各マンションにごみ投入口があり、ここに捨てると地下パイプを通じてクリーンセンターという施設で一括処理されるというものです。

ベイタウンの空気輸送システム: 千葉市長:熊谷俊人の日記

なにそれヤバイ。俺の家に欲しいw
とにかくこれに対応すべく修正を加えたのだけど、この対応の Pull Request を作るのに手間取ってしまって公開が昨日まで遅れるというなんとも雑なことになりました(汗

今回は地元に対して新しい発見もできたり、2件Pull Requestを出すことができて個人的にはかなり満足しています。
ちなみに両方共仕事の合間にやっていていいストレス解消になりました。

あと、オープンデータはプログラミングの勉強の題材なんかにもよいのではないかなーと思います。
データを眺めてこんなの作れるかなーと思ったら作ってみるみたいなのは結構訓練になるし、ライブラリの調査とかも普段調べてないものとかを知るいいチャンスだと思います。

エンジニアを定量化なんてしてはいけない

ネタ元: 「エンジニアをつくる」という理念掲げていたら、エンジニアが社内からいなくなった件 | 新田章太の「エンジニアをつくる」ブログ

話の発端は、 俺がDMTCについて知ってること,またそれに対する所感 - 職質アンチパターンFacebookで話題になっていて、やばいなぁと思っていたら主催者もやばかったみたいな話。
内容自体ただヤバイんだけど、その中でも明確にツッコミを入れておきたい部分があった。

僕らの強みはDMTCを通じて、沢山のお客様とのつながりがあること

このつながりを活かして、

国内外のIT企業で働くエンジニアのスキルを定量化しよう

というひとつのテーマにいきつきました。

http://maximum80.me/archives/821

この部分についてFacebookで俺はエンジニアをバカにしてるって書いたけど、もうちょっと具体的に落としこもうと思った次第です。

ものさしに対するwizardとかguruとかの存在

定量化となると数量などで物事を測る必要があります。
ものさしですね。
例えば、AさんのLDAPのスキルは80ポイントとか。
上限を持つかどうかによっても変わるんだけど、上限を持ってるパターンと上限がないパターンを両方想定してみる。

ハッカソンをやってるっていうことは当然ある程度ハッカー文化についても調べていると思うんだけど、世の中にはwizardとかguruみたいな人がいます。
仮に僕のLDAPのスキルが100ポイントだとします。
僕のLDAPの経験は20台ぐらいの仮想サーバで構築されているWebサービスを僕だけで構築した上にLDAPでアカウントとかを適切に設定するとかそんな程度です。
わりと普通のインフラエンジニアのスキルです。

この場合で上限がないパターンを考えた時に、僕の知る限り一名ほど5000ポイント超えてるよねみたいな人がいます。
誰とは言いませんが、普通のエンジニアに比べるとどうしてもそのぐらいのスキルだよねーみたいな人結構います。
でも、その人が僕の約50倍働くというわけではないです。
あくまでスキルの違いがそれぐらい差があるというだけです。
エンジニアのスキルは天井がないようなものです。
そういう人たちがwizardやguruという人たちです。

さて、次に上限を設けた場合がもっと嫌なパターンです。
たぶん、この手の経験でいうとわりと現場で使えるレベルのものを僕はやっているので、一般的な求人とかで上限maxぐらいの位置にはいそうです。
しかしながら、さっき言った上限のないパターンで5000ポイントある人も僕と同じ条件になってしまいます。
ですが、明らかにやれることが全く違います。
むしろ同じにされると困るのです。
だって、「同じ数字だからお前を雇ったのにぜんぜん違うじゃないか」とか言ってくるんでしょう?
じゃ、そうならないように上限をそのwizardの人に合わせてみましょう。
wizardの人が100ポイントで、僕が2ポイントとなります。
カスですよね。
結局このような数字があることは雇う側も雇われる側も不幸なだけです。
そして、これらの数字は雇う側の都合でしかないのです。

スキルの上下

次に僕が言いたいのはエンジニアのスキルがあっさり上下するということです。
僕はさっきLDAPの例で仮に100ポイントとしましたけど、この数字自体は僕がその現場に居た頃の話です。
二年半ぐらい立ちますので結構忘れてることが多いのです。
たぶん、40ポイントぐらいまで下がってると思います。

しかし、またその現場に戻れば100ポイントに戻せる事ができるという自負はあります。
それでも、それは「その現場」の数字です。
例えばLDAPでも要求されることが変わればある程度やらなくて済むところも出てきますし、台数とかでもコツとか変わってきます。
それこそもっと大規模な構築が必要とされる現場に行けば200ポイントとか300ポイントとか行くんじゃないでしょうか。
つまり、スキルというものは外的要因が強くあるところがあります。
それによってあっさり上下するものです。

ポテンシャルの話

スキルの上下と同じような話なんだけど、エンジニアのポテンシャルについても言及する必要があると思います。

僕自身Ruby on Railsをメインとして扱っていて、経験も豊富な方です。
ここでも仮に僕のスキルを100ポイントとしましょう。
ですが、仮に僕の知ってるとあるAさんが仕事で必要だったりして一週間Ruby on Railsについて勉強しだしたりします。
勉強前はまったく経験がないので0ポイントであっても、その一週間で500ポイントぐらい行くだろうと思います。
そもそもバックグラウンドが全然違いすぎます。
経験豊富なエンジニアでかつ恐ろしく高度なところで戦ってる人はわけがわからないぐらいポテンシャルを持っています。
正直、そんな人を定量化とかしたって意味が無いんです。
だって、その人できるんだもん。

現場の話

最後に現場の話をしましょう。
ここは完全に僕の経験からの話です。

若いエンジニアと一緒に仕事をした時のことです。
そのエンジニアは周りの人はそこまでいい評価をしていませんでした。
今でも良い評価はほとんど耳にしていません。

しかし、僕はそのエンジニアと一緒に仕事をしたときに長所と短所がありました。
短所はよくミスをすることです。
たぶん、それが周りの評価が悪い原因だと思います。
しかし、長所は恐ろしくコードを書くスピードが速いのです。
僕が考えてる間にコードが出来上がってることがしょっちゅうでした。

ただし、僕の場合は考える時間が長い方というか考えすぎなところもあったりします。
周りがどう思ってるかわからないのですが、僕は仕事が遅い方だと感じています。
しかし、そのエンジニアとペアを組んだ時に良い作用が働きました。
そのエンジニアがコードを書いて、そこから間違えを見つけたり設計手法でより良いものを教えたりと、懇切丁寧にやっていきました。
すると、一緒のペアの時にそのエンジニアが少しずつバグが少なくなり、書くコードも良くなっていきました。
結果としてこのペアが相性が良かったと思います。
そのエンジニアがひっぱっていくことで、仕事もわりと順調に進み、すごく良い仕事ができました。
この成功体験の結果、ついでに僕のうつ病も治りました。

現場ではいろんな作用があります。
一緒にいる人が良ければ良くなることも、悪ければ悪くなることも、どっちでもないこともあります。
仕事をしている以上アウトプットは必要です。
そのアウトプットのためにいろんなできることがあります。
現場では常に工夫が必要です。
工夫次第ではダメなこともあります。

「これこれができるエンジニアを連れてきた」
よくある話だけど、「これこれができる」からと言ってその後一緒にプロダクトを作る能力があるとは限らないのです。
定量化された数値を元にエンジニアを連れて来られても、その人が書いたコードが駄目すぎて「なんで雇ったんだクソが!」みたいなのはしょっちゅうです。
でも、ダメなコードを書いていても現場で育てることができればそれは勝ちですし、価値があります。
数字ではその人の長所短所は示せないのです。
システムはエンジニアがというよりも「人」が作ってるものだということをちゃんと理解しましょう。

Venetian Snares / My Love Is A Bulldozer

Venetian Snaresの新譜がついに発売されました。
いちおうPlanet MuでCDR付きのPRE ORDERのCDを注文してるんですが、
届くわけもないので速攻MP3で購入しました。
なお、iTunes及びAmazon MP3では明日販売開始のようです。

約四年ぶりの新譜です。
前のTAICOCLUBでもいくつかプレイしたのを聞いたけど、家でじっくり聞けるのはすごく嬉しいです。

さて、本作は前のフルアルバム My So-Called Life と比べるとメランコリーなテイストが強くもありつつ、基本的にはおかしい曲ばかりです。
完全に静かな曲も交えてるのはMy Downfall (Original Soundtrack)に近いもの感じもある。
というか、まさかのギター・ソロみたいな楽曲まで入れてやがる。
おかしいだろw

まず1曲目の10th Circle Of Winnipeg。
だいたいタイトルにWinnipegって付いてると嫌な予感がするんですが、予想通りですね。
最初のジャズっぽい流れとそれっぽい女性ボーカルから違和感なく変なシンセが混じりあって静かにおかしいドラムが鳴り響きます。
そしてその中盤激しいのか激しくないのかわからないドラムでリズム感がドンドン崩壊したと思ったら、ジャズっぽい音を挟んでからシンセとドラムの狂気的なリズムがひたすら続きます。
本当に曲のスピードとドラムの音の数がまったく合ってないw
最後はジャズっぽく終わらすけど、なんだこれって感じw

3曲目の1000 Yearsは静かに始まったと思ったらまさかの歌もの。
しかも歌で最後叫んだらアーメン炸裂!
で、途中で一回曲が静かになったと思ったらまた歌が入ってからーのアーメン。

5曲目のAmazon先日書いたので割愛。

6曲目のMy Love Is A Bulldozerは表題曲の期待を全く裏切らない楽曲です。
アーメンを交えながらの歌ものから一気に叩きこむ鬼畜すぎる展開は最高だけど、その後鬼畜さをキープしながらまた歌ものに突入する凄さがヤバイ。
後半で少し落ち着くけどすぐさまアーメンの応酬が始まり一体何と戦ってるんだこれみたいな感じ。
最後の終わり方といい、むちゃくちゃが過ぎる。

7曲目のShe Runsはわりと意外だった曲。
というのもメランコリー感たっぷりながらドラムをかき鳴らす楽曲というと最後に持ってくるイメージが強かったんだけど、今作ではこういうのが中盤で来たのが珍しいなと思った。
曲の構成としてもすごくキレイで、Venetian Snaresのヤバさが相当出てる。
キレイさというとHospitality EPを思い出させるような高揚感もあってとても良い。

9曲目のShaky Sometimesは完全にジャズ方面に振り切ろうとしたところ、途中で変なシンセの音を拾ったせいで、キチガイなプログラミングに目覚めましたみたいな変態楽曲。
ってか、すごくキレイだったのに気づいたらただの変態楽曲になってるんだぜ。

11曲目のDear Poetは初めこそはキレイだけど、途中からやんわりとキチガイドラムが入ってきていろいろ台無しにするすごく素敵な楽曲。
全体的にクラシック感が強いんだけど、よくわかんないボイスに異常なドラムが壮大さを華を添えるという面白展開。
途中からクラシック感無視したと思ったらしょっちゅうそれっぽい音混ぜるし、壮大なる異常さしかない感じがすごく面白い。

最後の楽曲は壮大なクラシックっぽいので終わりでやっぱりMy Downfall (Original Soundtrack)に近いイメージ。
でもまぁ、今回も最高にイカれたアルバムに仕上がってました。
あー、本当に生きてて良かった!

ちなみに最初日本盤が予定されてるらしいって話があったようなんだけど、どう考えてもAmazonのサンプリングがやばくて無しになったんじゃないかなとしか思えないwww

My Love Is a Bulldozer

My Love Is a Bulldozer

TAICOCLUB'14に行って来た

5/31及び6/1の二日間TAICOCLUBに行って来ました。

朝8時に東京駅近くでバスツアーに乗車。
乗って10分後ぐらいに吐きそうになってすごくグロッキーな時間を過ごしました。
病み上がりなので本気でやばかったです。

あと、周りの人みんなテントとか持ってきてるんですよ。
見た感じ僕以外誰も手ぶらな人がいない...
フェスってどういうものか知らないで、Wireよりちょっと長いイベントぐらいの感じで来てしまったんですよね(汗
コレがいろいろやばかったです...

とりあえず到着してビールを飲みつつ野外音楽堂に移動してプレイを見ながら昼寝。
芝生がエライ気持ち良かったです。

次に一組目の目当てのLightning Boltを見にメインステージへ。
やばかったです。
演奏中の盛り上がり方がやばくて、人が人の上で舞ってるんですよ。
で、演奏止められて会場から注意のアナウンスがw
演奏再開後はたしかに少し抑えめになったんですが、最後までものすごいテンションのプレイでした。

続いてBibio高橋幸宏&METAFIVEを最前列で鑑賞。
高橋幸宏&METAFIVEの準備中にまりんが見えておおーって思ったんだけど、
演奏中にどこにいるんだろうと思ってたら帽子とメガネ(かな?)でなんか印象が変わって、
紹介されるまであのチェッカーズの鶴久さんみたいな人は誰だ?って思ってた(汗
あと、コーネリアスが後方で演奏してて斜めの位置からだと見れなかったのが残念。
一度でいいから拝みたい。

次のサカナクションが始まるタイミングでOtherman Recordsのothermoonさんとebi1000さんと合流。
遠くでサカナクションを見ながらずっと音楽談義をしてた。

Panda Bearの途中でテントに寝に行くothermoonさんたちと分かれてスチャダラパーを見に野外音楽堂へ移動。
このぐらいから体調がすごく悪くなって、スチャダラパーのステージの人の多さにゲロ吐きそうになってしまいちょい早めに下山。

続いて二組目の目当てであるMount Kimbieを芝生で寝ながら鑑賞。
一曲ごとに「Thank you, ありがと, Thank you」とお礼を言う礼儀正しいプレイが印象的でした。
大好きな曲も一杯やってくれてすごく満足。
ただし、体調はドンドン悪化w

次のJon Hopkinsの間2分ぐらい仮眠とって少し体力が回復したので、また野外音楽堂に。
今度はTim Heckerのプレイだったんだけど、なんとも形容しがたいプレイというか、Venetian Snaresに向けて身体温めたいのに全然身体動かせないww

そして、othermoonさんたちと合流してステージ前まで移動。
ついに来ました、Venetian Snaresです。
このステージを見るためにTAICOCLUBに来たと言っても過言ではないです。
プレイが始まると一回機材トラブルっぽい感じで止まってしまったけどすぐ再開。
夢の様な時間が始まりました。
「あまぞーん、どこいったのあまぞーん」で超盛り上がる異常事態。
音の繋げ方とかも半端無く、とにかくアーメンです。
プレイが始まるときは体調は本当にかつて無いくらい悪くなってて(ってか寒すぎる)、完全に足が死んでて痛みをこらえながら踊ってたんだけど、途中で白いライトが真っ赤に見えてヤバイ死ぬかもって思った瞬間から足の痛みが消えて体調が良くなるというわけわかんない事態も発生。
とにかく異常としか言い様がない1時間でした。
個人的にはEpidermisが生で体感できた嬉しさと、何度も繰り返すUltraviolent Junglistが糞面白くて本当に嬉しかったです。
そして、プレイ終了後にブレイクコアガチ勢がステージ裏に集結したところ、Aaronがファンサービスしてくれた。
僕は握手してもらったけど、othermoonさんはサインしてもらった上に記念撮影してもらっててまじAaronが神というかごついキリストに見えた。
電気グルーヴのネタじゃないけど、「日本のブレイクコアの全てが、ここに集まっています」みたいな状況でした。
本当に最高でした!!!
ちなみに、一番びっくりしたのがothermoonさんが踊りながらトラックリストを作ってたこと。
踊ってる姿後ろから結構見えてたんだけど、どこにそんな余裕あったんだwwww

そのあと飯食ったりしてからThe Black Dogを聞きに行ったり、Disco Unionで買い物をしたりしつつ解散。
僕は8時ぐらいのバスにのってとっとと退散しました。
12時ぐらいにはもう東京駅。
疲労がすごかったのか、帰宅して飯食ったあと数時間倒れてたw
ただ、お陰で風邪が全快しました。
滋養強壮にブレイクコアですね〜
というわけで次はTOKYO DESTRUCTION VOL.8を楽しもうと思います。
Hellfish来日マジ楽しみ〜