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

Dynamic linkingを極める

Li Jierong

Xcodeのlinkingはstaticとdynamic二種類あり、ターゲットのテンプレートもそれぞれ、Static LibraryとDynamic Frameworkとして用意されています。
Dynamic linkingを使用することで、ビルド時間の改善、バイナリサイズの削減ができます。

Dynamic linkingをデフォルト採用する上で、知っておきたい以下の項目について解説します。

  • Dynamic linkingとは
  • メリット・デメリット
  • 使用上の注意事項
  • 起動時のロード時間が長くなる対策

想定する対象者

  • Dynamic linkingかstatic linkingか迷う人
  • Dynamic linkingを使ったことがない、または使い方がよくわからない人
レギュラートーク(20分)

"\("String Interpolation") deep dive"

Yutaro Muta

SwiftにおけるString Interpolation(文字列補間)の魅力について、典型的な使用方法から始め、SwiftUI.Textを例に他Frameworkとの組み合わせを解説します。

  1. String Interpolationの基礎:
    • String Interpolationとは何か
    • 文字列内に変数や式を埋め込む
  2. 典型的な使用:
    • テキストやログの作成、プレースホルダーとしての使用
  3. SwiftUI.Textと組み合わせた応用:
    • String Interpolationを用いたText構築、ローカライズ
    • 他Frameworkとの組み合わせ

このトークでは、String Interpolationの基本から応用までを網羅することで、魅力を理解した上で、他Frameworkと組み合わせた文字列操作の応用を目指します。

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

XcodeのVimモードで学ぶ!Vimのキーバインド講座

the_uhooi uhooi

みなさんはXcode 13で革命が起きたのをご存知ですか?

そう、Vimのキーバインドを使えるVimモードが追加されたのです。
Editor > Vim Mode を押下するだけでVimモードに切り替わります。

私はXcodeにVimモードが追加されてからずっと使い続けており、iOSアプリ開発の効率化に繋がっていると実感しています。

本トークでは、XcodeのVimモードを通して、Vimのキーバインドを実演付きで解説します。

【ターゲット】
・XcodeのVimモードを使ったことがない
・普段Vimを使っていない

【話すこと】
・Vimのキーバインドの特徴
・Xcodeで使えるキーバインドの紹介

ぜひみなさんもVim ModeをONにして、実際に操作しながら本トークを聞いてください。
本トークが終わっても、全員がVim ModeをONにしたままになっているはずです。

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

Swiftの引数ラベルを侮っていませんか?

lovee 星野恵瑠

ほとんどのプログラミング言語は関数の引数定義に、引数名だけしか存在しません。そしてその関数を呼び出す時、引数名抜きで値だけ入れるか、一部の言語では引数名も一緒に書けます。

ところがSwiftの場合、「引数ラベル」という独特な仕様があります。この仕様により、関数を呼び出す時、引数の値の前にそのラベルを書く必要があります。

一見とても面倒な仕様ですが、これのおかげでコードリーディングが非常に楽になることが多く、筆者がとても好きな仕様です。

このセッションでは、以下のような内容をカバーします:

  • そもそもなぜSwiftに引数ラベルがあるか
  • 実例で引数ラベルがコードの可読性への影響を体験
  • 最適な引数ラベルを選ぶときのガイドライン

そしてこのセッションは、Swift初心者の他に、最近他言語からSwiftに転向した方や、単純にもっと引数ラベルを活用したい方におすすめしたいです。

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

アプリをもっと使ってもらうためのApp Intents活用法

tanakasan2525 たなたつ

みなさんはショートカットアプリを活用していますか?
私は日々のルーティーン用のショートカットをよく利用しています。

ショートカットアプリにあなたのアプリを連携させるためには、App Intentsを利用する必要があります。
App Intentsによって、ショートカットアプリだけでなく、SpotlightやSiriからの提案などの場所にも、あなたのアプリが表示されるようになり、アプリ起動導線を増やせます。
また、iOS 17のInteractive WidgetsにもApp Intentsが必要です。

このトークでは、あなたのアプリの活躍の場を増やすために必要なApp Intentsの活用テクニックや、このような機能に対応しやすくするために普段の開発から意識すべきことなどをお話します。

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

GraphQLでのエラーハンドリング

iganin_dev 伊賀 裕展

RESTと同様にGraphQLでもエラーは扱います。
それでは、そのエラーをどのように定義し、ハンドリングするのが良いのでしょうか。

GraphQLではerrorsキーにエラーの詳細を載せることもできます。
しかしながら、この方法ではGraphQLで活用できる型情報が失われてしまいます。
他に方法はないのでしょうか。

本トークではGraphQLでのエラー定義の方法とその活用方法を探っていきます。

以下の内容を予定しています。

  • GraphQLのエラー定義の選択肢
  • エラー定義で型を活用する
  • クライアントでエラー情報をハンドリングする
レギュラートーク(20分)

別に,Swift Package Managerを直してしまっても構わんのだろう?

k_koheyi k-kohey

みなさんは森の中で大きな変質者に追われたらどうしますか?
私はSwift Package Manager(以降,SPM)を回直します(??)

SPMはAppleが提供するOSSであり,SPMを利用することにより依存の管理を簡単に行うことができます.
XcodeがSPMをサポートした事によって,私達iOSエンジニアからもよく利用されるようになりました.

しかし,普段よく利用するからこそイマイチな点も見つかるかもしれません.
そんな時はコントリビュートのチャンスです.

このセッションでは,駆け出しエンジニアがビビりながらSPMにPRを送った経験を基に,コントリビュートにどのようなプロセスが必要だったのかを説明します.
例えばissueの見つけ方,デバッグ方法,PRの出し方,ユニットテスト等です.

最終的に,この発表を聞くとコントリビュートに対する心理的ハードルを下げることができます.

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

SwiftUIとMetal Shaderで、ビジュアルエフェクトのパワーアップを実現する

ojun_9 ojun

WWDC23で発表された、SwiftUIに対するMetal Shaderの適用法に焦点を当てます。

本トークではまず、シェーダーを作成するための基礎知識として三角関数の役割を解説します。
その上で、これらの要素をSwiftUIと結び付け、リッチなビジュアルエフェクトを効率よく実現する方法を具体的に解説します。

Metal ShaderをSwiftUIと組み合わせることで、高度な視覚効果を手軽に実現できますが、応用させるには三角関数を理解する必要があります。
このトークを通じて、Metal Shaderの基本的な使用法と、それを活用したSwiftUIのビジュアル表現の豊かさの理解を深めることができます。

このトークは、SwiftUIにおいて更に視覚的な表現を豊かにする方法を探している方を対象としています。
皆さんのアプリのユーザ体験がより向上する手助けとなれば幸いです!

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

大人だって Screen Time API で時間管理したい!

_bannzai_ bannzai

WWDC21で発表されたScreen Time APIの解放は、多くのデベロッパーが期待したのでは無いでしょうか。しかし、利用にFamily Controlsの承認が必要で子供のアプリ使用を親が管理するためのものでした。時間管理したいデベロッパーは残念に思ったでしょう。実は1年後のWWDC22からFamily Controlsを通した承認に「自分自身」が承認できるようになり、「親」のような他者からの承認を必要とせずにScreen Time APIを利用することができ、これで大人でも時間管理ができるようになりました✌️

このトークではScreen Time APIを利用したアプリの開発からリリースまで通じて遭遇した出来事についてお話しします。具体的にはアプリの申請時から注意すべきこと、新しいAPIに対するレビュアーの反応、さらに具体的なコードを用いてどのように動くかを紹介していきます。

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

アプリをもっと魅力的に!Metal ShaderでUIの表現力を広げよう!

tanakasan2525 たなたつ

アプリのUIがちょっと物足りない...そんな時、Metal Shaderはあなたのアプリの表現力を広げるための一つの選択肢になります。

シェーダーと聞くと難しい印象があるかもしれませんが、
基本を押さえれば、再生中のオーディオデータの可視化やコンテンツに没入感を与える演出などを表現できるようになります。

このトークではMetal Shaderの理解に必要な知識を共有しつつ、具体的な用例や実装を紹介します。また、コードのメンテナンス性やパフォーマンス面についても注意点をお話します。

見ているだけで楽しい、そんなUIをMetal Shaderで作ってみましょう。

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

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

tsuzuki817 Ryo Tsuzukihashi

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

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

トーク内容

  • WeatherKitの概要
  • 実際の使い方
  • 注意事項
  • etc
レギュラートーク(20分)

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

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

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

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

_rockname 岩名勇輝

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

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

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

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

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

4
レギュラートーク(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
レギュラートーク(20分)

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

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

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

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

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

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

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

2