yn2011's blog

技術メモ

「プロを目指す人のためのRuby入門」を読んでRubyに入門した感想

プロを目指す人のためのRuby入門

プロを目指す人のためのRuby入門

  • 他言語経験者向けのRuby入門書
  • 現場で必要とされるRubyの知識を効率良く学べる

自分のスキル

感想

本の感想というよりはRubyを初めて学んで感じたことをジャンル別に整理してみた。

驚き

(少なくとも自分は)他の言語で見たことがない規則や構文

  • 変数を宣言するだけの構文はない
  • 末尾が?のメソッド名は返り値が真偽値、末尾が!は副作用ありを示す慣習
  • メソッド内で最後に評価された式が戻り値になる
  • メソッド宣言時や呼び出し時に引数のカッコを省略可能
  • ifの反対の意味を持つunless
  • シンボルの概念(JavaEnumと同じな気もする)
  • ifの条件式でローカル変数に代入
  • privateメソッドはレシーバーを指定できないという定義
  • aliasキーワード(便利に見えるけど混乱するだけな気もする)
  • クラスにアクセス修飾子が使えない

JavaScriptにも欲しい

  • キーワード引数(呼び出し部分だけ見て引数の意味が分かる)
  • &.演算子nilチェック

JavaScriptとは違う

  • メソッド呼び出し時の引数の過不足はエラー
  • ブロックの概念(クロージャ
  • 範囲オブジェクトがある

JavaScriptと似ている

  • 後付で何でも修正できる

忘れそう・難しい

  • 引数の最後がハッシュならハッシュリテラルの{}を省略可能
  • メソッド宣言時の引数の種類と並び順
  • Proc.newとラムダの違い
  • 二重コロンでモジュール内のクラス、クラス内の定数参照

例外クラスについて

  • ちょっと興味深かったのでJavaRubyの例外クラスを比較してみる
  • Javaだとコンパイル時の静的検査で検出される問題が、Rubyでは例外として用意されている

  • Ruby

f:id:pokuwagata:20190324222650p:plain (プロを目指す人のためのRuby入門 図9-3より引用)

  • Java f:id:pokuwagata:20190324222944p:plainJava本格入門 6-1-2 例外を表す3つのクラスより引用)

総括

  • (慣れの問題とは思うが)Rubyは省略記法や構文が独特かつ自由な印象があってすぐに忘れそう
    • その分他の言語と比べると、表現したいことに対してコードの量は少なく済むので慣れている人は書きやすいし読みやすいのかも
  • 静的型付がないので、コードの品質を保てないまま規模が大きくなると非常に辛そう(JavaScriptと同様な感じになる)

次はRails

  • Railsチュートリアル進行中(6章)
  • いきなりRails学び始める前に1冊Rubyの本を読んでおいて良かったと感じる
    • Rails独自のメソッドや変数が多すぎて辛いが結局はRubyで実装しているので)突き詰めて参照していけばRailsのコード読める