今年はもう少しまじめにWebフレームワークというものを勉強しようと考えました。
Railsは私にはちょっと敷居が高いので、軽量WebフレームワークであるSinatraを理解することに決めました。今までにSinatraを使ったことは何度かありますがSinatraを知っているとはいえない状況でした。
理解のために、まずは公式サイトのドキュメントを読むことにしました。
サイトのトップにはプロジェクトのREADME
が掲載されており、そのページを開くと実に9000ワード3000行にも及ぶ、充実した内容の機能解説が目に飛び込んできました。
その分量に圧倒されながらも、ページのヘッダ部分をよく見ると他言語によるREADMEへのリンクが張られていることに気づきました。そして有難いことに、その中には日本語版が含まれていました。
迷うことなく私は日本語版のページを開きました。そして愕然としました。
SinatraはDSLには違いありませんが、それとイコールではあり得ません。原文を確認してみると、果たして次のような正しい説明になっていました。
Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort:
アップデートの過程で誤ってテキストを誰かが落としてしまったのでしょう。文頭の大切な一文にも拘らず、これが長い間放置されていたようです。翻訳文にはコミッタによるチェック機能が働かないのです。
加えて、日本語版の解説は原文に相当期間追随していないということがわかりました。調べてみると、細かい追加・修正は途中で何度かなされているものの、オリジナルの文章は2010年10月にアップデートされたバージョン1.0のものに対する解説、つまり3年以上も前に書かれたものだということが分かりました(最新バージョンは1.4)。
これらの出来事に私は少なからずショックを受けました。
ご存知のように、SinatraはRuby製のWebフレームワークにおいてRailsに次ぐ人気を誇るライブラリです。現在のGithubにおいてスターの数は5509であり、939のForkが存在し、193人のコントリビュータがいて、現在も活発にアップデートが続けられています。日本人ユーザも相当数が存在すると思われます。そのようなプロジェクトにおいて、3年以上も日本語ドキュメントのアップデートが放置されていたのです!
この事実つまり開発者とユーザとの間の深い溝あるいは言語の壁の問題の深さを痛感しうなだれていると、一条の光が差し込みそこにステージがこつ然と映し出されました。そしてステージ上には若く美しいスーパーヒーローが立っており、私に向いてやさしく微笑みかけながらこう言ったのです。
「I’m waiting for you.」
「 君を待ってたんだ。」
こうして私はsinatra/README.jp.md
のアップデートに取り掛かったのです。
技術力・翻訳力に不足する私には翻訳作業はかならずしも楽ではありませんでしたが、これがまずはSinatraの全体像を把握する最善の道ともなりました。不足する記述の追加だけでなく、既訳の修正、形式の統一などを行った結果、README.jp.md
に対し1933件の追加、552件の削除を実施しました。
「GitHubへpull requestする際のベストプラクティス - hnwの日記」に従い、本家をcloneして専用ブランチで作業を行いそれをまとめて1件のpull requestを出しました。
数時間もするとメインコントリビュータのrkh (Konstantin Haase)からmergeしたのと通知を受けました。Pull Requestのページを開いてみると果たしてそこにはmergeしたとの事実だけではなく、彼の気持ちも示されていました。
Update README.jp.md as a whole by melborne · Pull Request #832 · sinatra/sinatra
今私は面識のない外国美少年からの突然の愛の告白に当惑していますが、pull requestをするというのはそういう意味つまり「私をプルして!」という意味だと悟ったのです。
もしあなたに愛が必要なら、お気に入りのオープンソースプロジェクトに是非ともPull Requestを投げてみてください。あなたの心は愛で満たされるはずです。
マージされたREADME.ja.md
のリンクを貼っておきます。
前述のとおり訳文に対しては開発者側のチェック機能は働いていないと思われます。よって、私の力不足によりドキュメントにはケアレスなミス、意味不明の解説、深刻な誤訳が含まれている可能性があります。このような問題に気づかれましたら、本家にプルリクするか、それが手間であれば私に連絡くだされば可能な限り対応します。
なお、上記ドキュメントはその変更点が多いためGithub上で差分表示ができません。差分は以下で確認できます。
(追記:2014-1-26) README.jp.md
=> README.ja.md
への変更がマージされたのでリンク先を修正。
=== Ruby関連電子書籍100円〜で好評発売中! ===
blog comments powered by Disqus