日本語プログラミング言語Mindの小技 「つぎに」～条件分岐の終端～

# はじめに
日本語プログラミング言語Mindの小技「つぎに」について説明したいと思います。

# 対象読者
日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方

# この小技に関連するMind言語マニュアル

この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。

３ 制御構文
├ならば～つぎに
├ならば～さもなければ～つぎに
└でなければ～つぎに

>構文＝
雨降り？
　　　　ならば　傘を差す
　　　　つぎに

>このあたりはよいとして、おそらく読者は、「つぎに」にひっかかったのではないだろうか。つまり、
雨降り？
　　　　ならば　傘を差す
だけで済んでいれば、もっと「日本語らしい」のに...と。
　残念ながら、「ならば」だけでは処理の分岐を正確に記述できない。


>構文＝
雨降り？
　　　　ならば　テレビを見る
　　　　さもなければ　外出する
　　　　つぎに


>他の言語でいえば〔if...then...else...〕の構文に相当する。

>構文＝
雨降り？
　　　　でなければ　外出する
　　　　つぎに

> 要するに「ならば」の逆の判定を行う構文である。

本機能（本記事）は、下記のバージョンに対応しています。Mind８のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。

# 対応バージョン
■Mind７　■Mind８　■Mind９
■Windows版　□Linux版

# 小技の解説
構造化プログラミング言語のキホン中のキホン、条件分岐のMindの構文です。

この構文のポイントは分岐の終端に「つぎに」というワードが要求されていることです。プログラミング言語によっては条件分岐判定フレーズの後に、実行文が１つだけの場合は、かっこで囲ったりすることや終端のフレーズを省略できたりしますが、Mindの場合はかならず条件分岐の範囲の終端の指定が必要となります。それが一般には「つぎに」で知られていますが、じつは「つぎ」という単語であったりします。

構文サンプル例では、「雨降り？」や「外出」の定義が割愛されていますが、この記事では実際に動作するような定義例で説明いたします。

# Mindプログラムソース

```mind:ifthenelse.src
明日は　数値　１。
天気は　数値　２。
晴れは　等しいと　等価。
雨は　　異なると　等価。
しますは　つぎと　等価。
であればは　　　ならばと　　　等価。
でないならばは　でなければと　等価。

外出とは
    「外出とは外に出かけることです。」を　一行表示する。

家に居るとは
    「家に居るとは外にでかけないことです。」を　一行表示する。

メインとは
    明日の　天気が　晴れ　ならば　外出します　つぎに
    明日の　天気が　晴れ　ならば　外出します　さもなければ　家に居ます　つぎに
    明日の　天気が　晴れ　でなければ　家に居ます　つぎに

    明日の　天気が　晴れ　であれば　外出　します
    明日の　天気が　雨　　であれば　家に居て　そうでなければ　外出　します
    明日の　天気が　晴れ　でないならば　家に居たり　します。
```
メインの中の最初の３行は、Mindの標準的構文です。「つぎに」が最後についています。これは「つぎ」でもコンパイルがとおり実行もできますが、「つぎ」だけですと「つぎっ！」みたいに少し圧のある感じにとれなくもないので、恐らく「に」を添えてやんわり調にしているのかもしれません。このあたりは言語設計開発者の@killyさんのお話をうかがってみたいものです。

下の３行は「つぎに」を「します」で等価定義して、少し日本語としての自然さを改善してみた構文です。実行文は動詞のような動名詞で定義される場合が多くありますので、「します」との相性はけっこうわるくないです。

また、「ならば」「さもなければ」「でなければ」を若干使用頻度高めの類似語「であれば」「そうでなければ」「でないならば」に等価定義してみています。

単語の等価定義の「等価」については[こちらの記事](https://qiita.com/mylifewithviolin/items/51e1522621cd4a4d5ab2)もご参照ください。

# コンパイル結果
ではコンパイルしてみます。下位ライブラリはfileを指定します。

## Mind９
下図はMind９βです。
```cmd:
C:\developments\vscode\mind9>mind ifthenelse file   

日本語プログラミング言語 Ｍｉｎｄ Version 8.11 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> ifthenelse.exe
```
## Mind8
```cmd:
C:\developments\vscode\mind9>mind ifthenelse file

日本語プログラミング言語 Ｍｉｎｄ Version 8.07 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> ifthenelse.exe
```
## Mind7
```cmd:
C:\developments\vscode\mind9>mind ifthenelse file
日本語プログラミング言語 Ｍｉｎｄ Version 7.5 for Windows
          Copyright(C) 1985-2004 Scripts Lab. Inc.
          Single user license.  Serial No:********
コンパイル中 - 終了
Coping.. C:\mind7\bin\mindexec.exe -> ifthenelse.exe
```
# 実行結果
つづいて実行してみます。みなさんは何行どっちが出力されるかわかりますかな？
Mind7の結果です。記述は割愛していますがMind8/9βも同じです。

```cmd:
C:\developments\vscode\mind9>ifthenelse
家に居るとは外にでかけないことです。
家に居るとは外にでかけないことです。
家に居るとは外にでかけないことです。
家に居るとは外にでかけないことです。
```

# Mindプログラムソース(補足)
下記のソースの「天気」の値を２から１に返ると結果は変わります。

```mind:ifthenelse.src
明日は　数値　１。
天気は　数値　１。
```

# 実行結果(補足)
こんどはどちらが何行でるかみなさんはおわかりになるかな？
Mind8の結果です。記述は割愛していますがMind7/9βも同じです。

```cmd:
C:\developments\vscode\mind9>ifthenelse
外出とは外に出かけることです。
外出とは外に出かけることです。
外出とは外に出かけることです。
外出とは外に出かけることです。
```


# 参考情報
この小技「つぎに」を「します」に置換した構文を使った記述例の記事はまだありません。

開発者の@killyさんがコメントで解説いただいている「ひらがな」の扱いは下記の記事が詳しいです。

https://qiita.com/mylifewithviolin/items/20de69827878f88ca089

# おわりに
いかがでしたでしょうか？なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕４０周年です。

## 本記事シリーズのご紹介
本記事シリーズ「日本語プログラミング言語Mindの小技」は日本語プログラミング言語Mind生誕４０周年プロジェクトの一環です。興味を持たれた方は[日本語プログラミング言語Mind公式サイト](https://www.scripts-lab.co.jp/mind8download/download.html)にアクセスして、Mindコンパイラをダウンロードできますよ。[Mindプログラミングマニュアル（基本文法）](https://www.scripts-lab.co.jp/mind/ver8/doc/index.html)ページから気になるお題の構文を選んで、この記事のようにサンプル実装実行してQiitaにアウトプットしてみましょう！筆者はMind7/8/9βで検証しておりますが、もちろんMind8だけでもじゅうぶんです。またお題が既存記事とかぶるのはまったく問題ありません。同じお題でみなさまの多様斬新なサンプルをお待ちしております:grinning: