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

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

kzytcbn315 立花和也

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

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

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

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

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

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

falcon0328 瀬尾 敦生

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

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

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

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

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

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

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

yutailang0119 Yutaro Muta

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

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

3
レギュラートーク(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クライアントの実装
  • 気をつけたい部分
レギュラートーク(20分)

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

takahia takahia

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

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

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

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

takahia takahia

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

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

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

PencilKit 実践拡張編

shimastriper shimastripe

アプリの Apple Pencil 対応を行ったことはありますか?
WWDC 2019 における、PencilKit を利用し、たった3行のコードを実装するだけで Apple Pencil を用いた一連の機能が実現されるデモは印象的でした。
しかし、実際のアプリ開発における独自拡張の中では、様々な困難が待ち受けています。

本セッションでは、PencilKit が可能な拡張・難しい拡張を紹介しつつ、ユースケースに応じてどのような対処が取れるか解説します。たとえば、PencilKit の自由に描けるキャンバス画面と、独自で実装したハイライトマーカーが引ける画面を切り替えて利用できるようにする仕組みなどに触れる予定です。
ドキュメントと実際の動作を比較して得られた知見をもとに PencilKit を実アプリに組み込む Tips を紹介できればと思います。

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

KMMを用いたテキストリソース共通化の提案

BOBG1018Vi ぼぶ

本トークでは、iOS・Android両OSで展開しているアプリ向けに、KMMを用いたテキストリリース共通化を提案します

まずはじめに、長年運用しているアプリだからこその課題を交えながらモチベーションについてご説明します。その後、比較検討した手法と想定している移行手順についてご説明します。そして最後に、+aの要素や今後の展望についてご説明します。

課題の抜粋

  • OS間で新規追加する粒度が異なる
  • OS間で参照する既存リソースにズレがある
  • 片方だけ修正されるテキスト

+aの例

  • ボイスアンドトーンの統一
  • テキストリソースのルール設定
  • textlintによる校閲
  • a11y

を予定しております。

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

グラフィックソフトで作成したようなフチ文字をアプリ内で実現する方法

macneko_ayu 横田 孝次郎

フチ文字とは、文字の輪郭を線で縁取る文字装飾の手法です。
新聞の見出し、スーパーのチラシ、そして動画のテロップなどでよく用いられています。
みなさんも一度は目にしたことがあるかと思います。

そんなフチ文字、さらにグラフィックソフトで作成したようなフチ文字をアプリ内で使いたい。
そうデザイナーから相談されたとき、どんな方法が思いつきますか。
AttributedStringを用いて文字の輪郭に線をつければ解決、そう思いませんか。
しかし、この方法にはある問題があり…。

本トークでは、私が試行錯誤しながら、より質が高く美しいフチ文字を模索した内容を事例を交えながらお話します。

以下の内容を予定しています。
・フチ文字とはなにか
・発表者の思う美しいフチ文字、美しくないフチ文字の定義
・UIKitを用いたフチ文字の実現方法
・SwiftUIを用いたフチ文字の実現方法

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

PiPを応用した配信コメントバー機能の開発秘話と技術の詳解

_naru_jpn 千吉良 成紀

WWDC21 が開催されていた昨年の6月、AVKit に追加されたひとつの機能に社内がざわつきました。
PiP(ピクチャ・イン・ピクチャ)の機能を応用して、Android の画面オーバーレイのようにアプリ外に自由なコンテンツを描画できる期待感を経験のあるエンジニアは感じていましたが、既存のアプリに機能を組み込むまでには R&D 的な開発やパフォーマンスとの戦いがありました。

このトークでは、ゲーム配信アプリミラティブに実装され多くのユーザーに利用されている、視聴者からのコメントや各種配信情報をアプリ外で表示する「配信コメントバー」機能の開発の裏側と技術の詳細についてご紹介します。

・「配信コメントバー」機能の概要
・実装の解説
・R&D 開発とパフォーマンスの解決
・PiP と AVAudioSession との関係
・PiP のカスタマイズ性

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

あなたは20分後にSwift Concurrencyを使いたくなります

kudokai00 くどかい

Swift ConcurrencyはWWDC2021で発表されてSwift5.5で追加された新しい技術であり、まだ名前しか聞いたことないよという人もいるかもしれません。Swift Concurrencyは非同期処理や並列処理をシンプルに書くことができる機能です。

本トークではではSwift Concurrencyとは一体何か、どんな利点があるかをSwiftUIを使った実装例を通して紹介します。
この話を聞くと、もうクロージャを使った非同期処理なんて書きたくない!って思えるかも笑

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

ゆめみのiOS研修を終えてわかった初学者がハマりやすい罠

kudokai00 くどかい

株式会社ゆめみでは新卒iOSエンジニア向けに研修課題をGitHubで公開しています。
弊社の新卒課題は一見すると簡単ですぐに終わってしまうように見えますが、ところどころにハマりやすい罠があります。
 ・ライフサイクル
 ・Delegate
 ・コールバック
 ・スレッドブロック
 ・テスト
などなど、ハマりやすい要素がたくさんあります。

ゆめみの新卒として研修を経験した私だからこそ感じた初学者がハマりやすい罠をご紹介します。

参考:https://github.com/yumemi-inc/ios-training

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

SwiftUIでUIデザインしよう

IhsanLee Li Jierong

UIデザインツールというとFigmaとSketch二択になってきましたが、アイコンデザインなどビジュアルデザインに近い部分を除いたら、意外とSwiftUIでデザインできちゃいます。SwiftUIだと静的デザインをそのまま実装に組み込めるメリットがあり、開発効率向上にもつながります。

本トークでは、Figmaと比較してSwiftUIがどれぐらい便利かつ直感にレイアウト組めるかをご紹介します。
SwiftUIでデザインしてみませんか?

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

どこまでデザイナーに任せるか(Figma編)

IhsanLee Li Jierong

デザインをいただいて、実装しようとすると以下のように戸惑うことはありませんか。

  • 部品のまとめ方
    • 新規部品
    • 既存部品のバリアント
  • サイズの決め方
    • 固定サイズ
    • 余白を決める上で決める
  • 1行に表示しきれない文言
    • 改行
    • 3点リーダー
    • 1行に表示しきれるように文字サイズを動的に調整
  • 複数部品の揃え方
  • スクロール領域
  • アニメーション

デザインツールの機能不足により妥協したデザイン表現になり、直接デザイナさんにどういうデザインにしたいかを聞いて実装する場合もあると思います。しかし、デザインツールの進化により表現できるデザインが年々増えてきており、困るケースも少なくなってきました。

本トークでは、FigmaにおいてiOSエンジニア目線で、表現できるケースと表現できないケースをご紹介します。

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

まだユーザに待たせているか

IhsanLee Li Jierong

さまざまな場面でローディングインジケータなどを使い、ユーザを待たせていると思います。
しかし、それが果たして必須な要件かというとそうではなく、実装時のコストの兼ね合いで妥協している場合が多いと思います。

本トークでは、ユーザを待たせずに済むよりよい手法とそれを実現する実装方法の具体例をご紹介します。

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

SceneKitによる新しい数学の学習方法

Hyperbolic____ 大塚周

売上を最大化させるためのレジの台数といった合理的な意思決定の方法を考える学問である「オペレーションズ・リサーチ」において、数式で求めた結果が合っているのかを確かめるのは難しいものです。しかし、SceneKitで現実世界を再現することで結果の”検証”を行うことができます。SceneKitによる新しい数学の学習方法を複数の具体例とともに紹介します。

10