ブラウザには大量の未整理ブックマーク、そしてAIに聞けばおおよそ意に沿ったWebを探せる時代。ブラウザのブックマークを能動的に活用しなくなって随分経つ。しかし、よく使う個別のWebページや発見した新たなWebなどは、別のレイヤーとして記録したい。PowerShellで動作する超簡易ブックマークを作れないだろうか?
Swichで枠組みを試みる
変数にURLを入れておき、 switch構文でStart-Processで変数を起動すればいいと考える。
function bm {
$bookmark1 = "https://news.mynavi.jp"
$bookmark2 = "https://github.com/"
$bookmark3 = "https://google.co.jp"
$A = Read-Host "開くブックマーク名(変数)を入力"
switch ($A) {
"bookmark1" { Start-Process $bookmark1 }
"bookmark2" { Start-Process $bookmark2 }
"bookmark3" { Start-Process $bookmark3 }
}
}
が、ブックマーク変数とURLの対応が頭にないと当然に意味が無い。探してみると、Get-Variableがある。変数名を取得できるコマンドレットでアスタリスク(*)も機能する。
function bm {
$bookmark1 = "https://github.com/"
$bookmark2 = "https://github.com/trending"
$bookmark3 = "https://learn.microsoft.com/"
Get-Variable bookmark*
$A = Read-Host "開くブックマーク名を入力"
switch ($A) {
"bookmark1" { Start-Process $bookmark1 }
"bookmark2" { Start-Process $bookmark2 }
"bookmark3" { Start-Process $bookmark3 }
}
とすれば、bookmark変数を総覧できるので、表示を見ながら入力できる。
配列とループでカイゼンする
一応、目的は達成されるのだが、設定するときの入力が面倒だ。配列を使ってURLを設定するように変える。
$bookmark = @(
"https://news.mynavi.jp"
"https://github.com/"
"https://google.co.jp"
)
また、以下のようにループで表示してやれば、ユーザー入力用の文字を作らなくても自動的に増やしてくれる。
for($i=0; $i -lt $bookmark.Count; $i++) {
Write-Host "$($i+1) : $($bookmark[$i])"
}
超簡単ブックマーク関数
完成させたブックマーク関数が以下になる。
function bm {
$bookmark = @(
"https://news.mynavi.jp"
"https://github.com/"
"https://google.co.jp"
)
for($i=0; $i -lt $bookmark.Count; $i++) {
Write-Host "$($i+1) : $($bookmark[$i])"
}
$choice = Read-Host "番号"
Start-Process $bookmark[$choice-1]
}
ループと配列の簡単な仕組みでも、基本的な機能を作ることが可能だ。シンプルなので、追加の機能を付加したカスタマイズも思いつきやすいはずだ。


