「コンピュータは0と1しか処理できない」とよく言われています。
ビット演算があったり、浮動小数点演算があったり、文字コードが16進数だったりと、PHPerのみなさんもなんとなく実感としてはあると思いますが、なぜ「0と1しか処理できない」のでしょうか。
このトークではアナログの世界・電気回路でデジタルの世界・コンピュータ処理がどの様に表現されるのか、私たちがC言語やPHPで書いたプログラムの実行結果がディスプレイやスピーカーで認識できるところまでがどの様にできているかをお話します。
ふだんの活動ではあまり気にすることのないコンピュータの基本的な仕組みの話になりますが、このトークを聞いたみなさんが今までより少し解像度の上がった目でコンピュータを楽しめることを願っています。
今や OpenAI 社の ChatGPT に代表される AI チャットはさまざまなアプリケーションに組み込まれて活用されるようになりました。
しかし多くのアプリは外部のチャットサービスにリクエストして結果を表示するというものがほとんどで、その結果、入力された内容がユーザーの知らないうちに外部に送信される懸念、また外部のサービスに依存する関係上、アプリにはさまざまな制約が残ります。
このセッションではそれらの問題を踏まえて、また技術的な検証を含めて、CoreML を含めたさまざまなオンデバイスで動作する AI フレームワークを検討します。
そして、実際に iPhone だけで動作する AI チャットアプリを作成し、巨大な LLM のようなモデルの取り扱いや、オンデバイスのメモリ限界などの問題を検討します。
対象とする方: iOS アプリ開発の経験がある中・上級者
長く運用されるサービスのアプリは、iOSやSwiftのバージョン・ビジネスのフェーズ・メンバーの入れ替えなど、さまざまな変化に追従しなければなりません。
一方で、日々機能の追加や改善を積み上げる中で同時に変化へ対応するのは難しく、ある時点での保守的な意思決定が後に負債となって跳ね返ることもよくあります。
このトークでは、様々な理由によって積み上がってしまった負債を解消するためにリアーキテクチャを行う選択した時に考えたこと・行ったことをお伝えします。
これらを実例とともに提供することで、聴衆の皆様が大小様々な負債を戦略的に解消していく助けとなることを期待しています。
最近のXcodeは動作可能な最小のOS要件が厳しく、最新に近いmacOSのバージョンが求められます。
現実的な悩みで、昔のプロジェクトを動かす時に当時の古いXcodeをインストールできず、少し試すだけでも新しいXcodeに対応する改修が必要になります。
そこで救世主となるのがAppleが提供してる仮想マシンを作成するためのVirtualization Frameworkです。これを利用することで任意のmacOSを仮想マシンにインストールできます。
これらを試しているうちにもしかして「Xcode 1.0」もインストールできるのでは!と思い立ち、試行錯誤を繰り返しました。
トーク内容
・2023年にXcode 1.0をインストールするための試行錯誤
・少し古いXcodeを動かす方法とTips
はたして2023年に Xcode 1.0を動かせたのか!?その奮闘記をお送りいたします。
「モバイル開発に入門するならiOS?Android?」あるいは「SwiftとKotlinってどう違うの?どっちを学べばいいの?」そんな質問をする機会・される機会は多々あるのではないでしょうか。私はAndroidを専門にやっており、Android・Kotlinが大好きです。どちらかと言われたらAndroid・Kotlinを勧めますが、正直iOS・Swiftの良さを理解できていないのが現状です。両者の違いや共通点を深く理解し、どちらから学ぶかを選べることは、エンジニアとして必要な素養だと思います。そこで本セッションでは、Kotlin Multiplatformの台頭やiOS人気の高い日本という市場などの情勢はもちろん、iOS・SwiftやAndroid・Kotlinの仕様・デザインガイドラインを整理し、モバイル開発に入門するならどちらか疑問に適切に答えられるようになることを目指します。
Swiftのenumは強力ですが、case名の動的取得が直感的ではなく、開発者にとって不便な点となっています。
この問題を解決すべく、SwiftSyntaxMacrosを用いてenumのcase名を効率的に取得する方法を紹介します。
私たちがenumを用いて開発を進める中で、enumのcase名を必要とする場面がありましたが今までのSwiftの仕様では難しいものとされていました。
しかし、今回のWWDC23ではSwift Macrosが登場し、簡単に取得できるようになりました。
本発表では、Swift Macrosを使用した具体的なコード例と、使用の注意点について解説します。
これにより、聴衆の皆様にはSwift開発の品質向上と効率化を実現する新たな視点を提供できることを期待しています。
Swift Macrosの魅力を共有し、Swiftの世界をさらに深く探求していきましょう。
Xcode Cloudは言わずもがなAppleが提供するCI/CDサービスです。
このXcode Cloudをみなさんは最大限活用できていますか?
Xcode CloudはGitHub Actionsと併用することで非常に強力なデプロイ環境となることをご存知でしょうか?そしてその環境の構築は非常に簡単です。
本セッションではXcode CloudとGitHub Actionsを併用する弊社のデプロイ環境を題材に実際に環境構築しながらその使い方や実際のデプロイ環境について解説を行います。
具体的には下記について話します。
・ リリースフローの解説
・ 環境構築の方法
・ Xcode CloudとGitHub Actionsを併用するメリット
・ ミニマルにデプロイ環境を構築するメリット
これを機にみなさんのプロジェクトにもXcode Cloudを「より効果的に」導入してみませんか?
WWDC23でvisionOSが発表されました。
新ハードウェアのApple Vision Proと共に動作する新しいOSです。
Apple製のSpatial Computingデバイスは数年来待ち望んだ物でした。
サンノゼ現地にて発表に立ち会ってきました。
この素晴らしい発表を受け、iOSDC2023に向けて visionOS 30Days開発チャレンジを実施します。
シンプルな実装から始まり、各種コンポーネントを使い、簡易的なゲームや映像表示などを実装していきます。
セッションではそのソースコードと知見をすべて共有します。
動作映像を見せながら実装の要点を解説していきます。
私は過去にMetal Shader 100DaysやAR100Daysを実施してきました。
その経験を活かし、今回チャレンジし結果を共有します。
一緒に、visionOSの可能性を探求しましょう!
弊チームではKotlin Multiplatformを採用していますが、一部のメンバーが新機能開発等を通して試験運用していたため、本格的にチーム全体で運用し始めたのは今年からとなります。
そこで、実際のアプリの機能を一部抜粋したチュートリアルプロジェクトを作成し、その演習に取り組んでもらうことでチームメンバーへのKMMのインストールを実施しました。
本トークでは、それらを一般的な形に置き換えたサンプルプロジェクトを使って、以下のような項目でKMMを用いた開発を網羅的に解説していきます。
・KMMをiOSプロジェクトに取り込む際の仕組み
・KMMを用いたアプリのプロジェクト構成
・KMM側での実装例
・iOSとAndroid側でのUIとUIロジックの実装例
・iOSまたはAndroidプロジェクトの実装を、KMM側に移行する実装例
・Gradle Pluginを用いたビルド設定の共通化
その時は不意にやってきます。
「We noticed an issue with your submission」
アプリのリジェクトはiOSエンジニアなら誰しもが経験したことのある苦い経験の一つだと思います。
これはもうどうしようもないことなのでしょうか?
アプリがリジェクトされた時みなさんはどのように対応していますか?
これらのヒントはApp Store Reviewガイドラインにあります。
本セッションでは多数のプロダクトを展開する弊社のリジェクト事例を題材にApp Store Reviewガイドラインを読み解いていきます。
・App Store Reviewガイドラインの基礎
・リジェクトされる確率を減らすにはどうすれば良いか
・普段の開発で私たちはどのような点を意識するべきか
・リジェクトされてしまったけどすぐにリリースしたい時のtips
私は、スマートフォン以前の携帯電話の時代から、モバイルアプリの開発に携わってきました。当時は、ハードウェアの制限から、アプリケーションの表現は大きく制限されていました。そこから、スマートフォンの登場により、ハードウェアの性能が向上し、アプリケーションの表現は自由度を増しました。その最たる例が、キー入力からタッチデバイスへの移行です。
そして今、私たちは再び新しい変革の波、AR空間へと向かっています。AR空間では、従来のスマートフォンとは異なるアプリケーションの表現の可能性を感じました。スクリーンの制約から解放され、任意の大きさと形状に適応するアプリケーションを設計する必要があると強く感じています。これには、 Widget と Intent を活用しアプリケーションをデザインし直していけると感じました。
AR時代の新しいアプリケーションのパラダイムを探し、形作っていきたいと思っています。
みなさんは「内製化」という言葉をご存知でしょうか?
アプリ開発というと自社や個人での新規開発を思い浮かべる方が多いと思いますが、事業譲受によって他社のサービスを自分たちで開発・保守・運用していくことを内製化と言います。
ある日巨大なサービスを内製化することになった時、みなさんは何が起こるかイメージできますか?
そこには多くの困難がありつつも、私たちエンジニアが日常の開発業務に活かすことのできる多くの学びと知見が溢れていました。
本セッションでは長い年月をかけて内製化した経験から得られた、この先何年も持続可能なアプリを開発するための知見とテクニックについて紹介いたします。
・内製化とは何か実際の取り組みとその成果
・私たちエンジニアが日常の開発で意識すべきこと
・アプリ開発をシンプルかつ効率的に行うためのエッセンス
・将来を見据えたアプリ開発手法・技術選定の実例
今年のWWDCで新たにApple Vision ProのデバイスとそのOSであるvisionOSが発表され、AR技術が目覚ましい発展を遂げています。最もメジャーなゲームエンジンであるUnityがそのvisionOSに対応すると発表し、Unityへの注目はますます高まってきています。
そこで、今回はそのUnityを改めてiOSアプリに組み込んでみた結果、導入過程やパフォーマンス、保守・運用に至るまでに感じたよかったポイントや詰まったポイントなどを紹介していきます。
文字列リテラルを便利にする機能として文字列補間があります。文字列補間とは、文字列リテラル内のプレースホルダーを実行時に評価し、そのプレースホルダーに対応する値に置き換える機能のことを言い、式展開、変数展開などとも言います。皆さんもよく利用されていると思いますが、任意の型を文字列リテラルで初期化できるようにしたり、文字列補間をカスタマイズできたりすることはご存知ですか?これらを活用することで文字列による表現力を向上させることができます。Swift 5.9で導入されるMacroを支えるSwiftSyntaxでも活用されています。一見、魔法のように見えるこれらの仕組みを理解するために、本トークでは以下の内容についてお話しします。
本トークでは、新卒3年目のモバイルエンジニアがテックリードに任命されてからの1年間の経験を共有し、経験の浅いエンジニアがテックリードになり、試行錯誤を通じて成長する様子を紹介します。特に、タスクの依頼や意思決定が苦手だった経験から改善策を探っていたため、参考にもしやすいと考えます。
プロダクトオーナーやグループリーダーとの連携を図りながら、アプリの改善と新機能の開発を並行して進めるための方法にも取り組みました。
さらに、Androidチームとしての開発速度向上やiOSとの機能差分を解消するためのタスク管理に焦点を当てています。
本トークでは、以下の内容も含みます。
Appleがついに公式CI/CDサービス:Xcode Cloudを打ち出しました。アップル謹製なので、早速移行したいと考えた方も多くいらっしゃるのではないかと思います。筆者もその一人です。
でもいざ使ってみたら、既存のサービスと比べると、癖が強いですよね…
実は去年リリース直後から、筆者自身の個人アプリや会社のダミープロダクトでいろいろ確認してみたので、そこで得た知見をご紹介したいと思います。
このセッションは以下のことをカバーします:
Xcode Cloudに興味あるが移行するか迷ってる人や、とりあえず移行してみたいけどやり方がわからない人にぜひおすすめしたいセッションです。
Instrumentsはアプリケーションのパフォーマンス解析や改善に役立つXcodeの開発ツールの一部です。
本ツールは毎年アップデートがされておりWWDC22ではSwift Concurrencyの対応が追加され並列処理の可視化・最適化を行うことができるようになりました。
「async/awaitで書き換えてみたけど、実際のパフォーマンスが気になる」
「意図しない挙動になったが原因がわからない」
といった課題にアプローチすることができます。
今回ではInstrumentsの基本的な使い方から始め、WWDC22でアップデートされた並列処理の可視化・最適化の手法について既存処理の書き換え時の失敗事例を踏まえながら紹介できればと思います。
マイクロインタラクションとは、ひとつの作業だけをこなす最小単位のインタラクションであり、
アプリ開発においてはユーザーの体験を向上させる要素の一つです。
このトークでは、まずマイクロインタラクションの概念とその重要性について説明します。
次に、SwiftUIを用いてどのようにマイクロインタラクションを設計し実装するか、その具体的な手法について解説します。
基本的なアニメーションから、ユーザー入力やシステムステータスの反映、さらにはハプティックフィードバックまで、ユーザーとアプリケーションとの対話を豊かにするための手法を紹介します。
マイクロインタラクションを活用してプロダクトをより良いものにしていきましょう。
iOSのSKStoreReviewControllerを使ったレビュー促進ポップアップには、表示タイミングや回数に制限があります。また、App Store Reviewガイドラインでは「レビューを求めるカスタムのメッセージ画面を表示することはできません」と記載されています。
しかし、それでもカスタムメッセージ画面を表示したいという要望がある方もいらっしゃるでしょう。
本トークでは、Firebase In-App Messagingを活用し、カスタムメッセージ画面やポップアップ表示タイミングをリリースなしに変更することができる解決策についてと、実際に運用して得られた結果からその有用性についてお話します。
Core Dataは依然としてデータ管理の有力な選択肢の1つです。しかし、Core DataはSwiftUIやSwift Concurrencyなどモダンな開発環境において、一部の制約や課題に直面します。
本セッションでは、そういったCore Dataの「辛い」点に焦点を当て解説します。
その上で、新たに登場したSwiftDataへの期待を語ります。なぜ多くの開発者がSwiftDataに期待を寄せているのか、それを理解するためには、まずCore Dataの課題を理解することが重要だと考えるからです。
このセッションは、Core Dataのベストプラクティスを知るためや入門するためのものではなく、Core Dataの難しさを認識し、その視点からSwiftDataを考えるためのものです。Core Dataの経験が少ない開発者でもSwiftDataについての新たな視点が得られることを目指します。