-
Rubyプログラミングで何が作れる?実用的な用途と人気OSS事例を徹底解説
Rubyプログラミング言語には、実務で役立つ多彩な用途があります。 しかし、多くの人がRubyに興味を持つきっかけとなるのは「Ruby on Rails」です。Railsはフレームワークの一種で、ゼロから構築するよりも簡単かつ迅速にWebサイトやWebアプリケーションを開発するための道具一式を指します。 それ自体は素晴らしいことですが、Rubyは単体でも非常に美しいプログラミング言語です。しばらく触れていくうちに、きっと虜になるはずです。 RubyはRails専用の言語ではない ここで疑問が浮かびます。Rubyの能力は、Railsでできることだけに限定されるのでしょうか? 答えはノーです。まっ
-
Ruby 2.7の新機能・新メソッド・改善点を徹底解説
Rubyは絶えず進化し続けています。2019年12月25日にリリースされたRuby 2.7には、新機能・新メソッド・パフォーマンス改善が数多く含まれています。 Matzことまつもとゆきひろ氏によると、これは2.x系としては最後のバージョンとなります。翌年にはRuby 3.0が登場する予定だからです。 その前に、2.7で導入された主な変更点と新機能をチェックして、バージョンアップに備えておきましょう。 Enumerable#tally tallyは、配列内の各要素の出現回数を集計し、ハッシュ形式で返してくれる新しいメソッドです。もちろん自分で実装することもできますが、このメソッドを使えばその手
-
【完全ガイド】Rubyのyieldとyield_selfの違いを徹底解説
Rubyにおける「yield」というキーワード、名前は知っていても、実際に何をするものなのか曖昧なままの方は多いのではないでしょうか。 結論から言うと、yieldはRubyのキーワード(言語の中核を構成する要素)の一つで、メソッド内からブロックを呼び出すために使われます。 押さえておきたいポイントは以下の3つです: ブロックを呼び出すと、そのブロック内のコードが実行される(メソッド呼び出しと同じイメージ) yieldは任意の数の引数をブロックに渡せる ブロックの戻り値がそのままyieldの戻り値になる yieldを理解するには、まず「ブロック」の概念を把握しておく必要があります。 ブロック
-
Railsヘルパーの使い方を徹底解説!組み込みヘルパーから自作メソッドまでの完全ガイド
Railsにおけるヘルパーとは? ヘルパー(Helper)とは、Railsのビュー(View)で主に使用される、再利用可能な処理をまとめたメソッドのことです。Railsには最初から便利なヘルパーメソッドが多数用意されており、これらを活用することでビューのコードをすっきりと保つことができます。 代表的な組み込みヘルパーのひとつが time_ago_in_words です。このメソッドを使うと、経過時間を「3分前」のような人間が読みやすい形式で表示できます。 実際の使用例: time_ago_in_words(Time.now) # less than a minute(1分未満) time_
-
JavaとRubyの7つの主な違い
JavaからRubyへ移行するには、どうすればよいのでしょうか? このガイドでは、両言語の主な違いを解説し、スムーズな移行をサポートします。 JavaやC#からRubyへの乗り換えを検討している多くの方に役立つ内容です。 しかし… 単純に両言語の違いに興味がある方にとっても、本記事はきっと参考になるでしょう。 それでは始めましょう! 静的型付け vs 動的型付け 型付けのスタイルは、両言語のコードを見比べたときに最も大きな違いとして目につきます。 状況を整理すると: Javaは静的型付けを採用 Rubyは動的型付けを採用 これは具体的にどういう意味でしょうか? 「型付け」とは、
-
Rubyでディレクトリを操作する方法!DirクラスとFileUtilsの使い方を徹底解説
実は、Rubyを使えばファイルシステム内を自由に行き来できます。その鍵となるのが、Ruby標準の「Dir」クラスです。 Dirクラスを使えば、ディレクトリ内の一覧表示はもちろん、カレントディレクトリの変更や、新しいフォルダの作成まで行えます。 まずは簡単な例から見てみましょう。 filenames = Dir.entries(.) このentriesメソッドは、ファイル名のエントリを配列として返します。返される各要素は文字列なので、実際にファイルの中身を読みたい場合は、RubyのFileクラスと組み合わせて使う必要があります。 ちなみに、このドット(.)は現在のディレクトリ(カレントディレ
-
Ruby on Railsのスキャフォールディングとは?基本の使い方を徹底解説
スキャフォールディングとは何か? Railsを学び始めたばかりの方なら、「アプリケーション開発を始めるにはまず「scaffold(スキャフォールド)」を生成する必要がある」という記述を目にしたことがあるかもしれません。 実はとても簡単で、rails g scaffoldコマンド一つで実行できます。 では、スキャフォールディングとは一体何なのでしょうか? 「スキャフォールディング(足場)とは、建設・保守・修理などの作業を行う作業員を支えるために用いられる仮設構造物である。」— Wikipedia これをRailsに当てはめると、こうなります。 スキャフォールドとは、Railsプロジェクトの基本的
-
Rubyのselfキーワードとは?意味と使い方をわかりやすく解説
Rubyを学んでいると、「self」というキーワードの挙動に戸惑うことはありませんか。 どのように動作するのか、そもそもselfとは何なのでしょうか。 selfとは、現在のオブジェクトにアクセスするためのRubyのキーワードです。 この「現在のオブジェクト」が何を指すのかは、コードが置かれているコンテキスト(文脈)によって変わります。 コンテキストとは、その瞬間にコードがどこに存在しているかを指します。 selfの基本:コンテキストによって値が変わる たとえば、コードがインスタンスメソッドの中にある場合、selfはそのクラスのインスタンス、つまりオブジェクトそのものを指します。 実際にコードを
-
【究極ガイド】Rubyのハッシュとは?定義・実例・主要メソッドを徹底解説
Rubyのハッシュとは? ハッシュ(Hash)は、データを一意なキーと値のペアとして格納するためのデータ構造です。配列とは異なり数値のインデックスを持たず、値にはキーを使ってアクセスします。 具体的な活用例: 国名とそれに対応する国コードの一覧(例:ES ⇾ スペイン) 辞書:すべての単語に複数の定義が紐づいている ドメイン名とIPアドレスの対応表 Rubyプログラムの中でハッシュを適切な場面で使えば、コードの処理速度を向上させることができます。 つまり、こういうことです: データが辞書のような形式である(またはその形式に変換できる)場合、つまりキーとそれに紐づく値でデータをグループ化でき
-
Rubyで環境変数を使う方法|ENVオブジェクトの操作から設定・Rails credentialsまで徹底解説
環境変数とは、次のような「キーと値」のペアとして表されるデータのことです。 KEY=VALUE この変数は、パソコン上で動くすべてのプログラム間で設定情報(コンフィグ)を共有するために使われています。 だからこそ、環境変数がどのような仕組みで動作し、Rubyプログラムから特殊な ENV オブジェクトを使ってどうアクセスするのかを学んでおくことが大切なのです。 環境変数の活用例 デフォルトエディターの設定 Rubyにgemの保存場所を伝える(GEM_PATH / GEM_HOME) APIキーをGitリポジトリにコミットすることなくアプリケーションへ渡す OSがバイナリファイル(Windo
-
Rubyの継承を徹底解説!今日からOOPの基本をマスターしよう
クラスの継承は、オブジェクト指向プログラミング(OOP)における基本的な機能の一つです。既存のクラスをベースに、より具体的で特殊化されたクラスを作り出すことができます。 継承の基本 まずは例を見てみましょう: Food -> Fruit -> Orange これらのクラスには明確な関係があります。「オレンジは果物であり、果物は食べ物である」と表現できますね。 親クラス(スーパークラスや基底クラスとも呼ばれます)は、常にサブクラスよりも一般的な存在です。Fruit(より一般的)は、Orange(より具体的)の親クラスにあたります。 Rubyでは次のように書きます: c
-
RubyでWebブラウザを自動操作する方法!Watirの使い方を徹底解説
Rubyのコードだけで、Webブラウザを思い通りに操作できたら便利だと思いませんか? 実は、RubyGemsの「Watir」を使えばそれが可能です。 しかも、モダンブラウザが持つ機能をフルに活用できます: 表示中のページのスクリーンショットを撮影できる 開発者ツールを手動で開いてコードを打ち込むことなく、任意のページ上でJavaScriptを実行できる リンクを探してクリックしたり、テキスト入力欄に文字を入力したりできる これらはすべて、WatirとSeleniumプロジェクトによって実現されています。 それでは、実際のコード例を見ていきましょう! ブラウザを起動する まず、次のようにBr
-
RailsアプリケーションにおけるHTTPキャッシュの仕組みと実践的な活用方法
キャッシングを一般的に説明すると、データを保存しておき、後で素早く取り出せるようにすることです。計算済みのデータを再計算せずに済むように保持する場合もあれば、ローカルにデータを保管して再取得の手間を避けることを指す場合もあります。皆さんのコンピュータは常にこれを行っています。OSは頻繁にアクセスされるデータをRAMに維持しようとするため、ハードディスクやSSDから再度読み込む必要がなくなるからです。 同様に、ブラウザもすでにダウンロードしたリソースの再利用を試みます。新しいWebサイトを初めて訪れたときの経験がある方なら、ご存じでしょう。初回の読み込みに時間がかかるのは、ブラウザが必要なすべ
-
Rails の隠れた宝石:ActiveSupport StringInquirer を徹底解説
Railsは非常に大きなフレームワークで、毎年さらに成長し続けています。そのため、便利な機能の一部が知られないまま埋もれてしまうことも少なくありません。このシリーズでは、特定のタスクに役立つRails組み込みのあまり知られていない機能を紹介していきます。 記念すべき第1回では、Rails.env.test? を呼び出したときに、内部で実際に何が起こっているのかを、ActiveSupportに含まれるあまり知られていない StringInquirer クラスを通して見ていきます。さらに一歩進んで、StringInquirer のソースコードを読み解きながら、その仕組みを確認します。ネタバレにな
-
Rubyで学ぶ挿入ソート:仕組みから計算量まで徹底解説
※本記事は、Rubyでさまざまなソートアルゴリズムを実装するシリーズの第4回です。第1回ではバブルソート、第2回では選択ソート、第3回ではマージソートを取り上げました。データのソート手法をさまざまな角度から探っていくシリーズもいよいよ折り返し地点。今回は挿入ソート(Insertion Sort)に焦点を当てます。挿入ソートには魅力的な特徴がたくさんあります。まず、挿入ソートは安定(stable)なアルゴリズムです。つまり、同じキーを持つ要素同士の相対的な順序が入れ替わることがありません。また、インプレース(in-place)アルゴリズムでもあるため、ソート結果を保存するための新しい配列を作成す
-
Rails開発者が知るべきセキュリティ脅威:インジェクション攻撃の仕組みと対策を徹底解説
ユーザーデータを扱うアプリケーションを開発するなら、そのデータを確実に保護しなければなりません。しかし、セキュリティが初めての方にとっては、難しく、退屈で、複雑に感じられるかもしれません。 本記事は、Webアプリケーションにおける代表的なセキュリティ脆弱性と、それらがRails開発に与える影響を学ぶシリーズの第1回目です。道案内として活用するのは、OWASP Top 10(Web Application Security Risks)です。 OWASPとはOpen Web Application Security Project(オープンWebアプリケーションセキュリティプロジェクト)の略
-
Rubyのメソッドルックアップパスを徹底解説!メソッド探索の仕組みを完全理解しよう
メソッドを呼び出したとき、Ruby内部では何が起きているのでしょうか?同名のメソッドが複数存在する場合、Rubyはどちらを呼び出すべきかをどう判断するのでしょう?そもそも、そのメソッドはどこに定義されているのでしょうか? Rubyには、呼び出すべき正しいメソッドを決定し、該当するメソッドが見つからない場合に「NoMethodError」を返すタイミングを判断するための、明確な「仕組み」が備わっています。この仕組みこそが「Rubyメソッドルックアップパス(Method Lookup Path)」と呼ばれるものです。 本記事では、Rubyのメソッドルックアップについて詳しく掘り下げます。読み終える
-
RBS徹底解説:Rubyの新しい型定義言語を理解する
RBSは、Ruby向けに新しく設計された型定義構文のフォーマット言語です。RBSを使うと、.rbsという新しい拡張子を持つファイルに型注釈を記述できます。記述例は以下の通りです。 class MyClass def my_method : (my_param: String) -> String end RBSで型注釈を提供することにより、次のようなメリットが得られます。 コードベースの構造をクリーンかつ簡潔に定義できる。 クラス本体を直接変更せずに済むため、レガシーコードへより安全に型を導入できる。 静的・動的な型チェッカーとの普遍的な統合が期待できる。 メソッドオーバーロード
-
Rubyで新しいプログラミング言語を作る:インタプリタ編
GitHubで完全なソースコードを公開中 Stoffleプログラミング言語の完全な実装はGitHubで公開しています。バグを見つけたり、疑問点がある場合は、ぜひIssueを立ててください。 この記事では、Rubyだけで作られたおもちゃのプログラミング言語「Stoffle」のインタプリタ実装を始めます。このプロジェクトについては、シリーズ第1回目の記事で詳しく紹介しているので、まだ読んでいない方はそちらもチェックしてみてください。 今回構築するのは、いわゆる「ツリーを辿るインタプリタ(tree-walk interpreter)」と呼ばれるものです。前回の記事では、フラットなトークンの
-
Railsのセキュリティ脅威に立ち向かう:認証と機密データ露出への対策
本シリーズの第1回では、インジェクション攻撃について解説しました。 OWASP Top 10 Webアプリケーションセキュリティリスクをテーマにした本シリーズの第2回となる今回は、認証の不備と機密データの露出という脅威の世界を深く掘り下げていきます。 具体的には、ハッカーがどれほど簡単にあなたが書いたコードを欺き、ユーザーのデータを盗み出すことができるのか、以下のような攻撃手法を見ていきます。 ユーザー列挙(User Enumeration):ログインページを悪用し、候補となるユーザー名のリストを総当たりで試して、データベース内にそのユーザーが存在するかどうかを確認する攻撃。 弱いパスワード