eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

自分用のAI-Agent SKILLの公開と、Prompt Requestへの期待

github.com Skillを公開する意味 AI Agentによって、誰でもコードを書けるようになった 「コードを書ける」のと、「適切なコードを書ける」のは全く違う 「適切なコードを書くために、自分はこうしている」というポートフォリオの意味で公開している AI Agen…

2026-01のCursorの使い方

Cursorで使っているModel 会社 予算 いっぱいだけど無限ではない Sonnet 4.5 / Opus 4.5 / Gemini3Pro / Composer-1を時と事情で使い分ける 基本Sonnet 4.5でオーケストレーション Sonnetが提案し、手製MAGIシステムが複数並列でレビュー&改善して、その結果…

久々にアプリをリリースした話

リリースしたアプリ「やさしい漢字」 漢字の書き取りのために拡大表示する機能と、その漢字が何年生で習ったのかを表示するだけのシンプルなアプリ Android版 iOS版 なんでアプリを作ったのか 自分自身、漢字の書き取りが苦手である 子供の学習の手伝いすら…

複数のgit秘密鍵を1passwordを経由して切り替える

なぜ必要なのか Githubアカウントを複数所有している 個人で使用しているアカウント 本業用アカウント 副業用アカウント×複数 案件ごとに適切なアカウントを使用して作業を行わなければならない 1passwordでの設定 公式の案内に従って1passwordをセットアッ…

パスワード管理をGoogleから1Passwordに移行した

パスワードマネージャにGoogleを使っていた理由 無料で使える 一番大きい Androidがメイン端末なので、Chrome(ブラウザ)とアプリが同一のパスワードマネージャを利用できる デフォルトで用意されていて特別な準備をする必要がない Googleパスワードマネージ…

ssh接続もシリアル接続もできなくなったGoogle Compute Engineで動くサーバーを復旧させる

何が起きたか 社内システムの動いているサーバーをメンテしようとした 突然GCEのいつものssh接続ができなくなった 冷や汗をかきながらシリアル接続を有効化するが、ログインできず 自分だけが締め出されたかと思って別ユーザーでも試すがログインできず 状況…

FlutterのIsolate.spawnはやはり重いという話

Windows Desktopビルドで重い処理を裏で行ったらやっぱり重い 画像のデコード、変換、解析といった重い処理をバックグラウンドで行おうとした Flutterのcompute()関数を使用してawaitすると、1秒以上かかる 実際の解析処理は0.2秒程度 流石に重いので計測す…

XCode 14にアップデートしてflutter buildが通らなくなった際の対処

原因 XCode 14からCocoaPodsの生成物(Pod)にも署名を要求するようだ n=1なので、他の不要な場合もあるかもしれない Issueがある github.com 対応 cocoapods-pod-signをインストール Flutterは /usr/bin/gem のPATHを優先的に検索するようなので、複数バー…

Flutter + Redux Architectureでパフォーマンスチューニング

パフォーマンスチューニングが必要になった理由 プロジェクトでRedux Architectureを採用したが、求める機能に合致するライブラリがないためチーム内で自作した pub.dev これにより求める機能が実装されたが、プロジェクトでは特定条件下でState更新が1000回…

flutter build ipaのad-hocビルドが異様に遅い問題の対応

発生した問題 AppStore用ビルドは20分前後でビルドが完了する 検証用のAd-Hocビルドが60分以上時間がかかる XCode 13.2.1, Flutter 2.10.4 試したこと Swift/Clangの最適化レベルを変更 -> 効果なし dSYM出力無効化 -> 効果なし 突き止めた問題 --export-opt…

dartのFreezedとPImplイディオムでメンバ保護を行う

前提 Flutterの開発でReduxアーキテクチャを採用している。 Stateの管理に freezed を使うと、簡単な代わりに全てのメンバがpublicになってしまう。 一部のメンバはprivateにしたり、計算済みの値をキャッシュしたい。 改善 概念。 @freezed class ExampleSt…

dartでKotlin.internal funっぽいことをする

dartのinternal fun (dart 2.15には)ない(たぶん)。 特定packageだけでアクセスしたいメソッドとか作れない。 作ったらみんなアクセスされてしまう。 解決方法 // src/example.dart class Example { String _value = ''; String get value => _value; } …

ついにGSuiteの無料版がシャットダウンされるので移行した

GSuite無料版 @gmail.com ではなく、独自ドメインのGSuiteが条件付きで無料で使えていた 10年ほど前まで(いまほどGSuiteが普及してない時期)は、無料で10アカウントまで独自ドメインのGSuiteを利用することができた 5年前時点ではもう無料では作れず、有料…

Kotlin 1.6に変更してproguardをかけたら通信周りが死んだので直した

事象 アプリにログインできない 調査 APIをcurlすると、正常に動作する(サーバーは正常動作してる) Debugビルドで実行すると、正常に動作する(プログラム自体は正常である) サーバーのログを確認すると、送信値のValidationに失敗している Releaseビルド…

Flutter iOSでファイルの書き込みが静かに失敗する不具合の対応

flutter doctor $ flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 2.5.3, on macOS 12.0.1 21A559 darwin-arm, locale ja-JP) [✓] Android toolchain - develop for Android devices (Android S…

AndroidアプリのKotlin 1.4/1.5から1.6へのマイグレーション

AndroidX Roomのコンパイラが不正なJavaクラスを吐き出す Entity(だいたいdata class)に複数のコンストラクタがある場合(Entityをnewする際のサポートのために作ったコンストラクタ)、Kotlin 1.6からRoom Compilerが不正なコードを吐き出すようになった …

M1 Max Macbook Pro(14inch)の所感

購入したスペック M1 Max 10 CPU 32 GPU 64GB RAM 512GB SSD 環境構築で躓いたところ Android SDKをAndroid Studioからインストールも認識もできない なにかに引っかかってエラーらしい IntellijのAndroid Pluginに付属しているGUIでインストールするとAndro…

Android StudioとVSCodeの開発効率のメモ

コード生成 equals系のオーバーライドで差が出る Android Studioは割と素直にできるし、data classは自動的に行われる VSCode + Dartは標準機能に無いのでExtensionを追加 ただし、Classの記述状況によってはExtensionが生成してくれないので自分でどうにか…

Flutterアプリ開発環境の長所短所

M1X出ないのかよ!! Apple発表会で出なかったので、手持ちの環境の再整備を行うことにした 各環境のレビュー Intel Mac mini 2018 + Windows i7 6C12T / RAM 64GB 従来の開発環境 iOSアプリビルドにはmacが必須なので用意した環境。 WindowsからVSCode Remo…

Android12対応でやったこと

もうすぐAndroid 12がリリースされるので、最低限対応した内容をメモする。 Android Studio AF対応 新AndroidStudioにビルドツールを切り替えた UnitTestをRobolectricからInstrumentation Testをメインに変更 Android Studio AFから、Robolectricが実行しづ…

SONYのHDDレコーダーのリモート予約が正常動作しなくなったのでエンジニア的カンで直した

利用機器 SONY製 BDR-BDZ-FW2000(容量2TB, ホームサーバー機能対応のモデル。以下レコーダー) マンション標準のネットワーク(グローバルIPは割り当てられない, 1家庭500~800MBps程度の速度が最大) Google Nest Wi-Fi(ただしレコーダーはハブを介して有…

GCPを使って子供関係の通知をLINEに統合する

なにをやったのか 子供が保育園・小学校・学習塾に通っている それぞれ、お知らせがWebに掲載される(日記とかも含む) 個別連絡はメールで届く(学年単位の緊急連絡とか) いちいち学校のウェブサイトで確認したりメールを検索するのが面倒なので、LINEに通…

ビルドの並列化をしすぎてCPU占有率100%になってしまったAndroid Studioプロジェクトの対処

何が起きたか モジュール分割や様々な工夫をしてビルド時の並列性を高めた 高めすぎて、Ryzen 3950Xの 16コア 32スレッド の能力を超えた並列性を持ってしまった その結果、Gradleのビルドを行うとすべてのCPUリソースを完全に食い尽くすようになった Zoomと…

Android Studio Arctic Fox Canary-11の所感

現状の利点 Jetpack Compose(Beta, production-ready)が使える AS 4.1.xからの移行 Android Gradle Pluginバージョン変更 gradlewバージョン変更 基本的に素直に移行できた。 現状の問題点 Library Projectで問題が出る。 Application Projectでは使えている…

イカれた映画観客を紹介するぜ!!

持ち込んだペットボトルをごっきゅごきゅと音を立てて就活生風の男 / TOHOシネマズ上野 / ラブライブサンシャイン TOHOシネマズは基本的に飲食物は持ち込み禁止のはず ごっきゅごきゅと音を鳴らして飲んでクソうるせー 人間ってあんな音を立てながら飲めるん…

docker-composeでgoogle/cloud-sdk:emulators(firestore emulator)を利用する

docker-compose記述 version: "3" services: firestore-emulator: image: google/cloud-sdk:329.0.0-emulators ports: - 8004:8004 command: gcloud beta emulators firestore start --host-port "0.0.0.0:8004" これで docker-compose up で起動できる。 ポ…

APIサーバーの実行環境の所感 2020

Google App Engine 言語/ランタイムバージョンが限定される 複数バージョンをデプロイして、複数の指定バージョンを簡単に試せる staticファイルの配信が簡単 Go1.9時代(第1世代GAE)はいつも使っていた 今はstaticファイルの配信に使う Firebaseホスティング…

Windows環境のRobolectricでUri.toFile() KTXが正常に動作しない

問題点 Windowsファイルシステムはドライブレター(C:とか)やパスセパレータ(¥)がLinux/Macと異なる Uri.fromFile()を実行したとき、ドライブレターやバッククォート(日本語だと円マーク)を含んだ文字列がURLエンコードされる KTXのUri.toFile()を行う…

WindowsのNTFSはtree()が遅い

起きた事象 Windows版Android StudioのGradle Sync(像のアイコン押すと走るやつ)が異様に遅い 普通に gradlew 実行だけでも遅い MacやUbuntuだと早い 具体的にはこのくらい Windows: gradlew 40秒, WSL2も同じくらい NVMe PCIe 4.0接続しているので、スト…

Protocol BuffersのAndroid向け実装としてSquare Wireを採用した所感

Wire square.github.io Protocol Buffersを採用した理由 大量のデータを扱う処理で、画面外の情報を一時的にファイルやDBに退避したい ついでにIntentで渡したりするのも簡単にやりたい モデルの定義を簡素化したい POJO定義してJSONエンコードも(Intentにp…