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

UserDefaultsをハッキングする

zit247 zit247

iOS開発者なら一度は使ったことのあるUserDefaultsですが、実は外部から閲覧・書き換えをすることができてしまいます。
クレジットカード番号やパスワードなどセキュアな情報をUserDefaultsで管理してませんか?

App Store Reviewガイドラインにもあるようにユーザーのプライバシーの保護は重要視されています。

このセッションではローカルにデータを保存したいときにどのように実装すれば良いのかを解説します。

・UserDefaults
・Keychain
・Core Data

データを扱う方法は複数ありますが、それぞれの特徴や選び方を説明します。
このセッションを通して安全なアプリづくりを目指しましょう!

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

Unity as a Libraryを用いたiOSアプリケーション開発における課題と改善策

rizumi_jp izumi

Unity as a Libraryは、Unityで書いたコードをライブラリとしてiOSアプリケーションに組み込むことができる仕組みです。
この仕組みによってUnityを用いた3D表現を取り入れつつもSwiftUI / UIKitを用いたネイティブUIの提供を実現することができます。

Unity as a Libraryは強力な仕組みですが、ビルド時間増加や実機 / シミュレーター切り替えが容易にできず開発体験が低下してしまう問題や、ネイティブとUnity間でのデータの取り回しやUnityからネイティブ機能を利用したい場合の課題など、様々な課題が存在します。

このトークでは、Unity as a Libraryの概要を説明した後に、実際にUnity as a Libraryを利用しているアプリを開発している中で直面した課題とその改善について紹介します。

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

Visualizing Project Module Dependencies with XcodeTargetGraphGen

yimajo 今城 善矩

モジュール分割していてもアプリの成長とともにプロジェクトの複雑さは増加し、依存関係を把握しきれず、さらに依存関係の改善を後回しにしたり放置することもあるのではないでしょうか。

そこで開発したのがSwift製ツール「XcodeTargetGraphGen」で、GitHub上で公開しています。これは.xcodeprojからモジュールの依存関係を抽出しマーメイド記法で可視化します。開発者はこのツールにより全体像掴みアーキテクチャの改善点を特定でき、もちろんGitHub ActionsによりPR時の自動化も可能です。

このセッションでは.xcodeprojについて解説し、導入方法とCI実行によるユースケースを通じ依存関係の自動可視化がどのようにプロジェクトの理解に役立つか実演します。

依存関係に頭を悩ませている方、あるいは大規模なプロジェクトを手掛ける方へ役立つ情報となるはずです。

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

チーム開発に欠かせない5つのiOS開発ツール

_matatabiz またたび

iOSアプリを担当することになって、何から手をつけていいかわからない経験はありませんか?
このセッションでは、チーム開発で役立つ実用的な5つのツールを
実際の導入手順や基本的な設定、注意点などを説明します。

  1. Makefileでビルドの自動化
  2. SwiftLintでコード品質の向上
  3. SwiftFormatでコードフォーマットの統一
  4. Loggerでログ管理の改善
  5. SnapshotTestでビジュアルテストの自動化

効率的な開発と円滑なチームコラボレーションの両方を実現するために、5つのツールの活用方法とチーム開発の重要性を探求しましょう。

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

iOSではじめるWebAR 2023

ikkou HEAVEN chan / ikkou

iOSDC Japan 2020、2021で発表してきた『iOSではじめるWebAR』シリーズの最新版です!

先日のWWDC23で、SafariのレンダリングエンジンであるWebKitがWebXR Device APIに対応することが発表されました。

Spatial Webを見据えた“これから”を考える布石として、iOS 15.4から“限定的に”対応しているWebXR Device APIの最新状況の他、AR Quick Lookやmodel要素といったiOSにおけるWebARの“現状”をコンパクトにお伝えします。

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

RxSwiftからSwift Concurrencyへ〜通信処理を効率よくリファクタリングするためのテスト戦略〜

417_72ki 417.72KI

Swift Concurrencyの登場から2年が経過し、実際のプロダクトでもRxSwiftからSwift Concurrencyへの移行が進んでいることでしょう。
しかしいきなり脱RxSwiftしようとすると得てして想像以上に影響範囲が広くなるため、影響範囲を抑えるべくミニマムなリプレースから始めていくことになります。

本トークでは、どんなシンプルなアプリでも非同期処理から逃げられない通信周りの処理について、RxSwiftによる実装からSwift Concurrencyによる実装へ最小工数で移行したプロセスについて説明します。

  • RxSwiftベースの通信処理実装
  • モックライブラリを使った通信処理のテスト実装
  • RxSwiftベースのテストとSwift Concurrencyベースのテスト
  • deprecated を使った未移行箇所の特定方法
3
レギュラートーク(20分)

Animoji で始まる ARKit 開発

Megabits_mzq_jp Megabits

Apple は今年の WWDC で Vision Pro を発表しました。AR の将来がとても期待できます。皆さんも AR の開発に興味が湧いていると思います。

AR コンテンツを開発するとき、プログラミングの部分だけでなく、3D に関する知識も必要になります。しかし、ゲーム開発をやったことない、3D を触ったこともないから、どこから勉強すればいいかわからないことがありませんか。今回、Animoji を通じて、AR コンテンツの作り方を一緒に体験しましょう。

Animoji は、カメラで撮影した人の顔の動きを検知し、キャラクターがリアルタイムで同じ表情を表現するものです。今回は、Blender を使用したモデルの準備から、ARKit の実装まで、最初から一つの AR コンテンツを完成します。この流れを体験したら、将来 AR コンテンツを作りたい時参考になるでしょう。

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

Fluid Interfaces と 遊び心

akihiro_kokubo Akihiro Kokubo

Fluid InterfacesはAppleの提唱するデザイン思想で、iOSの世界では避けては通れません。
“Fluid” でない体験は、摩擦を生み、ユーザの信頼を損ねます。
Appleは “遊び心” と “とにかく作ってみること” を強調しているため、ここでは遊び心を持って実際に作ってみます。
このトークをきっかけに、”Fluid” な世界に足を踏み入れてみましょう。

このトークで話す内容

  • Fluid Interfaces とは何か
  • 何がインターフェースを “Fluid” にするのか
  • なぜ Fluid Interfaces が重要なのか
  • スクロールという動作を対象として、遊び心を持って “Fluid” な体験を追及する

対象者

  • インターフェースの追求に楽しさ・喜びを感じる人

持ち物

  • 遊び心
12
レギュラートーク(20分)

Swiftを活用したKMM導入戦略

oskmr_ miseri

ネイティブアプリのロジック共通化にKotlin Multiplatform Mobile(KMM)を導入するアプリが増えてきました。
しかし、KMMでiOSのロジックを共通化するにあたっての設計や、Swiftで使いたい技術との共存など、より便利に使うためのベストプラクティスはまだまだ未知数な部分が多いのではないでしょうか。

私たちのアプリではKMM活用した新アーキテクチャを設計し、大規模なリアーキテクチャを進めています。

そこで本トークでは「タップル」アプリにおける新アーキテクチャについて紹介し、

  • Swiftを活かして共通化するためのtips
  • KMMを導入する画面、導入しない画面の基準
  • SwiftUIとSwift Concurrencyをどのように活用するか

についてお話しします。

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

SaaSアプリに最適⁉︎KMMで共通基盤を構築事例

1wa46 NAO HONDA

SaaS モバイルアプリケーション開発のための共通基盤としてKotlin Multiplatform Mobile(KMM)を使用する事例を紹介します。特にSaaSドメインでは、モバイルデバイス管理(MDM)のサポートが必須となります。そのため、UI以外を共通化し、複数のプラットフォーム(iOS、Androidなど)で効率的な開発を可能にするKMMは、この要件を満たすのに適しています。このセッションでは、開発効率、コードの再利用、テスト/CI、そしてメンテナンス性に焦点を当て、KMMの活用によるこれらの要素の改善方法を示します。また、このプロセスで遭遇した課題やそれらの解決策についても詳しく説明します。このセッションは、複数のプラットフォームでの効率的なアプリ開発を目指す開発者や、SaaS環境でのKMMの活用を探しているテクノロジーリーダーにとって、手助けとなる情報を提供します。

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

Accessibilityフレームワークの全て

coffeegyunyu 日向強

iOS 14より、Accessibilityフレームワークが登場しました。
Accessibilityフレームワークが初めて導入されたiOS 14では、カスタムコンテンツをUIコンポーネントに含めるなど、アクセシビリティの向上につながる機能が追加されました。
時は進み、現在のAccessibilityフレームワークではカスタムコンテンツのみならず、さまざまな機能が含まれるようになりました。
当トークでは、Accessibilityフレームワークの機能を俯瞰し、アプリ開発者に対し、iOS上でどうアクセシビリティ向上が図れるのかを見ていくトークとなります。

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

AR動画作成用ツールをSwiftで実装する

shmdevelop 服部 智

近年、ARやVRが注目を集め、それに伴い空間感のある映像表現の需要は高まり続けています。

私が撮影スタジオ作業に携わる中で、空間内位置情報取得とカメラトラッキングデータ取得の準備と手間に大きな課題を感じていました。
そこでiPhoneを活用することでその課題を解消した制作ワークフロー実現が期待できます。

  • ARKitを使った空間内位置情報取得
  • カメラ情報取得
  • ジンバルロックへの対応
  • 映像保存
  • ゲームエンジン、DCCツールへの取り込み

ソースコードの解説と、データ取得からAR動画書き出しまでのデモにより、分かりやすく説明します。

このトークを聞くことで、AR表現や空間データの面白さと可能性を実感していただけることを願っています。
この分野に興味がある方は、ぜひ一緒にARの未来を切り拓きましょう。

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

Androidと比較しながらおさえる! 新しいHuman Interface Guidelineの勘所と活用法

m_yamada0617 明渡 麻衣花

2023年6月、iOSアプリ開発者におなじみHuman Interface Guideline(以下HIG)が大幅に更新されました。
更新前は、迷える初心者から「これからアプリ開発するならiOSとAndroidどちらがいい?」と相談を受けた場合、私は迷わずAndroidを薦めました。
理由の1つは、Googleの公式ドキュメントのほうがアプリ開発者へ圧倒的に親切だから。この理由が解消しました。

このセッションでは私のiOS・Android・Flutter開発経験を活かしつつ、以下についてお話します。

  • AndroidやFlutterで採用されているMaterial Designのガイドラインと比較しつつ、HIGの基本理念をおさらい
  • プラットフォームを問わず、ネイティブアプリを開発する上で大事にしたいこと引用集
  • Appleのアプリケーション開発にきっと役立つHIG活用法
2
レギュラートーク(20分)

運用10年目サービスにおけるデザインシステムを念頭に置いたコンポーネント戦略

BOBG1018Vi ぼぶ

皆様このような経験はございませんか?

  • 作成するこのボタンやシートが,既に定義しているコンポーネントと少し異なっている
  • 既存コンポーネントを説明しても,今回だけはこの仕様で実装してほしいと相談された
  • 既存コンポーネントを修正を試みるが,影響範囲が広すぎる
  • そうして出来上がったコンポーネントの亜種が継ぎ足されて,数ヶ月経過した

本トークでは,運用10年目サービスにおけるデザインシステムを念頭に置いたコンポーネント戦略についてご紹介します

  • 組織に対するコンポーネント定義の説明
  • デザイナーとの定義・実装方針の決め方
  • SwiftUIとUIKitの併用
  • VRTやUICatalogの活用
  • Atomic Designを模した実装方針
  • Androidも含めた統一的な命名・仕様

このトーク内容が,皆様の開発を加速させるきっかけになることを願っております

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

ビジョンとサウンド:iPhoneを「目」と「耳」にする技術

_chocoyama たまねぎ

現在のiPhoneは、高度な認識能力を持つ「目」と「耳」を持っており、現実世界の物体や音の情報を簡単に取り込むことができるようになっています。
例えば、Vision/VisionKitを用いた物体・文字認識、ShazamKit/SoundAnalysisを用いた楽曲・環境音認識など、すぐ使える機能だけでも多数の技術が存在します。
本セッションではiOSで利用できる画像・音声認識周りの技術を整理し、それを用いた実装方法をデモを交えてご紹介いたします。

コンテンツ

  • 「目」となる技術(物体認識、文字認識)
  • 「耳」となる技術(楽曲認識、音声認識、環境音認識)
  • 各技術を用いたサンプル実装のデモ

聞き手の想定

  • 画像認識や音声認識周りの技術について、まずは深い理解よりも実現できる事の全体感を把握したい方
  • 実装方法の概要を掴み、自身のAppに組み込むイメージを持ちたい方
1
レギュラートーク(20分)

友人とのチーム開発を、計画的に進める仕組み作り

xiii11100 Aoi Takahashi

会社や学校などの組織に所属している人の中には、本業の合間時間に友人とソフトウェアを開発して
・共に技術を伸ばしたい
・願わくは一発当てたい
と思っている人もいるでしょう。

しかし、各メンバーの裁量だけで開発していては、計画的に開発を進められなかったり、開発に大きな偏りが生まれてしまいます。
その結果、チーム開発自体が自然消滅してしまったり、開発速度が遅くなり、リリースまで辿り着けなかったりすると思います。

本発表では、実際に 3 年以上に渡って友人 2 人とチーム開発をしてきた実体験を交えながら、チーム開発を計画的に進める仕組み作りについて紹介します。
これから友人とチーム開発をしてみたい、現在しているけど難航している、という人たちの役に立てばと思います。

紹介例としては
・週に 1 回の定例会を設けよう
・タスク目標ではなく、作業時間目標を立てよう
などがあります。

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

KMM×個人開発プロジェクトで「後悔した私」から、これから「KMMしたいあなた」へ

mesummery Natsui

マルチプラットフォーム開発手法のひとつとして、KMM(Kotlin Multiplatform Mobile)を耳にする機会が増えてきました。安定版のリリースがまだにも関わらず、すでに商用アプリでの導入例がいくつも見られます。一方で、個人開発でKMMを採用している方はまだ少ないのではないでしょうか?

このセッションでは、個人開発でKMMを利用するメリットとハードル、有効活用のためのヒントをご紹介します。
KMMの特徴のひとつは「導入のしやすさ」ですが、うっかり飛びつくのは後悔のもと。

  1. KMMの概要とメリット
  2. 導入時のハードル:
    • 共有範囲の選択
    • 学習コスト
    • 開発環境
  3. おすすめの開発スタイル:
    • 仕様とスタイルの明確化

を個人開発という視点から、企業と個人開発でのKMM導入経験に基づいてお話します。

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

JSON アニメーションを読み書く

motoshima1150 motoshima1150

昨今 SwiftUI でアニメーション表現が行いやすくなりましたが、 iOS / Android 共通で表現する際にはLottieファイルを扱うことが多いです。。
LottieとはAirbnbが開発している、SVGアニメーションライブラリです。動画などに比べて、ファイルサイズが小さくとても便利なライブラリです。

アニメーションのやり取りにはJSONファイルで行うことが多いですが、デザイナーから受け取ってそのままコードで利用することが多いのではないでしょうか。
このトークでは、デザイナーから受け取っている謎のJSONファイルを理解し、適切な利用やデザイナーとのコミュニケーションに役立つ一助になれば幸いです。

  • 何が書かれているのか。
  • 何ができて何ができないか。
  • どうやって作られているのか。
  • KeyPathでJSONファイルを書き換える。
4
レギュラートーク(20分)

Swiftへの貢献を楽しもう!コントリビュート手順とテスト技法の実践ガイド

ojun_9 ojun

本トークでは、OSSとしてのSwiftへの貢献の重要性と、私自身のコントリビュート経験を共有します。
初めての方でも参加しやすいよう、Swiftのコードベースに貢献するための具体的な手順を紹介します。

さらに、Swiftの品質を保つための重要な要素であるテストについても触れます。
特に、LLVMのテストツール「lit」を活用したテスト方法を説明します。
これにより、Swiftへの貢献が順調に進められ、コードの品質を保つことができます。

本トークを通して、参加者の皆さんがSwiftのコードにカジュアルにPRを投げれるように、そしてそれが、SwiftのOSSコミュニティの成長に貢献できれば幸いです。

このトークはSwiftへの貢献に興味がある方やテストスキルを向上させたい方を対象としています。
Swiftコミュニティへの貢献を検討している方に、このトークが役立つことを願っています!

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

CIツール選定のコツ

akinari_ito 伊藤 明成

CIツール選定は、iOSアプリ開発に限らずプロジェクトにおいて重要な要素です。本発表では、スキルマーケット『ココナラ』アプリ開発で経験した、CIツール移行で得た知見を共有し、予算・工数・保守性といった観点から、CIツール移行を検討する際に考慮したポイントについても、話せる範囲でお話しします。最終的な判断にいたった経緯や選定した理由が、CIツール移行を迷っているかたの手助けになれれば幸いです。