Scia(シア、/ˈʃi.a/)はストリーミングAPIに対応した、手触りの良いiOS向けMastodonクライアントです。
TestFlight: https://testflight.apple.com/join/6g69MEf8
- ストリーミングはもちろん、ストリーミングを見ながら投稿や反応、リンク先の閲覧ができる
- 通知タブを開かなくても、自分への反応がステータスバーの場所に流れて気づける
- バックグラウンドからの復帰や再接続のときも取りこぼしや重複なくタイムラインがつながる
- HIGに沿った美しく滑らかなインターフェイス
- アニメーションの途中でも操作を受け付けどこで止めても破綻しない
- 必要なリクエストだけを送りスペックの低いサーバーでも快適に使える
- iOS 26以降(27以降での使用を推奨)
- 接続先としてMastodon 4.7の最新版でのみ動作を確認
必要なもの:
- Xcode 26以降
- XcodeGen
- SwiftLint(
make lintとmake checkで使う) - WebPの
cwebp(READMEのアイコンを描き出すmake readme-iconsと、スクリーンショットを撮るmake readme-screenshotsで使う)
brew install xcodegen swiftlint webpScia.xcodeprojはコミットしていないので、project.ymlから生成します。
make generateシミュレーター向けには、そのままビルドできます。
make build実機で動かすときは、Config/Local.xcconfigに署名のチームを書きます。このファイルはコミットしません。
DEVELOPMENT_TEAM = <チームID>
Packages/SciaCore: UIに依存しないロジック(モデル、APIクライアント、ストリーミング、タイムラインの状態管理)UIKit/AppKit/SwiftUIをimportしないApp/Sources: iOSアプリ(UIKitライフサイクル)project.yml: XcodeGenの定義
make test-coreSciaCoreのテストをmacOS上で走らせます。シミュレーターは要りませんが、macOS 26以降が必要です。
make test SIM='iPhone 16 Pro'アプリのテストをシミュレーターで走らせます。make checkは、lint、SciaCoreのテスト、ビルド、警告の検出をまとめて行います。
Sciaは次のクライアントから多くの影響を受けています
- SubwayTooter
- Metatext
- iMast
- DAWN
- Mona
- twitcle plus
ソースコードはMIT No Attribution(MIT-0)で公開しています。ただし、名称とアプリアイコン・ロゴは除きます。
App/Resources/Twemoji.ttfは、Twemojiの絵(Copyright Twitter, Inc and other contributors、CC BY 4.0)からTools/build-twemoji-font.pyで作った書体です。
撮影用のシナリオのアイコンと写真の模様を描くApp/Sources/Debug/Scenario/ScenarioArtwork.swiftは、Boring Avatars(Copyright (c) 2021 boringdesigners)の描き方を移したもので、ファイルの頭に載せたMIT Licenseが適用されます。
「Scia」という名称と、アプリアイコン・ロゴ(App/Resources/AppIcon.icon、App/Resources/AppIconLight.icon、そこから描き出したdocs/images/icon-*.webp)は、MIT-0の対象に含めません。
ソースコードは自由に改変・再配布できますが、改変したものやビルドしたものを配布するときは、Sciaとは別の名称とアイコン・ロゴに差し替えてください。作者が作ったものと見分けられるようにするためです。自分の端末で動かすためにビルドするだけなら、差し替えなくて構いません。



