プログラミングの基礎

ActionScript はプログラミング言語です。このため、ActionScript を学習する際に、コンピュータープログラミングの一般的な概念をいくつか理解しておくと役に立ちます。

コンピュータープログラムの内容

最初に、コンピュータープログラムとは何か、またどのような作業を実行するかについての概念を頭に描くことが大切です。コンピュータープログラムには、2 つの重要な側面があります。

  • プログラムとは、コンピューターを実行するための一連の命令または手順です。

  • 各手順では最終的に一部の情報またはデータの操作が伴います。

一般的な意味では、コンピュータープログラムは単にステップバイステップ形式の命令のリストであり、これをコンピューターに発行して、コンピューターはこれを 1 つずつ実行します。 個々の命令はステートメントと呼ばれます。ActionScript では、ステートメントの最後にセミコロンを記述します。

本質的に、プログラム内に指定された命令は、コンピューターのメモリ内に格納された一部のデータビットを操作するにすぎません。分かりやすい例として、2 つの数値を加算して、その結果をメモリに格納するようにコンピューターに命令することがあります。これよりも複雑な例としては、画面に描画された矩形を、画面上の別の場所に移動するようにプログラムを記述することがあります。コンピューターはその矩形に固有の情報、つまり、矩形が配置されている x 座標と y 座標や、矩形の幅と高さ、矩形の色などを記憶します。情報の各ビットはコンピューターのメモリ内のどこかに保存されます。矩形を別の場所に移動するプログラムは、「x 座標を 200 に変更し、y 座標を 150 に変更する」といった手順を含むことになります。つまり、x 座標と y 座標に別の値を指定します。内部的には、コンピューターがこのデータに対して何らかの処理を行うことで、これらの数値をコンピューター画面上に実際に表示されるイメージに変換しています。ただし、基本的には、「画面上の矩形の移動」プロセスが、実際にはコンピューターのメモリ内のデータビットを変更する作業に過ぎないことを理解するだけで十分です。

変数と定数

プログラミングとは、主に、コンピューターのメモリ内の情報を変更する作業です。したがって、プログラム内で個々の情報を表す手段を持つことが重要です。変数は、コンピューターのメモリ内の値を表す名前です。値を操作するステートメントを記述する場合、値の代わりに変数名を記述します。コンピューターは、プログラム内に変数名を検出した場合は必ずメモリ内を検索し、そこで見つかった値を使用します。例えば、value1value2 の 2 つの変数があり、それぞれに数値が 1 つずつ格納されている場合、2 つの数値を加算するステートメントは次のように記述できます。

value1 + value2

コンピューターが手順を実際に実行するときには、それぞれの変数に格納された値を検出し、それらを加算します。

ActionScript 3.0 では、実際には変数は 3 つの異なるパートから構成されます。

  • 変数の名前

  • 変数に格納できるデータ型

  • コンピューターのメモリに格納される実際の値

これで、コンピューターがどのようにして名前を値のプレースホルダーとして使用するかがわかりました。データ型も重要です。ActionScript で変数を作成するときには、変数が格納する特定のデータ型を指定します。この時点から、プログラムの命令は、指定されたデータ型のみを変数に格納できるようになります。また、そのデータ型に関連付けられた特定の特性を使用して値を操作できます。ActionScript では、変数を作成するときに var ステートメントを使用します(変数の作成は、変数の宣言とも呼ばれます)。

var value1:Number;

この例は、Number 型のデータのみを格納する value1 という変数の作成をコンピューターに命令しています(「Number」は ActionScript で定義されている固有のデータ型です)。次の例のように、即座に値を変数に格納することも可能です。

var value2:Number = 17;

Adobe Flash Professional

Flash Professional では、変数を宣言する方法がもう 1 つあります。ステージにムービークリップシンボル、ボタンシンボル、テキストフィールドなどを配置する場合、プロパティインスペクターでそれらのアイテムにインスタンス名を指定できます。内部的には、指定したインスタンス名と同じ名前の変数が、Flash Professional によって作成されます。この変数をActionScript コードで使用することで、そのステージアイテムを表すことができます。例えば、ステージにムービークリップシンボルを配置し、そのシンボルに rocketShip というインスタンス名を指定するとします。ActionScript コードで変数 rocketShip を使用すると、いつでも必ずそのムービークリップを操作することになります。

定数は、変数とよく似ています。定数とは、指定されたデータ型でコンピューターのメモリ内の値を表す名前ですが、変数とは異なり、ActionScript アプリケーションで定数に割り当てることができる値は一度に 1 つのみです。割り当てた定数値は、アプリケーション内で一貫して同じ値になります。定数を宣言するためのシンタックスは変数の宣言と同じですが、var キーワードの代わりに const キーワードを使用する点が異なります。

const SALES_TAX_RATE:Number = 0.07;

定数は、プロジェクト内の複数の場所で使用され、通常の状況下では変化しない値を定義するのに便利です。リテラル値の代わりに定数を使用することで、コードがさらに読みやすくなります。例えば、同じ処理を行うコードの 2 とおりの記述方法を比較してみましょう。一方のコードでは、定価に SALES_TAX_RATE を掛けます。もう一方のコードでは、定価に 0.07 を掛けます。SALES_TAX_RATE を使った記述の方がコードの目的を理解しやすいことがわかります。また、定数で定義されている値を変更する必要が生じた場合、プロジェクト全体で、定数を使ってその値を表しているのであれば、1 箇所(定数の宣言)で値を変更するだけで済みます。対照的に、ハードコードされたリテラル値を使用している場合は、多くの箇所を変更する必要が生じます。

データ型

ActionScript では、作成する変数のデータ型として使用できる多くのデータ型があります。 これらの中には、「単純」な、つまり「基本的」なデータ型と見なすことができるものがあります。

  • String:名前または本の章の文字に似たテキスト値

  • Numeric:ActionScript 3.0 では数値データに 3 種類のデータ型を使用します。

    • Number:小数点付きまたは小数点なしの値を含むすべての数値

    • int:整数(小数点のない自然数)

    • uint:「符号なし」整数(負でない自然数)

  • Boolean:スイッチのオンかオフ、2 つの値が等しいか否かなどの true または false の値

単純なデータ型は、1 つの情報を表します。例えば、単一の数字またはテキストの 1 文などです。 ただし、ActionScript で定義されているデータ型の大半は、複雑なデータ型です。それらのデータ型は、1 つのコンテナ内の値セットを表します。例えば、データ型 Date の変数は、1 つの値、すなわち特定の時点を表します。しかし、実際の日付の値は、日、月、年、時間、分、秒などの複数の値で表され、これらすべては個別の数値です。一般に、日付は 1 つの値と考える方が自然であり、Date 変数を作成することで日付を 1 つの値として扱うことができます。ただし、コンピューターの内部では、日付は、1 つの日付を定義する複数の値から成るグループと見なされます。

プログラマーが定義するデータ型と、ビルトインデータ型の大半は、複雑なデータ型です。複雑なデータ型と認識できるものは次のとおりです。

  • MovieClip:ムービークリップシンボル

  • TextField:ダイナミックテキストフィールドまたはテキスト入力フィールド

  • SimpleButton:ボタンシンボル

  • Date:特定の時点に関する情報(日付と時間)

データ型と同じ意味で多く使用される用語に、クラスとオブジェクトがあります。 クラスは、データ型の定義です。データ型のオブジェクトすべてのテンプレートと考えることができ、「Example データ型のすべての変数には A、B、C の 3 つの特性があります」と宣言することに似ています。これに対して、オブジェクトは、クラスの実際のインスタンスです。例えば、データ型が MovieClip である変数は、MovieClip オブジェクトとして記述できます。したがって、次のように同じ内容を様々な表現で表すことができます。

  • 変数 myVariable のデータ型は Number

  • 変数 myVariable は Number インスタンス

  • 変数 myVariable は Number オブジェクト

  • 変数 myVariable は Number クラスのインスタンス