2008-08-18 (Mon) [長年日記]
▲ Rails勉強会@東京 第32回に参加
第32回のRails勉強会に参加してきました。今回はセッションオーナーに立候補してJRubyのお話をさせてもらいました*1。
準備不足の点もあり聞き苦しいところもあったかと思われ恐縮です*2。自分的にはJavaのクラスとRubyのクラスの性質の違いについてつっこんだ議論のきっかけになれたので満足。参加した皆さんのお陰です。
*2 完全に動く簡単なサンプルがあるとよかった。
2008-07-29 (Tue) [長年日記]
▲ ウェブキャリア主催 Ruby on Rails Summer Festival 2008
大変遅くなりましたが、Rails勉強会でid:moroさんに聞かれたこともありウェブキャリア様主催のRuby on Rails Summer Festivalで使ったセミナー資料を公開します。
Railsの価値や導入方法。活用するためにチーム作りといったマネジメントに関わるようなお話から、実際の開発のTipsまでをいっきに駆け抜けた形でしたがいかがでしたでしょうか。途中機材のトラブルでページ送りできなくなる場面があり、適当に進めようとしたところ嫁から一喝されたりなんかして、非常に普段の大場家を垣間見れるセミナーになったかと思われます。
ITproにも取り上げていただき感謝。写真は専務がかなり遠くに立っているため遠近法による視覚効果が見所ですね。
清水川さんによる神まとめもどうぞ*1。宿題については後ほど...
来ていただいたみなさん。また会場で本まで購入していだいたみなさま。大変ありがとうございました。 Ruby on Rails Summer Festival 2008は、まだ続きますのでぜひ他のセミナーにも参加してみてください。
*1 早口すみませんw
2008-07-17 (Thu) [長年日記]
▲ html5jp_graphs_plugin

Web標準に準拠しつつ新しい機能をふんだんに使ったクールなライブラリを提供しているHTML5JPさんというサイトがあります。
HTML5JPさんが提供しているJavaScriptを使ってWebページにグラフを組み込めるライブラリを、簡単にRailsから使うためのプラグインを嫁が公開しました。
最近ではグラフ描画というとGoogle Chart APIなんかがよく使われますが、 そういったWeb APIと比較したhtml5jp_graphs_pluginの特徴は次になります。
- リクエスト数の制限や開発者IDの埋め込みなどWeb APIにまつわる面倒な制約が無い
- 画像ではないので転送量が軽い
- クライアントサイドで処理するのでサーバ側は軽い
- Canvasを活用したグラデーションが綺麗(not IE6)
- 凡例のラベル文字に日本語(以外のマルチバイト文字も)埋め込める
- Canvasを使うので古いブラウザでの動作が微妙。Google Canvasでエミュレートする。IE6、FF2では重いようだ。逆にFF3やSafariでは軽快
特に日本語が自由に使えるのは嬉しいところ。なかなか漢字が使えるようにならないGoogle Chart APIに対して大きなアドバンテージではないでしょうか。 Google SpreadSheetがやってるような苦労が垣間見られる工夫は不要です。
小槌でも使っています。以前はgdchartというCの拡張ライブラリを使ってグラフを画像で出力していましたが、 負荷がかかるとcoreも吐かずに落ちるので困ってました。それもhtml5jp_graphsの採用によって解決しています。
html5jp_graphsプラグインはRails 2.0/2.1でテストされています。
HTML5JPではレーダー、円、折線、棒の4種類のグラフが公開されていますが、 html5jp_graphsプラグインひとつですべての形式のグラフ出力に対応します。 これは統一性のあるAPIでライブラリI/Fを公開されているHTML5JPさんに拠るところが大きいです。
HTML5JPグラフはJavaScriptですから直接Railsアプリに組み込むのも簡単です。直接つかわずにhtml5jp_graphsプラグインを使うメリットは次が挙げられます。
- インストールが簡単でRailsの規約に則ったディレクトリに配備してくれます
- Rails用のヘルパーがあるのでERBテンプレートからの呼び出しが容易
- 各グラフ形式にあまり依存しない統一されたRuby APIを提供
- ライセンスが自由なのでHTML5JP、プラグインともどもアプリケーションといっしょにソースコードを配布しやすい
では簡単に使い方を紹介しましょう。
html5jp_graphsの使い方
Rails 2.1以降なら次のコマンドでgitリポジトリからプラグインをインストールできます。 プラグインを導入したいRailsアプリケーションのRAILS_ROOTで実行します。
ruby script/plugin install git://github.com/nay/html5jp_graphs.git
Rails 2.0ではvendor/plugin配下にgitコマンドを使ってcloneします。
cd vendor/plugin git clone git://github.com/nay/html5jp_graphs.git
インストールができたらグラフを表示したいページを出力するコントローラとビューを生成します。
> ruby script/generator controller Mona rank
レイアウトを用意し、HTMLヘッダですべてのJavaScriptをロードするようにします。javascript_inculde_tagヘルパーに:allを指定するのが簡単です。
app/views/layout/application.html.erb
<html>
<head>
<title><%= @title %></title>
<%= javascript_include_tag :all %>
</head>
<body>
<%= @content_for_layout %>
</body>
</html>
実際に、html5jp_graphsプラグインに必要なJavaScriptライブラリは次になります。 必要なものだけをincludeしても良いです。
- 必須 ... prototype.js
- 必須 ... excanvas.js, excanvas-compressed.js
- 棒グラフ … vbar.js
- レーダーチャート … radar.js
- 円グラフ … circle.js
- 折線グラフ … line.js
グラフ描画をするコントローラでhtml5jp_graphsヘルパーの利用を指定します。
app/controllers/mona_controller.rb
class MonaController < ApplicationController helper :html5jp_graphs def rank end end
テンプレートのグラフを描画したい場所でhtml5jp_graphsのヘルパーを呼び出します。 このサンプルでは円グラフを描いています。引数には配列でラベルと値を組み合わせた配列を渡します。
app/views/mona/rank.html.erb
<% @title = 'Mona No.1' -%> <h1>真のモナ決定戦</h1> <p>本当のモナを決める</p> <%= pie_chart([["山本モナ",50],["モナー",30],["モナOS",10],["チョコモナカ",10]]) %>

サンプルを実行(http://localhost:3000/mona/rank にアクセス)した結果が画像のようになります。
簡単ですがhtml5jp_graphsプラグインの紹介でした。 他の形式のグラフもほとんど同様に扱うことができます。 詳しくは次のドキュメントを参照してください。
Railsプラグイン部分に関してなにか不明な点があればお気軽にお問い合わせください。パッチ提供もウェルカムです。 最後に非常に実用的かつクールなライブラリを提供しているHTML5JPのfutomiさまに深く感謝いたします。ありがとうございます。
2008-07-12 (Sat) [長年日記]
▲ 逆引きRails正誤表を公開しました
「
Ruby on Rails逆引きクイックリファレンス」に関する正誤表をまとめました。
その際、清水川さんにまとめていただいた正誤表をあますとこなくインスパイヤさせて頂きました。 清水川さんにはこの場を借りて大変に感謝いたします。ありがとう!
2008-07-05 (Sat) [長年日記]
▲ 画面遷移せずに画像のアップロードをするプラグイン
RubyKaigi2008のときにいつのまにRails 2.0に対応したのかとツッコまれたので遅ればせながら紹介します。
image_uploadプラグイン
TLabというところで簡単に画面遷移せずに画像をアップロードできるようになるimage_uploadというRails用プラグインを公開しています。元々は某プロジェクト向けに私が書いた画像アップロードモジュールを、ブラッシュアップ、プラグイン化、ドキュメント整備、テストの整備、Rails 2.0対応などなど公開に必要だけれどあまりやりたくない大変で重要お仕事を嫁やラボメンのみなさまがこなして公開にこぎつけたというプラグインです。
特徴として以下があげられます。
- responds_to_parentプラグインとJavaScriptを使って画面遷移のない画像ファイルのアップロードが簡単に出来ます
- JavaScriptが使えない環境向けにフォームベース画面遷移を伴う画像アップロードもシームレスに扱えます
- Scaffoldに対応して雛形を簡単に生成できます
- RMagickをインストールすることで画像の回転など加工にも対応します
- モデルの自由度が高く、画像を添付したいモデルとポリモーフィック関連で関連を張ります(添付したいモデルを汚染しません)
- アップロードされる画像のマジックコードを確認して画像ファイルかチェックします
- ファイル名をランダムに推測しにくい名前に変更します。この機能はオフにもできます
- アップロード中の一時ファイルの情報保持にセッションを使ってます(セッションの利用に制限のあるサイトには向いてないかも)
- Ruby-GetTextを使った多言語化(日本語化)
- 使用例としてサンプルアプリが公開されています> http://imageupload.rubyforge.org/svn/trunk/image_examples
- Rails 2.1でも一応動いてるっぽい?
プロジェクトの情報は以下の関連サイトで公開されています。
実際に動いている例としてBookScopeがあります。プロフィール画面のアイコン画像のアップロードに使われています。
ライセンスも自由で使いやすい修正BSDライセンス*1で公開しています。ぜひ使ってみて感想や要望などお寄せいただければと思います。
*1 商社からBSDライセンスのソフトウェアを公開したのが個人的にはエポックメイキングなこと。



# しみずかわ [のまネコですね。わかります。 それはさておきw、2.1の情報が少ない中、とても重宝しております!少しでもフィー..]