ネオキャリアグループ エンジニアブログ

ネオキャリアグループのエンジニアによるブログです

プログラミング初心者に送る!Rubyの便利なおすすめメソッド集

こんにちは!ぐっちです!

プログラミング言語の中でも、比較的習得しやすく、初心者向けの言語と言われている「Ruby」

最近では、プログラミングスクールなどでもRubyを教えてくれるところが増えてきており、Rubyを入り口にプログラミングの世界に入る方も多くなってきているのではないでしょうか?

今回は、そんなプログラミング初心者(Ruby初心者)に向けた便利なメソッドを紹介できたらなと思ってます!

ちなみに弊社ネオキャリアのエンジニア研修でもRubyを使ったチーム開発を行っております。

初心者が抱えがちな問題

メソッドを紹介する前に、プログラミング初心者によくある問題についてお話させていただきます。

初心者の方が、プログラミングの基本的な文法(if文, for文, case文...etc)を覚えて、実際にコードを書くにあたってよくありがちなのが覚えた基本文法だけで複雑な処理を実装しようとすることです。

たくさんの場合分けや複雑な繰り返し処理を、if文やfor文を乱用して無理やりに動かすことが、初心者のうちは多いと思います。

実際コードは動くので、一見良さそうに思えるのですが、

  • しばらく経ってからもう一度コードを確認すると自分が何をしていたか分からなくなり、理解するのに時間がかかったりする
  • バグが発生したときに、そのバグを追うのが大変

と、上記のような問題が起きます。
これは、実際に僕も経験した問題で、非常に大変な作業でした。笑

また、チームで開発を行ったりすると、チーム全員が上記の問題を抱えることになります。

なので、今回の記事では、初心者の方が、冗長化したコードを少しでも簡略化できるように僕が便利だと思ったメソッドを紹介しようと思います!

便利なメソッド集

map

mapメソッドは、配列において使えるメソッドであり要素の数だけブロックを実行し、ブロックの戻り値を集めた配列を作成します。

samples = ["hoge", "fuga", "fugo"]

p samples.map { | sample | "Hello, " + sample }
# => ["Hello, hoge", "Hello, fuga", "Hello, fugo"]

今回だと、"Hello, "とsamplesの各要素を連結して、その値を集めた新しい配列になります。

mapメソッドは、その新しい配列が戻り値となります。

戻り値が分からないという方はこちらをどうぞ。
wa3.i-3-i.info

繰り返し処理の中で、配列に要素を加えている作業を行っている場合は、mapを使えば、簡略化できる場合があります。

inject

こちらのinjectメソッドも、配列で使用できるメソッドで、繰り返しで計算を行うときに非常に便利です。

samples = [3, 5, 6]

samples.inject { | sum, n | sum + n }
# => 14

sumには、ブロックの前回の戻り値が入り、nには、配列の要素が入ります。

injectメソッドの戻り値は、最後に実行されたブロックの戻り値となります。
ちなみにブロックとは、今回は繰り返しで行われる処理と認識してください。

もう少し簡略化すると

sample.inject(:+)

と、書くことも出来ます。

これだと本当に繰り返し処理には、見えませんね。笑

三項演算子

よくif文を使っていると、

snack = "apple"

if snack == "apple"
  p "おやつはりんごでした。"
else
  p "おやつはりんごじゃありませんでした。"
end

というようなパターンがあると思いますが、三項演算子を使うと、一行で記述することが出来ます。

snack = "apple"

p snack == "apple" ? "おやつはりんごでした。" : "おやつはりんごじゃありませんでした。"

三項演算子は、[条件式] ? [条件式が真の時] : [条件式が偽の時]の形で表すことができ、短いif...else文の場合に、使用するとコードがスリムに見えます。

しかし、複雑なif文を三項演算子で書くと余計見づらくなるので、その場合は、普通にif文を使いましょう。

each_key, each_value

こちらは、連想配列(ハッシュ)で使用できるメソッドで、連想配列での繰り返し処理において、キーもしくは値のどちらか一方だけを使用して繰り返し処理を行いたいというときに便利です。

samples = { "hoge" => "aaa", "fuga" => "bbb", "fugo" => "ccc" }

samples.each_key { | key | p key }
# => hoge fuga fugo
samples.each_value { | value | p value }
# => aaa bbb ccc

二つのメソッドの戻り値は、どちらもレシーバつまり今回であれば、samplesになります。

each_cons

ここからは、使用頻度が高いわけではないのですが、Rubyでは、こういうこともできるんだよというメソッドを紹介していこうと思います。

each_consは、引数で数字を指定し、その数の要素を同時に取り出し、繰り返しを行います。

samples = ["hoge", "fuga" ,"fugo", "hogi"]

samples.each_cons(2) { | m, n | p m + "" + n + "は隣同士です。" }
# => hogeとfugaは隣同士です。
# => fugaとfugoは隣同士です。
# => fugoとhogiは隣同士です。

Rubyでは、要素複数でも繰り返しが出来るみたいですね。
しかし注意しないといけないのは、最後の要素に達した時点で繰り返しは終了するので、普通の繰り返し処理の回数よりも少なくなります。

三角関数

Rubyでは、三角関数も簡単に扱うことが出来ます。
「サイン、コサイン、タンジェント」というやつですね。

Rubyで標準に備えられているMathモジュールには、数学演算をサポートしてくれるメソッドがあります。

Math.sin(60 * Math::PI / 180)
# => 0.8660254..(√3 / 2)
Math.con(60 * Math::PI / 180)
# => 0.5 (1 / 2)
Math.tan(60 * Math::PI / 180)
# => 1.732050..(√3)

注意しなければならないのは、引数は、ラジアンを指定しなければならないので、

上記の例のように、
[角度] * Math::PI / 180
として角度からラジアンに変換してから使用しましょう。

Math::PIは、πです。
出力してみると、3.141592654と表示されますよ(^^)

まとめ

いかがでしたでしょうか?
初心者の方は、自分の書いているコードで活かせそうなところがあれば、ぜひ応用してみてください。

また僕も知らない便利なメソッドや、gemなどもたくさんあるので、自分で探してみるのも面白いかと思います!

以上、ぐっちでした(^^)

リニューアル直後に月間利用300%伸び、Web会議システム「Calling」のデザイナーが仕掛けたUXとは?

はじめまして、2018年の5月からCalling(https://www.calling.fun)でプロダクトデザインを担当しているKottyです。

今年の9月に、Callingはプラットフォームサービスとしてリニューアルしました。

もともとバラバラだったサービスを、どのようにリニューアルしたのかリニューアル直後に月間利用時間が300%も伸びたサービスをどのようにデザインしたのか、をデザイナー視点から紹介します。

 

f:id:ychiechie:20181120194611p:plain

続きを読む

よう太の冒険: yardとannotateとkramdownでドキュメントに革命を起こす編

こんにちは、こんばんは!
よう太です。

最近、パン屋めぐりという女子っぽい趣味ができました。

さて今回は、yardannotatekramdownを使って、
yardドキュメントにテーブル情報を表示させようと思います。

f:id:Yoko_Takaki:20170331141603j:plain オススメのパン屋さん教えてください

続きを読む

ユーザエクスペリエンスの概念や視点を「UX白書」から読み解く

こんにちは、平野です。

今回は、ユーザエクスペリエンス(UX)について「UX白書」の内容に触れながら考えてみます。

  • UX白書とは?
    • はじめに
    • 1. 序論
    • 2. 現象としてのUX
    • 3. ユーザエクスペリエンスの期間
    • 4. ユーザエクスペリエンスに影響する要素
    • 5. 実践としてのUX
  • おわりに
    • UX白書を読んで

UX白書とは?

・2010年9月15~18日にドイツのDagstulで行われたUXセミナーの成果をまとめたものです。

・様々な解釈で語られていたUXについて、共通の認識を形成すべく、
 専門家(研究者、実務家)30名が「UXの概念」について議論しました。

・その後、2011年2月に英語版が公開されました。
 hcdvalueの有志が日本語訳を行い、日本語公式訳として2011年12月に公開しました。

 ■公開資料 - hcdvalue
(本文での文章の引用及び図版はhcdvalue日本語訳より引用しています。)


それでは、内容を見てみましょう。

続きを読む

ネオキャリアでエンジニアインターンシップした時の話

はじめまして、しょーたです。

今回は私の自己紹介、内定者アルバイト、ネオキャリアでの開発の魅力についてお話しできればと思います。

エンジニア職希望の学生に向けて少しでも参考になれば嬉しいです。

f:id:tobari1102:20170608235600j:plain

続きを読む

社会人一年目のPMが体験した、リモートワークの技術

はじめまして。

Calling開発グループ西村です。

入社してまだ6カ月の私ですが、今開発に携わっているプロダクトで活用している技術のことを少し知っていただけたらと思い、ブログを書こうと思いました。

f:id:yu_nishimura:20181023124919p:plain

Web会議・オンライン商談・チャット接客の総合サービスのCallinghttps://www.calling.fun)というプロダクトを開発しています。

今回は、その中でもWeb会議として使うCalling Meetingに焦点を当ててお話したいと思います。

 

続きを読む