Swift

SwiftUI.SectionのFooterの末端要素を画面下端にalignさせるテク

これは はてなエンジニア Advent Calendar 2025 の20日目の記事です。 SwiftUI での List や Form で使われる Section の Footer の中で、ある要素を下端に寄せたくなったことはありませんか?要素をVStackに入れてSpacerを挟めばできるでしょうと思ってやっ…

Swift 6の `sending` キーワードについて調べた

Swift 6言語モードに移行を進めるにあたって、引数に sending がついているから Sendable にしようみたいな対応がある。 ただ sending のことをちゃんと説明できる自信がなかったので自分で理解できる範囲で調べた。 sending キーワード 提案自体は SE-0430:…

ScrollView内のButtonのハイライト挙動の変化

SwiftUI.ScrollView 内にある SwiftUI.Button のインタラクションの挙動がXcode/OSバージョンによって変わっています。調べた限りXcode 16以降からのiOS 18*1で挙動の違いがありました。 何が起きるか Xcode 16以降のiOS 18では、SwiftUI.ScrollView 内に Bu…

iOS16 から使える SwiftUI の機能をおさらいする

はてなのマンガアプリチームで GigaViewer for Apps を作っています、 id:fxwx23 です。 タイトルを見て今更?と思ったかもしれませんが、iOSのアップデートで追加される機能の多くはバックポートされていないため、アプリ側のサポートする下限のOSバージョ…

SwiftPM 6 は同時ビルド/テストを回避するために Package の .build ディレクトリをロックする

Swift version swift-driver version: 1.115 Apple Swift version 6.0 (swiftlang-6.0.0.9.10 clang-1600.0.26.2) Target: arm64-apple-macosx14.0 挙動について SwiftPM 6 (release/6.0 以降)は、同時ビルド/テストを回避するために Package の .build ディ…

Privacy report を生成できる Command Plugin を作った

その名の通り。All Swift, no dependencies. github.com Privacy report とは、アプリと利用するパッケージが収集しているプライバシー情報を要約した PDF ファイルです。 App Store の Privacy Nutrition Labels に対応しており、 このレポートを見ながらス…

【iOS】XcodeSelectiveTesting を使う際の Tips

XcodeSelectiveTesting という OSS のツールを活用して、変更箇所に依存するテストターゲットのみを実行することができます。 github.com このツールは Git の変更履歴から差分を分析してどのモジュールに対して変更があったのかを検知し、モジュール間の依…

while ループでフラグの更新を待つ時は Task.yield() が便利

Swift の Task.yield() は、非同期タスクから実行を一時停止して、他のタスクが実行されるようにするために利用するAPIです。よきタイミングでスレッドを譲ることで、CPU負荷の高い処理を効率的に実行することができたりします。 developer.apple.com この T…

コンフィグレーション生成のための静的型付き言語「Pkl」を試してみる

Vision Pro で盛り上がる最中、Apple からコンフィグレーションファイルを生成するための静的型付言語「Pkl」がオープンソースで公開されたので軽く触ってみました。 github.com 発音は "Pickle" (「ピックル?ピクルゥ?」 )だそうで、 Pickle と聞くと Py…

Swift の Optional パターンを駆使する

こんにちは。2023年7月からはてなのマンガアプリチームで働いています、id:fxwx23 です。 はてなに入社する前は React Native (TypeScript) や Go などを書くことが多かったため、 Swift を書くことは2021年の夏以来となります(!)。Swift を書くことを本…