sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

プログラミングにおける「以上、超過、以下、未満」の表現

f:id:shikaku_sh:20191004091620j:plain
某ゲームの年齢確認より

こんなのを見た。15歳は、どこの区分になるんでしょう。こんな調子で仕様書を書かれると絶対困る。

日本の wiki にだけ「以上・以下」というページがあるのも印象的です。この言語特有の混乱があるのかもしれません。

そんなわけで、「以上、超過、以下、未満」の表現について(暇だったので)まとめた記事です。

一般的な使いわけ

数量を含む「以上、以下」の表現は、その値を含むと考えるのが一般的といえます。また、超過・未満の表現は好まれない傾向も見られます。

  • 3以上の整数値(3,4,5……)
  • 3より大きい整数値(4,5,6……)
  • 3以下の整数値(3,2,1……)
  • 3より小さい整数値(2,1,0……)

国語的に表現した例をあげてみます。

  • 慣用句は,「水に流す」,「羽を伸ばす」などのように, 二つ以上の語が結び付いて元の意味とは違った特定の意味を表すものである。(文部科学省 - 小学校学習指導要項「国語」)
  • 1より小さい分数を真分数ということ,1に等しいか1より大 きい分数を仮分数ということ(文部科学省 - 小学校学習指導要項「算数」)

2つの語から元の意味とは違った特定の意味を表せると読むし、分子が分母よりも小さい分数が真分数です。

2022 年における文化庁の「公用文作成の考え方」ではこのようになります。

  • 「以上」「以下」「以前」「以後」は、起算点を含む場合に用いる
    • 100 人以上 = 100 人を含んで、それ以上の数
  • 「超える」「未満」「前」「後」は、起算点を含まない場合に用いる
    • 100 人を超える = 100 人を含まない、それ以上の数

ややこしいのが数量を含まない「以上、以下」の表現は、その値を含まないと考えるほうが一般的です。

  • 第一次の帝都空襲に、予想以上の大痛手おおいたでをうけた祖国日本は近く第二次の大空襲を、太平洋と亜細亜アジア大陸両方面から、挟はさみ打うちの形で受けようとしている。(海野十三 - 空襲葬送曲)
  • 事項の取扱いが必要以上に細部にわたったり形式的になったりしないよう注意すること。(文部科学省 - 第3 指導計画の作成と内容の取扱い)
  • 人間相場は、お犬様以下さ。どうせ、……畜生以下の人間でさ。何をやらかしたって、ふしぎはねえ。(吉川英治 - 新編忠臣蔵

予想よりも大きな痛手と読みますし、必要よりも大きな形式はいらないと読むし、犬にも劣ると読みます。

次に、プログラミング関係のシーンで、どのように使われているのか、整理しておきます。


Microsoft の以上、以下の表現

Microsoft の表現だと、このようになります。1

演算子 結果
x < y true 場合 x がより小さい y、falseそれ以外の場合
x > y true 場合 x がより大きい y、falseそれ以外の場合
x <= y true 場合 x に等しいまたはそれよりも小さい y、falseそれ以外の場合
x >= y true 場合 x がより大きいまたは等しい y、falseそれ以外の場合

Microsoft の英語だとこうなります。

演算子 結果
x < y true if x is less than y, false otherwise.
x > y true if x is greater than y, false otherwise.
x <= y true if x is less than or equal to y, false otherwise.
x >= y true if x is greater than or equal to y, false otherwise.

以上、以下というテキストを使わずに「>」の表現は「より大きい」という表現をしていて、「≧」の表現だと「より大きい、または、その値と等しい」とすることで、説明の組み合わせから間違えがないです。(>は、等しい値を含まない=より大きいは、等しい値を含まない)


京都大学の以上、以下の表現例

日本の大学で使われている表現の例のひとつとして「京都大学大学院 空間情報学講座 - 基本事項:条件式」の記述があったので、参考に。

演算子 使い方 意味
< a < b a が b より小さければ 1、そうでなければ(等しいまたは大きい場合)0
> a > b a が b より大きければ 1、そうでなければ(等しいまたは小さい場合)0
<= a < b a が b 以下であれば 1、そうでなければ(大きい場合)0
>= a >= b a が b 以上であれば 1、そうでなければ(小さい場合)0

以上は >=演算子に、以下は <=演算子に対応するよう使われています。また、「超過・未満」ではなく「より大きい・より小さい」が <>演算子の説明に対して使われています。


東京大学の以上、以下の表現例

東京大学で公開されている「プログラムの流れの分岐」記事だと次のような表現があります。参考書の表現でしょうかね。

if (diff > 10 || diff < -10)
   puts("それらの差は11以上です。");
else
   puts("それらの差は10以下です。");

ふたつの整数値の差 diff が10より大きいかどうかを表現するテキストです。10は else に流れるので、以下は10を含みます。


プログラミングにおける書き方

そんなわけで、私は次のとおり書きます。

  • x より小さい (less than)
  • x より大きい (greater than)
  • x 以下 (less than or equal)
  • x 以上 (greater than or equal)

>=<= を「等しいか、それよりも~の場合」と毎回表現するはさすがに手間なので、以上と以下を使いそうです。ただし、超過・未満のかわりに「より大きい|より小さい」を使います。

国語的な正しさを満たしていることも大切ですが、それ以上に読む人に誤読させないことがコメントやマニュアルに求められると思います。(以上・以下に限った話でもなく)なので、曖昧な表現になる恐れがある場合は、コメントに工夫をいれるべきでしょう。

たとえば、具体的な演算子をコメントに加えておくことで、間違いを少なくすることができると思います。

/// <summary>
/// 引数 a と b の値の差が10よりも大きいかどうか (>) をテストします。
/// </summary>
[TestCase(10, 0)]
[TestCase(11, 0)]
public void Test_差が10よりも大きいか(int a, int b)
{
    var diff = a - b;

    Assert.That(Math.Abs(diff), Is.GreaterThan(10), "それらの差は10以下です。");
}

一応、結果はこのとおり。

f:id:shikaku_sh:20191004091925p:plain
10の差までエラーになります


対義語も確認する

対義語オンラインおよび対義語辞書の結果は、つぎのとおり。

「以上」の対義語に「未満」が無い、というのはポイントになる参考だと思います。他にも「以下」の類語・類義語に「未満」は無いというのも参考になると思います。

weblio 対義語 対義語辞書
以上/以下 URL URL
超過/未満 URL URL

一般的には、15歳未満としてしまうと、15歳は含まないと考えそうです。すくなくとも、誤解をあたえる恐れのある表現。


参考