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

MetalとMorphologyを駆使した麻雀牌分類術

horita_yuya horita_yuya

AppleのGPU向けプログラミングインターフェースMetalと、画像処理で一般に用いられる形態学(Morphology)を駆使し、麻雀牌の画像からその種類を見分けることに挑戦します。

「分類」と聞くと、機械学習や学習データが必要なのでは?と思う方もいるかもしれませんが、今回はあくまで画像処理だけのアプローチにこだわります。 (学習データなどは使いませんが、いくつかの制約を課します。)

宜しくお願いします。

(本セッションを聞いて下さる方へ: 麻雀のルールを知らなくても全く問題ありません。)

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

iOSアプリでCore ML Stable Diffusionを使ったAIの組み込み方

tsuzuki817 Ryo Tsuzukihashi

このセッションを通じて、Core ML Stable Diffusionの利用方法を簡単に深く学び、iOS上でAIを活用することができるようになります!
わくわくするAIの世界を楽しく体験しましょう!

  1. Core ML Stable Diffusionとは何か?
     どのように機能するのかを、専門的な言葉をなるべく使わず基本概念やメリットを理解できるように解説します。
  2. 手順と実践例
     具体的な手順と実際のコード例を通じて、iOSアプリに組み込む方法を学びます。
  3. デモとエクササイズ
     参加者が自身のデバイスで手軽に試せるデモやエクササイズを用意します。
  4. ユーザーエクスペリエンスのアイデア
     Core ML Stable Diffusionを使って実現可能なユーザーエクスペリエンスのアイデアを共有します。
2
レギュラートーク(20分)

iOS開発におけるエントリーポイントの歴史

417_72ki 417.72KI

アプリケーション等のプログラムを実行する際最初に呼び出される処理や関数のことをエントリーポイントと呼びます。
Objective-C時代はmain.mというファイルが必要でしたが、Swiftになって @UIApplicationMain が登場しエントリーポイントが隠蔽されるようになりました。
更に、SwiftUIや @main の登場により @UIApplicationMaindeprecated にしようという動きもあります。

本トークではそんなエントリーポイントの変遷を紐解いていくことで、エントリーポイントについての理解を深めていければと思います。


「エントリーポイントについて理解するとAppDelegateをモック化できる」
AppDelegateをモック化できるとどうなる?」
「知らんのか」

「副作用の少ないテストが書ける」

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

Swift Playgrounds を使ったマルチモジュール開発の提言

hcrane14 Hiromu Tsuruta

「お前も Swift Playgrounds を使った開発者にならないか?」(1年ぶり2回目)
 
昨年の「iPadOSDC Japan 2022」では、Swift Playgrounds を知ってもらうために、 Xcode との機能差分やメリット・デメリットを紹介しました。
本セッションでは、その中でも触れた内容の1つをさらに掘り下げます。
 
Swift Playgrounds では、プロジェクトファイルを持たずに、Package.swift を起点に開発することになります。
これをうまく活用することで、Xcode と併用して Feature 単位でのマルチモジュール開発が可能になります。
 
ただし、これは完全に機能するわけではなく、まだ問題点もあるので、実際のプロジェクトを通して経験したことも含めて、お話ししていきます。

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

クロスプラットフォームデザイン iPhoneからiPadとMacへの最適化

masakaz

背景

最高のユーザ体験は、単に素晴らしいデザインや機能性だけでなく、異なるデバイス間でも一貫性と流動性を持つことが求められます。特にiPhone AppをiPadやMac Catalystに単純に移植するだけでは、ユーザーに違和感を与えることがあります。

本トークでは異なるAppleデバイス間での一貫した体験を提供するためのデザイン戦略と技術的なアプローチを解説します。
ソースコードはSwiftUIを前提とし、UIKitは本トークでは扱わないものとします。

Agenda

  1. iPad, Mac Catalystでビルドする
  2. Stage Manger対応(デザインとコードの両方面)
  3. インタフェースデザインの最適化
  4. App Iconのデザイン
  5. デバイスの独自機能の利用(写真、ドラッグ&ドロップ、キーボード、カーソルなど)
    and more...
4
レギュラートーク(20分)

Flutter アプリおけるテスト戦略の見直しと自動テストの導入

ostk0069 おさたく

私たちのチームでは品質維持のためにテスト戦略を見直し、その結果、自動テストを導入しました。
半年が経過した現在、自動テストのシナリオ数は35を超えていますが、その過程で多くの課題がありました。

  • どのようなフロー・タイミングで自動テストを実行するのか
  • 成熟したプロジェクトでどの機能から自動テストを導入するのか
  • 自動テストを実施するか否かの判断をどうするか
  • 不安定なテストシナリオへの対処法

上記で挙げた課題に対して行ったことの紹介はもちろん、以下のことについても話します。

  • テスト戦略の見直しを行った背景
  • テスト戦略の見直しから自動テストの選定までの流れ
  • 受けられた利益やデメリット

技術選定にFlutter、integration_testを使用したプロジェクトのトークになりますが、トーク内容はモバイルアプリ全般に適用できる内容です。

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

SwiftUIで名刺をデザインする

Kyomesuke Kyome

SwiftUIは強力なUI構築手段ですが、アプリ開発にだけ利用するなんて勿体無いと思いませんか?

本トークではSwiftUIで名刺をデザインする方法について、実践的な手順を紹介します。

  • SwiftUIで名刺をデザインするメリット
  • ベクターデータをSwiftUIで取り込む方法
  • SwiftUIのViewをベクターデータとして出力する方法
  • 名刺を発注する際に必要なベクターデータに沿った注意点
  • etc.

SwiftUI製の名刺を作ってiOSエンジニアとしてのスキルアピールや個人ブランディングに役立てましょう!!

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

coremltoolsで深層学習モデルをiOSアプリで動かすためのTips

fummicc1 Tanaka Fumiya

深層学習モデルの識別処理は学習に比べて軽くモバイル上で実行できるオンデバイス識別の技術があり、端末上で完結するという利点を備えています。
iOSアプリでは深層学習モデルはmlpackageに変換して利用しますが、慣れていないと躓く点があると考えており、以下の内容を軸にトークを進めようと考えています。

対象者:深層学習をデバイス上で識別してみたい人・デバイス上で動作させるためのTipsに興味がある人

  1. モデルのデプロイについて(CreateML or coremltools or 公式CoreML Model)
  2. coremltoolsにおける推論を行うためのTips
  3. モデル圧縮と識別精度に関するTips

WWDC23で発表されたcoremltools 7ではモデル圧縮のAPIに変更が入っており、そちらについてもトーク内で触れようと考えています。

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

JSONだけじゃない!独自のDecoderを使っていろんなデータをCodableに変換しよう

coffeegyunyu 日向強

アプリがネットワークなど外部サービスを通じてデータをやり取りする場合、JSONが使われることは多いと思います。
JSONのデータはJSONDecoderを使い、Combineでdecodeと組み合わせてなどの方法でCodableデータモデルに変換し処理することになると思います。
しかし世の中のWeb APIにはJSONではなくXMLでのレスポンスを返すものもあります。
また、データソースの変更で、ネットワーク経由ではなくローカルのcsvやyaml、はたまた独自のデータを変換することになったり…
そうなった場合、decodeは使えないのでしょうか?
否!JSONのデータじゃなければ、自分でDecoderを作ってCodableなデータモデルに変換すればいいのです。

このトークは、JSONではないデータに出くわしても困らない、独自のDecoderを作成するための説明を行うトークとなります。

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

Swift Charts で「良い感じ」に3変数を持つデータを表示するまでの軌跡

base_front matsue

iOS 16 から Swift Charts という SwiftUIのフレームワークが使えるようになりました。

Swift Charts を使うことで、簡単にグラフを作成することが出来、特に時系列データの可視化に便利です。

一方で、コード上で設定できる項目がかなり多い上、設定項目とグラフの変化が直感的で無い事もあるため、グラフの表示範囲や見た目をカスタマイズするのが難しくなっています。

そこで今回は Swift Charts で「良い感じ」にグラフを表示する方法を紹介します。

具体的には、一般的な2変数を対象にグラフ自体を見やすく表示する方法を紹介しつつ、筋力トレーニングの記録のような3変数を持つデータの表示方法を詳細に説明します。

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

長年の運用で肥大化した、UIKitベースのiOSアプリを安全に分割していくための戦略

_kzumu Shimomura Kazumasa

プロジェクトの肥大化により差分ビルドの時間が伸びてしまいます。
私たちのチームはマイクロフレームワーク戦略でしたが、UI関連のフレームワークが肥大化してしまいました。

解決策として、フレームワーク分割が有効です。
差分ビルド対象のフレームワークが減り、ビルド時間が短縮します。
加えて、機能ごとにフレームワークを分けることで特定機能のミニアプリの配布が可能となります。
しかし、コンパイルが成功しても安心できません。
ランタイムクラッシュや参照の不備でリソースが見つけられない問題が生じます

本トークでは、安全なフレームワーク分割の手法を説明します。以下の項目を中心に話す予定です。

  • xibファイル内モジュール参照不整合の静的検査方法
  • SwiftSyntax、IBDecodableの使い方
  • CIでの静的検査と、Dangerを使ったPull Requestへの警告コメントの出し方
4
レギュラートーク(20分)

それ、ShellScriptじゃなくてSwiftで書いてみない?

_kzumu Shimomura Kazumasa

アプリ開発に使用するちょっとしたスクリプトは、Shell Scriptでささっと書いてしまうことがあるかと思います。
Shell Scriptは少ない記述で多くのことができる反面、以下のデメリットがあると思います。

  • iOSエンジニアの中でも書ける人が限られたり
  • テストコードが書きづらい
  • Swift のソースファイルの静的解析をしたり、Swiftのライブラリ資産を活用できない

本トークでは、実際にチームで運用がされているSwift でのスクリプト開発について詳しく説明したいと思います。
以下にスポットを当てる予定です。

  • Swift Package ManagerでCLIツールを構築する
  • Swiftからファイルシステムを扱う
  • Makefileなどから簡単に実行する
  • CI上でのキャッシュ運用tips
  • 実際にどのようなスクリプトを運用しているか
8
レギュラートーク(20分)

Swift開発者はどうやってMojo🔥のAIコードを適切に書けるようになりますか?

brevansio Bruce Evans

Swift開発者として、より高度なアプリケーションを構築するために新しいプログラミング言語を探求することがあるかもしれません。Mojoの言語は、AIアプリケーションを開発するために使用できる強力な言語であり、Swiftに似た構文を持ってところはいっぱいあります。この講演では、Mojoの基礎と、AIアプリケーションを構築するためにどのように使用できるかを探求します。また、MojoとSwiftの類似点と相違点、およびSwiftのスキルを活用してMojoをより迅速に学習する方法についても説明します。さらに、機械学習やニューラルネットワークの基礎を含むAIコーディングの簡単な紹介を提供します。この講演の終わりまでに、Mojoプログラミング言語とAIアプリケーションの構築方法についての堅固な理解と、AIコーディングの世界へのさらなる探求の基盤を持つことができます。

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

アプリアップデート時のテストをMagicPodを使って自動で実行しよう

くまむし

ネイティブアプリを継続的に開発していると怖いのが、アップデート後のデクレですよね。
CoreData等のローカルDBのデータが消えていないか、特定の動線でクラッシュが起きないかなど、毎回確実に確認しておきたいものですが、準備や実行に手間がかかるのも事実。
こういったものは自動でテストできると安心ですね。
今回はそれをMagicPodとS3、Bitriseを使って自動でテストをする方法を紹介いたします。

2