日本語で書けちゃうプログラミング言語『なでしこ』が来年度の中学校の教科書に掲載されることになったそうです。この『なでしこ』を知ったのは実のところ、ごくごく最近です。今年4月に出版された『なでしこ』言語開発者クジラ飛行机氏の著書『プログラミング言語大全』での項目でした。日本語っていうところで世界的にみてもマイナーですし、業界界隈で出会うことがなく、紹介がなければ知ることがない言語です。やって知った日本語でのプログラミング言語ですが、教科書に掲載されるとなれば、聞いたり触れたりする機会も増えることでしょう。それで、私のStateGoに導入すべく、日本語プログラミング言語『なでしこ』を勉強してみました。『なでしこ』を勉強してみて...勉強しての感想ですが、プログラムの読み書きを英語で四十年近くやってきた身にとって、自然な日本語で書かれるプログラミングは異世界言語そのものでした。10『なでしこ』でも上記の書き方は許容していますが、あえて『なでしこ』の特徴である純日本語表現で、インデックスに10を代入またはインデックスは10と表すことができます。同じ操作を2つの表現で表すことができます。母国語で書くとなる日本語として正しさを求めてしまいます。そのため、この流れではどれが正しいんだと考えてしまい、頭がクラクラします。なでしこが目指す純日本風のこだわりを感じるのが関数です。C系列の書き方で以下の関数呼び出しがあるとします。hoge(a,b)『なでしこ』でも上記の表現は可能ですが、こだわりの純日本語表記ではこうなります。'で')が引数と紐づけられていることです。上記の関数の定義は次のようになります。//リターンもし、助詞を次のように変更すると先の呼出しは成立しません。呼出しの間違いはエラーで警告されます。母国語だからもっと易しく習得できるかと思いましたが、長年培われたプログラム脳と日本語脳が反発しあって大変でした。StateGoに『なでしこ』をStateGoは、雛形に添ってソースコードを入力して利用するフロー型のビジュアルプログラミングツールです。ソースコードと混ぜることで、様々な言語、様々なプラットフォームでのビジュアルプログラミングを可能にします。21種類の言語、およびプラットフォームに対応しています。詳細はこちらを参照下さい。純日本語にするため、あえて、変数は日本語にしました。_今ステートさらに、StateGoの変換結果を入力するマークも以下のような日本語にしました。【StateGoの自動挿入終了】ステート関数StateGoは、ステート呼ばれるノードにプログラムを埋め込みます。プログラムは、言語別に用意されたテンプレートで展開されて、ステート関数となります。戻るステートは、『なでしこ』の関数で定義され、入力した値が展開されます。各項目の意味は以下の通りです。例として、以下のように定義されているとします。S_0001先のテンプレートで展開され、以下のようになります。戻る※branchについては、説明が長くなるので割愛しました。ステート関数の管理ステート関数の管理で扱うのは次の2つの変数です。_今ステートアンダーバーは、ユーザ利用と分ける意味で使用しています。この2つの変数を以下のようにループ内で扱うことで対応しています。$/./->#switch$は、ツールのコンバータにより挿入されれる部分開始の意味です。【StateGoの自動挿入終了】で終了します。#switchのマクロを使い展開されます。#switchのマクロの定義は以下の通りです。#switch=もし、(_今ステート=「[[state]]」)ならば、[[state]]する上記のマクロが全ステートに対して実行されます。動作の詳しい説明は、StateGoのホームページを参照下さい。サンプルStateGoなでしこサンプルはGithubで公開中です。v3のバージョンがあり、v1がWindows版でv3がOSに依存しない様になっており、node.jsまたはブラウザ上で利用可能です。サンプルは、それぞれ用意しました。TestControl.nako3実行なでしこV3サンプルについての注意なでしこV3のサンプル作成の際、ブラウザでの操作について深く考慮しておりません。ブラウザ内の遷移を考える場合、イベントドリブンまたはタイマ起動のようなJavascriptサンプルで使ったような設計が不可避と考えています。なでしこをプログラミングしてわかったことこのように『なでしこ』のプログラミングをやってきて気づいたことがありました。それは、「母国語そのものだからコメントが要らない」。当たり前っていえば、当たり前ですが、英語を母国語としない我々にとっては(特に自分以外の場合)コメント無しでは理解の半分も難しいことがあるのです。逆に英語が母国語の人たちはこれが普通の世界なのですね。変数名の命名則、スペルや省略名を大変気にするわけです。『なでしこ』についてはここまでです。ここからは、本題から外れて、日本語によるプログラミングの未来について言及してみます。私が中学の頃は、教科書にコンピュータのことなど一切書かれていませんでした。当時の学習雑誌で知り、独学し、言語はアセンブラで更に手作業での機械語翻訳でした。あれから何度ともなくパラダイムシフトが起きました。いまやプログラミングを知らずとも、スマートスピーカーを使い日本語でコンピュータに命令できる時代になりました。中学で『なでしこ』を勉強した方々が社会に出るころには、きっとシンギュラリティを間近で経験し、そして、その後の方が人生で長く経験することとなると思います。英語といった他国語でのプログラミングではなく母国語でニュアンスを含めてコンピュータに伝える時代になるのではないでしょうか?そして、AIアシストのスマートスピーカーならぬスマートエディタ、または、スマートプログラミングと言ったのが普通になる時代ではと思い馳せてしまいます。がんばれ、日本の子供たち!リンクこのページのリンクを集めました。https://github.com/NNNIC/psgg-nadesiko-sample(イラスト:TAJIBON)ツイートprogramanicStateGoという雛形に添ってソースコードを入力して利用するフロー型のビジュアルプログラミングツールを開発しています。statego.programanic.comバッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフト券が還元されます。約5,900字programanicStateGoという雛形に添ってソースコードを入力して利用するフロー型のビジュアルプログラミングツールを開発しています。サンプルV3サンプルなでしこV3サンプルについての注意なでしこをプログラミングしてわかったこと日本語プログラミングの未来リンクZennエンジニアのための情報共有コミュニティAboutZennについて運営会社お知らせ・リリースGuides使い方Publicationよくある質問LinksTwitterGitHubメディアキットLegal利用規約プライバシーポリシ。