質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

5回答

1328閲覧

Ruby言語を他の言語(PHP,JAVA,C#,JavaScript)経験から習得するための近道を教えてください

ST2020

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2017/05/23 01:15

業務でRuby(Rails)を使うことになり、
これまでPHPやJAVA、C#、JavaScriptをよく使ってきたのですがチュートリアルから
勉強しているのですが苦戦しております。

以下のようなところで「なんでやねん!」と思いました。
・メソッド名に「!」や「?」と言った演算子の記号が付くところ
・nullではなくnilなところ
・メソッドでreturnがないところ
・privateメソッドが継承クラスからも呼ばれるところ
・「:」が前に付いたり、後ろに付いたり、2つ付いたりやたら出てくるところ

その他の言語間ではそれほど、違いを理解するのに苦労はしなかったのですが
Rubyはとっつきづらい感じがあります。
同じようなご経験がある方や、Rubyのプロの方に習得への近道をご教授いただけると
嬉しいです。(オススメの本や、サイトなど)

↓現在以下のサイトを参考に勉強しております。
https://railstutorial.jp/
https://railsguides.jp/

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

言語仕様に疑問を持っても意味がありませんので、受け入れましょう。
自分はC、C++、Perl、JavaScript、Java、PHP、Rubyの順で経験して来ましたが、
Rubyは分かりやすいし最高だと感じました。
結局、言語に対する感性は人それぞれなので合う合わないというのはあります。
しかし、業務でやる以上好き嫌いを言っている場合ではありません。
Ruby自体の理解が十分でないように思うので、railsチュートリアルはまだ早いです。
特に業務でやるのであれば、ruby自体を使いこなすべきと思います。
まずは、普通のRubyの本を買って勉強したほうが時間効率が良いですよ。
最近の本は知りませんが、自分が勉強した時は「たのしいRuby」という本を読みました。

投稿2017/05/23 01:28

mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ST2020

2017/05/23 02:19

なるほど、ありがとうございます! Railsより先にRubyの基礎を勉強してみようと思います!
guest

0

RubyはLISP系言語でないのにもかかわらずLISPの影響を受けている珍しい言語です。

・nil という名前
・シンボルというinternされた文字列が存在する (≒コンパイルされた文字列)
・mapなどいくつかの標準メソッド名(collect等はSmalltalk由来)
・あんまりreturnを書かない(?)

など。
なので、LISPを知っていると違和感ないのですが、Rubyを学ぶためにLISPを学ぶのは不要です。

投稿2017/05/23 04:49

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ST2020

2017/05/23 06:03

ありがとうございます。LISPは初耳でした。 Ruby言語と似てるところがあるのですね、勉強になります。
guest

0

ベストアンサー

基本的にrubyは省略(空気読み)言語です。
人間が考えなくても、コンピュータが判断してわかるものは
いちいち、人間が表記しなくてもいい、の信念
より直感的にわかりやすい言語。
のために、言語設計者や言語開発者が血反吐をはく言語です。

まあ、一種の宗教ですよね、各ライブラリもかくあるべきと作られております。

なので、他の言語の常識、ほんとはなくていいんだけど
プログラムがめんど臭くなるから書いといて、っと言ったもの消えている
なので、面食らいます。

従って、ほとんどのRuby入門という書籍は、他の言語からのrubyの入門書ですw

一応、Ruby入門等を読んで欲しいのですが

かくツッコミにお答えします。

  1. メソッド名に「!」や「?」と言った演算子の記号が付くところ

これはルールではなくゆるい規約と言いますか、!がつくmethodは自身を変更する(破壊的)
?がつくmethodは戻り値がbooleanというのを端的に表しています。
動的型付け言語なので、すごくシンプルで便利なので、強制ではないですが、みんな使っています。

  1. nullではなくnilなところ

rubyは全てがclassという----(褒め言葉)言語なのでもちろんnil(null)もclassです
methodが使えます。これによって、色々な処理が簡単に書け便利です。nil.nil?みたいな。なので、nullとは違うことを
明示するためにnilと和えて名前を変えてあります?

  1. メソッドでreturnがないところ

もちろんreturnを明記しても構いません。ただ、returnをするとmethodがそこで終わるので
最後に評価された値が戻り値でいいよねって話です。

  1. privateメソッドが継承クラスからも呼ばれるところ

これの説明はちょっと難しいのですが、例えばopenclassという概念があって。
同じClass名のclassを作るだけで、簡単にclassを上書きできます。
このときprivate methodを引き継がなかったら、全然楽じゃないのでこうなってます。

  1. 「:」が前に付いたり、後ろに付いたり、2つ付いたりやたら出てくるところ

これはハッシュとシンボルの省略表記が重なったものです。
まずRubyは
100.times{Class.new("string")}
のようにすると文字列"String"代入の度を100回生成します。
なのでシンボルを使い
100.times{Class.new(:string)}
とやります、またrubyはsetter,getterも省略されていて
100.times{Class.new(:name => :string)}
hash形式とsymbolを使って値にアクセスできます。
さらにこれが100.times{Class.new(name: :string)}
と省略できるので:が並ぶんです。
こんなもんですかね、一度Rubyの楽さに慣れてしまうと戻れない感じがあります。

投稿2017/05/23 01:54

編集2017/05/23 02:00
moke

総合スコア2241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ST2020

2017/05/23 02:13

よくRubyは楽しいという話を聞くのですが、まだその域に全く達していないので教えていただいたRubyの信念やお作法を頭に入れて勉強に励みたいと思います!すいません、初心者のツッコミにまでご丁寧にご回答いただきありがとうございますw大変参考になりました!
moke

2017/05/23 02:24

私も他の言語からきて、同じように?となったので でも、他の言語で、なんでこうしなきゃいけないんだろうなぁと モヤモヤしていたのがスッキリしたというか Rubyの強さは、コードの書く量がすくないというか、拡張性の高さです。 どんなライブラリも、ruby本体でさえ、簡単にパッチが当てられて副作用が少ない (無いとは言ってない)まあ、つまり、自由なんです。 あっ、4の回答はちょっと怪しいですねRailsとごっちゃになってます。
ST2020

2017/05/23 02:54

自由度・拡張性の高さは理解が深まったら楽しくなりそうですね。 早く慣れてRubyの良さを見つけていきたいです! user.save!みたいなメソッドがありまして最初「!」は否定の演算子の意味かと思い、セーブの否定?どういうことだろ??となり後から「メソッド名の一部だったんかーい!」ってなったのと「えっnilもオブジェクトになるの!?」となったのが衝撃的でした。
moke

2017/05/23 03:51

ブロック渡しとかは、初期の段階ですごさを感じていただけるかな。他の言語にもありますが^_^ あとダックタイピングも素晴らしい特徴の一つです。さらに ちょっと手を加えれば関数型言語としても、使えるし。とにかく型にはまらない言語です。
ST2020

2017/05/23 06:20

ブロック渡しとダックタイピングですね、早く使いこなしたいです^^ 今はmoduleの入れ子についてネームスペース(名前空間)的な意味も含まれてるのではないかというところでモヤモヤしていました、難しいですね、Rubyさん。。
guest

0

Ruby は正直、癖のある言語系だと思います。
特に Java や C# のような強い静的型付けをする言語に触ってきた人からすると、動的型付けで変数宣言もいらないというのは、危なっかしいとすら思えます。
逆に Perl や JavaScript を多く触ってきた人からすれば、あまり苦にはならないのでしょうけれども、今度はフルオブジェクト指向であるという部分がある意味邪魔をしてきます。

そういう意味で頭を切り替えたうえで、Ruby 特有の作法を覚えるしかないかな、という感じです。

投稿2017/05/23 01:48

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ST2020

2017/05/23 02:15

頭を切り替える柔軟さが足りていなかったです。 他の言語の常識みたいなものにとらわれず初心に戻って勉強します。 ありがとうございます!
guest

0

記号や単語の違いなどは、「習うより慣れろ」でそのうち覚えていくかと思いますが、より速く慣れる方法としてシンタックスハイライトがあります。エディタで適切な設定をすれば、文法要素ごとに色が区切れるので、「どこまでが1トークンとして認識されるか」がはっきりすると思います。

Rubyのprivateprotectedはかなり他言語と違った動きをしますが、privateで覚えるべきルールはたった2つ、「オブジェクト名なし(暗黙のselfに対して呼び出す)、もしくは__send__経由でしか呼べない」ということです。protectedはライブラリ作成でもやらない限り、自分で書くことはほぼないと思いますので、あまり気にしなくて構いません(参考)。

それより何より、Rubyを特徴づける大きな要素は、メタプログラミングの柔軟さです。たとえば、Railsのモデルは以下のようになっていますが、

ruby

1class Item < ActiveRecord::Base 2end

これだけで、itemsというテーブルを読み取って、必要な読み書き用のメソッドを生やしたモデルクラスが出来上がってしまいます。「コードでメソッドやクラスを定義する」ことすらできてしまうぐらいの柔軟性、それがRubyのポイントです。

投稿2017/05/23 01:31

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ST2020

2017/05/23 02:18

「習うより慣れろ」おっしゃる通りだと思います! 幸いにも他の人が書いたソースが参考に読める環境なので(今の自分のレベルでは呪文のようで読み解くのにかなり苦戦していますが)わからないソースがあったらどんどん調べて早く慣れたいと思います。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問