Hatena::ブログ(Diary)

アセトアミノフェンの気ままな日常

2016-06-29

新しい pLaTeX がアレすぎて嘆息してみる(続き)

前回の続き)

ようやく方針を議論する流れへ?

さすがにバグレポートが多すぎるので、forum:1954 から脱線しつつ

一方で,どこまでコミュニティ版 pLaTeX での改変を許容するのかも議論しどころです.アクセントの変更時のように,改変は即エンバグにつながりますので.LuaTeX-ja は,LuaTeX 本体もベータなんだからこれもベータなんだ,と言っておけばよいですが,pLaTeX は利用者が多いので,バグの影響も大きいです.stable / unstable の区分があればよいのですが…….分けても unstable を試す人が少なくてあんまり意味ないのかな.

という話題になった。これがどこに収束するか、というのはまだわからない。

以下、いま自分が思っていること:

理想は「バグを入れないこと」

本来、バグを入れないように努力するのが理想である。これは間違いなく正論である。しかし、ここに一つ大きな課題が生じる:

ありうるすべての場合を、テストケースとして列挙することは可能か?

バグを入れないためには、該当部分が絡むあらゆる原稿 tex ファイルを想定してコードを書く能力が必要である。そして、それが正しいかどうかテストしなければならない。しかし、少なくとも僕には必要十分なテストケースを作るのは難しすぎる。とりあえず動いていそうなコードくらいなら書けても、すぐにボロが出てしまう。「バグがないことの証明」は悪魔の証明とも匹敵する難易度だろうと思う。



絶対にコケないナントカ」も、落ちるときは落ちるのだ。

でも無理なので現実的な打開策を

そうなると、大勢で片っ端からテストしてみてボロが出ないか見つける作戦が「現実的」だろう。この作戦では、参加者数がカギとなる。そのために

  • いかにテストの手間を取らせないか
  • いかにテストを誰でも簡単に試せるものにするか

これらの課題をいかに解決するか考えることこそが、“もっとバグを出さないようにする努力” だと僕は思う。どうせ悪魔の証明は自分にはできないのだから。そして、考えることと並んで、告知することも大事だと思う。

そして、僕が出したのは「実験用コードをパッケージ (sty) に抜き出して TeX Live と一緒に配布する案」である*1。もちろん、sty なので本来の pLaTeX のような「dtx → ltx にストリップしてフォーマットを作る」の “まんま同じもの” ではないし、後に sty の実験コードを本体に採用することになったときにインポートする作業でバグが生じないとも限らない(これも悪魔の証明*2)。それでも、「限られた人にしかテストしてもらえない*3がゆえにバグが見つからない」よりは、よほど生産的なバグ発見に結びつくと思う。これがベストかどうか自信はないが、ともかくもいまは既に報告された深刻なバグを一刻も早く解消することが先決だと信じて、残り数日間は行動しようと考えている*4

おまけ

残念というべきか、時代の流れというべきか

TeX 言語に詳しい人ほど pLaTeX から離れている

ように僕にはみえる。いま、どんどんエキスパートユーザほど LuaTeX のような “新しいもの” に興味の対象が移っていて、pLaTeX を使う機会が減っているようである*5。これを加味すると、ますます「テストしてもいいよ!」という人のサポートに回るほうが有利だと思うのだが…いかがだろう。

最後に:「バグ入れないこと」より「バグ入れてしまった場合に早く対処すること」のほうが大事だし、努力による実現可能性も高い、と僕は思う。そして「早く対処する」ために、「なんでもいいから明確な案を出すこと」(ベストでなくても構わない)が必要な場面は多い、と思う。そういいながら、こういう場面に自分は慣れていないのだけど。

例によって誤解のないように:ブログで自己主張しているだけ、と思われるかもしれないが、確かにその一面は認める。でも、ここは僕にとって、あくまで個人の試行錯誤を書くための場所・あとから過去の自分を確認するための場所である(読んでもらうための場所=メインブログは別にある!)ことを、読者の方々にはどうかご承知おきいただきたい。

*1:その実装に先日解説したとおりの変な技法を使った。

*2:とはいえ、ここでバグが生じる場合は「フォーマットより後にコードパッチを読めば OK なのに、フォーマットの途中にコードがあると NG」なのだから、最悪「なるべく後ろの方にコードを入れ直す(≒ plpatch.ltx を復活させる)」で OK にできて、大した問題は起きないに違いない。

*3:“まんま同じもの” = TeX Live に入れて共存させることは不可能、すなわち GitHub に取りにきてもらわなければならない。しかもフォーマット生成も要求してしまうため、あまり親切とは言えないと僕は思う。

*4:次のリリースが出れば、しばらくは stable だろうと思う。実験用コードが安全そうだかどうかは、数ヶ月から半年は様子見となると個人的には見込んでいる。それまでに、もっとコミュニティ内で合意形成できていればいいね…

*5:僕の場合はまたそれとは別で、pLaTeX にコミットしているとはいえド素人である。そして、最近は LaTeX が本業に一切必要にならない生活を送っている。月に 1,2 回何かしら LaTeX で書く程度のことはあるが、それも別に LaTeX 必須というわけでもない。というわけで、LaTeX が本当に必要なのはブログのネタくらいである。