SwiftUI の Text がなぜか省略されてしまう問題とそのレイアウトプロセスのデバッグ

こんにちは、 はてなエンジニア Advent Calendar 2024 の12日目です。昨日は id:tomato3713 さんの Goによる独自スクリプトでテストケースを記述するテスト手法紹介 でした。 最近仕事で iOS アプリを作っていて、 SwiftUI の Text の文字列がなぜか省略され…

他のモジュールの型を勝手に protocol に準拠させるのは避けたほうがよい

以下のプロポーザルに書かれている問題を踏んでしまっていたのでまとめておきます。 github.com どういうことか 他のモジュールの型を勝手に protocol に準拠させる というのは例えば以下のような実装のことで、これをできるだけ避けるべきということです。…

習慣化できないことの鬼なので習慣化のための iOS アプリを作った

なぜ作ったか みなさんは習慣化していますか?わたしはしていません。日々なにも積み重ねず過ごして、いつの間にか人生が終わっていそうな気がしてきたので、ひとまず習慣化のための iOS アプリを探して評判の良さそうなものをインストールしてみました。 も…

Xcode が Swift Package をビルドするとき #if DEBUG が適用されるかは Build Configuration の名前で決まる

Swift Package の build configuration には debug と release の2つがあります。 developer.apple.com debug の場合は compilation condition DEBUG が有効になり、 #if DEBUG の分岐を通るようになります。これを利用して、例えばデバッグログの表示など…

これからは RSS の時代かと思って iOS / macOS で動く RSS リーダーを作った

タイトルは嘘で、これからは RSS の時代とはとくに思っていないのですが RSS リーダーは作りました。まだリリースしたばかりで不具合がありそうですが、まったく使えないということもないはずなのでよかったら使ってみてください。 iOS 版 : ‎「Riverside - …

Core Data / SwiftData の iCloud 同期を実行して完了してからなにかする

このエントリのタイトルだけだとイメージがつきづらいかもしれないので、まず「Core Data / SwiftData の iCloud 同期を実行して完了してからなにか」したくなる状況について紹介しておきます。 最近 Core Data の iCloud 同期を利用した RSS リーダを作って…

Unified Logging の出力をアプリから見られるようにする

Apple プラットフォームのアプリには Unified Logging というログの仕組みがあります。Unified Logging のログはユーザのデバイスに溜まるだけで開発者が見られるわけではないため、サーバサイドアプリケーションのログと比べると役立つ場面は限定的です。し…

Core Data / SwiftData の iCloud 同期が実行されていることを可視化する

iOS / macOS アプリのデータベースに Core Data や SwiftData を使うと、 iCloud 同期を無料かつ簡単に使うことができます。ちょっとやってみるレベルの個人開発だと絶対に自分でサーバーを管理したくないので、複数デバイスからまともに使えるアプリを作ろ…

Mac のメニューバーで PR の状況を把握する

仕事をしていると PR のレビュー依頼に一瞬で気づきたいので、メールや slack 連携などの通知を設定することになると思う。ただ、それだけだと一瞬で気づいたけど今は手が離せないので10分後くらいに見よう...と思ったまま忘れてしまうということが起こるの…

個人開発の SwiftUI アプリのアーキテクチャを MVVM から MV にした

概要 SwiftUI Advent Calendar 2023 の 21 日目です。 最近趣味で iOS の podcast クライアントを SwiftUI で作っているのですが、やってみると podcast クライアントはアプリとしてそれなりに難しいことがわかってきました。作っているうちにどんどん状態管…