<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[Shinagawa App]]></title>
        <description><![CDATA[Shinagawa App]]></description>
        <link>https://shinagawa.app</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Fri, 06 Mar 2026 08:07:43 GMT</lastBuildDate>
        <atom:link href="https://shinagawa.app/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Compose Multiplatform で キーボードショートカットを実装する]]></title>
            <description><![CDATA[Compose Multiplatform で、キーボードショートカット処理を実装する方法を解説します。]]></description>
            <link>/posts/compose_multiplatform_keyboard</link>
            <guid isPermaLink="true">/posts/compose_multiplatform_keyboard</guid>
            <category><![CDATA[Kotlin]]></category>
            <category><![CDATA[ComposeMultiplatform]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 15 Aug 2024 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Androidのリリース用App Bundle(.aab)をコマンドラインから生成する]]></title>
            <description><![CDATA[Android アプリのリリース時に AppBundle(.aab)を作成する必要があります。GUI から行うと面倒なので、コマンドラインから AppBundle を作成する方法をまとめました。]]></description>
            <link>/posts/create_android_aab_by_command_line</link>
            <guid isPermaLink="true">/posts/create_android_aab_by_command_line</guid>
            <category><![CDATA[Android]]></category>
            <category><![CDATA[aab]]></category>
            <category><![CDATA[App Bundle]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 12 Jan 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Android 15 の edge-to-edgeに対応する]]></title>
            <description><![CDATA[Android 15 の edge-to-edge に対応した時の変更点を記載します]]></description>
            <link>/posts/android_edge_to_edge</link>
            <guid isPermaLink="true">/posts/android_edge_to_edge</guid>
            <category><![CDATA[Android]]></category>
            <category><![CDATA[edge-to-edge]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Fri, 17 Jan 2025 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Compose Multiplatform で サブスクリプションを実装する]]></title>
            <description><![CDATA[Android/iOSの両方でサブスクリプションの課金処理を実装する方法をまとめました。]]></description>
            <link>/posts/compose_multiplatform_subscription</link>
            <guid isPermaLink="true">/posts/compose_multiplatform_subscription</guid>
            <category><![CDATA[Kotlin]]></category>
            <category><![CDATA[ComposeMultiplatform]]></category>
            <category><![CDATA[subscription]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 23 Jan 2025 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Compose Multiplatform で Admobのバナー広告を表示する]]></title>
            <description><![CDATA[Compose Multiplatform で、Android/iOSの環境で Admob のバナー広告を表示する方法を解説します。]]></description>
            <link>/posts/compose_multiplatform_admob_banner</link>
            <guid isPermaLink="true">/posts/compose_multiplatform_admob_banner</guid>
            <category><![CDATA[Kotlin]]></category>
            <category><![CDATA[ComposeMultiplatform]]></category>
            <category><![CDATA[Admob]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sun, 02 Jun 2024 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AdMobのアダプティブバナーをJetpack ComposeとSwiftUIで使用する]]></title>
            <description><![CDATA[ライブラリには Jetpack Compose や SwiftUI 用のアダプティブバナーは用意されていないので、使用するには一工夫必要になります。]]></description>
            <link>/posts/admob_adaptive_banner</link>
            <guid isPermaLink="true">/posts/admob_adaptive_banner</guid>
            <category><![CDATA[JetpackCompose]]></category>
            <category><![CDATA[SwiftUI]]></category>
            <category><![CDATA[AdMob]]></category>
            <category><![CDATA[アダプティブバナー]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Wed, 11 Jan 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ブラウザの共有からAndroidアプリを開く]]></title>
            <description><![CDATA[ブラウザの共有からAndroidアプリを開く方法を説明します。]]></description>
            <link>/posts/android_share_activity</link>
            <guid isPermaLink="true">/posts/android_share_activity</guid>
            <category><![CDATA[Android]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Mon, 14 Oct 2024 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AdMobのネイティブ広告をJetpack Composeで表示し、プリロード対応する]]></title>
            <description><![CDATA[Google Mobile Ads SDK は Jetpack Compose に対応していないので、広告のレイアウトは従来の xml で組む必要があります。また、広告表示のタイムラグをなくすためには、広告を事前に取得(プリロード)するのが有効です。]]></description>
            <link>/posts/admob_native_ad_android</link>
            <guid isPermaLink="true">/posts/admob_native_ad_android</guid>
            <category><![CDATA[JetpackCompose]]></category>
            <category><![CDATA[AdMob]]></category>
            <category><![CDATA[ネイティブ広告]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Fri, 17 Feb 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Flutterでカスタムフォントを導入して発音記号を表示する]]></title>
            <description><![CDATA[Flutterのデフォルトのフォント(Roboto)で発音記号を表示しようとしたら文字化けしたのですが、カスタムフォントを導入することで解決できたので、その方法を紹介します。]]></description>
            <link>/posts/flutter_font</link>
            <guid isPermaLink="true">/posts/flutter_font</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[font]]></category>
            <category><![CDATA[M+FONTS]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sat, 10 Sep 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CSRのHTMLをAndroidとiOSで取得する方法]]></title>
            <description><![CDATA[CSR(クライアントサイドレンダリング)で生成されるHTMLを取得する方法です]]></description>
            <link>/posts/get_csr_html_multiplatform</link>
            <guid isPermaLink="true">/posts/get_csr_html_multiplatform</guid>
            <category><![CDATA[Android]]></category>
            <category><![CDATA[iOS]]></category>
            <category><![CDATA[html]]></category>
            <category><![CDATA[CSR]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sun, 01 Jan 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[iOSアプリがバックグラウンド状態の時に処理を継続する方法]]></title>
            <description><![CDATA[iOSアプリでバックグラウンド中に処理を継続する方法を調べ、実現可能だった方法と不可だった方法に分類しました。]]></description>
            <link>/posts/ios_background_process</link>
            <guid isPermaLink="true">/posts/ios_background_process</guid>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[background]]></category>
            <category><![CDATA[ble]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sat, 08 Oct 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[FlutterでビルドしたipaファイルがTestFlightでインストールできない問題の解決法]]></title>
            <description><![CDATA[bundle identifierの末尾に .add を追加すると解決します。]]></description>
            <link>/posts/flutter_ios_install_error</link>
            <guid isPermaLink="true">/posts/flutter_ios_install_error</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[iOS]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Tue, 20 Sep 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Flutterで画像が存在するかどうかを画像をロードせずに調べる方法]]></title>
            <description><![CDATA[画像の存在チェックをするコードを自動生成するスクリプトを作成します]]></description>
            <link>/posts/flutter_exists_image</link>
            <guid isPermaLink="true">/posts/flutter_exists_image</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[existsImageFile]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Tue, 13 Sep 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[iOS の Share Extensionで Safari からアプリを開く]]></title>
            <description><![CDATA[iOS アプリに Share Extension を導入し、Safari からアプリを開く方法を説明します。]]></description>
            <link>/posts/ios_share_extension</link>
            <guid isPermaLink="true">/posts/ios_share_extension</guid>
            <category><![CDATA[iOS]]></category>
            <category><![CDATA[Share Extension]]></category>
            <category><![CDATA[Safari]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Wed, 08 Feb 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kotlin/Nativeの String.replace のバグを回避する]]></title>
            <description><![CDATA[Kotlin/Nativeの String.replace を使うとiOSでバグが発生します。それを回避する方法を説明します]]></description>
            <link>/posts/kotlin_native_string_replace_bug</link>
            <guid isPermaLink="true">/posts/kotlin_native_string_replace_bug</guid>
            <category><![CDATA[KotlinNative]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Mon, 13 Feb 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[JetpackCompose から 共有ストレージのファイルにアクセスする]]></title>
            <description><![CDATA[1. ユーザにフォルダーを選択させ、そこにファイルを作成する。2. ユーザにファイルを選択させ、その内容を読み取る]]></description>
            <link>/posts/jetpack_compose_shared_storage_document</link>
            <guid isPermaLink="true">/posts/jetpack_compose_shared_storage_document</guid>
            <category><![CDATA[JetpackCompose,CreateDocument,OpenDocument]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 17 Aug 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ムームードメインでAWS Certificate Manager(ACM)のSSL証明書を取得する]]></title>
            <description><![CDATA[ムームードメインでドメインを取得し、AWS Certificate Manager(ACM)のSSL 証明書を取得する方法を説明します。]]></description>
            <link>/posts/moomoo_acm_dns</link>
            <guid isPermaLink="true">/posts/moomoo_acm_dns</guid>
            <category><![CDATA[acm]]></category>
            <category><![CDATA[moomoo]]></category>
            <category><![CDATA[dns]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sat, 23 Jul 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kotlin Multiplatform (KMP) の使い方やお勧めのライブラリの紹介]]></title>
            <link>/posts/kotlin_multiplatform_recommended_libs</link>
            <guid isPermaLink="true">/posts/kotlin_multiplatform_recommended_libs</guid>
            <category><![CDATA[Kotlin]]></category>
            <category><![CDATA[Compose]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Fri, 24 May 2024 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Reactでスクロール可能な要素の下からのスクロールポジションを取得する]]></title>
            <description><![CDATA[Reactでスクロール可能な要素の下からのスクロールポジションを取得する方法です]]></description>
            <link>/posts/react_scroll_position_from_bottom</link>
            <guid isPermaLink="true">/posts/react_scroll_position_from_bottom</guid>
            <category><![CDATA[react]]></category>
            <category><![CDATA[next.js]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Mon, 20 Jun 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[next.jsでポートフォリオサイトを作ってS3にデプロイする]]></title>
            <description><![CDATA[nextjs-portfolio-starterをベースにポートフォリオサイトを作成し、S3にデプロイする方法を説明します。]]></description>
            <link>/posts/nextjs_portfolio</link>
            <guid isPermaLink="true">/posts/nextjs_portfolio</guid>
            <category><![CDATA[next.js]]></category>
            <category><![CDATA[s3]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sun, 24 Jul 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[SwiftUI から UIDocumentPickerViewController を呼び出す]]></title>
            <description><![CDATA[1. ユーザにフォルダーを選択させ、そこにファイルを作成する。2. ユーザにファイルを選択させ、その内容を読み取る]]></description>
            <link>/posts/swiftui_document_picker</link>
            <guid isPermaLink="true">/posts/swiftui_document_picker</guid>
            <category><![CDATA[SwiftUI]]></category>
            <category><![CDATA[UIDocumentPickerViewController]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 17 Aug 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[next.jsをS3+CloudFrontにデプロイした時に、Dynamic Routesを処理する方法]]></title>
            <description><![CDATA[pages/404.tsxの作成し、CloudFrontでカスタムエラーレスポンスを作成します]]></description>
            <link>/posts/nextjs_s3_cloudfront_dynamic_routes</link>
            <guid isPermaLink="true">/posts/nextjs_s3_cloudfront_dynamic_routes</guid>
            <category><![CDATA[next.js]]></category>
            <category><![CDATA[s3]]></category>
            <category><![CDATA[cloudfront]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sun, 18 Sep 2022 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ktor と okio を使って大きなファイルをダウンロードする]]></title>
            <description><![CDATA[大きなファイルをダウンロードする場合、ファイルの内容をすべてメモリに展開してしまうと、OutOfMemoryError が発生してしまいます。]]></description>
            <link>/posts/ktor_okio_download_file</link>
            <guid isPermaLink="true">/posts/ktor_okio_download_file</guid>
            <category><![CDATA[Multiplatform,ktor,okio]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 09 May 2024 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[SwiftUIのTextFieldに入力した1文字目が変換対象にならない問題とその対処法]]></title>
            <description><![CDATA[TextField に日本語入力キーボードで文字を入力すると、1 文字目が変換対象にならないことがあります。例えば、キーボードで「a」「u」と入力すると、1文字目の「あ」が変換対象になりません。]]></description>
            <link>/posts/swiftui_textfield_in_sheet</link>
            <guid isPermaLink="true">/posts/swiftui_textfield_in_sheet</guid>
            <category><![CDATA[SwiftUI]]></category>
            <category><![CDATA[TextField]]></category>
            <category><![CDATA[UITextField]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Sun, 12 Mar 2023 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AndroidとiOSのWebViewでhttp通信を許可する]]></title>
            <description><![CDATA[全てのドメインに対してHTTPのクリアテキスト通信を許可したい場合は...]]></description>
            <link>/posts/webview_http</link>
            <guid isPermaLink="true">/posts/webview_http</guid>
            <category><![CDATA[Android]]></category>
            <category><![CDATA[iOS]]></category>
            <category><![CDATA[WebView]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Wed, 13 Nov 2024 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Macのシステムデータの容量を削減する]]></title>
            <description><![CDATA[Macのシステムデータの容量が600GBを超えていたので、原因を調べて容量を削減しました。]]></description>
            <link>/posts/reducing_mac_system_data_storage</link>
            <guid isPermaLink="true">/posts/reducing_mac_system_data_storage</guid>
            <category><![CDATA[Mac]]></category>
            <category><![CDATA[Storage]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Googleの User Messaging Platform (UMP) SDK でGDPRに対応したら、AppStoreの審査でリジェクトされた]]></title>
            <description><![CDATA[ようするに、ATTメッセージを表示する前に、同意を促すようなメッセージ(ここではGDPRメッセージ)を表示してはいけないようです。]]></description>
            <link>/posts/ump_sdk_reject</link>
            <guid isPermaLink="true">/posts/ump_sdk_reject</guid>
            <category><![CDATA[UMP]]></category>
            <category><![CDATA[GDPR]]></category>
            <category><![CDATA[ATT]]></category>
            <dc:creator><![CDATA[kyamada]]></dc:creator>
            <pubDate>Thu, 21 Dec 2023 15:00:00 GMT</pubDate>
        </item>
    </channel>
</rss>