ミーティングプラン
ミーティングプランでは、クラブでアイデアから実際のアプリを作り上げる際に役立つ推奨事項を提示します。以下のリソースは、シンプルなアプリのデザインと作成から、インテリジェントな機能を使った強化まで、アプリ開発の全工程を学び、実践するのに役立ちます。
ミーティングプランでは、クラブでアイデアから実際のアプリを作り上げる際に役立つ推奨事項を提示します。以下のリソースは、シンプルなアプリのデザインと作成から、インテリジェントな機能を使った強化まで、アプリ開発の全工程を学び、実践するのに役立ちます。
Xcode、Swift、またはSwiftUIを使ったことがなければ、SwiftUIのチュートリアルから始めましょう。
6つのチュートリアルと記事を各自で完了する
10回のミーティング(グループアクティビティを含む)を実施する
アプリのプランニング、プロトタイプ作成、デザインを行います。クラブのサポートも得ながら、プロセスを説明したチュートリアルや記事を参考に、自分だけの作品を作り上げます。
まずは「Welcome to app design(アプリのデザインへようこそ)」をご確認ください。
これらの教材は、クラブのニーズに合わせて調整しながら利用してください。各自でアプリのデザインに取り組んでも、クラブ全体で共同のアプリをデザインしても構いません。アプリのアイデアをみんなで考えたり、ユーザーが友人や家族と連絡を取るのに役立つアプリから始めてみるのもいいでしょう。
質問をし、ユーザーの声に耳を傾け、機能のリストを作成します。
準備:ミーティングの前に、「Explore the app design cycle(アプリデザインのサイクル)」を読み、「Ask questions(質問する)」チュートリアルを完了します。
グループアクティビティ:2〜3人のグループに分かれて、グループ内で順番に、アプリのアイデアについて自由回答形式の質問をし合います。チュートリアルで使用したのと同じ質問でも、違う質問でも構いません。必ずメモを取り、皆の回答を記録します。
ミーティングの最後に、アプリのアイデアについて話し合って気付いたことを、数分間グループで振り返ります。
準備:ミーティングの前に、「Organize your features(機能を整理する)」チュートリアルを完了します。
グループアクティビティ:2〜3人のグループに分かれて、グループ内で順番にスケッチや画面一覧を見せ合います。そして各画面がどんな機能を持つと思うか尋ね、意図を明確にする必要がある箇所を確認します。
ミーティングの最後に、1グループにつき数分ずつ、気づいたことを発表します。
準備:「Wrap-up: Discovery(まとめ:発見)」の記事の、「Reflect on the design principles(デザインの原則を振り返る)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、グループ内で順番に、お気に入りのアプリや興味深いと思うアプリを紹介します。そしてそれらのアプリに見られる、デザイン上の工夫について話し合います。たとえば、アプリの目的が理解できるか、アプリはその目的に焦点を当てているかどうか、それとも余分な機能が多いか、といったことです。また、アプリがワクワク感や喜びなどの感情を呼び起こすか、もしそうなら、どういったデザイン要素がその感情的なインパクトに寄与しているかなども検討してみます。
ミーティングの最後に、1グループにつき数分ずつ、気づいたことや興味深いと思われたことを発表します。
本物のiOSアプリのような見た目と操作感を備えた、テストできるインタラクティブなプロトタイプを作成します。
準備:ミーティングの前に、「Build an interactive prototype(インタラクティブなプロトタイプを作成する)」チュートリアルを完了します。
グループアクティビティ:2人1組に分かれて、作成したプロトタイプをパートナーに見せます。そしてアプリの重要な機能の1つを説明し、その機能をプロトタイプで実行できるか試してもらいます。相手が戸惑ったり、次に何をすればいいかと迷ったりする場面がないか注意します。
ミーティングの最後に、気付いたことを数分話し合います。
準備:「Wrap-up: Prototypes(まとめ:プロトタイプ)」の記事の「Use high-fidelity resources(精度の高いデザインリソースを利用する)」セクションを読みます。
グループアクティビティ:2人1組に分かれて、プロトタイプをパートナーに見せ、一緒にSF Symbolsをいろいろと試してみます。アプリのデザインをわかりやすくするために、それぞれどんなシンボルを使えそうか話し合います。時間があれば、SF Symbolsに用意されているシンボルの編集やアニメーションのオプションも試してみます。
ミーティングの最後に、わかったことを数分で発表します。
他の人がプロトタイプを操作する様子を観察することで、アプリデザインのわかりやすさと使いやすさを向上させます。
準備:ミーティングの前に、「Test your app(アプリをテストする)」の記事を完了します。
グループアクティビティ:3人ずつのグループに分かれて、交代でテストを繰り返します。1人がテスター、もう1人が記録やメモを取る役を担当します。
ミーティングの最後に、テストセッションで新しく学んだことをグループ内で発表します。
準備:ミーティングの前に、「Validate your app(アプリを検証する)」の記事を完了します。
グループアクティビティ:少人数のグループに分かれて、テストで集めたフィードバックを順番に見せ合い、各自の結論を発表します。そしてそれぞれの結論が、テストで見つかった問題の根本原因にどう関連しているかを話し合います。またアプリのデザインをさらに改善するために、他のメンバーが取り入れられそうなアイデアがあれば紹介します。
ミーティングの最後に、1グループにつき数分ずつ、気づいたことを発表します。
準備:「Wrap-up: Testing and validation(まとめ:テストと検証)」の記事の、「Define your test to capture insights(インサイトが得られるようテスト内容を定義する)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、ヒューマンインターフェイスガイドラインにあるレイアウトについての情報を確認します。そしてそのガイドラインを、アプリのデザインにどう組み込めるかについて話し合います。
ミーティングの最後に、アプリのデザインがテストと検証のプロセスによってどう変わったかを、グループで数分話し合います。
テストと検証から得られたインサイトをもとに、アプリのデザインを見直し、強化します。
準備:ミーティングの前に、「Iterate on your design(デザインの反復と改善)」の記事を完了します。
グループアクティビティ:2人1組または少人数のグループで、各自のアプリデザインに使用するカラーパレットを作成します。まずアプリの雰囲気に合うメインカラーを決め、次にそれを引き立てるアクセントカラーを追加します。最後に、アプリ内のテキスト色として使える程度の十分なコントラストがある、落ち着いたベースカラーを追加することも検討します。
ミーティングの最後に、色がアプリの印象や使い心地にどんな影響を与えるかについて、例を挙げながら数分話し合います。
準備:「Wrap-up: Iteration(まとめ:イテレーション)」の記事の、「Moving forward and looking back(学びの振り返りと今後のステップ)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、アプリのデザインを順番に見せ合います。あなたのデザインは、実装できる段階にありますか?まだの場合は、コーディングを始められるよう、デザインサイクルの各フェーズを繰り返しながら、どのようにデザインを洗練させられるか検討しましょう。
ミーティングの最後に、アプリデザインについて得られた新しい視点によって、アプリの使い方や構築方法にどんな変化がありうるかを数分話し合います。
5つのチュートリアルを各自で完了する
10回のミーティング(グループアクティビティを含む)を実施する
SwiftUIでのアプリ構築を通じてアプリ開発の基礎を学びます。まずは詳しいチュートリアルに従ってプロトタイプとアプリ画面を作成し、適切に機能するアプリを構築します。次に、クラブのサポートも得ながら、学んだことを生かして自分だけの作品を作り上げます。
Xcodeには、アプリの見た目や動作をMac上で直接確認できるツールが用意されているので、テストのために別のデバイスを用意する必要はありません。
まずは「Welcome to SwiftUI(SwiftUIへようこそ)」をご確認ください。
メッセージアプリのプロトタイプの作成を通じて、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つの単語を表示します。各単語にパディングを追加し、背景色を変えます。をVStackHStackに置き換えて、単語を横向きに表示します。次に、追加のチャレンジとして、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でのアプリ構築を通じてデータのモデル化の基礎を学びます。まずは詳しいチュートリアルに従ってプロトタイプを作成し、適切に機能するアプリを構築します。次に、クラブのサポートも得ながら、学んだことを生かして自分だけの作品を作り上げます。
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(サンプルデータのナビゲーション)」のチュートリアルを実施し、「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つまたは両方を実施します。
グループアクティビティ:さまざまな難易度。さまざまな難易度のモードを追加して、より挑戦しがいのあるゲームを目指します。順番を間違えた場合は減点し、再度挑戦できないようにする、単語を非表示にしてアイコンだけをヒントにアルファベット順に並べ替える、などの方法が考えられます。
ミーティングの最後に、気付いたことを話し合います。
5つのチュートリアルを各自で完了する
8回のミーティング(グループアクティビティを含む)を実施する
まずは詳しいチュートリアルに従って、適切に機能する習慣管理アプリを構築します。次に、クラブのサポートも得ながら、学んだことを生かして自分だけの作品を作り上げます。
Xcodeには、アプリの見た目や動作をMac上で直接確認できるツールが用意されているので、テストのために別のデバイスを用意する必要はありません。
まずは「Welcome to app development(アプリ開発へようこそ)」をご確認ください。
テキストや写真のデータを取り込むための画面を作成します。SwiftDataを使ってエントリーを保存し、保存した内容を表示するためのカスタムビューを作成します。
準備:ミーティングの前に、「Review Swift fundamentals(Swiftの基礎のおさらい)」を読み、「Collect, model, and store data(データの収集、モデリング、保存)」チュートリアルを完了します。
グループアクティビティ:少人数のグループに分かれて、ユーザーが各エントリーに複数の画像を追加できるようにするための方法を検討します。
ミーティングの最後に、各グループ数分で解決策を発表します。次に、複数の画像を扱うためデザイン上の注意点と、それがMomentデータモデルにどんな影響を与えるかについて、グループで話し合います。
準備:ミーティングの前に、「Use a custom layout view(カスタムレイアウトビューの使用)」チュートリアルを完了します。
グループアクティビティ:少人数のグループに分かれて、HexagonLayoutに追加のケースを作成し、新しいレイアウトサイズにどう対応させるかを検討します。
ミーティングの最後に、1グループにつき数分ずつ、まとめた内容を発表します。
準備:「Wrap-up: Views and data storage(まとめ:ビューとデータ保存)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、さまざまな図形を試してみます。SF Symbolsの六角形シンボルを別のシンボルに置き換えてみると、デザインにどのような影響があるでしょうか?また、Hexagon、HexagonMomentView、およびHexagonLayoutにはどんな影響が出るでしょうか?
ミーティングの最後に、1グループにつき数分ずつ、気づいたことを発表します。
Swiftとデータモデリングの知識を活かして、ユーザー体験を高める機能を組み込み、アプリをより魅力的なものにします。
準備:ミーティングの前に、「Create an algorithm for badges(バッジのアルゴリズムを作成する)」チュートリアルを完了します。
グループアクティビティ:各自で、または少人数のグループに分かれて、「Wrap-up: User experience features(まとめ:ユーザー体験を高める機能)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項の1つまたは両方を実施します。
ミーティングの最後に、行った内容を数分で発表します。
準備:「Wrap-up: User experience features(まとめ:ユーザー体験を高める機能)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、HexagonAccessoryViewを更新し、バッジ数を表示する前に最大2つのアクセサリを表示できるようにします。
ミーティングの最後に、このアクティビティで難しかった点をグループで話し合います。
アプリにアクセシビリティ機能を追加し、デバッグスキルを高めて、アプリをテストできる状態に準備します。
準備:ミーティングの前に、「Add inclusive features(インクルーシブな機能を追加する)」チュートリアルを完了します。
グループアクティビティ:少人数のグループに分かれて、アプリをさまざまなデバイスでテストします。キャンバスで「Preview Device(プレビューデバイス)」を変更し、さまざまな画面サイズでアプリをテストします。
ミーティングの最後に、レイアウトがテストしたデバイスに対応できているかどうかをグループで話し合います。そのうえで、アプリにどんな変更が必要になりそうかも検討します。
準備:ミーティングの前に、「Investigate and fix a bug(バグの調査と修正)」チュートリアルを完了します。
グループアクティビティ:少人数のグループに分かれて、unlockBadgesのユニットテストを作成し、バッジをアンロックする際にバグが発生しないことを確認します。
ミーティングの最後に、気付いたことを話し合います。
準備:「Wrap-up: App refinement(まとめ:アプリの改良)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、Localizing Landmarksサンプルプロジェクトを参照しながら、Grateful Momentsデモアプリをローカライズできる状態に準備します。
ミーティングの最後に、気付いたことを話し合います。
6つのチュートリアルを各自で完了する
12回のミーティング(グループアクティビティを含む)を実施する
機械学習の基本を確認し、Appleのツールやフレームワークを使ってアプリにインテリジェントな機能を追加する方法を学びます。まずは詳しいチュートリアルに従って、適切に機能するアプリをSwiftUIで構築します。次に、クラブのサポートも得ながら、学んだことを生かして自分だけの作品を作り上げます。
Xcodeには、アプリの見た目や動作をMac上で直接確認できるツールが用意されているので、テストのために別のデバイスを用意する必要はありません。
まずは「Welcome to machine learning and AI(機械学習とAIへようこそ)」をご確認ください。
Natural Languageフレームワークと感情分析を通じて、機械学習への理解を深めます。ハイキングに関する意見を集め、回答を分析して結果を視覚的に表示するアプリを作成します。
準備:ミーティングの前に「Analyze sentiment in text(テキストから感情を分析)」のチュートリアルを実施します。
グループアクティビティ:少人数のグループに分かれてScorerの機能を拡張します。Natural Languageフレームワークを使用し、回答が書かれた言語を返します。Responseを更新し、この新しい情報を保存して、ResponseViewで表示します。
ミーティングの最後に、この情報をどのように配置し、読みやすくしたかを各グループ数分で共有します。
準備:「Wrap-up: Natural language(まとめ:Natural Language)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、Sentimentの列挙型を更新し、ケースを3つではなく5つにします。ラベル付けの方法、感情スコアの範囲の分割方法、UIへの表示方法を決めます(アイコンにはSF Symbolsを使用できます)。
次に、アプリ内のサンプルセットに回答を追加し、想定通りにスコアリングされるかどうかを確認します。列挙型ケースごとに新しい回答を作成できるかどうかを確認します。
ミーティングの最後に、利用しているアプリの中で感情分析が組み込まれていると考えられるものについて、グループで数分話し合います。利用中のその他のアプリの中で、何らかの方法で感情分析を追加すればさらに良くなると考えられるものはありますか?
機械学習のVisionフレームワークとTranslationフレームワークを使用して画像内のテキストを識別し、別の言語に翻訳するアプリを作成します。
準備:ミーティングの前に「Extract text from images(画像からテキストを抽出)」のチュートリアルを実施します。
グループアクティビティ:少人数のグループに分かれて、標識の画像のコピーを作成し、標識のテキストの部分だけをトリミングします。トリミングした画像をアプリに追加し、ユーザーが任意の認識レベルを選んで、速度か正確性のいずれかを優先できるようにアプリを変更します。速度を優先した場合に、トリミングした画像と元の画像がどのように認識されるかを試します。
次に、認識されたテキストの確実性値に基づいて、外接矩形の色を変更します。元の画像とトリミングした画像の結果をあらためて比較します。
ミーティングの最後に、入力画像についてわかったことを数分話し合います。
準備:「Wrap-up: Recognize text in images(まとめ:画像内のテキストを認識)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、Visionフレームワークに複数のオプションがある場合は複数の候補から選択する方法を提示します。新しいコントロールを追加してオプションを選択するか、キーボードを使用して正しくない結果を修正することを検討します。
ミーティングの最後に、各グループ数分で解決策を発表します。次に、Visionフレームワークを使用して便利なアプリを構築する方法をグループで話し合います。
XcodeのCreate MLツールを使用して、機械学習モデルをトレーニングします。指定されたデータを使用してモデルをトレーニングし、距離や標高などの特性に基づいてトレイルの難易度を予測します。
準備:ミーティングの前に「Train a Core ML model(Core MLモデルのトレーニング)」のチュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて、線形回帰アルゴリズムのパラメータを調整します。モデルの結果を改善できますか?トレーニングに費やす時間を短縮し、同等の品質のモデルに仕上げることができますか?
ミーティングの最後に、どのような変更を行い、精度やスピードがどの程度改善したかを数分で共有します。
準備:「Wrap-up: Model training with Create ML(まとめ:Create MLを使用したモデルトレーニング)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。データを使用してリスク値を計算する数式を特定します。アプリと同程度のリスク値を予測できれば、その数式は正しいということになります。ヒント:TrailData1k.csvをプレビューすると、個々のフィールドを分離しやすくなります。
グループアクティビティ:少人数のグループに分かれて、トレイルデータを使用し、リスク以外の値(標高、距離、危険な野生生物の存在など)を予測するモデルをトレーニングします。
次に、Create MLモデルを使用して構築できるアプリにはほかにどのような種類があるかグループで話し合います。
機械学習モデルをアプリにインポートし、ハイキングに関する詳細情報を取得して、難易度が表示されるようにします。
準備:ミーティングの前に「Import models with Core ML(Core MLを使用したモデルのインポート)」チュートリアルを実施します。
グループアクティビティ:全員で、または少人数のグループに分かれて、アプリのリスク設定を変更します。このチュートリアルのリスクカテゴリは、アプリのユーザーがハイキング愛好家であることを前提としています。アマチュアハイカーのリスクを調整し、正確なリスクを表示するUIを作成します。リスクの数値を単にテキストとして表示する以外の方法を検討します。ほかのトレイルと比較してリスクを示す方法はありますか?
ミーティングの最後に、入力として使用できるほかパラメータについて数分話し合います。結果の精度を改善したり、アプリを使用するほかのユーザーをサポートしたりするにはどうすればよいでしょうか?
準備:「Wrap-up: Custom models with Core ML(Core MLを使用したカスタムモデル)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、「送信」ボタンを予測されるリスクのライブ更新に置き換えます。ヒント:入力状態が変化する際、.onChangeを使用します。
ミーティングの最後に、行った変更の内容を数分で発表します。
Image Playgroundフレームワークを使って、ユーザーが画像を生成したり加工したりできるアプリを作成します。
準備:ミーティングの前に、「Utilize image generation features(画像生成機能を利用する)」チュートリアルを完了します。
グループアクティビティ:少人数のグループに分かれて、ImageGeneratorを更新し、生成画像に影響を与える初期のイメージコンセプトをユーザーが入力できるようにします。また、ユーザーが初期イメージをアップロードできるよう、UIも調整する必要があります。
ミーティングの最後に、各グループ数分で解決策を発表します。
準備:「Wrap-up: Image generation with Image Playground(まとめ:Image Playgroundでの画像生成)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:少人数のグループに分かれて、ユーザーがImageCreatorのlimitパラメータを使って複数のバリエーションを生成できるようにします。またインターフェイスも修正して、生成されたすべての画像を表示できるようにします。
ミーティングの最後に、1グループにつき数分ずつ、気づいたことを発表します。
ストリーミング応答とガイド付き生成を使用して、クイズアプリを作成します。
準備:ミーティングの前に、「Generate structured content(構造化されたコンテンツを生成する)」チュートリアルを完了します。
グループアクティビティ:各自で、または少人数のグループに分かれて、「Wrap-up: Intelligent features with Foundation Models(まとめ:Foundation Modelによるインテリジェントな機能)」の記事の「Extend your app(アプリの拡張)」セクションにある推奨事項の1つまたは両方を実施します。
ミーティングの最後に、行った内容を数分で発表します。
準備:「Wrap-up: Intelligent features with Foundation Models(まとめ:Foundation Modelによるインテリジェントな機能)」の記事の「Reflect on the concepts(コンセプトの振り返り)」セクションを読みます。
グループアクティビティ:クイズにscoreプロパティを追加し、ユーザーが質問に答えるたびに、そのscoreをトラッキングして表示します。
ミーティングの最後に、気付いたことを話し合います。
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シーンを数えます。ボリュメトリックウインドウスタイルが使われている場所を確認します。コードのコメントを読んで、できる限り多くのことを学びます。読み終えたら、プロジェクトに小さな変更を加えます。
このあとのプランについて、各自数分で発表します。アプリ開発の学習をどのようにして継続する予定ですか?今後どのようなアプリを作成したいですか?