SSブログ

猫も杓子も RoR [IC]

Ruby で何か Web アプリケーションを作ろうとして情報を調べると、至る所で Ruby on Rails (RoR) に行き当たる。

Ruby on Rails は Rubyist Magazine - RubyOnRails を使ってみる 【第 1 回】 によると Web アプリケーションフレームワークの一つだという。

私としては、まずは、フレームワークではなく、単純な CGI を使いたい。しかし、案外情報が少ない。

例えば、netbeans では Ruby をサポートしていて簡単に RoR のプロジェクトを作れるが、Ruby で CGI のプログラムを書いてそれを実行しようとすることはサポートされていない。まぁ、いいんだけど。なんか、猫も杓子も RoR ってな雰囲気。

尚、RoR は mod_ruby を使わないと遅いらしい。そりゃそうでしょうけど。mod_ruby とは modruby.net : mod_rubyとは? によると、

mod_rubyはApacheにRubyインタプリタを組み込むモジュールです。

通常のCGIでは、クライアントからHTTPサーバにリクエストが来ると、その度毎に CGIプログラムを別プロセスとして起動します。プロセスの生成は重い処理なので、これは速度的に不利ですし、サーバに負荷をかけることにもなります。 mod_rubyではApacheにRubyインタプリタを組み込むことによって、新たなプロセスを生成することなくRubyスクリプトを実行します。こ のため、mod_rubyはCGIより高速に動作し、サーバへの負荷も軽減されます。

また、プログラマに対してはCGI互換のインタフェイスを提供しているため、 CGIからの移行は容易になっています。

と解説されている。Java でいうと Servlet みたいな感覚かな。

... あれ? Apache に組み込むと言うことは共用のレンタルサーバでは対応できていないかもしれない?

例えば、SAKURA Internet : サポート/お問合せ : オンラインマニュアル では mod_ruby は使えないようだ。では、遅いわけですね。

結局、色々とめんどくさいのであれば root 権のある専用サーバを借りるか、VPS を使った方が楽と言うことになる。

じゃ、Java の方が慣れている分、楽だな。という結論になってしまう。やれやれ。目的を安く速く達成できれば言語は何でも良いのだが...


タグ:Ruby Java

root を使えるレンタルサーバ [IC]

Servlet など Java が稼働するレンタルサーバが欲しい。

家にサーバを置いておくのは回線の問題で難しい。

Servlet を動かすには、色々と設定が必要で、最終的に root が必要になりそうだ。そのため、root を使えるレンタルサーバを探した。調べたところ、3 つの候補が挙がった。

  • Sakura 専用サーバー エントリー \7800
  • First Server 仮想専用サーバー プロビジネス20 \3990(初期費用:\10500)、プロビジネス30 \6825(初期費用:\10500)
  • Amazon EC2/EC3 従量課金制

比較検討した結果、First Server が最も安い。Amazon EC2/EC3 は短期間なら圧倒的に安価だが、仮に、1 年間使うとすると、従量課金なため割高になる。しかし、仮想マシンとしての性能は First Server よりも高い。

Sakura は専用サーバーであるが、搭載メモリが 512MB と少ない。この点は First Server も同じである。プロビジネス30にすると768MBになる。それは良いのだが、仮想サーバーに \6825/月も払うのは高いと感じてしまう。それなら、専用サーバーの Sakura の方がお得に感じる。

Amazon EC2/EC3 は色々とプランがあるが、安いものだと 1.7GB のメモリを積んでいるそうだ。しかし、サーバーを再起動するたびに IP アドレスが変わってしまうので Dynamic DNS をどこかで使わなければならないのが面倒である。

そこら辺のことは、次の blog で紹介されていた。

私が行いたいのは、人気のない(=アクセスが少ない)サービスをだらだらと続けたいだけである。とすると Sakura か First Server が良いようだ。Amazon は長期的に使うとどうしても割高だから。ある程度アクセス数があって、一時的に負荷分散をしなければならないことがあるようならば、Amazon は良い選択肢の一つになりそうだ。

もっとも、それならば、はじめは Sakura でサービスを動かしておいて、負荷が上がったら Amazon EC2 のサーバに処理をとばしてしまえば良さそうでもある。柔軟な構成が出来るのが Amazon の魅力だろうなと思った。


プログラミング言語による差違 [IC]

Mashup Awards 4 / MA4 に作品を提出しようと努力したが断念した。

作りたいもの(使いたいもの)としてのアイデアはたくさんあって、そのうちの一つを作っていたのだが、「やっぱり間に合わなねーな」と思い、2008/09/15 16:00 の時点であきらめた。

しかし、過去の Mashup Awards の受賞作品を見ると、作れそうなアイデアが閃いたので、締め切りまでの残りの数時間、取り組んでみた。

が、無理。間に合わなかった。2008/09/16 11:40 の時点で断念。というか、睡眠時間とっている時点で無謀だったか。

Ruby を使っていたんだが、慣れていない。Java/C#/C/C++ の方が慣れている分だけ好き。Ruby は慣れていないので効率悪すぎ。Ruby は悪くないです。素直に Java/C# を使うか、Ruby の習得に時間をかければ良かっただけ。

というか、スクリプト言語系全般的に慣れていない。書けなくもないが、今回みたいに急いでいるときは、簡単な構文でさえ調べないと分からんのが時間かかりすぎ。

例えば 「神奈川県横須賀市内川」 という文字列から都道府県名を判定して、あらかじめ指定された都道府県コードを振り、都道府県名を取り除いた「横須賀市内川」という文字列を取得することを考える。開発環境は Windows XP のコマンドプロンプト。

Ruby の String では部分文字列を取得するときバイト単位で処理する。だから、例えば、

require "kconv"
address = "神奈川県横須賀市内川"
subaddress = address[8,address.size] # 神奈川県 は 8 byte だから
puts subaddress.tosjis

と書けばよいと思う。これは Shift-JIS の場合は問題ない。しかし、UTF-8 の場合、

require "kconv"
# 文字コードは UTF8 を明示
$KCODE = 'UTF8'
address = "神奈川県横須賀市内川"
subaddress = address[12,address.size] # 神奈川県 は 12 byte だから
puts subaddress.tosjis
めんどくさい...。こういう処理は FAQ で、「jcode 使えば?」になるのだろうけど。

結局、Ruby の定石とか設計が分かっていないと効率が悪すぎる。というか嵌る。

Java/C# の場合は文字単位の処理だから、あまり気にしなくても出来てしまう。
これがいいとか悪いとかではなく、Ruby の string はバイト単位で処理するという設計の考え方を使う側は知っていないといけないなぁと熟々思った。

しなくても良い苦労をした感じ。


もっとも、UTF-8 では漢字を 3 byte で処理するということをすっかり忘れていたのがオチな訳だが。

それと、コマンドプロンプトとエディタで開発するのはどうかという点もある。ねこび~ん のご神託に従い netbeans にしようか :-

Ruby での xml の取り扱い [IC]

プログラミング言語 Ruby で xml を取り扱うには REXML というライブラリを使用する。

REXML は Ruby 1.8 以降ならば標準で添付されている。

使い方がわからなかったので たのしいXML: XML/XHTML入門ページです の Ruby の項目を読みながら実験。
だいたい理解したところ、たのしいXML: XML/XHTML入門ページです の Ruby の項目に間違いがあることに気づく。が、掲示板が無かったので、メールを送るのもめんどくさいのでほっとく。REXML:RubyによるXML処理 - japan.internet.com デベロッパー にもわかりやすい記事が載っていた。

試しに、Yahoo や ec2 の Web サービスのレスポンスをパースしてみると、うまくいかない。しかし、上述のページのサンプルコードでは問題ない。なぜだろうと調べると、文字コードの問題であることが発覚。文字コード重要です。

で、最終的には、REXML Tutorial - Home をみればわかりやすかったのねというところに辿り着く。ここは英語だけれども、それほど難しくないし。

リファレンスマニュアルは REXML API document (ja) があるけど、かなり難しい感じ。使い方は簡単なのに。

ibm の developerworks にも記事がある(XMLの論考: REXMLライブラリー)が、堅い感じがする。しかし、

REXML のチュートリアルによると、ストリーム・モードは1500倍 高速であるとのことです。この件についてベンチマーク・テストは試みていませんが、この数字が当てはまるのは限られたケースだけではないかと思います (この記事で使用している小さな例では、ツリー・モードでも瞬時に処理されます)。いずれにしても、速度が問題になるケースでは、速度の違いが重要になるようです。
という部分は参考になった。

推薦エンジンの解説記事 [IC]

Amazon.co.jp などで「お薦めの書籍」を提示する仕組みがある。この仕組みのことを推薦エンジン/レコメンドエンジン(recommend engine)/推薦システム(recommender system)と言う。

こういうシステムはかなり前からあって、ネットで広く使われるようになったのは ここ 10 年くらい前からだと思う(仕組みそのものはもっと昔からある)。

steps to phantasien(2008-08-14) に、

日本語で読める推薦エンジンの解説記事には, "推薦システム-情報過多時代をのりきる" などがある. 同じ著者によるもう少し詳しい入門記事として, 人工知能学会誌 の 2007/11 から三号続けて連載があった. 学生のひとは学校の図書館で読めるんじゃないでしょうか.

なんて書いてあったので、既に修了してしまったが、近くの大学図書館で人工知能学会誌のバックナンバーをあさりに行った。最近は学会誌を読んでいなかったので他にも参考になる記事が多くあってためになった。わーい。どんな記事がためになったかは、今後のこの blog のネタにするとして...。

ここでリンクされている CiNii - 推薦システム-情報過多時代をのりきる(<特集>情報のフィルタリング) という解説記事なんだけれど、これって、本文が Web で読めるんですね。下図で示すように右側の部分をクリックすると PDF が読める。気がつかなかった!素晴らしい。
image.gif

「情報の科学と技術」という雑誌は刊行後、6ヶ月以上 たつと無料で一般公開されるんですね。 知りませんでした。

ちなみに、人工知能学会誌は公開されていないので大学図書館でみるしかなさそう。大学図書館によっては学生でなくても入れるところもありますし。

「情報の科学と技術」という雑誌はこれまでチェックしていなかったんだけれど、なかなか面白そうな記事もあることがわかった。今後、定期的にチェックしたいなぁと思う。


SoftBank の携帯アプリの開発 [IC]

SoftBank の携帯電話で動作するアプリを開発するには S!アプリという技術を使う。

S! アプリも docomo と同じく Java 言語を用いたフレームワークである(プロファイルは異なる)。

S! アプリに関する技術情報は SoftBank のドメインにはなくて、MOBILE CREATION というサイトに集約されている。

docomo の iアプリは開発者が設置した任意のサーバから iアプリをダウンロードして携帯電話にインストールできる。

これに対し、S! アプリの場合は、それはできず、コンテンツアグリゲータが提供するサーバに S! アプリをアップロードして、ユーザはそこからダウンロードする仕組みになっている。これについては S!アプリ 配信について というページに説明がある。このページには、次のように解説されている。

一般開発者様が制作されたS!アプリのアップロード方法について、ソフトバンクモバイル株式会社では第三者機関としてコンテンツアグリゲータ(企業)を認定し、その指定されたサイト上のみアップロードを可能にしております。また、携帯電話へのダウンロードもコンテンツアグリゲータ(企業)のサイトからのみ可能となっておりますので、指定サイト以外にアップロードしても携帯電話へのダウンロードはできません。

iアプリと比べると少し敷居が高い。しかし、コンテンツアグリゲータの一つである スパイシーソフトが提供するアプリ★ゲットのサイトは、一般クリエイターが利用できる(企業である必要は無い)。利用も無料のようであり、私が利用するのであれば、許容範囲だと思った。尚、アプリ★ゲットの一般向け(非開発者向け)サイトも PC から参照できる。


コメント(0)  トラックバック(0) 
共通テーマ:携帯コンテンツ

ECナビが提供するAPI [IC]

ECナビという「格安商品検索、口コミ、ランキングなどのお買物情報を比較できる価格比較サイト」がある。ECナビは Mash up Award 4th に ECナビラボを通して API を提供している。

ECナビラボが提供している API は次の通り。

  • NaviSearch API
    商品検索を行うAPI。
  • Buzzurl API
    ソーシャルブックマークである Buzzurl へブックマークを投稿するためのAPI。
  • ECナビリスト API
    ECナビリストとは、簡単に言えば、Amazon の「欲しいものリスト」のECナビ版である。この ECナビリストに入っているアイテムのリストを取得するためのAPI。

興味があった NaviSearch API について調べてみた。REST な API 。どうやら Apache Solr という OSS なシステムを採用しているらしい。

Apach Solr の日本語による情報は

が比較的詳しいようだ。

ちょっと試してみたところでは、NaviSearch API はなかなか使えそうなことが分かったので、もう少し調べて見ようと思う。


Award on rails のエントリー数と応募作品数の推移 [IC]

昨日 Mash up Award のエントリー数と応募作品数をグラフ化したので、似たようなコンテストである Award on rails もグラフ化してみた。

Award on rails は株式会社ドリコムが主催し今回で 3 回目となるコンテスト。

graph2.gif

Award on rails も応募作品数は増えていますね。尚、エントリー数と応募作品数については Award on rails 2007に参加してきました。 | イベント | チェケラッ! | あすなろBLOG の記載内容を参考にした。

他のサイトでは 2006 年の応募作品数が 29 としているところもあり、今回採用した 19 作品とどちらが正しいかは不明。裏をとっていない。

ところで、Arad on Rails の第一印象は Ruby on Rails を使用して何か創らないと行けないのかなぁと思うのだけれど、Award on Rails2008 プログラミングコンテスト : うぇぶたま によると応募資格に

自分で開発したアプリケーションであれば特に制限はありません。
グループでの応募、企業での応募も受け付けております。

と記載されており、Ruby on Rails を使用しなければならないとは記載されていない。

Mash up Award とあまり変わりありませんな。Mash up Award の方が 協賛 API を使わなければならないという点で、制限が多いくらいだ。勘違いされるから名前変更すればいいのに。


タグ:コンテスト

Web の認証 [IC]

昨日エントリを書いた WSSE 認証意外にも、幾つか認証方法がある。

  • Basic 認証
  • Digest 認証
  • SSL で通信を暗号化した上で他の認証を採用

とりあえず、参考文献を挙げておく。


Google Chart API 和訳が公開されていた [IC]

Google 社が提供するグラフ描画 API Google Chart。
その技術資料 Google Chart API の和訳が公開された。

デベロッパー ガイド - Google Chart API - Google Code

google.gif

それほど難しくはないので、英語の資料でも問題は生じないのだが、やはり日本語の方がさくっと読める。

Google Chart API はプログラマ以外は簡単には使えないだろう。しかし、Google Chart API を使って簡単にグラフを作成してくれる Web Service も公開されている。

例えば、TextChart | Google Chart API を使ったチャート作成&共有ツール が便利だ。


タグ:Web Service

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。