Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. SwiftBeginner - How to Use Variables and Constants

How to Use Variables and Constants - Japanese Only

みなさまどうも。

さて、前回は変数と定数の宣言とか色々とお疲れ様でした。

さて、変数とか定数とかの定義方法を紹介したわけでございますが、肝心な使い方のご紹介がまだでしたね。

というわけで今回は変数とかを使って軽く処理を書いてみましょう。この概念の強力さを少しでも体験できましたら幸いでございます。

まずよく使う値を変数や定数に代入しておくことでメンテナンス(修正)がめっちゃ楽になる、というパターンを紹介したいと思います。

というわけで以下がサンプルです。

print("僕は初音ミクちゃんが好きです。")
print("僕は初音ミクちゃんを愛しています。")
print("僕は初音ミクちゃんと結婚したいです。")

上記のサンプルは初音ミクちゃんへの愛を語ったとっても素敵なプログラムでございますね。

さて、人生には色々あるわけでございますので、もし初音ミクちゃんじゃなくてIAちゃんを好きになってしまったらどうしましょう。

上記のサンプルの状態だと計3箇所修正しなくてはなりませんね。こんな感じです。

print("僕はIAちゃんが好きです。") // こんな感じで計3箇所直さないとダメです。
print("僕はIAちゃんを愛しています。")
print("僕はIAちゃんと結婚したいです。")

もし上記の愛のポエムプログラムが1万行くらいあったらなんかもう色々と頭がやばいですね。

しかし、初音ミクちゃんとIAちゃんの可愛さを考えると1万行突破は起こり得る事態なのではないかと著者は考えます。

ではここで変数とか定数を使ってみましょう。こんな感じになります。

let lover: String = "初音ミク"

print("僕は" + lover + "ちゃんが好きです。")
print("僕は" + lover + "ちゃんを愛しています。")
print("僕は" + lover + "ちゃんと結婚したいです。")

もうお察しの良い人はわかりましたね。

初音ミクちゃんじゃなくてIAちゃんが好きになっても定数『lover』の値だけ書き換えれば全ての処理に反映されます。

let lover: String = "IA" // ここだけ直せばOKです。

print("僕は" + lover + "ちゃんが好きです。")
print("僕は" + lover + "ちゃんを愛しています。")
print("僕は" + lover + "ちゃんと結婚したいです。")

これで1万行あろうが10万行あろうが問題ではなくなります。正当なアップデートってやつですね。

まずこれが変数とか定数の使い方として紹介したい一例です。よく使う値はちゃんと変数とか定数に格納しておくことでメンテナンスが圧倒的に楽ちんになります。

これと同じようなパターンで、処理削減のために演算した結果を変数とかに格納しておく、といったパターンも強力なので軽く紹介しておきます。以下のサンプルを見て下さい。

print(1 + 1)
print(1 + 1)
print(1 + 1)
print(1 + 1)
print(1 + 1)

ただ『1 + 1』の演算結果を5回出力してるだけの処理ですね。

これちょっとプログラムという観点から観察してほしいのですが、『1 + 1』の演算を5回、コンピューターにさせてしまっていますね。

『1 + 1』の結果は常に『2』で変化がありません。こういうときは変数とか定数に入れてあげて、それを使って処理を組むことでコンピューターへの負担を減らすことができます。

let n = 1 + 1 // 演算結果が変わらないのであれば変数とか定数とかにいれてあげます。

print(n) // 定数を使って出力します。
print(n)
print(n)
print(n)
print(n)

このパターンも覚えておきましょう。

そしてもう一つ紹介したいサンプルがあり、変数は自分自身を演算(計算)に使い、その結果を自分に代入するというトリッキーなことができます。

なんのこっちゃって話なんですが、以下のサンプルをみてください。これ、なんて出力されるか分かりますでしょうか。他の記事でも紹介したサンプルですが、数学にはないプログラミングならではのトリッキーな演算方法になります。

var n = 1

n = n + 1

print(n)

先に答えを言ってしまうと答えは『2』です。

ではちょいと解説していきますね。まず最初の1行目ですが、これは問題ないですね。変数『n』に数値『1』が入っているだけです。値を書き換えるので定数ではなく変数を使ってます。

var n = 1;

問題は次の行です。

n = n + 1;

ここで引っかかっちゃう人多いです。ここでプログラミングでは右辺から左辺へ処理が進んでいく、ということを思い出してみましょう。

つまり、最初に処理が走るのは右辺です。なので右辺に注目します。右辺の処理が走る前の変数『n』には数値の『1』が代入されています。ってことはこうなりますね。

n + 1; // 変数『n』は数値の『1』なので、つまりこの演算は『1 + 1』です。

そしてその演算結果を書き換えてみるとこうなります。

n = 2;

というわけで答えは『2』になります。

いかがだったでしょうか。プログラミングは数学と非常に似ている、というか本質的には同じようなものだったりするのですが、数学とは違ったプログラムならではのトリッキーな演算方法だったと思います。

Swiftでは『\(変数または定数)』とすることで文字列の中で変数や定数を展開することができます。こんな感じになりますね。

let s = "初音ミク"

print("ぼくは\(s)が好きです。") // 『ぼくは初音ミクが好きです。』が出力されます。

変数とか定数を『\(』と『)』で囲む感じになりますね。これ良く使われるので覚えておいて下さい。

ちなみに展開する変数とか定数の中身が文字列でない場合は勝手に変換されちゃいます。Swiftは基本的に型に厳密に出来ているので、これはちょっと珍しい挙動になりますね。エラーになるかと思いきやエラーにならないのでちょいと気をつけて下さい。

let n = 1, b = true

print("\(n)") // 『1』が出力されます。
print("あいうえお\(b)") // 『あいうえおtrue』が出力されます。

というわけで変数と定数の使用例でございました。ちょっとしたサンプルのご紹介となりましたが、なんとなくでもこの概念の強力さとか便利さが伝わりましたでしょうか。

続いての記事では『配列』についてやっていきます。

ではではこの辺で。またお会いしましょう

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .