見出し画像

プログラミングと法律の相違点 _ 演算子(1) ORなのかXORなのか

プログラマが気を付けることの1つは条件式に記述するときの演算子ですよね。&& じゃなくて || って書いてしまった。とか <= にすべきところを < だけにしちゃったとか。
法律の条文にも私がぶち当たった演算子があります。それが"または"です。

"または" って本当にORですか?

何言ってんだ?当たり前やろ!と思うかもしれません。
結論から言うと法律の"または"(又は) はあなたが想像する"OR"じゃないんです… 私は最初のころよくわかっていませんでした。先生に聞いても質問の意図が分かってもらえなかったし、Google先生に聞くとそのものズバリな回答もあったのですが、なんだかモヤモヤした結論でした。

法律の条文で"または"が出てきたらそれはXORです。

もうこれが今回の記事のすべてなんでここで終わってもいいんですがちょっと説明します。
ORは一般的に論理和と呼ばれ、XORは排他的論理和と呼ばれているものです。条文内の"または"がXORということは "A または B のとき X だ。"というのは

if( isA() || isB() ){
    funcX();
}

ではなくて

if( isA() ^ isB() ){
    funcX();
}

ということです。

その理解でうまくいくのか?

司法書士試験の試験範囲の中では非常にうまくいきました。
たとえばこんな問題があります。(民法199条ベース)
占有者がその占有を妨害されるおそれがあるときは、占有保全の訴えにより、その妨害の予防及び損害賠償の担保を請求することができる。
○か×か?
正解は×です。条文とかよくわからなくても大丈夫です。二行目の"及び"が誤っており正しくは"又は"なのです。この手の演算子をいじって聞かれる問題が多いのが試験の特徴なんですけど、今はとにかくここの"又は"とはつまりORじゃねえじゃん!ってことなんです。だってORなら"その妨害の予防、損害賠償の担保を請求する"の両方ともが行使可能でよいからです。

ライス? XOR パン?

レストランでハンバーグセットを頼みました。店員さんからライスまたはパンが選べますが?と聞かれて
じゃあライスとパン両方で!という人は多分いません。
暗黙的にXORだと判断してるはずです。

でも例えばある人材がほしい会社が募集要項に
ロシア語またはフランス語ができる人募集!と言っておいて
ロシア語もフランス語もできる人がやってきたら間違いなく面接するでしょう。暗黙的にORだと判断してるからです。
でもこの場合法律上では面接することはありません。だって"または"って言っちゃってる以上XORでしか解釈しないからです。

でも何事にも例外がある

試験範囲で気づいた例外があります。(民法388条)
~(略)~ 、その土地又は建物につき抵当権が設定され、~(略)

ここの"又は"は"XOR"じゃなくて"OR"です。こういう解説がだいたいどのテキストにものってるからです。
~(略)~ 、その土地又は建物の一方(又は双方)に抵当権が設定され~(略)

ここからわかることは2つ
1."~の一方"と書いてあるのは法律上"又は"がXORだから
2.直後に"(又は双方)"と書いてあるのはORでもオッケー!てことにしたいから
この条文のおかげで基本XOR解釈で問題なさそう。という自信につながりました。

終わりに

ここらへんから法律面白いな!という感覚が芽生えていったのですが、
それでもやっぱりつまずくことはありました。
だって じゃあ法律上ORを表現するときはどうするんだよ?? って思うじゃないですか。次回は自分なりの考えを書いていきたいと思います。

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