日本ではプログラムと呼ぶことが多いのですが、海外ではスクリプト(Script)ということが多いようです。余談になりますが、日本ではプログラムを作成する人をプログラマーと言いますが、海外ではスクリプターと呼ぶそうです。
プログラムとは、一連の処理を順序立てて記述したものです。実生活に例えるならば、下記のようなものがプログラムと言えるでしょう。朝の行動をプログラムにすると、
- 朝7時に起きる
- トイレに行く
- 歯を磨く
- 食事をする
- ・・・
プログラムを記述することをコーディングと言います。人間の言葉には日本語、英語、中国語など、様々な言語がありますが、プログラミング言語も多種多様なものがあります。ロブロックスで使用するプログラミング言語は「Lua(ルア)」というものになります。残念ながら、C言語やPythonなどのようにあまりポピュラーではないので書籍が少ないのが難点です。ただし、他のプログラミング言語の経験がある方はスムーズに習得できると思います。また、初めてプログラミング言語を学ぼうとしている方でも、Luaはそれほど癖の強い言語ではないので比較的習得しやすい方だと思います。
プログラムを入力する
Robloxでは様々な箇所にプログラムを入れることができます。モデルやパーツに入れたり、キャラクターに入れたりと。ツールボックスには様々なモデル等が入っていますが、そのモデルの中にもプログラムが組み込まれていて、Workspaceに挿入するだけで動作するものが多数あります。
スクリプトの作成
ゲーム全体をコントロールするプログラムはServerScriptServiceという特別なフォルダに作成します。Workspaceにもプログラムを入れることができますが、今回はここに作ることにします。
- エクスプローラーでServerScriptServiceにカーソルを合わせると、 [ + ] ボタンが表示されます。
- +ボタンをクリックし、Script(スクリプト)を選択します。これによりスクリプト エディタが開きます。
- スクリプトを右クリックし、 [名前の変更] を選択します。「PracticeScript」と入力します。スクリプトに名前を付けることは、そのプログラムが何をするものなのかを覚えておくためにとても重要なことです。
Hello World
新しくスクリプトを追加すると、1行目に必ずprint文が現れます。printは、文字を画面(正確には出力ウィンドウ)に表示するものです。どのプログラミング言語でも、最初に登場するのがこのprint文です。printというのは関数の1つで誰でも最初に学びます。関数とは機能のことです。つまりprintという関数は、画面に表示する機能ということになります。
次のプログラムは、スクリプトを追加した際に自動的に入ったものです。このまま実行すると出力ウィンドウに「Hello world!」という文字が表示されるでしょう。
print("Hello world!")
出力ウィンドウに表示されるメッセージ
Hello world!
テスト出力
プログラムをテストするには、「Output/出力」ウィンドウを使用します。このウィンドウには、printでの表示の他、プログラムのエラー等も表示されます。よってプログラムをコーディングする際は常に表示しておくウィンドウの1つになります。
- 「VIEW/表示」メニュー タブを選択します。
- 「Output/出力」をクリックします。ウィンドウは、Roblox Studioの下部に表示されると思います。
- プログラムををテストするには、Playを押します。新しい文字列が [出力] ウィンドウに表示されます。
- プログラムをテストしたので、プレイを停止します。プログラムは、PracticeScriptというところに入れましたので、このタブをクリックすることで編集することができます。文字列を変更したり、変数名を変更したりして、どうなるかをテストしてみましょう。
出力ウィンドウに赤いメッセージが表示された場合は、プログラムにエラーがあることを示します。エラー情報からプログラムを修正してみましょう。どうしても分からない場合は、プログラムを一度消去して、入力し直しとエラーにならなくなる場合があります。文字列を指定する箇所以外に、全角スペースが入ってしまうとエラーになります。
データ型の識別
プログラミング言語は、さまざまな種類の値をデータ型に分類します。たとえば、その 1 つは数値です。数値データ型は数値のみで構成されるため一目瞭然です。
もう 1 つのデータ型は文字列です。文字列には、数字、文字、記号を含めることができます。
文字列変数
「Hello World!」というメッセージが表示されましたが、これは文字です。どう見ても数字ではありません。プログラムをよく見ると、文字列の前後にダブルコーテーション(引用符)が付いているのが確認できると思います。文字列を表す場合、「ダブルコーテーション(引用符)で囲む」ということを覚えておきましょう。
文字列の例
文字列の例を以下に示します。文字と数字が混在していることに注意してください。
- 「あなたはゲームに参加しました!」
- 「残り50名」
- 「10」 (全角の数字は文字扱いになる)
- 10(ん?これは文字?・・・文字としても扱えます)
変数を使って表示する
変数というのは入れ物です。様々なものが入る入れ物と考えるのが分かりやすいと思います。
変数は、local(ローカル)というキーワードから始めます。その後ろに名前を入れます。この名前を変数名と言います。変数名は、入れるものが何であるのかがわかるような名称にするのがベストです。
例えば、自分の名前を入れる変数を作る場合、
例:local myName
となります。mynameでもmy_nameでも構いませんが、変数名で使用できる文字に制限があり、第1文字目は、英字か「_(アンダースコア)」でないとダメです。それ以降は数字も使用できます。英字の大文字小文字の区別があり、「_(アンダースコア)」以外の記号は使用できません。またアルファベットであっても全角文字は使用できませんので注意しましょう。さらに学習を重なて行くと使用できない単語があるということも分かってきます。それらを予約語と言いますが、現時点では「そういうのがあるんだ」程度に覚えていれば問題ありません。
Lua では「型付け」がありません。他の言語には「型付け」があるものが多く、文字列型変数、数字型変数などと変数に「型」があります。「型付け」があると、型と変数名を指定することになりますが、Lhaはそれがないので、「local 変数名」の記述で済むため非常に簡単ですね。つまり先ほど「10(ん?これは文字?)」と書きましたが、これは数字になりますが、数字でも何も考えず、そのまま変数に入れることができるのです。
それでは、実際にコーディングしてみましょう。お気に入りの動物を変数に入れ、それを表示するプログラムを書いてみます。
- スクリプトで「print(“Hello world!”)」は消去します。localとし、変数名は「myAnimal」とします。
local myAnimal
名前を付ける際のおすすめは、2つ以上の英単語を組み合わせることです。つまり「My Animal」は「myAnimal」とします。先頭の文字を小文字にするのは、現時点では、Robloxプログラミングの暗黙のルールと覚えておきましょう。
変数の設定
変数が作成されたばかりのときは、中身は何もありません。それを設定したり、何かを入れたりするには、「=(イコール)」記号を使用します。
- 変数名の後に「=」と入力します。
local myAnimal =
- そのまま続けて、お気に入りの動物を説明する文章を入力します。すべての単語と文字が、ダブルコーテーション(引用符)で囲まれていることを確認してください。
local myAnimal = "私の好きな動物は猫です"
このプログラムを言葉にすると『myAnimalと入れ物に「私の好きな動物は猫です」という文章を入れる』ということになります。もう少し専門的な用語に直すと、『myAnimalという変数に、「私の好きな動物は猫です」という文字列を代入する』ということに表現になります。代入(だいにゅう)という言葉は、プログラミングではよく使いますので覚えておきましょう。
Print() を使う
print関数は、文字列を画面(正確には出力ウィンドウ)に表示するものです。先ほどは、print文のカッコ内に文字を指定しましたが、ここでは変数を使って表示してみることにします。
- 新しい行にprint()と入力します。関数を使うときは、必ず関数名の後ろに()が続きます。
local myAnimal = "私の好きな動物は猫です"
print()
- 何かを表示するには、括弧内に記述する必要があります。変数を出力するには、 (myAnimal)のようにカッコ内に入れます。
local myAnimal = "私の好きな動物は猫です"
print(myAnimal)
print()は print("表示したいメッセージ") などと、文字列を表示することに使用できます。これはプログラムのテストで、実行されているかどうかを確認する時も使用できますのでとても便利な関数です。
文字列を結合する
print()を使用すると、出力ウィンドウに任意の文字列が表示できます。変数内に保存されている複数の文字列や、関数内で直接入力された複数の文字列を出力することもできます。連結とは文字列を結合することです。変数に割り当てられた文字列と 2 番目の文字列を連結するには、2 つのドット . を使用します。次の例では、2 つの変数と 2 つの型指定された文字列を連結します。
local firstAnimal = "porcupines"
local secondAnimal = "dolphins"
print("I like " .. firstAnimal .. " and " .. secondAnimal)
まとめ
オブジェクト名の横にある + ボタンをクリックすると、新しいスクリプトを作成できます。ServerScriptService は、新しいスクリプトを作成する一般的な場所です。新しいスクリプトには、デフォルトのコードprint(“Hello world!”)が含まれています。このコードにより、Hello world!が表示されます。出力ウィンドウで、コードの結果とエラーが発生したかどうかを確認できます。
「Hello world!」は文字列データ型の例です。文字列には、キーボードで入力する文字の任意の組み合わせを含めることができます。連結とは、複数の文字列を結合することです。
変数は、文字列や数値などのさまざまなデータ型を保持するために割り当てることができる入れ物です。
[ プログラミングの基礎 ]
[ 1-2 オブジェクトとプロパティ ]