Swift Playground - コードを学ぼう1【コマンド】Part 2
Swift Playground「コードを学ぼう1」でデバッグに挑戦してみましょう。本記事ではプログラミング初心者にも分かりやすいように解説し、コードの正解例を掲載しています。
デバッグに挑戦しよう
プログラミング言語 Swift を楽しく体験できる Swift Playground で、コーディングの基礎を学びましょう。
「コードを学ぼう1」の第1チャプタ「コマンド」のレッスンを、Part 1・Part 2 の2回に分けて解説しています。今回はその Part 2 です。
- レッスン1〜4:前回の Part 1 で取り上げ、コマンドを組み合わせて Byte を動かす課題に取り組みました。
- レッスン5〜7:この記事で解説します。バグを見つけてデバッグする練習をしていきましょう。
コマンドの基本的な使い方は実習済みですか? まだの方は Part 1 の記事からご覧ください。

レッスンのポイント
レッスンを始める際に知っておきたいポイントを下にまとめました。
- バグとは、プログラムが思い通りに動かない原因となる間違いのことです。
- デバッグとは、正しく動かなくなる原因のバグを見つけて直すことです。

では、次のセクションからレッスン開始です。Byte を正しく動かすためのコードを書いていきましょう!
※ この記事で紹介しているコードは、あくまで一つの例です(動作確認 Swift 5.8 版)。プログラミングでは、同じ動きを作る方法がいくつもあります。いろいろなやり方を試しながら、自分なりの答えを見つけてみてください。
レッスン 5「バグを見つけて直す」
【目標】
- バグ、デバッグの意味を知る
- デバッグを行い Byte を正しく動かす

課題解決の流れ
1. コードを実行しよう
このレッスンでは、コードがすでに入力されています。まずは「コードを実行」を押して、Byte の動きを確認しましょう。
// 入力済みのコード
moveForward()
turnLeft()
moveForward()
moveForward()
collectGem()
moveForward()
toggleSwitch()
このステージには宝石とスイッチがありますが、Byte は宝石にもスイッチにも到達しません。つまり、このコードにはバグがある、ということです。

2. 間違いを確認しよう
宝石とスイッチへ行き着くためには、2マス進んでから左に曲がります。今のコードだと、turnLeft() が2行目に書いてあるので、左に向くタイミングが早すぎですね。
入力済みのコードはコマンドの「順序」に問題がある、ということが分かりました。
moveForward()
// バグ
turnLeft()
moveForward()
moveForward()
collectGem()
moveForward()
toggleSwitch()
3. デバッグしよう
バグの原因を修正しましょう。
moveForward() を2回実行してから左に向くよう、turnLeft() を3行目に入力し直してください。または、turnLeft() を選択してドラッグ & ドロップで簡単に移動することもできます。

4. コードを実行しよう
もう一度「コードを実行」を押して動きを確かめましょう。正しい位置で左に曲がり、宝石を取ってスイッチを切り替えられたら、デバッグ成功です!
// デバッグしたコード
moveForward()
moveForward()
turnLeft()
moveForward()
collectGem()
moveForward()
toggleSwitch()
レッスン 6「バグつぶしの練習」
【目標】
- 複数のバグを見つける
- デバッグする

課題解決の流れ
1. コードを実行しよう
このレッスンも、コードがすでに入力されています。「コードを実行」を押して、Byte の動きを確認しましょう。
// 入力済みのコード
moveForward()
moveForward()
moveForward()
turnLeft()
toggleSwitch()
moveForward()
moveForward()
moveForward()
collectGem()
moveForward()
1つ前のレッスンではバグが1箇所だけでしたが、今回のコードにはバグが複数あります。

2. 切れているスイッチをオンにしよう
入っているスイッチを切り替える必要はないので、オフになっているスイッチを目指して進みましょう。ステージ中央あたりにある切れているスイッチへ行くためには、1マス進んだあとに向きを左に変えます。
【デバッグ方法】moveForward() を1回実行してから左を向くよう、4行目にある turnLeft() を2行目に修正してください。
moveForward()
turnLeft() // 左を向く
moveForward()
moveForward()
toggleSwitch()
moveForward()
moveForward()
moveForward()
collectGem()
moveForward()3. 宝石を取りに行こう
スイッチを切り替えたあとは、ワープを使って宝石を取りに行きましょう。スイッチからワープまでは2マス、ワープから出たあとは宝石まで2マス進みます。
【デバッグ方法】moveForward() を4回実行してから宝石を取るよう、collectGem() を1番下へ修正してください。
moveForward()
turnLeft()
moveForward()
moveForward()
toggleSwitch()
moveForward()
moveForward()
moveForward()
moveForward()
collectGem() // 宝石を取る4. コードを実行しよう
もう一度「コードを実行」を押して動きを確かめましょう。切れているスイッチをオンにして宝石を取れたら、デバッグ成功です!
// デバッグしたコード
// 切れているスイッチを入れに行く
moveForward()
turnLeft()
moveForward()
moveForward()
toggleSwitch()
// 宝石を取りに行く
moveForward()
moveForward()
moveForward()
moveForward()
collectGem()
レッスン 7「最短の道順」
【目標】
- 最小コマンド数でクリアする方法を考える

課題解決の流れ
1. ステージを確認しよう
コマンドのレッスンはこれが最後です。宝石を取ってスイッチをオンにできる最短の道順を考えましょう。
緑のワープを使えばまっすぐ進むだけでクリアできそうだ、ということが分かりますね。

参考までに、宝石を取ってスイッチをオンにする道順はほかにもあります。近くにある青いワープから入っていく道順です。この方法でもステージはクリアできますが、最短の道順を選ぶという今回の課題には適していません。

2. コードを入力しよう
最短の道順でクリアできるようコーディングしましょう。マスの数を数えて、宝石を取るタイミングやスイッチを切り替えるタイミングを間違えないように、コマンドを組み合わせてください。
// 宝石を取りに行く
moveForward()
moveForward()
moveForward()
collectGem()
// 緑のワープまで進む
moveForward()
moveForward()
// 切れているスイッチを入れに行く
moveForward()
moveForward()
toggleSwitch()
もし正しく動かなくても、何度でもやり直すことができます。コマンドを入力したら試しにコードを実行してみて、使用するコマンドや順序にバグがないか確認してみてくださいね。
3. コードを実行しよう
「コードを実行」を押して動きを確かめましょう。宝石を取ってスイッチをオンにできたら、ステージクリアです!
このレッスンでは、できるだけ少ないコマンド数で目的を達成する、ということを学びました。このようなコーディングを心がけると、コードがすっきりして読みやすくなり、バグを防ぐことにもつながります。
// コード正解例
// 緑のワープまで進む
moveForward()
moveForward()
moveForward()
collectGem()
moveForward()
moveForward()
// 切れているスイッチを入れに行く
moveForward()
moveForward()
toggleSwitch()
まとめ
今回は、Swift Playground の「コードを学ぼう1」で、デバッグの方法などを学習をしました。
コマンドは上から順に実行されるので、1箇所でも順序が間違っていると思ったようには動きません。複雑なコードになればなるほど、バグは避けられないものです。期待どおりに動かなくてもがっかりせずに、どこに問題があるのかを探してデバッグする姿勢を大切にして、プログラミングに取り組んでいきましょう!
最後まで読んでいただき、ありがとうございます。この記事をシェアしてくれると嬉しいです!
SNS で Pyxofy とつながりましょう! LinkedIn・ Threads・Bluesky・ Mastodon・ X (Twitter) @pyxofy・ Facebook




