LT(5分)

Xcodeの便利ショートカットを使いこなしてSDGsに貢献する

tsuzuki817 Ryo Tsuzukihashi

日々の開発の中でショートカットキーは使いこなしていますでしょうか?
一人一人の開発者が便利なショートカットキーを使いこなすことで、開発時間の短縮、使用電気量の削減、そして何よりあなた自身の時間をより生産的なことに有効活用することができるようになります。

このトークでは実際に現場で使えるショートカット・ツールをユースケースを用いて解説・実践します!

一緒に持続可能な開発体験を構築していきいましょう!

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

天候を活かせ!WeatherKitを使いこなしてアプリに天候情報を活用する

tsuzuki817 Ryo Tsuzukihashi

WeatherKitを使用することで、開発者は簡単に最新の天気データを取得し活用することができます!
天気アプリにはもちろんのこと、それ以外カテゴリのアプリでも天候情報は有効活用することができます。
実際にどのようにWeatherKitを使いアプリに組み込んでいくのか実際のデモを交えて説明します。

参加者がWeatherKitを活用して魅力的で実用的なアプリを開発するための知識とアイデアを提供します!
ぜひご参加いただき、ユーザーにとって役立つアプリを作り上げましょう!

トーク内容

  • WeatherKitの概要
  • 実際の使い方
  • 注意事項
  • etc
LT(5分)

大量のアプリをお世話するHOW TO

Reimim03 Matsumoto Reimi

26個のOEMアプリをお世話することになったエンジニアが、そのHOW TOを2種類の方法を説明・比較しながらご紹介します。
どのように実装・管理すれば同じコードから異なるアプリに切り替えてビルドができるのか、
面倒なところや難しい点はどういうところなのか...大量のアプリをお世話することになりそうなエンジニアに聞いてほしいLTです!

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

XcodeのLLDBデバッガーの便利な使い方を覚えて開発効率を向上させよう!

こちらのトークではXcodeのLLDBデバッガーの便利な使い方を紹介します。
LLDBとは、Xcodeに標準搭載されているデバッガーです。
LLDBを使いこなすことによって、デバックを効率よく行うことができ、開発スピードの向上が見込めます。
p, po, vコマンドなどの基本的なコマンドの解説のほか、再ビルドせずに変数をLLDBで書き換える方法などを紹介します。
こちらのトークが皆様のLLDBデバッガーについての理解の助けになれば幸いです。

3
LT(5分)

Effective The Composable Architecture

yimajo 今城 善矩

このトークはThe Composable Architecture (TCA) を効果的に使うためのトークです。

TCAが発表されて3年間。私はプロジェクトで利用したり、人にアドバイスをする仕事をいくつもしてきました。

TCAは関数型プログラミングをベースとしたiOSアプリ開発を実現してくれるフレームワークではありますが、それはある種の問題を解決するためで、高尚な概念を理解しないと使えないようなフレームワークではありません。

我々iOSアプリ開発者がアプリをリリースをしないといけない限られた時間の中で、どのような手法がより効果的で、何を妥協すべきではないのかについて話せればと思います。

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

実践 SwiftUIレイアウト設計パターン

_rockname 岩名勇輝

SwiftUIは宣言的にUIを組むことができるフレームワークです。その柔軟な設計思想によって、一つのレイアウトを取ってみても実装方法は数パターン存在します。
例えば、Viewにおける余白の表現においては、VStack/HStackのspacingを用いる方法や、paddingのModifierを用いる方法などが存在します。
しかし、一見期待するレイアウトになっていても、変更に弱いレイアウトとなってしまったり、パフォーマンス上問題となる場合などがあります。そのため、状況に応じて適切な実装パターンを見極める必要があります。
そこで本トークでは、さまざまなレイアウトにおいてSwiftUIによるベストなUIの組み方について体系的にお話しします。本トークを通して、聴講者の皆さまがSwiftUIでViewを実装する際に迷いなく適切な実装方法を選択できるようになることを目指します。

4
ルーキーズLT(5分)

iOSアプリにFirebaseのOpenID Connectを使った認証機能を組み込む

アプリ開発において、ユーザーの認証機能は非常に重要です。安全かつ堅牢に認証基盤を作ることが必要とされます。

このトークではiOSアプリにFirebaseのOpenID Connect(OIDC)を活用した認証機能を組み込む方法についてご紹介します。
実際の大規模iOSアプリ開発プロジェクトで、OIDCを使用したユーザー認証機能の開発に取り組んで得られた経験や知見を共有します。
具体的なコード例や設計上の考慮事項も取り上げ、実践的な知識の共有ができるようにしたいと思います。

3
レギュラートーク(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
レギュラートーク(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
レギュラートーク(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