行頭移動指定付箋問題


Caution!
このページの内容は、現時点ではまだ小熊一人のアイデアです。坂村先生からも、TRON協会からも、なんらの承認/査閲を受けてはおりません。よって、最終的に破棄される可能性もあります。
くれぐれもそのことを忘れないで、この文章を読んで下さい。


 2001年4月27日。PMCからの超漢字3 R3.010のリリースにより、TADの仕様が変更された旨が通達された。
 内容は次の通りである。
4. 全般的な不具合への対応
  • 「基本文章編集」において、以下の不具合に対応しました。
    (中略)
    • 字下げ付せんにより字下げの効果は、改行コード、 または行間隔指定付せんや行揃え指定付せんによる自動的な改行では解除されずに継続するように変更しました。 なお、「印刷」も同じレイアウト結果となるように変更しました。
      TAD 仕様書では、行頭移動指定付せんの効果は、 改行で解除されると明記されていますが、 TAD仕様書の誤記であることが確認されたため変更しました。
    (後略)

 この大元の“字下げ付箋”こと「行頭移動指定付箋」は次のような記述になっている。


行頭移動指定付箋 : 拡張レベル

行頭位置を一時的に移動する。

LEN  :  2
SUBID:  5
ATTR :  UB      ---              -- 未使用

直後の文字の文字開始位置に行頭位置を一時的に移動する。 改行、改段落、改コラムコード、もしくは、改行、改段落を伴う付箋が出現するまで有効となる。
1行内に複数個の「行頭移動指定付箋」が存在した場合は、最初のみ有効となり、 2番目以降は無視される。


 これが「誤記」であることが確認されたため、基本文書エディタ及び基本印刷での行頭移動指定付箋の挙動を変更した、というのがPMCの説明である。

 この行頭移動指定付箋は『BTRON1プログラミング標準ハンドブック』收録のTAD仕様書にも掲載されており、実際にサポートされたのも1B時代の話である。確認してみると、当時から仕様上の記述は一致しており、またTADエディタ上での挙動も仕様に沿ったものであった。
 つまり、改行を伴う付箋、例えば行間隔指定付箋などによりこの行頭移動指定付箋が解除される挙動が「正しい」とされてきた。

 にも拘らず、この時点でのいきなりの仕様変更と実装変更である。

 これは以下の二点から、甚だしく問題のある行動である。

  1. 仕様の「誤記」が「確認された」にもかかわらず、仕様書そのものが書き改められないうちの実装変更であること。
  2. この変更は管理情報セグメントの記述「原則として、バージョンアップがあった場合、仕様は上位互換となる。 」に反する。この変更により、超漢字R3.010より前に作られたTADデータの中で、行頭移動指定付箋が使われているものは、表現が意図せずに変わってしまう可能性がある。
 特に第2点目は大きな問題である。
 BTRONのBTRONたる所以は、TADと実身/仮身である。
 全てのTADエディタはTADを等しく仕様書に基づいて解釈し、表示する。その共有データフォーマットに「誤記」があった。
 ここまでは人間の仕事である以上、不可避であろう。
 しかし、誤記であろうがなんであろうが、その記述に基づいて実装が既に行われており、データの蓄積も進んでいる現下において、その仕様を軽軽に動かすことは、厳に慎まれなければならない。
 正しい対処は、旧来の行頭移動指定付箋をそのままの形で残し、新たに改行では無効にならない新たな付箋を新設し、今後のデータ蓄積はそちらの付箋で行うようする方法だったはずである。


実証実験

Fig A.
原稿モードによる表示
原稿モードによる表示

Fig B.
Fig AをR3.000の基本文書エディタの清書モードで表示
R3.000による表示

Fig C.
Fig AをR3.010の基本文書エディタの清書モードで表示
R3.010による表示



 本件についての坂村先生からの説明が、2001年6月2日のBTRON Clubであった。
 その説明によると、

  1. 上の例はTAD的に正しくない。行書式指定付箋は必ずその前に改行あるいは改段落を伴って用いるものであり、故意に行書式指定付箋を改行あるいは改段落の代用とするのは、「やってはいけない」。
  2. 実害は出ない。BTRONの普及度から考えて、今この改変を加えても、影響は殆どない。被害があるというなら実例をもってくれば個別に対応する。
  3. 新しい付箋の新設は美しくない。
……ということであった。