01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
http://sankei.jp.msn.com/life/trend/100131/trd1001310701002-n1.htm
【都市伝説を追う】路上パソコン族「ストリートコンピューティング」を探し出せ!
名前間違って掲載されてますね。
1.何故非同期処理が必要か
Rails に限らず Web アプリケーション全体の話。クローラーとかバッチ系のものはとりあえず置いときます。
Web アプリケーションとはリクエストに対して処理を行ないレスポンスを行なうものですが、 1 リクエストにつき何個の処理があるというのはそれなりによくあることだと思います。仮にリクエストに対して 3 個の処理があったとします。
通常では、 3 個の処理が全て終ってからレスポンスを返すことになりますが、例えば処理 A B C がそれぞれあったとして、レスポンスには処理 A B の結果のみが記されていて C の結果はレスポンスには含まれないとします。
この時、処理 C が時間がかからず終わるものならば大した問題にはなりませんが、処理 C が極めて時間がかかるものだったとすると、全体のレスポンスが遅くなってしまいます。
であれば、処理 C を非同期化して、処理 C の終了を待たずにレスポンスを返した方がいいということになります。
2.Rails で非同期処理する方法
2-1.プラグインを使う
Rails 向けに非同期処理を簡単に実現する為のプラグインがいくつか用意されています。代表的なものとしては BackgrounDRb と AP4R あたりが上げられるんではないかと思います。これらにはそれぞれメリットとデメリットがあります。
2-1-1.BackgrounDRb
多分一番メジャーな奴。メリットとしては開発が活発に進んでいることと比較的各種の設定が簡単で導入しやすいこと。デメリットとしては開発が活発に進みすぎて API がどんどん変更され、どれが正しい最新の情報なのか分かりづらいことと、非同期処理の内容を変更した際にサーバーをいちいち再起動しないといけなくてあまりスピーディに開発を行なえない点が上げられます。
個人的にあまり好きじゃない。
2-1-2.AP4R
国産の非同期処理フレームワーク。たんなる非同期処理のプラグインというよりは非同期並列アプリケーションを作成する為のフレームワークという様相があるプラグインです。メリットとしては高可用性のあるアプリケーションを比較的簡単に構築できること、 Rails 以外の手段で作られたアプリケーションとも簡単に連携できること、高機能ではあるが単純な利用であれば簡単に導入できること、 Web の仕組みを最大限利用したものなので、 Rails のスピーディーな開発特性をそのまま生かせることが挙げられます。デメリットとしては古い gem に依存していることや、開発があまり活発ではないので設計が 2.x 時代の Rails からすると若干古くなっていることが挙げられます。
2-2.自前で小さいものを作る
以上二つのプラグインはそれぞれにメリットデメリットがありますが、共通するところとしてちょっとしたものを非同期化するのには大袈裟すぎるという点があります。
また特に BackgrounDRb ではテストが困難だったりします。
個人的には、ちょっとした非同期処理であれば自前で書いてしまった方がいいのではないかと思っています。
具体的には以下のようにしています。
1.text 型で :data というカラムを持った Async というモデルを作る。
2.アプリケーションから非同期になにかやりたい時は {:method => 処理の名称, :args => 引数} みたいな感じのハッシュを JSON 化して Async のインスタンスを create する
3.Async の中身を見て、何かあったら :method の処理に :args の引数を渡して走らせ、終ったら対象を destroy するというメソッドをどっかに作って cron で ./script/runner 経由で回す
このやり方であれば標準のテスト機構や RSpec で非同期処理の全てをちゃんとカヴァー出来るテストを特別な配慮無しに書けるんじゃないかと思う。
並列化したい場合はロックの為のカラムを Async に作って、メソッドを並列に回せばいいと思います。
3.まとめ
だらだらと適当に書いた感じですが、 Rails では非同期処理もとても簡単なので、やってみればいいんじゃないでしょうか。
http://p4t.mobi/
P4T
http://github.com/ssig33/P4T
ssig33's P4T at master - GitHub
携帯百景とかそんな感じのに似たフォトブログサービスです。
作りましたっていうか、去年のうちに完成していたので、作ってましたって感じなんですが。
OAuth で Twitter と連携して、携帯電話のメールや Gyazo に似た API 経由で画像を投稿できます。投稿された画像は Twitter に通知されます。 API はそのうちドキュメント書くと思いますが、今はドキュメントが無いので使いたければソース読んでください。
機能面での特徴は現在のところあまりありませんが、 AGPLv3 にてソースコードが公開されている点が特徴です。今後ものんびり開発していこうかと思います。
普通の Rails なので中身どうなってるか誰にでも分かるんじゃないかと思います。
どうぞご利用ください。
日本人は同調的だとかよく言われる。それが長期的な不況の一因だとか言われているのもよく聞く。同調的だから革新が起きないんだ的な論法。
この手の話というのは数値化することが極めて困難あるいは不可能で、つまり実証することはできない。でも実感として感じられるものは、少なくとも僕にとってはある。
どうしてこうなったのか。
具体的には、欧米と日本で何が違うのか。
信じられているものが違う。欧米人は、神を信じる。日本人は、周囲の人間を信じる。たぶんその程度のことだと思う。
日本と欧州の戦乱の時代を見てみる。
ところで、「武士道と云ふは死ぬ事と見つけたり」というフレーズで有名な、戦国乱世的武士道へのノスタルジーの集大成である『葉隠』という本がある。この本は江戸時代に書かれた。『葉隠』には「同性愛というのは男女の愛よりも重要なものである。だからホモセックスには気をつけろ。同性愛の最も顕著なものが主君への忠義である」というようなことが書かれている。
具体例もある。顕著なところでは室町幕府初代将軍足利尊氏は側近にして寵童の饗庭氏直に幕軍の主力を指揮させた(これは高一族が殲滅されたという危急の事情にもよるだろうが)。織田信長は寵童森蘭丸に麾下の指揮を任せた。
ここで欧米を振り替えってみる。欧州で有名な戦争と言えば十字軍がある。神の名のもとに、イスラム世界を徹底的に蹂躙した。騎士達は神に忠誠を誓い出撃した。散文的な事情を言えば、イスラム商人の商圏を破壊しようとした欧州商人が教皇を突き上げたのだろう。しかし、教皇は、十字軍に参加すればあらゆる罪が許されるという触れを出したところ、参加兵力は増大した。権力に居座る腐敗した層は別として、末端のもの達への「神の権威」の威力は凄まじいものがあった。
この以上二つの事実が日本社会が多様性を確保出来ない、即物的な社会しか構築出来ないことの理由ではないかと思う。
欧米人は神を信じる。それと同じように日本人は周囲の他人を信じている。
日本人にとって、他人とは神なのだろうと思う。神を信じているのだから、明治維新以後欧米型の政治制度を簡単に取り込むことが出来た。
欧米人と日本人の精神世界構造というのは、実は殆ど似ているのではないかと思う。それは、騎馬民族の活動圏を中心とした文明圏論みたいなので説明がつくことだと思う(こういうこと言ってたの誰だか忘れた)。騎馬民族がいて、その外側にイスラムと中国がいて、その外側に欧州と日本がある、みたいなの。
でも、欧米人と日本人で決定的に違うことがある。神は、存在しない。他人は、存在する。
キリスト教者にこれを言えば怒られるかもしれない。神は確かにいるかもしれない。しかし、神を知覚出来る人などいない。知覚出来ている人がいたとしても、それを立証することは出来ない。つまり、神はいない。あるいは、いてもいなくても、同じ。
散文的なことを言えば、ヤハウェはユダヤ人の地場信仰が形式論理学と結び付いて生まれた化け物にすぎないし、カトリックの神などそれにさらに欧州の地蔵信仰が混ざったキメラにすぎない。
神を信じるとはどういうことか。つまり、自らの思考の内に存在するものを信じるということであり、自分を信じるということ。
でも、他人は存在する。知覚出来る。他人を信じるとは、他人を信じること。
信じることは力になる。しかし、制約にもなる。
信じているものが自分なら、自己を変革することで、いかようにも飛躍することが出来る。他者の変革を(場合によっては)許容することが出来る。
しかし、他者を信じているならば、そうはいかない。一人二人の他者を変革することはできる。しかし、数十万人数百万人の他者を変革することはできない。他者を信じ他者により制約されることが意識を作りその集合体が社会システムを作っている。多様性は確保されない。
というようなことを僕は割と真面目に考えています。でもこんなのが屁理屈に過ぎないというのも分かってます。言ってみれば、どうでもいいことなんですよ。似たような話を展開して逆の結論を語る文書を書けといわれれば、書ける自信が僕にはある。数値化出来ない話だから。印象論だから。
どうしてこうなった、とかそんな視点で過去を見ても仕方ない。過去は、何も参考にならない。歴史上過去の出来事を参考に出来た人間の例など皆無に等しい。そもそも人間は自分の過去すら振り返ることができない。諸葛亮は兵站が破綻した戦争を繰り返し、ハンニバル・ヴァルカは過去自分が使った作戦を食って敗走したし、俺は夏コミでも冬コミでも同人誌をギリギリに入稿した。
気にいらないことがあるなら、自分を変えればいいし、それでもだめなら社会の方に戦いを挑むのもいいかもしれない。民主主義に沿って戦ってもいいだろうし、暴力に依るのもいいかもしれない。少なくともどうしてこうなったとか言っててもしかたない。
くりかえしになるけど、周囲の環境が、過去どういう事情が、とか他者を信じすぎる、気にしすぎることがやはり一種の日本の停滞の原因なんじゃないかと思う。
やりたいことやればいいじゃんと思う。
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2010-08-05 22:09