Socket.IOを詠む会 に参加してきました

ひょんなことからSocket.IOを詠む会に参加させて頂きました。
ATNDだけみるとどういう会なのかわからずドキドキ…


勉強会は以下のような流れで進みました。

簡単な自己紹介

勉強会の趣旨

  • 基本、司会の方がSocket.IOのソースコードを読み進めていきます。
    • 読んでいく上で疑問点や意見などあればみんなで議論したりとか。

読む前に

※他にもいくつかあったけど失念…

  • 前提知識など
    • nodeとSocket.IOの環境構築
    • module.exportsの仕組み
    • prototype チェーンを用いた継承の作法
    • EventEmitterの役割(※重要)
      • (質問タイムのやりとりを行った後)少しハードル高いかも…
  • コードを読むときの心掛け
    • 機能と実装の対応を意識する
    • メインのロジックを把握する
    • こまめのプロセスを出力する
  • Socket.IO主要な機能
  • Socket.IOを用いたサンプルチャットアプリのデモ

ソースコードリーディング開始

  • まずはサンプルチャットアプリ
    • サーバサイドのコード説明
    • クライアントサイドのコード説明
  • Socket.IOのソースコードリーディング
    • コード全部読むのは大変
      • 今回はサーバサイドのSocket.IOを読んでいく
  • 先ほどのサンプルアプリのソースコードからブレークダウン
    • ひたすらコード読み読み…

適当な自分用メモ

lib/
 logger.js    ロガークラス
 manager.js   listenで返却されるマネージャクラス。超重要
 namespace.js チャットルームなどの名前空間を管理するクラス
 parser.js
 socket.io.js 
 socket.js
 static.js    クライアントに提供するためのJSを管理するクラス
 store.js     コネクションの保持先を管理するクラス(Memory / Redis)
 transport.js 通信プロトコルをゴニョゴニョするクラス(ws / xhr-polling / etc…)

感想

自分も現在仕事関係でSocket.IOを調べたり貪ったりしていたのですが
基本斜め読みで要件に関連するところだけ熟読する、といった感じで
今回のようにここまで丁寧にソースコードを追ってはいませんでした。
司会の方がコードを一行一行追いながら
「ここはこの機能のためにこういうことして…」とか
「この関数は何やってるんだろう」とか
みんなで議論しながらひとつひとつ紐解いていくのが
とてもおもしろかったですね。
人数もこのくらいの人数が「みんなで読んでいる感」があり
ちょうどいいなーと思いました。
また司会の方の説明がとても上手で
理解しやすく本当に勉強になりました。



主催していただいたユニバ株式会社のみなさま、ありがとうございました!


※4/14(土)に同じ会場でPerfume Hackathon を行うそうです。
これも面白そう…!
http://atnd.org/events/27279