プログラミング

    [Ruby嫌い]多重代入とは

    Ruby多重代入

    ハローワールド!
    プログラミング言語にRubyというものがあります。
    七色のプログラミング言語を操るわたしなのですが、
    この言語は結構嫌いです。
    嫌いな理由は色々あるのですが、今回は多重代入について解説します。

    Rubyの多重代入が嫌い

    Rubyではコンマ区切りで複数の値を書けます。
    例えば以下のように、複数の値を返す関数を書いたとします。

    def f()
      return 1, 2, 3
    end

    これを左辺に代入する時、色々な受け取り方ができる。
    これが多重代入です。

    左側に1つ

    a = f() # [1, 2, 3]

    こうすると、aは配列になります。

    左側に2つ

    a, b = f() # 1, 2

    こうすると、3つ目は捨てられます。

    左側に3つ

    a, b, c = f() # 1, 2, 3

    こうすると、3つとも入ります。

    あと、マニアックですが最後の変数に*をつけると、残りが配列になります。

    a, *b = f() # 1, [2, 3]

    一見便利なのですが、まさか左辺の書き方で、配列かどうかまで変わる。
    ここまで、みんながみんなご存知でしょうか?

    Rubyの多重代入に気がつけるか?

    関数 f が仕様変更になった時

    def f
      if hoge()
        return 0, “成功”
      end
      return 1
    end

    終了コードとメッセージを返す、みたいな関数に改造して、return するところを書き忘れたりしたりします。

    すると・・・

    if f()==0
      #ここには絶対来ない
    end

    f が [0, “成功”] を返しても、配列と0を比較して2になるという、
    これもまたご存知?
    Rubyの罠でご丁寧に比較されてしまいます。
    いっそ文法エラーにしてほしいです。

    Rubyの多重代入に気がつけるか?

    このように、
    返り値を捨てることができる
    返り値の代入の書き方によってスカラーになったり配列になったりする
    関数の返り値の型を不定にできる

    というのが、Rubyの嫌なところです。

    最後に、これって配列になったっけ?

    と思ってプリント文で確認しようとした時の挙動です。

    Rubyはプリント文にすら罠が?

    a = f()
    puts a

    a, b, c = f()
    puts a
    puts b
    puts c

    上と下は同じ 1 2 3 と改行して出力されます。
    puts でなく p を使うと配列ということがわかりやすいです。

    とはいえRuby

    いかがでしたでしょうか?
    Rubyは正直勘弁してください、という言語なのですが、
    日本ではRuby On Railsが便利すぎてシェアが大きい言語です。

    フリーランスでエンジニアになって稼ごうとする方にもおすすめ。
    多くの会社で使われているということは需要が大きいです。

    Rubyをメインに使われていないような会社でも、スクリプト言語というのは結構な場面で使います(^-^

    先の、多重代入にしてもちゃんと勉強していれば、
    fの中でコンマで区切った変数を見た時点で、「あ、これは受け手側で気を付けないといけないな・・・」と鼻が利くようになり、気がつけるでしょう。

    Rubyの勉強なら

    Rubyはこのように罠が多いので独学はかなり大変です。
    こういう罠をよく知っている方がいる会社なら防ぐことができると思いますが、そうでない場合は、誰かに聞けた方がいい。
    と、なるとメンターがつくようなスクール系の学習がよさそうに思いますが、どこも高いです。

    そこでいろいろ探していたところ、コスパがよくて良心的な講座を見つけました。
    それは、Skill Hacksです。

    Skill Hacksとは?

    Skill Hacksは、Udemyベストセラー動画の著者で、
    書籍執筆経験もあるエンジニア経験もある迫さんの作った講座で、
    LINE@による無制限質問サポート付きの動画講座になっています。

    ただ、動画があるだけではなく、無限のサポート付きで買い切りというのが美味しいところ!
    Rubyは、罠がいっぱいなので何でも質問できるのはかなり美味しいです。

    挫折しない仕組みですね。

    動画もわかりやすくて、現時点で以下のようなコンテンツが用意されています。

    第00章 事前準備をしよう (2本)
    第01章 HTMLのサイト作成講座 (6本)
    第02章 CSSでのWebデザイン基礎講座 (6本)
    第03章 HTML/CSSワークショップ -自己紹介サイトを作ろう- (6本)
    第04章 Bootstrap活用デザイン講座 (7本)
    第05章 Rubyプログラミング学習講座 (12本)
    第06章 Rubyワークショップ -メモアプリ開発- (7本)
    第07章 Ruby on Rails コントローラ・ビュー編 (14本)
    第08章 Rails基礎講座 モデル・データベース編 (10本)
    第09章 Rails実践編 メモアプリ開発・デプロイ (11本)
    第10章 Rails実践編 メモアプリに削除編集カテゴリを追加 (13本)

    評判も上々で、2か月にして手に職を付けた方もいます。

    終わりに

    ということで、現役プログラマーから見て Skill Hacksはかなりおすすめです。
    こういう講座を受けてれば、罠だらけの Rubyをコスパ最強で近道してまなべるなぁ・・・と思います。

    さらに、Rubyだけでなく、Ruby On Railsも学べるので実力をつけて、即仕事を取ってきたり転職したりとかも可能です。
    もちろん現役の方も、Web系学んでみたい!という方にもいいと思います。

    これがあれば、わたしもRuby嫌い!とはならなかったでしょう。
    検討してみてはいかがでしょうか?

    → Skill Hacksを受講する