下目黒でシェアハウス始めた

パーティを11時で終わらせるな

という言葉があって、確かソーシャルネットワークだったと思うが、僕は割とこの言葉が好きです。

ところで、この7月から新しいシェアハウスに移ってみた。

ここの人たちに声かけて住み始める前、僕はギークハウス高円寺とギークハウス水道橋というところにいて、それぞれ思い出深いところではあったのだけれど、色々あって今の形に落ち着いた。

ギークハウス高円寺という場所は、個室が一切ないシェアハウスで、一つの部屋に二段ベッドが2つで計4人、それが3部屋ある古い一軒家だった。住民間の距離が(物理的に)とても近く、かえってそれが良い方向に働いてとてもアットホームな場所だった。距離が近いとそれなりにたまるストレスもあるのだけれど、それ以上に住民間で色々話してゲラゲラしてた思い出が多くて、思い返してみると楽しかったなぁと素直に思う。ここに住んではじめて僕は、家族でもなければ恋人・友人とも違う「住人」という特殊な対人カテゴリを得た。

シェアハウスの住人というのはとても不思議な人間関係で、所詮は他人なので大切な部分はお互いなかなか話さない。けれど、一緒に住んでいるうちに積み重なって共有される時間とか物事がなんとなく意味を持ってくる。どうもうまくは言えないのだけれど、とにかく僕はそうやって安易に得られる人間関係に居心地の良さを感じた。一人でいるのが好きなくせして寂しがり屋な人はシェアハウス向いていると思う。

高円寺には一年以上いたのだけれど、社会人になってからは個室ナシの空間はキツイなーと思い、個室があるギークハウス水道橋というところに移った。水道橋は、当時ギークハウス文化の中心地だったと言っていいと思う。地理的にも東京の中心に位置していて、色々な場所から色々な人が集まってきた。もはやギークという概念はその文化の一部でしかなく、リビングにはプログラマ・ニート・就活生・スナック勤務のおねーさん・DJ・芸術家の卵・平田ガールズ・その他よくわからん人が曜日とか関係なく集まってきた。いや。ほとんど平田ガールズだった気がしてきた。どうだろう。あとそういえば漫画の「シマシマ」でしかみたことない添い寝屋という人を始めてみたのもここだ。 水道橋はとても人が「濃い」場所で、僕は毎夜毎夜「東京はいろんな人いるなぁ」と思っていた。リビングは人の流れのうねりのような吹き溜まりのような場所で、とにかくそこに人が集まっていることが奇跡のような感じがしたし、僕はそれを眺めているのが好きだった。

話は全然違うのだが、秋葉原にMOGRAというクラブミュージックの有名な箱があって、気分がいい時にいくととても楽しい。僕が行くのはだいたいアニマトかボカマニで、特にアニマトなんかはオールナイトでやってるから、イベントの時間が深くなるにつれて、どんどん日常生活から遠ざかる感じがする。日をまたいだ頃に終電がなくなって、2時ぐらいに酒回ってハイになって、3時過ぎた頃に足が痛くなって、それでもどっかの原住民みたいに踊ったり跳ねたり叫んだりしてると、だんだんよくわからん感じになってるけど爆音は爆音で、とにかく気分だけが気持ちよく吹っ飛んでいく。 こんな激しくはないけど、僕が水道橋で感じた感覚は割とこれに近いんじゃないかなと思う。なんかよくわからんフロアの一体感みたいな空気に酔って、あーもう隅っこのほうで溶けてるわみたいな気持ちになってくる。

そういう空間において、そこにそういう音楽とか映像が流れているということに実はそれほど強い意味はなくて、とにかくそこにそういう空気が成り立っているのが最も大事なことだと思う。夏祭りもだいたい同じ原理だ。あれが祭りとして成り立っているのは祭事が行われるからではなくて、夏休みに行われるからだし、浴衣を着ていいことになっているからだし、まぁとにかくそういう様々な要因を組み合わせて奇跡的なバランスでそうなっているのであって、それを大事にしないことには祭りは祭りたりえない。

水道橋もそういうバランスの上に成り立っていたのだけれど、残念ながらある日それは失われてしまった。 早い話、そういう空気が許せない人たちの希望によって、内部的から崩れた。夜中はゲスト来訪禁止というルールができたし、他にも善意で行われていたことがルールになって、保たれていた曖昧さは崩れた。一応断っておくが、そういう人たちを批判する気持ちは一切ない。バランス感覚が違えばそれまでだと思う。部屋キレイになったし。 ただ、ゆるい連帯の中で曖昧に生まれたものでしか本質的ではないと思う。

水道橋の出来事は、僕にはパーティーが11時で閉まってしまった感じがした。終電前のイベントには意味がない。 だから、新しく声かけてシェアハウス作ってみることにした。 流れに身を任せるけど、ここが二次会会場になればいいなとぼんやり考えている。

しかし他の住人はエンジニアとして全員が全員で僕なんかより10倍も20倍も優れている人たちなので、結構死にたい。 家の設備とかについては他の住人がもう書いてたしなるべくスピリチュアルな事書いてみた。 声かけたらなんかすごい人来ちゃった感あって死ぬ。 それにしてもブログ塩漬けにしてたし、元々プライベートなこと書かなかったのでなんか恥ずかしい。振り返ったら長くなった。

「長い。三行で。」と言われそうなので三行でまとめます。一行、いや二行でいいです。

http://www.amazon.co.jp/registry/wishlist/31WJYTS73D19K
http://www.amazon.co.jp/registry/wishlist/2DFLW2BAK8HT/ref=cm_sw_r_tw_ws_Bj.4rb0JQ70B6

ひっそりとあげ

ニコニコ動画のランキングから動画を落とす&mp3にするスクリプト作った

作りました。

https://github.com/gong023/nicoaudio

 

もちろん全部の動画落としてくるわけじゃなくて「歌ってみた」とかそのへんのmp3にする価値があるやつを狙って変換します。あと、処理が終わったらtwitterのDMで処理にかかった時間と成功or失敗をお知らせしてくれます。

2,3ヶ月前からcronで毎日回して運用していますがそこそこ動作が安定してきた。これのおかげでだいぶ楽になりました。新しい曲を何もしなくても毎日聞けるのはいい。

READMEに簡単な使い方書いてあります。もし使いたい場合はどうぞ。(といってもcloneするだけじゃ動きません。READMEもいつかはちゃんと最後まで書きます)

 

作っていて気になっていたことを書きます

rubyのマルチスレッド

このスクリプトはruby1.9.3のマルチスレッドを使って動画のDLを行なっています。ベンチマークを取ってみたら処理速度が5倍になっていてビビりました。

マルチスレッドなし --  

D, [2012-08-23T04:39:06.525075 #16552] DEBUG -- : get / all /  3.560000   5.090000   8.650000 (1638.229236)

 マルチスレッドあり --

D, [2012-08-23T04:08:10.576479 #16269] DEBUG -- : get / all /  4.200000   6.380000  10.580000 (319.074013)

rubyは1.9.1からカーネルスレッドになったらしいのですが、特別な事情がない限りスレッドセーフになっていて、なんちゃってマルチスレッドみたいになっています。ただIOが絡む場合は別で、今回はそのケースに当てはまるのでちゃんと効果が出たみたいです。

その辺りを検証してくれているブログもありました

http://www.kaeruspoon.net/articles/726

MySQL

無駄にmysql使ってます。videoのidが一意であることを保証するためです。それだけです。ええ。

完全に大げさ。

yamlでいいじゃんといえばそれまでなんですが

insert ignore楽じゃん。indexもあるしさ

その他

  • もっとrubyの黒魔術使いたかった
  • なんか書こうかと思ったけど忘れた

 

せっかくmp3がとれたので今はブラウザでプレイヤー作ってます

iPhoneSafariだとバックグラウンドいってもスリープモードでもaudioタグ効くんだよ。助かる。

ニコニコ動画のランキングからmp3を自動抽出

タイトルの通りですが、ニコニコ動画の総合ランキングから適当な単語を抽出してそれをmp3に自動変換してくれるスクリプトを作りました。

ただしあんまり完成度は高くないので、しばらく個人で運用して使い勝手とか高めていきたいなーと思っています。

糞糞糞うんこコードですが一応githubにもさらしました

https://github.com/gong023/nicoaudio

処理の手順としては

  1. ニコニコ動画のランキングをとってくる
  2. そのなかで「歌ってみた」とかを含むタイトルの動画を日時と一緒にMongoDBに保存
  3. mongoDBの情報をもとにニコニコAPIで動画(mp4)を取得
  4. mp4をffmpegでmp3に変換
これをcronで実行します。
毎日ランキングの内容をmp3に変換してくれるのでなかなか便利です。糞コードですが。
 

すごく有り合わせのものでいい加減に作ったのでこのスクリプトのいい所なんてぎりぎり動く所ぐらいなのですが、リファクタ&機能追加はしていきたいなーと思います

とりあえず

  1. スクリプトをrubyで統一(getflv...)
  2. webインターフェースの作成
  3. ブラウザからDLできるようにしたい
  4. 検索するキーワード指定できるようにしたい
  5. カテゴリ選べるようにしたい
  6. ある程度ランキングの期間指定できるようにしたい

これぐらいは考えてます。まぁいつできるか知りません。

 

昔はいろいろブラウジングしながら好きな曲とか見つけてたんですが、まぁさすがに色々忙しくなってきてなかなかそういう時間をとるのが難しくなってきました。で、ある程度自動化できることはできたらいいなぁと思って今回のようなスクリプトを書いてみました。こういうのエンジニアリングで解決できるのは楽しいです

PHPUnitが意外と入らない

pearPHPUnitって意外とすんなり入ってくれないですよね。

という訳で必要な最小限のコマンドだけメモ。

sudo pear upgrade -Z pear
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
sudo pear install -Z --alldeps phpunit/PHPUnit

-Zがいい感じのはまりポイントでした。

5分で作るナウでヤングなvim環境

なんだこのタイトル。

 

vimのバージョンアップからプラグイン(unite.vimやunite.grep,vimprocなど)の導入まで所要時間5分、コマンド3つぐらいでいけるようにしてみたので書いておく。

 

複数の端末でvimを扱わなければいけないなんてことはよくある話なわけです。自宅のvim、会社のvimなどなど。なのでそれらの環境をそろえようと思ってvimrcをgithubに上げて管理してる人は多いとおもいます。

 

ただそれだけでは必ずしも完全に揃うわけではなかったりします。

まぁ理由は色々考えられますが、一番面倒なのはvimのバージョンアップが必要な場合じゃないですかね

特に最近主流となっているunite.vimやvimprocは7.2以上を前提としています。なのでそれより古い場合バージョンアップが必要です。shougoさんの偉大な功績を是非使いましょう。

 

とは言えバージョンアップはちょっと怖いし手間もかかります。そういうわけで、vimrcのcloneからvimのバージョンアップまでコマンド三つ(ぐらい)でできるようにしてみました。

こちらです。

https://github.com/gong023/vimsetup

使い方はreadmeにも書きましたが

  1. git clone https://github.com/gong023/vimsetup
  2. vimsetup/setup.sh
  3. (vimを開いて):NeoBundleInstall
(2012/07/14修正)
uu59さんの修正によりNeoBundleInstallも自動的に行ってくれるようになりました。ありがとうございます!
 
の3ステップになります。これで僕とだいたい同じvim環境になると思います。
 
このスクリプトを実行する上での注意点をいくつか書きます。
  • このスクリプトを実行するとvimrcが僕のものに置き換わりますので注意して下さい。また古いバージョンのvimと今使っている.vimrcは~/tmp/vimsetupにバックアップをとるようになっています。vimrcはシェルが失敗したら必ず元の位置に戻すようにして下さい。(というかvimrcはこことは更に別の場所にバックアップを作っておいたほうがいいです)
  • シェルを実行する際はvimsetup/setup.shのディレクトリで行なって下さい。ディレクトリが違った場合の挙動を修正するまでの精度はありません。
  • このシェルはlinux環境のvimのアップデートを想定しています。例えばmacのローカルではやらないでください。
  • 途中で「sorry.make vim7.3 failed」とでたらmakeを失敗しています。vimのアップデートに必要なものが足りてないっぽいので頑張ってググって問題を解決してください。そして5分は諦めてください。すいません。
  • ただmakeを失敗してもvimのバージョンやvimrcは元のままなので大丈夫です
 
最後に補足するとconfigureの際にprefixを指定しないのは環境によってvimコマンドの位置が違うから合わせてみました。指定してもいいのかもしれない。
 

まるちゃんに特定のリプライが来たらリストに入っている人に拡散させるようにした

ギークハウス高円寺の住人まるちゃんに「all」「みんな」という単語を含めてリプライをすると、住人全員にそのリプライを拡散してくれる機能を作りました。

 

rubyでStreamAPIなんてもうとっくに市民権を得ているのでぶっちゃけ書くことはないのですが、スクリプトを動かしているサーバーはかたさん(id:hotchemi)が塩漬けにしていたというサーバーを借りているのでこの場を借りてありがとうございますとお伝えしたい。

 

あと@飛ばすメンバーはぎーまるちゃんのリストに追加されてる人たちから動的に作成するので住人は勝手にリストいじったりしないようにお願いします。

 

rubyはこれでかけるのいいですね・・・

Twitter.list_members('geekmaru-member').attrs['users'].each do |key,value|

end

一応githubにも上げました

https://github.com/gong023/public-product/blob/master/marubot/userstreamtweet.rb