「プロデル」はプログラムを日本語で書くことができるオブジェクト指向プログラミング言語です。プロデルは、オブジェクト指向プログラミングを採用し、日本語の文章らしくプログラムを書ける形式言語です。
プロデルは、前バージョンの「TTSneo」を含めて23年、細々と公開と改良を続けている言語です。
この記事では、プロデルの特徴を一通りまとめて紹介します。
Hello, world!
まずはプログラミング言語の入門でよく例として使われるHello, World!です。
「こんにちは!プロデルへようこそ」と表示する
プログラミングが初めての方は、まずは「プロデルで始める日本語プログラミング言語入門」をお読みください。
日本語プログラムの特徴
識別子は原則日本語名
変数名や型名などの識別子は日本語名で書きます。構文のキーワードも日本語名です。
識別子が日本語名なので、日本語を話すプログラマならば、変数名を決めるためにいちいち英単語名やローマ字を考えたり覚えたりする必要はありません。
英数字と記号の組み合わせによるプログラムに比べて、日本語は入力が面倒という印象があるかもしれませんが、日本語表記で書くことで、後で作ったプログラムを見返した時にプログラムの意味を思い出しやすくなります。
もちろん、識別子に半角英数字を使うこともできます。
文法も日本語風
型名や変数名だけでなくプログラム文も日本語文です。
プロデルは、キーワードや宣言された識別子を辞書として使って、プログラムソースを形態素解析するので、スペースや記号で字句を分かち書きする必要がありません。
もちろん、四則演算は数式で書けます。
言語仕様
文法の詳しい説明は、マニュアルをご覧下さい。
手順呼び出し文
プロデルのプログラム文は、式,助詞,形式補語,動詞で構成されています。また式と助詞を合わせたものを実補語と呼んでいます。
メソッド名は、動詞と形式補語に分割され、字句解析されます。
メソッドの引数に相当する実補語には、式と助詞を書きます。メソッドは実補語の型と補語、また実補語の個数をシグネチャにして、呼び出すべきメソッドを決めます。
式
四則演算など計算式と比較には数式を使えます。記号は半角でも全角でも同じものとして解釈されます。
定価=150 消費税率=10 定価*(1+(消費税率/100))を出力する
文字列
文字列定数は、「 」で囲います。文字列定数中で式展開するには、式を[ ]で囲います。
「今は[時刻]です。」を出力する
式展開させたくない場合は、「「 」」で囲むことで単純な文字列定数を指定することもできます。
「「 [はい] [いいえ] どちらかをクリック!」」を出力する
配列と辞書
配列は、複数の値を格納できます。要素番号は、1から始まります。
果物は、{「りんご」,「バナナ」,「ぶどう」,「なし」} 果物(2)を表示する // バナナ
辞書は、複数の値を、見出しと値の組みで格納できます。
値段表は、{「りんご」=「120円」,「バナナ」=「80円」,「ぶどう」=「300円」} 値段表の「バナナ」を表示する
条件分岐
もし文を使います。
「続けますか?」を質問して結果とする もし結果がいいえなら終了する 「実行しました。」を表示する
ブロックは、『 』を使って書きます。
西暦=入力したもの もし西暦が無なら「キャンセルされました」を表示する そうでなければ『 もし西暦%4が0なら『 もし西暦%100が0なら『 もし西暦%400が0なら「閏年です」を表示する そうでなければ「閏年ではありません」を表示する 』 そうでなければ「閏年です」を表示する 』 そうでなければ「閏年ではありません」を表示する 』
制御構文は、Pascal言語のような文法で書くこともできます。この場合、もし文の終わりには「もし終わり」と書きます。
もし結果がいいえなら 終了する もし終わり
反復処理
繰り返す文を使います。
3回『「わん」を表示する』ことを繰り返す
Pascal言語風の文法で書く場合は、繰り返し文の終わりに「繰り返し終わり」と書いて閉じることもできます。
値を10から2ずつ増やしながら20まで繰り返す 値を表示する 繰り返し終わり
指定した条件の間繰り返す。ということもできます。
値は、1 値が5以下の間、繰り返す 値を表示する 値を増やす 繰り返し終わり
オブジェクト指向
プロデルは、クラス型のオブジェクト指向プログラミング言語です。クラスを種類、メソッドを手順、プロパティを設定項目と呼んでいます。また種類は継承できます。
メンバーにアクセスするには、C#言語やJava言語では「.」に相当する「の」連用助詞を使います。
お知らせという送信メールを作る お知らせの件名は、「定例会議の開催」 お知らせの宛先は、「member@zzz-company.co.jp」 お知らせの本文は、「来週月曜日の会議は午前10時からです。」 お知らせをメールアカウントから送る
手順呼び出し文の場合、そのオブジェクトの手順ごとに、そのオブジェクト名を指定する助詞(レシーバ助詞)が決まっています。
上記の例では、「送信メール」種類の「送る」手順は、レシーバ助詞が「~を」です。
種類と手順の定義
種類および手順は、次のように書くことで宣言できます。
猫という動物を作る 猫が「にゃー」と鳴く 動物とは 自分が[鳴き声]と、鳴く手順 鳴き声を表示する 終わり 終わり
クラスライブラリ
プロデルで用意されているクラスライブラリには、GUI部品やファイル、ネットワーク、データベース、画像処理、暗号化処理などに関連する種類(クラス)と手順(メソッド)が日本語名で定義されています。
- 種類数:495個
- 手順数:1689個
- 設定項目数:1094個
- 動詞数:431個
- 助詞数(助数詞含む):59個
日本語っぽいプログラム
プロデルでは、プログラムを自然な日本語で書けるような文法が用意されています。
助数詞
手順の引数には「~文字」や「~個」、「~度」など助数詞を指定する手順があります。
内容は、「東京都」 内容の先頭から1文字消して出力する
かめを90度回転させる
「それ」特殊変数
「それ」特殊変数(「そ」でも可)は、最後に評価した式や文の結果を保持する特殊な変数です。
Perl言語の「$_」に似ています。
戻り値がある手順を(戻り値を式の値としない)文として呼び出すと、返り値を「それ」特殊変数へ格納します。
なお、戻り値がない手順を呼び出しても「それ」の値は変わりません。
次の例では、ボタンというオブジェクトを作って、位置や大きさ、見出しを順番に設定していきます。
ボタン1というボタンを作る その位置と大きさを{73,121,75,23}に変える その内容を「OK」に変える
~して(連用動詞)
文を評価した戻り値を次の文に受け渡す接続詞のような役割をします。
連用動詞を使うと、その直後に呼び出し手順の助詞(補語)を一つ省略できます。省略した補語の値は、直前の手順呼び出し文の戻り値と見なして、次の手順が呼び出されます。
次の例では、「内容」変数にある文字列から前後のスペースを消して、その結果を表示しています。
内容は、「 こんにちは 」 内容からスペースを消して表示する
「表示する」手順で指定すべき「~を」を省略すると、その代わりに「消す」手順の戻り値で埋め合わせます。
連用動詞を使うことでメソッドチェーンのような記述を実現できます。
否定形
真偽値を戻り値とする手順を呼び出す場合、動詞を否定形で指定すると、戻り値が反転(真の場合は偽)します。
もし「[デスクトップ]文章.txt」というファイルが存在しないなら 「ファイルが存在しません」を警告アイコンで表示する もし終わり
「すべて」後置子
式や文に対して配列の要素数に応じて反復処理するための特殊な句です。
30~50のすべての値について『値を報告する』ことをそれぞれ繰り返す
この例では、30から50までの値が入った配列から要素を順番に取り出して、その際に「値」という変数に要素の一つ代入して、その値を表示しています。
「ファイル情報」種類と「フォルダ情報」種類
プロデルでは単に文法を日本語表記に置き換えただけでなく、ライブラリも自然な日本語で書けるように、名称や構成を配慮して設計しています。
例えば、ファイルやフォルダの操作では、「ファイル情報」種類と「フォルダ情報」種類と言ったオブジェクトを使って操作することによって日本語文らしい表記でプログラムを書けるようにしています。
デスクトップに「ABC」というフォルダを作成してABCフォルダとする デスクトップから「報告書.xlsx」というファイルを取得して報告書ファイルとする 報告書ファイルをABCフォルダへコピーする ABCフォルダを削除する
「すべて」後置子と組み合わせることで、特定のフォルダのファイルサイズの合計を求めるプログラムを日本語らしい一文で書くことができます。
マイドキュメントの全ファイル一覧すべてのサイズの合計のサイズ形式を報告する
プロデルを試すには
もしプロデルによる日本語プログラミングに興味がありましたら、ぜひお試し下さい。
- Windowsでは、プロデルランタイム、開発環境、コンパイラがセットになったインストーラパッケージをダウンロードできます。
- AndroidやmacOSでは、Webブラウザ上で動作する「スミレ畑」をお使い下さい。
- LinuxやMacOSでは、monoをインストールすることでmono版プロデルが利用できます。
よくある質問
教育向け&初心者向けプログラミング言語ですか?
いいえ。使用目的を限定しないプログラミング言語です。
デスクトップアプリに限らずWebアプリの開発も可能です。
作者は主にLinuxサーバのバッチ処理やプロデルのドキュメントの自動処理、プロデルのライブラリの実装、ちょっとしたツールアプリの作成に使っています。
人工知能ですか?自然言語エンジンですか?
いいえ。プロデルでは、一般的なプログラミング言語の機能を「日本語らしい」文法に当てはめた言語仕様としているのであり、あくまでもプログラミング言語としての文法が定められています。たとえ日本語として意味が通じていても、プログラムとして文法や意味が間違っている命令文は、エラーとなります。
日本語は入力が面倒ですよね
プロデル専用のエディタである「プロデルデザイナ」には、IMEと連携した日本語プログラムの入力を補助する機能が用意されています。
「日本語プログラミング言語」という選択肢
プロデルを公開する目的のひとつは、「日本語プログラミングという選択肢」を提供することです。
過去、いろいろな日本語プログラミング言語が登場してきました。その中には、一定の評価を受けたたもの、構想段階で終わってしまったものがありました。
これらの取り組みは、考え方やアプローチに違いがありますが、共通するのは「日本人であれば日本語でコンピュータに指示させたい。」というとてもシンプルなアイディアから生まれたことです。
Webを見ていると、日本語プログラミング言語について否定的な意見を見かけることも多々あります。日本語プログラミング言語を受け入れる日本人プログラマは少数派であると、わたしの経験上、実感しています。しかしながら、プロデル/TTSneoのみならず、長い間、様々な開発者や研究者によって取り組みが行われてきた分野であることは事実です。
そういった中でプロデルという選択肢を提案し、自分でも利用しつつ「日本語プログラミング」の考え方を成熟させて、落ち着くところを見つけることが、今はひとつのゴールだと考えています。