iOS 15から、即時通知と呼ばれる新しい通知が導入されました。これは、一定時間内に必ず確認してほしい情報を知らせる際に利用するもので、同じくiOS 15から導入された通知要約や集中モードを突破してユーザーの目に届く強力なものです。便利な反面、乱用するとユーザーに機能そのものをオフにされてしまう可能性があるため、使い所は精査する必要があります。
また、一度プロダクトに導入すると、その便利さ故つい使用箇所を増やしたくなってしまう可能性が高いですが、無論そういうわけにはいきません。安易に強力な通知配信を増やさないためには、開発メンバーの中で同じインプットが必要です。
本セッションでは、一iOSユーザーとして即時通知を受け取ってきて再考する即時通知の使いどころ、実際にプロダクトに即時通知を導入してみて見えてきた、即時通知利用に関して開発メンバーでもつべき共通認識について導入事例と共にお話します。
皆さんはresultBuilderを使った事があるでしょうか。
Swift5.4で導入されたこの技術はConcurrencyの発表で少し影が薄くなりましたが、実は複雑な処理をシンプルかつ宣言的なものに置き換えられるとても便利な技術です。
実際、私たちのチームではこれを用いることで、メンテコストの高い実装部分を大幅に改良する事が出来ました。
本トークではresultBuilderとは何なのか、またどういう効果的な利用法があるのかを実際の導入事例を交えてご紹介致します。
21分後にはあなたも1人前のresultBuilder!
コンテンツ
・resultBuilderとは
・仕組みと実装方法
・プロダクション導入の実例やライブラリの紹介
・高度な活用方法
聞き手の想定
・resultBuilderの存在を知らない方
・存在は知っているけど使い方がわからない方
・活用イメージが湧かない方
高速なアプリ体験の実現やアプリのプライバシー問題などから、オンデバイスで機械学習モデルを動かすことが増えてきています。
iOS上ではCore MLがよく利用されますが、PC上で動かす機械学習フレームワークよりも制約があり、出力が変わる問題が起こったり、
モデルを構築できてもアプリ組込み時に、扱いにくいモデルになっていることもよくあります。
このトークでは特に問題が起きやすい、画像を扱うモデルについて、
・使いやすく、運用しやすいモデルを構築する方法
・Core GraphicsやAccelerateを使ったテクニック
・MLエンジニアと協業方法
・モデルの入出力を高速に変換する方法
などを紹介し、"アプリエンジニア" として機械学習に関われるようになる知識を提供します。
GitHubにある学習済みモデルを自分でCore MLに変換して利用したい方にも役立ちます。
このトークを通して、ドット絵を描くアプリを作ってみましょう。
ドット絵は、イメージの最小単位であるピクセルを塗ることで描くことが出来ます。
CoreGraphicsの世界を通してピクセルを見ることで、普段意識しないイメージがどのようにしてメモリ内に格納されているかを知ることもできます。
また、CGContextを直接操作することでCGContextに存在しない描画APIの開発もしてみましょう!
このトークはドット絵エディタEditormodeの開発者がお送りします。
https://apple.co/3GJyqRF
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:
世の中には様々なアプリやシステムがありますが、良いアプリを開発できている会社はどこも良い開発環境を提供しているように思えます。
そこで考えてみましたが、本当に最高の開発現場とはどのようなものなのか?
開発効率の良い、最高の開発環境とは🤔
誰でも最大限のパフォーマンスを発揮できて、最高のものづくりを実現できる環境とは如何なるものなのかを考えてみました。
iOSのSwiftUI、AndroidのJetpack Compose、そしてマルチプラットフォームのFlutter…
モバイル開発は宣言的UIの時代に突入しました。
このセッションではこれら3つのフレームワークで同じUIを構築するサンプルを紹介します。
そこから見えてくる、全てのフレームワークに共通する重要な概念を明らかにします。
Swift-DocCは、Swiftフレームワークとパッケージ用の文書作成ツールです。 現在はオープンソースとして公開され発展しています。
プロジェクトを説明する文書を作成する方法はいくつかあります。 そして最近ではgithubでReadMeをたくさん使っています。 プロジェクトに適切にコメントを作成したら、Swift-DocCでプロジェクトの説明文書を作成できます。
Appleの公式文書を見るのに慣れているapple platforms developerのために、私たちのプロジェクトの説明にもDocCを活用する方法について説明します。
実際のプロジェクトを説明するリンクを提供して、プロジェクトのoverViewを行います。
sample: https://github.com/M1zz/SampleSwiftUI
昨今話題のFlutter。
このセッションではそのFlutter内部を、UIKitやMetalといったiOS技術をベースに紐解きます。
「タッチイベントはどのように処理されてる?」
「どうやってレンダリングしてる?」
そこが分かればもう怖くない!
iOS 14まではピクチャ・イン・ピクチャ(以下PiP)を表示させるには動画コンテンツが必要でした。
しかし、新しくiOS 15でPiPのAPIが追加されたことにより動画コンテンツが無いただのUIViewもPiPとして表示させることが可能になりました!
これまでPiPを利用したアプリを3つリリースしてきた経験から、PiPを利用したアプリの開発からリリースするまでについて話したいと思います。
・PiPに好きなUIを表示させる仕組みと実装
・より良いPiP体験の提供
・PiPでできないこと
・Appleの審査を通過する
PiPを使うことでユーザーにより良い体験を与えることができるアプリはたくさんあると自分は感じています。
ぜひこのセッションで得た情報をもとにPiPを使った良いアプリが増えれば良いと願っています!
Swift Packageはライブラリのバージョンを管理するだけでなく、プロジェクトの構成もになうことで、
マルチモジュール構成を柔軟かつ簡単に構築することができます。
この構成によるモジュールの柔軟性を活用すると、アプリを1つのプロジェクトで複数管理しやすくなります。
1つのプロジェクトで複数のアプリを管理することができれば、
コードの共有や、CI/CDのセットアップが簡単になり、メンテナンスもしやすくなります。
うまく基盤を作ると、全く異なるプロダクトを混在させることも可能ですし、
デザインのカタログのようなアプリや、特定の機能や条件を再現した小さなアプリにも活用できます。
このトークでは、Swift PMによるマルチモジュール構成を活用して、1つのプロジェクトで複数のアプリを管理してみます。
実例も交えながら、みなさんのプロジェクトにも応用できるようにしようと思います。
入社して初めて配属されたプロジェクトがRxだらけのソースでした。
専門学校時代、RxSwiftのソースを頑なに避けていたこともあり全くと言っていいほどソースが読めませんでした。このままでは何もできないと思い非同期処理とRxSwiftについて学習してみました。
このトークでは、Rxを避け続けてきた、新卒がどのような手順を追ってRxについて学習したかをお話しします。
ユーザーの行動分析や広告の効果検証の目的で、多くのプロダクトが Google Analytics for Firebase などの計測ツールを利用していることと思います。
蓄積したデータを多様な分析に活用できるように、数百ものイベントを計測しているアプリもあるのではないでしょうか。
しかし、そんな "イベント計測" のノウハウは個々のプロダクトの仕様に依る側面が大きいのもあり、広く共有されていない印象を持っています。
このセッションでは、僕らが提供するプロダクト「B/43」でのイベント計測の設計と運用の一例を示しつつ、さらなる運用の最適化に向けた試行(イベント定義書からのコードの自動生成など)についてもお話ししていきます。
【内容(予定)】
・「B/43」でのイベント計測の設計と運用の一例
・イベント計測の設計規則と効率的な実装方法の検討
・イベント定義書からのコードの自動生成の試行
アプリの新機能開発では「リリースが施策開始時期と合わない」「Mainブランチと差分が広がり競合が発生する」「不具合等で元に戻すには差分を丸ごとRevertする」などの点が開発・デリバリー速度低下の要因となります。
この状況を改善するためRettyではFeature Flagを導入しました。これはコードに分岐を設け機能表出を切り替える手法で、必要差分を予め隠した状態でリリースし、フラグ反転によって瞬時に表出することができます。
Feature Flagによって競合が起きにくくなる他、静的解析で分岐の特定が容易となり、さらに機能停止も手軽に行えます。
このトークでは、RettyでのFeature Flagの実装・運用方法、導入に役に立つライブラリをご紹介します。明日から高速でストレスフリーなデリバリーを実現しましょう!
iOS 14からSwiftUIに App
が追加され、Full SwiftUIでのアプリ開発が可能になりました。が、UIKitでつくりこまれたUIを移行するのは容易ではなく、移行例はあまり多くないのではないでしょうか。
そんな状況で、私は2021年末に個人開発のノートアプリ「Pieces of Paper」をFull SwiftUIに移行しました。本トークでは実際に移行を行った際に経験した様々な問題を中心に話したいと思います。
@ObservedObject
の意図しない初期化によるバグMac Catalystは,iOS/iPad OSと共通のプロジェクト,コードでmacOS Nativeアプリケーションも提供できるフレームワークです.さらに,Mac Catalystには,iOS/iPad OSでしか扱えないHomeKit.frameworkなどのフレームワークを使ったアプリを開発できるなどの開発効率以上の価値をもたらす側面も持ちます.しかしながら,それを使った開発には,AppKitのAPIを利用できない,起動時に勝手にウィンドウが表示されてしまうなどの課題もあります.本セッションでは,Mac Catalystでアプリを開発する上で必須のテクを筆者が公開しているオープンソースのアプリをベースに紹介します.
エムスリーでは医療従者や一般の方向けに複数のアプリ開発を行なっていますが、その中でも主力である『m3.com』アプリで行ったリファクタリングについてお話します。
プロジェクト開始から7年を経て FatViewController や責務が不明瞭なヘルパークラスが絡み合う状態となり、機能追加/不具合修正/オンボーディングのいずれも大変という辛い状況になっていました。
この状況を打開すべく「MVVM + Flux アーキテクチャへ変更」「マルチモジュール化」「DI導入」を行い、さらに Swift Concurrency、Combine、 XcodeGen などを活用し、「モダン」で「保守・運用がしやすい形」へと変貌を遂げました。
このトークでは「リファクタリングで実現した設計」に加え「リファクタリングに至る決断」「どのようにリファクタリングを進めたか」についてお話します。
XcodeのBehaviorsという便利機能を皆様はご存知でしょうか?
Build PhaseのRun Scriptではターゲットのビルド時に特定の処理を挟み込むことができますが、Behaviorsはプロジェクト単位ではなくXcode全般でのイベントに処理を挟み込むことができます。
そんなBehaviorsをハックして、ビルドやテストのイベントを別アプリから監視することができる仕組みを実現する方法について紹介します。
見どころ
・複雑なplistの任意の箇所だけ書き換える方法
・App Sandboxの壁をどのようにして超えるのか
・アプリを跨ぐ開発でのデバッグ手段
私は2020年5月に note 社に入社し、現在丸2年が経過しました。
入社してからの大半はアプリの開発業務がメインでしたが、ここ1年ぐらいは開発以外のタスクも増えてきました。
具体的には自動化の整備、E2E テストの整備、分析用のツール開発、スクラムの運営などです。
これらについても Zapier や GAS などを活用してツール化をするなどして、今後の自分たちが楽できるようにしています。
このセッションではこれらのツールを作った経緯や方法について紹介します。
アプリを運営するには普段目にする機能以外にも様々な機能が必要です。
例えばメンテナンス中の画面などがわかりやすいと思います。
note のiOS / Android アプリには Firebase を活用して、これらの機能を実現しています。
このセッションでは Firebase の機能である Remote Config や AB Testing などを活用して、アプリを運営していく上で必要な機能とその開発方法を紹介します。