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
85
iOS機能開発のAI環境と起きた変化
ryunakayama
0
270
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
450
iOSアプリでフロントエンドと仲良くする
ryunakayama
0
180
「ジェン文字」使ってますか?
ryunakayama
0
99
Health Kit × Foundation Models でAIコーチを作ってみた
ryunakayama
0
380
iOSの画面の状態のアレコレを調査してみた
ryunakayama
0
140
作文ツール(Writing Tools)をアプリから制御する
ryunakayama
0
88
iOSアプリで測る!名古屋駅までの 方向と距離
ryunakayama
0
340
Other Decks in Programming
See All in Programming
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
110
SREの越境 / SRE Collaboration
y0hgi
2
290
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.3k
App Intentsのビルドプロセスを支える技術
kntkymt
0
490
FreeBSDでZabbixを動かす
kenkino
0
350
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
320
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
5.8k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
510
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
220
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
4 Signs Your Business is Dying
shpigford
187
23k
Mobile First: as difficult as doing things right
swwweet
225
10k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Writing Fast Ruby
sferik
630
63k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
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
働くをもっと楽しく、創造的に