Swift Playground - コードを学ぼう2【型】解答例と解説 Part 1
Swift Playground「コードを学ぼう2」で型について学習しましょう。本記事ではプログラミング初心者にも分かりやすいように解説し、コードの正解例を掲載しています。
ワープの有効/無効を設定しよう
プログラミング言語 Swift を楽しく体験できる Swift Playground で、コーディングの基礎を学びましょう。
今回紹介するのは、「コードを学ぼう2」の第2章「型」です。全部で5つのレッスンを2回に分けて解説していきます。
- レッスン1〜2:この記事で取り上げます。型、インスタンス、プロパティ、ドット表記について知り、ワープのオンとオフを切り替える練習をしていきましょう。
- レッスン3〜5:次回の Part 2 では、複数のワープを操作して効率よくゴールするためのコーディングに挑戦します。
第1章の「変数」は実習済みですか?まだの方は以下の記事からご覧ください。

レッスンのポイント
プログラムでは、数字や文字など、さまざまなデータを扱います。どんな種類のデータなのかをコンピュータが理解できるように、あらかじめ「これは数字ですよ」「これは文字ですよ」などと指示するのが「型」の役割です。そうすることで、間違いを防いで正しく処理できるようになります。つまり一言でいうと、型とは、データの種類のことです。
// 型の例
100 // Int整数型
"Hello" // String文字列型
true // Bool真偽値型
上にあげた Int や String のような一般的な型のほかに、Swift Playground には Portal 型や Character 型などの独自の型が用意されています。見てのとおり、型の名前は大文字から始めるのがルールです。
この章では、「型」のほかにも新しい用語がたくさん出てきます。レッスンを始める前に1つずつ見ておきましょう!
インスタンスとは
インスタンスとは、型をもとに作られたモノ(実物)のことです。
型は、「どんな情報を持ち、どんな振る舞いができるか」のルールを決めた「設計図」のようなものであり、実行の主体にはなりません。プログラムで実際に使うのは、型(設計図)をもとに作られたインスタンス(実物)です。
この章には5色のワープが出てきます。これらのワープは「Portal 型」をもとに作られた「インスタンス」です。

付け足しておくと、ワープに限らず、ステージにある要素はすべて特定の型から作られたインスタンスです。
- ホッパー:
Character型 - 地面:
Block型 - 階段:
Stair型 - 宝石:
Gem型 - スイッチ:
Switch型
プロパティとは
プロパティとは、型の中で定義される変数で、そのモノが持つ特徴・状態・情報を表すために使用します。
例えば、Dog という型があるとしましょう。実際の犬は、この Dog 型から作られるインスタンスです。Dog 型には次のようなプロパティが定義されているかもしれません。
breed(犬種)gender(性別)color(色)
同じ Dog 型から作られた犬であっても、プロパティに設定される値が異なれば、それぞれ異なる特徴を持つ犬になります。例えば、色を表す color プロパティの場合、
colorの値が黒 → 黒い犬colorの値が白 → 白い犬
となります。つまり、各インスタンスはプロパティに異なる値を持つことで、それぞれ固有の特徴を表現することができるのです。
この章で取り上げていく Portal 型のインスタンスは、ワープの状態(オンまたはオフ)を決めるための isActive(有効)プロパティを持っています。isActive の値が true であればワープは有効です。false であればワープは無効となり、通り抜けることができなくなります。

ドット表記とは
ドット表記とは、. を使って、あるモノの中身(情報や機能)にアクセスする書き方のことです。ドット . は、「〜の」「〜が持っている」「〜の中にある」のような意味になります。
greenPortal.isActive:緑のワープ「の」有効プロパティ
ワープをオンまたはオフにするときは、ドット表記を使って特定のインスタンスの isActive プロパティにアクセスし、代入演算子 = を使って true または false を設定します。
/* 緑のワープの、有効プロパティに、trueを設定する
→緑のワープをオンにする */
greenPortal.isActive = true
/* 緑のワープの、有効プロパティに、falseを設定する
→緑のワープをオフにする */
greenPortal.isActive = false
また、今回レッスンには出てきませんが、型の中で定義されるものとして、プロパティのほかに「メソッド」があります。プロパティはそのモノの情報を保存する変数ですが、メソッドは「型の中で定義される関数」で、インスタンスで実行することのできる振る舞い・動作のことです。メソッドは次の章「初期化」の中で使っていきますので、頭の片隅に入れておいてくださいね。
// メソッドの例
/* キャラクターのジャンプメソッドにアクセスする
→キャラクターがジャンプする */
character.jump()
では、次のセクションからレッスン開始です!
※ この記事で紹介しているコードは、あくまで一つの例です(動作確認 Swift Playground 4.7)。プログラミングでは、同じ動きを作る方法がいくつもあります。いろいろなやり方を試しながら、自分なりの答えを見つけてみてください。
レッスン1「ワープをオフにする」
【目標】
- プロパティの値を変更する
- パターンを見つけて繰り返す

課題解決の流れ
1. 入力済みのコードを確認しよう
このレッスンでは以下のコードがすでに入力されています。
// 入力済みのコード
greenPortal.isActive = true
はじめは、緑のワープは有効です。切れているスイッチをオンにするためにまっすぐ進むと、ステージの中央でワープしてしまうので、スイッチまで辿り着くことができません。
2. ワープを無効にしよう
ワープを無効にして、スイッチまで進めるようにしましょう。
ワープの isActive プロパティが true であればワープは有効です。isActive に false を代入すると、ワープは無効になります。入力済みのコードを以下のように修正しましょう。
// ワープを無効にする
greenPortal.isActive = false

3. パターンを見つけて繰り返そう
ワープが無効になったら、普通のマスと同じように進むことができます。繰り返すパターンを見つけて関数を作り、for 文でループしてすべてのスイッチを切り替えに行きましょう。
moveThree():3マス進む
// 3マス進む関数を定義する
func moveThree() {
moveForward()
moveForward()
moveForward()
}
// 右側のスイッチから順番に切り替えて行く
for i in 1 ... 3 {
// 3マス進んで、右を向く(スイッチの方向)
moveThree()
turnRight()
// 3マス進んで、スイッチを切り替える
moveThree()
toggleSwitch()
// 後ろを向く(中心の方向)
turnLeft()
turnLeft()
}
関数と for ループについては以下の記事を参考にしてください。


4. 完成コードを実行しよう
「コードを実行」を押して動きを確かめます。ワープを無効にしてスイッチを全部オンにできたら、ステージクリアです!
// コード正解例
greenPortal.isActive = false
func moveThree() {
moveForward()
moveForward()
moveForward()
}
for i in 1 ... 3 {
moveThree()
turnRight()
moveThree()
toggleSwitch()
turnLeft()
turnLeft()
}
レッスン2「ワープのオンとオフ」
【目標】
- プロパティの値を切り替える
- 関数を作る

課題解決の流れ
1. 関数を2つ定義しよう
このレッスンの課題は、2本の道をワープで行き来して、宝石を集めてスイッチをオンにすることです。方法はたくさんありますが、できるだけ効率よくクリアする方法を考えましょう。
最初に、よく出てくる動きのパターンを見つけて、関数を2つ作ります。
moveAndCollect():行き止まりになるまで宝石を集めながら進むturnAround():道を行ったり来たりできるように向きを変える
// 宝石を集めながら進む関数を定義する
func moveAndCollect() {
// 行き止まりになるまで繰り返す
while !isBlocked {
// 1マス進んで、宝石があれば取る
moveForward()
if isOnGem {
collectGem()
}
}
}
// 後ろを向く関数を定義する
func turnAround() {
turnLeft()
turnLeft()
}
while ループと if 文については以下の記事を参考にしてください。


2. ワープを通って宝石を集めよう
紫のワープは有効です。そのままスタートして、ワープ先の道にある宝石を集めましょう。
// ワープ先の宝石を集めて、後ろを向く
moveAndCollect()
turnAround()

3. ワープをオフにしてスイッチを切り替えに行こう
宝石を集めて道の端で向きを変えたら、スイッチを切り替えに行きます。スイッチへ到達するためにはワープを無効にする必要がありますね。purplePortal の isActive プロパティに false を代入してから、スイッチを切り替えに行きましょう。
// ワープを無効にする
purplePortal.isActive = false
// 行き止まりになるまで進む
while !isBlocked {
moveForward()
}
// スイッチを切り替えて、後ろを向く
toggleSwitch()
turnAround()
4. ワープをオンにして宝石を集めに行こう
スイッチをオンにしたあとはワープを有効に戻して、はじめにいた列の宝石を集めに行きます。
// ワープを有効にする
purplePortal.isActive = true
// 宝石を集めながら進む
moveAndCollect()
5. 完成コードを実行しよう
「コードを実行」を押して動きを確かめましょう。紫のワープの有効と無効を切り替えて、宝石を集めてスイッチをオンにできたら、ステージクリアです!
// コード正解例
func moveAndCollect() {
while !isBlocked {
moveForward()
if isOnGem {
collectGem()
}
}
}
func turnAround() {
turnLeft()
turnLeft()
}
// 紫ワープを通って宝石を集める
moveAndCollect()
turnAround()
// 紫ワープをオフにして、スイッチを切り替える
purplePortal.isActive = false
while !isBlocked {
moveForward()
}
toggleSwitch()
turnAround()
// 紫ワープをオンに戻して、はじめにいた列の宝石を集める
purplePortal.isActive = true
moveAndCollect()
まとめ
今回は、Swift Playground の「コードを学ぼう2」で、型について学習しました。
型とは、データの種類を決めるルールのことです。型があることで、プログラムはデータを正しく扱うことができます。2つのレッスンをとおして学んだことを、簡単に下にまとめました。
- ステージに配置されているワープは
Portal型から作られたインスタンスである Portal型は、ワープの状態を保存するisActiveというプロパティを定義している- プロパティ値が
trueであればワープは有効(オン)、falseであれば無効(オフ)となる - オンとオフを設定する際は、ドット表記で特定のワープ(インスタンス)の
isActiveプロパティにアクセスする
次回予告
次のレッスンからは2組のワープを操作します。何色のワープをどのタイミングで切り替えれば上手にクリアできるのかを、一緒に考えていきましょう。
最後まで読んでいただき、ありがとうございます。この記事をシェアしてくれると嬉しいです!
SNS で Pyxofy とつながりましょう! LinkedIn・ Threads・Bluesky・ Mastodon・ X (Twitter) @pyxofy・ Facebook
関連記事














