$30 off During Our Annual Pro Sale. View Details »

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

Hiron
September 02, 2018

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

iOSDC Japan 2018でiOSが話したスライドです。

スライド中の外部資料へのリンクは https://gist.github.com/hironytic/eb4174f4a44f04dddc7e066a3bae7cb7 にもまとめてあります。

Hiron

September 02, 2018
Tweet

More Decks by Hiron

Other Decks in Programming

Transcript

  1. 全部 iOS に
    しゃべらせちゃえ!
    iOSDC Japan 2018 LT

    2018/09/02

    View Slide

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

    View Slide

  3. 本当に採択されました

    View Slide

  4. バカなの?

    View Slide

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

    View Slide

  6. About Me
    • ひろん(一宮 浩教)
    • Twitter:

    @hironytic
    • GitHub:

    https://github.com/hironytic
    • 徳島在住エンジニア
    Him

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 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)

    View Slide

  12. 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)

    View Slide

  13. 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)

    View Slide

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

    View Slide

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

    View Slide

  16. PDFView
    プログラムで指定したページを

    表示させることができる
    // 6ϖʔδ໨Λදࣔ
    if let pdfPage = pdfDocument.page(at: 5) {
    pdfView.go(to: pdfPage)
    }

    View Slide

  17. 作戦

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    .......

    .......
    ページの切り替えや
    話す内容に関する
    シナリオを作成

    View Slide

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

    4ZOUIFTJ[FS ✦ページを変更
    - 1ページへ
    ✦話す
    - それでは発表します。
    ✦ページを変更
    - 2ページへ
    ✦話す
    - これが応募したプロポー
    ザルの内容です。
    ✦話す
    - いっけなーい、..

    .......

    .......
    ページの切り替えや
    話す内容に関する
    シナリオを作成

    View Slide

  23. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  34. まとめ

    View Slide

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

    View Slide

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

    View Slide

  37. ご清聴ありがとうございました

    協力
    i O S

    View Slide