[iOSDC Japan 2019 リポート] iOSDCの前夜祭に参加してきました!!

2019.09.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

CX事業本部の中安です。

弊部は今夏、モバイルアプリサービス部からCX事業本部に名称が変わったのですが、 この自己紹介を書くのが初めてなので随分ブログを書いてなかったことを実感しています(苦笑

さて、昨日より東京・早稲田大学構内でスタートした「iOSDC Japan 2019」に参加をさせていただいています。

今回から3日間に渡るこのイベントを、弊社iOSアプリ開発メンバーと一緒に色々とレポートしていければと思います。

9/5(木)は前夜祭ということで、夕方の17時30分から1トラック1〜2セッションの合計6セッションが行われました。

会場入口にあるこちらのボードは、ダークモードと切り替えられるらしいんですが、夕方スタートということでダークモードでしたね(笑

StringはなぜMutableCollectionじゃないの? 「SwiftのStringの文字の数え方を完全理解する」

最初は、フェンリルの廣部さんによる「SwiftのStringの文字の数え方を完全理解する」というセッションを聞きました。

内容

SwiftはUnicodeの扱いに非常に長けた言語であり、絵文字を含む文字列でも正しい文字数を計算してくれます。 その反面、Unicodeの複雑さに引きずられてしまい、直感的な操作ができない時もあります。たとえば、 string[2] と書いても3番目の文字を取得することはできません。

そんな複雑なところのあるSwiftの文字列処理ですが、複雑なものを受け入れてきちんと理解するのはそこまで難しいものではありません。

このトークでは、Unicodeとの関係を意識しながら、Swiftの文字数の扱い方とその裏にある考え方を解説します。

開発者であれば誰しもが使う基本的な型「文字列」ですが、一言に文字列といっても奥深い世界です。

登壇者の解説にもあるように、String は Swift では Collection に準拠していますが、同じく Collection準拠の「配列」と比べると挙動が色々と違います。 この違いがどこから生まれるのかというのを懇切丁寧に発表されていました。

こう思った

自分も以前に文字列の扱いなどについて調べたときに「書記素クラスタ」や「マルチバイト文字の扱い」などの記事も読んだことがありました。

そのときには「ふんふん」と分かったつもりになっていましたが、今回のように体系的にまとめられた話を聞くと、より理解が深まった感があります。

特に String.Indexであればなぜ指定した位置の文字列を取得できるのかという話も、Unicodeの観点でいくと非常に納得できました。

文字列は奥深い。。

「GoogleSpeechToTextを活用して音声を動画にした話」

続いて、音声配信アプリ「Radiotalk」でiOSアプリ開発を担当されているというようせいさんによる「GoogleSpeechToTextを活用して音声を動画にした話」というセッションを聞きました。

スライドはしばらく後のようです。お待ちしています

内容

Radiotalkは、音声配信プラットフォームで、誰でもラジオのようにトークを配信することができます。 最近、ワイヤレスイヤホンが普及などもあり、音声が注目されるようになってきました。 しかし、音声は、以下のような再生までのハードルが高い課題がありました。 ・環境によっては今すぐ再生できない(音を出せる環境、ヘッドホンしているかなど) ・再生するトークを選ぶ際に、タイトルや詳細、画像などでしか判断できない(トークのテンションや声などは判断できない)

その課題を解決するために、音声の一部を書き起こして、テロップ動画でシェアできる機能を作成しました。 音声から動画を作成するまでの話と作り方をお話したいと思います。

・開発の流れ  ・なぜ音声を動画にすることになったのか  ・動画のテンプレートを作るまでの流れ  ・実装の一連の流れ ・音声トリミング方法 ・音声の解析方法  ・GoogleSpeechToTextなぜ採用したか  ・GoogleSpeechToTextの仕様  ・GoogleSpeechToText精度 ・テロップ動画作成エディタのUI/UX ・静止画動画作成方法 ・音声と動画の合成方法

こちらのサービス・アプリは存じ上げなかったのですが、20秒ほどの音声をベースに紙芝居的に画像とテロップを入れてSNSへとシェアができる機能を実装した話が中心でした。

AVFoundation を用いた具体的なコードの内容を含め、UIへの工夫、UXに対するユーザーフィードバックについてもお話しいただきました。 音声の書き起こしについては、GoogleSpeechToTextの仕様と精度、信頼性を他のサービス(AWSなど)との比較も含めて、教えていただきました。

僭越ながら、画像合成についてQ&Aで質問させていただきました。ありがとうございます。

こう思った

まず、GoogleSpeechToTextは触ったことなかったですが、リクエストとレスポンスの部分だけ見ても「こんなふうに取れるんだ」という感想を抱きました。 英語であれば複数人の会話もある程度は誰が喋ったのかというところまで取れるとのことで、日本語も対応されれば色々と面白そうなことができそうですね。

また、AVFoundationについては 動画と音声を切り貼りする結合や、そこにテロップを入れるとか、自分も何度か触ったことがあります。

AVFoundationで登場するクラス名はやたらめったら長いのですが、登壇者の方もそこにツッコミを入れ(関西風に)て、 クラス名で説明せずに「漫画家」や「台本」といったものに置換して説明していたのが面白かったです。(そのほうがわかりやすい)

まとめ

さあ、まだiOSDCは始まったばかりです。 今日からの本イベントも朝から参加して、色々インプットしてこようと思います。

では、また