PowerShell (パワーシェル) でもあそぼう 1
〜 PowerShell で Matrix のアレ 〜
2024-11-22 作成 福島
TOP > asob > ps1-anime
[ TIPS | TOYS | OTAKU | LINK | MOVIE | CGI | AvTitle | ConfuTerm | HIST | AnSt | Asob | Shell ]

消えようとするやる気を取り戻す試み

どうこね回したら、こんなにも使いにくいシェルが出来上がるのか理解できない。
つうか「シェル」なんだよね? …Shell という名前なんだから「シェル」を目指して作られたんだよね?

シェルというのはそもそも、オペレーターを楽にさせる道具のはずで、思考をなるべく止めないで基本ソフトの操作をさせるのが使命。
マニュアル操作で痒い所を掻きたいのに、オブジェクト指向で遠回りするなんてナンセンス極まりない。

オフィスのデファクトスタンダードにのし上がった基本ソフトとセットにされた PC は企業では稟議が通りやすい。
おかげでミドルウェア等に予算が回せなくなり、便利なソフトの購入や開発が困難になっている。
アメリカでは投資や寄付の税制が優遇されているが、日本にはそんなものがない。

便利なソフトを買ってもらえないんだから、ありあわせのソフトを補助して使おうとする悪循環が生まれる。
詰め込み型の苦行もいいけど、せめて遊んで取り掛かろう。


1. スクリプト作成

コードは長いけど、ほとんどが表示用データ。動作に関係するのは一番下の 15 行程度。
使い慣れているテキストエディタで打ち込んでください。(Windows なら「メモ帳」でも可)
' ' は空白文字 (スペースキーで入力) です。TAB 文字とは異なるので注意してください。


文字コードは Shift-JIS で保存すること。
ファイル名: animation.ps1
$page = @(
    (   # 1
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 "
    ),
    (   # 2
    "              z  ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 "
    ),
    (   # 3
    "    Z         i  ",
    "              z  ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 "
    ),
    (   # 4
    "G  _[   mS  ( = 3",
    "    Z         i  ",
    "              z  ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 "
    ),
    (   # 5
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3",
    "    Z         i  ",
    "              z  ",
    "                 ",
    "                 ",
    "                 ",
    "                 ",
    "                 "
    ),
    (   # 6
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3",
    "    Z         i  ",
    "              z  ",
    "                 ",
    "                 ",
    "                 ",
    "                 "
    ),
    (   # 7
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3",
    "    Z         i  ",
    "              z  ",
    "                 ",
    "                 ",
    "                 "
    ),
    (   # 8
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3",
    "    Z         i  ",
    "              z  ",
    "                 ",
    "                 "
    ),
    (   # 9
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3",
    "    Z         i  ",
    "              z  ",
    "                 "
    ),
    (   # 10
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3",
    "    Z         i  ",
    "              z  "
    ),
    (   # 11
    "=DbX=U5sUK1dO6I'P",
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3",
    "    Z         i  "
    ),
    (   # 12
    "!F;p6vbv<XTRiOKNi",
    "=DbX=U5sUK1dO6I'P",
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H",
    "G  _[   mS  ( = 3"
    ),
    (   # 13
    "Hsa3_51Iqq]w<)+8[",
    "!F;p6vbv<XTRiOKNi",
    "=DbX=U5sUK1dO6I'P",
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@",
    ":  pGy  YQ  y ] H"
    ),
    (   # 14
    "ab:D3myzTJ|EDZx*Z",
    "Hsa3_51Iqq]w<)+8[",
    "!F;p6vbv<XTRiOKNi",
    "=DbX=U5sUK1dO6I'P",
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w",
    "B VgU8S(E* V/ eu@"
    ),
    (   # 15
    ")0k>JS`$jjvTl8j)gC",
    "ab:D3myzTJ|EDZx*Z",
    "Hsa3_51Iqq]w<)+8[",
    "!F;p6vbv<XTRiOKNi",
    "=DbX=U5sUK1dO6I'P",
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy=",
    "b 2E;XsLT9 xP M!w"
    ),
    (   # 16
    "F*wz0eU;1;_1FgQ*M",
    ")0k>JS`$jjvTl8j)gC",
    "ab:D3myzTJ|EDZx*Z",
    "Hsa3_51Iqq]w<)+8[",
    "!F;p6vbv<XTRiOKNi",
    "=DbX=U5sUK1dO6I'P",
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p",
    "PFRpx(Y_%| 742Oy="
    ),
    (   # 17
    "vG+m/[I*od'_6C;T'",
    "F*wz0eU;1;_1FgQ*M",
    ")0k>JS`$jjvTl8j)gC",
    "ab:D3myzTJ|EDZx*Z",
    "Hsa3_51Iqq]w<)+8[",
    "!F;p6vbv<XTRiOKNi",
    "=DbX=U5sUK1dO6I'P",
    "n_k(z0q@uxV:tY|7p",
    "WrBj*B_Q5;+87u5:p"
    )
)

$CLEAR  = [char]0x1B+"[2J"+[char]0x1B+"[1;1H"   # 画面をクリアする
$GREEN  = [char]0x1B+"[32;40m"     # 文字の色を緑/黒にする
$NORMAL = [char]0x1B+"[0m"         # 文字の色を元に戻す

# すべてのページ分を繰り返す
$pages = $page.length
for ( $n = 0 ; $n -lt $pages ; $n ++ ) {

    # 現在ページのデータを取り出す
    $sheet = $page[$n]

    # 現在ページを描画する
    # Write-Output は改行を抑止できないため、描画とともに画面をクリアする。(Write-Host なら抑止できる)
    Write-Output "$CLEAR-----------------$GREEN"
    $cnt = $sheet.length
    for ( $i = 0 ; $i -lt $cnt ; $i ++ ) {
        Write-Output $sheet[$i]
    }
    Write-Output "$NORMAL-----------------"

    # 0.2 秒間何もしない
    Start-Sleep -Milliseconds 200
}


2. 実行

PowerShell を実行
スタート (右クリック) から「ターミナル」を選択。(Windows10 は「Windows PowerShell(I)」を選択)

− □ × 
 >_ Windows PowerShell ×   + |
 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新機能と改善のために PowerShell をインストールしてください!https://aka.ms/PSWindows  

PS C:\> # animation.php を実行する
PS C:\> # 実行と同時にこの画面はすぐにクリアされる
PS C:\> .\animation.ps1 
-----------------
vG+m/[I*od'_6C;T' F*wz0eU;1;_1FgQ*M )0k>JS$jjvTl8j)gC ab:D3myzTJ|EDZx*Z Hsa3_51Iqq]w<)+8[ !F;p6vbv<XTRiOKNi =DbX=U5sUK1dO6I'P n_k(z0q@uxV:tY|7p WrBj*B_Q5;+87u5:p
----------------- PS C:\> exit

PS C:\> powershell .\animation.ps1
としても実行可能。

Linux 版 PowerShell も同様。
$ pwsh ./animation.ps1