秋だ!Rubyを学ぼう! 〜Rubyを知るための26ポスト

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。

秋だ!Rubyを学ぼう! 〜Rubyを知るための26ポスト : melborne.github.com

                                                                                          • -


このブログはプログラミング言語Ruby関連
のポストが大半を占めていて
それらは僕自身がRubyについて
学んだことをベースに書かれています


その一部には
これからRubyを学ぶ人や学び始めたばかりの人が
Rubyを知るための助けになる内容が含まれてると思います
またブログを書く上で自分は
他にないユニークな視点でといつも心掛けているので
ここで
他では得られなかった気づきを得られるかもしれません
手前味噌ですけど.. :)


そんなわけで..


このブログから
Ruby初学者〜中級者向けの投稿26本を選んで
簡単な説明を付けて一覧できるようにしてみました
少し古い投稿も含まれていますが
Rubyを学ぶ上で
これらの記事があなたの参考になったとしたら
そんなにうれしいことはありません

Rubyの言語仕様に関するもの

1.1から始めるRuby(2011-07-27)

Rubyは純粋なオブジェクト指向プログラミング言語です
「純粋な」というのがRubyのミソで
オブジェクト指向機構を持った他のプログラミング言語とは
この純粋性で一線を画しています
この記事はこの点に焦点を当てて
Rubyオブジェクト指向機構について説明しています
ただシリーズ物として書き始めたのですが
第3回で止まったままです..


2. + (足す)から始めるRuby(2011-08-10)

Ruby演算子のほとんどは
オブジェクトに対するメソッド呼び出しです
つまりRubyではオブジェクト指向の純粋性を守りながら
多くの演算子を実装しています
この記事はこのことを通してRubyの特徴を
「1から始めるRuby」に倣って解説しています


3.Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(全17回)(2009-04-07)

この記事は英文小説から
最頻出ワードを抽出するプログラムの作成を通して
Rubyを学ぶチュートリアル・シリーズになっています
小説風の仮想設定から始まって
最初にRubyの特徴を解説し
続いてプログラムの改良を
延々と続けていくチュートリアルです
いつも途中で投げ出してる僕が
全17回最後まで書き上げられためずらしい記事です ^^;


4.Rubyのクラスはオブジェクトの母、モジュールはベビーシッター(2008-08-16)

Rubyの世界の三大要素といったら
クラス モジュール オブジェクトを差します
これらを理解せずにRubyを理解することはできません
この記事はこの三大要素の関係性についてまとめています


5.RubyのObjectクラスは過去を再定義するタイムマシンだ!(2008-09-27)

RubyのクラスツリーのルートはObjectクラスです*1
この記事はObjectクラスとそこにインクルードされる
Kernelモジュールについて説明しています


6.RubyのModuleクラスはすべてのモジュールの母であり同時にすべてのクラスの父である!(2008-09-30)

ModuleクラスはRubyにおける最重要クラスの1つで
これはモジュールの生成クラスであると共に
Classクラスのスーパークラスでもあります
この記事はそのModuleクラスについて説明しています


7.Rubyのブロックはメソッドに対するメソッドのMix-inだ!(2008-08-09)

Rubyのブロックはメソッドに
コードの塊を渡すことができる仕組みです
この記事はブロックおよび
そのパワーについて解説しています


8.Rubyのブロック(クロージャ)はローカル変数をインスタンス変数に変えるマジックだ!(2009-08-26)

Rubyのブロックはクロージャつまり
それが作られた環境を
そこに閉じ込めることができます
この記事はそのような
ブロックのスコープについて説明しています


9.Rubyのyieldは羊の皮を被ったevalだ!(2008-08-12)

Rubyのブロックはパワフルですが
この記事はevalとの対比でそのパワーを説明しています


10.Rubyのオブジェクトは生物なんかじゃない、トップレベルこそが生物なんだ!(2008-09-05)

Rubyのトップレベルでは
オブジェクト指向のルールに従わない
手続き指向のプログラミングが実現できます
この記事はその環境を構築している
トップレベルの不思議について書いています


11.メソッドが見つからないならRubyに作ってもらえばいいよ! - If method_missing, define_method by Ruby -(2008-10-22)

Rubyではメタプログラミングというのが1つの
重要なプログラミングの手法です
この記事では通常のメソッド定義の方法に始まって
define_method method_missingを使った
動的なメソッド定義の方法までを解説しています


12.Rubyのシンボルは文字列の皮を被った整数だ!(2008-08-02)

Rubyにはあまり他の言語には見られない
シンボルというオブジェクトがあります
この記事は文字列と数字との比較から
シンボルが何であるかを解説しています


13.RubyのSymbol#to_procを考えた人になってみる(2008-09-17)

Rubyでは例えば配列の合計値を求めるのに
[1,2,3,4,5].inject { |m,i| m + i } #=> 15
とする代わりに
[1,2,3,4,5].inject(&:+) #=> 15
と書けますが*2
それはSymbol#to_procのお陰です
この記事ではその仕組を解説しています


14.Rubyのモジュール関数を理解しよう!(2010-11-05)

RubyにはMath.sqrtのような
モジュール・メソッドとしても
また関数的にも呼び出される
モジュール関数というものがあります
この記事はその実装に挑戦しています


15.RubyのProcオブジェクトはキューティーハニーだ!(2009-09-01)

Rubyでは手続きをProcという
オブジェクトに封入できます
この記事はProcオブジェクトの
多様性について解説しています


16.高階関数はコードをユーザフレンドリーにする(2009-02-16)

関数を引数に取ったり
関数を返したりする関数のことを高階関数と呼びます
この記事はRubyでブロックを使わずに
高階関数を実現する方法を解説しています


17.Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(2011-01-24)

Rubyオブジェクト指向プログラミング言語ですが
関数プログラミングを実現できる構造を備えています
この記事は「なぜ関数プログラミングは重要か」という
有名な論文をベースにRuby関数プログラミングを実現する
手法について解説しています
残念ながらこのシリーズも3回で力尽きてます..


18.知って得する21のRubyのトリビアな記法 ~ 21 Trivia Notations you should know in Ruby(2011-06-22)

Rubyには他の言語に劣らず
ちょっとトリビアだけど知ってると便利な記法
というのが結構あります
この記事はそれを21個ピックアップして解説しています


19.IRB それはRubyistの魔法のランプ(2010-11-16)

Rubyにおける対話的実行環境はirbといいます
irbがなければRubyの魅力が半減するほど
重要なツールです
この記事はirbの使い方とそのカスタマイズ
および拡張方法について解説しています

Rubyを使った問題解決に関するもの

以下はRubyの言語仕様に関する記事ではなく
Rubyを使って問題を解く手法に関する記事です


20.Ruby、同じことの繰り返しは君に任せるよ 〜 再帰でハノイの塔を解こう!〜(2008-07-08)

この記事は再帰およびRuby
再帰を使ってハノイの塔を解く方法を解説しています


21.Rubyで文字列検索アルゴリズムを表現しよう!(2010-10-17)

文字列検索の代表的なアルゴリズムには
力まかせ検索 ボイヤー-ムーア検索
クヌース-モリス-プラット検索 N-gramインデックス検索
ラビン-カープ検索などがあります
この記事はこれらのアルゴリズムRubyで実装して
比較解説しています


22.Rubyでソート・アルゴリズムを表現しよう!(2010-10-12)

ソートの代表的なアルゴリズムには
挿入ソート 選択ソート バブルソート
クイックソート マージソートなどがあります
この記事はこれらのアルゴリズムRubyで実装して
比較解説しています
この記事ではRubyの簡潔さがよく現れていると思います


23.Rubyで論理プログラミングしようよ!(2011-08-31)

この記事では
複数の選択的な条件から回答を導き出すような
論理問題をRubyで解く方法を解説しています


24.((Rubyで) 書く (Lisp) インタプリタ)(2010-11-10)

100行ほどのPythonコードで
Schemeインタプリタを実装したPeter Norvigさんの
「((Pythonで) 書く (Lisp) インタプリタ)」
という記事があります
この記事ではこれをRubyで実装して
Python版と比較解説しています


25.Rubyでスペル修正プログラムを書こう!(2009-03-26)

Pythonを使ったPeter Norvigさんの
「スペル修正プログラムはどう書くか」という記事があります
この記事はこれをRubyで実装したものを解説しています


26.irbから学ぶRubyの並列処理 ~ forkからWebSocketまで(2011-09-29)

Rubyで並列処理をするには幾つかの方法があります
この記事ではそれらを順次解説しています


これで26本の解説は終わりです
これらの他にもこのブログには
Rubyに関する記事が多数ありますから
興味を持ったら読んでもらえたらうれしいです

*1:1.9以降正確にはBasicObject

*2:1.9では[1,2,3,4,5].inject(:+)とも書ける