railsの過去記事

Posted in Web, rails at 1:45:41 by ジュンヤ

rails でつまずいた点をメモっておきます。

mysql で動いていた開発環境を、rails 2.0 以降デフォルトの DB となった sqlite3 にスイッチしたところ、

SQLite3::SQLException: no such column: true: SELECT * FROM some_tables WHERE (some_column = true) ORDER BY created_at DESC LIMIT 1

のようなエラーがでるようになった。

» http://www.ruby-forum.com/topic/142120#630779

を参考にして、

SomeTable.find(:first, :conditions => ’some_column = true’

となっていた部分を

SomeTable.find(:first, :conditions => [’some_column = ?’, true]

と書き換えることにより、mysql でも sqlite3 でも動くようになりました。

mysql では boolean は true と false ですが、sqlite3 では 1 と 0 だからということなのですね。


Webカテゴリの最近の記事             

Posted in Web, rails, Ext JS at 2:51:51 by ジュンヤ

Ext Japan, LLC による第1回Ext JS/Ext GWT勉強会に参加してきました。

Ext JS の事例として以下の三例が紹介されました。

株式会社ゼノフィ小堤氏によるExtJapanの紹介。Ext JS は昨年中程使ってみたことがあるのですが、そのときはドキュメントがあまり充実しておらず苦労した覚えがあります。そのころにこのサイトがあったら、だいぶ助かっただろうなあ。。APIドキュメントとチュートリアルが充実、そのページ自体に Ext JS が使われていていい感じです。

お次は、株式会社フェアリーウェア黒田氏のCRESCAT。第2回 Mashup Award で最優秀賞をとった出張JAWSの流れをくみ、一般の人が使うことを考慮にいれたわかりやすさを第一に考えたコンセプトと UI を実現していると思いました。それを実現するためにうまく Ext JS が使われています。

最後は株式会社マッシュマトリックス富田氏のAfrous。これまた、マニアックなプログラマーでなくてもマッシュアップアプリケーションを作れるという、中初級者でも上級者とおなじ成果をだせるという CRESCAT とある意味似たコンセプト。Ext JS はここでもわかりやすい UI を提供することに一役買っています。

ディスカッションでは質問が多く、なかなか活発な勉強会だったと思います。

さて、いざ Ext JS を自分で使おうとなると、Rails との連携が気になるところです。

調べてみると、Ext Scaffold というのが以下のスライドで紹介されていました。

» GL Networks Inside » Ext JS and Rails, how do they get along?

Rails らしく、なんだかサクッと作れてしまいそうなので実際に試してみました。

extjs.png
↑ クリックするとスクリーンキャストを再生します

スライドの Ext Scaffold Generator のページに忠実に従っただけです(Ext JS をダウンロードしてくる取得先だけ違います)。http://localhost:3000/posts に一度目にアクセスしたときエラーがでているのはご愛嬌。サーバー起動中、はやまってアクセスしたからです。

名付けて、4分15秒でつくれてしまう(実際につくっている部分は前半の2分ちょいまでですが。。) Ext JS によるブログアプリケーション。

管理画面をつくるときに、Active Scaffold の代わりに使えるかもしれません。

【追記】
他の参加者のレポート
» GOGA - doodle開発記: Ext JS勉強会大盛況(ノ^^)八(^^ )ノ

参加者のレポートをここに付け足していこうかなあ、と思ったが、Ext Japan 代表 yuki さんのブログで同じことがおこなわれていたので、DRY(Do not Repeat Yourself)の精神でそちらに譲ります ↓
» 7ns.jp ~ Simple Web Services» ExtJS お知らせ » 第1回 Ext JS / Ext GWT勉強会を開催しました


Webカテゴリの最近の記事             

Posted in Web, rails, Facebook at 3:19:06 by ジュンヤ

Facebook Developer Garage Tokyo に参加してきました。

さっそくイベントの模様がITproに掲載されています。ITpro 初掲載ゲット!!

» 「英語圏への普及を狙う」,Facebook Developer Garage Tokyoで日本人開発者がデモ

30-40人くらいの開発者が集まる濃いイベントを予想していたら、人、人、人で場内満員。参加者の人数と、それになんだか来ている人たちの雰囲気も僕の想定と大幅に違っていて正直面喰らってしまいました。「やべー、プレゼンの練習、もちょっとしっかりやっておくんだった」と。

幸い、最初に飲んだシャンパン一杯と、なにがなんだかわからないうちに始まってしまったというデモでは一番手だったという順番、それに「時間がないので手短かに」とお願いされさっさとすすめた進行のおかげで、緊張する間もなくデモを終えることができました。

緊張して実際に操作したら、絶対グダグダになってしまう、と思っていたので、あらかじめデモをスクリーンキャストにしておいたのもよかった。

以下、発表に使ったスクリーンキャスト2つと、時間の関係で発表できなかった未公開のスクリーンキャストへのリンクを載せておきます。こうして再利用できるという意味でも、デモをスクリーンキャストに録っておくのはおすすめ。キャプチャには使いやすくて僕一押しの Jing というアプリケーションを使っています。

各画像をクリックするとデモが見られます。

fb1.png
↑ Kanji-Fandom のデモ

まず元というか本家サービスであるKanji-Fandomのデモをおこないました。

Michael Jordan を漢字に変換し、Ajax を使った UI で漢字の候補から好きな漢字を選んだあと、フォントの色や大きさ、背景色などを変更できることをデモしました。

次に、

fb2.png
↑ Facebook 版 Kanji-Fandom のデモ

です。

Facebook で Kanji-Fandom アプリケーションを追加、Facebook から名前を取得し漢字に変換した結果をランダムに表示しているところを見せています。

ほかに友達招待機能や、ディスカッションなどをおこなうことができる Help & Feedback 画面、表示された漢字をプロフィール画面に貼付ける機能を紹介しています。

続けて本家 Kanji-Fandom のサイトからでも、候補のなかから選んだ漢字の組み合わせを Facebook のプロフィール画面に貼付けることができることをデモしています。

さて、未公開デモですが、これから Facebook アプリを開発してみようかという開発者にはむしろこちらが一番興味ある部分だったかもしれません。

fb3.png
↑ Rails プラグイン Facebooker によるアプリ開発のデモ

Ruby on Rails + Facebooker(プラグイン) での開発の流れをデモしています。

最初に Mongrel をローカルで起動しています。

Facebook 上での動作を確認するためには、Facebook サーバーからアプリが動作しているホストに対してアクセスできないといけません。本番環境であれば問題ありませんが、開発環境は通常、僕のこのローカルマシンで動いている環境のように外部からアクセスできないマシンだと思います。そこで、ssh tunneling というテクニックを使い、外部のマシンの特定ポートに対するリクエストをローカルマシンに転送しています。これを具体的にやっているのが rake facebooker:tunnel:start というタスクです。

ssh tunneling を確立し、開発環境にアクセスできるようにしたら、canvas と呼ばれる Facebook アプリから自由に使える表示部分に this is test と表示しています。

エディタには Rails アプリの開発模様を映したスクリーンキャストでは定番の TextMate を使っており、「サクサク開発できるよ」感を出してみました。

最後に友達招待機能も、「Rails を使えば、ほらこんなに簡単にできるよ」ということを主張してみました。

なお、これらの知識は

» 英語の名前を漢字に変換する Kanji-Fandom Facebook 版をリリースしました : 僕は発展途上技術者

でも書きましたが、すべて

» The Pragmatic Bookshelf | Developing Facebook Platform Applications with Rails

で手に入ります。

まだ本として出版されておらず、現在ベータということで PDF でしか購入できないのですが、Rails で Facebook アプリケーションを開発するための知識をてっとり早く入手するにはおすすめです。

外国人にお友達がいる方、ぜひ

» Kanji-Fandom on Facebook

をすすめてみてください。


Webカテゴリの最近の記事             

Posted in Web, rails at 16:29:34 by ジュンヤ

Kanji-Fandom は英語の名前を漢字に変換する Web サービスです。

この Kanji-Fandom の Facebook バージョンを作りましたので紹介します。

» Facebook | Kanji-Fandom

Facebook にアカウントがあれば上記リンク先から Kanji-Fandom のアプリケーションを追加することができます。

追加すると以下のように自分の名前が漢字に変換され、各漢字の意味とともに表示されます。

kanji.png

ただし、英語の名前をおもな対象としているので、日本人の名前だと変換されない可能性が高いです。

なので、外国人の友人・知人の方々に紹介してみてください。

Paste to your Profile ボタンを押すと、表示された漢字名を自分のプロフィール画面に貼付けることができます。

本家サイトの方で作った漢字名も Facebook のプロフィール画面に貼付けできるようにしました。Facebook 版 Kanji-Fandom から本家サイトの方に飛び、好きに漢字名を作ったら、それを Facebook のプロフィールに表示することができます。

Facebook アプリケーションを開発するにあたり、Rails プラグインの

» facebooker

を使用しました。

まだベータ版ですが Beta PDF を購入できる以下の書籍が非常に参考になりました。Rails とこれ一冊で Facebook アプリケーションを作るには十分だと思います。

» The Pragmatic Bookshelf | Developing Facebook Platform Applications with Rails

Facebook は5000万人以上もユーザー数がいると言われているSNSです。Facebook アプリケーションを作れば、この超巨大なネットワークの全ユーザーが潜在ユーザーとなるわけで、なかなかエキサイティングな話です。


Webカテゴリの最近の記事             

Posted in Web, rails at 10:49:54 by ジュンヤ

Ruby on Rails で開発したいくつかのサービスを Apache + Mongrel という構成から Apache + mod_rails に切り替えています。

» Overview — Phusion Passenger (a.k.a. mod_rails)

mod_rails(正式名称は Phusion Passenger)は、Rails の弱点と言ってもいい本番環境へのデプロイの煩雑さを解決した、約一ヶ月前にリリースされ Rails 界隈で話題となったモジュールです。

» MOONGIFT: » チェック必須!Rails新時代の到来か?「Passenger(mod_rails for Apache)」:オープンソースを毎日紹介

一ヶ月ほど試しに使ってみましたが、何事も起こらず安定しています。

今なら自分が適切と思った額で Enterprise Edition ライセンスを取得できます。

今後開発していくサービスには積極的に mod_rails を使って行こうと思っています。その際何か困ったことが起こったときに、ライセンスを持っていれば手厚いサポートが受けられることは、いくつかの Web サービスやソフトウェア、オープンソースのプロジェクトの運営者側を経験しているので良く知っています。

ものを開発する身としては、時間と労力をかけて作り出されたものにはそれ相応の対価をもって報いる文化が定着してほしいと願っています。もし少しでも mod_rails の恩恵にあやかるのならばライセンスを購入することをぜひともおすすめします。

以下のページの Buy Enterprise License Today より PayPal 経由で購入できます。PayPal のアカウントがなくてもクレジットカードがあれば送金できます。

» Passenger Enterprise Edition — Phusion Passenger (a.k.a. mod_rails)

ライセンスを購入すると、ライセンスキーが送付されてきて、キーを有効にすれば、以下のようにHTTPヘッダーに Powered By Phusion Passenger Enterprise Edition の文字が現れます。

passenger.png

あと、いまなら購入者の名前が Passenger Enterprise Edition — Phusion Passenger (a.k.a. mod_rails) のページに表示されるという素敵なおまけがついてます。

頼めば名前の代わりに会社や Web サービスなど特定ページへのリンクを表示してくれるようなので、ちょっとした宣伝になるかもしれません。寄付した額が多いほど上位に表示されます。


Webカテゴリの最近の記事             

Posted in Web, 生活, rails at 14:22:11 by ジュンヤ

六本木ヒルズにある会員制の図書館、アカデミーヒルズを利用している。

» アカデミーヒルズ

コミュニティメンバー

  • 入会金:10,500円(税込)
  • 月会費:9,450円(税込) ※年一括の場合は105,000円(税込)

という、さすがヒルズとビビるお値段だが、実は僕のようにノートパソコンさえあればどこでも職場にできる人にとっては結構お得。

7:00から0:00まで利用でき、無線LAN完備、打ち合わせも可能なカフェスペースがあるので、僕にとってはいわば家賃9,450円の一人オフィス。しかも眺め最高です。

メンバーと一緒なら通常2000円のワンデーチケットが1000円なので、ゲストを呼んで、打ち合わせスペースとしても利用できます。

ただ、たまにカフェスペースが貸切になっていて、知らずに行ってしまい、しまったーという思いをしたことがある。

Web サイトをチェックすればいい話なのだが、予定を立てるときにいちいちサイトを見るのも面倒。

そこでカフェ貸切時間を iCal 形式にして Google Calendar に表示するようにしてみました。

表示のさせ方は簡単。

Google Calendar の左下メニューで追加 > URLで追加 を選択。

ical.png

公開カレンダーのURLのところに以下のように

を入力し「追加」ボタンを押せば、

ical2.png

こんな感じ↓ に貸し切りの時間帯が表示されるようになります。(日本語だといろいろ問題が起こるので、表示は英語にしました)

ical4.png

たぶん Google Calendar とか好きそうな他のメンバーの方でも利用できるよう、運営している「あとで行く」に間借りして公開しておきます。

» あとで行く - 行きたい場所を簡単登録、もう忘れない

iCal 形式が認識できるアプリケーションなら、実は何でも使えます。Mac の iCal とか。

iCal 形式に吐き出し、Google Calendar に読み込ませるのはそんなに難しくないだろうと甘く見ていたのだが、結構はまった。

以下の記事を参考にさせてもらいました。

» Miles Barr » Blog Archive » icalendar and Rails
» RubyでiCalendarを利用する - What is Normal 〜 もはや普通がわからない 〜


Webカテゴリの最近の記事             

Posted in Web, rails at 10:45:58 by ジュンヤ

「日経パソコン」のオンラインサイト「PC Online」のリニューアルに伴い、開発を担当した「モバイルマップ」がリリースされました。

» モバイルマップ|PC Online ビジネスパーソンのパソコン活用情報サイト

FREESPOT、BBモバイルポイント、FON(含livedoor Wireless) 、Mzone、フレッツ・スポット、ホットスポットの各種無線LANサービスのアクセスポイントを検索できるので、ノートパソコンを持ち歩き外出先が仕事場だ、という方には便利なサービスだと思います。

忙しいビジネスマンをイメージし、サッと使えるよう、使い勝手の良さを意識しました。

選択項目に応じてすぐに更新されるリストや、スルスルッとスクロールするところなどキャプチャ画像だけだと伝わりにくい部分もあるので、Jing というキャプチャソフトを使って動画を撮ってみました。

Mobile Map

Mash up Award 3rd が縁で知り合った ONGMAP の直鳥さん(7ns.jp)と一緒に開発を進めたので、Google Maps API まわりではいろいろとノウハウを教えていただきました。

また、これまた Mash up Award つながりで、開発環境に関して Sun Microsystems の渡辺様・河原様にアドバイスをいただき支援していただきました。ありがとうございました。

開発には Ruby on Rails を使用しています。ユーザーが触れるページは1ページだけですが、裏では各サービスから提供していただいた異なる形式のデータをインポート・変換したり、表示項目を変更できる一種のコンテンツ管理システムが動いています。管理側の画面についても使い勝手を重視し、編集部の方に実際に使っていただきながら、システムを改善していきました。Rails を使うことで、柔軟に要望に対応できたと思います。

7ns.jp 企画で、ONGMAP でも使用されている Ext JS を使った製品データベースも同時リリースなので、よろしかったらこちらもどうぞ。

» 日経BP社「PC Online」、モバイルマップ、商品検索DB


Webカテゴリの最近の記事             

Posted in Web, rails, mac at 0:02:17 by ジュンヤ

昨日Railsワークショップ@新橋に参加しました。

Ruby の新しいフレームワークで Rails よりも軽くて早いという Waves を、チュートリアルに沿いながら動かそうとしてみたのですが、いきなり大いにはまりました。しかし「乗りかけた船」だったので、頑張ってなんとか動かすところまではこぎつけました。

» Ruby Waves: Home
» Ruby Waves: Tutorial, Part 1

インストールは簡単。

% sudo gem install waves

で入りますが、ずらずらっと10以上の依存しているパッケージがインストールされました。

で、しょっぱなの

% rake schema:migration name=initial_schema

のところで

Could not load mysql adapter:
no such file to load — mysql

というエラーが出て、いきなりつまずきました。

調べたら、どうやら gem の mysql パッケージがインストールされていることが前提であることがわかりました。

ところが、Mac OS X Leopard だと、

% sudo gem install mysql

とやっても

ERROR: While executing gem … (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.

というエラーが表示され、インストールできないのです。

しばしはまるのですが、結局

» Nullcreations | Installing ruby mysql gem in OSX 10.5 (Leopard)

にあった解決法でうまくいきました。

% sudo su
% ARCHFLAGS=”-arch i386″ gem install mysql — –with-mysql-dir=/usr/local/mysql
% install_name_tool -change /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib /usr/local/mysql/lib/libmysqlclient.15.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle

これで無事マイグレーションファイルを作成することができ、その後は順調にチュートリアルを進めることができました。

以下チュートリアルをやってみた感想です。

  • Controller と Model のコードをなかなかいじらない。つまり何も書かなくてもある程度のことができてしまうところが Rails と違う。
  • generator が Rake タスクであるところが、なんとなく美しいと思った。こういうタスクっぽいものは Rake から、と覚えておけば済むので、覚えることが少ない。
  • REST の概念に慣れてないととっつきにくいかも。
  • view がわかりにくい。チュートリアルでは Markaby というテンプレートを使用しているが、うーん、僕はちょっととっつきにくいかな、と感じました。これはデザイナとの協業に苦労しそう。
  • チュートリアル3の最後の方、@comments.map{ |c| c }.sort_by( &:created_on ).each do |comment| の .map{ |c| c } の部分が汚い、というかよくわからない。Sequel’s MySQL adapter の Limitation らしい。
  • エラーが発生したときに表示されるデバッグ用画面が Rails より綺麗。
  • チュートリアルでは jQuery を使っている。Rails のような Prototype.js との密な連携がまだ見られないが、連携するとしたらたぶん jQuery だろうことが予想される。jQuery はまだあまり詳しくはないのだけど、まわりの評判は Prototype.js よりも良いので、まあこれはいいことなのであろう。

まだできたてホヤホヤ。当然 Rails の方がはるかに完成されたフレームワークなので、いますぐ移行しようとは思わない。しかし、こうして新しいフレームワークに触れてみると、いままで「Rails すばらし過ぎる。Rails 以上のフレームワークなんて作るの無理だろう。欠点なんてみつけられない」と少なからず思っていたのが、「いやいやそうでもない。Rails にもまだまだ改善できそうな点がある」という、まあこれが正常な状態だと思いますが、そういう思考に戻されました。

気になるパフォーマンスですが、apache 付属のベンチマーク測定ツール apache bench を使って Rails の方は mongrel と比較してみました。Rails の方は Waves のチュートリアルで作ったものとほぼ同じようなテストアプリを作成して比較しています。

% ab -c 10 -n 1000 http://127.0.0.1:3000/entries

waves の結果が

Requests per second: 23.97 [#/sec] (mean)
Time per request: 417.104 [ms] (mean)
Time per request: 41.710 [ms] (mean, across all concurrent requests)
Transfer rate: 21.27 [Kbytes/sec] received

mongrel が

Requests per second: 8.70 [#/sec] (mean)
Time per request: 1148.924 [ms] (mean)
Time per request: 114.892 [ms] (mean, across all concurrent requests)
Transfer rate: 11.65 [Kbytes/sec] received

でした。

Requests per second が約 2.7 倍。

サーバーを動かしている同じマシンから測定しているのでちゃんと測定とは言えないですし、非常に簡単な構成ですから一概には言えないと思いますが、実際にブラウザで操作している感触でも、確かに waves の方がサクサク動く感じがしました。

せっかくなので、もう一つはまりどころを情報共有しておきます。

ベンチマークを計るときに waves server をデーモンで起動しようと、

% waves-server -d

と実行したところ、

/Library/Ruby/Gems/1.8/gems/waves-0.7.2/lib/runtime/server.rb:32:in `daemonize’: uninitialized constant Waves::Server::Daemonize (NameError)

というエラーが出ました。

mongrel のデーモン起動のところの似たような処理の部分を参考にして、/Library/Ruby/Gems/1.8/gems/waves-0.7.2/lib/runtime/server.rb の31行目に以下の通り require 文を追加。

 30                 def daemonize
 31                   require 'daemons/daemonize' #この部分を追加
 32                   pwd = Dir.pwd
 33                   Daemonize.daemonize( Waves::Logger.output )

あと、アプリケーションのトップフォルダ直下に

% mkdir log

で log ディレクトリを作っておきます。

これで無事デーモンで起動できるようになりました。


Webカテゴリの最近の記事             

Posted in Web, rails at 14:22:05 by ジュンヤ

» つくるぶガイドブログ: 失敗しない Rails が動かせるホスティングサービス選びと環境構築

を書きました。

ソーシャル「OSを入れた後にインストールする10のアプリケーション」(仮) を作る過程をレポートしてきましたが、10回目の今回をもって終わりとさせていただきます。

最後は、いよいよリリースしようという段階で必要な、ホスティングサービス選びと環境構築について書きたいと思います。

自分の勉強にもなったのでやって非常に良かったですが、実況中継ブログは大変でした。


Webカテゴリの最近の記事             

Posted in Web, rails at 22:51:44 by ジュンヤ

自分のサービスの一部をSlicehostというホスティングサービスに移行し始めている。

知っているアメリカ人のRailsエンジニアにすすめられ、Webで調べると評判が良かったので使い始めてみた。サインアップや管理画面のインターフェースがシンプルで使いやすく、使いはじめから好感触だった。

Ubuntu LTS で環境構築中なのだが、ApacheやPHP、Ruby on Railsなどのインストールを説明した環境構築のためのドキュメントが非常に充実していてすばらしい。

たとえば、

» Slicehost Articles: Ubuntu LTS setup - page 1(英語)

では、セキュアな ssh 環境の構築方法がシンプルにわかりやすく書かれている。

このドキュメントをみつける前に ssh 環境の構築方法について書かれた日本語の情報がないかと、結構検索してみてまわったのだが、これほど的確に必要十分な情報を提供している記事はみつからなかった。

Debian や CentOS などほかにサポートしている OS のためのガイドも用意されている。別に Slicehost を使わなくても、そうした OS のサーバー構築のための良質なドキュメントとして参照できる。

» Slicehost VPS tutorials and articles

よくわかっている人が書くドキュメントは説明が的確で、読んでいてフラストレーションがたまらない。これまでどっちかというとサーバー構築はあまり好きなほうではなかったのだけれど、もしかしたらそれは良質な情報に触れていなかったからなのかもしれない。Slicehost のドキュメントを読んでいると正しい知識が身についていく感触が気持ちよく、楽しんでサーバー構築ができる。

まだ使い始めで実際にサービスを運営してみないとわからない部分もあるが、いまのところは好感触。ホスティング先として VPS を考えている方におすすめしておきます。(もちろん、英語に抵抗なければですが)

» Slicehost


Webカテゴリの最近の記事             

« 前の記事 ·