Block Rockin’ Codes

back with another one of those block rockin' codes

2011 年をふりかえる

今年は本当に色々有ったと思う。
だけど、このブログでは基本的に技術ブログなので、その観点から。

リアルタイム Web

「リアルタイム Web」って言葉はなんか違和感がある、という話もちょっとあったりして、
そのうちもう少し別の名前でパッケージされるようになるかもしれないけど。


今年一年思ってたのは、図らずも自分が「Node の人」みたいになってしまったことにより、
全ての発言が、「Node サイドのポジショントーク」的な見られ方をされている場面があるのかなという点。


元をたどると自分は「リアルタイム Web」的なものに興味を持って、
そこで WebSocket を触る上でたまたま Socket.IO を選んだというきっかけではじめている。
だから実は大きなモチベーションの一つがここにある。


ずっと言ってきたけど、 Node.js は万能でもなんでもなく、
今まであまり無かったアーキテクチャと、それを選択したことによって色々な偶然が重なってできたもの。


そして、 Node.js は Sockt.IO という強力なライブラリを手に入れたから、
リアルタイム Web な場面では、Node.js がメリットになる部分が多かったと自分は思っている。


自分は、「リアルタイム Web」 はまだまだ、始まったばかりだと思っている。
まだ「今までの Web」 にちょっと Ajax や WebSocket で非同期なものを載せたくらいのものが多いと思う。


正直言うと、まだまだ俺たちは WebSocket 自体、強力過ぎて、使いこなせていないんじゃないかと思ってる。
そこにさらに、高水準な API を提供する Socket.IO なんて、実は時代が追いつけてないところにあったりするんじゃないかと、
思うときはよくある。



ステートレスが前提だった世界に、ステートフルなプロトコルが現れ、
プルベースで構成された部分に、プッシュによる更新が可能になった。
それも、ハックでもなんでもなく、標準仕様として。


ここには大きなパラダイムシフトがあって、今までのアーキテクチャは適切に見直され、発見/再発見される余地がまだまだあるんじゃないかな。


来年は、そういう可能性が見いだされるようなことが、もっとたくさん起こる年になってほしい。
自分も Stream.IO や SlideStream だけにとどまらず、色々な研究を通して、
それらを少しでも見いだしてみたいと思っている。

Node.js

結局、技術面に裂いた時間のほとんどは、 Node.js に費やしていたと思う。
去年くらいから、本当に JavaScript は良くも悪くも「注目」されてたんじゃないかなと思う。


LL-Planets でも JavaScript に関するセッションが飽きるほどあったし、
Node.js 以外にも HTML5, Titanium なんかと合わせても色々活用できる場所が広がったのもあると思う。


そしてそれらを合わせて、テストとかモジュールとか JavaScript があまり真剣に取り組んで来れなかった
分野が今まさに開拓されて、 Node.js ものれらの一つとして影響している。


アーキテクチャ自体も面白いし、
そのコミュニティで色々な人に出会えて、Node.js に限らず色々学べたから良かったと思う。


来年は v1.0 も出るだろうし、引き続き追って行きたいと思っている。


今はただ、一刻も速く、書籍を書き上げて、発売できるように努力します。
もう少しだけ、待って下さい。

Ruby on Rails

特に今年の前半ー中盤あたり、地味にやっていた。
個人的には Rails3 のデキは結構良いと思っている。


リンクに寄る画面遷移を基本として、裏側では RDB への CRUD を基本とするような場合は、
やはりとても使いやすいんじゃないかと思う。
そういうサイトを Node.js + Express でやるのは不可能ではないけど、
今はまだ Rails の巨大なエコシステムを考えたら、 Rails で良いと思う。


あと、ベースを Rails にして、リアルタイム性の高い部分だけ Node.js を使うという、
ハイブリッドな構成はありだと思っていて、
それはセッションの連携が出来ればあとは割と何とかなる。
そしてそれは一応解決されているから、もし機会があればやってみたいところ。


ただ、今は Rails3.1 以降ほとんど追えていないのが難点。
Coffee 人口は、やはりふえるのだろうか。


Haskell

流行と言えば、流行ってる感じはとてもするが、自分も今年少しかじり始め
個人的に、来年本格的に勉強するならこれと思ってる。


わりと明確な目的があって、


の二つの知識と技術が得たいから。

IO モナド

モナド自体の考え方なんかはきちんとしておきたいし、
その結果特に「IO モナド」が重要だと思ってる。
Node.js の最大の関心事の一つに「I/O」がある。
これをどう扱って行くかは、 Node.js を使う上ではとても重要だと思う。


また、実験として今自分が作ってる Stream.IO にも、
IO モナドパラダイムが持ち込めないかも考えている。

関数型プログラミング

関数型プログラミングのエッセンスは、JavaScript なんかにも持ち込むことができるだろうし、
そうで無くても今後重要になるだろうパラダイムなので、是非押さえておきたい。
(といっても、 JSer は割とカジュアルにやっている部分が有るのも事実だけど)


関数型プログラミングの勉強がしたいだけなら、 Common LISP でいい。」と言われたりもした。
それは確かにそうだろうけど、 IO モナドの方が重要なので Haskell を選んだ。
それが無ければ Common LISP でもいいし、 F#, Scala なんかでもいいかもしれない。

Blog

来年も、自分がきちんとインプットをし、その結果をアウトプットする場の一つとして、
なんの結果も生まなかったとしても、少なくともどっかには向かっているという軌跡として、
この Blog だけは、どんなに忙しくなっても続けて行きたいと思う。


そして、ブクマよりも、スターよりも、誰かからコメントをもらえて、
誰かがそれをたたき台にして書いたエントリから、トラックバックをもらえるような、
そんなエントリをアウトプットをしていきたいです。




2012 年も、どうぞよろしくお願いいたします。