技術ブログを開設する
ログイン
プログラマのための技術ブログプラットフォーム

Rubyを律儀に勉強したことがなかったので

こんにちは。最近あまりしっかり勉強したことを記事に残せず、アウトプットが一番楽なポエムでちゃちゃっと済ませていたのですが、これだと何のために毎日Qruchを更新しているのかわからなくなってくるので、ちゃんとプログラミング関連の記事を書こうと思います。反省です。
時に、私はRailsでWebサービスをちまちまと開発しているのですが(理由は単純で、Progateからプログラミングを始めた私にとって、Webサービスを作る術はRailsしか知り得なかったから)、Rubyについてはあまり理解していないのでちゃんと勉強しようと思います。
Rubyは全てがオブジェクト型のスクリプト言語で、Pythonと言語仕様が似ているらしいです(私は全然そういう風に思えないのですが、強い方がそう言っているならきっとそうなのでしょう)。
うまく書けば、関数型的な処理も書けるようなのですが、個人的な感覚ではPythonの方が関数型を描きやすく、オブジェクト指向で書いた方が良い(というか、Rubyはオブジェクト指向型を描きやすいように作られていると思う)ので、そちらで書いていこうと思います。関数型については、Haskellを勉強中なので、後々。

購入した本について

Rubyを勉強するなら、色々な選択肢があり、基本的な部分ならProgateなどでも補えるのですが、何ともProgateでは、処理のことを文、ステートメントと表現している節が多く、実際には式であるため、意識の相違が起こりかねないと思います。本を買うべきなのかな、と。(でも、基礎文法をおさえるだけならむしろやった方が飲み込みは早いかなと思いますが)
で、 パーフェクトRuby という本を購入しました。Railsの文末にのっていた、Rubyに関する技術峰でおすすめされていた本です。これを用いて、Rubyに関する式などを覚えます。

メソッドについて

多言語では、関数と表現するものは、Rubyでは メソッド と呼びます。

def test(hoge)  
    #処理  
end

コメントは // ではなく、 # を用います。(Pythonと同じですね)
Pythonと異なるのは、インデントブロックによる処理わけではなく、関数定義〜endまでをブロックと捉えている点です。Webサービス開発などを行なっている方は、PHPによるHTMLタグへ入れ込む処理ではendを用いるので、馴染み深いかもしれません。
(hoge) は、仮引数です。ここは特に問題ないと思います。

戻り値

メソッドの最後の式が基本的に評価され、戻り値として処理されます。また、returnを用いることで、戻り値を返すこともできます。他言語と同じく、returnの後は処理が行われません。

def test(hoge)  
    return 2+2  
    puts "momiyama"  
end  

puts test()  

# >> 4  
# momiyamaは、return後なので処理されなかった

ちなみに、Javaのような式の後にセミコロンをつけることは必要ありません。改行によって処理の区切りがつけられます。ただし、何らかの理由で処理を一文にまとめるときは、セミコロンによって区切ることができます。(何だろう、難読化くらいしか思いつかない。)

定数・変数について

グローバル変数

グローバル変数は、スコープが非常に広い変数です。故に、処理を複雑化してしまう可能性があり、公式では無理に避ける必要はない、と書かれているものの、できるだけ使わない方がいい気がしています。
グローバル変数は、 $ を変数の最初につけることで定義されます。

定数

定数は、再代入できない変数のことです。しかしRubyでは警告が出るものの、再代入されてしまうようです。関数型的な処理を記述するときは定数を利用すべきかと思いますが、普段使いではあまり意識して使わなくてもいいんじゃないかな?と読んでいて思いました。
定数は、文字の先頭が大文字であることで定義されます。

変数

変数は、アンダースコアもしくは小文字の英字から始まる単語を使って定義します。
Pythonのように先頭に何かつける必要はなく、

test = "momiyama"  
test1 = "minami"

で定義されます。

パーフェクトRubyについて

RubyはRailsの記述手段としてしか捉えていませんでしたが、基本的な文法は2章で終わり、オブジェクトやライブラリ、gemなどについても深い解説がなされています。
この一年間を使って、Rubyistが名乗れるように、勉強していこうと思います。Rubyに関しての勉強記事もちょくちょく更新します…(C++で競プロ、全然更新できていないな、と)
少し私生活が忙しいので、できるだけ毎日更新を目指しながら頑張ります。
読んでいただきありがとうございました。

関連記事

この記事へのコメント

まだコメントはありません
2
徒然なるままに勉強
2
このエントリーをはてなブックマークに追加