以下の内容はhttps://fromatom.hatenablog.com/より取得しました。


Swiftの`guard`を読みやすくするコツ

Swiftのguardは非常に便利で賢い仕組みですが、その性質上 Rubyunless などと混同されてしまい、可読性が下がると誤解されがちです。

おそらく、guardを難しく感じている人はこのような読み方をしていると思います。

たしかにこれでは条件式を読解した上で、elseでその条件が否定するため難しく感じるでしょう。例えば、

guard !userClient.isLoggedIn else {
    // ログイン済み時の処理
    return
}

// 未ログイン時の処理

といったコードの場合、isLoggedIn!isLoggedInelse と読んでしまうため、「ログインして"いない"、"ではない"」みたいに否定の否定でややこしく感じます。

ここで一旦if-else構文のことを考えてみましょう。if-elseを読む時に、このような読み方はしないと思います。

シンプルに上から読んでいって、次の画像の流れになると思います。

これと同じ形で guard も読めば良いです。

これなら否定の否定は発生せず、素直に条件文を読むことができますね。

guard の性質上、すぐにelse時の処理が書かれているためそこを読んでしまいがちですが、guard という文法は「早期リターンである」ことを明示した構文です。これはdo-catch のcatch側と類似しているため、ブロック内には主に例外処理が含まれています。その前提があれば、guardを読む際には、中身を飛ばして(条件の否定をせず)読めば良くなるため、否定の否定をする必要はなく複雑さが減ると思います。

なお、本記事では簡単のために「これならifの方が良くない?」というコードサンプルになってしまっていますが、実際のコードではOptional Bindingや値チェックなどが入ってくると思います。

あわせてよみたい

開発環境現状確認2026

流行に乗り遅れてまとめました。

OS: macOS

iOSアプリエンジニアだからという理由でしかない。

ターミナルエミュレータ: WezTerm

WezTermに移行した - 詩と創作・思索のひろば を見て良さそうに感じたので移行。

長らくiTerm2を使ってきたけれど、プロファイルをImport/Exportするのがなんだかんだで面倒であった。WezTermであればLuaで設定ファイルが書けるので、Git管理がしやすくて良い。

シェル: zsh + Starship

zshに強いこだわりはなく、macOSは標準がzshなので楽なので使っている。

Starshipはtomlで設定を管理できるため、WezTerm同様git管理がしやすいのが良い。

セットアップ: Homebrew + ShellScript

Brewfileで入れられないものはないものとする。とはいえ最近ではcask経由でだいたい入ってしまう。

セットアップもシンボリックリンクを貼って、Homebrewを入れて brew bundle するだけなのでShellScriptで十分。

エディタ: VSCode

VSCodeたまにEmacs。基本的にはVSCodeだけど、たまに「これEmacsだとすぐできるな」という場面で、Emacsを起動している。

VSCodeはいろいろプラグインを入れたり設定を変えていたけど、完全にぶっ壊れてしまったのでほぼプレーン状態に戻してある。

フォント: HackGen

シンプルに使いやすいのでずっと使っている。Homebrewですぐに入れられるのも良い。

dotfiles

管理ツールは入れておらず、git管理している。

IDE: Xcode

iOSアプリエンジニアなので。まだUIKitのコードもいっぱい書いているので必要になる。すすんで使いたくはない。

ランチャー: Spotlight

アプリを起動するだけなのでSpotlight十分。設定でアプリのみが検索対象になるようにしている。

ウィンドウマネージャー

以前までBetter Snap Toolを使っていたけど、macOS標準で使えるようになったのでそちらに移行。自分がやりたいことは最大化することと横に2分割することだけなので、高機能なツールは不要。

AIコーディングツール: Antigravity

個人としての開発ではAntigravityを使っている。なんだかんだでGoogle DriveGoogle Photosにデータが増えていくため、支払がまとまって楽という怠惰な理由がメイン。

あとはChromeに専用プロファイルを作って自動操作してAgentが確認してくれる便利。簡単なWebツールやサイトを作る時に重宝する。

ブラウザ: Vivaldi

縦タブにできるので。ChromeベースなのでChrome拡張も使えるので、特段不便なく使っている。Chromeにも縦タブが来そうな気配がするので待ってる。

常用しているCLIツール

peco

ブランチの切り替え、ディレクトリの切り替え、ssh接続先の選択、git add する箇所の選択などなど。後述するghqと組み合わせて使っている。

ghq

リポジトリ管理。これを使わないと破滅し始める。pecoと組み合わせることで、当該リポジトリへの移動が非常に簡単にできる。

eza

モダンなls。見た目がきれいになるやーつ。

書き物: Obsidian

iCloud同期で使っている。WindowsiCloudもそこそこ安定してきたので、これで十分。さらっと何かを書いておけるので良い。

Kindle連携だけ入れていて、Kindleのハイライトが得られるようにしている。自動で走らせる必要も感じないので、たまに手動で同期ボタンを押す運用をしている。

ブックマーク管理: Raindrop.io

長年はてなブックマークを利用していたけど、ブックマーク検索機能の調子がおかしい状態が続いたので移行した。iOS, Chrome拡張とどこからでも簡単にブックマークできるのも当然ではあるが便利。

さらに、有料プランになるとかなり便利になる。簡単にまとめると、

  • AIサジェスト
    • ブックマークするときに「このカテゴリじゃない?」「このタグじゃない?」とサジェストしてくれる
    • あとから整理をサジェストしてくれる機能もある
  • 全文検索機能
    • ブックマークしたウェブページやPDFなどのコンテンツ全体からキーワードを検索できる
    • タイトルやタグだけでなく、ページの中身まで検索対象になって便利
  • 自動魚拓
    • ブックマークされたコンテンツ(ウェブページやファイル)のコピーを自動でRaindrop内に保存してくれる
    • 最近ホームページサービスが軒並み終了して個人サイトが死にまくっているので保険として
  • 重複検出とリンク切れチェック
    • 重複したブックマークやリンク切れを自動で検出して、整理しやすくする
    • 特に別サービスからURLをImportしたときに便利
  • 特定カテゴリのRSS
    • カテゴリをPublicにすることができて、その中でRSSも作られる
    • 我が家では育児関係の記事をブクマしたら家庭用Slackに流すようにしている
      • 「これ読んでおいて」とか言わなくても気が向いたら読んでもらえるので便利
  • リマインダー
    • あとでよむ(よまない)問題を防いでくれる

ほかにも便利な機能がいっぱいあるが、かなり「痒いところに手が届く」機能が揃っている。月額517円で、全然払っていいと思ったので契約した。

キーボード: HHKB HYBRID Type-S 雪 × 2

HHKB HYBRID Type-S 雪を "2枚" 買った。 - 文字っぽいの。 にも書いたが引き続きHHKB2枚使っている。2枚買うと高いが、これが至高で完成形なため、分割キーボードとか自作キーボードをあれこれ試して散財する可能性が排除でき、結果として安く上がる。

実現可能性が著しく低い希望としては、BluetoothではなくLogicoolのBoltで接続したい。

キーリマッパー: Karabiner-Elements

⌘単押しで英字・かなキーを送る処理だけが入っている。また、キーボードを2枚使っていると「左のキーボードでShiftを押しながら、右のキーボードでキー押下」という操作をした時に、Shift扱いにならないが、Karabiner-Elementsを入れておくとこれを処理してくれる。

その他macOSアプリ

nani!?

Webページやドキュメント全体を翻訳するのであればChatGPTなりGeminiに全部投げるのが良いが、「ここだけ何書いてるか分からん」という時に便利。Command+Jでアプリに飛んで翻訳が走るのも手軽でいい。

Xcodes

Xcodeのインストール・バージョン管理をしてくれるアプリ。もはやみんな使っていて書くまでもないやつ。

Monitor Control

Mac側で画面の明るさ調整をすると、外部ディスプレイの輝度調整をしてくれるアプリ。

DDC/CIに対応しているディスプレイであれば、Mac(やWindows)上からディスプレイの情報を設定することができる。わざわざディスプレイ側のボタンをいじって輝度設定などをしなくても、Macの輝度調整キーを押せば変わるようになる。

Macbookであれば自動で輝度調整などされるが、Mac mini + ディスプレイではディスプレイ依存になるのでこれで制御している。自分はStreamDeck経由で明るさを変えられるようにしている。

2025年の買ってよかったもの。

  • Insta360

iPhoneWebカメラ化していたけど、でかいスピーカーを導入してしまったので設置できなくなってしまった。 加えて、MTG中にiPhoneで確認したいこともたまにあり、地味に不便。専用でiPhoneを置き続けるのももったいないので、Webカメラを買うことにした。

このカメラは非常に便利だった。

まず、ディスプレイ上部に置くスタンドとカメラ本体は磁石でくっついている。これによって、カメラを左右に360度回転させることができる。 このメリットはモニターライトを利用していると活きてくる。Webカメラの多くは真正面固定なのでディスプレイの中央に設置したいが、そうするとモニターライトと場所の取り合いが発生する。2段重ねにしたりモニターライトを左右に寄せたりと、なかなか不便。

このカメラならただ磁石で固定されているだけなので、どの方向にもクルクル回せて、ディスプレイの端において自分の方向を向かせることができる。

さらに便利なのは物理的なカメラカバーがあること。

←カバーを閉じてる途中の状態|カバーが完全に閉じてる状態→

安心感がすごい。万華鏡写輪眼

画質については言うまでもなく非常に綺麗。おじさんの顔を高画質化して何が嬉しいかについては、考えてはいけない。

SOUNDPEATS CC

以前に本ブログでも紹介したが、非常に快適。

SOUNDPEATSのイヤーカフイヤホンが良かった。 - 文字っぽいの。

耳をふさがないし、つけるのも楽ちん。ケースにしまうときに左右を気にしなくて良いのも地味にストレスが減って良い。 ただ、この製品だけでなく、イヤーカフタイプの製品は軒並み「片方だけ充電できなくなった」というレビューが散見される。 多くの場合メーカーに問い合わせると交換してもらえるが、手間ではあるので気をつけてほしい。割と運っぽい。

SanDisk SSD 外付け 2TB

昔ながらの外付けHDD(電源が別で必要なやつ)が2台あり、全然使ってないくせに合わせて300GBくらい微妙にデータは入っていて、なおかつデカくて邪魔という問題があった。 これを購入してデータを全部移行して、外付けHDD2台という巨大なゴミを破棄することができて良かった。

かなり小さいので収納しやすい。

ミドリ ボックスカッター

  • ミドリ(MIDORI)

とにかくAmazonなり楽天なりを使いまくるので、段ボールを開封し続けている。 普通のカッターで角のテープを切る際には、段ボールの隙間にカッターの刃を丁寧に差し込むという丁寧な作業が必要になる。 このカッターは角を切るのに便利な形をしているので、角にあてて雑に引けば切れて便利。

天面部分のカットももちろんできる。

微妙な点としては磁力が弱めだった。ホームセンターでネオジム磁石を買って瞬間接着剤でくっつけて事なきを得た。

コジット 段ボールストッカービッグ

  • コジット

畳んだ段ボールをまとめておける商品はいくつかあるが、「じゃあそれをゴミ捨て場までどうやって持っていくか」という問題がある。ビニール紐で縛ったり、こういう↓ハンディラップで巻いたり。

そもそもその作業が面倒なので、ちょうどいいサイズの段ボール箱を解体せずにおいておいて、そこに畳んだものを突っ込むという運用をしていたが、「ちょうどいいサイズの段ボール箱が手に入らないと捨てに行く気が起きない」という問題があった。

この商品は段ボールに太い針をぶっ刺して、そのまま持ち手になってくれる。捨てたいときにブスブスさしてゴミ捨て場に持っていけば良いので非常に楽になった。

マーナ 傷が付きにくい まな板 M

  • マーナ(Marna)

エストラマーで普通の見た目のまな板を探していたが、THE プロ用なものかこれくらいしか見当たらなかった。 あとはなんか丸い。

非常に使いやすい。傷も目立たないし、フチが浮いているので持ち上げやすい。 変に「ここですりおろしもできます」という機能もついていないので、洗うのも簡単。

ちょっと重めではあるが、それによって変にズレたりしない。 ここはトレードオフだろう。刃物を使うので多少重くてもズレたりガタついたりしてほしくないので、個人的には気に入っている。

山崎実業 フィルムフック まな板ホルダー

  • Yamazaki(山崎実業)

ずっと浮かせたいなぁと思っていたので、上述したマーナのまな板購入と同時に導入した。

まな板を洗ってホルダーにしまうと下がビチャビチャになってしまう。 この問題は設置式でも浮いている式でも同じだが、浮いている方が圧倒的に下を掃除しやすい。

KATOMOKU plywood clock 22 ライトブルー

  • KATOMOKU

時計が壊れてしまったので購入。 ちょっとお高いけど電波時計なのでズレもほぼないし、なにより見た目が非常にかわいい。

ヨシカワ イイトコ Oros

  • ヨシカワ(Yoshikawa)

生姜やにんにくをちょっとすりおろしたい時に、でかいおろし金を出すのもなーと思ってたので購入。

薬味をちょっとだけおろして、さっと洗って使い追われるので便利。

マーナ Shupattoアンブレラ Plus

  • マーナ(Marna)

コンビニのビニール傘を使い続けて数年、そろそろまともな傘を買おうと思って購入。

この傘はただ閉じるだけでまとまってくれるので、最後にベルトで巻く必要がない。 中開きで止めることもできるので、使用後に乾燥させるのもやりやすい。

晴雨兼用なので夏は日傘にもなって便利だった。ただ、ちょっと重めなので日傘は晴雨兼用ではなく特化した軽いものを持ったほうが楽かも。

キャベピィ MAX

  • ののじ(nonoji)

今年はキャベツが安かった。とにかく千切りにしてしまえば様々な事に使えるので、購入。 ガチのプロによる千切りキャベツには遠く及ばないが、自分で頑張ったとの同じくらいの細さで千切りが大量に作れる。

スープしゃぶとかする時に大量に千切りを作って、もりもり食べられて最高。

BlueYeti用のマイクショックマウント

  • Etour

前まで、こんな感じ↓のショックマウントを使っていた。

  • Auphonix

これに使われているゴム紐がへにょへにょになってしまって、買い替えたいが長さとかどうしたものかさっぱりだったので、新しいものを購入。

結果として、ショックマウント自体が非常にコンパクトになったのでとても良かった。

テプラ PRO MARK SR-MK1

ずっと割引を待っていた商品がついに割引され始めたので購入。 一昔前のテプラは分かりやすさと同時にダサさを付与するものであったが、最近のテプラはかなりおしゃれに使える。

スマホアプリでデザインしてこの本体とBluetooth通信で印刷できるのだが、フォントやアイコンなども自分が用意して入れられるため非常に自由度が高い。

テプラを貼った様子(透明ラベル黒印字)

無限に遊べてしまう。

京セラ セラミックタンブラー

  • KYOCERA

もはや市民権を獲得し、みんな持っているであろう真空断熱タンブラー。 サーモスのものが有名だけど、これは京セラのものでセラミックコーティングがされている。 それによって、非常に口当たりが柔らかく、ステンレスタンブラー特有の金属感やシビシビ感が無い。

ステンレスタンブラーの口当たりや金属の味が苦手な人や、酒・コーヒーにこだわりがあってステンレスによる味の変化を避けたい人におすすめ。 ちなみに黒を買ったけど、中も真っ黒で何の飲み物を入れたのかさっぱりわからないので、白のほうがいいと思う。

condenseELD+

除湿機。主な除湿方式にはデシカント方式、コンプレッサー方式、そしてそれを合体したハイブリット方式があるが、実はコンデンス式というものがある。

コンデンス式の除湿はカンキョーが特許を取得しているため、他社は作ることができない。 コンデンス式は気温の影響を受けにくく、本体重量も軽くなるので非常に取り回しが良い。

販路も少なく、Amazonではたまーに出品される程度。楽天経由で買うのが良いと思う。 「除湿機徹底比較!」みたいな動画や記事に出てくることがほとんど無いが、昔から愛用している人がいる隠れた名品という感じ。

最近は衣服乾燥に特化したものが増えてきて、首振りとかセンサーとか様々ついているけど「部屋全体の湿度を下げたい」という時には不要な機能だった。 その点このcondenseELD+は上に向かって乾いた風を吐き出すだけなので非常にシンプル。部屋の湿度を下げたいんでね。 一応ホースで洗濯物に向けて風をあてたり、アダプタで靴の乾燥をしたりもできる。

エアコンの除湿は全然効かないか寒くなりがち。除湿機があればエアコンの冷房はそこそこにして、快適な空間で過ごすことができる。 夏場は本当にこれがあって助かった。

ニトリ デコホーム スパイスボトル

www.nitori-net.jp

塩を入れるために購入。 塩、アルペンザルツなどを使っていると高く付いてしまうし、パスタを茹でる時にお湯に入れる時など塩の味が重要ではない時に使うにはもったいなさ過ぎる。

理想としては赤い蓋の食卓塩のでかいボトルが売っていてほしかったがなさそう。

  • 食彩ネット

また、最近よく見る『南の極み』も使ってみた。

  • 南の極み

この赤い蓋であれば粒が細かい塩だが、なぜか青い蓋の中粒ばかり売っていて、赤い蓋の方を見かけない。

  • 南の極み

これはこれで便利ではあるけど、中粒の塩は取り回しが悪い。料理の仕上げで味の調整をする時に、中粒だと溶けるスピードが遅いのでしょっぱくしすぎる事故が起きやすい。

色々悩んで小粒かつ高くない塩を調べた結果、赤い蓋の食卓塩を販売している日本塩事業センターがでかい紙パック塩を販売していた。 なんならスーパーにも売っていたのに目に入っていなかった。

これはシンプルに赤い蓋のでかい版なのだが、さすがにこれをそのまま使うと量のコントロールがしにくい。 そこで、ニトリのスパイスボトルである。このボトルが便利なのはこの蓋。

引用元: https://www.nitori-net.jp/ec/product/2111200006223/?rc=rt

回転して量を調整できるし、ガバっと開くので簡単に補充もできる。

なおかつ、ふたのパーツも簡単に完全分解して洗いやすい。 塩はコンロの近くに置くので油で汚れがちだが、簡単に丸洗いできて良い。

ニトリ 【洗面・シンク下収納】 伸縮フリーラック クラネ

www.nitori-net.jp

引用元: https://www.nitori-net.jp/ec/product/8511551s/

洗面台下に棚を作れるラック。排水トラップを避けて棚を作れるし、棚の高さや横幅も変えることができる。 排水トラップ周辺に生まれるデッドスペースを破壊できるし、クラネシリーズの整理ボックスを変えば見た目も揃って快適。

山崎実業 鍋蓋 & フライパンスタンド

  • Yamazaki(山崎実業)

コンロ下の引き出しでフライパンと蓋を立てて収納するために購入。 こういった商品としてはIKEAのものが有名ではある。

www.ikea.com

ただ、IKEAのこれは伸縮をロックできないので、使い続けていると縮んでしまって使いにくかった。 一方で山崎実業のこの商品は長さを完全に固定できるため、使っていて不便がない。 しかもワイヤーを好きな位置にセットできるため、厚めのフライパンと薄い蓋をちょうどいい幅で整理することができる。

これの導入に合わせて使わないフライパンを捨てたり、蓋を複数サイズ兼用のものに変えたりしてスッキリさせた。 フライパン・鍋・蓋の収納はすぐに混沌としてしまうが、これを導入してから「いつもの場所に戻す」ことのハードルが激減して非常に快適になった。

無印良品 ルームサンダル・鼻緒

www.muji.com

室内用スリッパとして購入。いわゆる普通のサンダルタイプは足先がキュッとなって苦手だったけど、これなら快適。 履き始めは足に馴染んでいないので履きにくいが、数日で形が自分の足に合ってきて快適になる。

洗濯もできるので便利だが、、なかなか乾きにくい。 2足目を買って交互に使っている。

二重窓 DIYキット

  • 光モール(Hikari Mogol)

自分の作業机のすぐ隣が腰高窓になっている。夏場はカーテンでなんとかなるが、冬場になると隣からひんやりした空気がやってきて、足元がどんどん冷えてしまっていた。もちろん暖房効率も悪くなる。

これを解決するためにDIYで2重窓をつけた。

2重窓の様子

ホームセンターでポリカーボネート板を買って、その場でカットしてもらい、エッサホイサと持ち帰った。実際に行った作業は、レールのカットと両面テープでの貼り付けのみ。両面テープを貼る前にマステも貼ってあるので、退去時にきれいに剥がせることを祈っている。

当然ながら効果はてきめんで、冷気が流れ込んでくることは一切なくなった。デメリットとしては換気のために窓を開ける際に、2回窓を開ける必要があってちょっと面倒になる点。

ダイソー マヨケチャホルダー

マヨケチャホルダーjp.daisonet.com

マヨネーズやケチャップを冷蔵庫内で整理しやすくなるホルダー。 逆さまに保管できるため、残量が少なくなってきたときでも中身がすぐに出て便利。

一般的に使われるキューピーのマヨネーズや、カゴメのケチャップは容器が柔らかいので、どうしても冷蔵庫内で破滅したポーズになりがち。 これに差し込んでおけば、いつも同じ位置にシャッキリと収納されてくれるので冷蔵庫が破滅しなくて良くなった。

類似商品のお好みソースホルダーなども便利。

ダイソー タオルバーに掛けられる洗顔泡立てフォーマー

タオルバーに掛けられる洗顔泡立てフォーマーjp.daisonet.com

洗顔料をアワアワにできるやつ。玉ねぎのネットみたいな商品もあるけれど、この方式のフォーマーは爆速で泡ができるので非常に便利。

なおかつ、タオルバーにかけながら容器も逆さまに固定して干しておける。 保管場所にも困らないし、容器を蓋に逆さまに固定して干せるのでごちゃつかない。

Apple DeveloperのドキュメントをAIに渡しやすくするChrome拡張『Link Generator for sosumi.ai』を作りました。

sosumi.aiとは

sosumi.ai

Claude、Cursor、ChatGPT、Geminiなど、AI系ツールを用いてiOSアプリ開発をしている中で、AppleのドキュメントやHIGを渡しながらやり取りをしたい場面に多く出会います。 しかし、Apple Developerのドキュメント系ページはJavaScriptを必要としている場合が多く、AIツールがうまくページを読み込めません。

そこでsosumi.aiが役に立ちます。

sosumi.aiは、Apple DeveloperにあるドキュメントとHuman Interface Guidelinesを、AIが理解しやすいMarkdown形式に変換してくれるサービスです。 HTTP RequestとMCPの両方に対応しているため、チャット系AIでもAIコーディングツールでも利用しやすいです。

作ったもの

sosumi.aiは非常に便利ですが、HTTPとして利用する場合にはドメインの置換が必要です。

例えば https://​developer.apple.com​/​documentation​/​swift​/​array のsosumi.aiページを見たい場合は https://​sosumi.ai​/​documentation​/​swift​/​arrayドメインを置換する必要があります。

この微妙な手間を解決するためのChrome拡張を作りました。

chromewebstore.google.com

このChrome拡張を導入すると、Apple DeveloperのDocumentとHIGページにこんな感じのボタンが追加されます。

クリックするだけで、 sosumi.ai ドメインに変更されたURLがクリップボードにコピーされます。

とても便利なので是非ご活用ください。

免責事項

当該Chrome拡張ページ、そしてsosumi.aiのページにある "DISCLAIMER" をご一読の上でご利用ください。

`.safeAreaBar` を設定すると SwiftUI.TextEditorの `.focused` が動かなくなる。

環境

起きること

まずは動くコード

import SwiftUI

struct ContentView: View {
    @State var text: String = ""
    @FocusState var focus: Bool

    var body: some View {
        TextEditor(text: $text)
            .focused($focus)
            .onChange(of: focus) { oldValue, newValue in
                print(oldValue, newValue) // => (false, true)
            }
    }
}

当然ながらこのコードは動く。TextEditorをタップしてカーソルが表示されれば、focusが変更されてprintされる。

次に動かなくなるコード

import SwiftUI

struct ContentView: View {
    @State var text: String = ""
    @FocusState var focus: Bool

    var body: some View {
        TextEditor(text: $text)
            .focused($focus)
            .onChange(of: focus) { oldValue, newValue in
                print(oldValue, newValue) // => Not work
            }
            // ↓追加
            .safeAreaBar(edge: .bottom) {
                HStack {
                    Image(systemName: "globe")
                }
            }
    }
}

こうするとprintされないだけでなく、

Button("Close Keyboard") {
    focus = false
}

といった、@FocusState経由でキーボードを閉じる処理も動かなくなる。.onChange が呼ばれないわけではなく、内部的にBindingされていなさそう。

対策

@FocusState が生まれる前の古き良き手法を使うしか無い。

キーボードを閉じるには、

UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)

キーボードの表示非表示でハンドリングしたいなら

.onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification)) { _ in
    // キーボード表示時
}
.onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)) { _ in
    // キーボード非表示時
}

を使うことでなんとか迂回は可能。

感想

そもそも .safeAreaBariOS 26.0+のため、使えるアプリはかなり少なくハマることは少なそう。

同じ現象が自分の環境だけかと思って調べてみたけど、Redditでも同じ現象を話している人が居た。

ウキウキで最新APIを使って「これめっちゃ便利じゃーん」ってしてたら無駄に時間が消費されて悲しい。

さいごに

Apple Feedback Assistant経由でバグ報告はしておきました。

Package.swiftのdependenciesを文字列を使わず(タイプセーフ?)に補完を効かせながら指定できるようにする。

はじめに

よくあるPackage.swiftはこんな感じになると思う。

gist.github.com

文字列で指定をする場所が多いため、とにかくタイプミスが多発する。また、この程度の分量であればまだ良いが、規模が大きいアプリの非常に長大なPackage.swiftの中から、該当の.product.targetを箇所を探すのは非常に手間がかかる。

やりたいこと

文字列で指定せずに、

.product(.rswift),
.target(.welcome)

と指定できるようにしたい。

Productを対応する

まずは外部ライブラリから対応していく。Package.swiftにこういったコードを用意しておく。

gist.github.com

ExternalPackageProducts が分離しているので冗長な気もするが、firebase-ios-sdk のように1つのPackageに複数のライブラリが含まれていたり、R.swiftのようにライブラリとプラグインが含まれている場合に対応するには、この定義方法だと都合が良かった。

上述したコードを利用することで、最初に示した Package.swiftはこのようになる。

gist.github.com

.product(.firebaseCrashlytics) と指定でき、もちろん補完も聞くので簡単にライブラリを指定できる。

Targetを対応する

Productと同じ流れで .target も対応していく。

gist.github.com

これによって、最初に示した Package.swift はこのようになる。

gist.github.com

Pluginを対応する

gist.github.com

こういったコードを書いてあげることで、Targets内で次のように書ける。

case .welcome: .target(
    name: "Welcome",
    dependencies: [
        .product(.rswift),
        .product(.firebaseCrashlytics),
        .product(.firebaseAnalytics)
    ],
    plugins: [
        .plugin(.rswiftGenerateInternalResources)
    ]
)

TestTargetを対応する

.testTarget も同じ流れで対応できる。

private enum TestTargets: CaseIterable を新たに実装して、そこにTestたちを集めても良いし、上述した private enum Targets: CaseIterable 内部に書いても良い。 TargetとTestTargetが1対1で対応することが多いのであれば、Targetsで隣に書いてあげることで探しやすいかもしれない。 各々のプロダクトで管理しやすい場所に書くのが良いだろう。

完成品

最終的な Package.swift はこのようになる。

gist.github.com

今回のコードではenum内部で分岐をして記述しているが、これをstructに分離したりstatic letに分離することも可能だろう。

さいごに

.product(.hoge)と書けて補完も効くのは非常に便利。しかし、この方式で最も便利さを感じたのは、ProductやTargetを削除したときだった。 今までは大元を削除したとしても、その呼び出し方は

.product(name: "FirebaseAnalytics", package: "firebase-ios-sdk"),
.target(name: "Search")

と文字列で指定されているため、エラーを眺めたり検索機能で探す必要があった。この方式ではenumのcaseが消えるため、 Type 'Targets' has no member 'setting' といったエラーが出て簡単に該当箇所を探しやすくなった。

新生児育児の感想、そして育児うつ。

喉元過ぎれば熱さ忘れる。今のうちに書いておかないと、将来「子どもなんて放っといても勝手に育ちますからね。がはは。」とか血迷ったことを言いかねないので書いておこうと思う。

はじめに

育児も色々、家庭状況も色々。前提が違えば育児で大変なポイントも異なるのでざっくり書いておく。

自分は6ヶ月、妻は1年の育児休業を取得して絶賛育児中である。実家周辺に産院がないため里帰り出産はせず、退院後にすぐ夫婦二人で育児を開始した。義理の両親は車で1時間半くらいの距離なので、来てもらうことはできるがそこまで気軽ではない。

育児は大変

大変だとは聞き及んでいたので気合を入れて挑んだけれど、それでもやっぱり大変。 社会人歴も10年を超えたので今までヤバい仕事にはいくつも出会ったが、そんなものは霞んで見える。

どれだけプロジェクトが炎上しようと、ヤバい人間に振り回されようと、退勤後や休日は仕事から逃れられるし、どこかでリリースしたりプロジェクト中止になったりとなにかしらの終わりもある。ヤバいな人間に振り回されたなら、そこには明確な敵が居てくれる。 一方で育児(特に新生児期)は退勤も休日もないし、明確な終わりはなく、敵も居ない。

筆舌に尽くしがたいとはまさにこのことで、どれだけここで大変さを羅列しても完璧には伝わらない。 ハンバーグを食べたことがない人に、それを食べた時に感じる全てを言葉だけで伝えることが難しいように、育児未経験者には育児のつらさは真に理解できないだろう。 実体験と聞き及んだことには大きな乖離がある。

当然ながら「育児の経験がない者は、育児を理解できないので言及するな」という話ではない。 そんなことを言い始めれば、病気も鬱も心身的障害も老化による様々も「未経験なので無関係」となってしまう。 何事も『どれだけ学んでも当事者の実体験とは乖離があることを忘れず、それでもなお学び知り続けること』が非常に重要だ。

育児の大変さは細かい疲弊が積み重なっていく大変さだ。 寝ない、飲まない、泣き止まない、寝れない、食べられない。

授乳、おむつ、あやす。

授乳、おむつ、あやす。

授乳、おむつ、あやす。

一つ一つはそこまで大変ではないが、五月雨式に積み重なることで乗算式に大変さが増える。

例えば予防接種や血液検査で一箇所に注射を刺されるのは、耐えられる人が多い。 しかし五月雨式に全身に注射を刺され続け、それがいつ終わるかも分からなければ、頭もおかしくなるものだ。

独身の延長線上からの脱出

結婚に付随していた「家に入る」、「家同士のもの」、「養う」という感覚は、特に都市部で希薄になってきたと思う。 「男は仕事、女は家庭」という価値観も、もはや昔話になりつつある。

昨今の結婚は「自立した独身の大人ふたりが同棲生活をしている」という状態の延長でしかない。 良くも悪くも自立した大人ふたりの生活は「私とあなた」であり「わたしたち」が占める割合は少ないため、独身時代の時間感覚や金銭感覚が無意識に続いてしまうことも多い。

しかしながら、子どもが生まれると「私とあなた」が終わり、「わたしたち」が始まる。 「旅行がしたい」「飲みに行きたい」「映画が見たい」「ゲームしたい」「個人開発がしたい」「仕事をしたい」「外食がしたい」など、「私とあなた」時代では気軽に叶えられた様々な欲求は、立ち止まって考える必要がある。

これを抑え込むのがなかなか難しい。気を抜くとすぐ「銭湯に行きたいなぁ」とか「ラーメン食べに行きたいなぁ」とか「新作のゲームしたいなぁ」といった「私」の欲求が溢れ出してくる。自分の欲求を解消する為の時間は全く取れないことを頭では理解しているが、それに慣れきった心はそんなにすぐに切り替えられない。

当然ながら「自分を殺して育児にのみ邁進すべき」という話ではない。 環境が変わったのでまずそれに合わせるという当たり前の行動が必要になる。 例えば通勤に片道30分かかる家から1時間かかる家に引っ越したのに、前と同じ時間に起きていたら遅刻必至だ。 30分早く起きないといけないし、そのためには30分早く寝るか睡眠時間を削るしかない。

「わたしたち」の暮らしに慣れてくると、段々と「私」の時間もとれるようになってくる。もし子どもが生まれた後に何よりも先に「私」を守り抜こうとすると「私とあなた達」になりかねないので、まずは「わたしたち」の暮らしを丁寧に構築していくのが良いと感じた。

陰キャのメリット

長らく職場から離れ、人間たちと会話することも減った。育児の諸先輩方は「大人と話したくてたまらん」と言っていたので自分もそうなるかと思っていたが、現時点では存外大丈夫だった。 そもそも根が陰キャであることと、コロナ禍で人と会わない生活に慣れていたこともあり、インターネットとパソコンがいじれていれば暮らしていけるようだ。 これはなかなか良いメリットであった。育児中に「じゃあ飲み行ってくるんで」とかは不可能なのだが、それが最もストレス解消につながる人であれば非常につらかっただろう。

一方で会社で労働をすることで、強制的に対人コミュニティーに入っていたのは重要に感じた事例がある。育休期間中にちょうど参院選があったため、ニュースや党首討論でも見ておくかとYouTubeを徘徊していた(深夜はTVがやっていない)。その結果、おすすめ欄が政治まみれになってしまった。視聴数を稼ぐために「スカッと」「義憤」「正義の鉄槌」「隠された真実」な方向でサムネイルも作られているので、どうしても気になってしまう。 XはXでかなり前から「怒りはバズる」方向で、世の中の悪い面だけが拡散されているので、それが目に入るようになっている。 こんなものばかり見ていては、すぐに「真実()を知る正義の小市民」のできあがりだ。

『小人閑居して不善をなす』とはよく言ったもので、家の中で情報収集(に錯覚するインスタントコンテンツの暴飲暴食)を繰り返していると、思想は歪み先鋭化してしまう。

思想のズレを調整するためにも、様々な人間と会話していく機会を持たなければ危ないと感じた。

若ければ体力があるが

とかく育児は体力が必要だ。この体力はムキムキマッチョで重いものがいっぱい持てるという体力ではなく、『徹夜してもデバフが小さい』という意味合いが大きい。もちろんムキムキマッチョで楽になることも多い。よく中年が「徹夜できなくなった」と話しているだろう。学生時代であれば徹夜で一夜漬けしてテストに挑むなんてこともしていたが、加齢に伴って徹夜翌日の脳みそはパッパラパーになって、なにもできなくなる。

育児は24時間365日続く。24時間働けますか?状態。1日のほとんどの時間が抱っこしてあやしているか、ミルクを飲ませているか、おむつを替えていることになる。運が良ければ大人が食事をしたり家事をしたり寝たりできるが、結局運なので短い睡眠でも動き続けられる体力が非常に重要になる。

「一ヶ月検診が終わると楽になる」「三ヶ月検診が終わると楽になる」「腰がすわると楽になる」と先輩たちはバラバラのことを言ってくるが、これは嘘をついているのではなく「子どもによる」ので参考にできないのだ。つまるところ全て運。よそはよそ、うちはうち。祈りと気合と根性でカバーするしかない。

ここまで書くと、若くて体力があるほうが有利に感じるが、実はそうでもない。もし自分が今25歳の新卒で子どもが生まれ、産休に入っていたらこんなことを考えるかもしれない。

  • 世間ではAIコーディングが流行っているがそれを勉強する暇が無い
  • 同期が新規プロジェクトに参加して楽しそうにしているが自分はなにもできない
  • 同期が出世して昇給しているが自分は据え置きのまま
  • 会社で人の動きがあったり新プロジェクトが始動したり制度が変更されたが何もわからない

などなど、世間や会社の動きからどんどんと取り残されていき、自分が無価値な人間になってしまうかもしれない恐怖心が芽生えてくるだろう。1ヶ月程度の育休であればまだしも、半年や1年といった長期間の育休で労働から離脱してしまうと、その不安感は非常に大きくなる。

特にITエンジニアという職種では、新しい技術・ライブラリ・ノウハウが次々と出てきては栄枯盛衰しているため、常に学び続けることがよしとされている。周りの人間がどんどんと先を走っている様子を、自分だけ立ち止まって見ている焦りは大きい。

25歳くらいで高収入でキャリアも順調であればもっと楽なのかと思いもするが、そうなると今度は「仕事が楽しくてしょうがない」時期でもあるので、それはそれでむず痒いだろう。

仕事は全部やらない

自分は社長や役員のような決裁権を持った人間ではなく、ただの雇われなので居なくなっても問題ない。とはいえカバーしている労働領域はあるので、なるべく早く引き継ぎをしたり、仕事をなくしていった。

出産後にすぐ育休をとる予定だったため、予定日1ヶ月前(いわゆる臨月)からは「もうすぐ消え去りますよ〜役に立たない人ですよ〜」という雰囲気を出していき、いなくても良い人になるように各種引き継ぎやタスクの調整をした。出産は「予定日です。はい誕生。」とはならない。早産になって予定日より1ヶ月以上早く産まれることもあれば、予定日を過ぎてもなかなか産まれないこともある。大きなタスクを持ったまま突然消え去ってしまっては迷惑がかかる。

また、先輩各位が育休中でも頑張って仕事を回そうとして、重大なボトルネックになってしまった事例も見たことがあるため、そうはならないように気をつけた(つもり)。中途半端に手や口を出して家庭も仕事もズタボロになるよりも、育児にフルベットして仕事では「もういない人」として扱われたほうが良いと考えていた。

現時点ではやらないといけない労働は特にないため、安心して育児に集中できている。たまにチャットを覗くと任せた人たちが期待以上に動いてくれているので「たすかる〜」と安心していられる。また、半年の育休をさらっと取れるのは、先輩パパ各位がガンガン育休を取ってくれていたおかげなので、この点も非常にありがたかった。1年育休をとった前例もあるし、全く問題なかったが自分が「仕事戻れなくない?」と日和ってしまった。

これは副次的効果ではあるが、仕事から長期間離れられたのは良かった。多くの人が「1ヶ月とかドカッと休みたい〜」と言いながら、(申請すれば休めるのにも関わらず)休むことなく、なんなら休んでいても暇になって結局仕事をしてしまう労働大好き日本で、仕事から長期間離れられる稀有な時間を得られた。ここまで読んできた読者からすれば、これは休みではないことはご理解いただけていると思う。しかし、育児に翻弄されることで「有給休暇だけどやることないから、仕事関係で触りたかった技術調査でも」などと思うヒマがなくなることで、強制的に仕事から離れることができた。

そろそろ仕事 "のみ" から充実感と幸福と自己表現を得るのはマズイと考えていたので、良い機会となった。

両親は万能薬ではない

両親、つまるところおじいちゃんおばあちゃんのサポートが得られるなら得たほうが良い。しかし、万能薬ではない。

もしあなたの両親が30歳のときにあなたを産み、あなたも30歳で子どもを産んだとしたら、両親はもう60歳。還暦で赤いちゃんちゃんこ。人によっては定年を迎えて年金ぐらしの穏やかな老後が始まるような人々を、育児という過酷な戦場に呼びつけるのは流石に酷に感じる。

なおかつ両親の育児知識は30年前のものになる。例えば、2007年以前は粉ミルクを溶かすお湯の温度は40〜60度程度が一般的だったが、現在では70度以上のお湯で溶かすことが推奨されている1。こういった差異が本当に細かく大量にある上に、30年のブランクは大きい。ママ・パパはある程度情報が同期されているが、これをおじいちゃんおばあちゃんにも伝えていくのは非常に手間がかかる。

育児を手伝ってもらうというよりは、大人の頭数を増やして負担を分散させると考えたほうが良い。たとえば、

  • ご飯を作ってもらう
  • 作り置きをしてもらう
  • 哺乳瓶を洗って消毒してもらう
  • 野菜類を切って冷凍ストックを作ってもらう
  • ベビー用品や食材・日用品の買い出しに行ってもらう
  • 手が回らない細かい掃除をしてもらう
  • 段ボールを畳んでまとめてもらう

などの「ママパパでもできるが、ママパパである必要がない」作業をやってもらうのが良い。これだけでも非常に楽になる。ここらへんは家事代行を使うという手もあるが、(関係性にもよるが)自分の両親のほうが気楽に依頼しやすい。

育児うつにはなる

パパママともに10%前後が育児うつ(産後うつ)になる可能性がある。つまりどちらかがなる可能性は19%ほどあるので、めちゃくちゃ確率がたかい。5組のパパママがいれば1人はかかる。

かくいう自分も育児うつの入口に立っていたと感じる。ただし、病院で診断は受けていない(し病院に行く暇も元気もなかった)ため、「育児うつでした」とは言えない。そのため、ここから先の話は「育児うつっぽかったな」と自己判断している人間の記録として読んでほしい。

症状としては、

  • 喋るために口を動かすのが面倒になる
  • 言葉が出てこなくなりうまく喋れなくなる
  • 咀嚼が面倒になる
  • やる気が出ない
  • イライラする
  • 頭が回らず部屋の真ん中で「何やるんだっけ?」と立ち尽くす
  • 自己肯定感(育児の役に立っている感)がなくなる
  • 寝れない
  • 思考の速度が会話に追いつかないので矢継ぎ早に話されるとパニックになる
  • 子どもが死んだらどうしようという不安が常に付きまとう
  • (妻いわく)笑顔が減った
  • (妻いわく)口数が減った

などが挙げられる。ちなみに、カップヌードル、卵かけご飯、カレーなどはほとんど咀嚼しなくても丸呑みでカロリーが接種できるので非常に便利。

原因としてはまず昼夜逆転生活がある。新生児期はなにが起こるか分からなくて不安だったので、朝から夕方まで妻が、夕方から朝までは自分が子どもを見守っていた。うっかり寝てしまっては困るので、栄養ドリンクとキューピーコーワゴールドαプレミアムとコーヒーを飲み続けて、朝6〜7時に妻を起こして交代する。そこから寝るわけだが、外は明るくなり交通量も増えてトラックやバイクの音は鳴り響き、接種し続けたカフェインも効いている上に、泣き声の幻聴も聞こえるしで、すぐには寝られずなんだかんだ9時頃に寝られる。眠りも浅いので泣き声や妻に呼ばれる幻聴で何度か中途覚醒しつつ、起きるのは15時〜17時頃になるため、すぐに日が暮れ始めて夕方が始まる。こうして、日光を避けた生活が1ヶ月半続いた。

また、父親は育児に関して外部から肯定されるタイミングがほぼ無い。母親は様々な検診や面談などで「おっぱいちゃんとあげられてますよ」や「抱っこはこうやって〜、うんうん上手ですよ。」のように助産師などから直接「あなたの育児は正解です」と肯定してもらえる。一方で父親はこういった検診や面談には基本同席することができないし、なにか言われたとしても「育休を取得していて偉いですね」くらいだ。育休取得率が上昇している昨今からすれば肯定としては弱すぎる。これは「年間5日の有給休暇を取得していて偉いですね」と言われるのと同程度には何も感じない言葉だった。

加えて、よく言われる「産後のママさんは交通事故にあったのと同じくらいなので、パパさんがしっかりサポートしましょう」という言葉が意図せぬ呪縛として父親を追い詰めていく。どれだけ父親が辛くなってきても「それでも母親のほうが大変なのだから、弱音を吐くなんて言語道断」だと考えてしまう。どのような負荷にどれだけ耐えられるかは人それぞれ。ハードな労働に耐えられる人が必ずしも育児の大変さに耐えられるわけではないし、その逆も然り。ちなみに、こういった言葉を伝えなければ真剣にならない父親が多かった結果であることは理解しているが、やる気満々な父親には逆に呪縛としてのしかかるのは、なんとも言えないままならなさを感じる。

ここまでをまとめると、自分がやっている育児が正しいか分からず、まともに寝られず、日光も浴びず、へとへとになっているが「それでも妻のほうが大変だから甘えてはいけない」と頑張り続けた結果おかしくなった。

希死念慮は一切なかったし育児のルーチンワークはできていたが、どうにもやばいということで妻から「泊まりで銭湯に行ったりしてリフレッシュしてきたら」と言われて出かけることになった。この頃の精神状態では出かけるのが面倒すぎたので「家で1日寝かしてもらえれば大丈夫だし、ワンオペでなんかあったら心配。」と伝えたが、「良いから外に行け」と譲らなかったので、渋々出かけることにした。

自分は長野という山の中で生まれ育ったので、山っぽいところに行くと回復しやすい。東京西部の自然が多い地域なら電車でも行きやすいので、武蔵五日市に出かけることにした。相変わらずホテルではよく寝られなかったが、きれいな川や山を眺めたり、温泉に行くことでかなり回復した。重い腰をあげて出かけてよかったし、提案してくれた妻には感謝しかない。さすが優秀な妻である。

ちなみに、こういった状態では産後ケアのショートステイなどを活用するのをおすすめする。我が家も利用しようと3週間ほど抽選申込を続けたが、倍率が高くて全く抽選に当たらなかったため自費での休息に切り替えた。

そんなこんなで、なんとか小康状態になりつつ過ごしていたが、生後2ヶ月ぐらいから子どもが夜にガッツリ寝るようになった。これにより自分も深夜3時頃には寝られる(なんと部屋が真っ暗になる!)ようになり、昼頃には起きて日光が浴びられるようになった。また、うちの子は夕方に寝ると全然起きない2ので、夜間見守りをしながらゲームや映画などで息抜きをする余裕ができたこともメンタル回復に大きく寄与した。

今では育児のルーチンも安定してきたので、元気に暮らしている。

さいごに

ひたすら育児の大変さが続いてしまった。記事を書いていく中で「子作りを考えている人やこれから育児が始まる人に、無意味な恐怖を与えてしまうのでは」とか「このような小規模なブログでは杞憂すぎでは」とか考えたが、「子どもが可愛くて毎日幸せハッピー」と外面を整えて、きれいな部分だけ発信していくのも違う気がしたので公開することにした。

子どもはかわいい。とにかくかわいい。かわいいから大変さが苦にならないわけではないし、大変だからかわいくないわけでもない。たいそうかわいく、すこぶる大変である。

聞くところによると「赤ちゃんはみんなかわいい」と思う人と、「自分ちの子はかわいいが、他所の子は別に」と思う人がいるらしい。自分は後者で、他所の子は「子どもだなぁ」くらいしか感じないが、自分の子供はとてもかわいい。

グラグラだった首が座り、寝返りができるようになり、うつ伏せでよだれを垂らしながらひたすらくるくる回って地獄のルンバになり、手で足を掴んでしゃぶりまくっていたりと、日々の成長を隣で見ていられる事はこの上ない幸福だと感じる。朝起きて様子を見に行くと、こちらを向いて「パパだぁ」と笑う様子は脳みそがとろけて、鼻からとろりと流れ出すほどであり、親バカとはこうやって脳が流れ出した結果生まれるのだと身にしみて感じる。

さて、とても長い記事になってしまったので、最後に俵万智さんの「未来のサイズ」から一首引用して終わる。

最後とは 知らぬ最後が過ぎてゆく その連続と思う子育て

ここまで長い記事を最後まで読んでいただいて、ありがとうございます。


  1. 「乳児用調製粉乳の安全な調乳、保存及び取扱いに関するガイドライン世界保健機関国連食糧農業機関、2007年 [PDF]
  2. 夜泣きがひどいよりは楽ではあるが、これはこれで夜間授乳時に起こすのに難儀する。



以上の内容はhttps://fromatom.hatenablog.com/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14