iOSDC Japan 2020 プロポーザル一覧

他イベントOK LT(5分)

YAML自動生成機能を使ってXcodeGenへ移行してみた

sshayashi sshayashi0208
XcodeGenはXcodeのプロジェクトファイルをYAMLから生成するツールです。XcodeGenを導入することで、プロジェクトファイルが頻繁に起こすコンフクリクトを避けられたり、ターゲットの追加が容易になるなどのメリットがあります。

通常、XcodeGenへ移行するには既存のプロジェクトファイルを参考にYAMLを一から作成する必要がありますが、このXcodeGenにはプロジェクトファイルからYAMLを自動生成する機能(以下、Migration機能)が開発中(まだmasterにマージされていない)ながら存在しています。そのため、このMigration機能を用いることで簡単にXcodeGen管理へ移行できます。

しかしながら、現在のMigration機能は複雑なプロジェクトファイルのYAMLを自動生成することができません。所々YAMLを手で修正する必要があります。

我々は、Migration機能を使ってリクルートライフスタイル社のホットペッパービューティをXcodeGen管理に移行しました。本セッションでは、移行する中で直面した不具合とその対応について報告します。
2
他イベントOK レギュラートーク(20分)

iOSリジェクト戦記 ~リジェクトされないための課金ページ~

HiromuTsuruta hcrane14
20xx年。

アプリ戦乱の時代。
各地では多くの戦い(申請)が行われていた。

戦果を上げる(申請が通る)ものもいれば、
負けて帰ってくる(リジェクトされる)ものもいた。

特にサブスクリプション地域(課金実装)では、
相手(Apple)との戦闘(やり取り)が激化しており、
兵士(エンジニア)はみな疲弊していたのだった。。。

これはそんな戦いを描いた1つの物語(アプリ審査過程の話)である。

______________

課金ページの実装を専属で担当し、課金ページのレイアウト改変やA/Bテストを頻繁に行った結果、毎月のようにAppleからのリジェクトを経験しました。
メッセージで多くのやりとりを行ない、一般的には公開されていないような課金ページの細かなアンチパターンが蓄積してきたので、紹介していきたいと思います。
9
他イベントOK レギュラートーク(20分)

UI実装が好きなiOSエンジニアがひょんな事からAndroidアプリのキャッチアップを進めた際の振り返りと知見録

fumiyasac fumiyasac
私はこれまでiOSアプリでの開発業務に4年程に携わる機会はありましたが、Android開発に関する経験はほとんどありませんでした。
新しい分野への挑戦を決めた直後には「本当に大丈夫なのだろうか?」「これまでの経験を生かすことができるのだろうか?」と不安を抱くこともありました。
しかしながら、私にとって最初の不安をかき消すための原動力になったのは、iOSアプリ開発の中で得る事ができた知見達でした。

これまで培ったiOSでの知識をベースに類似点と相違点を比べっこしながら開発に取り組めた体験と共に、
- アーキテクチャやUI実装等の観点から足並みを揃える事によって得られる恩恵の部分
- キャッチアップをする際の最初の足掛かりとなった部分
等をはじめとした具体的な事例やアプローチを紹介しながらお話できればと思います。

追伸:
The wall will finally disappear.
壁を越えていくための些細な指針となることができれば、嬉しく思います。
3
レギュラートーク(20分)

ビデオ会議を快適にするためのマイク入門

八十嶋祐樹 yaso_san
新型コロナウィルス感染拡大防止のため、リモートワークで仕事をされる方も多くなったのではないでしょうか。私もその一人です。ZOOMなどのビデオ会議での会話の重要性は以前と比べて格段に上がっていると思います。

PCやスマートフォン本体のマイクやスピーカーを使っても大抵は支障のない会話ができますが、「ノイズが多くて聞き取りにくい」「ハウリングを起こして会話が始められない」などのトラブルもあると思います。そのようなトラブルを起こさないためには音響機器の知識が不可欠です。

「良いマイクない?」というような質問も度々問いかけられます。しかし、世の中には良いマイクも悪いマイクもないのです。使いこなし方を知らない人間がいるだけなのです。

このトークではマイクの種類による特性の違いを始め、購入する際の選び方や使いこなし方などをお話しします。

※このトークはiOSとは一切関係がありません
4
他イベントOK LT(5分)

SwiftUIを使ってTodayExtension (Widget) を作ろう

Takagi Go shimastriper
SwiftUIの登場で宣言的UIへの関心が高まっています。
しかしSwiftUIはiOS 13から利用可能なAPIであり、どのようにプロダクトへ導入していけばよいかお悩みの方も多いのではないでしょうか。
このLTでは第一歩として、SwiftUIを利用してWidget画面を生成する方法を提案いたします。
Widgetは基本的に一画面で完結し、シンプルなレイアウトで構成されるためSwiftUIの導入に最適です。
WidgetでダークモードやDynamic Typeの対応などを行い、SwiftUIによるレイアウトを実現する足がかりを紹介します。
4
他イベントOK レギュラートーク(20分)

Background Notificationで新聞紙面の大きい画像の自動ダウンロードを実現する

Takagi Go shimastriper
定期的に配信されるコンテンツがあるサービスでは、自動ダウンロードの機能がより良いユーザー体験を提供します。
ユーザーは常に安定した通信環境にいるとは限らず、大きいコンテンツの取得には通信的な負荷もかかります。
例えば、新聞紙面の画像はサイズが大きい複数枚の画像で構成されており、ダウンロードには多くの通信量や実行時間が必要となります。
あらかじめ大きいコンテンツを自動でダウンロードしておく仕組みは、ユーザーがアプリを継続的に利用するにあたり非常に重要な役割を担います。

iOSではバックグラウンドでコンテンツをダウンロードするためのAPIが複数用意されています。
しかし、バックグラウンドでタスクを動かすタイミングや時間はOSによって制御されており、ユーザーが調整できる箇所は限られています。
それぞれのAPIが抱える制約を理解し、コンテンツの性質に応じて適切な選択をしなければなりません。

本セッションでは、大きい画像コンテンツを対象にした自動ダウンロード機能について説明します。
実装の過程で直面した問題への対策やアプリやサーバーサイドを含めた全体のアーキテクチャを解説するとともに、日本経済新聞 紙面ビューアーにおける新聞紙面画像での運用事例を紹介します。
大規模サービスにおける運用を通じて得られた安定して自動ダウンロードを成功させるための課題の解決方法を説明します。
4
他イベントOK 原稿(8ページ)

UIColletionViewCompositionalLayoutによるカスタムレイアウトの実装例

Kishikawa Katsumi k_katsumi
UICollectionViewCompositionalLayoutはiOS 13から新しく導入されたAPIです。このAPIを使うと、AppStoreアプリや写真アプリのような、異なる大きさのセルが混在したり縦スクロールの途中に横スクロールが出現するような、iOS 12以前では1つのセルに複雑なサブビューを配置したり、セルの上に別のコレクションビューを組み合わせたりということが必要だった非常に難しいUIが簡単に作れるようになります。

実際に昨年のWWDCでAppleは、AppStoreアプリのUIをこのAPIを利用して書き直すことでかなりの量のコードを削減し、シンプルでメンテナンスしやすい実装にできたと話しています。

私はこのAPIが出てきたことにより、ほとんどのUIはコレクションビューで作ればよいと考えるほどに、すばらしく柔軟で拡張性のあるレイアウトシステムだと考えています。

しかし非常にシンプルで強力というAPIなので、1つのレイアウトを複数の方法で記述できますが、まだまだ情報が少ないためより良い書き方はどれかということがわからないこともあります。
さまざまなUIをシンプルに記述することができますが、不可能なことやこのAPIを使わない別のやり方の方が望ましいケースももちろんあります。

今どきのアプリで実際に使われている複雑なレイアウトを例にこのAPIを使って実装し、ベストプラクティスや逆にあまり向いていないケースはどういうことがあるか、などについて解説します。
UIColletionViewCompositionalLayoutを使用すべきときとそうでないとき、使用する場合のレイアウトごとのより良い実装をサンプルコードを通じて学びましょう。
11
他イベントOK 原稿(8ページ)

Mint🌱でBrewfileとPodfileを滅殺!

FromAtom FromAtom
iOS開発をしていると様々な "*file" を利用することになると思います。Podfile, Cartfile, Gemfile, Brewfile。様々なツールが様々な方法で導入され、setup.shが肥大化していくことでしょう。その対策の一つとしてMintを使う方法があります。MintはSwift製CUIのバージョン管理ツールです。このツールを利用することでBrewfile(そして多くの場合はPodfileも)を滅殺することができるようになります。この原稿では

- Mintを導入する流れ
- Mintを導入した時に対応に困りがちなライブラリたちとその対策
- Bitriseと組み合わせた際に困ることとその対策
- Mintを導入すれば全てがうまくいくわけではない話

などについて記述します。
1
他イベントOK 原稿(4ページ)

僕がiOSアプリ開発時に使っている便利なShell設定たち

FromAtom FromAtom
iOSアプリ開発をする際、私達の多くはXcodeを利用しています。しかし実際の開発ではXcodeだけではなく、zshやfishなどのShell上での作業も少なからず発生します。この原稿では、そんなShell上で行う作業を楽にして、アプリ開発を快適にする便利なShellの設定やShell Scriptをご紹介します。

- コマンド一発で適切なxcodeproj(もしくはxcworkspace)を開く方法
- carthageなどの時間のかかるコマンドが終わったら通知を送る方法
- GitHub上のP-Rに対して素早くチェックアウトする方法

などなど、開発を少しだけ快適にする便利なShell設定たちを導入して、快適なShell作業環境を手に入れましょう!
2
他イベントOK 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ボタンを配置してもよい画面、配置しないほうがよい画面の考察
4
他イベントOK 原稿(4ページ)

Apple CryptoKitを通じて暗号化技術に触れる

栗山 徹 kotetu
アプリ開発者視点で暗号化技術を見た場合、Keychainといった仕組みが既に用意されているため、開発者は所定の方法でデータを渡すだけで暗号化技術に詳しくなくても暗号化技術の恩恵を受けることができます。

ただ、指定した暗号化方式で特定のデータを暗号化したい場合など、開発者が能動的に暗号化処理を利用するケースが無いとは限りません。また、ライブラリなどで使っている暗号化方式の概要について問い合わせを受けるケースもあります(自分は数ヶ月前に経験しました)。

そこで、本稿では "Apple CryptoKit" という、 iOS13 / macOS Catalina 以降向けの暗号化処理用フレームワークを題材に、CryptoKitがサポートする代表的な暗号化技術について、概要や用途を簡単なコードを交えながらご紹介します。

本稿をきっかけに、暗号化技術やApple CryptoKitに対して興味をもっていただけたら幸いです。

コンテンツ(予定):

1. Apple CryptoKitと暗号化技術の概要
2. ハッシュ関数(SHA256)
3. メッセージ認証コード(HMAC)
4. 共通鍵暗号(AES)
4
他イベントOK レギュラートーク(20分)

Migrate Swift 4.2 to 5.x

ShoMasegi boc_sho
Swift 5.0がリリースされてから1年が経ちました。
去年のWWDCでSwift UI, Combineと共にSwift 5.1がリリースされ、今では5.3までリリースされています。(2020/06/22)

・Result
・Ordered Collection Diffing
・Opaque return types
・Property Wrapper
・.....
数多くの便利な機能が追加されていますが、Swift 4.2以降の機能を使っている方は少ないのではないでしょうか?
私もSwift UI, Combineで使用している以外では十分に使いこなせていないと感じています。

そこで今回のセッションでは、Swift 4.2以降にリリースされた機能を一から見直し、
日常使い出来るよう、ユースケース毎に紹介していきたいと思います。

[Target]
・Swift 5.xの機能を使いこなしている自身が無い方
・Swift 5.xでリリースされた機能を振り返りたい方

[Goal]
・Swift 5.xの機能を一つでも日々の業務に持ち帰れる状態
他イベントOK レギュラートーク(20分)

Apple pencil対応の勘所を話します

Shetomi 0si43
Apple pencil、活用できてますか?

Apple pencilは、2015年末にiPad Proとともに発売され、2018年末には第二世代が発売されました。長らくApple純正アプリ以外は対応に苦慮してきたと思われますが、WWDC2019でPencilKitが発表されたことにより、簡単にApple pencil対応が可能になりました。

ライブラリ自体は使いやすいものですが、具体的なノウハウについては情報が少なくて、実際につくってみると試行錯誤することになりました。そこで本トークで、開発ノウハウを共有したいと思います。

このトークでは、PencilKitを利用したノートアプリ(「Like a Paper」)を個人開発した経験から、Apple pencil対応の勘所を話します。具体的には、PencilKitでできること/できないこと、 `PKDrawing` から `UIImage` への変換、ダークモード対応の罠、 `PKToolPicker` のカスタマイズなどを扱います。
2
他イベントOK 原稿(4ページ)

UI とモデルとのバインディングを行うためのリアクティブプログラミング

宇佐見 公輔 usamik26
Swift でリアクティブプログラミングのフレームワークを使う動機のひとつは、UI とモデルとのバインディングにあると考えています。これは、フレームワークとして Combine / ReactiveSwift / RxSwift のどれを使う場合でも同じことであろうと思います。

この記事では、これらのフレームワークを使って具体的にどのようにバインディングを行うのかを整理してまとめたいと思います。また、うまくバインディングを行うための Tips 情報も紹介します。
3
他イベントOK 原稿(4ページ)

iPad の Split View や Multiple Windows に対応するための考慮すべきサイズ一覧

宇佐見 公輔 usamik26
iPad アプリの開発では、Split View や Multiple Windows への対応が求められるようになってきています。このため、UI デザインレイアウトを考える際には、端末のサイズだけではなく、Split View 表示の際にどのようなサイズになるかを知っておいたほうが良いのは間違いありません。

この記事では、iPad の Split View や Multiple Windows の表示ではどのようなサイズのウィンドウになるのかを、図で一覧表示したいと思います。iPad アプリ開発の際には、この記事を開いてリファレンス情報として使っていただければと考えています。
2
他イベントOK レギュラートーク(20分)

テストデータの準備から始める開発効率化

埴生孝慈 gaussbeam
現代のアプリ開発において、その品質担保にユニットテストは欠かせない。
しかし、ユニットテスト自体はアプリの価値を直接高めるものではないため、極力時間を掛けずに作成したい。
そこで浮かぶ問題の1つが、テストの実行に都合が良いテストデータをいかに簡単に準備するか、である。

本トークでは、テストデータを準備しやすくするための手法や、そのためのプロジェクトファイルの構築アプローチについて説明する。
合わせて、テストデータの準備よって副次的に得られる機能開発自体の効率化について述べる。
2
他イベントOK 原稿(2ページ)

プロキシツールProxymanの紹介と開発時に役立つTips

栗山 徹 kotetu
"Proxyman" は、macOS専用のプロキシツールです。通信を伴うモバイルアプリのリスエスト内容の確認やサーバからのレスポンスの書き換えなど、通信処理のデバッグやテスト用途において大変有用なツールです。

また、プロキシツールはインストール先のmacOSだけでなく、デバッグ対象のモバイル端末側にも設定が必要となり、設定手順が複雑になりがちなのがネックですが、Proxymanは丁寧なナビゲーションによって煩雑な手順が緩和されるような工夫が施されており、初めての方でも比較的導入しやすいツールとなっています。

本稿では、そんなProxymanの紹介や開発時に役立つ使い方についてご紹介します。

コンテンツ(予定):

1. Proxymanの概要とインストール・設定
2. SSL通信を閲覧してみよう
3. Breakpointを活用した通信内容の書き換え
3
原稿(2ページ)

Heart of Swift 俯瞰図

Yuta Koshizawa koher
昨年のiOSDC Japanで、"Heart of Swift"と題してレギュラートークを行いました。"Heart of Swift"は、Swiftが値型を中心とした特殊な言語であること、そして、そのSwiftを使いこなすために欠かせない、言語の根幹を成す("Heart"となる)概念についてのトークです。本原稿では、ページ内のレイアウトを自由に組める特徴を活かして、見開き2ページで"Heart of Swift"の登場人物の関係性を図示し、全体を俯瞰できるようにします。

"Heart of Swift"では、WWDCでSwift Core Teamによって語られた二つの重要な概念、

1. Value Semantics
2. Protocol-oriented Programming

を軸に、Swiftの"Heart"の全体像を示しました。

この話には多くの登場人物が存在します。1については、structとミュータブル/イミュータブルクラス、値型のコレクション、inout引数やmutating funcなど、2についてはパラメトリック/サブタイプポリモーフィズム、リバースジェネリクス、Opaque/Existential Typeなどです。それらの登場人物は互いに関係し合っており、Swiftという特徴的な言語を形作っています。

言葉による説明を聞いて、その複雑な関係を頭の中に描き出すのは容易ではありません。昨年のトークの最後にはまとめとして図を示し、理解の促進を図りました。しかし、スライドの中に事細かに説明を書き入れられるわけではありません。登場人物の関係を図示し、説明を書き入れるのに、見開き原稿は最適なメディアです。大きなスペースを使ってその関係と説明文を視覚的に示し、Swiftの"Heart"について、読者のより直観的な理解を目指します。
7
他イベントOK レギュラートーク(20分)

プログラミングとヒューマニティーの交差点(インターセクション)

星野恵瑠 lovee
アメリカのBlack Lives Matter運動を受けて、最近はBlacklist/WhitelistをBlocklist/Allowlistに改名したり、master/slaveをprimary/secondaryに改名したりする風潮が徐々にプログラミングの世界にも浸透してきており、さらにWebpack.jsは、6月2日に一日限定で公式ドキュメントをBLMのポスターに置き換えて大きな議論も呼びました。

このアメリカ発祥の運動は、地球の反対側に住む我々には一体どれほどの影響を及ぼすのか?この運動はどこへ向かいどこで収束するのか?我々は今後に備えてどう構えるべきなのか?そもそも我々もこの運動を受け入れるべきか?

残念ながらこのトークでは上記の質問に答えられません。しかしこれらの問題について一度心の中で考えるきっかけになれればと思います。このトークはこれまでのBML関連のプログラミング界の事実を交えながら、ヒューマニティーとプログラミングのこれまでの関係性を伝えつつ、これからの展望を話します。
2
他イベントOK LT(5分)

MVVMとMVC混在で作られているアプリのメンテすること1年で得られた知見

tamappe tamapppe
普通のアプリの設計はMVCかMVVMだと思うのですが、今私が手掛けているアプリはMVVMとMVCが混在した形になっています。
ある画面ではMVCで作られ、ある画面ではMVVMで作られて、といった感じです。
一番保守で苦労する部分がUITableViewに乗っているUICollectonViewの設計を修正する時です。

・これってどうやって修正したらいいのだろうか。
・これをどちらもMVVMで書き直したいけどできるのだろうか。
・これは開き直ってどっちもMVCのほうが保守コストが低いかも

こんな感じで日々、悶々とすることが多いです。

正直今でもベストプラクティスが見つからないので困る局面があるのですが、
そんなアプリを1年間保守して得られた知見を紹介できればと思います。

具体的に本発表では以下の内容に従ってお話しします

- MVVMとMVCごちゃまぜが悪い方向に進んだ具体的な場面
- MVCをMVVMに寄せたほうが良さそうな場面
- MVVMをMVCに戻したほうが良さそうな場面
- リファクタリングのために手を付けるべきか、あるいは手をつけないほうがいいかの基準

本セッションでは、上記の内容を通してアプリの設計は大切だよね、という話と
数少ないMVVM・MVC混在しているアプリをメンテしたことで得られた知見を紹介したいと思います。
3
2019 スポンサー 2019〆切後 資料請求
オンライン対応未決定 削除予定 オンライン対応検討中 要ロゴ 要PR 要支払
仮採択 採択しない スピーカー採択
仮採択(原稿) 採択済 採択しない 仮採択 要審議 ニッチ企画? LT向き加点