採択
2022/09/10 16:40〜
Track A
レギュラートーク(20分)

ノートアプリのテキストエディタの解体新書

fromkk かっくん

note の iOS アプリのテキストエディタはテキストや画像、埋め込みなど様々な要素を入力できます。
また、今年には V4 エディタと呼んでいるエディタの拡張も行い、箇条書きや罫線などのサポートも追加しました。
スクロールする画面に複数の UITextView を入れる UI を作る時に、みなさんはどのように設計するでしょうか?
note の iOS アプリでは伸び縮みする画面を作る方法として、UIScrollView の中に UIStackView を入れて、その中に UITextView を含むビューを配置するように実装しました。
このセッションでは UIKit を活用して、伸び縮みするような画面を作る際の考え方と実装する際に困ったことなどをお話しします。

採択
2022/09/10 16:40〜
Track B
レギュラートーク(20分)

施策基盤としてのディープリンク 〜なめらかにアプリが開く体験のために〜

n_atmark あつや

SNSにおけるプロモーションや、Webのユーザーをアプリユーザーに転換させるような施策を実施したい場合にディープリンクを利用したいケースはよくあるでしょう。

ディープリンクを利用してユーザーをアプリに連れてくる際「ユーザーが文脈を理解できている状態」というのは重要で、ユーザー状態に応じたフローを組むだけでは施策の効果を十分に発揮できない可能性があります。

このセッションでは、滑らかな体験でアプリにユーザーを連れてくるために「ディープリンク」を効果的に活用する方法やその仕組みについて紹介します。

話すトピック
・概念としてのディープリンクおよび、ディープリンクを実現するための機能紹介
・アプリのインストール状況や初回設定状況などのユーザー状態に応じた適切な遷移方法
・ユーザーに文脈を理解した状態のままアプリに来てもらうために活用できる仕組み
・コンバージョンの計測方法

採択
2022/09/10 16:40〜
Track C
レギュラートーク(20分)

ShazamKitの遊び方

namu767676 Naoyuki Murata

WWDC2021で発表されたShazamKitは、膨大な音楽カタログをベースに何百万曲の音楽検索を行える音声認識フレームワークです。
音楽に全く詳しくない私(ミスチル好き)ですが音声認識機能には興味があり、
レンタルスペースを予約できる「SpaceMarket」のiOS/Androidアプリへ遊びで勝手に組み込んでみたので
・ShazamKitの機能紹介
・両OSへの導入の仕方
・使い道の検討/実際に作ってみた機能/社員の反応
についてお伝えできればと思っています。

採択
2022/09/10 16:40〜
Track D
レギュラートーク(20分)

iPhoneのセンサで”位置情報”を得るために

shinya_todaka Shinya Todaka

みなさんiPhoneのセンサで取得できる位置情報と聞いて何を思い浮かべますか?
おそらくCore Location Frameworkを使った緯度経度情報を思い浮かべる方が多いのではないでしょうか。
ロボット開発の観点では自己位置推定と呼ばれるLiDAR,カメラ,加速度センサなどを組み合わせることによってロボットの位置を推定する技術が日々研究されています。
本トークでは位置情報を得るという目的のためにiPhoneのセンサを使って検証した結果を

  • どのようなセンサを使う方法があるか
  • 取得できる位置情報の精度

について紹介します。

採択
2022/09/10 18:10〜
Track A
レギュラートーク(20分)

SwiftPMのプラグイン機能をiOSアプリ開発に活用する

usamik26 宇佐見 公輔

iOSアプリ開発にSwift Package Manager(SwiftPM)を活用するパターンを見かけるようになってきました。アプリ内のモジュール分割をSwift Packageを使って実現するパターンです。

この際、Swift 5.5以前のSwiftPMはビルド時に(SwiftGenなどで)コード生成する、などの処理を記述できませんでした。そのため、Xcodeプロジェクトのビルドスクリプト機能を使う必要がありました。
しかし、Swift 5.6でSwiftPMにプラグイン機能が追加されたことで、Xcodeのビルドスクリプト機能に頼る必要がなくなりました。

本トークでは、SwiftPMのプラグイン機能について解説し、iOSアプリ開発でSwiftPMをより一層活用するためのプラクティスをお話しします。

採択
2022/09/10 18:10〜
Track B
レギュラートーク(20分)

CICD構築・自動化入門

kuroruri くろるり

プログラマーの三大美徳の一つと言われる怠惰さを一番発揮しやすい場所はどこでしょうか?
それはCICDを含む自動化の仕組みの構築にあると思います。

ソフトウェアの開発においてCICDはもはや必須です。
ではCICDで得られるものはなんでしょうか?
それは我々が余分な仕事をしなくて済む時間です。
例えば、アプリをビルドするのに自分のPCを何十分も専有され、その間コードは一行も触れないなんてのは嫌なのです。
そんな時間があるなら我々はもっと他にやりたいことがあるのです。
面倒なことは機械が勝手にやって欲しいのです。

本セッションでは今まで面倒な仕事を勤勉にこなしてきた人が明日から怠惰に過ごせるよう、普段の仕事を自動化していくための考え方と進め方についてお話します。
そして導入した仕組みをコスト的に効率良く運用するためにどうすればいいか、導入した後の改善法についてもお話します。

採択
2022/09/10 18:10〜
Track C
レギュラートーク(20分)

MLOps for Core ML

shu223 堤 修一

MLOpsはML Operationsの略で、データ収集・前処理・学習・デプロイ・監視といった機械学習のライフサイクルの継続的な運用を効率化するための考え方や手法を総称してこう呼ばれています。たとえば、蓄積したデータを用いたモデルの再学習を定期的に自動実行し最新データに合うようモデルを改善し続ける仕組み、モデルを本番システムに自動デプロイする仕組み等が含まれます。機械学習をビジネスで本番運用するために不可欠な考え方として昨今ホットなトピックとなっています。

一方で、Core MLモデルの世界ではMLOpsという考え方はまだそれほど広がっていないように思います。多くの場合は一度学習したモデルを利用し続けるか、手運用で再学習等を行っているのではないでしょうか。Core MLにMLOpsの考え方を導入しするとどのように継続的な運用を効率化できるのか、そのパターンを解説します。

採択
2022/09/10 18:10〜
Track D
レギュラートーク(20分)

Dive into Mac Catalyst

sonson_twit 吉田悠一

Mac Catalystは,iOS/iPad OSと共通のプロジェクト,コードでmacOS Nativeアプリケーションも提供できるフレームワークです.さらに,Mac Catalystには,iOS/iPad OSでしか扱えないHomeKit.frameworkなどのフレームワークを使ったアプリを開発できるなどの開発効率以上の価値をもたらす側面も持ちます.しかしながら,それを使った開発には,AppKitのAPIを利用できない,起動時に勝手にウィンドウが表示されてしまうなどの課題もあります.本セッションでは,Mac Catalystでアプリを開発する上で必須のテクを筆者が公開しているオープンソースのアプリをベースに紹介します.

採択
2022/09/10 18:10〜
Track E
レギュラートーク(20分)

PWAの今とこれから、iOSでの対応状況

i_kinopee 木下郁英

ネイティブアプリと同様の機能をウェブアプリに追加できる技術、それがProgressive Web Apps (PWA)です。iOSでも近年、徐々にPWAの機能が追加されています。これらの流れは、ユーザービリティに重きを置く昨今の潮流に即しているように感じます。

この発表では、PWAの現状とその可能性についてお話しします。

  • PWAとは?
    • ウェブアプリのリーチと、ネイティブアプリの機能性を併せ持ったアプリ
  • PWAの各機能
    • ホーム画面へのアイコンの追加
    • キャッシュによるオフラインでの利用
    • カメラなどのハードウェアの利用
    • プッシュ通知 など
  • iOSでの対応状況
    • 各バージョンでの対応の歴史
    • プッシュ通知実装などの今後の対応
  • PWAの事例とこれから
    • アプリストア内外でのインストール
  • PWAを使うべきタイミング
採択
2022/09/10 18:45〜
Track A
レギュラートーク(20分)

20分間で振り返るIn-App Purchaseの歴史

inokinn inokinn

iOSにおけるIn-App Purchase(アプリ内課金)はiOS 3から利用可能であり、その歴史は10年以上に及びます。
この長い歴史の中で、Ask to BuyやUpgrade / Downgrade、お試しオファーなどの多くの仕組みが追加され、やれることが格段に増えました。
アプリ内課金をサポートするための仕組みも、Store Kit 2による実装方法の変更やアプリ内での返金機能をはじめ、Server NotificationsやTransaction Receiptのフォーマットの変更など、新しいものが次々にリリースされたり、StoreKit Testingによって自動テストが出来たりSandbox環境がアップデートされたりなど、課金のテストにまつわる状況も大きく変わりました。
本トークでは、20分間でIn-App Purchaseの激動の歴史をじっくり振り返っていきます。

採択
2022/09/10 18:45〜
Track B
レギュラートーク(20分)

量子情報工学への招待 〜iOSアプリ開発を通して学んでみよう〜

量子コンピュータや量子情報、量子暗号といった言葉を聞いたことがある人は多いと思います。これらには量子力学という物理の学問が使われています。
そんな量子力学が作り出す不思議な世界へiOSアプリ開発、Xcodeのシュミレータを用いてご説明します。
物理学の専門性がない方にもご理解いただけるように難しい話はしません。量子力学の面白さ、不思議さを知ってもらうためのトークです。

採択
2022/09/10 18:45〜
Track C
レギュラートーク(20分)

ChaChaPoly and You, CryptoKit Explained

monolithic_adam Adam Henry

「え、CryptoKitを使いたいけど、いつ、何を使うべきかわからない。。。」の方はもう心配いらない。このトークで一緒にCryptoKitの謎を解きましょう!

ユーザーのデータを暗号化しないといけない開発案件が出てきて「CryptoKitを使うチャンス!」を思って調べてきました。それでみんなにそのKnowledgeを共有したいと思っています!みんなCryptoKitマスターになりましょう!

Content

  • CryptoKitでできること
  • CryptoKitを使った対象鍵暗号(Symmetric Encryption)について
  • いつそのEncryptionを使うべきか
  • 実装方法

データセキュリティーのために知っておきましょう!

採択
2022/09/10 18:45〜
Track D
レギュラートーク(20分)

令和時代のXML処理を考える 〜もしあなたが巨大なXMLと相見える(あいまみえる)ことになったら〜

coffeegyunyu 日向強

アプリがネットワークなど外部サービスを通じてデータをやり取りすることはもはや当たり前になっています。
そのデータの代表的な形式としてJSONがあり、これはSwiftではCodableを通して簡易に変換することができます。

しかしデータ形式というものはJSONに限らず様々なものがあり、例えばXMLもその一種です。
「iOSにはXMLParserというものが用意されているから、ドキュメント見ながら実装すれば余裕っしょ」
もし、そのドキュメント通りに動作しなかったらどう思いますか?

このトークは、XMLを処理するにあたって、XMLParserを中心に、iOSでできること、できないことを洗い出していかに効率的に処理ができるかを突き詰めるトークとなります。

採択
2022/09/10 18:45〜
Track E
レギュラートーク(20分)

広まれSafari Web Extensions!Safari Web Extensions の始め方

base_front matsue

iOS 15 から Safari の拡張機能である Safari Web Extensions の開発が出来るようになりました。
すでに素晴らしい拡張機能がいつかかリリースされているものの、まだまだその数が少ないように感じます。
そこで今回は Safari Web Extensions の開発が広まるように、その始め方を紹介します。
具体的には、Safari Extension App のテンプレートの中身を解説しつつ、ある要素をHTMLから削除する拡張機能を作るまでの手順を紹介します。
Safari Web Extensions の持つ可能性を感じて頂ければと思います。

採択
2022/09/11 13:00〜
Track A
レギュラートーク(20分)

UIKit ベースの大規模なプロジェクトへの SwiftUI 導入

kuritatu18 久利龍義

タクシー配車アプリ「GO」では、UIKit ベースで実装しており、ViewController の数は300近くあります。
2019年の WWDC で発表された SwiftUI の機能を徐々に活用していき、2021年に iOS 12 のサポートを終了したタイミングでプロダクションに SwiftUI で作った画面を展開していきました。
本トークでは、大規模なプロジェクトにおいて、どのように SwiftUI を導入し活用しているかをご紹介します。

・SwiftUI の導入
・UIKit ベースのプロジェクトでの SwiftUI 利用
・Xcode Previews の活用
・SwiftUI 利用したことで得られたメリット
・ここが辛いよ SwiftUI
・SwiftUI 利用のこれから

採択
2022/09/11 13:00〜
Track B
レギュラートーク(20分)

Swift 5.7で変わる正規表現を試してみよう

ainame ainame

現在swift-evolutionでは大量のproposalと共に長年Swift上で不便だった正規表現関連の実装を刷新する流れが続いています。実際にWWDC 22でもSwift 5.7のリリースとともにRegexBuilderと正規表現リテラルが導入されることが発表されています。

このトークではNSRegularExpressionやNSStringにおける課題がどのように解決されているかをswift-evolutionの各proposalをもとに振り返り、iOSやサーバーサイドでのアプリケーションや文字列処理が生きてくる書き捨てのスクリプト(例えばログ解析など)でどれぐらい実用的に利用できるのかをベンチマーク結果を添えて検証していきます。

特に普段Rubyなどで書くことが多い書き捨てスクリプトを置き換えるポテンシャルがあるのかどうかに個人的に興味があります!!いかに!?

採択
2022/09/11 13:00〜
Track C
レギュラートーク(20分)

CoreGraphicsでドット絵を描こう

noppefoxwolf noppe

このトークを通して、ドット絵を描くアプリを作ってみましょう。
ドット絵は、イメージの最小単位であるピクセルを塗ることで描くことが出来ます。
CoreGraphicsの世界を通してピクセルを見ることで、普段意識しないイメージがどのようにしてメモリ内に格納されているかを知ることもできます。
また、CGContextを直接操作することでCGContextに存在しない描画APIの開発もしてみましょう!
このトークはドット絵エディタEditormodeの開発者がお送りします。
https://apple.co/3GJyqRF

採択
2022/09/11 13:00〜
Track D
レギュラートーク(20分)

既存サブスクリプション商品にアップグレード・ダウングレード商品を追加しよう

BOBG1018Vi ぼぶ

本トークでは、既存サブスクリプション商品にアップグレード・ダウングレードを追加する方法についてご説明します。

具体的には、

アップグレード・ダウングレード・クロスグレードについて

  • サブスクリプショングループとは
  • レベルの設定
  • レシートはどうなるのか

上記を公式ドキュメントを織り交ぜながらご説明します

運用しているサブスクリプションにアップグレード・ダウングレードを追加するには

  • 新規商品を申請するために注意すべき箇所は何か
  • SandBoxで検証する際のtips
  • SandBoxで確認できない範囲の検証結果

導入しづらい運用ケースとは

  • 複数のサブスクリプショングループを運用している場合
  • クレジットや他プラットフォームでの決済手段がある場合

を予定しております。

採択
2022/09/11 13:35〜
Track A
レギュラートーク(20分)

入門 SwiftUI Alignment Guide

monoqlo monoqlo

SwiftUIは細かく指定しない限り簡潔にレイアウトを記述できることも多い一方で、
Auto Layoutでは簡単にできていたことが意外と難しかったり、そもそも実現が困難なケースもあります。

このトークでは、VStackやHStackで単にleadingやtopなどを指定するだけでは
実現が難しいレイアウトを攻略するために有効なAlignment Guideについて、次のステップで学ぶことができます。

  1. Alignmentの概念および挙動についての基礎
  2. alignmentGuide(_:computeValue:)の理解と利用方法
  3. Custom Alignmentの実践的な使い方と制約

想定する対象者

  • SwiftUIをなんとなく書けるようになってきた人
  • alignmentGuideやCustom Alignmentを使ったことがないor使い方がよくわからない人
採択
2022/09/11 13:35〜
Track B
レギュラートーク(20分)

Swift Concurrency時代のリアクティブプログラミングの基礎理解

banjun ばんじゅん🍓

リアクティブプログラミングは非同期プログラミングの手段として使われることがありますが、本来は非同期データストリームをうまく扱うためのものです。Swift Concurrencyが導入された今こそ、Combineなどの具体的なライブラリから一歩距離を置いて、リアクティブプログラミングそのものを学習しておきましょう。

このトークでは、リアクティブプログラミングがデータフローの記述方式であるということを基本からおさらいします。リアクティブプログラミングを図的に理解でき、UIや通信のイベント配送設計も自在にできるようになります。

非同期はリアクティブプログラミングの外の世界と接続するときや内部実装には必要です。両者のポジションの違いを整理し、Concurrencyの機能をそのまま使うべきところと、リアクティブプログラミングでデータフローを記述すべきところが、よく分かるように説明します。