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

XVimがSherlockされるまで

r_plus taiki komaba

Xcode 13最大の新機能と言えばVimキーバインドの登場ですね!
多くの開発者が利用しているVim/NeovimのキーバインドがとうとうXcode標準で使えるようになりました。

Xcode 12まで、多くのVim好きの開発者はVimキーバインドを利用するために、
Pluginの形式で提供していたXVimというソフトウェアを利用していました。

このトークではそんなXVimないしXcode Plugin業界に襲いかかってきた
macOS, Xcode, Swift, AppleSiliconの様々な技術的ハードルについてメンテナーが振り返って供養します。

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

サーバーサイドSwiftで学ぶバックエンド開発

laiso laiso

SwiftはiOSやmacOSの他にも、LinuxやWindowsなどのプラットフォームで動作するクロスプラットフォームなプログラミング言語です。
Webアプリケーションやネイティブアプリのバックエンドで動作するプログラムを開発することは「サーバーサイドSwift」と呼ばれ、活発なオープンソースのプロジェストが多数あります。
しかしサーバーサイドSwiftはブラックボックスのまま利用するにはまだまだ環境が成熟していないため、これから始めるにはフレームワークのさらに奥の仕組みを理解しながら使う必要があります。
本トークではサーバーサイドSwiftフレームワークの実装から、バックエンドを開発するための技術詳細についてお話しします。
よく慣れたSwiftという言語をそのままつかい、ネイティブアプリ以外のシステム上でどのようなコードが書けるのか、という知識を得ることができるでしょう。

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

全部Swiftで作るWebアプリケーション

laiso laiso

SwiftはiOSやmacOSの他にも、LinuxやWindowsなどのプラットフォームで動作するプログラムを開発することができるクロスプラットフォームなプログラミング言語です。

Swiftを利用するとWebアプリケーションのバックエンドやWebブラウザのクライアントサイドで動作するコードを開発することができるようになります。

しかしこれらの分野はまだまだ環境が成熟していないため、iOSエンジニアがこれから始めるのには敷居が高いのが現状です。

本トークではサーバーサイドSwiftやSwiftWasmを使って、Swiftを中心としたWebアプリケーションの可能性を探ります。

よく慣れたSwiftという言語をそのままつかい、ネイティブアプリ以外のシステム上でどのようなコードが書けるのか、という知識を得ることができるでしょう。

9
採択
2022/09/12 11:25〜
Track B
レギュラートーク(20分)

サーバーと同期してリアルタイムに更新する画面を実装する

rizumi_jp izumi

アプリで画面を更新するためのトリガーとしてポピュラーなものは

  • Pull-to-refreshなどのユーザーの明示的なアクション
  • サーバー上などのデータが更新されたタイミング

の2種類に大きく分類できます。

ユーザーの明示的なアクションで画面更新する場合は比較的シンプルに実装することが可能ですが、サーバー上のデータが更新されたタイミングに同期して画面更新を行う場合、更新通知を受け取る方法やUI更新方法など、考慮することが増えて実装が複雑になりがちです。

そこでこのトークでは、リアルタイムでの更新が必要となる具体例を紹介した後に、サーバー上のデータをリアルタイムで同期するための設計/実装について、Firebaseを用いる手法、Push通知を用いる手法、WebSocketを用いる手法など、複数の手法の比較を行い、いかにしてリアルタイムで更新する画面を実装するかの解説を行います。

採択
2022/09/12 10:15〜
Track B
レギュラートーク(20分)

Xcode が遅い! とにかく遅い!! 遅い Xcode をなんとかする方法

niw Yoshimasa Niwa
niw

Xcode が遅い。とにかく遅い!! あああ!!!

皆さんはそんな経験ありませんか...?

iOS アプリの開発にはなくてなはならないツール、それは Xcode です。
しかし、Xcode がとにかく遅いのです。
アプリが成長し、ワークペースが巨大になり、多くのターゲットができるにつれてどんどん遅くなり、最後にはハングして終了すらできなくなってしまいます。
このセッションではそんな遅い Xcode を使えるように頑張った経験をもとに、Xcode のビルドの仕組み、そして Bazel などほかのビルドツールについても検証したいと思います。

対象とする方:

  • Xcode が遅くて辛い方
  • 大きなアプリを作っている方
  • killall XCBBuildService が癖になってしまった方
  • Xcode のビルドの仕組みをちょっと知りたい方

前提とする知識:

  • Xcode
採択
2022/09/12 13:00〜
Track C
レギュラートーク(40分)

The state of Swift for WebAssembly in 2022

kateinoigakukun kateinoigakukun

SwiftのWebAssembly対応を進めている、SwiftWasmというプロジェクトがあります。

現在、WebAssemblyはWebブラウザ上の用途だけでなく、「複数言語からコンパイルできて様々な環境で動く高速なプログラム」として、エッジコンピューティングやIoT、ブロックチェインにおけるスマートコントラクトなど、様々な分野で用途が模索されています。

もし将来的にWebAssemblyが覇権を取った場合、そこでSwiftが活躍できるポジションはあるのでしょうか?

このトークでは、Wasm対応によって達成できる未来、プロジェクトの最新状況と課題、実際の活用事例を紹介したいと思います。
Appleプラットフォーム以外でのSwiftの活用に興味のある方には、特に楽しんで頂ける内容になる予定です。

LT(5分)

機能開発しながらでもアプリを改善し続けるための準備

re___you えんどう

突然ですが、続けることって難しいですよね。例えば、機能開発しながらコツコツとリファクタリングすることや、テストを追加するなど。
でも忙しくなってしまうと後回しになって途中でその取り組みが超滅・・・なんて経験したことないですか?
そんな経験をしたことある方必見です!

ZOZOTOWN iOSチームには、緊急性は低いが重要度が高い「効果性の領域」と呼ばれる放っておくといつまでも解決されない課題を探し改善する取り組みがあります。
そしてその活動を2年ほど継続してきました。
本トークでは「継続」にフォーカスして、機能開発をしながらでも改善活動をし続けるために役立つ準備をご紹介したいと思います。
どれも簡単なことですが、効果は侮れません。続けたくてもなかなか続かない人の参考になれれば幸いです。

  • まずは改善活動への命名をしよう
  • ゴールを決めよう
  • やることとやらないことを決めよう
3
レギュラートーク(20分)

機能開発しながらアプリを改善し続けるために

re___you えんどう

ZOZOTOWN iOSチームには、緊急性は低い(あるいは明確な納期がない)が重要度が高い「効果性の領域」と呼ばれる放っておくといつまでも解決されない課題を探し改善する取り組みがあります。もちろん、改善の取り組みをするからといって機能開発を止めることはありませんし、改善専門部隊がいるわけでもありません。
機能開発をしながら、限られたリソースで改善活動をし続けるために役立つポイントをご紹介したいと思います。

  • まずは改善活動への命名をしよう
  • 効率よく改善するために課題を見極める
  • 課題を発見するための仕組み
    その結果、取り組みは2年間ほど継続しており、数値を2倍改善した実績もあります。  
    改善したいけどどう始めていいか悩んでいる方必見です!
2
レギュラートーク(40分)

続・めくるめくシェーダアートの世界

ta_ka_tsu ta_ka_tsu

シェーダアートとはシェーダと呼ばれるGPUで実行されるプログラムを記述することで様々なイメージをスクリーン上に表現する手法のことです。
シェーダでは各ピクセルの座標値と共通のデータを入力として色を出力する関数を記述するだけですが、その手法は様々で驚くべき表現が可能となります。

3年前のiOSDC2019「めくるめくシェーダアートの世界」ではシェーダアートの原理を細かく説明しました。
しかし原理や基礎から丁寧に説明することに重きを置いたため、「レイマーチングを使用した3D表現」に関してはあまり時間を割くことができませんでした。
レイマーチングを駆使してからがめくるめく世界への入り口であるというのに!

そこで本トークではレイマーチングを使用した3D表現の解説に重きを置いて再びシェーダアートの原理とその魅力を語ります。

6
LT(5分)

鉄はMetalかMetalは鉄か

ta_ka_tsu ta_ka_tsu

Metalは2014年のWWDCでGPUを扱うフレームワークとして登場しました。
直接使うことは多くないとはいえ、今や数多くのフレームワークを支えている重要なフレームワークです。

しかしなぜMetalという名前なのでしょうか?
私はその名前の由来にたどり着くことはできませんでした。

そういえばこの世界も見渡せば数多くのものが金属に支えられており、金属なしには現代文明は成り立ちません。
もしかすると様々なものの土台となる存在としてMetal(金属)と名付けられたのではないでしょうか?

私は日々そんなことを考えながらMetalを使ってプログラムを書いたり、砂鉄を集め炭で加熱し鉄を作ったりしています。
このLTでは我々に最も身近な金属である鉄と、フレームワークとしてのMetalの共通点を探ります。
何を言っているのかわからないと思いますが鉄の作り方を通して暑い夏をより熱く盛り上げます。

9
採択
2022/09/11 15:25〜
Track A
LT(5分)

レトロゲームを楽しむ環境を構築する

sam_akada 赤田 進(Sam Akada)

ファミコン、スーファミ、ゲームボーイ、64、GC、Wii、PS1、PS2のレトロゲームをiPhone/Macで遊ぶ話です。
Windowsと比べて、Macの情報がなく、令和では手に入りにくい物だったりで、無いものは作りました。
再び、昔懐かしいゲームを楽しみましょう!

当日のLT内容(予定)です。
・違法ダウンロードは絶対ダメ
・ 無いものは作ったゲームソフトの吸い出し機
・ ゲームコントローラーを認識させる
・ レトロゲームをプレイ!

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

段階的に導入して理解するDI Container

_rockname 岩名 勇輝

依存性の注入(DI)によりコンポーネント間の結合度を低めるのは良いことですが、コンポーネントの再利用にかかる依存関係解決のコードはボイラープレートになりがちです。この問題を解決する手段として、依存関係およびそれらのライフタイムを管理するコンテナクラスであるDI Containerの導入が考えられます。

本トークでは、SwiftUIで開発されたiOSアプリにDI Containerを段階的に導入しながら、各ステップでどのような問題が解決されていくかについてお話しします。

アジェンダ
・DIおよびDI Containerについて
・DIの導入
・DI Containerの導入
・動的な依存関係の解決
・静的な依存関係の解決
・コードの自動生成による静的な依存関係の解決
・DI Containerでのスコープ管理
・マルチモジュールにおけるDI Container

3
採択
2022/09/11 16:25〜
Track A
LT(5分)

手で触れずにアプリを動かす技術

coffeegyunyu 日向強

iPhoneがスマートフォンと称されてはや数年。
巨大なタッチスクリーンを備えたiPhoneはその操作性でたくさんの人に受け入れられてきました。
でも、ちょっと待ってください。タッチしないと動かないって、いまいちスマートじゃなくないですか?

そんなわけで、iPhoneを触らずともアプリをなんとか動かすことができないか、様々な技術を駆使してアプリを動かせないかを検討してみます。
例えバッキバキに割れたiPhoneでも、見事動かしてみせましょう。

LT(5分)

JavaScriptに頼らない Web コンテンツ操作

kamimi_01 kamimi01

「WKWebViewではAPIがないから、JS挿入するか」
皆さんはこんな状況に遭遇したことはありませんか?

ご存知の通りWKWebViewはアプリでWebコンテンツを表示、操作が可能な便利なAPIです。
WKWebViewでは提供されていないコンテンツ操作をしたい場合でも、JavaScript(以下JS)を挿入することで可能になります。
しかしJSに頼った実装にはデメリットも。。

そんな中iOS14.5やWWDC21の発表で、コンテンツ操作のAPIが新たに加わりました。
本LTでは、そのAPI登場前の実装との比較を用いてその威力を紹介します。

【目次】(予定)

  • JSに頼ったWebコンテンツ操作のメリット・デメリット
  • 新たなAPIの概要と追加前の実装との比較
    • テーマカラーの取得
    • テキスト選択のコントロール
    • コンテンツ内メディアのコントロール
5
LT(5分)

Swift言語ガイド日本語版が公式サイトに載りました ~ちょっとだけ駆動行動のススメ~

stzn3 shiz

今年の6月、個人的に作り始めたSwift言語ガイド日本語版のリンクを公式サイトに掲載していただきました。

最初から目標としていた訳ではなく、ふとした思いつきから始め、途中で「せっかくだから何か目標が何かあった方が良い」と思い、後付けで目標を掲げたところ、多くの方のサポートや応援をいただき、今回1年越しに達成することができました。

何かやってみようと思ったけどやらず、「やっぱりやっておけば良かったかなあ!」と後悔すること、ありませんでしょうか?僕はいつもです。
そんな僕でも、なんだかんだ色々なことを始め、結果やって良かったと思えることがたくさんあります。今回は、僕が「よし、これやってみよう」と行動を始めるきっかけをどう作り、続けていくかをお伝えすることで、何かちょっと始めてみようかなと考えるきっかけになれば良いなと思っています。
※ 技術的な話はしません。ただただ僕の思いを伝えます。

7
採択
2022/09/12 16:20〜
Track A
LT(5分)

SceneKit AND SwiftUI

AkkeyLab AkkeyLab

SceneKit は3次元空間で物理シミュレーションなどの複雑なアニメーションを可能とする Framework です。ですから ARKit を利用したアプリやゲームアプリなどの開発を行わない開発者にとっては遠い存在にも感じるかもしれません。
しかし、紙吹雪アニメーションなど、一定のランダム性を必要とする場面では Core Animation にも限界が来てしまいます。そんなときに便利なのが SceneKit です!

・寄付アプリ「dim.」での実例紹介
・SwiftUI で SceneKit を利用
・SceneKit で iOSDC を表現(リアルタイム実装)

このトークでは、SceneKit の活用事例をご紹介するとともに、5分という制限時間内で SceneKit を用いた機能をリアルタイムで構築します。トーク終了後には SceneKit の虜になっていること間違いなしです!

採択
2022/09/12 11:25〜
Track C
レギュラートーク(20分)

OSSのアプリケーションを開発「し続ける」ための哲学

1024jp 1024jp

自分達のアイデアを形にして新しいサービスをラウンチするのは興奮するものですし、さらにそれを軌道にのせてマネタイズするまでのノウハウは開発者の成功の証として世に溢れています。一方、アプリケーションの開発を「続ける」ことは、そのような華々しさとは縁遠く、かつフリーウェアとなれば生計を立てる外でそれを実行する必要があります。
発表者は2014年にOSSのmacOSアプリケーションCotEditorの開発を引き継ぎ、以来おおよそ月に1回のリリースを8年以上続けています。OSS開発を続けるということはどういうことなのか、どうモチベーション維持をするのか、このトークではそんなCotEditorプロジェクトを続けている哲学を紹介します。以下のような話を含みます:
・開発の基本方針
・開発を続けるモチベーション
・ユーザからのフィードバックとの付き合い方

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

アプリケーションアイコンのライブドローイング

1024jp 1024jp

macOSやiOSのアプリケーションアイコンは強いスタイルがが存在します。「立体的に」とか「シンプルに」とかHIGでも書かれているけど、書くは易し。実際には何をどう描けばその立体感は実現するのでしょうか。特にmacOSのアイコンは物体のリアリズムが求められ、リッチな陰影表現が必要となります。大丈夫です。3Dモデリングをせずとも、ぼかしやグラデーションなどの組み合わせでこう言った表現は実現できるのです。
このセッションでは、CotEditorやSparkleフレームワークなどのアプリケーションアイコンを手掛けた1024jpが、Illustratorを使ってmacOSアプリケーションアイコンを解説しながら実際に時間内でイチから描きます。これはライブです。

10
採択
2022/09/11 14:10〜
Track B
レギュラートーク(40分)

詳解 Core NFC - NFC を用いた iOS App 開発のてびき

treastrain treastrain / Tanaka Ryoga

NFC とは駅・空港での自動改札機やお店での電子マネー決済、社員証や学生証をかざした入退出管理など、日常でよく見かけるアレを叶える技術です。

iPhone に搭載されている NFC を私たちの App で使うためには Core NFC を用います。これは iOS 11 から利用可能になり、iOS 13 のタイミングで大きくアップデートされました。昨今の情勢から非接触技術が注目されたり、eKYC に利用できたりと、現在進行形でさまざまな App で利用が広がっています。

私は iOS 13 のときから3年間、この Core NFC を使った App の個人開発を続け、関連する OSS も公開してきました。それによって得た iOS 固有の NFC 利用まわりの知見や、これから Swift Concurrency + Core NFC を活用する App を開発する際の流れ・例を紹介します。

LT(5分)

「人生100年時代」に知っておきたいHealthKit

shindyu 新堂 敬隆

HealthKitを使ったアプリの開発経験はありますか?
近年の健康志向の高まりからヘルスケア連携したiOS開発に関わる機会も増えていると思います。
このLTではHealthKitをはじめて扱う上で最低限抑えておきたい知識や、実際に利用したアプリを作った際に気づいたポイントについてご紹介します。

・HealthKitでできること
・扱えるデータの種類について
・データのプライバシーについて
・注意するポイント

「運動しなきゃなぁ」と思っている皆さん。自分でHealthKitを使ったアプリを作って運動不足解消しませんか?

8