note の iOS アプリのテキストエディタはテキストや画像、埋め込みなど様々な要素を入力できます。
また、今年には V4 エディタと呼んでいるエディタの拡張も行い、箇条書きや罫線などのサポートも追加しました。
スクロールする画面に複数の UITextView を入れる UI を作る時に、みなさんはどのように設計するでしょうか?
note の iOS アプリでは伸び縮みする画面を作る方法として、UIScrollView の中に UIStackView を入れて、その中に UITextView を含むビューを配置するように実装しました。
このセッションでは UIKit を活用して、伸び縮みするような画面を作る際の考え方と実装する際に困ったことなどをお話しします。
Swiftでのエラーハンドリングの方法を考えてみました。
下記にAppleのErrorのクラスがありますが、これをよしなに使いエラーを便利にしてみたらどうでしょうと考えてみました。
https://developer.apple.com/documentation/swift/error
少し検索してみますと、様々な記事を見かけましたが私なりの方法を検討してみました。
「お前も Swift Playgrounds を使った開発者にならないか?」
「見れば解るお前の強さ。Xcode だな?」
「その闘気。練り上げられている。熟練の開発者に近い」
「やはり Swift Playgrounds を使った開発者になれ!俺と iPad で開発を続けよう」
Swift Playgrounds では、昨年末から iPad 上でアプリを開発してリリースできるようになりました。
本セッションではそんな「ならない」と感じている人たちのために、Swift Playgrounds を使った iPad での開発を紹介します。
「死ぬ…!!死んでしまうぞ Swift Playgrounds を使った開発者になれ!!なると言え!!」
元来、アプリ開発においてマルチモジュール化をしなければアプリをリリース出来ないわけではありません。
既に大きくなったプロダクトを途中からマルチモジュール化するためには、必要な処理を切り出すリファクタリングや影響範囲の考慮したインクリメンタルな対応が発生します。
しかし半強制的にアプリから必要な処理を切り出さなければ機能自体が実現できないケースがあります。
App Extensions対応を行なった際に切り出した必要な処理を紹介し、どのような構成を取ればモジュール化構想をより円滑にできるのかを考察していきます。
DIのOSSであるneedleを使い、マルチモジュール構成におけるモジュール間の依存問題・画面遷移問題に対応した話をします。
依存過多になりがちなSingleton Managerクラスからの依存脱却を行いつつ、導線ごとに必要なインスタンスのスコープを切れるneedleの特徴を活かした画面遷移時の依存解決のお話をしたいと思います。
SF Symbols 3.3の時点では、3,300を超えるシンボルを備えています。この多種多様なシンボルのおかげで開発者は0からアイコンを作る必要は無く、開発に専念することが出来ます。
でも、どうでしょう?
3,300を超えるシンボルがあるのに、何個のシンボルを使ったことがありますか?実際、日の目を見れていないシンボルたちが沢山あります。
「これ一体いつ使うんだ?」「こんなシンボルまであるんだ!」「これは使えそう!」
個性豊かなシンボルたちが使って欲しそうにこちらを見ています。
このLTでは、そんなシンボルたちを活用したSF Symbolsアートの数々を紹介します。少しでもSF Symbolsのことが好きになっていただければ嬉しいです。
(参考: https://twitter.com/littleossa/status/1516540893142347778)
Xcode 11 からバイナリフレームワークを配信するための新たな方法として、 XCFramework が登場しました。
これ1つで様々なプラットフォームをターゲットにビルドできます。
また、Xcode 上で Swift Package Manager (SPM) も利用できるようになりました。
しかし、現状では SPM に対応できていない、もしくは XCFramework のみ配信されているライブラリも依然存在し、全てを SPM で管理することが困難です。
SPM では、XCFramework も Binary Target として登録することで全てを SPM で管理することが擬似的に実現できます。
本稿では、 XCFramework を SPM に対応させるために必要なステップと、プライベートリポジトリで管理しているパッケージにアクセスするための Tips を紹介します。
iOS 14およびmacOS Big Sur以降ではApple製のファイル圧縮・展開のフレームワークであるApple Archive Frameworkが利用できます。データのエクスポート機能やシェア機能などで、複数のファイルを一つにまとめて送信したいときに便利です。サードパーティ製のアーカイブフレームワークなどを導入しなくても、一通りの機能が揃っています。ただApple Archive Frameworkはドキュメントが最低限しか書かれておらず、ドキュメントに掲載のサンプルコードをそのまま写せば使えるのですが、パラメータの意味などを理解せずに使うことはよくありません。本稿ではApple Archive Frameworkの使い方とドキュメントに載っていないパラメータの意味などを実際のコードを用いて解説します。
iOS端末を業務利用する場面では、ときおり「開発するアプリ以外を使わせたくない」「ホーム画面に遷移させたくない」という要望に出くわすことがあります。例えば、キオスク端末としてiPadを使うような場合です。
本トークでは、そうした要望を満たすiOSの仕組みを3つ紹介します。
それぞれの前提条件やメリット・デメリット、設定方法や使いどころを比較しながら解説します。3つ目のASAMは、アプリ内から Single App Mode のON/OFFを制御できる興味深いモードで、その実装方法についても紹介します。
今、iOSアプリの入門者には冬の時代が到来しています。
Appleが自信満々に公開したSwiftUI。果たして、これを学べばiOSアプリエンジニアとして食っていけるのでしょうか?
一方のUIKitは覚えることが沢山あります。AutoLayoutやUICollectionViewを覚えた頃にはUIKitなんて使われていないかもしれません。
そんな不安を少しでも減らせるように、iOSアプリ開発歴12年の私がSwiftUIがどんな立ち位置のフレームワークなのか、UIKitとの使い分け・共存などを徹底分析します。
このセッションを見れば、SwiftUIの使い所や、開発におけるハマりどころを理解できることでしょう。
参考)https://qiita.com/noppefoxwolf/items/7940f5b8b132b825c545
WWDC2021で発表されたasync/awaitを始めとするSwift Concurrencyですが、CLIツールの実装でも使うことができます。
また、実はSwift5.5.2からLinuxでも扱えるようになっているんです。
本稿では、自作のCLIツールを一部抜粋してBefore/Afterの形でasync/awaitをどのように適用したかご紹介します。
API 繋ぎこみを後回しにした経験、皆さんありますでしょうか。
・API 側の問題に気づくのが遅れる
・サーバ側の開発スピードによって、作業を中断せざるを得ない
・API 側の仕様を無視した実装になっていることに気づき、UI から作り直し
実装順序次第ではこのような現象に遭遇してしまうかもしれません。
本稿では、本業と複数の副業で実践済みのテクニックをご紹介します!
・アプリ開発者目線で見る OpenAPI
・XcodePreviews 活用術
・Moya 利用時の Stub 活用術
上記3項目を実例とともに初心者〜中級者向けに執筆いたします。大規模なリファクタリング不要で、読んでいただいた直後から実践・成果を実感していただけます!
iOSのアプリ開発では、意識してコードを書いていないと、予想外のタイミングで不要なイベントが実行されてバグが起きてしまうことがよくあります。
無秩序な非同期処理もそうですが、特にUI周りはプログラマがコントロールしきれるものでなく、予想外に起きるイベントを完全に無くすことはできません。
アプリを安全・確実に動作させるためには、そのような不安定な外部要因に依存せず、アプリの状態を構築する事が必要です。
このトークでは、確実な動作をするアプリを作るにはどうすれば良いかを、以下のような内容でお話しする予定です。
・iOSのUIの問題点
・画面遷移の方法について
・UIに依存せずにアプリの状態を持つ
・「機能」と「生存期間の管理」を分けてオブジェクトツリーを構築する
・循環参照を起こさない構造にする
・非同期関数を隠蔽する
アプリ開発の過程で、仕様のミスリード・不十分な仕様把握・説明の解釈ミス等で、本来の意図との実際の成果物で齟齬が生まれる事は、常に起こる可能性はありますが、ユニットテストによって事前にそのリスクを防止する取り組みは、仕様把握や機能担保の面で有効な手段になります。
本稿ではその「ありがたみ」と感じられる簡単な例を、RxSwift / Quick / Nimble / SwiftyMockyを利用を想定したコードを通して解説する予定です。
その中でも特に、
等の簡単な実装コードやテストコードの事例を交えながら解説できればと思います。
Swift 5.6 から Swift Package Manager に Command Plugins の機能が追加されました。
この機能を用いることで、 Swift Package Manager のコマンドを拡張し、独自にカスタマイズしたコマンドを実行することができるようになります。
これによって、タスクランナーのようなものを Swift のコードで実装し、 CI やコマンドラインから実行することが可能になります。
この原稿では、 Command Plugins の作り方を実際のコードを交えて紹介していきます。
iOSにはHealthKitが備わっており、各種健康データや運動量などを入力しておくことができます。
入力できる項目の中には栄養素の項目があり、摂取した食べ物などから栄養素を入力したりできます。
中には特殊なもの、わかりにくいものなど、ソースコード上でどうやって入力すればいいか戸惑う栄養素もあります。
そんな一癖も二癖もある栄養素の面々を、HealthKitのTIPSと共に、開発者にとって思わず「あるある」と思っちゃう独断と偏見のランキング形式でご紹介していきます。
Swift-DocCは、Swiftフレームワークやパッケージのためのドキュメント作成ツールです。Xcode 13に同梱される形でリリースされ、その後オープンソースソフトウェアになりました。
Swift-DocCの面白い特徴に、チュートリアルを作成できるという点があります。AppleはSwiftUIのチュートリアルを公開していますが、このチュートリアルと同様のものがSwift-DocCを使えば作成できるのです。
この記事では、Swift-DocCを使ったチュートリアルの書き方を、具体的なコードを挙げて解説します。以前Swift-DocCの技術同人誌を執筆しましたが、今回の記事ではチュートリアルに焦点を当てて、より詳細に解説します。
参考:Swift-DocCでドキュメントをつくる (https://type-d4-lab.booth.pm/items/3622327)
Swift 5.6でSwift Package Manager(SwiftPM)にプラグイン機能が追加されました。ビルドツールプラグインはSwiftPMのビルド時に外部ツールを実行します。また、コマンドプラグインはSwiftPMのコマンドを拡張して外部ツールを実行できるようにします。
しかし、SwiftPMプラグインの情報はSwiftのプロポーザル以外にはあまりありません。そのため、実際にどのように実装すれば良いのかわからないと感じる人もいるのではないでしょうか。この記事では、プラグインの実装方法を具体的な実装コードを挙げながら解説します。また、プラグインの活用のしかたも紹介します。
参考記事:Swift Package Managerのプラグイン機能 (https://qiita.com/usamik26/items/1c2cec0903fea2e03344)
freddi氏「今年もクソ漫画、パンフに載せたります。」(参考: https://twitter.com/___freddi___/status/1525016756095688706 )」今年は正攻法でプロポーザルで大胆にGo!いったい、iOS開発の地獄を見ているふれもんやロパ太たちの運命はどうなっちゃうの?!次回! freddi 伏す、ビルドスタンバイ!
iOS 15とXcode 13のリリースにより、SwiftUIのTextやAttributedString等で指定する文字列の中でMarkdown記法を使用できるようになりました。全てのMarkdown記法が使えるわけではありませんが、ボールドやイタリックなどの簡単な文字装飾であれば文言と一緒に文字装飾も定義できるため、文言変更と同時に文字装飾を変更したい場合でも文言定義を変更するだけで対応できるといったメリットがあります。
本稿では、そんなMarkdown記法について、特徴や使い方、さらにはカスタム属性構文の使い方について解説します。
コンテンツ(予定):