技術文書においても、「が」を警戒しよう

昨日の日記について、池田雅一さんからコメントを頂戴した。また、Webサイトの方も修正が行われた。

池田雅一
原稿出した段階では、「エスケープが基本的な対策だが、Prepared Statementを使うと楽」と書いていたのに、記事になった時点で「だが」が削除されてましたorz
でもこの書き方にも問題があるかもしれませんが・・・

たしかに問題がある。そもそも変更点はどうなっているかというと、

修正前:

SQLインジェクション対策の基本はXSSと同じく適切なエスケープ処理を行うことだ。最近、開発環境の多くは、Prepared Statementあるいはバインドメカニズムと呼ばれる仕組みが実装されているので、それらを用いることが最も簡単な方法といえる。

修正後:

SQLインジェクション対策の基本はXSSと同じく適切なエスケープ処理を行うことだが、最近の開発環境の多くは、Prepared Statementあるいはバインドメカニズムと呼ばれる仕組みが実装されているので、それらを用いることが最も簡単な方法といえる。

ほとんど変わっていないので、変更点を見やすく並べてみる。

変更前:エスケープ処理を行うことだ。 最近、開発環境の多くは、Prepared Statement
変更後:エスケープ処理を行うことだが、最近の開発環境の多くは、Prepared Statement

実質的に、変更後の文章は、変更前の二つの文を「が」でつなげただけだ。
元々この部分の問題点は、二つの文の関係が分かりにくいということであった。接続詞「が」を追加することによって、それは明確になるだろうか。

辞書などをひくと、「が」は逆接の接続詞ということになっているが、現実にはもっと多様な使われ方をしている。例えば以下のように。

  • われながら努力したと思うが、おかげさまで合格した(そのため)
  • われながら努力したと思うが、残念ながら不合格だった(けれども)
  • 先日上野に行ったのですが、そこで蕎麦を食べました(そして)

先日指摘した以下の例ではどうだろうか?

 XSS対策の基本は適切なエスケープ処理を行うことだ。PHPにはhtmlspecialcharsという関数が実装されているので、それを用いることが最も簡単な方法といえる。

「が」を用いて、一つにつないでみる。

 XSS対策の基本は適切なエスケープ処理を行うことだが、PHPにはhtmlspecialcharsという関数が実装されているので、それを用いることが最も簡単な方法といえる。

別におかしくはない。元の二つの文は「逆接」ではないのだが、「が」によってつなげることは可能だ。

このように、「が」の使われ方は多様であって、順接にも逆接にもなるという便利な、しかしあいまい性の高い接続詞だ。だから、二つの文を「が」でつないだからと言っても、それで文と文の関係が明確になるわけではない。清水幾太郎氏は、名著「論文の書き方」の中で「『が』を警戒しよう」という一章を設けて、「が」のあいまい性を避け、文と文を明確につなげることの意義を解説している。

論文の書き方 (岩波新書)

論文の書き方 (岩波新書)

結論。編集者は無罪である。編集者が、接続詞「が」を嫌い、文を一つに分けたことは、必ずしも誤りではない。元々「が」の意味が軽く、ほとんど意味を提供しないのであるから、文を二つに分けても意味が大きく変わるわけではない。池田氏は、最初からもっと明確に二つの文章の位置づけを説明するべきであった。