Ruby: ありそうでなかったRubyリファレンスの決定版を作った(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Missing Ruby Reference 原文公開日: 2018/04/06 著者: zverok 日本語タイトルは内容に即したものにしました。 rubyreferences.github.ioより Ruby: ありそうでなかったRubyリファレンスの決定版を作った(翻訳) プログラミングを学習している知人とか、新しい言語に乗り換えようとしている友人からこんなことを聞かれたと想像してみてください。 そうね、Rubyやってみるわ。チェックしたいから取りあえず言語のリファレンス投げてもらえる?なお「はじめての何とか」みたいな教科書とか、Amazonに5年も前からあるような書籍のリンクとかはなしで。とにかく真っ当なリファレンスよろ。 さあ、あなたならこんなとき何と返答しますか? どうしたらよいか考えてみましょう。 公式サイトには何と書いてあるでしょうか?Documentationセクションには有用なリソースがぎっしり掲載されています(とはいうものの「Getting Started」セクションに載っている一押しマニュアルの中に『Why’s (Poignant) Guide to Ruby』があるのはちょっと何だかなぁという感じです: 本書にはみんなの大好きな小技がたっぷり詰まっていますが、言語の正当な紹介とはまるで違います)。 しかし、同リンク集には小さいながら問題が1つあります。最新かつ網羅的かつ無償かつ公式の言語リファレンスがこのリンク集のどこにも見当たらないのです。 ここから選択可能な道は次のとおりです。 The first version of Programming Rubyは、Ruby 1.6だけが対象です。 Ruby User’s Guideは初期にMatz自らがしたためたもので、短いにもかかわらず有用です。私の推測する限りでは、少なくともRuby 2.1の頃までは更新されています。 Collaborative Wikibookは有用な一面もあるのですが、定数の項が「工事中」というのがWikiらしい点です。 Ruby Core Referenceは、まさしくリファレンスですが、その、何というか、ナビゲーション周りでもう一息頑張って欲しい感じです。特にRubyが初めての人のためにも。 ではここで、他の言語のリファレンスがどんな感じか見てみましょう。 Python PHP Elixir: 言語と標準ライブラリ Crystal Rust このぐらいリストアップすればよいでしょうか。 さてRubyはどんな感じでしょう?思い起こせば2000年、私がRubyに乗り換えた頃は、Pragmatic Programmersシリーズの『Programming Ruby』が主なリファレンスでした。これをおすすめする手もないわけではありませんが、もう新しくありません(残念ながら最新版はRuby 1.9と2.0のみが対象です)し、さらに、同書は有料のPDFまたは紙の書籍として入手する方法しかありません。少なくとも、メインの言語リファレンスとして使うには最適とは言えません。 これ以上はくどくど申しません。そこで、「言語リファレンスのリンク、欲しいー」と尋ねられたときに私からすっとお渡しできるリファレンスを今ここにご紹介いたします。 The Ruby Reference 同リファレンスの理念とは、リファレンスは次の要件を満たすべきだというものです。 すべてを網羅していること: 言語/コアクラス/標準ライブラリのあらゆる側面を盛り込む ギャップがないこと: シンプルな概念から高度な開発テクニックまで、上から順に迷いなく読み進められる 実用的であること: 最新バージョンのRubyに対応する アクセスしやすいこと: PC/スマホを問わず、検索/ナビゲーションを楽に行える これらの目標を達成する際に、かのフランケンシュタイン博士の「ツギハギ工法」をかたじけなくも使わせていただきました。同リファレンスは、以下を「縫い合わせる」形で制作されました。 ソースリポジトリ内のRDocドキュメント www.ruby-lang.orgサイトのページを少々 ギャップを埋めるためにコンテンツの一部を独自に追加(Rubyのコメントの書き方について公式のリファレンスが存在しないことをご存知ですか?) 有用な情報のみを切り取って縫い合わせ、上から下まで楽々読み進められる端正な書籍としてまとめるための設定を山ほど行った このようにして、Rubyのバージョンが新しくなるたびに同リファレンスも簡単に更新できます(コンテンツのほとんどはRuby自身やRubyのサイトから抽出したものであり、残りの追加部分はわずかです)。そんなわけで、同リファレンスはほぼほぼ公式に近いものになりました。 同リファレンスは最初の(ドラフト)リリースであり、皆さまからのご意見やお手伝いを心よりお待ち申し上げております ウクライナの某氏が書いてくださった「カスタムコンテンツ」部分は、おそらく手を加える余地がかなりあるかもしれません。 コンテンツをインポートするスクリプトも改良の余地がありそうです(RDoc=>Markdownフォーマットが正しく変換されていない部分もあります)。 同リファレンスの構成についてもレビューと安定化が必要です(今後Ruby言語のバージョンが新しくなった場合でもURLが変わらないのが望ましい)。 そしてたぶん、同リファレンスのアイデア全般について、もう少し議論や検証が必要でしょう。 以上です。 関連記事 Ruby: 「マジック」と呼ぶのをやめよう(翻訳) Ruby 2.5の`yield_self`が想像以上に何だかスゴい件について(翻訳)