<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Hironobu Iga — ソフトウェアエンジニア</title><description>東京を拠点に働くソフトウェアエンジニアの個人サイトです。AI エージェントの認証・認可、クラウドアーキテクチャ、モバイルアプリ開発について書いたもの・話したものをまとめています。</description><link>https://iganin.dev/</link><language>ja-JP</language><item><title>LLM 推論のプリフィルとデコード</title><link>https://iganin.dev/ja/articles/llm-prefill-decode/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/llm-prefill-decode/</guid><description>一般的な LLM の推論が持つプリフィルとデコードという 2 つのフェーズについて、なぜ片方は計算が、もう片方はメモリの読み出しがボトルネックになりやすいのかを、KubeCon + CloudNativeCon Japan 2026 のセッションをきっかけに整理しました。</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><category>LLM</category><category>推論</category></item><item><title>MCP のツール呼び出しを AuthZEN で認可する COAZ-MCP</title><link>https://iganin.dev/ja/articles/authzen-coaz-mcp/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/authzen-coaz-mcp/</guid><description>MCP のメッセージを AuthZEN の判断要求に写すワーキンググループドラフト COAZ-MCP について、解決しようとしている課題、既定マッピングと宣言マッピングの仕組み、現在のステータスを整理しました。</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>AuthZEN</category><category>MCP</category><category>認可</category></item><item><title>認可の標準仕様 AuthZEN を調べた</title><link>https://iganin.dev/ja/articles/authzen-introduction/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/authzen-introduction/</guid><description>KubeCon + CloudNativeCon Japan 2026 で初めて知った認可の標準仕様 AuthZEN について、解決しようとしている課題、OIDC との関係、現在のステータスを調べて整理しました。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AuthZEN</category><category>認可</category><category>セキュリティ</category></item><item><title>SwiftUI で戻るボタンの文字を消す</title><link>https://iganin.dev/ja/articles/swiftui-hide-back-button-title/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/swiftui-hide-back-button-title/</guid><description>navigationBarBackButtonHidden で消すと、スワイプ戻しと長押しのスタック表示まで失われる。UINavigationBar の appearance をいじるほうが安全。</description><pubDate>Mon, 26 Feb 2024 00:00:00 GMT</pubDate><category>SwiftUI</category><category>iOS</category></item><item><title>SwiftUI で、要素数が少ない場合も考慮したチャットライクな画面を実装する</title><link>https://iganin.dev/ja/articles/swiftui-chat-like-layout/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/swiftui-chat-like-layout/</guid><description>「最新が下に積まれる」「要素が少ないときは上に詰まる」という、チャット画面に期待される 2 つの要件を SwiftUI でどう両立させるかです。</description><pubDate>Wed, 21 Dec 2022 00:00:00 GMT</pubDate><category>SwiftUI</category><category>iOS</category><category>レイアウト</category></item><item><title>ARKit の Face Tracking の結果を obj ファイルとして出力する</title><link>https://iganin.dev/ja/articles/arkit-face-tracking-to-obj/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/arkit-face-tracking-to-obj/</guid><description>ARFaceTrackingConfiguration で取得した ARFaceGeometry を MDLAsset に変換し、export(to:) で obj 形式に書き出す手順です。</description><pubDate>Sat, 18 Dec 2021 00:00:00 GMT</pubDate><category>iOS</category><category>ARKit</category></item><item><title>Kotlin で BCrypt を使ってパスワードをハッシュ化する</title><link>https://iganin.dev/ja/articles/kotlin-bcrypt-password-hashing/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/kotlin-bcrypt-password-hashing/</guid><description>パスワードは暗号化ではなく Salt 付きのハッシュ化で保存すべき理由と、BCrypt を選ぶと Salt 用のカラムが要らなくなる話です。</description><pubDate>Thu, 09 Sep 2021 00:00:00 GMT</pubDate><category>Kotlin</category><category>セキュリティ</category></item><item><title>Flutter の GraphQLClient でキャッシュの永続化を行う</title><link>https://iganin.dev/ja/articles/flutter-graphql-cache-persistence/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/flutter-graphql-cache-persistence/</guid><description>HiveStore を使って GraphQL クライアントのキャッシュを永続化する方法と、初期化が非同期であることから来る Riverpod 側の面倒をどう避けるかです。</description><pubDate>Fri, 03 Sep 2021 00:00:00 GMT</pubDate><category>Flutter</category><category>GraphQL</category><category>Riverpod</category></item><item><title>Riverpod の Provider のキャッシュをログアウト時に効率的に削除する</title><link>https://iganin.dev/ja/articles/riverpod-cache-clear-on-logout/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/riverpod-cache-clear-on-logout/</guid><description>ログアウト時に値を変更する Provider を 1 つ用意し、各 Provider の初期化でそれを watch させることで、消し忘れを構造的に防ぐ方法です。</description><pubDate>Thu, 02 Sep 2021 00:00:00 GMT</pubDate><category>Flutter</category><category>Riverpod</category><category>セキュリティ</category></item><item><title>Flutter の Navigation 2.0 と AutoRoute で画面遷移時に認証状態を確認する</title><link>https://iganin.dev/ja/articles/flutter-auto-route-auth-guard/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/flutter-auto-route-auth-guard/</guid><description>auto_route の AutoRouteGuard を使い、画面遷移のタイミングで認証状態を確認して未認証なら認証画面へ送る方法です。riverpod で DI している場合も扱っています。</description><pubDate>Tue, 24 Aug 2021 00:00:00 GMT</pubDate><category>Flutter</category><category>認証</category><category>Riverpod</category></item><item><title>React で GraphQL と Sentry を組み合わせるときに気をつけること</title><link>https://iganin.dev/ja/articles/react-graphql-sentry/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/react-graphql-sentry/</guid><description>GraphQL のリクエストは全て同一 URL の POST になるため Sentry 上で区別がつかなくなる問題と、apollo-link-sentry での対処、そして出力範囲の注意点です。</description><pubDate>Wed, 26 May 2021 00:00:00 GMT</pubDate><category>React</category><category>GraphQL</category><category>Sentry</category></item><item><title>API における HTTP メソッドの分類と意味</title><link>https://iganin.dev/ja/articles/http-methods-in-api/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/http-methods-in-api/</guid><description>GET / POST / PUT / PATCH / DELETE / HEAD をリソース操作の観点で分類し、とくに紛らわしい POST・PUT・PATCH の違いを整理した備忘です。</description><pubDate>Mon, 10 Aug 2020 00:00:00 GMT</pubDate><category>API 設計</category><category>HTTP</category></item><item><title>Kotlin の Exposed でテーブル定義を実装する</title><link>https://iganin.dev/ja/articles/kotlin-exposed-table-definition/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/kotlin-exposed-table-definition/</guid><description>Ktor と組み合わせてよく使われる ORM である Exposed で、テーブル定義をどう書くかをまとめた記事です。</description><pubDate>Mon, 13 Apr 2020 00:00:00 GMT</pubDate><category>Kotlin</category><category>Exposed</category><category>Ktor</category></item><item><title>ユニットテストについての少考</title><link>https://iganin.dev/ja/articles/unit-test-consideration/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/unit-test-consideration/</guid><description>ユニットテストの効用をリグレッション防止・ドキュメンテーション・内部構造の洗練の 3 つに分けて整理し、実務でどこまで書くかを考えたものです。</description><pubDate>Thu, 26 Dec 2019 00:00:00 GMT</pubDate><category>設計</category><category>テスト</category></item><item><title>Swift 5.1 から Optional な enum の switch が書きやすくなった</title><link>https://iganin.dev/ja/articles/swift-optional-enum-switch/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/swift-optional-enum-switch/</guid><description>Swift 5.0 までは .some(.daily) と書く必要があったところが、5.1 では .daily と直接書けるようになりました。</description><pubDate>Sun, 08 Dec 2019 00:00:00 GMT</pubDate><category>Swift</category></item><item><title>iOS 13 で system フォントが Times New Roman になることがある</title><link>https://iganin.dev/ja/articles/ios13-system-font-times-new-roman/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/ios13-system-font-times-new-roman/</guid><description>UITextView などで system フォントを指定していると実行時に Times New Roman へ変わる事象。コードから明示的に UIFont を指定すると回避できます。</description><pubDate>Sun, 10 Nov 2019 00:00:00 GMT</pubDate><category>iOS</category><category>UIKit</category></item><item><title>Push 通知に必要な DeviceToken の文字列取得</title><link>https://iganin.dev/ja/articles/push-notification-device-token/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/push-notification-device-token/</guid><description>didRegisterForRemoteNotificationsWithDeviceToken で渡ってくる Data を String に変換する方法と、iOS 13 での description の変更について。</description><pubDate>Mon, 14 Oct 2019 00:00:00 GMT</pubDate><category>iOS</category><category>Push 通知</category></item><item><title>Swift の switch と Kotlin の when を対比する</title><link>https://iganin.dev/ja/articles/swift-switch-kotlin-when/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/swift-switch-kotlin-when/</guid><description>iOS 中心にやっていると Kotlin の when の書き方を毎回思い出すことになるので、両者を並べて比較したメモです。</description><pubDate>Wed, 14 Aug 2019 00:00:00 GMT</pubDate><category>Swift</category><category>Kotlin</category></item><item><title>Swift の ArraySlice について</title><link>https://iganin.dev/ja/articles/swift-array-slice/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/swift-array-slice/</guid><description>部分配列を取ると Array ではなく ArraySlice が返る理由。要素をコピーせず元の配列への view を返しているためです。</description><pubDate>Fri, 15 Feb 2019 00:00:00 GMT</pubDate><category>Swift</category></item><item><title>Swift における Void と空 Tuple</title><link>https://iganin.dev/ja/articles/swift-void-and-empty-tuple/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/swift-void-and-empty-tuple/</guid><description>Void は空 Tuple の typealias である、というところから出発して、両者がどう振る舞うかを整理したメモです。</description><pubDate>Tue, 05 Feb 2019 00:00:00 GMT</pubDate><category>Swift</category></item><item><title>Xcode の Build Phase RunScript で xcfilelist を使う</title><link>https://iganin.dev/ja/articles/xcode-xcfilelist/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/xcode-xcfilelist/</guid><description>Carthage 利用時に Input Files が肥大化する問題を、Xcode 10 で追加された Input File Lists（xcfilelist）で整理する方法です。</description><pubDate>Thu, 20 Sep 2018 00:00:00 GMT</pubDate><category>iOS</category><category>Xcode</category><category>Carthage</category></item><item><title>プルリクエストのコメントにはラベルバッジをつける</title><link>https://iganin.dev/ja/articles/pull-request-comment-labels/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/pull-request-comment-labels/</guid><description>コメントの温度感が伝わらない問題を、must / imo / ask / nit pick といったラベルで解決し、さらにバッジ化とコマンド化まで進める話です。</description><pubDate>Sun, 15 Jul 2018 00:00:00 GMT</pubDate><category>コードレビュー</category><category>GitHub</category></item><item><title>GDPR 対象国の判定を iOS アプリ側で行う方法を考える</title><link>https://iganin.dev/ja/articles/gdpr-region-detection-ios/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/gdpr-region-detection-ios/</guid><description>EEA 加盟国にいるかどうかをアプリ内でどう判定するのが妥当か、いくつかの選択肢を比べた考察です。</description><pubDate>Mon, 28 May 2018 00:00:00 GMT</pubDate><category>iOS</category><category>GDPR</category><category>プライバシー</category></item><item><title>Codable で CamelCase ⇄ SnakeCase の変換を行う</title><link>https://iganin.dev/ja/articles/codable-camel-snake-conversion/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/codable-camel-snake-conversion/</guid><description>JSONDecoder の keyDecodingStrategy / keyEncodingStrategy を使い、CodingKey を手書きせずに命名規則の差を吸収する方法です。</description><pubDate>Wed, 21 Feb 2018 00:00:00 GMT</pubDate><category>iOS</category><category>Swift</category><category>Codable</category></item><item><title>UserDefaults を型安全に使用する</title><link>https://iganin.dev/ja/articles/type-safe-userdefaults/</link><guid isPermaLink="true">https://iganin.dev/ja/articles/type-safe-userdefaults/</guid><description>キーのタイプミスと型の取り違えを防ぐために、UserDefaults をラップする方法と Mirror を使う方法の 2 つを紹介しています。</description><pubDate>Sun, 12 Nov 2017 00:00:00 GMT</pubDate><category>iOS</category><category>Swift</category></item></channel></rss>