iOSDC Japan 2021 トーク一覧

採択 他イベントOK スポンサーセッション 2021/09/17 19:10〜 Track C スポンサーセッション

従業員数4000人、老舗エンタメ企業のテックカンパニーへの挑戦

geshi0123 重村 裕紀 geshi0123

ミダスキャピタルが出資する株式会社GENDAは、連結従業員4000人以上からなるエンタテインメント領域のホールディングス会社です。2018年5月に創業し、現在は日米中3カ国に事業を展開、M&Aによる事業拡大に力を入れています。昨年度末には、セガグループからセガ
エンタテインメントを連結子会社化し「SEGA」ブランドのゲームセンター事業の運営も開始しました。
このセッションでは、老舗エンタメ企業をテクノロジーで進化させていく挑戦と、モバイルアプリの活用事例を紹介したいと思います。

採択 他イベントOK スポンサーセッション 2021/09/18 18:20〜 Track E スポンサーセッション

UITestを活用しまだまだ不安定なSwiftUIアプリを安定的に実務運用する方法

7_6_ ななしき 7_6_

スタディサプリEnglishでは社内向けのiOSアプリをフルSwiftUIで1から開発し、去年の秋から約1年間運用しております。

ただSwiftUIはWWDC2019で登場してからまだ2年でOSのバージョンやXcode(iOS SDK)のバージョンによって挙動が大きく変わったり、Viewの書き方によって自分が触ってない子Viewにまで影響してしまうなど不安定な部分が多いです。

本トークでは不安定なSwiftUIアプリを運用していく際に直面した課題やそれらの課題をUITestを使って解決し安定的に運用することができるにした方法を話します。

採択 他イベントOK スポンサーセッション 2021/09/18 18:20〜 Track D スポンサーセッション

iOSエンジニアがKMPで大規模アプリのロジック共通化をしてうまくできている話

nirazo Kenzo Nirasawa nirazo

このトークは、韮澤 と 浅井2名での登壇になります。
韮澤 : GitHub, Twitter -> @nirazo
浅井 : GitHub, Twitter -> @trsxxii

ホットペッパーグルメアプリは約20万行のソースコードから成る大規模なアプリで、10年以上の歴史の中で仕様とソースコードが複雑化し続けています。
この複雑さの解消と今後のメンテナビリティ向上のため、我々はコードリニューアル・リアーキテクチャを行う決断をしました。コードリニューアル・リアーキテクチャにあたり、iOSとAndroid間の不要な仕様差分解消や開発工数削減を狙いKotlin Multiplatform Project(以下KMP)を導入することとなりました。
現在はまだ開発中ではありますが、今のところKMP導入による致命的な問題は発生せず、順調に開発が進んでいます。
本セッションでは、大規模なアプリケーションにKMPを導入した際に発生した課題やその解決方法など、iOSアプリにKMPを採用する際の知見を共有します。
初期のKMP実装はiOSエンジニア2名で行っていたため、iOSエンジニアの皆様により近い目線でお話できると思います。
ロジックの共通化に興味があるけどKotlinに手を出すことに抵抗があるiOSエンジニアの方、大規模サービスにおけるロジック共通化の事例を知りたい方、ホットペッパーグルメのアプリ開発事情を知りたい方は是非ご参加ください!

採択 他イベントOK スポンサーセッション 2021/09/17 19:10〜 Track A スポンサーセッション

Initiatives in Rakuma iOS App

hcrane14 Hiromu Tsuruta hcrane14

■概要
楽天グループが運営するラクマでは、旧フリルから含めて今年の7月末で9周年を迎え、10年目に突入します。

長年開発されてきたアプリのため、レガシーな部分が残っており、リファクタリングを継続して行っています。
その一方で、早期から iOS13 以上のサポートへ切り替えているため、新しい API の導入を積極的に行ってきました。
例えば Combine、SwiftUI、Compositional Layouts といったものです。

今回は、実際にプロダクションレベルで運用している実装について、特に Compositional Layouts について触れていきます。
また、その他にラクマの iOS 開発における挑戦を紹介したいと思います。

■登壇者
鶴田: @hcrane14 (Twitter)
黒田: @darquro (Twitter)

採択 他イベントOK スポンサーセッション 2021/09/18 12:30〜 Track C スポンサーセッション

だれもが当たり前に使うアプリへ noteのこれまでとこれから

konpyu 今雄一 konpyu

2014年からサービス開始したnote。

iOSアプリはこれまでWebと機能面での差がありましたが、2020年は開発の土台作りのためのMagic PodやXcodeGenなどの活用、公式ライブラリであるDiffable Data SourceやCombineなどの導入、iOS 14で追加されたウィジェット機能の取り入れ、エディタ機能のリプレイスなど、さまざまな取り組みをしてきました。

2021年も、iPadアプリ対応やアクセシビリティ向上などに取り組み、アプリの評価も急上昇しています。

でも、インターネット上でひとびとが暮らすときの本拠地を目指すnoteにとっては、必要な開発がまだまだ山積みです。

本セッションでは、CTOの今からnote iOSアプリ開発のこれまでとこれからをご説明したうえで、日々一緒に働くPdM、デザイナー、ディレクターのコメントをご紹介します。

25
他イベントOK レギュラートーク(40分)

CI/CDサービスをより活用するために改善活動を1年つづけた結果

tarappo tarappo tarappo

iOSプロダクトの開発においてCI/CDサービスを利用していることは多いかと思います。
しかし、あまりメンテしていないと次のような状態になったりすることがあります。

  • 実行時間が徐々に伸びている
  • 実行環境起因のテストが失敗したまま放置されている
  • 初期の設定のままで特にCI/CDサービスでやることが増えていない

これは私が関わったプロジェクトの状態でした。
結果として次のようなことが起きていました。

  • 実行時間がかかるためPR時に動かしていなかった
    • 定期的にメインブランチにビルドができないコードが入っていた
  • CI/CDサービス上でテストが成功していないため手元のテストコードが本当に動くかが試してみないとわからない

このようにCI/CDにより守られるものが守られていない状態でした。

そこで、これらの課題を解決しよりCI/CDサービスを活用していくためにプロジェクトの状況を加味しながら改善活動をして1年ほどが立ちました。
改善をし続けた結果、現在は実行時間はピーク時の80%削減になり月に1000回以上実行されています。

本発表では、これらの課題がどういった要因で起きていて、
どのようなアプローチをおこなって解決し、そして現在はどういう状態になっているかについて話していきます。

そして、改善し続けた結果見えてきた次の課題についても話していきます。

主に次のような内容について話していきます。

  • 課題の把握のための可視化
  • 実行時間の短縮(約80%削減)
    • 並列化、各ステップの最適化、チューニング
  • greenを維持するためにおこなったこと
  • 複数CI/CDサービスの活用とジョブの分け方
  • この1年間でのビルド回数の変化
5
他イベントOK LT(5分)

空間オーディオが今より少し広まった未来の夢

Ridwy なめき ちはる Ridwy

サラウンド・・・その、あたかもその場にいるかのような臨場感ある音場に包まれた人は、誰しもがオッ!となります。しかし、それでサラウンドシステムを購入して家に設置する人はごく稀です。設置場所の確保も、値段も、音の調整(重要!)も、大変すぎるからです。さらに言えばコンテンツ作成側も大変です。

しかもサラウンドの強みは臨場感。音に対して並々ならぬ情熱をもつ領域といえば音楽ですが、ホールやスタジオで音楽を聴く体験の再現はステレオの方が適していることがほとんど。今のところサラウンドが活躍している場所は少なく、映画のここぞというシーンか、あるいはちょっと実験的に使われるに止まってしまっているように思います。

しかし、これがもし、簡単に環境が手に入ったら?

バーチャルだけれど、みんなで一緒にいるかのような臨場感ある体験を共有できるとしたら?

しかも、それが流行っちゃったら?

サラウンド、ついに来るか・・・!?

WWDC21で発表されたFaceTimeの空間オーディオ対応はそんな妄想を描き立たせてくれるものでした。
一緒に空間オーディオという技術と向き合い、様々な可能性を検証し、ユースケースに思いを馳せてみませんか?面白い機能やアイディアが浮かんでくるかも知れませんよ!

1
採択 他イベントOK 2021/09/19 14:10〜 Track E レギュラートーク(20分)

AVPlayerできちんとコンテンツ保護

Ridwy なめき ちはる Ridwy

家で過ごす時間が増えた今、iPadなどで動画コンテンツを楽しむ機会が増えた方も多いのではないでしょうか。
コンテンツ保護はクリエイターや作品を守るのにとても重要なものです。Appleのプラットフォームで動画を再生するクラスであるAVPlayerは、かつてのQuickTime APIを置き換える形で登場し、以降現在に至るまで機能の充実、拡張、ブラッシュアップが続けられ、時代とともに高品質化する動画形式をサポートし、時にはHLSのように自ら仕様を牽引しながら成長を続けてきました。コンテンツ保護機能についても例外ではなく、WWDC15でDRMとして紹介されたFairPlay streamingを扱うAPIは今や成熟し、昨今の高品質な作品を楽しめる世界の実現に一役買っています。

このトークではAVPlayerの持つコンテンツ保護の仕組みについて幅広く解説します。一言でコンテンツ保護と言っても、トピックは再生や配信だけでなく、ダウンロードやAirPlayなどさまざまです。普段から利用することはない方が大半だと思いますが、いつも楽しんでいる動画を支える技術について「へ〜、そうやって動いているのか」と感じていただき、知識のストックとして役立てていただければ幸いです。

他イベントOK レギュラートーク(20分)

詳解xcresult

alligator_tama 玉城信悟 alligator_tama

xcresultとはXcode11で採用された新しいResult Bundleのフォーマットです。
ユニットテストのコードカバレッジのレポートを作成するためにxccovなどのツールを使った事がある方はxcresultファイルを目にした事があるかもしれません、あるいはfastlane scanなどを使ってテストレポートを得ていた場合などはxcresultファイルの存在を意識することもなかったのではないでしょうか?

このトークでは柔軟にxcresultを活用する事例としてUIテストの実行結果とテスト管理ツールの連携を例に挙げながらxcresultについて理解を深めていく予定です。普段カバレッジレポートやXcode上で見ているテストの実行結果たち、それらをどのように取り出す事ができるのか?xcresultについてあなたが普段あまり意識した事がなかったのであれば、この機会に聞いてみたくはないですか?

5
他イベントOK LT(5分)

Mint でも Brew でもない SPM による Swift 製コマンドラインツールの管理

ry_itto 伊藤 凌也 ry_itto

みなさんは SwiftLint や SwiftGen などのコマンドラインツールの管理をどう行なっているでしょうか?
プロジェクトによっては Mint, Homebrew など、プロジェクトによってまちまちだと思います。

しかし、プロジェクトに対して依存するツールは一つでも少ない方が管理がしやすく、 CI のステップが減らせたりします。

この発表では、 Apple 公式の管理ツールである Swift Package Manager を用いて Swift 製コマンドラインツールを管理する手法を紹介します。
また、導入に当たって CI への対応が必要となることがほとんどのため、その際に良いであろう方法を紹介していきます。

1
他イベントOK レギュラートーク(40分)

Swiftのパーセントエンコードを振り返る

tamapppe Tamappe tamapppe

普段の開発でパーセントエンコードを意識したことはありましたでしょうか。
筆者はとある問題に遭遇するまでパーセントエンコードについては全然意識したことがありませんでした。
普段使わないこともあってUnicodeやパーセントエンコードには苦手意識があります。

皮肉にもパーセントエンコードが使われる場面はAPI通信のクエリパラメータ付与などの重要な機能で使われることが多いですね。
特にPOSTやPUTのメソッドでhttp通信するときにパラメータをエンコードするときに使います。
技術記事で検索するときに「CharacterSet」の単語が出てくると、理解せずに雰囲気で使用してきたことはないでしょうか。
理解せずにページに載っているコードをそのまま使用したときに限って意図していなかった不具合が起こります。

そのため、エンジニアはCharacterSetの種類や使い方について軽くでも理解するとより不具合の少ないアプリ開発ができるようになります。
本セッションでは、Swiftで使えるCharacterSetを元にしてパーセントエンコードについて一緒に復習していきます。

他イベントOK レギュラートーク(20分)

Swiftのパーセントエンコードを振り返る

tamapppe Tamappe tamapppe

普段の開発でパーセントエンコードを意識したことはありましたでしょうか。
筆者はとある問題に遭遇するまでパーセントエンコードについては全然意識したことがありませんでした。
普段使わないこともあってUnicodeやパーセントエンコードには苦手意識があります。

皮肉にもパーセントエンコードが使われる場面はAPI通信のクエリパラメータ付与などの重要な機能で使われることが多いですね。
特にPOSTやPUTのメソッドでhttp通信するときにパラメータをエンコードするときに使います。
技術記事で検索するときに「CharacterSet」の単語が出てくると、理解せずに雰囲気で使用してきたことはないでしょうか。
理解せずにページに載っているコードをそのまま使用したときに限って意図していなかった不具合が起こります。

そのため、エンジニアはCharacterSetの種類や使い方について軽くでも理解するとより不具合の少ないアプリ開発ができるようになります。
本セッションでは、Swiftで使えるCharacterSetを元にしてパーセントエンコードについて一緒に復習していきます。

1
採択 他イベントOK 2021/09/19 17:35〜 Track A LT(5分)

Kyash iOSアプリのQAの歴史

konifar konifar konifar

Kyash iOSアプリは2017年4月にリリースされてから4年が経ちました。
リリースしてから品質とどう向き合い、変化してきたかを話します。
Unitテストを書く指針を決めたり社内でBugBashを行ったり外部にQAを委託したり、思えば色々ありました。最近ではAutify for Mobileを使ってE2Eテストの自動化に取り組んだりもしています。今でも完璧にできているとは言えませんが、チームでアプリを運用する中でどういう課題に直面し何をしてきたかの実例として、シュッと共有していきます。

10
他イベントOK レギュラートーク(40分)

AVVideoCompositionCoreAnimationToolでSF映画のようなCGエフェクトをビデオに合成する

k_katsumi 岸川克己 k_katsumi

AVVideoCompositionCoreAnimationToolは古くからありますが、あまり存在が知られていないAPIです。
このAPIを使うと、CALayerのレンダリングをムービーに合成できます。

オープニングを付けたり字幕を追加するといった簡単なものから、映像と映像の切り替えにフェードイン・アウトやワイプの効果を入れたり、パーティクルをパスに合わせてアニメーションさせて光の軌跡や星が飛び散ったりするようなSF映画のようなエフェクトを簡単に映像に追加できます。

CALayerの上に表現できる映像ならおよそなんでも合成できるので高度なCGエフェクトを使った映像を、難しい画像処理などを必要とすることなく、iOSアプリのUIを作るときと同じ感覚で作れます。

この講演ではさまざまな光の軌跡のFXを指でなぞって簡単に追加できるビデオ編集アプリを実際に作成し、幻想的で迫力のあるCGエフェクトを使った映像作品を作ります。

ビデオ編集アプリ、というジャンルだけでなくビデオ映像を利用するさまざまなアプリケーションで役に立つ非常に強力なAPIです。使い方をマスターしてぜひ活用してください。

5
他イベントOK LT(5分)

iOS の OSS アプリのリードを2度やっての学び・感じたこと

ry_itto 伊藤 凌也 ry_itto

GitHub 上にはさまざまな OSS があり、日々色々な方々によってメンテナンスされています。
しかし、 iOS の観点で見ると、ライブラリ・ツールの OSS はあれどアプリ自体を OSS にしているものはなかなか見ません。

この発表では、 iOS アプリの OSS を2度やっての経験から以下の点について話します。

  • OSS iOS アプリ開発をやっての学び
  • OSS iOS アプリ開発をやって感じたこと
  • OSS iOS アプリ開発をやっての辛かったところ
1
他イベントOK LT(5分)

Xcode Previews を使って、UIKit をプレビュー表示する際の効率化

kuritatu18 久利龍義 kuritatu18

SwiftUI でなくても、Xcode Previews を使うことで、UIKit で作成した画面もプレビュー表示することが出来ます。

本LTでは、Xcode Previews を利用する際のちょっとした Tips についてについて話す予定です。

  • 複数解像度での確認
  • 画面の一部で表示するViewのプレビュー表示
  • Xcode Templates を使ったボイラープレートの生成
1
採択 他イベントOK 2021/09/19 14:50〜 Track D レギュラートーク(40分)

オフライン編集もできる複雑なデータ構造を端末間で同期するために

496_ rokuroku 496_

皆さんも開発をしていて端末間のデータ同期システムが必要になったことはありませんか。
この発表ではオフライン編集可能なテキストエディタのバックエンドとして作った、テキストファイル同期システムの設計やその構成、開発環境についてお話しします。
同期システムはiOS / Android / WebだけではなくWindowsなどのデスクトップOSへの展開も見据え、iCloudに依らない実装が必要でした。また作成するアプリの特性上、同期の仕組みをユーザーに十分説明できるように同期の仕組みを全て実装することにしました。

  • サーバー構成と開発環境(今回はAzure Functionsを中心に設計したのでその話)
  • 採用したシステムとFirestoreを使った場合の比較
  • 複雑な系において、アプリのCIにもDockerなどでサーバーを立てるメリット
  • オフライン編集を前提とした同期のためのデータベース設計のコツ(ローカル・サーバー両方)
  • iOSのファイルアプリに同期対象のファイルを露出させる方法などプラットフォーム固有の話
採択 他イベントOK 2021/09/19 17:20〜 Track A LT(5分)

アプリの終活

kuritatu18 久利龍義 kuritatu18

新機能開発を絶賛開発していてもうすぐリリース。1ヶ月後・3ヶ月後にリリースする機能も決まっている。将来に向けてリファクタリングや自動化のタスクとやりたいことがいっぱいある状況。

しかし、終わりは突然やってきます。

会社の統合によって、担当していたアプリはサービスを継続するが最終的には他のアプリに統合することに。

近い将来に終わりが見えてる状況で、長年保守開発してきて様々な思い出が詰まったアプリの終活についてこの1年間でどんなことを思い、どんな視点でどんな対応をしたかをご紹介したいと思います。

  • 進んでる開発をどうするか
  • 利用されない機能の削除
  • 保守しやすい状態を作る
他イベントOK レギュラートーク(20分)

継続的にパフォーマンス改善していくために ~ダッシュボード化のススメ~

皆さん、アプリのパフォーマンス改善に取り組めていますか?

日々の業務で追加機能、バグ修正に追われていると中々パフォーマンスを改善する意義を示すことが難しく組織内での優先度を上げることができない方々も多いのではないでしょうか?

また、パフォーマンス改善後にどれくらいのインパクトがあったのかを示すことができず、

本セッションでは

  • AppleのOrganizer、Metric Kit API
  • Firebase(Performance、Analytics、Crashlytics)
  • その他(未定)

といった、皆さんが普段から利用しているツール上に計測されているデータを改めて紹介します。

さらに、痒いところに手が届くオリジナルのダッシュボードを作成し、定量的に日々のパフォーマンス改善に取り組む方法をお話しします

1
他イベントOK LT(5分)

僕がテストを書く理由

ahiru___z ring ahiru___z

テストコードを実装していてよかったと思う経験、みなさんはありますか?
私はつい最近テストコードによって命拾いをした経験があります!

「テストは書いた方が良い」

いろんな所で耳にする言葉ですが果たして本当にそうでしょうか?
その必要性や有用性はよく謳われるもののテストコード実装の恩恵にあずかる経験をしたことがある人は実は非常に少ないと思います。

このLTでは実際にテストコードを書いていてよかった直近のエピソードを軸にテストコード実装の際に絶対に大切にしたいポイントをお話します。

  • どんな場所にテストを実装すべきか
  • どのような観点でテストを実装すべきか

昨年のiOSDCで発表した「テストコードが増えるとバグは減るのだろうか? - 「0% → 60.3%」で見えた世界の話」
(https://speakerdeck.com/ahiru/does-more-test-code-mean-fewer-bugs)
から1年が経ち私自身多くの知見を蓄積してきました。

その知見を5分に凝縮して多くのソフトウェアエンジニアにお届けいたします。

1