Playgroundはプログラミング言語を学ぶ上で非常に役に立つツールです。SwiftはXcodeとiPad・Macアプリとして動くとても高品質なPlaygroundを提供しています。公式のSwift Playgroundsはプログラムをインタラクティブに実行し、結果を途中経過も含めてわかりやすく表示してくれます。
Swift以外の言語に目を向けると、最近のプログラミング言語はどれもPlaygroundのような仕組みを提供しています。しかもほとんどのプログラミング言語にはWebで動作するPlaygroundが提供されています。
Webで動くPlaygroundはさらに強力です。Xcodeやアプリをダウンロードすることなく使え、頭に浮かんだことをiPhoneでサッと書いて実行することもできます。書いたコードを共有したりそれを元にディスカッションすることもより簡単にできます。たいていのWebのPlaygroundは「埋め込み機能」があるので、”実際に実行できるサンプルコード”を埋め込んだドキュメントを作ることもできます。
残念ながらSwiftには公式のWeb Playgroundは提供されていません。しかしサーバーサイドSwiftとWebプログラミングの技術を使って自分でSwiftのWeb Playgroundを作れます!
こちらは私が作成したSwiftのWeb Playgroundです。
https://swiftfiddle.com/
私はこのSwift Playgroundを作成してWebプログラミングやサーバーサイドのテクノロジーについて非常に多くのことを学びました。
本稿ではブラウザで動くコードエディタ、UIの作り方、SwiftによるWebプログラミング、仮想化によるサンドボックス化など私が得たさまざまな知見をお伝えします。
「あ、ここは UIKit じゃないと要件満たせないなぁ」
SwiftUI でアプリを開発していて必ず1回はこのように思ったことがあるのではないでしょうか。
事前にドキュメントを熟読し、実装方針を固めてからコーディングを始めるという流れであれば問題ありませんが、コーディング途中で要件を満たせない事実を目の当たりにした場合、時間の浪費に悔しさを覚えることでしょう。
そんな思いをする SwiftUI チャレンジャーをゼロにすべく、UIKit・SwiftUI のどちらを使えばよいかを一瞬で判断できるフローチャートをご紹介します。(極論 UIKit のみで開発すれば解決するとも考えることが可能ですが、ここでは SwiftUI をできるだけ採用するという方針を前提として解説いたします)
例えば UITextField(UIKit)と TextField(SwiftUI)の場合以下のような条件分岐で利用すべきフレームワークを判断可能です。
======
バリデーションは入力完了後に一度だけで良い
→YES: SwiftUI(v1, v2)
→NO: UIKit(TextField には入力文字の変化を随時ハンドリングする方法がありません)
======
この原稿を元に工数見積の精度向上、開発中の後戻り削減、SwiftUI の現状理解が可能になるでしょう。
これまでのiOSアプリにおいて、主にUIKitを利用したUI実装とそれに付随する機能開発を担当する機会が多くあり、また直近数年間に私が経験してきた中では、機能を実現するための実装だけではなく、デザイナーをはじめ様々な職種の方々を巻き込みつつもデザインも絡めた仕様部分から考え抜く機会にも多く恵まれたようにも感じております。
本稿では、チームの皆様(プロダクトマネージャー/デザイナー/エンジニア)を巻き込みながら、アプリUI実装と機能ロジックをコラボして仕上げていく際に、
・デザイナーとの仕様すり合わせの際に心がけているポイントと習慣
・デザインデータから実装における勘所を紐解く
・機能ロジックとUI実装を合わせる際に違和感を感じた場合
・自前で準備する?ライブラリを使う?の切り分けと判断
・Webでは頻出での表現をiOSアプリで実現する際に気をつけている事
・Androidアプリで良くお目にかかるUI表現をiOSアプリで実現する場合の勘所
等を紙面が許す限り、そして私自身が業務で利用してきた設計ノート等も交えながらご紹介できればと考えております。
決して特別な事はありませんが、ほんの少しでも皆様のご参考になる事ができれば嬉しく思います。
Swift のリアクティブフレームワーク Combine についての解説記事です。特に、Operator について詳しく解説します。
Publisher と Subscriber との間のデータ変換処理を行う Operator は、Combine フレームワークの重要な要素のひとつです。Operator は種類が多く、できることが様々であるため、把握するのは案外大変です。この様々な Operator たちを整理して、具体的な動作や使いみちを紹介します。
筆者はこれまで、「Combineをはじめよう」と「CombineとUIKitによるiOSアプリ開発」の2冊の技術同人誌を発行してきました( https://usami-k.github.io/techbook/ )。今回の記事では、これらの本ではあまり詳しく書かなかった内容について扱います。