ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
DocCを使ったインタラクティブなチュートリアルの製作
DocCで没入感の高いチュートリアルを一から作る方法を紹介します。Swiftフレームワークの動作を表現するために、DocC構文を使って豊富な説明、サンプルコード、画像をまとめる方法について説明します。また、インタラクティブな学習機会を提供し、フレームワークのユースケースの理解を深めることができるプログレッシブトレーニングの作成方法についても説明します。
リソース
- Building an Interactive Tutorial
- DocC
- Interactive Tutorials
- SlothCreator: Building DocC Documentation in Xcode
関連ビデオ
WWDC23
WWDC21
-
ダウンロード
[音楽]
こんにちは私の名前はWillです Appleで デザインマネージャーをしています 今日は同僚のHannahと一緒に DocCを使ってインタラクティブな 開発者向けチュートリアルを紹介します Swiftのフレームワークや パッケージがどう機能するか APIを使って実際にAppを作る為の ステップバイステップの説明と共に 開発者に教える為の素晴らしい方法です 我々がAppleで書いたいくつかの チュートリアルをご存じかもしれません 我々は SwiftUI とMac Catalyst を紹介する チュートリアルを作成しました この入門チュートリアルでは フレームワークの基本を学び ステップバイステップのコード例に 従う事でスキルを身につけていきます フレームワークの採用者は 紹介した新しいアイデアを すぐ使える事ができる点が 気に入ってると分かりました このようなチュートリアルを書くために DocC というドキュメントコンパイラを作りました DocCはマークダウンを活用し プレーンテキストをリッチで インタラクティブなシステムに変換し 今年 私達は DocC をXcodeに導入したので あなたもSwiftパッケージやSwiftフレームワークの チュートリアルを書くことができます DocCは開発者向けチュート リアルだけではありません DocCはソースコメントから プロジェクト内のSwiftフレームワークや パッケージのドキュメントを作成する事もできます つまり App開発者にとって依存関係にある プラットフォームライブラリと一緒にドキュメントを 開発者用ドキュメントウインドウに 表示することができるのです
また SwiftフレームワークやSwiftパッケージを 作成した場合採用者の為のドキュメントを ソース内に書けるのでAPIの作成や変更に合わせ 最新情報を簡単に得る事ができます ドキュメントウインドウに フォーマットを提供しながら ソースの読みやすさを維持する為に マークダウンでドキュメントのコメントを書きます また Documentation Catalogを追加する事で 記事を書いたり フレームワークやパッケージ内の 全てのAPIを整理する事ができます
DocC の使用方法や Documentation Catalogの設定については こちらのセッションで詳しく説明しています
今回はチュートリアルの書き方に焦点を当てます
チュートリアルは非常にインタラクティブなー 形式のドキュメントであり そのオーサリングを容易にする為に マークダウンを拡張して 指示できるようになりました ディレクティブは コンテンツ の様なチュートリアルを オーサリングする為の構造を提供するので 既に慣れ親しんだMarkdown 構文を使って コンテンツを書く事に集中することができます
開発者向けチュートリアルは実際のプロジェクト 理想的にはAppの構築を中心としています チュートリアルAppは現実的な方法で フレームワークのAPIを使用する必要があります
例えば SwiftUIのチュートリアルでは 初心者が SwiftUI を始める為に理解する必要のある コア機能を探求するLandmarksというAppの 作り方を紹介しています
Mac CatalystではiPad と Mac の ナビゲーションイディオムの違いを探る Recipe Appの作り方を教えています
そして今 私と同僚は iPhone上で可愛いデジタルナマケモノを作成し カタログ化し 世話をする為の 新しいフレームワークに取り組んでいます
同僚はすでに素晴らしい リファレンス・ドキュメント また 記事作成をしていますが フレームワーク採用者は 実際にAppを作ってみる事で フレームワークの様々な側面が どう作用するかを すぐに理解できる様になると思います このセッションでは同僚のHannahと私が このフレームワーク採用者に 基礎知識を説明します まず チュートリアルの主な 構成要素の概要を説明します 次に どう企画に取り組んでいるかを説明します 最後に Hannahに引き継いでチュートリアルの コレクションを作成するデモをしてもらいます それでは 始めましょう 先に述べたようにチュートリアルは非常に インタラクティブな学習方法です 記事やリファレンスドキュメントと同様に チュートリアルのテキストはマークダウンで作成ー されますが チュートリアルは特別な構文を使用し マークダウンをディレクティブで囲み DocC がチュートリアルで紹介されている 複雑なレイアウトやインタラクションを 構築できる様な構造を提供します
テキストがチュートリアルの1ステップである事を DocC に伝える基本的なディレクティブです この例では 指示文に加えてステップを達成する為に どうコードを書けば良いかを 読者に正確に示すために DocCが表示するSwiftファイル へのリンクが含まれています
また DocCの指示文はネストする事ができます この例では コード指示文に画像指示文が含まれ 読者にステップの文脈を提供しています
チュートリアルのページは先ほどのように 様々なステップがあります 目次には 個々のチュートリアルへのリンクと 構成が記載されています 目次を構成する各ディレクティブについて 見ていきましょう
目次ファイルは ページの全ての要素を含む チュートリアル指示文から始まります
チュートリアル指示文の中にイントロ指示文があり タイトルとフレームワーク採用者が チュートリアルを通して構築するものの 簡単な説明が含まれています
DocCはチュートリアルへのリンクを提供する際に 「Get Started」ボタンや タイミング計算など イントロダクションの一部の要素を 自動的に生成します
イメージ ディレクティブも含まれています 画像の保存は ドキュメントカタログの リソースフォルダにできます ページ下には チャプターディレクティブがあります チュートリアルを意味のあるグループに まとめる為にチャプターを使用します チャプターを使う事でフレームワークの導入者は 進捗状況を明確に把握する事ができ フレームワークを理解できます
チャプターの中には チュートリアルへの個別のリンクがあります このページで設定されている全ての文脈は チュートリアルのページに移動する前に フレームワークとは何か それを使って何を作るのかを 十分に理解する必要があります
目次のようにチュートリアルページは ページの内容を含む1つの ディレクティブで始まります この場合 チュートリアルディレクティブが1つある DocCは目次ページの情報をチュートリアルの 導入部で使用し そのチャプターを参照する事で このチュートリアルの全体的な テーマを人々に伝えます
チュートリアルの導入部には タイトルと説明が含まれ フレームワーク採用者が どの部分を使い何を作るのかを 教えてくれます 構築の道筋を明確にする為に チュートリアルはセクションに分かれています セクション紹介は チュート リアル紹介と似ていますが フレームワークの採用者が 次のセクションに進む前に行う作業を 具体的に説明しています
セクションにはステップが含まれており 採用者が次のステップに進む為に 何をすべきかを指示します ステップは 短く 理解しやすく簡単に実行できる ものでなければなりません
フレームワーク採用者は 学んでいるフレームワークを すぐに使える様に一貫性のある明確な チュートリアルステップを頼りにしています 最初に明確な計画を立てれば 一連のチュートリアルの中で 一貫したステップを作れます 新しいフレームワーク「Sloth」(ナマケモノ) 開発者向けチュートリアルの概要を説明する事で どのように計画を立てるのか紹介します フレームワークの概要を理解するためには そのフレームワークがどう機能し 実際にどう使用されているか考えましょう 開発したフレームワークは ナマケモノをテーマにしたもので 多くの優れた機能を備えています
このフレームワークの 主な機能の概要は次の通り チュートリアルの概要を説明する為に 重要なAPIを抜き出し チュートリアルでどうやって 説明すれば良いかを考えます APIにはナマケモノタイプや Food Generator PowerPicker があることがわかります これらを一度に考えると どんな順番で教えればいいのかが わからなくなってしまいます そこで機能別に分類してみましょう
このフレームワークを採用する人にとって ナマケモノのタイプを理解することは重要ですから ナマケモノのタイプの作成や編集に 関連するものをまとめます ナマケモノを生成するためのAPI 名前をつけるためのAPI能力を編集するためのAPI これらがナマケモノを作るためのコアAPIです
フードジェネレーターケアスケジュール ハビタット等 残り全てのAPI も関連しています これらは ナマケモノのお世話をする為のAPIです
つまりナマケモノを作る為のAPI ナマケモノの世話をする為のAPIという フレームワークを構成する2つの主要な API があるという事です 好調なスタートです このフレームワークを上手に使うには 採用者がこれらのAPIを理解する必要があります
また このようにグループ化しておけば 簡単に説明する事ができます しかし このフレームワーク採用者は自分のAppで もっと複雑な事をやりたいと思っているでしょうね
なので新しいグループを追加します この新しいフレームワークはナマケモノを作って 世話をする為のものですがこのフレームワークに 含まれているAPIを超えた使い方が できるように準備したいので相互運用性についての 情報も入れておきます ナマケモノが他の動物と交流 したり 場所を移動したり ナマケモノのグループでたむろしたりするのに 使うのではないかと考えているでしょう 私は全ての使用例を想像しようとはしていません ただ このフレームワークを自分のAppで使う方法を 紹介できるバリエーションが欲しいのです
この3つのグループのお陰で 私はチュートリアルの整理を始める事ができました 今のところ これらのグループをチャプターにして フレームワークの採用者に実際のAppで API使用方法を教える為にAppのアイデアを ブレインストーミングするのに使います
チュートリアルの為に3つの分野それぞれの 機能を持つAppをデザインしました 「作成」には ユーザーが新しいナマケモノを生成し 色とパワーを割り当てる シンプルなビューを作ってみます 「世話」では ナマケモノの一般的な活動レベル 食欲 気分 を見れる機能をユーザーに提供します そして「ふれあい」では世界中を移動する ナマケモノを見つけて 他の動物とふれあえるような 機能を作りたいと思います
Appのアイデアが描けたら次は どうやってAppを作るかどうやって人に教えるかを 考えようと思います 各章のチュートリアルのリストは 私がAppを作る時の手順にほぼ沿って書いていきます まず ナマケモノを作るためのビューを作ります 次に ナマケモノの世話をする為の複雑な機能を作ります 最後に 他のフレームワークに 使う部分を作ります
このような計画を立てた結果 フレームワーク採用者が ナマケモノを作り 世話を するのに役立つと確信できる チュートリアルのリストが完成しました 書いるうちに変わるかもしれませんが 今は自分の考えを整理し重要なAPIを全て簡単に かつ冗長にならない様にカバーしている事を 確認するのに役立ちます ここまでディレクティブの構文と 構成するコンポーネントを説明しました また チュートリアルのまとめ方の 基本についても説明しました ここから同僚のHannahに引き継いで Xcode 13でDocCを使って チュートリアルを書く方法を紹介してもらいます ありがとう Will私の名前はHannahです AppleのHuman Interfaceデザイナーです Xcode 13の全く新しいDocC機能を使った SlothCreator チュートリアルの概要が分かった所で チュートリアルの書き方を一緒に見ていきましょう
セッション 「XcodeにおけるDocCドキュメントのレベルの向上」 ドキュメントファイルを整理するための Documentation Catalogの作成方法を取り上げました 彼らがSlothCreator用に作成したのと同じ Documentation Catalogに 私のチュートリアルを追加します Willが言ったようにチュートリアルを括るには 目次ファイルが必要です そこで 既にチュートリアルフォルダと SlothCreator Tutorials用の Table of Contentsファイルを作成しました
早速 最初のチュートリアルを作ってみましょう!
まず チュートリアルフォルダを右クリックし 「新規ファイル」を選択 テンプレートセレクタを表示 「チュートリアルファイル」 を選択「次へ」をクリック
「Creating Custom Sloths」と名付けます
DocCは私が始める為のテンプレートを提供します チュートリアルファイルのテンプレートには イントロセクション セクション内のステップのセットがあります
必要に応じて 完成予定時間を表示できます 約20分かかるとします
続けて このチュートリアルの タイトルを決めましょう ここに 「Creating Custom Sloths」と名付けます
そして このチュートリアルの概要を書き加えます
チュートリアルをより魅力的に見せたいので イントロセクションのイントロ ステップ用のアートファイルを用意しました 私のアートファイルフォルダを開いて 用意した画像をすべて選択し ドキュメントカタログのリソースフォルダに ドラッグ・アンド・ドロップします
私がデザインしたイントロの 画像をお見せしましょう これは フレームワーク採用者 がこのチュートリアルで 構築するものを視覚的に説明するものです
イントロ画像を追加するには sourceの後に画像ファイル名を入れます
また その画像に アクセス可能な説明文を追加します
全てのSlothCreator採用者が チュートリアルを読んだり 聞いたりする事で 素晴らしい学習体験ができる様に 私のチュートリアルを誰でも アクセスできるようにしたいと考えています
アクセシブルな説明とは 画像を見ている人が 自明の事を説明するものです 例えば イントロの画像を 「ナマケモノの輪郭とその下 に4つのボタンを配置したー Appのインターフェースのワイヤーフレーム」 と表現します ボタンには 左から 氷 火 風 雷 のマークが表示されています コードに記述を加えてみましょう
さて このチュートリアルのイントロが完成したので 最初のセクションに進みましょう
これは 初心者向けのチュートリアルになります なので 最初のセクションはフレームワーク採用者が Slothy Appの基本的な設定を 行うことから始めます セクションタイトルを入れて セクション説明を追加します
また このセクションのタスクフローを 視覚的に表現する為に用意した セクションイメージを追加します
イントロ画像を追加したのと同様に 画像ファイル名と アクセス可能な説明文を入れます
次のステップに移りましょう
このセクションの最初のステップは フレームワーク採用者は iOS Appのテンプレを使って 新しい Xcodeプロジェクトを作成します それを インストラクションに書いておきます
このステップのメディアは採用者が どのようにすればいいのか より多くのコンテキストを 与える必要があるのでXcodeの テンプレートセレクタのスクショを撮り 対話する必要がある部分をハイライトしました
留意点としてはフレームワーク採用者が このチュートリアルを見ている時 セクションやステップの背景が Xcodeの設定に応じて明るくなったり 暗くなったりする可能性があります そこで ダークモードに対応した画像を作成するか それぞれの外観に合わせて 別の画像を用意します
この画像をステップに追加してみます
これで最初のステップが追加されたので 先にセクション1の残りのステップを追加してみます
はい 最初のセクションのステップを完了しました それではどう進んでいるか見ましょう Xcode 13では Product Build documentationに移動して Developer Documentationでチュートリアルを プレビューするか ショートカットを使った方法があります キーボードでcontrol+shift+command+D
いいですね!チュートリアルのコンパイル完了です そして今 ポップアップした ドキュメントウインドウで 書いたものをプレビューできるようになりました 目次のページを見てみましょう 左側のナビゲーターでは 私のチュートリアルが SlothCreatorプロジェクトの下に整理されていて 私の同僚が SlothCreatorのために書いた 他のドキュメントと一緒になっているのがわかります 右側には「目次」のページがあります チュートリアル集の概要と イントロ部分には目を引く画像があります
イントロの下には私の最初のチャプターと 今書いたばかりのチュート リアルへのリンクがあります 見てみましょう
チュートリアルページの上部には チュートリアルイントロダクションがあり フレームワーク採用者には SlothCreationビューを構築し 約20分かかることが伝えられています その下には最初のセクションがあります このセクションでは4つの簡単なステップを経て プロジェクトを立ち上げます
ステップをスクロールしていくと 画像が更新されていくのがわかります 今のところ すべて順調です 2つ目のセクションではフレームワーク採用者が SlothCreatorでコーディングを開始します どうコードステップで誘導するのか見ましょう
セクション2のイントロと最初のステップは すでに完了しています フレームワーク採用者が前のステップで作成した SwiftファイルにSlothCreatorのパッケージを インポートしている 第2ステップを見ましょう その前に いくつか指摘しておきたいことがあります コードステップではトップに表示名が表示され 採用者にどのファイルを操作すべきかを伝えます
DocCはこのステップで追加する Swiftファイルを画面の右側 表示名の下に表示します
また DocCは現在のコードファイルと 前のステップのコードファイルを自動的に比較して 新しい部分をハイライト表示することができます
このコードファイルはプレビューを生成します スクリーンショットをこのステップに追加して 採用者が指示にうまく従ったかどうかを 確認できるようにしています
Xcodeに戻って このステップを完成させましょう まず最初に 表示名を追加し 次にコードのファイル名を追加し 最後にプレビュー画像を追加します
これでコードステップの追加方法を確認したので 先にセクション2の残りのステップを 追加していきます
これまで チュートリアルのイントロ セクション 様々な種類のステップの書き方を説明しました それでは 私がSlothCreatorに書いた 全てのチュートリアルを追加してみましょう
Finderを開いて 用意したチュートリアルファイルをすべて選択し チュートリアルフォルダに ドラッグ・アンド・ドロップをして下さい 次に 目次ファイルを開いて チャプター1の他の2つの チュートリアルをリンクし チャプター2と3を追加します
これで「SlothCreator Tutorials」が完成しました 一緒に見てみましょう Table of Contentsページから このチュートリアル集には 8つのチュートリアルが3つのチャプターに分かれて 構成されていることがわかります また 左のナビゲーターからも この構成がわかります このページはフレームワーク採用者に チュートリアルの概要を提供 するのに最適な方法です また 先ほど書いたチュート リアルのページも見ましょう イントロと最初のセクションを見ましたが フレームワーク採用者にプロジェクトの 設定方法を案内しています
その下の2つ目のセクションでは 採用者に ナマケモノのカスタマイズビューを 作る為の明確なコーディング方法を説明しています
いいですね! チュートリアルの内容がとてもいいですね フレームワークの採用者は 私のチュートリアルを見て きっとSlothCreatorの事を知りたくなると思います
このセッションではチュートリアルとは何か 良いチュートリアルとは何か チュートリアルのアウトライン化の方法 そして プレビューする方法を説明しました
DocC はXcode 13の強力な 新ドキュメント機能です これを使えば リファレンス 記事チュートリアル等 フレームワークの総合的なドキュメントを書けます
DocCを使ったドキュメントの書き方 作り方 整理の仕方についてもっと知りたい方は 今年のWWDCで行われた他のDocCセッションを ご覧になることをお勧めします
Xcode 13で皆さんがDocCを使って 何を作ろうとしているのか 私達はワクワクしています [音楽]
-
-
11:26 - Tutorial Table of Contents File Content
@Tutorials(name: "SlothCreator") { @Intro(title: "Meet SlothCreator") { Create, catalog, and care for sloths using SlothCreator. Get started with SlothCreator by building the demo app _Slothy_. @Image(source: slothcreator-intro.png, alt: "An illustration of 3 iPhones in portrait mode, displaying the UI of finding, creating, and taking care of a sloth in Slothy — the sample app that you build in this collection of tutorials.") } @Chapter(name: "SlothCreator Essentials") { @Image(source: chapter1-slothcreatorEssentials.png, alt: "A wireframe of an app interface that has an outline of a sloth and four buttons below the sloth. The buttons display the following symbols, from left to right: snowflake, fire, wind, and lightning.") Create custom sloths and edit their attributes and powers using SlothCreator. @TutorialReference(tutorial: "doc:Creating-Custom-Sloths") } }
-
11:47 - Tutorial File Name
Creating Custom Sloths
-
12:21 - Tutorial Title
Creating Custom Sloths
-
12:27 - Tutorial Overview
This tutorial guides you through building _Slothy_ — an app for creating and caring for custom sloths. You'll start by building the sloth creation view.
-
13:04 - Tutorial Intro Image File Name
creating-intro.png
-
14:22 - Section 1 Title
Create a new project and add SlothCreator
-
14:43 - Section 1 Image File Name
01-creating-section1.png
-
14:44 - Section 1 Image Accessible Description
An arrow pointing from the SlothCreator framework icon to the Xcode app project icon.
-
15:43 - Section 1 Step 1 Image File Name
creating-01-01.png
-
15:45 - Section 1 Step 1 Image Accessible Description
A screenshot of the template selector in Xcode. In the top row, iOS is selected as the platform. In the Application section, App is selected as the template; there's a highlight placed over the Next button at the lower-right of the sheet.
-
15:57 - Section 1 Step 2 to Step 4
@Step { Enter "Slothy" as the Product Name. @Image(source: creating-01-02.png, alt: "A screenshot of the project sheet, which shows the Product Name for the app being built as Slothy. The Interface is set to SwiftUI, and the Life Cycle is set to SwiftUI App.") } @Step { Select "SwiftUI" from the Interface pop-up menu and "SwiftUI App" from the Life Cycle pop-up menu, then click Next. Choose a location to save the Slothy project on your Mac. @Image(source: creating-01-03.png, alt: "A screenshot of the project sheet, which shows the Interface is set to SwiftUI and the Life Cycle is set to SwiftUI App.") } @Step { Add `SlothCreator` as a dependency to the project. @Image(source: creating-01-04.png, alt:"A screenshot shows the SlothCreator package in Xcode's navigator.") }
-
17:58 - Section 2 Intro and Step 1 & 2
@Section(title: "Add a customization view") { @ContentAndMedia(layout: horizontal) { Add the ability for users to customize sloths and select their powers. @Image(source: 01-creating-section2.png, alt: "An outline of a sloth surrounded by four power type icons. The power type icons are arranged in the following order, clockwise from the top: fire, wind, lightning, and ice.") } @Steps { @Step { Create a new SwiftUI View file named `CustomizedSlothView.swift`. @Code(name: "CustomizedSlothView.swift", file: 01-creating-code-02-01.swift) { @Image(source: preview-01-creating-code-02-01.png, alt: "A screenshot from the Xcode preview as it would appear on iPhone, with the text, Hello, World!, centered in the middle of the display.") } } @Step { Import the `SlothCreator` package. @Code(name: "<#display name#>", file: <#filename.swift#>) } } }
-
19:05 - Section 2 Step 2 Display Name
CustomizedSlothView.swift
-
19:08 - Section 2 Step 2 Code File Name
01-creating-code-02-02.swift
-
19:10 - Section 2 Step 2 Code File Preview Image
{ @Image(source: preview-01-creating-code-02-01.png, alt: "A screenshot from the Xcode preview as it would appear on iPhone, with the text, Hello, World!, centered in the middle of the display.") }
-
19:25 - Section 2 Remaining Steps
@Step { Create a ``Sloth`` state variable called `sloth`. @Code(name: "CustomizedSlothView.swift", file: 01-creating-code-02-03.swift) { @Image(source: preview-01-creating-code-02-01.png, alt: "A screenshot from the Xcode preview as it would appear on iPhone, with the text, Hello, World!, centered in the middle of the display.") } } @Step { Delete the template `Text` view, then add a new `VStack` with trailing padding. This adds space around and between any views inside. @Code(name: "CustomizedSlothView.swift", file: 01-creating-code-02-04.swift) { @Image(source: preview-01-creating-code-02-04.png, alt: "A screenshot of a blank preview canvas.") } } @Step { Add a `SlothView`. Specify the `sloth` state variable for the view's `sloth` binding. @Code(name: "CustomizedSlothView.swift", file: 01-creating-code-02-05.swift) { @Image(source: preview-01-creating-code-02-04.png, alt: "A screenshot of a blank preview canvas.") } } @Step { Add a `PowerPicker`. Specify the `sloth`'s `power` for the picker view's `power` binding. @Code(name: "CustomizedSlothView.swift", file: 01-creating-code-02-06.swift) { @Image(source: preview-01-creating-code-02-04.png, alt: "A screenshot of a blank preview canvas.") } } The following steps display your customized sloth view in the SwiftUI preview. @Step { Add the `sloth` parameter to initialize the `CustomizedSlothView` in the preview provider, and pass a new `Sloth` instance for the value. @Code(name: "CustomizedSlothView.swift", file: 01-creating-code-02-07.swift) { @Image(source: preview-01-creating-code-02-07.png, alt: "A portrait of a generic sloth displayed in the center of the canvas.") } } @Step { Set the preview provider sloth's `name` to `"Super Sloth"`, `color` to `.blue`, and `power` to `.ice`. @Code(name: "CustomizedSlothView.swift", file: 01-creating-code-02-08.swift) { @Image(source: preview-01-creating-code-02-08.png, alt: "A portrait of an ice sloth on top, followed by four power icons below. The power icons, clockwise from top left, include: ice, fire, wind, and lightning. The ice icon is selected.") } }
-
20:03 - Chapter 1 Tutorial 2 & 3
@TutorialReference(tutorial: "doc:Editing-Sloth") @TutorialReference(tutorial: "doc:Adding-Accessories")
-
20:10 - Chapter 2 & 3
@Chapter(name: "Sloth Health & Happiness") { @Image(source: chapter2-healthAndHappiness.png, alt: "A popover window pointing at a button with a leaf symbol on it. To the right of the leaf button, there is a button with a smiley face and a button with a dumbbell.") Discover how to track sloth's activity levels, measure their overall happiness, and feed them their favorite foods. @TutorialReference(tutorial: "doc:Feeding-Sloths") @TutorialReference(tutorial: "doc:Tracking-Sloth-Activity") @TutorialReference(tutorial: "doc:Measuring-Sloth-Happiness") } @Chapter(name: "Finding Hidden Sloths") { @Image(source: chapter3-findingHiddenSloths.png, alt: "An illustration of a radar scanning over a map. The map displays a pin with a smiley sloth face in the upper left quadrant.") Find sloths as they move around their neighborhoods and make friends. @TutorialReference(tutorial: "doc:Locating-Sloths") @TutorialReference(tutorial: "doc:Finding-Sloth-Habitats") }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。