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

どこでも AirPods を実現する方法

niw Yoshimasa Niwa
niw

AirPods、便利ですよね。どこでもいつでもずっと使ってしまいます。
でも一つ困ったことが。
そう、飛行機のエンターテイメントとかゲーム機など Bluetooth に対応していない機器で使えないのです。

そんな時に思いついたのが、AirPods を使う時にいつも持ってる iPhone を経由して Bluetooth に対応していない機器でも AirPods を使えるようにできるのではという事。
このセッションでは、AirPods をどこでもいつでも使いたいそんな思いを実現するために iOS アプリとハードウェアの開発を通して学んだ iOS のオーディオの仕組みについて紹介します。

対象とする方:

  • AVAudioSession について知りたい方
  • 飛行機の映画でも AirPods を使いたい方
  • ハードとソフトの融合を見たい方

前提とする知識:

  • 簡単な電子工作の知識
7
レギュラートーク(40分)

ラクに速く正確にUIが作れちゃう!SwiftUIを用いたデザインシステムによるアプリの開発事例

y0shikei_ yoshikei

宣言的UIフレームワークのSwiftUIの登場により、以前に比べUIコンポーネントが作りやすくなりました。
そこで弊社ではSwiftUIの特徴を活かし、社内のデザインシステムをパッケージとして開発・運用することで、楽に速く正確にUIを実装することを可能にしました。
また、パッケージ内のコンポーネントを一覧で確認できるカタログアプリも開発し、実装コストだけでなく、仕様検討時のコミュニケーションコストやデザインの手戻りも削減することができました。
本セッションでは、デザインシステム構築までの開発プロセスと実際に運用してみて得られた知見について紹介します!
デザインシステムを構築し、みんなで楽に速く正確にUIが作れる世界線へ!

【コンテンツ】
デザインシステム

  • 概要と構築の経緯
  • 実装方法と運用事例
  • 構築して得られた恩恵

カタログアプリ

  • 概要と活用事例
  • 開発して得られた恩恵
5
レギュラートーク(20分)

ラクに速く正確にUIが作れちゃう!SwiftUIを用いたデザインシステムによるアプリの開発事例

y0shikei_ yoshikei

宣言的UIフレームワークのSwiftUIの登場により、以前に比べUIコンポーネントが作りやすくなりました。
そこで弊社ではSwiftUIの特徴を活かし、社内のデザインシステムをパッケージとして開発・運用することで、楽に速く正確にUIを実装することを可能にしました。
また、パッケージ内のコンポーネントを一覧で確認できるカタログアプリも開発し、実装コストだけでなく、仕様検討時のコミュニケーションコストやデザインの手戻りも削減することができました。
本セッションでは、デザインシステム構築までの開発プロセスと実際に運用してみて得られた知見についてご紹介します!
デザインシステムを構築し、みんなで楽に速く正確にUIが作れる世界線へ!

【コンテンツ】
デザインシステム

  • 実装方法と運用事例
  • 構築して得られた恩恵

カタログアプリ

  • 概要と得られた恩恵
4
採択
2022/09/10 18:10〜
Track E
レギュラートーク(20分)

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

i_kinopee 木下郁英

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

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

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

「OpenAPIとCI/CDのシナジーでAPI差分 "0" へ」

サービスを拡大していく上でバックエンドやBFF (Backend For Frontend)とのAPIの数は徐々に増えていくものです。
APIが増えれば管理するレスポンススキーマも増えてしまい、バックエンドとAPIのスキーマがいつの間にかズレているという経験は多いのではないでしょうか?
変更が入るたびに、影響範囲のチェックも必要になるため面倒くさいったらありゃしない。

そんなみなさんのために、「PayPayフリマ」の開発現場で試しているOpenAPIを用いた解決策をご紹介します!

既に完成されているサービスの中でどのようにOpenAPIを導入しAPI差分を "0" に近づけているのか、
CI/CDで運用していく上での工夫点や、APIの変更に対処しやすい仕組みなど、実用的なテクニックをお話します。

みなさんも一緒に安心安全なAPI運用を目指しませんか?

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

ちょっと待って!そのモーダル遷移、フルスクリーンで大丈夫?

hatakenokakashi 佐藤 剛士

普段のiOS開発で登場するモーダル遷移、何気なく実装していませんか?
UIKitではiOS 13からモーダル遷移はシート型がデフォルトになりましたがデフォルトから外れてフルスクリーンでモーダル遷移をすると、どんな落とし穴が待ち受けているのでしょうか?

この発表では自社アプリのQAで見つかったフルスクリーンモーダルの不具合とその修正を通して、UXとコードレベルでフルスクリーンでのモーダル遷移の落とし穴や、それがなぜ発生しやすくなるのかを解説します。
Human Interface Guidelinesを参照しつつ、Appleが想定するiOSのモーダル遷移と、不具合が少ない妥当な実装は何かを考察します。

この発表はこんな方が対象です

・デフォルトのシート型でしかモーダル遷移実装していなかった方
・デザイナーからフルスクリーンでの遷移を提案されたけどシート型との違いを説明できなかった方

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

音声配信アプリにおけるiOSを使った音声配信の全てと裏側

entaku_0818 entaku

Voicyでは日々パーソナリティさんという音声投稿者による音声配信がされております。
iOSにおいて音声配信をする上で欠かせないAVFAudioを利用しております。
AVFAudioには多種多様な機能がありますが、実際サービスを扱っていく上で一体どんなことに注意し何を必要があるのか?がわからないことが多いです。
本トークでは音声配信をiOSで実装する上でどのように考え実装するべきなのかを全てと裏側という形でお伝えしたいと思います

  • AVFAudioを利用した音声の取り扱い
    • 音声収録
    • 音声配信
    • etc
  • Voicyで利用している音声配信の提供方法
    • 収録配信
    • リアルタイム配信
  • 課題や今後の展望
レギュラートーク(20分)

カウシェiOSアプリのモジュール開発事例

akifumifukaya akifumi

カウシェiOSアプリは、複数のモジュールによって構成され、開発されています。
いくつかのモジュールに着目し、モジュール内にどのようなリソースを配置し開発を進めているか、良かった点などを共有したいと思います。

▼事例
①デザインコンポーネントを集約したKaucheDesignKit
カラーや共通で使用するUIコンポーネントを集約しています。
SwiftUIとPreviewsを活用することで、UIコンポーネントの実装・確認がしやすくなりました。

②モックデータを定義用のKaucheMockKit
モックデータを一つのフレームワームに定義することで、ユニットテストやPreviewsで同じモックデータを使い回すことができるようになりました。またProductionアプリから依存として外すことで予期せぬデータ混入を防ぎ、安全性を高めることもできます。

2
採択
2022/09/12 15:25〜
Track A
LT(5分)

Flutterアプリ開発にネイティブコードはどこまで求められるのか

akatsuki174 akatsuki174

2018年に登場したFlutter。きっと当時は「またクロスプラットフォームフレームワークが出てきて、廃れていくのか?」と思った方もいると思いますが、今では様々なアプリで使われるようになりました。弊社の新規アプリ「Famm プリント」もFlutter製アプリの一つです。

「Flutter流行ってるし、そろそろ手を付けてみようかな」
「でも結局各プラットフォームのネイティブコード呼ばなきゃいけない場面出てきたりしない…?」
そんなことを思っている人もいるのではないでしょうか?

このトークでは、実際にFlutter製アプリを作ってみてネイティブコードを書いた場面はあったのか、ネイティブコードを書くことを求められるのはどんな場面かを話したいと思います。このトークによって、Flutter開発を躊躇していた方の背中をポンと押せたら幸いです。

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

ARKitとMetalでインタラクティブなARオブジェクトの表現を考えました!。

bluewhitered123 武田孝騎

仮想苔というARアプリケーションを個人制作しています。
このアプリの主な機能として 検知された平面にARオブジェクトを配置し、画面からにARオブジェクト触れると対応してアニメーション(掻き別れるような)を再生する機能 があります。

このARオブジェクトは草原が代表するような掻き別れるような表現を実装した苔です。本物の苔に触ったような感覚は得られないですが、あまり見かけないARオブジェクトが返す表現に仕上がりました。

内容は下記です。
・このアプリ制作を通して学んだ ARkitとMetalの実装。
・このアプリの インタラクティブなARオブジェクトについて。

ARKitでMetalを使ってみた一例としてご紹介できたらと思います!。

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

Xcodeにはファイルツリーをソートする機能がないので、gem でできるやつを作ってみました。

shichimi_0_o keisukeYamagishi

Xcode は非常に便利ですが、ファイルツリーに関してはファイルをソートする機能がないので、開発途中でファイルが増えてきて品雑になったときに困ります。
一つ一つD&Dで並び替えるのもありですが、時間がかかりますし、ミスもするかもしれませんし、最悪参照パスを間違えて、ビルドが通らないなんて事子もあるかもしれません。
それを解決できる、gemを作成しまししたので、そちらを紹介してみようと考えてみました。

LT(5分)

アプリが依存しているSwift PackageライブラリのLICENSEを一覧表示する方法

Kyomesuke Kyome

Swift Package Manager (SPM)に対応したOSSライブラリが増えてきた昨今、CocoaPodsやCarthageからSPMへ移行を検討している方が結構いるのではないでしょうか?
しかし、正しく製品を提供するなら使用しているライブラリのライセンス表示は必須です。
そこで、CocoaPodsやCarthage向けのライセンス表示ライブラリはいくつかありますが、SPMに対応したものはあまり見かけなかったため仕組みを自作しました💪

仕組み作成の上での躓きどころを踏まえながら、Swift Packageのライセンスを収集して表示するまでの流れを説明します。

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

キャッシュによる状態管理のアーキテクチャ

_rockname 岩名 勇輝

例えばTwitterアプリでは、ツイートに押したいいねは他のどの画面に表示される同一のツイートにも反映されています。
このような体験を実現する上で、グローバルステートとして状態を管理する手法がしばしば用いられ、iOSアプリ開発でもReduxから派生するTCAが例として挙げられます。

しかし、そもそもこのグローバルステートで管理する大抵の状態はサーバーからのレスポンスであることから、WebフロントエンドではReact QueryやSWRを筆頭にサーバーデータのキャッシュによる状態管理が流行しつつあります。

そこで本トークでは、SwiftUIを用いたiOSアプリ開発におけるサーバーデータのキャッシュによる状態管理のアーキテクチャについてお話しします。

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

大規模イベントアプリを支える技術〜長岡花火公式アプリを作った話〜

Izu

大規模なイベントアプリを支える技術のお話です。
新潟県長岡市で開催される長岡花火の公式アプリを開発して、運用しています。コロナ禍では開催出来ませんでしたが、今年は久しぶりに開催される見込みです(6月現在)
毎年開催期間合計で100万程度が来場する長岡花火に対して、どのような技術でアプリを運用して、長岡花火を支えているのか、お話できればと思います。
意外なあれが役に立っています。

普通のアプリとは異なり、イベントアプリは固有の課題があるため、イベントアプリを運用している方、今後イベントアプリを開発する方などの参考になればと思います。

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

3年間 Core NFC を使ってみて - iOS 固有の NFC 利用まわりの知見

treastrain treastrain / Tanaka Ryoga

NFC とは駅・空港での自動改札機やお店での電子マネー決済、社員証や学生証をかざした入退出管理など、日常でよく見かけるアレを叶える技術です。

iPhone に搭載されている NFC を私たちの App で使うためには Core NFC を用います。これは iOS 11 から利用可能になり、iOS 13 のタイミングで大きくアップデートされました。昨今の情勢から非接触技術が注目されたり、eKYC に利用できたりと、現在進行形でさまざまな App で利用が広がっています。

私は iOS 13 のときから3年間、この Core NFC を使った App の個人開発を続け、関連する OSS も公開してきました。それによって得た iOS 固有の NFC 利用まわりの知見を紹介します。

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

async/await時代のSwift on server

iceman5499 Iceman

SwiftはiOSアプリケーション開発のみならず、Linux上で動作させてWebサーバアプリケーションを立ち上げることができます。
iOSエンジニアにとって、SwiftでAPIサーバが書けることほど快適なものはありません。
書き慣れた文法で型安全な実装ができ、またリクエスト・レスポンスのモデルをクライアントと共有することまでできます。
Swift5.5で導入されたasync/await構文は、さらにクライアントコードとの親和性を強化しました。

このトークでは、Swift on serverをどのように始めていくか、開発環境からデプロイまでの基本的なステップ、ハマりどころ、async/await導入によるコードの変化、型によるクライアントとの強固な連携などを紹介していきます。

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

夢が広がる!コード生成でどこでもSwift

iceman5499 Iceman

Swiftはいいぞ!
Swiftが好きになると、どこでもSwiftが書きたくなります。
APIサーバは当然Swiftで書きたいですし、クライアントから呼ぶときはasync関数としてそのまま呼び出したいです。
Webアプリも書きたいです。DOMを触るのはReact等には勝てないですが、せめてロジックはSwiftで記述したいので、Swiftの関数をTypeScriptから呼び出せるようにします。
TypeScriptからSwiftが使えるようになれば、そこからさらに利用箇所は広がります。

このトークでは、コード生成技術を通してSwiftをどこでも使えるようにするテクニックを紹介します。

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

改めて振り返ろう!UIBezierPath 入門

AkkeyLab AkkeyLab

独自のデザインを実装するとき、皆さんはどのような手法を取ることが多いですか?
例えば、画面下部から半円が顔を出しているデザインを実装することを考えてみましょう。
UIView を準備し、CALayer の cornerRadius に (width or height) / 2 を設定して frame を調整する方法がシンプルかもしれません。

しかし、画面外で一生顔を見せることの無い部分も含めた演算処理が走ってしまい、効率的とは言えません。
そこで、UIBezierPath を使えば画面内の必要な部分のみ演算・描画することが可能になります!

・ブックマークアイコン
・スターアイコン
・ハートアイコン

このトークでは、上記オブジェクトを描画する手順を紹介するとともに、UIBezierPath の利用方法をご紹介します!これを学べば、あなたも Swift 使いのイラストレータです!

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

正規表現って結局何なのさ?〜エンジニアのためのコンピューターサイエンス入門〜

ta_ka_tsu ta_ka_tsu

皆さん多かれ少なかれ正規表現を使ったことがあると思います。
コマンドラインツールで、エディタの検索で、そしてNSRegularExpressionで。
単純な文字列検索に比べ、正規表現はとても表現力豊かでパワフルな検索を可能にします。

Swift Evolutionにも正規表現に関する多くのproposalがあり、Regex型やRegexリテラルなどが正式に実装される日も近いでしょう。
しかしこの正規表現とは一体何者なのでしょうか?
どんなものが表現でき、どんなものが表現できないのでしょうか?

多くのメタ文字や演算子記号があるためとても複雑なものと思われがちですが、実際にはたった3つの文字列の演算ルールだけで構成されています。
本トークでは状態遷移図の一種であるオートマトンからスタートして正規表現の原理を紐解きその限界を探っていきます。

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

XVimとSwiftとAssembly

r_plus taiki komaba

Xcode 13最大の新機能と言えばVimキーバインドの登場ですね!
多くの開発者が利用しているVim/NeovimのキーバインドがとうとうXcode標準で使えるようになりました。

Xcode 12まで、多くのVim好きの開発者はVimキーバインドを利用するために、
Pluginの形式で提供していたXVimというソフトウェアを利用していました。

このトークではそんなXVimないしXcode Plugin業界に襲いかかってきた
Swift, AppleSiliconの様々な技術的ハードルについてメンテナーが振り返って供養します。
(20分版ではmacOS, Xcode部分について省略します)

3