ルーキーズLT(5分)

Kotlin Multiplatformを導入したアプリのサイズ最適化に挑む

shumpei_nagata Shumpei Nagata

Kotlin Multiplatform(KMP)はここ数年で導入事例も増え、ノウハウも多く公開されるようになりました。
2023年末に安定版となったこともあり、その導入のハードルもかなり下がってきているのではないでしょうか。

しかし、アーキテクチャやSwiftとの互換性について語られることが多い一方で、その他の部分のノウハウは少ないです。
その中でもサイズの最適化は特に重要なトピックの一つです。
可能な限りサイズを小さく保つことは、ユーザ・アプリ提供者の双方にとってメリットに繋がります。

このトークでは、サイズ制約の厳しいApp Clipの開発にKMPを使った経験を踏まえ、
以下のポイントに焦点を当てサイズ最適化のノウハウをご紹介します。

  • SwiftとKotlinの言語仕様的な違い
  • KMPで生成するFrameworkのビルド設定
  • KMPコードを導入するiOSアプリ側の設定
7
採択
パンフ記事(8ページ)

iOSアプリ開発のいま:基礎知識から業務レベルのツールまで

usamik26 宇佐見公輔

iOSアプリ開発のチュートリアルや入門書は多く存在しており、学校の授業で扱われることもあります。しかし一方で、実際のアプリ開発の業務では、より多くの知識が求められます。このギャップに初学者がとまどうことも少なくありません。

この記事では、業務レベルのアプリ開発でどんな知識が求められ、どんなツールが使われているのかをざっくり紹介します。初学者に参考にしてもらうとともに、中級〜上級者にも開発環境を俯瞰的に捉える機会になればと考えています。

・プログラミング言語、UIフレームワーク(UIKit、SwiftUI)
・IDE、ビルド設定、LinterやFormatter
・プロジェクト構成、パッケージ管理(SwiftPMなど)
・デザインや設計のガイドライン(HIGなど)
・API通信、プッシュ通知
・各種フレームワーク、データベース
・ローカライズ、アクセシビリティ
・テスト、CI(Xcode Cloudなど)、アプリ配布

採択
2024/08/23 17:25〜
Track B
ルーキーズLT(5分)

リョムキャットのパーフェクトSwiftネーミング教室

__ryomm Ryomm

みんなー リョムキャットのパーフェクトSwiftネーミング教室はじまるよー


Swiftの関数名、どのように命名していますか?
本LTではSwiftの関数名の命名時に考えるべきことについて紹介します。

弊社には全くコメントを使わずに名前だけで全てを表しているプロジェクトがあり、弊チームでも追随してコメントをなくしていこう!という風潮になりました。
コメントを完全に消すのはまだ議論の余地があるところですが、たしかにコメントがないと処理がわからない関数名は是正していくべきでしょう。
そこから命名について思い悩む日々が始まりました。

体を名で表すのは至難の技で、もはや芸術の域です。
そんな中、 Apple は Swift API Design Guidelines という指針を提示しています。このガイドラインを読み解きながら、Swiftらしい良い命名について一緒に考えていきましょう。
このLTを通じて、パーフェクトでSwiftライクなグッドネーミングセンスを身につけられます!

LTで話すこと:

  • Swift API Design Guidelines で言及されている命名規則の紹介
  • 自然に読める関数名にする工夫
  • 英語力がなくてもいい感じの命名をするには
レギュラートーク(40分)

iOSアプリのUI実装おける数学的エッセンスを取り入れた考え方や計算を活用したTips集

fumiyasac 酒井文也

「数学を利用した実装って難しいんでしょ?」
「数学苦手だったし思い出しかないし正直ナニモワカラナイ...」
「ぶっちゃけUI実装の中で数学っぽい要素ってある?」

ちょっと待って下さい!日頃の業務や個人開発の中で取り組んでいるUI実装においても、より自然な表現や触り心地等を実現するための調整対応や、SceneKit・ARKitを活用した比較的簡単な実装を利用する場合、アニメーションやベジェ曲線を利用する場合等、実は何気ない形であっても触れ合う機会は多いと思います。

本発表では、比較的皆様にとっても馴染みがある様な、具体的なUI実装例・AnimationやInteractionを伴う表現等に含まれている数学的な要素の紹介から、それらの要素が実装や表現の中において、どの様な点で影響を与えるかに加えて、実装観点から見たTipsをご紹介します。

学校教育でも触れてきた数学的なエッセンスが、どの様な形で具体的な実現イメージに変化する(すなわち抽象から具体への変化する)過程と解説が、今後の参考になれば嬉しく思います。

4
採択
パンフ記事(4ページ)

UIKitを利用した複雑な表現をSwiftUIで再現する際の考え方と事例紹介

fumiyasac 酒井文也

スワイプ等をはじめとする指の動きに合わせた変化量や画面要素内のスクロール処理を連動する様な、機能性と触り心地に加えささやかな遊び心も兼ね備えたUI実装に関しては、UIKitがメインであった当時から、様々な創意工夫の余地があり使いやすく利用できるOSSも沢山生まれてきた経緯があったかと思います。

SwiftUIでのUI実装が徐々に普及し、SwiftUIに備わった機能やできる事も徐々に増えていった現在では、これまではUIKitを活用する事で実現していた様な複雑な実装であっても、徐々に実現可能になりつつあるので、今後は複雑なUI実装にも積極的に活用できる可能性を感じています。

本稿では、SwiftUIを活用した実装方針の中で、

  • ScrollViewの変化量を利用した複雑な表現事例
  • DragGesture時に取得できる変化量と連動した動きを応用した表現事例
  • GeometryReaderから取得できる値を有効活用して実現するUI実装事例
  • ScrollViewReaderで提供されている機能を利用したUI実装事例

の様なトピックにフォーカスをして、実現にあたり押さえておきたいポイントを解説します。

採択
パンフ記事(8ページ)

Combineベースの実装をSwift Concurrencyへ少しずつ置き換えていく際のアイデアとヒントのご紹介

fumiyasac 酒井文也

アプリ開発において、UIイベント・Network通信に関連する非同期イベントなどを取り扱う場面等では、Combineを利用した実装や処理に触れる機会はまだまだあると思いますし、上手に活用する事で処理の見通しをより良い物にしたり、内部処理の統制をうまく取る役割を担う事もできます。

昨今のSwift Concurrencyの登場により、既存のCombineベースで記載した処理をよりシンプルかつ見通し良くする事が可能な余地も増えた様に感じます。補う必要がある部分はCombineで補いながらも、アーキテクチャ内部の処理を徐々に置換する際には、段階的に処理を置換可能にするためのちょっとした工夫や考え方の方針があると心強いと思います。

本稿では、

  • Combineでの処理をasync/awaitへ置換する際の基本方針
  • CombinePublisherが中心の構成から少しずつ置換するアプローチとアイデア
  • 独自に変換するExtensionの活用やAsyncStream等の活用事例との比較
  • async/awaitを利用する事で処理をシンプル化できた事例紹介

等のトピックに関連する考察や、async/awaitベースの処理への置換でよりシンプル化ができる事例をご紹介致します。

採択
ポスターセッション

Bluetooth 制御で業務用サーマルプリンター対応アプリを作ろう

mitsuharu_e 江本光晴

昨今のペーパーレス化が進む社会でも、サーマル(感熱紙)プリントを見る機会は依然として多いです。iPhone や iPad を利用した POS レジからレシートを受け取った経験があるでしょう。その iPhone からどのようにレシートを印刷しているのか気になったことはありませんか。

印刷といえば iOS には Wi-Fi に接続されたプリンターを制御する AirPrint があります。しかしながら、業務用サーマルプリンターは Wi-Fi 非対応の機種も多く、AirPrint は利用できません。サーマルプリンター向けの印刷命令を実行する必要があります。Bluetooth で接続可能なサーマルプリンターを対象として、命令コマンドを iOS から実行する方法を紹介・実演します。また、サーマルプリンター対応アプリを作る際の注意点も紹介します。サーマルプリンターに興味ある方・そうでもない方も、iPhone だけには収まらない、外部ハードウェアと連携するアプリ開発について、談義しましょう。

5
採択
パンフ記事(8ページ)

iOS デバイスから始める Bluetooth 制御の業務用サーマルプリンター対応アプリの作り方

mitsuharu_e 江本光晴

昨今のペーパーレス化が進む社会でも、サーマル(感熱紙)プリントを見る機会は依然として多いです。iPhone や iPad を利用した POS レジからレシートを受け取った経験があるでしょう。その iPhone からどのようにレシートを印刷しているのか気になったことはありませんか。

印刷といえば iOS には Wi-Fi に接続されたプリンターを制御する AirPrint があります。しかしながら、業務用サーマルプリンターは Wi-Fi 非対応の機種も多く、AirPrint は利用できません。サーマルプリンター向けの印刷命令を実行する必要があります。この記事は、iOS デバイスを利用してサーマルプリンターを制御する方法を説明します。Bluetooth で接続可能なサーマルプリンターを対象として、接続や印刷する方法を説明します。また JavaScript で作られたレシート印刷に便利な OSS を iOS アプリで実行する方法も紹介します。この記事を読むことで、業務用サーマルプリンター対応アプリの実装方法を理解し、レシートを印刷できるようになります。今すぐにサーマルプリンターを買い求めたくなるでしょう。

3
LT(5分)

iOSエンジニアが知るべき生成AIの力 — Pull Request要約で言葉の壁を乗り越えろ

TRAsh___ Hiroya Hinomori

チームエンジニアリングでグローバルなメンバーと連携していると、どうしても言語の壁が辛いことが多々あります。そういった壁を今、勢いのある生成AIの力を使って乗り越えられるのではないか。
さまざまな手法を試しました。その中で特に効果的だったのが生成AIのPull Request要約ツールでした。

今回は数あるPull Request要約ツールの中の「PR Agent」を使って、グローバルメンバーとのGitHub上のコミュニケーションを円滑にした話をします。

セキュリティとか大丈夫なの?
Swiftに対応してる?
使うとどうなるのか?
でも生成AIって嘘つくんでしょ?
といったiOSエンジニアにとって気になるポイントを解説します。

このトークを通じて、生成AIがコーディング以外の場面でどのように活用できるかを知っていただき、チームのコミュニケーションがより円滑になる一助となれば幸いです。

1
ルーキーズLT(5分)

iOSエンジニアが知るべき生成AIの力 — Pull Request要約で言葉の壁を乗り越えろ

TRAsh___ Hiroya Hinomori

チームエンジニアリングでグローバルなメンバーと連携していると、どうしても言語の壁が辛いことが多々あります。そういった壁を今、勢いのある生成AIの力を使って乗り越えられるのではないか。
さまざまな手法を試しました。その中で特に効果的だったのが生成AIのPull Request要約ツールでした。

今回は数あるPull Request要約ツールの中の「PR Agent」を使って、グローバルメンバーとのGitHub上のコミュニケーションを円滑にした話をします。

  • セキュリティとか大丈夫なの?
  • Swiftに対応してる?
  • 使うとどうなるのか?
  • でも生成AIって嘘つくんでしょ?

といったiOSエンジニアにとって気になるポイントを解説します。

このトークを通じて、生成AIのコーディング以外での活用方法を知っていただき、少しでもチームのコミュニケーションが円滑になる助けになればと願っています。

ルーキーズLT(5分)

WWDC24のアップデートを組み合わせてアプリを作ってみた

touyou_dev 藤井陽介

アップデートをいち早く理解する一番簡単な手段といえば、そう!小さなアプリを作ってみることです。
このLTではWWDC24で発表されたアップデート内容のいくつかを組み合わせて作ったアプリをもとに、アップデート内容を紹介していきます。

つまり!現時点ではどんな内容になるかわかりません!笑

できうる限り強みを生かしたいいアプリに仕上げるつもりなので、どんな内容になるのか?どんなアプリになるのか?そんなところをぜひ想像しながら一緒にWWDC24を振り返りましょう!

2
ルーキーズLT(5分)

Flutterでもネイティブアプリだと思われたい

touyou_dev 藤井陽介

Flutterは、単一のコードベースでiOSとAndroidの両方に対応するアプリを作成できるクロスプラットフォームフレームワークです。しかし、ネイティブアプリと比較すると、ユーザーエクスペリエンスやパフォーマンスに違いが生じることがあります。

多くの開発者はデザインを一つに統一して省エネを図るかもしれませんが、iOSネイティブの魅力に惚れ込んでいる自分としては、できる限りiOSネイティブに近づけたいと思っています。

このセッションでは、FlutterでiOSとAndroidのネイティブ感をどのように演出するかについて具体的な例を用いて説明します。具体的には、それぞれのプラットフォームに適応したウィジェットの作成方法や、プラットフォームチャネルを使ったネイティブコードの統合方法などを取り上げます。そして試行錯誤の過程で得た難しかったポイントやTips、Flutterでできること・できないことについて共有します。

ネイティブ好きだけどFlutterを使わないといけないとなっている方々にぜひ聞いてほしい発表です。

4
採択
2024/08/23 17:40〜
Track A
ルーキーズLT(5分)

InputMethodKitとTCAを使ったmacOS上で動作するIMEの開発

Tatsumi0000

macOS上で動作するIMEを、Appleが公式で提供するInputMethodKitを利用して開発しました。

InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使って開発します。実際に開発をする中で、特にロジックが集中するIMKInputControllerのコードが肥大化していき、コードの見通しが悪くなるという問題に直面しました。

そこで、この問題を解決するためにThe Composable Architecture(TCA)を導入しました。

本セッションでは、これらの開発体験をもとに、InputMethodKitでよく使う項目に対しての解説と、UIKit/SwiftUIを使用していないコードに対してどのようにTCAを適用するかを中心に発表します。

ポスターセッション

InputMethodKitとTCAを使ったmacOS上で動作する英語向けIMEツールの開発を通して得た効率的に開発する知見

Tatsumi0000

macOS上で動作するIMEを開発するために、Appleが公式で提供するInputMethodKitを利用して開発しました。

InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使い開発します。実際の開発中に、特にロジックが集中するIMKInputControllerのコードが肥大化し、コードの見通しが悪くなるという問題に直面しました。他にもIME開発特有のデバッグの煩わしさもありました。

そこで、コードの見通しをよくするためにThe Composable Architecture(TCA)を導入し、IMEのデバッグの煩わしさを軽減するために、fastlaneを使った自動化や、Repository層とUseCase層を採用したマルチモジュール構成で開発する方針を採用しました。

これらについて実際に書いたコードと一緒に以下の内容について解説します。

  • InputMethodKitでよく使う項目に対しての解説
  • UIKit/SwiftUIを使用していないコードに対してのTCAを使った開発
  • デバッグを簡単にするためのfastlaneを使ったビルドの自動化とマルチモジュール構成を使ったデバッグアプリの開発
採択
パンフ記事(4ページ)

InputMethodKitとTCAを使ったmacOS上で動作するIMEの開発

Tatsumi0000

macOS上で動作するIMEを開発するために、Appleが公式で提供するInputMethodKitを利用して開発しました。

InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使って開発します。実際に開発をする中で、特にロジックが集中するIMKInputControllerのコードが肥大化し、コードの見通しが悪くなるという問題に直面しました。他にもIME開発特有のデバッグの煩わしさもありました。

そこでコードの見通しの悪さに対してはThe Composable Architecture(TCA)を導入し、IMEのデバッグの煩わしさに対しては、fastlaneを使った自動化や、Repository層とUseCase層を採用したマルチモジュール構成でデバッグ専用のアプリを開発し煩わしさを軽減しました。

本稿では開発を通して得た知見について、実際のコードと一緒にInputMethodKitとTCAを組み合わせた開発手法と、fastlaneを使った効率的なデバッグ方法について解説します。

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

数百画面をUIKitからSwiftUIに移行するプロジェクトをリードする

masamichiueta Masamichi Ueta

SwiftUIは革命的なUIフレームワークであり、宣言的なUI構築を可能にします。UIKitを使っているアプリでこれからSwiftUIへの移行を考えているアプリ開発者は多いと思います。

私は現在、日本最大のフリマアプリ「メルカリ」を通じて全国のお店で利用できるスマホ決済サービス「メルペイ」で、既存画面のUIKitからSwiftUIへの移行プロジェクトをリードしています。このプロジェクトでは、数百画面に及ぶUIKitベースの画面をSwiftUIに移行しています。
この講演では、数百画面のUIKitベースの画面をSwiftUIに移行するプロジェクトのベストプラクティスを共有します。

この講演は、以下の方々に特におすすめです。
・既存のUIKitベースのアプリをSwiftUIへ移行していきたい方。
・宣言的UIフレームワークの有効性を信じていて、社内でSwiftUIへの移行プロジェクトを立ち上げたい方。
・Mobileアプリ開発の大規模なリファクタリングプロジェクトをリードするためのノウハウを知りたい方。

UIKitからSwiftUIへの移行は、多くのiOSエンジニアにとって興味深いトピックの一つだと思います。
私のプレゼンテーションが、より多くのiOSエンジニアのイノベーションを後押しすることを願っています。
一緒にSwiftUIの活用を進めていきましょう。

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

入院アプリハッカソンで作ったアプリのUX改善の軌跡

u5_03 Sugiy

昨年度に入院することになり、入院中にトイレの時間と回数を記録をするように言われましたが、いい感じに記録できるアプリがありませんでした
ないときは自分で作ればいい!
ということで、手術までの時間に突貫でトイレ記録アプリを実装する入院アプリハッカソンを行いました!
せっかくなら自分だけでなく、自分以外の人にとっても使いやすいアプリを作りたいものです
そのため手術前の短時間で作ったものから、残りの入院期間や退院後の時間や別の入院期間でのドッグフーディングや他の人からのフィードバックを踏まえて、少しずつUX改善と機能追加を重ねていきました
この発表では今回のアプリ実装や経験をもとに、今後の展望や希望も含めた以下のUX改善のポイントについてお話しします

  1. ドッグフーディングとユーザーフィードバックの重要性
  2. WidgetやWatchOS対応などの複数の登録導線の実装
  3. Accessibility Inspectorを使ったアクセシビリティ機能の改善
  4. iBeaconを使った記録リマインドの通知

UX改善に決まった正解はないので、試行錯誤しながら少しずつ改善していくしかありません
今回の発表を通して皆さんの開発しているアプリやサービスのUX改善のヒントを掴んでいただければと思います!

2
採択
2024/08/24 15:45〜
Track A
LT(5分)

我が家に電子ピアノがやってきたので、ピアノと連携するアプリを作ってみた!

u5_03 Sugiy

結婚したことでパートナーが持っていた電子ピアノが我が家にやってきました!
電子ピアノといえばガジェット!ピアノ未経験とはいえ、エンジニアとしてはこれは触ってみるしかない!
ということで、ピアノ経験者監修の電子ピアノと連携するiPadアプリを実装しました

この電子ピアノはMIDIという規格を通して他のデバイスへ叩いた鍵盤の情報などを連携することができます
今回はこのMIDIをSwiftから利用し、その情報を表示するアプリの実装の概要について紹介します!
具体的には…

  1. Core MIDIの概要
  2. ピアノ鍵盤のUI実装のこだわりポイント
  3. 鍵盤の打鍵の強さを取得する仕組み

発表では実装したアプリが実際にピアノと接続しながら動く様子をお見せします!
この発表を通して、電子楽器とアプリ連携の世界に一歩足を踏み出してみましょう!
またこのデモの中でピアノ完全未経験の発表者がどれほどピアノが上手く弾けるようになっているかにも注目です

LT(5分)

個人開発でも App Clip が使いたい!!

nnsnodnb Yuya Oka

App Clip を実装している個人開発者の方はいらっしゃるでしょうか?
業務開発でも App Clip の開発経験がなかった私ですが、どうしても App Clip の実装がしたくてどうにかしてやりたいと思っていたときにふと思いつきました。

「NFC タグに App Clipコードを印刷した紙を貼り付けて、アプリ布教用に実装できるのでは?」

実際に20時間程度で作ったアプリに App Clip を実装し、デバッグや App Store の審査も通したときの経験談をお話します。
また、ローカル体験や App Clip Code Generator の使い方、 App Store Connect 上での操作方法など、可能な限りを LT 形式でまとめて紹介します。

3
ルーキーズLT(5分)

個人開発でも App Clip が使いたい!!

nnsnodnb Yuya Oka

App Clip を実装している個人開発者の方はいらっしゃるでしょうか?
業務開発でも App Clip の開発経験がなかった私ですが、どうしても App Clip の実装がしたくてどうにかしてやりたいと思っていたときにふと思いつきました。

「NFC タグに App Clipコードを印刷した紙を貼り付けて、アプリ布教用に実装できるのでは?」

実際に20時間程度で作ったアプリに App Clip を実装し、デバッグや App Store の審査も通したときの経験談をお話します。
また、ローカル体験や App Clip Code Generator の使い方、 App Store Connect 上での操作方法など、可能な限りを LT 形式でまとめて紹介します。