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

即時通知を導入する際に考えるべきこと

aomathwift あおい

iOS 15から、即時通知と呼ばれる新しい通知が導入されました。これは、一定時間内に必ず確認してほしい情報を知らせる際に利用するもので、同じくiOS 15から導入された通知要約や集中モードを突破してユーザーの目に届く強力なものです。便利な反面、乱用するとユーザーに機能そのものをオフにされてしまう可能性があるため、使い所は精査する必要があります。
また、一度プロダクトに導入すると、その便利さ故つい使用箇所を増やしたくなってしまう可能性が高いですが、無論そういうわけにはいきません。安易に強力な通知配信を増やさないためには、開発メンバーの中で同じインプットが必要です。
本セッションでは、一iOSユーザーとして即時通知を受け取ってきて再考する即時通知の使いどころ、実際にプロダクトに即時通知を導入してみて見えてきた、即時通知利用に関して開発メンバーでもつべき共通認識について導入事例と共にお話します。

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

20分でわかる!速習resultBuilder

_chocoyama たまねぎ

皆さんはresultBuilderを使った事があるでしょうか。
Swift5.4で導入されたこの技術はConcurrencyの発表で少し影が薄くなりましたが、実は複雑な処理をシンプルかつ宣言的なものに置き換えられるとても便利な技術です。
実際、私たちのチームではこれを用いることで、メンテコストの高い実装部分を大幅に改良する事が出来ました。
本トークではresultBuilderとは何なのか、またどういう効果的な利用法があるのかを実際の導入事例を交えてご紹介致します。
21分後にはあなたも1人前のresultBuilder!

コンテンツ
・resultBuilderとは
・仕組みと実装方法
・プロダクション導入の実例やライブラリの紹介
・高度な活用方法

聞き手の想定
・resultBuilderの存在を知らない方
・存在は知っているけど使い方がわからない方
・活用イメージが湧かない方

レギュラートーク(20分)

Core MLモデルの最適化とその利用

tanakasan2525 たなたつ

高速なアプリ体験の実現やアプリのプライバシー問題などから、オンデバイスで機械学習モデルを動かすことが増えてきています。

iOS上ではCore MLがよく利用されますが、PC上で動かす機械学習フレームワークよりも制約があり、出力が変わる問題が起こったり、
モデルを構築できてもアプリ組込み時に、扱いにくいモデルになっていることもよくあります。

このトークでは特に問題が起きやすい、画像を扱うモデルについて、

・使いやすく、運用しやすいモデルを構築する方法
・Core GraphicsやAccelerateを使ったテクニック
・MLエンジニアと協業方法
・モデルの入出力を高速に変換する方法

などを紹介し、"アプリエンジニア" として機械学習に関われるようになる知識を提供します。
GitHubにある学習済みモデルを自分でCore MLに変換して利用したい方にも役立ちます。

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

CoreGraphicsでドット絵を描こう

noppefoxwolf noppe

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

レギュラートーク(20分)

Safari Extension in iOS 15 - Building an Extension to Display Furigana

telethonin Morten Bertz

iOS 15 has brought extension support to Safari. In this talk, I will explore the extension API by building a Safari extension that displays Furigana annotations in the browser. I will discuss:

  • extension patterns, permissions & user interactions
  • interaction with native code
  • obtaining Kanji readings using CFStringTokenizer without additional dependencies
  • pitfalls and limitations
6
レギュラートーク(20分)

最高でいて、最強の開発環境とはを考えてみました。

shichimi_0_o keisukeYamagishi

世の中には様々なアプリやシステムがありますが、良いアプリを開発できている会社はどこも良い開発環境を提供しているように思えます。
そこで考えてみましたが、本当に最高の開発現場とはどのようなものなのか?
開発効率の良い、最高の開発環境とは🤔
誰でも最大限のパフォーマンスを発揮できて、最高のものづくりを実現できる環境とは如何なるものなのかを考えてみました。

1
レギュラートーク(20分)

宣言的UIを比較!SwiftUI x Jetpack Compose x Flutter

yohta_watanave watanave

iOSのSwiftUI、AndroidのJetpack Compose、そしてマルチプラットフォームのFlutter…

モバイル開発は宣言的UIの時代に突入しました。
このセッションではこれら3つのフレームワークで同じUIを構築するサンプルを紹介します。

そこから見えてくる、全てのフレームワークに共通する重要な概念を明らかにします。

8
レギュラートーク(20分)

Readmeの代わりにDocCでプロジェクトを説明する方法

leeoios Leeo

Swift-DocCは、Swiftフレームワークとパッケージ用の文書作成ツールです。 現在はオープンソースとして公開され発展しています。

プロジェクトを説明する文書を作成する方法はいくつかあります。 そして最近ではgithubでReadMeをたくさん使っています。 プロジェクトに適切にコメントを作成したら、Swift-DocCでプロジェクトの説明文書を作成できます。

Appleの公式文書を見るのに慣れているapple platforms developerのために、私たちのプロジェクトの説明にもDocCを活用する方法について説明します。

実際のプロジェクトを説明するリンクを提供して、プロジェクトのoverViewを行います。
sample: https://github.com/M1zz/SampleSwiftUI

5
レギュラートーク(20分)

UIKitとMetalで紐解くFlutter

yohta_watanave watanave

昨今話題のFlutter。
このセッションではそのFlutter内部を、UIKitやMetalといったiOS技術をベースに紐解きます。

「タッチイベントはどのように処理されてる?」
「どうやってレンダリングしてる?」

そこが分かればもう怖くない!

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

動画だけじゃない!iOS 15のピクチャ・イン・ピクチャを使って好きなUIを表示させよう!

tsuzuki817 續橋 涼

iOS 14まではピクチャ・イン・ピクチャ(以下PiP)を表示させるには動画コンテンツが必要でした。
しかし、新しくiOS 15でPiPのAPIが追加されたことにより動画コンテンツが無いただのUIViewもPiPとして表示させることが可能になりました!

これまでPiPを利用したアプリを3つリリースしてきた経験から、PiPを利用したアプリの開発からリリースするまでについて話したいと思います。

・PiPに好きなUIを表示させる仕組みと実装
・より良いPiP体験の提供
・PiPでできないこと
・Appleの審査を通過する

PiPを使うことでユーザーにより良い体験を与えることができるアプリはたくさんあると自分は感じています。
ぜひこのセッションで得た情報をもとにPiPを使った良いアプリが増えれば良いと願っています!

レギュラートーク(20分)

1つのプロジェクトから複数のアプリを生み出す

d_date Daiki Matsudate

Swift Packageはライブラリのバージョンを管理するだけでなく、プロジェクトの構成もになうことで、
マルチモジュール構成を柔軟かつ簡単に構築することができます。

この構成によるモジュールの柔軟性を活用すると、アプリを1つのプロジェクトで複数管理しやすくなります。
1つのプロジェクトで複数のアプリを管理することができれば、
コードの共有や、CI/CDのセットアップが簡単になり、メンテナンスもしやすくなります。

うまく基盤を作ると、全く異なるプロダクトを混在させることも可能ですし、
デザインのカタログのようなアプリや、特定の機能や条件を再現した小さなアプリにも活用できます。

このトークでは、Swift PMによるマルチモジュール構成を活用して、1つのプロジェクトで複数のアプリを管理してみます。
実例も交えながら、みなさんのプロジェクトにも応用できるようにしようと思います。

22
レギュラートーク(20分)

新卒が語る今更聞けないRxSwiftの学習方法

naoki_mrmt Naoki

入社して初めて配属されたプロジェクトがRxだらけのソースでした。
専門学校時代、RxSwiftのソースを頑なに避けていたこともあり全くと言っていいほどソースが読めませんでした。このままでは何もできないと思い非同期処理とRxSwiftについて学習してみました。

このトークでは、Rxを避け続けてきた、新卒がどのような手順を追ってRxについて学習したかをお話しします。

  • なぜRxSwiftを勉強しようと思ったのか
  • 何をやったか
    • 非同期処理とは?
    • Rxの書き方について
2
レギュラートーク(20分)

プロダクト改善を支えるイベント計測の設計と運用

chickmuuu nakamuuu

ユーザーの行動分析や広告の効果検証の目的で、多くのプロダクトが Google Analytics for Firebase などの計測ツールを利用していることと思います。
蓄積したデータを多様な分析に活用できるように、数百ものイベントを計測しているアプリもあるのではないでしょうか。

しかし、そんな "イベント計測" のノウハウは個々のプロダクトの仕様に依る側面が大きいのもあり、広く共有されていない印象を持っています。

このセッションでは、僕らが提供するプロダクト「B/43」でのイベント計測の設計と運用の一例を示しつつ、さらなる運用の最適化に向けた試行(イベント定義書からのコードの自動生成など)についてもお話ししていきます。

【内容(予定)】
・「B/43」でのイベント計測の設計と運用の一例
・イベント計測の設計規則と効率的な実装方法の検討
・イベント定義書からのコードの自動生成の試行

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

Feature Flagを使った開発で高速でストレスフリーなデリバリーを実現する

imaizume 今泉智博

アプリの新機能開発では「リリースが施策開始時期と合わない」「Mainブランチと差分が広がり競合が発生する」「不具合等で元に戻すには差分を丸ごとRevertする」などの点が開発・デリバリー速度低下の要因となります。
この状況を改善するためRettyではFeature Flagを導入しました。これはコードに分岐を設け機能表出を切り替える手法で、必要差分を予め隠した状態でリリースし、フラグ反転によって瞬時に表出することができます。
Feature Flagによって競合が起きにくくなる他、静的解析で分岐の特定が容易となり、さらに機能停止も手軽に行えます。
このトークでは、RettyでのFeature Flagの実装・運用方法、導入に役に立つライブラリをご紹介します。明日から高速でストレスフリーなデリバリーを実現しましょう!

レギュラートーク(20分)

UIKitベースの個人開発アプリをFull SwiftUIに移行した方法と実践

0si43

iOS 14からSwiftUIに App が追加され、Full SwiftUIでのアプリ開発が可能になりました。が、UIKitでつくりこまれたUIを移行するのは容易ではなく、移行例はあまり多くないのではないでしょうか。

そんな状況で、私は2021年末に個人開発のノートアプリ「Pieces of Paper」をFull SwiftUIに移行しました。本トークでは実際に移行を行った際に経験した様々な問題を中心に話したいと思います。

  • なぜ移行しようと思ったのか
  • 移行する方法
  • 実践する中でハマった数々の問題と対応
    • @ObservedObject の意図しない初期化によるバグ
    • 反映されると思った状態変数がnilになる
    • UIKitベースのライブラリ(特にコア機能の PencilKit )とのブリッジをどうするか、など
  • 移行するメリットはあったのか?
8
採択
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でアプリを開発する上で必須のテクを筆者が公開しているオープンソースのアプリをベースに紹介します.

レギュラートーク(20分)

7年間運用している主力iOSアプリをリファクタリングしたお話

tmnet357 tmnet357

エムスリーでは医療従者や一般の方向けに複数のアプリ開発を行なっていますが、その中でも主力である『m3.com』アプリで行ったリファクタリングについてお話します。

プロジェクト開始から7年を経て FatViewController や責務が不明瞭なヘルパークラスが絡み合う状態となり、機能追加/不具合修正/オンボーディングのいずれも大変という辛い状況になっていました。

この状況を打開すべく「MVVM + Flux アーキテクチャへ変更」「マルチモジュール化」「DI導入」を行い、さらに Swift Concurrency、Combine、 XcodeGen などを活用し、「モダン」で「保守・運用がしやすい形」へと変貌を遂げました。

このトークでは「リファクタリングで実現した設計」に加え「リファクタリングに至る決断」「どのようにリファクタリングを進めたか」についてお話します。

6
レギュラートーク(20分)

Xcodeのイベントを別アプリで監視するのに試行錯誤した話

Kyomesuke Kyome

XcodeのBehaviorsという便利機能を皆様はご存知でしょうか?
Build PhaseのRun Scriptではターゲットのビルド時に特定の処理を挟み込むことができますが、Behaviorsはプロジェクト単位ではなくXcode全般でのイベントに処理を挟み込むことができます。
そんなBehaviorsをハックして、ビルドやテストのイベントを別アプリから監視することができる仕組みを実現する方法について紹介します。

見どころ
・複雑なplistの任意の箇所だけ書き換える方法
・App Sandboxの壁をどのようにして超えるのか
・アプリを跨ぐ開発でのデバッグ手段

7
レギュラートーク(20分)

アプリを成長させるアプリの開発以外の開発

fromkk かっくん

私は2020年5月に note 社に入社し、現在丸2年が経過しました。
入社してからの大半はアプリの開発業務がメインでしたが、ここ1年ぐらいは開発以外のタスクも増えてきました。
具体的には自動化の整備、E2E テストの整備、分析用のツール開発、スクラムの運営などです。
これらについても Zapier や GAS などを活用してツール化をするなどして、今後の自分たちが楽できるようにしています。
このセッションではこれらのツールを作った経緯や方法について紹介します。

6
レギュラートーク(20分)

アプリ運営に必要な機能をFirebaseで実現する

fromkk かっくん

アプリを運営するには普段目にする機能以外にも様々な機能が必要です。
例えばメンテナンス中の画面などがわかりやすいと思います。
note のiOS / Android アプリには Firebase を活用して、これらの機能を実現しています。
このセッションでは Firebase の機能である Remote Config や AB Testing などを活用して、アプリを運営していく上で必要な機能とその開発方法を紹介します。

3