「Ruby」の記事一覧
-
Ruby 3.5で高速化されたオブジェクト生成
2025-05-22 14:01
IT・ネットRuby 3.5では、オブジェクトの生成速度が大幅に向上し、特にキーワード引数を使う場合で最大6.5倍の高速化が確認されました。これはClass#newをインライン化し、C関数呼び出し時のパラメータ変換やスタック操作のオーバーヘッドを削減したことが要因です。RubyとYJITの双方でベンチマークが行われ、特にYJIT有効時に効果が大きいことが判明しました。Ruby開発者にとって大きなパフォーマンス改善となる見込みです。
-
RubyにおけるBlock・Proc・Lambdaの違いを徹底解説
2025-05-18 18:34
IT・ネットRuby言語においてコードのグループ化に使われるBlock、Proc、Lambdaにはそれぞれ異なる特徴があります。Blockはメソッド呼び出しの構文としてのみ使用され、ProcとLambdaはどちらもProcオブジェクトですが、引数の扱いやreturnの挙動に違いがあります。例えば、Lambdaは引数の数を厳密にチェックし、Procは緩やかに扱います。また、returnの作用範囲も異なり、コードの制御フローに影響を与える点で注意が必要です。
-
Rubyの並行処理を理解する:プロセスからFiberまで
2025-05-15 13:56
科学・技術Rubyは並行・並列処理のために複数の機構を備えています。プロセスは完全に独立したメモリ空間を持ち、RactorはRuby 3で導入されたメッセージベースの並列処理を実現する仕組みです。Threadは軽量ですが、GILの制約で同時に1スレッドしか実行できません。Fiberはさらに軽量な非同期処理の単位で、明示的な制御が必要です。用途や目的に応じて、適切なレベルの並行処理を選ぶことがRuby開発では重要です。
-
94行のRubyで作るコード編集エージェント
2025-05-14 14:17
IT・ネットこの記事では、AIによるコード編集エージェントをわずか94行のRubyで構築する手法が紹介されています。ファイルの読み取り、一覧表示、編集など3つのツールをLLMに接続し、簡単なチャットループで実装。さらにシェルコマンドの実行機能も追加し、テストの自動実行も可能にしました。RubyとRubyLLMの親和性により、シンプルかつ拡張性の高いエージェントが完成。ソースコードはGitHub上で公開され、誰でも自由に試すことができます。
-
Rubyに仮想名前空間を導入する新提案
2025-05-12 13:39
科学・技術Rubyに新たに提案された「openNamespace on read」は、名前の競合やグローバル汚染を避けるために、読み込み時に仮想名前空間を作成してコードを隔離できる機能です。この提案により、異なるライブラリで同一の定数名を使用しても衝突せず、複数バージョンのgemの同時利用も可能になります。各名前空間は独立しており、グローバル変数やクラスの状態も分離されます。現在は環境変数を用いた実験的機能として提供されており、今後正式採用に向けた議論が進んでいます。
-
Sorbetの型構文の過去・現在・未来
2025-05-09 16:09
IT・ネットRuby用型チェッカーSorbetの構文は冗長で馴染みにくいとの声が多くありますが、本稿ではその歴史的背景や設計上の制約、そして将来的な改善案についてStripe開発者が解説しています。Sorbetは社内の強い要望から誕生し、型安全性と可読性を両立するために現在のDSL形式を採用しました。提案として、より簡潔な構文やRuby本体でのRBSコメントの公式サポートなどが挙げられ、Ruby型エコシステムの今後に期待が寄せられています。
-
Ruby製GUIフレームワーク「Hokusai」
2025-05-09 16:01
IT・ネットHokusaiは、Rubyでデスクトップアプリケーションを構築するためのバックエンド非依存のリアクティブUIフレームワークです。RaylibやSDL2をバックエンドとして選べるほか、xmakeを使用してビルド管理を行い、tree-sitterによるテンプレート解析やMarkdown対応も備えています。簡潔な構文と再利用可能なUIブロック設計により、効率的にGUIアプリを開発できます。オープンソースでPeer Production Licenseのもと公開されています。
-
Rails 8に登場したSolid Queueの仕組みと利点
2025-05-08 07:58
IT・ネットSolid Queueは、Ruby on Rails 8に新たに導入されたデフォルトのバックグラウンドジョブ処理ライブラリで、Redisなどの外部依存を排除し、データベースのみで動作します。37Signalsが開発し、既存のResqueやSidekiqに代わる選択肢として設計されました。ジョブのエンキューやワーカーによる処理、データベーステーブルの構成、フォールトトレランスの仕組みなどが詳細に解説され、パフォーマンスと安全性を両立したアーキテクチャが特徴です。
-
Rubyの正規表現エンジンを高速化する選択肢とは
2025-05-02 00:00
IT・ネットSerpApiが抱えるデータ抽出の課題を背景に、Rubyの正規表現エンジン「Onigmo」のパフォーマンスを改善する代替エンジンとして、Googleのre2やRustのregexが比較検証されました。ベンチマークでは、特にUnicodeや大規模データ、ReDoS耐性の面でRust製エンジンが最も優秀とされ、次いでre2、最下位がRubyとなりました。一方でre2はUnicodeへの対応が不十分であることも判明しました。
-
JRubyとJFreeChartで手軽に美しいチャートを作成
2025-04-30 20:30
IT・ネットJRubyを使えば、Javaの強力なグラフライブラリJFreeChartをRubyコードから簡単に利用できます。JFreeChartは多彩なチャート形式と豊富な描画オプションを提供し、リアルタイム更新にも対応しています。JRubyのJava統合機能により、Javaコードを書くことなく、JFreeChartの機能をRubyで活用できます。記事では、bar chartやpie chartの作成方法、jar-dependenciesを使ったライブラリの導入手順などが紹介されています。