2025年1月5日日曜日

Mac で BlueStacks Air をインストールしアプリを起動する

Mac で BlueStacks Air をインストールしアプリを起動する

概要

Apple Sillicon 上に BlueStacks Air をインストールしアプリを起動するまでの手順を紹介します

環境

  • macOS 15.2 (M2pro mac mini)
  • Bluestacks Air 5.21.660

インストール

まだベータ版です
ここ https://www.bluestacks.com/ja/mac からインストールします

通常の Bluestacks は homebrew でインストールできますが Air は直接ダウンロードしインストールします
ダウンロードした dmg からインストールしましょう

インストールが完了したらアプリーケーション配下に移動した「BlueStacks.app」を起動します

起動すると初回は広告のような動画が流れます
起動すると以下のような画面になります

Google Play へのログイン

必須なのでログインしましょう
ログイン後 Google Play のアップデート処理がかかるので待ちましょう
かなり時間がかかる印象です、1時間は見たほうがいいかもしれません

アプリのインストール

「Search for Games & Apps」から好きなアプリを検索します

どうやらまだ起動できないアプリが多いようです
執筆時点では Pokemon TCG はプレイできませんでした

https://support.bluestacks.com/hc/ja/articles/32942109842061-BlueStacks-AirでPokémon-TCG-Pocketがクラッシュする問題の解決方法

最後に

Apple Sillicon で BlueStacks を動かす場合は Air を使いましょう
ただしまだベータ開発で動作しないアプリがあるようです

2025年1月4日土曜日

iPhone で音声によるご利用はできませんとなり電話がかけられないときの対処法

iPhone で音声によるご利用はできませんとなり電話がかけられないときの対処法

方法

mineo の場合は「5G通信オプションお申し込み」の必要があるようです

環境

  • iPhone14
  • mineo

最後に

SIM の抜き差しや端末の再起動ではなく mineo では特殊なオプションの申し込みが必要でした

自分の場合は数分で設定が完了しました

2025年1月3日金曜日

Mac のストレージが計算中の場合の対処方法

Mac のストレージが計算中の場合の対処方法

概要

なぜかシステムデータの領域と「写真」の領域がずっと計算中の状態で終わりませんでした
再起動やスポットライトの再構築、キャッシュクリア、First Aid、ひたすら待つなど主にやるべき手段はすべて試したのですがダメでした

今回はそのときの対処方法を紹介します

環境

  • macOS 15.2

対処方法

今回のポイントは写真アプリでした
システムデータも計算中なのですが写真も計算中でこっちが怪しいなと思いいろいろ試したらビンゴでした

写真アプリを開き -> 設定 -> 一般 -> システム写真ライブラリとして使用を選択します

これだけです
これで再度ストレージの容量を確認するとすぐに計算が終了しました

最後に

おそらく iCloud との連携部分で計算が終わらない状態だったのだと思います
もし他でも計算中の場合は一度 iCloud との同期の設定を見直すといいかなと思います

2025年1月2日木曜日

shell で重複行を見つける方法

shell で重複行を見つける方法

コマンド

cat Pipfile |  sort -n | uniq -d

これで何も表示されなければ重複行はありません

2025年1月1日水曜日

HammerSpoon 同一アプリで複数ウィンドウを開いている場合にそれぞれのウィンドウを制御する方法

HammerSpoon 同一アプリで複数ウィンドウを開いている場合にそれぞれのウィンドウを制御する方法

概要

アプリ名で絞り込んでからウィンドウの一覧を取得する方法もありますがプロセスとして独立してる場合にはそれだと取得できないことがあるのですべてのアプリを取得してからアプリ名でウィンドウを絞り込み操作します

環境

  • macOS 15.2
  • HammerSpoon 1.0.0

サンプルコード

hs.hotkey.bind({"cmd", "alt"}, "S", function()
    -- hs.applicatoin.find -> app:allWindows ではミューレータを検知できないのですべてのアプリを取得してからアプリ名で対象のウィンドウを絞り込む
    local activeWindows = {}
    local apps = hs.application.runningApplications()
    for _, app in ipairs(apps) do
        if app:name() == "MuMu Android Device" then
            local windows = app:allWindows()
            for i, win in ipairs(windows) do
                table.insert(activeWindows, win)
            end
        end
    end

    -- 各ウィンドウにサイズと位置を指定、左上の角が指定したX/Yの開始位置
    local width = 275
    local height = 527
    local center_device_x = 960 - (275 / 2)
    local toolbar_mergin_height = 25
    local positions = {
        -- 上段
        {x = center_device_x, y = 0, w = width, h = height},
        {x = center_device_x - width, y = 0, w = width, h = height},
        {x = center_device_x + width, y = 0, w = width, h = height},
        {x = center_device_x - (width * 2), y = 0, w = width, h = height},
        {x = center_device_x + (width * 2), y = 0, w = width, h = height},
        -- 下段
        {x = center_device_x, y = height + toolbar_mergin_height, w = width, h = height},
        {x = center_device_x - width, y = height + toolbar_mergin_height, w = width, h = height},
        {x = center_device_x + width, y = height + toolbar_mergin_height, w = width, h = height},
        {x = center_device_x - (width * 2), y = height + toolbar_mergin_height, w = width, h = height},
        {x = center_device_x + (width * 2), y = height + toolbar_mergin_height, w = width, h = height},
    }

    for i, win in ipairs(activeWindows) do
        if positions[i] then
            win:setFrame(positions[i])
        end
    end
end)

最後に

制御するウィンドウをハッシュに登録してあとからウィンドウを操作するようにしています