railsTweetこんにちは、エンジニアのさもです。最近TensorFlowと画像処理とかで結構pythonを触っているのですが、やっぱりRubyの書き方が好きだなと思うことがありました。Rubyを触り始めてあと3ヶ月で2年になりますが、Rubyのここが好きだなというところを挙げていきます。スポンサーリンク.classメソッド“クラスメソッド"じゃないです。classというインスタンスメソッドです。知ってのとおり、Rubyはオブジェクト指向プログラミングです。クラスがあって、そのクラスから生まれたインスタンスがプログラムの中を動き回るみたいなイメージです。文字列とか数値とかなら明らかなのですが、そうでないときは、「これどのクラスのインスタンスなんだ」と思うときがあります。するとインスタンスのクラスが表示されます。何を継承したクラスなのか調べるには、obj.class.superclassみたいにsuperclassというメソッドが使えます。クラスもClassクラスのインスタンスなんで、同じようにメソッドが使えるんですね。superclassメソッドはClassクラスのインスタンスメソッドとして定義されています。classメソッドはオブジェクト指向の理解にも凄く役に立つんです。.methodsメソッド次はmethodsメソッドです。このメソッドに関しては、こちらに詳しく書きました。www.uosansatox.bizこういうメソッド使えるっけ?こんなメソッドあった気がする。みたいな時に、さくっと調べることが出来ます。メソッドの一覧が出るので、こんなメソッドあったんだ!と新たな発見があるかもしれません。ちなみに、superclassメソッドがClassクラスのインスタンスメソッドだということを確かめるには、次を実行すればいいです。/superclass$/オープンクラスメタプログラミング、いわゆる黒魔術のですね。数値の平方根を取りたいとき、オブジェクト指向っぽく、16.sqrtみたいに書きたくないですか?Rubyではただの数値はFixnumクラスなのですが、Fixnumクラスにsqrtメソッドはありません。そんなときは、こうします。4.0こんな感じに、既存のクラスを魔改造することが出来るんです。業務で使うことはほぼないと思いますが、gemを読んだり、作ったりするときは使うことがあるかもしれません。個人で開発するシステムなら、どんな魔改造だってOKです。16)Userクラスのインスタンスuserは、名前と年齢を持っています。user.nameとしたときの.nameはメソッドでしょうか?それともパラメータにアクセスしているだけでしょうか?Rubyでは、.~はすべてメソッドです。書けば、ゲッターとセッターが動的に定義されるんですね。他の言語だと、パラメータのアクセスは.nameで、メソッドは.age()みたいに使い分けたりするんですが、ageというのが欲しいときに、メソッドなのかパラメータなのか覚えておかないといけないんですね。いう小さなストレスがRubyにはないんです。pメソッドどの言語でもデバッグをするときに、標準出力へ表示させるメソッドを使いますよね。あるのがprint("helo")みたいなメソッドです。何回も書いたりしていると、printっていうのを書くのも疲れてくるんですよね。"hello"だけで書けるんです。ppメソッドユーザのことをよく考えられてるなって思います。式展開Rubyを勉強し始めて、これは凄いと思ったものの一つです。文字列とメソッドの出力結果の結合ってめんどくさいですよね。nameみたいな感じです。#{name}"です。見た感じ短くなってるし、"+“が無い分こちらの方が、どんな風に出力されるのか想像しやすいです。eachRubyを勉強し始めて、これは凄いと思ったものの一つです。配列やハッシュ、ActiveRecord::Relation、文字列など、要素がたくさん入っているものならほぼ何でも、eachメソッドで一つずつ取り出して処理が出来ます。「たくさん要素があるもの」はeachメソッドで繰り返し処理できるという、ごく直感的にプログラミングできるので、とても楽しいです。一つ一つの要素に対して行う処理内容(ブロック)がオブジェクトになっていて、eachメソッドの引数に渡すという発想も面白いです。mapやtapメソッドにもブロックを渡すことが出来ますが、これも引数と意識することなく、自然に書くことが出来ます。!と?!と?についてはたまに間違った理解(boolean値のメソッドには?が絶対つくとか、破壊的メソッドには!が絶対つくとか、!をつけると自動的に破壊的メソッドになるとか)をされている方がいらっしゃいますが、そのことに注意すれば自分にも他人にも分かりやすいコードを書くことが出来ます。!がつくと破壊的なメソッド(ただしそうでない場合もみたことがある)、?がつくと真裏値を返すメソッドということになります。残念ながら変数に使うことは出来ませんでした。文法上のルールではないけど、慣例的にこう書けば分かりやすいみたいなのは凄く好きです。Rubyの!と?は分かりやすくていいなと思いました。erb仕事でRailsの開発をしていると、よく目にします。ファイル名の後ろに.erbがついていると、そのファイルの文中にRubyのコードを埋め込めることが出来るのですが、実はerbは標準ライブラリなんです。'erb'とすると、Rubyコードを埋め込んだファイルを作るスクリプトを書くことが出来ます。このことを知って書いた記事がこちらですwww.uosansatox.bizRubyを使ったクローラの入門記事なのですが、erbを使ってみたくて思いついたのが、この記事の内容でした。最後にいいなと思うメソッドや書き方を列挙しましたが、やっぱり簡潔に書けるところが好きですね。あと、オブジェクト指向らしい書き方が出来るので、オブジェクト指向の勉強にもいいなと思いました。読者登録をしていただけると、ブログを続ける励みになりますので、よろしくお願いします。Rubyの勉強メモです。Rubyの勉強メモです。変数同士が等しいかどうかRubyで調べる手段をご存知でしょうか...2018-07-09即席クラス。»さもしのプロフィールRubyを使うWebエンジニアです。仕事の幅を広げようとPHPも勉強します。趣味でProcessing(p5.js)をやっていて、入門サイトを作りました。当サイトに掲載されている広告について当サイトでは、第三者配信の広告サービスGoogleAdsenseを利用しています。使用することがあります。Googleアドセンスに関して、このプロセスの詳細やこのような情報が広告配信事業者に使用されないようにする方法については、こちらをクリックしてください。当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。当サイトでは、スパム・荒らしへの対応として、コメントの際に使用されたIPアドレスを記録しています。これはブログの標準機能としてサポートされている機能で、スパム・荒らしへの対応以外にこのIPアドレスを使用することはありません。メールアドレスとURLの入力に関しては、任意となっております。全てのコメントはサイト管理人が事前にその内容を確認し、承認した上での掲載となりますことをあらかじめご了承下さい。加えて、次の各号に掲げる内容を含むコメントは管理人の裁量によって承認せず、削除する事があります。特定の自然人または法人を誹謗し、中傷するもの。極度にわいせつな内容を含むもの。禁制品の取引に関するものや、他者を害する行為の依頼など、法律によって禁止されている物品、行為の依頼や斡旋などに関するもの。その他、公序良俗に反し、または管理人によって承認すべきでないと認められるもの。さもし初出掲載:2017年8月24日はてなブログをはじめよう!s-uotani-zetakansuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。