しかし、RSpecの2.xより古いリリースとの後方互換性を保つために必要な諸々の問題が限界点に達しました。*1
but we’ve reached a point where RSpec has a fair bit of cruft stemming from the need to retain backwards compatibility with older 2.x releases.
いまのままでも差し支えないと思います(footnoteを取ってしまって良さそう)。
"RSpecの2.xより古いリリースとの後方互換性を保つために残しているひどいコードの蓄積は限界点に達しています。"
みたいな意味合いだと読みました。
私は「とりのぞくことはないよ」とはいいませんが(未来について誰が知っているの?)*2
While I won’t say “never” (who knows what the future holds?)
こちらも、footnoteは取ってしまってよいのではないでしょうか。意味合いとしては:
"私は「絶対に取り除くことはない」とは言いませんが(未来のことは誰にもわかりません)"
って感じなので。対応する諺らしい「一寸先は闇」にしちゃうと、ちょっとニュアンスが違ってくるように思えます。
長々と書いていますが、upgrade pathのところ以外は致命的ではないと思います。 upgrade pathのところは日本語訳しか読まない人には誤解されるかもしれないなあと思ったので、 コメントしてみました。
None of this is set in stone, of course,
もちろん、ここに書かれていないことはRSpec3でも変わることはないでしょう。
訳文は意味が逆になってます。意味合いとしては、私が書くと冗長になるのですが:
"もちろん、ここに書かれているものの中に、既に確定していて絶対に変えらないようなトピックはありません。"
といった意味合いです。これを踏まえて後ろの文章に続いてます。結局、使ってくれるユーザーがあってこそのRSpecプロジェクトだから、思うところがあれば、是非聞かせてほしい、と(必要だったら計画も変えますよ、という意味合い)。
while rspec has been moving away from its should-based syntax, the matcher protocol and custom matcher api have not changed accordingly.
rspecがshouldベースの記法から遠ざかっている間、マッチャープロトコルとカスタムマッチャーapiはそれに沿って変更されてきませんでした。
いまのままでも間違いというわけではないのですが、このwhileはexpectationの書き方の変更とマッチャー方面との設計変更の度合いの齟齬を対比させていると思います。
"RSpecはshouldベースの記法からやり方を変えていってますが、その一方でマッチャープロトコルとカスタムマッチャーのAPIはその変更に追従していませんでした。"
みたいな感じかなあ、と思いました。
このセクションでは利用者がRspec2から3へアップグレードするための道筋を示しています。最初の箇条書きは、RSpec 2.99がRSpec 2.14 + warningsであることを説明しており、2番目の箇条書きで、2.99は利用者の書いた2.xのテストコード一式(test suite)がそのまま動作するはずだということを説明しています。最後の3番目の箇条書きで、2.xユーザーは、2.99にそのままupgradeできるはずだから、そこで出るwarningを消せば3.0レディなテストコード一式になるよ、という話の流れです。ちょっと意訳っぽくなって恐縮ですが:
You should be able to take your existing RSpec 2.x test suite and upgrade to 2.99 without needing to make any changes.
これから先も、あなたは既存のRSpec 2.xでテストを実行することが出来、何も変更を加えずに2.99にアップグレードすることが出来ます。
- "RSpec 2.xで書かれた既存のテストコード一式は何の変更も加えずに2.99にアップグレードできるので、2.99であなたのテストコード一式を実行してください。"
これを踏まえて、upgrade pathとして3番目で大事なことを明示すると:
RSpec 2.99 will give you deprecation notices for anything we’re removing or somehow breaking in 3.0. You should address those warnings. Once you’re warning-free on 2.99, you should be able to upgrade to 3.0 without needing to make any further changes.
RSpec 2.99はあなたに3.0では快適な変更が加わる全てのことについてdeprecationの通知を出します。 あなたはどこでこの警告が出てるか分かります。 あなたが2.99を使っても警告がでないようになったら、何も変更を加えずに3.0にアップグレードすることが出来ます。
- "RSpec 2.99は、3.0で取り除かれたり壊れてしまう変更点の警告を出しますから、この警告に対応してください。2.99で警告が出なくなったら、そこからは何も変更を加えることなく3.0にアップグレードできます。"
という感じの内容になると思います。この流れでいくと、箇条書の後の本文も:
The 2.99 release will be an important step that shouldn’t be skipped in the upgrade process.
2.99リリースは重要なステップなので、アップグレードするためにはこのステップを省略することは出来ないでしょう。
"2.99は重要なステップなので、3.0へのアップグレード手順としては省略しないでください。"
と強めに言ってもいいかなあ、と思います。
I won’t venture a guess for when we might release RSpec 3.
私はいつごろRSpec 3をリリース出来るかについて冒険的な予想は出来ません。
細かい話ですが、これはそもそも予想しないよ、と言っているので:
"RSpec3のリリースがいつ頃になるかを予想するような危険を冒すのはやめておきます。"
みたいな意味合いですね。
Users have invested in code that uses the old syntax for many years, and while we recommend using the new syntax (particularly for new projects), we’d be doing users a disservice to remove the old syntax anytime soon. It’s also not a significant maintenance burden.
ユーザーは長年にわたり、古い記法でコードを書いてきました、 我々が古い記法を今すぐ取り除こうとするのはユーザーにとってひどく不親切です。 また、古い記法をサポートするのにメンテナンス上の大きな負担はありません。
"ユーザーは長年にわたり、古い記法でコードを書いてきました。私たちは(新規プロジェクトなら尚のこと)新しい記法を使うことを推奨していますが、かといって今すぐ古い記法を取り除いてしまうことはユーザーにとって非常に不親切です。それに、古い記法のサポートのメンテナンスはものすごく大変というわけでもありません。"
"また、我々はmainオブジェクトとModuleのトップレベルDSLメソッド..."の前にある
As discussed above, we’ll be removing RSpec’s monkey-patched Kernel#debugger in 3.0.
が訳し漏れてました。無くても話は通じるので敢えて省いてらっしゃるのかもしれませんが……。
- bufix → bugfix
以上です。参考になれば幸いです。