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

Bonjourとネットワーク通信を通して学ぶNetwork Framework実践ガイド

yutailang0119 Yutaro Muta

Network Frameworkは、WWDC18で発表されたデータ送受信のためのネットワーク接続用フレームワークです。このフレームワークを使用することで、TLS、TCP、UDPなどのプロトコルに直接アクセスが可能です。また、URLSessionの内部でも使用されており、多くのアプリケーションを支えています。
Bonjour (ボンジュール) は、Appleが開発したゼロ・コンフィギュレーション技術で、IPアドレスやホスト名を入力せずに接続する方法を提供します。例えば、AirPrintのプリンター自動検出やHomeKitへの接続に使用されます。

本稿では、Network Frameworkを活用し、NWBrowserでのネットワークサービスの検出と、NWListenerおよびNWConnectionを用いた通信について解説します。

  • Network Frameworkの概観
  • Bonjourを用いたネットワーク上のサービスの検出: NWBrowser
  • Network FrameworkでのUDP送受信: NWListener、NWConnection
  • Swift Concurrencyと組み合わせたモダンなアプローチ
9
採択
パンフ記事(8ページ)

【永久保存版】開発効率を劇的に向上させる Xcode の便利なショートカット 20 選!【意外と知らない?】

tsuzuki817 續橋 涼

Xcode は iOS アプリ開発者にとって必要不可欠なツールですが、豊富な機能を最大限に活用するためには効率的なショートカットの利用が鍵となります。

開発効率を劇的に向上させる Xcode の便利なショートカット 20 選を紹介します。
初心者から上級者まで、すぐに使えるショートカットを厳選し、具体的な使用例と使わなかった場合の機会損失を解説します!
(開発経験が豊富な人でも意外と知らないショートカットもあるかも!)

この記事を読むことで、Xcode のショートカットを効果的に活用する方法を学び、日々のコーディング作業がより効率的かつ生産的になることを期待できます!
例えばアプリの使用調査の時間を削減させたり、コードリファクタリングの時間を半減させたり、デバッグ作業を迅速に進めることが可能になります。
この記事を読んで開発時間の短縮とコード品質の向上を実現し、より良い開発ライフを送ってみませんか?

ショートカットアジェンダ

  1. 基本操作
  2. コード編集
  3. ナビゲーション
  4. デバッグ
  5. 検索と置換
  6. ビルドと実行
  7. その他
7
採択
パンフ記事(4ページ)

Swift PlaygroundsではじめてのiOSアプリ開発~お絵描き練習ゲーム作成~

wiroha wiroha

Swift Playgroundsは、iPadで動作する開発環境です。MacやXcodeを使わずにiPadで開発できるため、iOSエンジニア以外の人でも手軽にiOS開発に挑戦できます。この記事では、DevRelである私が初めてのiOSアプリとしてごくシンプルなお絵描き練習ゲームを開発したプロセスを紹介します。
開発するアプリは、絵の定番の基礎練習である「正確な円を描くこと」を目指すゲームです。

概要

  • 背景
  • Swift Playgroundsとは
  • アプリの仕様
  • 完成したアプリ
  • ソースコード
  • iPadで効率的に開発するコツ
    • キーボード・縦置きスタンドの用意
  • 良かったところ
    • ゲームで学べる
    • 操作が直感的
    • そのまま実機で動く
  • 難しかったところ
    • バージョン管理しづらい
    • 情報を見つけにくい
    • アプリの特性上デバッグしづらい
  • Xcodeでの開発との違い
  • まとめ
    • 学習アプリとして優秀
    • Xcodeと使い分けたい

この記事により、人事や広報など非エンジニアのiOSDC参加者がアプリ開発に挑戦する助けになれば良いなと思います。またSwift Playgroundsを使ったことがないiOSエンジニアの方にも新たな発見と学びとなることを期待しています。

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

Swiftらしい関数名の命名のコツ

__ryomm Ryomm

Swiftの関数名の命名についてお悩みの方はいませんか!?
命名を適切に行うことで、コードの可読性やメンテナンス性を大きく向上させることができます。

Swiftの命名規則に関して参考になるものとして、Swift API Design GuidelinesというドキュメントがAppleから提供されています。
このドキュメントを読むと、Swiftの関数名の命名においては、関数を使用するときの「明瞭さ」そして「自然な文章としての読みやすさ」の2つが重視されていることがわかります。
明瞭で自然な命名をしようと思っても、英語が達者でもない場合、難しいと感じることが多いです。
私自身命名が正しいかどうか思い悩む日々を過ごす中、前置詞を効果的に使うことで明瞭かつ自然な命名ができることに気づきました!
例えば setY(_ x:) という関数があったとき、XとYがどのように関係しているのかわかりますか?このように、関係性が不明瞭なときに
前置詞が役立ちます。

本稿では、Swift API Design Guidelinesをもとに関数名の付け方の基本を説明した上で、英文法から考えるSwiftらしい関数名の命名について紹介します。

  • Swift API Design Guidelines で言及されている命名規則
  • 英文法から考える関数名
  • 引数ラベルに使えそうな前置詞早見表
3
採択
パンフ記事(8ページ)

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

usamik26 宇佐見公輔

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

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

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

採択
パンフ記事(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
採択
パンフ記事(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
採択
ポスターセッション

Swift 6に備えよう!Upcoming Feature Flagsを全て解説します!

ynoseda 野瀬田 裕樹

Swift 6のリリースが近づく中、Swiftの新しい言語機能や改善点を事前に把握しておきたいと考えている方も多いでしょう
将来的にSwiftで導入される新機能は「Upcoming Feature Flags」を使うことで事前に有効化することが可能です。
このポスターセッションでは、この「Upcoming Feature Flags」で有効化できる機能のうち、Swift6より前のバージョンで実装済み(Implemented)になっているものについて全て解説します。

一つでも多くの「Upcoming Feature Flags」を有効化することで、Swift 6のリリースに備えながら、新機能や改善点を効率的にキャッチアップできます。

【内容】
・ Upcoming Feature Flagsで機能を有効化する方法の解説
https://www.swift.org/swift-evolution/#?upcoming=true でSwift6より前のバージョンでImplementedになっている全ての機能について、その概要と具体的な例の紹介

8
採択
2024/08/22 16:20〜
Track A
運営(15分)

前夜祭説明

tomzoh 長谷川智希

前夜祭を楽しむための諸情報をお伝えします。

6
採択
2024/08/22 16:45〜
Track A
企画(20分)

Swiftコードバトル 準々決勝 マッチ1

iosdcjp iOSDC Japan 2024

Swiftコードバトルの準々決勝 マッチ1
toshi0383 さん vs. Ryu0118 さん

採択
2024/08/22 16:45〜
Track A
企画(80分)

Swiftコードバトル 準々決勝

iosdcjp iOSDC Japan 2024

与えられたお題をSwiftで書いてコードが短い方が勝ち、というルールのSwiftコードバトル、準々決勝 4試合です。

4
採択
2024/08/22 16:45〜
Track B
レギュラートーク(20分)

App Clipの魔法: iOSデザイン開発の新時代

log5 log5

「App Clipをご存知ですか?」
iOSの勉強会等で問いかけると、おおよそ参加者の半数は「知らない」と回答します。
世に出て5年は経過しているにも関わらず、App Clipはあまりパッとしない存在でした。

ところが、2024年に入りApp ClipをUI/UXのプロトタイプ共有に活用するアイデアが知られるようになりました。
ざっくり説明すると、App Clipが実質iOSアプリの「一部分」であることを利用し、UIやUXの部分のみを抽出した「ミニアプリ」を配布するというものです。
これまである種面倒な方法で共有を強いられてきたデザイン開発の世界から見ればブレークスルーと言えるものでした。
iPhoneを持っていれば、QR/NFCなどで直ちにデザインの確認ができるのですから、iOS開発に詳しくない方は勿論、「iOSアプリを任意のiPhoneで動かすのがいかに難しいか」を知っているみなさんにとっても、まさに魔法と言えましょう。

本トークでは、AppClipの概要を再確認しつつ、App Clipによるデザイン共有のアイデアを実際にどのようにプロジェクトで活用できるかを見ていきます。
ウェブサービス、画像、あるいはExcelなどでiOSデザインを共有することに課題を感じる方も多いのではないでしょうか?
iOSデザイン共有の最新アイデアが気になる皆様、よろしければぜひお越しください!

採択
2024/08/22 17:05〜
Track A
企画(20分)

Swiftコードバトル 準々決勝 マッチ2

iosdcjp iOSDC Japan 2024

Swiftコードバトルの準々決勝 マッチ2
S-Shimotori さん vs. akkey さん

採択
2024/08/22 17:20〜
Track B
レギュラートーク(40分)

StoreKit 2によるモダンなアプリ内課金

0si43

2024年4月、note iOSアプリはアプリ内課金機能をリリースしました。本セッションでは、StoreKit 2の導入、実装、テストについて説明します。これからアプリ内課金を実装しようとする方にとって、参考になる情報を提供できれば幸いです。
具体的には以下の内容を扱います。

  • noteアプリのポイント課金仕様
  • StoreKit 1とStoreKit 2の比較
  • StoreKit 2による実装
    • async/awaitによる非同期処理の簡略化
    • レシート検証の簡素化
  • テスト方法
    • sandbox環境とTestFlightを使ったテスト
    • StoreKitTestの活用
採択
2024/08/22 17:20〜
Track C
レギュラートーク(40分)

実践 Advanced CallKit 〜快適な通話の実現に向けて〜

h1d3mun3 h1d3mun3

CallKitで音声通話機能を実現したことはありますか?

CallKitはiOS 10 / iPad OS10から利用できる音声通話機能を実現するためのFrameworkで、様々なアプリがCallKitを利用して音声通話機能を実現しています。
おそらくアプリを利用して音声通話機能を実現する場合、1対1の通話を実現が実現できればアプリのユースケースのほとんどを十分にカバーできると思います。
ですが、CallKitを使えば、1つのアプリで友達のAliceとの1体1通話はもちろん、その通話中に友達のBobとの1体1通話に切り替えるといったような、一歩進んだ音声通話機能を実現できるのはご存知でしたでしょうか?

本トークでは下記観点などから、快適な通話の実現に必要なCallKitの実装方法についてタクシーアプリでの活用事例を踏まえつつご紹介します。

  • CallKitを使って1体1の音声通話を実現する方法
  • 音声通話とおやすみモードの関連性
  • 複数の音声通話を受ける方法・通話のグループ化といった1つ先の利用方法
採択
2024/08/22 17:20〜
Track D
レギュラートーク(40分)

MPEG構造を把握し、VideoToolBoxを使った特殊再生の実装方法を理解する

k2_moons k2moons

VideoToolBoxは、AVPlayerなどが属するAVFoundationのさらに低位のレイヤーで、動画の圧縮(エンコード)や伸張(デコード)を行います。AVPlayerは非常に優秀なため、ほとんどの場合、VideoToolBoxを直接利用する必要はありません。しかし、MPEGの構造を理解し、VideoToolBoxを使って特殊再生を行うことで、AVPlayerがどれほど複雑な処理を行っているかを垣間見ることができます。

このトークでは、カメラで撮影した映像ファイルをVideoToolBoxで特殊再生する方法を解説します。

  1. PTS (Presentation Time Stamp) と同期処理の基礎:
    PTSの役割と、時間同期ついて説明します。
  2. GOP (Group of Pictures) の基礎:
    Iフレーム、Pフレーム、Bフレームの圧縮方式とその制約について説明します。
  3. 特殊再生の実現方法:
    スキップ、シーク、倍速再生などの特殊再生を行うために、どのようにVideoToolBoxをどう利用すれば良いのかを具体的なコードを交えて説明します。

このトークを通じて、参加者はMPEGフォーマットの重要な仕組みを理解し、VideoToolBoxを用いた特殊再生の実装方法について学ぶことができます。

採択
2024/08/22 17:25〜
Track A
企画(20分)

Swiftコードバトル 準々決勝 マッチ3

iosdcjp iOSDC Japan 2024

Swiftコードバトルの準々決勝 マッチ3
kishikawakatsumi さん vs. Kota1021 さん