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
89
iOS機能開発のAI環境と起きた変化
ryunakayama
0
270
日本だけで解禁されているアプリ起動の方法
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
91
iOSアプリで測る!名古屋駅までの 方向と距離
ryunakayama
0
340
Other Decks in Programming
See All in Programming
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
230
mrbgem 三角測量 開発
ogom
0
240
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
370
Jetpack Compose Mechanisms
skydoves
2
720
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
160
golang-bob.pdf
iwatsukayura
0
130
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.1k
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
Simple Storage Service(S3) is not simple
iwatsukayura
0
260
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
370
Visualization
eitanlees
153
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Practical Orchestrator
shlominoach
192
12k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
620
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
How GitHub (no longer) Works
holman
316
150k
Between Models and Reality
mayunak
4
490
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
The Limits of Empathy - UXLibs8
cassininazir
2
720
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
働くをもっと楽しく、創造的に