読者です 読者をやめる 読者になる 読者になる

プログラマのためのジャズガイド #1

いったいどれくらいの割合でプログラマは音楽を聞きながら仕事をして、そのうち、どのくらいの人がジャズを聞いているのか知る由もありませんが、ちょっとした気分転換で、今日聞いた音楽をしたためていこうと思いました。

第1回はもう何年も聞いてますけど、ホセ・ジェームスのBlackmagic

www.youtube.com

 

ロバート・グラスパー以降の00年代後半からポツポツと流行りだした"今ジャズ"潮流の中でも代表格であるホセ ・ジェームス。 Jazz the new chapter でも毎回取り上げられてますが、何と言っても超スゴ腕ドラマーのリチャード・スペイブンを起用したのが今作 Blackmagic。

中でも一番好きな曲はSave your love for me(あなたの愛は私のためにとっておいて)。この曲自体は昔から有名なスタンダード曲(落語でいう古典)ですが、歌い出しの2小節目の終わりに食い込む1/4拍ズレたスネアを聞いてぶっ飛んだ、と言えば大袈裟ですが、それで夢中になった人は多いのではないかと思います。強拍をちょっとずらすことで他のパートのリズムを相対的に遅らせる/速めるという手法が多用されているのが魅力。

今ジャズは第2次ドラムンベース(1次は2000年前後にはやったスクエア・プッシャーとかエイフェックス・ツインとか)など評されますが、その良さはドラムンベースの疾走感(1/4拍とか、細かいリズムの多様)+ポリリズム(4拍子と3拍子や、4拍子と5拍子が同時に共存する状態のこと)で、キーパンチするタイミングの幅を広げてくれる事だと思います。単純な4拍子の曲だとリズムの粒度は1小節にせいぜい4〜16のグリッド(1拍を4つに分割して4つ刻む)ですが、ポリリズムの導入により1小節に12〜20くらいのグリッド(1拍を4つに分割して5つ刻む)が生じるので、いつキーパンチしてもそれなりに曲のリズムと合う、という効果が得られます。

DroidKaigiとペアプロとドーナツ

f:id:punchdrunker:20160222184107j:plain

前回に続き運営に参加した、DroidKaigi 2016が無事終わりました。

去年はセッションの司会でしたが、今回はスタッフでありながらもミクシィ社員としてスポンサーのブース担当兼任という絶妙な立ち位置だったので、あらかじめ、当日はスポンサーブース以外の運営の仕事はあまりできないですと宣言してありました。

スポンサーと運営の兼任は多少矛盾を孕んだ立ち位置なので、結構気を遣いながらも、スタッフとしてはそのままスポンサーブース部屋の担当で終日店番しており、セッションは1つも見ておりません。動画がすぐに公開されると知っていたので、おじさんは部屋で待機していよう、というスタンスです。

DroidKaigiの準備は大体10月くらいからやってまして、ほんとうにいろんなワクワクイベントがあって、色々と策を弄したことなど数えきれないのですが、簡単に自分が担当した事を紹介して、他にもこういうイベント計画してる人の一助になればと思います。

すごく生々しい話も含まれているので、そのうち内容が訂正されたりする可能性も多分にあります。(確信犯)

銀行口座をつくる

当初からの懸案だったのですがやはり予想通りで、12月から申し込みをして口座開設できたのが2月の頭になってしまいました。この手前で法人の登記などいろいろあって、申し込みが遅くなってしまったというのもありますが何より審査が厳しい。

口座が無い状態なのに取引実績を示す契約書などを示すよう銀行から指示があり、結果的にスポンサー候補のミクシィリクルートメント(Find Job!やmixiエージェントの運営会社)にお願いして、覚書を作成し、両法人の判を押し、銀行に提出することで口座が開設できました。

金策

前回とは違ってスポンサーを集めるイベントなので、予算規模も桁違いです。口座の開設が遅れてしまったおかげで大半の協賛金は2月末、3月末の入金になってしまいました。収支の見込を一覧で作成していましたが、2月末時点で中心メンバー数名で結構な金額を被る可能性が高くなり、これまたダメ元で身内のミクシィリクルートメントにお願いしたら、その週の金曜、2/5に協賛金を入金してもらえました。

メンバーの貯金を切り崩してまでイベント運営するのはあまりにも心苦しかったので、本当に助かりました。

(なお代表のひつじさんは、現在も立て替えという名のATMに従事しています。)

毎週土曜の朝にSlack定例

予算規模が増大したことにより、体感では前回の2015の5〜6倍のタスクが積まれていました。github のissueを巡回するのは前回から自主的にやってはいたのですが、今回は放置issueを見落した時のリスク、影響範囲が桁違いなので、定例イベントとして宣言し、土曜の朝10時に起きてる人は一緒に見ようね、くらいのノリでissueをみんなで眺めるようにしました。このイベントが唯一の定例ぽいものでした。

基本的には、担当者不在タスクの優先順位や担当を決める、一週間くらい動きの無いissueには声掛けする、などの単純作業です。アサイン対象者はその時の雰囲気各自のタスク状況で決め、無理なら他の人指名してね、というシステムで運用。その場で決められない悩みなどは次回のMTGアジェンダに相談として記入するなどしておきました。

荷物置き場

当日配布物など、最大でダンボール30箱を一週間程度一時的に保管する場所が必要だったので、弊社総務に相談し会議室を借りることができました。バッグにチラシ詰める作業も20人弱の運営メンバーが集まって、大きめの会議室でワイワイ行いました。

主に警備上の懸念により、会場である東工大に物品を前日から置けなかったので、当日は朝6時半に出社し、赤帽の軽トラ2台で会場まで運んでもらいました。

公式アプリ開発

@konifarさんがある程度形にしていたものを公式アプリとしてみんなで開発してリリースしようとなったので、最初は軽い気持で表示不具合を修正する程度のPR出してたんですが、スケジュールのリマインド通知実装のissueを取ったが最後、気付いたら割とコミットしていました。

これまで運営メンバーとはMTGや勉強会での交流などはありましたが、実際の開発を一緒にしたことがほとんどなかったので、この経験はとても良い思い出になりました。

@konifarさんのロケールへのこだわり、@hotchemiさんのクレバーな実装、@hkurokawaさんの誠実なコードレビュー、@mstsskさんの光るセンス、唯一同じチームで一緒に仕事をしたことのある@KeithYokomaさんは相変わらずのenum芸人でした。

一方で、自分のように、最近はあまり今風のAndroidアプリの書き方勉強してなかったから、既存のコードを参考にしながら勉強したいなぁ。。。という人間でも差分を出せば対等な関係でレビューしてもらえましたし、お金も取られず大変良い勉強になりました。

自分で言うのも何ですが、立場的に中心メンバーぽくなっていたんですが、実際は自分の技術力とかそんな尖った感じでもないんですよね...というカミングアウトが自然にできて肩の力が抜けた思いです。

なのでスライムばっか倒してないで、ストレッチしてみようぜ!と声を台にして言いたい今日この頃。

コーヒーとドーナツ(ミクシィ提供!!)

ここからはブース出展者としての仕事です。

今回はスポンサーブース部屋が独立していたので、ブースの呼び水になるような施策を検討した結果、弊社イベントなどでもたまに利用している、Dean&Delucaのケイタリングでコーヒーとドーナツを注文することにしました。

結果として当日はかなりの好評でコーヒーが足りなくなってしまい、ちょっと申し訳なかったです。発注量は各日コーヒー、ドーナツともに200人分でしたが、ドーナツを50削って、コーヒーに当てた方が良かったかもというのが反省点。

会場の配置や諸々の配慮で、あまりはっきりとミクシィからの提供というイメージを全面に押し出せてなかったのですが、改めて、コーヒーとドーナツはミクシィからですよ!ということをここに報告させていただきます。

また、ドーナツの大きさが日本人向けじゃない、という一部意見もあり、概ね同意しますが、意図的にアメリカ風に倒した演出の結果になりますので何卒ご了承くださいませ。

wikipediaによると、コーヒーとドーナツは合衆国の代表的な食文化とのことです。

source: Coffee and doughnuts - Wikipedia, the free encyclopedia

ペアプロ

f:id:punchdrunker:20160219122544j:plain

ミクシィのスポンサーブース企画の内容は当初はExtreme Fish Bowlと謳っていましたが、あまり馴染みが無い言葉だし、どういうものかわかりずらいのでちょっと反省。当日の状況だと結果的にペアプロ道場という説明が妥当かもしれません。

弊社メンバーがなるべく常駐して、上述の公式アプリをネタにペアプロでバグ修正や機能追加するという企画でした。企画の目的は、普段から気軽に議論しながら設計したりレビューしたりする会社の雰囲気をなるべく身近なネタで楽しく伝えたい、というものでした。

昼の時間などはさすがに盛況で、ダメ元で知らない人にどうですか?とコーディングに誘ってみたところ、視線を逸らされたりもしつつ、のってくれる人も結構いたので、大変助かりました。

1日やってみて、いま何をやっているのか、画面を見ただけだとわかりずらいという指摘があったので、今やっているお題(通知の実装をしています、など)を紙に書いて掲示しておくようにしました。

2日目の夕方はひとり無心に自分のバグ修正をしていたら、突如zakiさんが現われてアドバイスを頂いたり、その後も色々とその場にいたみんなで議論する時間が出来たので、次回は公式の企画としても取り入れた方がいいのでは?という気になりました。英語で進行すれば、jake やrallatともペアプロできるかも!?と夢は広がります。タイトルはAndroid Dojoで、参加者にはKatsudonなどをふるまいたいです。

 まとめ

今回はあまり特定のミッションを担っていなかったので、つらつらと書いてみたんですが、書いてみると結構な分量になってしまいました。

資金繰りが落ち着いた後では、チームの中での自分の立ち位置は校舎裏でサボってる教頭先生とか学年主任くらいの気分で気楽なものだったのですが、とにかくみななさん期待以上の仕事をしていただきまして、大変助かりました。

運営チームの各メンバーがいろいろと頑張ってくれてるタスクの間の隙間を埋める砂のような役割をして色々なところに顔を出しましたが、次回もどんな事が起こるのか楽しみでしょうがないです。

時にびっくりハプニングなどもありましたが、無事に終える事ができ、とにかく関係各位におかれましては感謝してもしきれません。ありがとうございます。(丁寧な御礼はきっと代表のひつじさんがやってくれる)

もちろん次回の開催も計画中ですので、しばしアナウンスをお待ちください。

ではまた次回お会いしましょう!

2015年上期おつかれさまです

もっと続くと思っていた日記もそれほど続かず、反省しきりだが、懲りずに再開してみようと思います。

 

2015年の下期は仕事の変化はそれほどなく、SNSアプリの開発チームマネジメントなど。対外的には、mixi app trainingが1月から6月まであって、毎週開催していたのが今では信じられない。そこからスピンオフしてschooで公式動画を配信する事になって光陰矢のごとし。

schoo.jp

 

私個人の活動としましては、モンスターストライクにおきまして、ルパン運極達成など、エポックメイキングなイベントもございました。

f:id:punchdrunker:20151008020611j:plain

 

あと最近職業としての小説家に感化されて英語の本を買うようにしました。

職業としての小説家 (Switch library)

職業としての小説家 (Switch library)

 

 日本で洋書を買うと現地価格の2、3倍 してしまうので、kindleやiBookStoreを活用しています。

最近買ったのは以下2冊の原書/英語版 

HARD THINGS

HARD THINGS

 

 

NOVEL 11, BOOK 18 - ノヴェル・イレブン、ブック・エイティーン

NOVEL 11, BOOK 18 - ノヴェル・イレブン、ブック・エイティーン

 

 

トランペットは引き続き、週3回以上は練習しています。

 

かしこ 

 

長野に行ってホップを摘まなかった

2015年度は毎日mixi日記を書くぞ!と決めた結果、56日で終わってしまったので、ゆるくブログを書ここうと思った。

先週末は長野県は志賀高原ビールでおなじみ玉村本店さんにお邪魔しました。

 

f:id:punchdrunker:20150821140107j:plain

 

毎年恒例ホップ摘みに行ったけど、雨で中止になったので、ひたすらおいしいビールを飲んで、おいしいものを食べて帰ってきた。猫もたくさんいた。

 

f:id:punchdrunker:20150816173709j:plain

 

今月は金沢にもいったので、かがやき(新幹線)2往復した。贅沢だ。

帰りは由あって新宿の名店「鳥茂」でお腹いっぱい食べた。すき焼きとかトリュフとか松茸とかキャビアとか、豪華な居酒屋だった。とても美味しかった。

tabelog.com

おかげで、翌日はソイジョイ1本、サラダ1食で満足した。あと日曜にペン大があったのをすっかり忘れていた。

 空けて翌日は昼歯医者、夜はスクーで2回目の授業。心に決めた通り、ゆっくり進めた。喋る、手を動かしてもらう(沈黙)、確認する、の繰り返し。初心者受けは前回より良かった気がする。

水曜は人に勧められた肉屋のレストランに行った。単価が高いためか、予約は当日でもokだった。味はもちろん美味しいんだけど、内装が随分おしゃれなので、気後れしないように注意が必要だ。

tabelog.com

今週は良いものを食べすぎて体の調子が悪い気がする。

「ドラゴン・タトゥーの女」を観た

昨日は夜23時から自宅マンションが停電だというので、映画でも観ようかと思い、近所のバルト9で23:40からの回の「ドラゴン・タトゥーの女」(映画.com)を観た。

原作の「ミレニアム」は三部作が世界で累計5千万部売り上げてるし、すでにスウェーデンでは三部作が映画化されている。今回はそれのリメイクで、監督はデビッド フィンチャー。主役格のリスベットを演じているルーニー マーラはフィンチャーの前作「ソーシャル ネットワーク」でもザックの元恋人役で出てた人。というとちょっと意外ですね。とにかく旬な映画。

原作は読んでないし、リメイク以前の映画も観ていないので、予備知識はほぼ無い状態で観た。周囲の人で既に原作を読んだり、している人もいたけど、読まずに観た方が良いと薦められた。

一番強い印象としてはハリウッド製金田一耕助、と言うとバカにしてるみたいだが、村人に聞き込みしたり、変人がいたり、過去の禍々しい事件と関連付けていくあたり、結構似てると思った。おっちょこちょいな刑事が出て来ないのがちょっと淋しい。

映画に出てくるお酒がなぜかいつも気になるんだけど、アクアヴィットはやはり出ず、ほぼスコッチ(ウィスキー)のみだった。あとは食事時のワインと消毒にウォッカ。ダニエル クレイグがスコッチをジョボジョボとタンブラーに注ぐ様子がサマになってて良かった。

ラストの終わり方も決して良いとは言えないんだけど、前作「ソーシャル ネットワーク」同様に切な系で、何よりフィンチャーらしさが出ていて良かった。これがフィンチャーの終わり方だよねっていう納得感が良い。ただ初めてフィンチャー映画観た人だと、相当ベタな終わり方なので、きっとあまり良く思わないだろう:)

とにかく本編が158分と結構長いんだけど、全然飽きないし、面白かった。もう終わっちゃうの?っていう感じ。

それで午前3時くらいに帰宅したら、停電は共有エリアのみで、住居エリアはしっかり電気付いていた。

NSStringから各エンコーディングの文字コードを取り出す

エンジニアブログで絵文字の事など書いたけれども、実際あまり深く理解していないのでメモ。

NSStringはUnicodeのUTF16実装のラッパークラスだという事はわかった(※1)

だけど、NSStringのリファレンスを読んでも、いろいろなエンコーディングに変換した際の文字コードを取り出す方法がハッキリしない。とりあえず実態はUTF-16なので、UTF-16での文字コードを取り出すのは以下の方法で出来る。

- (NSString *)getCharCodeUTF16:(NSString *)input
{
    int stringLength = [input length];
    NSString *utf16 = @"";
    for (int i = 0; i < stringLength; i++) {
        unichar c = [input characterAtIndex:i];
        utf16 = [utf16 stringByAppendingFormat:@" 0x%02X",c];
    }
    return utf16;
} 

unicharはそもそもUTF-16文字なので、当たり前。では、UTF-8での文字コードを取り出したい場合はどうか、というと、

- (const char *)UTF8String

までは辿りついたのだけれど、const charから文字コードを取り出す方法がわからなかった。

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

を使うとなんとかなりそうだったけど、結局NSDataから文字コードを取り出す方法がわからんくて断念。。。。

結局、間に合わせのやり方として、以下の方法であれば、何とかUTF-8文字コードが取り出せる。

- (NSString *)getCharCodeUTF8:(NSString *)input
{
    NSString *escapedUrlString = [input stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *utf8 = [escapedUrlString stringByReplacingOccurrencesOfString:@"%" withString:@" 0x"];
    return utf8;
}

エンコーディングを指定して、URLエスケープする方法は用意されているのだ。なんでそこだけ手厚く対応されているのだ。。。どうにかして素直に文字コードを取り出す方法は無いものか。。。

(追記)

「わからんなぁ」とかつぶやいたらstackoverflowのページを教えて貰えました。UTF-8文字コードなら以下の方法で取り出せました

- (NSString *)stringToHex:(NSString *)string
{
    const char *utf8 = [string UTF8String];
    NSMutableString *hex = [NSMutableString string];
    while ( *utf8 ) [hex appendFormat:@"%02X" , *utf8++ & 0x00FF];
    return [NSString stringWithFormat:@"%@", hex];
}

ありがたやー

(追記2)

何か勘違いしていて、dataWithEncodingの存在を放置していたんですが、dataWithEncodingでNSDataを取って、1バイトずつ読めばちゃんと文字コードが取れますね失礼しました。

そんなわけで以下のようなやり方が最適だと思います。

- (NSString *)getCharCode:(NSString *)string encoding:(NSStringEncoding)encoding
{
    NSData *data = [string dataUsingEncoding:encoding];
    NSUInteger length = data.length;
    NSString *code = @"";
    for (NSUInteger i=0;i<length;++i) {
        unsigned char aBuffer[1];
        [data getBytes:aBuffer range:NSMakeRange(i,1)];
        code = [code stringByAppendingFormat:@"0x%02X", aBuffer[0]];
    }
    return code;
}

※1...参考ページ Objective-C: NSString

「哀しき獣」を観た

1/7から公開の「哀しき獣」(映画.com)を観た。韓国映画で、以前観た「チェイサー」の監督のナ・ホンジンの新作で、「チェイサー」の犯人役の人が今回の主役。前回同様かなり衝撃作。ラストの仕上りも安心の品質。89点。今年最初で最大の舌打ち!!(どっちだ!?)。ただし血みどろな映画なので、観たくない人の方が多そう。本国ではR19で、日本ではR15指定。でも観たら良いと思うよ。

感想

とにかく悪役のミョン(主人公の直接の依頼主)のデキる男っぷりが冴えまくっててカッコいい。後半は主人公を追いかける敵役になるんだけど、豪胆ぶりがヤバい。どんくらいヤバいって、豚骨で敵を撲殺したり、いくら刺されても死なない!!スゴい!!

対して主人公は一見ハードボイルドな風だけど、拳銃で撃たれたりすると、意外と超痛がったり不安な表情したりして、そこがギャップですかねぇ、相当良い。一番ツボなポイントは会社のUMKTさんにクリソツなところなんですが、誰かわかるかなぁ。。ま、総じて登場人物がそれぞれキャラが立ってて良かったです。合間にちょいちょい笑えるシーンも挟まってる。

ストーリー的なところでいうと、途中まで主人公が金のためにひたすら仕事を片付けようとするんだけど、ハメられた!って気付いてから、どんな理由で標的が狙われて、なぜ自分がこんな事をしているのか、っていう事を解明していくんだけど、そこが明らかになる様がすごく良い。パク チャヌク(wiki)の復讐三部作然り、韓国映画の伏線の張り方はやっぱり高度。

次回は「ヒミズ」(映画.com)観たい。