ルーキーズLT(5分)

ChatGPTを利用したiOSアプリ開発の真髄

kazutoshibaba うまとし

近年、AI技術は急速に進化し、開発プロセスにおいても大きな役割を果たすようになりました。
特に、OpenAIのChatGPTは、その自然言語処理能力を活用して、開発者の支援ツールとして注目を集めています。
本セッションでは、ChatGPTを利用したiOSアプリ開発の実践的な手法と、そのメリットについてご紹介します。

本セッションでは以下の内容についてトークします。

  1. ChatGPTを用いたiOSアプリ開発の具体例
    • Swiftコードの生成とリファクタリング
    • デバッグと問題解決
    • エラーメッセージの解析と修正提案

  2. ChatGPTのメリットと課題
    • ChatGPTを活用することで得られるメリット
    • ChatGPTの限界と今後の課題
    • 人間のレビューとのバランス

対象聴講者
• AI技術を活用して効率的に開発を進めたいiOSアプリ開発者

ChatGPTを活用することで、iOSアプリ開発の効率を飛躍的に向上させることが可能です。
本セッションを通じて、AI技術をどのように実際の開発プロセスに取り入れるかを具体的に学び、実践するためのヒントを提供します。
ぜひ、皆さんの開発プロセスにChatGPTを取り入れ、新たなレベルの生産性を実現しましょう。

3
ルーキーズLT(5分)

iOSでもネットワークグラフを描画したい!

charlie_dev_ios チャリオ

皆さんはネットワークグラフというものをご存知でしょうか?ネットワークグラフは身近な例ではSNSでの人の繋がりや路線図など、モノの繋がりを視覚化するために使用されます。しかし多くの場合、ネットワークグラフの作成にはデータが扱いやすく描画ライブラリが多く存在するPythonやJavascriptなどが使用されます。

でもそんなネットワークグラフをiPhoneやiPadで眺め、あわよくば触りたい、Webではなくネイティブで実装したい、そうは思いませんか?

本トークではiOSでネットワークグラフの描画を実現する過程を紹介します。ネットワークグラフ描画の仕組みについて簡単な解説から始め、SwiftUIとグラフィック処理や計算が得意なMetal、それぞれの切り口で実装して得た課題や試行錯誤の結果を共有し、最終形をお見せします。

あなたもネイティブ表現力の可能性を探ってみませんか?

1
ルーキーズLT(5分)

Base64で動画や画像を保存してみた

yuhei.ueno

文字データでデータをやりとりしていた時代に戻ろう!(爆)
そのBase64を使い、画像や動画や音声をiOS上で扱ってみようという試みです。
またそういったデータをUserDefaultsやCoreDataに保存して使ってみて、実用性はあるのか?というのも調べてみようと思います。

また最近ではこんな使い道もあるのでは?こんなところに使われているよ という点も調べてみようと思います。

Wikipedia引用
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。

1
ルーキーズLT(5分)

Apple Vision Proの現地購入レポート

nkjzm Nakaji Kohki

今年の2月にApple Vision Proがリリースされましたが、残念ながら日本での販売はありませんでした。しかし、VR元年の頃からApple製のHead Mounted Displayを心待ちにしていた私は、どうしても「いち早く手に入れたい!触りたい!!」という想いから、はるばる日本から現地へ飛び購入をしてきました。

このセッションでは、国外でガジェットを購入する際に必要となる様々な知見(具体的には決済方法、関税、技適マークなど)について、現地のリアルな体験を交えながらご紹介します。ぜひ皆さんが同じようなチャレンジをする際の参考にしていただければと思います。

ルーキーズLT(5分)

Unity初心者のiOSエンジニアが、UnityからSwiftのコードを呼び出してみた

Kaito Kishimoto

Unityを使って開発をしている際に、Swiftのあの機能が使えたらな...と思う時がありませんか?
今回はUnityからSwiftのコードを呼ぶにはどうすればいいのかを調べて実装した経験をお話しします。

このトークでは、以下の内容について紹介します。

  • C#で記載したスクリプトからSwiftのコードを呼ぶための準備や必要なコードなどを紹介します。

このトークを通じて、UnityとSwiftの連携方法を学び、UnityプロジェクトでiOSのネイティブ機能を活用することで、アプリ開発に役立てていただければと思います。

ルーキーズLT(5分)

App Review Guidelines 「違反」なるべく集めてみた

mrs1669 しろくま

アプリ完成 → App Storeに提出
「これで全世界に公開だ!」と 悦に浸っていると、その後に審査でリジェクトされてリリースできない経験をした方も多いのではないでしょうか?

リジェクトされた際、「ガイドライン 1.2.3 に違反」 (1.2.3は架空の例です) のように、ガイドラインの条文だけが添付されることがあります。 そのため、具体的に何が問題でリジェクトされたのかがわからないこともよくあります。 何度かAppleとやりとりをして修正したり、丁寧に説明して再審査をお願いした結果、審査を通過した経験を持つ方もいるかと思います。

リジェクトの経験は次回に活かすことができ、どのような行為がリジェクトされるかを理解していれば、次のリリース時には注意を払うことができます。 App Review Guidelines自体、定期的に更新されます。 また私の体感ですが、同じレビューガイドラインの文言でも、時代が経つにつれて審査基準も変わってきているように感じます。

このLTでは、最近アプリを作成してリリース審査に提出した際に経験した様々なガイドライン違反についての知見を共有いたします。

採択
2024/08/23 17:45〜
Track A
ルーキーズLT(5分)

数値を文字列に整形する際の落とし穴とその解決策

glassfiber

このセッションでは、数値を文字列に整形する際に陥りやすい落とし穴について、具体例を交えて紹介します。

例えば、以下のような関数でパーセンテージの文字列を得ようとする場合を考えます。

func percentStr(_ rate: Double) -> String {
let value = floor(rate 1000) / 1000
let percentValue = value
100
return "(percentValue)%"
}

これを print(percentStr(0.523)) として実行すると、どのような出力が得られるでしょうか?

実際の出力は 52.300000000000004% となります。予想できましたか?

このセッションでは、数値を文字列に整形する際に私が陥った落とし穴について解説します。
具体的な内容は以下の通りです。

1.浮動小数点数の精度問題:
なぜ浮動小数点数がこのような誤差を生じるのか、その理由と背景について説明します。
2.NumberFormatterの活用:
NumberFormatterを用いた解決策を紹介し、どのように実装するかを具体的に示します。

このトークを通じて、皆様が同じような問題に直面した際の参考になれば幸いです。

ルーキーズLT(5分)

「百聞は一見にしかず」に一石を投じる

Mika

私たちは普段、視覚を通して多くの情報を得ていますが、実は聴覚には情報処理の面で視覚を超える優れた特徴があります。聴覚は音の時間変化を理解する能力に優れ、音程や音量の変化を鋭敏に感じ取ることができるため、新たなデータの理解につながる可能性があります。

皆さんは Swift Charts の VoiceOver 機能を試したことがありますか?その中には Audio Graph というアクセシビリティ機能の一つで、視覚に障がいのある方々向けに、データの分布や推移を音のピッチを用いて表現する機能があります。実のところ、この機能は全てのユーザーにとって非常に興味深いものです。私が初めて Swift Charts の VoiceOver 対応を行ったとき、その音がまるで音楽のように聞こえたことに驚きました。

本トークでは以下の内容についてお話しします。

  • チャートごとの Audio Graph が奏でる音色
  • さまざまなデータの音を聴いてみる
  • Audio Graph を用いた音楽活動

視覚的なチャートや文章だけでは伝わらない情報を、音を通じて受け取ることで、今まで見えてこなかった新しい側面が見えてくるかもしれません。皆さんもAudio Graph という新たな表現の形を体験してみませんか?

2
ルーキーズLT(5分)

iOS 17で進化したCoreLocationAPIの紹介

shake__551 shake

iOS 17で変更された新しいCoreLocationAPIについて、その機能と改良点を紹介します.

話すこと

  • Core Location APIの変更点について
    • バックグラウンドで位置情報を取得する方法
    • ライフサイクルの変化

話さないこと

  • 具体的な導入事例
  • 「ドキュメントに書かれていることやWWDC2023で話されている内容」以外のこと
ルーキーズLT(5分)

「xcrun simctl」を活用してiOSシミュレータをより便利に操作しよう

glassfiber

iOSシミュレータを操作するための便利なコマンド「xcrun simctl」をご存知でしょうか?

例えば、ローカルストレージにデータを保存しているとき、開発中にデータ構造を変更することがあります。そのとき、古いデータを削除したくなることが多いでしょう。通常、アプリを削除するとすべてのデータが消えてしまいますが、一部のデータを残しておきたい場合はシミュレータのフォルダをFinderで探し、特定のファイルだけを手動で消す必要があります。
この手間のかかる作業も、「xcrun simctl」を使えば、シェルスクリプト一発で簡単に行うことができます!

さらに、「xcrun simctl」を使えば、アプリの削除と再インストールを自動化することも可能です。これにより、開発効率が大幅に向上することは間違いありません。
本トークでは、これらの便利な使い方を具体的なコマンド例とともに詳しくご紹介します。

ルーキーズLT(5分)

App Clip Codeを解析してみた!

mrs1669 しろくま

みなさん、App Clip Codeってご存知ですか? WWDC2020で発表されたApp Clipは、アプリをインストールせずにちょこっとだけ使える便利な機能です。 そして、このApp ClipをQRコードのように読み取るだけで、すぐに使用できるコードがApp Clip Codeです。 開発者のみなさんであれば実は自分で簡単に作れます!

ところで、「え、QRコードなら読めるけど、App Clip Codeって読めるの?」って思いますよね? え、思わないですか?? App Clip Codeは残念ながら読め..ないですが、一定の規則性があることはわかりました。

このLTでは、私が様々なApp Clip Codeを生成して解析する中で見つけた法則性についてお伝えします。 みなさんと一緒にこの法則性を解き明かしていけると嬉しいです!

ルーキーズLT(5分)

Boost Your Job Hunt: Leveraging ChatGPT for iOS Career Moves

kent_strong_dev Kent Strong

Unlock the power of ChatGPT to revolutionize your job-hunting process as an iOS engineer or others. Discover how to gather critical information about potential employers efficiently and gain a competitive edge in the job market. Learn how to quickly gather details on salaries, job conditions, requirements, and company performance metrics like sales. This session will provide practical tips on using AI to streamline your search, save time, and focus on what matters most—landing your dream job, like . Join us to explore this cutting-edge approach and elevate your career trajectory.

ルーキーズLT(5分)

なぜActorでRace Conditionを防げないのか?

yuto_nakano44 中野 湧仁

Swiftの新しい並行処理モデル「Swift Concurrency」の一環として追加された「Actor」について、たった5分でその基本概念と利点について解説し、ActorでRace Conditionを防げない要因を明らかにします。
このトークを通して、Actorの基本概念、その背景、そしてどのようにして実務で直面する並行処理の課題を解決できるのかを簡潔に理解することができます。
短い時間ながらも、具体的かつ実践的な知識を身につけられる内容となっています。
以下のポイントを簡潔に取り上げます。

【Actorの基本概念と動機】
・なぜActorが導入されたのか。
・従来の並行処理でどのような課題があったのか。
【Actorが解決する課題】
・どのようにして問題を解決するのか。
・実際の業務でどのようなメリットがあるのか。
【Actorの制約と限界】
・Actorが解決できない問題について。
・data raceとrace conditionの違い。

2
ルーキーズLT(5分)

Firebase Dynamic Links 廃止に伴う Adjust 完全移行計画

KSCap_main Ken Sato

Firebase Dynamic Links はアプリ内の特定コンテンツへ直接遷移できるディープリンクサービスとして重宝されてきましたが、来年の2025年8月25日に完全に終了するとアナウンスされています。

Google が無料で提供していたことや導入の容易さから、個人アプリでも広く導入されていたことでしょう。
私が担当しているプロダクトにおいても、機能仕様およびマーケティング施策の観点から中核サービスとして利用していました。

そのような中 Firebase Dynamic Links の廃止が突如発表されました。
Firebase 公式からは Dynamic Links 非推奨に伴う移行ガイドが公開されていますが、期日の猶予や対応観点の不明瞭さから、実際に移行を始めているサービスはまだ多くないでしょう。

Firebase Dynamic Links に替わる案として様々な選択肢が挙げられますが、私が担当しているプロダクトでは Adjust を利用した方針に舵を切りました。

この発表では、数ある選択肢から何故 Adjust を採用したのか、また実際の置き換え事例を踏まえ、詳しくご紹介します。

3
ルーキーズLT(5分)

最新技術でiOSアプリを革新する:Osushi開発の裏側

Ktombow1110 とんとんぼ

WWDC23 ではさまざまなツールやフレームワーク、アップデートが施されました。
しかし、多くの方が「iOS 17からしか使えない・・・」と落胆されたのではないでしょうか。

新しい技術を導入してみたい一方で、実務や個人アプリに取り入れるのは難しいと感じることもありますよね。

しかし、心配ご無用です!iOS エンジニアの皆さん!
そのお悩みにお答えします。

本LTでは、 iOS関連のニュースを定期的に配信する Web サイト「iOS Osushi🍣」が iOS 17専用のアプリ「Osushi」 の開発秘話や開発で得られた知見を紹介します。

具体的には、以下のポイントについて解説します。

  • このアプリを作った経緯
  • Osushiで使われている技術の紹介
  • iOS 17の新機能を活用する方法
  • 実際の開発プロセスと課題克服の方法

この LT を通じて、最新技術を使ったアプリ開発の具体的な方法を学びましょう!

ルーキーズLT(5分)

iOSアプリをOSS化して得た知見と落とし穴

Ktombow1110 とんとんぼ

皆さんは「OSSなモバイルアプリ」と聞いて、いくつ思い浮かぶでしょうか?
そして、Webアプリやライブラリと比べると、その数が少ないと感じることはありませんか?

このLTでは、 iOS 関連のニュースを定期的に配信する Web サイト「iOS Osushi🍣」のモバイルアプリ版 「Osushi」をOSSとして公開する際に行った対応についてご紹介します。

具体的には以下のトピックを取り上げます。

  • OSSの魅力
  • 公開する際の準備と対応
  • 遭遇した課題とその解決
  • 他のOSSプロジェクトの事例

このLTは、「これからOSSなアプリを作ってみたい」「自分の開発したアプリをOSSにしてみたい」と考えている方々にとっての必見のトークです。

ルーキーズLT(5分)

次世代型エンジニアの育成メソッド〜他業種連携と、たった1人のユーザーに価値を届ける開発〜

taaakopanman taaako

ソフトウェアエンジニアには、経済産業省のデジタルスキル標準にあるように、「変化の激しい状況の中でも、他のステークホルダーと柔軟に連携し、価値を生み出す」能力が求められます。

AI時代に求められるエンジニアの能力を伸ばすために、私たちは「エンジニアとクリエイターの共創」体験をつくり、たった一人のユーザーに絞って価値創出能力を鍛える「N1エンジニアリング」手法を活用しています。

本トークでは、クリエイターと共に開発を行う「N1エンジニアリング」の実績を基に、自らエンジニアとして共創した実体験と、全国の30名のエンジニアへ開発体験を提供した視点を持って、未来を担うエンジニアの育成手法を共有します。

具体的な内容は以下となります。
・他業種連携を強める共通認識の形成方法:
 プランナー・デザイナー・エンジニアの役割を再認識し、共創体験で見えた良き領域侵犯。
・ユーザーの本質理解を深めるためのN=1の分析方法:
 ユーザーの悩みにフォーカスし、課題解決に繋げるデプスインタビューと課題の着眼点。
・アイデアをMVP(Minimum Viable Product)に落とし込むプロセス:
 独自のフォーマットによるアイデア立案と、MVPへの棚卸し。

このトークが、次世代型エンジニアになりたいと思っている方や、次世代型エンジニアを育てたいと思う方へ、一つの手段として参考となれば幸いです。

ルーキーズLT(5分)

コンパイル結果を観察してSwiftのProtocolをより深く理解する

rapt_dev Ryu Noguchi

Swiftのプロトコルは、異なる型に共通のインターフェースを定義・提供しますが、プロトコル自体は直接的に型として機能しません。プロトコルの利用は、存在型、ジェネリクス、およびOpaque Typeを介して行われます。このトークでは、Swiftにおけるプロトコルの利用方法の違いがコンパイル結果に与える影響を観察し、最終的なパフォーマンスにどう影響するかを解析します。

キーワードは、プロトコルを実装した構造体をコンパイルすると生成される "Protocol Witness Table" です。このテーブルは、プロトコルのメソッドが構造体の具体的な実装にどのように対応するかをマッピングします。このトークでは簡単な例から生成したコンパイル結果をSwiftライクな擬似言語でわかりやすく提示し、このテーブルの具体的な役割を解説します。
特にジェネリクスやOpaque Typeを用いた場合のメソッド呼び出しのインライン化や性能面における存在型の特徴といったパフォーマンスに関わる部分を重点的に解説します。
最後に今回の調査で分かったこれら3つの方法の利点と欠点を簡単にまとめます。

このトークはプロトコルの扱いに慣れてきたSwiftプログラマに向けたものです。
このトークを通じてプロトコルの理解が深まり、自信を持って3つの方法を使い分けられるようになることを目指しています。

ルーキーズLT(5分)

新卒エンジニアが自社サービスをとことん触り尽くすことで見えてきたモノ

森岡 蒼

私はこの春、自社開発の企業に新卒入社しました。
かなり大規模なサービスを扱っているので、はじめはコードを読んでもちんぷんかんぷん。
バグ修正の際も、該当コードを特定するのでさえかなり時間がかかっていました。
すぐさまメンターの方に相談すると、
「自社のサービスに出来るだけ毎日触れてください。仕様書と照らしながら。」 と言われ、 「それだけ?」 と思いながらも実践してみることに。
それ以来、仕事プライベート問わず毎日30分から1時間ほど自社サービスに触れるようにしています。
その際、具体的には以下を意識しました。

  1. ドキュメントやデザインと見比べて仕様を確認し、挙動や設計がよくわからないところはコードをチェックする
  2. 疑問に思ったことは職種を問わず色々な人に聞く
  3. 仕様書から漏れている内容はすぐにドキュメントを書く

この習慣を続けることで、バグ修正のスピードが大幅に向上しただけでなく、サービス全体の理解が深まり、遥かに効率的に業務を進めることができるようになりました。

入社間もない時期に仕様理解をガチるとめっちゃお得だよ!という話を具体例を交えてお話ししたいと思います。

採択
2024/08/23 17:50〜
Track B
ルーキーズLT(5分)

コンパイル結果を観察してSwiftの効率的なエラー処理メカニズムを紐解く

rapt_dev Ryu Noguchi

Swift言語におけるエラー処理のメカニズムは、他のプログラミング言語と共通する命名や概念を持ちながら、その実装と性能の特性において独自のアプローチを取っています。本トークでは、Swiftのエラー処理の仕組みを具体的なコード例とそのコンパイル結果を通じて解説し、他の言語との比較を行います。

発表では、まずシンプルな例を通じて、エラー処理付きの関数がどのようにコンパイルされるかを示します。特に、throwキーワードの周辺で行われる処理、つまり通常の戻り値処理に加えたエラーオブジェクトの伝達、およびtry周辺でのエラー検知と分岐処理に焦点を当てます。

そしてコンパイル結果の観察から、Swiftが如何にして他言語と類似の構文を提供しながら、実行時の負荷を軽減しているかを明らかにします。比較対象としてJavaを挙げて、類似の構文を提供しながらもその実装方法と実行時の性能に違いがある点を簡潔に解説します。

このトークはさまざまなエラー処理方法を一通り学んだSwift中級者へ特にお勧めできるものです。
このトークを通じてtryを利用したエラー処理の性質をより深く理解し、さまざまあるエラー処理方法の中から状況に応じた適切な方法を選択できるようになると考えています。