採択
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
レギュラートーク(40分)

読みとるから読み解くへ

d_date Daiki Matsudate

身の回りにはさまざまな形式のデータが存在し、読みとるためのAPIが提供されています。
例えば、AVFoundationを使えば、QRコードを読みとれます。CoreNFCであれば、iPhoneでNFCタグとデータをやり取りできます。
データ形式がJSONなら、Codableを使って簡単に変換できます。

しかし、APIが用意されないデータの読み取りは自分で実装する必要があります。
データ形式や通信方式は特定の機関が標準化しており、電子証明書に利用されるASN.1はその一例です。
標準化されているからといって、標準のAPIが提供されるとは限りません。

このトークでは、まず馴染みあるデータの読みとり方を整理します。
次に、ASN.1を例に、Parserの基本原理、仕様の調べ方を解説し、実際に実装してみます。
標準仕様の読み解き方とその実装方法を知ることで、処理できるデータの幅を広げましょう。

19
LT(5分)

おまえは今まで登録したUDIDの数をおぼえているのか?

mrtry_ mrtry

新入社員の受け入れや新規端末購入の際に発生する面倒事として、UDIDの追加、証明書とProvisioning Profileの更新があります
fastlaneを利用すれば作業は簡素になりますが、UDIDは都度入力する必要があり、運用担当エンジニアが手動でCLIを叩きがちです
この面倒事から逃げるために、GitHub Actionsで提供されているmanual workflowsを活用し、誰でもUDIDの追加をできるようにしました
このLTを見て、あなたも今日からUDID登録作業から開放されましょう

5
採択
2022/09/11 11:05〜
Track A
レギュラートーク(40分)

アニメーションAPIのすべて

k_katsumi 岸川克己

iOSにはさまざまなアニメーションAPIがあります。思いつくだけでもUIView.animate()、Core Animation、UIViewPropertyAnimatorがあり、Core Animationが提供するAPIは膨大ですべてを使った人は稀でしょう。物理演算を追加するUIKit Dynamicsもあります。さらにSwiftUIでは.animation()や.withAnimation()というModifierによる手段が提供されています。
これらのAPIがカバーする範囲は重なっていて、同じことを別のAPIでも実現できます。それぞれのAPIをどのように使い分けるのでしょうか?

この講演では各APIの使い方を実用的なパターンの実例を示しながら解説し、どのような判断で使い分けるべきかを示します。すべてを明確に理解し、表現の引き出しを増やして、アニメーションをマスターしましょう!

レギュラートーク(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
LT(5分)

SwiftUIも動く!? AppCodeを使いこなして快適な開発体験を手に入れよう!

imaizume 今泉智博

「iOSやmacOSのアプリ開発に必要なエディタと言えば?」
この質問に「Xcode!」と即答しようとしたあなた! JetBrainsが提供する開発環境「AppCode」をぜひ一度試してみませんか?
強力な静的解析やリファクタリング機能、あまたのプラグインに外部ツールとのインテグレーションなどなど、Xcodeでは実現できない、便利機能が盛りだくさん!
さらにSwiftUIのプレビューもサードパーティツールを使ってシミュレーター上で利用可能!
本トークでご紹介する各種機能や設定を通じて、AppCodeの素晴らしさを知り、あなたもぜひ快適なアプリ開発体験を手に入れてください!

3
LT(5分)

Siri Shortcut x Slack Workflow を使ってノーコードで業務を効率化しよう!

imaizume 今泉智博

みなさんSiri Shortcutを使っていますか?
Siri Shortcutには標準でHTTPリクエストの送信や条件分岐といったステップが装備されており、外部サービスと組み合わせ日常の業務を改善することができます。
本トークではSlackの提供するWorkflowという機能と組み合わせ、私が実際に使用する業務効率化ショートカット(勤怠報告とお店データ報告)について解説します。
また「変数名が無い」「UIにクセがある」などのハマりポイント解説の他、条件分岐やファイル読み込みといった高度な機能の使い方もご紹介!
「Siri Shortcutを使ってみたいけどまだ始められていない」というな初心者でもきっとすぐに使ってみたくなること間違いなし
GASやIFTTTなど他のWebhookにも応用できますので、ぜひ本トークを聞いて明日からの業務改善に役立つショートカットを作ってみてください!

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

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

imaizume 今泉智博

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

LT(5分)

パースエラー検知のためのロギング術

shizuna_it 伊藤静那

新機能リリース後、特定の条件でパースエラーが起きていることがユーザーからの問合せで判明した!という経験はありませんか?
リリースされたアプリのクラッシュを検知する方法としてはXcodeのクラッシュログ・Firebase Crashlyticsなどが多く使われていますが、パースエラーを検知する方法は確立されていないように感じます。
このLTでは、起きてしまったパースエラーを検知するためのログ導入方法や、簡単に分かりやすく確認するために改善していったことをご紹介します。

・パースエラーを検知する方法
・ログ送信で注意するべき点
・原因を把握しやすくするために工夫したこと

アプリ内で起こるエラー検知方法やログ実装にお悩みの方のヒントになれば幸いです。

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

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

0si43

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

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

  • なぜ移行しようと思ったのか
  • 移行する方法
  • 実践する中でハマった数々の問題と対応
    • @ObservedObject の意図しない初期化によるバグ
    • 反映されると思った状態変数がnilになる
    • UIKitベースのライブラリ(特にコア機能の PencilKit )とのブリッジをどうするか、など
  • 移行するメリットはあったのか?
8
レギュラートーク(40分)

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

0si43

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

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

  • なぜ移行しようと思ったのか
  • 移行する方法
  • 実践する中でハマった数々の問題と対応
    • @ObservedObject の意図しない初期化によるバグ
    • 反映されると思った状態変数がnilになる
    • UIKitベースのライブラリ(特にコア機能の PencilKit )とのブリッジをどうするか、など
  • 移行するメリットはあったのか?
7
LT(5分)

既存のiOSアプリにKMMを導入してみた

tamadon3776 tamadon

株式会社KyashではデジタルウォレットアプリKyashを提供しています。

最近、KMM(Kotlin Multiplatform Mobile)を導入しました。
既存プロダクトにKMMを導入して得た知見を共有したいと思います。導入を検討している方の参考になれば幸いです。

・なぜ導入したか
・導入してみてわかったメリット・デメリット
・ぶっちゃけ、導入してみて良かった?

6
採択
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
LT(5分)

リニューアルと気持ちの整理

akuraru akuraru

エンジニアは意外にも信心深いところがある。サーバーをお祓いしたり、デバッグ神社を建てたり、リリースするときにお祈りする。
アプリを全面リニューアルがあったので、今までのソースコードへの感謝の気持ちを込めてお焚き上げをすることにした。
お焚き上げの準備から実施するまでを紹介します。

ブログに書いた内容をTL用に作り直して発表する予定です。
https://akuraru.hatenadiary.jp/entry/2022/05/22/200917

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

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

fromkk かっくん

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

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

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

fromkk かっくん

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

3