日本語でプログラミングができる言語3選！できることや将来予測を解説

この記事では、日本語プログラミング言語について、歴史やメリットデメリット、私の知っている代表的な言語をプロフェッショナル向けに解説します。興味がない方はぜひご覧ください。


# 日本語プログラミング言語とは？

プロフェッショナルな方には釈迦に説法ですが、念のためプログラミング言語にまつわる重要ワードをまずおさえてから、日本語プログラミング言語を定義します。
##  プログラミング言語とは？
プログラミング言語は、人間とコンピュータの間で手順を認識させるための形式的な言語であり、自然言語とマシン語の間にあります。プログラミング言語は、低水準言語と高水準言語に分けられます。
##  低水準言語とは？
0と1の組み合わせからなるマシン語に対して、その命令セットに対して英文字を割当てたのがアセンブリ言語です。アセンブリ言語は、低水準言語とされます。
##  高水準言語とは？
それよりは若干自然言語寄りの形式言語Fortranなどが登場し、高水準言語と呼ばれました。高水準言語には、アセンブリ言語をインラインでも記述できオペレーティングシステムなどのシステム記述用言語として設計されたC言語やその後継言語、英語の自然文らしさを取り入れているPythonなどがあります。
##  日本語プログラミング言語とは？
あくまで形式言語と高水準言語の範疇で、主に英文字ではなく日本文字（日本漢字、ひらがな、カタカナ）を使ったプログラミング言語のことです。


# 日本語プログラミング言語の歴史
| 登場時期 | 言語名 |備考|
|:-------:|:-------:|:--------|
| 1982年|ぴゅう太||
| 1983年|和漢||
| 1985年|Mind|v1 Forth, Mind|
| 2000年|TTS|v1 VB6 プロデルの祖先|
| 2001年|ひまわり|v1 Delphi なでしこの祖先|
| 2003年|ドリトル|教育用に特化|
| 2004年|なでしこ|v1 Delphi|
| 2007年|プロデル|v1 C# CLI|
| 2012年|Mind for Android|v1 C, Java, Mind|
| 2017年|Mind|v8 C, Mind|
| 2018年|スミレ|C# CLI プロデル互換|
| 2018年|なでしこ|v3 node.js|
| 2019年|Mind for Android|v2 C, Java, Mind|
| 2020年|スミレ畑|Blazor WebAssembly プロデル互換|

80年代前半ごろまでのパソコンは非力で日本語の入力や出力がネックになっていました。しかし、PC-DOSに独自の日本語規格を実装して日本語処理能力を高めた日本電気製パソコンが日本市場を席捲すると日本語ワープロソフト一太郎も登場し、パソコン上での日本語の入出力は極あたりまえの操作となりました。このころに本格的に実用的な日本語プログラミング言語Mindなどが登場し始めます。

その後、パソコンの性能もあがってゆき、WindowsとMS-Officeが日本市場を席捲し、日本電気製パソコンや一太郎の独占的地位が消滅します。プログラミング言語の主流もウィンドウGUIを操作できるアプリケーションが容易に生産できるものとなります。このころ、プロデルやなでしこの前身であるTTSneoやひまわりがWindows用日本語プログラミング言語として登場します。

MindはWindows対応の遅れから一般開発言語としての知名度が相対的に低下しますが、商用サービスのバックエンド側のシステム記述言語として実績を積んでいきます。[^1]
実行速度が改善されたインタプリタ言語なでしこv1がメディアでも多く取り上げられ、日本語プログラミング言語の代表的地位を獲得します。日本語プログラミング言語全体的な認知度の低さから、C#で実装されてオブジェクト指向にフル対応したプロデルは相対的に低い知名度となっていますが、よりプロフェッショナル向けの環境となっています。

# 日本語プログラミング言語のメリット・デメリット
## メリット
日本語話者（読者・識字者）にとっては非常にわかりやすい。なにが書かれているかは、ぱっと見把握することが可能で、まるで英語系実装言語のソースコードに書かれた日本語の疑似コードプログラミングのコメントのように見えたりします。
## デメリット
あくまで日本語（日本漢字、ひらがな、カタカナ）を使った形式言語ではあるため、各言語の独自仕様の部分は、正確に理解する必要があります。一般に言われているような、詳しい言語仕様がわからなくても普通の日本文のように書ける、と思ったら大間違い的な面はあります。

# 日本語でプログラミングができる言語3選
では、なぜ筆者は日本語プログラミング言語を推しているかと言いますと、そのソースコードが美しく見えるからです。日本語キレイ。「愛」とか「あい」とか「アイ」とか完全な～「AI」とか。

## なでしこ
なでしこには、Delphi（デルファイ）で実装されたインタプリタ言語V1とWebアプリケーション用として開発されたV3があります。
V3はなでしこに近い日本語ソースコードからJavaScriptにトランスコンパイルします。node.jsで実行すればサーバ側プリケーションとしても実装できます。現時点でもっとも一般的なWebアプリケーション実行環境を選択していると言えるでしょう。
ほとんど知られていない存在として、後述するプロデルのようにC#で実装され共通言語ランタイム(CLR)[^2]上で実行されるマルチプラットフォーム版のV2がありますが、こちらは正式リリースはされず開発は中断されたようです。

## プロデル
プロデルは、C#で実装されたオブジェクト指向の中間コードコンパイラ言語で、共通言語ラインタイム(CLR)で実行されます。
また言語名は異なりますが、Webアプリケーション用として開発されたスミレ畑があります。スミレ畑はプロデル互換の日本語ソースコードからWebAssembly[^3]にコンパイルします。WebAssemblyはネイティブに近いコードをブラウザで実行する新しめの標準規格です。実行速度は環境の原理的能力としてなでしこv3より速いと言えるでしょう。

## Mind（マインド）
MindはCで実装されたランタイム環境をもつ軽量中間コードコンパイラ言語で、前述の2大日本語プログラミング言語に対して、環境の原理的能力として、より高速な処理系を有しています。V7より前のバージョンはネイティブコードを生成するコンパイラ言語でもありました。
Windows版とLinux版とAndroid版があります。
またWebアプリケーション用としてMind-CGIライブラリがあります。さらに低レイヤーなソケット通信にも対応しています。

# 日本語プログラミング言語の将来予測
最新のなでしことプロデルは、実行環境として業界標準のランタイム(node.js、WebAssembly)を選択することで、さらなる発展をしてきていると言えるでしょう。

言語仕様としては日本語の語順を一部導入しているこれらの日本語形式言語は、逆ポーランド記法（日本語の語順に近いとされる）が原理的に実装されているMindの影響を多かれ少なかれ受けていると考えられます。

また、なでしこといくつかのスクールさんも、この語順の読みやすさから、初心者でも書きやすいという主張を展開されてきたことから、いい意味でもよろしくない意味でも、日本語プログラミング言語＝初心者向け　というステレオタイプが形成されているように思われます。

一方で、プログラミング言語はあくまで形式言語なんだから、日本語の語順を導入せず日本語の文字さえ使われて入ればよしとする日本語プログラミング言語の試みもあります。[^4]

昔のパソコンは非力で、トランスレータはインタプリタ言語やコンパイラ言語に対して一段低いモノと認識されていました。

しかし、2000年代に入ってJavaScriptの互換性問題から、異なるバージョンのJavaScript同士をトランスレートする処理系babelなどが、トランスパイラ、トランスコンパイラとして一般的に使用されるようになりました。JavaScriptの上位互換として静的型付け言語としてソースを記述してJavaScriptにトランスコンパイルするTypeScriptもかなり一般的に使用されるようになっています。

従って、トランスレータはいまいちの処理系というようなステレオタイプは、今日的には払しょくされていると考えてよいでしょう。

バイナリのランタイムコード（ネイティブなり中間コードなり）を生成してしまうと、一般的な他の実装言語との相互運用という面では難がありますので、日本語形式のソースコードを他の実装言語のソースコードにトランスコンパイルする処理系なども、今後は登場するかもしれません。なでしこv3は、その先駆けとも言えるでしょう。


[^1]: Scripts Lab.Inc.ニュースリリースより
	2004/06/15	MindSearch II（Z-XCV）がグルメ情報サイト『ぐるなび』に採用
	2008/05/07	LAWSONネットショッピング の検索にPinPoint Finderが採用されました
[^2]: Common Language Runtime, CLR は.NETアプリケーションを実行するための仮想機械
[^3]: WebAssemblyは高水準言語の特徴を持つアセンブリ言語として設計されていて、命令セットはバイナリ形式で定義されている。
[^4]: Qiita [「なぜ、自然な日本語をめざさないのか」という開発者さんの記事に感銘をうけた話](https://qiita.com/mylifewithviolin/items/afe058c3be2c5b69626c)　参照