SlideShare a Scribd company logo
1 of 30
Download to read offline
Ruby リファレンスマニュアル改善計画
2022 進捗報告
Kazuhiro NISHIYAMA
株式会社Ruby開発
第90回 Ruby関西 勉強会
2023-03-25
Powered by Rabbit 3.0.1
self.introduction
西山 和広
Ruby のコミッター
twitter, github など: @znz
株式会社Ruby開発 www.ruby-dev.jp
1/29
agenda
るりまについて
Ruby リファレンスマニュアル改善計画 2022 について
歴史
目標
2/29
What is rurema (るりま)?
Japanese Ruby reference manual
Rubyリファレンスマニュアル刷新計画
https://github.com/rurema
rurema/doctree
ドキュメント
rurema/bitclust
独自のドキュメントシステム
3/29
るりま != るびま
Rubyist Magazine
https://magazine.rubyist.net/
https://github.com/rubima
似ているけど無関係
FAQより
Q. るびま、って「ネギま!」のぱくりですか?
A. 違います。多分。「るびま」を考えた人たちは「ネギま!」
を知りませんでした (または、言われるまで気付かなかった)。
4/29
Ruby リファレンスマニュアル改善計画
2022 とは?
Ruby リファレンスマニュアル を Markdown 記法に対応させる計
画
5/29
現状の予定
bitclust に Markdown 対応を追加
doctree でいくつかのドキュメントを Markdown で書いてみる
(現状は上2点の途中)
問題点をみつけて直しつつ、既存のドキュメントも移行してい
く
RD のドキュメントを削除して bitclust からも RD 対応を削除し
て移行完了
6/29
Markdown 変換の進捗
簡単なサンプルを作成して実現可能性を検証
kramdown-parser-gfm でほぼ RD と同じように変換可能
分割処理を RD から流用
→ code block の中のコメントを見出しと誤認識する問題発生
実現可能性の検証用実装を捨てて Kramdown のパース結果を利
用するように作り直し中
7/29
歴史
なぜこういう状況なのかという歴史の話
8/29
るりまより前
Ruby 1.4.6 以前
https://ftp.ruby-lang.org/pub/ruby/doc/
ドキュメントは RD で書かれていた
English: ruby-man-1.4.6.tar.gz
Japanese: ruby-man-1.4.6-jp.tar.gz
(中の HTML ファイルは iso-2022-jp なので文字化けに注意)
Ruby 1.6 から 1.8 の時代
RWiki で編集・公開
RWiki はいくつかの拡張機能つきの RD を使った Wiki
9/29
るりまが始まった頃
Ruby 1.8 時代
Rubyリファレンスマニュアル刷新計画が開始
bitclust という RD ベースの独自記法のシステム
bitclust は RDtool (https://rubygems.org/gems/rdtool) を使っていな
い
RWiki で編集していたドキュメントを取り込んだ
10/29
ドキュメントのライセンス
RWiki の編集フォームにライセンスの変更手順を書いておいた
(freeml の rubyist ML での合意で変更可能とした)
Creative Commons — Attribution 3.0 Unported に変更
https://github.com/rurema/doctree/blob/master/refm/doc/
license.rd
11/29
bitclust 時代になってからの改善点
EUC-JP から UTF-8 に
コードの色付け (#@samplecode)
#@ で始まる行はプリプロセッサ
chm, ePub に出力可能
あまり使われていないので動かない可能性あり
デフォルトは静的HTML (docs.ruby-lang.orgもこれ)
12/29
るりまプロジェクトの現状
ドキュメント改善のサブプロジェクト
Rubyの新しいバージョン対応
https://rurema-review.connpass.com/
13/29
ドキュメント改善ノサブプロジェクト
https://github.com/rurema/doctree/issues/433
コピペ可能なサンプルコードを整備する
サンプルコードの色付け
→ ほとんど完了したからか現在はほぼ停止中
14/29
Rubyの新しいバージョン対応
そこそこ対応
メソッドの変更 (追加、引数や機能の変更、削除)
ほとんど対応できていない
文法の変更 (パターンマッチ, &., …)
どこに書けばいいのかはっきりしていない
15/29
rurema-review
https://rurema-review.connpass.com/
毎週火曜の夜
るりまレビュー会 → るりまもくもく会
鹿児島Ruby会議01をきっかけに開始
たくさんの pull request をマージ
→ 現在は活動できている人がいない
16/29
協力者募集
こういう状況なので協力者を増やしたい
GitHub issues や ruby-jp slack の #rurema
https://github.com/rurema/doctree/issues
https://ruby-jp.github.io/
17/29
目標
短期目標
中期目標
長期目標
18/29
RD ベース → Markdown ベース
最重要短期目標
RD より Markdown の方が馴染みがある人が多い
貢献してくれる人が増えるはず
Ruby リファレンスマニュアル改善計画 2022 で作業開始
19/29
現在の記法
#@ はプリプロセッサ要の行
--- は RD の MethodList
#@since 3.1
--- intersect?(other) -> bool
other と共通の要素が少なくとも1個あれば true を、なければ false を返します。
#@samplecode 例
a = [ 1, 2, 3 ]
b = [ 3, 4, 5 ]
c = [ 5, 6, 7 ]
a.intersect?(b) # => true
a.intersect?(c) # => false
#@end
#@end
20/29
プリプロセッサの移行
バージョン分岐や include など
エディタや GitHub.com でのサポートも気にしたい
→ Jekyll でも使われている Liquid を採用
21/29
MethodList
MethodList の代用案
現在の記法は def m(args) ベース
ブロックの書き方は揺れがある
{|x| ... }, {|x| block }, &block
返り値は書いてあるが有効活用はあまりされていない
22/29
MethodList の移行
### def m(args) -> nil 形式
最初は単純に既存の記法を Markdown にするだけ
将来は RBS 形式もサポート予定
23/29
他の記法
#@samplecode → code block
リンク
[[c:String]] → [c:String]
Markdown の記法に合わせて [] が1段減る
細かい問題は臨機応変に対応予定
24/29
他の短期目標と問題
使われていないファイルや古いファイルの削除
ChangeLog, setup.rb, …
tools のファイルがまだ使えるかどうかはっきりしない
使い方のドキュメント不足
これが最重要の課題
再現可能なビルド
container? devcontainer?
25/29
中期目標(他のツールとの連携)
RBS連携
例: signatures の連携
IRB連携
rdoc の代わりに rurema を表示したい
26/29
中期目標(ドキュメント)
WASMでサンプルコードを実行可能にしたい
hanachin さんが試したものがある https://github.com/hanachin/bitclust/
commit/1ae60bfabd09c0d241e6966a6800e27a797ce175 https://
github.com/rurema/doctree/issues/2730
標準添付から外れたライブラリや古いドキュメントの整理
いくつかは https://github.com/rurema/historical-documents に移動済
27/29
長期目標
I18n 対応
rdoc と ruerema は記法だけに限らず、ドキュメントの書き方が違いすぎて
統一しにくい
gettext か何かを使う?
英語ベースの方が良さそうなので遠い将来の夢になりそう
28/29
end
RD から Markdown への移行開始中
進捗があれば github や slack で報告予定
ご協力よろしくお願いします
29/29
Powered by Rabbit 3.0.1

More Related Content

Similar to Ruby リファレンスマニュアル改善計画 2022 進捗報告

Ruby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDDRuby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDDYasutomo Uemori
 
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くRubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くMisao X
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05yamanekko
 
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜宏治 高尾
 
Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...
Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...
Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...Yoshinori Kobayashi
 
RubySeminar16_Analyze
RubySeminar16_AnalyzeRubySeminar16_Analyze
RubySeminar16_Analyzesady_nitro
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And JekyllYoji Shidara
 
Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Yutaka Tachibana
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係sady_nitro
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会Masaya Konishi
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介三七男 山本
 
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxTomoya Kawanishi
 
Rubyボードハンズオン
RubyボードハンズオンRubyボードハンズオン
Rubyボードハンズオン三七男 山本
 
るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。Sho Hashimoto
 
jupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフjupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフKoichi Shimozono
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活をRyunosuke SATO
 

Similar to Ruby リファレンスマニュアル改善計画 2022 進捗報告 (20)

Ruby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDDRuby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDD
 
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くRubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05
 
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
 
Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...
Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...
Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ...
 
RubySeminar16_Analyze
RubySeminar16_AnalyzeRubySeminar16_Analyze
RubySeminar16_Analyze
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係
 
さくルビー.Net誕生
さくルビー.Net誕生さくルビー.Net誕生
さくルビー.Net誕生
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
 
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise Linux
 
Rubyボードハンズオン
RubyボードハンズオンRubyボードハンズオン
Rubyボードハンズオン
 
るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。
 
jupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフjupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフ
 
Railsの今昔
Railsの今昔Railsの今昔
Railsの今昔
 
Rubyな日々
Rubyな日々Rubyな日々
Rubyな日々
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活を
 
Ruby svn to git
Ruby svn to gitRuby svn to git
Ruby svn to git
 

More from Kazuhiro Nishiyama

lilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げたlilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げたKazuhiro Nishiyama
 
小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話Kazuhiro Nishiyama
 
rubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdfrubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdfKazuhiro Nishiyama
 
qemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたqemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたKazuhiro Nishiyama
 
workflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるworkflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるKazuhiro Nishiyama
 
あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能Kazuhiro Nishiyama
 
チャットボットのススメ
チャットボットのススメチャットボットのススメ
チャットボットのススメKazuhiro Nishiyama
 
Action Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたAction Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたKazuhiro Nishiyama
 
最近のrubyのインストール方法
最近のrubyのインストール方法最近のrubyのインストール方法
最近のrubyのインストール方法Kazuhiro Nishiyama
 
systemdでよく使うサブコマンド
systemdでよく使うサブコマンドsystemdでよく使うサブコマンド
systemdでよく使うサブコマンドKazuhiro Nishiyama
 
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話Kazuhiro Nishiyama
 
boot2docker の format-me の話
boot2docker の format-me の話boot2docker の format-me の話
boot2docker の format-me の話Kazuhiro Nishiyama
 

More from Kazuhiro Nishiyama (20)

lilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げたlilo.linux.or.jp を buster から bullseye に上げた
lilo.linux.or.jp を buster から bullseye に上げた
 
小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話小規模個人アプリをRails 7.xにバージョンアップした話
小規模個人アプリをRails 7.xにバージョンアップした話
 
rubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdfrubykaigi2022-rurema-history-and-future.pdf
rubykaigi2022-rurema-history-and-future.pdf
 
qemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみたqemuのriscv64にDebianを入れてみた
qemuのriscv64にDebianを入れてみた
 
systemd 再入門
systemd 再入門systemd 再入門
systemd 再入門
 
Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
 
livedoor天気API終了対応
livedoor天気API終了対応livedoor天気API終了対応
livedoor天気API終了対応
 
Wireguard 実践入門
Wireguard 実践入門Wireguard 実践入門
Wireguard 実践入門
 
workflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考えるworkflow,job,step の使い分けの基準を考える
workflow,job,step の使い分けの基準を考える
 
あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能あまり知られていないRubyの便利機能
あまり知られていないRubyの便利機能
 
チャットボットのススメ
チャットボットのススメチャットボットのススメ
チャットボットのススメ
 
Dokku の紹介
Dokku の紹介Dokku の紹介
Dokku の紹介
 
Action Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみたAction Cableで簡易チャットを作ってみた
Action Cableで簡易チャットを作ってみた
 
Ruby 2.6 Update
Ruby 2.6 UpdateRuby 2.6 Update
Ruby 2.6 Update
 
最近のrubyのインストール方法
最近のrubyのインストール方法最近のrubyのインストール方法
最近のrubyのインストール方法
 
Language update 2018 - ruby
Language update 2018 - rubyLanguage update 2018 - ruby
Language update 2018 - ruby
 
systemdでよく使うサブコマンド
systemdでよく使うサブコマンドsystemdでよく使うサブコマンド
systemdでよく使うサブコマンド
 
Certificate Transparency
Certificate TransparencyCertificate Transparency
Certificate Transparency
 
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
 
boot2docker の format-me の話
boot2docker の format-me の話boot2docker の format-me の話
boot2docker の format-me の話
 

Ruby リファレンスマニュアル改善計画 2022 進捗報告