Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

WindowsコマンドラインツールScoopのすすめ(基礎編)

More than 1 year has passed since last update.

前提

この記事は下記のような方にお勧めします。

  • WindowsUpdateが適用されているWindows10で開発を行っている
  • PowerShellもちょっと興味がある
  • ツールのインストールが面倒に感じる

"Scoop"というツール

Windowsで開発をなさっている皆さん、"Scoop"というコマンドラインツールをご存知ですか?

Windowsでも開発時にはコマンドラインのツールを使う場面が出てきますが、Windows上ではブラウザからGitHubなどの公式サイトを検索して、インストーラーやZipをダウンロードしてドキュメントの通りにパスや環境変数を設定して…と非常に手間がかかります。それを解決する手段として有力なのが、"Scoop"というツールです。

"Scoop"はWinndows上でDebianのapt-getやRedHatのyumのようなパッケージ管理を行おう、というツールです。1
例えばGitをインストールする場合、コマンドプロンプトまたはPowerShellのコンソールから、scoop install gitと入力するだけでダウンロードからインストール、標準的な初期設定を完了してくれます。

ふと普段は使わないツールが必要になったとき、この手軽さは非常に捗ります。

すぐに使いたい人のためのScoopインストール

ScoopのインストールはPowerShellのスクリプトを使用します。
Windowsキーでスタートメニューを出して、PowerShellを起動します。2
プロンプトが表示されたら、以下のように入力してみます。


iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

これだけでダウンロードとインストールが行われます。
何やら警告が表示される場合3は、以下のコマンドを実行します。


#スクリプトを実行できるようにする
set-executionpolicy remotesigned -scope CurrentUser

このコマンドはPowerShellのスクリプトの実行権限を変更します。こちらの記事が詳しいので、参照してみてください。
確認プロンプト表示されますので、yを押してからもう一度、前述のコマンドを実行します。

こだわりのある人のScoopのインストールのオプション

Scoopと管理されているアプリのインストール場所

上記のデフォルトではScoop本体とアプリはC:\Users\ユーザー名\scoopにインストールされます。インストール前にあらかじめ指定しておくことで、他の場所にインストールすることも可能です。


#code内の角括弧をエスケープしようとしたらバックスラッシュが必要でした。
#本来のコマンドでは行頭のバックスラッシュは必要ありません。
\[environment]::setEnvironmentVariable('SCOOP','D:\Applications\Scoop','User')
$env:SCOOP='D:\Applications\Scoop'
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

環境変数にパスを指定することで、Scoopのインストール場所を変更しています。

基本的な使い方

コマンドプロンプトからもPowershellからも利用できますが、コンソールの使いやすさからPowerShellを利用するのがおすすめです。
基本的にはscoop コマンド名 オプションの構文で使用します。
例えば、最新版のGitをインストールしたい場合は以下の一文で完了します。

PS C:\Users\user> scoop install git

これだけでもScoopが便利なのは実感できますが、Scoopで名前だけ知っているアプリをインストールするような場合を想定して、コマンドを流れにそって説明していきます。

ヘルプコマンド

scoop helpで以下のようにヘルプを表示できます。

PS C:\Users\user> scoop help
Usage: scoop <command> [<args>]

Some useful commands are:

alias       Manage scoop aliases
bucket      Manage Scoop buckets
cache       Show or clear the download cache
checkup     Check for potential problems
cleanup     Cleanup apps by removing old versions
config      Get or set configuration values
create      Create a custom app manifest
depends     List dependencies for an app
export      Exports (an importable) list of installed apps
help        Show help for a command
home        Opens the app homepage
info        Display information about an app
install     Install apps
list        List installed apps
prefix      Returns the path to the specified app
reset       Reset an app to resolve conflicts
search      Search available apps
status      Show status and check for new app versions
uninstall   Uninstall an app
update      Update apps, or Scoop itself
virustotal  Look for app's hash on virustotal.com
which       Locate a shim/executable (similar to 'which' on Linux)


Type 'scoop help <command>' to get help for a specific command.

最後に表示されているように4、各コマンドのヘルプも表示できます。

アプリケーションの検索

scoop search アプリ名でScoopが対応しているアプリを検索できます。部分一致で検索され、所属するバケットも表示されます。
例えばscoop search sshを実行すると以下のような結果が得られます。

PS C:\Users\user> scoop search ssh
'extras' bucket:
    processhacker (2.39)
    winsshterm (2.5.2)

'main' bucket:
    git-with-openssh (2.21.0.windows.1)
    gow (0.8.0) --> includes 'ssh.bat'
    mls-software-openssh (8.0p1-2)
    openssh (7.6p1)
    ssh-copy-id (2015-03-22)
    win32-openssh (7.9.0.0p1-Beta)

'extras'バケットに2種、'main'バケットにいくつか、見知った名前が並びます。
「バケット」については後述します。

アプリケーションの情報表示

scoop info アプリ名でアプリの情報が表示できます。
例としてscoop info opensshは以下のように表示されます。

PS C:\Users\user> scoop info openssh
Name: openssh
Version: 7.6p1
Website: https://www.openssh.com/
License: ISC (https://spdx.org/licenses/ISC.html)
Manifest:
  C:\Users\user\scoop\buckets\main\bucket\openssh.json
Installed: No
Binaries:
   findssl.sh.exe usr/bin/scp.exe usr/bin/sftp.exe usr/bin/ssh.exe usr/bin/ssh-add.exe usr/bin/ssh-agent.exe ssh-copy-id.exe usr/bin/ssh-keygen.exe usr/bin/ssh-keyscan.exe usr/bin/sshd.exe

公式サイトのアドレスやライセンス、同梱されるバイナリの一覧など、目的のアプリの情報が確認できます。
公式サイトのアドレスが表示されるのが個人的にはうれしい機能です。インストール済みのアプリの場合はInstalled:にインストールされたフォルダが表示されます。

アプリのインストール

前述のように、scoop install アプリ名でアプリをインストールすることができます。アプリに他のアプリへの依存性がある場合、それもダウンロードしてインストールしてくれます。

インストールされたアプリの一覧

scoop listで、Scoopを通じてインストールされたアプリの一覧を見ることができます。

PS C:\Users\user> scoop list
Installed apps:

  7zip 19.00
  curl 7.64.0_2
  git 2.21.0.windows.1
  vagrant 2.2.4
  vim 8.1.0540

インストールされたアプリのアップデート

インストールされているアプリをアップデートするためには、scoop updateで、Scoop自体を更新します。このとき、Scoopに登録されているアプリケーションのリポジトリーである「バケット」も更新されます。
以下は、scoop updateを実行したときの例です。

PS C:\Users\user> scoop update
Updating Scoop...
Updating 'main' bucket...
 * 0b8f15e7 ant: Update to version 1.10.6                                2 hours ago
 * f461df00 jx: Update to version 2.0.100                                3 hours ago
 * f819e81b just: Update to version 0.4.3                                7 hours ago
 * 63a1e423 force: Update to version 0.26.3                              11 hours ago
 * 35786e27 aws: Update to version 1.16.154                              13 hours ago
 * 058470df nodejs: Update to version 12.2.0                             15 hours ago
 * a8fc75f0 fnproject: Update to version 0.5.77                          15 hours ago
 * cd197c23 bazel: Update to version 0.25.1                              15 hours ago
 * ff61bf2b jx: Update to version 2.0.99                                 16 hours ago
 * a3ebb585 git-annex: Update to version 7.20190507                      16 hours ago
 * b3f8344c jx: Update to version 2.0.98                                 17 hours ago
 * 14469baf jx: Update to version 2.0.97                                 18 hours ago
 * 29a73fe6 jx: Update to version 2.0.96                                 19 hours ago
 * caa45066 ngrok: hash fix close #37 close #38                          19 hours ago
 * 8ce8b4e0 exiftool: Update to version 11.40                            20 hours ago
 * 187bee7b jx: Update to version 2.0.95                                 22 hours ago
 * 1951e061 ffmpeg-nightly: Update to version 20190507-e25bddf           24 hours ago
 * 9d36936b jx: Update to version 2.0.93                                 25 hours ago
Scoop was updated successfully!

続けて、scoop statusで、インストールされているアプリの更新を確認します。5
下記の場合であれば、curlとvimが更新可能です。

PS C:\Users\user> scoop status
Scoop is up to date.
Updates are available for:
    curl: 7.64.0_2 -> 7.64.1_1
    vim: 8.1.0540 -> 8.1.1286
Everything is ok!

更新できるアプリが確認できたら、scoop update アプリ名でアプリをアップデートします。
とりあえずすべてのアプリをアップデートしたい場合には、scoop update *という使用法もあります。

アプリをアンインストールする

scoop uninstall アプリ名でインストールされたアプリをアンインストールできます。
Scoop自体をアンインストールするときも、scoop uninstall scoopです。

バケットについて

「バケット」はScoopで利用できるアプリを分類したリポジトリーです。初期状態では'main'バケットのみが利用可能となっています。もしも利用したいアプリが'main'バケットに存在しない場合には、scoop bucket add バケット名で別のバケットを追加できます。
Scoopコミュニティで管理されているバケットはbuckets.jsonか、scoop bucket knownコマンドから確認できます。
残念ながら、登録されているアプリを事前に知りたい場合には、今のところbuckets.jsonからそれぞれのリポジトリのbucketフォルダを確認するしかないようです。とはいえ、おおよそのアプリケーションは'extras'バケットを追加すれば見つけることができると思います。

最後に

これで基本的なScoopの使用法は紹介できたかと思います。
コマンドラインだけで数多くのアプリのインストールを完了できるようになるのは魅力的です。また、Scoopでアプリを管理するときの肝となる「バージョン管理編」を公開したいと考えています。しました。


  1. 公式サイトではコマンドラインインストーラーと名乗っていて、パッケージ管理ツールという紹介の仕方はしていません。 

  2. よく使うようになると思いますので「スタートにピン留めする」しておきます 

  3. PoweShellのデフォルトではスクリプトを実行できないようになっているため、過去に設定を変更していない限り警告が出るはずです。 

  4. 詳細というほど詳しくないのでドキュメントの参照をお勧めします。 

  5. 必須の手順ではありませんが、scoop updateのログから探すよりも楽だと思います。 

talesleaves
零細企業の1人SE。インフラから開発まで一人で面倒見てます。 趣味では古くからプログラミングをしており、MSXでZ80のハンドアセンブルをしたりしていました。今は業務でJavaやmysqlをちょっと使っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away