rcmdnk's blog
Last update

新・実践自動化機構図解集―ものづくりの要素と機械システム

MacでApp Storeのアプリをコマンドラインからインストールする で書いたとおりついにMacで コマンドラインからApp Storeのアプリをインストールできる様になったので これを Brew-file に導入し、必要なコマンドラインツールやアプリを 全てBrewfileを元にBrew-fileでインストールできる様になりました。

Brew-fileでApp Storeのアプリを管理

追記: 2016/02/22

ちょっとバグがあってinitしてもリストにApp Storeのアプリが載らない状態に なってましたが治しました。

追記ここまで

Brew-fileではHomebrewでインストールされるコマンドラインツールはもちろん、 Homebrew-caskでインストールしたアプリも管理できる様になってます。

大概はこれで済むのですが、一部、App Store経由でインストールしてるアプリがあって、 その情報に関してはとりあえず手元にあるものをリストする、 という形をとっていました。

リストには残せますが、他のマシンとかに行ってbrew file installしても

Please install ~ from App Store!

みたいな表示を出すだけでした。

しかし、今回masというコマンドが公開され、これによって コマンドラインからApp Storeのアプリもインストール出来る様になりました。

これを組み込んでBrew-fileでもApp Storeのアプリをインストールできるようにしました。

masでインストールする場合には 各アプリのIDみたいなものが必要ですが、 これはmas listコマンドでアプリとIDの一覧が取得できます。

これを使って、Brew-fileではbrew file initすると、 Brewfileの中に

# App Store applications (Identifier, App Name)
appstore 451732904 App Language Chooser
appstore 430173763 Degrees
appstore 458998390 Farensius
appstore 682658836 GarageBand
appstore 992115977 Image2Icon
appstore 409183694 Keynote
...

みたいなリストが出来ます。

このファイルを他のマシンに持って行って brew file installすればこれらのアプリもインストールできます。

App Storeのアプリをインストールする際、最初だけ App Storeのアカウント認証のダイアログが出てきます。

今のところアプリのIDを取る方法が`mas`を使う方法しかなく、 ちょっと見た感じでどうやって取ってきてるのか分からなかったので、 `mas list`の情報に頼りざるを得ません。 なので、`brew file init`でBrewfileを作ってもらえればそのまま使えますが、 Brewfileを直接書こうとするときにも一度手元にアプリがある状態で `mas`を使って調べないとApp Storeのアプリはかけません。

追記: 2016/02/14

コマンドラインからApp Storeのアプリをインストール - swift life

上のページに書かれてますが、 このIDはApp StoreでのアプリのIDみたいなもので、 アプリのページのURLにこの情報が含まれています。

App Language Chooserなら、

App Language Chooser を Mac App Store で, URL: https://itunes.apple.com/jp/app/line/id451732904

なのでここから調べてBrewfileに書くことも出来ます。

追記ここまで

以前の様に名前だけ書いておいても通りますが、 その場合、cleanの時に削除するかどうかの判断に使われるのと、 installの際にまだインストールされてないアプリがあると、

App Store application must be listed with identifier.
Please try:
    $ brew file init

の様な表示が出るようにしておきました。

追記: 2016/02/13

Travis CIでテストしていたところ、masコマンドが

$ mas
dyld: Library not loaded: /System/Library/PrivateFrameworks/StoreFoundation.framework/Versions/A/StoreFoundation

  Referenced from: /usr/local/bin/mas

  Reason: image not found

みたいなエラーを出していました。 Travis CIのOS Xは10.9(Mavericks)と古いので、そのせいでこのライブラリが無いのか、 もしくはTravis CIではApp Store関連をいじらせないようにするために抜いてあるのかもしれませんが (手元にMavericksはないので分かりません。。。)、

いずれにしろテストでも困るので、使えない場合は 前のようにただ名前だけをリストし、インストールに関しても

Please install <App Name> from App Store!`.

と出すようにしました。 この変更で、もしmasが使える環境でもBrewfileにappstoreでアプリ名 だけがある場合にはbrew file initを試して、という代わりに こちらの表示をさせるようにしました。

追記ここまで

まとめ

これであるマシンの環境をbrew file initでBrewfileを書き出して 他のマシンでbrew file installすることで 一通りアプリ、コマンドラインツールのインストールを行える様になりました。

同期してる様な場合でもApp Storeなアプリも自動で入れられます。 大分便利になった感。

Sponsored Links
Sponsored Links

« mas-cli: MacでApp Storeのアプリをコマンドラインからインストールする Travis CIでのOS X環境について(+Linux環境についても) »

}