(Mon)tappについてそろそろ一言言っておくか弊社で(総力を上げて)メンテナンスしているtappというライブラリがあるのですが、思ったより認知度が低いようなのでここで紹介させていただきます。Debugの問題点を解決する画期的なライブラリです。次のような経験がある方は、いますぐGemfileにtappを追加することをお勧めします。Debugを簡単に行うためのRubyライブラリです。リポジトリはhttps://github.com/esminc/tappになります。ayumin)や、InactiveSupportのご紹介により、一部のRubyistに広まることとなりました。その1年後の2010年7月7日にバージョン1.0.0がgemとしてリリースされました。現在はリポジトリをesminc(会社の公式アカウント)に移し、開発を継続しています。tappの機能2011/11現在、tappは次の3つのメソッドを提供しています。Object#tappObject#taputsObject#taap出力の形式に違いはありますが、要は**「レシーバをpp(puts,ap)して返す」**というだけです。"hoge"と何が違うのかわかりませんね。tappを使いこなすには、「レシーバを返す」というところを上手く使えるようにならなければいけません。tappの使い所tappがあれば、急に次のようなコードのメンテナンスを依頼されても慌てることはありません。(SlideShareのページ指定埋めこみがうまくいかなかったので画像にしています)Rubyでプログラムを書いていると、ArrayやHashに対してメソッドチェーンを使う場合が非常に多いと思います。そんなとき、メソッドチェーンの途中の状態を見たくなりませんか?そこでtappの**「レシーバを返す」**というのが効いてきます。「1から10までの数字で奇数だけを合計する」ような処理では、tappを使って次のようにメソッドチェーンの途中の状態を見ることができます。25tappを使わずに同じようなことをしようとすると、途中の状態を一時変数に入れなければなりません。Debugを差し込むことができます。tappはBlock引数を受けとることができるので、Symbol#to_procと組合せることで任意の属性だけを出力することも簡単です。Debug消し忘れ対策としてのtappみなさん一度はリポジトリに対してppやpをコミットしてしまったことがあるのではないでしょうか。書き方によっては、ppやpはgrepで見つけることが困難になり、探すのに苦労することもあります。そんなときもtapp系を使っていれば安心です。間違いなくgrepで見つけることができます。v1.3.0からはtappのコマンドラインツールが同梱されており、バージョン管理にGitを使っている場合は簡単にtappを検索できるようになっています。tapptappの落とし穴Rails(ActiveModel)でtappを使う際には、AssociationProxyやScopeに注意しなければいけません。普通に使っている分にはArrayのように見える彼等ですが、チェーンの間にtappを差しこんでしまうとそこでチェーンが切れてしまうため、その先がエラーになってしまう場合があります。どこまでがScopeやAssociationProxyのチェーンになっているか見極めてtappを差し込みましょう。おわりにtappはオープンソースプロダクトです。Experiencesを購入しました。読んだところだと石沢ケントさん、こしばさん、gaoryuさんの話がぐっときました。この業界の日本人のエッセイがこれだけ集まった本は他にないので、とても楽しく読めました。同じ人の話が3、4個続くのは結構しんどいですね。3.1にアップデート先日のwlan0が認識されない問題が解決しました!CONFIG_PCI_MSIがnになっていたからというしょうもない原因でした。-1が出たら疑ってみましょう。(Sun)通販生活コナミスタイルは「まとめて配送」を選ぶとどれだけ発売日がはなれていても一緒に配送されるという罠をすっかりわすれていて、TatshとTЁЯRAのアルバムが一緒に届いたのが数日前の話。それでもちゃんと初回限定盤を確保しておいてくれるのはいいんですけど。Tatshの方は全体的に短めですけどイイ感じ。Again...がお気に入り。TЁЯRAの方は良くも悪くも期待通りという感じ。(Sat)てけてけの会@m_pixy家御用達のお好み焼き屋さんのてけてけに行ってきました。子連れが3組(3人とも2歳児)に@ngtyk、@ursmというめずらしい感じでとても楽しかったです。毎月開催という噂もあるので、また機会があれば行きたいなー。3.1にアップデートgentoo-sourcesに3.1が降ってきたのでとりあえずインストール。T410)で無線LANが認識されなくなりました\(^o^)/wlan0ができなくて、dmesgはこんな感じ。(Mon)capybara-webkitでAjax後のsave_and_open_pagecapybara-webkitでsave_and_open_pageを使ってデバッグをするとき、その前にAjaxを使っているとレスポンスを待たずにブラウザが立ちあがってしまいます。下のように書くと意図しない動作に頭を悩ませることになります。ここでは処理が終わるまで待つCapybaraでは、画面の検証をする場合はデフォルトで2秒までAjaxでの書き換えを待ってくれるのですが、save_and_open_pageではそれを待ってくれないようです。検証しさえすれば待ってくれるので、以下のようにするといいかもしれません。やった!原因がわかったぞ!ただ、これはsave_and_open_pageがJavascriptの処理を待ってくれればいいような気がするので、そのうちちゃんと深追いすることにします。PRESS総集編とVol.65総集編はAmazonで注文したら見事にKonozamaを食ってしまったのでアキヨドで、Vol.65は献本いただきました。ありがとうございます。総集編は、書き下ろしエッセイのためだけに買っても満足しそうなすばらしい内容でした。きたのは、中島拓さんのイノベーションについてですね。見えてない競争軸で勝負できるようになりたいものです。Vol.65では、「CoffeeScriptから学ぶJavaScriptプラクティス」がよかったですね。CoffeeScriptを本気で使えてはいないので、その背後にあるプラクティスから、なぜそうなっているのかがわかりやすく書かれていてすばらしい。PostgreSQL9.1の話は、いつか使うことなったときにまず目を通すところとして覚えておきます。(Sat)散髪ログそろそろ信長スタイルができそうな勢いだったので散髪。hsbtの散髪記録が何かの役にたちそうだったのでやってみることしました。(Fri)GalaxyNexusを予約したここ数日、各所での発表で一喜一憂してたわけですが、最終的にはGalaxyNexusでフィニッシュしました。iPhone契約の列ができているauブースを横目に、誰もいない暇そうなdocomoブースで「発売日決まってます?」「未定になっております...」「価格は?」「それも...」とかいうやり取りをしながらほどなく予約は終了。Xi対応端末じゃなくてもXiのデータプランが契約可能ということなので、これはだいぶ勝利じゃないですかね。上野ヨドバシでは予約受付がこなれてない感じだったので、あまり予約する人いないんだろうなぁと。LTE非対応でしたけど、Xiの対応エリアみたら少なくとも都内じゃないとその恩恵を受けれなそうなので、2年くらいは3Gで我慢することにします。Nexusが3Gらしいというのを見て、猛烈な「いみふ&誰得」に襲われたのでした。「3Gだと思った?残念4Gでした〜」みたいな展開とか「ソフトウェアアップデートで年明けくらいにXi対応です」とかだったらいいなーと思って明日の発表をゆっくり待つことにします。OCTOPRESSこんにちは。