スライドショースライドショー

【Rails使い必見!】使うと便利なtryを理解するための4Tips

どうも!侍インストラクターのヨシダジュンです。

Ruby on Railsユーザーのみなさま、Active Supportは活用されていますか?

Active SupportはRuby言語の拡張、ユーティリティなどの役割を担っています。言語レベルで基本部分を底上げし、Railsアプリケーションの開発に役立つものです。

今回はそんなActive Supportの便利機能の中から、「try」メソッドに焦点を当て、tryメソッドを上手に活用する方法をご紹介します。

tryとは

tryとはどんなメソッドなのでしょうか?一言で言うと「nilでない場合にのみオブジェクトのメソッドを呼び出したい場合」に使うメソッドです。nil状態でメソッドを呼ばないようにするために使います。

シンプルにこれにつきますね!具体的にどのように使うのか?についてはこの後にご説明します。

tryの使い方

tryメソッドを使うためには、まずActive Supportをインストールする必要があります。
Active Supportをインストールするときにはgemという、Rubyのパッケージマネジメントシステムを使います。gemの詳細は別記事を参照してみてください。
インストールするときのコマンドは以下です。

gem install activesupport

では実際にtryメソッドのサンプルコードを紹介しながら、tryがある場合とない場合との違いを説明しますね。

user ? user.address : '住所不定'
user.try(:address) || '住所不定'

1行目と2行目がtryを使わない場合と使う場合との違いです。

使わない場合は、まず「user ?」によってuserがnilかどうかをチェックしています。nilではない場合のみ、userオブジェクトから変数addressにアクセスしています。userが2回登場する辺りに冗長さを感じますね。

一方でtryを使う場合、userが一度だけ登場するコードにシンプル化されています。

tryとtry!の違い

tryとは何かを簡単にご説明しましたが、さらに、以下のサンプルコードで説明します。

user.try(:address)
user.try!(:address)

tryには2つの効用があります。
1.userがnilの時、何もしない
2.userにaddressが実装されてない時、何もしない

1,2両方の効用を持つのがtryであり、1つ目の効用しか持たないのが try!です。
tryを使う目的としては、1が多いと思いますので、積極的にtry!を使うほうがよいでしょう。

hashにtryを使ってみる

[1] pry(main); {}[:hoge]
# nil

{}は空のハッシュを表します。空のハッシュからhoge要素を取り出そうとするとnilを返しています。

[2] pry(main); nil[:hoge]
NoMethodError: undefined method `[]' for nil:NilClass

hashから要素を取り出すとき、nilだとエラーとなります。

そこでtryを使うわけです。

[3] pry(main); {}.try(:fetch, :hoge)
KeyError: key not found: :hoge

しかし、hash#fetchを使おうとすると、キーを登録していないとエラーとなります。

[4] pry(main); {hoge: 1}.try(:fetch, :hoge)
# 1

hash#fetchにはdefault(この場合は「hoge:1」)を渡してあげるとKeyErrorが防げます。

[5] pry(main); {hoge: 1}.try(:fetch, :hoge, 0)
# 1
[6] pry(main); {}.try(:fetch, :hoge, 0)
# 0
[7] pry(main); nil.try(:fetch, :hoge, 0)
# nil

nilに対しても、keyがないときでもエラーが起きません。

まとめ

今回はRuby on Railsにおけるtryの基本的な使い方からhashに対する使い方まで細かくご説明しました。

使うことでコードもよりシンプルに読みやすくなるのに加え、デバッグにも有用なtry、うまく活用していきましょう!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヨシダ ジュン

フリーランスエンジニア、ライター。

組込みソフト開発歴が6年ほどあります。
一部上場のソフト開発会社でソフトウェア開発(基本設計、詳細設計、コーディング、テスト)に従事。
その中でC言語を使ったドライバ、アプリ開発、Linuxやサーバなどのネットワーク関係のスキルを身につけました。

2015年4月にフリーランスとして独立し、スクレイピングやHP制作、ライティングなど幅広い仕事を手がけています。さらに、認識技術という次世代技術を活用して日常生活に応用活用したライフスタイルを送っています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説