MachiKania

MachiKaniaでクラスを使う

2019年3月10日

現在、MachiKania BASICをオブジェクト指向にしようという計画が進行中です。ほとんど仕上がっているので、次の正式バージョンに取り入れられるようになる可能性が高いです。MachiKaniaではこれまで、黎明期のパソコンで使われた行番号形式のBASICから、構造化プログラミングに対応したBASICまでを扱ってきました。これらのプログラミング形式に加えて、今後はオブジェクト指向プログラミングが出来るようになります。

さて、MachiKaniaのユーザーの皆様の中には、オブジェクト指向プログラミングに対してなじみが無いという方もいらっしゃると思います。この記事では、オブジェクト指向プログラミングとは何かに付いては置いておいて、この新しい機能を使うとMachiKaniaがどんな風に便利になるのかについて、紹介したいと思います。オブジェクト指向プログラミングになじみが深い方々も、MachiKania BASICではそれをどの様に扱うのか、参考にして頂けたらと思います。

MachiKaniaで採用しているオブジェクト指向プログラミングは、クラスベースと呼ばれるものです。従って、この新しい機能を使うには、クラスをどの様に使うかという理解が必要です。ここで、オブジェクト指向プログラミングになじみのない方は、「クラスをどの様に使うか」と言われてもと思うかも知れませんが、とにかく「クラス」なる物があって、それをどう使うのかが大事だということだけ理解しておいて下さい。

オブジェクト指向化マチカニアとクラスのダウンロード

さて、このオブジェクト指向に対応したMachiKania BASICは、現在このページからダウンロード出来ます。Type Mの場合は"megalopaobjectiveXX.zip"を、Type Zの場合は"zoeaobjectiveXX.zip"の、"XX"の数字の一番大きいものをダウンロードして、MachiKaniaのブートローダーからインストールして下さい。このバージョンのMachiKaniaを使うことが条件となります。

ここから、クラスを使う話になります。私自身が幾つかクラスを作成しました。このページからダウンロード出来るようにしてあります。このページアクセスすると、下のように一覧になっており、8つほどのクラスがあることが分かると思います。

2019-03-10-classes.png


これらの中から、まず、CKNJ12の使い方について紹介したいと思います。

日本語表示クラス、CKNJ12の使い方

CKNJ12は、MachiKania Type M/Zで、グラフィック上に日本語を表示するためのクラスです。MachiKaniaには、256個のフォントが搭載されていますが、英数字とカナ・記号のみで、漢字はそのままでは表示出来ません。このクラスは、漢字かな交じり文の日本語を表示するためのものです。

まず、上記で述べたクラスダウンロードページの中にCKNJ12というフォルダーへのリンクがありますから、それをクリックして下さい。以下のような表示になるはずです。

2019-03-10-cknj12.png


ファイルが4つと、フォルダーが一つあるのが分かります。これら全てを、ダウンロードして下さい。ダウンロードの際は、webページ右の方にある、「ZIP | TAR」というボタンの、ZIPもしくはTARのいずれかをクリックします。ZIPアーカイブもしくは、TAR.GZアーカイブのいずれかがダウンロード出来ます。解凍して現れたファイルを全て、MachiKaniaで使うSD/MMCカードにコピーして下さい。「font」フォルダーと「help.txt」ファイルは不必要ですが、有っても悪さはしません。

次に、PC上でテキストエディターを使って、以下のBASICコードを作成して下さい。

USECLASS CKNJ12
USEGRAPHIC
POINT 50,50
K=NEW(CKNJ12,"UTF-8")
K.GPRT("本日は晴天なり",7,0)
A$=INPUT$()

これを、UTF-8 形式(BOMなし)でTEST.BASというファイル名で、SD/MMCカードに保存します。カードをMachiKania本体に差し、MachiKania BASICを立ち上げて下さい。F1キーを押してTEST.BASをロードしてF4キーで実行すれば、"本日は晴天なり"という日本語がディスプレイ上に表示されるのを確認出来るでしょう。

2019-03-10-cknj12test.png

この様に、たった6行のプログラムを書くことで、日本語が表示出来るようになりました。便利だと思いませんか?こういったクラス無しにMachiKaniaで日本語を表示させるのは、簡単ではありません。フォントを用意して、日本語コードを解釈して、フォントの中から該当文字をピックアップして、グラフィック上に表示させる。この一連の操作を、クラスが行ってくれます。クラスを利用する側は、使い方を知っているだけで良く(help.txtに書いてあります)、上で挙げたコードのような簡潔なプログラムを書くだけで、この様に複雑な動作をするクラスを扱うことが出来ます。結果として、複雑な動作をMachiKaniaにさせることが可能になるわけです。

一般的なクラスの使い方

上のCKNJ12クラスの例題コードは6行ですが、そのうちクラスの利用に関するものは次の3行のみです。

USECLASS CKNJ12
K=NEW(CKNJ12,"UTF-8")
K.GPRT("本日は晴天なり",7,0)

この3行について理解すれば、あなたもクラスを使えるようになります。順に説明していきましょう。

まず、最初の「USECLASS CKNJ12」に付いて説明します。ここで「CKNJ12」というクラスを使うことを宣言しています。英語で"Use class"は、クラスを使うという意味です。この様に、MachiKaniaでクラスを使う際は、まず「USECLASS」ステートメントで使用するクラスを宣言することが必要です。2つ以上のクラスを使用する場合は、カンマで区切って記述して下さい。

次に「K=NEW(CKNJ12,"UTF-8")」に付いて説明します。ここでオブジェクトを一つ作成しています。さて、オブジェクト指向プログラミングになじみのない方にとっては、新しい言葉「オブジェクト」が出てきました。ここでは、詳細を説明しません。とりあえず、オブジェクトなるものを作成するのだということだけ、覚えて下さい。ここでのオブジェクトは、「CKNJ12クラスのオブジェクト」の様に、表現します。新しい(英語で "new" )CKNJ12クラスのオブジェクトが一つ作成され、変数 K に代入されます。MachiKania でGOSUB() 関数を使うのと同じように、カッコの次にクラス名を記述します。カンマに続けて引数「"UTF-8"」が指定されていますが(指定方法は、GOSUB()関数と同じ)、引数は必要な場合と必要ない場合とがあり、help.txtの<コンストラクター>の項にその仕様が書かれています。CKNJ12クラスでは、引数が一つ必要で、「"UTF-8"」もしくは「"EUC-JP"」のどちらかを使用することになります。ここでは、ファイルをUTF-8エンコードで保存したので、「"UTF-8"」を使用しました。

最後に「K.GPRT("本日は晴天なり",7,0)」に付いて、説明します。一つ上のパラグラフで、オブジェクトを一つ作成して変数 K に代入したと述べました。ここでは、このオブジェクトを使って、作業を行ないます。行える作業の一つが、メソッドを呼び出すことです。さて、また新しい言葉「メソッド」です。これは、オブジェクトに付随する関数・或いはサブルーチンのようなものと覚えて下さい。 K の文字に続けてピリオド、さらに続けて「GPRT(」とあります。これは、オブジェクト K の GPRTメソッドを利用するということです。help.txtの<パブリックメソッド>の項に、使い方について書いてあります。関数を使うのと同じように、引数を指定します。引数は無い場合、一つだけ指定する場合、複数指定する場合、様々です。それぞれのクラスの説明書き(help.txt)を参考にして下さい。ここでは、表示する文字列「"本日は晴天なり",」に続けて、文字色、背景色の順で、引数指定しています。

様々なクラスを使えば、MachiKaniaがもっと便利に

如何でしょうか。オブジェクト指向プログラミングなんて知らなくても、ちょっとしたルールを覚えれば、クラスを使って複雑な動作をするプログラムを簡潔に書くことが出来ることを、実感出来たでしょうか。

私が今まで作製して動作確認したクラスは、以下の通りです。

C23LC SPI接続のSRAM、23LC512を容易に使用するためのクラス
C24LC I2C接続のEEPROM、24LC512を容易に使用するためのクラス
CIOEX I2C接続のI/Oエキスパンダーを容易に使用するためのクラス
CKNJ8 8x8の漢字フォントで日本語を表示するためのクラス
CKNJ12 12x12の漢字フォントで日本語を表示するためのクラス
CKNJ16 16x16の漢字フォントで日本語を表示するためのクラス
CSWTIF TIFF画像を表示するためのクラス
P32REG PIC32MXのレジスターを容易に扱うためのクラス

I/O機器用のクラスは、いずれも機器のデーターシートの詳細など見ることなく使えるように工夫してあります。また、TIFF画像の表示クラスも、TIFFファイルのフォーマット様式など知らなくてもTIFF画像が容易に表示出来ます。

今後も、使って便利なクラスを色々作っていく予定です。また、ユーザーの方々にも色々クラスを作って公表して頂ければ、MachiKaniaがどんどん使いやすくなっていくと期待していますので、どうぞよろしくお願い致します。

コメント

コメントはありません

コメント送信