反射画像を生成するアプリケーションを作った
2007/09/29
RMagick で画像に Wet floor effect を適用する
せっかく上の記事で勉強したので、Web アプリケーション化しました。名前はベタに「Reflectr」としておきます。
画像をアップロードすると、Wet floor effect を適用してくれます。床の色も指定できるようにしました。
アプリケーションは Ruby on Rails で、DreamHostにホスティングしています。作るのはそんなに苦労してませんが、DreamHost で動かすのに苦労しました。そのあたりは追々書きます。
ちなみに、ロゴはここで作ってみました。
RMagick で画像に Wet floor effect を適用する
2007/09/29
Wet floor effect – Wikipedia, the free encyclopedia
画像や文字が床に反射しているようなエフェクトは Wet floor effect と呼ばれるらしい。確かにぬれた床っぽい。Wikipedia によると、Apple が初めにメジャにしたらしい。
僕もいろんな画像をぬれた床に映してやりたいのですが、Photoshop を使うほどのことじゃないし、そもそも Photoshop 入ってません。そこで我らが RMagick の出番です。
RMagick は ImageMagick の Ruby 用インタフェースで、ImageMagick がインストールされている環境なら gem でゴリっとインストールできます。
$ sudo gem install rmagick
RMagick のドキュメントを見ると、RMagick 1.15.0 以降には wet_floor というそのまんまのメソッドが用意されています。早速使ってみました。
まずは元となる画像を用意。パブリックドメインの画像を探してきました。
では、やってみます。
$ irb
>> gem 'rmagick'
=> true
>> require 'RMagick'
=> true
>> include Magick
=> Object
>> originals = ImageList.new('original.png') # 元画像から ImageList オブジェクト生成
=> [originalpng PNG 176x240 176x24000 DirectClass 8-bit 88kb]
scene0
>> reflection = originals.first.wet_floor # wet_floor を呼ぶ
=> originalpng PNG 176x240=>176x80 176x24000 DirectClass 8-bit 88kb
>> reflection.write('reflection.png') # wet_floor の結果をファイルに書き出す
=> originalpng=>reflectionpng PNG 176x240=>176x80 176x24000 DirectClass 8-bit 35kb
こんな感じで、wet_floor の結果を reflection.png
に書き出してみます。
wet_floor で生成される Image オブジェクトは映り込みの部分だけなので、実際に使う場合には元の画像とくっつけて出力する必要があります。
>> results = ImageList.new
=> []
scene
>> results << originals.first < [originalpng PNG 176x240 176x24000 DirectClass 8-bit 88kb
originalpng=>reflectionpng PNG 176x240=>176x80 176x800240 DirectClass 8-bit 88kb]
scene1
>> result = results.append(true)
=> originalpng PNG 176x240=>176x320 176x32000 DirectClass 8-bit 88kb
>> result.write('result.png')
=> originalpng=>resultpng PNG 176x240=>176x320 176x32000 DirectClass 8-bit 137kb
以上で完成。今回試した限りでは JPEG ではまったく透明になりませんでした。環境の問題かもしれませんが、そのような場合でも一度 PNG などに変換してから処理すればよいと思います。
RubyCocoa に興味があります
2007/07/30
【レポート】いま知るべきRubyCocoa – Mac OS X Leopard最新情報 (1) RubyCocoaの概略 | パソコン | マイコミジャーナル
時期 Mac OS X である Leopard には Ruby から Cocoa フレームワークを利用できる [RubyCocoa](http://rubycocoa.sourceforge.net/HomePage) がインストールされるというお話。Cocoa といえば、Objective-C を標準言語に採用する敷居の高いフレームワークという印象を持っていたし、そもそも OS X 用ソフトウェアを開発したことのない自分には馴染みのないものですが、Ruby から利用できるとなると、俄然興味をそそられます。
とりあえず Cocoa の本を読んでみようと思い、一冊注文してみました。Cocoa も、Xcode も、Interface Builder も、何も知らないので。
以上、興味を持っただけで終わらないように、ここに意思表明してみましたよ、と。
OSX に Ruby on Rails 環境を構築する
2007/06/26
OSX に Ruby on Rails 環境を構築しました。OSX(10.4 Tiger)には最初から Ruby がインストールされていますが、この Ruby では Rails が動作しないようです。そこで、Ruby 自体のインストールから始める必要がありますが、代表的な構築方法には以下のようなものがあるようです。
– ソースからビルド
– [Locomotive](http://locomotive.raaum.org/) をインストール
– MacPortsからインストール
Locomotive は Ruby, Rails, Mongrel などをまとめてインストールできるパッケージのようです。今回は後で色々と追加インストールすることを考えて、MacPorts でインストールしました。
[nice_code]
$ sudo port install readline
$ sudo port install ruby
$ sudo port install rb-rubygems
$ sudo port install subversion
$ sudo port install swig
$ sudo gem install -r sqlite3-ruby ¥
-- --with-sqlite3-include=/opt/local/include ¥
--with-sqlite3-lib=/opt/local/lib
$ sudo gem install rails -y
$ sudo gem install mongrel -y
[/nice_code]
と、一通り必要そうなものをインストールしました。Web サーバは Mongrel, DB は SQLite にしました。SQLite は OSX に最初から入っているようですが、Subversion インストールしたら引っ張られてインストールされたので、MacPorts のものを使うようにしました。
CodeGear、Ruby統合開発環境の詳細を明らかに − @IT
2007/06/12
CodeGearが、開発中としていたRuby IDEの詳細を明らかにしたようです。Eclipseベースの模様。早く触ってみたいけど、これって無償じゃないよなあ。
[nice_link]CodeGear、Ruby統合開発環境の詳細を明らかに − @IT
CodeGear、「Ruby on Rails」対応の開発ツールを発表へ – CNET Japan[/nice_link]
Silverlight, .NET, Ruby
2007/05/9
MS、「Silverlight」を複数プラットフォーム対応へ - CNET Japan
によると、Microsoft の Flash 対抗製品「Silverlight」でダイナミック言語サポートが追加され、そこにはRubyも含まれるらしい。
Silverlight には Windows(IE と Firefox)、Mac(Safari)用の .NET Framework が含まれるらしく、これだけでも十分すごいと思うのですが、さらにダイナミック(スクリプト)言語を使った.NETアプリケーションの開発を可能にする「Dynamic Language Runtime」も開発中で、Ruby と Python と JavaScript がサポートされるようです。
今のところDLRはSilverlight 1.1に搭載予定(ちなみに1.0が今夏リリース予定)だそうですが、将来的には通常の .NET Framework にも DLR が搭載されるようになるんでしょうね。
JRuby も盛り上がってるし、最近の Ruby はブームを越えてきましたねえ。
Rails + Adobe Spry framework for AJAX
2007/03/17
Adobe Labs で Spry という Adobe 製の Ajax フレームワークが公開されています。Adobe によると、Spry とは
The Spry framework for Ajax is a JavaScript library for web designers that provides functionality that allows designers to build pages that provide a richer experience for their users. It is designed to bring Ajax to the web design community who can benefit from Ajax, but are not well served by other frameworks.
であり、つまりは Web デザイナーが利用することを想定した JavaScript ライブラリだそうです。@IT にも記事がありますが、 Spry を使うと XML データから動的なページを生成することができます。しかも、デザイナー対象であることから、JavaScript によるコーディングは必要最低限に抑えられています。
ところで Rails 1.2 には新しいジェネレータとして「scaffold_resource」が追加されています。scaffold_resourceで足場を生成すると、通常の scaffold とは異なり、REST 風味のリソース操作が可能になるというのは以前に書きましたが、scaffold_resource を利用すると、さらにリソースの XML 出力まで可能な足場を生成してくれます。例えば、ブログを開発するために、記事のモデル(Post)とコントローラ(PostsController)を作ったとすると、scaffold_resource の場合、
GET /posts
で記事一覧の HTML を取得することができますが、さらに
GET /posts.xml
とするだけで記事一覧の XML を取得することができます。
ここでやっと本題ですが、scaffold_resource を使うとリソースの XML 出力を簡単に得ることができるので、Spry を使うのも簡単じゃない?と思って使ってみました。
楽天が Rails を採用するらしい
2007/03/17
楽天がサービスの開発に Rails を採用すると発表しました。業務で Rails を利用している身(プロトタイピングと実験ばかりだけど)にとっては心強いし、この流れで Rails を取り巻く環境が良くなっていけばいいなあ、と願っております。CNET にも出てたよ。
楽天、ネットサービス開発で「Ruby on Rails」を採用–NaClが全面協力 – CNET Japan
確かに Rails の生産性は高いのかもしれないけど、今のところ Rails は実績や開発環境、運用環境といった点で Java や PHP に敵いません。「実績なんか始めからあるわけがない」「DRY な Rails はコードが少ないんだから IDE なんかいらないんだ」といった意見もあるとは思いますが、自分の勤めているような企業がこういった点を求めるのは事実なわけです。今回のように、業界に影響力のある企業が Rails 採用を発表していくことで、何を言われても「いや Rails すごいんですって!」と言えるようになればいいなあ。
実際、開発環境はどうにかならないものかしら。NetBeans 6 では Ruby/Rails をサポートするらしいので期待しています。
Amazon E-Commerce Service 4.0 を Ruby から使うには
2007/02/22
Amazon E-Commerce Service 4.0 (ECS4.0) に興味があったので、Ruby から使う方法を調べたメモ。
続きを読む »
デブサミの感想など
2007/02/20
先週はデブサミに参加してきました。登録したセッションの全部は聞けませんでしたが、いくつか聞いてきました。特に印象に残ったものをいくつかご紹介します。