Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Translation API について 〜WWDC24〜
Search
Ryu-nakayama
June 21, 2024
Programming
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Translation API について 〜WWDC24〜
mobile.stmn #6 の登壇資料です
Ryu-nakayama
June 21, 2024
More Decks by Ryu-nakayama
See All by Ryu-nakayama
AIに「任せない」という選択
ryunakayama
0
100
iOS機能開発のAI環境と起きた変化
ryunakayama
0
280
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
460
iOSアプリでフロントエンドと仲良くする
ryunakayama
0
180
「ジェン文字」使ってますか?
ryunakayama
0
100
Health Kit × Foundation Models でAIコーチを作ってみた
ryunakayama
0
380
iOSの画面の状態のアレコレを調査してみた
ryunakayama
0
150
作文ツール(Writing Tools)をアプリから制御する
ryunakayama
0
97
iOSアプリで測る!名古屋駅までの 方向と距離
ryunakayama
0
340
Other Decks in Programming
See All in Programming
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
240
Groovy as a human and AI friendly programming language
paulk
0
110
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
880
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
190
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
450
contenteditable と日本語入力に向き合う
colorful12
0
210
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
160
最近”作らせてる” ローカルAIアプリの話
akit37
0
490
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.8k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
160
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
120
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
150
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Mind Mapping
helmedeiros
1
400
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Testing 201, or: Great Expectations
jmmastey
46
8.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
A better future with KSS
kneath
240
18k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Transcript
Chatwork株式会社 モバイルアプリケーション開発部 iOSチーム 中山 龍 2024年6月21日 - mobile.stmn #6 Translation
API について 〜WWDC24〜
自己紹介 中山 龍 (なかやま りゅう) • Chatwork株式会社 ◦ 新卒2年目のiOSエンジニア(22) ◦
(6月19日に22歳になりました) • フルリモート勤務で愛知県在住 2 @ryu_develop 7月から社名がkubellに変わるので、Chatwork社員としてはラストの登壇です
今日のテーマ Translation APIを使った アプリ内のテキストを機械翻訳する方法について ざっくりお伝えします 3 注意: 開発環境の影響で手元で動作確認ができない機能があるため、理解の正しさに 不安がある部分に関する言及は極力避けています 注意:
本スライドの内容や説明に登場するコードは所属組織とは一切関係ありません
Translation APIとは
Translation API • WWDC24の「Translation APIについて」(Meet the Translation API)にて紹介 • アプリ内のテキストをある言語から別の言語に翻訳できる
◦ 従来の翻訳アプリとその背後にある機械学習モデルを活用できるようにす るAPI • iOS / iPadOS / macOSでサポートされている 5 概要
Translation API 1. オーバーレイによるテキストの翻訳 6 実現できること 2. 柔軟なテキスト翻訳 • システム翻訳UIを表示し、アプリ内のテキストの翻訳操作を提供する
• iOS17.4+ / iPadOS17.4+ / macOS14.4+ で利用可能 • システム翻訳UIを表示し、アプリ内のテキストの翻訳操作を提供する • iOS18.0+ / iPadOS18.0+ / macOS15.0+ で利用可能 • 現在はBeta
オーバーレイによるテキストの翻訳 1 TITLE タイトル
実装できるもの 8 ボタンを押すと... 下から翻訳のUIが表示される
実装できるもの 9 下から翻訳のUIが表示される • 実際の画面 → • 現在リリースされている環境で利用可能 ◦ iOS17.4+
◦ iPadOS17.4+ ◦ macOS14.4+
実装方法 10 下から翻訳のUIが表示される SwiftUIView() .translationPresentation( isPresented: $showsTranslation, text: inputText )
import Translation
実装方法 11 下から翻訳のUIが表示される SwiftUIView() .translationPresentation( isPresented: $showsTranslation, text: inputText )
import Translation Bool値 trueになると翻訳のUIが 表示される
実装方法 12 下から翻訳のUIが表示される SwiftUIView() .translationPresentation( isPresented: $showsTranslation, text: inputText )
import Translation String ここに渡した文字列が翻訳 の対象となる
実際のコード 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 ) } }
実際のコード 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 ) } }
柔軟なテキスト翻訳 2 TITLE タイトル
実装できるもの 16 ボタンを押すと... アプリ内のテキストが翻訳され たものに置き換わる Hello 翻訳 こんにちは 翻訳 上記画像は実際のものではなく参考画像として作成したものです
(動作には現状はiOS18 betaが必要であるため、手元に動作環境がなく、また、 beta版 の画像は掲載することができないため )
実装できるもの 17 アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 上記画像は実際のものではなく参考画像として作成したものです (動作には現状はiOS18 betaが必要であるため、手元に動作環境がなく、また、 beta版
の画像は掲載することができないため ) • 参考の画面 → • WWDC24で発表された新OSの環境で利 用可能 ◦ iOS18.0+ ◦ iPadOS18.0+ ◦ macOS15.0+
実装方法 18 SwiftUIView() .translationTask { session in do { let
response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳
実装方法 19 SwiftUIView() .translationTask { session in do { let
response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 Viewが表示されるときに1 回実行される
実装方法 20 SwiftUIView() .translationTask { session in do { let
response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 翻訳したい文字列を渡し、 翻訳をかける
実装方法 21 SwiftUIView() .translationTask { session in do { let
response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 responseから翻訳後の文字列 を取り出す (そして表示用の変数に代入す ることで翻訳結果が UIに反映さ れる...)
実装方法 22 SwiftUIView() .translationTask { session in do { let
response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 responseから翻訳後の文字列 を取り出す (そして表示用の変数に代入す ることで翻訳結果が UIに反映さ れる...) TranslationSession.Configuration を使って翻訳タイミングの制御も可能!
実装方法 23 SwiftUIView() .translationTask { session in do { let
response = try await session.translate(sourceText) targetText = response.targetText } catch { // エラーハンドリング } } import Translation アプリ内のテキストが翻訳され たものに置き換わる こんにちは 翻訳 responseから翻訳後の文字列 を取り出す (そして表示用の変数に代入す ることで翻訳結果が UIに反映さ れる...) TranslationSession.Configuration を使って翻訳タイミングの制御も可能! ですが、まだ手元に動作確認できる環境がない ため、間違った情報を発信する恐れがあり... ということで、今日はこの話はしません (またいつか...!)
開発時の注意
開発時の注意 Translation APIはシミュレータでは機能しない 実機にビルドして挙動を確認する必要がある 25
まとめ
まとめ • Translation APIとは ◦ 翻訳アプリの背後にある機械学習モデルを活用できるようにするAPI • 2種類の翻訳 ◦ オーバーレイによるテキストの翻訳
▪ とてもシンプルな実装で翻訳UIを表示可能 ▪ iOS17.4+ / iPadOS17.4+ / macOS14.4+ で利用可能 ◦ 柔軟なテキスト翻訳 ▪ アプリ内に翻訳後のテキストを表示可能 ▪ iOS18.0+ / iPadOS18.0+ / macOS15.0+ で利用可能 ▪ 現在はBeta • 注意 ◦ Translation APIはシミュレータでは動作しない 27
働くをもっと楽しく、創造的に