MachiKania

MachiKaniaでクラスを使う

2019年4月5日

MachiKania ver 1.2に於いて、使用しているBASICコンパイラーがオブジェクト指向に対応しました。MachiKaniaではこれまで、黎明期のパソコンで使われた行番号形式のBASICから、構造化プログラミングに対応したBASICまでを扱ってきました。これらのプログラミング形式に加えて、今後はオブジェクト指向プログラミングが出来るようになります。

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

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

オブジェクト指向化マチカニアとクラスのインストール

さて、MachiKania BASICでオブジェクト指向に対応するには、Type M, Type Z共に、ver 1.2以上の物を使う事が条件になります。それより低いバージョンをお使いの場合は、まずver 1.2以上にアップグレードして下さい。Type Mの場合はこちらType Zの場合はこちらのページからダウンロード出来ます。

マチカニア本体以外に、クラスをインストールする必要があります。ここでは、公式ページで用意しているライブラリーのクラス群を用いてみましょう。Type M、Type Zそれぞれの公式ページのダウンロードのところに、「BASICで利用可能な各種クラスファイル集」という項目がありますから、これをダウンロードして、アーカイブを解凍して出来た「LIB」ディレクトリー全体をSD/MMCカードのルートにコピーして下さい。CKNJ8, CKNJ12, CKNJ16, P32REGなどのクラスが使えるようになります。これらの中から、まず、CKNJ12の使い方について紹介したいと思います。

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

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

まず、上で述べたように、MachiKaniaのバージョンが1.2以上である事と、ライブラリー(「LIB」ディレクトリー)がインストールされている事を確認して下さい。

次に、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がどんどん使いやすくなっていくと期待していますので、どうぞよろしくお願い致します。

コメント

コメントはありません

コメント送信