iOSDC Japan 2021 トーク一覧

採択 他イベントOK 2021/09/18 15:50〜 Track B レギュラートーク(20分)

Finder Sync Extension で Mac 向け便利ツールを作ろう

Kyomesuke Kyome Kyomesuke

デスクトップ上やファイル上で右クリックをするとコンテキストメニューが開きますよね。
そのコンテキストメニューに並ぶコマンドを選択すると、ファイルの制御や共有をしたり、特別な操作を行うことができます。

今回はそのコンテキストメニューのコマンドを自作できる Finder Sync Extension について紹介したいと思います。
具体的な実装例の説明を踏まえながら、便利ツールの作り方を学びましょう!
・Finder Sync Extension でできること
・常駐型アプリの作り方
・Finder Sync Extension の実装
・Finder Sync Extension のデバッグ方法

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

Swift言語の機能で作るHTMLBuilder

coffeegyunyu 日向強 coffeegyunyu

Swiftはバージョンアップのたびに、様々な機能が追加されるのも魅力です。
そんなSwiftの機能を、HTMLをお手軽に作成するHTMLビルダーを例にしてご紹介するセッションになります。

Swiftの言語機能を活かして、ちょっと実装をするだけでHTMLが出力できるようになります。

html.children {
    head.children {
        meta(charset: "UTF-8")
        meta(name: "description", content: "Free Web tutorials")
        meta(name: "keywords", content: "HTML, CSS, JavaScript")
        meta(name: "author", content: "John Doe")
    }
    body.children {
        p.children {
            "All meta information goes inside the head section."
        }
    }
}

このセッションでは、以下の機能を使って、HTMLBuilderを作り、そのそれぞれの機能をご紹介できればと思います。

  • @dynamicMemberLookup
  • @dynamicCallable
  • @resultBuilder
2
他イベントOK LT(5分)

少人数チームだって開発環境改善したい!コスパの良かった改善項目

Ni5_21maimai Matsui Mai Ni5_21maimai

iOSDCをはじめとした勉強会で開発環境の改善の話を聞いて、自分のプロダクトでも導入したいと思いつつも様々な理由で手をつけられない方もいるのではないでしょうか?
弊社でも環境改善をしたいと思いつつ、以下の理由でなかなか着手できない状況でした。

  • 少人数チームのため開発環境を改善する人を作れない
  • ひっきりなしに次の施策の開発がくる、要件定義〜QAまで自分たちで対応のためタスクがカツカツ

それでも自分たちの作業で時間のかかっていた部分を少しずつ改善し、そのおかげで新規機能の開発と開発環境の改善を並行して進めることができています。
そこで本トークでは同じような悩みを持っている方に向けて、自身の経験からコスパの良かった(工数をかけずに大きな効果を得た)改善事項をご紹介します。
トーク内容は以下の予定です。

  • 地味に時間のかかるファイル作成はファイルテンプレートを使うと一瞬!
  • Testflightは意外に時間がかかる...もっと楽に配信したい!
  • CI/CDサービスはテストを実行する以外にも活用方法がある!
  • どのようにして改善の時間をを作ったのか?
1
他イベントOK LT(5分)

明日からドヤれる豆知識:async/awaitの先頭のaは発音が違う!?

lovee 星野恵瑠 lovee

Swift 5.5でようやく導入されたasync/await機能。偶然なのか、二つの単語ともaで始まりますね。

「そりゃあ同じ目的のためのペアとなる機能だから、同じa-の接頭辞になるのは何の不思議もない」と思っていませんか?

「アシンク/アウェイト」と発音していませんか?

実は違うんです!asyncの先頭のaと、awaitの先頭のaは実は全然違う接頭辞です!発音も違うんです!!

この発表は、そのasync/awaitのa-接頭辞にまつわる楽しいお話をしていきますズイ₍₍(ง˘ω˘)ว⁾⁾ズイ

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

SwiftUIとDirect Manipulation

el_metal_ elmetal el_metal_

SwiftUIが発表されてから2年が経ちました。
XcodeにはSwiftUI発表当初からデザインツールが同梱されており、デザインキャンパスとエディタ内のソースコードが完全にリンクしています。
iOS Human Interface GuidelinesにはDirect ManipulationがDesign Principlesの一つとして挙げられており、デザインキャンパスの例はMacOSのアプリケーションではあるものの、Direct Manipulationを最も反映したものの一つと捉えています。
Direct Manipulationは学習の上でも重要で、コードとデザインキャンパスが直接繋がっていることはディベロッパーにとってSwiftUIを学ぶ際の大きな助けになっています。
SwiftUIの宣言型シンタックス、SwiftUI デザインツールを通してDirect Manipulationを実現したアプリケーションについて考察します。

3
採択 他イベントOK 2021/09/18 17:20〜 Track A LT(5分)

iOS 15以降のNotificationのあり方について考える

haseken_dev haseken haseken_dev

みなさま、notificationは利用されていますでしょうか。
私もappで提供する機能の一部として動作させる、マーケティングで活用するなど、様々な用途で利用してきました。

一方で、必要ないタイミングで通知した、あるユーザーにとって不要な情報を配信してしまったなど、
意図せずユーザー満足度を下げてしまうこともあったかと思います。

そんな中、WWDC21にて多くの新機能が発表されました。
集中モードやNotification summaryでnotificationの受け取るタイミングなどをユーザー自身が制御可能となり、
Interruption Levelにより、配信時の挙動がより細かく定義されました。

これにより、これまでの配信内容を見直す必要性が出てきており、
今までと同様では期待する効果を得るどころか、
ネガティブな印象を与えてしまい、appがアンインストールされるなどの可能性も出てくるかと思います。

本LTでは、新機能をおさらいしつつ、今後どのような影響が考えられるか、
またiOS 15以降のnotificationのあり方についてこれまで通知してきた内容を基に考察していきます。

[想定する方々]
・notificationをマーケティングなどで利用している方々

[ゴール]
・次の日からすぐにiOS 15リリース後のnotificationについて検討が行える

[アジェンダ](検討中)
・これまでのnotificationについて
・WWDC21で追加された新機能
  ・Notification summary
  ・集中モード
  ・Interruption Level
・iOS 15リリース後に想定される影響について
・iOS 15リリース以降のnotificationの内容について考察

採択 他イベントOK 2021/09/18 13:30〜 Track B レギュラートーク(20分)

Appleプライバシー保護の最新事情と適応戦略

iKichiemon Terasaka iKichiemon

> At Apple, we believe that privacy is a fundamental human right.
(WWDC 2021 Apple’s privacy pillars in focus より)

プライバシーは基本的人権であると、Appleは明言します。

WWDC 2021の中でもプライバシーに関わるアップデートやセッションがありました。
昨年は App Storeにおける「プライバシー表示」が開始され、iOS14.5から開始されたATT(App Tracking Transparency)は、現在進行形で巷を騒がせています。

このように年々重要性が高まっているプライバシー保護ですが、私たちアプリ開発者は一体何を行えばよいのでしょうか。
また、数ある制約の中でどのようなユーザー情報を活用していけるのでしょうか。

幸いにも、私たちはAppleというプラットフォーム上で生きています。
そこには多くの制約がありますが、裏を返せば、私たちはその制約によってユーザーのプライバシーを侵害してしまうリスクから守られています。

ユーザーの利益を損なわないために、また、私たち自身を守るためにも、まずはAppleが示すプライバシー保護について学びましょう。

本トークでは、アプリ開発に関わるプライバシー保護についてお話します。
WWDC 2021 にて発表された最新情報に触れつつ、Appleが重要視するプライバシー保護の4本柱について説明します。
そして、私たちアプリ開発者が対応しておくべき事項を紹介した上で、変化していく環境にどのように適応していくか、について考えます。

他イベントOK LT(5分)

iOSエンジニアのための競技プログラミング(AtCoder)入門

koher Yuta Koshizawa koher

最近、競技プログラミング(競プロ)がますます流行っています。競プロの成績でエンジニアを採用した・されたという話を聞くことも多いのではないでしょうか。しかし、iOSエンジニアの間ではまだまだ普及しているとは言えません。

競プロがちょっと気になってるけど、よくわからなくて第一歩を踏み出せない、そんなあなたにこのトークを贈ります。

競技プログラミングって、AtCoderって何?具体的にどんなことをやるの?どんな仕組みになってるの?どうすれば始められるの?そんな疑問に5分間で答えます。

さあ、Swiftで楽しい競プロライフを始めましょう!

5
採択 他イベントOK 2021/09/17 17:30〜 Track A レギュラートーク(40分)

大規模リファクタリングの極意

Yosuke Imairi

事業の成長とともにアプリに求められる機能は日々拡張され、その実装は複雑化していきます。サービス拡大に伴いアプリ開発に関わるエンジニアの数も増え、当初の設計や実装では今後の開発・運用に支障をきたすケースもあります。そうした場合、リアーキテクチャなど大規模なリファクタリングによる設計変更が必要となります。

このトークでは、JapanTaxi と GO アプリにおける二度のリアーキテクチャの経験から得られた知見を話します。

・なぜリアーキテクチャを行う必要があったのか
・案件開発と並行して大規模なリファクタリングをどのように進めたのか
・リファクタリングに向けた 2ヶ月におよぶ下準備について
・機械的な作業を自動化し、リファクタリング自体に集中する仕組みの構築
・リファクタリング時のコーディング Tips
・リリースに向けた取り組み

採択 他イベントOK 2021/09/18 11:30〜 Track C レギュラートーク(40分)

機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話

aomathwift あおい aomathwift

開発規模の大きなアプリは、得てしてビルド時間が長くなってしまいがちです。 ビルド時間を改善する手法の1つとして、アプリを複数のモジュールで構成することで部分ビルドを可能にする「マルチモジュール化」を進めているプロジェクトも増えています。

一口にマルチモジュール化といっても様々な分離の仕方がありますが、1機能に関連するいくつかの画面を1つのモジュールとして切り出すことで、その分けられた機能毎に単体ビルドが可能になります。 このモジュールを単体でアプリケーションとして利用できるようにしたのが、開発時の動作確認用のミニアプリです。

これにより、開発途中の画面を確認するのにアプリ全体をビルドする必要がなくなり、動作確認の効率が大いに改善されました。
本セッションでは、このミニアプリの構築にまつわる以下のようなトピックについてお話します。

・単体起動可能なモジュール構成とは
・ミニアプリそのものの仕組みと導入のメリット
・チーム全体で利用してもらうための工夫
・より使いやすい仕組みを目指した諸改善

このトークを聞いて、あなたのプロジェクトでもプレビューサイクルを爆速に改善してみませんか?

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

品質と速度をブーストさせるSwiftUIによるデザインシステムの具体化

_chocoyama Takuya Yokoyama _chocoyama

私たちのチームでは、「デザイン品質の担保」「開発の効率化」「ブランドイメージの確立」などいくつかの目的から、独自のデザインシステムがデザイナーを中心に設計されています。

今年6月にリリースした新規POSレジアプリ「STORES レジ」は、フルSwiftUIで実装した新規アプリであり、上記のデザインシステムを適用した上でリリースを行いました。

本トークでは、このアプリの開発工程において、具体的にどうデザインシステムをプロダクトに落とし込んだのか。
そして、それがどういった影響を及ぼしたのかを実例を交えて紹介します。

コンテンツ

  • デザインシステムを適用したUIコンポーネント作成の実例
  • SwiftUIならではのアドバンテージ
  • UIパーツ汎用化による効果

聞き手の想定

  • デザインシステム導入のメリットを知りたい人
  • SwiftUIでのUIパーツ汎用化の実例を知りたい人
  • これからSwiftUIで効率的なUI設計をしていきたい方
1
採択 他イベントOK 2021/09/19 14:10〜 Track B レギュラートーク(20分)

SwiftUI+GraphQLで新規プロダクトの継続的破壊(Continuous Destruction)に立ち向かう

_chocoyama Takuya Yokoyama _chocoyama

私たちのチームは、SwiftUIで実装したPOSレジアプリ「STORES レジ」を今年6月にローンチしました。

「SwiftUIは破壊と再構築を繰り返すプロダクトに強い」
これは、リリースまで1年以上何度もプロトタイプのUIを刷新し続けてきた今だからこそ実感する、SwiftUIの大きなアドバンテージの1つです。

また、モバイルアプリはUIデザインだけでなく、外部要因により変更を余儀なくされる部分が多数存在します。
本トークではこういった課題に対して、主にSwiftUIやGraphQLが「変更」に対してどう効果的に働いてきたのかを、実例を交えて紹介します。

コンテンツ

  • 連続する大規模リニューアルをSwiftUIでどう対応できたか
  • UI実装を効率化するコンポーネント化の実例
  • GraphQL関連タスクの自動化による、変更検知やコードジェネレートの実例
  • もしUIKitをメインで使っていた場合どうなっていたか

聞き手の想定

  • SwiftUI, GraphQLを用いた新規プロダクト開発の実例を知りたい方
  • SwiftUIアプリを長期で運用した経験がない方
  • これからSwiftUIで効率的なUI設計をしていきたい方
他イベントOK LT(5分)

Flutterの"Add-to-app"を用いたiOSアプリの運用をしてみての所感

ushisantoasobu 佐藤俊輔 ushisantoasobu

「FlutterでiOS/Androidアプリを開発しています」
「KMMでiOS/Androidのロジック部分を共通化してます」
など、マルチプラットフォーム開発の話を聞く機会も増えてきたように思えますが、「iOS(Android)の一部の画面をFlutterで実装」することができるFlutterの"Add-to-app"という機能を聞いたことがある方はまだそう多くないのではないでしょうか。

現在自分が開発しているプロジェクトではこのFlutterの"Add-to-app"が一部の画面で利用されており、自分はそのメンテナンスをしていたりして、そのpros/consもなんとなく見えてきたと思っています。なので、

  • Flutterの"Add-to-app"とは?
  • iOS開発者(自分)からみた、"Add-to-app"を用いたiOSアプリの運用をしてみての所感

を話せたらと思っています。
(実装方法については、時間の都合上 + 自分が"Add-to-app"の組み込みを行なったわけではないということから、基本的には話さないと思います)

他イベントOK LT(5分)

知られざるTVUIKitの世界

tokorom 所友太 tokorom

おそらくみなさんにとって未知であろうTVUIKitについて紹介します。
tvOS 15で新たなクラスも加わりました。

可能なかぎり5分でTVUIKitの全クラスについて触れることを目標にします!

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

HomeKit 2021 キャッチアップ

tokorom 所友太 tokorom

5分で2021年のHomeKitをキャッチアップしましょう!

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

実践 SharePlay / Group Activities

tokorom 所友太 tokorom

iOS 15 の目玉機能であるSharePlay / Group Activitiesについて解説します。
SharePlayでできることを知っていただくところからはじめ、3種のSharePlayを実際にアプリに組み込む方法までを解説予定です。

Agenda

  • SharePlay入門
  • 実践 画面共有
  • 実践 動画共有
  • 実践 カスタム共有
採択 他イベントOK 2021/09/19 14:10〜 Track D レギュラートーク(20分)

App Extension のスタックトレース情報からクラッシュを解析/集計する

_naru_jpn 千吉良 成紀 _naru_jpn

クラッシュが発生して、原因が分からないとかなしくなりますよね。
このトークでは、配信アプリで使用している Broadcast Extension 上で発生したクラッシュの詳細について、クラッシュ発生時のスタックトレースを取得して解析し、複数のクラッシュの修正に繋げた話をしようと思います。
クラッシュが発生した際、以下のようなスタックトレースを取得することができます。

0 broadcast 0x0000000100fa8b6c broadcast + 183148
1 libsystem_platform.dylib 0x00000001f8a0a290 73F3E459-0F82-3377-A7D1-EF05CAE41C0A + 21136
2 AVFAudio 0x00000001bf5e9e18 53161832-5A1C-3C33-AF53-6816B1D1C2C5 + 441880
...

スタックトレース、クラッシュした端末のアーキテクチャの情報、対応する dSYM ファイルを組み合わせると、クラッシュが発生した箇所を詳しく調べることができます。
この集計は Command line tools for Xcode を使用するのですが、手作業では1行づつしか解析できず、処理も時間がかかります。そこで、キャッシュによる高速化や解析結果の集計のために、専用の mac アプリを SwiftUI で作成しました。
上記の取り組みにより明らかになったクラッシュ情報を用いて、発生していた3割のクラッシュを修正し、プロダクトの改善に繋げることができました。

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

storyboard信者だった私がコードでレイアウトを書くようになったワケ

re___you えんどう re___you

iOSアプリ開発をして7年、今までレイアウト実装にはstoryboard、xibが欠かせませんでした。

storyboard、xibのパーツを置いて視覚的にレイアウトが組めることができるのがとても便利です。しかし魅力的なところだけではなく、storyboard、xibのコンフリクトは解決するのが難しいこと、diffが分かりづらくレビューが難しいことなどのデメリットもあります。そんな完璧ではないところも受け入れて付き合っていました。

なぜならコードでレイアウトをするなんて大変じゃない・・・そう思っていたからです。
NSLayoutAnchorが登場したことにより、Autolayoutの設定はコードで書きやすくなりましたが、それでもレイアウトを組むだけのNSLayoutAnchorを書くのは大変です。
何よりNSLayoutAnchorの記述の羅列だけではレイアウトの想像がつかないのが一番の障壁でした。
この立ちはだかる障害に対して、Xcode PreviewsとVFLを導入することで解決しました。

今回は以下のことについてお話したいと思います。
なぜコードでレイアウトをするようになったのか
storyboard、xibからコードに変えるために導入したXcode PreviewsとVFLについて
コードで書くようになってどうなったか
実際どちらも使用して感じたstoryboard、コードのメリット・デメリット

6
採択 他イベントOK 2021/09/17 18:30〜 Track C レギュラートーク(20分)

iOSアプリ開発者がテスラを買って色々調べたりアプリを作ったりしつつまだ見ぬApple Carを想像する

kenmaz kenmaz kenmaz

巷ではApple Carが自動車業界の大変革を起こすのではと噂されていますが、そんな未来をちょっとだけ先取りして体験できるのが「テスラ」です。私はiPhoneが登場した時のような衝撃を受け、気づいた時にはテスラモデル3の購入ボタンを押していました。テスラ車にはテクノロジーに興味のある方なら誰もが興味を持つであろう機能が盛り沢山です。また、非公式ながら車体の情報を取得・操作するためのAPIや、ハードウェアの情報にアクセスするためのインターフェースが備わっていたりと、ソフトウェア開発者がテスラ車自体を拡張する余地がいくつかあります。「このAPIを使えば楽しそうなことができそうだな」とワクワクしながら考えることは、我々モバイルアプリエンジニアの最も得意とするところかと思います。このトークでは、実際にテスラを購入していじくり倒して得た知見をご紹介します。このトークを通じてテスラの面白さを知ってもらいつつ、まだ見ぬApple Car OS(?)アプリ開発の世界について色々と想像してみましょう。

アウトライン(検討中)

  • テスラモデル3自体とその先進的な機能群についての紹介
  • 非公式のTesla APIを使ったiOS/Apple Watchを開発し実際にリリースした話
  • Tesla API の詳細
  • 全ての走行データが蓄積されるのでログ好きにはたまらない話
  • Webブラウザも備えているのでなんでもありな話
  • 車載カメラに記録された動画でいろいろ遊べる話
  • Apple Carを想像する
他イベントOK レギュラートーク(20分)

Swift Packagesで自作ライブラリを作ろう

the_uhooi uhooi the_uhooi

ライブラリを自作してGitHubに公開したらカッコよくないですか?
私はカッコいいと思います。

ということでハンズオン形式でライブラリを自作していきます。
Swift Packagesを使えば swift package init を実行するだけでサッと作れます。

20分後、大量のSwift製ライブラリがこの世に誕生していることでしょう。

【アジェンダ】
・Swift Packagesによるライブラリの作成

【想定する聞き手】
・Swiftでライブラリを自作したい人
・ライブラリを自作する実績を解除したい人
・「ライブラリを自作したことがあるぜ」とドヤりたい人

【ゴール】
・Swift Packagesでライブラリを自作できる

4