概要
習慣として、いくつかの技術系情報サイトを定期的に巡回している。
ある程度固定化された巡回先があるため、これまでは各サイトをブックマークし、気が向いたときに個別に開いていた。
ただ、チェックするサイトが増えてくるにつれ、
- 毎回タブを開くのが面倒
- 新着記事を見逃しがち
- 本当に読みたい記事だけを効率よく追えない
といった不満が出てきた。
それなら RSSリーダーを自作して、自分好みにカスタマイズした方が早いのでは? と思い、アプリ開発を始めた。
どうせ作るなら Mac アプリにしたいと思い、今回初めて Xcode + SwiftUI を使って開発してみたので、その所感をまとめる。
リポジトリ
https://github.com/wheatandcat/RssFeedReaderForMac
作成中のアプリ


- 画面構成は上記のようなシンプルな構成
- RSS Feed の URL を登録して記事一覧を表示するだけの最小実装
- 今後、表示形式や操作性をカスタマイズしていく予定
SwiftUIを使ってみた所感
https://developer.apple.com/jp/swiftui/
今回が初めての SwiftUI 開発だったが、言語仕様や設計思想がよく整理されていて、思った以上にスムーズに開発できた。
普段触っている React Native / Flutter と比較して、特に良いと感じた点を挙げる。
Xcodeのプレビュー機能
開発体験として特に良かったのが、Xcode の プレビュー機能。
View のコードを書きながら、リアルタイムで UI を確認できるため、
「コードを書く → ビルド → 起動して確認」という往復がほぼ不要になる。

React Native の場合は Storybook を用意するケースが多いが、
準備コストなしでここまで快適に確認できるのは Xcode の強みだと感じた。
クロージャで直感的なコードが書ける
React で Button コンポーネントを使う場合、例えば以下のように書く。
<Button title="保存" onPress={() => save()} />
同じことを SwiftUI で書くと、次のようになる。
Button("保存") {
save()
}
実際には以下のようなコードだが、
Button("保存", action: { save() })
SwiftUI では条件を満たすとクロージャの一部を省略できるため、
結果として非常にシンプルで読みやすい記述になる。
View に対して action が一つだけ存在するケースでは、
React よりも直感的に書けると感じた。
標準機能だけで完結する開発体験
React Native や Flutter では、
- iOS / Android の両対応
- 各プラットフォーム差異の吸収
が前提になるため、どうしてもサードパーティライブラリへの依存が増えがちになる。
一方 SwiftUI は Apple のファースト環境であり、
- 標準コンポーネントが充実している
- OS との統合が自然
- 「余計なことを考えなくていい」場面が多い
といった点で、細かな開発体験の差を強く感じた。
まとめ
『達人プログラマー』に 「毎年新しい言語を一つ学ぶ」という話が出てくるが、今回 SwiftUI を触ってみて、その意味を実感できた。
当面は、SwiftUI 周りの記事を書いていこうと思った。