<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MetaLoop &#187; Rails</title>
	<atom:link href="http://blog.tpop.jp/category/programming/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tpop.jp</link>
	<description>ブログ、です。</description>
	<lastBuildDate>Sun, 04 Apr 2010 01:46:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>EC2のConsole</title>
		<link>http://blog.tpop.jp/2009/01/12/aws-console-ec2/</link>
		<comments>http://blog.tpop.jp/2009/01/12/aws-console-ec2/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 08:03:13 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[ec2]]></category>

		<guid isPermaLink="false">http://blog.tpop.jp/?p=113</guid>
		<description><![CDATA[アマゾンがEC2をWebで直感的にコントロールできる、コンソールを提供開始したので。少し触ってみました。
まずはQuickStartにある、このインスタンスを作ります。

Ruby on Rails Web Starter (AMI ID: ami-b44bafdd)
Fedora Core 8, 32-bit architecture, Ruby 1.8.6, Rails 2.2.2, RubyGems 1.3.1, Mongrel 1.1.5, and MySQL 5.0.45



sshでのアクセス用URLが表示されるので、ログインしてみます。
RubyとRailsのバージョンはこんな状態です。
[root@ ~]# gem -v
1.3.1
[root@ ~]# gem list
*** LOCAL GEMS ***
actionmailer (2.2.2)
actionpack (2.2.2)
activerecord (2.2.2)
activeresource (2.2.2)
activesupport (2.2.2)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
fastthread (1.0.1)
gem_plugin (0.2.3)
mongrel (1.1.5)
open4 (0.9.6)
rails (2.2.2)
rake (0.8.3)
[root@ ~]# ruby -v
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-linux]
[root@ ~]# which [...]]]></description>
			<content:encoded><![CDATA[<p>アマゾンがEC2を<a href="https://console.aws.amazon.com/">Webで直感的にコントロールできる、コンソールを提供開始</a>したので。少し触ってみました。<br />
まずはQuickStartにある、このインスタンスを作ります。</p>
<blockquote>
<div class="cell_liner"><strong>Ruby on Rails Web Starter</strong> (AMI ID: ami-b44bafdd)<br />
<span class="ami_description">Fedora Core 8, 32-bit architecture, Ruby 1.8.6, Rails 2.2.2, RubyGems 1.3.1, Mongrel 1.1.5, and MySQL 5.0.45</span></div>
<div class="cell_liner"><span class="ami_description"><br />
</span></div>
</blockquote>
<p>sshでのアクセス用URLが表示されるので、ログインしてみます。<br />
RubyとRailsのバージョンはこんな状態です。</p>
<blockquote><p>[root@ ~]# gem -v<br />
1.3.1<br />
[root@ ~]# gem list</p>
<p>*** LOCAL GEMS ***</p>
<p>actionmailer (2.2.2)<br />
actionpack (2.2.2)<br />
activerecord (2.2.2)<br />
activeresource (2.2.2)<br />
activesupport (2.2.2)<br />
cgi_multipart_eof_fix (2.5.0)<br />
daemons (1.0.10)<br />
fastthread (1.0.1)<br />
gem_plugin (0.2.3)<br />
mongrel (1.1.5)<br />
open4 (0.9.6)<br />
rails (2.2.2)<br />
rake (0.8.3)<br />
[root@ ~]# ruby -v<br />
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-linux]<br />
[root@ ~]# which ruby<br />
/usr/bin/ruby<br />
[root@ ~]#</p></blockquote>
<p>こういうインターフェイスはサードパーティーの物がありましたが。今回アマゾン自身が提供する事になったわけです。無料で使えるのもありがたい事です。これでEC2を利用するのに、大分敷居が下がった感じがします。</p>
<p>/proc/meminfo と /proc/cpuinfo の出力はこんな感じです。</p>
<blockquote><p># cat /proc/meminfo<br />
MemTotal:      1747764 kB<br />
MemFree:       1615412 kB<br />
Buffers:          5368 kB<br />
Cached:          48384 kB<br />
SwapCached:          0 kB<br />
Active:          51096 kB<br />
Inactive:        40248 kB<br />
HighTotal:     1003528 kB<br />
HighFree:       907368 kB<br />
LowTotal:       744236 kB<br />
LowFree:        708044 kB<br />
SwapTotal:      917496 kB<br />
SwapFree:       917496 kB<br />
Dirty:              12 kB<br />
Writeback:           0 kB<br />
AnonPages:       37612 kB<br />
Mapped:           8472 kB<br />
Slab:             5972 kB<br />
SReclaimable:     2432 kB<br />
SUnreclaim:       3540 kB<br />
PageTables:        792 kB<br />
NFS_Unstable:        0 kB<br />
Bounce:              0 kB<br />
CommitLimit:   1791376 kB<br />
Committed_AS:   178332 kB<br />
VmallocTotal:   114680 kB<br />
VmallocUsed:      1360 kB<br />
VmallocChunk:   112936 kB</p>
<p># cat /proc/cpuinfo<br />
processor    : 0<br />
vendor_id    : AuthenticAMD<br />
cpu family    : 15<br />
model        : 65<br />
model name    : Dual-Core AMD Opteron(tm) Processor 2218 HE<br />
stepping    : 3<br />
cpu MHz        : 2599.998<br />
cache size    : 1024 KB<br />
fdiv_bug    : no<br />
hlt_bug        : no<br />
f00f_bug    : no<br />
coma_bug    : no<br />
fpu        : yes<br />
fpu_exception    : yes<br />
cpuid level    : 1<br />
wp        : yes<br />
flags        : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow up pni cx16 lahf_lm cmp_legacy svm extapic cr8legacy ts fid vid ttp tm stc<br />
bogomips    : 6502.41<br />
clflush size    : 64</p></blockquote>
<p>ps ax。最初からmongrelが起動しています。</p>
<blockquote><p># ps ax<br />
PID TTY      STAT   TIME COMMAND<br />
1 ?        Ss     0:00 init [4]<br />
2 ?        S      0:00 [migration/0]<br />
3 ?        SN     0:00 [ksoftirqd/0]<br />
4 ?        S      0:00 [watchdog/0]<br />
5 ?        S&lt;     0:00 [events/0]<br />
6 ?        S&lt;     0:00 [khelper]<br />
7 ?        S&lt;     0:00 [kthread]<br />
9 ?        S&lt;     0:00 [xenwatch]<br />
10 ?        S&lt;     0:00 [xenbus]<br />
48 ?        S&lt;     0:00 [kblockd/0]<br />
49 ?        S&lt;     0:00 [cqueue/0]<br />
54 ?        S&lt;     0:00 [khubd]<br />
56 ?        S&lt;     0:00 [kseriod]<br />
76 ?        S      0:00 [pdflush]<br />
77 ?        S      0:00 [pdflush]<br />
78 ?        S&lt;     0:00 [kswapd0]<br />
79 ?        S&lt;     0:00 [aio/0]<br />
201 ?        S&lt;     0:00 [kpsmoused]<br />
220 ?        S&lt;     0:00 [kjournald]<br />
242 ?        S&lt;     0:00 [kauditd]<br />
267 ?        S&lt;s    0:00 /sbin/udevd -d<br />
498 ?        S&lt;     0:00 [kmpathd/0]<br />
504 ?        S&lt;     0:00 [kmirrord]<br />
522 ?        S&lt;     0:00 [kjournald]<br />
786 ?        Ss     0:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclie<br />
851 ?        Sl     0:00 rsyslogd -m 0<br />
855 ?        Ss     0:00 rklogd -x<br />
864 ?        Ss     0:00 dbus-daemon &#8211;system<br />
874 ?        Ss     0:00 /usr/sbin/sshd<br />
882 ?        Ssl    0:00 console-kit-daemon<br />
932 ?        Ss     0:00 crond<br />
965 ?        SNs    0:00 anacron -s<br />
999 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe &#8211;datadir=/var/lib/mysql &#8211;socket=/var/lib/mysql/mysql<br />
1057 ?        Sl     0:00 /usr/libexec/mysqld &#8211;basedir=/usr &#8211;datadir=/var/lib/mysql &#8211;user=mysql &#8211;pid-file<br />
1092 ?        Sl     0:01 /usr/bin/ruby /usr/bin/mongrel_rails start -e development -p 80 -d<br />
1104 xvc0     Ss+    0:00 /sbin/agetty xvc0 9600 vt100-nav<br />
1110 ?        Ss     0:00 sshd: root@pts/0<br />
1112 pts/0    Ss     0:00 -bash<br />
1149 pts/0    R+     0:00 ps ax</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2009/01/12/aws-console-ec2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merbってエラー画面が面白いね</title>
		<link>http://blog.tpop.jp/2008/03/12/neat_merb_exception_view/</link>
		<comments>http://blog.tpop.jp/2008/03/12/neat_merb_exception_view/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 15:20:42 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[merb]]></category>

		<guid isPermaLink="false">http://blog.tpop.jp/2008/03/12/neat_merb_exception_view/</guid>
		<description><![CDATA[Ruby on Railsに似たフレームワーク、Merbをちょっと使ってみた。

$ sudo gem install merb --include-dependenciesmerb [app name]
$ cd [app name]
$ merb
これでhttp://localhost:4000/にアクセスすると、早速エラーメッセージが発生するのだが。

トレースバックの先頭の矢印をクリックすれば、その部分のソースコードが表示されるし。更に行番号をクリックすると、その部分をエディタで起動もしてくれた。これは随分親切でありがたい。
フレームワークを使い始めの時は特に、フレームワークのソースコードを見たい物だけど。Gemでインストールしているライブラリをエディタで開くのは結構面倒。ショートカットやリンクを張っていればこれはストレス軽減できるけど、沢山あるフレームワークのファイルの中から適切な物を探して選ぶのも結構面倒だったりするので。クリック一発で開くのはかなりいいです。]]></description>
			<content:encoded><![CDATA[<p>Ruby on Railsに似たフレームワーク、<a href="http://www.merbivore.com/">Merb</a>をちょっと使ってみた。</p>
<pre>
$ sudo gem install merb --include-dependenciesmerb [app name]
$ cd [app name]
$ merb</pre>
<p>これでhttp://localhost:4000/にアクセスすると、早速エラーメッセージが発生するのだが。<br />
<a href="http://blog.tpop.jp/wp-content/uploads/2008/03/merb_err.png" title="Merb エラー画面"><img src="http://blog.tpop.jp/wp-content/uploads/2008/03/merb_err.thumbnail.png" alt="Merb エラー画面" /></a></p>
<p>トレースバックの先頭の矢印をクリックすれば、その部分のソースコードが表示されるし。更に行番号をクリックすると、その部分をエディタで起動もしてくれた。これは随分親切でありがたい。</p>
<p>フレームワークを使い始めの時は特に、フレームワークのソースコードを見たい物だけど。Gemでインストールしているライブラリをエディタで開くのは結構面倒。ショートカットやリンクを張っていればこれはストレス軽減できるけど、沢山あるフレームワークのファイルの中から適切な物を探して選ぶのも結構面倒だったりするので。クリック一発で開くのはかなりいいです。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2008/03/12/neat_merb_exception_view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>レビュアブルマインドのSQLite対応</title>
		<link>http://blog.tpop.jp/2008/01/21/revmind_sqlite_fix/</link>
		<comments>http://blog.tpop.jp/2008/01/21/revmind_sqlite_fix/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 09:04:37 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://blog.tpop.jp/2008/01/21/revmind_sqlite_fix/</guid>
		<description><![CDATA[注意：ここで紹介しているのは、オリジナルのテーブル定義を変更します。よって動作確認のみにしてください、そのまま使い続けるのは止めた方が良いです。
 

レビュアブルマインドという、Railsで作られたGTDツールを使ってみた。が、何やらSQLiteに対応していないという事で中を見てみた。
どうやらテーブルのカラム名で&#8217;from&#8217;という名前を使っている事が問題になっている模様。SQLのfromと名前が衝突してると、SQLite上では扱われてしまうのかも。fromとかtoとかいうフィールド名は現状避けた方が無難でしょうね。
こんな感じにしたらとりあえず動いています。まずはこれでmigrate。


class RenameSchedulesFromToFrom &#60; ActiveRecord::Migration
  def self.up
    rename_column :schedules, :from, :from_a
  end

  def self.down
    rename_column :schedules, :from_a, :from
  end
end

そしてmodel/schedule.rb に以下を加える。


def from;  from_a end
def from=(a); from_a = a end

以上でエラーもなく、SQLiteで使えていますので。こんな事しないでfromを置換すればいいのですけど、
ありがちな単語だし本当にこれが原因か確認したいだけでしたので、あくまでもとりあえずの方法です。
※ActiveRecordだと、aliasの指定をしても駄目なんですね。今回はとりあえずsetterとgetterを書いちゃいましたが、良いやり方あったら教えてください。
※from_aって名前は・・・求人誌みたいなので、変えて下さい。
※レビュアブルマインドのはてなグループ、参加の仕方がわからない・・・のでここに書きました。(わかりました）面白いツールなので今後に期待しています。]]></description>
			<content:encoded><![CDATA[<p><u><font color="#800000">注意：ここで紹介しているのは、オリジナルのテーブル定義を変更します。よって動作確認のみにしてください、そのまま使い続けるのは止めた方が良いです。</font></u><br />
<u><font color="#800000"> </font></u></p>
<blockquote></blockquote>
<p><a href="http://rmind.g.hatena.ne.jp/">レビュアブルマインド</a>という、Railsで作られたGTDツールを使ってみた。が、何やらSQLiteに対応していないという事で中を見てみた。</p>
<p>どうやらテーブルのカラム名で&#8217;from&#8217;という名前を使っている事が問題になっている模様。SQLのfromと名前が衝突してると、SQLite上では扱われてしまうのかも。fromとかtoとかいうフィールド名は現状避けた方が無難でしょうね。</p>
<p>こんな感じにしたらとりあえず動いています。まずはこれでmigrate。</p>
<blockquote>
<pre>
class RenameSchedulesFromToFrom &lt; ActiveRecord::Migration
  def self.up
    rename_column :schedules, :from, :from_a
  end

  def self.down
    rename_column :schedules, :from_a, :from
  end
end</pre>
</blockquote>
<p>そしてmodel/schedule.rb に以下を加える。</p>
<blockquote>
<pre>
def from;  from_a end
def from=(a); from_a = a end</pre>
</blockquote>
<p>以上でエラーもなく、SQLiteで使えていますので。こんな事しないでfromを置換すればいいのですけど、<br />
ありがちな単語だし本当にこれが原因か確認したいだけでしたので、あくまでもとりあえずの方法です。</p>
<p>※ActiveRecordだと、aliasの指定をしても駄目なんですね。今回はとりあえずsetterとgetterを書いちゃいましたが、良いやり方あったら教えてください。</p>
<p>※from_aって名前は・・・求人誌みたいなので、変えて下さい。</p>
<p>※<strike>レビュアブルマインドのはてなグループ、参加の仕方がわからない・・・のでここに書きました。</strike>(わかりました）面白いツールなので今後に期待しています。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2008/01/21/revmind_sqlite_fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Railsデベロッパー向けPHPフレームワーク? Akelos</title>
		<link>http://blog.tpop.jp/2007/10/25/rails%e3%83%87%e3%83%99%e3%83%ad%e3%83%83%e3%83%91%e3%83%bc%e5%90%91%e3%81%91php%e3%83%95%e3%83%ac%e3%83%bc%e3%83%a0%e3%83%af%e3%83%bc%e3%82%af-akelos-2/</link>
		<comments>http://blog.tpop.jp/2007/10/25/rails%e3%83%87%e3%83%99%e3%83%ad%e3%83%83%e3%83%91%e3%83%bc%e5%90%91%e3%81%91php%e3%83%95%e3%83%ac%e3%83%bc%e3%83%a0%e3%83%af%e3%83%bc%e3%82%af-akelos-2/#comments</comments>
		<pubDate>Wed, 24 Oct 2007 15:53:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.tpop.jp/2007/10/25/rails%e3%83%87%e3%83%99%e3%83%ad%e3%83%83%e3%83%91%e3%83%bc%e5%90%91%e3%81%91php%e3%83%95%e3%83%ac%e3%83%bc%e3%83%a0%e3%83%af%e3%83%bc%e3%82%af-akelos-2/</guid>
		<description><![CDATA[AkelosというPHPのウェブアプリケーションフレームワークが仕事先で話題になったので、ちょっと見てみた。

The Akelos PHP Framework is a web application development platform based on the MVC (Model View Controller) design pattern. Based on good practices, it allows you to:
    * Write views using Ajax easily
    * Control requests and responses through a controller
    * Manage internationalized applications
  [...]]]></description>
			<content:encoded><![CDATA[<p>AkelosというPHPのウェブアプリケーションフレームワークが仕事先で話題になったので、ちょっと見てみた。</p>
<blockquote cite="http://www.akelos.org/"><p>
The Akelos PHP Framework is a web application development platform based on the MVC (Model View Controller) design pattern. Based on good practices, it allows you to:</p>
<p>    * Write views using Ajax easily<br />
    * Control requests and responses through a controller<br />
    * Manage internationalized applications<br />
    * Communicate models and the database using simple conventions.<br />
<cite cite="http://www.akelos.org/"><a href="http://www.akelos.org/">Akelos PHP Framework</a></cite></p></blockquote>
<p style="margin-left: 40px">&nbsp;</p>
<p>CakePHPもRailsと同じ様な感じだったけど、これはもっとRailsに近い感じ。<br />
微妙に細部まで似せて作ってあるのが面白い！<br />
Wikiもわざわざ（？）色まで似た感じだし。</p>
<p>さすがにPHPではRubyの様にスッキリとは記述できない物の、Railsを使った事ある人なら違和感無しに使えそう。<br />
Rails&amp;PHP経験者なら学習コスト低そう。</p>
<p>関心したのが、Localizationをアプリケーションを作成した最初の時点からサポートしてる事。<br />
これは素晴らしい、Railsも是非取り入れて欲しい！</p>
<p style="text-align: right; font-size: 8px">Blogged with <a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new">Flock</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2007/10/25/rails%e3%83%87%e3%83%99%e3%83%ad%e3%83%83%e3%83%91%e3%83%bc%e5%90%91%e3%81%91php%e3%83%95%e3%83%ac%e3%83%bc%e3%83%a0%e3%83%af%e3%83%bc%e3%82%af-akelos-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>in_place_editなんちゃら関連のエラーメッセージ</title>
		<link>http://blog.tpop.jp/2007/10/23/proper_error_message_for_inplace_editxxx/</link>
		<comments>http://blog.tpop.jp/2007/10/23/proper_error_message_for_inplace_editxxx/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 06:24:31 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.tpop.jp/2007/10/23/proper_error_message_for_inplace_editxxx/</guid>
		<description><![CDATA[めずらしくRailsネタ
in_place_edit_for()で、モデルオブジェクトがインスタンス変数に入ってないと出るエラー。

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id

なんとなく原因は分かったものの、確信もてなかった。かるくググったらここを発見。
そしたら、こいつをプラグインでもいいし、適切な所で実行すると、エラーメッセージがもっとわかりやすくなる。

# vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb
class ActionView::Helpers::InstanceTag
  def object
    @object &#124;&#124; @template_object.instance_variable_get("@#{@object_name}") &#124;&#124; raise("Could not find instance variable named @#{@object_name} in template")
  end
end

あー、@userが定義されてなかったんだね！と叫びそうなくらい、わかりやすいエラーメッセージが出たよ。
]]></description>
			<content:encoded><![CDATA[<pre class="wiki">めずらしくRailsネタ</pre>
<pre class="wiki">in_place_edit_for()で、モデルオブジェクトがインスタンス変数に入ってないと出るエラー。</pre>
<blockquote>
<pre class="wiki"><span class="searchword1">Called</span> <span class="searchword2">id</span> <span class="searchword3">for</span> <span class="searchword4">nil,</span> <span class="searchword0">which</span> <span class="searchword1">would</span> <span class="searchword2">mistakenly</span> <span class="searchword3">be</span> <span class="searchword4">4</span> -- if you really wanted the <span class="searchword2">id</span> of <span class="searchword4">nil,</span> use object_<span class="searchword2">id</span></pre>
</blockquote>
<pre class="wiki">なんとなく原因は分かったものの、確信もてなかった。かるくググったら<a href="http://dev.rubyonrails.org/ticket/8475">ここを発見</a>。</pre>
<pre class="wiki">そしたら、こいつをプラグインでもいいし、適切な所で実行すると、エラーメッセージがもっとわかりやすくなる。</pre>
<blockquote>
<pre class="wiki"># vendor/rails/actionpack/lib/action_view/helpers/<span class="searchword3">for</span>m_helper.rb
class ActionView::Helpers::InstanceTag
  def object
    @object || @template_object.instance_variable_get("@#{@object_name}") || raise("Could not find instance variable named @#{@object_name} in template")
  end
end</pre>
</blockquote>
<pre class="wiki">あー、@userが定義されてなかったんだね！と叫びそうなくらい、わかりやすいエラーメッセージが出たよ。</pre>
<pre class="wiki"></pre>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2007/10/23/proper_error_message_for_inplace_editxxx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DreamHostの新しい仮想サーバホスティング</title>
		<link>http://blog.tpop.jp/2007/08/04/new_service_dreamhostps/</link>
		<comments>http://blog.tpop.jp/2007/08/04/new_service_dreamhostps/#comments</comments>
		<pubDate>Sat, 04 Aug 2007 11:51:03 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[インターネット]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[ハードウェア]]></category>

		<guid isPermaLink="false">http://blog.someeda.com/2007/08/04/new_service_dreamhostps/</guid>
		<description><![CDATA[DreamHostから、新しい仮想サーバのホスティングを開始したとアナウンスがあった。これはちょっと今までと違う毛色のサービスで、VPSの様な物なんだけどルート権限が無い。
その代わり、共有ホストと同じレベルの管理が可能で、なんとDreamHostのコントロールパネルがそのまま使える。通常VPSはroot権限があってマシンを丸ごとコントロールできるけど、自由な反面セットアップは自分で全て面倒を見る必要がある。これは結構大変だし時間もかかる。
それに適当にセットアップして放っておくのも危険。いつのまにか進入されていたら、もっと大変な事に・・・。
この点で共有ホストはホストの管理者が行ってくれるので、非常に楽だ。DNS 、メール、Webサーバ、その他いろいろ・・・。ほとんど揃っているから、ちょっと実験したい時はありがたいサービスだ。Dreamhostはドメインも無制限に増やせるし、セットアップも簡単なので気軽にWebアプリケーションの公開が可能。Railsには結構良く対応してくれる。
しかしそんな共有ホストも、みんなが同じマシンを共有しているので。それなりのデメリットがある。/homeディレクトリを覗けば他のユーザが沢山。自分のファイルが覗かれる心配も。誰かが負荷をかければ自分への影響も大きい。たまにshellが重くなる事もある。（といっても概ね困っていないが。）
そんな両者の 間を取った様なサービスが、今回DreamHostの新しいサービスDreamHost P.S.。（P.S.はPrivate Serversの略）
先に書いた様に各ユーザ毎に仮想マシンが起動、root権限無し、DreamHostと全く同じコントロールパネルで操作可能。料金はCPUとメモリの割当次第でフレキシブルに設定ができ、リブート無しでいつでも変更可能らしい。これならセキュリティの心配も減るし、遅かったら割当を増やして対処できる。なかなか面白いサービスだと思う。
で、早速様子を見るために最低割当の150 MB / 150 Mhzで申し込んでみた。10MB/10Mhz毎に$1/月なので、月$15になる。最大は2300 MB / 2300 Mhz。コントロールパネルを見ると、単にPrivate Serversのメニューが増えているだけだった。という事は、いま動いているサービスがそのままPrivate Serversになるって事か？？マシン名を自分で設定したから、サーバは別になるはずなので。この辺は後でどうなるかお楽しみ。
結構嬉しいのは、プロセスをずっと起動し続けてもkillされない事。例えばRailsだったらscript/serverで起動してそのままにしておけるんだと思う。（まぁそんな事あまりしないけど・・・。）他にも何かデーモンを起動しておきたかったけど諦めた事のある人には、嬉しいサービスなのでは。他にもマシン名を自分で付けられたり、有料だけど2つまで固定IPを設定できるらしい。
このサービス、契約をしているユーザしか申し込めないので、契約してない人はまずDreamHostを契約する必要あり。契約後にコントロールパネルのPrivate Serversから申し込みが可能。]]></description>
			<content:encoded><![CDATA[<p>DreamHostから、新しい仮想サーバのホスティングを開始したとアナウンスがあった。これはちょっと今までと違う毛色のサービスで、VPSの様な物なんだけどルート権限が無い。</p>
<p>その代わり、共有ホストと同じレベルの管理が可能で、なんとDreamHostのコントロールパネルがそのまま使える。通常VPSはroot権限があってマシンを丸ごとコントロールできるけど、自由な反面セットアップは自分で全て面倒を見る必要がある。これは結構大変だし時間もかかる。</p>
<p>それに適当にセットアップして放っておくのも危険。いつのまにか進入されていたら、もっと大変な事に・・・。</p>
<p>この点で共有ホストはホストの管理者が行ってくれるので、非常に楽だ。DNS 、メール、Webサーバ、その他いろいろ・・・。ほとんど揃っているから、ちょっと実験したい時はありがたいサービスだ。Dreamhostはドメインも無制限に増やせるし、セットアップも簡単なので気軽にWebアプリケーションの公開が可能。Railsには結構良く対応してくれる。<br />
しかしそんな共有ホストも、みんなが同じマシンを共有しているので。それなりのデメリットがある。/homeディレクトリを覗けば他のユーザが沢山。自分のファイルが覗かれる心配も。誰かが負荷をかければ自分への影響も大きい。たまにshellが重くなる事もある。（といっても概ね困っていないが。）</p>
<p>そんな両者の 間を取った様なサービスが、今回DreamHostの新しいサービス<a href="http://www.dreamhostps.com/">DreamHost P.S.</a>。（P.S.はPrivate Serversの略）</p>
<p>先に書いた様に各ユーザ毎に仮想マシンが起動、root権限無し、DreamHostと全く同じコントロールパネルで操作可能。料金はCPUとメモリの割当次第でフレキシブルに設定ができ、リブート無しでいつでも変更可能らしい。これならセキュリティの心配も減るし、遅かったら割当を増やして対処できる。なかなか面白いサービスだと思う。</p>
<p>で、早速様子を見るために最低割当の150 MB / 150 Mhzで申し込んでみた。10MB/10Mhz毎に$1/月なので、月$15になる。最大は2300 MB / 2300 Mhz。コントロールパネルを見ると、単にPrivate Serversのメニューが増えているだけだった。という事は、いま動いているサービスがそのままPrivate Serversになるって事か？？マシン名を自分で設定したから、サーバは別になるはずなので。この辺は後でどうなるかお楽しみ。</p>
<p>結構嬉しいのは、プロセスをずっと起動し続けてもkillされない事。例えばRailsだったらscript/serverで起動してそのままにしておけるんだと思う。（まぁそんな事あまりしないけど・・・。）他にも何かデーモンを起動しておきたかったけど諦めた事のある人には、嬉しいサービスなのでは。他にもマシン名を自分で付けられたり、有料だけど2つまで固定IPを設定できるらしい。</p>
<p>このサービス、契約をしているユーザしか申し込めないので、契約してない人はまず<a href="http://www.dreamhost.com/r.cgi?235526">DreamHostを契約</a>する必要あり。契約後にコントロールパネルのPrivate Serversから申し込みが可能。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2007/08/04/new_service_dreamhostps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS XでRMagickをインストール</title>
		<link>http://blog.tpop.jp/2007/03/06/install_rmagick_on_mac_os_x/</link>
		<comments>http://blog.tpop.jp/2007/03/06/install_rmagick_on_mac_os_x/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 16:08:15 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ソフトウェア]]></category>

		<guid isPermaLink="false">http://blog.someeda.com/2007/03/06/install_rmagick_on_mac_os_x/</guid>
		<description><![CDATA[Mac OS XでRubyの画像処理ライブラリ&#8221;RMagick&#8221;をインストールする時、本家サイトのとおりに行ったらスムーズにできた。
Installing RMagick on OS X
スムーズにできたとはいえインストールする物が多く、大抵の人は面倒に感じるのでは。ざっと並べてみると。

X11 （Mac OS X付属CDにインストーラが収録されている。）
Xcode ToolsとX11 SDK（Xcode ToolsはADCからダウンロード、X11 SDKはXcode Toolsに含まれている。）
MacPorts（インストーラをダウンロードして実行する。）
jpeg、libpng、libwmf、freetype、ghostscript（Mac Portsでインストールする。）
ImageMagickかGraphicsMagick（ソースからコンパイルする。）
RMagick（gemでインストールする。)

自分の場合はこのリストで言うとMacPortsのインストールまで完了していたため、そんなに面倒は感じなかった。 X11やXcode Tools、MacPorts等はMacで開発をしていると必要になる事も多いので、これらをインストールしておいて損はないはずだ。
実は、自分はもっと別の部分でRMagickのインストールができずに困っていた。原因はFinkでインストールしたImageMagickを使おうとしたからだ。FinkでインストールしたImageMagickではRMagickのインストール時に、”magick/xwindow.hが見つからない” というエラーが出てしまうトラブルに合っていた。
fink list -i &#124; grep imagemagick でバージョンを確認してみると、imagemagick-devのバージョンが古い事がわかった。ImagiMagickの最新版である6.3.3ではmagick/xwindow.hは収録されていたので、恐らく古いバージョンではこのファイルが無かったのでは？と推測している。
 i      imagemagick     6.2.8-1002      Image manipulation tools
i      imagemagick-dev 6.1.8-1007    [...]]]></description>
			<content:encoded><![CDATA[<p>Mac OS XでRubyの画像処理ライブラリ&#8221;RMagick&#8221;をインストールする時、本家サイトのとおりに行ったらスムーズにできた。</p>
<p><a href="http://rmagick.rubyforge.org/install-osx.html">Installing RMagick on OS X</a></p>
<p>スムーズにできたとはいえインストールする物が多く、大抵の人は面倒に感じるのでは。ざっと並べてみると。</p>
<ul>
<li>X11 （Mac OS X付属CDにインストーラが収録されている。）</li>
<li>Xcode ToolsとX11 SDK（Xcode Toolsは<a href="http://developer.apple.com/">ADC</a>からダウンロード、X11 SDKはXcode Toolsに含まれている。）</li>
<li><a href="http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts">MacPorts</a>（インストーラをダウンロードして実行する。）</li>
<li>jpeg、libpng、libwmf、freetype、ghostscript（Mac Portsでインストールする。）</li>
<li><a href="http://www.imagemagick.org/">ImageMagick</a>か<a href="http://www.graphicsmagick.org/">GraphicsMagick</a>（ソースからコンパイルする。）</li>
<li>RMagick（gemでインストールする。)</li>
</ul>
<p>自分の場合はこのリストで言うとMacPortsのインストールまで完了していたため、そんなに面倒は感じなかった。 X11やXcode Tools、MacPorts等はMacで開発をしていると必要になる事も多いので、これらをインストールしておいて損はないはずだ。</p>
<p>実は、自分はもっと別の部分でRMagickのインストールができずに困っていた。原因はFinkでインストールしたImageMagickを使おうとしたからだ。FinkでインストールしたImageMagickではRMagickのインストール時に、”magick/xwindow.hが見つからない” というエラーが出てしまうトラブルに合っていた。</p>
<p>fink list -i | grep imagemagick でバージョンを確認してみると、imagemagick-devのバージョンが古い事がわかった。ImagiMagickの最新版である6.3.3ではmagick/xwindow.hは収録されていたので、恐らく古いバージョンではこのファイルが無かったのでは？と推測している。</p>
<blockquote><p> i      imagemagick     6.2.8-1002      Image manipulation tools<br />
i      imagemagick-dev 6.1.8-1007      Image manipulation tools</p></blockquote>
<p>※&#8221;fink list -i&#8221; は、finkでインストールされたファイルの一覧を表示する。コマンドの詳細は&#8221;fink list &#8211;help&#8221;を参照。</p>
<p>本来であれば、なぜimagemagick-devのバージョンが古いのかを調べるべきなのだが。今回は時間も無くて、上記の本家サイトの説明にしたがう事で簡単に解決できた。</p>
<p>本当はFinkでも新しいパッケージが配布されていて、設定さえすればFinkでもインストール可能なはず。安定したパッケージしか扱わない設定なのかもしれない。だからFnkユーザが同じトラブルを抱えても、諦めないで設定を確認して欲しいと思う。</p>
<p>それにしてもFinkとMacPortsを混在させているのは良くないかもしれない。うーん、どちらが良いのだろう。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2007/03/06/install_rmagick_on_mac_os_x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gem install mysqlでの問題</title>
		<link>http://blog.tpop.jp/2007/03/02/gem_install_mysql_problem/</link>
		<comments>http://blog.tpop.jp/2007/03/02/gem_install_mysql_problem/#comments</comments>
		<pubDate>Thu, 01 Mar 2007 15:42:38 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.someeda.com/2007/03/02/gem_install_mysql_problem/</guid>
		<description><![CDATA[MacでMySQLのネイティブアダプタのインストールでエラーが出た時の対処方法。
[Rails] gem install mysql &#8211; problem
このMLで言われているのと全く同じ事が起こった。最初は
sudo gem install mysql
とやっても必要なライブラリが見つけられずにエラーになったが、
sudo gem install mysql &#8212; &#8211;with-mysql-config
としたら問題無くインストールが完了した。
2008/06/05 追記：
この記事、自分が対象にした環境を全く書いてなかったですね・・・たぶんUbuntuの6.04あたりを使っていた時に書いたと思うのですが。もう忘れました。
ちなみにUbuntu 8.04LTS では、libmysqlclient15-dev を入れたらすんなりインストールできました。
sudo apt-get install libmysqlclient15-dev
sudo gem install mysql
ここを見ながらPassengerをインストールしていて、コメントを参考にしました。]]></description>
			<content:encoded><![CDATA[<p>MacでMySQLのネイティブアダプタのインストールでエラーが出た時の対処方法。</p>
<p><a href="http://lists.rubyonrails.org/pipermail/rails/2006-June/048029.html">[Rails] gem install mysql &#8211; problem</a></p>
<p>このMLで言われているのと全く同じ事が起こった。最初は</p>
<p>sudo gem install mysql</p>
<p>とやっても必要なライブラリが見つけられずにエラーになったが、</p>
<p>sudo gem install mysql &#8212; &#8211;with-mysql-config</p>
<p>としたら問題無くインストールが完了した。</p>
<p>2008/06/05 追記：</p>
<p>この記事、自分が対象にした環境を全く書いてなかったですね・・・たぶんUbuntuの6.04あたりを使っていた時に書いたと思うのですが。もう忘れました。</p>
<p>ちなみにUbuntu 8.04LTS では、libmysqlclient15-dev を入れたらすんなりインストールできました。</p>
<blockquote><p>sudo apt-get install libmysqlclient15-dev<br />
sudo gem install mysql</p></blockquote>
<p><a href="http://sysadminschronicles.com/articles/2008/05/06/ubuntu-8-04-rails-server-using-passenger">ここを見ながらPassengerをインストール</a>していて、コメントを参考にしました。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2007/03/02/gem_install_mysql_problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActiveRecordでデフォルトの値を指定する</title>
		<link>http://blog.tpop.jp/2007/02/13/activerecord_attribute_override_for_default_value/</link>
		<comments>http://blog.tpop.jp/2007/02/13/activerecord_attribute_override_for_default_value/#comments</comments>
		<pubDate>Mon, 12 Feb 2007 15:29:03 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.someeda.com/2007/02/13/activerecord_attribute_override_for_default_value/</guid>
		<description><![CDATA[Overriding attributes in ActiveRecord

class Account &#60; ActiveRecord::Base
  def notification_address
    super &#124;&#124; email_address
  end
end
notification_addressにデータが無い場合、email_addressを返すというサンプル。これがうまく動くのは、superメソッドを呼ぶとActiveRecord::Base#method_missingが呼ばれて、レコードデータを取得しに行くから。という理解でいいのかわからないけど。これがうまく動くなら使ってみようかなと思ったので、ひとまずメモ。
しかし・・・見た目は奇麗だけど、挙動が良くわからない人にとってはちょっとトリッキーなテクニックにも思える。これについての議論が元記事のコメントにいろいろあった。（自分では読んでないけど。）
自分としてはどちらかというと、初心者でも理解しやすいコードを書くべきかなと思う。他人とコードを共有する場合は特に。なのでやっぱりこの書き方はどうかなぁ、見た目美しいし格好いいけど。Rubyistからしたら何も問題無い書き方だけど、そうで無い人にはちょっと敷居が高くなってしまう。]]></description>
			<content:encoded><![CDATA[<p><a href="http://weblog.jamisbuck.org/2007/2/6/overriding-attributes-in-activerecord">Overriding attributes in ActiveRecord</a></p>
<pre lang="ruby">
class Account &lt; ActiveRecord::Base
  def notification_address
    super || email_address
  end
end</pre>
<p>notification_addressにデータが無い場合、email_addressを返すというサンプル。これがうまく動くのは、superメソッドを呼ぶとActiveRecord::Base#method_missingが呼ばれて、レコードデータを取得しに行くから。という理解でいいのかわからないけど。これがうまく動くなら使ってみようかなと思ったので、ひとまずメモ。</p>
<p>しかし・・・見た目は奇麗だけど、挙動が良くわからない人にとってはちょっとトリッキーなテクニックにも思える。これについての議論が元記事のコメントにいろいろあった。（自分では読んでないけど。）</p>
<p>自分としてはどちらかというと、初心者でも理解しやすいコードを書くべきかなと思う。他人とコードを共有する場合は特に。なのでやっぱりこの書き方はどうかなぁ、見た目美しいし格好いいけど。Rubyistからしたら何も問題無い書き方だけど、そうで無い人にはちょっと敷居が高くなってしまう。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2007/02/13/activerecord_attribute_override_for_default_value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>マッシュアップの更なる可能性(fabicon2dots、国際化)</title>
		<link>http://blog.tpop.jp/2007/02/12/more_mashup_polaroize_favicon2dots/</link>
		<comments>http://blog.tpop.jp/2007/02/12/more_mashup_polaroize_favicon2dots/#comments</comments>
		<pubDate>Mon, 12 Feb 2007 11:42:27 +0000</pubDate>
		<dc:creator>so-me-e-da</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.someeda.com/2007/02/12/%e3%83%9e%e3%83%83%e3%82%b7%e3%83%a5%e3%82%a2%e3%83%83%e3%83%97%e3%81%ae%e6%9b%b4%e3%81%aa%e3%82%8b%e5%8f%af%e8%83%bd%e6%80%a7fabicon2dots%e3%80%81%e5%9b%bd%e9%9a%9b%e5%8c%96/</guid>
		<description><![CDATA[ネット上にはさまざまなAPIが公開されて、それらを組み合わせたサービスもいろいろ出てきている。それぞれのAPIは学習が難しくない物が多いが、本格的に利用するとなるとある程度まとまった時間を確保して調査する必要があるのが現状。
それぞれのAPIは簡単にRESTやJavaScript等で利用できる物が多い。しかしドキュメントもバラバラだし利用方法もサービス毎に違うのだから、それを調べるのに時間がかかるのは当然だと思う。しかしこれらのAPIのドキュメントや利用方法がもっと統一されれば、更にマッシュアップされたサービスが構築される速度が加速されるはず。PerlのCPANやRubyのGEMの様に、Webに公開されるサービスが簡単に検索できて利用できたらいいなと思う。そうなればマッシュアップは今後もっともっと、カジュアルに利用できる様になるはず。
カジュアルなマッシュアップが加速されるために、統一的な利用方法が作られるだけではなくて、マッシュアップされるサービスの構築スピードも進化する必要があるはず。
この構築スピードという点で、secondlifeさんが最近公開したサービスが面白い。彼は２つのサービスを最近立て続けに公開した。
そのサービスの１つが、指定したURLをアクセスした時に表示されるfabicon(ブラウザのURLの左に出てくる小さいアイコン)を、dot&#8217;s風の画像に変換するサービス。
favicon を dot&#8217;s ぽく変換する &#8211; favicon2dots
http://favicon2dots.com/
このサービスはRubyの画像処理ライブラリRMagickによって作られている。
二つ目はfavicon2dots公開の少し前にリリースされたPolaroizeというサービス。これもRMagickによる物。しかも驚きなのが、RMagickに出てくるサンプルをそのまま応用した所。見つけたネタをすぐサービスにして公開してしまう姿勢は見習うべきだと思う。あのサンプルはRMagickのマニュアルに出てくるのだけど、これを使わない人は素晴らしい画像の加工ができる事すら知る事ができないのだし。fabicon2dotsの様なサービスもRMagickで作れる事を示してくれた。こういうちょっとしたサービスが短期間に続けて公開される事の意義が大きいと思う。
Polaroize &#8211; ポラロイド風に画像を加工するサービス
http://lab.rails2u.com/polaroize/
更に国際化手法も参考になる。
Rails のためのものぐさな Web アプリケーションの国際化手法

これらのサービスはSOAPやRestのAPIのドキュメントは公開されていないが、もしこういうサービスが統一的な方法で利用できたら素晴らしいと思う。そう思いませんか？もちろん、サービスがプログラムから利用された場合はAdSence等の広告収入があてにできるわけでもなし。こういう問題は解決しないといけないし難しい問題だけど。サーバの能力も通信コストもまだまだ下がって行くはずなので、今からこういう観点でサービスを準備していくのも悪くは無いはず。気がついたらこういうのが当たり前、という事自体が最近はあたりまえになっているから。というより、そのペースが最近早くなっていて、それは誰もが感じている事だと思う。
TeraMashupという、仮想のライブラリ、ライブラリの統合サイトを考えてみた。
TeraMashupにはデベロッパがAPIを登録し、各言語のライブラリを使って簡単にそれらのAPIにアクセスするための補助をする。ドキュメントもこのサイト上で検索確認、またはAPIによって取得できる。
Rubyによる上記のsecondlifeさんのライブラリを扱うにのは、こんな感じ。

require 'teramashup'
include TeraMashup# ローカルイメージを自分のサーバにアップロード。

# Rails::someeda はTeraMashupサーバに登録された自分のネームスペース。
# このネームスペースに server_a の情報を登録しておく。
#
# 下の例ではローカルファイルの /usr/someeda/mypicture.jpg を
# server_a のimagesにアップロード。
image = Upload('/usr/someeda/mypicture.jpg', 'Rails::someeda/server_a/images')
polaroize_image = Rails::secondlife::Image.polaroize(image)
image.save!

google_dots = Rails::secondlife::Image.fabicon2dots('http://www.google.com')
google_dots.save('/usr/someeda/google_dots.png')

他にも認証とかいろいろ必要だけど、とにかく簡単にカジュアルに利用できるといいなぁと思う。SOAP関連で同じ様な仕組みがありそうだけど、ちょっとドキュメント読んだだけで扱えるレベルの物はまだなさそう。Webの技術を使ったAPIだから、もちろん各種言語から利用可能。
コンピューティングパワーや転送料金はAmazon EC2で安く押さえるとか、もしくはGoogleが無料で提供してくれたら本格的になっていいかもしれない。]]></description>
			<content:encoded><![CDATA[<p>ネット上にはさまざまなAPIが公開されて、それらを組み合わせたサービスもいろいろ出てきている。それぞれのAPIは学習が難しくない物が多いが、本格的に利用するとなるとある程度まとまった時間を確保して調査する必要があるのが現状。</p>
<p>それぞれのAPIは簡単にRESTやJavaScript等で利用できる物が多い。しかしドキュメントもバラバラだし利用方法もサービス毎に違うのだから、それを調べるのに時間がかかるのは当然だと思う。しかしこれらのAPIのドキュメントや利用方法がもっと統一されれば、更にマッシュアップされたサービスが構築される速度が加速されるはず。PerlのCPANやRubyのGEMの様に、Webに公開されるサービスが簡単に検索できて利用できたらいいなと思う。そうなればマッシュアップは今後もっともっと、カジュアルに利用できる様になるはず。</p>
<p>カジュアルなマッシュアップが加速されるために、統一的な利用方法が作られるだけではなくて、マッシュアップされるサービスの構築スピードも進化する必要があるはず。<br />
この構築スピードという点で、secondlifeさんが最近公開したサービスが面白い。彼は２つのサービスを最近立て続けに公開した。</p>
<p>そのサービスの１つが、指定したURLをアクセスした時に表示されるfabicon(ブラウザのURLの左に出てくる小さいアイコン)を、<a href="http://dot-s.net/">dot&#8217;s</a>風の画像に変換するサービス。</p>
<p><a href="http://d.hatena.ne.jp/secondlife/20070205/1170609022">favicon を dot&#8217;s ぽく変換する &#8211; favicon2dots</a><br />
<a href="http://favicon2dots.com/">http://favicon2dots.com/</a></p>
<p>このサービスはRubyの画像処理ライブラリ<a href="http://rmagick.rubyforge.org/">RMagick</a>によって作られている。</p>
<p>二つ目はfavicon2dots公開の少し前にリリースされた<a href="http://lab.rails2u.com/polaroize/">Polaroize</a>というサービス。これもRMagickによる物。しかも驚きなのが、RMagickに出てくるサンプルをそのまま応用した所。見つけたネタをすぐサービスにして公開してしまう姿勢は見習うべきだと思う。あのサンプルはRMagickのマニュアルに出てくるのだけど、これを使わない人は素晴らしい画像の加工ができる事すら知る事ができないのだし。fabicon2dotsの様なサービスもRMagickで作れる事を示してくれた。こういうちょっとしたサービスが短期間に続けて公開される事の意義が大きいと思う。</p>
<p><a href="http://d.hatena.ne.jp/secondlife/20070125/1169654245">Polaroize &#8211; ポラロイド風に画像を加工するサービス</a><br />
<a href="http://lab.rails2u.com/polaroize/">http://lab.rails2u.com/polaroize/</a></p>
<p>更に国際化手法も参考になる。<br />
<a href="http://d.hatena.ne.jp/secondlife/20070207/1170835130">Rails のためのものぐさな Web アプリケーションの国際化手法<br />
</a></p>
<p>これらのサービスはSOAPやRestのAPIのドキュメントは公開されていないが、もしこういうサービスが統一的な方法で利用できたら素晴らしいと思う。そう思いませんか？もちろん、サービスがプログラムから利用された場合はAdSence等の広告収入があてにできるわけでもなし。こういう問題は解決しないといけないし難しい問題だけど。サーバの能力も通信コストもまだまだ下がって行くはずなので、今からこういう観点でサービスを準備していくのも悪くは無いはず。気がついたらこういうのが当たり前、という事自体が最近はあたりまえになっているから。というより、そのペースが最近早くなっていて、それは誰もが感じている事だと思う。</p>
<p>TeraMashupという、仮想のライブラリ、ライブラリの統合サイトを考えてみた。<br />
TeraMashupにはデベロッパがAPIを登録し、各言語のライブラリを使って簡単にそれらのAPIにアクセスするための補助をする。ドキュメントもこのサイト上で検索確認、またはAPIによって取得できる。</p>
<p>Rubyによる上記のsecondlifeさんのライブラリを扱うにのは、こんな感じ。</p>
<pre lang="ruby">
require 'teramashup'
include TeraMashup# ローカルイメージを自分のサーバにアップロード。

# Rails::someeda はTeraMashupサーバに登録された自分のネームスペース。
# このネームスペースに server_a の情報を登録しておく。
#
# 下の例ではローカルファイルの /usr/someeda/mypicture.jpg を
# server_a のimagesにアップロード。
image = Upload('/usr/someeda/mypicture.jpg', 'Rails::someeda/server_a/images')
polaroize_image = Rails::secondlife::Image.polaroize(image)
image.save!

google_dots = Rails::secondlife::Image.fabicon2dots('http://www.google.com')
google_dots.save('/usr/someeda/google_dots.png')
</pre>
<p>他にも認証とかいろいろ必要だけど、とにかく簡単にカジュアルに利用できるといいなぁと思う。SOAP関連で同じ様な仕組みがありそうだけど、ちょっとドキュメント読んだだけで扱えるレベルの物はまだなさそう。Webの技術を使ったAPIだから、もちろん各種言語から利用可能。</p>
<p>コンピューティングパワーや転送料金はAmazon EC2で安く押さえるとか、もしくはGoogleが無料で提供してくれたら本格的になっていいかもしれない。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tpop.jp/2007/02/12/more_mashup_polaroize_favicon2dots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
