この記事は、プロデル公式ブログに掲載したコラムを再投稿したものです。
日本語でプログラムを書きたい
多くのプログラミング言語では、英単語や記号の羅列によって定義や動作を記述する言語仕様です。ただ日本語で読み書きし話し考える日本人にとって、義務教育の中で英語を学ぶとは言え、英単語を扱うことは日本語を扱うよりも難しいように思います。多くの日本人は日本語だけで物事を理解して考えているからです。
そういった中でソフトを作るプログラミングという作業でも、「英単語を使わずに日本語を使いたい」と考えることは自然なことのように思います。
ところが実際は最初に述べたような英単語主体のプログラミング言語が主流で、日本語を話すプログラマでも多くは英単語主体のプログラミング言語を使っています。そこには既に習得したプログラミング言語から移行してまで日本語でプログラムを書きたいとは思わない。という背景もあるのかと思います。
そこで、日本語プログラミング言語が必要な理由を挙げてみることにしました。
日本語表記で名前を付けられる
多くのプログラマは何かアプリを作るためにプログラミングします。そのアプリの対象物が日本人を対象として日本語で名付けられているものであれば、日本語のままプログラムに書くことができれば便利です。
英単語主流のプログラミング言語では、日本語で名付けられたものを、わざわざ英単語に置き換えて、プログラムしています。この時に脳内で翻訳作業をしています。
日本語で名付けられたものに日本語を使ってプログラミングできれば、余計な変換をせずにプログラミングで必要なロジックの記述に集中できます。
識別子に日本語が使えるだけでは足りない
JavaやC#をはじめとして、現在の多くのプログラミング言語処理系ではソースコードにUnicodeなど日本語を扱える文字コードに対応しています。
また文字列定数に限らず、プログラム内の変数名や関数などの識別子にも日本語を使うこともできます。実際にVBAで日本語を使ってプログラムを書いているといった例も見かけます。
しかし、このような場合でも、ifやfunctionなど基本構文で使われるキーワードは、英単語のままです。またObjectやStringなどの型名や、printやcloseといった標準ライブラリの関数名も英単語表記のままです。
日本語プログラミング言語は、キーワードやライブラリ群も含めて、すべて日本語で定義され用意されているので、ソースコードに一貫して日本語表記を使うことができます。
語順を日本語文と同じように書ける
日本語プログラミング言語は、プログラム文でいわゆる「てにをは」の助詞を使って日本語の語順でプログラム文を書けることが特徴であり、魅力の一つです。
関数呼び出しではパラメータの関係を式と助詞を紐付けることで記述します。これはAdaやVBAなどにある名前付き引数の仕組みと似ています。助詞を使って引数の関係を明確にし、また日本語としても読みやすいプログラムとなるように言語仕様を工夫しています。
またオブジェクト指向言語にある「.」や「->」などは、記号に頼らずに「の」や他の助詞を用いて日本語の字句で表現しています。
このようにプログラミング言語の機能を、日本語文に当てはめて日本語風に書けるように文法を定めています。これは、プログラムを読めば素直にプログラムの動作を理解できるようにすることを意図しています。日本語プログラミング言語の実装によって表記は異なりますが、この点は、どの日本語プログラミング言語でも共通の考え方です。
日本語プログラミング言語不要論
「日本語でプログラムを書く」ということに否定的な人もいることは知っています。そのように思う人は、おそらく「記号や数式で書き下すことだけがプログラミングだ」と信じ込んでしまっているからと想像してます。
ひとつ言いたいのは、日本語プログラミング言語であったとしても「プログラミング言語」であることには変わりなく、コンピュータを動かすロジックを書くための手段に変わりありません。例えばRubyが好きかC#やVBAが好きか、手続き型が便利か、関数型やリスト型が便利か、といった違いと同じです。
それぞれプログラミング環境に求める物が異なる以上、日本人のプログラマ万人に受け入れられるものではないと考えています。「日本人であれば皆日本語プログラミングをすべきだ」と主張するつもりは全くありません。日本語プログラミング言語を必要と思う人が使えば良いだけの話しです。
ただ、”自分には必要ない”と思うだけに留まらず、声を大きくして「日本語プログラミング言語は必要ない」と言い出す人がいくらかいることは知っています。このような人は、なぜ日本語プログラミング言語の取り組みを話題に挙げて、わざわざ必要ないと主張するのでしょうか。素直に言って不思議です。(例えば、自分はパプリカを食べないからと言って、農家が育てたパプリカを話題に取り上げて「パプリカは必要か?」と言いますでしょうか、普通…)
日本語プログラミング言語を便利と思って利用しているプログラマがいる事実を見れば、日本語プログラミング言語が必要だ不要だと議論すること自体が滑稽です(((
脱初心者向けプログラミング言語
これまで日本語プログラミング言語は、日本語だからプログラミング初心者に優しい、プログラミング教育に向いているということをメリットとして主張してきたところがありました。実際、学術的な世界では、日本語を使ったプログラミング学習環境を提案し、教育現場で実際に活用する研究もあり、その成果が報告されています。
一方で最近では、日本語で書かれたブロック図形を画面上に貼り付けて組み合わせることで、マウスやタッチ操作でロジックを作れるプログラミング環境も提供されています。PCの性能が向上した今、入力誤りの可能性があるテキスト形式で日本語プログラムを書くことが必ずしも初心者に優しいとは限らなくなりました。
改めて考えてみると、先に挙げたような日本語プログラミング言語の良さは、実用的なプログラミングでこそ意味があるのように思います。日本語プログラミング言語の良さを活かせる環境を持ち合わせた実用的な日本語プログラミング言語が本当は必要なのではないでしょうか。
また掲示板やブログなどからプログラムをコピー&ペーストしたり、バージョン管理システムでコードを共有したり差分を比較したりできる点は、テキスト形式のプログラミング言語の良さであり、実用的なプログラミングであればこそ重要なように思います。
プロデルはどうか
プロデルの目指す日本語プログラミング言語は、実用的に使えるプログラミング言語です。プロデルが日本語プログラミング言語の本当のメリットを活かせるだけの力を持っているとは言えないかもしれません。本稿では挙げませんでしたが、日本語プログラミング言語そのものにもデメリットはあります。デメリットを少しでも克服して、メリットを大いに活かした日本語プログラミング言語を作り上げることを目標にして、今後も改良を続けられたらと思います。