カテゴリー「Ruby」の6件の投稿

2008年5月 4日 (日)

TwitterはRailsを放棄するか

/.-J経由、TechCrunch Japaneseの記事「Twitter、Ruby on Railsを放棄か」によるとRuby on Railsで構築されていることで有名なTwitterがスケーラビリティの問題からRailsを捨て、新たに構築し直される…かも、とのこと。

Twitterが登場し、猛烈な勢いで流行っていった当初、「これはすごい」と「どこが楽しいのか分からない」という両極端の意見の狭間で、傍観を決め込んでいたんだけど、k-nos氏がTwitterを始めたことに気づいて、最近自分もアカウントを作ってたり。

Twitterを使ってみた現在の感触は…まぁ、なんだろ、ネットに向かって大声でひとりごちるような変なシステムですな。blogを1日に何度もポストするような人には向いているかもしんない。blogほど構えなくてもいいし、チャットほどリアルタイムじゃない、ある意味ニッチなゆるーい雰囲気がウケたのかも、と今頃になって分析。

ちなみにワタクシのTwitter上のつぶやきはこちら。日本語対応直前くらいから使ってます。


で、システム系の業務から離れてしまったので、仕事でRailsを使用することは限りなくゼロに近づいちゃったんですな。「あのTwitterもRailsで動いているんですよ!!イキましょう!!Railsで!!」と上司を説得することは今後ないわけです。けど、それでもTwitterがRailsを本当に放棄するのか、注視していこうと思ったり。特にRailsをやめて、代替手段としてRubyを使用し続ける場合、どんな仕組みになるのかがウォッチしておきたい。

追記:2008年5月4日(日)22:53
builder by ZDNet Japanより「TwitterはRailsを捨てません」という記事。TechCrunch Japaneseも下記のようにフォローしている。

私に言えるのは「Twitterが、Ruby on Railsから離れる予定だと話している」と主張する筋が複数あるということだけだ。会社が後に100%ガチと分かることを否定するのは、これが初めてではない。

| | コメント (0) | トラックバック (0)

2008年4月17日 (木)

first attack

MacBookiPodのときも驚いたが、説明書の類はほとんどない。Appleらしいというかなんというか。割り切り方が半端じゃない。

なので、何も考えず起動ボタンをポチッ。フツーに起動し、ネットにもフツーに接続でき、だいたい直観的な操作でなんとかなる雰囲気。トラックパッドの日本指操作はソッコーで理解できたけど、クリックボタンが一つしかないのはなかなか慣れない。

で、最初に起動したアプリは"Safari"だったり。


そのあと、DockやFinderからいろいろとアプリケーションを起動してみて、Mac OS X文化の一部をざっくりと俯瞰。技術書の目次を眺めたり、パラパラとめくってみたりするのと同じ行動かもしれない。

トーゼン分からないことが出てくるので、その都度ネットで検索。便利な世の中ですな。

で、ネット上やローカルの探索中に面白そうなアプリケーションを見つけたりするんだけど、深追いはしないことに。実は根本的なことが分かっていないんでした。


アプリケーションのインストール方法やインストール先が分からない


Windowsだと、そもそもインストーラ任せだし、インストール先もProgram Files配下に置くか、他の場所に置くか、というノリもだいたい分かるし、基本的にコントロールできる。けど、Mac OS XってUNIXなんでしょ。まさかアプリケーションのソースが配布されてて、コンパイルして、配置して、テキストエディタで環境変えて、みたいなことはないと思うけど(そのよーなものもたぶん実際にはある)、aptみたいなパッケージ管理ツール使うのか?MacだとMacPorts?

ちなみに、UNIX系システムを触るときは、アプリケーションをどこにどのように配置するかというノリが分からないので、パッケージ管理ツールを使ったインストールしかしたことがなかったり。Debian GNU/Linuxだとaptですな。Debian系はUbuntuしか使ったことないけど。
RubyパッケージならRubyGemsなわけで。

ということで、いったん現実逃避してMac OS XにRuby on Railsをインストール。ターミナルを開いて

gem install rails -r
書き込み権限がないと言って怒られる。
sudo gem install rails -r
成功。
これで、MacでもRailsで遊べるなぁ。

で、逃避から戻ってきて、一般的なアプリケーションのインストール方法は…とりあえず、Firefoxは詳細なインストール方法が載ってたのでその通りに。

ふうん。ディスクイメージをマウントするのね。インストール後はアンマウントしちゃっていいのね。媒体として扱う感じか。ということはここがアレで、えーと…。

Mac OSの基本的なことが全然わかってないので、細かいところがいちいち新鮮。


で、最初にDockから削除したアプリも"Safari"だったり。

| | コメント (0) | トラックバック (0)

2007年6月15日 (金)

RSSクライアント

GeekなぺーじRSSクライアントの作成(XML::RSS)で、PerlによるRSSクライアントのサンプルが掲載されてたので、Ruby(1.8.6)で書き直してみた。未検証だけど、多分同じように動作するはず。

require 'rss'
require 'open-uri'

# ここを変更してください
url = "http://kyow.cocolog-nifty.com/blog/index.rdf"

rss_source = ''
open(url) do |f|
rss_source = f.read
end

rss = RSS::Parser.parse(rss_source)
puts rss.channel.title
puts rss.channel.link
puts rss.channel.description

rss.items.each do |item|
puts item.title
puts item.link
end
多分、1.8.2でも1.8.4でも動くと思う。

環境によっては、出力の日本語文字列が化けるはずなので、適宜エンコードして欲しい。

require 'kconv'
:
puts rss.channel.title.tosjis
:
みたいな感じで。

このくらいのスクリプトだとRubyとPerlでコード量はほとんど変わらないんですな。コードの見易さは…各自で判断していただきたい。
ちなみに、その昔PerlでコソコソとCGIとか書いていたので、個人的にはPerlのコードにもあんまり違和感を感じなかったり。


| | コメント (0) | トラックバック (0)

2007年6月 1日 (金)

楽天WEB SERVICEをRubyから呼び出してみる

Rubyの作者であるまつもとゆきひろ氏が楽天技術研究所のフェローに就任(楽天のプレスリリース/.-J)ということなので、Rubyで楽天WEB SERVICEのAPIを叩いてみた。

まず、超簡単なhttpクライアント。

require 'open-uri'

html = ''
url = "http://kyow.cocolog-nifty.com"
open(url) do |file|
html = file.read
end

print html

全く簡単だ。

このhttpクライアントで楽天WEB SERVICEの検索APIを叩いてみる。デベロッパーIDはここで取得しておくこと。

require 'open-uri'
require 'kconv'
require 'cgi'

xml = ''
developer_id = 'デベロッパーID'
search_string = "検索キーワード"
rakuten_api_uri = "http://api.rakuten.co.jp/rws/1.7/rest?developerId=#{developer_id}&operation=ItemSearch&version=2007-04-11&keyword=#{CGI.escape(search_string.toutf8)}"
open(rakuten_api_uri) do |f|
xml = f.read.tosjis
end

print xml

マーベラス!!

このサンプルはWindows環境で動作させたので、文字コードをShift_JISとUTF-8間で変換している。

REST方式のAPIを呼び出しているので、戻り値はXMLとなる。あとは、戻ってきたXMLをparseすれば良いんだけど…せっかく楽天WEB SERVICEはJSON形式でも値を返せるんだし、XMLよりも軽量であることを考えて、JSONのAPIを呼び出することにする。セキュリティの問題を置いておくとJavaScriptで直接扱えて、Ajaxとも相性が良さそうだしね。

で、JSON parserにはWebOS GoodiesSimple JSON parser & builderを使用することにする。コード量が少なくて簡単に扱えそうなので。これをダウンロードしてjsonparser.rbという名前で保存し、こんな感じに。

require 'open-uri'
require 'kconv'
require 'cgi'
require 'jsonparser.rb'

def out(obj)
if obj.is_a? Hash
obj.each_key {|k|
print "key = #{k}\n"
out obj[k]
}
elsif obj.is_a? Array
obj.each {|i|
print "\n"
out i
}
else
if obj.is_a? String
obj = obj.tosjis
end
print "value = #{obj}\n"
end
end

json_string = ''
developer_id = 'デベロッパーID'
search_string = "検索キーワード"
rakuten_api_uri = "http://api.rakuten.co.jp/rws/1.7/json?developerId=#{developer_id}&operation=ItemSearch&version=2007-04-11&keyword=#{CGI.escape(search_string.toutf8)}"
open(rakuten_api_uri) {|f|
json_string = f.read
}

parser = JsonParser.new
obj = parser.parse(json_string)

out obj

Simple JSON parser & builderがparseした結果は「ハッシュと配列が入れ子になったオブジェクト」なので、それを表示するためのコード(outメソッド)が全体のほとんどを占めている。単にオブジェクトの中身を単に見るだけなら、再帰を使わなくてもinspectするだけで良い。

| | コメント (2) | トラックバック (0)

2007年5月11日 (金)

RubyによるPDFファイルの生成方法 on Windows

Rubyを使ってPDFファイルを生成する方法について調査。HowtoGeneratePDFs(翻訳)が参考になる。
Windowsをメインに使っている以上、pure Rubyな方式が何かと便利で問題が少ないと思われるので、PDF::Writerを使ってみることにする。
インストールはRubyGemsを使用して

gem install pdf-writer
まったく簡単だ。

早速使ってみたところ、どうやらPDF::Writer(1.1.3)は日本語を出力できない。うそーん。

再びググり、ぐうたら ruby ユーザのページより"日本語フォントパッチfor pdf-writer"を落としてくる。けど、このパッチ、.diffファイルで記述してあるので、(patchコマンドがない)Windowsだと使えねぇ。うそーん(二回目)。

一応、Vectorでpatch for Win32なツールを落として使ってみたけど、(使い方がまずかったのか)うまく当たらなかったので、仕方なく.diffファイルをテキストエディタで開いて、地道にネチネチと自力パッチ。
ちっ、こういうコンピュータがやるべき作業を人力でやらなきゃいけないときって、超情けない気分になるな…。


自分の環境では、

Rubyのルート\lib\ruby\gems\1.8\gems\pdf-writer-1.1.3\lib\pdf
配下のいくつかのファイル(.diffファイルを読んでちょーだい)にパッチを当てることにより、とりあえず日本語を含むPDFファイルの出力が可能になった。

PDF::WriterのAPIリファレンスはこちら


| | コメント (0) | トラックバック (0)

2007年4月13日 (金)

プロキシが邪魔してRubyGemsでインストールできないとき

Rubyの標準パッケージマネージャ(?)であるRubyGemsでRubyパッケージをインストールする機会が増えてきた。Ruby on Railsが流行ってからは特に。

で、RubyGemsでインストールする際、ローカル環境に該当パッケージがない場合は、自動的にリモートインストールすると思うんだけど、このとき、プロキシ内にいると外部ネットワークにアクセスできず、

ERROR: While executing gem ... (SocketError)
getaddrinfo: no address associated with hostname.
とかエラーが出てインストールできない。

こんなときは-pオプションでプロキシを設定してあげると、インストールできるようになる。

gem install パッケージ名 -r -p http://your.proxy.hostname:port_no
注意すべき点は、
  1. http://...とHTTPを使用することを明示
  2. :8080のようにプロキシが使用しているポートを明示
の二点。

-pオプションはRubyGemsのリモート系コマンドの共通オプションで、gem help installなどとするとusageが表示されるのでチェキ。

毎度プロキシを指定するのが面倒であれば、Windowsの場合(というか他のプラットフォームでRubyを使ったことがないだけです…)、http_proxyという環境変数に上記書式でプロキシを設定しておけば、指定しなくても済むようになる(けど、セキュリティ的にはたぶんよろしくない)。

[2007/05/22 追記]
RubyGemsのバージョンが0.8.10なら上記方法で問題なかったんだけど、0.9.2で試したところ

ERROR: While executing gem ... (NoMethodError)
っていうエラーが出やがる。(上にも書いてあるけど)環境変数http_proxyにプロキシのアドレスを設定し、
gem install rails -r
とすれば、とりあえずインストールできるので、RubyGemsのプロキシ越えがうまくいかなかった人は試して欲しい。


| | コメント (0) | トラックバック (0)