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

Protocol BuffersでHTTP APIを定義してコードを自動生成する

lt_aoyama あおやま

「REALITY」アプリでは、クライアントとサーバ間のHTTP通信の定義にProtocol Buffersを導入しました。
Protocol BuffersとはGoogleによって開発されたシリアライズフォーマットであり、共通のスキーマからSwiftやKotlin、Goなど各言語向けに必要なコードを自動生成します。
gRPCとセットのイメージのProtocol Buffersですが、バイナリに変換してHTTP通信のbodyに載せることで、プロトコルはHTTP通信のままに、共通のスキーマや、高速、軽量のシリアライゼーションなどProtocol Buffersの恩恵を受ける事が可能です。

このトークでは、Protocol Buffersを使ったHTTP通信の定義に加え、Swiftで独自のprotocのpluginを実装し、クライアントで必要なコードを自動生成する方法を紹介します。

2
LT(5分)

大規模アプリ開発におけるiOSチーム内での情報共有の取り組み

furuyan325 古屋 広二

タクシーアプリ「GO」のiOSアプリは現在7人体制で開発しています。
3,4人だった頃は自分が開発した部分じゃなくてもなんとなく分かっていたものが、徐々に自分の担当している案件しかわからない状況になっていきました。
そんな中iOSチームで週次のチーム会を開催するようになり、そこでやった取り組みの中でよかった物について紹介したいと思います。

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

2ヶ月以内にApp内課金を実装しないと審査を通さないと言われた時に焦らないために

kzytcbn315 立花和也

ある日突然「2ヶ月猶予あげるからApp内課金を実装して、App内課金を実装しないと審査通らないよ」と言われた時にあなたならどうしますか?

App内課金(In-App Purchase)はすでに多くのアプリで実装されている機能ですが、課金の形態はアプリによって多種多様で場合によっては調べても自分が提供したい形態にマッチしないような場合もあります。

お上の一声で突如リリースが出来ない危機に陥った時に焦らずに対処できるようにするためにApp内課金を実装する上でのポイントやこれを早く知っておきたかったといったポイントをお話しします。

このトークを聞いて2ヶ月でApp課金をリリースしてみませんか?

3
LT(5分)

今だからこそやるiPhoneアプリ開発におけるデバッグ方法

MHTcode_JJ J.J.

どうも!デバッグ大好きJ.J.です!
皆さん、よく使うデバッグ方法は何通りありますか?
このトークでは、Xcode上でのデバッグについてだけでなく簡単に導入できるライブラリやサードパーティーを使ったデバッグ方法を紹介します。
実際の現場で役に立つデバッグ方法であること間違い無しです!

iPhoneアプリ開発におけるデバッグ方法を、時間が許す限りお話しします!

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

8年間続いているiOS Webブラウザアプリ開発の知見

fokotate Fukuyama

2014年から趣味で公開し開発を継続しているiOS Webブラウザアプリ開発で溜まった知見を振り返りまとめます。
余裕があればSwiftUIでサンプルアプリを作り公開します。

この辺りの話になると思います。

  • 複数のWKWebViewの扱い
  • ブラウザサイドJavaScript
  • 認証・セキュリティ
  • コンテンツブロック
  • デフォルトブラウザ申請
  • App Extension
  • webview内ジェスチャ
  • favicon・サムネイル処理・メディア再生など
5
レギュラートーク(20分)

8年間続いているiOS Webブラウザアプリ開発の知見

fokotate Fukuyama

2014年から趣味で公開し開発を継続しているiOS Webブラウザアプリ開発で溜まった知見を振り返りまとめます。
余裕があればSwiftUIでサンプルアプリを作り公開します。

この辺りの話になると思います。

  • 複数のWKWebViewの扱い
  • ブラウザサイドJavaScript
  • 認証・セキュリティ
  • コンテンツブロック
  • デフォルトブラウザ申請
  • App Extension
  • webview内ジェスチャ
  • favicon・サムネイル処理・メディア再生など
2
レギュラートーク(20分)

OpenAPIのクライアント自動生成を現場に導入していくためのノウハウ

mrimjn imajin

私たちのチームではAPIの実装とクライアントのAPIインターフェースの実装の差分をできるだけなくし、より円滑に開発を進めるためにOpenAPIを導入しました。
またiOSプロジェクトではCreateAPIというライブラリを使用して、OpenAPIのAPIドキュメントからAPIインターフェースを自動生成しています。

本トークではOpenAPIを実際にiOSプロジェクトに導入するにあたって

  • すでに運用されているプロジェクトにおいてどのように自動生成APIインターフェースを導入していくか
  • 他iOSエンジニアとのコミュニケーション
  • テストの設計
  • 日々のAPIドキュメント更新のクライアントへの同期手法

などについて実際の業務で得た知見からお話しします。
これからOpenAPIの導入を検討されている開発者のかたの助けになる情報が届けられれば幸いです。

3
LT(5分)

StoreKit2 の素晴らしさを改めて紐解こう

ksCap_0114 Sato Ken

StoreKit2 が使えるようになり早一年。これまでの StoreKit は API が複雑だったことで、ロジック変更に対する抵抗感やリスクから対応を後回しにしている方が大勢居るのではないでしょうか。
本LTでは StoreKit2 の魅力をこれまでと対比することで改めて認識し、StoreKit に対する心理的不安を解消するまでをゴールとします。

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

デグレを防ぐ!UIテストの活用法

falcon0328 瀬尾 敦生

iOSアプリの開発楽しい!アプリ開発したからリリースだ!
・・・その前にちゃんとテストはしましたか?

スピード優先のアジャイル開発はテストを疎かにしていい理由にはなりません。
とはいえ、人力のテストには限界があるので可能な範囲から自動テスト化させていきましょう。

今回はUIテスト技術にフォーカスして、実際に開発中やリリース前にでてきたテストの悩みをどうやって解決したのかをご紹介します。

  • APIの通信、動画の再生、ログインを挟む画面へのテスト追加
  • アプリ起動時にしか表示されない画面のテスト
  • Custom URL Schemeからのアプリ起動時のテスト
  • CIのテスト実行時間が長くなってしまった問題の解決

XCTestとかUIテストとかよくわからん、やりたくない・・・って思っている方、ちゃんとテストコードを書いてリリース前に安心を得ませんか?

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

print("\("String Interpolation") deep dive")

yutailang0119 Yutaro Muta

let theme = "String Interpolation"
print("(theme) deep dive")

これは多くのプログラミング言語に備わる機能、String InterpolationのSwift実装です。
一般的に変数をプレースホルダーに展開する機能ですが、Swiftでは拡張手段が提供されていて、高度で静的な文字列操作を可能にします。
さらにSwuiftUI、特にTextの機能が充実したことで、単純なStringとしての表現力を超えた活躍を期待できます。
このトークでは、SwiftにおけるString Interpolationの仕組み、実現方法を解説して理解を深め、典型的な使用方法を学びます。
次にSwiftUIを例に、Frameworkと組み合わせた応用を目指します。

String Interpolation活用の新たなアイディアに繋げましょう。

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

String Interpolationで実現するSwiftUI.Text拡張

yutailang0119 Yutaro Muta

多くのプログラミング言語に備わる機能String Interpolationは、一般的には変数をプレースホルダーに展開する機能で、みなさんもよく使用することでしょう。
Swift実装では、開発者に拡張手段が提供されていて、高度で静的な文字列操作を可能にします。
さらにSwuiftUI、とりわけTextの機能が充実したことで、近年では単純なStringとしての表現を超え、活躍の幅は広がっています。
このトークでは、文字列操作としての典型的な使用方法を説明し、SwiftUI.Textを例に、Frameworkと組み合わせた活用方法を紹介します。

String Interpolation活用して、日々のコーディング体験を向上させましょう。

3
LT(5分)

初めてOSSへの貢献を投稿し、マージされるまでのトークです。

Ong Yue Huei

最近使っているOSSを振り返ってみると、ある人が投稿した問題があり、それを解決できれば役に立ちそうな気がしました。普段使っているOSSなので、全体的な解決イメージが湧きやすく、試行錯誤しながら、少しずつ解決への道筋が見えてきました!

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

Unity製ゲームを配信アプリ上で動かす

to4iki takezawa toshiki

Unity as a Library(UaaL)はUnityをネイティブアプリのライブラリとして利用する技術です。
ネイティブアプリの強みであるOSに準拠したUI/UXを実現できる点、Unityの強みの3Dを簡単に使える仕組みが整っている点を組み合わせることが可能で、複雑な3D表現やリッチなグラフィックを実現したい場合においてUaaLは選択肢に上がるかと思います。

本トークでは、ネイティブ・Unityエンジニア間のコミュニケーション面にも触れつつ、
Unity製のゲームが動作するまでのフロー、ネイティブとUnityとでどのように領域を区切って開発しているかを事例ベースで解説します。

・UaaLの概要
・UaaLの活用とUnityViewの解説
・ネイティブアプリとUnityのメッセージング用のインターフェースの解説
・UaaLの課題や問題点、今後の取り組み

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

Cloud FunctionとPubSubでサイレントプッシュ通知を一通り実装してみる

trywjs げん

サイレントプッシュ通知を運用するためにはクライアント実装を含め、サーバサイドの実装も必要になります。サーバサイドの実装にも選択肢は一つではありませんがその中でCloud Functionは負荷に対してすスケーリングに悩む必要がなく本来必要な設定や実装の多くの部分をスキップできるのでアプリエンジニアにとって恩恵が大きいです。
このトークではFirebase PubSubメッセージ送信からCloudFunctionが実行されiOSアプリでサイレントプッシュ通知が届くまでの流れに必要な最低限の一通りの実装を実例とともに説明します。

内容構成

  • 全体のフロー
  • PubSub設定
  • Cloud Functionの実装(Typescript)
  • iOSクライアントの実装
  • 気をつけたい部分
LT(5分)

App Store Connect API経由で自分のアプリのダウンロード数を取得してみる

Tatsumi0000

皆さんは、App Store Connect APIというものをご存知でしょうか?
Appleが公式で用意しているAPIでこのAPI経由で様々なことができます。

このApp Store Connect APIを使って自分がストアに公開しているアプリのダウンロード数を取得する、Go言語向けライブラリ「goisumobilereport」を作成したのでその紹介をしたいと思います。

今回のLTでは自作ライブラリの内部処理から導入手順、実際に動かすところまでを紹介したいと思います。

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

iOSエンジニアが1年かけてタクシーアプリ「GO」のプロダクト開発のプロセスを大胆に変えた話

takahia takahia

タクシーアプリ「GO」は、2020年9月にリリースしました。
その頃は、iOSチームとして、アプリ開発を行なっており、日々「GO」の新機能を開発する日々でした。
しかしながら、同じ「GO」のプロダクトを開発するメンバーがPdMやデザイナーも含め40人を超えるため、
どうしても意思疎通がうまくいかなかったり、意思決定が遅かったりと、いくつかの問題を抱えていました。

そこで、2021年5月からは、複数のPdMやデザイナーも巻き込んで、大きな改革に取り組みました。
部署自体が異なるため、現場で案件のフローやコンセンサスの取り方など、多くのすり合わせをおこなってきました。
どのような課題感から、何を思い、どのような変革を行なっていったか、是非リーダーやマネージャーを担っているエンジニアの方々だけでなく、これからリーダーやマネージャを目指す方に聞いてもらいたいです。

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

iOSエンジニアが2年かけてタクシーアプリ「GO」のプロダクト開発のプロセスを大胆に変えた話

takahia takahia

タクシーアプリ「GO」は、2020年9月にリリースしました。
その頃は、iOSチームとしてアプリ開発を行なっており、日々「GO」の新機能を開発する日々でした。
しかしながら、同じ「GO」のプロダクトを開発するメンバーがPdMやデザイナーも含め40人を超えるため、
どうしても意思疎通がうまくいかなかったり、意思決定が遅かったりと、いくつかの問題を抱えていました。

そこで、2020年6月から身近なiOSチームという比較的ミクロな改革、2021年5月からは、PdMやデザイナーも巻き込んだ、プロダクト開発チームとしてのマクロな改革を行いました。
そえぞれ何を軸にして行なっていくか、目的も異なってきます。どのような課題感から、何を思い、どのような変革を行なっていったか、是非リーダーやマネージャーを担っているエンジニアの方々だけでなく、これからリーダーやマネージャを目指す方に聞いてもらいたいです。

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

既存のSwift製ネイティブアプリに一部Flutter利用はありなのか?現実的な落とし所とは?

takahia takahia

現在、新規でアプリ開発を考えたとき、Flutterでのアプリ開発は1つの選択肢として浸透しつつあります。
しかしながら、既にSwiftで開発している既存のアプリが大多数で、マルチプラットフォーム開発ができれば、開発コストを下げれると考える一方で、ネイティブとFlutterではレンダリングエンジンが異なるため、なかなか導入に踏み切れないといったところが大きいのではないでしょうか?

今回、既存アプリにFlutterを導入できないか真剣に向き合うことにしました。
少しでも、今後の導入の参考にしていただければと思います。

1
LT(5分)

App Clips は今 〜このXcodeの片隅で〜

log5 log5

WWDC2020にて華々しくデビューしたApp Clipsですが、それから2年過ぎた現在においてもあまり見向きをされていないような印象があり、割と寂しく思うところです。
時には「謎のミニアプリ」として紹介されることもあるApp Clips、この1年間で何が変わったのか、そしてこの秋には何が新しくなるのか。
本LTでは何かと不憫な目に遭っているApp Clipsにスポットライトを当て、App Clip 自身またはそれを取り巻く環境のアップデートについてお話をしたいと思います。

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

Configuration を用いた、iOS 14 時代の UICollectionViewCell カスタマイズ

shimastriper shimastripe

iOS 14 から、 UICollectionViewCell のカスタマイズ方法に Configuration という種類の API が追加されました。
たとえば、コンテンツや背景の外観に関するデータを設定すると、 View の描画反映を自動で行ってくれます。
これまでは、Header / Body / Footer それぞれの Cell を継承してカスタマイズしてきましたが、 これからは同一のConfiguration それぞれに適用可能な再利用しやすい Composable な API となっています。

本セッションは、Custom の Configuration を用意して、実際に既存の Cell を移行する方法を紹介します。
CompositionalLayout や DiffableDataSources と合わせて活用し、Cell の快適な管理を実現しましょう!

2