ルーキーズLT(5分)

開発効率爆上がりッ!?今振り返るXcodeの便利機能ッ!

gurensouen odagiri

みなさん、iOSアプリは何で開発していますか?
大半の方は、こう答えるでしょう。「Xcodeで開発している」とッ!
このLTでは、開発効率が上がるかも?しれないXcodeの機能やショートカットコマンドを中心に紹介します。
すでにご存知の方は、「あー、これあるよね、使う使う」ってテンションで見ていただき、
初めて知る人は「あ、こんな機能あったんだ!」と新しい発見をして、使えるとこはご自身の開発に取り入れていただけると幸いです。

▼お品書き
・Xcodeの便利機能 〜個人的おすすめ設定を添えて〜
・Xcodeでショートカットコマンド 〜個人的よく使うショートカットコマンド風〜

2
ルーキーズLT(5分)

UIKitで作られたダイアログコンポーネントをリプレイスして感じた、SwiftUIの良いところ・悪いところ

Sossui_Swift そっしー

新規プロジェクトでSwiftUIが採用されるケースが増えてきました。
UIKitで運用してきた既存プロジェクトにおいては、部分的導入から進めているでしょうか?
SwiftUIは細かいところに手が届かないから...既存の設計と相性が...と導入を諦めていますでしょうか?

弊社では、積極的にSwiftUIへの置き換えやリアーキを行っています。
・VCからもViewからも呼び出し可能
・カスタムアニメーション付き
・画像の取得があれば成功したら表示
など、これらの条件に従いつつ実装した経験を元に、
UIKitで作られたダイアログと比べてどの点が便利に感じたのか、不便に感じたのかを発表します。

このトークセッションを通して、
SwiftUIの部分的導入の選択肢にダイアログが増えれば幸いです。

5
ルーキーズLT(5分)

脱Swift!? 〜 Compose for iOS によるiOSアプリ開発の可能性を探ってみる

Sossui_Swift そっしー

概要
iOS と Android のクロスプラットフォーム開発の手段として、これまでに「Flutter」や「KMM」が選ばれてきました。
これに加え、「Compose for iOS」というものがJetBrainsから出てきたことはご存知でしょうか?
iOSアプリのUIをComposeで実現できるとなると、今後のiOS・Androidの垣根はどうなっていくのでしょうか?

そこで、今後の技術選定の選択肢に入りうるのか、という議題を元に
「Compose for iOS がどこまで表現できるのか」 に焦点を当てて発表します。
逆に言えば、「iOSでしか表現できないものはあるのか」というiOSエンジニアとしての危機意識でもあります。

トークセッションを通して、1人でも多くの方に選択肢の1つとして残り、
より知見が溜まっていく流れになると幸いです。

4
採択
2023/09/02 17:05〜
Track B
ルーキーズLT(5分)

ShazamKitの魔法を解き明かす: 音楽認識技術「オーディオフィンガープリント」の探検!

shzero5 Shogo Yoshida

カフェのような喧騒の中でも、Shazamがどのようにして音楽を精度良く認識しているかご存知ですか?
このライトニングトークでは、WWDC2023でアップデートが発表されたShazamKitの核心となる技術、オーディオフィンガープリントに焦点を当て、その神秘を解き明かします。
わずか数秒のフレーズから全曲を特定し、騒々しい環境でも音楽を正確に認識する方法を、その驚くべき技術と共に掘り下げます。
5分間の発表で、楽曲を視覚化するスペクトログラムから始まり、音楽の「指紋」となる時間と周波数の2次元の星座図について説明し、そして、この「指紋」がどのようにデータベース内の楽曲とマッチングし、最終的に特定の曲を見つけ出すのかを明らかにします。
普段あまり触れることのない音楽認識技術の面白さを共有し、皆さんに新しい発見をしていただけることを期待しています。

ルーキーズLT(5分)

一つのBotで全て解決!Swift製Slackbot開発術

yochidros yochidros

普段bot開発はnode.jsやpythonなどで行われているかと思いますが、swiftでも開発ができることはご存知でしょうか?
aws-lambdaにswiftのruntime用意されているのでそれを利用することで実現が可能です。

bot上でAppstoreConnectAPIを利用することで今までfastlane上やローカル環境で行っていた作業がslackだけで完結できます。
AppstoreConnectAPIだけでなく、GithubやBitriseにも対応ができるので作業の効率化が高められると思います。

今までアプリの審査提出する準備もマウスでポチポチ動かしていた作業やめませんか?

swift製のslack-botを運用し始めて一年ほど経過したのでそこまでの知見などを共有したいと思います。

4
ルーキーズLT(5分)

具体的な悲劇から学ぶ、循環参照の怖さとそのデバッグ方法・対策

Sossui_Swift そっしー

ARCの登場によって、エンジニアがメモリを意識することは殆どなくなりました。
それでも、ヒューマンエラーは必ず起こるもの...循環参照を完璧に避けることは出来ません。
つまり、「循環参照対策として[weak self]さえつけておけば良い」という状態は準備不足です。

本トークで循環参照による悲劇の話とそのデバッグ方法を聞くことで、
危機意識が高まると共に、実際に起こった際の具体的なアプローチを知ることができます。

実際にデバッグ方法を知らなかった時と知っていた時で、解決までのリードタイムが大きく違ったため
より多くの方に知っていただけたらと思っています。

5
ルーキーズLT(5分)

SwiftUIへの段階的移行〜マッチングアプリのコア機能、ユーザーフリック面の置き換えで学ぶ移行戦略

Sossui_Swift そっしー

-概要
UIKit+MVVM+Fluxで実装されたプロダクトコード。
2014年のサービス開始から9年が経ち、特にコア機能のユーザーフリック面において改修コストが無視できなくなってきた。
中長期的な開発コスト・リグレッションテスト・CSコストを下げることを目的として、
コア機能のSwiftUIへのリプレイスを決断。

リプレイスのポイントは次の3点、
①要件をどれだけカバーできるか
②影響範囲をどれだけ小さくすることができるか
③いつでも切り戻しが可能であること

影響範囲が、、、時間が、、、という課題は付きものですが、
このトークセッションで少しでもリプレイスへ踏み出すきっかけとなれば幸いです。

3
ルーキーズLT(5分)

SwiftUIのダイアログコンポーネント化で学んだ、最小限のインターフェース作りと @Stateが更新されないケース

Sossui_Swift そっしー

-概要
デザインシステム刷新によって、既存ダイアログを6パターンに定義。
そしてUIKitではなくSwiftUIで実装をすることになりました。
このプロポーザルを聞くことで、負債を小さくするために工夫したことと、
@Stateが更新されないケースを具体的に知ることができます。

-負債
考慮したい負債は次の3点です。
① Viewの処理が呼び出し元に漏れ出す具合
② デザイン確認コストが高い
③ 実装の柔軟性が高い

-対応
負債へと向き合うポイントは次の2点
① Componentの規約を意識しなくて良い状態にすること
実行時に規約に反した実装を落とし、ヒューマンエラーを弾く。
② Viewで完結すること
ダイアログの特性上、どのVCからも呼び出される可能性があるため、
呼び出し元のPresenterとのインターフェースは必要最低限にする。

詳細は発表にて!!!!

3
ルーキーズLT(5分)

メモリ領域から理解する、 static や weak self の仕組み

Sossui_Swift そっしー

-概要
iOSでは、ARCの登場によってメモリ管理への意識は無くなりつつあります。
循環参照とは何なのか、static修飾子をつけたメソッド・プロパティは何故インスタンスを生成しなくてもアクセスできるのか。
逆に、インスタンスからなぜそれにアクセスできないのか。
それを知るには、メモリ領域の種類や割り当ての仕組みから学ぶ必要があります。

このトークセッションでは、
「メモリとアドレス」「メモリへの割り当て」「4種類のメモリ領域」というテーマで深ぼっていくことで、
メモリを意識した開発ができるようになります。

なんとなくweak selfをつけよう、インスタンス化しなくて良いからstaticをつけよう、
そんな意識からの脱却を目指します。

6
ルーキーズLT(5分)

A/Bテストの基礎と具体例を交えた勝ちパターンの見つけ方

A/Bテストはデータを活用して意思決定をサポートする手法です。
この方法を活用することでモバイルアプリの改善やUIの最適化が可能となります。

今回のトークではモバイルアプリにおけるA/Bテストの基礎や実施方法を解説し、具体例などを交えながら効果的なA/Bテストのデザインや勝ちパターンの見つけ方についてお話します。

・A/Bテストの基礎
・テストの実施とランダムな割り当ての重要性
・データの収集と計測手法の紹介
・データの解釈と結果の活用
・A/Bテストの成功事例と注意点の紹介

本トークを通じてA/Bテストの基本的な概念を理解し、実際のアプリケーションにおいて効果的なテストを実施するための手法やポイントを知ることができます。
アプリケーション開発者にA/Bテストを有効活用していただき、今後の開発に活かしていただけると幸いです。

1
ルーキーズLT(5分)

新卒iOSエンジニアが『会社独自の新アーキテクチャ』を使って課題に取り組んだ話

ryu_develop 中山 龍

Chatwork株式会社のiOSチームでは、SwiftUIの利用を進めており、宣言的UIであるSwiftUIの恩恵を最大限に享受するため、会社独自のリアクティブな新アーキテクチャを考案し、既存のプロダクトへの導入を進めています。
今年入社した23新卒の私も例外ではありません。
新卒iOSエンジニアのオンボーディングとして学習課題のアプリの作成に取り組む中で、配属1日目からその『新アーキテクチャ』を使って、自分が過去に実装したアプリのリライトを行っています。

このセッションでは、「新卒iOSエンジニア」 「新アーキテクチャ導入の最中でのジョイン」という視点から
・新卒iOSエンジニアのオンボーディングの概要
・どのように課題に取り組んだのか
などを5分で簡単にお話しします。

6
ルーキーズLT(5分)

基盤開発チームにおけるアジャイル手法のカンバン方式の導入について

松葉 潤

基盤開発やリファクタリングを主に行っているチームで、それまで取り組んでいたアジャイル方式のスクラムからカンバン方式に移行した話をします。
本トークではカンバン方式の説明およびカンバンを取り入れて良かったことなどを具体的な例を用いながらお伝えできればと思います。

3
ルーキーズLT(5分)

SwiftUIのList以外でのswipeActions実現のためのSwipeableStackの紹介

yoppie_x yoppie

iOSではリストの子要素をスワイプするUIをよく見かけます。
SwiftUIでは、Listに子Viewを列挙することでリストを実現でき、その子Viewに対してswipeActionsを利用しスワイプを可能にします。
しかし親ViewがList以外の場合、子ViewにswipeActionsを利用しても、スワイプは適用されません。
よって、親ViewにListを使わずに構築しているリストなどの子Viewにスワイプを適用する場合、swipeActionsを適用できないため独自実装が必要となります。

本トークでは、Listではない親Viewの子Viewにスワイプを適用するために独自実装したSwipeableStackを紹介します。
SwipeableStackの実装内容と使い方を具体的に解説します。

3
ルーキーズLT(5分)

Using Alamofire with Swift Concurrency

k_torishima Koji Torishima

Alamofireを使って通信処理を実装しているアプリ世の中には結構あると思います。
Alamofireはv5.5.0でSwift Concurrencyに対応されており、いくつかのmethodが存在しています。
このトークではAlamofireでのSwift Concurrencyに対応された実装の紹介と、具体的な実装方法などを踏まえて紹介したいと思います。
説明内容
・AlamofireのSwift Concurrencyのメソッド紹介
・実装前と実装後の具体的な比較をもとにした実装方法の紹介

4
ルーキーズLT(5分)

Swift Playgrounds Appを使ったデモアプリ開発

RyogaBarbie RyogaBarbie

Swift Playgrounds Appを使用することで普段のアプリ開発するWorkspace上で、簡単にDemoApp, PreviewAppを作れるよっていう話をします。
マルチモジュール構成やSwiftPackageを使ったマルチモジュール構成での開発も増えてきたかと思いますが、
デモアプリの開発でXcodeProject(.xcodeproj)を使うと、WorkspaceとProjectを行ったり来たりしないといけなかったり(複数Window)、WorkspaceやProjectを複数開いた場合に共通するpackageの依存が解決されないや、デモアプリのProjectで検索がうまく動かないなど(特に移行期など)が発生します。

1Workspaceで、Package内のモジュールの開発build、Appのbuild、デモアプリのbuildまでできる環境便利です。

1
ルーキーズLT(5分)

これまでOSSに貢献して良かったこと

fummicc1 Tanaka Fumiya

OSSは貢献したいと思ってもそのコミュニティによって貢献できる難易度は変わってくると思います。ですが、OSS貢献は普段自分と関わりがない開発者の方々とコミュニケーションを取れるため、非日常で楽しいことだと考えています。
特にDroidKaigiでは毎年OSSとしてカンファレンスのアプリケーションを開発しており、僕も3年間貢献させていただきました。
他にも幾つかのOSSに貢献した経験をもとに、OSS活動をやってみて良かったなと思える瞬間を本LTで話したいと考えています!

5
採択
2023/09/02 17:05〜
Track A
ルーキーズLT(5分)

7カ国語、各ファイル1200行を超えるローカライズを安全に運用する方法

_kzumu Shimomura Kazumasa

私たちのチームで開発しているアプリは7カ国向けのローカライズを対応しています。
ローカライズのテキストは外部へ依頼して翻訳してもらった後に、手作業でスプレッドシートからLocalizable.stringsへコピペをする必要があったため
人的ミスが発生する原因となっていました。

そこで、ローカライズファイルの静的検査ツールである、L10nLintというコマンドラインツールを開発し、
実際に自分たちのチームで運用がされています。

このツールには、Baseファイルと比較したときのkeyの抜け漏れ検知や、並び順のチェック、
簡体字と繁体字が混合していないかなどのチェックなどの様々なルールが含まれています。

また、Danger経由でPull Requestへコメントを行うためのプラグインもリリースしています。

本トークではこのツールのご紹介を予定しています。

ルーキーズLT(5分)

CarthageのライブラリをSwift Package Managerで簡単に使用する!

_kzumu Shimomura Kazumasa

近年、xcodeprojファイルを軽量に保ち、Swift Package Manager(以下SPM)の方で依存関係を定義するシンプルな構成が多く採用されています。
この方式は、Point-Freeのisowordsなどの比較的大きなプロジェクトでも運用されています。
SPMではxcframeworkのライブラリを簡単に使用することができます。

本トークでは、CarthageのライブラリをSPMから参照するやり方や、
シンプルなextensionの記述によってPackage.swiftを綺麗に保つtipsに加えて、
SPMではなくCarthageを利用することのメリットを簡潔にまとめられたらと思っています。

2
ルーキーズLT(5分)

コーディング、リフティング、ストリーミング: アプリ開発者とボディビルダーの両立術

yujiro45 Jerome CHA

私は普段モバイルアプリを開発しています。その傍ら、Twitchで筋トレの生配信をしたり、この間はJBBFというボディビルの大会に出場しました。
こちらのスピーチでは、アプリ開発とボディビルのバランスについての洞察を共有します。 ストリーミング、筋トレ、コーディングの相互関係、それぞれの役割のメリット、時間管理の戦略、課題の克服、インスピレーションの見つけ方、自己ケアの優先順位について話します。 多様な情熱を受け入れ、複数の役割をうまくこなしましょう。

10
ルーキーズLT(5分)

Osushi食べろ!!〜最新iOS関連ニュースをまとめたサイト紹介〜

Ktombow1110 とんとんぼ

iOS Developerにとって最新の情報収集は必須です。今回はiOSの最新情報を伝えてくれるサイトをご紹介します!
Android界隈に「Android Dagashi」というサイトがあるのをご存知でしょうか?
Androidの関連ニュースをまとめ・紹介しているサイトになります。とても便利ですね!
実はこれのiOS版になるサイトがあります。
本トークでは同様の形式でiOSの最新情報を紹介する特別なサイトを皆さんに紹介したいと思います。このサイトがどのような情報を提供し、どのように開発スキルに役立つかについて語ります。
常に最新のiOSニュースをキャッチすることで、君もつよつよモテモテサイキョーなiOS Developerになること間違いなし!

5