Taka

Rubyを人に教えている仕事をしています。誰かのお役に立てられればと思って。

Taka

Rubyを人に教えている仕事をしています。誰かのお役に立てられればと思って。

マガジン

  • はじめてのRuby

    初心者がRubyプログラミングを始めるにあたって、何からやったらいいのか、どう進めたらいいのか、そんなゼロからスタートする人に向けて書いていきます。

記事一覧

ruby関数型プログラミング(3)lambda

★lambda lambdaはProcとほぼ同じ働きがあります。lambdaとProc.newはどちらもProcクラスのインスタンス(手続きオブジェクト)を生成しますが、生成された手続きオブジェ…

Taka
5年前

ruby関数型プログラミング(2)yield

★yield yieldは簡単に言うとブロックを起動せよ、と言う構文です。自分で定義したブロック付きメソッドの中で引数として受け取ったブロックを呼び出すときに使います。 yi…

Taka
5年前

ruby関数型プログラミング(1)Proc

rubyは関数型プログラミングをサポートする機能が用意されています。その代表的にものにProc(プロック)、yield(イールド)、lambda(ラムダ)があります。 ★Proc Proc…

Taka
5年前
2

rubyオブジェクト指向(8)カプセル化

★アクセサメソッド rubyのコードではattr_accessorというコードがよくでてきます。これは一種のインスタンス変数ですが、attr_accessor、attr_reader、at…

Taka
5年前
1

rubyオブジェクト指向(7)変数

本来、変数はプログラミング言語の学習の最初の段階でやるのが常ですが、私は経験上、変数スコープという変数の有効範囲の考えがちゃんと理解できるようになるためにはメソ…

Taka
5年前

rubyオブジェクト指向(6)公開レベル

クラスのなかで定義されたメソッドの外部からのアクセスを制限することができます。 public:どこからでもアクセス可能 private:定義されたクラス内でのみ…

Taka
5年前

rubyオブジェクト指向(5)モジュール

rubyのモジュールは、オブジェクト間の横断的共通処理をまとめる機能です。どこからでも呼ばれる共通処理の置き場所と考えていいです。 ★ミックスイン …

Taka
5年前

rubyオブジェクト指向(4)オーバーロード

結論から言うと、rubyにはオーバーロードの概念がないです。 オーバーロードとは、メソッドの名称を変えることなく引数の型、個数のみを変えて同名のメソッドを作…

Taka
5年前

rubyオブジェクト指向(3)イニシャライザ

イニシャライザとはオブジェクトをインスタンス化するときに初回だけ呼び出される特別なメソッドです。オブジェクトを使う側でnewを呼び出したときに…

Taka
5年前

rubyオブジェクト指向(2)メソッドを呼び出す

★メソッドの呼び出し方法 クラスを使うということは、つまりそのクラスのメソッドを呼び出すことを意味します。クラスの処理はメソッドとして書かれているので、メソッド…

Taka
5年前

rubyオブジェクト指向(1)クラスとメソッドの関係

最初に、rubyによらずオブジェクト指向プログラミングをする上での基本知識から入ります。 ★クラスとメソッドの関係を理解します クラスを理解するために、まずオフ…

Taka
5年前

rubyの基礎(11)定数

rubyでは大文字で始まる変数は定数の扱いです。 irb> PI = 3.14159265359=> 3.14159265359# 地球の円周irb> 2 * PI * 6371=> 40030.17359204378irb> PI = 3(irb):188: war…

Taka
5年前

rubyの基礎(10)メソッドの戻り値

rubyのメソッドの中では、戻り値を返すreturn文はなくてもいいのです。 def fact(n) if n == 0 1 else n * fact(n-1) endend 上のメソッドは再帰呼び出しで…

Taka
5年前

rubyの基礎(9)キーワード引数

rubyのメソッドではキーワードという引数の補助的な表記方法があります。通常の引数の場合、引数が何を意味しているかわかりづらくなってしまいます。 irb> d…

Taka
5年前

rubyの基礎(8)範囲オブジェクト

rubyには範囲オブジェクトという便利な書き方があります。 irb> for i in (1..5)irb> puts iirb> end12345 最終の数値を含まない表現もあります。 irb> for i in …

Taka
5年前

rubyの基礎(7)ブロック

rubyではブロックという概念があるので、for文はほとんど使わないと言ってもいいぐらいです。 ブロックとは、一言で言えば、「引数としてメソッドに渡…

Taka
5年前

ruby関数型プログラミング(3)lambda

★lambda
lambdaはProcとほぼ同じ働きがあります。lambdaとProc.newはどちらもProcクラスのインスタンス(手続きオブジェクト)を生成しますが、生成された手続きオブジェクトは、lambdaの生成する手続きオブジェクトのほうがよりメソッドに近い働きをするように設計されています。

具体的な違いは引数の扱いです。
lambdaのほうがより厳密です。引数の数が違っていると(メソ

もっとみる

ruby関数型プログラミング(2)yield

★yield
yieldは簡単に言うとブロックを起動せよ、と言う構文です。自分で定義したブロック付きメソッドの中で引数として受け取ったブロックを呼び出すときに使います。
yieldには値を渡せるのですが、その渡した値は、目的のブロックのブロック引数(|で囲まれたブロックの変数)に代入されます。yieldはブロック内で最後に評価した式の値を返します。

具体例は次の通りです。

# 独自のブロック付

もっとみる

ruby関数型プログラミング(1)Proc

rubyは関数型プログラミングをサポートする機能が用意されています。その代表的にものにProc(プロック)、yield(イールド)、lambda(ラムダ)があります。

★Proc
Procは簡単に言うと、ブロックを手続きとして扱うためのオブジェクトです。もっと簡単に言うと、Procはブロックそのものです。

コードを見た方が理解しやすいでしょう。

i = 0p = Proc.new { i+1

もっとみる

rubyオブジェクト指向(8)カプセル化

★アクセサメソッド
rubyのコードではattr_accessorというコードがよくでてきます。これは一種のインスタンス変数ですが、attr_accessor、attr_reader、attr_writerの3つがあり、インスタンス変数を読み書きするためのアクセサメソッドと言います。(値をセットするセッターと、値をゲットするゲッターという2つのメソッドをアクセサメソッドと言いま

もっとみる

rubyオブジェクト指向(7)変数

本来、変数はプログラミング言語の学習の最初の段階でやるのが常ですが、私は経験上、変数スコープという変数の有効範囲の考えがちゃんと理解できるようになるためにはメソッドやクラスの概念がある程度理解できるようになってからのほうがいいと思っています。
ですので、あえて変数は最後の章に持ってきました。

変数には大きく分けて、グローバル変数、インスタンス変数、クラス変数、ローカル変数の4つがあります。

もっとみる

rubyオブジェクト指向(6)公開レベル

クラスのなかで定義されたメソッドの外部からのアクセスを制限することができます。

public:どこからでもアクセス可能
private:定義されたクラス内でのみアクセス可能
protected:定義されたクラス内、あるいはそのクラスを継承した子クラスからのみアクセス可能

例えば、

class Hoge def hoge # 通常はデフォルトでpublicになる put

もっとみる

rubyオブジェクト指向(5)モジュール

rubyのモジュールは、オブジェクト間の横断的共通処理をまとめる機能です。どこからでも呼ばれる共通処理の置き場所と考えていいです。

★ミックスイン
クラスでは継承をサポートして、1つの親クラスを継承して複数の子クラスを作成することが出来ます。これによって同じような機能を持つクラスを別々にゼロから作成する手間を省きます。
ただこの継承は同類の上下関係を持ったクラス間で行

もっとみる

rubyオブジェクト指向(4)オーバーロード

結論から言うと、rubyにはオーバーロードの概念がないです。

オーバーロードとは、メソッドの名称を変えることなく引数の型、個数のみを変えて同名のメソッドを作ることができるオブジェクト指向プログラミングによくあるテクニックです。
オーバーロードの利点はメソッドの引数をその役割に応じて変えてやることで、同じような機能を持ったメソッドを同じ名前で定義できるので、コー

もっとみる

rubyオブジェクト指向(3)イニシャライザ

イニシャライザとはオブジェクトをインスタンス化するときに初回だけ呼び出される特別なメソッドです。オブジェクトを使う側でnewを呼び出したときに、そのオブジェクトの初期化として呼び出されます。
イニシャライザは省略可能です。名称はinitializeにします。メソッドと違う点は戻り値を定義できません。メソッドと同じ点は引数を定義できます。

class Hog

もっとみる

rubyオブジェクト指向(2)メソッドを呼び出す

★メソッドの呼び出し方法
クラスを使うということは、つまりそのクラスのメソッドを呼び出すことを意味します。クラスの処理はメソッドとして書かれているので、メソッドを呼び出すことがオブジェクト指向プログラミングの第一歩です。

メソッドの呼び出し方には基本的に3種類しかありません。

(1)クラスのインスタンスメソッドを呼び出す(クラスをインスタンス化して使う)
(2)継承関係にある親のメソッド

もっとみる

rubyオブジェクト指向(1)クラスとメソッドの関係

最初に、rubyによらずオブジェクト指向プログラミングをする上での基本知識から入ります。

★クラスとメソッドの関係を理解します
クラスを理解するために、まずオブジェクトとクラスの関係を説明します。
クラスとは、オブジェクトの振る舞いを定義するクッキーの型抜き器具のようなものです。

型抜きによって出来上がるクッキー自体がオブジェクトです。そして抜く行為をインスタンス化とい

もっとみる

rubyの基礎(11)定数

rubyでは大文字で始まる変数は定数の扱いです。

irb> PI = 3.14159265359=> 3.14159265359# 地球の円周irb> 2 * PI * 6371=> 40030.17359204378irb> PI = 3(irb):188: warning: already initialized constant PI(irb):186: warning: previous

もっとみる

rubyの基礎(10)メソッドの戻り値

rubyのメソッドの中では、戻り値を返すreturn文はなくてもいいのです。

def fact(n) if n == 0 1 else n * fact(n-1) endend

上のメソッドは再帰呼び出しで階乗の計算を行います。return文を省略して最後に評価された値が戻り値として返ります。

評価される値がないときは戻り値としてnilが返ります。

そうは言ってもre

もっとみる

rubyの基礎(9)キーワード引数

rubyのメソッドではキーワードという引数の補助的な表記方法があります。通常の引数の場合、引数が何を意味しているかわかりづらくなってしまいます。

irb> def sendmail(to,cc,from,title,body)irb> puts "to:#{to} cc:#{cc} from:#{from} title:#{title} body:#{body}"irb> end=>

もっとみる

rubyの基礎(8)範囲オブジェクト

rubyには範囲オブジェクトという便利な書き方があります。

irb> for i in (1..5)irb> puts iirb> end12345

最終の数値を含まない表現もあります。

irb> for i in (1...5)irb> puts iirb> end1234

これは英字でも使えます。

irb> for alphabet in ("a".."d") irb> put

もっとみる

rubyの基礎(7)ブロック

rubyではブロックという概念があるので、for文はほとんど使わないと言ってもいいぐらいです。

ブロックとは、一言で言えば、「引数としてメソッドに渡す処理のかたまり」です。ブロックの、do~endまでの範囲すべてが引数です。
または、{ } で囲む事でも同じ意味です。

例えば、

irb> 3.times do |i| x = i * 2irb> put

もっとみる