【Lua言語講座】3.変数と型

変数と型 Lua言語講座

※この記事は会話形式にリライトしました。

こんにちは、ロブスタのハルです!
前回の講座ではプログラムをどこに書けばいいのかについて説明しました。
今回はプログラミングを学ぶ上で大切になってくる変数へんすうと型について説明していきたいと思います!
前回の講座を見ていない方はこちらからご覧ください。

前回の宿題

宿題としてTestスクリプトの1行目にあるprint(“Hello world!”)” “の中身(Hello world!の部分)を好きな文字に変えてみてください。また、変えたあとに実行してみてどこが変わっているのか考えてみてください。

https://roblox-starter.com/programing-lua/lua-lesson2-how-to-write-program/

前回の宿題はどうでしたか? Helloハロー worldワールド!を好きな文字に変えることで出力結果のHello world!も変わっていたことが確認できたかと思います。

変数とは

――ある日の会話――

先生
先生

さて、これからプログラミングならではの考え方を学んでいきます。

たかし
たかし

よろしくお願いします。

先生
先生

まずは変数というものについて理解しましょう。
イメージとしては中身を入れ替えられる箱のことです。

たかし
たかし

箱とプログラムにどんな関係があるんだろう?

解説

変数へんすうとは一言で表すと数字や文字、オブジェクトなどのデータを入れるための箱のことです。

今後経験していくとわかりますが、プログラミングでは1つの文が長くなってしまうことがあります。そのときに1つの文をある変数に入れて、その変数を使うことでプログラム(コード)がすっきりすることがあります。

また、変数を使うことでコードを簡単に変更することができます。

それ以外にも変数は処理ごとに中身を入れ替えることができます。例えば、洗濯物せんたくものを干すときに洗濯機から取り出した洗濯物を一旦かごに入れてからベランダに持っていくという光景を見たことがあるのではないでしょうか。このときのかごが変数のイメージです。

Lua言語では変数を次のようにして宣言せんげんします。

local num = 123
decimal = 2.345
local string = 'abcde'
characterName = "John"

localローカルがついているものとついていないものがありますが、ここでは気にしなくても大丈夫です。後々あつかいますが、気になる人はローカル変数とグローバル変数というキーワードで調べてみてください。

上のコード(プログラムのことをコードやソースコードと呼ぶこともあります)からわかるように=の左側には変数の名前が、右側には具体的な数字や文字などのデータが入っています。

-- 変数の定義方法
変数名 = 数字または文字列

このように変数にデータを入れることを代入と言います。

変数の名前のルール(命名規則)

変数の名前は自由につけることができますが、以下のルールに沿ってつける必要があります。

  1. 英字の大文字(A~Z)か小文字(a~z)、数字、_(アンダースコア)の組み合わせ
  2. 先頭は必ず英字であること
  3. ローカル変数ではローワ―キャメルケースを使う
  4. グローバル変数ではアッパーキャメルケースを使う
  5. 予約語は使えない

色々と用語が出てきましたね。1つずつ解説していきましょう。

3.のローワ―キャメルケースとは2つ以上の単語を使う時に最初の単語の頭文字を小文字にして、それ以降の単語の頭文字を大文字にする表記法のことです。
 例)lowerCamelCase

4.のアッパーキャメルケースは3.の反対で、最初の単語の頭文字を大文字にして、それ以降の単語の頭文字を小文字にする表記法のことです。
 例)UpperCamelCase

5.の予約語よやくごとはLua言語内ですでに使われているキーワードのことです。下の表が予約語となります。

andbreakdoelseelseif
endfalseforfunctionif
inlocalnilnotor
repeatreturnthentrueuntilwhile
Lua言語 予約語一覧

あれ? localって予約語で、変数名は=の左側なんでしょう? なのに使っていいの?と思った方もいるかもしれませんね。しかし、よく見るとlocalと変数名の間にはスペースが入っています。

つまり、localは変数名ではないと認識にんしきされているので大丈夫です。裏を返せばlocalをつけるときにはきちんとスペースを空けておく必要があります。

実際のプログラミングでは簡単な英単語を使うか英単語を省略しょうりゃくしたものを使うことが多いです。

定数について

――ある日の会話――

たかし
たかし

変数とは中身を入れ替えられる箱のことで、
変数を宣言するにはlocal 変数名 = データ、と。

先生
先生

これも慣れていけば自然と使えるようになるので大丈夫ですよ。

たかし
たかし

なるほど。
ところで変数は中身を入れ替えられますが、
中身を入れ替えられない箱はないんですか?

先生
先生

おお、鋭いですね。
実は定数というものが存在します。
とはいえ、Lua言語では使うことができないんですが…

解説

多くのプログラミング言語には変数の他に定数というものが存在します。

しかし、Lua言語には定数は存在しません。ただ、変数を定数として使うことはできます。

STRING = "abcdef"
CONST_NUM = 12345
PI = 3.14

最初に変数は処理によって中身が変わることがあると言いました。しかし、定数はその名の通り値が一定に固定された変数であるため、処理によって中身が変わることがないように自分で管理する必要があります。

定数の命名規則

定数の命名規則は以下の通りです。

  1. 全て英字の大文字を使う
  2. 複数の単語を使う時は単語と単語の間を_(アンダースコア)でつなぐ

2.のことをスネークキャメルケースと呼ぶこともあります。
 例)snake_camel_case

型とは

――ある日の会話――

たかし
たかし

なるほど、特別な名前の付け方をした変数を定数と考えるんですね。

先生
先生

その通りです。
自分で管理しなければならないのが少し大変ですね。

たかし
たかし

そういえば、さっきデータには数字、文字、オブジェクトがあると書いていましたがこれってどういうことなんでしょうか?

先生
先生

実はデータの種類によって型というものが決まっているんですよ。
数値型、文字列型、boolean型、関数型、テーブル型というものが存在します。

解説

プログラミング言語には型を自分で決める言語(静的型付せいてきかたづけ)と自動的に決めてくれる言語(動的型付どうてきかたづけ)があります。

Lua言語は動的型付けの言語です。そのため、型についてあまり意識する必要はないのですが、思わぬところで型が変わってしまうことなどがあります。そこで、変数の型が何であるかを考えておくことが大切になってきます。

そもそも型とは変数に入れる中身(値)がどのようなものかを分類したものです。

例えば、値が123や1.41などの場合は数値型、”stringストリング“や’hogeホゲ‘などの場合は文字列型、trueトゥルーもしくはfalseフォルスの場合はbooleanブーリアン型、関数の場合は関数型、テーブルの場合はテーブル型と呼ばれます。

-- 数値型
number = 1234567890

-- 文字列型
string = "abcdef"

-- boolean型
boolean = true

-- 関数型
calcAdd = function(arg1, arg2)
  return arg1 + arg2
end

-- テーブル型
table = {1, 2, 3, 4}

数値型について

数値型は実数(整数と小数)やべき乗などが使えます。

int = 999
frac = 1.2345
power = 1.602e-19

文字列型について

文字列型は” “(ダブルクオーテーション)または‘ ‘(シングルクォーテーション)で囲まれた文字の並びで表されます。

string = "ABCDE"
name = 'Haru'
japanese = "こんにちは"
example1 = "'aaa'"
example2 = '"abc"'

文字列として日本語を使うこともできます。また、少しややこしいのが” “‘ ‘のついた文字列を使いたい場合です。この場合は使った記号と違う方で囲む必要があります。

実習

少し長かったですね。実際に手を動かしてみましょうか。

前回と同じようにスクリプトエディタを開いてみてください。

そしたら数値型と文字列型の変数を書いてみましょう。

local num = 123
local string = "Hello world!"

print(num)
print(string)
print(num, string)

実行すると下のようになりました。

変数の演習_実行結果

宿題

宿題としてスクリプト内で好きな型の変数を定義してください。その後print()の中で変数を呼び出してみてください。

また、以下のコードを実行してみてどこが変わっているのか考えてみてください。

-- 宿題1
local num = 123

print(num)
print("num")
-- 宿題2
local num = 123

print(num)
num = 456
print(num)
num = 123 + 456
print(num)

最後に

――ある日の会話――

先生
先生

今回は変数と型について学びましたがどうでしたか?

たかし
たかし

うーん、どんなものかについてはわかったんですが、
正直使い道がわからないです。

先生
先生

ひとまずこういうものなんだなと思ってもらえればそれで十分です。
具体的な使い方は今後も様々な場面で変数が登場するのでそこで勉強しましょう。

まとめ

  • 変数とはデータを入れる箱のこと
  • 型とはデータの種類のこと
  • 型には数値型、文字列型、boolean型、関数型、テーブル型などがある
  • 数値型はそのまま数字を代入する
  • 文字列型は” “または’ ‘の中に文字列を入れたものを代入する
  • 変数は下に行くほど更新される

お疲れ様でした。第3回はここまでです。
次回は演算と演算子について説明します。

コメント

タイトルとURLをコピーしました