qsonaのブログ

プログラマーです。

東京Node学園祭2015 にて発表を行いました

発表前記事

東京Node学園祭2015 にて発表を行います - qsonaのブログ

プレゼン資料・補足記事

qsona.hatenablog.com

応募まで

2010-11年ごろのピグライフでの事例以来、弊社(サイバーエージェント)では特にゲームのサーバサイド開発に積極的にNode.jsを投入してきており、サーバサイドで動かすために書かれたNode.jsのコードの量では、国内だったら弊社はかなり多いんじゃないかと思っています(一番多いまで言えるかは不明ですが)。ただ、開発の多さに比べると、発信の数が少ないと思っていて、この機会に何か発信できるものはないかと考えました。今はそんなにNode.jsの特別な使い方をしているわけではないし、特徴はコードの量なので、その中での苦労話が最もリアルに話せて価値を出せるのではないかと思い、LT枠に応募しました。

前日まで

その後、古川さんから返信を頂き、面白そうな内容なので、LTではなくセッションでちゃんと話した方が良いのではないか、という非常に有り難いご提案を頂きました。自分にとってはこれ以上ない良い経験をさせて頂ける機会で、感謝しております。さすがに背伸び感はあるものの、Node.jsのコード書いてる時間ならそうそう負けないぞという気持ちで引き受けた次第です。

1つ前のNode学園で LT をして(これも良い経験でした)、その後学園祭1週間前までは発表の大枠を練り、そこから資料作成と練習にとりかかりました。準備の時間配分のバランスが難しいのですが、30分というのは結構なボリュームで、資料の作成にもっと時間見ておかないとダメだったのと思いました(20時間くらい?)。LTの時で分かっていましたが、喋ってみると資料がしゃべりにくい順番になっていることが分かるのが結構多くて、特にトークが主体になるような発表だとトライアンドエラーで良くする必要があるので、時間はしっかりとらないなと思っています。

余談ですが、今回の招待講演以外のセッションでは特に好評を博していた id:amagitakayosi さんがかなり事前準備を一生懸命されていたようで、印象的でした。

Node学園祭で「フロントエンドに秩序を取り戻す方法」を発表した #nodefest - マルシテイアは月の上

前日夜〜当日発表まで

会場が弊社だったので前日夜に行ってみたところ、スタッフの方々がみんな集まってくださっていて、自分も資料折りと差し込みを少し手伝いました。あまりの分量で変なテンションで折っていましたが、ああいった場で少しでも普段話せない社外の方と話す機会があるのは良いですね。

※左の写真の、一番右でなんか折ってるのが自分。

準備が終わった頃、titoさん(弊社の先輩です)にプレゼン資料見せてと言われたので、発表練習付き合ってくれるならいいですよと半分冗談で言っていたら、織田さん(同じく弊社の先輩)と2人で本当にフルでの発表練習に日付変わるくらいまで付き合ってくれました。良いアドバイスをもらえたので、発表としての体裁は大分整って、当日も言いたいことが流れの中ですんなり言えたと思います。

当日、スピーカーにはお弁当を用意して頂いていて、招待講演の方々と一緒にわいわいランチ・・・する余裕もなければ英語力もなかったのですが、写真をとらせてもらったりと、良い思い出になりました。

発表の趣旨

中規模以上のサーバサイド開発にNode.jsを利用する上で、特にプログラミング上で苦労している部分や、あまり良くないことをしている部分にスポットを当てながら、問題提起をしようと考えていました。

自分のやっていることから離れたところまで話すのは難しいし、現場のリアルさに欠けてしまうので、「ゲーム開発」「ES5まで」の2つの制限の上で話すことにしました。

最近ではマイクロサービスというのが一つのキーワードになっており、適材適所に言語やフレームワークを使い分けることが可能になっていると思います。サーバサイドでは一般的にはRuby(on Rails)が多く、Node.jsの出番は特にリアルタイム性が絡む時に多い(僕の直前の @kidach1 さんの発表もそうだった)というのが自分の印象ですが、弊社の今自分が属している部門(ゲーム)では要件にかかわらず普通に、アプリケーションのメインとなるAPIサーバをNode.jsで作り始めることが多いです。

で、特に何も決め手の特徴がなければRubyあるいはPHPとなっているところに、Node.jsが入っていくことは出来ないのか、どんな壁があるのかっていうのを最近考えていて、その上では、Node.jsでのサーバ開発の辛さ的なものの共有は一つの切り口になるかなと思っていました。

資料upを遅らせた理由

発表のテーマである「バッドノウハウ」というのは、単に良くないから改善すれば良いという話ではなく、良くないとは分かっていながらも仕方ない的なニュアンスが含まれています。自分としてはそういう内容で3つ選んだのですが、そもそも解決手法を十分に考えられていないだけではないか、というご指摘を受けました。そうだとしたら単に良くないものを喧伝する真にバッドな物になるため、ご指摘を受けた部分に関しては、出来る範囲で検証してから上げること、またその後も随時指摘を頂き訂正できるよう、補足記事とセットで上げることにしました。

感想と反省点

Twitter等での反応を見る限りでは、共感を得た部分もあったとは思いますが、聴いて下さった方に十分プラスのものを与えられるようなセッションにすることが出来なかったなと思っていて、謙虚に反省しなければならない点が多かったと思います。

反省点の一つは、まだまだ考察が足りなかったこと。バッドノウハウというタイトルでしたが、ノウハウ共有系とは正反対で、現状の良くないところを見ながら問題を提起していくということで、本質的なところに迫りきれなかったのは残念なところです。

もう一つは、ES5までの話と決め打った部分に無理がありました。Node4が出てわりとすぐでの学園祭ということもあり、直asyncで書かれたコードを全部書き直すのは大変だし、既存プロジェクトでgenerators(co)導入とかはまだ難しいかなという感じでそこまで重要に思ってなかったのですが、この1日では完全に時代に置いて行かれている感じしかしませんでした。yield使えっていうツッコミも結構頂いていましたね。そもそも書き方やパフォーマンスなど諸々検証するチャンスはNode v0.11の途中からもう2年くらいあったわけで、それを怠ってきたところから反省しなければなりません。

あとはまあ動画が公開されてたので自分のものを見てみたのですが、何か気の触る話し方だなと思いましたw もうちょっと謙虚な感じに聞こえるような話し方にしたいですね!

動画はここです(すべての発表の動画があります) 東京Node学園祭2015 | 株式会社サイバーエージェント

一番人気だったkosamariさんの発表と時間が被っていましてリアルでは見れず。私も動画で見ましたが、非常に面白いプレゼンでした。

他のセッションなど

NodeDiscussionが一番面白いコンテンツだったと思いました。その場で即興で話している英語なので聴きとる難易度が高かったですが、 kosamariさんの素晴らしい逐次翻訳で全て理解することが出来ましたし。初めての試みとのことでしたが来年からも期待しています!

あとは、他の方々の発表を聞いていて思ったのは、発表の内容自体はすぐにはピンとこなかったりしても、その方がどのように考えて開発や技術選択などをしているのか、ということが節々から分かって、どれも面白かったです。

全体的にはNode.js自体というよりはその周辺技術とかJavaScriptに関係する話が多く、もっとNode.js本体に関する話も聞いてみたいなという気もしました。ドストレートにNode.jsの話だったのは、自分が聞いた中ではNodeDiscussionと @kidach1 さんのセッションだけだったかもしれない。

終了後

懇親会では色々な方とお話できて、勉強になりました。とにかく疲れがどっと出て、帰って15時間寝たあげく2日間頭痛が続いて辛かった。ものすごく問題意識が高まったり、非常に良い刺激になった1日でした。

運営の方々や登壇者の方々、スポンサーの方々、ありがとうございました!