• コードプラス1

文章を書くのは、非定型業務などと言われる。たしかに、人により書いたものにパターンはあるものの、何かの手順に従って作業すれば、自動的にできるものでもない。しかし、細かくみるといくつかの定型パターンがある。その1つは、文章の一部を引用符や括弧で囲む作業だ。印刷物などでは、引用符の開始と終了に異なる形(コードポイント)の引用符を使う。こうした作業は自動化可能だ。

同様のパターンとして、三点リーダーを2つ重ねるなどのルールがあるのだが、ほとんどは日本語入力IMEの単語登録で対応が可能だ。面倒なのは、引用符や括弧で囲む作業である。左右の組(たとえば“”)で単語登録すると、1文字戻って入力せねばならないし、「ひだりだぶるくおーと」のような単語登録は、複数を使い分けると読みが長くなりやすい。

会話文ならば、日本語ならカギ括弧を使うのがルールだが、英語ならクオーテーションマーク(引用符。クオートと略すこともある)を使う。会話文以外でも、引用符で単語を囲って、強調や別の意味があることを示すことがある。これは、日本語のカギ括弧でも同じ使い方をする。

引用符には2種類あるのが普通。これは、引用符の中でさらに引用符を使わねばならないときに、代替となるもう1つの引用符を使うためだ。たとえば、カギ括弧の中でカギ括弧を使わねばならないときには、内側を二重カギ括弧にする。引用符には、会話文以外にも強調や別の意味があること、あるいは書籍や音楽などの題名を示す場合にも使われる。そうなると、引用符で囲まれたところで、さらに引用符を使うことがある。3重になったらどうする? という疑問もあるが、現実的には、そこまで複雑な文章は希で、あったとしても、ダッシュ記号などで代用することがある。

ASCIIコードには、ダブルクオート文字のほかに、シングルクオートとアポストロフィー兼用の文字、逆クオート文字(本来はアクセント文字)などがある。テキストファイルなどでは、ASCIIコードのシングルクオートと逆クオートを対にして使う用法もある。しかし、ユニコードでは、引用符を独立したコードとして定義しているし、もちろん、日本語のカギ括弧、二重カギ括弧も定義されている。最近ではユニコードテキストが普通に使えるので、こうしたものはきちんと指定しておきたい、と考えた。

そういうわけで、筆者は、文字列を引用符や括弧で囲む作業を簡単にするため、クリップボードにあるテキストに引用符を指定して囲むプログラムを作った。というのは、先に入力した文字列にあとから引用符で囲む作業が面倒だからである。このとき、右と左が異なる引用符文字や括弧は、ユニコードであるため、入力も面倒だったこともある。このときには、引用符は、カギ括弧(U+300c、U+300d)、二重カギ括弧(U+300e、U+300f)、単一引用符(シングルクオート。U+2018、U+2019)、二重引用符(ダブルクオート。U+201c、U+201d)程度しか考えていなかった。

これらのユニコードのコードポイントでは、対になる引用符が連続して配置されている。左側(LEFT)の引用符が決まれば、右側(RIGHT)の引用符は、右側のコードポイント+1となる。ASCIIコード(ユニコードのBasic Latin)の引用符には左右がないので、同じものを使えばよい、そう考えてプログラムを作った。

プログラムの機能としては、引用符の開始文字と、対になる引用符(たとえば、カギ括弧なら二重カギ括弧、ダブルクオートなら、シングルクオート)の2文字を指定して機能を登録する。メニューで機能を選択すると、クリップボード文字列全体を指定された引用符で括り、内部の引用符を対になる引用符に書き換える、というものだ。括弧の場合には、置き換えルールは一般的でないので、開始文字、1文字だけを指定することを想定していた。

最初は、これでも良かったのだが、欲を出してプログラムを公開しようと、日本語、英語以外の引用符にも対応させることにした。それで、ユニコードのGeneral Punctuationのチャートを見た。そこには、多数の「引用符」があった。調べた結果の組合せが表01である(調べ尽くしたわけではないので、他にも組合せが存在する可能性がある)。世の中には、左側の引用符が下に置かれる「„…“」(U+201eとU+201c)という組合せを使う言語もある。この上下の組合せの引用符には、右側の向きが違う「„…”」(U+201e、U+201d)を使う場合もある。いや、何をするにしても、規格書には一度は目を通しておくべきである。

  • ■表01

イギリスでは、シングルクオートが標準的に使われ、ダブルクオートが代替となる。フランス語のギュメも引用符の1種らしい(Latin-1 Punctuation)。日本語には、縦書き時のダブルクオートとしても使われるダブルミニュートと呼ばれる記号があった。これもユニコードのCJK Symbols and Punctuationに収録されている。また、ユニコードでは、シングルクオートはASCIIコードのものではなく、General Punctuationで定義されているものを使うことが推奨されているようだ。

そういうわけで、引用符や括弧記号の右側は左側のコード+1というのは結構狭い範囲の話でしかないことがわかった。しかし、発見もあった。左側が下に来る引用符は、フォントが小さくてもASCIIコードのダブルクオートで囲まれた文字列と区別しやすい。多くのフォントで、欧文との組合せを想定するため引用符は「半角」扱いになることもあって、米国式の左右とも上につく引用符は、フォントサイズが小さいとき、ASCIIコードの引用符と区別が付きにくい。しかし、上下に付く引用符は、文字が小さくてもASCIIコードの引用符と容易に区別が付く。プログラム関連の記録などで、ときどき使うことにした。

今回のタイトルネタは、ギャビン・ライアル(Gavin Lyall)の「深夜プラス1」(Midnight Plus One)である。身を持ち崩した、かつての精鋭という設定は、いまではアニメや漫画で当たり前に使われているが、その元祖ともいえるのが、この作品。逆にいうと、この作品があったからこそ、この設定が秀逸なパターンとして定着したということか。