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

SwiftとXcodeを使ってアセンブラに入門してみよう!

こちらのトークでは簡単な例を使い、低水準言語であるアセンブリ、アセンブラに入門してみます。
ソフトウェアエンジニアとして働いていると、アセンブラを学習する機会はほとんどないかもしれません。
しかし、アセンブラを学習することにより、CPUの機能やOSの役割が手を動かしながら理解できます。
Swiftで簡単なプログラムを記述し、Xcodeでアセンブリを表示させ、それを読めるようになるために、基礎的な箇所を解説します。
こちらのトークが皆様のアセンブラについての理解の助けになれば幸いです。

アセンブリ...言語の名称。
アセンブラ...アセンブリ言語で書かれたソースを機械語に変換するためのソフトウェア。

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

これから始める人のためのpasskeys(パスキー) 〜 passkeys対応推進のために技術要素・メリット・実装を理解する

kotetu 栗山 徹

「passkeys」は、パスワード認証の欠点(使い回しや情報漏洩の問題等)に対応し、パスワード認証を置き換えるべく開発された新しい認証技術です。

Googleのログインシステムがpasskeysに対応したことで、今後、より多くのサービスでpasskeysを採用する可能性が拡がってきました。

passkeysに対応することで、セキュリティだけでなくアカウント作成やログインの手間軽減といったユーザビリティ面でのメリットがありますが、メリットだけでなくpasskeysの仕組みを理解することで、より効果的な導入推進が行えるようになるのではないでしょうか。

本セッションでは、passkeysに興味のある方やこれから導入したいとお考えの方を対象に、passkeysを構成する技術要素(WebAuthn、公開鍵認証など)の紹介から、導入のメリット、アプリやサーバーでの対応方法についてご紹介します。

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

Google Analytics 4を使ったSingle Page Application (SPA)の正確なデータ取得方法

i_kinopee 木下郁英

この発表では、Single Page Application (SPA) において Google Analytics 4 (GA4) を効果的に活用するための基礎知識から、実際の問題解決策までを解説します。
Webアプリを運用している方や、アプリエンジニアで新たにWebアプリの計測を行いたい方の参考になると幸いです。

  • GA4について

    • Googleの最新の分析ツールであり、詳細な分析とレポートを提供
  • SPAにGA4を導入する方法

    • ページの遷移がないSPAで、 Google Tag Managerとの連携により導入可能
  • 拡張イベント計測機能について

    • GA4で準備されている拡張イベント計測機能の利用方法
  • イベント計測の実用例

    • 要素の表示やクリック、スクロールなどの計測の実装と分析方法
1
LT(5分)

気づいたらCTOになってた話

Izu

組み込みエンジニアとしてキャリアをスタートさせましたが、
気づいたらiOSエンジニアになってiOSアプリを作って、
気づいたらマネージャーになって組織を見るようになって、
気づいたらCTOになって会社を見るようになってました。

それぞれのフェーズでやってきたこと、何が変わったかをお話したいと思います!

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

IdentityPlatformを活用してモバイルアプリのセキュアな認証基盤をつくる

アプリ開発において、ユーザーの認証機能は重要です。セキュリティ上の脅威に対して、堅牢かつ安全に認証基盤を構築することが求められます。

Google CloudのIdentityPlatformは、幅広いセキュリティ機能を持った認証機能を提供するサービスです。多要素認証やOAuth、OpenIDConnectなどの認証プロトコルをサポートしておりiOSアプリのよりセキュアな認証機能の開発に活用することができます。

本トークでは、実際のiOSアプリ開発プロジェクトで、IdentityPlatformを活用したユーザー認証機能の開発を行い、そこで得られた知見や実践的なノウハウを共有いたします。
また悪意のあるユーザーからの攻撃に対してどのようなセキュリティ対策を取ることができるかを具体的にご紹介します。

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

状態管理アーキテクチャとスナップショットテスト

417_72ki 417.72KI

アプリ開発ではMVPやMVVMといったアーキテクチャのプロダクトが多いですが、SwiftUIの登場によってReduxやTCAといった状態管理ベースのアーキテクチャも浸透しつつあります。
そんな状態管理アーキテクチャですが、スナップショットテストと相性がいいのはご存知でしょうか?

本トークでは、自社で採用しているアーキテクチャを例として以下の内容を話します。

  • スナップショットテストを導入した背景
  • 他アーキテクチャと比較したスナップショットテストとの相性
  • UIKitにおけるスナップショットテストとSwiftUIにおけるスナップショットテスト
  • 定期的なリリースにおけるテスト戦略
    • ユニットテスト、スナップショットテスト、QA(人力)テストの責務

見た目のテストをしたいと思いつつUIテストはそのコストから手を出しづらいという方の手助けになれば幸いです。

4
採択
2023/09/03 17:00〜
Track A
LT(5分)

MFi認証不要! iPhoneとMIDIで双方向通信できるUSBデバイスを作ろう

ooba 大庭 慎一郎

ある日、「MFi認証なしでiOSと双方向通信できるUSBデバイスって作れますか?」という相談を受けました。UARTでシリアル通信するUSBデバイスをiOSからも制御できるようにしたいという話だったのですが、この場合はMFi認証が避けられません。そうなると費用もかかるし対応も大変です。

Bluetooth LEを勧めようとしたところ、ワークショップなどではペアリングも電源も不要な有線接続は需要があるそうです。これはなんとか叶えてあげたい…! そこで提案したのがUSB MIDIデバイスでした。MIDIなら双方向通信できるし、一般的なUSBデバイスなのでMFi認証も不要なのです。

本トークでは、USB接続の拡張ボード「AkaDako」をiOSに対応させた経験から、USB MIDIデバイスの作り方や、MIDI上で独自の通信をする方法、MIDI通信プログラミングのポイントなどをお話しします。

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

RettyアプリのGraphQL導入への道のり

miki_fms miki

Rettyアプリではアプリの開発体験・生産性向上に向けてGraphQLの導入を進めています。
私たちが抱えていた技術負債やGraphQL導入に至るまでの経緯や導入に関わる実装についてご紹介します。

  1. Rettyのシステムについて
    Rettyの全体的なシステム構成や、アプリとBFFに関する技術的負債など
    REST APIの辛さとGraphQLの導入について

  2. GraphQLの導入
    apollo-iosによるアプリケーション実装・モジュール設計・XcodeCoudでのCIの実装について

  3. これからのGraphQLを導入した今後の展望
    GraphQLの導入とともに、SPMによるマルチモジュール化なども同時に進めています。
    現在はGraphQLを段階的に導入している段階ですが、今後のアーキテクチャの変化など、チームで議論している展望についてお話しします。

2
採択
2023/09/03 13:55〜
Track D
レギュラートーク(20分)

認証体験向上のためにpasskeys(パスキー)に対応する 〜 メリット・対応方法について

kotetu 栗山 徹

「passkeys」は、従来のパスワード認証の欠点(使い回しや漏洩の問題等)に対応し、パスワード認証を置き換えるべく開発された新しい認証技術です。

passkeysは、セキュリティ面だけでなく、ユーザビリティ面でも導入のメリット(パスワード入力が不要、端末間での認証情報の共有、など)があります。

2023年の5月にGoogleのログインシステムがpasskeysに対応したことで、今後、より多くのサービスでpasskeysを採用する可能性が拡がってきました。

本セッションでは、passkeysに興味のある方やプロダクトでのpasskeys対応を検討している方を対象に、passkeysの概要、セキュリティ・ユーザビリティ面での対応のメリット、アプリ側・サーバー側それぞれの対応方法についてご紹介します。

本セッションを通じ、多くの方がpasskeysに興味を持っていただけたら幸いです。

採択
パンフ記事(2ページ)

DEVELOPER x DEVELOPER

na9ain nagain

"開発"という言葉が放つ魔力
その力に魅せられた奴等がいる
人は彼等をデベロッパーと呼ぶ


iOS Developerたちの日常をマンガでコミカルに描きます。

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

SwiftUIのListで独自のアコーディオンUIを実装する方法

higekick39 ikgm

SwiftUIのListはUITableViewで実装していたUIをより直感的に書き直すことが可能で、SwiftUI導入の効果が最も感じられるコンポーネントの一つです。
しかし、我々が真に実現したいUIはチュートリアルのようなシンプルな構造のものばかりではなく、公式で用意されているものでは実装が難しい場合があるでしょう。
SwiftUIでもアコーディオンUIを実現するためにDisclosureGroupが用意されていますが、アコーディオンを開閉するためのボタンの位置や表示をカスタマイズできないなど、なかなかかゆいところに手が届かない場合があります。そんな場合でもListの基本機能とSwiftUIのアニメーションを用いて独自のアコーディオンUIを構築することができました。
本トークでは実プロダクトへの導入事例に沿って、その実装を解説します。一見困難なUI構築の際のヒントとなれば幸いです。

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

Flutter Add-to-app 導入から運用、iOS ネイティブで再実装するまで

kiwi_yuki TKG

弊チームの開発するアプリでは、Flutter Add-to-app を2020年に導入し、ネイティブの実装と Flutter での実装を共用して開発・運用を行っていました。
しかし、メンバーの入れ替わりや、Flutter 起因の不具合などの理由から、Add-to-app をやめ、iOS ネイティブで再実装するに至りました。

本トークでは、Add-to-app の導入時、運用時の良かった点や良くなった点を振り返ります。
そして、ネイティブで再実装する際に Flutter から Swift への書き換えや安全に移行するために行ったことをお話します。

本トークを通じて、Add-to-app が適するタイミングや規模感、メリット・デメリットを実感してもらい、皆さんの技術選定の手助けになる情報を提供します。

対象者: Flutter Add-to-app に興味がある方・チーム

4
LT(5分)

Meet XcodeTargetGraphGen

yimajo 今城 善矩

XcodeTargetGraphGenというCLIツールをSwiftで作成し公開しています。このツールはXcodeの.xcodeproj/project.pbxprojファイルからターゲットの依存関係を解釈し、マーメイド記法によって出力することでモジュールの依存関係を可視化するツールです。

project.pbxprojファイルを解釈することによって、プロジェクト内のEmbed Frameworkで作られたモジュールの依存関係だけでなく、Swift Packageで作成されたモジュールや利用するApple製SDKのフレームワーク、Carthageや一部の古いフォーマットのCocoaPodsにも対応しています。

XcodeTargetGraphGenをどのようにして使うとプロジェクトを改善できるかについて紹介できればと思います。

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

Swiftでパイプライン演算子を自作して可読性をあげよう!

こちらのトークでは簡単な例をもとにパイプライン演算子を自作します。
メソッドの結果を受け取り、その結果をメソッドの引数にわたし、さらにそのメソッドの結果を受け取って...
を繰り返すような処理を行いたいときに、ローカル変数が必要以上に増えてしまったり、入れ子が多くなり読みずらいなといった経験はありませんか?
このような問題をパイプライン演算子という演算子を用いれば、コードの読む順番を処理順にすることができ、可読性の向上が見込めます。
しかし、残念ながら、Swiftにパイプライン演算子は定義されていません。
定義されていないので、自作してみましょう!
さらに、オブジェクト指向プログラミングでよく用いられるメソッドチェーンとも比較し、それぞれのメリットとデメリットを紹介します。
こちらのトークが皆様の演算子の理解のきっかけになれば幸いです。

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

Reactから使えるSwiftモジュールをビルドする!

iceman5499 Iceman

Swiftはいいぞ!
WebAssemblyによって、SwiftはWeb開発にも利用できるようになりました。
JavaScriptKitによってSwiftからJSをフルに活用できますが、SwiftをメインにWebアプリを開発するのはまだまだ敷居が高いです。
Swiftの活用を広めるにはTypeScriptをメインにSwiftをライブラリとして添え、既存のWeb資産と融合していくべきだと考えました。

このトークでは、SwiftライブラリをReactから用いる手順と、それを使って実際にどのようなアプリケーションが開発できるかを紹介します。

  1. Swift関数をexportする
  2. exportされたSwift関数にTypeScriptの型をつける
  3. SwiftのクラスオブジェクトをTypeScriptから操作可能にする
  4. Swiftクラスの状態をReactのstateと同期する
4
レギュラートーク(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
LT(5分)

Unity as a Libraryを用いたプロジェクトのビルド環境改善

rizumi_jp izumi

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

Unity as a Libraryは強力な仕組みですが課題も多く、Unity Projectのサイズが大きくなることによりビルド時間の増加やエラーが起きること、実機 / シミュレーターの切り替えが容易に行えずに開発体験を悪化させてしまう、といったビルド関連の課題があります。

このトークでは、Unity as a Libraryの概要を簡単に説明した後に、実際にUnity as a Libraryを利用しているアプリで行ったビルド改善について紹介します。

1
LT(5分)

チーム開発を強化するiOS開発者のためのMakefile入門:知識共有で効率アップ!

_matatabiz またたび

新規プロジェクトに参画してREADMEの開発環境構築を実施するだけで一日が終わってしまった経験はありませんか?

make コマンドは、長い歴史を持つビルドツールですが、iOSプロジェクトにも簡単に導入することができます。
Makefile の力を借りて知識の共有と開発プロセスのスタンダード化を実現する方法を紹介します。

開発環境構築をコマンド一発で完了したい
あの人の神コマンドをチーム内で共有したい

そんな悩みを Makefile で全てタスク化することで解消し、成功への道を歩みましょう。

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

Visualizing Project Module Dependencies with XcodeTargetGraphGen

yimajo 今城 善矩

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

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

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

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

2