「コンピュータは0と1しか処理できない」とよく言われています。
ビット演算があったり、浮動小数点演算があったり、文字コードが16進数だったりと、PHPerのみなさんもなんとなく実感としてはあると思いますが、なぜ「0と1しか処理できない」のでしょうか。
このトークではアナログの世界・電気回路でデジタルの世界・コンピュータ処理がどの様に表現されるのか、私たちがC言語やPHPで書いたプログラムの実行結果がディスプレイやスピーカーで認識できるところまでがどの様にできているかをお話します。
ふだんの活動ではあまり気にすることのないコンピュータの基本的な仕組みの話になりますが、このトークを聞いたみなさんが今までより少し解像度の上がった目でコンピュータを楽しめることを願っています。
今や OpenAI 社の ChatGPT に代表される AI チャットはさまざまなアプリケーションに組み込まれて活用されるようになりました。
しかし多くのアプリは外部のチャットサービスにリクエストして結果を表示するというものがほとんどで、その結果、入力された内容がユーザーの知らないうちに外部に送信される懸念、また外部のサービスに依存する関係上、アプリにはさまざまな制約が残ります。
このセッションではそれらの問題を踏まえて、また技術的な検証を含めて、CoreML を含めたさまざまなオンデバイスで動作する AI フレームワークを検討します。
そして、実際に iPhone だけで動作する AI チャットアプリを作成し、巨大な LLM のようなモデルの取り扱いや、オンデバイスのメモリ限界などの問題を検討します。
対象とする方: iOS アプリ開発の経験がある中・上級者
iOS16からMetalの新しいシェーダおよびパイプラインであるオブジェクトシェーダ・メッシュシェーダ・メッシュレンダーパイプラインが追加されました。
これは既存のレンダリングパイプラインをさらに柔軟に扱えるようにするもので、この適用例としてスタンフォードバニーに毛を生やした画像が印象に残っている方もいるはずです。
セッション中では説明をシンプルにするために平面上に毛を生やす例を挙げて本機能の説明がされていました。
「これは…これは毛というより草じゃないか!草だ!!草が生やせるぞ!!!」
と、喜び勇んでリンクされていたサンプルコードをダウンロードしてみたのですが、そこにあったのは残念ながら本機能を使った別の適用例でした。
文字通りまさに草も生えません。
しかし手段があると知ってしまった以上、そこで諦められるわけがないのです。
「iOSDCで…伝えなければ…草を生やす方法を…!」
長く運用されるサービスのアプリは、iOSやSwiftのバージョン・ビジネスのフェーズ・メンバーの入れ替えなど、さまざまな変化に追従しなければなりません。
一方で、日々機能の追加や改善を積み上げる中で同時に変化へ対応するのは難しく、ある時点での保守的な意思決定が後に負債となって跳ね返ることもよくあります。
このトークでは、様々な理由によって積み上がってしまった負債を解消するためにリアーキテクチャを行う選択した時に考えたこと・行ったことをお伝えします。
これらを実例とともに提供することで、聴衆の皆様が大小様々な負債を戦略的に解消していく助けとなることを期待しています。
標準NavigationBarにできないことをしたくてカスタムNavigationBarを作ってみました。挙動を標準NavigationBarに近づけるためにしたこと、カスタムしたことによる不具合への対処法をお伝えします。
最近のXcodeは動作可能な最小のOS要件が厳しく、最新に近いmacOSのバージョンが求められます。
現実的な悩みで、昔のプロジェクトを動かす時に当時の古いXcodeをインストールできず、少し試したいだけでも新しいXcodeに対応する改修が必要になってしまいます。
そこで救世主となるのがAppleが提供してる仮想マシンを作成するためのVirtualization Frameworkです。これを利用することで任意のmacOSを仮想マシンにインストールできます。
これらを試しているうちにもしかして「Xcode 1.0」もインストールできるのでは!と思い立ち、試行錯誤を繰り返しました。
はたして2023年に Xcode 1.0を動かせたのか!?その奮闘記をお送りいたします。
最近のXcodeは動作可能な最小のOS要件が厳しく、最新に近いmacOSのバージョンが求められます。
現実的な悩みで、昔のプロジェクトを動かす時に当時の古いXcodeをインストールできず、少し試すだけでも新しいXcodeに対応する改修が必要になります。
そこで救世主となるのがAppleが提供してる仮想マシンを作成するためのVirtualization Frameworkです。これを利用することで任意のmacOSを仮想マシンにインストールできます。
これらを試しているうちにもしかして「Xcode 1.0」もインストールできるのでは!と思い立ち、試行錯誤を繰り返しました。
トーク内容
・2023年にXcode 1.0をインストールするための試行錯誤
・少し古いXcodeを動かす方法とTips
はたして2023年に Xcode 1.0を動かせたのか!?その奮闘記をお送りいたします。
tvOSアプリ開発ではiOSアプリではあまり気にする必要のなかったフォーカスシステムへの理解が必須で、それがtvOSアプリ開発を難しくする所以でした。
そしてWWDC23で発表されたvisionOSでもフォーカスシステムへの理解が必須になると予想されます。
というのも、visionOSにはEye Trackingが採用され、目で特定のオブジェクトにフォーカスを合わせ、指で選択・決定するというUIが基本となるためです。
このLTでは3分で簡単にtvOSアプリのフォーカスシステムに入門し、後半2分でvisionOSではフォーカスをこう扱うという予想をお伝えできればと思います。
普段開発をしていると触らない方が難しいOSS。
XcodesApp などアプリ自体を OSS で開発しているものもあります。
業務の開発では重宝されながらもOSSアプリプロジェクトではなかなか実現できない手法、それは Beta 版アプリ配布です。
証明書の問題、配布先の問題をはじめとした様々な問題がありますが、それを乗り越える方法が存在します。そう、 Xcode Cloud と TestFlight です。
このトークでは、実際にOSSのアプリプロジェクトで行ったBeta版アプリ配布の経験をもとにOSSアプリプロジェクトでBeta版アプリ配布を安全に行うにはどうすれば良いかについて話します。
このトークの内容をもとにご自身のOSSアプリプロジェクトに対してBeta版アプリ配布を入れてみませんか?
では、良いOSSライフを!
私は普段Androidアプリ開発を生業としています。「iOSもできるようになりたい!」と思いつつも、時が経ち、Compose for iOSといったマルチプラットフォーム技術も台頭してきました。そして「iOSを学ぶ意義」を考える機会が多くなりました。「KotlinでiOS開発もできるじゃん!」と思いつつもSwiftでSwiftUIを書き、ネイティブ開発を理解しておくことは重要だと考えています。そこで本LTでは、そんな今だからこそAndroidエンジニアもiOS開発を学ぶ必要があると考え、Compose for iOSによるiOS開発とSwiftUIによるiOS開発を比較しつつ、両者の違いやそれぞれのメリット・デメリットを整理することを目指します。どちらの技術も将来性があり、今後より活用されていくと予想されるため、この機会に両者を理解し、適切な技術選定ができるようになりましょう!
iOSアプリ開発でもユニットテストによるテスト自動化の考え方が一般的になり、モバイルアプリ開発専用のCIサービスの存在やGitHub Actionsなども気軽に使えるようになったため、みなさんも開発する機能に対して多くのテストコードを書かれていることでしょう。しかしそれにより大量に書かれるテストコードの一部が、CI上でたまに失敗するなど、その原因究明に時間を割かなければならない新たな問題も発生しているのではないでしょうか?
私自身、昔はどうしても解決する時間がないテストを放置したり、無効にしてしまったこともあります。しかしそれに向き合って解決することで、安定したテストコードを簡潔に書くという学びを得られました。
本トークでは、不安定なテストコードの原因と対処について話したいと思います。みなさんのテストが安定し改善できるきっかけになれば幸いです。
「モバイル開発に入門するなら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の世界をさらに深く探求していきましょう。
ユニットテストのテストコードにおける3-Aパターン、Arrange-Act-Assertについて知っていますか?Arrangeは前提条件と入力、Actは処理の実行、Assertは期待した結果が得られているかを検証します。さてこのパターン、何かに似ていますよね? そうです、サウナ-水風呂-外気浴というパターンそのままなのです。
まだあります。浴室では必ず先に体を清めますが、これXcodeのXCTestでsetupメソッドにより状態をクリアするのと実質同じですし、サウナのセットを繰り返すことは、Xcodeにもテストを自動で繰り返す機能が備わっているのと本質は同じでしょう。さらにスタブ、これはもうバスタブから来てるのは誰でもわかりますよね。
本トークは私のおすすめなサウナ利用について紹介することで、皆さんがテストコードだけでなくサウナで心身をととのえるられる事を目的としています。
WWDC2023でSwiftDataが発表されました。
なぜ多くの人がSwiftDataに期待するのかといえば、それはCore Dataが辛い(つらい)からでしょう。
特にCore DataはSwiftUIやSwift Concurrencyなど一緒に使おうとすると工夫が必要です。
データ更新の監視と再描画、マルチスレッドでのデータ操作などには多くの困難を伴います。
またスキーマ定義がGUIなことなど、昔ながらの辛いポイントもあります。
このセッションはCore Dataの辛さ、困難を認識し、その視点からSwiftDataがなぜ必要かを感じるためのものです。
具体的にSwiftDataについては触れませんが、その必要性を感じていただけるものを目指します。
Xcode Cloudは言わずもがなAppleが提供するCI/CDサービスです。
このXcode Cloudをみなさんは最大限活用できていますか?
Xcode CloudはGitHub Actionsと併用することで非常に強力なデプロイ環境となることをご存知でしょうか?そしてその環境の構築は非常に簡単です。
本セッションではXcode CloudとGitHub Actionsを併用する弊社のデプロイ環境を題材に実際に環境構築しながらその使い方や実際のデプロイ環境について解説を行います。
具体的には下記について話します。
・ リリースフローの解説
・ 環境構築の方法
・ Xcode CloudとGitHub Actionsを併用するメリット
・ ミニマルにデプロイ環境を構築するメリット
これを機にみなさんのプロジェクトにもXcode Cloudを「より効果的に」導入してみませんか?
「Neovim」とは、Vimから派生したテキストエディタです。
SwiftUIのプレビュー機能が使えないなど、UIの実装にはあまり向いていません。
しかし、逆にいえばUIを伴わないライブラリのような実装は十分行えます。
むしろ以下の観点から、Xcodeに負けず劣らず高速にコーディングできます。
本トークは、Neovimを使ってSwiftのライブラリを5分間でできるところまで実装します。
スライドを一切用意せず、5分間ひたすらライブコーディングします。
Neovimによる美しいテキスト編集をお楽しみください。
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を用いたビルド設定の共通化
WWDC23で一躍ホットワードとなったSpatial Computing。
しかし単語自体は以前から使われているものです。今回発表されたSpatila Computingとそれらの間に違いはあるのでしょうか?
過去を振り返りながらiOSエンジニアとして今後我々が知っておくべきことは何なのかを探っていきましょう。