CatHand Blog

アプリ開発やMac弄り

gStat

gStatというアプリをリリースしました。 GitHub Actions のステータスを表示したり、実行したりできるアプリです。 play.google.com 最近 CI/CD 環境をBItriseからGItHub Actionsに移行しています。BitriseはbStatというアプリをリリースしていましたが、そ…

FailedToLaunchAppError で SwiftUI のプレビューが表示されない問題の解消法

SwiftUIのプレビューが表示されないことはよくありますが、原因が特定しづらいので困ります。今回は failed to launch... というエラーで表示されない問題が解決できたケースを紹介します。 環境: macOS Sonoma 14.2.1 Xcode 15.2 エラーは以下です。 Failed…

AppStore Connect APIを使わずにfastlaneでAppStore Connectへバイナリをアップロードする

fastlaneでAppStore Connectへアップロードする方法を検索すると、AppStore Connect APIを使う方法ばかり出てきますが、Apple IDのアプリ用パスワード(Application Specific Password)のみを使ってアップロードする方法があります。 まあドキュメントに書…

Github Actionsでビルドナンバーにオフセットを設定する

Github Actionsでいいかんじのビルドナンバーをつけたいとき、 github.run_number が使えます。これはworkflowの実行番号を表しています。 これをそのままではなく、オフセットをつけたい場合は以下のようにコマンドでできます。↓の例では +2000 しています…

PX-M6010F

mac

A3プリンター複合機を買いました。 エプソン プリンター A3ノビ対応ビジネスインクジェットカラー複合機 FAX PX-M6010F コンパクト 1段カセットモデルエプソンAmazon A3スキャンができる複合機だとほぼこれしか選択肢がありません。久しぶりにプリンターを買…

Cycle inside ... building could produce unreliable results.

Xcode15でArchiveするとCycle inside ... building could produce unreliable results.のようなエラーが発生する場合があります。 App Extensionを含むプロジェクトで起きることが多いようなのですが、 Embed Foundation Extensions ステップを Copy Bundle …

大きな画像をリサイズして読み込む

Share Extension等、メモリ制約が大きい場合に、大きな画像を普通にUIImage(contentsOfFile:)で読み込むとメモリ不足でクラッシュする場合があります。 そのような場合には、リサイズしつつCGImageで読み込んでからUIImageに変換するとよいです。 gist.githu…

Twitter API v2 で画像付きポストをする

先日、Twitter API v1.1 がcloseされました。アクセスすると↓のようなエラーになります。 投稿APIについてはv2 APIが無料で提供されているので、投稿のみなら無料でできます。ただし、画像などを添付したい場合、v2 APIではメディアアップロードAPIが提供さ…

firebase functions から firebase functions を呼ぶ

firebase function から firebase function を呼びたい場合があると思います。 呼ばれる方の function が公開されている場合は簡単ですが、呼ばれる方を公開したくない場合は呼ばれる方の function を要認証にして、bearer tokenを指定して呼ぶことができま…

Illustail v5.3.0 (macOS)

でてます。 IllustailNaomoto Niwayamaソーシャルネットワーキング無料apps.apple.com macOS版のみですが、タイムラインのメディアを自動ダウンロードする機能をつけました。 設定の↓ここからいけます。 タイムライン 保存先フォルダ メディアの種類(動画、…

Nature Remo nano

プライムデーで買いました。 Nature スマートリモコン Nature Remo nano ネイチャーリモ Remo-5W1 Alexa/Google Home/Siri対応ネイチャー(Nature)Amazon Matter対応のスマートリモコンです。Matterって知らなかったんですが、スマートホームの規格らしく、Ap…

CIO NovaPort Quad 65w

プライムデーで買いました。 CIO NovaPort QUAD 65W GaN充電器 NovaIntelligence搭載 世界最小級 4ポート USB-C×3 + USB-A USB ACアダプター コンセント 急速充電器 軽量 タイプC iPhone Android Macbook Pro iPad Pro ウォールチャージャー ホワイトCIOA…

Jetpack Composeで滑らかなViewPagerを作成する

Composeで横にページングするViewを実現したいとき、AccompanistのHorizontalPagerを使います。 google.github.io ですが、HorizontalPagerはページごとにバウンスするような挙動になっており、連続してスワイプすると引っかかるような動きになります。(し…

Pixelmator Pro の ML Super Resolution で動画の超解像度化

mac

Pixelmator Pro には ML Super Resolution という、ML Kit で画像を超解像度化する機能があります。 www.pixelmator.com これはAutomatorから呼ぶことができるので、ffmpeg等と組み合わせて動画を超解像度化することができます。 以前Waifu2xやTecoGANで動画…

ComicViewer 2.0.11 / PixelFinder 1.2.0

でてます。 ComicViewer 2Naomoto Niwayamaユーティリティ¥160apps.apple.com PixelFinderNaomoto Niwayamaユーティリティ無料apps.apple.com macOS 13 Ventura でOSがavifに対応したので、これらのアプリもavifが読めるようにしました。 ComicViewerについ…

ECHTPower Switch用ワイヤレスコントローラー

ニンテンドースイッチ買ってからずっとワイヤレスホリパッドを使っていたんですが、全てのボタンのストロークが長くてイマイチだなと思っていました。特にZLとZRが重い。 【任天堂ライセンス商品】ワイヤレスホリパッド for Nintendo Switch【Nintendo Switc…

SanDisk Extreme GO 64GB

以前買ったSamsungのUSB-Cメモリが壊れました。 www.cathand.app 突然マウントしなくなって、DiskUtilityでのフォーマットもできなくなったのでたぶんダメだと思います。ハズレを引いたのかもしれませんが残念です。 代わりに↓を買いました。 【 サンディス…

Illustail v5.0.1

でてます。 IllustailNaomoto Niwayamaソーシャルネットワーキング無料apps.apple.com Share Extension経由でInstagtamの投稿をIllustail Cloudへ保存できるようになりました Illustail Cloudへ保存時のデフォルトをプライベートにしました 投稿へのアクショ…

Illustail v5.0.0

Illustail v5.0.0 でてます。TwitterやTumblr等に対応した画像収集アプリです。 IllustailNaomoto Niwayamaソーシャルネットワーキング無料apps.apple.com ↑ iOS / macOS どちらも同じURLです。 Illustail Cloud 今回、画像投稿をタグを付けてクラウドへ保存…

App Extension ターゲットがビルドできない

App Extension を含んだアプリターゲットはビルドできるけど、App Extension ターゲット単体では Multiple commands produce ... のようなエラーが出てビルドできない、ということがありました。 原因は Scheme の設定に複数のアプリターゲットが含まれてい…

Visual Studio CodeのTerminalのアーキテクチャをarm64にする

↓の方法でターミナルのアーキテクチャを表示するようにしていたところ、VSCodeのターミナルがx86アーキテクチャで実行されていることに気づきました。 www.cathand.app のでarm64で実行されるようにします。 VSCodeの環境: バージョン: 1.69.1 コミット: b06…

MX Mechanical mini

楽天の買いまわりで買ってしまいました。日本語配列茶軸です。 ロジクール KX850CL MX MECHANICAL MINI ミニマリスト ワイヤレス メカニカル パフォーマンス キーボード 赤軸 リニア テンキーレス 静かな打鍵感 Logi Bolt bluetooth Unifying非対応 薄型 無…

dart_twitter_api で users/lookup を呼ぶ

dart_twitter_api はFlutterのTwitter APIラッパーです。 github.com 便利なんですが、 users/lookup が notImplemented になっていて呼べませんでした。 github.com なので呼べるようにしたコードがこちらです。 gist.github.com 同じような方法で、他のAPI…

bStat Android

Bitriseのステータスを表示したりトリガーをかけたりするアプリ、bStatのAndroid版が公開されました。 play.google.com SwiftUIのマルチプラットフォームでiOSとmacOS向けに作成していたものをFlutterで書き直しました。なのでiOS / macOS版も同じUIでアップ…

BitriseでflutterのmacOSアプリをビルドしてAppStore Connectへアップロードする

Workflowは↑のようなかんじになります。 Flutter Install 必要なバージョンのFlutterをインストールします。今回は 3.0.1 を使いました。 Script flutter build macos します。 ただし、必ず error: Provisioning profile "******" doesn't include the curr…

flutterとmacOSネイティブアプリでやり取りする

ネイティブアプリの一部をflutter化したとき、ネイティブコードとflutter間でやり取りするには FlutterMethodChannel を使います。 api.flutter.dev ネイティブ側とflutter側でお互いに FlutterMethodChannel を作ってやり取りする形になります。 iOSでは [F…

Sinjimoru MagSafe 対応 iPhone13 クリアケース

iOS

磁力つよつよなMagSafeケースを買いました。 Sinjimoru MagSafe 対応 iPhone13 Pro クリアケース、強力な磁石内蔵 丈夫なPC+TPU素材で 耐久性と耐衝撃性が優秀な薄型 iPhone透明ケース、 ワイヤレス充電・マグセーフアクセサリー互換可能マグネットケース。M…

Failed to commit edit, error: googleapi: Error 400: Prices are missing for the following billable countries: GI., badRequest

Google Play API でバイナリをアップロードすると表題のようなエラーが返る場合があります。 Failed to commit edit, error: googleapi: Error 400: Prices are missing for the following billable countries: GI., badRequest これは、有料アプリで国別の…

NUROスマートライフセット

NURO光は2Gbpsのサービスですが、提供されるONUのEthernetポートがギガビットEthernetなので有線接続では1Gbpsが上限となっていました。 例外として、スマートライフセットのオプションを付けると、ソニー製のNSD-G1000Tという2.5ギガビットEthernetポートが…

ORICO USB 3.0 ハブ A3H7

7ポートのUSBハブを買いました。 【更にエントリーでP5倍!店内全品対象】【日本正規代理店】 ORICO アルミ製 7ポート ハブ 12V/2A 電源 セルフパワー 放熱性能 USB3.0 HUB 高速 5Gbps VL812チップ 2基 搭載モデル PSEマーク付 A3H7価格: 5580 円楽天で詳細…