CLI(コマンドラインインタフェース)からのWebサイト探訪の旅に好奇心を持った筆者。今まで、既存の検索サイトからは、探しにくかった多様性ある検索サイトが生成AIを活用すれば一発で探せる。ただ、新たなネットサーフィンは、美しい光景や体験ができる"旅"と同じで、なんらかのアクシデントに遭遇する可能性は増える。

一定のセキュリティを担保した上で、検索サイトで表示されるURLをクリックする際にはURLアドレスを確認するなど、慎重さも忘れないように心構えよう。映画「マトリックス」の世界ではないが、通常使わない情報ルートを選択すると不思議の世界が垣間見えるかもしれない。どちらを選ぶのは自己責任の世界だ。

Webサイトを効率的に探すための課題

前回、"串刺し検索"コマンドで検索情報収集の効率化を図ってみたが、"世界の検索サイト"で探してみると、いろいろ出てくるものだ。想定してなかったGitHub経由で、"メトロポリタン美術館のAPIで作品を表示させる"Webにたどり着き、公式API経由で所蔵するGogh(ゴッホ)の自画像が見られるのは感慨深い。このように知らなかった事柄を複数の検索で多面的に知ることができることが新鮮だ。

一方で、パラメータークエリーでのアクセスに対応してないものや、ハッシュテーブルに登録してみたものの、まったく無用であったということもある。情報登録が「多い」と精査が「疎か」になり、精査を「丹念」にすると情報登録が「少なく」なる。

"串刺し検索"を使いながらデータを拡充していくには?

そう考えて、いろいろと調べると便利なコマンドレットOut-GridViewがあった。

とても便利なOut-GridViewを実装する

Out-GridViewは、シンプルなGUI機能GridViewをコマンドレットで提供するもので、Windows上のPowershell 7以降ではモジュールをインストールせずに標準で使える。現在、串刺し検索コマンド「kensaku-all」は、以下になる。

function kensaku-all {

    param($Query)
    if (-not $Query) {
        Write-Host "検索語を入力してください"
        return
    }

    $kensaku = @{
        "Google:言わずもがなのスタンダードである検索サイト" = "https://www.google.com/search?q="
        "Bing:Microsoft謹製検索サイト。人によってはこちらがいいという話も" = "https://www.bing.com/search?q="
        "Yahoo!:日本国内情報のポータルサイト" = "https://search.yahoo.co.jp/search?p="
        "DuckDuckGo:プライバシー重視の検索エンジン" = "https://duckduckgo.com/?q="
        "Brave Search:独自インデックスの新興検索" = "https://search.brave.com/search?q="
        "Mojeek:英国発。独自クローラ運営にこだわり" = "https://www.mojeek.com/search?q="
        "GitHub Search:こちらもOSSプロジェクト探索。GitHuBの検索エンジン" = "https://github.com/search?q="
        "marginalia:スウェーデンのソフトウェアエンジニアにより開発されたOSSの検索エンジン" = "https://search.marginalia.nu/search?query="
    }

    foreach($engine in $kensaku.Keys){
        $url = $kensaku[$engine] + $Query
        Start-Process $url
    }
}

ここにOut-GridViewを実装するが、ハッシュテーブルのキー(タイトル/検索サイト名)にパイプ(|)で繋ぎGUI表示させ、GUIからユーザーの選択を戻す-PassThruオプションを加えて変数に選択したキーを戻している。-Titleは、表示されるGUIのタイトルを設定できるオプション。


function kensakuselect {
    param($Query)

    if (-not $Query) {
        Write-Host "検索語を入力してください"
        return
    }

    $kensakuall = @{
        "Google:言わずもがなのスタンダードである検索サイト" = "https://www.google.com/search?q="
        "Bing:Microsoft謹製検索サイト。人によってはこちらがいいという話も" = "https://www.bing.com/search?q="
        "Yahoo!:日本国内情報のポータルサイト" = "https://search.yahoo.co.jp/search?p="
        "DuckDuckGo:プライバシー重視の検索エンジン" = "https://duckduckgo.com/?q="
        "Brave Search:独自インデックスの新興検索" = "https://search.brave.com/search?q="
        "Mojeek:英国発。独自クローラ運営にこだわり" = "https://www.mojeek.com/search?q="
        "GitHub Search:こちらもOSSプロジェクト探索。GitHuBの検索エンジン" = "https://github.com/search?q="
        "marginalia:スウェーデンのソフトウェアエンジニアにより開発されたOSSの検索エンジン" = "https://search.marginalia.nu/search?query="

    }

    # GUIで選択(複数選択も可)
    $choices = $kensakuall.Keys | Out-GridView -Title "検索エンジンを選択(複数可)" -PassThru

    foreach ($c in $choices) {
        Start-Process ($kensakuall[$c] + $Query)
    }
}

これを実行すると、

  • Out-GridViewでGUIがたちあがる

    Out-GridViewでGUIがたちあがる

ユーザーは複数項目を選択(Ctrl+クリック)をでき、そのまま[OK]ボタンを押せば選択した検索サイトだけがパラメーターのクエリーで検索する。

  • Out-GridViewでGUIがたちあがる

    Out-GridViewでGUIがたちあがる

こうすることで、検索サイトを大量に設定しても、全部串刺しで開く必要もなくなる。精査しながら検索サイトを攻略することが可能で、こちらの思惑にジャストマッチな便利な機能(コマンドレット)だ。