Swiftの開発を捗らせるPlaygroundを使用する

2017年11月2日(木)
大津 真
連載3回目となる今回は、Swiftでの開発を効率化させるPlaygroundを利用したUIのテストについて説明する。

はじめに

XcodeでSwiftによるプログラミングを進めていく段階で、「コードの一部だけを試したい」といった場合などにいろいろと便利なのが、入力したコードの結果がリアルタイムに反映されるPlaygroundです。

今回は、Playgroundを使用してUIをテストする方法について説明しましょう。またクラスを、Playgroundファイルとは別のソースファイルにする方法についても説明します。

PlaygroundSupportモジュールの基本的な使い方

Xcode 7.x以前のPlaygroundでは、UIのテストなどにXcode付属のユーティリティフレームワークである「XCPlaygroundモジュール」を使用していました。それに対してXcode 8以降は、XCPlaygroundは非推奨(Deprecated)となり、その代替として「PlaygroundSupportモジュール」を使用します。

以下に、PlaygroundSupportモジュールを使用して、アシスタントエディタにビューを表示するためのプログラムの基本的な流れを示します。

1. PlaygroundSupportモジュールをインポートする
import PlaygroundSupport

2. PlaygroundページのliveViewプロパティに表示するビューのインスタンスを代入する
PlaygroundPageクラスのcurrentタイププロパティを使用すると、現在のPlaygroundページが取得できます。そのliveViewプロパティに、目的のビュー(以下の例ではmyView)を設定します。
PlaygroundPage.current.liveView = myView

イメージをliveViewに表示する

実際の例を示しましょう。リソースとして登録したPNG形式のイメージ「cat1.png」からUIImageオブジェクトを生成し、それをイメージ表示用のViewであるUIImageViewオブジェクトに登録して、PlaygroundのliveViewプロパティに設定してみましょう。

1.「File」メニューから「New」→「Playground」を選択すると表示されるテンプレート選択画面では、「Blank」を選択します。
テンプレートに「Single View」を選択するとUIViewControllerのサブクラスとしてMyViewControllerが作成されますが、ここではゼロからコードを入力することにします。

Blankを選択し、ゼロからコードを入力する

Blankを選択し、ゼロからコードを入力する

2.表示するイメージファイルを「Resources」フォルダに登録します。
「Project Navigator」を表示し、Finderからイメージファイルをドラッグ&ドロップで「Resource」フォルダに保存します。

イメージファイルを登録

イメージファイルを登録

3.Playgroundのエディタを開きコードを記述します。
次にリストを示します。

リスト1:MyPlayground1.playground

01import UIKit
02import PlaygroundSupport
03 
04// イメージオブジェクトを生成
05var myImg = UIImage(named: "cat1")
06 
07// UIImageViewを生成
08var imgView = UIImageView(image: myImg)
09 
10// liveViewにimgViewを登録
11PlaygroundPage.current.liveView =  imgView

4.アシスタントエディタの「LiveView」→「Playgroundファイル名(LiveView)」を表示します。
以上で、アシスタントエディタにイメージが表示されます。

指定したイメージが表示される

指定したイメージが表示される

複数のイメージをランダムな位置に表示する

続いて、適当なサイズのコンテナとして使用するUIViewを用意し、その中に10個のUIImageViewオブジェクトをランダムな位置に配置してみましょう。

複数のイメージを表示する

複数のイメージを表示する

次にリストを示します。

リスト2:MyPlayground2.playground

01import UIKit
02import PlaygroundSupport
03 
04let viewHeight = 500
05let viewWidth = 400
06// コンテントビューを生成
07let contentView = UIView(frame: CGRect(x:0, y:0, width: viewWidth, height: viewHeight))   // <=(1)
08 
09// 背景色を黄色に
10contentView.backgroundColor = UIColor.yellow // <=(2)
11 
12// イメージビューを生成
13var myImg = UIImage(named: "myCat")
14var imgView:UIImageView
15 
16// 10個のイメージビューをコンテントビューにランダムに配置
17for _ in 1...10 {  // <=(3)
18    let x = arc4random_uniform(UInt32(viewWidth))
19    let y = arc4random_uniform(UInt32(viewHeight))
20    imgView = UIImageView(image: myImg)
21    imgView.center = CGPoint(x: Int(x), y: Int(y))
22    contentView.addSubview(imgView)
23}
24 
25// コンテントビューをPlaygroundのliveViewにセット
26PlaygroundPage.current.liveView = contentView

上記リストのポイントとなる箇所を説明していきます。(1)でコンテンツビューとして使用する400×500ピクセルのUIViewを生成しています。(2)でその背景色(backgroundColor)を黄色(yellow)に設定しています(Swift 3以降では、UIColorの色の設定/取得はメソッドではなくプロパティとなりました)。

contentView.backgroundColor = UIColor.yellow ←yellowプロパティに設定

(3)のforループで10個のUIImageViewを生成し、コンテンツビュー内のランダムな位置に配置しています。

東京都生まれ。早稲田大学理工学部卒業後、外資系コンピューターメーカーにSEとして8年間勤務。現在はフリーランスのテクニカルライター、プログラマー。

<主な著書>
きちんとわかる! JavaScript とことん入門(技術評論社)
基礎Python(インプレス)
他多数

連載バックナンバー

開発言語技術解説
第9回

Swiftでの文字列操作の基礎(その1)

2019/9/27
連載9回目となる今回は、Swfitによる文字列操作の基本を学びます。あわせてSwift 5で導入された新機能にもついても紹介します。
開発言語
第8回

Swiftでクロージャを理解する

2018/12/21
連載8回目となる今回は、モダンな言語に欠かせないクロージャについて解説します。
開発言語技術解説
第7回

Swiftのユーザ定義関数の活用

2018/9/13
連載7回目となる今回は、Swiftのユーザ定義関数のさまざまな活用方法を紹介していく。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています