iOSアプリエンジニアなら、一般的なiOSアプリのUIデザインでアプリを作ることはお手の物ですよね?では、visionOSアプリを作ることになったらどうでしょうか?
各コンポーネントのスタイルやレイアウトはどうするべきか、何ができて何ができないのか、AppleのvisionOSアプリのUIはどうやって実現されているのかなど、多くの悩みどころが出てくると思います。
このトークでは、iOSアプリエンジニアである私が実際にvisionOSアプリのUIデザインと開発を行う中で直面した課題や得た知見を、特に以下のポイントに焦点を当てて紹介します。
・基本概念とデザイン原則:visionOSのUIデザインにおける基本的なコンセプトやガイドラインなどを紹介。
・デザイン要素:iOSとは異なるUIコンポーネントの特性やデザイン要素などの紹介。
・開発効率を上げるテクニック:visionOSアプリ開発を効率化するためのXcode Previewsやシミュレータの活用法。
・制限と工夫:visionOSの様々な制限を紹介しつつ、実現したいUIをどのようにして実装するか紹介。
このトークを聴くと、visionOSアプリとして使いやすく美しいUI/UXになっているか、実現できるUIなのかを判断できるようになり、チームでの開発もさらにスムーズに進められるようになるでしょう。
最近、かなり注目を浴びているLLMベースの「AIアシスタント」にかなりの熱を感じています。
そこで、LLMのアシスタント(Copilot、OpenAIなどで)、自然言語間の翻訳だけでなく、プログラミング言語間の翻訳も得意そう。
そこでどこまでできるのかを試してみました。
チャレンジをしてみた感想と今後の展望の考えについて話す!
詳細
発展途上のAIのアシスタントを用いて、マルチプラットフォームの開発をどこまでできるかちょっとやってみる?!
最後に
※ スライドだけではなく、ライブコーディングをチャレンジしながらやるつもりです!
「自分が持っている iOS 開発の技術をデザインやアートで活かしたらどうなるか?」大学でデザインを勉強している私がよく考えています。これからもうすぐ卒業する私が、その答えになる作品を作りました。
私の卒業研究で、スマホで使える、あるメディアアートの制作ツールを作りました。
Slit-scan は John Whitney が 1958 年に開発した VFX のための撮影技術です。その後、様々なアーティストに使われています。動くものを強調するのが特徴です。
本来の Slit-scan では、細いスリットを通じて撮影します。しかし、それを完成するにはなかなか難しい。複雑なセッティングが必要です。多くの人は、すでにある動画を後処理して、エフェクトの一部として使っています。Slit-scan そのものを目的として制作する人が少ないです。
実は、Slit-scan を簡単でできるものは、私たちのそばにあります。この iPhone です。私は、iOS で自由に Slit-scan できるツールを作って、そのツールで作品を作りました。
このトークでは、作品と使用している技術を紹介します。主に Metal で 240 fps でカメラからの画像を処理する方法です。そして、私たち iOS 開発者に馴染みのある技術をアートやデザインの領域に使ったらどんな可能性があるのかをお見せしたいです。
本トークでは、Swift 5.9における重要な変更点であるnoncopyableタイプの導入に焦点を当てます。
noncopyableタイプはオブジェクトや変数が一意の所有権を持つことを意味し、Swiftの従来の型とは異なる新しいパラダイムを提供します。
このトークでは、noncopyableタイプの背景、Swiftの従来の型システムとの違い、新しい~Copyableと~Copyableではない型の宣言方法について詳しく説明します。
さらに、Swiftの所有権モデルに与える影響、メモリ管理とコードの安全性にどのように貢献するかを考察します。
具体的には、noncopyableタイプを使用することで、無駄なコピーを避け、メモリの効率的な使用が可能になる点について触れます。
また、所有権モデルの進化に伴い、開発者がどのようにして安全で効率的なコードを書けるようになるか、実際のコーディング例を交えて解説します。
これにより、最新の言語機能を最大限に活用し、高品質なiOSアプリの開発に役立てることができるでしょう。
SwiftとAWSの連携は、これまであまり注目されていなかったかもしれません。
しかし、現在ではSwiftからAWSを活用することが驚くほど容易になってきています。
このトークでは、AWSもiOSも大好きな私が、Swiftを使ってAWSをどのように活用できるかを具体的に紹介します。
実際のコード例を交えながら、以下のポイントを中心に解説します。
このセッションを通じて、みなさんのアプリやサービスにAWSを取り入れて可能性を広げるお手伝いができたら嬉しいです。
ユニットテストを書く際、依存先としてモックを使用することがありますよね。
みなさんは、どのようにモックを作成していますか?
手作業で1つ1つ作成することもあれば、mockoloなどの自動コード生成ツールを使うこともあるでしょう。
加えて最近では、swift-spyableなどのマクロを用いたモック生成ライブラリも開発されており、それらを使っている方もいるかもしれません。
しかし、これらのライブラリには以下のような課題が存在します。
このような課題を踏まえ、今回の発表では、
を中心に、テストのためのモック生成マクロにおける理想を追求してみます。
また、具体的な実装例・使用例を交えながら
についても考察し、これらの理想の実現を目指します。
「ユニットテストを導入したいけど、どのように書いたら良いのかわからない」
「テストは書いているけど、もっと楽に書けるようにしたい」
と課題に感じたことはありませんか?
かくいう私もその一人で、同じ課題を持っていましたが、
生成AIを活用してテストコードを自動出力させることで、ユニットテストの実装コスト削減を行いました。
本トークでは、この取り組みや結果について紹介します。
・テストコードのルール策定について
チームで運用するにあたり、ルール決めをする必要があります。
ここではどのようなことを考えてルールを決めていったのか、実際使っているテストコードルールを用いて紹介します。
・生成AIによる出力精度を高めるための工夫
実際に使用しているプロンプトの構成を用いて紹介します。
・開発プロセスへの組み込みと実際の運用について
開発フローに自然と組み込めるように、GitHub Actionsを用いたPR上での出力など、実運用するための取り組みについて紹介します。
・ユニットテスト以外での生成AIの応用事例
コード生成以外にもレビューなどの活用事例について紹介します。
iOSアプリ開発でよく使われるCI/CDサービスの一つにBitriseがあります。
皆さんはBitriseでビルドがハングしてしまい、大量のクレジットを無駄にしてしまった経験はありませんか?
このトークでは、Bitriseのクレジットを無駄にしないための必須設定とベストプラクティスについて紹介します。
これらの設定を活用することで、効率的なビルド管理が可能になります。
具体的には以下のポイントをカバーします:
・すべてのステップに対して、一括で一定時間出力のないステップを検出し中止する設定方法
・各ステップに対して、個別に一定時間出力のないステップを検出し中止する設定方法
・各ステップに制限時間を設定する方法
・ビルド開始時にXcodeシミュレーターの起動をチェックし、ハングする場合にワークフローを再起動する方法
さらに、これらの設定手順や実際の活用事例を具体的に紹介します。
このトークを通じて、Bitriseのクレジットを無駄にしない効率的なビルド管理を実現しましょう!
このトークでは、アプリ内課金の動作確認方法と StoreKit2 におけるユニットテストについて、包括的に解説します。
アプリ内課金を安全に実装するためには、動作確認とユニットテストが非常に重要です。
本セッションでは、アプリ内課金の実装を StoreKit2 にリプレースした経験をもとに、以下の内容をお話しします。
本トークを通じて、最新のアプリ内課金の動作確認方法とテスト方法について体系的に学ぶことができます。
Universal Linksとは、SafariまたはWebサイトを経由することなく、アプリ内のコンテンツに直接リンクすることができる機能です。
実装過程で「設定は正しいはずなのにアプリに遷移しない」という経験はありませんか?
このトークでは、Universal Linksの設定方法と実際に業務で直面した落とし穴について詳しく解説します。まず、Universal Linksの基本概念と、その利点を説明します。次に、実際の設定手順をステップバイステップで紹介し、必要なファイルやコードの具体的な例を示します。
さらに、Universal Linksの設定時に直面しやすい問題点とその解決策について詳しく掘り下げます。例えば、Apple App Site Associationファイルの配置場所や内容、ドメインの設定、iOSアプリ側の設定など、細かい設定ミスが原因でリンクが動作しないことが多いです。これらの落とし穴を具体例と共に説明し、効果的なトラブルシューティング方法を提供します。
このトークを通じて、Universal Linksの設定時に直面する典型的な問題を回避するための知識を得ることができます。また、Universal Linksの設定や実装をスムーズに進めるためのヒントとコツを提供します。
ソフトウェア可視化(Software Visualization)という研究分野があります。
これは、ソフトウェアの構造や開発プロセスなどを可視化することで、その理解を支援しようというものです。
ソフトウェア可視化には、頻繁で継続的なリリースが求められるアプリにおいて、コード理解を支援して開発効率を上げるポテンシャルがあります。
にもかかわらず、Swiftで書かれたコードを可視化するツールはまだあまり世に出ていません。
そこで、ビルドが成功する度に静的構造と影響範囲を可視化するツールを試作しました。
このトークでは、Swiftを対象としたソフトウェア可視化ツールの開発経験をもとに、
についてお話しします。
このトークを通じて、Swiftで書かれたコードを解析するハードルを下げ、オリジナルの開発支援ツールを実装しよう!と思ってもらえることを目指します。
Apple Vision Proでは、動画を再生するとその場面に応じて、現実空間に対してリアルタイムな演出効果が表示される斬新な体験ができます。
例えば、突然飛行機が上空を通り過ぎたり、周辺がヨーロッパの街並みに変わったり、たくさんの風船が表示されたり。
グラス型端末の没入感と相まって、これまでとは一線を画した体験です。
この面白い機能はどうやって実装するのでしょう。
何がきっかけで演出が始まるのでしょうか?
演出はどう作るのでしょうか?
動画のスキップ、一時停止には対応しているのでしょうか?
これらの疑問に答えるため、このセッションでは作業手順を説明し、ソースコードを解説し、ライブデモを行います。
実装はSwiftで行い、Apple Vision Proのシミュレータと実機で動作します。
具体的には以下の内容をカバーします:
このセッションを通じて、参加者は実際にvisionOSでの空間演出を実装するための具体的な手法を学び、自分で独自の体験を作り上げるスキルを身につけることができます。
visionOSの可能性を知り、今後も体験が進化していくワクワクを届けたいと思います!
エンジニアリングマネージャー(以下、EM)という仕事について、みなさんはどんなイメージを持っているでしょうか?
「EMはツラい仕事」「EMになるとコードが書けないから嫌」と敬遠されがちな役割ではありますが、一方で、iOSDCの参加者の中にはすでにEMとしてお仕事をされている方、(ポジティブにせよネガティブにせよ)将来のキャリアパスとしてEMをイメージしている方もいるのではないでしょうか。
近年、マネジメントに関する記事・書籍は増えてきたものの、環境や組織によって異なるEMの仕事について、具体でイメージするのはなかなかに困難です。
そこで本トークでは、私自身のトータル5年ほどのマネジメント経験をもとに、EMが普段どのような視点で業務をしているかをお話しします。
具体的には下記のようなトピックでお話をする予定です。
本トークをEMの一つのサンプルとして、将来のキャリアとしてマネージャーを考えている方や、すでにマネージャーとして活躍されている方にとってのヒントになれば幸いです。
Flutterでは宣言的UIが利用され、SwiftUIもいわゆる宣言的UIとなっています。
ドメイン層を設計し、その上でUI層を考えて設計することが非常に重要です。
特に、画面のデザインに設計が引っ張られることで以下のような問題が発生することがあります。
・DDDのコアドメインにUIの知識が混入する
・ドメイン層の知識がUI側に漏れる
・ドメイン層の設計がうまくできていないため、拡張性が低い
これらのアンチパターンを避けるためには、しっかりとした設計と実装が必要です。
本セッションでは、よくあるCRUDの初歩的なシステムを例に、DDDの知識を基にした設計とその後の実装方法について解説します。
独自の視点や経験を交えながら、システム構築のアプローチを総合的に紹介します。
話の進め方としては以下の通りとなります。
この流れを通じて、個別の知見を総合的にどう活かしてシステム構築を行うか、大きな視点でのアプローチを紹介します。
これにより宣言的UIを用いたシステム開発において、DDDの知識をどのように適用し、良い設計と実装を実現するかの手助けとなれれば幸いです。
次世代の空間コンピュータである Vision Pro は、クリエイターに新たな可能性を提供します。この画期的なデバイスは、リアルとデジタルの境界を曖昧にし、今までにない没入感とインタラクティブな体験を実現します。特に、Blender で作成した 3D モデルを Vision Pro で使用することにより、これまで想像していた以上の現実感を持つプロジェクトを構築することが可能です。あなたも自慢の自作 3D モデルを目の前に配置してみたいと思いませんか?
トークでは、Blender で作成した 3D モデルを Vision Pro で活用するための具体的な方法を解説します。
Blender に馴染みの薄い iOS 開発者でも自身のプロジェクトにすぐに応用できる情報を得ることができます。Vision Pro の可能性を最大限に引き出すためのノウハウをこのセッションで学び、次世代の Vision Pro 体験を共に創り上げましょう!
Apple Vision Proで見ている視界に、手元で操作しているiPhoneの画面をリアルタイムで表示する実装方法について解説します。
通常、visionOSではiPhoneの画面を直接表示することはできません。
しかし、送信側のiOSアプリと受信側のvisionOSアプリを実装し、連携させることでこの表示を実現しました。
空間に浮かぶ美麗なiPhone画面は、存在感がありとても魅力的です。
この表示を実現するためには、多くの試行錯誤と調査が必要でした。
このセッションでは、以下の要素をどのように連携させるかについて、具体的なソースコードと共に解説していきます。
このセッションを通して、ワクワクする機能実装の知見を皆様と共有できることを楽しみにしています。是非ご参加ください。
UI実装において、同じViewを複数箇所で実装してしまうと、デザイン変更に対する更新漏れや、実装箇所ごとにUIの差異を生んでしまうことがあります。こうした一貫性の欠如は、ユーザーにストレスを与える要因となります。これらの課題に対するアプローチの一つにデザインシステムがあります。デザインシステムとは、コンポーネントやスタイルガイドなどのプロダクト開発に必要なリソースセットです。デザインと実装がシステムとして相互連携することで、一貫性のあるUIを効率的に実装できます。
しかし、デザインシステムの構築は容易ではありません。さまざまなリソースが必要で、構築には時間がかかります。また、デザインと実装が相互連携できるようにコンポーネントを作成する必要があります。さらに、プロダクトの進化に合わせて継続的に改善できるようにする必要があります。
本トークでは、以下のトピックを中心に、私が携わるプロダクトのデザインシステム構築におけるiOSエンジニアの具体的な取り組みをお話しします。
このトークが、デザインシステムの構築、そして一貫性のあるプロダクトを効率的に開発するための参考になれば幸いです。
Flutter Add-to-App(以下A2A)は、既存のネイティブアプリにFlutterを部分的に統合する機能です。
2023年2月、マネーフォワード MEは新サービスのリリースに伴い、A2Aを導入しました。
この技術的挑戦から1年以上にわたる開発において、iOS/Androidの実装の共通化による開発速度の改善や、例えばアプリの仕様策定やデザインなどの業務の大幅な削減など、全体的な開発生産性が飛躍的に向上しました。
また、新しい技術を取り入れることで生じた課題にも迅速かつ効果的に対処するため、GitHub Actionsなどのツールを活用したいくつかの自動化プロセスを導入しました。
A2Aの導入はさらに、iOS/Androidエンジニア間や他チーム、他部門とのコミュニケーションを促進し、プロジェクトチーム全体の協力体制を強化できました。
今回のトークでは、これらA2Aの導入による開発環境の改善や、具体的な自動化プロセスやAndroidの連携方法などについて詳しく説明します。
ABEMAは「新しい未来のテレビ」として多様な動画コンテンツを提供しています。2024年2月から「ABEMAプレミアム」に加え、新たな課金商品の提供を開始し、課金商品の設計とAB検証が重要な役割を果たしています。本セッションでは以下の内容を解説します。
このセッションを通じて、参加者がABEMAの課金商品設計とAB検証の具体的なプロセスを深く理解し、自社のアプリ開発やビジネス戦略に応用するための実践的な知識を得られることを目指します。
2019年にiOS 13とともにSwiftUIがリリースされ、早くも5年が経過しました。
SwiftUIは年月を重ねるごとに改良や進化を続け、今や多くのSwiftUI情報が世の中に溢れかえっています。
そんな時代だからこそ、少数派になりつつも、依然として使われ続けているUIKitに着目します。
UIKitにはStoryboardやxibなどのInterface Builderを使ったUI生成方法がありますが、
このトークではコードによるViewControllerの作成に焦点を当てます。
などなど、SwiftUIの普及が進む中で、失われつつあるViewControllerのコード生成方法をまとめたいと思います。