scoop search をもっと快適にしたい!

<!-- title: scoop search をもっと快適にしたい!  -->

皆さん scoop 使ってますか?!    
今回は皆さんの scoop ライフを少しだけよくできるかもしれないものについてです!


忙しい方は [じゃあいいとこどりをすればいいじゃないか!](#じゃあいいとこどりをすればいいじゃないか) までどうぞ


# scoop search ちょっとだけ遅く感じませんか?

皆さん、 scoop アプリケーションを探すときにまず `scoop search` を使われる人が多いかと思います。   
そんな中でこんなこと思ったことありませんか?

> ちょっと scoop search 重いな...

かくいう私も、何のソフトか忘れましたが、あるソフトを探すときに数分かかった経験がありました。


# scoop search で出てきたものが本物か疑いたくなる

そしてやっと出てきた検索結果を見ても、なんだか情報が少なくて本当に目当てのソフトであるか心配になったりします。

例えば以下は `scoop search rust` で検索した画面です。   
たぶん `rust 1.79.0 main` というものが目当てのものなのでしょうが、いかんせん情報が少なくて本当にあっているか心配になります。

![rust-cli.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3466460/b13bfd0f-b297-3d85-df89-8b24dfbb4d75.png)
<!-- ![rust-cli.PNG](./img/rust-cli.PNG) -->


しっかりと情報を取るためには `scoop info` を使って詳細を取得する必要があります。

```poweshell
> scoop info rust


Name        : rust
Description : A language empowering everyone to build reliable and efficient software. (MSVC toolchain)
Version     : 1.79.0
Bucket      : main
Website     : https://www.rust-lang.org
License     : MIT|Apache-2.0
Updated at  : 2024/06/14 1:29:18
Updated by  : github-actions[bot]
Binaries    : bin\rustc.exe | bin\rustdoc.exe | bin\cargo.exe
Notes       : Use the rustup package instead for easier management of multiple toolchains, including beta/nightly relea
              ses.
              According to https://doc.rust-lang.org/book/ch01-01-installation.html#installing-rustup-on-windows
              Microsoft C++ Build Tools is needed and can be downloaded here: https://visualstudio.microsoft.com/visual
              -cpp-build-tools/
              When installing build tools, these two components should be selected:
              - MSVC - VS C++ x64/x86 build tools
              - Windows SDK
```

これを重ねてやるには少しだけ面倒くさいです...


# scoop search には実は分かりやすい web 版がある!

ここで皆さんに朗報です!!

実は `scoop search` には Web版があるのです。   
それがこちら [https://scoop.sh/#/apps](https://scoop.sh/#/apps) です!

試しに `rust` で検索してみると...
![rust-web.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3466460/cde1b5b9-3b64-7903-fad4-94d5863cf141.png)
<!-- ![rust-web.PNG](./img/rust-web.PNG) -->
**めちゃめちゃ高速に結果がでてしかもわかりやすくなっています!**

その検索時間僅か1秒ほど(ちなみに先ほどの cli だと10秒以上かかっていました...)

しかしせっかくの cli アプリケーション、**できれば検索してクリックして... なんて面倒なことはしたくないんです!!!**


# じゃあいいとこどりをすればいいじゃないか!

というわけで本題です。お待たせいたしました。

今回は cli 風のインタフェースはそのままに結果だけブラウザでわかりやすく表示するということを目指します!

結論としては以下のプログラムを `$PROFILE` に書けばオッケーです!  
(`$PROFILE` については[この記事](https://qiita.com/smicle/items/0ca4e6ae14ea92000d18)がわかりやすいです)
```powershell
# "scoop search" on the web
function scoop-search-web(){
	$q = $args -join "+"            # 引数受け取り、結合
	$url = "https://scoop.sh/#/apps?q="+$q  # クエリ合成
	start $url                      # デフォルトブラウザで開く
}
```

解説
- `$args` で可変長の引数を受取り、`+` で結合します。
- url とクエリを合成します
- 最後に `start` コマンドでデフォルトブラウザを開きます


使用例
```
> scoop-search-web rust 
# デフォルトブラウザで https://scoop.sh/#/apps?p=rust を開いて検索
```


また複数キーワードにも対応しています!
```
> scoop-search-web rust night
```


# 最後に

いかがだったでしょうか?

ほんの少しだけでも皆さんの scoop ライフがよりよくなることを願っています。

## 実は

実はこのウェブサイトも内部的にとある api を使っているようで、検索結果を JSON で返してもらっています。なのでうまくやればターミナルから離れることなく検索できるのかもしれません。
**しかしながら** あくまでも公式に提供されているのはこのウェブインタフェースであり、実際にやることを私は推奨しません。まあどちらにしても公式のインタフェースなのでしっかりとそこら辺はできないようにガードしているでしょう。試していないのでわかりませんが。