お疲れさまです、みやもとです。
先日参加したイベントで、イベント限定のカクテル「なでしこ」を注文しました。
日本酒を使ったカクテルで、たぶんパインジュースとかも入ってたのかな?
結構甘めでおいしかったです。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3477580%2F7f834aca-2644-82a9-b9cc-12651f92a5b1.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8a209aa0c5aa46d46d8da64a3e3f3e36)
カクテルの名前は花ではなくプログラミング言語と聞いて地味にびっくり。
イベント会場のバーはプログラミング言語の名前でカクテルを出しているのですが、「なでしこ」という言語の存在はこのカクテルから知りました。
せっかくなのでちょっとだけ調べて、なんなら動かしてみられないかな、というのが今日の記事です。
プログラミング言語「なでしこ」
まずは検索をかけてサイトを発見。
日本語プログラミング言語
サイトのタイトルからまずびっくり。
日本語プログラミング言語が存在するとは知っていたのですが、実際に見ることはたぶんなかったのでおそらくこれが初めての体験です。
以下、「なでしこ」の概要をマニュアルから引用。
なでしこは、スマートフォンやタブレットのブラウザで動かすことができます。実際にチュートリアルを見ながら動かしてみると、いっそう効果的に学べます。空き時間にゴロゴロしながらでも、プログラミングをマスターできるかもしれません。
チュートリアルもあったので、さっそくちょっと動かしてみましょう!
めっちゃ日本語
チュートリアルの最初は文字列表示のようです。
いわゆる「Hello World」的なやつですね。
以下がコード。
「こんにちは」と表示
一見すると「これほんとにプログラミング言語?」となりますね。
でも、そのまま簡易エディタに貼り付けて実行するとちゃんと「こんにちは」と表示されました。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3477580%2F1cb7867e-5661-eff3-9e95-26c4cd8c3b52.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=91208c4fd93b0522fdfc6a0b18d629a1)
なお、「と」を「を」に変えてもちゃんと表示されます。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3477580%2Fc1aebc24-e05b-cdb8-b1c5-982aa34ce485.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ef9977bf80970d149e79b1764fc902ce)
せっかくなので万能下の句を表示してみました。
では次、チュートリアルにあった「言う」の命令を試してみます。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3477580%2F14879fbe-21db-2b50-a5d0-a06cf8fcaa6b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=71ff72e210c4e311f5e64168109fb6e9)
なるほど、こういう動きになるのか。
音声がくるかと思ったのでちょっと意外な気も。
では次に、これまたチュートリアルにあった「話す」で実行。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3477580%2F33706c7e-75c9-56e5-6ef1-2bd04bf1c0fc.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=59afb71a23f3cc8529bcb197c64465ee)
画像だとさっぱりですが、ちゃんとこれで音声が再生されました。
おもしろいな!
「なでしこ」基本文法
いくつかいじって楽しんだので、ここらでちょっとだけ文法を見てみましょう。
以下マニュアルから引用。
そして、なでしこのプログラムの構造は、以下のような形式になっています。
「引数+助詞、引数+助詞、 ... 関数。」
『「こんにちは」と表示』という命令文で言えば、「こんにちは」が引数で、「表示」が関数となります。
また、関数を記述する場合、送り仮名はある程度自由に記述できます。例えば「表示」であれば、「表示する」とか「表示しろ」とか「表示して」のように書いても問題なく動きます。
なお、文法エラーについてはこんな記載がありました。
なでしこのプログラムは、一見すると日本語に見えます。そのため、非常にプログラムが読みやすいのですが、それでも自然言語の日本語とは異なります。
決められた構文から外れたプログラムを書くと「エラー」が表示されます。この点を覚えておきましょう。
実際にエラーを起こした時はこんな感じで表示されました。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3477580%2Faad51aac-b421-63bf-0203-199f8575fdb9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=96e824b0d78d007e12b798154db10fc1)
「書く」は命令にないのでエラーになるわけですね。
逆になでしこの文法的には合っているので、以下は日本語的には違和感を覚えますがちゃんと動きました。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3477580%2F66226da7-8ad8-ac0c-4ff7-1ac7f5b088a4.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=af52352efdf0d2bd70bb4a23a8b7f204)
感想
一見すると本当にふつうに文を書いてるだけなので、それで命令が実行されるのはちょっと不思議な感覚でした。
文法を見て思ったのですが、慣れ親しんだプログラミング言語はだいたい関数が前で引数が後なので新鮮に見えますね。
日本語ベースだと不自然に感じない反面、プログラミングしている感はちょっと薄いかもしれません。
それはそれとして動かしてみるのは楽しい。これを使って何か作ってみるかと言われるといまいち浮かびませんが、作れたら作れたですごく面白そうです。