じつは粗忽者

富士通のワープロOASYSから親指シフトが大好きです

macOSのApp Storeが表示するアップデート件数を消す

Macを使うにあたり、ユーザは管理権限のあるユーザとないユーザの二種類を用意して、普段は管理権限のないユーザ(以下、「普段使うユーザ」と呼ぶことにします)で雑事・趣味をこなしています。

二台のうちの一台は家人と共用をしているので管理権限のあるユーザを使い分けすることはごく当たり前で、あちこちで推奨されている方法ですが、もう一台は専用なのでユーザを使い分ける必要はないはず。

けれども、そそっかしくてせっかちなので思いつきで設定を変更して「ああ、しまった」な事態を招いてしまったことが多々ありましたので管理権限があるユーザに切り替える手順の間で、「よく考えろよ!馬鹿なことをしようとしているんじゃないのか?」という一呼吸を設けるためにユーザを使い分けています。

アプリのインストールは管理権限があるユーザで行い、Apple IDも管理権限があるユーザのものです。App Storeアプリはアップデート件数を示すバッジを表示しますが普段使うユーザにも表示されます。さらに、App Storeで入手したアプリは一般ユーザでもアップデートができます*1

普段使うユーザに不要な情報は表示したくないので、できれば消す方法を模索することが本記事のテーマです。

アプリのアップデートはどうしているのか

アプリのアップデートは通常は週末に行う定型作業で行います。さすがに最近は起動しない、クラッシュする等々を起こすドツボなアップデートは無くなりました*2が、こんな場面でも「よく考えろよ!馬鹿なことをしようとしているんじゃないのか?」という間が欲しいところです。

そこでバッジを消す方法を探したところ、見つけられずにたどりついた方法です。

自宅環境で試した結果ですので、ご自分の環境で実行される場合は、どうぞ自己責任で行ってください。

 

試行錯誤の記録

その1.google先生に訊いてみる

macOS、AppStore、バッジなどのキーワードでgoogleで検索を行うと、「macOS App Storeのバッチが消えない問題の対処方法」などのいくつかの記事がヒットしました。

softwareupdateコマンドは、High Sierra(10.13)からmacOS本体のアップデートがAppStoreからシステム環境設定に移動したためコマンドの挙動も変わっているはずです。残念!

また、インストールしたアプリのフォルダにある_MASReceiptフォルダを削除するという方法*3もあるようですが、アプリのアップデートのたびに手順を行わなければならない(というよりも、アップデートの有無を自分で調べないとならなくなる)のでこの方法もなしです。残念!!

その2.いきなり奥の手を発動

google先生からアドバイスを受けることかどうやら手詰まりなため、一気に奥の手のdefaultsコマンドを試します。

defaultsコマンドで扱う環境設定のかたまりをドメインと呼ぶそうですが、AppStoreの環境設定は"com.apple.appstored"のようです。

普段使用しているユーザでターミナルアプリを使いdefaultsコマンドを実行してみました。

f:id:LeFennec1765:20211226170206p:plain

日付・時間らしき内容がずらずらと記載されています。

その中にBadgeCountというエントリがあります。

貼り付けてある画像は記事を書くために実行した結果なので値が0ですが、試したときは整数値が記載されていてバッジに表示される数値と同じ値でした。どうやらこのエントリが解決をしてくれそうです。

その3.値を変更する

defaultsコマンドでBadgeCountの値を変更します。

その前に"com.apple.appstored"をcpコマンド等でバックアップすることを忘れずに。

defaults write com.apple.appstored BadgeCount 0

変更後はログアウトして再度ログインします。

バッジに数値が表示されなくなったはずです。

その4.日々の運用に反映する

とりあえず当初の目標は達成することができましたが、アプリのアップデートは日々公開されますので一度設定すればそれでよし!ではないはず。

ユーザのログイン項目でNASのドライブをマウントするシェルスクリプトを実行しているでその中に加えようかと思案していたところ、アプリの新しいアップデートが公開されているにもかかわらず普段使うユーザではバッジが表示されない状態であることに気がつきました。

どうやら、馬鹿なことをしてしまったようです。

その後

環境設定の一部を書きかえたことでApp Storeアプリの動作に支障を来したようですが、普段使うユーザでアップデートの表示をする際*4に若干時間がかかっているように感じる程度でほかには支障はない様子。

ログイン時に実行しているスクリプトに組み込むことはせずに使用しています。

以上、根拠もスキルもないけれど、やってみたらこうなったのご紹介でした。

繰り返しますが、ご自分の環境で実行される場合は、どうぞ自己責任で行ってください。

駄文を末尾まで読んでいただき、ありがとうございました。

*1:この仕組みについてはいつかもう少し詳しく調べてみるつもりです

*2:皆無ではありませんが

*3:例えばこの記事

*4:この操作をさせたくなかったはず