Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Translation API について 〜WWDC24〜
Search
Ryu-nakayama
June 21, 2024
Programming
420
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
42
iOS機能開発のAI環境と起きた変化
ryunakayama
0
240
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
430
iOSアプリでフロントエンドと仲良くする
ryunakayama
0
160
「ジェン文字」使ってますか?
ryunakayama
0
88
Health Kit × Foundation Models でAIコーチを作ってみた
ryunakayama
0
360
iOSの画面の状態のアレコレを調査してみた
ryunakayama
0
110
作文ツール(Writing Tools)をアプリから制御する
ryunakayama
0
69
iOSアプリで測る!名古屋駅までの 方向と距離
ryunakayama
0
320
Other Decks in Programming
See All in Programming
メールのエイリアス機能を履き違えない
isshinfunada
0
220
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
150
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
420
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
300
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
100
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
190
5分で問診!Composer セキュリティ健康診断
codmoninc
0
890
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
460
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
200
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.5k
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
370
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
770
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
490
Code Review Best Practice
trishagee
74
20k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
350
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
190
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
230
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
330
The Language of Interfaces
destraynor
162
27k
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
働くをもっと楽しく、創造的に