Railsレシピブック出張版 に参加してきました。

1.現場で Capistrano を使ってデプロイする
2.named_scope で検索条件に名前をつける
3.Haml プラグインでビューをすっきり記述する
 諸橋さんのブログこちらから(moroの日記

 

 

 ポイント

 1.設定ファイルこそが動く手順書
 2.アジャイルなプロジェクトではデプロイ重視
 3.Capistrano::CLI.password_prompt 設定ファイルにID/PASSを指定しない

現場で Capistrano を使ってデプロイする <-- 一番実用的

 Capistranoとは、Rubyで書かれた運用環境にプログラムを配布するツールです。今回は、Railsレシピブックに記載されていない現場ですぐ活用できるテクニックが聞けました。
中でも設定ファイルにID/PASSを指定しない方法と、ブロック渡しは「目からウロコ」でした。

named_scope で検索条件に名前をつける

 named_scopeは、従来のwith_scope機能に名前を定義して、scope単体だけでなく、組合せた利用も可能とします。
 with_scopeは、条件式が異なるだけの索引について共通化が図れる支援機能です。named_scopeを利用することで、更に積集合の結果が簡単・効率良く取得できます。
 参考)Rails 2.0からは with_scopeは protectedメソッドになってます。

Haml プラグインでビューをすっきり記述する

 Hamlとは、HTMLの記述を記号化してすっきりとまとめることができるプラグインです。
 http://www.tatamilab.jp/rnd/archives/000396.html

所感

 Capistranoの話は、まさに「いぶし銀」Capistranoは社内開発で配布先が限られていることもあり、自動化できれば良い程度の理解で試用していました。
 手順書の劣化や、デプロイが個人スキルに依存するといった指摘は本当に耳が痛いです。Railsリファクタリングや生産性が高い点が取り上げられがちですが、実は、MigrationをはじめとするRakeタスク群やCapistranoといった「運用・管理面のツールが整備されている」点がもう少し評価されても良いなと再認識しました。Kakutaniさんも事前に紹介されていましたが、ニッチなテーマで良かったです。

 named_scopeについてはmethod_missingを利用したふるまいについて追いながら説明が聞けたのが収穫。私が講師を務める際は、デモを交えて説明した方が効果的だと思いました。
 HAMLは内々で予想より浸透に時間がかかり、個人的に敬遠していたので再度触れてみます。


諸橋さん、浦嶌さんセミナーありがとうございました。

諸橋さんの執筆された本

改めて読むと「いぶし銀」な情報が充実していることに気づきます。(中級〜)

Railsレシピブック 183の技

Railsレシピブック 183の技

東京Ruby会議01 その2 Ruby 1.9.1リリースに向けて

2.Ruby 1.9.1リリースに向けて

 

 

 ポイント

 1.M17N対応、バイトコード化、YARV
 2.サポートレベルと対応OSの確認
 3.急募)物書き、パトロン、人柱、人柱、人柱・・・

技術情報

 Yuguiさんから現状報告とあわせて新機能の紹介がありました。
 機能は改めてまとめます(理由は所感にて)

所感

 まず、いちWindowsユーザーとして、Rubyは「提供されるもの」という意識が少なからずありました。理由は、http://www.ruby-lang.org/ja/downloads/からインストーラ形式で取得できてしまうからです。

 One-Click Ruby Installer for Windows


 また、一からRubyを勉強せずとも、自分のテリトリーから少しだけ冒険すればいい位置にJRubyが台頭してきたこともあります。試用であれば、「1.8系のRuby」か「JRuby」の選択で事足りるし、NetBeansJRubyがバンドルされ、Rubyを個別にインストールすることも不要になりつつあります。


 とはいえ、Yuguiさんの「誰かがやらなければ」という意見は的を得ているし、同感です。


 それに、Windowsで開発、IDEの利便性を享受してきた我々は、簡単に「Vimで開発」「MACで開発」を選択できないケースもある。

 結論:実際にWindows環境へRuby1.9をインストールしてから結果をまとめます。

パトロンにはなれないので)Yuguiさんの本を紹介

(旧ブログで感想書いてます。ご参考まで)http://pub.ne.jp/lazyw0rkers/?entry_id=1483520

初めてのRuby

初めてのRuby

東京Ruby会議01 その1(ライブラリ移植と機能拡張のためのパターンランゲージ)

色々興味深いセッションが多く、すべてをまとめたい気持ちはありますが
その中でも特に得るものが多かった2セッションについてまとめます。


1.それ Ruby でもやりたい - ライブラリ移植と機能拡張のためのパターンランゲージ
  SeaserプロジェクトのS2Daoという機能から、2WaySQLを移行した経験談
  Seaserプロジェクト
  t-wadaさんのブログ

2.Ruby 1.9.1リリースに向けて
  Ruby 1.9.1リリースに向けた1.9開発の現状報告および嘆願
  Yuguiさん

1.それ Ruby でもやりたい - ライブラリ移植と機能拡張のためのパターンランゲージ

 

 

 ポイント

 1.移植を試みる際は、多くを求めずまず動かすことに注力する
 2.TDDと黄金の回転
 3.移行したら、移行元に恩返し(フィードバック)する。

技術的な魅力

  まず、動的クエリ作成に向けて条件分岐でSQL文組み立てたり、SQLインジェクション攻撃から守るためににパラメータ化する技術は他にもある。

 

   

 この技術の魅力

 1.クエリ実行を確認した結果をそのままプログラムで使用できる <--ここがポイント
 2.JOIN、CASE文といったパラメータによって動的に変化する部分の可読性が高い。
 3.出力結果がSQLインジェクション対応を加味している

  ※t-wadaさんのスライドにて具体例がまとめられているので、ここでは割愛します
  こちら

所感

 技術的な魅力もさることながら、このセッションが一番すばらしいと感じたのは、実践的な「テストファースト」のアプローチが聞けた点。他の開発者と移行を試みると、あの時の「妥協」が後になって問題となるケースに遭遇します。実際、コミュニケーション不足にも起因して泣かす・泣かされる事も多い。このセッションは、移行の目的整理リスク回避、そして実践からフィードバックまでの一連が整理されていて、かなり実践的で有効な内容でした。


 正直、このセッションを聞けただけでもRubyKaigiに参加した価値があったと思います。


発表中に紹介のあった本

テストコードのない機能⇒Legacy-Code

Working Effectively With Legacy Code

Working Effectively With Legacy Code

"HelloWorld"を表示するのに半年かかりました(まつもとゆきひろ氏)

三鷹市で開催された、「Ruby」の まつもとゆきひろ氏のセミナーに参加してきました。

 進化し続けるRuby、その未来について

(タイトルは、後半のクロストークにてまつもと氏の発言より)

前半のセッション

 ●概要 「より早く、速く、強く、広く、そしてより大きく」
  ・Rubyの特長
    生産性、敏捷性、そして楽しさを重視した言語
  ・エンタープライズ領域での利用ニーズと取り組みについて
    YARV、Maglev、ROME/fairy・・・
  ・メジャー企業のRubyに対する取り組み
    Sun Microsystems(JRuby)、Oracle(Oracle Mix)、Microsoft(ironRuby)、@Nifty

  ※技術的な説明は割愛されていたので、キーワードのみ列挙

後半のセッション

 ●クロストーク

"HelloWorld"を表示するのに半年かかりました

 Rubyを開発する過程で、まずHello Worldを表示しようと試みたとき、実際にはString型の定義やふるまいの実装が必要となり、試行錯誤していたら半年が経っていたという話。
 おかげで我々はputs "HelloWorld"でことたりるし、他の言語のような余計な手続きなく簡潔なプログラミングが記述できる恩恵を受けている。


せっかくの機会なので、まつもと氏に「何をもって楽しいと感じるか」を質問してみました。


回答:他のプログラム言語では、自分が思うとおりに動作せずフラストレーションを感じるが、Rubyにはない。例えあったとしても、自らの手で訂正できるため、プログラミングを楽しめる。


そういえば、ある言語の受託開発で楽しいと感じることが減ったな・・・。


しかし、Ruby1.8に限っては、今でも簡潔を求めていくと驚き・発見があって楽しい!

所感

まつもと氏の話はRubyKaigiをはじめ、これまでもセミナーで拝聴する機会がありました。
なぜ、同じ人の話を何回も聞きにいって飽きないか考えると、まつもと氏はRubyKaigiでは技術に関する、SEや自治体向けのセミナーでは「楽しさ」というように、対象にあわせて自然に切替られるところに魅了されているのだと思います。

また、「Rubyは俺のもの」、「Ruby以外の存在は認めない」といったことがなく、他の言語や関係者の良い所を受け入れつつ自分の主張をされ、そして常に自然体で応対されるところが魅力的なんだと再認識しました。


最後に、まつもと氏との距離が近かったのもあります。(ある意味、アリーナ席)


今回も非常に得るものが多いセミナーでした。また機会があれば参加したいと思います。

「愛されたい!」と思ったときにJavaを使ってRubyクラスを書く方法

Rails勉強会@東京の2セッション目

 ・JRuby最新リリースVerは1.1.3
  【参考】
    NetBeans6.1でver1.1、6.5M1で1.1.2がバンドルされてます。
    http://www.infoq.com/jp/news/2008/07/jruby113-rcov-rubinius-ffi-mvm
 ・Dubyという型修飾ができるRubyが追加された

Dubyとは?

 ・詳細はhttp://blog.headius.com/にて
  JRuby Japanese Tour 2008 Wrap-Up!に少し情報あり!


ポイント

1.アノテーション
2.JRubygemsは高機能-->拡張しているのでupdateをすると動かなくなる可能性あり。
  更新禁止!
3.jarredScript

セッションオーナーの大場さんが、笑い交えつつ噛み砕いて説明してくださったので非常に充実した時間となりました。ソースを追いかけながらセッションが進行したので、分からないなりにポイントはおさえたと思います。(要補習)

アノテーション

  Rubyで呼ばれる際に、どうやって見えるかを指定する手段。
  関連付けの他に、引数の制限等を含め、metaデータとして記述する。
   例1)
    @JRubyClass(name = "Iconv")
   class IconvClass{
   }

所感

 技術もさることながら、大場さんの引き付ける話し方は学ぶところが多かったです。技術面では、JRubyNetBeansを通じて利用している程度であったため、詳細を追いかけたのは貴重な経験となりました。

今回のテーマ

  • 「性懲りもなくRedmineを改造してみる」>>> 改めRESTについて
  • 「愛されたい!」と思ったときにJavaを使ってRubyクラスを書く方法
  • 帰ったらすぐに使いたくなるgit入門

改めRESTについて

RedMineの紹介が終わって、YuguiさんからWebサービスの定義の説明。
認証が絡んでRESTのあるべき姿を追求していって、最終的にはRedMineに戻ってこれなかった。

 

 

 ポイント

 1.GetはRESTを意識したほうが良い。
 2.認証はRESTで加味しない方が良い。
 3.updateは206で応答、200のno contentはURL新規作成のため使い分けた方が良い。


後の中華屋懇親会で、舞波さんから「Rails2.0系からActionWebServiceなぜなくなった」とか、t-wadaさんからセッションのフォローが入る。「RESTはこうあるべき」という討論は熱が入って気持ち良い反面、RESTは現場とギャップがあるなという印象が残りました。


所感

RESTful Webサービス

RESTful Webサービス

「RESTful Webサービス」を読めば考え変わるかもしれないが、仕事でお付き合いのあるメーカやベンダーさんの意識と比較すると、以下の差異があるのは否めない。


 現 場 ・・・既存の業務ロジックをサービス化して、他の言語から利用できる改善に満足
        マッシュアップや効果的なWebサービスの使い方等は乞うご期待
 研究者 ・・・RESTのあるべき論を追求し、訴求効果を生んでいる。
        新規作成の論述はすばらしい反面、既存資産への適用シナリオに欠ける


 多分、自分も含めて「RESTで組み替えたらこういった効果が出る」みたいなお手本を期待していて、お手本を見て改善しようと考えているのではないでしょうか。後は、RESTを既存資産に適用すべきか否かという問題もある。

 「くれくれ君」が開発に携わるなという問題も否めませんが・・・。
 まずは、同じ土俵で会話できるように「RESTful Webサービス」を読むとしよう。

Rails勉強会@東京第32回 予習

Rails勉強会@東京第32回の予習

お盆休みから週末に入る週のせいか、参加人数が伸びてない。
しかし!今回のセッションは興味あるタイトルが並んでいる。。。

つまり、お盆も働き尽くめの人間にご褒美といったところでしょうか。

【キーワード】

  • git
  • 「愛されたい!」と思ったときにJavaを使ってRubyクラスを書く方法
  • redmine

今回の予習のターゲットは --> git
linuxだけかと思いきや、Windowsも条件付で提供されているようで
Windows版の情報収集を予習の課題としたいと思います。


●git リファレンス
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html

●git Windowsの場合
http://www8.atwiki.jp/git_jp/pages/24.html


●PuTTYjp Version 0.60-jp20070603 (2007/06/03)
http://hp.vector.co.jp/authors/VA024651/download.html


Git を使ってソース・コードを管理する
http://www.ibm.com/developerworks/jp/linux/library/l-git/index.html

●Git on MSys
http://code.google.com/p/msysgit/
http://code.google.com/p/msysgit/downloads/list


ソースが読みたいので、NetBeansSVNの環境にC/C++開発用のプラグインを追加しよう。
情報を辿っていくと、NetBeansC/C++開発を可能とするには、Cygwinをインストールして、gccを利用できるようにする必要がありました。

参考URL
http://www.netbeans.org/kb/60/cnd/setup-Windows.html

上の要点は、2点
1.最小インストールになっているから、以下のパッケージを追加(選択)する。
  ・gcc-core: C compiler
  ・ gcc-g++: C++ compiler
  ・ gdb: The GNU Debugger
  ・make: the GNU version of the make utility.

2.環境変数 Pathに[cygwinディレクトリ]/binを登録する

上記作業を行って、いざ取得と思ったら、リポジトリが削除されてました。。
これはgitHub見に行けということだろうか?(つづく)