大切な友人が逝ってしまった

java-jaの偉大な幹事であり、僕の人生を変えてくれた友人である山城が亡くなった。
今日はその送別会であったので、遺族である妹さんにも了承の上、山城が亡くなったことについて公に話そうと思う。

僕がその訃報を聞いたのは12/4の16時ぐらいだった。ちょうどその日に山城が幹事のjava-ja忘年会が予定されていたので、まさかという思いがありつつ、どうにかしないとという思いで幹事を引き継いだ

とにかく集まった方に状況を説明し、よくわからないまま泣きながら家路についた。

山城は12月3日に事故にあって亡くなった。最後のツイートが

なので誤解を受けているが、このツイートと山城の死因に因果関係はない。彼が亡くなったのはこのツイートの3日後だ。

生前、幹事としてドタキャンを最も嫌っていた彼が、最後の最後で亡くなることでドタキャンをすることになるというのはなんという運命のいたずらだろう。まあでも

そういうことだ。

僕がjava-jaに参加したのは、
第一回チキチキ そろそろ Wicket について一言いっとくかが初めてなのだが、この場でid:yamashiro0217にであった。それから僕のエンジニア人生は大きく動きだすことになる。

当時、中堅のSIerでくすぶっていた僕に、ドワンゴへの転職を後押ししてくれたのも山城だ。転職後、id:yoshiori, id:yamashiro, id:t_yano, id:k-z-hというドリームチームで働かせてもらった。大変なことも多かったが、新しいこともたくさん学ぶことができた僕の原点ともいえるチームだった。そこでも、山城は新しく入った僕と率先してペアプロしてくれたし、コミュニケーションの中心として機能してくれていた。

僕はそんな山城が大好きだった。本人に言ったことはないけど。

仕事のことだけじゃなく、プライベートなこともたくさん話をした。山城のために看護婦さんを集めて花見会をしたこともあった。実らなったけど。

結果として、僕のFacebookの友人のうち、共通の友人が一番多いのは山城だ。僕の友人関係のうち170/384=44%ぐらいは山城が関係している縁だということになる。

そんな友人が逝ってしまった。なんということだろう。受け止めるには本当に時間がかかった。

生前、悪ふざけが大好きだった僕たちは、悪ふざけで彼を見送ることしかできなかった。その会が今日だった。LTをしたり、花火を上げたり、MBAでスイカ割りしたり、はたから見ると頭おかしいかもしれないが、でも僕たちにとって山城とお別れをするために必要な儀式だったんだ。

ありがとう山城。いつか、また。

最近のNodeのdeployや運用まわりについて

Node.js Advent Calendarの6日目の記事です。

非常に申し訳ないのですが、あまりに衝撃的な出来事が起きたため、ちょっとここ数日余裕がありません。よって、このエントリは伝えたいことを伝えてサクッと終わらせていただきます。

日本ではあまり話題になっていないのですが、Phusion PassengerはNode.jsにも対応しています。チュートリアルはコチラです。ただし、最新バージョンではNodeプロジェクトのディレクトリ構成は固定ではなくカスタマイズ可能になっています。

PassengerはApacheだけじゃなくNginxにも対応している上、Passenger自身もイベント駆動I/Oに書きなおされているため、Nodeの利点を損なうことなく活用することが可能です。

前まではNodeのプロセス管理といえば、forever(やNode製ではないupstartrunitなど)を使うことが多かったのですが、最近はPM2が注目を集めてますね。PassengerとPM2は両者ともにGraceful Restartが可能なため(諸条件あり)、今後はこれらを活用した事例が増えていくのではないでしょうか。

「東京Node学園祭 2013」と「Node.js Knockout」が終わりました

東京Node学園祭 2013」はもう終わってから3週間経つというのに今さらです。すみません。
Node.js Knockout」はハッカソン期間が先週頭に終わって、審査期間が今日終わったところです。

1. 東京Node学園祭 2013について

直前まで台風直撃予報があったりと、ちょっと今までにない緊張感とバタバタがありましたが、なんとか無事に終えることができました。場所を変えての懇親会ではなく、その場にピザとビールを持ち込んでの懇親会に変更したことで、LTが無限に繋がるという事象が発生するなど、目指していた参加者が「参加」するイベントにより近づけたんじゃないかと思います。

個人的には基調講演をするという経験が初めてだったので、いい経験になりました。基調講演に相応しいテーマって難しいですね。ただの事例紹介だとなんか面白みがないというか有り難みが薄いというか。しかも自社の事例を紹介するとかになると、「自分が代表をしているコミュニティ」の「自分が実行委員長を務めているカンファレンス」において「自分が行う基調講演」の中で「自分が勤めてる会社の事例を紹介」し、さらに「自分が勤めてる会社の求人をする」とかいう状態になってしまうので、傍から見ると「コミュニティ(やカンファレンス)の私物化」と言われ兼ねないなという危機感を抱いておりました。

基調講演の中で、コミュニティの代表を辞する旨を宣言したのは、それも理由の一つです。もっとも大きい理由は「関係者が固定化することによるコミュニティの硬直化を避ける」という目的があってのことですが、僕自身がドワンゴにおいて優秀なエンジニアを獲得するための仕事をしていることもあり、一切しがらみのないコミュニティである「Node.js 日本ユーザグループ」がドワンゴの影響下にあるという変な誤解を与えたくないという目的もあります。

まあそんなわけで、もう少ししたら代表の立候補と推薦の受付を開始いたします。推薦を戴いた場合は、推薦があったことをご本人に伝え、ご本人にその意思があれば立候補していただきます。候補者が出揃ったあとは普通に投票をしていただこうと思っています。連絡は全てMLにて行うのでお待ちください。

2. Node.js Knockout について

今年もドワンゴ社内でチームを組んで参加しました。また、ドワンゴのカフェテリアを開放して東京からの参加者が集まれるTokyo Campを開設しました。僕たちのチームが作ったものは Walk Sharing というサービスで、要はGoogle Street Viewで動きまわってる様子(位置と視点)を他人とチャットしながらリアルタイムに共有できるというものです。タイムシフト機能もあり、誰かが過去に動きまわった様子をそのまま再現することもできます。
Google Maps APIのundocumentedなプロパティを使って作ってしまったため、残念ながら審査期間中に入ってそのプロパティの名称が変わりタイムシフト等にバグが発生してしまったのですが、審査が終わった今はバグをFixしましたので是非体験してみてください。

あとがき

ブログ書くの久しぶりすぎました。「Node.js Advent Calendar 2013」にもエントリしたし、これからはもうちょっとちゃんと書いていきます。

Node.jsの本が出ます

数年前に告知したと思うのですが、そこから紆余曲折あり(主にNodeのアップデートが早すぎて)時間が掛かってしまいましたが、ようやく書きあがりました。Nodeの内部構造を知りたい人から、Nodeを使って何ができるのか知りたい人までカバーできる内容となっています。是非一度お手に取ってご覧いただければ幸いです。

サーバサイドJavaScript Node.js入門

サーバサイドJavaScript Node.js入門

見本誌も届きました。実際に見てみると結構分厚いですね。
f:id:t_43z:20121026105534j:plain

早速ですが、訂正を。インストールの章に現在の開発版はv0.9系で次期安定版はv1.0系になる予定とか書いてますが、実際には次期安定版はv0.10系になることが発表されています。
他にも間違いはあると思いますが、正誤表は出版社のサイトに掲載予定ですのでお待ちください。

「東京Node学園祭 2012」を開催します。

詳しい話は
http://blog.nodejs.jp/2012/07/nodejs-node-2012.html
をご覧ください。

今回は、前回頂いた色々なご意見を参考に、運営の仕方も結構変えています。
今後、セッション登壇者/スポンサー/スタッフを公募していくことになりますが、皆さま是非とも協力のほどよろしくお願いいたします。

よく使われているパッケージ

このエントリは、「東京Node学園 4時限目」の資料その5です。

Nodeには様々なサードパーティ製のパッケージが存在しています。基本的にそれらはnpmでインストールすることになるので、http://search.npmjs.org/ で一覧を確認することができます。
また、同様のものをGithubのwatch数やfork数で見える可したものが http://toolbox.no.de/ です。

同様の目的のパッケージでも複数あってどれを選んだらいいか困ることも多いと思いますので、代表的によく使われているものを挙げていきます。