4ヶ月前に作ったものをメンテしてみたら、いい感じの振り返りになった

事の発端

RoboCupSoccer SSL向けのnode.jsとWebブラウザを使ったグラフィカルクライアントssl_gclient_nodeを作りました. - あーあーそのー

確かこの頃は、Node.jsを初めて触り始めた辺りだった気がする。WebSocketが面白くて、何かいい利用方法はないか考えて、思いつきでこれを作った気がする。

それから4ヶ月位たって、メンテをしてみたら今とやり方が違うところがチラホラあったので、振り返りのついでに忘備録として残しておく。

パッケージの管理

一番最初においおいって思ったのが、パッケージの管理。READMEにはこれとこれのパッケージをnpm installしてねみたいな感じで書いてあった。

% npm install express ws websocket.io protobufjs

package.jsonに書いておいてあげれば

% npm install

一発で済む。それにREADME見なくても良い。npm install --save socket.ioとかはこの後に覚えたんだなあということを知った。

あとは、bootstrapやjQueryもそのままpublicディレクトリの下に突っ込んであっただけだったので、bower使うようにした。

conponentsディレクトリ以下にbowerでインストールされるように設定しておいて、app.jsに次のように書いておけば参照できる。

app.use(express.static(path.join(__dirname, 'components')));

module.exportsする

起動スクリプトに全ての処理が書かれていた。 まあこれはこれで、動くっちゃあ動くのだけれ土、メンテナンス性が悪そうだなと思ったので分割して、module.exportsした。

そのついでに、expressのgenerator使って大枠を生成して、そこに移し替えるという形にした。

起動時の処理を./bin/wwwに書いて、app.jsにはサーバの設定処理を書いた。それ以外の処理(ブロードキャストパケットを受け取って処理するロジック)は別のファイルに分けることで、処理のロジックと設定のロジックを分けたつもり。

WebsocketからSocket.ioへ

単純に最近良く使っているのがSocket.ioだったので、そちらに合わせた形に。書いていて思ったけれど、どのライブラリを使うかみたいな判断はこういう軽いものに対してもちゃんと考えた方がいいななんて。

まあでも、Socket.ioのほうが、動作対象が広めみたいなので、コンセプト的にはSocket.ioの方があってるかな。

まとめ

やってみて、色々考え方とかやり方が変わっていることに気づいた。

ここはもうちょっとこうしたいなみたいなところはもっとたくさんあるので、また気が向いたらいろいろいじるつもりです。

そうなったらまた、今回みたいな発見があるのかもなあ。