各種プログラミング言語でKoanと呼ばれる学習リソースをみかける事があります。
Koanは禅のKoanに由来して、このような○○はどうなるかと問われてそれを回答していく学習リソースを全般的にkoanと呼ばれるようです。
この呼び方の文化はrubyが発祥? かと思われますが、今現在は色々な所からいろいろな言語のKoanが提供されています。
PowerShellでもそんなKoanを提供しているモジュールが存在しているので、今回はこのモジュールをインストールして学習してみます。
ドキュメント
今回実施する環境
- PowerShell 7.3.0-preview.5
- PSKoans 0.67.1
PSKoansインストールの前提条件
バージョン0.67.1
現在のPSKoansでは依存モジュールとしてPester (= 4.10.1)
となっているため、環境によってはインストール時にPester
モジュールの注意がでてきます。
このような場合では事前にPesterを更新する必要があります。
PowerShell 5.1 と PowerShell 6以上では下記のコマンドでpesterをインストールします(ドキュメントより)
# PS 5.1 (upgrade to latest Pester)
Install-Module Pester -Force -SkipPublisherCheck -Scope CurrentUser -MinimumVersion 5.0.2
# PS 6.0+ (Install Pester under current user)
Install-Module Pester -Scope CurrentUser -MinimumVersion 5.0.2
Pester
はPowerShell 5以降に標準でインストールされるようになったテストフレームワーク。
PSKoansのインストール
PSKoansはPowerShell Gallery/PSKoansで公開されているモジュールとなるためため。
ここからインストールするのが一番手軽です。
Install-Module PSKoans -Scope CurrentUser
ドキュメントにもある通り、今回はCurrentUserスコープにモジュールをインストールしています。
問題を解いてみる
PSKoansでは、コマンドレットを実行すると、これはなんぞやという問い掛けが記載されたスクリプトが提供されるので、これを更新してテストを通していきます。
スクリプトの修正後にテストを実施して、テストが通過すれば問題クリアとなります。
まずは最初の問題をShow-Karma
コマンドレットで表示してみます。
Describing "Equality" has damaged your karma.
がはじまりました。
今回の問題ではAboutAssertions
が0/4となっており、この4つを通過させる必要があります。
Show-Karma -Meditate
コマンドレットで関連付けられたエディタで問題が表示されるので、ここから問題を修正します。
本記事の端末ではvscode
でAboutAsserions.Koans.ps1
が開きました。
Getting Startedに記載がありますが、 PSKoansは問題文を読み、(__ / ____ / $____ / '____')で記載されている部分を修正して、先に進んでいきます。
まず最初に、$____
となっている部分がありました。これが | Should -Be $true
となっているので$____
が$true
になるように更新します。
(なおShould -Be
となる構文はPowerShellテストフレームワークであるPesterの構文)
$____
となっている部分を$true
に更新しました。(問題が簡単すぎてそのまんまですが)
訂正をしたのでコンソールに戻りShow-Karma
コマンドレットを実行します。
AboutAssertions
が1/4
になり、一つ進んだ事がわかります。
最初の問題なので、さくっと訂正。
Should -Be
で記載されている値になるように、訂正箇所を書き換えていきます。
変更後、Show-Karma
を実行してみると先程のDescribing "Equality" has damaged your karma.
からDescribing "Booleans" has damaged your karma.
に進んだ事がわかります。
Show-Karma -Meditate
コマンドレットを実行すると、次の問題に進みます。(AboutBooleans.Koans.ps1)が開く。
Get-PSKoanでトピックを確認してみる
PSKoanで提供されているトピックはGet-PSKoan
コマンドレットから確認する事ができます。
さきほど実施したAboutAssertions 101の他にも色々とトピックスが用意されている事がわかります。
変更した内容をリセットしてみる
スクリプトを色々と編集していて、リセットしたい場合はReset-PSKoan
コマンドレットを実行します。
引数を付けずに実行すると、すべてのトピックに対してリセットするか聞かれるので。
実行する場合は、-Topic
オプションでリセットしたい対象のトピックを指定するのがよいかと思います。
# 一番最初の問題(AboutAssertions)をリセットする場合
Get-PSKoan -Topic AboutAssertions
総評
PSKoansの問題を解いていくと、提示された問題はどう動くのだろう? といった疑問や。
PowerShellにこういった書き方があるのかといった気づきが得られます。
やはり手を動かしながら、テストを満たすようにスクリプトを書き換えるのは学びがあります。
ただし、このモジュール。
対象となるのは PowerShellをある程度さわった事ある かつ テストフレームワークであるPesterの理解が多少は必要となるハードルの高さがあるかと思います。
ハードルの高さはありますが、youtubeにPowerShell Koansを実際に解いている動画もいくつか上がっているので、ここらへんを参照すればどういうすすめていくものかイメージはできるかと思います。