Luaレッスン1.1「はじめの一歩」和訳

原典:

http://compasstech.com.au/TNS_Authoring/Scripting/script_tut1.html

 

レッスン1.1:TI-NspireでLuaを使うはじめの一歩

ここで紹介するスクリプトを実行するときは、Mac版、PC版いずれかのTI-NspireソフトウェアのScript Editorを使います([Insert]メニューには、スクリプトを挿入するオプション、既存のスクリプトを編集するオプションがあります)。

(中略)

スクリプトの例:

function on.paint(gc)

           gc:drawString("hello world", 0, 20)

end

2行目は字下げしていますが、字下げしなくても構いません。ただ、比較的長いスクリプトの場合は字下げしたほうが重宝します。大文字、小文字は区別されます。Luaは、大文字と小文字とが区別される言語ですので、すべてのコマンドは、ここに示したとおり正確に入力しなければなりません。上の例では、"drawString"の"S"以外はすべて小文字です。

世に出回っているLuaスクリプトのほとんどは、とてつもなく複雑に見えます。事実そのとおりであって、それが普通です。しかし、うまく動作するLuaスクリプトは、これほど単純な形にもなり得ます。

上に示した例について説明します。

  • Lua函数を定義するときの構文は、どこに記述する場合でも、ほとんどが次のような構造となります。

函数名(引数)

      何らかの命令

end

  • 上の例に示した函数は、"on.paint"と呼ばれる、Luaの標準的な函数のひとつです。全部ではないにせよ、目にするほとんどのLuaスクリプトに使われる函数です。機能は文字どおりです。すなわちこの函数が"on"になったら(実行されたら)内容を画面に"paint"(表示)せよ、ということです。
  • "gc"は"graphics context"(グラフィックス・コンテキスト)の略です。グラフィックスを定義するときは、その種類にかかわらず"gc"を使います。上の函数を見ると、"gc"を使った1行命令が記述されています。これについてはあまり心配しなくてもすぐに慣れます。
  • この函数の命令行も文字どおりの意味です。すなわち、gc:drawString("hello world", 0, 20)の意味は、この函数で定義されるグラフィックス・コンテキスト内で"hello world"という文字列をウィンドウの(0, 20)の位置に描画せよ、ということです。
  • 座標系の原点は一番左上です。したがって、ウィンドウの左端の、上から20ユニット下がった位置からテキストが表示されます(Y軸の向きが逆なだけで、普段使い慣れているXY座標と同じです)。

実際に試してみましょう。テキストを変更し、xy座標も変更してみましょう。テキストをウィンドウの中央に配置してみましょう。ウィンドウの寸法について何かわかりましたか? ComputerビューとHandHeldビューとを切り替えるとわかりますが、それぞれ中央の座標が異なります。

次へ進む前に少し休憩しましょう。 

なぜこんな方法を?

そろそろ「なぜ、わざわざこんな面倒なことをするの?」という疑問の湧いてくる頃でしょう。画面にテキストを表示するなら、確かにもっとずっと簡単な方法があります。

Notesでも同じ内容は表示できます。しかしTI-NspireのLuaウィンドウには、次に示す2つの非常に重要な性質があります。 

  1. Luaを利用しているウィンドウをどれかクリックしてください。適当にドラッグして編集してみてください。できませんね。この種のウィンドウに表示したテキストは、ユーザーには編集も変更もできません。Notesの場合はもちろん、ユーザーは容易に変更できます。壊すことも可能です。手間暇をかけて制作した内容であるにもかかわらずです。またNotesの場合と同様にLuaでも、静的、動的なテキストが表示できます。Luaなら、Notesと同様に強力な学習ツールが簡単に制作できます。しかも安全な表示環境で制作できます。
  2. このレッスンの後半では、フォントのサイズ、色、スタイルを設定する方法を学びます。さらに、テキストを行の中央に配置する方法、ウィンドウの中央に配置する方法も学びます。Luaでは、TI-Nspireの元々のテキスト機能を遙かに上回る形でテキストの表示方法を大胆に制御することができます。色について言えば、数百万色が容易に利用できます。サイズについても同じように制限がありません。(後略)