iOSDC Japan 2022 トーク一覧

採択 スポンサーセッション スポンサーセッション(20分)

2022年の新規アプリ開発で採用した技術

satsukiasa 新井 美香 satsukiasa

メドピア株式会社では、2022年2月にアプリ slis[スリス] をリリースしました。0からの新規開発ということで既存関連の制約などはなく、Swift Package Manager、Swift Concurrency、Xcode Cloud など新しいものを取り入れて開発しています。
このセッションではこれら採用した技術を中心に今回の新規開発について紹介します。

23
採択 原稿(2ページ)

XCFramework を Swift Package Manager でもっと便利に扱う

shimastriper shimastripe shimastriper

Xcode 11 からバイナリフレームワークを配信するための新たな方法として、 XCFramework が登場しました。
これ1つで様々なプラットフォームをターゲットにビルドできます。

また、Xcode 上で Swift Package Manager (SPM) も利用できるようになりました。
しかし、現状では SPM に対応できていない、もしくは XCFramework のみ配信されているライブラリも依然存在し、全てを SPM で管理することが困難です。

SPM では、XCFramework も Binary Target として登録することで全てを SPM で管理することが擬似的に実現できます。

本稿では、 XCFramework を SPM に対応させるために必要なステップと、プライベートリポジトリで管理しているパッケージにアクセスするための Tips を紹介します。

14
採択 原稿(8ページ)

Apple Archive Frameworkの使い方

k_katsumi 岸川克己 k_katsumi

iOS 14およびmacOS Big Sur以降ではApple製のファイル圧縮・展開のフレームワークであるApple Archive Frameworkが利用できます。データのエクスポート機能やシェア機能などで、複数のファイルを一つにまとめて送信したいときに便利です。サードパーティ製のアーカイブフレームワークなどを導入しなくても、一通りの機能が揃っています。ただApple Archive Frameworkはドキュメントが最低限しか書かれておらず、ドキュメントに掲載のサンプルコードをそのまま写せば使えるのですが、パラメータの意味などを理解せずに使うことはよくありません。本稿ではApple Archive Frameworkの使い方とドキュメントに載っていないパラメータの意味などを実際のコードを用いて解説します。

27
採択 原稿(4ページ)

async/awaitで作るCLIツール

417_72ki 417.72KI 417_72ki

WWDC2021で発表されたasync/awaitを始めとするSwift Concurrencyですが、CLIツールの実装でも使うことができます。
また、実はSwift5.5.2からLinuxでも扱えるようになっているんです。

本稿では、自作のCLIツールを一部抜粋してBefore/Afterの形でasync/awaitをどのように適用したかご紹介します。

12
採択 原稿(4ページ)

API 繋ぎこみトラブル撲滅委員会

AkkeyLab AkkeyLab AkkeyLab

API 繋ぎこみを後回しにした経験、皆さんありますでしょうか。

・API 側の問題に気づくのが遅れる
・サーバ側の開発スピードによって、作業を中断せざるを得ない
・API 側の仕様を無視した実装になっていることに気づき、UI から作り直し

実装順序次第ではこのような現象に遭遇してしまうかもしれません。
本稿では、本業と複数の副業で実践済みのテクニックをご紹介します!

・アプリ開発者目線で見る OpenAPI
・XcodePreviews 活用術
Moya 利用時の Stub 活用術

上記3項目を実例とともに初心者〜中級者向けに執筆いたします。大規模なリファクタリング不要で、読んでいただいた直後から実践・成果を実感していただけます!

11
採択 原稿(8ページ)

不具合や仕様もれを減らすための勘所とユニットテストで学ぶ簡単事例集

fumiyasac 酒井文也 fumiyasac

アプリ開発の過程で、仕様のミスリード・不十分な仕様把握・説明の解釈ミス等で、本来の意図との実際の成果物で齟齬が生まれる事は、常に起こる可能性はありますが、ユニットテストによって事前にそのリスクを防止する取り組みは、仕様把握や機能担保の面で有効な手段になります。

本稿ではその「ありがたみ」と感じられる簡単な例を、RxSwift / Quick / Nimble / SwiftyMockyを利用を想定したコードを通して解説する予定です。

その中でも特に、

  1. 仕様で本当に抜け漏れがないかを確認する場合
  2. 言葉ではシンプルだが実際に正しいかが見えにくい場合
  3. 実は細かな点に気を配ってみると疑問が生まれる場合
  4. その他画面の中でテストがあると良さそうな部分を探り出す着想

等の簡単な実装コードやテストコードの事例を交えながら解説できればと思います。

16
採択 原稿(4ページ)

Swift Package Manager Command Plugins で任意の処理を実行してみよう

yut_taj 多鹿豊 yut_taj

Swift 5.6 から Swift Package Manager に Command Plugins の機能が追加されました。
この機能を用いることで、 Swift Package Manager のコマンドを拡張し、独自にカスタマイズしたコマンドを実行することができるようになります。
これによって、タスクランナーのようなものを Swift のコードで実装し、 CI やコマンドラインから実行することが可能になります。
この原稿では、 Command Plugins の作り方を実際のコードを交えて紹介していきます。

9
採択 原稿(8ページ)

Swift-DocCによるチュートリアルの作り方

usamik26 宇佐見 公輔 usamik26

Swift-DocCは、Swiftフレームワークやパッケージのためのドキュメント作成ツールです。Xcode 13に同梱される形でリリースされ、その後オープンソースソフトウェアになりました。

Swift-DocCの面白い特徴に、チュートリアルを作成できるという点があります。AppleはSwiftUIのチュートリアルを公開していますが、このチュートリアルと同様のものがSwift-DocCを使えば作成できるのです。

この記事では、Swift-DocCを使ったチュートリアルの書き方を、具体的なコードを挙げて解説します。以前Swift-DocCの技術同人誌を執筆しましたが、今回の記事ではチュートリアルに焦点を当てて、より詳細に解説します。

参考:Swift-DocCでドキュメントをつくる (https://type-d4-lab.booth.pm/items/3622327)

20
採択 原稿(8ページ)

SwiftPMプラグインの実装と活用

usamik26 宇佐見 公輔 usamik26

Swift 5.6でSwift Package Manager(SwiftPM)にプラグイン機能が追加されました。ビルドツールプラグインはSwiftPMのビルド時に外部ツールを実行します。また、コマンドプラグインはSwiftPMのコマンドを拡張して外部ツールを実行できるようにします。

しかし、SwiftPMプラグインの情報はSwiftのプロポーザル以外にはあまりありません。そのため、実際にどのように実装すれば良いのかわからないと感じる人もいるのではないでしょうか。この記事では、プラグインの実装方法を具体的な実装コードを挙げながら解説します。また、プラグインの活用のしかたも紹介します。

参考記事:Swift Package Managerのプラグイン機能 (https://qiita.com/usamik26/items/1c2cec0903fea2e03344)

14
採択 原稿(4ページ)

輝け!俺のViewController Part.2

___freddi___ freddi ___freddi___

freddi氏「今年もクソ漫画、パンフに載せたります。」(参考: https://twitter.com/___freddi___/status/1525016756095688706 )」今年は正攻法でプロポーザルで大胆にGo!いったい、iOS開発の地獄を見ているふれもんやロパ太たちの運命はどうなっちゃうの?!次回! freddi 伏す、ビルドスタンバイ!

6
採択 原稿(4ページ)

SwiftUIやAttributedStringで使えるMarkdown記法入門

kotetu 栗山 徹 kotetu

iOS 15とXcode 13のリリースにより、SwiftUIのTextやAttributedString等で指定する文字列の中でMarkdown記法を使用できるようになりました。全てのMarkdown記法が使えるわけではありませんが、ボールドやイタリックなどの簡単な文字装飾であれば文言と一緒に文字装飾も定義できるため、文言変更と同時に文字装飾を変更したい場合でも文言定義を変更するだけで対応できるといったメリットがあります。

本稿では、そんなMarkdown記法について、特徴や使い方、さらにはカスタム属性構文の使い方について解説します。

コンテンツ(予定):

  1. iOS 15から使えるようになったMarkdown記法について
  2. AttributedString、SwiftUIでの利用方法
  3. iOS 13 / 14での利用について
  4. カスタム属性構文について
7
採択 原稿(4ページ)

Apple Silicon から学ぶ CPU の歴史

AkkeyLab AkkeyLab AkkeyLab

・x86_64 と arm64
・Rosetta から Rosetta2 へ
・CPU アーキテクチャ変更2回目の Apple

皆さんは現在利用している Mac の CPU アーキテクチャをご存知でしょうか?アーキテクチャと言っても MVVM とか Clean Architecture のようなソフトウェアアーキテクチャではなく、命令セットアーキテクチャと呼ばれるものになります。
例えば、Intel であれば x64, Apple Silicon であれば ARM が命令セットアーキテクチャです。

本稿では Apple Silicon を中心に CPU に関する歴史を文系・理系関係なく楽しんでいただけるようにご紹介します。
日頃使っている開発環境がどのようなハードウェア設計のもとで動作しているかを知ることで、Apple の素晴らしいハードウェアが更に好きになること間違いなしです!

11
採択 原稿(8ページ)

AkkeyLab流イミフクラッシュ解読術

AkkeyLab AkkeyLab AkkeyLab

・手元で再現できない
・心当たりのないクラッシュ
・何ヶ月も触ってない行でクラッシュ

このように嫌な予感がする現象に皆さん一度は遭遇したことがあるのではないでしょうか。
そして、調査手順次第ではもっと早く原因特定できたのに…と悔しい思いをしたこともあるかもしれません。
そこで、本稿では効率的な原因探索方法を図を用いて解説いたします。

・直近でアプリのリリースがなければサーバ側の調査(GCP を例にご紹介)
・スタックトレースと合わせてクラッシュ直前のログも確認
・外部要因が疑われる場合は Twitter を活用
などなど

このような調査手順に絶対的正解は存在しないため、チームでも属人化しがちな箇所ではないでしょうか。
そこで、本稿を元にチームでアレンジを加え、秘伝のタレとして育ててみてはいかがでしょうか?ドメイン知識の薄い新メンバーも爆速で難問解読のプロになること間違いなしです!

9
採択 原稿(2ページ)

iOSDC Japan 2022のパンフレットを盛り上げるイラスト

littleossa リルオッサ littleossa

何らかの形でiOSDC Japanに貢献したいので、パンフレットを盛り上げる奇妙で陽気なイラストを描きます。
昨今、エンジニアの働き方としてリモートでの働き方も多くなりました。皆様はどんな働き方をしていますでしょうか?

今回は、「まだ世の中には存在していないだろうけど、こんなリモートワークスタイルもあったらいいのでは?」をいくつかピックアップしてイラストにします。

共感出来ないこと、間違いなし!!!!!

8
採択 原稿(2ページ)

iOSアプリ開発あるある4コマ〜2022年版〜

the_uhooi uhooi the_uhooi

iOSアプリ開発でよくあること(俗にいう「あるある」)を4コママンガでめちゃくちゃ面白く表現します。
一昨年に続き昨年もXcodeがインストールできなかったので、今年こそ実際の開発のあるあるが言いたいです。

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

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

fromkk かっくん fromkk

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

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

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

n_atmark あつや n_atmark

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

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

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

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

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

ShazamKitの遊び方

namu767676 Naoyuki Murata namu767676

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

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

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

shinya_todaka Shinya Todaka shinya_todaka

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

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

について紹介します。

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

ウーニャ、しってる。みんなふんいきでSwiftUIをつかってる。

the_uhooi uhooi the_uhooi

SwiftUIでViewを構築するのは難しいです。

何も考えずに書くとクソデカViewになります。
複数のViewに分割する場合も、プロパティやメソッドに切り出すのがいいか、構造体を定義するのがいいか迷います。

Viewの命名も迷います。
Atomic Designに沿うのもいいですが、iOSと馴染めない気がします。
UIKitに近い命名はわかりやすいですが、SwiftUIではスマートでないと感じます。


「いきなりぐちってごめんなさい。ウーニャほんとはSwiftUIとなかよくしたいです…!」

このトークは、ウーニャ(私)とみんながSwiftUIのViewの分割と命名について一緒に考えます。
まずはウーニャがViewの分割や命名の考え方を話すので、それについてコメントを頂き、議論してよりいいViewの構築を考えます。

かなりふあんですが、だいじょうぶます。がんばるます。