アポラボ

改行の怪 - Justice

apolab_2007-07-05_16-58-03

文書のダウンロード

この文書の閲覧方法について [filetype:html]

本文

たいていのメールソフトは一定の文字数で自動改行するための機能を備えています。その際の禁則処理などについて気になったので、私のパソコンの中に入っているいくつかのメールソフトについて、実際にメールを送信して確かめてみました。

Thunderbird は送信時に 72 文字できれいに改行してくれました。禁則処理などは、句読点はぶら下げ禁則で、「っ」などの小文字は追い出し禁則(手前の大文字とセットで次の行に行くように改行)されていて、なかなか見た目はよろしいようです。自動改行する・しないの切り替えは特に見当たらず、指定した文字数で常に改行されることになるみたいです。改行したくなければ「1000 文字」とかに設定しておけばいいのかもしれません。

最近になって確認したところ、Thunderbird の禁則処理は句読点などもすべて追い出し禁則になっていました。バージョンによって禁則処理の仕方に違いがあるのかもしれません。

PostPet Ver.2.0 の場合には、文字数の設定は見当たらなかったのですが、送信時には 72 文字で自動的に改行されていました。禁則処理は一切適用されず、句読点や小文字が行頭に来ていることもありました。

ウェブメールの Yahoo!メールの場合には、1 行の文字数は最大 99 文字まで設定できますが、禁則処理は適用されないので、PostPet 同様に句読点や小文字などが行頭に来ることもあります。

これらの禁則処理が行われないメールソフトの場合、自動的に改行する機能は無効にするか、1 行の文字数を最大値に設定しておいて、改行はメール作成時に手作業でキーボードから入力するようにした方がいいと思います。あるいは、整形機能を備えたテキストエディタを使うのもよいでしょう。禁則処理が正しく行われていないと相手に不快な思いをさせることもあります。こういうことも大切なマナーのうちなので、手間を惜しまず、できるだけきれいに整形するようにしましょう。

変わっているのは Opera という Web ブラウザに付属しているメールソフトです。このメールソフトも、特に改行の文字数の設定は見当たらなかったのですが、自動改行の有効・無効は切り替えられるようです。自動改行を有効にすると 76 文字で改行されているようです。ところが、Opera 以外のメールソフトで受信すると 76 文字で改行されているにもかかわらず、Opera 自身で受信してみると、改行せずに送信したときのままの状態で表示されます。つまり、自分で入力した改行以外は削除されて表示されることになります。これについての技術的な説明は後ほど書きますが、この規格に対応したメールソフトであれば、もはや改行位置で悩む必要はなくなるという、一歩先を行くメールソフトなわけです。

実は、Outlook ExpressOpera に似た動作をしているようです。ただし、Windows XP Service Pack 2 を適用する前のバージョンの Outlook Express では、Thunderbird などと同様に設定した文字数(初期設定では 76 文字)で改行して送信されます。ところが、Windows XP Service Pack 2 を適用すると、76 文字で改行するように設定してあっても、なぜか 76 文字ではなくて、150 文字や 200 文字など、全く予期せぬ位置で改行されて送信されてしまっています。Outlook Express 自身で受信してみてもやはりおかしな位置で改行されたまま表示されるのですが、このメールを Opera で受信してみると、とりあえず自動的に挿入された改行だけは削除されてつながって表示されるようにはなりました。しかし、改行があった場所に空白が挿入されてしまっています。

これは、どういうことかというと、詳しくは、下記のマイクロソフトのページをごらんいただくとよいと思います。

Outlook Express で折り返し設定が有効にならない

要するに、インターネット技術標準化委員会(IETF)によって定められた標準規格「RFC2646」というものに対応したことが原因らしいのです。この規格によれば、日本語などでは 76 文字などの一定の文字数で自動的に改行したりせずに送信することが推奨されているようです。

"format=flowed"について(標準規格「RFC2646」)

RFC2646 によって具体的に何が変わったのかというと、"format=flowed"という仕組みが取り入れられたのです。これは、英文などのメールで、単語を基準に自動改行して送信する仕組みです。メールソフトの設定で、あらかじめ 76 文字などで改行するように設定してあったとしても、英文の場合は単語の途中で改行できないので、76 文字の前後の単語の区切りで自動改行されることになります。自動改行した場合には、その行の末尾に空白文字を付加しておくことで「自動改行しましたよ」というしるしとしておくわけです。これで通常の手動入力した改行と区別するわけですね。そして、このメールを"format=flowed"に対応したメールソフトで受信したときには、自動改行された部分だけを認識して、改行を削除してから表示するというわけです。"format=flowed"に対応していないメールソフトではそのまま改行されて表示されるだけです。

"delsp=yes"について

Opera の場合には、さらに一歩進んだ RFC3676 という規格で定められている"delsp=yes"という仕組みを取り入れています。"format=flowed"では、自動改行の前に空白文字を付加したわけですが、そのまま改行を削除してつなげてしまうと、空白が残ってしまいます。英文などではこれで問題はないわけですが、日本語の場合には空白が残っていると困ります。そこで、"format=flowed"とともに"delsp=yes"が指定されたメールでは、空白も削除して表示することで、この問題を解決したわけです。

Opera で送信したメールを Opera で受信したときには、"format=flowed"と"delsp=yes"の両方が有効になるので、日本語のメールがきちんとつながって表示されたのです。Outlook Express から送信したメールも Opera で受信すれば自動的に挿入された改行が削除されて表示されますが、Outlook Express で送信する際に"delsp=yes"を指定していなかったので、空白が残ってしまったというわけです。

ただ、一見すると Opera の送信するメールが最も合理的にも思えるのですが、これがもし、日本語と英語の混在したメールだったら、どのような結果になるのかは、ちょっとわかりません。英文の場合には、"delsp=yes"で単語間の空白が削除されてしまっては困りますからね。

それに、"format=flowed"に対応していないメールで受信したときにも、表示上は問題はないものの、行末に空白文字が付加されていることで、いろいろと厄介な問題が出てきます。たとえば、受信したメールの文章を引用したり、再利用するために改行を削除してつなげようと思ったときに、空白文字があると、それも一緒に削除しなければならず、非常に手間がかかることになります。空白文字が含まれていると単語検索などの障害になることもあります。改行を削除するだけならテキストエディタのコマンドひとつで簡単にできるのですが……。

やはり、日本語のメールの場合には、無理に"format=flowed"で送信するよりも、今までどおり、普通に改行していた方がよさそうです。

Thunderbird "format=flowed"には対応しているようでしたが、日本語のメールを送信するときには"format=flowed"ではない普通の形式で送信するようになっているみたいです。エンコードを日本語以外に設定してからメールを送信すると"format=flowed"の指定が自動的に追加されるようです。

Outlook Express のように何でもかんでも標準規格で送信してしまうのではなく、Thunderbird のように使用する言語(エンコード方式)によって改行のしかたを変える方が合理的といえるでしょう。

現状では Outlook Express のメール送信時の仕様は日本語のメールを送信するには適していません。結局、標準規格といっても現状では日本語の事は十分に考慮されていない欠陥規格なのです。

それに、いくら標準規格だからといっても、日本語のメールで改行を全く挿入せずにメールを送信することは避けた方がいいと思います。依然として、1000 文字前後で文字化けするメールサーバの仕様も残っているわけですからね。

今のところ、私の場合は、パソコンユーザ宛のメールには 70 文字(全角 35 文字)で改行して送信し、携帯ユーザ宛のメールには句点を目安に(つまり 1 文ずつ)改行して送信するようにしています。

このような問題も、HTML 形式のメールで送信してしまえば、悩む必要はまったくなくなるのですけどね。

author: アポロ