@kyanny's blog

My thoughts, my life. Views/opinions are my own.

ウェブアプリケーションの非同期処理の話

Webでの非同期処理を考えてみる [長い記事だけどコメント求む!] – @masuidrive blog
masuidrive問題 - moroの日記
Life is beautiful: マルチスレッド・プログラミングの落とし穴、その2

ふだん Perl でいろいろライブラリ (CPAN) を使ってプログラムを書いてるので、「ふつうに TheSchwartz か Gearman 使うよなぁ、すでにどこでもやっていて改めて語られることもないような話にみえるなぁ」と思った。でもそれって Ruby で Rails なシーンでは「未知との遭遇」じゃないけど、新鮮さを伴った新しい困難っていう段階なのかもなーと思った。

Ruby も Rails も Perl よりは新しい。とても普及してきていて、 Twitter をはじめとして Rails で作られた超有名で巨大なサイトもどんどん出てきている。けど、「重いジョブはキューを使って非同期処理していくべきだ」という話題がホットになる程度まで、 Rails なギョーカイのサイトたちが育ってきたのが、ちょうど今頃なんだ、っていうことなのかも。

Perl のほうが古いぶんだけ、ビジネスで使われてきた歴史と実績があるし、だから「Ruby も Rails も素晴らしいけどお仕事ではまだまだ Perl で」というところは多い(ライブドアもそう)。そういうところがちょっと昔からつくってきたサイトでは、全部同期処理では持たない規模まで数年前くらいの時点で育ってしまっていて、だからギョーカイのすごい人たちがそういう問題を解決するためのものを Perl で作って、同じ悩みを抱えてる人たちの間に広まってみんなそうするようになった。

PhotoShare の今回の話が Rails なギョーカイの時勢を代表していると思っているわけではないけど、なんとなく、プログラム言語とかウェブアプリケーションフレームワークとかギョーカイとかの年齢みたいなものによって、ぶち当たる壁はだいたい同じなんだけど当たる時期が違って、つまり新しいものは古いものがすでに解決済みの問題に同じようにぶち当たる。そして新しいからこそ古いものの良い点をエッセンスとして活用して、なおかつ斬新でモダンなやり方を組み合わせてよりエレガントな方法で解決する。そうやっていろいろ進歩していくんだろう、とか思った。

つまり、俺が「Perl なら〜〜を使ってすでにやっているなぁ」と思ったようなことを、たぶん C とか Java とかその他もっと歴史と伝統と実績があるプログラム言語でソフトウェア開発してきた人も、 Perl でそれらの議論が活発になり始めた時期に「何年か前にうちのギョーカイでもそんな話があったなぁ」なんていう風に見ていたんだろうな、と思った。

歴史は繰り返す、それはソフトウェア開発の分野でも同じなんだけど、繰り返されるごとにより良いやり方で解決していってるんだな、そしてそれはたぶんどんな問題であってもそうなんだろうな、と思った。だからどうした、何が言いたい、と言われると返事に困るけど誰もそんなことは聞かずにいてくれるんだ。