![ソフトウェアエンジニアのための論理スキル[再]入門](https://sqripts.com/wp-content/uploads/2024/03/mochizuki_thumb_02-1024x512.jpg)
テストエンジニアが身につけておきたいスキルの一つに「論理スキル」があります。
この連載では、「プログラムのレベル」「文や文章のレベル」に分けて、論理スキルの基本である「論理の言葉」を徹底解説します。
<テストエンジニアのための論理スキル[再]入門 連載一覧>※クリックで開きます
[第1回] なぜ、テストエンジニアに(も)論理のスキルは重要なのか【連載初回、全文公開中】
[第2回] プログラムレベルのロジック (1)概要編
[第3回] プログラムレベルのロジック (2)解説編・基本の論理演算
[第4回] プログラムレベルのロジック (3)解説編・論理演算の組合せ
[第5回] 文レベルのロジック (1)文レベルのAND/OR/NOT
今回の第5回から、「文レベルの論理の言葉」に焦点を当てて解説します。
長い文章も短い文のつながりで筋道がつくられています。ひとつの短い文の中にも構造があります(論理演算でつながれるような語句と語句との関係や、前提と結論といった関係など)。第5回・第6回は、そのような、一般的な文章の構造を支える「論理の言葉」を取り上げます。
文中では、一般的な文章や日常会話などで用いられる語句や表現を一般語と呼びます。
文や語句を否定する言葉、つなぐ言葉
- 「監視対象のいずれかが 異状を示していたら、緊急対応の判断を下す。そうでなければ引き続き状況を監視する」
- 「A、B、Cがすべて見つかり、かつ良好な状態なら、合流地点に集合する」「どれかが見つからないか、または良好な状態でない場合は出発点に戻る」
- etc.
……というように、
一般語でも論理演算(第3回・第4回参照)に相当する言葉を使って主張を組み立てたり文を表したりします(そもそも、一般語の意味や働きから論理的側面を抽出して論理の言葉を作ったのですが)。
- 否定(NOT)に相当する一般語の例: “~でない”
- 論理積(AND)に相当する一般語の例: “かつ”、“および”、“ならびに”、(ほか、ANDの関係であることを明示する修飾語句)
- 論理和(OR)に相当する一般語の例: “または”、“あるいは”、(ほか、ORの関係であることを明示する修飾語句)
一般語として使われる時は、「論理の言葉(論理的な側面に焦点を当てた使い方)」とは意味や働きがちょっと異なる場合があります。
言葉は同じものを使うだけに、意味の違いを識別するのが難しいこともあります。
文章の筋道を把握しようという時には「どの意味で使っているか」に注意を向けるのが望ましいです。
ソフトウェアやシステムの仕様書といった文書類はソフトウェアの振舞いを規定/記述するのが目的ですが、書き手が「論理の言葉」を意識して使っているとも限りません。
“~でない”の留意点
論理としての否定は、全体を打ち消す
否定「~でない」は、「Aである」という主張や判断全体の否定であり、「Aでないものや場合すべて」を含みます。
「Aであるということはない」という表現がニュアンスとしては“合っている”でしょうか。(図5-1)

- 「Aさんは朝食にパンを食べる」の否定は「Aさんは朝食にパンを食べる、ということはない」
- 「朝食を食べない」も含むし、「朝食には(パンでなく)白米を食べる」も含む
- 「Bさんは毎日朝の散歩をする」の否定は「Bさんは毎日朝の散歩をする、ということはない」
- 「朝の散歩を全くしない」も含むし、「朝の散歩をする時もある」も含む
- 「(項目Aは整数の入力項目につき)項目Aに整数を表す数字でない文字を入力すると警告される」
- 「整数を表す数字でない文字」には、英字、記号、漢字、平仮名、カタカナ、……などがある
一般語では、“反対の意”を表すことがある
一般語としての否定の表現には、「主張全体の否定」というよりは、もとの主張と反対のことを主張したり、感情や考えが込められることがあります。
- 「Cさんは若手に優しくない」は、「若手に厳しい」という意味に解釈されることがある
- 「Dさんは、鶏の唐揚げは好きではない」は、
- 「鶏の唐揚げは嫌い」や「食べたくない」というニュアンスが込められていることがある
- ほか、「今年の入学生は全員優秀ではない」、「その作家の作品は全部読んでいない」、etc.
数値の範囲を表す表現の否定
否定そのものの話題ではありませんが、第3回で触れた「数値の範囲を表す表現の否定」への補足です。
一般語では、「以上」と「超」、「以下」と「未満」を“曖昧に”表し/解釈することがしばしばあります。
- 「より大きい(=超)」の意味合いで「以上」と言う
- 「○○以上」の否定のつもりで「○○以下」と言う etc.
SNS投稿のまとめサイトですが、格好の例があります。
「なら何ミリでもダメじゃね…?」
togetter
松屋の丁度いい肉の厚さについて書かれた
ポスターのキャッチコピーが難しい
この例のように気づきやすいとは限りませんし、逆に、“論理的”な意味で使われているのを設計者や実装者が「解釈違い」をしてしまう……という悲劇も起こる可能性があります。
“かつ”(AND)の留意点
暗黙の“かつ”
一般的な文章では、暗黙の裡に論理積(AND)と見なされる(読み手が見なす)場合があります。
ANDであることを明示する接続語などは使われていないが、文脈上「これらの条件を同時に満たすこと」が想定されている(と読み手が解釈しやすい)場合です。
- 典型的な例として、条件や事項の列挙
- 数値の範囲を示す表現(「x以上y以下」など)
- 複数の連続する事象で、先行する事象が後続事象の前提となる場合(第2回の「ファイルを1文字ずつ出力するプログラム」の例)
「暗黙のAND」と解釈できるからといって、その解釈が唯一で正しいとは限りません。第1回の“例題”「遊園地のアトラクションの注意書き」は、そのような表現になっています。
本アトラクションは以下の方のみ利用できます。
・身長130センチ以上190センチ以下
・体重90キログラム以下
・年齢満15歳以上
これを最初にANDの関係と思って読んだ人は多いのではないでしょうか。しかし、この表現はORの関係として読んでも“妙なアトラクション”なりの条件と解釈はできるでしょう(「こんなのおかしい」「あり得ない」という感想は抱くかも知れませんが)。どちらとも明示されていない以上、どちらの解釈が“正しい”かはこの箇所だけでは判定できません。そして、どう解釈したかによって「そのアトラクションを利用できる人/できない人」の条件も変わってきます。(図5-2)

ANDの関係であることを示す語句
論理積(AND)の関係を示すのに使われる語句はさまざまあります。
- “そして”、“また”、“さらに”: 事項の列挙などで目にします。“そして”は時間的順序関係を意味することもありますが、ANDの関係には時間的な順序は含みません
- “だが”、“しかし”(など逆接の接続語句): 逆接の前後が「ともに成り立つ」とした上での表現なので、ANDの関係になります
- 例「入力ファイルを開くことができるが、中身が空の場合」⇒
「入力がファイルを開くことができ、かつ、中身が空の場合」
- 例「入力ファイルを開くことができるが、中身が空の場合」⇒
“または”(OR)の留意点
排他的な“または”
論理和(OR)の「どちらかが真」には「両方とも真」の場合も含まれますが(第3回参照)、一般語の“または”は「AかBかどちらか一方のみが成り立ち、A, Bともに成り立つことはない」という意味で使われることも多くあります。
- 「容疑者Xの逃走先は、札幌か、または沖縄だ」
- 札幌と沖縄に同時に向かうことはできない
- 「サービスの購入には、一括年払いか、または月払いのどちらかが選べます」
- 一括の年払いと月払いをともに選ぶことはできない
この意味合いでの“または”を「排他的な“または”」と呼んで、論理和の“または”と区別することもあります。(図5-3。論理和の“または”は「包含的」とされます)

なお、「排他的な“または”」に相当する論理演算もありますが、論理和とは異なる演算です(真理値表が異なる)。
“ないし”
論理和(OR)を表す言葉として“ないし(乃至)”も使われることがありますが、“ないし”には二通りの意味があります。
- “または”、“あるいは”と同義
- 数量・時間などの上下・前後の限界を示して、中間を省略する際に用いる
(参考:goo国語辞書)
むすび
一般的な文章でも使われるAND/OR/NOTに相当する言葉の、論理の言葉としての意味や使い方と、一般語としての意味や使い方、その違いや留意点を見てきました。普段はあまり意識することはないかも知れませんが、仕事で読み書きする時には注意しましょう。
第6回では、これまで出てこなかった「文レベルの論理の言葉」を取り上げます。
筆者のnoteサイトで、「論理スキル[再]入門」を書こうと思った理由・経緯を綴っています。 ■論理スキル・“入門編”のこと (T3:Pt1:Ch01) よろしかったらご覧ください。
参考文献
- 『入門!論理学』(野矢茂樹 / 中央公論新社)
- 『論理的思考の技法〈1〉第2版 「ならば」をめぐって』(鈴木美佐子 / 法学書院)
- 『新版 論理トレーニング』(野矢茂樹 / 産業図書)
連載一覧
[第1回] なぜ、テストエンジニアに(も)論理のスキルは重要なのか【連載初回、全文公開中】
[第2回] プログラムレベルのロジック (1)概要編
[第3回] プログラムレベルのロジック (2)解説編・基本の論理演算
[第4回] プログラムレベルのロジック (3)解説編・論理演算の組合せ
[第5回] 文レベルのロジック (1)文レベルのAND/OR/NOT

