この記事は、プロデル公式ブログに掲載したコラムを編集して再投稿したものです。
日本語プログラミング言語の歴史
今回は、日本語プログラミング言語の歴史をまとめてみたいと思います。
「プログラムを日本語で書く」という試みは、40年ほど前から様々な人が取り組んでいました。パソコンが大衆に普及する前から情報処理系の学会誌や専門誌などには「日本語プログラミング言語」という言葉は載っており、実際に動作する実装も存在していました。
意外かもしれませんが、日本語プログラミング言語として言われている言語は名前だけならかなり多数あります。その中でも、その時々で有名なプログラミング言語がありますが、日本語プログラミング言語を使う人が少数で情報も少ないこともあり、全部を知っている人は、いないと思います。私もその一人です。
今回は、多分に含む主観的な感想や自分語りも含めて、プロデルを使う私たちの視点から見た日本語プログラミング言語の歴史を見てみたいと思います。
Technology Terminal Script (2000年-)
いきなり年代が前後しますが、まずはTechnology Terminal Script(TTS)から挙げていきます。
1999年当時学生だった時に、日本語でプログラムが記述できるプログラミング言語があったらいいな、という軽い気持ちで作りはじめたのがTTSです。Visual Basic 6.0で作ったおもちゃ言語でしたが、『「こんにちは」を表示』といったような分かち書きを必要としない日本語プログラムが書ける点は、当初から一部で実現していました。プログラム文に助詞を用いる点は、日本語プログラミング言語の良さであり、特徴の一つだと思います。
TTSではウィンドウにボタンを作りボタンをクリックするとメッセージが表示することができました。GUIを中心としたプログラミングスタイルは、当時からプロデルまで変わっていないと思います(笑)。
ロゴライター
ほぼ同じ時期に、技術家庭科の授業でロゴライターという教育向けのプログラミング言語を使う機会がありました。
ロゴライターは、「まえへ 10」「ペンをおろせ」というように、ひらがなと数字で書いたプログラムで、カメを動かして図形を描くことができるLogo言語の一種です。またアイコンを描いて、カメの代わりに表示したり、スタンプのように貼り付けたりすることができるなど機能が豊富な教育向け言語です。
次のプログラムは、ロゴライターで四角形を描くプログラムです。
てじゅんは しかく
くりかえせ 4「まえへ 50 みぎへ 90」
おわり
ロゴライターは、日本語プログラミング言語として挙げられることはありませんが、プログラムはすべて記述できる点で広義の日本語プログラミング言語だと思います。Logo言語という点では、現在では「ドリトル」に相当する教育向け言語と言って良いと思います。
当時TTSを作っていたこともあり、ロゴライターの文法や機能には、大きな影響を受けました。TTSneoのカメは、ロゴライターのLogoが元になっていますし、プロデルの「手順」という言葉は、ロゴライターの「てじゅん」から拝借した用語です。ロゴライターは、私自身も技術家庭科の限られた時間でしか使えなかったので、あまり遊べず、詳しく参考にできなかったのが今でもちょっと残念です。
ひまわり (2001年-)
ひまわりに関しては、色々な方がわかりやすく的確に解説されていますのでここでは割愛します。TTSをVectorに公開した1年後に、公開された日本語プログラミング言語です。
TTSneo (2002年-)
TTSneoは、TTSの文法を基本にリニューアルしたスクリプト言語です。配列や辞書、ローカル変数と再帰処理に対応するなど、プログラミング言語としての体裁が整い始めたのはTTSneoからです。TTSneoの開発環境である「TTSスタジオneo」では、GUIをマウス操作でデザインできるフォームデザイナを搭載し、作成したプログラムを実行可能ファイルとして単独で実行できるようになりました。
一方で、開発に用いたVisual Basicは、インタプリタを基本とする処理系でしたので、他の開発環境と比べて処理速度が遅いという難点がありました。TTSneoではその弱点を克服すべく、VBでは利用が限定的だったポインタを駆使するなどしてパフォーマンスを徹底的に改善しました。
また、月刊ASCIIなどのPC雑誌や、窓の杜に紹介されるなどして、フリーソフト全盛期から末期の時代を過ごした日本語プログラミング言語でした。
言霊 (2002年-)
当時の慶応大学SFCの大岩研究室の学生が中心になって開発した日本語プログラミング言語です。「日本語の思考を妨げないようにプログラム記述ができるべき」という主張を実現した日本語のプログラミング言語です。Java VM上での動作することを前提として、VM語のレベルの操作も日本語で記述できるという特徴を持った処理系でした。当時は研究室のホームページで処理系がダウンロードできました。学会でも多数発表されていましたので当時の資料もいくつか見つけることができます。後にIPAの未踏事業で採択されたことも公表されていましたが、その成果物は辿れませんでした。
プロトタイプが何度か作り直されるなどして改良が続けられ、最終的にはSqueakを拡張して言霊の設計思想で日本語風の文法を実現した「ことだま on Squeak」が開発・公開されて、その後開発は収束しているようです。
ドリトル (ロゴ坊) (2003年-)
プログラムのキーワードに日本語を用いた教育用プログラム言語です。Logo言語の一種で、カメを操作して図形を描くことができます。特にドリトルは、プロトタイプ型のオブジェクト指向プログラミングができる点が特徴的です。
実装として、Webブラウザで動作するオンライン版と、JavaVMで動作するインストール版などが公開されています。Java版では外部機器との接続など機能拡張ができ、教育現場の色々な用途で使えるように機能が加えられています。情報教育で利用することを前提としていることもあり、学校での活用実績が多数報告されていています。
ドリトルは、日本語プログラミング言語として取り上げられる事が多いですが、開発者はTwitterなどで「ドリトルは日本語プログラミング言語ではない」†1旨のことをおっしゃっています。言語仕様としても助詞を用いない点や、中国語版などの構想にも言及している点などからも、教育用プログラミング言語という視点でみるべきだと思います。
なでしこ (2004年-)
なでしこは、ひまわりの後継のプログラミング言語です。
PEN (2005年-)
疑似言語であるDNCLを実際にコンピュータで実行できるように実装した日本語表記のプログラミング言語です。DNCLとは、かつての大学入試センター試験の「情報関係基礎」向けに定義されたアルゴリズムを表記するための疑似的なプログラミング言語です。Daigaki Nyushi Center Languageの略だと思います。
PENでは疑似言語をプログラムとして実際に動かすために必要な、入出力関連やグラフィック関連などの関数を加えたxDNCLという言語仕様が定められています。情報の試験勉強に、アルゴリズムなどロジックを学習するために適した教育向けプログラミング環境となっており、専用の開発環境ではステップ実行で変数の値を確認しながら実行できる点が特徴的です。
Java版は開発が収束していますが今でもダウンロード可能です。またWebブラウザで動作するWaPenの開発が行われているようです。
サンプルや説明書を見ると、関数名は英単語表記と日本語表記が併用できるようです。変数名には英数字を使うことが基本となっているようで、アルゴリズム記述を主とする点や可読性の観点から、識別子には日本語表記を積極的に用いる言語ではないように思います。
ぴゅう太(1980年-)
ぴゅう太は、マイコンブーム当時に発売された16ビットゲームパソコンです。ぴゅう太で動くゲームソフトも発売されていたようで、レトロゲーム機のひとつしても今でも取り上げられています。
ぴゅう太には、G-BASICという内蔵のプログラミング言語が搭載されていました。今の感覚だと買って直ぐ使えるプリインストールのプログラミング言語があると理解すれば良いかと思います。当時のパソコンは、BASIC言語でプログラミングすることが一般的で、機種によって独自の方言を持ったBASIC言語を使うことができました。
BASIC言語は、「IF」「FOR」「GOTO」などのような大文字の英単語のキーワードでプログラムで書いていましたが、ぴゅう太では、これらの英単語を半角カタカナの日本語に置き換えた文法で「10 ニイケ」「モシ A=10 ナラバ」といったプログラムが書けました。なお、当時の家庭用コンピュータでは漢字を扱うことは難しく、半角カタカナと一部の漢字を絵文字感覚の外字として、扱えるのがせいぜいでした。
当時はゲーム機として購入した人が多いようですが、日本語BASICの半角カタカナのプログラムを目にする機会があったのか、日本語プログラミング言語というと、このパソコンの名前を挙げる人が未だに多いです。そのため、日本語プログラミング言語というと、この半角カタカタの日本語G-BASICのイメージで語られてしまい、そのことで日本語プログラミングの議論が進まず、思考停止してしまっているように思います。
和漢(日本語AFL)(1983年-)
論文や断片的な情報はいくつか見つかりますが、実際のコードや実装が公開されておらず、現時点ではどのようなものであったかを知る術がありません。ただ、この頃から一般的なパソコンで漢字やひらがな混じりの日本語を扱える環境が整備されつつあったこともあり、この当時は、ビジネスとして日本語で記述するプログラミング言語の取り組みが行われていたことがうかがえます。
日本語COBOL
かつて事務処理用言語として定番だったCOBOL言語を日本語表記にしたものです。日本語表記のプログラミング言語というと「日本語COBOL」を挙げる方も多いと感じます。ただ企業開発者向けということもあって、これまで調べても具体的な製品名や情報が得られず、実際どのようなものか不明でした。
今回調べた所、富士通の「YPS/COBOL言語」というのが日本語COBOLだと分かりました(他社の実装もあるかもしれません)。詳細な仕様書は、富士通のサイトから閲覧できます。
COBOL言語が自然な英文的な文法であることもあり、日本語でも同様に日本語風の文章でプログラムを書きたいという発想があったのかと思います。ただ、プログラムの英単語のキーワードや順序を日本語に置き換えるという点や、日本語であっても予約語や識別子を半角スペースで分かち書きする点は、ぴゅう太と同じです。
やはり、日本語プログラミング言語の善し悪しについて、このあたりの取り組みを挙げて議論されることがあり、未だ議論がここから進まないことは残念に思います。
Mind(1985年-)
Mindは、Forth言語をベースにして日本語を採り入れたプログラミング言語です。Forth言語は、スタックを前提としたプログラミング言語で、式を逆ポーランド記法で書くことでプログラムを書きます。逆ポーランド記法とは、例えば「1+2」という式を「1 2 +」と書く、機械語に置き換えやすい記法です。この逆ポーランド記法の表記が日本語の語順と似ていることに着目したことがMind開発のきっかけだった、とドキュメントに書かれています。また単にForth言語を日本語化しただけでなく、文法に助詞が採り入れられ、助詞を印にしてスタックに入れる優先度が決まる点は言語仕様上の特徴的な所です。
公式サイトでは、Mindを用いて実利用のアプリケーション開発が行われた実績があることがPRされています。また当時のBitなどの専門雑誌でも取り上げらていたようで、コミュニティではコアなユーザの交流で活発だったようです。2021年時点でもメンテナンスが行われ、またAndroidで動作するように移植されています。実際に動作する実装は、公式サイトやVectorからダウンロードできます。以前は有償ソフトとなっておりましたが現在は無償で利用できるものもあります。
※当初1983年と記載しておりましたが1985年が正しいとのご指摘を頂きました
朱唇(1986年-), まほろば(2000年-)
それぞれ別の開発者ですが、発表要約などの断片的な情報はいくつか見つかります。やはり実装が公開されておらず、今となってはどのようなものであったか分かりません。朱唇は、自然言語学者が取り組んでいたLISP系の日本語のプログラミング言語だったようです。
プロデル(2007年-)
プロデルは、TTSneoの後継である日本語プログラミング言語です。当時.NET Framework1.0がリリースされ、開発が収束したVB6から移植する形で開発をはじめました。
TTSneoよりもより日本語らしい文法で記述できる言語仕様をめざし、またオブジェクト指向プログラミングを採用した言語仕様に一新しました。字句解析器の代わりに形態素解析器を内蔵し、分かち書きを必要としない点も特徴です。
また複文やすべて後置子など日本語文の品詞を文法に採り入れ、形式言語の範疇で日本語の特徴を活かした言語仕様です。また、処理速度も大幅に改善して、現在では共通言語基盤(CLI)で動作するコンパイラも実装し、C#などと遜色がない処理速度で動作します。プロデルの言語仕様に即したオブジェクト指向のライブラリを構成している所や、Office製品, FeliCa, 音声合成などとのたくさんの連携機能を提供している所などプログラミング言語としての機能も拡充されています。
TTSneoの良さでもあったフォームデザイナも継承されて、TTSneo時代から少しずつ完成度を高めながら開発を続けています。
最近ではプロデルの言語仕様と互換性のあるWebブラウザ上で動作する「スミレ畑」を公開してWindows以外でもプロデルの日本語プログラミングを体験できます。
おわりに
今回はプロデルの目線で、日本語プログラミング言語の歴史を簡単にまとめてみました。ここに名前を挙げなかったものの他にもいくつか試みが見つかります。メジャーではないカテゴリのプログラミング言語ですが、日本語でプログラムを書くことの価値を見いだし、日本語プログラミング言語を開発する試みが長い間、様々な立場の開発者によって取り組まれてきた事は否定できない事実です。
すでに別の記事でお話したことですが「日本語プログラミング」という言葉でイメージするものは、人それぞれ大きく異なり、日本語プログラミング言語が日本人開発者の万人に受け入れられるものではありません。そのことを踏まえて様々な観点で日本語プログラミング言語の良さを議論するべきだと思います。
日本語プログラミング言語は長い月日の中で少しずつ変わり続けています。過去の成果に対する否定的な意見に惑わされず、プロデルユーザの皆様には日本語プログラミング言語プロデルの良さや面白さを伝えていって頂けたら幸いです。