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

リーダーになってしまった人向け!チームの回し方5ヵ条

海保 研

チームリーダーになってしまって困ってしまった開発者はいませんか?元々リーダーシップの訓練も受けてないし経験もないのに任命されてしまって困ったことはないですか?

ここでは、(クセのある)開発者と長年仕事をしてきたプロジェクトマネージャーが経験に基づいて、これだけは最低限実行していけばリーダーとしてチームを回せる以下の5ヵ条を紹介します!
・チームビルディング
・役割分担
・デイリーのポイント
・振り返り
・心が折れないために

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

仕事しているように見せるためのチケットの回し方

海保 研

開発者の皆さん、リーダーやマネージャーに対しての進捗報告、相談に困ったりしていませんか?説明が長くなってしまったり、細かい部分を突っ込まれたり、最悪なケースではちゃんと進捗出してるのに評価してもらえない事もありますよね?

ここでは、(クセのある)開発者と長年仕事をしてきたプロジェクトマネージャーが経験に基づいて、チームで仕事をする際に必要な以下のポイントをお伝えします!
・うまくいかないケースとは?
・チケットの立て方
・チケットの回し方(ステータスや担当者の変え方など)
・進捗状況の可視化のポイント

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

ボイラープレートコードとうまく付き合う

kamekiti Yosuke Imairi

大規模なアプリを複数人で安定して開発するためには、アプリの設計や実装をある程度統一させることが望ましいです。特定のアーキテクチャの導入もその手段の一つでしょう。
アーキテクチャに沿ったボイラープレートコードを適用することで、実装に統一性をもたせることができます。

タクシーアプリ「GO」の iOS プロジェクトにも様々なボイラープレートコードが存在します。

開発を進めていく中で、ボイラープレートコードの一部の命名を変更する必要が出てきたり、部分的に新たなボイラープレートの追加・削除が発生することがありました。
これらの作業は難しくはありませんが、ボイラープレートコードの量が多いとその手間は無視することができません。単純な作業であれ、開発効率を下げる要因の一つとなり得ます。

この課題をどのように解消し、ボイラープレートコードとうまく付き合えるようになったのかを具体例を交えて紹介します。

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

Core MLモデルの最適化とその利用

tanakasan2525 たなたつ

高速なアプリ体験の実現やアプリのプライバシー問題などから、オンデバイスで機械学習モデルを動かすことが増えてきています。

iOS上ではCore MLがよく利用されますが、PC上で動かす機械学習フレームワークよりも制約があり、出力が変わる問題が起こったり、
モデルを構築できてもアプリ組込み時に、扱いにくいモデルになっていることもよくあります。

このトークでは特に問題が起きやすい、画像を扱うモデルについて、

・使いやすく、運用しやすいモデルを構築する方法
・Core GraphicsやAccelerateを使ったテクニック
・MLエンジニアと協業方法
・モデルの入出力を高速に変換する方法

などを紹介し、"アプリエンジニア" として機械学習に関われるようになる知識を提供します。
GitHubにある学習済みモデルを自分でCore MLに変換して利用したい方にも役立ちます。

5
LT(5分)

入社して速攻でバリューを発揮する方法

watura 西本 航

note に入社して2ヶ月、報告したバグ数は 20 件以上。そのうち自分で修正したバグは 15 件以上。作ったPR は40以上。
QA委員会やバグバッシュなどをやってきている note 社でさらに追加で20件以上みつけた手法や、1500 ファイル以上ある note プロジェクトから修正したいファイルを見つけていった手法についてはなします。

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

Safari Extension in iOS 15 - Building an Extension to Display Furigana

telethonin Morten Bertz

iOS 15 has brought extension support to Safari. In this talk, I will explore the extension API by building a Safari extension that displays Furigana annotations in the browser. I will discuss:

  • extension patterns, permissions & user interactions
  • interaction with native code
  • obtaining Kanji readings using CFStringTokenizer without additional dependencies
  • pitfalls and limitations
6
LT(5分)

パイオニアのiOSおじさんがFlutterスプリントに挑戦

r1-okb

老舗メーカー・パイオニアのiOSおじさんがFlutter初挑戦!

デザインスプリントにインスパイアされ、中途採用で入ってきたFlutterエンジニアにFlutterを教わり、5日間でFlutterアプリ開発に挑戦!

時代はFlutterなのか!?
はたしてiOSおじさんはFlutterおじさんにジョブチェンジできるのか!?

LT(5分)

Swift for Visual Studio Codeへの招待

d_date Daiki Matsudate

昨年のクリスマス、Swiftチームからプレゼントが贈られました。
なんとVSCodeでSwiftが公式にサポートされたのです。

VSCodeのパワフルな機能を使って、Swiftで実装していくことができます。
Swift Packageを利用してライブラリを導入したり、ビルドしたり。
コードを補完したり、定義へのジャンプもできます。

また、拡張機能のおかげで、GitHub Copilotを使えば、AIが代わりにコーディングしてくれたり、
swift-formatのおかげでSaveした瞬間にformatできるなど、快適なコーディング環境を実現できます。

このトークでは、お手元のVSCodeでSwiftを快適に利用するためのセットアップと、その使い心地についてお話しします。
みなさんは明日からVSCodeを使ってSwiftを楽しむことになります。

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

最高でいて、最強の開発環境とはを考えてみました。

shichimi_0_o keisukeYamagishi

世の中には様々なアプリやシステムがありますが、良いアプリを開発できている会社はどこも良い開発環境を提供しているように思えます。
そこで考えてみましたが、本当に最高の開発現場とはどのようなものなのか?
開発効率の良い、最高の開発環境とは🤔
誰でも最大限のパフォーマンスを発揮できて、最高のものづくりを実現できる環境とは如何なるものなのかを考えてみました。

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

宣言的UIを比較!SwiftUI x Jetpack Compose x Flutter

yohta_watanave watanave

iOSのSwiftUI、AndroidのJetpack Compose、そしてマルチプラットフォームのFlutter…

モバイル開発は宣言的UIの時代に突入しました。
このセッションではこれら3つのフレームワークで同じUIを構築するサンプルを紹介します。

そこから見えてくる、全てのフレームワークに共通する重要な概念を明らかにします。

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

宣言的UIを徹底比較!SwiftUI x Jetpack Compose x Flutter

yohta_watanave watanave

iOSのSwiftUI、AndroidのJetpack Compose、そしてマルチプラットフォームのFlutter…

モバイル開発は宣言的UIの時代に突入しました。
このセッションではこれら3つのフレームワークの特徴や考え方、具体的な実装方法を比較します。

他フレームワークの技術から得られる新しい発見、全てのフレームワークに共通する重要な概念を明らかにします。

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

Readmeの代わりにDocCでプロジェクトを説明する方法

leeoios Leeo

Swift-DocCは、Swiftフレームワークとパッケージ用の文書作成ツールです。 現在はオープンソースとして公開され発展しています。

プロジェクトを説明する文書を作成する方法はいくつかあります。 そして最近ではgithubでReadMeをたくさん使っています。 プロジェクトに適切にコメントを作成したら、Swift-DocCでプロジェクトの説明文書を作成できます。

Appleの公式文書を見るのに慣れているapple platforms developerのために、私たちのプロジェクトの説明にもDocCを活用する方法について説明します。

実際のプロジェクトを説明するリンクを提供して、プロジェクトのoverViewを行います。
sample: https://github.com/M1zz/SampleSwiftUI

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

UIKitとMetalで紐解くFlutter

yohta_watanave watanave

昨今話題のFlutter。
このセッションではそのFlutter内部を、UIKitやMetalといったiOS技術をベースに紐解きます。

「タッチイベントはどのように処理されてる?」
「どうやってレンダリングしてる?」

そこが分かればもう怖くない!

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

UIKitとMetalで紐解くFlutter

yohta_watanave watanave

昨今話題のFlutter。
実はFlutter内部ではUIKitやMetalといったiOS技術が使われています。
このセッションではUIKitやMetalの解説と共に、Flutterの内部の仕組みを紐解きます。

「タッチイベントはどのように処理されてる?」
「どうやってレンダリングしてる?」

そこが分かればもう怖くない!

7
LT(5分)

位置情報のアクセス権限に苦しむあなたへ、CoreLocationUIのすすめ

n_atmark あつや

位置情報を利用するアプリケーションを開発したことのある方は、一度は位置情報のアクセス権限に苦しめられたことがあるのでは無いでしょうか。

またiOS 13からは 「1度だけ許可」という選択肢が追加され、アプリを利用する際のセッション毎にユーザーが位置情報サービスを許可するかどうか選べるようになったり、requestAlwaysAuthorization を呼び出した場合の選択肢が「使用中のみ許可」「一時的に許可」「許可しない」に変更されたりと、位置情報のアクセス権限は更にとっつき難い存在となっています。

このセッションではiOS 13以降の複雑な位置情報アクセス権限の全貌の紹介および、iOS 15で導入されたCoreLocationUIを用いることで簡単に利用できるようになった位置情報取得について紹介します。

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

1つのプロジェクトから複数のアプリを生み出す

d_date Daiki Matsudate

Swift Packageはライブラリのバージョンを管理するだけでなく、プロジェクトの構成もになうことで、
マルチモジュール構成を柔軟かつ簡単に構築することができます。

この構成によるモジュールの柔軟性を活用すると、アプリを1つのプロジェクトで複数管理しやすくなります。
1つのプロジェクトで複数のアプリを管理することができれば、
コードの共有や、CI/CDのセットアップが簡単になり、メンテナンスもしやすくなります。

うまく基盤を作ると、全く異なるプロダクトを混在させることも可能ですし、
デザインのカタログのようなアプリや、特定の機能や条件を再現した小さなアプリにも活用できます。

このトークでは、Swift PMによるマルチモジュール構成を活用して、1つのプロジェクトで複数のアプリを管理してみます。
実例も交えながら、みなさんのプロジェクトにも応用できるようにしようと思います。

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

読みとるから読み解くへ

d_date Daiki Matsudate

身の回りにはさまざまな形式のデータが存在し、読みとるためのAPIが提供されています。
例えば、AVFoundationを使えば、QRコードを読みとれます。CoreNFCであれば、iPhoneでNFCタグとデータをやり取りできます。
データ形式がJSONなら、Codableを使って簡単に変換できます。

しかし、APIが用意されないデータの読み取りは自分で実装する必要があります。
データ形式や通信方式は特定の機関が標準化しており、電子証明書に利用されるASN.1はその一例です。
標準化されているからといって、標準のAPIが提供されるとは限りません。

このトークでは、まず馴染みあるデータの読みとり方を整理します。
次に、ASN.1を例に、Parserの基本原理、仕様の調べ方を解説し、実際に実装してみます。
標準仕様の読み解き方とその実装方法を知ることで、処理できるデータの幅を広げましょう。

19
LT(5分)

おまえは今まで登録したUDIDの数をおぼえているのか?

mrtry_ mrtry

新入社員の受け入れや新規端末購入の際に発生する面倒事として、UDIDの追加、証明書とProvisioning Profileの更新があります
fastlaneを利用すれば作業は簡素になりますが、UDIDは都度入力する必要があり、運用担当エンジニアが手動でCLIを叩きがちです
この面倒事から逃げるために、GitHub Actionsで提供されているmanual workflowsを活用し、誰でもUDIDの追加をできるようにしました
このLTを見て、あなたも今日からUDID登録作業から開放されましょう

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

新卒が語る今更聞けないRxSwiftの学習方法

naoki_mrmt Naoki

入社して初めて配属されたプロジェクトがRxだらけのソースでした。
専門学校時代、RxSwiftのソースを頑なに避けていたこともあり全くと言っていいほどソースが読めませんでした。このままでは何もできないと思い非同期処理とRxSwiftについて学習してみました。

このトークでは、Rxを避け続けてきた、新卒がどのような手順を追ってRxについて学習したかをお話しします。

  • なぜRxSwiftを勉強しようと思ったのか
  • 何をやったか
    • 非同期処理とは?
    • Rxの書き方について
2
レギュラートーク(20分)

プロダクト改善を支えるイベント計測の設計と運用

chickmuuu nakamuuu

ユーザーの行動分析や広告の効果検証の目的で、多くのプロダクトが Google Analytics for Firebase などの計測ツールを利用していることと思います。
蓄積したデータを多様な分析に活用できるように、数百ものイベントを計測しているアプリもあるのではないでしょうか。

しかし、そんな "イベント計測" のノウハウは個々のプロダクトの仕様に依る側面が大きいのもあり、広く共有されていない印象を持っています。

このセッションでは、僕らが提供するプロダクト「B/43」でのイベント計測の設計と運用の一例を示しつつ、さらなる運用の最適化に向けた試行(イベント定義書からのコードの自動生成など)についてもお話ししていきます。

【内容(予定)】
・「B/43」でのイベント計測の設計と運用の一例
・イベント計測の設計規則と効率的な実装方法の検討
・イベント定義書からのコードの自動生成の試行

5