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

Androidと比較しながらおさえる! 新しいHuman Interface Guidelineの勘所と活用法

m_yamada0617 明渡 麻衣花

2023年6月、iOSアプリ開発者におなじみHuman Interface Guideline(以下HIG)が大幅に更新されました。
更新前は、迷える初心者から「これからアプリ開発するならiOSとAndroidどちらがいい?」と相談を受けた場合、私は迷わずAndroidを薦めました。
理由の1つは、Googleの公式ドキュメントのほうがアプリ開発者へ圧倒的に親切だから。この理由が解消しました。

このセッションでは私のiOS・Android・Flutter開発経験を活かしつつ、以下についてお話します。

  • AndroidやFlutterで採用されているMaterial Designのガイドラインと比較しつつ、HIGの基本理念をおさらい
  • プラットフォームを問わず、ネイティブアプリを開発する上で大事にしたいこと引用集
  • Appleのアプリケーション開発にきっと役立つHIG活用法
2
LT(5分)

SwiftUI x Metal Shader 入門と応用

shmdevelop 服部 智

iOS 17.0からSwiftUIでのLayer表示効果にMetal Shaderが使えるようになりました。

View表示を波うたせたり色を変えたりする加工処理が簡潔に呼び出せるようになっています。

シンプルな色の変更から、形状加工、パラメータの動的な変更など一通りの使い方と応用を
デモとソースコードを使って解説していきます。

シェーダー未経験の方でも理解でき、応用したくなるセッションにしたいと思います。

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

Swiftコードのパフォーマンス悪化 - 6つのケースでの実験結果を報告

akihiro_kokubo Akihiro Kokubo

パフォーマンスにネガティブな影響のあるコードは、意図せず簡単に書けてしまいます。
例えば、配列の中で条件に合う最初の要素を取得する場合はどうでしょうか?
配列に対し filter を適用した後に first を適用するよりも、first(where:) を用いる方が速いでしょう。
ならば、どのくらい速いのでしょうか?
このトークでは、パフォーマンスが悪化しうる6つのケースを挙げ、どのくらいの差が出るのかを実験・検証します。

実験の対象とする6つのケース

  • コレクション内のオブジェクトの存在確認
  • コレクションが空かどうかの確認
  • 文字列が空文字かどうかの確認
  • コレクション内の条件に合う最初のオブジェクトの取得
  • コレクション内の最小のオブジェクトの取得
  • コレクション内の全てのオブジェクトが条件を満たすことの確認

対象者

  • “Swifty” なコードを書きたい人
レギュラートーク(20分)

運用10年目サービスにおけるデザインシステムを念頭に置いたコンポーネント戦略

BOBG1018Vi ぼぶ

皆様このような経験はございませんか?

  • 作成するこのボタンやシートが,既に定義しているコンポーネントと少し異なっている
  • 既存コンポーネントを説明しても,今回だけはこの仕様で実装してほしいと相談された
  • 既存コンポーネントを修正を試みるが,影響範囲が広すぎる
  • そうして出来上がったコンポーネントの亜種が継ぎ足されて,数ヶ月経過した

本トークでは,運用10年目サービスにおけるデザインシステムを念頭に置いたコンポーネント戦略についてご紹介します

  • 組織に対するコンポーネント定義の説明
  • デザイナーとの定義・実装方針の決め方
  • SwiftUIとUIKitの併用
  • VRTやUICatalogの活用
  • Atomic Designを模した実装方針
  • Androidも含めた統一的な命名・仕様

このトーク内容が,皆様の開発を加速させるきっかけになることを願っております

1
ルーキーズLT(5分)

プログラミング言語処理系の単位を落単した湯婆婆「カリー化というのかい?贅沢な名だねぇ。今日からお前の名前は部分適用だ!」

akihiro_kokubo Akihiro Kokubo

「高階関数」「カリー化」「部分適用」
これらのワードを読むと今にもめまいがしそうですね。
普段からSwiftを使う人なら、目にした回数を数え上げるとキリがないでしょう。耳にタコができて仕方がないでしょう。
さて、これらを人に説明してくださいと言われるとどうでしょうか?
ドキッとしたあなたは、湯婆婆と同じ間違いをするかもしれません。

このLTで話す内容

  • 関数型プログラミングの考え方
  • 高階関数とは
  • カリー化とは
  • 部分適用とは
  • 高階関数・カリー化・ 部分適用の使い所

対象者

  • タイトルを読んで、湯婆婆のセリフに違和感を持たなかった人
  • 関数型プログラミングの世界で出てくる概念を改めて整理したい人
11
採択
2023/09/02 15:40〜
Track B
レギュラートーク(20分)

聴いて話すiOS:現実世界の「音」との連携

_chocoyama たまねぎ

スマートフォンにはさまざまな入出力のチャネルが搭載されています。
その中でも、現実世界の「音」を活用できる技術に関して、実は多数の機能が現在利用できる状況になっています。
本トークでは、一般的なアプリ開発では馴染みの薄い「音」をベースにした体験の構築方法について、基本的な技術の解説をはじめとして、具体的な活用例を交えてご紹介いたします。

コンテンツ

  • 「音」に関する技術の全体感
    • 楽曲特定とコンテンツ同期
    • 音声認識とトランスクリプト
    • 環境音検知
    • 発話やアクセシビリティ対応
  • その他、音声関連技術の紹介
  • 各技術の組み合わせによる体験構築のデモ

聞き手の想定

  • 音に関する技術の最新動向をキャッチアップしたい人
  • 音の活用イメージが湧かない方
レギュラートーク(20分)

ビジョンとサウンド:iPhoneを「目」と「耳」にする技術

_chocoyama たまねぎ

現在のiPhoneは、高度な認識能力を持つ「目」と「耳」を持っており、現実世界の物体や音の情報を簡単に取り込むことができるようになっています。
例えば、Vision/VisionKitを用いた物体・文字認識、ShazamKit/SoundAnalysisを用いた楽曲・環境音認識など、すぐ使える機能だけでも多数の技術が存在します。
本セッションではiOSで利用できる画像・音声認識周りの技術を整理し、それを用いた実装方法をデモを交えてご紹介いたします。

コンテンツ

  • 「目」となる技術(物体認識、文字認識)
  • 「耳」となる技術(楽曲認識、音声認識、環境音認識)
  • 各技術を用いたサンプル実装のデモ

聞き手の想定

  • 画像認識や音声認識周りの技術について、まずは深い理解よりも実現できる事の全体感を把握したい方
  • 実装方法の概要を掴み、自身のAppに組み込むイメージを持ちたい方
1
採択
2023/09/02 17:25〜
Track D
レギュラートーク(20分)

StoreKit testingを使ってアプリ内課金のテストや検証を効率化する方法

BOBG1018Vi ぼぶ

WWDC2020で発表されたStoreKit testingは,テスト用のフレームワークです.
UnitTestとして課金テストを実行することはもちろん,StoreKit testingに必要なStoreKit configurationを用いると様々な恩恵を得ることができます.

  • StoreKit2への置き換えを進めたい
  • MVPやハッカソン等のプロダクトで,課金デモを実装したい
  • AppStoreConnect上に具体的な商品・オファーを作成せず検証したい
  • トランザクションの挙動をステップ・バイ・ステップで確認したい
  • 決済に失敗したときの挙動を確認したい
  • Flutterでも同様の恩恵を受けたい

動作環境がiOS14以上なStoreKit Testing.
導入自体は簡単なため,サクッと皆様のアプリにも取り入れませんか?

採択
2023/09/03 13:00〜
Track D
レギュラートーク(40分)

作って学ぶBluetoothの基本攻略〜スマートキーアプリを作ってみよう〜

oka_yuuji oka

「iPhoneで他のデバイスを操作したい」と思ったことはありませんか?
Bluetoothを使用すれば、容易に行えますが、「ペリフェラル」や「セントラル」などの専門用語が難しく理解し辛い方もいると思います。
本トークでは、そんな方々を主な対象に、Bluetoothの基礎から話し、スマートキーの作成方法を必要な材料の選定、Core Bluetoothを用いたコーディング、そして実動の様子まで紹介したいと思います。
上記の内容にて、Bluetoothの基本的な知識から実践的な「スマートキーを作る」部分まで、わずか40分で学ぶことができます。
本トーク終了後には、あなた自身でスマートキーを作り、Bluetoothを用いたデバイスの設計・制作への第一歩となるでしょう。

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

coremltoolsにコントリビュートして、色々な深層学習モデルをiOSで動かせるようにしよう!

fukafukatani 深谷亮祐

深層学習の進化とApple siliconの性能向上により、これまでにない深層学習アプリの実現が可能になってきています。
多くの深層学習モデルはPyTorchなどのフレームワークで公開されており、これをcoremltoolsでCoreML化することで、iOS上で最適なパフォーマンスで動作させることができます。
しかし、時にはcoremltoolsですんなりCoreML化できないモデルもあります。
こんなときは、coremltoolsのエンハンスという形でのOSSへのコントリビュートチャンスともいえます。
本セッションでは、実際のエンハンス事例を下にcoremltoolsコントリビュートの勘所をお話します。

  • coremltoolsの概要
  • coremltoolsの機能が足りないときの修正箇所の見つけ方と修正方法の考え方
  • 深層学習の計算グラフの変換を理解しよう
レギュラートーク(20分)

友人とのチーム開発を、計画的に進める仕組み作り

xiii11100 Aoi Takahashi

会社や学校などの組織に所属している人の中には、本業の合間時間に友人とソフトウェアを開発して
・共に技術を伸ばしたい
・願わくは一発当てたい
と思っている人もいるでしょう。

しかし、各メンバーの裁量だけで開発していては、計画的に開発を進められなかったり、開発に大きな偏りが生まれてしまいます。
その結果、チーム開発自体が自然消滅してしまったり、開発速度が遅くなり、リリースまで辿り着けなかったりすると思います。

本発表では、実際に 3 年以上に渡って友人 2 人とチーム開発をしてきた実体験を交えながら、チーム開発を計画的に進める仕組み作りについて紹介します。
これから友人とチーム開発をしてみたい、現在しているけど難航している、という人たちの役に立てばと思います。

紹介例としては
・週に 1 回の定例会を設けよう
・タスク目標ではなく、作業時間目標を立てよう
などがあります。

採択
2023/09/02 15:40〜
Track D
レギュラートーク(20分)

アプリ内課金におけるトラブルを劇的に減らすための取り組み

pihero13 Koki Hirokawa

アプリ開発の中でも、アプリ内課金はとりわけ高品質が要求される領域です。
課金に関するトラブルは、ユーザに対し不安や混乱を抱かせるとともに、お問い合わせなど面倒なアクションを要求します。また、事業への信頼値の低下やお問い合わせへの対応コストの増加など、ビジネスにも多大な影響を及ぼすため、可能な限り抑えたいところです。(開発メンバーのメンタルも健全に保ちたい…!)

私が開発に携わっているアプリでは、ユーザがアプリ内商品を意図せず重複購入してしまいお問い合わせが多発する問題に悩まされてきました。本トークでは、この問題を解消するに至った取り組みについて、仮説立てから設計、より良いアプリ内課金体験を提供するための考え方をお伝えします。

ルーキーズLT(5分)

ViewInspector 使ってSwiftUIのテスト書いてみようって話

ios_hamada dahama

みなさん、SwiftUIでテストをどのように書いていますか?

本LTでは、SwiftUIのテストを行える ViewInspector というライブラリの紹介を行います。
SwiftUI時代のテスト実装の選択肢として ViewInspector どうでしょうか。

以下は本LTで話す内容の概要です。

  • ViewInspectorとは何か?
  • ViewInspectorを使ったテストの例
  • ViewInspectorの利点とデメリット
  • その他のSwiftUIテストに関する情報
1
レギュラートーク(40分)

iOS×マイコンで実現する水耕栽培の自動化を目指して〜全ての家庭で水耕栽培ができる未来を見据えて〜

oka_yuuji oka

いきなりですが、普段私たちが口にする食べ物について自分で作ってみたいと考えたことはありませんか?
昨今農場従事者が減る一方、水耕栽培を利用した農場ファームが広がり、大規模で自動化された生産が主流となりつつあります。
そんな自動化された栽培が家庭でもできたらいいなと思い、始めた「iOSとマイコンで実現する水耕栽培自動化の検証」について紹介したいと思います。
本トークでは水耕栽培の基本的な話しから必要なセンサーや選定に至った経緯を踏まえ、どのようなマイコンを使いそれらとiOSをどのように紐づけて自動化を検証したか紹介したいと思います。
これであなたもきっと水耕栽培を始めてみたいと思うはず。

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

詳解!Swift Playground Book

nirazo Kenzo Nirasawa

学習指導要領の改訂に伴い、プログラミング教育は2020年度からついに必修化されました。
AppleからSwift Playground Bookを使った中学校向けの教材もリリースされています。

教材として利用できるPlayground Bookですが、実際に作ったことのある開発者は少なく、どのように作成すればいいか全くわからない、という方も多いのではないでしょうか?

本トークではXcodeでPlayground Bookを作る方法を詳細に解説します。
実際にコード見ながら、Playground Bookが完成するまでの道のりを一緒に体験しましょう。

作り方やBook内での表現方法のみならず、Playground Bookでできることとできないこと、ユーザの入力がどのようにプレビューに反映されるのかなど、
Playground Bookについてより詳細に知れる40分です。

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

KMM×個人開発プロジェクトで「後悔した私」から、これから「KMMしたいあなた」へ

mesummery Natsui

マルチプラットフォーム開発手法のひとつとして、KMM(Kotlin Multiplatform Mobile)を耳にする機会が増えてきました。安定版のリリースがまだにも関わらず、すでに商用アプリでの導入例がいくつも見られます。一方で、個人開発でKMMを採用している方はまだ少ないのではないでしょうか?

このセッションでは、個人開発でKMMを利用するメリットとハードル、有効活用のためのヒントをご紹介します。
KMMの特徴のひとつは「導入のしやすさ」ですが、うっかり飛びつくのは後悔のもと。

  1. KMMの概要とメリット
  2. 導入時のハードル:
    • 共有範囲の選択
    • 学習コスト
    • 開発環境
  3. おすすめの開発スタイル:
    • 仕様とスタイルの明確化

を個人開発という視点から、企業と個人開発でのKMM導入経験に基づいてお話します。

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

JSON アニメーションを読み書く

motoshima1150 motoshima1150

昨今 SwiftUI でアニメーション表現が行いやすくなりましたが、 iOS / Android 共通で表現する際にはLottieファイルを扱うことが多いです。。
LottieとはAirbnbが開発している、SVGアニメーションライブラリです。動画などに比べて、ファイルサイズが小さくとても便利なライブラリです。

アニメーションのやり取りにはJSONファイルで行うことが多いですが、デザイナーから受け取ってそのままコードで利用することが多いのではないでしょうか。
このトークでは、デザイナーから受け取っている謎のJSONファイルを理解し、適切な利用やデザイナーとのコミュニケーションに役立つ一助になれば幸いです。

  • 何が書かれているのか。
  • 何ができて何ができないか。
  • どうやって作られているのか。
  • KeyPathでJSONファイルを書き換える。
4
レギュラートーク(20分)

Swiftへの貢献を楽しもう!コントリビュート手順とテスト技法の実践ガイド

ojun_9 ojun

本トークでは、OSSとしてのSwiftへの貢献の重要性と、私自身のコントリビュート経験を共有します。
初めての方でも参加しやすいよう、Swiftのコードベースに貢献するための具体的な手順を紹介します。

さらに、Swiftの品質を保つための重要な要素であるテストについても触れます。
特に、LLVMのテストツール「lit」を活用したテスト方法を説明します。
これにより、Swiftへの貢献が順調に進められ、コードの品質を保つことができます。

本トークを通して、参加者の皆さんがSwiftのコードにカジュアルにPRを投げれるように、そしてそれが、SwiftのOSSコミュニティの成長に貢献できれば幸いです。

このトークはSwiftへの貢献に興味がある方やテストスキルを向上させたい方を対象としています。
Swiftコミュニティへの貢献を検討している方に、このトークが役立つことを願っています!

7
LT(5分)

明日からペアプロで使える!ナビゲーターフレーズ集

motoshima1150 motoshima1150

ペアプロは実際にコードを記述するドライバーと、そのサポートとして操作指示を出すナビゲーターに分かれて実装をする手法です。
リモートによる開発が一般的になり、画面共有を通してペアプロ(モブプロ)を行うことが増えました。

みなさんはペアプロでこんな経験ございませんか?
「あの、、ちょっと名前よくわかんないんですけど、左上のフォルダのアイコンをクリックして・・・あ、その右、左から2番目です!それですそれです!」
相手に伝えるのにも時間がかかっていて、スマートではありません。

本LTでは、以下のような具体的な実例を交えたXcodeを想定したナビゲートフレーズをご紹介します。
ぜひ、本LTのナビゲートフレーズを使って、よりスムーズなペアプロ体験を実現しましょう!

  • テスト用のデータを確認したい
  • 特定のフォルダやクラスに移動したい
  • コードの特定の行数や変数名を指定したい
5
レギュラートーク(20分)

CIツール選定のコツ

akinari_ito 伊藤 明成

CIツール選定は、iOSアプリ開発に限らずプロジェクトにおいて重要な要素です。本発表では、スキルマーケット『ココナラ』アプリ開発で経験した、CIツール移行で得た知見を共有し、予算・工数・保守性といった観点から、CIツール移行を検討する際に考慮したポイントについても、話せる範囲でお話しします。最終的な判断にいたった経緯や選定した理由が、CIツール移行を迷っているかたの手助けになれれば幸いです。