関数 ヘルプのドキュメント
PowerShell Coreが提供している関数の機能に関しては前回まででひととおり説明を終えた。今回は関数に書き込むコメントについて取り上げる。
PowerShell Coreでは関数内部または関数の直前にヘルプで表示されるドキュメントをコメントとして書けるようになっている。ある程度関数を使うようになったら、関数にヘルプ向けのドキュメントを書くようにしたい。
ヘルプに出力されるドキュメントはXMLファイルに独立して書いておくこともできる。このあたりは好きな方を使ってもらえればよいが、ここでは関数の中にコメントの形でヘルプのドキュメントを書くお手軽な方法を紹介する。
ヘルプの確認
まず、以前取り上げた関数を、ヘルプのドキュメントを書かない状態で利用するとどうなるかを確認する。
大文字と小文字を変換するDo-FilterTest関数
PS /Users/daichi> function Do-FilterTest
>> {
>> Param([switch]$upper,[switch]$lower)
>>
>> Process
>> {
>> if ($upper) {$_.ToUpper()}
>> elseif ($lower) {$_.ToLower()}
>> else {$_}
>> }
>> }
PS /Users/daichi> "a","B","c","D","e" | Do-FilterTest
a
B
c
D
e
PS /Users/daichi> "a","B","c","D","e" | Do-FilterTest -upper
A
B
C
D
E
PS /Users/daichi> "a","B","c","D","e" | Do-FilterTest -lower
a
b
c
d
e
PS /Users/daichi>
この状態でGet-Helpコマンドレットの引数にDo-FilterTestを指定して実行すると、次のようにほぼ空のヘルプが表示される。
空のDo-FilterTest関数のヘルプ
PS /Users/daichi> Get-Help Do-FilterTest
NAME
Do-FilterTest
SYNTAX
Do-FilterTest [-upper] [-lower]
ALIASES
None
REMARKS
None
PS /Users/daichi>
関数の中にこのヘルプで表示されるドキュメントを追加することができる。
ヘルプドキュメントの記入サンプル
関数の中にヘルプドキュメントを書く方法もいくつかあるが、次のように関数の最後に<# #>で括った領域を用意し、ここにヘルプドキュメントを書くのがわかりやすいのではないだろうか。
「.」キーワードの行でドキュメントの項目を指定し、キーワード行の後にそれに関する説明を追加する。パラメータに関してはキーワードで指定することもできるし、パラメータの前に#に続く形で説明を書くこともできる。
ヘルプドキュメントの記入サンプル
function Do-FilterTest
{
Param(
#大文字変換を指定
[switch]
$upper,
#小文字変換を指定
[switch]
$lower
)
Process
{
if ($upper) {$_.ToUpper()}
elseif ($lower) {$_.ToLower()}
else {$_}
}
<#
.SYNOPSIS
大文字小文字を変換する
.DESCRIPTION
フィルタとして機能し、パラメータの指示に応じて大文字への変換や小文字への変換を実施する
.INPUTS
System.String.
.OUTPUTS
System.String. 変換後の文字列データを出力する
.EXAMPLE
PS> "a","B","c","D","e" | Do-FilterTest -upper
A
B
C
D
E
PS>
.EXAMPLE
PS> "a","B","c","D","e" | Do-FilterTest -lower
a
b
c
d
e
PS>
.LINK
https://news.mynavi.jp/itsearch/article/hardware
#>
}
指定できる主なキーワードは次のとおり。
キーワード | 内容 |
---|---|
.SYNOPSIS | 関数の簡単な説明 |
.DESCRIPTION | 関数の詳しい説明 |
.PARAMETER | パラメータの説明 |
.EXAMPLE | 関数の使用例 |
.INPUTS | パイプで接続できるオブジェクトの型 |
.OUTPUTS | 関数が返すオブジェクトの型 |
.NOTES | 関数に関する追加情報 |
.LINK | 関連するキーワードまたはURI |
.COMPONENT | 関数が使用している技術や機能 |
ヘルプドキュメントを書き込んだ関数をPowerShell Coreに流し込むと、次のようになる。それぞれGet-Helpコマンドレットでヘルプが出力されていることを確認できる。
ヘルプドキュメントがコメントに書き込まれた関数をパース
PS /Users/daichi> function Do-FilterTest
>> {
>> Param(
>> #大文字変換を指定
>> [switch]
>> $upper,
>>
>> #小文字変換を指定
>> [switch]
>> $lower
>> )
>>
>> Process
>> {
>> if ($upper) {$_.ToUpper()}
>> elseif ($lower) {$_.ToLower()}
>> else {$_}
>> }
>>
>> <#
>> .SYNOPSIS
>>
>> 大文字小文字を変換する
>>
>> .DESCRIPTION
>>
>> フィルタとして機能し、パラメータの指示に応じて大文字への変換や小文字への変換を実施する
>>
>> .INPUTS
>>
>> System.String.
>>
>> .OUTPUTS
>>
>> System.String. 変換後の文字列データを出力する
>>
>> .EXAMPLE
>>
>> PS> "a","B","c","D","e" | Do-FilterTest -upper
>> A
>> B
>> C
>> D
>> E
>> PS>
>>
>> .EXAMPLE
>>
>> PS> "a","B","c","D","e" | Do-FilterTest -lower
>> a
>> b
>> c
>> d
>> e
>> PS>
>>
>> .LINK
>>
>> https://news.mynavi.jp/itsearch/article/hardware
>> #>
>> }
PS /Users/daichi>
Get-Helpで書き込んだヘルプドキュメントが表示されている
PS /Users/daichi> Get-Help Do-FilterTest
NAME
Do-FilterTest
SYNOPSIS
大文字小文字を変換する
SYNTAX
Do-FilterTest [-upper] [-lower] [<CommonParameters>]
DESCRIPTION
フィルタとして機能し、パラメータの指示に応じて大文字への変換や小文字への変換を実施する
RELATED LINKS
https://news.mynavi.jp/itsearch/article/hardware
REMARKS
To see the examples, type: "get-help Do-FilterTest -examples".
For more information, type: "get-help Do-FilterTest -detailed".
For technical information, type: "get-help Do-FilterTest -full".
For online help, type: "get-help Do-FilterTest -online"
PS /Users/daichi>
Get-Helpに-examplesパラメータを指定すると実行サンプルが表示される
PS /Users/daichi> Get-Help Do-FilterTest -examples
NAME
Do-FilterTest
SYNOPSIS
大文字小文字を変換する
-------------------------- EXAMPLE 1 --------------------------
PS>"a","B","c","D","e" | Do-FilterTest -upper
A
B
C
D
E
PS>
-------------------------- EXAMPLE 2 --------------------------
PS>"a","B","c","D","e" | Do-FilterTest -lower
a
b
c
d
e
PS>
PS /Users/daichi>
Get-Helpに-detailedパラメータを指定すると、パラメータの説明とサンプルなども表示される
PS /Users/daichi> Get-Help Do-FilterTest -detailed
NAME
Do-FilterTest
SYNOPSIS
大文字小文字を変換する
SYNTAX
Do-FilterTest [-upper] [-lower] [<CommonParameters>]
DESCRIPTION
フィルタとして機能し、パラメータの指示に応じて大文字への変換や小文字への変換を実施する
PARAMETERS
-upper [<SwitchParameter>]
大文字変換を指定
-lower [<SwitchParameter>]
小文字変換を指定
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216)
.
-------------------------- EXAMPLE 1 --------------------------
PS>"a","B","c","D","e" | Do-FilterTest -upper
A
B
C
D
E
PS>
-------------------------- EXAMPLE 2 --------------------------
PS>"a","B","c","D","e" | Do-FilterTest -lower
a
b
c
d
e
PS>
REMARKS
To see the examples, type: "get-help Do-FilterTest -examples".
For more information, type: "get-help Do-FilterTest -detailed".
For technical information, type: "get-help Do-FilterTest -full".
For online help, type: "get-help Do-FilterTest -online"
PS /Users/daichi>
Get-Helpに-fullパラメータを指定すると、さらに多くの情報が表示される
PS /Users/daichi> Get-Help Do-FilterTest -full
NAME
Do-FilterTest
SYNOPSIS
大文字小文字を変換する
SYNTAX
Do-FilterTest [-upper] [-lower] [<CommonParameters>]
DESCRIPTION
フィルタとして機能し、パラメータの指示に応じて大文字への変換や小文字への変換を実施する
PARAMETERS
-upper [<SwitchParameter>]
大文字変換を指定
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
-lower [<SwitchParameter>]
小文字変換を指定
Required? false
Position? named
Default value False
Accept pipeline input? false
Accept wildcard characters? false
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216)
.
INPUTS
System.String.
OUTPUTS
System.String. 変換後の文字列データを出力する
-------------------------- EXAMPLE 1 --------------------------
PS>"a","B","c","D","e" | Do-FilterTest -upper
A
B
C
D
E
PS>
-------------------------- EXAMPLE 2 --------------------------
PS>"a","B","c","D","e" | Do-FilterTest -lower
a
b
c
d
e
PS>
RELATED LINKS
https://news.mynavi.jp/itsearch/article/hardware
PS /Users/daichi>
Get-Helpで-onlineパラメータを指定すると、システムブラウザで.LINKのURIがオープンされる
PS /Users/daichi> Get-Help Do-FilterTest -online
PS /Users/daichi>
こんな感じでヘルプドキュメントを書いておくと、関数のソースコードを読み直さなくても中身の動作がわかるようになる。開発の進め方として、最初にヘルプドキュメントを書いてから、それに沿うように関数の中身を書いていくという方法もある。この方法だとヘルプドキュメントがそのまま仕様書として使えるようになるようなもので、なかなか便利だ。
ヘルプは将来の自分を助けるものだと思って書く癖をつけておくとよい。慣れないとなかなかヘルプドキュメントを書こうとは思わないだろう。
なお、ヘルプは書く位置などに決まりがあるので、他の書き方を知りたい方は「About Comment Based Help」などを参考にしてほしい。