Slide 1

Slide 1 text

全部 iOS に しゃべらせちゃえ! iOSDC Japan 2018 LT
 2018/09/02

Slide 2

Slide 2 text

CfPに応募したプロポーザル ͍͚ͬͳʔ͍τʔΫτʔΫࢲɺͻΖΜɻࠓ೥΋iOSDCͷLT ʹԠืͨ͠ͷ✨Ͱ΋iOSDC͸ڝٕLTΦʔσΟΤϯε΋͍ͬͺ͍ ͍Δ͔Βۓுͯ͠͠Ό΂Εͳ͍Αʔ͋ɺͦ͏ͩ AVSpeechSynthesizerͪΌΜͱPDF Kit͘ΜʹཔΊ͹ɺ୅ΘΓʹ ൃදͯ͘͠ΕΔΜ͡Όͳ͍ʁࢲ͋ͬͨ·͍͍ʔ…ͬͯຊ౰ʹ࠾ ୒͞ΕͨΒͲ͏͠Α͏࣍ճʮશ෦iOSʹ͠Ό΂ΒͤͪΌ͑ʂʯ ָ͓͠Έʹ

Slide 3

Slide 3 text

本当に採択されました

Slide 4

Slide 4 text

バカなの?

Slide 5

Slide 5 text

バカなの? (いい意味で)

Slide 6

Slide 6 text

About Me • ひろん(一宮 浩教) • Twitter:
 @hironytic • GitHub:
 https://github.com/hironytic • 徳島在住エンジニア Him

Slide 7

Slide 7 text

CfPに応募したプロポーザル ͍͚ͬͳʔ͍τʔΫτʔΫࢲɺͻΖΜɻࠓ೥΋iOSDCͷLT ʹԠืͨ͠ͷ✨Ͱ΋iOSDC͸ڝٕLTΦʔσΟΤϯε΋͍ͬͺ͍ ͍Δ͔Βۓுͯ͠͠Ό΂Εͳ͍Αʔ͋ɺͦ͏ͩ AVSpeechSynthesizerͪΌΜͱPDF Kit͘ΜʹཔΊ͹ɺ୅ΘΓʹ ൃදͯ͘͠ΕΔΜ͡Όͳ͍ʁࢲ͋ͬͨ·͍͍ʔ…ͬͯຊ౰ʹ࠾ ୒͞ΕͨΒͲ͏͠Α͏࣍ճʮશ෦iOSʹ͠Ό΂ΒͤͪΌ͑ʂʯ ָ͓͠Έʹ

Slide 8

Slide 8 text

CfPに応募したプロポーザル ͍͚ͬͳʔ͍τʔΫτʔΫࢲɺͻΖΜɻࠓ೥΋iOSDCͷLT ʹԠืͨ͠ͷ✨Ͱ΋iOSDC͸ڝٕLTΦʔσΟΤϯε΋͍ͬͺ͍ ͍Δ͔Βۓுͯ͠͠Ό΂Εͳ͍Αʔ͋ɺͦ͏ͩ AVSpeechSynthesizerͪΌΜͱPDF Kit͘ΜʹཔΊ͹ɺ୅ΘΓʹ ൃදͯ͘͠ΕΔΜ͡Όͳ͍ʁࢲ͋ͬͨ·͍͍ʔ…ͬͯຊ౰ʹ࠾ ୒͞ΕͨΒͲ͏͠Α͏࣍ճʮશ෦iOSʹ͠Ό΂ΒͤͪΌ͑ʂʯ ָ͓͠Έʹ

Slide 9

Slide 9 text

AVSpeechSynthesizer • テキストの読み上げをしてくれるAPI • iOS 7.0+ ‣ Documentation > AVFoundation > Speech Synthesis ‣ AVSpeechSynthesizer: Making iOS Talk - WWDC 2018 Video See Also

Slide 10

Slide 10 text

AVSpeechSynthesizer let speechSynthesizer = AVSpeechSynthesizer() let utterance = AVSpeechUtterance(string: "ͦΕ͸໘ന͍࣭໰Ͱ͢Ͷ") utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP") speechSynthesizer.speak(utterance) すごく簡単にしゃべらせられる

Slide 11

Slide 11 text

AVSpeechSynthesizer let speechSynthesizer = AVSpeechSynthesizer() let utterance1 = AVSpeechUtterance(string: "࿩͢εϐʔυΛม͑ͨΓ") utterance1.voice = AVSpeechSynthesisVoice(language: "ja-JP") utterance1.rate = 0.7 speechSynthesizer.speak(utterance1) let utterance2 = AVSpeechUtterance(string: "੠ͷߴ͞Λม͑ͨΓ") utterance2.voice = AVSpeechSynthesisVoice(language: "ja-JP") utterance2.pitchMultiplier = 0.5 speechSynthesizer.speak(utterance2)

Slide 12

Slide 12 text

AVSpeechSynthesizer let speechSynthesizer = AVSpeechSynthesizer() let utterance1 = AVSpeechUtterance(string: "࿩͢εϐʔυΛม͑ͨΓ") utterance1.voice = AVSpeechSynthesisVoice(language: "ja-JP") utterance1.rate = 0.7 speechSynthesizer.speak(utterance1) let utterance2 = AVSpeechUtterance(string: "੠ͷߴ͞Λม͑ͨΓ") utterance2.voice = AVSpeechSynthesisVoice(language: "ja-JP") utterance2.pitchMultiplier = 0.5 speechSynthesizer.speak(utterance2)

Slide 13

Slide 13 text

AVSpeechSynthesizer let speechSynthesizer = AVSpeechSynthesizer() let utterance1 = AVSpeechUtterance(string: "࿩͢εϐʔυΛม͑ͨΓ") utterance1.voice = AVSpeechSynthesisVoice(language: "ja-JP") utterance1.rate = 0.7 speechSynthesizer.speak(utterance1) let utterance2 = AVSpeechUtterance(string: "੠ͷߴ͞Λม͑ͨΓ") utterance2.voice = AVSpeechSynthesisVoice(language: "ja-JP") utterance2.pitchMultiplier = 0.5 speechSynthesizer.speak(utterance2)

Slide 14

Slide 14 text

PDF Kit • PDFの表示、データの取得、編集といった操作を 行うフレームワーク • iOS 11.0+ ‣ Documentation > PDFKit ‣ Introducing PDFKit on iOS - WWDC 2017 Video ‣ iOS 11 Programming 第10章 PDF Kit - 書籍(PEAKS) See Also

Slide 15

Slide 15 text

PDFView 簡単にPDFドキュメントを表示できるビュー // ϏϡʔͷදࣔઃఆΛ͓͍ͯͯ͠ pdfView.displayMode = .singlePage pdfView.displayDirection = .horizontal pdfView.autoScales = true // දࣔ͢ΔPDFυΩϡϝϯτΛࢦఆ͢Δ pdfDocument = PDFDocument(data: pdfData)! pdfView.document = pdfDocument

Slide 16

Slide 16 text

PDFView プログラムで指定したページを
 表示させることができる // 6ϖʔδ໨Λදࣔ if let pdfPage = pdfDocument.page(at: 5) { pdfView.go(to: pdfPage) }

Slide 17

Slide 17 text

作戦

Slide 18

Slide 18 text

作戦 プレゼンツールを使って スライドを作成

Slide 19

Slide 19 text

作戦 プレゼンツールを使って スライドを作成 1%' PDF書き出し

Slide 20

Slide 20 text

作戦 プレゼンツールを使って スライドを作成 1%' PDF書き出し 1%'7JFX

Slide 21

Slide 21 text

作戦 プレゼンツールを使って スライドを作成 1%' PDF書き出し 1%'7JFX ✦ページを変更 - 1ページへ ✦話す - それでは発表します。 ✦ページを変更 - 2ページへ ✦話す - これが応募したプロポー ザルの内容です。 ✦話す - いっけなーい、..
 .......
 ....... ページの切り替えや 話す内容に関する シナリオを作成

Slide 22

Slide 22 text

作戦 プレゼンツールを使って スライドを作成 1%' PDF書き出し 1%'7JFX "74QFFDI
 4ZOUIFTJ[FS ✦ページを変更 - 1ページへ ✦話す - それでは発表します。 ✦ページを変更 - 2ページへ ✦話す - これが応募したプロポー ザルの内容です。 ✦話す - いっけなーい、..
 .......
 ....... ページの切り替えや 話す内容に関する シナリオを作成

Slide 23

Slide 23 text

Document-Based App ‣ Document Based Apps ‣ Document-Based App Programming Guide for iOS ‣ iOS ドキュメントベースアプリケーション プログラミングガイド (日本語訳PDF) ‣ Building Great Document-based Apps in iOS 11 - WWDC 2018 Video ‣ Building Document Based Apps - WWDC 2015 Video ‣ iOS 11 Programming 第7章 FilesとDocument Based Application - 書籍(PEAKS) See Also

Slide 24

Slide 24 text

外部ディスプレイ対応 • 外部ディスプレイ - LightningからHDMIやVGAで出力したとき - AirPlayでApple TVへ出力したとき ‣ Multiple Display Programming Guide for iOS ‣ iOS マルチディスプレイ プログラミングガイド (日本語訳PDF) See Also

Slide 25

Slide 25 text

⭐ https://github.com/hironytic/MrHappyoI

Slide 26

Slide 26 text

実際にしゃべらせると 困ったこと

Slide 27

Slide 27 text

なんか違う AVSpeechSynthesizer 数行書くだけで

Slide 28

Slide 28 text

なんか違う AVSpeechSynthesizer → アブズピーチシンササイザー 数行書くだけで

Slide 29

Slide 29 text

なんか違う AVSpeechSynthesizer → アブズピーチシンササイザー 数行書くだけで → すうこうかくだけで

Slide 30

Slide 30 text

なんか違う AVSpeechSynthesizer 数行書くだけで カタカナ、ひらがなで指定すれば大丈夫 エーブイスピーチシンセサイザー すうぎょう書くだけで

Slide 31

Slide 31 text

ちょっと聞き取りづらい もしかして バカなの?

Slide 32

Slide 32 text

ちょっと聞き取りづらい もしかして 運営って バカなの?

Slide 33

Slide 33 text

ちょっと聞き取りづらい もしかして 運営って バカなの? もしかして 採択している人たち バカなの?

Slide 34

Slide 34 text

まとめ

Slide 35

Slide 35 text

まとめ • CfPにネタで煽ると、煽り返されるという知見

Slide 36

Slide 36 text

まとめ • CfPにネタで煽ると、煽り返されるという知見 • iOSが、がんばりました - AVSpeechSynthesizer / こいつ・・・しゃべるぞ - PDF Kit / 見せてもらおうか、新しいスライドとやらを

Slide 37

Slide 37 text

ご清聴ありがとうございました 終 協力 i O S