Swiftでのアプリ開発は直感的であり、多くの開発者に支持されていますが、性能や安全性で注目を浴びている言語Rustと組み合わせることによって、プロダクトの移植性や性能をさらに引き上げることができます。このトークでは、Rust製ライブラリをSwiftアプリケーションに組み込む手順を、わかりやすく説明します。
前半は、RustをC言語のライブラリとしてビルドし、ライブラリをSwiftや他のclang系言語で使えるように、適切な設定を施す方法を紹介します。
後半はライブラリをSwiftで使う方法を二つ紹介します。一つはSwiftのコンパイラを使った直接的なアプローチ、もう一つはSwift Package Managerを利用した方法です。各手法の特長と具体的な適用手順を簡潔に説明します。
また、SwiftUIとの組み合わせ例も紹介するので、Rustの機能をフロントエンドにどう活かすことができるか、具体的なイメージを持っていただけるはずです。
このトークは、Rustなど他の言語にも興味があるSwift開発者や、アプリの移植性や性能を高めたい方に向けたものです。RustとSwiftの組み合わせにより、アプリ開発の新しい可能性がどのように広がるかを提示します。
iOS開発者なら誰しも一度は目にする、デフォルトの青いTint Color。この色が選ばれた理由について、考えたことはありますか?本トークでは、その裏に隠された秘密を探ります。
まず、Appleのデザイン哲学や他OSとの比較、歴史的な経緯に基づき選択の理由を明らかにしていきます。次に、青色が持つ視覚的な特性について、色彩理論や人間の視覚に関する研究を交えながら、なぜ青色が適しているのかを探ります。
このトークを通じて、Appleのデザイン哲学やその背後にある考え方を深く理解することができるようになります。そしてデフォルトの青色を軽視せず、その価値を再評価することで、より洗練されたデザイン選択ができるようになるでしょう。
iOSアプリ開発のCI/CD運用には、どのツールを使用していますか。多くの企業がソース管理にGitHubを利用していると思いますが、GitHub Actionsの利用には無料枠があり、それを超えるとビルド時間に応じて料金が発生します。
本トークでは、GitHubホステッドランナーからセルフホストランナーに切り替えた際のメリットとデメリットについて、具体的な事例を交えてご紹介します。これにより、皆さんがセルフホストランナー環境を構築する際のヒントを提供することを目指しています。
具体的には以下のポイントをカバーします:
今では多くの開発者にとって、APIはアプリ開発の基盤となっています。しかし、個人開発においてニッチな情報を取得したい場合、APIが提供されていないことが少なくありません。このトークでは、APIがない環境でも学生向けの学修サポートアプリを実現するために、WKWebViewによるJavaScriptとの相互通信などの活用事例について経緯を踏まえて紹介します。
APIが当たり前の時代に開発を始められた方々にとって、これらの技術を習得することで、APIがない環境でも柔軟に対応できるようになり、開発の選択肢が大幅に広がるようになります。このトークを通じて、あなたも新たな技術的アイデアを得ることができるでしょう。
また、大学に学生用のアプリがない学生開発者の皆さんへ
「自身で大学のアプリを作り、学生生活を向上させたい!」と思うきっかけなれば嬉しいです!
何もやる気がなくのらりくらりと生きてきた人間
1社目(iOSエンジニア)を辞めて2年間ニートした
プライベートで技術を調べることがない(猛省)
操作感とかUI系はちょっと関心がある(勉強はしてない。感性。)
そろそろ本当に年齢やキャリアを考慮してプランを立てなくちゃいけないので、必要なことをちゃんと考えてみる。
・技術面(swift問わず)
・組織での立ち回り
-- 以下すごく大事 --
・足は引っ張りたくない
・仕事してる感は欲しい
・評価もされたい、お金欲しい
・頼られたい、かっこつけたい
アニメーションはアプリケーションのユーザー体験を向上させる重要な要素です。
iOS 17のSwiftUIでサポートされたKeyframe Animationを活用することで、高度で魅力的なアニメーションを効率的に実装できるようになりました。
本トークでは、以下の内容について説明します。
魅力的でインタラクティブなアニメーションを実現するための参考になれば幸いです。
皆さん、iPhoneのSpotlight機能をご存知ですか?
MacのSpotlight機能は多くの方が利用していますが、iPhoneにもSpotlight機能が存在します。
Spotlightを活用することでユーザーにとってアプリを見つけやすくすることができます。
そしてアプリの検索性を高めるために重要なのがCoreSpotlightとINAlternativeAppNameです。
例えば、レシピアプリを開発している場合、ユーザーが「美味しい料理」と検索することで、あなたのアプリがSpotlight上でヒットするように設定できます。
このトークでは以下の内容をカバーします:
このセッションを通じて、CoreSpotlightとINAlternativeAppNameを駆使し、皆さんのアプリをより多くのユーザーに届けましょう!
SwiftUIが発表されてから早5年が経ちました。皆さんのプロダクトにもSwiftUIが採用されているのではないでしょうか。
我々は2年前から、SwiftUIを用いて図形描画や画面に直接触れて文字を書くといった機能を実装してきました。
これらの機能は、ユーザーインターフェースの向上や特定のアプリケーションでの必須機能として求められているからです。
本LTでは、SwiftUIを使った図形や文字の描画を実装する際の勘所をメインにお話しします。特に、以下のトピックに焦点を当てます。
・図形描画の際に直面した技術的な工夫
・画面に直接文字を書く際の工夫
これらのトピックを通じて、皆さんがSwiftUIでお絵描きするのって簡単なんだと感じてもらえれば、嬉しい限りです。
SwiftUIが登場して早くも5年が経ち、今や多くのプロジェクトでSwiftUIの導入が進められています。
しかし同時に多くの開発者がSwiftUIの限界を目の当たりにし、「このViewを簡潔にSwiftUIで作るのは難しい…」、「UIKitを使わないと作れない…」と嘆いてきました。
本セッションでは5年の月日を経て進化したSwiftUIの機能を紹介します。
そして、以前はUIKitの力を頼りつつ苦労していたが現在では新機能を使って楽に実装できるようになったViewの作成事例を紹介していきます。
皆様のプロジェクトのViewの見直しやリファクタリングに役立てば幸いです。
アプリ内でDrag & Dropは活用していますか?
Drag & Dropとは、コンテンツをある場所から別の場所にドラッグして移動したり複製したりする手段です。アプリ内である部分から別の部分へ、またはアプリから別のアプリへ転送することが可能です。
SwiftUI登場時点でDrag & Dropの実装はできましたが、カスタムタイプのコンテンツだと転送処理が複雑になるという課題がありました。しかし、iOS16から導入されたTransferableプロトコルを用いると簡単に実装できるようになります。
本トークでは以下の内容を解説します。
参加者の皆様が、Drag & Dropのプラクティスや実装の理解の手助けになることを目指します!
SPIDERPLUSは、外部機器で検査結果を計測する機能があります。
外部機器との接続にはBluetoothを利用しており、ハマりポイントなどを紹介します。
ある日、「UIは同じで、APIの向き先・アプリ内で使用するリソース・アプリの名前・BundleID等だけを変えたアプリをいくつか作りたい」といった要望が社内で上がりました。
同じようなUIなのに別々にアプリを作り、それを一つずつ運用していくのって面倒ですよね。
Targetで分けるにしても、xcodeprojファイルをレビューする必要が出てきて同じく面倒ですよね。
そんな課題をXcodeGenを用いて解決した(swiftファイルは共通で、makeコマンドで各アプリごとのプロジェクトファイルを作成し、必要な値を全て切り替わるように対応した)内容になります。
また、アプリ完成後の運用方法についても触れようと思います。
トークの構成としては、以下を想定しております。
みなさんは、業務の効率化のためにちょっとしたツールを探していたのに、時間だけが過ぎてしまったという経験はありませんか?
また、やっと見つけても会社のMacに入れるには手続きが必要で、簡単には入れられなかったというような経験はありませんか?
そんな時は思い切って、自分でツールを作ってみてはいかがでしょうか!
普段iOSアプリを開発している方であれば、SwiftUIを使って簡単にmacOSアプリを開発することができます。
このトークでは、私が実際に業務改善のために開発したmacOSアプリを例に、開発の手順やiOSとの違いを詳しく紹介します。
業務改善ツールを開発しながら、macOSアプリについて知識を深めていきましょう!
トークの構成として以下を考えております。
自己紹介
業務未経験からiOSエンジニアになるために取り組んだこと
iOSエンジニアとして業務で取り組んだこと、業務外で取り組んだこと
リードエンジニアにアサインされた現在から振り返って
画面を作る上での典型的なシナリオとして、ネットワークからデータを読み込み、それを表示するというものがあります。このシナリオでは、データの読み込み中、エラー処理、正常系など、多くのパターンを網羅する必要があり、しっかり作り込むのは意外と難しいものです。
皆さんも、ひとまず正常系だけを作って、他の部分は後回しにしようと考えたことがあるでしょう。しかし、その結果、後からエラー処理などを追加するのを忘れてしまったり、大変な思いをした経験はありませんか?
本セッションでは、正常系に注力するために、非同期に取得する値を扱う型とそれを表示するViewを整理しました。具体的には、非同期に取得する値を扱う画面の状態を整理し、そのための値型と、それをSwiftUIでどのように扱うかを紹介します。
みなさん麻雀は好きですか?僕は今めちゃくちゃに麻雀にハマっています!
麻雀は配られた手札の入れ替えを繰り返すことで役を作り点数を競うゲームです。
その腕を磨く手段として、手札の組み合わせ(牌姿)からどれを入れ替えるかを検討する「何切る問題」というものがあります。
「何切る問題」をこなすことで日々麻雀プレイヤーは雀力の向上を図っており、僕もその中の一人です。
そんな趣味が高じて牌姿の入力をサポートするアプリを作るようになりました。
今回のトークではその開発で得た知見と麻雀というゲームの素晴らしさをみなさんに共有します。
話す内容:
これらの内容から麻雀にまつわる開発の知見、ひいては趣味から始めるアプリ開発の面白さを伝えます。
現在弊社で進めているSwift 6の対応において、Strict Concurrency Checking(厳密な並行性チェック)についてお話します。特に、弊社がCompleteモードでこの機能に対応している過程で直面した課題とその解決策に焦点を当てます。
まず、Completeモードを有効にしたことでアプリにどのような影響があったのかを詳しく説明します。そして、今後どのように対応を進めていくかについても触れます。
具体的な内容としては、以下のポイントについて詳細に解説します:
・ 非同期処理で利用しているCombineフレームワークのSendable対応
・ Singletonで利用しているクラスのActor化
・ モデル層でDevice情報を取得するために使用しているUIDeviceなどの取得方法の設計見直し
これらの具体例を通じて、Completeモードへのアプローチ方法やその効果、課題について共有します。これにより、他の開発者の皆様がSwift 6への移行をスムーズに進めるための参考になれば幸いです。
このLTでは、最低サポートOSをiOS15からiOS16に上げることで、アプリ開発にどれぐらいのインパクトがあるのかを説明します。
目次:
このトークがiOS15のサポートを切るか悩んでいる開発者の判断材料として役立つことができれば幸いです。
昨年11月、OpenAIはGPTsを発表しました。この機能により、ユーザーは特定のタスクを実行するためのカスタムGPTを作成できるようになりました。
例えば、Appleの公式ドキュメント2万ページを基に、SwiftUIに関する質問に回答するGPTsが作成されています。
さらに、OpenAIはGPTsの開発者に収益を分配するプログラムを開始予定であるとアナウンスしています。
これにより、さらに多くの開発者がGPTsの開発に取り組むようになるでしょう。
著者は、個人でGPTsを開発し、GPTストアで公開した経験があります。本トークでは、この経験を基に、GPTsの開発方法を前提知識なしに解説します。
具体的には、APIリクエストをおこなうアクションを登録し、GPTsを外部サービスと連携させる方法を述べます。
さらに、GPTストアに公開する際の注意点(実名を公開しない方法やJailbreakingへの対策など)についてもフォローします。
本トークを聞くことで、自分のアイデアをGPTsとして形にする方法を学ぶことができます。
あなたがオリジナルのGPTsを開発し、世界へと公開するきっかけになれば幸いです。
Swift Playgroundsは、iPadで動作する開発環境です。MacやXcodeを使わずにiPadで開発できるため、iOSエンジニア以外の人でも手軽にiOS開発に挑戦できます。このトークでは、DevRelである私が初めてのiOSアプリとしてごくシンプルなお絵描き練習ゲームを開発した学びを紹介します!
開発したアプリは、絵の定番の基礎練習である「正確な円を描くこと」をスコア化するゲームです。
このLTにより、人事や広報など非エンジニアのiOSDC参加者がアプリ開発に挑戦する助けになれば良いなと思います。またSwift Playgroundsを使ったことがないiOSエンジニアの方にも新たな発見と気付きになることを期待しています!