なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Android の Adaptive Icon で複雑なアイコンをミニマルな状態でもキレイに表示したい

Android の Adaptive Icon を設定する際、元のアイコンが比較的複雑なアイコン (例えば、ゲームのアイコン) だと、そのままだとアイコンをミニマルテーマにしたときに、意図しない表示になってしまう、ということがありました。 ブルアカはちゃんとしてるの…

React Native でボトムタブナビゲーションをタップしたら上へスクロールする、をやりたい

Twitter アプリなどでよく見かける、アクティブなタブを再度タップしたら、リストビューの最上部へ移動する......といった挙動を React Native で実装したい!というときのやり方。 タブナビゲーションに React Nativation / Expo Router を使っている場合は…

adb で device (2) のようになってしまったときに expo run をしたいときに当てるパッチ

Android 開発しているときに、ワイヤレスデバッグで何度か再接続を繰り返したりしていると、 adb devices で表示されるデバイスの様子がおかしくなるときがあります。 (2) が付いてしまったデバイス こうなってしまったら、 expo で開発しているときに使うコ…

Jetpack Compose で Preview が NoClassDefFoundError で表示されない

Android Studio にて、 Jetpack Compose の @Preview アノテーションを使ってプレビューをしたかったのだが、エラーが出て表示されない。 java.lang.NoClassDefFoundError: _layoutlib_/_internal_/kotlinx/datetime/serializers/InstantIso8601Serializer a…

Windows のウィジェットを作ろう!

Windows でウィジェット使っていますか?わたしはあまり使っていませんでしたが、これを期に使い始めました。 Windows におけるウィジェットとは、 Windows + W キーで横から出てくるボードに配置できるアプリケーションの事です。 ウィジェットの様子、自作…

Firebase Cloud Messaging で iOS アプリにリモートプッシュ通知を送ろう

趣味で iOS アプリを作っているのですが、今回、 Firebase Cloud Messaging でのリモートプッシュ通知に対応したので、対応方法を紹介します。 今回リモートプッシュ通知に APNs にダイレクトに通知を行うのではなく、 Firebase Cloud Messaging を使った理…

斜めドラッグをどう扱う?SwiftUI で自然なタイムラインを作る

SwiftUI を使って Twitter や Instagram のようなアプリを作っていると、 だいたい一度はこんな UI を作りたくなります。 全体はタイムライン形式で縦スクロール 各投稿には複数枚の写真があって、横にスワイプすると切り替わる よくある UI ですね。 ただ、…

Neon DB から PlanetScale へ PostgreSQL データベースのデータを移行したい

Neon という Serverless PostgreSQL サービスがあるのですが、 24/365 で起動するアプリケーションでは無料枠では収まらない、かつ、 PlanetScale PostgreSQL の最低プラン (15USD/mo) よりも高く付きそうかつ、 PlanetScale は Tokyo リージョンがあるので…

iOS アプリケーションで使用している OSS ライブラリのライセンスを表示したい

アプリケーションを作る上で OSS は欠かせませんが、 OSS を使うことで悩みの種となるのがライセンス表記をどう自動化するかです。 今回、 iOS アプリケーションを作る上で、 OSS ライブラリ一覧を表示したので、その方法をメモしておきます。 今回使ったの…

wrangler で Address already in use (127.0.0.1:9229) と出る場合は

Cloudflare のローカル開発コマンドである wrangler を、複数同時に turborepo などで動かすと、タイトル通りのエラーが発生することがあります。 ✘ [ERROR] Address already in use (127.0.0.1:9229). Please check that you are not already running a ser…