2014年10月9日木曜日

退職のご報告

10月20日に、フリュー株式会社を退職することになりました。
10月7日に最終出社日を終え、今は有給消化期間をのんびり過ごしています。

今回の退職エントリ、書くかどうか迷っていたのですが、数人の友人たちから「読みたい」とリクエストを貰ったので、その友人たちやコミュニティでお世話になった人向けに書こうと思います。

■お前誰よ?
2012年2月から、フリューという会社で乙女ゲームの開発に携わっていました。
Scalaコミュニティの各種イベントとか、DevLOVE関西とか、関西ソーシャルゲーム勉強会なんかによく出没してます。

あと、今年は「トイレに閉じ込められた人」として一時期のインターネットを賑わせていました。

■なんで辞めるの?
今年に入ってから、いろいろと自分のキャリアについてじっくり考える事が多くなりました。35歳を過ぎていわゆるプログラマ定年を超えたことや、会社の組織変更などもきっかけになりました。

自分自信のキャリアのこと。ソフトウェア開発に関わるのを一生の仕事としていくために必要なもの。いろいろなことを考え、悩みました。

今年のゴールデンウィークには、東京旅行の途中で友人を頼っていくつかの会社を訪問し、そこでも様々なお話をさせてもらいました。(東京会社訪問ツアー[pixiv, はてな, ドワンゴ])

こういった形で、社内外を問わず様々な人たちと対話を重ねる中で、自分のやりたい事の輪郭が見えてくるようになり、転職を決意しました。

もう少し詳しい話を聞きたい、という人はまた飲みにでも誘ってください。

■次はどうするの?
2年半ほど、ソーシャルゲームの開発をしてきましたが、しばしゲームからは離れることになります。ただ、インターネットの世界でソフトウェアの開発に引き続き関わっていくことになるかと思います。次の会社には11月からジョインする予定です。

関西ソーシャルゲーム勉強会、というコミュニティについては、ゲームの世界を離れてしまうのでやれる事は限られるでしょうが、引き続きなんらかの形でコミュニティ自体にはコミットメントして行きたいと思います。

あと、依然としてScala大好きなことには変わりないので、こちらのコミュニティにも積極的に関わっていきたいです。

11月までしばらく有給消化 & 無職期間があり、平日は微妙に暇だったりするので飲みに誘ってくれると嬉しいです。

恒例のウィッシュリストはこちらになります。

今後共よろしくお願いします。

2014年9月8日月曜日

#ScalaMatsuri に参加してきた


日本最大級のScalaのカンファレンス、ScalaMatsuri に参加してきました。
去年のScalaConferenceの模様はこちら

スポンサーでもあるドワンゴさんのご好意により、各セッションの模様はニコ生のアーカイブでご覧いただけます。

去年に引き続き、今年も所属会社であるフリューがスポンサーとなっていて、会場では弊社のノベルティも配られていました。


■今年は一歩引いて参加してみた
今年は、自分なりに意図があり、あえて一歩引いた立ち位置で参加していました。
フリューに入社してScalaを扱うようになり、去年のScalaConferenceではスポンサーセッションに登壇する、というチャンスをもらいました。そのおかげで、僕もそれなりにScalaコミュニティの中でいろいろな人に名前を覚えてもらい、今年のScalaMatsuriでもコミュニティの中心で活躍されている様々な人と交流することができました。

今年もフリューがスポンサーになるということで、今年は、去年の自分が活かすことができたこの機会を、若手のエンジニアに譲り、彼らをフォローする立場として参加しようと思いました。

去年のScalaConferenceで当時まだフリューにいらした@mumoshuさんと参加した時は、僕自身がまだ不慣れであったり、参加者に知人がそれほどいなかったことなどもあり、懇親会などで少し自分が孤立してしまう場面もあったので、今年は僕がコミュニティとの間を取り持って、今回参加してくれた自社のエンジニアに楽しんでもらおうと思いました。

僕のこういった心配は実は完全に杞憂で、@kuchitamaさんは当初からボランティアスタッフとしてイベントの運営に携わっていたし、@osunuさんはスポンサーLTで実に堂々したプレゼンを披露していました。

おそらく今回の参加で、彼らもScalaコミュニティの多くの人に名前を覚えてもらっただろうと思います。

■去年との違い
去年のScalaConferenceの熱気も凄かったですが、今年もまた去年と少し空気は異なりつつもものすごい盛り上がりを見せていました。

去年は、Scalaをこれまで支えてきたコアな人達が中心となって盛り上がっていた印象でしたが、今年はさらにオープンに開かれていた印象でした。

Scalaを実際に扱っている、という企業も去年から飛躍的に増えており、わずか1年ですごいことになったなー、という気持ちです。

■小田好先生
自分が普段仕事で使っているプログラム言語の、言語設計者に実際に会う事ができるプログラマというのは、世界でもそう多くは無いはずです。

今回のイベントにMartin Odersky先生が来てくださったことで、僕はそういう幸運なプログラマの1人になることができました。


この写真は一生の思い出です。著書にサインもいただきました。


あと、「今年は一歩引いて参加する」と言っておきながら結局我慢できなくて、LTに登壇していましたw



来年も同様のカンファレンスがあるとするなら、また今回とは違った立場で参加することになるでしょうから、次回はコミュニティに対してきちんと貢献できるような参加の仕方をしたいな、と思っています。

今年のこの時期に、チームの仲間とこうしてイベントに参加できたことは、自分にとってものすごく大きな意味のある体験でした。

このような機会を与えてくださったスタッフの皆さんには感謝の気持ちしかありません。本当にありがとうございました。

2014年6月7日土曜日

超交流してきた


京大の超交流会に参加してきた。

はてなの栗栖さんから「京都で働く」をテーマにしたパネルディスカッションのメンバーに誘っていただき、"京都大学"なんて自分の人生においてこれまで何の接点もなかったし面白そう! と二つ返事で参加させていただくことに。

京大なんて何の接点も無い、と書いたものの、参加してみれば前年度に採用の仕事をしているときに知り合った学生さんが声をかけてくださったり、企業ブースには普通に知ってる人が何人かいらしたり、案外自分の人生と微妙に重なっている部分はあったようだ。

とはいえ、今回知り合った人たちの多くは、このイベントに来なかったら接点がなかっただろうな、という方たちばかりで、そういう人のお話を聞けたのは本当に良かった。

今回は、パネルディスカッションということで、栗栖さん、いろいろデザインの長山さん、ヌーラボの染田さんと4人で登壇した。パネルディスカッション自体は人生で3回目。しかも今回は普段から付き合いのある人と一緒の登壇だったので、少しはうまくやれるだろう、と思っていたのだが、やっぱりパネルディスカッションは難しかった。

普段の生活や、いつも参加するコミュニティとは違った世界に触れられたのは、ほんとうにいい経験だった。

僕ももう少し、「いつもと違う世界」を意識してちょっといろいろチャレンジしてみてもいいのかな、と思った。

2014年5月11日日曜日

転職活動で心を病まない方法について

はてなの増田で興味深いエントリを読んだ。

転職活動で心を病んだ件について
http://anond.hatelabo.jp/20140510231402

このエントリの内容の是非はともかくとして、率直な感想は「すごい数にエントリしてるな」だった。

この人の転職活動の経緯は知らないけど、たぶん転職エージェントに手当たり次第にエントリしろ、と言われたんだと思う。僕もそう言われた経験があるからわかる。

転職エージェントは、求職者が転職先企業に入社が決まってはじめてお金を貰えるビジネスだ。と、なると、エージェントとしても採用される確率の高い人に注力したい。確率の低そうな人は、数で勝負して少しでも確度を高めたい。当たり前の話だと思う。

つまり、エージェントに「エントリ数を増やせ!」と言われたということは、「あなたには一押しできる個性がない」と言われたのと同義だろう。

僕の経験を書く。

最初、転職活動をはじめたとき、とりあえず大手の転職エージェントに複数申し込んだ。ネットで申し込み、個人的な面談を受ける。このときにエージェントに履歴書とか職務経歴書を送るわけだが、当時の職務経歴書ははっきり言って無個性だった。

常駐型ビジネスで、常駐先企業に送るような、「会計システム構築 C# Oracle 200n年〜200n年」みたいなのが羅列されてるやつ。

いろいろなエージェントに言われたのは、「とりあえず50社に書類を送りましょう。それで1割ほど書類選考が通れば儲けものです」ということ。

新卒じゃあるまいし、そんなに書類送る時間あるかよ、と思い、エージェントに頼るのはやめることにした。

このとき、某大手Web企業が大阪に開発部隊を新設する、ということで、エージェントを通さずに直接申し込んだ。

自分の職務経歴書が無個性だということは、エージェントに「数を撃て」と言われたことでなんとなく察していたので、個性を出そうと思った。はっきりと覚えてないが、blogのURL、SNSのアカウント、勉強会やカンファレンスの登壇経験と発表資料のリンク、とかを書いたように思う。

数日して、電話がかかってきた。大手の転職エージェントからだった。曰く、ぼくが直接応募したWeb企業は、かなりの大規模採用だったため、自社で採用活動をまかなえないのでこの転職エージェントに採用業務を委託しているのだという。

電話の内容は、「採用は見送り」というものだった。書類選考だし、メールで合否が来るものと思っていたので、なぜ電話などしてきたのだろうと思ったら、エージェントが続けてこう言う。

「今回、この企業の選考ではスキルがマッチせず採用を見送りました。ただ、あなたの経歴はとても魅力的で、おそらく欲しい企業はたくさんある。なので、引き続きわたしの方であなたの転職活動をお手伝いさせていただきたい」

悪い話ではなさそうだったので、とりあえず会ってみることにした。

面談の場でそのエージェントは、数を撃て、とは一言も言わなかった。実はこのエージェント、最初に数を打て、と僕に言った会社だったのにもかかわらず(当然担当者は別)


そこから、エージェントはものすごく詳細に僕の資料をレビューし、応募先企業も厳選して選択してくれた。

結果的にそのときに紹介された企業に入社が決まった。

職務経歴書に個性を出すのは、やり方しだいでいくらでもできるんじゃないかと思う。特にIT系の仕事なら。

エージェントに数で勝負しろ、と言われたら、方針転換して書類を工夫して、別のエージェントに相談してみるのもいいかもしれない。

以上、僕の経験による「転職活動で心を病まない方法」でした。

2014年5月1日木曜日

東京会社訪問ツアー [pixiv, はてな, ドワンゴ]

■ きっかけ

今年で35歳になり、なにかと自分のキャリアであるとか、そういうものを深く考えることが多くなった。

エンジニアとしての自分自身のこととか、自分たちチームのあるべき形とか、そういうことを悶々と考えていると、隣の芝が青く見えたりもする。

そんな折、今年のゴールデンウィークに11連休という未曾有の大型連休の取得に成功。社会人生活史上でも類を見ないこの長期休暇を有意義に過ごすために、今回の旅を計画した。

そもそものきっかけは、以前@bash0C7さんがTwitter上で「今度うちの会社に遊びに来ていいよ」と言ってくれていたのを思い出したからである。
暦で平日にあたる期間に数日にわたって休みが取れることなどめったにないので、もし@bash0C7さんの会社のアポが取れれば、これをとっかかりにいろんな会社を見学しよう、と思った。幸い、これまでのコミュニティ活動の賜物として、主要なIT企業にはだいたい知ってる人がいる。この人脈を活かさない手はない。

お願いしたところ、@bash0C7さんから快くOKをいただき、さっそくその他いくつかの会社にも同様のお願いを申し出ることにした。

扱っているプロダクトであるとか、採用している開発プロセスとか、そういった部分で自分が個人的に話を聞いてみたいと思ういくつかの企業をピックアップ。その中で、「平日に訪問して1時間ばかり時間をいただき、社内の見学とか、お話を伺うとかしたい」というビジネスとまったく関係ない依頼をお願いできるくらいに仲の良い人がいる企業に絞り込んだ。会社として気になりつつも、使っている言語やプロダクトがあまりに自分たちと異なっている会社さんは、さすがに自分は話を聞けてもこちらからお話できる情報が無さ過ぎてご迷惑だろうと思い、そういうところは対象から外したりした。

調整の結果、pixivさん、はてなさん、ドワンゴさんの3社のご都合がつき、今回訪問させていただくことになった。完全に僕個人のわがままみたいな依頼だったのにもかかわらず、各社さんすべて真摯に対応していただいた。感謝してもしきれないくらいにありがたい。

■ ツアーその1: pixivさん訪問

4月30日。東京は雨。なんでも、場所によっては傘も役に立たないほどの豪雨となるらしい。以前デブサミで東京に来た時は歴史的な大雪だったな、と思いつつ山手線を代々木駅で下車。そこから明治神宮を横目にみつつ、歩くこと数分。オシャレオフィスで有名なpixivさんに到着した。

pixivさんといえば、めざましテレビで紹介されるほどのオフィス。訪問すると、壁一面が絵馬で埋め尽くされており、これまでゲストとして訪れた人の書いた絵とか、コメントが貼られている。

pixivさんには毎週水曜日にゲスト枠というのがあり、社外からゲストを招いて皆でランチを食べるという制度があるらしい。僕も今回そのゲスト枠に入れていただき、社員の皆さんと一緒にお弁当をご馳走になった。

オフィスに入ると、共有スペースにプロジェクタで座席表が映し出されている。どうやらランチの席順らしい。よく見ると、僕のTwitterアイコンが入っていた。


自己紹介をし、会社で乙女ゲームを作っている事を話すと、さっそく皆さんダウンロードして遊んでくださった。お礼をしないといけないので、このエントリを読んだ人は今すぐpixivのアプリをダウンロードしてください。

ちなみにご馳走になったお弁当はこんな感じ。


どうもごちそうさまでした。お弁当、すごく美味しかったです。

pixivさんのオフィスは、ものすごくオープンである。客先常駐プログラマ時代に、入口で携帯電話などの私物をロッカーに預けないと職場に入れないような世界を経験した僕など、想像もできないほどオープンだ。なんと、ランチ後のエンジニアの全体会議を見学させていただけた。

この会議。想像以上にガチで、「僕、ここにいて大丈夫なんだろうか・・・」とハラハラしてしまうほど。当然内容はここには書けないけれど、pixivエンジニアたちのサービスにかける熱さを垣間見ることができた。

全体会議参加後、絵馬を書かせていただき、名残惜しくも訪問時間が終了。社員犬のチョビと遊びたかった。


絵馬はエンジニアゾーンに飾らせてもらった。@kyon_mmさんの絵馬の近くであることが、写真からもお分かりいただけると思う。

pixivさん、ありがとうございました!

■ツアーその2: はてなさん

pixivさんを後にし、東京メトロで表参道へ行く。続いての訪問先は、はてなさん。

DevLove関西で出版した電子書籍に寄稿したご縁をきっかけに、開発部隊が同じ京都にあるということもあって、最近ははてなエンジニアの皆さんと仲良くさせていただいている。先日の勉強会で京都オフィスにお邪魔しているが、東京オフィスに伺うのはこの日がはじめてだ。

京都で行きつけの居酒屋で飲んでいるとばったりはてなエンジニアと出会う、というような事もあるほど、縁の深い会社である。

表参道駅を出て根津美術館方面へ歩き、はてなさんのオフィスを目指す。SIer時代から考えると、これまで数えきれないくらい色々な会社を訪問した経験があるが、会社に着くまでのお洒落さは自分の会社訪問史上最高だった。一歩ごとにドラクエの毒の沼のごとく、自分の中の何らかのパラメータが削られていくほどのお洒落さだ。

写真は、はてなさんの入っているビルの隣にある、根津美術館を囲む竹林。僕のような人間がこうしてカメラを構えていると、職質されるのではと思うほど、自分とは場違いな世界だった。


はてなさんも僕が勤めているフリューと同じく、開発部隊は全て京都にある。東京オフィスは営業、企画、編集、といった機能であるとのこと。知り合いの編集さんに応対していただいた。

(追記:東京にもディレクター、デザイナーさんがいらして、"開発すべて京都"ではないとのご指摘をいただきました)

以前京都オフィスにお邪魔したときは、やはり開発部隊のオフィス、という趣きだったが、東京オフィスはまたずいぶん雰囲気が違う。

はてなさんのサービスについてであるとか、開発時のコミュニケーションをどのようにしているか、であるとか、そういったお話をたくさん伺った。

同じ京都に開発を持ち、企画機能が東京にある、ということで自分のチームの状況と似たところもあり、ためになるお話をたくさん伺った。

(追記2:京都にも企画機能があり、完全にロケーションがわかれているわけではないそうです)

はてなさん、どうもありがとうございます! 京都出張の際は是非飲みに行きましょう!!

■ツアーその3: ドワンゴさん

翌日の5月1日。ニコニコ超会議の興奮冷めやらぬ中、歌舞伎座タワーへ。会社訪問ツアーのラスト、ドワンゴさんだ。

Scalaプログラマ的にドワンゴさんと言えば、最も気になる会社。デブサミでの講演を楽しみにしていたのだが、初日にインフルエンザを発症して結局そのまま大阪に帰ってしまったので、講演に参加できず、今回はそのあたりのお話も伺いたかった。

歌舞伎座に着くと開演前の大混雑。ふとこんな事を思った。

半分冗談だったのだが、予想外のリプライをいただく。

マジか!! Scalaといい、歌舞伎といい、心惹かれる会社である。

ちなみに、このツアーを公言してから、いろんな人に「だいくしーさん、転職活動してるんですか?」と言われたのだが、さすがにこんなに堂々と転職活動はしません。今のチームに持って帰るためにお話を伺っていますw


ドワンゴさんでは、主にScalaの話や、採用についてのお話、話題になった超チューニング祭りの事など、2時間近くお話を伺うことができた。

軽くオフィスも見学させてもらい、今度は女子マネがいるときに遊びにきたいなーと思った。

僕の訪問を聞きつけて@kmizuさんもお時間をとってくださり、ランチまでご一緒させていただいた。

@kmizuさんとはTwitterでは交流があったり、去年のScalaカンファレンスですれ違ったりはしていたけれど、ゆっくりお話させていただいたのは今回は初めてで、お会いできてよかった。

■ まとめ

普段、仕事をしていると、「自分たちの方向性とかやり方は本当にこれでいいのだろうか」と不安になることがある。今の僕がまさにそういう状態にあったのだけれど、各社さんでお話を聞き、自分が正しいと思っている方向性とか、価値観はどうやら間違っていないようだ、ということを再確認することができた。

コミュニティ活動を通じて、いろんな会社の人と交流を持ち、こうして実際に会社に伺ったりすることのできる自分の仕事は、素晴らしい仕事であるなぁ、と本当に思う。

今回の旅は、僕が一方的にいろいろなものを受け取る旅だったけれど、お返しに自分も皆さんに何かの価値をお渡しできるようにならないといけない。

完全に僕のわがままみたいなご依頼に快く応対してくださった皆さん、本当にありがとうございました。

京都にお越しの際は、ぜひ弊社にも遊びに来てください!!

2014年3月30日日曜日

プログラマ35歳定年説勉強会を開催しました。 #DevKan



先日の土曜日に、プログラマ35歳定年説勉強会(Doorkeeper) を開催しました。

講演をお願いした仙石さん谷口さんのお二方のお話も素晴らしく、ディスカッションの時間には参加者の皆さんも熱心に議論してくださり、良い勉強会だったと思います。

内容や感想については参加者のどなたかが書いてくれると期待して、僕は主催者目線でこの勉強会を振り返ってみたいと思います。

そもそも、この勉強会を企画した動機は、自分自身が今35歳という年齢をオンタイムで生きていることにつきます。

20代が終わって、30歳になった瞬間には特になんの感慨もなかった僕ですが、去年の9月に35歳になった瞬間は何やら色々なものが重くのしかかったような気がしました。

それは、若い頃から「35歳定年説」を聞かされてエンジニア人生を送ってきた刷り込みのようなものが原因だったのかもしれません。

32歳のときに、僕は当時勤めていたSIを退職し、今の会社に来ました。Excel方眼紙と向かい合い、徹夜で見積もり資料を作ったり、オフショアからの成果物をチェックしたりと、このままでは「プログラマ」と名乗ることは永遠にできなくなると危惧した僕は、今の会社に入り、幸い35歳を迎えた今でも毎日Scalaでプロダクトコードを書き続けています。

では、今の会社でこのままプログラマとしてコードを書いていけるかというと、そう簡単なものではありません。

今年に入って組織変更があり、上司が新しくなり、僕は日々、「お前もそろそろマネジメントを覚えるべし」という圧力にさらされています。今の開発プロジェクトではリーダーというポジションに置かれ、会議の出席やらスケジュール管理などでコードを書く時間は以前より減りました。

そんな状況にあって、世の中の35歳という時を生きているエンジニアの皆の話を聞きたい、というのが、この勉強会を主催した意図でした。

ただ、この勉強会は企画当初から大きな矛盾をはらんでいる事は認識していました。

それは、「こんな休日にわざわざ勉強会に来て議論するような人間は、そもそも自力で35歳定年説など克服することができるはずである」ということです。

勉強会後の懇親会で、ある人がこんなことを言っていました。「この勉強会におけるディスカッションが本来の意味で成功、となるには、35歳定年を克服できる人間と、それに抗えない人間がお互いに怒号を飛ばし合うことであるはずだ」

これはある意味で真理です。今回の勉強会は、実際には「35歳定年説など信じていない人達が、その正体が実はなんであるのかを探りにくる会」でしかなかったといえます。

ただ、それはそれで良かったのだと思います。少なくとも、いくつかの問題提起はできたはずだし、参加者の皆さんもなにかを持ち帰ることはできたでしょう。

僕自身、1人で悶々と35歳定年について悩んでいるだけでなく、様々なコンテキストの人の考え方に触れることができて少し気分が楽になりました。

僕自身があの勉強会で得た結論はあえてここには書きませんが、この勉強会が参加者の皆さんのエンジニアライフに何かをもたらすことができたのなら、嬉しいです。

2014年2月10日月曜日

COVERALLSのバッジがGithub上で更新されない問題

dmm4sというライブラリを作ってる。

ライブラリ自体は、DMM APIを叩いて結果のXMLをScalaのcase classにマッピングしているだけの多愛のない物だ。

このライブラリを作ったテーマは、「ライブラリとしてちゃんと作る」ということ。
Maven Centralリポジトリへの登録であるとか、CIを構築するとか、テストを書く、とか。そういう「OSSとしてちゃんと作る」という事を自分のテーマとしてやってみた。

そういうテーマを課して作ってみたので、GithubのREADMEにその証としてTravis CIとCOVERALLSのバッジを貼ってみた。

しかしこのせいでドハマりすることになる。

まずはこちらのスクリーンショットを見ていただこう。










これはdmm4sの0.1-SNAPSHOTをリリースした時のREADMEのスクリーンショットである。COVERALLSのバッジの色が赤いのが御覧いただけると思う。このバッジが示すカバレッジは71%。COVERALLS的にはテスト足りてないんじゃないの? と警告されているわけである。

しかし、実際にはこの時、COVERALLS上でのカバレッジは96%であった。お疑いのようならこちらのサイトへおもむき、「0.1-SNAPSHOTリリース」とコメントのついた履歴をご覧頂きたい。

カバレッジ71%というのは、dmm4sにCOVERALLSをはじめて導入した際のカバレッジである。つまり、GithubのREADMEとCOVERALLSとが連動していないのである。

しばらく待っていればそのうち連動されるだろう、と思いつつ数日を過ごすも一向に変わらない。READMEを更新してみたり、バッジを一旦削除してみたりしても変わらない。

行き詰まった僕は、COVERALLSにissueを投げてみた。

https://github.com/lemurheavy/coveralls-public/issues/209

結果、中の人からは「youのバッジは最新になってるYO!」とのこと。どうやらこちらの意図がうまく伝わらなかったのだろうか。
issueのコメントには「Please re-open the issue if you see it happen again.」と書いてあるのだが、re-openのボタンがどこにも見当たらない。

オレのアカウントにre-openできる権限ねーじゃねーか!!!!

ふと思い立ち、ChromeでREADMEに貼ってあるバッジ部分のコードを読んでみる。

するとこのバッジ、HTML上はgithubのキャッシュを参照しているようだ。

僕がREADMEに貼っている実際のリンクは次のコードである。

https://coveralls.io/repos/daiksy/dmm4s/badge.png?

このリンクが変われば、キャッシュも更新されるだろう、と思い、"https"を"http"に変えてコミットしてみた。そうすると…。












更新されたああああああ!!

しかし、次にカバレッジが変わった場合にはもう一度"https"にしたらなおるんだろうか…。

2014年2月8日土曜日

sbt 0.13.1でMaven Centralリポジトリに登録する方法

今日の第3回 Scala関西ビギナーズに間に合わせようと、先週から毎日少しずつコードを書き進めて、dmm4sというライブラリを作った。

SNAPSHOT版とはいえなんとか勉強会当日にリリースが間に合い、そこそこの笑いを取ることができた。

sbt はご存知の通り、ver間の互換性に難があり、sbt 0.13.1でのライブラリ開発はちょくちょく詰まりポイントがあった。Travis CI, Coverallsの利用など、多くはsbtのverによる依存関係の問題で、基本的には各pluginやライブラリの最新版を使うことで解決することができた。

Maven Centralリポジトリへの登録も、基本的にはsbtのドキュメントの通りで問題なかったのだが、ちょくちょく苦労したポイントがあったのでまとめておこうと思う。

環境は
sbt version: 0.13.1
scala version: 2.10.3
Mac OS X 10.9.1

1. Sonatype OSSRHでJIRA登録

まずはSonatype JIRAにユーザ登録し、ログイン。その後画面の左上あたりにある"create issue"をクリックし、必要事項を記入する。

Issue Type: "New Project"を選択
Summary: プロジェクトの概要
Group Id: build.sbtなどに設定している、organizationの値
Project Url: プロジェクトのサイトURL(githubのURLで良い)
SCM Url: githubのURL

ちなみにdmm4sのチケットはこちら

しばらく(1日くらい?)待っていると、中の人が設定終わったよ、という返信をくれる。
僕は深夜にJIRA登録したのだが、登録後10分くらいで返信が来てビビったw

2. PGPキーの作成

gpg --gen-key
コマンドでPGPキーを作る。gpgが入って無ければ、
brew install gpg
でインストールできる。

gpg --lisy-key
で作成されたキーを確認し、
gpg --keyserver http://pool.sks-keyservers.net --send-keys {キーID}
でkeyserverに公開鍵を登録する。

3. sbtのセッティングとpublish

http://www.scala-sbt.org/0.13.1/docs/Community/Using-Sonatype.html

上記のドキュメントに従い、sbtに各種設定を追記する。
基本的にはここに書かれているコードをコピペしつつ、sonatypeのパスワードとか、自分のプロジェクトのURLなどを書き換えればいいのだが、publish時にPGPキーの署名をする部分でうまくいかなかった。

sbt 0.13 でPGPキーの署名をしつつpublishするには、SBT PGP Pluginをインストールし、sbtで
publishSigned
のコマンドを実行する。

上記のsbtドキュメントにもSBT PGP Pluginへのリンクが貼ってあり、ここに"~/.sbt/plugins/gpg.sbt"ファイルを作成して、"addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.1")”と書け、とある。

僕もそれに従ったのだが、sbtで"publishSigned"のコマンドを認識してくれない。

これは、ファイルの作成場所が間違っており、正しくは"~/.sbt/0.13/plugins/gpg.sbt"が正しい。

4.リリースの処理を実行

https://oss.sonatype.org/index.htmlにアクセスし、sonatype JIRAと同じアカウント、パスワードでログインする。

左側の一覧から"Staging Repositories"をクリックすると、一覧が表示され、自分のプロジェクト選択。"close"を実行する。ここで成功したら"release"を実行。

あとはJIRAに、リリースした旨をコメントすれば、中の人がCentralリポジトリに同期させてくれる。

とまぁ、こんな感じ。

2014年1月26日日曜日

命がけのリアル脱出ゲーム - トイレに閉じ込められたはなし -

■トイレのドアノブが壊れる

2014年1月25日 22時頃。友人たちと楽しんだベルギービールの余韻に浸りつつ、帰宅。
突然の雨に体を濡らし、熱いシャワーでも浴びたいところだったが、ビールの摂取に起因する尿意を解決するため、とりあえず部屋着に着替えてトイレに入る。

用を足し、水を流し、外に出ようとドアノブに手をかけて右に回すが、手応えがない。
訝しみつつそのままドアを開けようとするが、当然ドアノブに手応えがない以上、ノッチが引っかかったままで開くはずがない。

ん? 何かがおかしい……。

酔っていてドアの開け方を忘れたのかな? 右回しかと思ったけど左回しだったかもしれん。

もう一度、次はドアノブを左に回す。…が、手応えなし。

うっかり鍵をかけてしまったのかもと思い、鍵のつまみを回すも、やはり空回りするばかりで手応えがまるでない。なにをどうやってもドアのノッチが開いてくれない。

これは…まさか…閉じ込められたのか…。

長い闘いのはじまりである。

■自力脱出を試みる

我が家は妻と2人暮らしである。土曜日の夜、普通なら妻がいる。さして広い家でもなし、大声で彼女を呼べば通常ならかけつけてくれるはずである。

が…しかし…。

妻はIT業界の闇、デスマーチに巻き込まれ、休日出勤の只中にあった。22時にもなるというのに帰ってきていない。デスマ滅んでしまえ。ブラック企業ごと滅べ。この世から。跡形もなく。

雨に濡れて体も冷えている。いつ帰ってくるともしれないデスマーチ中のITエンジニアの帰宅など待っていられない。まずは自力脱出を試みる。

脱出の鍵はやはりドアノブである。ドアノブが故障しているのはもはや明白であるが、これをなんとかしないことにはドアは開けられない。現状確認だ。

どう回しても空回るこのドアノブは、調べてみると左にいっぱい回した状態から、右にいっぱい回した状態まで300度ほど回転する。1回転より若干少ない。
そして、ドアノブの中心に鍵をかけるためのつまみがついている。これも空回りするが左右に回転する。

これらの組み合わせで、なにか運良く一瞬でもノッチとドアノブが連動しないだろうかと試してみる。

左にいっぱい回した状態で、鍵のつまみを左右に動かす。次に右にいっぱい回した状態で、鍵のつまみを左右に。これをドアノブを少しずつ動かしながら根気よく組み合わせを試していく。直交表が手元にほしいところであるが贅沢はいえない。頭にExcel方眼紙を思い浮かべながら全てのパターンを網羅する。

…が…開かずっ…!?

空回りしているのだから当然か。ドアノブの組み合わせによる解放は早々と諦める。

次にガチャガチャと力任せにドアノブを乱暴に扱ってみるが、なにも起こらない。刑事ドラマで、密室殺人発生時に強引にドアをぶち破っているシーンを思い浮かべ、肩から力任せにドアに体当たりしてみるが、肩を痛めただけでドアはびくともしない。

…なんて堅牢なドアだ…。たかだか室内のトイレのドアをここまで頑丈にする必要がどこにあるんだ……。

少し心を落ち着けて、冷静に現状を確認して脱出の手立てを検討することにする。

■トイレの密室感は異常

脱出するために、自分になにができるのか。今ぼくの手元にはどのようなカードが配られているのか。それを確認する。

外部との通信手段さえあればどうとでもなるはずだが、大便のときならともかく小便をするだけのためにわざわざ個室にiPhoneを持って入らない。

外部との通信手段は皆無である。

次に室内を見回す。

まず、トイレ清掃用のブラシが便器の脇に設置されている。あとは予備のトイレットペーパー、そのトイレットペーパーを設置するために芯を貫く棒。トイレクリーナー的なもの。これだけ。

……そう…これだけ…。

トイレの室内に工具などあるはずもない。ドライバーの一本でもあればドアノブを外すこともできる。しかし、何もない。

一般家庭のトイレの個室の中には、何一つとして脱出に使える道具はないのである。

ここで、子どもの頃に読んだ冒険小説を思い出す。冒険小説の主人公は、一見するとなんの関係もない道具をうまく応用して使うことで、サバイバルを切り抜けていた。ぼくにもやれるはずだ。考えろ。極限まで思考を巡らせろ。

まず、何か硬いカードのようなものをドアの隙間に押し込んで、ノッチを外せないかと考えた。

トイレットペーパーの芯は結構硬い。これをある程度の強度を確保しつつ平らに加工し、使えないものだろうか。

結論からいうと、ダメ。外側からならともかく、内部側は、ドアがこれ以上内側にいかないように枠がはめられていて、それが邪魔をしており、ドアのサイド側の隙間になにかを差し込むことができないようになっている。

トイレットペーパーはどうやら脱出には使えそうにない。

次にトイレットペーパーを設置する棒をなにかに使えないかと考えた。

ドアを見ると、下部に手のひら程度なら通過できるくらいの大きな隙間が開いている。ここに棒を押しこみ、テコの原理でドアの一部でも破壊できないものか。

……えいや!!

勢いにまかせて棒に力を込めると、バキッ、という音とともに手応えが…!?

……棒が折れた。

もうだめだ…。密室すぎる…。残されたトイレクリーナーとトイレブラシをどう応用したらドアを破壊することができるというんだ……。こんなもの、トイレ掃除する以外の使い道なんて思いつかない…。

床にしゃがみ込み、絶望に打ちひしがれる。もう妻の帰りを待つしか無い。ドアの下部にあるこの隙間。ここからドライバーさえ渡してもらえたら、ドアノブを外すことができるし、脱出の手段は劇的に増えるだろう。iPhoneだって手に入る。

しかし、これがもし1人暮しだったらどうか。脱出の手段はゼロ。我が家にたずねてくる人など、Amazonからのお届け物を持ってくる配達員以外いない。しかも今はAmazonに注文しているものも無い。

…餓死するしか無いじゃないか!?

突然襲い来る死の恐怖。寒い。喉が渇いた。トイレの水って飲んでも平気なんだろうか。飲んでお腹を壊しても、トイレだしそこは大丈夫そうだな。

様々な思考が脳内を駆け巡り、トイレの床に体育座りでリアルに泣く、35歳の男の姿がここにあった……。

■妻の帰宅。ついに脱出にむけて光明がさす

永遠にも思える時を、トイレの個室の中で過ごす。時折隣の部屋の住人がトイレを利用するする音や、外の廊下を別の部屋の住人が歩く音などが聞こえ、その度にドアや壁を叩いて存在を主張してみるが、何の反応もない。

気が狂いそうだ。

どれくらい経っただろう。我が家の玄関が解錠される音が聞こえる。

!!!!?? 妻が帰ってきた!!!!

立ち上がり、ドアを力いっぱい叩く。「助けてくれ!!!! 閉じ込められた!!!!!」

事情を説明し、例のドアの下の隙間からiPhoneとドライバーを手に入れることに成功。

これで勝てる!!!!!

少し余裕が出てきたので、iPhoneを使ってTwitterにつぶやく。

瞬く間に大量のRT。
お前らRTしてる暇があったら助けろ! ksg!!

しかし、さっきまでのぼくとは違う。今は手元にドライバーがある。
慎重にネジを外し、ドアノブをドアから取り外す。これでなにか手がかりが得られるはずだ。


結果がこうである。
真ん中の四角い穴。これをどう回しても、ドアにはなんの反応もない。どうやら完全に壊れているようだ。
僕はドアノブを外して何がしたかったのだろう。完全に詰みだ。内側からできることはもう何もない。

なんなのだこれは。いくらなんでも密室すぎるだろう。もっと安全側に倒して設計しろよ。トイレのドアをここまで堅固にして、いったい誰が得をするのだ。もうだめだ。自力でできることなど何もない。ここはもう、業者を呼ぶしか無い。

業者に連絡する。深夜ということもあって、到着まで4, 50分かかるという。ここからさらに1時間弱待つのか…。

ここからの1時間は妻を待っているときの絶望感とは打って変わって心穏やかだった。脱出の糸口が見えていたし、TwitterでRTされまくって100近い励ましのリプライをもらっていた。もうぼくは1人ではない。あと50分。耐える! そして生還してみせる!!

■神の使い。業者がやってくる

玄関のチャイムが鳴る。深夜2時。閉じ込められて4時間近く経過していた。

やっと業者がやってきた。妻と金額の話をしている。

払う…!金ならいくらでも…!! ここから生きて出ることさえできたなら…!! 払う! 払わざるをえない…っ!

業者の話によると、ドアは完全に壊れており、ドリルを使って内部の金属を破壊するしかないという。なんだそれ。自力では無理ゲーすぎるじゃないか。1人暮らしだったらマジで詰んでるぞ……。

深夜のマンションに響き渡るドリルの音。ご近所の皆さんに申し訳ない。しかし仕方がないじゃないか。こっちは生き死にがかかっているんだから。

金具が完全に破壊され、ドアが開く。やっと外の世界に出られる。生還だ。まだもう少し、人生を生きることができる…。

見事な業者の仕事ぶり。プロの仕事である。神すぎる。

こうして、ぼくは脱出することができた。
最初の閉じ込めツイートのRTは300を越え、いつのまにかフォロワーが40人増えている。

…お前ら……。

最後に記念に作成した悪循環コラを掲載し、このエントリを終えようと思う。

応援してくれたみんな。本当にありがとう。