Xcode
iOS
Swift
playground
XCode7
iOSDay 1

Xcode 7のPlaygroundで出来ることまとめ

More than 3 years have passed since last update.

Xcode 7のPlaygroundでちょっとしたコードを試せるのはかなり知られていると思いますが、その便利機能の全貌を把握している人は少ないのでは無いでしょうか。

僕はたまにすごく使いこなしている例を見つつそのやり方が分からないものがちょくちょくあるという状態だったので、改めて調べてみました。


構成把握

作成直後は色々折りたたまれてシンプルなエディタ状態ですが、諸々展開すると普通のXcodeでのiOSアプリ開発ぽい感じになります。

デフォルトではコードの右に、評価された値が表示されますが、さらに下の出力エリアにprintNSLogの出力が表示されます。

Screen Shot 2015-11-23 at 3.43.10 PM.png

.playgroundはフォルダになっていて、中身を見ると上記のソースに当たる部分がContents.swiftで、他はプロジェクトファイル系ですね。

Screen Shot 2015-11-23 at 3.43.22 PM.png

デフォルトでは、コードの実行は暗黙的に行われ、ファイル変更後にその時点でコンパイル可能だとそのまま実行され、エラーがあるとその旨が表示されます。

この挙動はこちらで切り替えられますが、手間増えるだけなので、通常はデフォルトの挙動のままで良いと思います。

Screen Shot 2015-11-23 at 3.52.23 PM.png


表示周り


タイムライン

メニューからView > Assistant Editor > Show Assistant Editorを選択すると、

Screen Shot 2015-11-23 at 4.10.32 PM.png

こういうリッチな表示が見られます。

Screen Shot 2015-11-23 at 4.11.03 PM.png

描画周りなどの詳細: XCPlayground Module Reference


結果の見方

右の目のようなアイコンで、リッチな表示が見られます。

Screen Shot 2015-11-23 at 4.12.55 PM.png

その時点での結果を確認出来ます。

Screen Shot 2015-11-23 at 4.13.04 PM.png

その右のボタンを押すと結果が挿入されます。

Screen Shot 2015-11-23 at 4.14.24 PM.png

変数の値変化はデフォルトでグラフ表示されたり、他の表示も選べたりと、すごいですね( ´・‿・`)

右クリックでこの変更メニューが出ます。

Screen Shot 2015-11-23 at 4.19.34 PM.png


ファイルの追加


ソースの追加

デフォルトではシンプルな構成ですが、ページやSourcesResourcesの追加など可能です。

こちらは、1ページ追加して、Default PageSourcesCustomeViewを追加した状態です。

Screen Shot 2015-11-23 at 4.25.13 PM.png

Sourceに追加したものがページから見えるようにするには、public指定が必要です。

import UIKit

public class CustomView: UIView {
}


リソースの追加

Resourcesフォルダに画像やその他ファイルなど入れられます。

さらに、それらをソースにD&Dすると、そのままUIImageやファイル(NSURL)として扱えてしまいます( ´・‿・`)

Screen Shot 2015-11-23 at 4.33.54 PM.png

また、UIColorについても同様にカラーピッカーからD&Dで便利に扱えます。

Screen Shot 2015-11-23 at 4.40.20 PM.png

D&Dではなく、Editorメニュー経由でも挿入出来ます。

Screen Shot 2015-11-23 at 5.43.50 PM.png

こちらが詳しいです:

Literals in Playgrounds - Swift Blog


リッチなドキュメントにする

通常のコメントもmarkdownぽい書式がサポートされましたが、playgroundでも同様の書式がサポートされてそれをインライン表示可能です。

こういうmarkdownぽいコメントを書いて、

/*: Create a bulleted list of animals

### Some Animals
* Cat
* Dog
* Llama
*/

表示を切り替えると…

Screen Shot 2015-11-23 at 4.49.20 PM.png

良い感じになりました

Screen Shot 2015-11-23 at 4.49.01 PM.png

ソースも変更されるので、この状態で保存すればドキュメントぽいものが作れますね。

(iPython notebookぽいですね)

-<playground version='6.0' target-platform='ios' display-mode='raw'>

+<playground version='6.0' target-platform='ios' display-mode='rendered'>

こちらのRender Documentationでの切り替えの方が簡単かもしれません。

Screen Shot 2015-11-23 at 4.56.25 PM.png


ページのナビゲーション対応

このように書くと、

//: [Previous](@previous)

import Foundation
var str = "Hello, playground"

//: [Next](@next)

このように前後のページ(左のリストでの表示順)へのリンクを作成可能です。

Screen Shot 2015-11-23 at 5.01.14 PM.png

//: ["Go to The End"](New%20Page)のように、()内にページ名指定で、前後に限らず任意のページへのリンクも作成可能です。


その他


フレームワークの使用

playgroundから任意のフレームワークをimportして利用可能です。

詳細: Importing Custom Frameworks into a Playground


活用事例

特に、リッチコメントやページリンクなど強力なので、色々な用途に応用出来そうですね。

いくつか感心する例を見かけたことある気がしますが、とりあえず今覚えているものだけ…。


RxSwift

よく見たらREADMEに、Playgroundsについての記載があり、開いたらすごく便利でした。

動き見ながら説明読むと、とても理解が深まります( ´・‿・`)

Screen Shot 2015-12-07 at 12.47.28 PM.png


gmertk/SwiftAlgorithmsClassroom

Classroomという名前の通り、出題形式でアルゴリズム実装する形式になっていて良い感じです。


uraimo/Awesome-Swift-Playgrounds: A List of Awesome Swift Playgrounds!

各種リンク集です。