LoginSignup
2
1

More than 1 year has passed since last update.

PowerShell KoansでPowerShellの学習をしてみる

Posted at

各種プログラミング言語でKoanと呼ばれる学習リソースをみかける事があります。

Koanは禅のKoanに由来して、このような○○はどうなるかと問われてそれを回答していく学習リソースを全般的にkoanと呼ばれるようです。

この呼び方の文化はrubyが発祥? かと思われますが、今現在は色々な所からいろいろな言語のKoanが提供されています。

PowerShellでもそんなKoanを提供しているモジュールが存在しているので、今回はこのモジュールをインストールして学習してみます。

ドキュメント

vexx32/PSKoans

今回実施する環境

  • 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スコープにモジュールをインストールしています。

image.png

問題を解いてみる

PSKoansでは、コマンドレットを実行すると、これはなんぞやという問い掛けが記載されたスクリプトが提供されるので、これを更新してテストを通していきます。

スクリプトの修正後にテストを実施して、テストが通過すれば問題クリアとなります。

まずは最初の問題をShow-Karmaコマンドレットで表示してみます。

image.png

Describing "Equality" has damaged your karma.がはじまりました。

今回の問題ではAboutAssertionsが0/4となっており、この4つを通過させる必要があります。

Show-Karma -Meditateコマンドレットで関連付けられたエディタで問題が表示されるので、ここから問題を修正します。

本記事の端末ではvscodeAboutAsserions.Koans.ps1が開きました。

image.png

Getting Startedに記載がありますが、 PSKoansは問題文を読み、(__ / ____ / $____ / '____')で記載されている部分を修正して、先に進んでいきます。

image.png

まず最初に、$____となっている部分がありました。これが | Should -Be $trueとなっているので$____$trueになるように更新します。
(なおShould -Beとなる構文はPowerShellテストフレームワークであるPesterの構文)

Pester / Should

image.png

$____となっている部分を$trueに更新しました。(問題が簡単すぎてそのまんまですが)

訂正をしたのでコンソールに戻りShow-Karmaコマンドレットを実行します。

image.png

AboutAssertions1/4になり、一つ進んだ事がわかります。

最初の問題なので、さくっと訂正。
Should -Beで記載されている値になるように、訂正箇所を書き換えていきます。

image.png

変更後、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の他にも色々とトピックスが用意されている事がわかります。

image.png

変更した内容をリセットしてみる

スクリプトを色々と編集していて、リセットしたい場合はReset-PSKoanコマンドレットを実行します。

引数を付けずに実行すると、すべてのトピックに対してリセットするか聞かれるので。
実行する場合は、-Topicオプションでリセットしたい対象のトピックを指定するのがよいかと思います。

# 一番最初の問題(AboutAssertions)をリセットする場合
Get-PSKoan -Topic AboutAssertions

総評

PSKoansの問題を解いていくと、提示された問題はどう動くのだろう? といった疑問や。
PowerShellにこういった書き方があるのかといった気づきが得られます。

やはり手を動かしながら、テストを満たすようにスクリプトを書き換えるのは学びがあります。

ただし、このモジュール。

対象となるのは PowerShellをある程度さわった事ある かつ テストフレームワークであるPesterの理解が多少は必要となるハードルの高さがあるかと思います。

ハードルの高さはありますが、youtubeにPowerShell Koansを実際に解いている動画もいくつか上がっているので、ここらへんを参照すればどういうすすめていくものかイメージはできるかと思います。

2
1
0

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
2
1