ユニークな検索エンジンを生成AIで探し、ローカルにあるPowerShellから検索を行うというフローをPowerShellプロファイルに書き込んでみたが、さらに効率化する術はないか?と考えると、真っ先に思い浮かぶのが"串刺し検索"である。

AIが浸透した現在では見かけなくなったが、以前は複数サイトを同じキーワードで一括に検索できる串刺し検索サイトを活用することも多かった。今後もユニークな検索エンジンが増えて、これをAIで探し出せれば、手元のコマンドラインから串刺し検索できるコマンドは装備しておきたいところだ。

パラメータで検索する

前回、番号で選択して検索エンジンを既定ブラウザで起動するkensakuコマンドを書いてみたが、検索キーワードもPowerShell上から入力するには、param()関数に引数を渡す形を加える。と同時に検索サイトのアドレスのクエリー部分に対応するURLに書き換える必要がある。各検索サイトによって違うので、量が多いとAIに抜き出してもらう方法もあるが、筆者が試したところ2割くらいが古いものだった。対応していないものや「あなたは人間ですか?」の無礼なチェックボックスにも遭遇するので、実際にアクセスして、使用する検索サイトを選別、抜き出す部分を抽出するのがよい。


function kensaku {

 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="
    }

    $keys = @($kensaku.Keys)
    for($i=0; $i -lt $keys.Count; $i++) {
        Write-Host "$($i+1) : $($keys[$i])"
    }

    $choice = Read-Host "番号"
    $key = $keys[$choice - 1]
    $url = $kensaku[$key] + $Query
    Start-Process $url
}

これを実行すると、検索キーワードを付して検索できるようになる。こっちのほうが機能的であるといえる。

  • 検索キーワードをPowerShell上で得て、ブラウザに渡す

    検索キーワードをPowerShell上で得て、ブラウザに渡す

串刺し索検コマンドを作る

串刺し索検は、キーワードに対して複数の検索サイトで検索することである。であるからして、ユーザー(自身)に入力部分の選択をさせる必要がないので、先のkensaku関数からユーザー入力部分を省き、foreachを使ってパラメーターとハッシュテーブルのURLを結合させる。


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
    }
}

実行させると

  • PowerShell入力で設定した検索サイト分だけタブが瞬時に開く

    PowerShell入力で設定した検索サイト分だけタブが瞬時に開く

個別の検索サイトにアクセスして個別に入力するのと比較するとさすがに圧巻という感じだろうか。パラメーターがわたるが日本語に対応していないものもあるのと開きすぎると重くなるのは、メモリとの相談ということになるが、ハイエンドなPCと横に長い高解像度モニタがあれば、広範な情報探索の旅がはじめられそうである。