結果をグラフで確認する
ここまでの操作で、プログラムとしてはとりあえず完結します。さっそく動かしてみましょう。画面の右下近くにある「▶ Run My Code」をタップしましょう。そうしても画面には大きな変化は現れませんが、よく見ると、プログラムを入力した部分(正確にはループの内側の代入式の部分)の右側に「20x」と表示されます。前回は1つの計算式を入力した結果が数値になったので、「123」のようなボタンが表示されていた部分です。「20x」は、結果が20個あることを意味しています。iの2乗をループで20回計算したので、それを反映したものです。その「20x」の部分をタップしてみましょう。前回は数値が1つ表示されただけでしたが、今回は20個の結果の値の変化を表すグラフが表示されます。
エラーを確かめながらforループを編集する
次に、このforループを編集してみましょう。まず、あえてforループの外側、その後ろに新しい文「var y = x * i」のように入力してみます。プログラミング経験をお持ちの方はおわかりかと思いますが、この行はエラーとなってしまいます。Swift Playgroundsでは、エラーのある行の先頭部分に、大きめの赤丸が表示されます。
このエラーの理由を知るには、その赤丸をタップします。すると、その行の下に簡単なエラーメッセージが吹き出し状に表示されます。「Use of unresolved identifier 'x'」というのは、直訳すれば「解決できない識別子xが使用された」となります。
この吹き出しの内側をよく見ると、メッセージの上に濃さの異なるグレーの丸印が2つ並んでいます。これは、もう1つメッセージがあるという意味です。メッセージ部分を横にスワイプすると、もう1つのメッセージの表示に切り替わります。それも同様で、平たく言えば「iなんて変数知らないよ」というものです。
実はこの行は、本来forループの内側に書くべきものなのです。ループの中で宣言した変数xも、ループの外では無効ですし、ループの回数を数えるカウンターのiも、当然ながらループの内側だけで有効です。そこで、この行をループの内側に移動しましょう。ここで、Swift Playgroundsならではの編集機能を使います。まず、forループの枠を選択するために、「for」の部分をタップします。すると、ループの先頭と末尾の行が赤いハイライト表示になり、その間が細い縦線で結ばれます。
さらによく見ると、ループの末尾の「}」の後ろになぜか「‥」という表示が追加されました。実はこれは一種のハンドルです。ここをドラッグして動かせますよ、というマークなのです。そこで、そこの部分をドラッグして下方に移動し、その下にある「var y = x * i」の行を飲み込んでしまいましょう。
これで、ループの中には2つの行が入りました。それと同時にエラーの赤マークも消えたはずです。この2つの式では、変数xにiの2乗を、変数yにはiの3乗(iの2乗にさらにiを掛けたもの)を代入することになります。このプログラムを走らせると、式が2つなので、右端の「20x」も縦に2つ並びます。下の「20x」をタップして、結果をグラフ表示させてみましょう。
これだけでは2つの式の違いがはっきりしません。iの値の変化が正の範囲(1〜20)だけなので、2乗と3乗の差が大きくないからです。そこで、forループの範囲を変更して、負の範囲も含むようにしてみましょう。それには、forループの先頭の「for i in 1 ... 20」の「1」の部分をタップします。すると「1」がハイライト表示されると同時に、その下におなじみのテンキーパッドが現れます。こんどはキーの上にあるつまみをドラッグして値を変化させてみましょう。左方向に回すと値が減っていきます。ちょうど2周ほど左に回すと「-20」になるでしょう。
この結果、forループは、-20から20まで、0を含んで41段階に変化するようになりました。結果をグラフで確認しましょう。「41x」の部分をタップした後、表示されるグラフの下の「Add viewer」をタップして、プログラムの中にグラフを埋め込みます。これで、2乗と3乗の違いもはっきりわかりました。グラフは、それぞれの式の下に別々に表示され、明示的に消す操作をしないと、ずっとそのままになります。
次回の予定
今回までで、iPad版のSwift Playgroundsの操作にもだいぶ慣れてきたでしょう。次回からは、Xcode版を使っていた回では学ばなかった内容にも徐々に踏み込みつつ、さらにSwift Playgroundsの魅力にせまっていく予定です。