ミーティングプラン
ミーティングプランでは、クラブでSwiftUIの基礎、データのモデル化の基礎、空間コンピューティングを学習する際に役立つ推奨事項を提示します。
ミーティングプランでは、クラブでSwiftUIの基礎、データのモデル化の基礎、空間コンピューティングを学習する際に役立つ推奨事項を提示します。
Xcode、Swift、またはSwiftUIを使ったことがなければ、SwiftUIの基礎から始めましょう。
5つのチュートリアルを各自で完了する
10回のミーティング(グループアクティビティを含む)を実施する
SwiftUIでのアプリ構築を通じてアプリ開発の基礎を学びます。まずは詳しいチュートリアルに従ってプロトタイプとアプリ画面を作成し、適切に機能するアプリを構築します。次に、クラブの協力や支援も得ながら、学んだことを生かして自分だけの作品を作り上げます。
注:アプリのプレビューにはiPhoneは必要はありません。Xcodeには、アプリの見た目と動作をMacで直に確認できるツールが含まれています。
まずは「Welcome to Develop in Swift Tutorials(Swiftでの開発へようこそ)」のチュートリアルを確認してください。
メッセージアプリのプロトタイプの作成を通じて、XcodeとSwiftUIの知識を深めます。Swiftの構文のほか、ソースエディタとプレビューの使い方を学びます。
準備:最初のミーティングの前に「Hello, SwiftU(SwiftUIの概要)」のチュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて「Wrap-up: Explore Xcode(まとめ:Xcodeを学ぶ)」の記事の「Extend your app(アプリの拡張)」セクションにある2つの推奨事項を実施します。
準備:「Wrap-up: Explore Xcode(まとめ:Xcodeを学ぶ)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:新規Xcodeプロジェクトを開始し、「MyselfInSixWords」という名前を付けます。テキスト
ビューを使って、自分を表す6つの単語を表示します。各単語にパディングを追加し、背景色を変えます。
をVStack
HStack
に置き換えて、単語を横向きに表示します。次に、追加のチャレンジとして、HStack
とVStack
ビューを組み合わせて、アプリ用にさまざまなレイアウトを作成します。ビューのHStack
をVStack
の中に埋め込むことはできますか?その逆はどうですか?実行するとどうなりますか?
ミーティングの最後に、各自数分で自分のMyselfInSixWordsプロジェクトを発表します。
カスタムビューを構築して数日間の天気予報を作成する方法を学びます。ビューでは、プロパティを使用して各日の表示をカスタマイズします。
準備:「Customize views with properties(プロパティを使ったビューのカスタマイズ)」のチュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて、「Wrap-up: Views, structures, and properties(まとめ:ビュー、ストラクチャ、プロパティ)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項のうち1〜2つを実施します。
準備:「Wrap-up: Views, structures, and properties(まとめ:ビュー、ストラクチャ、プロパティ)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:計算プロパティを使った演習を行います。最高気温が80℉を超えた場合に異なる色を返すように計算プロパティを追加します(high > 80
)。.foregroundStyle
モディファイア(修飾子)を使うと、プロパティの値に応じてテキストの色を変えることができます。
達成できたことを各自数分で発表します。プロジェクトに追加できた内容と、サポートや時間がもう少し必要な部分を書き出します。
iOSアプリ用の2つのオンボーディング画面の作成を通じて、ビューを画面上の任意の位置に配置したり、ビューのサイズを確認するための便利なツールについて学びます。アセットカタログで色を定義し、それを使ってグラデーションのある背景を作成します。
準備:「Design an interface(インターフェイスのデザイン)」のチュートリアルを実施します。
グループアクティビティ:オンボーディングフローに3ページ目を追加します。新しいページには、適切と思われる要素を含むことができます。時間があれば、アプリのデザインや色を編集します。
準備:「Wrap-up: Layout and style(まとめ:レイアウトとスタイル)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:複数のビュー間をスワイプする演習を行います。新規Xcodeプロジェクトを開始し、.tabViewStyle(.page)
を使って短い物語を作成して、本のページをスワイプで切り替えられるようにします。最初のページを本の表紙としてデザインします。大きなタイトル、著者名、1つ以上のSF Symbolsを配置し、適度に色をつけます。物語の各ページに章のタイトル、テキスト、画像をクリエイティブに表示する方法を考えます。
本のプロジェクトで達成できたことを各自数分で発表します。どのような取り組みを継続するのか、今後のプランについて話します。
アプリにボタンを追加します。Swiftクロージャとボタンの関係について学びます。ステートプロパティを使って、ユーザーインターフェイスを自動的に更新します。
準備:「Update the UI with state(ステートを使ったUIの更新)」のチュートリアルを実施します。
グループアクティビティ:さいころの画像とその下に「転がす」ボタンを配置するのではなく、DiceView
を修正して、ユーザーがさいころをタップするとランダム化されるようにします。
準備:「Wrap-up: Buttons and state(まとめ:ボタンとステート)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:シンプルなボタンのアプリを作成します。新規Xcodeプロジェクトを開始し、1つまたは2つのボタンのアプリを作成します。「シンプルなアプリをデザインしよう」プロジェクトをアイデア探しの参考にしてください。
ボタンアプリのデザインとプロジェクトについて各自数分で発表します。思っていたよりも簡単だった点や難しかった点についてクラブに共有します。
一連のアイテムを配列に格納してリストを使って表示する、動的なインターフェイスを作成します。テキストフィールドやバインディングを使って、ユーザーがテキストを入力できるようにします。
準備:「Create dynamic content(動的コンテンツの作成)」のチュートリアルを実施します。
グループアクティビティ:「Wrap-up: Lists and text fields(まとめ:リストとテキストフィールド)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項のうち1つを選択します。
準備:「Wrap-up: Lists and text fields(まとめ:リストとテキストフィールド)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:住所ラベルの書式設定をします。新規Xcodeプロジェクトを開始し、「AddressLabel」という名前を付けます。@State
プロパティやテキストフィールドを使って、都市や国など、住所の各種要素を収集します。次に、完全な形式の住所を画面の上部に表示します。取り込みフォームと住所のフォント、サイズ、色をカスタマイズします。
このクラブが終了したあとのプランについて各自数分で発表します。アプリ開発の学習をどのようにして継続する予定ですか?今後どのようなアプリを作成したいですか?
7つのチュートリアルを各自で完了する
9回のミーティング(グループアクティビティを含む)を実施する
SwiftUIでのアプリ構築を通じてデータのモデル化の基礎を学びます。まずは詳しいチュートリアルに従ってプロトタイプを作成し、適切に機能するアプリを構築します。次に、クラブのサポートも得ながら、学んだことを生かして自分だけの作品を作り上げます。
注:iPhoneやiPadでアプリをプレビューする必要はありません。Xcodeには、アプリの見た目と動作をMacで直に確認できるツールが含まれています。
まずは「Welcome to data modeling(データのモデル化へようこそ)」を確認してください。
独自のカスタム型を作成して最初のデータモデルを定義し、ユニットテストで正しく動作することを実証します。次に、そのカスタム型を使ってゲームのスコアをトラッキングします。
準備:「Model data with custom types(カスタム型を使ったモデルデータ)」のチュートリアルを実施し、最初のミーティングの前に「Wrap-up: Model data with custom types(まとめ:カスタム型を使ったモデルデータ)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読んでおきます。
グループアクティビティ:全員で、または少人数のグループに分かれて、「Wrap-up: Model data with custom types(まとめ:カスタム型を使ったモデルデータ)」の記事の「Extend your app(アプリの拡張)」セクションにある1つの推奨事項を実施します。
準備:「Add functionality with Swift Testing(Swift Testingによる機能の追加)」のチュートリアルを実施し、「Wrap-up: Custom types and Swift Testing(まとめ:カスタム型とSwift Testing)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:勝ち点の合計を追加します。プレイヤーが指定の合計ポイントに達したときにゲームが自動的に終了するよう、アプリを更新します。合計ポイントの指定は、設定ビューで行います。プレイヤーのポイントを増やすテストを追加し、指定の合計ポイントに達したときにゲームの状態が遷移することを検証します。
ミーティングの最後に、(プレイヤーが指定の合計ポイントに達したときにゲームが自動的に終了するように)どのようにプロジェクトを改善したか各自数分で発表します。
友人の誕生日のリストを作成し、SwiftDataを使ってそのデータを保存し、次回起動時に読み出せるようにします。
準備:「Save data(データの保存)」のチュートリアルを実施します。
グループアクティビティ:ミーティングで、「Wrap-up: Models and persistence(まとめ:モデルと永続性)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項の中から各自が1つ選択します。
準備:「Wrap-up: Models and persistence(まとめ:モデルと永続性)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:Pick-a-Palを強化します。Pick-a-Palに再度アクセスし、names: [String]
をSwiftDataを利用したPal
モデルに置き換えます。
Pick-a-PalアプリにSwiftDataを追加することでどのような効果を得られるか、グループで数分話し合います。
SwiftDataを使って友人や友人のお気に入りの映画をトラッキングするアプリを作成し、モデルオブジェクトを管理します。クエリを使ってアイテムをリスト形式で表示し、詳細ビューを作成してそれらを編集します。さらに、友人と映画とのリレーションシップを作成して表示する方法や、高度なクエリを作成する方法を学びます。
準備:「Navigate sample data tutorial(サンプルデータのナビゲーション)」のチュートリアルを実施し、「Wrap-up: Navigate sample data(まとめ:サンプルデータのナビゲーション)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:Birthdaysに再度アクセスし、SampleData
クラスを実装して、.task
がなくてもサンプルデータを挿入できるようにします。
準備:「Create, update, and delete data( データの作成、更新、削除)」のチュートリアルを実施し、「Wrap-up: Create, update and delete data(まとめ:データの作成、更新、削除)」の記事の「Reflect on the concepts(コンセプトの振り返り)」を読みます。
グループアクティビティ:iOSアプリプロジェクトを作成し、プロジェクトのオプション設定ダイアログで、保存するSwiftDataを選択します。サンプルコードを確認します。これまでの2つのチュートリアルで作成したインターフェイスとよく似ていることがわかると思います。ここで理解した仕組みを次のアプリ作成に生かしましょう。
準備:「Work with relationships(リレーションシップに対応)」のチュートリアルを実施し、「Wrap-up: Navigation, editing, and relationships(まとめ:ナビゲーション、編集、リレーションシップ)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:全員で、または少人数のグループに分かれて、「Wrap-up: Navigation, editing, and relationships(まとめ:ナビゲーション、編集、リレーションシップ)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項のうち1〜2つを実施します。
Observationを使ったアルファベットゲームを作成します。多数の独立したビューを含む複雑なデータモデルを共有します。
準備:「Complete a game with logic(ゲームにロジックを実装)」のチュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて、「Wrap-up: Observation and shareable data models(まとめ:Observationと共有可能なデータモデル)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項の1つまたは両方を実施します。
グループアクティビティ:さまざまな難易度。さまざまな難易度のモードを追加して、より挑戦しがいのあるゲームを目指します。順番を間違えた場合は減点し、再度挑戦できないようにする、単語を非表示にしてアイコンだけをヒントにアルファベット順に並べ替える、などの方法が考えられます。
このクラブが終了したあとのプランについて各自数分で発表します。アプリ開発の学習をどのようにして継続する予定ですか?今後どのようなアプリを作成したいですか?
3つのチュートリアルを各自で完了する
6回のミーティング(グループアクティビティを含む)を実施する
SwiftUIでのアプリ構築を通じて空間コンピューティングの基礎を学びます。まずは詳しいチュートリアルに従ってプロトタイプを作成し、適切に機能するアプリを構築します。次に、クラブのサポートも得ながら、学んだことを生かして自分だけの作品を作り上げます。
注:Apple Vision Proデバイスは必要ありません。Xcodeには、アプリの見た目と動作をMacで直に確認できるツールが含まれています。
まずは「 Welcome to spatial computing(空間コンピューティングへようこそ)」を確認してください。
SwiftUIを使って、ウインドウに対応するvisionOSアプリを作成します。
準備:最初のミーティングの前に「Add depth to your app(アプリに奥行きを与える)」のチュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて「Wrap-up: Windows in visionOS(まとめ:visionOSのウインドウ)」の記事の「Extend your app(アプリの拡張)」セクションにある2つの推奨事項を実施します。
準備:「Wrap-up: Windows in visionOS(まとめ:visionOSのウインドウ)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:単語のグリッドを作成します。新規Xcodeプロジェクトを開始し、「CloserWordGrid」という名前を付けます。Grid
とGridRow
を使って、自分を表す言葉を格子状に並べます。各単語の後方にパディングを追加します。別のチャレンジとして、単語を1つ無作為に選んで後方にパディングを余分に追加し、前方の余白が最も小さい単語を毎回当てられるかどうか試します。
ミーティングの最後に、各自数分で自分のCloserWordGridプロジェクトを発表します。この新しいプラットフォームを選んだきっかけや、新しい機会を次回のアプリでどのように活用できるかを共有します。
SwiftUIを使って、visionOSで複数のウインドウを作成します。オーナメントを使って、ウインドウコンテンツを詰め込んだり隠したりせずによく使うコントロールにアクセスできるようにします。
準備:「Present common controls in an ornament(オーナメントによく使うコントロールを表示)」のチュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて、「Wrap-up: Ornaments and multiple windows(まとめ:オーナメントと複数のウインドウ)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項の1つまたは両方を実施します。
準備:「Wrap-up: Ornaments and multiple windows(まとめ:オーナメントと複数のウインドウ)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループでのアクティビティ:ラベルにすばやくアクセスできる機能を追加します。作成するラベルは、閉じたり、ほかのラベルの奥に隠したりすることができます。SwiftUIリスト
を作成し、選択したラベルを目立たせることができます。リストにあるラベルが選択されているときは、openWindow
を使ってラベルを前面に出し、必要に応じて再び開くことができます。
実施したことを各自数分で発表します。達成できた内容と、サポートや時間がもう少し必要な部分を書き出します。
Reality Composer ProとSwiftUIを使って、共有スペースでさまざまな角度から3Dコンテンツを表示します。
準備:「Create 3D models in the Shared Space(共有スペースに3Dモデルを作成)」のチュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて「Wrap-up: Volumes in visionOS(まとめ:visionOSのボリューム)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項の1つまたは両方を実施します。
準備:「Wrap-up: Volumes in visionOS(まとめ:visionOSのボリューム)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:Hello Worldを確認します。Hello Worldアプリをダウンロードして、コードを確認します。WorldAppファイルを開いて、使い慣れたものであることを確認します。使われているWindowGroup
シーンを数えます。ボリュメトリックウインドウスタイルが使われている場所を確認します。コードのコメントを読んで、できる限り多くのことを学びます。読み終えたら、プロジェクトに小さな変更を加えます。
このクラブが終了したあとのプランについて各自数分で発表します。アプリ開発の学習をどのようにして継続する予定ですか?今後どのようなアプリを作成したいですか?