kaakaa Blog

この世は極楽 空にはとんぼ

docker rmを楽に実行したかった

docker rmの引数にコンテナID渡すのが面倒。

なので、peco使ってインタラクティブにコンテナID選択できるよう下記のaliasを設定した。 peco で Docker の container ID を楽に選択する alias - Qiita

だけど、普通にdocker rm `P`とかで実行しようと、alias実行で取ってきたコンテナIDをコマンドで実行しようとしてしまうのでうまく行かない。

kaakaa@kaakaa-System-Product-Name:~$ docker rm `P`
138a67d406ca: コマンドが見つかりません
docker: "rm" requires a minimum of 1 argument.
See 'docker rm --help'.

Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers

ちょっと悲しいけど docker rm `echo P`することでzsh上なら動くようになった。 ただ、自分のbash環境だと上みたいなエラー・・・。

これで良いのか感が拭えない。

Mastodonについて思いの丈を

この記事はMETALバンド Advent Calendar 2015 - Adventar の17日目の記事です。

昨日は Natsumi Akai さんの クリーンボイスとスクリームが魅力な女性ボーカルFlyleaf | 音楽 | なちこブログ | Webクリエイターなちこの旅 でした。

FlyleafはDir en greyの薫が紹介してたので知って、1st買いました。
フロントマンとしてのレイシーは色んな意味で魅力的でしたが、まさか脱退してしまうとは…。

というわけで第一回 LoudPark 06出演繋がりということでMastodonの紹介を。

紹介

Mastodonはジョージア州アトランタ出身にて、High on Fireのライブで出会ったメンバーが2000年に結成。

ジャンルはWikipediaによるとプログレ/スラッジ/オルタナティブメタルと、ちょっと取っ付きにくい印象。
しかし、結成当初こそアンダーグラウンド臭の強いスラッジコアでしたが、メジャーデビューあたりからプログレッシブかつメロディアスさが増していき、最近ではメロディアスどころかポップさすら兼ね備えてくるなど、色んな層にアピールできる魅力を持ったバンドです。

最近のポップ化路線については元々MastodonをメタルバンドにしたくないというBrent Hinds(g,vo)の意向が強く、Crack The Skye(2009)の頃にBrentが打ち出す方向を推し進めていこうというバンドとのしての決断があったそうな。 *1

このBrentさんは中々のエンターテイナーで、グラミー賞では素行の悪さにより会場から締め出されたり*2、MTVかなんかののイベントで一緒になったSystem of a DownのShavoと喧嘩になって瀕死の重傷を負うなど*3、話題に事欠かないのが魅力。

f:id:kaakaa_hoe:20151216234913j:plain

音楽の方に話を戻すと、Mastodonとして公式にリリースされているカバー曲も Thin Lizzy / ZZTop / Metallica / Melvins / Flaming Lips / Feist / Harry Nilsonなど多岐に及んでおり、そのあたりからもMastodonのジャンルレスさが伺えます。

最初に記事書こうとしたときに、ここらへんの情報ばかり集め始めてて 「思いの丈」というよりも、ただのWikipediaっぽくなったので、お蔵入りしました。
お蔵入りしたものはMastodonに。

出会い

Mastodonと出会ったのは2006年の末頃。

自分は大学生で、特に趣味も無かったので音楽を趣味にしようと、安い輸入盤をいろいろ漁って洋楽を聴き始めた頃でした。
最初の頃はDeftonesやらSystem of a DownやらのUSヘヴィロックあたりにハマり始め、この年のサマソニのトリだったMetallicaの映像なんかを見てメタル熱が高まっていました。

そんな時に、ふとした時に見たMTVかなんかのメタルPV特集みたいなので出会ったのが Wolf is Loose
YouTubeにPVが無かった…)

www.youtube.com

手数の多いドラムに勢いのあるリフ、咆哮するボーカルに圧倒されつつ、中盤の単音ツインの下降フレーズあたりでもうやられました。初っ端ブチギレてるのに中盤ダンディー
今は無き横浜 HMVで、この曲の入ってるBlood Mountainを購入してからはアホみたいに聴いてました。

オススメ

Blood MountainはMastodonとして3作目のフルレングスで、メジャーデビューアルバムでしたが、Mastodonの名盤と言えば、その一個前にリリースされたLeviathanだと思います。
Leviathanのオープニング曲であるBlood and Thunderは今でもライブのラストを飾るMastodonの代表曲。
名リフ100選みたいな企画でもちょこちょこ名前が挙がったりします。

www.youtube.com

そして、Leviathanとは別に、もう一つのMastodonの名盤だと思ってるのがCrack The Skye(2009)。
アルバム1枚を通じて一つのストーリーとなっており、10分超えの曲が2曲含まれてるなど、Mastodonのプログレッシブさの金字塔。
(ただ、Dream Theater的なプログレ感を求めると肩透かしをくらうかと)

下に貼ったのはアルバムのラストを飾る10分超えのThe Last Baron
めまぐるしく展開を変えながら襲い来るヘヴィネスと、イントロ・アウトロでのBrentのギターソロは圧巻。

www.youtube.com

ただこのアルバム。国内盤のボートラでは何故かこの曲の後にZZ TopのJust Got Paidのカバーを入れてくるという、雰囲気も何もあったもんじゃない選曲。
さらにこの作品のリリース時期にSummer Sonic 09で来日するのですが、アルバムの雰囲気とは正反対の真っ昼間のマリンに出番を持ってくるという悲劇も…。

その後、The Hunter(2011)、Once More 'Round The Sun(2014)がリリースされますが、ココらへんの作品は今までのエッセンスを取り入れつつ、更にキャッチーさを含んできます。  

最新作のコレなんかはとってもキャッチー。
(最近のPVはメンバあまり出てこないし、ストーリーも訳分からんのが多くて、何考えて作ってんのかよく分からんです。これは珍しくメンバが出てくる。)

www.youtube.com

アルバムとしてポップさを増すごとにチャートの順位も上昇していき、The HunterではBillboard 200で初のTop10入り、Once More 'Round The Sunでは6位にランクインするなど、名実共にメタルの次世代を担う存在となってきています。


最近では各メンバのサイドプロジェクトも活発になってきており、先日紹介した*4 Troy(b,vo)の参加しているKiller Be Killedなんかは単体のバンドとして見ても好きなバンドです。

www.youtube.com

また、来年にはBrent(g,vo)がBen Weinman(Dillinger Escape Plan)、Tomas Pridgen(ex-Mars Volta)らと組んだGiraffe Tongue Orchestraのリリースが控えており、そちらも期待大です。

その他のサイドプロジェクトについてはお蔵の方に雑多にまとめてます。

https://gist.github.com/kaakaa/a358e871cc0710f149f8#サイドプロジェクト

来日

海外との温度差が開いてきた印象のあるMastodonですが、来日公演はそこそこ多いです。

High On Fireらと共演したExtreme The Dojo Vol.5が初来日で、次の来日公演もExtreme The Dojo Vol.11。Vol.11はISIS / Converge / Mastodonというカオティックコア/ポストメタルファンなら垂涎もののラインナップでした。(見たかった…)

その後、2006年には第一回Loud Parkと、それに伴うSlayerの単独公演のオープニングアクト
そして悪夢の SummerSonic 09 出演から、今年久しぶりの来日は念願の単独公演。

今年の単独公演のラストでBran Dailor(dr)が「待たせてごめん。すぐ戻ってくるから。」と言ってくれていたので、次回の来日は近いはず。

あと個人的にはHigh on Fire/Kyleasa/Floorなんかも出演してたFunFunFunFest2010に単身渡米したのは良い思い出。

Mastodonのライブは圧倒的な演奏力と、ちょっと物足りないボーカルというのが定説。
まぁ、好きなら良いんだよそれで。

おわりに

スラッジコア、プログレメタル、ポップメタルと時代とともに色々な音楽性を取り入れつつも、Mastodonとしての軸がぶれてないので、次の作品がどの方向に行くのか楽しみです。

明日は T302さん の「Soilworkの良さを伝えたい」です。

来日して欲しいMetalバンド - Metalバンド Advent Calendar 2015

この記事はMETALバンド Advent Calendar 2015 - Adventar の15日目の記事です。

昨日は 120reset さんの 久しぶりにX JAPANを見たら吹っ飛んだ · Hi light & Deep shadeでした。

X Japanはバンドで紅とかSadistic Desireをカバーしてたりします。
バンドメンバーがXとか聖飢魔IIとかの国内メタルが好きで、それがきっかけで聴き始めましたが、テクニックもキャラクターも際立ってて面白いですねー。もっと早くから聴いておけば良かった。


今回はアドベントカレンダーの枠が空いてたのでKayo Dotの来日決定の宣伝も兼ねてエントリ書きます。 (Kayo Dot来日主催の方とはなんの関わりもないです。ただのファンです。念のため。)

Kayo Dot

「来日して欲しい」を考えた時に名前も挙がらないぐらい有り得ないと思いましたが、来日決まっちゃったよ。

Realising MediaさんはTwitterを使っています: "【発表②】6/11、渋谷CYCLONE、宇田川町Garretの両会場を使い、「変の極み vol.2」開催致します。 1ステージは前回同様テクニカル&プログレッシヴ勢で固め、もう1ステージはよりアヴァンギャルドな音楽で固める予定です! https://t.co/ripVdzrVYj"

Kayo Dot来日決定で盛り上がるTwitterタイムラインとは裏腹に、当日スカスカになりそうな予感もしたので宣伝も兼ねてのエントリ。

ただ、Kayo Dotはメタルというとちょっと微妙なところで、アヴァンギャルド/エクスペリメンタルとかポストメタルとかそっち方面。 とは言え、長尺の曲の所々にメタリックなサウンドを入れてきたりするので、メタルの括りに入れても良いかと。

www.youtube.com

興味を持った方は、主要人物のToby Driverの昔のバンドMaudlin Of The Wellなんかも掘ってみると面白いと思います。

来日公演主催のRealising Mediaさんは来日決定の1年前にこんなツイートしてたりしたんですね。

Realising MediaさんはTwitterを使っています: "昨日投稿したのが遅かったのでもう一回だけ。Kayo Dot来日したら真剣に行く!ってかたファボください〜。 http://t.co/IiBnyVMGyp"

こんな感じでオーディエンスの反応見えるようになったのもITの進化の賜物ですね。 明日からも頑張りましょう。

Killer Be Killed

こっからはタイトルどおり来日決まってない勢。

Killer Be Killedは後日紹介予定のMastodonのフロントマンTroy Sandersのサイドプロジェクト。

好きなバンドのメンバーのサイドプロジェクトはオリジナルを超えることがあまりないという印象があるのですが、コレは良いです。 メンバも豪華。

  • Troy Sanders(Mastodon)
  • Max Cavalera(Cavalera Conspiracy, Soulfly)
  • Greg Puciato(Dillinger Escape Plan)
  • Dave Elitch(Antemasque, ex-Mars Volta)

下に貼ったのは1枚目のアルバムの1曲め。惚れました。

www.youtube.com

結成当初はMax Cavaleraが昔やっていたNailbombのような音楽を志向していたらしく*1、そんな感じの粗暴さと、MastodonやDillinger Escape Planなどのメロディアスさとカオティックさを兼ね備えた感じが格好いいです。 上に貼った曲のGreg Puciatoが唄うサビとかなんかは、元のバンドでは想像できないほどキャッチーで疾走感があったりするので、そんな意外性も面白いです。

今年春先のオーストラリアツアーから活動休止してたっぽいですが、Antemasqueの活動を優先するためにツアー前に抜けたDave Elitchに代わって、Ben Koller(Converge)が参加して、自作を作り始めているというニュースが。*2
カバレラさん、Mastodon、Dillenger Escape Plan、Convergeとか…素敵です。

来日と共に次作も期待してます。

Red Fang

オレゴン州出身の4人組。2005年結成。

www.youtube.com

こっちは頭空っぽで聞くような疾走感のあるストーナーメタル。 PVは毎作ビール飲んでたり、内容も馬鹿馬鹿しいので楽しさ満開。

野外の夏フェスとかでビール片手に見たい。

YOB

こちらもオレゴン州出身の3人組。1996年結成。

Red Fangとは打って変わって、コチラはズルズル引き摺る長尺ドームメタル。

www.youtube.com

暗黒ドゥームだけど、メロディはちゃんとあって、しかも長尺ってところにとても惹かれます。
展開もゆっくり進行していくので作業用BGMにもGood!!

ただ、ライブ行くとなるとあまり動きがなさそうなので腰痛が心配…そんな年になりました。

YOBはPitchforkのTop of Metal 2014で3位とかになってるので、そこそこ知名度はありそうな気がするけど全然名前をみたことが無いような。*3
どんな評価なんでしょ。


METALバンド Advent Calendar 2015 - Adventarは明日も参加予定の方がいないようなので、どなたかいかがでしょう?

明日がなければ明後日もkaakaa_hoe_progの「Mastodonについて思いの丈を」です。

GradleでEclipseプラグインをビルドする

Eclipseプラグインを作り続ける人もいる、このロクでもない世の中に向けて。


基本的には下記を参考に。 mikamikuh.hatenablog.com

自分の環境で実行したら、META-INF/MANIFEST.MFファイルが、Gradleがjarタスク実行する時に自動生成するMANIFEST.MFに置き換えられてしまっていた。

ので、jar.manifestの設定で、Eclipseが生成するMANIFEST.MFを出力するよう指定した。

gist.github.com

Eclipseプラグインフォルダをどう指定するかが悩みどころ。


ちゃんとやるなら、GradleのwuffプラグインMaven TychoのGradle移植)を使うべきだろうけど、社内プロキシに阻まれてインストール出来なかったので、簡易的にコッチでも大丈夫かな?(まだHello Worldプラグインでしか動作確認していない)

https://github.com/akhikhl/wuff

[フェス] サマソニ予習用サービスを作りました

紹介

setlist search

コレは何?

最近のセットリストから、ライブで演奏しそうな曲を調べるもの。
フェスで知らないアーティストいっぱいですが、定番曲ぐらいは知っておきたい時にどぞー。

検索窓つけてますが精度が悪く、検索結果が無い場合が多いです。
「Mastodon」なら検索できるはずです(サマソニ関係無い)

どんなもの?

setlist.fm - the setlist wiki というものがあります。
これは、登録したユーザがライブで演奏したセットリストを書き込んで共有するサービス。

setlist.fmのAPIを叩いて、最近のセットリストからよく演奏している曲を探しています(単純に加算してパーセンテージ出してるだけ)。

よく演奏している曲の動画をYouTube Data APIを使って、ページに埋め込んでいます。

もっと詳しく

使ってる技術

  • Sinatra + Haml
  • Heroku Freeプラン
    • 万が一アクセス過多になると多分落ちます
    • 2015/8月以降は一日18時間以上起動すると落ちます

使用しているAPI

心残り

いっぱいあります

Music Brainzの検索精度

結構辛いです。

例えばMUSESearch Results - MusicBrainz

Fuji Rockにも来る、UKバンドのMUSEが来て欲しいところですが、そのMUSEはスコア 98 で、他にスコア 100 のグループが5つヒットします。
どういう基準でスコアが付けられてるのかよくわかりません。

また、コレが辛いところですが、同じアーティストのIDが2つあることがあります。

斉藤和義 - MusicBrainz
斉藤和義 - MusicBrainz

酷いことにMusic Brainzの検索で見つかるIDとsetlist.fmで保持してるIDが別物ということもあり、悲しい思いをしました。

IDと言ったな。アレは嘘だ。

最初はサマソニのサイトのHTMLから自動で~ってのを考えてましたが、結局半分ぐらいは手動検索でMusic Brainz IDを探してました。
音楽関係のサイトが全てMusic Brainz IDベースになれば、もう少し精度上がると思うんだ。

setlist.fm のコンテンツ

ユーザベースのサービスということもあり仕方ないことですが、セットリストの登録が少々残念です。
特に日本のアーティスト。

BABYMETALDIR EN GREYなんかの海外でも話題のアーティストについてはちゃんと登録がありますが、サマソニの出番的にBABYMETALより格上のRADWIMPSなんかは寂しい感じ。

音楽好きにはなかなか良いサービスだと思うので、もう少し日本でも流行って欲しいです。

D'ANGELO AND THE VANGUARD

シングルクオートのせいでJSONが壊れるのでやめてください

おわりに

フジロックのメニューも作ろうとしたけど、HTML見るとヘッドライナークラスがimgタグのロゴ表示しか無いので萎えました。
altぐらい…

commandモジュールがパイプを使えないことを経験した

という話。

LibreOfficeインストール用のPlaybookを書いてる時に、複数rpmファイルをlocalinstallする必要があったので、こんなタスクを書いた。

    - command: find LibreOffice_{{ detail_version }}_Linux_x86-64_rpm/RPMS/ -name *.rpm | xargs yum -y localinstall

エラーになった。

TASK [command] ******************************************************************
fatal: [192.168.33.14]: FAILED! => {"changed": true, "end": "2015-06-08 09:53:27.678648", "stdout": "", "cmd": ["find", "LibreOffice_4.4.3.2_Linux_x86-64_rpm/RPMS/", "-name", "*.rpm", "|", "xargs", "yum", "-y", "localinstall"], "start": "2015-06-08 09:53:27.662475", "delta": "0:00:00.016173", "stderr": "find: paths must precede expression: |\nUsage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]", "rc": 1, "invocation": {"module_name": "command", "module_args": {"_raw_params": "find LibreOffice_4.4.3.2_Linux_x86-64_rpm/RPMS/ -name *.rpm | xargs yum -y localinstall"}}, "stdout_lines": [], "warnings": []}

findの-nameオプションの引数 *.rpm をダブルクオートで囲ってないのが原因だと思って調べまくってたけど解決できず、ようやくcommandモジュールにパイプやリダイレクト等を使用できないことを知る。

ansibleでshellやcommandを使う時の注意点 - Qiita

commandモジュールじゃなくてshellモジュールを使えばいいだけだった。

    - shell: find LibreOffice_{{ detail_version }}_Linux_x86-64_rpm/RPMS/ -name *.rpm | xargs yum -y localinstall

shellモジュールの方が出来ること多いから、commandモジュールいらなくね?って疑問に言及しているエントリを見つけた。

Ansibleのshellモジュールとcommandモジュールの使い分け | bacchi.me

shellモジュールは記述されたコマンドを/bin/shで実行するけど、commandは違うよという話。 ほんまかいな。

まぁ、使えるコマンド制限されてたほうがセキュリティ的に頑丈だよねってことだろうか。


shellモジュールとcommandモジュールの違いが気になってきたのでソースを見てみた。 (結果は、よくわかりませんでした)

ansible/mod_args.py at 5622fc23bc51eebde538b582b5e020c885511f31 · ansible/ansible

shellモジュールが使われてる場合は '_uses_shell' フラグを True にして、アクション名をcommandに書き換えている。 ということは、shellもcommandも同じ動きをする?

'_uses_shell' が使われている箇所を調べるためにansible-playbook実行した時のトレースを見てみる。 Python スクリプトの動作をトレースする - とあるSIerの憂鬱

[vagrant@localhost ~]$ python -m trace --trace /usr/local/src/ansible/bin/ansible-playbook -i hosts  pptgallery-playbook.yml --ask-pass | grep '_uses_shell'
SSH password:
mod_args.py(125):             args['_uses_shell'] = True

設定されてるだけで使われてなかった。。。

とりあえずここまで。


蛇足

来日行こうか迷う。


Pallbearer - Saint Vitus 2014 - YouTube

fluentd-plugin-lets-chatを作った

fluentdのプラグインを作るために色々調べたので備忘録。

概要

REST API経由でsdelements/lets-chatへメッセージを送信してくれるプラグイン

kaakaa/fluent-plugin-lets-chat

背景

Gitbucketを遊びで使ってて、Gitbucketの飛ばすWebhookをLets Chatに飛ばしたかった。

  • Let's ChatのREST APIではリクエストパラメータのJSONの中にtextフィールドを持ってなきゃいけない
  • fluentdに対して `json={}` でない形式でデータを送った時に、fluentdのin_httpプラグインだと解析してくれない(ように見えた)
    • GitbucketのWebhookが `payload={}` の形式でリクエスト飛ばすので、それを処理したかった
    • => なので、 `KEY={}` の `KEY` の部分をconfで指定できるようなHttpInputプラグインを拡張したプラグイン書いた
  • Gitbucketの飛ばすwebhookの内容が大量なので、必要な情報だけをフィルターかけてLets Chatに飛ばしたかった
    • => なので、JSONがネストしてたりする場合もあるので、ネストしていてもキー指定できるようなOutputプラグインい書いた
    • => ただし、JSONの中にArray入ってる場合は強制的に1番目の要素を引っこ抜いてる現状

こう書くとFilterプラグインが必要そうだけど、Filterプラグインの使い方がいまいち掴めなかったので、InputプラグインとOutputプラグインでほげほげしてる。

調べたこと

Fluentdプラグインの書き方については下記を参考にした。

fluentdのためのプラグインをイチから書く手順(bundler版) - たごもりすメモ

  • 自分の環境(Ruby2.0.0)では、上記のやり方に加えて development_dependencyに test-unit を追加する必要があった。

途中、プラグインをインストールしているはずなのに、Fluentd(td-agent)がプラグインを見つけてくれない問題が起こった時には、下記サイトのやり方で原因を見つけた。

Fluentdの自作プラグインがロードできないのでソースの中身を追ってみる… - kk_Atakaの日記


HttpInputプラグインを拡張するやり方、およびテストの書き方については fluent-plugin-heroku-syslog を参考にした

また、本家のin_http.rbなども参考にした。

fluentd/in_http.rb
fluentd/test_in_http.rb

おわりに

Let's ChatはUIもモダンな感じだし、簡易的だけどREST APIも付いてるので自分でホストできるチャットツールとしては優秀だと思う。
SlackやらHipChatを使える人はそっちで十分だと思うけど、色んなしがらみによって外部ツールが使いづらいひとは試してみてはどうでしょう(主にSIer方面)。

Fluentプラグインはコード量が多くならないし、Github見ればいくつもサンプルが転がってるのでコーディング方面ではあまり躓かないけど、どういう動きをしてるのかを掴むまでは辛いものがあった。
まぁ、そこら辺はFluentdのコード読めな話なので精進が足りなかったということで。

蛇足

Royal Thunder良い。