SwiftUI 使用レポート
Swift 言語
Swift は Apple が開発したプログラミング言語である —— 某社 の ArkTS 言語 のように TypeScript の皮を被っただけのものとは違う —— 使用範囲も非常に狭く、自社製品の開発にしか使われていない。
Swift と Kotlin は非常に似ており、かなり奇妙な構文をいくつか革新している。例えば:
// Dart
callFunction(parma1, (value) {
final value2 = value * 2;
print(value2);
});このように最後のパラメータが関数の場合、次のように書ける:
// Swift
callFunction(parma1) { value in
let value2 = value * 2
print(value2)
}コードが見やすくなったかというと確かに見やすくはなったが、コードフォーマット時にこの見やすい形式に自動フォーマットしてくれないし、この形式で書こうとしてもコード補完がこの形式で補完してくれない。結局時間の無駄になってしまう。
僕は Swift があまり好きではない。その理由は以下の通りだ:
- Swift 言語を使うには Xcode を使わなければならない
- Xcode にはコードフォーマッターが標準搭載されておらず、自分でプラグインを探す必要がある
- フォーマットスタイルが統一されていない
- ホットリロードがない(Dart は Flutter に依存せずにホットリロードができる)
Swift 関連のプロジェクトを探していた時、Swift をホットリロード可能にする InjectIII プロジェクトを見つけた。なぜ Apple は追加しないのだろうか?
Xcode
本当に文句を言いたい:これは人間が使う IDE なのか?
本当に信じられないのは、Xcode に国際化機能がないこと、そしてそのパネルのレイアウトがなぜこんなにも反人間的なのか、ファイル管理ビューがなぜこんなに窮屈に感じられるのか。
Xcode も Android Studio と同じようにプロジェクトビューがあることは知っているが、Android Studio ならファイルビューに切り替えられる。しかし Xcode では、僕の選択肢はどこに?
Preview 機能は評価すべきだ。SwiftUI はホットリロードに対応していないので、Preview すらなかったらもう書き続けることができないだろう。
しかしこの Preview は状態を失うので、やはり少し使えない。
SwiftUI
君たちのドキュメントには文句を言いたい。例を載せるのが惜しいのか?テキストの説明だけでは、このコンポーネント、関数、クラスをどう使えばいいのかわからないじゃないか?
List も不可解だ。ドキュメントには子コンポーネントに自動的に背景と区切り線を追加することが説明されていない。僕は考え込んでしまった。
LabeledContent というこんなに良いコンポーネントがあるのに、よくもまあ放置しておけるものだ。僕は最初ずっと HStack { Label() Space() Text() } のように書いて、Flutter の ListTile コンポーネントのようなものを実現していた。
Flutter のような コンポーネント Gallery があって展示してくれればいいのに、でもそれがない。
称賛すべき点は Text コンポーネントだ。Markdown を直接書いて URL リンクに変換できる:
Text("[byrdsaron@gmail.com](mailto:byrdsaron@gmail.com)")まとめ
資料が少なすぎる。僕は悲しい。
自分で SwiftUI を使って手書きフォント作成ソフトウェアを書いているが、Unicode、フォント、グリフに関する知識を理解する必要がある。特に SwiftUI でこれをどう実現するかは、かなり低レベルな関数とインターフェースに触れる必要があるからだ。
しかし資料は少なすぎる、公式ドキュメントは簡略すぎる、僕はめちゃくちゃ悲しい 😢。