Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Ruby on Railsには、本来のRubyには無い便利なメソッドが幾つも使えますが、その1つがblank?です。blank?を使えば、これだけでnilと空文字のチェックを一度にできます。

もし、あなたがプログラミング言語Javaを学んだ方なら、isBlank?メソッドをご存じでしょう。blank?は、このisBlank?と同じです。しかし、本来のRubyでは、そのようなメソッドはありません。しかし、Ruby on Railsで使える便利な機能の1つです。今回は、Ruby on Railsで使えるblank?について解説します。

この記事の結論
  • Rubyのnilは特殊で、JavaのisBlank?に相当のメソッドは無いが、Ruby on Railsなら使える
  • blank?はnilと空文字の両方を評価できる
  • blank?の使い方はオブジェクトに.で続けるだけ
  • blank?の逆のpresent?も使える

RubyにはJavaのisBlank相当のメソッドがない

Rubyは、他のプログラミング言語に比べると記述量が少なく、学習しやすいのが特徴です。また、比較的新しいプログラム言語のため、C言語やJavaの影響を受けています。しかし、C言語やJavaを学んだ方が使い慣れた関数やメソッドがそのまま使える訳ではありません。

例えば、Rubyには、JavaのisNullメソッドに相当するnil?メソッドはあるものの、isBlankに相当するメソッドがありません。しかし、Ruby on Railsなら、isBlankに相当するblank?が使えます。

Ruby on RailsはRubyの拡張機能

Ruby on Railsは、Webシステムを構築するためのフレームワークであり、データベースを手軽に利用したり、Rubyの機能を拡張する便利なメソッドが豊富に用意されています。

Rubyは、他のプログラムよりも少ない記述でプログラムが書けるのが特徴ですが、Ruby on Railsは、そのようなRubyの特徴を受け継ぎ、より開発効率を高めたフレームワークです。さらに、Rubyを基にし、より使いやすくしたプログラミング言語とも言えるでしょう。

今回紹介するblank?は、このようなRuby on Railsの拡張機能の1つです。

Ruby on RailsのActive Support

先ほど、Ruby on Railsには、Rubyの機能を拡張する便利なメソッドが豊富に用意されていると紹介しましたが、それらの機能は、Ruby on Railsの仕組みの中のみ利用できる機能ではありません。具体的には、Ruby on Railsのコンポーネントである、Active Supportパッケージを組み込むことで、Rubyのプログラムからも利用できます。

そのため、もし、今回紹介するblank?を使いたい場合は、Rubyをインストールした後、Active Supportパッケージを追加することで、Ruby on Railsを使わないケースでも利用できます。

なお、その場合は、プログラムの先頭に、Active Supportのコンポーネントを使用する宣言を追加してください。

Ruby on RailsのActive Supportを宣言する例

require 'active_support/all'

Rubyを学びたい方におすすめのスクールはこちら

blank?の基本

次から、Ruby on RailsのActive Supportパッケージに含まれるblank?の文法や使用例について解説します。

blank?を使えるようにするには

先ほど紹介したように、blank?は、Ruby on RailsのActive Supportパッケージに含まれるメソッドです。そのため、Rubyが使える環境で、blank?を使用する場合は、まず、Active Supportパッケージをインストールしなければなりません。

通常、Active Supportパッケージは、gemコマンドを使ってインストールします。

$ gem install activesupport

また、Rubyのプログラムからblank?を利用する場合は、Active Supportパッケージを使用することを宣言してください。

require 'active_support/all'

blank?の文法

blank?は、評価対象がnilの場合、または、空文字の場合にtrueを、そうでない場合にfalseを返します。

blank?の文法
評価対象.blank?
blank?は、評価結果に応じてtrueまたはfalseを返します。

bkank?の使用例

target1 = nil
if target1.blank? then
  puts("blank")
end

target2 = ""
if target2.blank? then
  puts("blank")
end

この例では、target1もtarget2もblnak?メソッドでtrueになるので、実行すると「bkank」を2回表示します。
Rubyを学びたい方におすすめのスクールはこちら

blank?の使用例

先ほど解説したように、Ruby on Railsで拡張されたblank?ですが、Active Supportパッケージをインストールすることで、通常のRubyのプログラムからも利用可能です。次から、blank?を使ったRubyのプログラム例を紹介します。

nilと空文字をblank?でいっしょにチェックする例

あるWebシステムで、対象のデータセットがまだ未登録、対象のデータセットの枠のみ作成済、対象のデータが登録済の3つの状態があったとします。

この場合、対象のデータを表示する処理を作成する場合、それぞれの状態を返す関数を作っておけば、blank?で簡単に作ることが可能です。

dataset = get_dataset( key )
if( dataset.blank? ) then
  require_dataset()
else
  view_dataset( dataset )
end

この例では、get_datasetメソッドで対象のデータセットを取得し、もし、未登録(dataetがnilの場合)または枠のみ作成済の場合(datasetが空文字の場合)は、require_datasetメソッドを、対象のデータが登録済の場合はview_datasetメソッドを実行します。
Rubyを学びたい方におすすめのスクールはこちら

nil?やempty?とblank?の違い

先ほどblank?は、評価対象がnilの場合、または、空文字の場合にtrueを返すと紹介しましが、Rubyには同じようなメソッドが他にもあります。blank?と、それらのメソッドとの違いについて解説します。

blank?と似ているメソッド

Rubyで使えるblank?に似たメソッドを次にまとめました。

nil? 評価対象がnilであればtrueを返す。Rubyの組込メソッド。
empty? 評価対象が空文字であればtrueを返す。Rubyの組込メソッド。
blank? 評価対象がnilまたは空文字の場合にtrueを返す。Ruby on Railsで導入されたメソッド。
present? 評価対象がnilでも空文字でもない場合にtrueを返す。Ruby on Railsで導入されたメソッド。

このように、blank?は、Rubyの組込メソッドであるnul?メソッドとempty?メソッドの両方を評価できるメソッドです。

Rubyではnilと空文字が違う

Rubyは、扱う対象が全てオブジェクトであり、基になったオブジェクトによって使えるメソッドが違います。そして、blank?を使ううえで注意が必要な点は、nilのオブジェクトと、空文字のオブジェクトが違うことです。

具体的には、nilはオブジェクトに関係なく使える機能であり、nilかどうかをチェックするnil?メソッドは、オブジェクトに依存しないスーパークラスとして定義されています。それに対して空文字はStringクラスであり、空文字かどうかをチェックするメソッドのemty?は、Stringクラスに含まれるオブジェクトです。

そのため、空文字はStringクラスで定義済のため既にnilでないのでチェックできません。また、nilの状態は、まだStringクラスに定義されていないためempty?メソッドは使えません。このように、nilと空文字の両方を評価できるblank?は、Rubyにおける面倒な処理を簡単にしてくれる便利なメソッドと言えます。

blank?の逆のpresent?

blank?と同様にRuby on Railsで導入されたpresent?メソッドは、ちょうどblank?の逆の機能を持つメソッドです。プログラムによっては、blank?メソッドを使うよりも、読み易くなるケースもあるので、うまく使い分けるといいでしょう。
Rubyを学びたい方におすすめのスクールはこちら

まとめ

これまで解説したように、Ruby on RailsにはJavaのisBlankと同じように、評価対象がnilまたは空文字の場合にtrueを返すメソッドです。そして、Active Supportパッケージをインストールしておけば、通常のRubyのプログラムからでも利用可能です。

Rubyに用意されているnil?メソッドとempty?メソッドを組み合わせれば、同じ機能を実現できますが、blank?メソッドを使った方が短く読み易いプログラムを作成できます。Active Supportパッケージには、blank?メソッドと逆の機能であるpresent?もあるので、ぜひ、活用してください。

また、Rubyについてもっと詳しく学びたい方は、ポテパンキャンプの利用を検討されてはいかがでしょうか。
Rubyを学びたい方におすすめのスクールはこちら

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。