CatHand Blog

アプリ開発やMac弄り

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

↓の方法でターミナルのアーキテクチャを表示するようにしていたところ、VSCodeのターミナルがx86アーキテクチャで実行されていることに気づきました。

www.cathand.app

のでarm64で実行されるようにします。

VSCodeの環境:

バージョン: 1.69.1
コミット: b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a
 日付: 2022-07-12T08:22:10.822Z
Electron: 18.3.5
Chromium: 100.0.4896.160
Node.js: 16.13.2
V8: 10.0.139.17-electron.0
OS: Darwin arm64 21.5.0

設定から Terminal > Integrated > Profiles: Osx の settings.json を編集します。

terminal.integrated.profiles.osx に以下を追加。

        "arch": {
            "path": "/usr/bin/arch",
            "args": [
                "-arm64",
                "/bin/zsh"
            ]
        },

そして Terminal > Integrated > Default Profile: Osx を今追加したやつにします。

MX Mechanical mini

楽天の買いまわりで買ってしまいました。日本語配列茶軸です。

今まで使ってた Varmilo VA73M (Cherry MX 茶軸) と比べると打鍵感は少し重いかなというかんじですが、ロープロファイルだからですかね。赤軸でもよかったかもしれません。

www.cathand.app

矢印キー周りやEnterの右側にもキーが詰まっていて誤入力しそうだなと思っていたんですが、VA73Mより少しだけキーが小さい分、ホームポジションからほとんど手を動かさずにEnterやBackspace等を打つことができて快適です。

なんですが、私の環境では英語配列で認識されてしまうという問題が起きています。

環境

Logi Boltで接続すると英語配列で認識されてしまうのですが、Bluetoothで接続すると正常に日本語配列で認識されます。Karabiner-Elementsが悪さしてるのかなと思ってアンインストールしてみましたが変わらず。むしろKarabiner-Elementsを入れて日本語配列として認識させれば日本語配列として使用できます。

仕方ないのでBluetooth接続で使っていますが、ファームウェアのアップデート等で修正されることを願います。

Logi Options+ の画面ではBluetoothで接続して日本語配列で認識されていても英語配列で表示されます。

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のマルチプラットフォームiOSmacOS向けに作成していたものをFlutterで書き直しました。なのでiOS / macOS版も同じUIでアップデートしています。

bStat for Bitrise

bStat for Bitrise

  • Naomoto Niwayama
  • 開発ツール
  • ¥120
apps.apple.com

macOSについてはメニューバーに常駐するアプリなので、メニューバーアイテムのポップオーバーの中身だけFlutterにして、Flutter側のAPIコールの結果でメニューアイテムを更新する、というようなことをやっています。

Windowsアプリも作ってみたので、Windowsストアへの公開手続きが済み次第公開されるかもしれません。

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

Workflowは↑のようなかんじになります。

Flutter Install

必要なバージョンのFlutterをインストールします。今回は 3.0.1 を使いました。

Script

flutter build macos します。

ただし、必ず

error: Provisioning profile "******" doesn't include the currently selected device ....

のようなエラーが起きます。次のステップでビルドするのでこのエラーは無視します。

結果、↓のようなスクリプトとなります。

#!/usr/bin/env bash
# fail if any commands fails
# set -e
# make pipelines' return status equal the last command to exit with a non-zero status, or zero if all commands exit successfully
# set -o pipefail
# debug log
set -x

flutter build macos

exit 0

Xcode Archive for Mac

RunnerプロジェクトからmacOSアプリのビルドを行います。

Export methodには app-store を指定した上で、Custom export options plist content を指定する必要があります。

この値には、一度ローカルのXcodeでRunnerプロジェクトをアーカイブしてAppStore用にExportして、出来上がったフォルダ内の ExportOptions.plist の中身を指定します。

Deploy to App Store Connect - Application Loader (formerly iTunes Connect)

AppleIDの認証情報等を指定してAppStore Connectへアップロードします。

プロビジョニングプロファイルや証明書の指定が正しければアップロードできるはずです。

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

ネイティブアプリの一部をflutter化したとき、ネイティブコードとflutter間でやり取りするには FlutterMethodChannel を使います。

api.flutter.dev

ネイティブ側とflutter側でお互いに FlutterMethodChannel を作ってやり取りする形になります。

iOSでは [FlutterMethodChannel +methodChannelWithName:binaryMessenger:]binaryMessenger に該当の FlutterViewController を渡せば良いようなのですが、macOSの FlutterViewController は FlutterBinaryMessenger プロトコルが実装されていないので指定できません。

ソースを辿ったところ、 FlutterEngine の方に実装されているようなので、 flutterViewController.engine as! FlutterBinaryMessenger のように渡すことができます。

github.com

Sinjimoru MagSafe 対応 iPhone13 クリアケース

磁力つよつよなMagSafeケースを買いました。

これにAnkerのバンカーリングを付けて使っていますが非常に強力で、リングを持って振り回しても外れないくらいです。

MagSafe充電器を付けるときも、少し離れた状態からバンっとくっつくので寝室で暗いときとか便利です。

車載MagSafeマウンターとかで使っても便利なのでは?と思います。

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

これは、有料アプリで国別の価格が設定されていない場合に発生するようです。

Google Play Console の、 設定 -> 価格設定テンプレート の該当テンプレートの「価格を編集」から、「為替レートを更新」を押すと、全ての国に値が入ります。

ですがこれだけでは解決できなくてさらに↓のエラーが発生しました。

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

LBレバノンのようですが、価格設定テンプレートにはこの国が見当たりません。結局アプリの配信地域からレバノンを外すことでエラーを解消することができました。

NUROスマートライフセット

NURO光は2Gbpsのサービスですが、提供されるONUEthernetポートがギガビットEthernetなので有線接続では1Gbpsが上限となっていました。

例外として、スマートライフセットのオプションを付けると、ソニー製のNSD-G1000Tという2.5ギガビットEthernetポートが付いたONUが提供されます。このスマートライフセットは新規契約者限定のオプションだったんですが、いつの間にか既存契約者も入れるようになっていました。

www.nuro.jp

ということで早速申し込みました。また、これを機に一部の有線ネットワークを2.5ギガビット対応にしました。

2.5ギガビット対応ハブ↓を購入し、

ほぼサーバとして稼働しているMac mini(2018)には↓のUSB-Ethernetアダプタ

MacBook Pro(14Inch, 2021)には↓のUSB-Ethernetアダプタ

として一部2.5ギガビット環境を整えました。

Mac miniの共有ディスクにMacBook Proからアクセスして速度をAmorphousDiskMarkで測定しました。

ギガビット環境:

2.5ギガビット環境:

だいたい2倍くらいになりました。

一方、インターネット接続(WAN)の方ですが、こちらも大幅に速度が上がりました。

今までのONU(F660A)では空いている時間帯でも600〜700Mbpsだったと思うのですが、新しいONUで2.5ギガビットで繋ぐと1.6Gbpsくらい出ます。Ethernetの速度向上もありますが、ONU自体の性能も上がっているのでは無いかと思います。1Gbpsを超えることができたのでとりあえず満足です。

WiFiについてもWiFi6に対応しているので期待していたのですが、2階にONUを設置して1階から接続した場合、1階に設置しているWiFi5ルーターに接続した方が速度が出ました。無線については物理的に近くて電波がよく届くことの方が重要なようです。

WiFi6eがこなれてきたらルーターの更新を考えようと思います。

ORICO USB 3.0 ハブ A3H7

7ポートのUSBハブを買いました。

5年くらい↓の10ポートハブを使っていて特に問題なかったんですが、最近たまに電源が切れたり不安定なので買い替えです。

とにかく安定して欲しかったので、ゴツい見た目のこれにしました。

実物は案外小さいです。