LT(5分)

SwiftUIも動く!? AppCodeを使いこなして快適な開発体験を手に入れよう!

imaizume 今泉智博

「iOSやmacOSのアプリ開発に必要なエディタと言えば?」
この質問に「Xcode!」と即答しようとしたあなた! JetBrainsが提供する開発環境「AppCode」をぜひ一度試してみませんか?
強力な静的解析やリファクタリング機能、あまたのプラグインに外部ツールとのインテグレーションなどなど、Xcodeでは実現できない、便利機能が盛りだくさん!
さらにSwiftUIのプレビューもサードパーティツールを使ってシミュレーター上で利用可能!
本トークでご紹介する各種機能や設定を通じて、AppCodeの素晴らしさを知り、あなたもぜひ快適なアプリ開発体験を手に入れてください!

3
LT(5分)

Siri Shortcut x Slack Workflow を使ってノーコードで業務を効率化しよう!

imaizume 今泉智博

みなさんSiri Shortcutを使っていますか?
Siri Shortcutには標準でHTTPリクエストの送信や条件分岐といったステップが装備されており、外部サービスと組み合わせ日常の業務を改善することができます。
本トークではSlackの提供するWorkflowという機能と組み合わせ、私が実際に使用する業務効率化ショートカット(勤怠報告とお店データ報告)について解説します。
また「変数名が無い」「UIにクセがある」などのハマりポイント解説の他、条件分岐やファイル読み込みといった高度な機能の使い方もご紹介!
「Siri Shortcutを使ってみたいけどまだ始められていない」というな初心者でもきっとすぐに使ってみたくなること間違いなし
GASやIFTTTなど他のWebhookにも応用できますので、ぜひ本トークを聞いて明日からの業務改善に役立つショートカットを作ってみてください!

4
LT(5分)

パースエラー検知のためのロギング術

shizuna_it 伊藤静那

新機能リリース後、特定の条件でパースエラーが起きていることがユーザーからの問合せで判明した!という経験はありませんか?
リリースされたアプリのクラッシュを検知する方法としてはXcodeのクラッシュログ・Firebase Crashlyticsなどが多く使われていますが、パースエラーを検知する方法は確立されていないように感じます。
このLTでは、起きてしまったパースエラーを検知するためのログ導入方法や、簡単に分かりやすく確認するために改善していったことをご紹介します。

・パースエラーを検知する方法
・ログ送信で注意するべき点
・原因を把握しやすくするために工夫したこと

アプリ内で起こるエラー検知方法やログ実装にお悩みの方のヒントになれば幸いです。

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

UIKitベースの個人開発アプリをFull SwiftUIに移行した方法と実践

0si43

iOS 14からSwiftUIに App が追加され、Full SwiftUIでのアプリ開発が可能になりました。が、UIKitでつくりこまれたUIを移行するのは容易ではなく、移行例はあまり多くないのではないでしょうか。

そんな状況で、私は2021年末に個人開発のノートアプリ「Pieces of Paper」をFull SwiftUIに移行しました。本トークでは実際に移行を行った際に経験した様々な問題を中心に話したいと思います。

  • なぜ移行しようと思ったのか
  • 移行する方法
  • 実践する中でハマった数々の問題と対応
    • @ObservedObject の意図しない初期化によるバグ
    • 反映されると思った状態変数がnilになる
    • UIKitベースのライブラリ(特にコア機能の PencilKit )とのブリッジをどうするか、など
  • 移行するメリットはあったのか?
8
レギュラートーク(40分)

UIKitベースの個人開発アプリをFull SwiftUIに移行した方法と実践

0si43

iOS 14からSwiftUIに App が追加され、Full SwiftUIでのアプリ開発が可能になりました。が、UIKitでつくりこまれたUIを移行するのは容易ではなく、移行例はあまり多くないのではないでしょうか。

そんな状況で、私は2021年末に個人開発のノートアプリ「Pieces of Paper」をFull SwiftUIに移行しました。本トークでは実際に移行を行った際に経験した様々な問題を中心に話したいと思います。

  • なぜ移行しようと思ったのか
  • 移行する方法
  • 実践する中でハマった数々の問題と対応
    • @ObservedObject の意図しない初期化によるバグ
    • 反映されると思った状態変数がnilになる
    • UIKitベースのライブラリ(特にコア機能の PencilKit )とのブリッジをどうするか、など
  • 移行するメリットはあったのか?
7
LT(5分)

既存のiOSアプリにKMMを導入してみた

tamadon3776 tamadon

株式会社KyashではデジタルウォレットアプリKyashを提供しています。

最近、KMM(Kotlin Multiplatform Mobile)を導入しました。
既存プロダクトにKMMを導入して得た知見を共有したいと思います。導入を検討している方の参考になれば幸いです。

・なぜ導入したか
・導入してみてわかったメリット・デメリット
・ぶっちゃけ、導入してみて良かった?

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

7年間運用している主力iOSアプリをリファクタリングしたお話

tmnet357 tmnet357

エムスリーでは医療従者や一般の方向けに複数のアプリ開発を行なっていますが、その中でも主力である『m3.com』アプリで行ったリファクタリングについてお話します。

プロジェクト開始から7年を経て FatViewController や責務が不明瞭なヘルパークラスが絡み合う状態となり、機能追加/不具合修正/オンボーディングのいずれも大変という辛い状況になっていました。

この状況を打開すべく「MVVM + Flux アーキテクチャへ変更」「マルチモジュール化」「DI導入」を行い、さらに Swift Concurrency、Combine、 XcodeGen などを活用し、「モダン」で「保守・運用がしやすい形」へと変貌を遂げました。

このトークでは「リファクタリングで実現した設計」に加え「リファクタリングに至る決断」「どのようにリファクタリングを進めたか」についてお話します。

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

Xcodeのイベントを別アプリで監視するのに試行錯誤した話

Kyomesuke Kyome

XcodeのBehaviorsという便利機能を皆様はご存知でしょうか?
Build PhaseのRun Scriptではターゲットのビルド時に特定の処理を挟み込むことができますが、Behaviorsはプロジェクト単位ではなくXcode全般でのイベントに処理を挟み込むことができます。
そんなBehaviorsをハックして、ビルドやテストのイベントを別アプリから監視することができる仕組みを実現する方法について紹介します。

見どころ
・複雑なplistの任意の箇所だけ書き換える方法
・App Sandboxの壁をどのようにして超えるのか
・アプリを跨ぐ開発でのデバッグ手段

7
LT(5分)

リニューアルと気持ちの整理

akuraru akuraru

エンジニアは意外にも信心深いところがある。サーバーをお祓いしたり、デバッグ神社を建てたり、リリースするときにお祈りする。
アプリを全面リニューアルがあったので、今までのソースコードへの感謝の気持ちを込めてお焚き上げをすることにした。
お焚き上げの準備から実施するまでを紹介します。

ブログに書いた内容をTL用に作り直して発表する予定です。
https://akuraru.hatenadiary.jp/entry/2022/05/22/200917

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

アプリを成長させるアプリの開発以外の開発

fromkk かっくん

私は2020年5月に note 社に入社し、現在丸2年が経過しました。
入社してからの大半はアプリの開発業務がメインでしたが、ここ1年ぐらいは開発以外のタスクも増えてきました。
具体的には自動化の整備、E2E テストの整備、分析用のツール開発、スクラムの運営などです。
これらについても Zapier や GAS などを活用してツール化をするなどして、今後の自分たちが楽できるようにしています。
このセッションではこれらのツールを作った経緯や方法について紹介します。

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

アプリ運営に必要な機能をFirebaseで実現する

fromkk かっくん

アプリを運営するには普段目にする機能以外にも様々な機能が必要です。
例えばメンテナンス中の画面などがわかりやすいと思います。
note のiOS / Android アプリには Firebase を活用して、これらの機能を実現しています。
このセッションでは Firebase の機能である Remote Config や AB Testing などを活用して、アプリを運営していく上で必要な機能とその開発方法を紹介します。

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

SwiftでのErrorの使い方、

shichimi_0_o keisukeYamagishi

Swiftでのエラーハンドリングの方法を考えてみました。
下記にAppleのErrorのクラスがありますが、これをよしなに使いエラーを便利にしてみたらどうでしょうと考えてみました。
https://developer.apple.com/documentation/swift/error

少し検索してみますと、様々な記事を見かけましたが私なりの方法を検討してみました。

2
LT(5分)

マルチモジュール化に必要なことをApp Extensions対応から考えてみる話

kamui_project かむい

元来、アプリ開発においてマルチモジュール化をしなければアプリをリリース出来ないわけではありません。
既に大きくなったプロダクトを途中からマルチモジュール化するためには、必要な処理を切り出すリファクタリングや影響範囲の考慮したインクリメンタルな対応が発生します。
しかし半強制的にアプリから必要な処理を切り出さなければ機能自体が実現できないケースがあります。

App Extensions対応を行なった際に切り出した必要な処理を紹介し、どのような構成を取ればモジュール化構想をより円滑にできるのかを考察していきます。

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

依存問題・ルーティング問題をneedleを使って解決する話

kamui_project かむい

DIのOSSであるneedleを使い、マルチモジュール構成におけるモジュール間の依存問題・画面遷移問題に対応した話をします。
依存過多になりがちなSingleton Managerクラスからの依存脱却を行いつつ、導線ごとに必要なインスタンスのスコープを切れるneedleの特徴を活かした画面遷移時の依存解決のお話をしたいと思います。

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

SwiftUIの時代到来!UIKitは不要!なのだろうか…?

noppefoxwolf noppe

今、iOSアプリの入門者には冬の時代が到来しています。
Appleが自信満々に公開したSwiftUI。果たして、これを学べばiOSアプリエンジニアとして食っていけるのでしょうか?
一方のUIKitは覚えることが沢山あります。AutoLayoutやUICollectionViewを覚えた頃にはUIKitなんて使われていないかもしれません。
そんな不安を少しでも減らせるように、iOSアプリ開発歴12年の私がSwiftUIがどんな立ち位置のフレームワークなのか、UIKitとの使い分け・共存などを徹底分析します。
このセッションを見れば、SwiftUIの使い所や、開発におけるハマりどころを理解できることでしょう。

参考)https://qiita.com/noppefoxwolf/items/7940f5b8b132b825c545

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

確実な動作を最優先したアプリ設計

yaso_san 八十嶋祐樹

iOSのアプリ開発では、意識してコードを書いていないと、予想外のタイミングで不要なイベントが実行されてバグが起きてしまうことがよくあります。

無秩序な非同期処理もそうですが、特にUI周りはプログラマがコントロールしきれるものでなく、予想外に起きるイベントを完全に無くすことはできません。

アプリを安全・確実に動作させるためには、そのような不安定な外部要因に依存せず、アプリの状態を構築する事が必要です。

このトークでは、確実な動作をするアプリを作るにはどうすれば良いかを、以下のような内容でお話しする予定です。

・iOSのUIの問題点
・画面遷移の方法について
・UIに依存せずにアプリの状態を持つ
・「機能」と「生存期間の管理」を分けてオブジェクトツリーを構築する
・循環参照を起こさない構造にする
・非同期関数を隠蔽する

4
LT(5分)

HealthKit 気をつけるべき栄養素ランキング

coffeegyunyu 日向強

iOSにはHealthKitが備わっており、各種健康データや運動量などを入力しておくことができます。
入力できる項目の中には栄養素の項目があり、摂取した食べ物などから栄養素を入力したりできます。
中には特殊なもの、わかりにくいものなど、ソースコード上でどうやって入力すればいいか戸惑う栄養素もあります。

そんな一癖も二癖もある栄養素の面々を、HealthKitのTIPSと共に、開発者にとって思わず「あるある」と思っちゃう独断と偏見のランキング形式でご紹介していきます。

5
LT(5分)

1年間継続している自転車駆動開発のすべて

tokizuoh tokizo

人間にとって、健康は日々の生活においてとても重要です。
エンジニアにとって、新しい技術のキャッチアップは日々の開発を行う上でとても重要です。

いつも物事が長く続かなかった私が、健康と新しい技術のキャッチアップ、この両方のモチベーションを1年間保ち続けて得たことを紹介します。

以下のテーマをお届けします。

  • 健康と技術、両方を数値化して定量的にモチベーションを維持
  • HealthKitを使ったワークアウト管理のカスタマイズ
  • HealthKitでSwift Concurrencyを学ぶきっかけ作り
2
レギュラートーク(20分)

あなたの知らないCore Dataの世界

coffeegyunyu 日向強

複雑なユーザーデータを扱うには、アプリ内データベースを使うことは避けられません。
皆さんはどんなデータベースをお使いでしょうか?

iOSで用意されているCore Dataは、OSのバージョンアップごとに、SwiftUIやDiffable Data Sourceを使う上でとても便利で強力な機能が追加されているなど、iOSアプリを開発する上でとても便利です。
しかし、その一方であまりフィーチャーされてない機能、「これどうやって使うんだ」な説明不足な機能があるのも事実です。
「何となく使いづらそう」「他のもので十分」な人も多いかと思います。

そんなCore Dataに関して「こんなこともできますよ」な魅力に溢れた様々な機能を説明していくトークになります。
「へー、こんなことができるんだ」や「使えそう」などとちょっとでも思っていただければ幸いです。

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

SwiftUIにRealmを導入するとViewとModelだけでアプリが作れる話

tomsan96 とむ

iOSアプリで使うデータベースとしては、RealmやCoreDataが有名です。
特にRealmを使ったことがある方は多いのではないでしょうか。
本トークではSwiftUIにRealmを導入して実装する上での知見をお伝えし、みなさんがこの構成でアプリを作るまでの第一歩をサポートします。

昨年、RealmはアップデートでSwiftUIとの親和性が高くなりました。
その結果、データ・バインディングを行うViewModelを開発者が実装しなくても、ViewとModelさえあればアプリを作ることができるようになっています。
どのようなアップデートがされたのか、なぜViewModelに相当するものが不要なのかを解説します。
新しくなったRealmを活用するととても便利なのですが、現状注意しなければならない問題もあるためその回避方法も合わせて説明します。

10