Shiki’s Weblog
日本語プログラミング言語と簡約日本語 (3)
2019/01/30
前回は、簡約日本語でかいたプログラミムをPythonの断片にかきなおしてみるところまですすめました。今回は、簡約日本語のプログラムをPythonにかきなおすプログラムOrotiを用意してみました。パーソナルコンピューターをつかって、簡約日本語でかいたプログラミムがじっさいにうごくところをみていきます。
Orotiの紹介
Pythonの教科書の表紙にはヘビの絵がかかれていたりします。ここでは、簡約日本語からPythonにかきなおすプログラムを、Orotiとよぶことにします。Orotiというのは、大蛇、おおきなへびのことです。もっとも、Pythonのパイソンはニシキヘビからとったのではないそうですが。
OrotiはGitHubにおいてあります。gitコマンドでダウンロードできます。
$ git clone https://github.com/esrille/oroti.git
いまつくっている「ひとがいると自動で電気のつく部屋」のプログラムも、room.oroというなまえでおいてあります。
ライブラリ
room.oroには、前回のものとくらべると、先頭につぎの1行が追加されています。
ライブラリ: gpio
ライブラリというのは、さまざまなアプリケーションでつかえるプログラムの部品集のことです。ここでは、gpioを指定して、GPIOを操作するライブラリをつかうことを指示しています。Orotiは、gpio.pyというファイルをまぜて、Pythonのプログラムを出力するようになります。
※ gpio.pyは、エスリルのunbrick用になっています。ふつうのRaspberry Piでつかうときは、gpio.pyの、
GPIO1 = GPIO(34)
GPIO2 = GPIO(35)
GPIO3 = GPIO(36)
という部分を、
GPIO1 = GPIO(2)
GPIO2 = GPIO(3)
GPIO3 = GPIO(4)
といったぐあいに、かきなおしてつかってください。カッコのなかは、GPIOのBCM番号です。
Pythonのプログラムをかきだす
つぎのコマンドで、room.oroからPythonでかかれたroom.pyというファイルをつくれます。
$ ./oroti.py room.oro > room.py
実験
Orotiがつくったroom.pyをつかって、実験していきます。したの回路図のように、GPIO端子にLEDとスイッチをつなげます。抵抗値は10kオームくらいのものをつかいます。
回路図
したの写真のように、ブレッドボードとジャンプワイヤーをつかうと、かんたんに回路をくめます。
実験のようす
準備ができたら、
$ ./room.py
と入力すると、プログラムの実行がはじまります。スイッチをおしている(GPIO03を3.3Vにつなげている)あいだだけ、LEDが点灯します。
うえの写真では、てまえの赤色のワイヤーの一端は、白いワイヤーを経由してGPIO03につながっています。そして、もう一端は3.3Vにつながっています。ですので、スイッチがONのときとおなじ状態になっています。きちんと赤と緑のLEDが点灯していることがわかります。赤いワイヤーをブレッドボードの電源ラインからぬくと、LEDも消灯します。
開発状況
いまのoroti.pyは、room.oroをうごかせるように最低限ひつような部分だけをつくったものです。300行ほどのかんたんなプログラムです。もっとふくざつなことをしようとすると、機能的にまだたりない部分がありそうです。Orotiじたいを簡約日本語でかいて実行できるくらいになると、おもしろそうにおもっています。
まとめ
Orotiでは、かんたんな日本語の文をそのままプログラムとして実行できそうなことがわかってきました。文の解析も、そう複雑なことをしているわけではありません。
Orotiのプログラムでは、主体のなかの定義はしぜんに述語(おもに動詞)の定義をかくことになりそうです。また、属性は名詞となるでしょう。これはPythonの運用の仕かたのひとつ、
可能な規約としては、(中略)メソッドには動詞、データ属性には名詞を用いる、などがあります。「9.4. いろいろな注意点」, 『Pythonチュートリアル』.
という方法にそのまま対応します。
動詞中心文(日本語作文術』, p88)でかくというのは、こなれた日本語のスタイルのひとつです。Pythonでも、それが慣習(convention)のひとつとして利用されているわけです。
さいきんは教育の面からも、日本語のプログラミング言語の重要性が指摘されてきています。論文では、大岩元先生の「識字教育としてのプログラミング」などがあります。そこでは、「ことだま on Squeak」を題材に、プログラムが日本語として完全であることの必要性などが説明されています。
簡約日本語は、はたして「日本語として完全か」。そういう疑問はのこるかもしれません。このあたりは、国語あるいは日本語そのものの研究に期待されている部分がおおきいようにおもいます。
今回は、簡約日本語でかいたプログラムを、じっさいにコンピューターでうごかしてみました。Orotiの開発については、GitHubのIssuesにコメントやアイデアなどをよせてください。
というわけで、今回はここまでです。