Suica専用自販機に見る形骸化した記号の話



この話を見た時、これはまさに「形骸化した記号」のよい例だろうと思った。ナンセンスな「電子署名」の話よりも、それが形骸であることがずっと分かりやすい。

普段から自販機を使っている大多数の日本人にとって、それがコイン投入口だということを認知するためにコインの絵や点字は必要ではなく、無意識に見過ごされた記号であったのだろう。だから、実際に困る人が現れるまでは、誰も気づくはずがなかった。

それで、教訓として得るべきなのはなんだろうか。マイノリティーへの配慮を充実させること? まあ、それはそうだろう。多様性を持つ利用者全般に対して不都合のないデザインであるか、よくテストを行うべきだと言える。アクセシビリティガイドラインを守り、マイノリティーを尊重し、適切なテストを行った後にプロダクトを出すのが理想だ。問いたいのは、理想を実現させるにはどうすればよいのかということだ。

あらゆるマイノリティーに対してアクセシビリティ上の困難がないかテストをするには多大なコストが掛かる。それは必要なコストだ、と頭で分かるとしても、感情が付いてこない。マジョリティーはマイノリティーに対する意識を高めなければならないのだけれども、それはアクセシビリティガイドラインを頭に叩き込むだけでは成しようがない。必要なのは、ルールの遵守というよりも、記号を多様な観点から見ることができる柔軟さだ。

記号の不完全さへの意識を高めるのに、笑いは重要な役割を果たしうる。私たちは記号を信用し、時に記号に裏切られる。記号の解釈には文化による差異があり、それによって起こる勘違いは、記号が引き起こす悲喜劇だ。記号はコミュニケーションのなかだちだけど、それが勘違いの種であり、常に不完全さを孕むことを認めよう。未知の存在との交流は常に勘違いの連続だ。私たちは記号と、記号が引き起こす勘違いを互いに笑いながら、少しずつ乗り越えていくしかない。異文化交流とは、寛容性を前提としなければ成し得ないと思う。

東京メトロの行先案内の多言語化で全言語にルビが付いていて賢いという話(だけど限界もある)




ルビ(振り仮名)が振ってあると、すごく日本っぽい感じがする。ハングル一色の画面を見れば、異形の文字を見慣れない人には忌避感を与え、ここは日本だぞと文句を付けたくもなるっていう人が出てくるんだろうけれども、ハングルに振り仮名するだけで、そういう人にとっても、なんだ日本語じゃないかと思えてくるのではないか。たぶん。まあ、それでも文句を付ける人は付けるんだろうけれども。

ルビは、昔から漢字と仮名を併用してきたからこそ生まれた、日本独特の組版文化だと言える。もちろん、発音を併記するのは中国語学習用のテキストとかでもやることではあるのだけれども、日本語のようにルビを常用する文化は他にないだろう。漢字と仮名という複数のチャンネルを使って情報を流すことで、字義と音価、あるいは意味と意味が新しい形で結びつく。そのことが、言葉を新しい視点から眺めることを教えてくれる。

ルビの欠点として、ルビは小さい。視力に自信がない人は、やっぱり平仮名の大表示も欲しいって思うだろう。そして、ルビを振ると画面が煩雑になる。大きな表示スペースがないと難しい。万人にとって良い画面を設計するのはほぼ不可能なことで、どうしたって切り捨てが生じてしまう。液晶ディスプレイによる時分割表示は、多言語対応の万能薬ではない。

そもそも、公共のディスプレイに表示しようとするから、万人が読める表記という難題を解かなければならないのであって、一番いいのは、個々人に最適化された案内表示がなされることだろう。スマートフォンに表示する分には、他人の目を気にすることなく、自分の都合のよい表示方法に設定できるはずだ。案内情報を局所的に配信する仕組みは絶対に必要だと思うのだけれども、誰か真剣に取り組んでくれないだろうか。

花押の件について判決文を読んでみたけどよく分からなかった話

www.jiji.com

今回の裁判の要旨は「いわゆる花押を書くことは,民法968条1項の押印の要件を満たさない」ということですが、その理由を抜き出してみます。

 3 原審は,次のとおり判断して,本件遺言書による遺言を有効とし,同遺言により被上告人は本件土地の遺贈を受けたとして,被上告人の請求を認容すべきものとした。
 花押は,文書の作成の真正を担保する役割を担い,印章としての役割も認められており,花押を用いることによって遺言者の同一性及び真意の確保が妨げられるとはいえない。そのような花押の一般的な役割に,a家及びAによる花押の使用状況や本件遺言書におけるAの花押の形状等を合わせ考えると,Aによる花押をもって押印として足りると解したとしても,本件遺言書におけるAの真意の確保に欠けるとはいえない。したがって,本件遺言書におけるAの花押は,民法968条1項の押印の要件を満たす。
 4 しかしながら,原審の上記判断は是認することができない。その理由は,次のとおりである。
 花押を書くことは,印章による押印とは異なるから,民法968条1項の押印の要件を満たすものであると直ちにいうことはできない。
 そして,民法968条1項が,自筆証書遺言の方式として,遺言の全文,日付及び氏名の自書のほかに,押印をも要するとした趣旨は,遺言の全文等の自書とあいまって遺言者の同一性及び真意を確保するとともに,重要な文書については作成者が署名した上その名下に押印することによって文書の作成を完結させるという我が国の慣行ないし法意識に照らして文書の完成を担保することにあると解されるところ(最高裁昭和62年(オ)第1137号平成元年2月16日第一小法廷判決・民集43巻2号45頁参照),我が国において,印章による押印に代えて花押を書くことによって文書を完成させるという慣行ないし法意識が存するものとは認め難い。
 以上によれば,花押を書くことは,印章による押印と同視することはできず,民法968条1項の押印の要件を満たさないというべきである。

http://www.courts.go.jp/app/hanrei_jp/detail2?id=85930

読みづらいので、箇条書きにして原審の判断と最高裁の判断を整理してみます。

原審の判断:

  • (1.) 花押は,文書の作成の真正を担保する役割を担い,印章としての役割も認められており,花押を用いることによって遺言者の同一性及び真意の確保が妨げられるとはいえない
  • (2.) そのような花押の一般的な役割に,a家及びAによる花押の使用状況や本件遺言書におけるAの花押の形状等を合わせ考えると,Aによる花押をもって押印として足りると解したとしても,本件遺言書におけるAの真意の確保に欠けるとはいえない
  • (結論1.) したがって,本件遺言書におけるAの花押は,民法968条1項の押印の要件を満たす

原審では押印の要件をどのように考えていたのかが抜けているので、これだけでは妥当な論証にはなっていません。原審の判決文を確認する必要がありそうです。

最高裁の判断:

  • (3.) 花押を書くことは,印章による押印とは異なる
  • (4.) (3.)から,〔花押を書くことは,〕民法968条1項の押印の要件を満たすものであると直ちにいうことはできない
  • (5.) 民法968条1項が,自筆証書遺言の方式として,遺言の全文,日付及び氏名の自書のほかに,押印をも要するとした趣旨は,(5-1.)とともに,(5-2.)にあると解される
    • (5-1.) 遺言の全文等の自書とあいまって遺言者の同一性及び真意を確保する〔こと〕
    • (5-2.) 重要な文書については作成者が署名した上その名下に押印することによって文書の作成を完結させるという我が国の慣行ないし法意識に照らして文書の完成を担保すること
  • (6.) 我が国において,印章による押印に代えて花押を書くことによって文書を完成させるという慣行ないし法意識が存するものとは認め難い
  • (結論2.) 花押を書くことは,……民法968条1項の押印の要件を満たさないというべきである

この論証は妥当な論証ですが、結論を導くのに必要なのは(5.)の〈(5-1.)と(5-2.)をともに満たす⇔押印の要件を満たす〉という趣旨の命題と(6.)の〈花押を書くことは(5-2.)を満たさない〉という趣旨の命題だけです。(3.)と(4.)は、それが否定されると結論も否定されるような命題です。

論証自体は妥当ですが、そこに挙げられている前提(5.), (6.)は妥当なのでしょうか。

(5.) の主張のために「最高裁昭和62年(オ)第1137号平成元年2月16日第一小法廷判決」が参照されていますが、この裁判の要旨は「自筆遺言証書における押印は、指印をもつて足りる」ということです。こちらも、その理由を抜き出してみます。

 自筆証書によつて遺言をするには、遺言者が遺言の全文、日附及び氏名を自書した上、押印することを要するが(民法九六八条一項)、右にいう押印としては、遺言者が印章に代えて拇指その他の指頭に墨、朱肉等をつけて押捺すること(以下「指印」という。)をもつて足りるものと解するのが相当である。けだし、同条項が自筆証書遺言の方式として自書のほか押印を要するとした趣旨は、遺言の全文等の自書とあいまつて遺言者の同一性及び真意を確保するとともに、重要な文書については作成者が署名した上その名下に押印することによつて文書の作成を完結させるという我が国の慣行ないし法意識に照らして文書の完成を担保することにあると解されるところ、右押印について指印をもつて足りると解したとしても、遺言者が遺言の全文、日附、氏名を自書する自筆証書遺言において遺言者の真意の確保に欠けるとはいえないし、いわゆる実印による押印が要件とされていない文書については、通常、文書作成者の指印があれば印章による押印があるのと同等の意義を認めている我が国の慣行ないし法意識に照らすと、文書の完成を担保する機能においても欠けるところがないばかりでなく、必要以上に遺言の方式を厳格に解するときは、かえつて遺言者の真意の実現を阻害するおそれがあるものというべきだからである。もつとも、指印については、通常、押印者の死亡後は対照すべき印影がないために、遺言者本人の指印であるか否かが争われても、これを印影の対照によつて確認することはできないが、もともと自筆証書遺言に使用すべき印章には何らの制限もないのであるから、印章による押印であつても、印影の対照のみによつては遺言者本人の押印であることを確認しえない場合があるのであり、印影の対照以外の方法によつて本人の押印であることを立証しうる場合は少なくないと考えられるから、対照すべき印影のないことは前記解釈の妨げとなるものではない。そうすると、自筆証書遺言の方式として要求される押印は拇印をもつて足りるとした原審の判断は正当として是認することができ、原判決に所論の違法はない。論旨は、採用することができない。

http://www.courts.go.jp/app/hanrei_jp/detail2?id=52210

平成元年の判決の判断:

  • (結論3.) ……押印としては、遺言者が印章に代えて拇指その他の指頭に墨、朱肉等をつけて押捺すること(以下「指印」という。)をもつて足りるものと解するのが相当である
  • (7.) 同条項が自筆証書遺言の方式として自書のほか押印を要するとした趣旨は、(7-1.)とともに、(7-2.)にあると解される
    • (7-1.) 遺言の全文等の自書とあいまつて遺言者の同一性及び真意を確保する〔こと〕
    • (7-2.) 重要な文書については作成者が署名した上その名下に押印することによつて文書の作成を完結させるという我が国の慣行ないし法意識に照らして文書の完成を担保すること
  • (8.) 右押印について指印をもつて足りると解したとしても、遺言者が遺言の全文、日附、氏名を自書する自筆証書遺言において遺言者の真意の確保に欠けるとはいえない
  • (9.) いわゆる実印による押印が要件とされていない文書については、通常、文書作成者の指印があれば印章による押印があるのと同等の意義を認めている我が国の慣行ないし法意識に照らすと、文書の完成を担保する機能においても欠けるところがない
  • (10.) (9.)ばかりでなく、必要以上に遺言の方式を厳格に解するときは、かえつて遺言者の真意の実現を阻害するおそれがあるものというべき〔である〕

(5.)は(7.)を参照していて、ほとんど同じ表現であることがわかります。(7.)の〈(7-1.)と(7-2.)をともに満たす⇔押印の要件を満たす〉という趣旨の命題は、(8.)の〈指印は(7-1.)を満たす〉、(9.)の〈指印は(7-2.)を満たす〉という趣旨の命題と合わせて、(結論3.)を妥当に導くための前提になっています。

(7.)が指印が印章の代わりになることを主張する際に考えられた前提であるのに対し、それを今回の判決の(5.)は逆に使われていて、花押が印章の代わりにならないことを主張するための前提になっていますが、主張(5.)自体は妥当で「押印の要件」つまり押印であると認められる必要十分条件になっていると思われます。そうすると、問題になるのは(6.)です。

(6.)は単に原審における前提(1.)の「印章としての役割も認められており,」を否認しているだけのように見えます。(原審の判決文は確認できていないので、原審で認められた「印章としての役割」が具体的にどのような役割を指しているのかははっきりしませんけれども。)そして、その前提にさらなる理由は与えられていません。

結局、判決文を読んで分かったのは、最高裁判所は「我が国において,印章による押印に代えて花押を書くことによって文書を完成させるという慣行ないし法意識が存するものとは認め難い」という判断を行ったが、その判断には全く理由が与えられていないということでした。なぜ、こんなよく分からない判決文が許されているんでしょうか。「印章による押印に代えて花押を書くことによって文書を完成させるという慣行ないし法意識が存する」かどうかについて、十分審議が尽くされたのでしょうか。審議するまでもなく自明だという認識なんでしょうか。そこら辺が、よく分かりませんでした。

リファレンス

シンタックス・ハイライト機能はHaxeに対応してほしいです。

お題「シンタックス・ハイライト機能で対応してほしい言語」

Haxeに対応してほしいです。

class Test {
    static function main() {
        trace("Haxe is great!");
    }
}

HaxeActionScript風のシンタックスを持ちながらも、JavaScriptC#, PHPなど多数のターゲットに対してコードをトランスパイルすることができる言語です。

Flashとの互換性を持つOpenFLというフレームワークを抱えていたり、言語のオリジナル開発者がゲームデベロッパーで性能を重視した言語であるという面も関係して、ポストFlash時代におけるゲーム開発プラットフォームとして採用事例が多数存在しています。

また、複数ターゲットに出力可能であることから、クライアント側とサーバー側で共通のコードを利用することが可能だという点も魅力です。

文脈付き構成的意味論を構成的意味論に変換する

mandel59.hateblo.jp

ここでは, 自然数の集合  {\bf N} に0を含めることとする。

記法  \left ( a_k \right )_{k=m}^{n} \left (a_m, a_{m+1}, \cdots, a_{n-2}, a_{n-1} \right ) を表す。 m = n の時は  \left ( \right ) を表す。
記法  \bigwedge_{k = m}^{n} p_k p_m \wedge p_{m+1} \wedge \cdots \wedge p_{n-2} \wedge p_{n-1} を表す。 m = n の時は  \top (真理値の真)を表す。

形式言語

形式言語  L = \langle F, | \bullet | \rangle は関手集合  F, 関手の項数  | \bullet | : F \rightarrow {\bf N} からなる組である。

形式言語  L = \langle F, | \bullet | \rangle の式集合  E(L) を, つぎの帰納的定義によって定める:

  •  f \in F \land \left ( \bigwedge_{k = 0}^{|f|} t_k \in E(L) \right ) \Rightarrow f(t_k)_{k=0}^{|f|} \in E(L).

これは, 次のようなことを含意している:

  •  f が項数  n の関手であり,  t_0, \cdots, t_{n-1} が式であるとき,  f(t_0, \cdots, t_{n-1}) は式である。
    • 特に,  f が項数  0 の関手であるとき,  f() は式である。
  •  t が式であるとき, ある自然数  n, ある項数  n の関手  f, ある式  t_0, \cdots, t_{n-1} が存在し,  t = f(t_0, \cdots, t_{n-1}).

構成的意味論

構成的意味論  \Sigma = \langle L, M, I \rangle形式言語  L = \langle F, | \bullet | \rangle, 意味集合  M, 解釈  I : f \in F \mapsto g \in [ M^{|f|} \rightarrow M ] からなる組である。

このとき  \Sigma のもとの式の意味  \Sigma \unicode{x27e6} \bullet \unicode{x27e7} : E(L) \rightarrow M を, つぎの帰納的定義によって定める。

  •  \Sigma \unicode{x27e6} f(t_k)_{k=0}^{|f|} \unicode{x27e7} = I(f) \left ( \langle \Sigma \unicode{x27e6} t_k \unicode{x27e7} \rangle_{k=0}^{|f|} \right )

文脈付き構成的意味論

文脈付き構成的意味論  \Sigma_\star = \langle L, C, V, I_\star \rangle形式言語  L = \langle F, | \bullet | \rangle, 文脈集合  C, 値集合  V, 解釈  I_\star : f \in F \mapsto g \in [ [ C \rightarrow V ]^{|f|} \rightarrow [ C \rightarrow V ] ] からなる組である。

このとき  \Sigma_\star のもとの式の意味  \Sigma_\star \unicode{x27e6} \bullet \unicode{x27e7} : E(L) \rightarrow [ C \rightarrow V ] \ を, つぎの帰納的定義によって定める。

  •  \Sigma_\star \unicode{x27e6} f(t_k)_{k=0}^{|f|} \unicode{x27e7} = I_\star(f) \left ( \langle \Sigma_\star \unicode{x27e6} t_k \unicode{x27e7} \rangle_{k=0}^{|f|} \right )

文脈  c \in C のもとの式  e の値は  \Sigma_\star \unicode{x27e6} e \unicode{x27e7} (c) \ になる。

文脈付き構成的意味論を構成的意味論に変換する

文脈付き構成的意味論  \Sigma_\star = \langle L, C, V, I_\star\rangle から自明な構成的意味論  \Sigma ' _\star = \langle L, [ C \rightarrow V ], I_\star \rangle を構成できる。

プログラム意味論の分かりやすい紹介

巷に膾炙しているプログラム意味論の説明は、正直言って何を言っているのか、部外者にはよく分からないように感じられる。プログラムの意味を論じる「プログラム意味論」の意味がよくわからないというのは本末転倒だろう。ここでは、プログラム意味論を分かりやすく紹介したい。

プログラムの意味

プログラム意味論とは、プログラムの意味に関する理論だ。

そもそも「意味」とはなんだろうか。「意味」の意味を知るために、デジタル大辞泉で調べてみよう。

言葉が示す内容。また、言葉がある物事を示すこと。「単語の―を調べる」「愛を―するギリシャ語」

ある表現・行為によって示され、あるいはそこに含み隠されている内容。また、表現・行為がある内容を示すこと。「慰労の―で一席設ける」「―ありげな行動」「沈黙は賛成を―する」

価値。重要性。「―のある集会」「全員が参加しなければ―がない」

いみ【意味】の意味 - goo国語辞書

「意味」の語義が3つ示されているが、要約すると、ひとつめは「言葉が示す物事」、ふたつめは「行為が示す物事」、みっつめは「行為が持つ価値」だ。この3つの「意味」の意味は無関係なものではなく、共通した構造が存在している。それは、何か言葉や行為という表に見えている表現は、その裏にある物事や価値に繋がっているという構造だ。

たとえば、店で「ビールあり〼」という看板を見たとする。ビールの実物を見ずとも、その店には実際にビールが用意されていて、店はそのビールを売る意図があって、自分はそれを注文して飲むことができるという場面を想像できる。その想像された場面や、その場面の持っている価値が、「ビールあり〼」の意味だと言える。

プログラムの意味も同様だ。プログラムの意味とは、そのプログラムによって実現される物事や場面のことだと言える*1。例えばalert(1)というJavaScriptのプログラムは、実行するとダイアログ・ボックスで“1”を表示する。すなわち、alert(1)の意味は「ダイアログ・ボックスで“1”を表示する」という場面だ。

プログラムの意味は、そのプログラムを動かしてみれば分かるように思うかもしれないが、プログラムを動かすにもコストやリスクが存在する場合がある。誤作動を起こすプログラムを実際に動かしてしまえば、重大な事故を引き起こすかもしれない。それを避けるためには、プログラムを動かすことなく、その意味を知る必要があるのだ。

優れたプログラマーが頭の中で考えたプログラムを一発で動かしてしまうのも、プログラムの意味を体得しているからだと言える。しかし、プログラムの意味を個人の経験によって身に付けるのは時間がかかるだけではなく、その厳密さにも限界がある。見慣れない種類のプログラムがどのように動くかは、経験からでは分からないのだ。そういう場合でも、プログラム意味論でプログラムの表現と物事の間にある関係を詳細に学ぶことで、プログラムの意味を正確に把握できるようになるだろう。

形式的意味論

意味論は表現と物事の対応を論じるものではあるけれど、現実の物事はすごく複雑で、それをありのままに考えて厳密に論じるのはとても難しい。そこで、普通は物事を抽象化した上で、厳密に考えることになる。*2物事を抽象化した上で、数学や論理学を使って厳密に論じられる意味論が、形式的意味論だ。形式的意味論には操作的意味論、表示的意味論、公理的意味論といった大別がある。

操作的意味論は、表現を操作する規則や抽象機械を使ってプログラムの意味を考える。この意味論では表現の操作過程や抽象機械の動作が、表現の意味となる。この意味論は、現実のコンピューターの動作に一番近い形で表現された意味論で、プログラムに対して、機械がどれほどの計算資源を使い、どのように動作するのかを厳密に議論するのに適した表現だと言える。その一方で、操作的意味論が扱った規則以外の方法でプログラムを処理することについては考慮しないので、プログラムの読みやすさや編集しやすさを議論するには適していないだろう。

表示的意味論は、表現から物事への写像(表示)を使ってプログラムの意味を考える。この意味論においては、表現からの写像が定義できる好きな領域を意味としてよい。この手法は、言語の意味を数理論理学や言語哲学と同様の手法を用いて考えており、プログラムを読み書き・編集するときの性質を分析するのに向いている。例えばプログラミング言語が「構成性」という性質を持っていることが意味論から分かるので、その性質を利用したプログラムの最適化を行う、といったことに使える。

公理的意味論は、表現と物事の間に成り立つ関係(仕様)を使ってプログラムの意味を考える。この意味論においては、仕様を公理として証明できる物事が、表現の意味となる。この意味論では、仕様にないプログラムの具体的な動き方は分からないが、プログラムの「停止性」のような抽象度のより高い性質を証明するのに向いている。

*1:「実行結果」と言ってしまえば済むように思うが、サーバーのように継続的に実行され続けるプログラムや、ギャンブル・ゲームのように非決定的な振る舞いをするプログラムもあるわけで、そのようなプログラムの意味も考えようとすると、単に「実行結果」と言うだけでは済まない。

*2:ここで「厳密に論じる」と言っているのは、他人に自分の論理を説明できる形で、論理的に論じるということだ。論じる問題が複雑になると、関係しあう事柄の組み合わせが爆発的に増えるせいで、論理を構成するのが極端に難しくなってしまう。だから、抽象化を行うことで一度に考える事柄を減らし、問題を厳密に論じきれる大きさにする必要がある。

プログラミングと哲学

プログラミングと哲学の間には深い関係がある。プログラミングが昔ながらの哲学と単純に対応するというわけではないけれども、だからといって全くの無関係というわけでもない。その理由として、プログラミングの方法論のひとつに、世界を分析し、それを記述するという方法でプログラムを書くという考えがあることが挙げられる。

それはまさにオブジェクト指向の理念である、と考える人は、プログラミングのことも哲学のこともよく知らない。世界の様子を記述するという性質はオブジェクト指向の専売特許などではなく、平叙型プログラミング*1に共通して見られる考えだ。すなわち、関数型プログラミングや論理型プログラミングもまた、世界の様子を記述する側面を持っている。

「世界を分析して記述する方法」というのは、古来哲学が対象としてきたことのひとつだ。それなら、哲学なんてプログラミングと関係ないとするほうが、伝統に則らない考えだというべきだろう。分かりやすい例として、論理型プログラミングと分析哲学の関係を挙げる。論理型プログラミングの記法は記号論理学に由来するが、遡ればフレーゲの「概念記法」にたどり着く。フレーゲは一方で分析哲学の祖ともされるが、フレーゲ分析哲学とは、概念記法の背景にある考えを記述したものに他ならない。

あなたが論理学や論理型プログラミング言語を使っている時、あなたはその背景にある「世界の分析方法」をも、気づかないうちに体得している。そういう無意識のうちに使っている考え方を、哲学者は積極的に言語化してくれているのだ。分析哲学を知らなくても論理学を使えるかもしれないが、分析哲学を知ることで論理学自体をよりよく知ることができる。

プログラミングと哲学を結びつけて考えるというのは、古臭い考えを無批判に受け入れるということでもなければ、突飛なこじつけをするというものでもない。むしろその反対だ。自分が無意識に使っている概念があることを既存の哲学を通して自覚することで、プログラミングをより深く理解し、批判的に接することができるようにする。古い哲学が自分の考え方を完全に説明していると思われなければ、新しく考えを付け足していく。そういう営みを意識的に行うことが、プログラミングと哲学を結びつけて考える意義だろうと思う。

*1:declarative programming. 定訳は「宣言型プログラミング」だが、言語学では「命令文 imperative sentence」「平叙文 declarative sentence」と言うのだから、当然「命令型プログラミング imperative programming」に対して「平叙型プログラミング」と訳すべきだ。

Referential Transparencyの代わりに使える概念案

Referential Transparencyという概念が指すものは漠然としているので、もっと意味が明瞭で使いやすい用語を定義し、色々な言語の性質を記述してみる。

前提として

  • 式は原子式か複合式である。
  • 複合式は関手(functor)と項(argument)から構成される。
〈純粋性〉
「式の意味」と「式の値」は同義である。
〈原子確定性〉
原子式の意味は原子式自身とその原子式の文脈から決定される。
〈構成性〉
複合式の意味は関手および項の意味から決定される。
〈弱構成性〉
複合式の意味は関手、項の意味および式の文脈から決定される。
〈文脈構成性〉
複合式の項の文脈は、その複合式の文脈と関手から決定される。
〈文脈弱構成性〉
複合式の項の文脈は、その複合式の文脈、関手および他の項の意味から決定される。
〈確定性〉
式と式の文脈から部分式の意味が決定される。
〈文脈確定性〉
式と式の文脈から部分式の文脈が決定される。
〈文脈同一性〉
部分式は式全体と同じ文脈を持つ。
〈同値置換可能性〉
部分式を、その式と同値の別の部分式に置き換えても、式全体は同じ意味を持つ。
  • 関手がすべて全関数である数式は〈原子確定性〉〈構成性〉〈文脈同一性〉を持つので、〈確定性〉がある。たとえば、 \{ a \mapsto 2, b \mapsto 3 \}という文脈において、式 a + bは確定した値 5を持つ。また、同じ変数は、ひとつの式の中では常に同じ値を指す。
  • C言語においては普通「式の値」でなく、副作用を含めた「式の動作」が「式の意味」だと考えるので、C言語は〈純粋性〉を持たないと言える。
  • Haskellにおいては普通「式の値」が「式の意味」だと考えるので、Haskellは〈純粋性〉を持つと言える。
  • 関手がすべて全関数である数式に非再帰的なlet式を加えても〈原子確定性〉〈弱構成性〉〈文脈弱構成性〉〈確定性〉は保たれる。

(〈弱構成性〉は、レカナティの「語用論的構成性」と同様の概念か。 http://www.wakate-forum.org/data/tankyu/42/42_09_takaya.pdf

Referential Transparencyについて取り急ぎ

Wikipedia日本語版に

参照透過性(さんしょうとうかせい、英: Referential transparency)は、計算機言語の概念の一種で、文脈によらず式の値はその構成要素(例えば変数や関数)によってのみ定まるということを言う。

https://ja.wikipedia.org/w/index.php?title=%E5%8F%82%E7%85%A7%E9%80%8F%E9%81%8E%E6%80%A7&oldid=46720534

とあるが、これは誤り。「文脈によらず式の値はその構成要素によってのみ定まる」という性質は、参照透過性ではなく構成性 (compositionality) と言う。

In mathematics, semantics, and philosophy of language, the principle of compositionality is the principle that the meaning of a complex expression is determined by the meanings of its constituent expressions and the rules used to combine them.

https://en.wikipedia.org/w/index.php?title=Principle_of_compositionality&oldid=646872914

The meaning of a complex expression is determined by its structure and the meanings of its constituents.

http://plato.stanford.edu/entries/compositionality/

参照透過性は、英語版Wikipediaによれば次の性質だ。

An expression is said to be referentially transparent if it can be replaced with its value without changing the behavior of a program (in other words, yielding a program that has the same effects and output on the same input).

ある式は、その式をその式の値に置き換えてもプログラムの動作が変わらないとき(いいかえれば、同じ入力に対して同じ作用と出力を持つプログラムになるとき)、参照透過であるという。

https://en.wikipedia.org/w/index.php?title=Referential_transparency&oldid=709215227

(この定義が正しいとは限らないが、日本語版の説明と食い違っていることは明らかだ。)

問題をややこしくするのは、式 (expression)、意味 (meaning) 、表現 (representation)、正規形 (regular form)、表示 (denotation)、参照 (reference)、値 (value)、動作 (behavior) といった用語が、文脈によってそれぞれ同義になったりならなかったりして、混同されるというところだ。それについては別に整理してまとめることにする。

ナンセンスな「電子署名」と、「失われた魔法」の話

今日の帰り道に、携帯電話会社の店舗に寄って、支払い方法をクレジットカード払いに変更してきた。身分証明証とクレジットカードを提示し、支払い方法を変更するんだけど、最後にタブレットを差し出され、指で画面への「署名」を求められた。これは変だ。その場で理由も特に聞かないまま、とりあえず日付と名前を書いて「署名」したんだけど、もったいないことをした。もし登大遊だったら、きっとツッコミを入れている。

以前、「ハンコは、ハンコが本人と書類を紐付けることと、複製(偽造)が不可能であることによって意味を持つ」というハンコの意味論の話を書いた。同じ話が、そのまま署名にもなりたつ。

mandel59.hateblo.jp

タブレット画面に指で書く「署名」には、どんな意味があるんだろう。家に帰ってから、発行された「【情報変更】申込内容確認書」をよく確認してみると、「(契約者様 ご署名欄)上記内容につきまして、確認の上契約致しました。」と書いてあって、その下にタブレットに書いた「署名」が一緒に印刷されていた。でも、タブレット画面に書く時には「上記内容」はまだ印刷もされていないんだし、「署名」が確認になっているわけがない。

タブレットに契約内容が表示されていたというわけでもない。まあ、たとえ画面に契約内容が表示されていたとしても、画面に表示されている内容とその後に印刷されている内容が同じという保証はないわけで、確認にならない。(タブレットの裏で動いているプログラムまで確認できるなら話は別だけど。)

まあ、世の中には既に「シュリンクラップ契約」とか「クリックオン契約」だとか、あるいはコンビニで画面にタッチさせて行う「本人確認」みたいな、いい加減な方法で溢れているんだけど、タブレットによる「電子署名」もその系譜のひとつなんだろう。

この「電子署名」は、ナンセンスだ。そういうナンセンスなはずの契約が、それでも機能しているのは、直接人間と人間が対面し、常識的なコミュニケーションを行っている中で行われている契約だからだ。タブレットに署名をする行為から実質的な意味が欠落していても、店員も客も嘘をつかず誠実で常識的な人間どうしのコミュニケーションが行われている。その場に関係した人間が、互いに互いを信用し、ハンコや署名などなくとも、人間自体への信頼によって、契約が成立している。そう、人間という情報メディアが信頼できる存在であるのなら、他のメディアで信用を担保する必要もない。意味もない「署名」も、人間がそれに意味のあることを信じていて、常識的なコミュニケーションに必要だという理由で、形骸化したまま使われ続ける。これは、「失われた魔法」と言うべきだろう。

考えてみると、この国では人間に対して求められる信頼性が高すぎる。日本では、人間自身が工業製品と同列に高品質高信頼が求められる存在であり、道徳的な人間と高度な職人芸が礼賛され、あらゆる社会の構成要素が理想を実現されているからこそ、優れた社会なのであると信じられている。これは、馬鹿げている。人間の品質に重きを置きすぎた結果として現実に起こっているのは、人間以外のシステムの脆弱化と、「壊れた人間」の疎外だ。

人間以外のシステムが壊れていても、全体の機能は損なわれないから放置される。そして、人間自体が壊れても、それを補完する他のシステムが壊れているのだから、壊れた人間をシステムから排除し、健全な人間に置換するしかない。

魔法の失われた、形骸化したシステムが社会に蔓延している。壊れたシステムの上で、人間がメディアとなって、かろうじて社会は成り立っている。壊れた人間は疎外される。システムの不全性を指摘するには、人間の不全性を大前提とするが、この社会では壊れた人間は排除されるのが大前提だ。私はシステムの不全性を知っているが、社会常識が、壊れた人間を導入する私の理性を排除する!

Failures of Japanese dolls emoji 🎎

3rd March is hina-matsuri (雛祭り; Doll's Day) in Japan. There is an emoji for hina-matsuri: 🎎 JAPANESE DOLLS. I'm satisfied with the JAPANESE DOLLS emoji which Google ships, but some vendors unfortunately ship uncomfortable emoji for it. Let me explain.

If you were going to draw new emoji for JAPANESE DOLLS, you would search for images of JAPANESE DOLLS with Google Images. Please try it: https://www.google.co.jp/search?q=JAPANESE+DOLLS&tbm=isch

You'll see some kind of Japanese dolls, but most of them are NOT for hina-matsuri. The set of dolls for hina-matsuri, called dairi-bina (内裏雛; imperial dolls), is like this:
f:id:mandel59:20110301160724j:plain
https://commons.wikimedia.org/wiki/File:HinaDolls-Emperor-Empress-topplatform2011.jpg

Now, here is a Google's Japanese Dolls. (Emoji images in this article are via http://emojipedia.org/japanese-dolls/)
f:id:mandel59:20160304034233p:plain

Google's emoji grasps the point of dairi-bina very well. The emperor wears a crown and a scepter, and the empress wears a hair ornament and a fan. They are put on colorful tatami. Their faces are white as most of traditional japanese dolls have white skin.

How about other vendors' emoji? This is Apple's one:
f:id:mandel59:20160304035243p:plain

They don't have a scepter nor a fan, and their dress are weired. It looks not good, but barely recognizable as dairi-bina.

This is the Japanese Dolls emoji in Twitter:
f:id:mandel59:20160304034757p:plain

Why the right doll wears a ribbon? The emoji lacks important features of dairi-bina. The designer might not see a real dairi-bina but only Apple's one and the result of Google Images.

If you want to make a new emoji font, please look at the real object rather than emoji by other vendors, and know cultures emoji related to. Thanks.

UPDATE: Although Google's one is the most typical image of dairi-bina, it is not the sole correct form. There are many variations of dairi-bina. There are also stand-up one, origami one, and even Mickey and Minnie Mouse's one! If you would like to see more images of dolls for hina-matsuri, search for them with this link to Google Images: https://www.google.co.jp/search?q=%E9%9B%9B%E4%BA%BA%E5%BD%A2&tbm=isch

RustでFizzBuzz まとめ

Rust 0.1 (2012-01-26)
プログラミング言語 Rust - M59の記録
Rust 0.4 (2012-11-16)
Rust 0.4 - Ryusei’s Notes (a.k.a. M59のブログ)
Rust 0.7 (2013-07-06)
Rust 0.7 - Ryusei’s Notes (a.k.a. M59のブログ)
Rust 0.9 (2014-01-15)
Rust 0.9 - Ryusei’s Notes (a.k.a. M59のブログ)
Rust 0.10 (2014-04-04)
Rust 0.10でFizzBuzz - Ryusei’s Notes (a.k.a. M59のブログ)
Rust 0.13 dev (2014-12-16)
RustでFizzBuzz - Ryusei’s Notes (a.k.a. M59のブログ)
Rust 0.13 dev (2015-01-03)
RustでFizzBuzz - Ryusei’s Notes (a.k.a. M59のブログ)
Rust 1.6 Stable (2016-02-22)
Rust StableでFizzBuzz - Ryusei’s Notes (a.k.a. M59のブログ)

Rust StableでFizzBuzz

前回: RustでFizzBuzz - Ryusei’s Notes (a.k.a. M59のブログ)

安定版がリリースされてからは特段試してなかったことに気づいたので、今更ながら安定版で動くFizzBuzzを載せておく。

fn main() {
    use std::thread::spawn;
    use std::sync::mpsc::channel;
    use std::borrow::Cow;

    let n = 100;
    let (tx, rx) = channel();
    for i in 0 .. n {
        let tx = tx.clone();
        spawn(move || {
            let i = i + 1;
            let b = match (i % 3, i % 5) {
                (0, 0) => Cow::Borrowed("FizzBuzz"),
               	(0, _) => Cow::Borrowed("Fizz"),
                (_, 0) => Cow::Borrowed("Buzz"),
                _      => Cow::Owned(i.to_string())
            };
            tx.send((i, b)).unwrap();
        });
    }

    let mut res = Vec::new();
    for _ in 0 .. n {
        res.push(rx.recv().unwrap());
    }

    res.sort_by(|t, u| (&t.0).cmp(&u.0));
    for t in res.iter() {
        println!("{}", t.1);
    }
}

ハンコの意味論

ナンセンスなハンコ

先日、大学で進路説明会なるものが催され、某就活支援サービスの担当者が、就活の心得のようなものを語っていた。そこで、履歴書だかエントリーシートだかの書き方の話になったのだが、「綺麗に書いて最後にハンコを押す段階で失敗して書きなおすことになるのは時間の無駄であるしバカらしいから、先にハンコを押してから書くよう」と指南した。

書類を書く前にハンコを押すとは、ナンセンスに思える。そういうナンセンスな対処を得意げに語ることを許容する社会はどこか鈍いのではないか、誰かこのことをよく考えなければならないのではないかと、そう感じた。ハンコを押すならば、その行為にどのような意味があるか、考えるべきではないのか?

実際のところ、行為に意味があることと、その意味を行為者が認識している(意図がある)ことは別だ。記号は、それを取り扱う者(あるいは取り扱う物)がその意味を認識せずとも、意味を持っている。これは、記号の意味は人間の解釈から生まれるという旧来の記号観に反するが、一元論的記号論における記号観には合致している。一元論的記号論における記号は、時空間上でループをなす情報媒体の経路であり、人間の持つ高度な認知機能・言語機能を前提としない。とにかく、ハンコに意味があることと、ハンコを使う人がその意味を理解していることは別のことなのだが、「学ぶもの」を自認するなら、記号の意味は知っておきたいものだ。

ハンコの機能

それでは、ハンコを押すという行為にはどのような意味があるのか。契印・割印・消印・捨印・止印とは|知っておいて損はない!【はんこ豆事典】[1]には、「契印」「割印」「消印」「捨印」「止印」といった用途が解説されている。[1]に見出しとして出てはいないが、他に「署名捺印」「記名押印」「訂正印」という用途もある。

このうち「契印」「止印」「訂正印」は、文書の改竄を防ぎ、文書が当人によるものであることを保証する機能を持っているものであり、署名捺印(または記名押印)に使用した印鑑と同じ印鑑を使う必要がある。「署名捺印」「記名押印」は、書類が当人の手によるものであることの証であると同時に、書類中で使われる「契印」「止印」「訂正印」を有意味にしている。

「割印」は「契印」と似ているが、少し異なる。「契約書の正本と副本、原本と写しなどの二枚の書類が元々一枚だった証として両方にまたがって押印」[1]するのであるが、これは署名捺印(または記名押印)に使用した印鑑と同じ印である必要はない。これは、文書が当人によるものであることを保証するのではなく、書類間の相関性を保証するものだからだ。

訂正印の印影は、ハンコを持つ当人にとっては任意に押印が可能だが、他人には押印不可能だ。ハンコと書類はともに物理的実体を持ち、複製が困難である。ハンコと文書は偽造が困難で、書類上の印影がハンコの印影と一致するならば、それは必ずその当人が押したという証拠になる性質があるからこそ、そのハンコには意味がある。また、割印に至っては、全く同様の割印を押すことは何人にも不可能であり、そのことが意味を担保している。「割印」が意味を持つのは、「割印が一致する文書はもう一方の文書のみ」という複製不可能性を持っているからに他ならない。

これらの例が示すように、記号の意味は、記号が複製不可能(偽造困難)であることによって担保されるのであり、個々の情報経路(ハンコの印影)の複製可能性も、記号が必ず持つ性質というわけではない。

押印廃止

履歴書にハンコを押すことには、どのような意味があるのか。履歴書に印鑑の押印って必要?はんこはシャチハタでもいい? |【エン転職】[2]では、採用担当者に与える印象の観点から、印鑑を押印する必要性について論じている。[2]によれば、今の履歴書はそもそも押印欄がない場合がほとんどだという。その背景として、1997年に閣議決定された「申請負担軽減対策」に基づき定められた押印見直しガイドライン[3]が挙げられている。[3]は認印の押印について見直しを求めたもので、方針として(自署が義務づけられていない)記名と(自署が義務づけられている)署名に分け、見直しを進めるとしている。そこには、記名に押印を求めている場合は「押印を求める必要性や実質的意義が乏しく、押印を廃止しても支障のないものは廃止し、記名のみでよいこととする」とあり、その後に具体的に該当する例が列挙してある。また、署名に押印を求める場合は、「原則として押印を廃止し、署名のみでよいこととする」とある。

しかし、「必要性」「実質的意義」の詳細については、ガイドライン中に記述はない。このガイドラインを読んだ人間が、押印にどのような意義があるか理解していると(あるいは、その押印になぜ意義などないと言えるのか理解していると)期待できるだろうか。押印の意義を理解していない人間にも、押印の意義が理解できるようなガイドラインであるべきではなかったのか。押印の意義を理解できて初めて、不適切な押印が無意味であるということも分かるのではないだろうか。

署名がある場合に原則として押印を廃止するのは、署名それ自体に、その書類が当人の手によるものであると示す意味があるからだろう。しかし、先ほど見たように、署名捺印は他の意味も持っているから一概に署名捺印の捺印を廃止してよいとは言えない。訂正印を押す場合には、やはり捺印も必要になるだろう。(歴史的には署名→花押→印鑑と変遷してきた[4]のであり、筆記具の変化が大きいとはいえ、印鑑が廃止され再び署名に戻るというのは、奇妙だ。)

一方、記名に押印する場合は、記名だけでは押印と同じ意味を持たないから、押印を廃止するには「必要性」「実質的意義」の有無が問題とされるのだろう。履歴書は、「押印を求める必要性や実質的意義が乏しく、押印を廃止しても支障のない」例に「該当すると思われる」として列挙されたものに含まれている。履歴書は「単に事実・状況を把握することのみを目的としているもの」とされており、これに押印することは実質的意義などないと判断している。事実の確認をするだけだから、履歴書などは改竄される可能性が低いし、ハンコによる確認など必要ないということだろうか。事実の確認というのであれば、ハンコが押してあることが、その確認を意味あるものにするのではないだろうか?

しかし、よく考えると、そもそも今は認印の押印について話をしている。認印は印鑑登録されていないのだから、その認印が本人のものであるか確認する手段がないわけで、その時点で本人確認というハンコの意味は失われている。そのため、たとえハンコが押してあっても書類の正統性・完全性の保証にはならないし、改竄は防げない。

おわりに

ハンコには、書類の正統性・完全性の証明、書類の改竄の防止という機能が達成されるという、重要な意味があった。その意味を担保する手続きは煩雑になるだろうが、真に価値がある書類だからこそ、偽造されないように苦労し、工夫を施してきたわけだ。ハンコを廃止していいのなら、その書類は偽造されようが大した問題のない類の書類であり、その程度の価値の低い書類を人は書かされていたことになる。押印が廃止できるなら、書類自体廃止できるかもしれない。

結局のところ、「押印見直しガイドライン」というのは「実質的意義」などと言いながら、本当に押印の意味を議論することはなく、ただなんとなく無駄らしいという感覚で廃止しようというものだったのではないか。押印の意味を考えないから、「押印の廃止が、申請・届出の電子化・ペーパーレス化に資する点にも留意するものとする」などという意味の通らないことを言うのではないだろうか。電子化されようが、記号に求められる機能には変わりがない。電子化されてもなお、ハンコに相当する電子署名というものがある。電子署名もまた、無意味だから廃止とされるのだろうか。いや、既に形骸化し、意味が見失われた規則によって運用されている例はたくさんあるだろう。

この社会は、このように、不完全で、意味を持つかどうかよく分からない記号で溢れている。見方によって、それは形骸化したようにも、なお有意義なようにも見える。[1]は、履歴書に押印欄がある場合や、採用担当者から求められた場合には押印することとしている。印章ひとつで印象が変わる。書類の正統性を示す意味を失ってなお、就職に繋がるという意味があるのであれば、人はハンコを押すのだろう。ハンコは、誠実さを暗示する。ひとつひとつの記号は形骸化し、ほとんど意味がなくなろうとも、大量の誠実さの証があれば、その人間は誠実だと判断される。それもまた、記号の持つ力なのだ。

付録: 一元論的記号論の意義

ハンコの意味の分析を、旧来の記号論で行いうるだろうか、確認してみたい。(一元論的記号論は、未だアイディア段階だ。)

ここまで「意味がある」と表現してきたことは、むしろプラグマティクスで言う「効力」に近いのではないかと思うだろう。表現は対象と結びついている時に「効力」を持っていると考えられる。しかし、ハンコの意味というものは、表現と対象に分けることで理解できるものではない。割印は、片方の割印ともう片方の割印の対応性によって意味があるのであり、その関係は相対的である。ハンコと書類の関係も同じで、両方が物理的実体である。ハンコはまた、当人という存在に所有され、他人が物理的に手にすることはないという関係で結びついている。そして、割印が突き合わされ、ハンコの印影と書類の印影が照合され、そのハンコを当人が持っていることが知られていることで、記号の意味は確認される。

今の例は、記号の意味の確認がすべて人間の認識の中で起こっているのだけれども、記号を機械的に処理することもできるわけだから、人間が確認者である必要もない。人間が処理しようと機械が処理しようと、記号系全体の時空間におけるループの構造が同様であれば、つまり記号系が同じように振る舞えば、記号系全体は同じ意味を持つ。

一元論的記号論における「意味」の用法は、日常語としての「意味」によく合致し、説明できていると思う。これを、旧来の「シニフィアン」「シニフィエ」のような概念を使って分析するのは困難だ。(ハンコの意匠というシニフィアンに対応するシニフィエを探ったところで、ハンコの意味は出てこないだろう。)一方、「記号」の方は日常語としての用法からは離れている。ここで「記号」といった時、これは、旧来の記号の構成要素に相当する部分などを全部含めた、ループ状の情報経路全体を指している。一元論的記号論では「代表項」「心的対象」「外的対象」「シニフィアン」「シニフィエ」などといった概念は、「記号」(あるいは記号の束)の一部を恣意的に切り取ったものとして表現できる。

人間は、記号系自体を認識し、記号を見出すことができる。つまり、脳内に記号系のモデルを作り上げ、各部分間に相関性があると認識できる。「意味するもの」と「意味されるもの」という区別は、各部分自体の重要度によって決定されるのだろう。環状構造の絡みあった記号系の一部分だけを切り出して「意味するもの」と「意味されるもの」に分ける行為は恣意的な解釈で、これが旧来の意味での「記号」だと言える。書類の一部である印影を「意味するもの」とすると、「意味されるもの」は、印影を貫く記号*1の残りのどの部分のことでもよい。記号系の範囲を書類のワークフローに限定するか、社会全体とするかで、「意味されるもの」がどの範囲を指すかが変わってくる。

*1:印影を情報経路と見なしたとき、その経路を通る複数の記号すべて