RFCが1行72文字から開放されるというのに、なぜ我々は未だにExcelで仕様書を書いているのだろう

RFCといえばインターネットが生まれる前からインターネットに関する様々な規則を標準化してきたドキュメントだが、そのRFC自体は1997年に公開されたRFC2223で「1行72文字で改行すること」と決められている。

The character codes are ASCII.
Each page must be limited to 58 lines followed by a form feed on a line by itself.
Each line must be limited to 72 characters followed by carriage return and line feed.

RFCを読む人は多くはないので別に誰も気にかけないのだと思うが、最先端の技術を議論する場で、こんなにも古い慣習に縛られていることが意外だ。そして何より、この改行のせいでGoogle翻訳で翻訳するのが面倒だ。

という事情があったかどうかはわからないが、RFC8792では、このスタイルから脱却するための2つの方法を策定する。

https://www.rfc-editor.org/rfc/rfc8792.txt

This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. 

ひとつは「シングルバックスラッシュ戦略」と呼んでいる。要するに日本語で「¥」の文字を行末に置きましょうということだ。

サンプルには、こうなっている。

   123456789012345678901234567890123456789012345678901234567890123456789
   12345678901234567890123456789012345678901234567890123456789012345678\
  90

RFCは72文字までだから先頭のスペースと改行を除く69文字目のところでバックスラッシュを打ちましょうということだ。なんだかローテク。

The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.

もうひとつの「ダブルバックスラッシュ戦略」は、シングル戦略が改行後の先頭の文字と繋げるのに対し、改行後のスラッシュの後の文字と繋げるというものだ。

これもサンプルがある。

   123456789012345678901234567890123456789012345678901234567890123456789
   12345678901234567890123456789012345678901234567890123456789012345678\
   \90

ひじょうに些細な違いだが、これによりインデントが壊れないようにしたいというわけだ。

さて、こういった新しいルールが導入された背景だが、このRFCを書いたメンバーがほかで関わっているRFCなどを見ているとYANGというネットワーク機器の設定情報がXMLだったりJSONだったりするので、しばしば72文字を超過することが増えたことの対策のようだ。

このRFCのユニークなところが、このシングルスラッシュ戦略とダブルスラッシュ戦略で書かれたRFCを改行なしに変換する400行弱のBashスクリプトが載っている点である。そのスクリプトに、こんなコピーライトが書かれているのには少し驚いた。

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



この記事が気に入ったらサポートをしてみませんか?