見出し画像

Mac版Swift Playgrounds

【2020年12月30日内容などを確認し一部追記しました。ドラッグ&ドロップ関連の情報を追加しました。】
【2020年12月8日macOS 11.0.1での情報などを追加しました。】
【2020年11月21日バージョン3.4に対応し変更部分は差し替えました。】
追加機能には【➕3.4】、改良変更点には【👍3.4】【変更点3.4】でマークしています。
【2020年4月3日バージョン3.3の変更点を加筆しました。】
【2020年4月20日メニューの説明に一部加筆しました(4-1-2 編集メニューなど)】

Mac版のSwift Playgroundsアプリについてレポートします。
Swift PlaygroundsはMac App Storeから無料でダウンロードできる、Apple純正のアプリです。

Swift Playgroundsは「コードを学ぼう」などの教材で試しながらプログラミングを学ぶ使い方が多いと思います。
ここではXcodeと同様に開発ツールとしての側面も含め、確認できた範囲で解説します。
バージョン3.4で開発ツールとしても磨きがかかりました

画像はクリックで拡大表示できます。


1 Playgroundsについて

まずPlayground(単数のPlaygroundです)の小さな歴史から、PlaygroundはXcodeの機能としてスタートしました。

その後iPad用のアプリがリリースされ、2020年2月にMac用アプリがリリースされました。


1-1 XcodeのPlayground

Playground は Xcode 6 から導入された Swift の実行環境です。
完全なプロジェクトの準備やコンパイル& run の手順が不要で、とても手軽に Swift言語の動作を試すことができます。
1行ごとにすぐに結果を表示するので、Swift言語の学習に最適です。

新規に Playground を始めるには、最初に必ずファイル名を決め保存します。
その後入力したコードは自動保存されます。
(登場した当初からiCloud対応が想定されていたようです)

当時のPlayground書類はシーソーのアイコンでした。

画像16

XcodeのPlaygroundは最新のXcode 12でも健在で、SwiftUIにも対応しています。
Welcome to Xcode画面で開くことができ、Xcodeをはじめて使う場合にも使われています。
【Xcode 12のWelcome to Xcode画面では「Get started with a playground」のボタンがなくなりましたメニュー操作が必要です】

画像29

現在playground書類のアイコンはシーソーからSwiftのつばめに変わっています。

画像17

playground書類は単純なテキストファイルではなく、複数ページ対応で画像や動画などのデータを含むことのできるパッケージ形式です。

書式もマークアップで拡張され、入力編集可能な部分と編集できない解説にわけることができます。
実行できるプログラミング参考書的な用途が最初から考慮されています。
実際に The Swift Programming Language の「A Swift Tour」はplayground書類も公開されています(英文)。
swift.orgのA Swift Tourのトップページのリンクからダウンロードできます。

ダウンロードした実行できるSwiftのテキスト「GuidedTour.playground」をXcodeで開いた画面

画像18

このような書類を作成するためのマークアップのドキュメントが公開されています。
Markup Formatting Reference(英文)

マークアップはQuick Helpにも対応できます。

1-1-1 Playground の画面

XcodeでのPlaygroundの実行画面はソースエディタと結果サイドバーに分かれています。
結果サイドバーはソースエディタの各行に対応する「行の値」を表示します。

一行単位で実行できるところが最大の特徴であり、開発ツールとしての価値と言えます。

画像30

XcodeのPlaygroundでは画面下にdebug areaを表示させることができます。
debug areaではprint出力を表示します。
ソースエディタのエラーメッセージを表示する場合もあります。

画像32

Untitled Page 2.xcplaygroundpage:5:1: はエラー検出のファイル名と行とカラムを示しています。

1-1-2 debug機能

XcodeのPlayground画面にはdebug areaはありますが、ブレイクポイントなどのdebug機能はありません。

結果サイドバーには行の値だけでなく実行回数も表示されます。
値の変化をグラフ表示したり、リストで一覧も可能です。
指定行まで実行機能はあります。

1-2 iPadのSwift Playgrounds

Apple社が提供するiPad用アプリとしてSwift Playgrounds(アプリ名は複数で「s」が付きます)が登場しました。
プログラミング言語Swiftを手軽に試すことのできる強力な環境がiPadで使えます。
アプリアイコンはSwift言語Logoの地色と白を入れ替えたデザインです。

画像20

ホーム上のアプリ名は日本語環境でも「Playgrounds」です。

【2020年11月17日iPad版もバージョン3.4にアップデートされました。】

無料の教材も多数提供されました。(Playgroundsアプリの日本語ページ)

各国語対応にも力が入れられ現在アプリと「コードを学ぼう」などのコンテンツ(教材)はほぼ日本語版がそろっています。
iPadでコードを学ぼう1を実行中の画面:

画像19

教材用として新しい書類のフォーマット playgroundbookブック形式)が追加になりました。
Playgroundsアプリは従来のplayground書類とplaygroundbook書類両方実行できます。

ブック形式の書類は、利用者が入力するコードを独立して管理します。
このためページ単位あるいは書類全体をリセットし、教材として初期状態に戻すことも可能です。

ブック形式の書類に関する情報はSwift Playgroundsページで公開されています(英文)。

ブック形式の書類を作成するにはXcodeが必要です。
ブック形式書類のテンプレートもXcodeのバージョン別に公開されています。
注意:デベロッパとしてログインが必要です。

ブック形式ファイルのアイコンです。

画像28

1-2-1 AR

iPadのPlaygroundsアプリはiPad上で実行しているのでカメラやセンサーを直接利用できます。
ARKitも利用可能です。

これまでARはXcodeでコーディングして、iPhoneまたはiPadにアプリをインストールして実際に試すワークフローでした。
iPadのPlaygroundsアプリならiPadだけでコーディングもテストも可能なため、効率よく開発が可能です。

無料教材にもARを体験できるものがあります。
その他のプレイグラウンド > チャレンジ > 拡張現実

AR拡張現実

この教材はiPad専用です。(加速度センサーやジャイロを必要とするため)
Mac版Playgroundsアプリでは選べません

1-3 MacのSwift Playgrounds

Mac版は2020年2月に登場しました。

2020年11月17日バージョン3.4にアップデートされました
インストール可能なのはmacOS 10.15.4以降です。

Mac App Storeの新機能には
• Console area shows the output of your print() statements
• Code suggestions appear much faster
• Export as a new playground to create custom lessons with a new reset point
• Fonts are resizable in the code editor
• Multiple playground documents can be opened at once as windows on the Mac desktop
と書かれています。

空白テンプレートはSwift 5.3対応になっています。【👍3.4】
そのほかのダウンロードできる教材はSwift 5.1がほとんどです。

アイコンはMac版登場時の丸いシェイプから、iPad版とほぼ同じ角丸に変わりました。【変更点3.4】

アイコン

Mac版Swift Playgroundsをインストールするとブック形式書類のアイコンがオレンジ色に変わります。

画像32

ダブルクリックでSwift Playgroundsアプリが起動します。
バージョン3.3までは、ファイルの内容はiCloudにコピーされました。
3.4ではダブルクリックではコピーされません。【変更点3.4】

1-4 Xcodeとアプリの違い

Xcodeのプレイグラウンド(単数表記)とiPadやMacのPlaygrounds(アプリ名は複数表記)での実行で表示や挙動の違いが見られました。
最近SwiftUIのサンプルをプレイグラウンドで作り確認することが多いのですが、何度かXcodeとPlaygroundsアプリの違いを経験しました。

iPad版Playgroundsアプリで実行に問題がある場合『"結果"を有効にする』をオフにして実行すると解消する場合があります。

またPlaygroundsアプリでは正常に画面が更新されるが、Xcodeのプレイグラウンドでは画面が再表示されない場合もありました。

XcodeをCatalina(10.15.3以降)でお使いで、実行結果が怪しい場合Mac版Playgroundsでも試して比較することをおすすめします。
私のnote記事「SwiftUI UI部品カタログ 後編」にはいくつかXcodeとiPadのPlaygroundsアプリで違いが発生するサンプルを載せています。

表面的な違いもあります。

検索機能がない
Playgroundsアプリで不満な点は、入力したコードの検索ができないことです。
これはMac版Playgroundsでも同じです。

行番号を表示できない
Playgroundsアプリでは行番号の表示もできません。
教室でも『何行目をみてくださ〜い』などの用途はありそうですが、iPadの画面サイズは限られているので搭載を見送られたのかもしれません。

マークアップ部分を編集できない
Xcodeではマークアップ部分のレンダリングする/しないを切り替え表示の確認/編集が可能です。
Playgroundsアプリではマークアップ部分の修正はできません。
教材としては重要な機能です。

コメントとしてマークアップの入力は可能です。ページ切り替えなどでレンダリングされると、それ以降Playgroundsアプリでは編集はできなくなります。

Mac上のファイルを直接編集しない
バージョン3.3までFinderでファイルを選びMac版Playgroundsで開いた場合もiCloudにコピーしてから、iCloudの書類として開いていました。

バージョン3.4ではiCloudにコピーせずに開くように変更されました。【変更点3.4】
ファイル > プレイグラウンドを読み込む... メニューでは従来どおり読み込み、マイプレイグラウンド画面に追加します。
iCloudにコピーするとiPadでも共有できます。

メニューなどで「開く」はiCloudにコピーせず、「読み込む」はiCloudにコピーして「マイプレイグラウンド」画面に登録する操作です。【変更点3.4】

Jump to Definitionがない
Playgroundsでは「ヘルプ」を使います。

2020年12月30日追記:この行から追記】
ドラッグ&ドロップを含むSwiftUIコードを実行した場合の挙動がiPadやXcodeと違っています。
詳細は『SwiftUIでドラッグ&ドロップ』を参照してください。

Mac版のPlaygrounds 3.4をmacOS Big Sur 11.1で使う場合は、少し問題がありますがドラッグ&ドロップを含むSwiftUIコードを実行できます。
【2020年12月30日追記ここまで】

1-5 開発情報

Playground Support
プレイグラウンド環境ではページ単位のコードを実行します。
Playground Supportフレームワークを使ってライブビューに表示します。

Xcode 11から setLiveView(_:)メソッドが追加になっています。

PlaygroundBluetooth
プレイグラウンドページ内からBluetooth周辺機器への接続を表示および管理するために使用する共通のインターフェースとしてPlaygroundBluetoothフレームワークが提供されています。

ドローンやロボット制御の教材で使われているようです。

これらのドキュメント(英文)はPlaygroundsアプリでも表示できます。


2 インストールとユーザガイド

2-1 インストール

Mac App Storeから無料でダウンロードできます。
Swift Playgrounds ←ここからリンクしています

ストア


2-2 ヘルプ/ユーザガイド

ヘルプメニューからPlaygroundsヘルプを開くことができます。
ヘルプはアプリの前に表示されるフローティングウインドウで使いにくい場合もあります。
ヘルプウインドウの共有のポップアップメニューで「Safariで開く」を選ぶと同じ内容をブラウザで表示できます。
表題はどちらも『Swift PlaygroundsユーザガイドmacOS用』です。

ブラウザで開くと各ページの下に『<前へ』『次へ>』ボタンがあります

ヘルプ

URLはこちらです。

2-3 Release Notes

Swift Playgroundsのリリースノートがあり、iPad用とMac用両方について載っていました(英文)。

バージョン3.4では「ヘルプ」メニューからこのリリースノートのベージを開くことができるようになりました。【➕3.4】


3 Mac版Swift Playgroundsの画面など

Swift Playgrounds 3.4 for Macについて確認しながらご紹介します。【記事公開時のバージョンは3.2】

3-0 macOS 11.0.1での画面表示【2020年12月8日追記】

macOS 11.0(Big Sur)で実行するとファイル名をウインドウタイトル部分に正しく表示します。
ページタイトルは下に小さく表示します。(macOS 10.15ではページタイトルだけ表示していました)

スクリーンショット 2020-12-08 15.30.57

エラーありの表示

コードにエラーがある場合、タイトルバーに赤丸を表示します。【👍3.4】

赤丸をクリックするとポップオーバーにエラーメッセージを表示します。
エラーメッセージをクリックするとその部分を表示します。
エラー行が画面外の場合はスクロールして表示し、モジュールなどを表示中はエラーのページに切り替わって表示されます。
エラーに不慣れなでも確実に問題の部分を示してくます。

スクリーンショット 2020-12-08 15.32.16

macOS 10.15.7の場合はポップオーバーに「問題」のタイトルを表示します。

10.15.7問題

エラーの指摘がほかの部分の影響による場合もあります。
その場合はエラー行以外を修正しなければなりません。

3-1 Code suggestion area

これによると「Code suggestion area」に列挙するコマンドにヘルプ情報も表示されるとあります。

日本語版ユーザガイドでは「ショートカットリスト」と表示されていました。
「Code suggestion area」の正式な訳は「ショートカットリスト」です。

実際にヘルプ情報も1行ですが表示されます。
しかもスラッシュ三つで自分で追加したQuick Help用ヘルプ情報も表示されます。

画像3

定数startValueにQuick Help用のコメントが付けています。
(拡大画面)

画像4

ヘルプ情報が1行なのでSwiftに慣れていない場合の効果は微妙ですが、画面サイズに余裕がある場合には「Code suggestion area」を広げての利用もお試しください。

エディタとCode suggestion areaは escキーで行き来できます。
4-3 プレイグラウンド書類の編集』を参照してください。

3-2 Sidebar

Mac版にはサイドバーがあります。

バージョン3.3までのiPad版ではページタイトルがポップアップメニューになっていました。
Mac版ではサイドバーがその機能を持ちます。

画像5

『ページ』部分にマウスオーバーすると➕ボタンを表示します。

画像6

➕ボタンクリックでページを追加できます。
ファイル > 新規ページ メニューでも追加できます。

画像7

モジュール
モジュールは各ページとは別の補助ファイルです。
Xcodeでは全てのページで利用可能なものと、ページごとに専用のものを設定できます。
Playgroundsでは全ページ共通の補助ファイルを追加できます。
書類にページ専用のモジュールが既にある場合はそちらも管理できます。

macOS 11.0.1ではモジュールとコードの対応が明確になりました。【👍3.4】【2020年12月8日追記】

スクリーンショット 2020-12-08 16.12.41

スクリーンショット 2020-12-08 16.12.53

編集中のコードに対応してサイドバーで強調されます。

3-3 Touch Bar

タッチバーを使うと「コードを実行」などのコマンドを実行できます。

画像8

画像9

3-4 Menu bar

Macアプリとして一般的なメニューを備えています。
機能はiPad版とほぼ同じです。
メニューについて詳しくは 4-1 メニュー に書きました。

3-5 Playgrounds 3.4 Mac版の変更点 【変更点3.4】

print()関数の出力をコンソールエリアで確認でき、各playgroundファイルをマルチウインドウで開くことができるようになりました。【➕3.4】

開発者のサブツールとしても嬉しい機能強化です。

また対応するSwift言語のバージョンも5.3となりXcode 12と同じになりました。【👍3.4】
【2020年12月30日追記:SwiftUIはLazy StacksなどiOS 14以降で利用可能な型などはまだ使えません。】

プログラミング学習用としても独立したデベロッパドキュメントウインドウとQuickLook相当の表示が(英語ですが)便利になっています。【👍3.4】

Mac版でとりわけ不便だった表示文字サイズが自在に変更可能になりました。⌘+で「大きく」、 ⌘-で「小さく」できます。

最初に表示する画面タイトルが「Playgrounds」から「マイプレイグラウンド」に変更され、iPad版と同じになりました。【➕3.4】

マルチウインドウに対応し複数の書類を開いた状態にできます。
ただしmacOS 10.15.7では各ウインドウのタイトルバーに相当する部分に表示されるのは『各ページのタイトル』です。
書類のタイトルは「ウインドウ」メニューの現在開いているウインドウのリストを確認しなければならないようです。

macOS 11.0.1以降では書類のタイトルも表示します。【2020年12月8日追記】

ここから先は

7,874字 / 16画像
この記事のみ ¥ 500

今後も記事を増やすつもりです。 サポートしていただけると大変はげみになります。