31
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

湯婆婆Advent Calendar 2020

Day 25

Powershellで湯婆婆を世界中から即時召喚できるようにした

Last updated at Posted at 2020-11-10

あらすじ

湯婆婆シリーズが流行っているらしいです。
Javaで湯婆婆を実装してみる」が元ネタです。
Powershellのものが無いようですね。便乗してみましょう。

***だれにでもインストールできる湯婆婆***です。

※この記事を参考にすると、あなたの編み出した呪文を世界中に広めることが出来るかもしれません。
湯婆婆とは千と千尋の神隠しに登場する魔女です。

#%E6%B9%AF%E5%A9%86%E5%A9%86%E3%81%A8%E3%81%9D%E3%81%AE%E9%96%A2%E4%BF%82%E8%80%85)とは千と千尋の神隠しに登場する魔女です。

湯婆婆のインストール

Powershell上に下記1行をコピペして実行します。
これであなたのコンソールにも湯婆婆がやってきます。
楽しみですね!!

pwsh
Install-Module -Name psyubaba

インストールしようとすると、以下のように聞かれます。

pwsh
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):
  • 「湯婆婆なんて恐ろしくて信頼できない」という慎重な人は、「L」を入力して終了してください。
  • 「どんな奴なのか湯婆婆を試してやろうじゃないか!」という度胸のある人は「A」を入力してください。
  • 「気になるけど湯婆婆はキープで!」という優柔不断なあなたは、「S」を入力してください。

※あなたのPCがインターネットに接続してないと窮屈すぎて湯婆婆が入ってくれません。
PSGalleryMicrosoftが運営するサイトですが、
湯婆婆が起こす問題に関してMicrosoftが責任を取ることは出来かねると思われます。
湯婆婆の取り扱いには充分ご注意ください。

湯婆婆の起動

インストールしたら、この呪文で湯婆婆を起動します。

pwsh
Start-Yubaba

古い湯婆婆をインストール

0.0.1の部分は好きな湯婆婆のバージョンを指定してください。

pwsh
Install-Module -Name psyubaba -RequiredVersion 0.0.1

湯婆婆の更新

もし、古い湯婆婆をインストールした後に、
最新の湯婆婆を使いたくなったら、この呪文を唱えてください。

pwsh
Install-Module -Name psyubaba -Force

古い湯婆婆は消滅し、最新の湯婆婆が手に入ります。

湯婆婆の排除

もし、湯婆婆が必要なくなったら、
この呪文を唱えてください。

pwsh
Uninstall-Module -Name psyubaba

湯婆婆の中身

psm1ファイルが湯婆婆の本体です。
ここに湯婆婆の脳内構造が記録されています。

psyubaba.psm1
function Start-Yubaba {

    Write-Host("契約書だよ。そこに名前を書きな。")

    $keiyakusho=Read-Host
    $name=$keiyakusho

    Write-Host("フン。"+$name +"というのかい。贅沢な名だねぇ。")

    $newNameIndex = Get-Random(($name).Length)
    $newName = $name.Substring($newNameIndex, 1)

    Write-Host("今からお前の名前は"+$newName+"だ。いいかい、"+$newName+"だよ。分かったら返事をするんだ、"+$newName+"!!")
}

psd1ファイルには湯婆婆のメタ情報が記録されています。
湯婆婆のステータスとでも言うべきでしょうか。

psyubaba.psd1
#

#

#

#

#

#

#

@{
ModuleVersion = '0.0.2'
GUID = '5e3c7502-ecaa-4fcd-b8b4-7962d81821ba'
Author = 'shortarrow'
CompanyName = 'shortarrow'
Copyright = '(c) shortarrow. All rights reserved.'
Description = 'yubaba'
NestedModules = @('psyubaba.psm1')
FunctionsToExport = @('Start-Yubaba')
VariablesToExport = '*'
PrivateData = @{
    PSData = @{
        Tags = @('yubaba','湯婆婆','🍄','ghibli')
        LicenseUri = 'https://github.com/ShortArrow/PSYubaba'
        ProjectUri = 'https://github.com/ShortArrow/PSYubaba'
    } # End of PSData hashtable

} # End of PSData hashtable

}

※湯婆婆の中身をまじまじと眺めたい人は、下記の呪文をPowershell上で唱えてください。

pwsh
$env:PSModulePath

これで、最初に出てくる場所に湯婆婆が格納されています。

吉田さん問題

湯婆婆は、田さんに対しては強いですが、

output
契約書だよ。そこに名前を書きな。
吉田
フン。吉田というのかい。贅沢な名だねぇ。
今からお前の名前は吉だ。いいかい、吉だよ。分かったら返事をするんだ、吉!!

𠮷田さんに弱いらしいです。
もうタジタジ・・・。

output
契約書だよ。そこに名前を書きな。
��田
フン。��というのかい。贅沢な名だねぇ。
今からお前の名前は��。いいかい、��よ。分かったら返事をするんだ、、�!�!!

湯婆婆がクラッシュする

契約書にサインしないと湯婆婆は激オコです。

output
契約書だよ。そこに名前を書きな。

フン。というのかい。贅沢な名だねぇ。
Get-Random: C:\Users\take\Documents\PowerShell\Modules\psyubaba\0.0.2\psyubaba.psm1:10
Line |
  10 |      $newNameIndex = Get-Random(($name).Length)
     |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~
     | The Minimum value (0) cannot be greater than or equal to the Maximum value (0).

MethodInvocationException: C:\Users\take\Documents\PowerShell\Modules\psyubaba\0.0.2\psyubaba.psm1:11
Line |
  11 |      $newName = $name.Substring($newNameIndex, 1)
     |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Exception calling "Substring" with "2" argument(s): "Index and length must refer to a location within
     | the string. (Parameter 'length')"

今からお前の名前はだ。いいかい、だよ。分かったら返事をするんだ、!!

※おそらく「おばあちゃんダメここにはお父さんもお母さんもいないもん。」と言うと許してくれます。

湯婆婆の開発にあたり参考にした情報

#Windows-PowerShell-Module-Concepts)

.Net Core SDK

「.Net Core SDK」をインストールしていないと、以下のようなエラーメッセージが出ました。

 Failed to generate the compressed file for module '/usr/local/bin/dotnet failed to pack: error

Dotnet failed to pack' error when trying to publish a powershell module to local repository」によれば、dotnet sdk が必要とのこと。

開発環境のWindows表示言語

Windows OS のユーザーインターフェースの設定が日本語表示になっていると

@PublishPSArtifactUtility_Param Failed to generate the compressed file for module 'Cannot index into a null array.'.

みたいなエラーメッセージが出てアップロードできませんでした。

Failed to generate the compressed file for module 'Cannot index into a null array'.によれば、WindowsのUIの表示言語を変更すればよいとのことでした。

実際にやってみたのが下記画像です。この直後にPCを再起動したらアップロードできました。
image.png

湯婆婆スマッシュ?

現在、PSGalleryの上部には下記のような表示があります。

We are working on fixing the broken package statistics page

日本語訳:壊れたパッケージの統計ページの修正に取り組んでいます。

もしかすると、私が湯婆婆を召喚する呪文をアップロードしてしまったからでしょうか?
PSGallery内で湯婆婆スマッシュが炸裂したのかもしれませんね。

※ちなみに類義語としてラルフスマッシュやハルクスマッシュがあるらしいです。

ぜひ参考にしてみてください。

やって良かったこと

  • 湯婆婆のありがたみを知ることが出来た
  • モジュールを公開する手順を理解できた

モジュール公開を試すモチベーションが無かったのですが、
湯婆婆のおかげで重い腰を上げることが出来ました。
今後はもっと便利なモジュールを公開してOSS貢献しようと思います。

難しい単語を使うと、
ゲーミフィケーションした」というらしいです。
@Nemesis さんに感謝です。

開発環境

  • Windows 10
  • Powershell 7

Excelsior!

31
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?