日本語らしいオブジェクト指向プログラミング「手順と補語」


はじめに

プロデルは、オブジェクト指向の考え方を全面的に採用した日本語プログラミング言語です。

オブジェクト指向とは、とても簡単に説明すると、ソフトウェアの構成要素を物に見立てて、物の単位で振る舞いとデータを整理してプログラミングする考え方です。C++言語をはじめとしてJavaやObjectiveC, Ruby, C#, JavaScriptなど最近の多くのプログラミング言語で採用されている考え方です。

TTSneoや他の日本語プログラミング言語と、プロデルとの大きな違いは、オブジェクト指向プログラミングのための仕組みを積極的に導入した点です。

プロデルが輝く10のポイントでは、たくさんの「いいね」「もっと読みたい」を頂き、ありがとうございました。このブログでは、プロデルでのオブジェクト指向プログラミングの特徴をもっと説明していきたいと思います。

一度には紹介しきれないため、この記事では、プロデルのオブジェクト指向プログラミングで特徴的な日本語らしい手順の書き方について紹介したいと思います。

プログラム例

では早速、プロデルでオブジェクトを使ったプログラム例を見てみましょう。次のプログラムは、画面にウィンドウを表示してリストボックスに「秋山さん」という項目を表示するためのプログラムです。

メイン画面というウィンドウを作る
メイン画面へ名簿リストというリストボックスを作る
名簿リストの大きさを{200,200}に変える
名簿リストへ「秋山さん」を加える
メイン画面を表示する
待機する

プログラム中の「ウィンドウ」や「リストボックス」は、プロデルに用意された種類を表しています。種類(クラス)とは、オブジェクトの設計図にあたるものです。種類は紙に書いた設計図のようなものなので、そのままでは使うことができません。実際に使うには、「作る」文を使って、メモリ上にオブジェクトを作ることで、画面上にウィンドウ表示したり、リストボックスを表示して項目を追加できるようになります。

プロデルは、クラス型オブジェクト指向プログラミング言語です。
「種類」を定義することで型(クラス)を定義できます。
種類には

  • 「変数」(フィールド)
  • 「手順」(メソッド)
  • 「設定項目」(プロパティ/ゲッター・セッター)

を定義できます。

「リストボックス」はプロデルで既に用意されている種類ですが、これと同じ定義をプロデルのプログラムとして簡単に書くと次のようになります。

リストボックスとは
  自分に【内容】を加える手順

  終わり
  大きさという属性
    設定する手順

    終わり
    取得する手順

    終わり
  終わり
終わり

このプログラムでは「大きさ」という設定項目と、「加える」という手順を定義しています。設定項目は、オブジェクトの属性を表すもので、作ったオブジェクトごとに値を入れておくことができます。

「加える」手順は、リストボックスに項目を一つ追加するための手順です。「加える」を実行するには、「~を」「~へ」の二つの助詞を指定しないといけないことを定義しています。

実補語

プロデルでは、「~を」のような手順の主語や目的語にあたる部分(式と助詞の組み合わせ)を、補語と呼んでいます。特に実補語は、式と助詞をペアして、手順を実行する際に使うパラメータ(引数:ひきすう)の役割を持っています。

例えば、先ほどの「加える」手順を実行する際には、「~を」「~へ」の二つの助詞を使って、リストボックスに項目を加えさせています。

名簿リストへ「秋山さん」を加える

この文では、『「秋山さん」を』の部分が実補語です。
また『名簿リストへ』の部分は、実補語ではなくレシーバ補語なのですが、これは次に説明します。

レシーバ補語

手順には、実補語の他にも「レシーバ補語」と「形式補語」があります。次のこれらを紹介していきます。
レシーバ補語とは、手順を実行するオブジェクト自身を指し示している補語のことです。

オブジェクト指向では、物(オブジェクト)に対して振る舞いを決めておきます。プロデルでは、その振る舞いを「手順」と呼んでいます。手順を呼び出す際には、その手順を持っている(振る舞いができる)オブジェクトを指名して、手順を実行させます。指名するオブジェクトのことをレシーバオブジェクトと言います。

レシーバオブジェクトを指定するには、実補語と同じように「~を」や「~へ」などの補語で指定します。この補語のことをレシーバ補語と呼んでいます。プロデルでは、自然な日本語でプログラムが書けるように、レシーバオブジェクトを指定する助詞を、手順ごとに変えられます。

例えば、リストボックスの「加える」手順では、リストボックス種類の定義の中でレシーバ補語が「~へ」助詞に対応する補語として宣言されています。『自分に【内容】を加える手順』にある「自分」という字句は、「加える」手順のレシーバオブジェクトが、リストボックス種類であることを示しています。

名簿リストへ「秋山さん」を加える

このように手順を定義すると、「加える」と言う動詞を使う手順を呼び出す際に「へ」助詞に指定されたオブジェクトが、リストボックスのオブジェクトであればリストボックス種類の定義にある「加える」手順のプログラムを実行してくれます。

見かけ上は、実補語もレシーバ補語も見分けがつかないので、難しいように見えますが、動詞ごとにレシーバに指定する助詞を変えられることで、記号に頼らない日本人ならすぐに理解できるプログラム表記ができるように工夫しています。

手順の名前

次に、メールを送信するプログラムを使って説明しています。

お知らせメールという送信メールを作る
お知らせメールの件名は、「定例会議の開催」
お知らせメールの宛先は、「member@zzz-company.co.jp」
お知らせメールの本文は、「来週月曜日の会議は午前10時からです。」
お知らせメールで「Reply-To」というヘッダ情報へ「no-reply@myapp.net」を設定する
お知らせメールをメールアカウントから送る

このプログラムを見て「プロデルを勉強してなくても、何をしているのか理解できる!」と、思ってもらえたなら嬉しいです。

プログラムを順に説明すると、まず一行目では、「送信メール」という種類のオブジェクトを作り、「お知らせメール」と名前を付けています。

2行目から4行目では、送信メールの件名や宛先の内容を設定しています。「件名」や「宛先」、「本文」がそれぞれ「送信メール」の設定項目です。

5行目では、メールの返信先に別のメールアドレスを使用するように、メールのヘッダを設定しています。

6行目では、送信メールを指定したメールアカウントから送信しています。送信メールの「送る」手順を呼び出すことで、設定した内容でメールを実際に送信します。「送る」手順には、「~を」助詞と「~から」助詞で、送信する対象のメールと、送信元のアカウントを指定します。

なお、このプログラムには書かれていませんが、「メールアカウント」変数も「アカウント」種類のオブジェクトであり、サーバ接続時に使用する送信元のメールアドレスや送信パスワードを設定しておきます。

形式補語

メール送信プログラムの例文では、「送る」という名前の手順を使いました。

多くの場合、手順の名前(手順名)には、動詞がそのまま使われます。ただ、プログラム文のまとまりを手順の名前として、日本語で名前を付けようとすると、動詞だけでは表現しきれないことが多々あります。

プロデルでは、補語の部分を手順の名前の一部として名付けられるように、形式補語を用意しました。形式補語を使うと、補語と動詞をセットにして手順名として使うことができます。

プログラム例の中では、メールのヘッダに情報を加えるために「ヘッダ情報へ設定する」手順を使っています。この手順では、形式補語を使っています。

お知らせメールで「Reply-To」というヘッダ情報へ「no-reply@myapp.net」を設定する

この手順の場合、「ヘッダ情報へ」の部分が形式補語です。形式補語は、実補語やレシーバ補語とは違い、手順名の一部としての役割で使います。

なお、手順呼び出し文では、書く補語の順番を変えることができますので、このプログラムのように、形式補語(ヘッダ情報へ)と動詞(設定する)とを離して書くこともできます。

このように、プロデルでは、形式補語と動詞を組み合わせて、1つの手順の名前とすることで、ほとんどの場合で、手順にわかりやすくて的確な名前を付けられるようになりました。

まとめ

今回は、プロデルでのオブジェクト指向プログラミングにおける「手順」や「補語」の役割や書き方について紹介しました。

プロデルでは日本語プログラミングにオブジェクト指向の概念を取り入れるために、手順の書き方で工夫を多く盛り込みました。

今回の記事で、紹介しきれなかったこともたくさんありますが、日本語っぽくプログラムを書く方法や、オブジェクト指向と日本語プログラミングとの相性が良さそうな感じが、少しだけでも分かって頂けたら嬉しいです。

  • いいね (3)
  • 続きを読みたい (5)

コメントを残す