今回は使い所がいまいちピンと来ないRails(Ruby)のtapメソッドが実は便利だったのでこの機会にまとめたいと思います。実際の開発では頻繁に使うメソッドではないと思いますが知っていれば便利なメソッドだったため、この機会に使い方を知っていただけたらと思います。tapメソッドは古くからあるメソッドでRuby1.8.3から導入されています。破壊的メソッドで変更後のレシーバを返すbreakで処理結果を返す処理を1行で記述するまとめ参考tapメソッドとはtapメソッドとは、自身を引数にブロックを実行し自身を返すメソッドです。tapメソッドはObjectクラスのメソッドであるため、Rubyで定義された全てのオブジェクトに対して使用することができます。公式リファレンスには以下のように記載されています。ことが、このメソッドの主目的です。Object#tap動作確認サンプルコードで動作を確認してみます。tapメソッドはレシーバ自身を引数にブロック内に記述された処理を実行し、処理結果に関わらずレシーバ自身を返すメソッドです。valueでは処理結果ではなくレシーバ自身(Hallo)が返却されていますね。破壊的メソッドで変更後のレシーバを返すtapメソッドのブロック内で破壊的メソッドを使用することで、レシーバ自身ではなく処理結果を返却することができます。以下のサンプルコードは、破壊的メソッドgsub!を用いてHalloからHelloに文字列を変換するプログラムになります。処理結果が返される破壊的メソッドとは、レシーバであるオブジェクトそのものに変更を加えるメソッドです。非破壊的メソッドは、その場の実行結果のみに影響しますが、破壊的メソッドは自分自身に変更を加えます。breakで処理結果を返すtapメソッドのブロック内でbreakを使用することで、レシーバ自身ではなく処理結果を返却することができます。以下のサンプルコードでは、breakによりHalloからHelloに文字列を変換した結果が返却されるプログラムになります。処理結果が返されるbreakとは、繰り返し処理の中で実行すると繰り返し処理を終了させることができるメソッドです。処理を1行で記述するtapメソッドで複数行に渡るコードをスマートに記述できる場合があります。以下のサンプルコードは、attributesをDBに保存し、ActiveRecordのインスタンス変数からidを取り出して返却するメソッドです。idを取り出すend上記では処理の中身が3行で記述されていますが、tapメソッドを用いることで1行で記載することができます。以下がそのサンプルコードになります。Object#tap【Ruby】tap()メソッドを使って効率良くデバッグしてみよう今回はRails(Ruby)のtapメソッドについて紹介しました。使い所がいまいちピンとこないメソッドでしたが、調べれば調べるほど面白いメソッドだなと感じました。実際の開発でも積極的に取り入れてみてください。yoshi19941117TechTechMedia【Rails】関連付けによる遅延読み込みを検知できるstrict_loa...【Rails】カバレッジを簡単に計測できるツールSimpleCovについ...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。