📔

Journaling Suggestoins APIの概説

2023/12/26に公開

iOS17.2よりApple公式の日記アプリ「Journal」が利用できるようになりました。
Journalは写真、ビデオ、録音した音声、場所などを使って、日常のありふれた瞬間や特別な出来事を詳しく記録して書き留めることができます。

そして、アプリリリースと同時にJounaling Suggestions APIも公開されました。
日記のような個人的な文章を書くアプリなどを開発している個人・企業もiPhone内にある情報を同じように利用できるようになります。
今回は、APIの概要をざっくり検証していこうと思います。

概要

Journaling Suggestions APIは、ピッカーのインターフェースを提供します。
ピッカーには、訪れた場所、つながりのある人、ライブラリにある写真、繰り返し再生している曲など、その人の人生で起こった個人的な出来事が表示されます。

例えば、日記アプリは、選択された提案に関する新しい日記エントリの開始を表示するために詳細を使用します。

対応OSは以下の通りです。

  • iOS17.2+
  • iPadOS 17.2+
  • Mac Catalyst 17.2+

導入方法

Journaling Suggestionsフレームワークは、コード署名にこのエンタイトルメントがないアプリにはJournalingSuggestionsPickerを表示できません。
XcodeでJournaling Suggestions機能を有効にしEntitlimentsを追加することで、アプリにこの権限を追加しましょう。

Journaling Suggestions Frameworkの追加

使い方

struct ContentView: View {
    var body: some View {
        JournalingSuggestionsPicker { {
            Text("提案を表示")
        } onCompletion: { suggestion in
            print(suggestion.title) // 自動的に提案されたタイトルの利用が可能
            print(suggestion.date) // 提案されたイベントが行われる時間の範囲 (DateInterval)
        }
    }
}

onCompletionで主ときできるJournalingSuggestionからはtitledateが取得でき、その他選択したコンテンツに応じて、

suggestionPhotos = await suggestion.content(forType: JournalingSuggestion.Photo.self)

のようにしてアクセスできます。

取得できる型は様々です。

説明
Photo 撮影日を含む、個人のライブラリからの画像
Workout 消費カロリー、走行距離、走行ルート、平均心拍数、開始時刻と終了時刻、ワークアウトの種類のアイコンなど、その人が完了したワークアウトに関する情報
Contact 連絡先に登録されている人物とのやり取り。その人物の名前や連絡先の写真などが含まれる
Location その人が訪れた場所。名前、周辺の都市、地理座標(あれば)が含まれる
Song アーティスト名、アルバム名、アルバムアートワークなど。
Podcast 番組、アーティスト、エピソード、関連アートワークなど、その人が再生するポッドキャストに関する情報。
Video 撮影日など、その人のライブラリにあるビデオ
LivePhoto 撮影日を含む、その人のライブラリからのライブ写真を表す画像と短いビデオ
MotionActivity アクティビティのアイコンを含む、iPhoneのモーションイベントで人が歩いた歩数

最後に

ここまで色々見てきて、Xcodeで確認しようとしていたのですが、筆者の環境(Xcode15.2beta)で Simulator 15.2 iOS 17.2に対してJournalingSuggestionsが利用できず、下記のような対応が必要でした。

#if canImport(JournalingSuggestions)
import JournalingSuggestions
#endif

また、iOS17.2にアップデートした実機では利用できました。
はじめは写真アプリのハイライトがいくつか提案されていたのですが、一度選択してしまうと表示されなくなってしまうようです。
そして、それらがなくなってしまうと提案はそれ以上出てくることなく、下記スクリーンショットのままどうすることもできません。

iPhone実機の提案がない画面

開発環境などのような想定がないと、開発を効率的に進めていくのは難しいのではないかと感じます。
意気揚々と解説を書き始めたのですが、実践投入するには時期尚早のようですね。

これらの使用に関して知見のある方がいらっしゃれば教えていただけると幸いです。
ありがとうございました。

参考

GitHubで編集を提案

Discussion