Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Translation API について 〜WWDC24〜

Translation API について 〜WWDC24〜

mobile.stmn #6 の登壇資料です

Ryu-nakayama

June 21, 2024
Tweet

More Decks by Ryu-nakayama

Other Decks in Programming

Transcript

  1. 自己紹介 中山 龍 (なかやま りゅう) • Chatwork株式会社 ◦ 新卒2年目のiOSエンジニア(22) ◦

    (6月19日に22歳になりました) • フルリモート勤務で愛知県在住 2 @ryu_develop 7月から社名がkubellに変わるので、Chatwork社員としてはラストの登壇です
  2. Translation API • WWDC24の「Translation APIについて」(Meet the Translation API)にて紹介 • アプリ内のテキストをある言語から別の言語に翻訳できる

    ◦ 従来の翻訳アプリとその背後にある機械学習モデルを活用できるようにす るAPI • iOS / iPadOS / macOSでサポートされている 5 概要
  3. Translation API 1. オーバーレイによるテキストの翻訳 6 実現できること 2. 柔軟なテキスト翻訳 • システム翻訳UIを表示し、アプリ内のテキストの翻訳操作を提供する

    • iOS17.4+ / iPadOS17.4+ / macOS14.4+ で利用可能 • システム翻訳UIを表示し、アプリ内のテキストの翻訳操作を提供する • iOS18.0+ / iPadOS18.0+ / macOS15.0+ で利用可能 • 現在はBeta
  4. 実際のコード 13 import SwiftUI import Translation struct OverlayTranslateView: View {

    @State var showsTranslation = false let text = “Hello World!” var body: some View { HStack { Text(text) Button { showsTranslation = true } label: { // 任意の表示 } } .translationPresentation( isPresented: $showsTranslation, text: inputText ) } }
  5. 実際のコード 14 import SwiftUI import Translation struct OverlayTranslateView: View {

    @State var showsTranslation = false let text = “Hello World!” var body: some View { HStack { Text(text) Button { showsTranslation = true } label: { // 任意の表示 } } .translationPresentation( isPresented: $showsTranslation, text: inputText ) } }
  6. 実装できるもの 16 ボタンを押すと... アプリ内のテキストが翻訳され たものに置き換わる Hello 翻訳 こんにちは 翻訳 上記画像は実際のものではなく参考画像として作成したものです

    (動作には現状はiOS18 betaが必要であるため、手元に動作環境がなく、また、 beta版 の画像は掲載することができないため )
  7. 実装方法 18 SwiftUIView() .translationTask { session in do { let

    response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳
  8. 実装方法 19 SwiftUIView() .translationTask { session in do { let

    response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 Viewが表示されるときに1 回実行される
  9. 実装方法 20 SwiftUIView() .translationTask { session in do { let

    response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 翻訳したい文字列を渡し、 翻訳をかける
  10. 実装方法 21 SwiftUIView() .translationTask { session in do { let

    response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 responseから翻訳後の文字列 を取り出す (そして表示用の変数に代入す ることで翻訳結果が UIに反映さ れる...)
  11. 実装方法 22 SwiftUIView() .translationTask { session in do { let

    response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 responseから翻訳後の文字列 を取り出す (そして表示用の変数に代入す ることで翻訳結果が UIに反映さ れる...) TranslationSession.Configuration を使って翻訳タイミングの制御も可能!
  12. 実装方法 23 SwiftUIView() .translationTask { session in do { let

    response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 responseから翻訳後の文字列 を取り出す (そして表示用の変数に代入す ることで翻訳結果が UIに反映さ れる...) TranslationSession.Configuration を使って翻訳タイミングの制御も可能! ですが、まだ手元に動作確認できる環境がない ため、間違った情報を発信する恐れがあり... ということで、今日はこの話はしません (またいつか...!)
  13. まとめ • Translation APIとは ◦ 翻訳アプリの背後にある機械学習モデルを活用できるようにするAPI • 2種類の翻訳 ◦ オーバーレイによるテキストの翻訳

    ▪ とてもシンプルな実装で翻訳UIを表示可能 ▪ iOS17.4+ / iPadOS17.4+ / macOS14.4+ で利用可能 ◦ 柔軟なテキスト翻訳 ▪ アプリ内に翻訳後のテキストを表示可能 ▪ iOS18.0+ / iPadOS18.0+ / macOS15.0+ で利用可能 ▪ 現在はBeta • 注意 ◦ Translation APIはシミュレータでは動作しない 27