HomeBooks

En

Chapter 1
プログラムを書く準備
Chapter 2
図形を描く
§2.3 - 変数
KM
bykarutt

2024-09-10

「変数」とは

このセクションでは、「変数」について学びます。変数はデータを保存するための箱のようなもので、箱に保存したデータは、参照や計算ができます。変数を使うと、何度も同じ値を書く手間を省き、値を一括で更新できます。また、プログラムの可読性(読みやすさ)が向上し、メンテナンスも容易になります。

  • 1箇所の変更でコードの修正ができる
  • 変数名でコードが読みやすくなる(可読性が向上する)

Practice 3.1.1

それでは、以下のサンプルコードを、変数を使ってより良いコードにしていきます。

function setup() {
    createCanvas(400, 240);
    background('#D6E3ED');

    circle(80, 120, 120);
    circle(200, 120, 120);
    circle(320, 120, 120);
}

現在のコードでは、円の直径が固定されているため、変更時にすべての値を個別に修正する必要があります。これを避けるために、変数で円の直径を管理しましょう。

function setup() {
    createCanvas(400, 240);
    background('#D6E3ED');

    let radius = 120; // 円の直径を変数で管理

    circle(80, 120, radius);
    circle(200, 120, radius);
    circle(320, 120, radius);
}

次に、変数radiusの値を150に変更して、すべての円の直径が一度に更新されることを確認しましょう。

変数の宣言

変数を使うには、まず変数を宣言する必要があります。宣言は、letに続けて変数名を指定する形で行います。変数名は自由に決められますが、ここではわかりやすくradius(直径)と名付けましょう。その後、その変数に値を代入します。

let radius; // 変数の宣言
radius = 120; // 値を代入

// 利用できない変数名
let 0number = 120; // エラー! 変数名は数字から始めることはできない。
let ✞BlackWing✞ = 120; // エラー! 変数名に記号を使うことはできない。

変数の宣言と値の代入を同時に行うこともできます。一行で書くと以下のようになります。

let radius = 120; // 変数の宣言と値の代入

変数の宣言は1度だけ行えば良いです。その後は、変数名を使って値を参照したり、更新したりすることもできます。

let x = 120; // 変数の宣言と値の代入
x = 100; // radius変数の値を 120 → 100 に更新

let x = 140; // エラー発生!!! 変数の再宣言はできない!

Practice 3.1.2

先ほど修正で、円の直径をradius変数で管理し、値の一括変更ができるようになりました。

function setup() {
    createCanvas(400, 240);
    background('#D6E3ED');

    let radius = 120; // 円の直径を`radius`変数に格納

    circle(80, 120, radius);
    circle(200, 120, radius);
    circle(320, 120, radius);
}

今度は、円の y 座標を変数で管理してみましょう。

function setup() {
    createCanvas(400, 240);
    background('#D6E3ED');

    let radius = 120; // 円の直径を`radius`変数に格納
    let y = 120; // 円の y 座標を`y`変数に格納

    circle(80, y, radius);
    circle(200, y, radius);
    circle(320, y, radius);
}

y 座標を変数で管理しているため、たとえば、すべての円を画面の中央に配置したい場合、y の値を変更するだけで対応できます。また、circle 関数では、第 2 引数に変数 y、第 3 引数に変数 radius を使うことで、コードがより読みやすくなりました。

組み込み変数

<!-- 組み込み変数とは? -->

p5.js には、プログラムの中で使える「組み込み変数」がいくつか用意されています。組み込み変数は、p5.js によってあらかじめ宣言&代入された変数のことです。例えば、widthheight は、キャンバスの幅と高さを取得するための組み込み変数です。

function setup() {
    createCanvas(400, 240);
    print(width); // `400`が出力される
    print(height); // `240`が出力される
}

上記のコードでは、変数の宣言は行っていませんが、width には 400height には 240 が自動的に宣言&代入されます。

他にも、p5.js にはさまざまな組み込み変数があります。

変数名説明
windowWidthウィンドウの幅
windowHeightウィンドウの高さ
widthキャンバスの幅
heightキャンバスの高さ
mouseXマウスの X 座標
mouseYマウスの Y 座標

もっと詳しくは知りたい場合は、p5.js のリファレンスを参照してください。

Practice 3.1.3

次は、画面の縦幅が変わっても円が常に中央に表示されるようにコードを改良します。先ほどのコードをもう一度確認しましょう。

function setup() {
    createCanvas(400, 240);
    background('#D6E3ED');

    let radius = 120; // 円の直径を`radius`変数に格納
    let y = 120; // 円の y 座標を`y`変数に格納

    circle(80, y, radius);
    circle(200, y, radius);
    circle(320, y, radius);
}

このままだと、例えば画面の縦幅が、240 から 400 に変更された場合、円の位置がキャンバスの中央からずれてしまいます。そこで、円の Y 座標を画面の中央に配置するために、height 変数を使って計算します。

function setup() {
    createCanvas(400, 400);
    background('#D6E3ED');

    let radius = 120; // 円の直径を`radius`変数に格納
    let y = height / 2; // 画面の中央の Y 座標を計算し、`y`変数に格納

    circle(80, y, radius);
    circle(200, y, radius);
    circle(320, y, radius);
}

このコードでは、height / 2 を使ってキャンバスの中央の Y 座標を計算し、その値を y 変数に格納しています。/は次の章で説明しますが、割り算を行う演算子で、÷ と同じ意味です。これにより、画面の縦幅が変更されても、円は常に中央に配置されるようになります。

Prev
§2.2 - 描画のルール