swiftのコードをちょっと書いて実行する時にとても便利なXcode版のplayground
swiftの初心者である私はサンプルコードを書いてプログラムを学んでいるのでplaygroundの様な応答性の高いものが欲しい。
だがしかし、いざplaygroundを起動してコードを書いてもなかなか返事が返って来ない。
2018/3/19日、Xcodeのアプデが来て"Fixes an issue that caused Xcode to slow down when editing a playground"プレイグラウンドの修正が入るよって言っていた。
ということで、playgroundが遅くなったときにやっている方法を紹介します。
解決策1 メモリ足りてるか問題。
playgroundを使用するにあたってメモリ不足は重大な問題です。
とりあえず最初はメモリが十分に余っているか確認してください!
確認方法はアクティビティモニタアプリケーションから

最低メモリが2GBくらいあったら動作が安定する。
解決策2 ファイルをクラウドで操作していないか?!!
今まで私はどこでも編集できるようにファイルの場所をDropbox内のフォルダに入れていた。ここで私はある仮説を立てた。
glaygroundはインタラクティブな実行環境な上にコードの予測変換などが出来て常にファイルの整合が保たれていないと使えないんじゃね?と。
つまり、Dropboxの様なオンラインストレージとローカルにある複数のコンピュータとの間でデータの共有や同期をしているものはコードの整合に時間がかかるのでplaygroundが激重だったということだ。
早速ローカルのフォルダで試してみる
パスは
/Users/hiromen/ドキュメント/MyPlayground.playground
場所はローカルであればどこでも良い。icloudフォルダで試したが出来た!
結論
- Xcodeのplaygroundが使えた。
以下の記事はmacを使用していないひとLinuxでswiftコードを書いているひと向け
1 ターミナルから対話的に行う(Pythonのインタラクティブモード)
ターミナルでswift(あるいは xcrun swift)と入力しswiftを動作させるとplaygroundのように対話的に利用することができる。
$swift
Welcome to Apple Swift version 4.1 (swiftlang-902.0.48 clang-902.0.39.1). Type :help for assistance.
1>
///あるいは..
$xcrun swift
Welcome to Apple Swift version 4.1 (swiftlang-902.0.48 clang-902.0.39.1). Type :help for assistance.
1>
2 ソースコードをコンパイルする
あらかじめテキストエディタでswiftのコードを書いておきターミナルでそれをコンパイルする方法
今回はwhy.swiftをコンパイルしていきたいと思う。
まずコードを書く
for _ in 1...5 {
print("なぜplaygroundが使えないの?")
}
ターミナルを起動してファイルのあるディレクトリに移動後以下のように叩く
$ swiftc why.swift ///コンパイルされる(エラーがあれば吐かれる)
$ ./why ///実行
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
2行書けば実行できる。普段はこっちを使う。
コンパイルせずに実行するには...
コンパイルせずに解釈実行するには以下のようにターミナルを叩く
$ swift why.swift
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
なぜplaygroundが使えないの?
1行で実行できる(笑)
以上で私がplaygroundが使えないときにswiftコードを確認する際に使っている方法でした。
playgroundが使えなかった理由がフォルダの場所(Dropbox)にあった。仮説を立てることが大切だなと感じました。