プログラミング言語といえば何を思い浮かべますか?
JavaScript? PHP? Python? Java? C#? それともWhitespaceだったりしますか? たくさんあると思います。
ですがその言語のほとんどが英語ベースですよね?(Whitespaceは違うけど...)

今回はすべて日本語で書けるプログラミング言語を試してみたいと思います。

「なでしこ」とは

今回試してみるすべて日本語で書けるプログラミング言語というのは「なでしこ」というものです。
すべて日本語で書けるので初心者でもとっつきやすいプログラミング言語となっています。

なでしこv1

なでしこにはv1とv3があり、v1がWindows向けのプログラミング言語です。
Windows上でバッチ処理の記述をしたり、アプリを作ったりできるそうです。

なでしこv3

なでしこv3ではWebブラウザで動作する言語です。
JavaScriptと同じような役割をしてくれます。
今回はv3の方を試していきたいと思います。

なでしこの実行環境

まずなでしこを実行する環境がなければ何も始まりません。
今回は一時的に試すだけなのでなでしこの公式ホームページにある「なでしこ3 Web簡易エディタ」を使用したいと思います。
実際に公開するサイトに適用させる方法はこちらのページからやり方を見てください。
f:id:pocopota:20210829224527p:plain

基本文法

プログラミングをする上で基本となる文法を見ていきましょう。
「プログラミング入門」とかの記事でまとめられてそうな基本文法の一部を持ってきました。また複数ある書き方の一つであったりなどかなりざっくりと書いています。
詳しく知りたい方は公式の文法のマニュアルを見てください。

こんんちは!なでしこ

「こんにちは」と表示

↑これで”こんにちは”と表示されます。 なんかこの説明を見たときは思わず笑ってしまいましたね。「本当に全部日本語だ」って。
一種の感動を覚えましたw

「こんにちは」と表示。
「こんにちは」と表示する。
「こんにちは」と表示しろ。
「こんにちは」と表示してください。

また語尾が命令形や敬語でもきちんと表示されるようです。
製作者のこだわりを感じます。

助詞区切りの法則 日本語では多くの場合「漢字やカタカナ+ひらがな」という形をしています。そのため、なでしこでは、助詞「と」「を」「が」「から」「まで」などで、単語の区切れを認識しています。つまり、上記のプログラムでは、『「こんにちは」|と|表示』と区切りを解析します。
もちろん、語句の区切れを明示的に示したい場所に、句読点を入れて書く事もできます。

こんなことも書いてありました。すごく細かく作られているのがわかります。

コメント

# ここはコメント
※ ここはコメント
// ここはコメント

様々なものに対応しています。この記号から行末までをコメントとして見てくれます。

/*
ここは全部コメント
ここは全部コメント
ここは全部コメント
*/

こうすると複数行をコメントにすることができます。

計算

1を表示

数字を表示させるには「」で囲まずにします。

1+3×2を表示 #7が表示される
(1+3)×2を表示 #8が表示される

計算は定番のやつですね。
もちろん足し算より掛け算のほうが優先されるので一行目のものは7が、()で囲むと囲まれたほうが優先して計算されるので8が表示されます。

そしてここにも製作者のこだわりを感じるポイントが。
日本語で計算式を書くことができるのです。

1に2を足して3を掛けて表示 #9が表示される
5に6を掛けて5を足して7で割って表示 #5が表示される

こうして書くこともできます。ちょっと見にくいかな()

説明するほどでもない気はしますが演算子表を置いときます。

演算子役割
+足し算
-引き算
×または*掛け算
÷または/割り算
%割り算のあまり
&文字列の足し算
~階乗

変数

飴数=50
人数=5
飴数÷人数を表示

こんな感じで"変数名=値"で変数を使うことができます。
変数名は絵文字も使えるらしいです。絵文字が変数名で使える言語は初めて見ましたw。
またひらがなの「を」「から」「の」「に」などの助詞は使えないらしいです。日本語のプログラミング言語特有の予約語ですね。

条件分岐

条件分岐は「もし」文を使います。if文ではなく「もし」文です。

[書式]

もし、(比較式)ならば
  # ここに真のときの処理
違えば
  # ここに偽のときの処理
ここまで

のような感じで書きます。 比較式は↓こんなものです。

比較式意味
a = baとbが等しいか
a > baがbより大きいか
a >= b または a ≧ baがb以上か
a < baがbより小さいか
a <= b または a ≦ baがb以下か
a <> b または a ≠ baとbが異なるか
点数=80
もし、(点数=100)ならば、
  「100点!おめでとう!」と表示
違えば、もし、(点数>=70)ならば、
  「もう少し!」と表示
違えば、
  「頑張りましょう」と表示
ここまで

このように書きます。

点数=80
もし、点数が100ならば、
  「100点!おめでとう!」と表示
違えば、もし、点数が70以上ならば、
  「もう少し!」と表示
違えば、
  「頑張りましょう」と表示
ここまで

条件は式でなく日本語で書いてもきちんと動作してくれます。

繰り返し

N回繰り返す

回数を指定して繰り返したい場合は「N回構文」を使います
書き方はこう

[書式]

N回
  #繰り返したいプログラム
ここまで
10回
  「こんにちは」と表示
ここまで

こうすると”こんにちは”と10回表示されます。
これがN回構文です。

Nの間

ループ変数を利用する方法です。
書き方はこう↓

[書式]
(変数)を(開始値)から(終了値)まで繰り返す<br />
  #ここに繰り返し処理<br />
ここまで。
Nを1から10まで繰り返す
  Nを表示。
ここまで。

こうすると1~10までの数字が表示されます。

これで基本的な文法は終わりです。

FizzBuzzをしてみよう

基本的な文法がわかったところで定番(?)のFizzBuzz問題をやっていこうと思います。
FizzBuzz問題とは1から数字を言っていきその数字が3で割り切れる場合は「Fizz」を、5で割り切れる場合は「Buzz」を、3でも5でも割り切れる場合は「Fizz Buzz」と出力します。

結果として

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz Buzz, 31, 32, Fizz, 34, Buzz, Fizz, ...

↑これが出力されたら成功です。

今回は定番の繰り返しと条件分岐を使って書きたいと思います。

Nを1から100まで繰り返す
  もしN%3=0ならば、
    「Fizz」を表示
  違えば、もし、N%5=0ならば、
    「Buzz」を表示
  違えば、もし、N%3=0&&N%5=0ならば
    「Fizz Buzz」を表示
  違えば、
    Nを表示
  ここまで
ここまで

これできちんと動きました!プログラムの仕組みとかは説明しませんので分からなくて知りたい人は調べてみてください!

この記事を書き終えて気づいた。数字が全角でも動く!

いつもの癖でこの記事で使っているプログラムで数字を使う際は全て半角で打っていました。
ですが、全角数字でも正常にプログラムは動きます。すごい

まとめ

「なでしこ」どうだったでしょうか?
初めて記述方法を見た時、感動でしたね。「全部日本語だ!」って。
また実際にきちんと動くし。

全部日本語なので「プログラミングって英語なんでしょ?難しそ~」とプログラミングを敬遠している初心者の方などの入門にいいのではないのでしょうか?
JavaScriptなどと考え方は一緒なので他の言語への挑戦もしやすくなるでしょう。

また中学校の技術の教科書に採用されているようです。
なでしこが教科書に載った件 - なでしこ:日本語プログラミング言語

ぜひ試しに触ってみることをおすすめします!なんか、面白いですよ。
いつもと似てるようで全く違う言語を触るのは。


なでしこ:日本語プログラミング言語