採択
2020/09/20 16:20〜
Track A
LT(5分)

Catalystに対応したアプリをリリースするまでのリジェクト集

fromkk かっくん

WWDC 2018でmacOS Mojaveの一部のアプリケーションにUIKitをmacOSに対応したアプリケーションが搭載されることが発表されました。
さらに、翌年のWWDC 2019にてその機能が開発者向けに「Project Catalyst」として公開されました。
しかし、既存のiOSアプリをCatalyst化してリリースしようとすると立ちはだかる難関があります。
それはiOSアプリをリリースする時と同様の審査です。
本トークでは既にiOSではリリース済みのアプリをCatalyst化してリリースしようと審査に提出した際にリジェクトされた事例とその対応をご紹介します。

7
採択
2020/09/20 16:25〜
Track A
LT(5分)

In App Purchaseのこれからの在り方を考える

redryerye Yuki Yamamoto

6月にメールアプリHeyのアップデートをリジェクトしたApp Storeの審査についてアメリカのBasecamp社が公開した文書は多くのアプリ制作者が抱える「アップル税」の悩みを凝縮したものだと言えます。
この文書はメディアに大きく取り上げられ、議論の必需性を再提起しました。

業務でIAPについて悩んだ時期とこの一連の事件がちょうど重なり、Appleのスタンスと今までの事例について根深くリサーチする機会がありました。
このトークでは以下の点を抑えながら現在アプリに求められているガイドラインをおさらいすると同時に、理想のプラットフォームの在り方について考えます。

  • 既存サービスの実例
  • 私が実装した解決方法
  • SaaSと共存するためのApp Sore Review Guidelines
8
採択
2020/09/20 16:30〜
Track A
LT(5分)

iOS Custom Keyboards でできること/できないこと/やってはいけないこと

Kyomesuke Kyome

App Extensionsの一つであり、iOSのソフトウェアキーボードを自作できるCustom Keyboardsをご存知でしょうか?
昨今、自作キーボード(物理)が流行っておりますが、ソフトウェアキーボードの自作にご興味はありませんか?

本トークでは、Human Interface Guidelinesと私の経験則から、iOSカスタムキーボード開発において実現できること・できないこと・やってはいけないことなどをさっとご紹介したいと思います。

・iOS Custom Keyboardsってどんなもの?
・デフォルトのキーボードより魅力的なところ
・今のところ実装できないこと
・HIG的にやってはいけないこと
・日本語かな漢字変換について

カスタムソフトウェアキーボード開発コミュニティーの発展を願って...

18
採択
2020/09/20 16:35〜
Track A
LT(5分)

DroidKaigiの公式アプリで始めるiOSアプリのOSSコミッターへの道

entaku_0818 遠藤拓弥

開発者にとって、多くの開発者と同じプロダクト/リポジトリで開発することは特別なことではありません。
iOSアプリ開発者にとっても例外ではありません。
しかし、突然OSSにコントリビュートすることは勇気がいることだと思います。
今回のLTでは私がOSSにコントリビュートした時の経験を通して複数人で開発する楽しさ難しさを通じて学んだことを共有することで、みなさんのOSSコミッターへの一歩に貢献できればと思います。

  • 実装するissueの選び方
  • GitHub上でのコミュニケーション
  • 実装方法
  • コミットメントの範囲
  • Pull Requestの出し方
  • まとめ
11
採択
2020/09/20 16:40〜
Track A
LT(5分)

Apple Pencilと左利き対応

_kwzr_ ああうえ

普通のアプリ開発では利用者の利き手を意識することなく、UIを設計していくことが多いと思います。
しかし、時には『利き手』を強く意識したUI設計が必要なこともあります。
そう、Apple Pencilを利用したお絵かきツールです。
このトークでは、お絵かきツールのUI設計をする際に考えたことや実装例についてお話します。

5
採択
2020/09/20 17:10〜
Track A
LT(5分)

ダークモード対応とAutoLayoutアニメーションと私

Abebe
このトークはスピーカー都合でキャンセルになりました

「iOS13のダークモード対応?Asset CatalogのColor Setが使えれば、そんなに手間掛からないでしょ。
…………そんなふうに考えていた時期が俺にもありました。」
しかし、私が仕事で関わったアプリには1つ落とし穴がありました。
それは入力状態の変化に沿って動くUIアニメーションをAutoLayoutで制御していた事です。

このLTでは

  • AutoLayoutアニメーションとダークモードが組み合わさると何が落とし穴なのか
  • 実際の対応方法(traitCollectionDidChangeやupdateViewConstraintsを用いて制約を再設定)
    を簡単なサンプルアプリを交えて共有できればと思います。
13
採択
2020/09/20 17:15〜
Track A
LT(5分)

macOS仮想カメラ「テロップカム」実装方法とその先

shmdevelop 服部 智

Zoomをはじめとしたオンラインミーティングが活用されています。
そこで映像に様々なエフェクトを掛けるアプリを使っている方もいるのではないでしょうか。

エンジニアならば当然自作したいですよね!

macOSで仮想カメラアプリ「テロップカム」を実装しそれがインターネット放送で使用されました。

皆が面白い仮想カメラ作り出すきっかけとなる情報を共有するとと共に
さらに拡張可能な分野について熱く語ります。

6
採択
2020/09/20 17:20〜
Track A
LT(5分)

文字列をコピーできるスクリーンショットを作る

えんどう

iOS 13からSafariなどでPDF形式でフルページのスクリーンショットができるようになりました。PDF形式のためスクリーンショットに写っている文字列もコピーすることができとても便利な機能です。
この機能はUIScreenshotServiceのdelegateを追加しスクリーンショットのPDFデータを作成し渡すことで各アプリも対応することができます。
しかし、viewやwindowのlayerをrenderしてPDFを作るとビットマップ化されたデータをPDFにするために文字列をコピーすることができません。
今回は文字列をコピーできるPDFを作るにはどうすればいいかについて話したいと思います。

採択
2020/09/20 17:25〜
Track A
LT(5分)

あなたのアプリ、✨リブランディング✨できますか?

monoqlo monoqlo

リブランディング。

良い響きですね。
時代の流れにあったデザインへのアップデート、ブランド価値向上、ブランドの再定義、などなど、目的は様々ですが、様々なアプリがリブランディングする様子を我々は目にしてきました。

これは、とあるアプリが通ったリブランディングを伴う複数回に及ぶリニューアルのお話。

「色をほとんど全部変えたいんですが…」
「画像もほとんど全部差し替えたいんですが…(サイズも変わるかも…)」
「UIもこんな感じに変更したいんですが…」

想像してください。

目の前には、リブランディングなんて全く想定しておらず無邪気につくられた150以上のStoryboardやxib。
ひとつひとつカスタム色として手動設定された温かみのある色の数々。
Asset Catalogで色管理していたとしても、一括で色置換してくれないXcodeセンパイ。

なぜか重複している画像たち。
余白の違いやサイズ違いで複数管理されている同じような画像の数々。
Asset Catalogで画像管理していたとしても、名前を変更したらもちろん一括で置換してくれないXcodeセンパイ。

このトークでは、どんな工夫をして立ち向かい、どんな点を諦めたのか、そしてどんな結果が得られたのかお話します。

リブランディングに耐えられるアプリをつくりたい方、
これからリブランディングを控えているのに同じような状況で頭を抱えている方、
ぜひお聞きください。

採択
2020/09/20 17:30〜
Track A
LT(5分)

iOSアプリを譲渡!?失敗は許されない一発勝負!予想外に立ち塞がる様々な罠に挑んだストーリー🙌

koooootake じんむ

iOSアプリを譲渡した経験ありますか?

この物語は、ひとりのiOSエンジニアが絶対に失敗が許されない状況下で、
アプリの開発アカウントを切り替えるアプリの譲渡に挑んだ経験を語ったものです。

いつかはあなたも取り組む時が来るかもしれないアプリの譲渡、
その予想外な罠と解決方法、リアルタイムに起きたAppleからの譲渡条件変更の通知、
譲渡先の法人アカウント設立の小話など、楽しく語りたいと思います🤤

採択
2020/09/21 16:20〜
Track A
LT(5分)

本当はこわいLLDB

po_miyasaka みやし

LLDBはアプリ開発時に使うデバッガーツールですが、
Mac用のアプリであれば自ら作成したアプリでなくともアタッチすることができ、
場合によってはアプリのさまざまな情報にアクセスすることができます。

アプリがデバッガーに対し無防備すぎると意図しない情報などにアクセスされるかもしれません。

この発表では、LLDBでMac用アプリのどのような情報にアクセスできるのか、
またこれを防ぐ方法があるのかを考察します。

採択
2020/09/21 16:25〜
Track A
LT(5分)

iOS 13における Siri Shortcuts 最小実装+α

m_yamada0617 明渡麻衣花

iOS 13から、より自由度の高いSiri Shortcutsの実装ができるようになったことはご存知のかたが多いはず。
WWDC 2019の動画やサンプルコードで実装の仕方も丁寧に解説されております。

それらを眺めまして、「ここまで大それた実装をしてまでSiri越しの操作を受け入れたい機能、そこまで多くないのでは...?」と思いました。
ユーザーが繰り返しよく使う画面を表示した状態でアプリを起動するというコマンドの対応をするだけでも、十分に利便性の向上を見込めるはず。

そこで、Siri Shortcutsにおいて"特定の画面を開いた状態でアプリを起動する"というコマンドの対応方法に絞って、以下について紹介します。

  • NSUserActivityを用いて、ショートカットアプリからコマンドを実行できるようにする最小実装
  • 最小実装を踏まえつつ、SpotlightのSiriからの提案にてコマンドを表示させる
  • 最小実装を踏まえつつ、コマンドを簡単に登録できるAdd to Siriボタンをアプリ内に配置する
  • Add to Siriボタンを配置してもよい画面、配置しないほうがよい画面の考察
採択
2020/09/21 16:30〜
Track A
LT(5分)

xcrun Essentials

yutailang0119 Yutaro Muta

xcrunはCommand Line Tools Packageに付属していて、コマンドラインからXcode内の任意のツールを検索、実行できます。コマンドを入力したことがないあなたも、普段使っているツールの中で気づかない内に使っているかもしれません。
検索上位には "xcrun: error:" の声ばかりのxcrunですが、使い方を覚えると痒いところに手が届き、開発効率が上がるはずです。

実際に私が遭遇した課題とxcrunによる解決事例を紹介することで、参加者が新たな利用場面を発見できるような話をします。

対象者:

  • iOSアプリ開発の中級者にステップアップしたい方
  • 一歩進んだCI環境に興味がある方
  • コマンドラインでの操作が好きな方
採択
2020/09/21 16:35〜
Track A
LT(5分)

Swiftで分かるSOLID原則

k_koheyi 川口 航平

突然ですが,よく分からない専門用語ってすごくかっこよく聞こえますよね.
相対性理論,粉塵爆発,エラトステネスの篩...そして,SOLID原則.
このSOLID原則という言葉を初めて聞いた大学生の頃,何故かこの言葉に強く惹かれました.
それは,当時無秩序にコードを書いてはバグを量産していた自分の開発スタイルを払拭する光を,この原則から感じたのかもしれません...

実際に,SOLID原則に従った設計・コードは理解しやすく,かつメンテナンスしやすいと言われています.
例えば,Open Closed Principleに従った設計になっていると,あるクラスへの変更の影響はそのクラス内だけで閉じるようになっているため,何もしていないのに壊れた(汗)という事が起きにくいです.
なぜならば,原則に従うとあるクラスが壊れる要因となる変更はそのクラスに対する変更以外ではあり得ない設計となっているからです.
これはほんの一例ですが,このような恩恵があるため,SOLID原則を意識してソフトウェア開発を行うことは,常にコードに修正を加え続ける開発者にとって有益です.

しかし,当然ですがSOLID原則はiOS開発だけで用いられる概念ではありません.
より広くソフトウェア開発全般で用いらている概念です.
そのため,SOLID原則を説明する文書には,例題としてモバイル開発的なコードが取り上げられることは少なく,iOS開発者にとってその原則の活用方法がイメージしにくい課題があると思っています.

そこで,このトークでは学生だった自分にSOLID原則を教えるならどうするか?という視点で,iOS開発に関わるOSSや独自のコードを用いてSOLID原則を紹介します.このトークは,SOLID原則を知らない人やSOLIDそれぞれが何を指しているかうろ覚えな人等を対象としています.

18
採択
2020/09/21 16:40〜
Track A
LT(5分)

SwiftUIとFlutter

tamapppe tamappe

今年のWWDCでiOS14からSwiftUIがパワーアップしてListだけでなくGridも追加されました。
ListとGridの概念は既にGoogle製クロスプラットフォームのFlutterのウィジェットに
存在していますのでよりFlutterに近づいてきたなという印象です。

実はSwiftUIの知見があればスムーズにFlutterに移行でき、
またFlutterでの開発経験があればSwiftUIに移行するコストも少ないです。
私はどちらかといえば、FlutterがiOSアプリエンジニアにもっと普及すればいいのにと思っています。

本セッションではサンプルアプリをSwiftUIとFlutterの両方で開発してみて、
SwiftUIとFlutterそれぞれの書き方を検証したいと思います。

それとともにFlutterの学習ロードマップを紹介しようと思います。

聞いてほしい対象者

  • SwiftUIにそろそろ本腰を入れようと人
  • SwiftUIの知識でFlutterの学習コストを減らしたいと思っている人
  • Flutterでのアプリ開発に興味がある人
11
採択
2020/09/21 17:10〜
Track A
LT(5分)

100人以上の中高大学生にiOSアプリ開発を教えていて感じたこと

tosh_3 とし

皆さんは、新卒が入ってきたタイミングでメンターになったり、いわゆる初心者の人にプログラミングを教えることはあるのではないでしょうか?

誰だって、初めはプログラミングに不慣れな初心者だったはずです。今回は、私が大学生時代に、100人以上の中高大学生にiOSアプリ開発を教え、多くのアプリのリリースをサポートしてきた経験から学んだことを紹介していこうと思います。

【トークプラン】

  • プログラミング初心者にプログラミングを教える上で、注意するべきこと
  • やってみてうまく行ったこと
  • やってみてあまりうまくいかなかったこと
  • 妥協をしてはいけない点
  • どの様なアプリリリースの手助けが有効なのか
採択
2020/09/21 17:15〜
Track A
LT(5分)

Feature Flagを適切に分類することでA/Bテストの運用コストを下げる

nonchalant0303 Takeshi Ihara

主にコンテンツを提供するアプリの開発に携わっていると、新機能をリリースしてKPIが改善した際に、コンテンツによる影響なのか新機能による影響なのか区別が困難という問題があります。
そこで一般的によく用いられている手法として、A/Bテストと呼ばれる手法があります。
自分が開発に携わっているサービスのA/Bテストは、新機能の表示の切り替えでKPIの変化を検証しています。
その表示の切り替えを管理するのが、Feature FlagやFeature Toggleと呼ばれる機能の有効・無効をコード上で切り替えるテクニックです。

A/Bテストの実施数が増えるに従って、Feature Flagの数も増えていきます。
これにより、A/Bテストを未実施、実施中、検証済みなどのFeature Flagのステータスを管理するコストが増加していきます。
ステータスを正常に管理しないと、未実施のFeature Flagが本番に露出されたり、検証済みのFeature Flagのコード上での削除漏れという問題が発生します。

そこで、検証範囲や検証期間に合わせて、Feature FlagをRelease、Ops、Permission、Experimentという4分類で管理するようにしました。
これにより、それぞれのFeature Flagの役割が明確になり、また分類に合わせて挙動を変更することで、Feature Flagの管理コストを削減することができます。
今回のトークでは、実際のサービスでのFeature Flagの分類に従った運用方針を紹介します。

13
採択
2020/09/21 17:20〜
Track A
LT(5分)

CryptoKitとCoreBluetoothを利用したスマートキー開発

saiten saiten

WWDC20ではAppleからCarKeyが発表され、iOSの標準機能としてiPhoneをクルマの鍵として利用できるようになりました。とはいえ、CarKeyは現在BMWの最新機種でしか利用することができません。

CarKeyを利用しなくてもiOS13から追加されたCryptoKitを利用すると様々な暗号アルゴリズムを簡単に利用することができ、CoreBluetoothと組み合わせることで簡単にiPhoneを利用したスマートキーシステムを実現することができます。

このトークでは、リモコンキーすらない古いクルマにArduinoとiPhoneを利用したスマートキーシステムを構築する過程で得た様々な知見を共有します。

採択
2020/09/21 17:25〜
Track A
LT(5分)

Apple Low-Latency HLSを使った超低遅延配信について

s_urabe meteor

AppleがWWDC 2019で発表したLow-Latency HLSは、2秒未満の遅延を実現することができます。
しかし、Apple Low-Lantecy HLSはとても複雑で、現時点で採用している製品はあまり多くありません。
今回はApple Low-Latency HLSが既存のLow-Latency HLSとの違いや内部の仕組みや、AVPlayerで再生する場合にどうすればいいのか、既存の製品や新しく配信サーバを構築するときにどういったことに気をつけていけばよいのかについて解説していきます。

採択
2020/09/21 17:30〜
Track A
LT(5分)

着信時氏名表示させたいエンジニア vs 簡単には着信時氏名表示できない電話番号 (iOS13対応版)

kotetu 栗山 徹

Call Directory Extensionをご存知でしょうか?ざっくり言うと、CallKitが提供する機能の一つで、電話番号と表示内容のペアを予めiOSに登録しておくことで、着信時に登録した内容を画面に表示させることができ、なおかつ着信履歴にも表示内容が登録されるという機能です。この機能を利用して、登録した名刺や同僚の氏名や部署/役職が着信時に表示できるようにしたところ、お陰さまでリリース以来ご好評いただいております。

そんな着信時氏名表示機能ですが、開発初期において、一部の電話番号について着信時に登録した内容が表示できない現象に悩まされました。

本セッションでは、どういった番号が簡単に着信時表示できないのかをご紹介するとともに、Speakerboxという、かつて公開されていたサンプルアプリを使って検証を行った際の苦闘の記録、さらにはiOS13以降で注意すべき点についてもご紹介します。