Rails勉強会を開催しました

Rails勉強会@東北第0回を26日に開催しましたよ。皆さん、色々とレポートしてくれているので、私は後半の雑談部分でのプレゼンというか紹介したものについて。紹介したのはなでしこ、PXDoc、Wink、FireFoxExtension各種。以下順不同で。
なでしこのデモは2つ。フラッシュでデモしました。まず一つは、RailsアプリからCSV出力したファイルを、なでしこでExcelのひな形ファイルに、貼付けるというプログラム。ソースはこれだけ。

エクセル起動
エラー監視
 デスクトップ&「求人票雛形.xls」を、エクセル開く
 デスクトップ&「kyujinhyou.csv」を開く
エラーならばおわり。
(A1)へそれをエクセル一括設定。
デスクトップ&「求人票」へエクセル保存。
デスクトップ&「kyujinhyou.csv」を削除。
おわり

もう一つは、Railsとは関係なく、Excelで表を作成し、なでしこでそれをhtmlのtableに変換してサーバにftpでアップロードするというプログラム。
というか、Railsの勉強会なのに、いきなりなでしこのソースで始まってしまって本当すみません。
ただ、なでしこは、個人的にWindows環境(特にOffice環境)でのグルー(糊)として、非常に有用であると考えています。
PXDocもフラッシュでデモ。RailsアプリからPXDoc用にXMLを出力し、PXDocを使って印刷するというもの。印刷した帳票はひと月分の出勤簿。
出力されるXMLはcontrollerに、ヒアドキュメントでダイレクトに書いちゃってます。その部署のユーザー分の出勤簿をひと月分生成するので、ユーザデータでeachし、その中でひと月分の出勤簿データをeachしてます。ヒアドキュメントもユーザでeachする時に全体を生成、ユーザ情報を埋め込み、出勤簿データでeachしてる時に、1日ずつ行を生成して出勤、休暇等のデータを埋め込んでいます。大雑把に書くとこんな感じ。

def pxd
  @users = User.find_all

    result_string=<<-EOD
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<pxd paper-type="A4" name="pxd_print">
EOD

  for user in @users
    @timecards = Timecard.find(:all,
                               :conditions =>["YEAR(input_date) = ? AND MONTH(input_date)",year,month)

~~描画用にユーザデータ整形等の処理。

      result_string<<<<-EOE
<page>
<svg version="1.1" width="21cm" height="29.7cm" viewBox="0 0 21000 29700" preserveAspectRatio="xMidYMid" fill-rule="evenodd" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
~~以下帳票全体描画、途中#{user.name}ユーザ名など埋め込み
EOE
  
    for timecard in @timecards

~~描画用に出勤簿データ整形等の処理。

        result_string<<<<-EOF
~~以下一日分の行を描画、途中#{timecard.inpute_date}などを埋め込み
EOF
    end

        result_string<<<<-EOG
</svg>
</page>
EOG
  end

      result_string<<<<-EOH
</pxd>
EOH
  send_data result_string, :type =>"application/pxd"
end

勉強会に出られた方ならわかるかと思いますが、実際にはエラー処理とか、出力用のデータ整形等で相当長く汚いコードです。本来なら整形処理は追い出すべきでしょうし、ヒアドキュメントではなくテンプレートにすべきかと思います。
Winkは、上記のデモフラッシュを作成したソフト。紹介だけ。
FireBug(定番)
Web Developper(定番)
View Source Chart(htmlソースを構造化して表示)
LiveHTTPHeaders(Web DevelopperでもHTTPヘッダー見れるけどReplay機能で、リクエストを送れる)
SCRAPBOOK(ローカルにひたすら溜め込み。取り込んだ後のソース元urlの更新もOK)
ColorZilla(良さげな色はこれでいただき)
Greasemonkey&RDocをインクリメンタルサーチするgreasemonkeyスクリプト(secondlifeさん作)

その他、Ajax使ってるかと聞かれたので、回答。会社名のインクリメンタルサーチと、郵便番号で、住所、都道府県を自動補完するautocompleteを使ってます。あと、その場では忘れてましたが、ユーザの順番並び替えのためにソートも使ってます。
勉強会でのプレゼン等についてはざっとこんな所でしょうか。