my.code();

my.code();

  • Python
    • 1.環境構築と基本思想
    • 2.基本構文とデータ型
    • 3.リスト、タプル、辞書、セット
    • 4.制御構文と関数
    • 5.モジュールとパッケージ
    • 6.オブジェクト指向プログラミング
    • 7.ファイルの入出力とコンテキストマネージャ
    • 8.例外処理
    • 9.ジェネレータとデコレータ
  • Ruby
    • 1.rubyの世界へようこそ
    • 2.基本構文とデータ型
    • 3.制御構造とメソッド定義
    • 4.すべてがオブジェクト
    • 5.コレクション (Array, Hash, Range)
    • 6.ブロックとイテレータ
    • 7.クラスとオブジェクト
    • 8.モジュールとMix-in
    • 9.Proc, Lambda, クロージャ
    • 10.標準ライブラリの活用
    • 11.テスト文化入門
    • 12.メタプログラミング入門
  • C++
    • 1.C++の世界へようこそ
    • 2.型システムとメモリ
    • 3.関数と参照
    • 4.ポインタと動的メモリ
    • 5.クラスの基礎
    • 6.クラスを使いこなす
    • 7.継承とポリモーフィズム
    • 8.テンプレート
    • 9.STL ①:コンテナ
    • 10.STL ②:アルゴリズムとラムダ式
    • 11.RAIIとスマートポインタ
    • 12.プロジェクトの分割とビルド

第1章: Rubyの世界へようこそ - 環境構築と第一歩

Rubyへようこそ! 他の言語でのプログラミング経験をお持ちのあなたなら、Rubyの持つ柔軟性と「開発者の楽しさ」をすぐに感じ取れるはずです。この章では、Rubyの基本的な哲学に触れ、あなたのマシンに開発環境をセットアップし、最初のコードを実行します。

Rubyの哲学と特徴

Rubyは、まつもとゆきひろ(Matz)氏によって開発された、シンプルさと生産性を重視した動的オブジェクト指向言語です。

  • すべてがオブジェクト (Everything is an Object) JavaやPythonではintやfloatなどのプリミティブ型がオブジェクトとは別に存在しますが、Rubyではすべてがメソッドを持つオブジェクトです。5のような数値や"hello"のような文字列はもちろん、nil(nullに相当)やtrue/falseさえもオブジェクトです。

  • 開発者を楽しませる (MINASWAN) Rubyの設計思想の核は、プログラマがストレスなく、楽しくコーディングできることを最適化する点にあります。これはしばしば「MINASWAN (Matz Is Nice And So We Are Nice)」というコミュニティの標語にも表れています。言語仕様が厳格さよりも「驚き最小の原則」や表現力を優先することがあります。

  • 柔軟性と表現力 Rubyは非常に柔軟で、既存のクラスを後から変更する(オープンクラス)ことや、コードによってコードを操作するメタプログラミングが容易です。これにより、Ruby on Railsのような強力なフレームワークや、RSpecのようなDSL(ドメイン固有言語)が生まれています。

他言語との簡単な比較

あなたの経験言語とRubyを少し比べてみましょう。

  • Pythonistaへ:

    • インデントは構文的な意味を持ちません(単なる可読性のため)。
    • ブロック(コードのまとまり)は:とインデントではなく、do...endキーワード、または{...}(ブレース)で定義します。
    • メソッド呼び出しの丸括弧()は、曖昧さがなければ省略可能です。print "hello"のように書けます。
  • Java/C# Developerへ:

    • Rubyは静的型付けではなく動的型付けです。変数の型宣言(int i = 10)は不要で、i = 10と書くだけです。
    • コンパイルステップは不要です。スクリプトとして直接実行されます。
    • public, private, protectedのアクセス修飾子はありますが、Javaなどとは少し動作が異なります(特にprivate)。
  • JavaScript Developerへ:

    • Rubyもクラスベースのオブジェクト指向です(ただし、内部的にはJSのプロトタイプチェーンに似た特異クラスの仕組みも持ちます)。
    • thisの代わりにselfを使いますが、selfのコンテキストはJSのthisほど複雑に変化せず、より直感的です。
    • true, false, nil 以外はすべて「Truthy(真)」として扱われます(0や空文字列""も真です)。

環境構築:バージョン管理ツールの導入

システム(OS)に最初から入っているRubyを直接使うのではなく、バージョン管理ツール(rbenvやRVM)を導入することを強く推奨します。

プロジェクトごとに異なるRubyバージョン(例: 2.7.x と 3.3.x)を簡単に切り替えることができ、システムをクリーンに保てます。

ここではrbenvを使った一般的な流れを紹介します。(詳細なインストール手順はOSによって異なりますので、rbenvのGitHubリポジトリなどを参照してください。)

  1. rbenv と ruby-build のインストール: Homebrew (macOS) や apt/yum (Linux) など、お使いのパッケージマネージャでインストールします。

  2. Rubyのインストール:

    # インストール可能なバージョン一覧を確認 $ rbenv install -l # 最新の安定版(例: 3.3.0)をインストール $ rbenv install 3.3.0
  3. 使用するバージョンの設定:

    # このPCでのデフォルトバージョンとして設定 $ rbenv global 3.3.0 # バージョンが切り替わったか確認 $ ruby -v ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]

対話型シェル(irb)の活用

Rubyのインストールが完了したら、irb (Interactive Ruby) を起動してみましょう。これはRubyのREPL (Read-Eval-Print Loop) で、コード片を試したり、ドキュメント代わりに使ったりするのに非常に便利です。

ターミナルでirbと入力することで起動できます。

このウェブサイトではドキュメント内にRubyの実行環境を埋め込んでいます。 以下のように青枠で囲われたコード例には自由にRubyコードを書いて試すことができます。

=> の右側に表示されているのが、式の**評価結果(返り値)**です。

3.timesの例に注目してください。puts "Welcome!"が3回実行(出力)されていますが、=> 3と表示されています。これは、3.timesというメソッド自体の返り値が3(レシーバである数値)であることを示しています。Rubyではすべての式が値を返すことを覚えておいてください。

"Hello, World\!" とスクリプトの実行

最後に、定番の "Hello, World!" を2通りの方法で実行してみましょう。

irbでの実行

puts("put string")は、引数を標準出力(ターミナル)に出力し、最後に改行を追加するメソッドです。

(putsメソッド自体の返り値は、常にnilです。)

スクリプトファイルでの実行

エディタでhello.rbという名前のファイルを作成します。

hello.rb

このファイルを実行するには、ターミナルでrubyコマンドの引数にファイル名を渡します。

このウェブサイト上では以下のように実行ボタンをクリックするとスクリプトの実行結果が表示されます。上の hello.rb のコードを変更して再度実行すると結果も変わるはずです。試してみてください。

ruby hello.rb

おめでとうございます! これでRubyの世界への第一歩を踏み出しました。 次の章では、Rubyの基本的な構文、データ型、そして他の言語にはない特徴的な「シンボル」について詳しく学んでいきます。