Unexplored Rails RSSフィード

2010-08-20

新しいブログをよろしく

irohiroki.comでブログを続けます。

よろしくお願いします。

ちなみに新しいブログはHerokuホスティングされたTypoです。

2010-06-24

Mitaka.rbでコラボレーションの真髄を垣間見た!

『WEBエンジニア meets デザイナー』と題した第9回Mitaka.rbに参加してきました。

今回はリトルスター・レストランに30名強のWEBエンジニアと数名のデザイナさんが集まり、プレゼンを聞き、フルボッコにされ、食事をし、楽しい時間を過ごしました。

最初に主催者の榊さん(@ysakaki)からMitaka.rbの紹介と進行の説明があり、すぐに前半のプレゼンが始まりました。

デザイナ様にフルボッコにされる

最初はあやさんによる『@ayaxxのお望みどおりみんなまとめてふるぼっこにしてやんよ』。

会場のエンジニアが事前に提出した名刺やネットショップウェブサービスのデザインをあやさんがめった切りにしますw

指摘されるのは、不揃いなフォントや色使い、ポリシーのないマージン、意味不明な空白、など。

全て、デザイナでない人が見ても不自然に感じるはずなんですが、エンジニアはそれを言葉にできるほどはっきり認識できなかったり、認識しててもどう直していいのか分からないのかと思われます。

よってエンジニアとしては、自分のデザインが不自然だと感じたら放っておかず、観察して理由を考えたり、誰かにアドバイスを求めるのが大切でしょうね。

厳しいツッコミを入れるだけでなく、最後に改善案を見せてくれる@ayaxxさんからは愛情とプロフェッショナル魂が感じられました。

みんなで基礎を学ぶ

次は黒野明子さん(@crema)による『デザイナーでない人のためのレイアウト入門』。

課長からセミナーのチラシのデザインを強要された”ほげ山君”が、ただの情報の羅列からそれなりのデザインを完成させていくというストーリーで、レイアウトの基本である4つの法則(近接の法則、整列の法則、対比の法則、反復の法則)を説明してくださいました。

この辺は僕も勉強して、実践したこともあるのですが、実際デザイナ様がダメなレイアウトに法則を一つ適用するといきなり見違える様子は、未だに謎を含んでいますw

自分で実践してもあんなにはっきりビフォーアフターが違いません!

やはり法則は法則でしかなく、”法則に則って何を何ピクセル動かすか”は、熟練を必要とする別の技術なのだと思います。

あと分からなかったのは、反復の法則の目的とか、使うべきところ、使わないところ、具体的にどうすればいいのか…。今も言葉にできないもやもやが残っていますが、そこまで説明していたら時間が足りないでしょうね。

ノンデザイナーズ・デザインブック』という本を紹介していただいたので、勉強してみようと思います。

歓談、そして怒涛のラストへ

くれまさんの講義のあと乾杯があり、食事が始まりました。リトルスターさん、料理は美味しいです。人と話すのに忙しくてゆっくり味わえなかったのが残念です。

3番目のプレゼンは、貴田さんによる、Railsで作られた自治体向けCMSの紹介。白状すると、この辺は僕がぼんやりしていてよく覚えていません…ごめんなさい。

でもユーザ層が考慮され、動線に配慮した作りになっていることは分かりました。

最後は橋本さん(@hsmt)による『僕的グループ・ジーニアスについて』。ATNDを見てタイトルを書き入れてますが、本当にこのタイトルだったか覚えていません。

というか、内容は想像を絶するものでした。

まず橋本さんという人の迫力がすごい。エネルギーに満ちあふれているっ!すごいパワーと信念を感じる人です。

昔は舞台俳優さんだったそうで、またクラブでDJもやるそうで、見ているだけで雰囲気に巻き込まれてしまいます。

そしてその橋本さんがちょっと出来上がっていて、いい具合にブレーキが滑っているようでしたw

内容については、まだ僕のなかで消化できていないので上手く書けないのですが、”コラボレーション”の概念を1から考え直させられるものでした

2人の人がコラボレーションするとき、それは「1+1」なのか?

エンジニアとデザイナがウェブサイトを作るとき、「エンジニア+デザイナ」なのか?

コラボレーションで最終的に作るものは何なのか。

探求するきっかけをいただけました。

他にも特筆すべき演出があったのですが、僕の文章力と理解度ではチープになってしまうので控えます。

とにかく印象的なプレゼンでした。

最後に、主催者の榊さん、発表者のみなさん、サポートとリトルスターのスタッフのみなさん、楽しい時間をありがとうございました。

2010-05-31

[][][]Windows上でRubyからMySQL 5.1を使う

現在Windows上のRubyでMySQLを使う場合、安定性や速度の面で最適なバインディングはmysql-win 2.8.1だと思われますが、リリースのアナウンスにも書かれている通り、このgemが対応するMySQLのバージョンは5.0.83です。

しかし機能や安定性など、様々な理由でMySQL 5.1を使いたい場合もあるはずです。

そこで、mysql gemを最新のソースツリーからビルドすることでMySQL 5.1に対応する方法を説明します。

必要なもの

Ruby

Ruby Installer for Windowsから適当なものをダウンロードしてインストールしてください。私は諸事情からrubyinstaller-1.8.6-p383-rc1.exeを使いました。もちろんpikで好きなバージョンをインストールしても構いません(多分)。

Development Kit

ここで言うDevelopment Kitは、ネイティブモジュールを含むgemをWindows上でビルドするためのツールです。前述のRuby Installer for Windowsにあります。

7-Zipで展開したら、中にあるINSTALL.txtに従って以下の作業をします。

  • binフォルダとdevkitフォルダをRubyのインストールフォルダへ移動
  • devkit/msys/1.0.11/etc/fstabを修正

fstabは下のような内容になっているので、「C:/Ruby」の部分を実際のRubyのインストールパスに直してやります。

C:/Ruby/devkit/gcc/3.4.5 /mingw
C:/Ruby/devkit/msys/1.0.11/usr/local /usr/local
msysgit

msysgitはWindows用のGitです(Gitは分散リポジトリ型のバージョン管理ツールです)。プロジェクトのホームページから最新版をダウンロード、インストールしてください。今ならGit-1.7.0.2-preview20100309.exeです。

mysql-gemのソース

今回元にするソースは、mysql-gemという名前でLuis Lavena氏が管理、開発しているバージョンです(mysql-win 2.8.1をリードしたのも同氏です)。

gitが使えるようになったらリポジトリから取り寄せましょう。

git clone http://github.com/luislavena/mysql-gem.git

gemを作る

mysql-gemは以下のgemに依存しているので、先にインストールします。

gem install hoe rake-compiler rubyforge

rubyforge gemはセットアップが必要なので、下のように実行してやります。

rubyforge setup

セットアップが終わると”~/.rubyforge/user-config.ymlを編集しろ”というようなメッセージが出ますが、mysql-gemをビルドするだけなら必要ありません。

準備ができたら、ソースのルートへ移動して、gemを作ります。

cd mysql-gem
rake gem

pkg/mysql-2.8.2.gemができるはずです。

インストール

インストールのプロセスは、ネイティブモジュールをコンパイルしてMySQLのライブラリをリンクします。そのためにヘッダファイルとライブラリのパスを指定してやる必要があるのですが、空白を含んだパスを指定するとコンパイルは失敗します。もしMySQLをスペースを含んだパス(C:\Program Files\MySQL\MySQL Server 5.1など)にインストールしていたら、下のようにsubstコマンドを使って空白のないパスにマッピングしてやるとよいでしょう。

subst m: "C:\Program Files\MySQL\MySQL Server 5.1"

上の場合、ヘッダファイルはm:\include、ライブラリはm:\lib\optで参照できるようになります。

インストールのコマンドラインは次のようになります(includeとlib\optは適切なパスに置き換えてください)。

gem install pkg\mysql-2.8.2.gem -- --with-mysql-include=m:\include --with-mysql-lib=m:\lib\opt

動作確認

下のようなコマンドでconnectできることを確認しましょう(MySQLサーバのホスト名、ユーザ名、パスワードは適宜差し替えてください)。

ruby -rubygems -e "require 'mysql'; puts Mysql.connect('localhost', 'root', 'password').server_info"

2010-03-01

[]Rails 2.3.5のウェブアプリWindowsのexeファイルにする

ローカルアプリケーションを作るときでも、ウェブインターフェースを付けたいことがあります。しかも、データベースも使いたい。そういう場合にはRailsを使えば開発が簡単になります。

しかし、作ったローカルアプリケーションを配布しようとすると問題が起きます。Railsアプリケーションは配布するようには作られていないからです。特に、Windowsで動作させるとなるとハードルは一気に高くなります。

ここではRails 2.3.5で作成したウェブアプリケーションをWindows用のexeファイルにする方法を紹介します。

Ovewview

Rubyプログラムをexeにするツールはいくつかありますが、ここではRubyScript2Exeを使います。このエントリではRubyScript2Exeの動作環境の構築から実行までの手順、躓きやすい点について説明します。

より新しいツールとしてOCRAがありますが、Railsアプリケーションの場合は正常に動作しませんでした。

動作環境の構築

msysGit

RubyScript2Exeはgithubで公開されているバージョンを使いますので、msysGit (Git on Windows)インストールしておきます。msysGitのサイトからダウンロード、インストールしてください。

Ruby

Windows用のRubyも幾つかありますが、今回動作確認したのはRubyInstallerの1.8.6-26です(RubyInstallerのファイルリストの一番下)。最新版の1.9.1-p378では、Rubyのプロセスがクラッシュすることがありました。

RubyInstallerはその名の通りインストーラになっていますので、そのままダウンロードしてインストールしてください。

Rubygemsの更新

Rails 2.3.5はRubygems 1.3.2以降に依存していますが、RubyInstallerでインストールされるRubygemsはバージョン0.9.4なので更新する必要があります。コマンドプロンプトを起動して以下のコマンドを実行します。(0.9.4から1.3.5への更新にgem update --systemは使用できません。)

> gem install rubygems-update
> update_rubygems
Railsのインストール

この辺はMacLinuxと変わりません。

> gem install rails -v 2.3.5

ついでにSQLite3アダプタもインストールしておきます。

> gem install sqlite3-ruby

アプリケーションの作成/展開

ここまででRailsアプリケーションを動作させる環境ができましたので、新しいアプリケーションを作成するなり、MacやLinuxから持ってくるなりします。

ここでは例として「hi!」と表示するアプリケーション(?)、fooを作ります。

> rails foo
> ruby script\generate controller foos

app\controllers\foos_controller.rbの内容は下の通りです。

class FoosController < ApplicationController
  def hi
    render :text => 'hi!'
  end
end

これでアプリケーションを起動し、

> ruby script\server

http://127.0.0.1:3000/foos/hiを開けば「hi!」と表示されます。

exe化

RubyScript2ExeはRubyスクリプトをexe化するツールなので、Railsアプリケーションのように複数のファイルが含まれるものには、そのままでは適用できません。そこで、同じ作者によるTar2RubyScriptという、フォルダを自己解凍Rubyスクリプト(以下アーカイブ)に変換するツールを使います。

Tar2RubyScript

オリジナルのTar2RubyScriptはRubygems 1.3.1までにしか対応していないため、Ryan Bookerによって修正されたバージョンを使います。まずgitを使ってインストールします。

> git clone git://github.com/ryanbooker/tar2rubyscript.git

Windows用のtarが同梱されているので、パスの通ったフォルダへコピーします。

> copy tar2rubyscript\tar.exe C:\WINDOWS

そしてTar2RubyScript自身をアーカイブにします。

> ruby tar2rubyscript\init.rb tar2rubyscript

これでtar2rubyscript.rbというスクリプトができます。このスクリプトを使うことで他のフォルダをアーカイブできます。

ただし、フォルダをアーカイブ化する際には、そのフォルダの中で最初に実行する.rbファイルが明確になっていなければなりません。Tar2RubyScriptは、フォルダの直下にあるinit.rbを最初に実行するようになっています。つまり、Railsアプリケーションをアーカイブ化するには、いわゆるRAILS_ROOTにscript/serverを実行するinit.rbを入れておかなければなりません。

例えば、以下のようなinit.rbを入れておけばRailsアプリケーションをアーカイブ化できます(at_exitについては後述します)。

at_exit do
  require "irb"
  require "drb/acl"
  require "sqlite3"
end

load "script/server"

準備ができましたので先程のfooアプリをアーカイブ化します。

> ruby tar2rubyscript.rb foo

foo.rbができるはずです。これを実行するとシステムの一時フォルダに展開されてWebrickが起動する様子が見られます。

> ruby foo.rb

もちろんhttp://127.0.0.1:3000/foos/hiにもアクセスできます。また、-eオプションなどを渡すこともできます。

> ruby foo.rb -e production
RubyScript2Exe

オリジナルのRubyScript2ExeもRubygems 1.3.1にしか対応していないので、修正されたバージョンをインストールします。

> git clone git://github.com/ryanbooker/rubyscript2exe.git

そしてアーカイブ化しておきます。

> ruby tar2rubyscript.rb rubyscript2exe

rubyscript2exe.rbができるので、foo.rbを食わせます。この時、下のようにRUBYOPTを設定します。

> set RUBYOPT=
> ruby rubyscript2exe.rb foo.rb

するとfooアプリケーションが起動します。実はRubyScript2Exeはターゲットのスクリプトを実際に実行し、ロードしたファイルを記録しておいてexeに同梱することで(出来上がるexeは自己解凍ファイルです)gemなどの外部のファイルを利用可能にします。よってここでは一度http://127.0.0.1:3000/foos/hiにアクセスするなどして、アプリケーションの実際の動作をさせておくとファイルの取りこぼしがなくなります。

あるいは、起動しただけでは読み込まれないファイルがわかっている場合には、上のinit.rbに書いたようにat_exitの中でrequireするなどの方法で読み込ませることができます。

Ctrl-Cでfooを停止するとfoo.exeが作成されます。このfoo.exeにはRuby本体からfooアプリケーション、必要なgemまで全てが含まれていますので、そのまま他のマシンへコピーして実行できます。

2009-06-26

[][]autotestからRailsが分離された

6月3日のことですが、ZenTest 4.1.0のリリースノートによると、autotestからRailsサポートが分離され、autotest-railsというGemになりました。

つまり、ZenTest 4.1.0以降をインストールすると、Railsのルートディレクトリ

$ autotest

としてもテストが実行されないということです(-railsを付けてもダメ)。

Railsの自動テストをするには

$ sudo gem install autotest-rails

などとして、autotest-railsをインストールしなければなりません。

ところがAutotestのRDocにはRailsサポートの分離について何も書かれておらず、autotest not recognizing tests... WHY? - Rails Forumのように混乱を招いているもよう。

ZenTestのフィードをチェックしてれば分かるだろう、というスタンスなのでしょうか…。ちょっと残念です。