PowerShell 7.0.0 Preview6新機能 - ヌル条件演算子

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第81回】PowerShell 7.0.0 Preview6新機能 - ヌル条件演算子

[2020/01/10 08:00]後藤大地 ブックマーク ブックマーク

PowerShell 7.0.0 Preview5の段階で、変数がヌル(NULL)かどうかで挙動を変える「ヌル合体演算子」と「ヌル合体代入演算子」という2つの演算子が導入された。この演算子を使用すると、従来よりもコーディングが短くわかりやすくなるという利点がある。同様の機能はほかのプログラミング言語にも存在しており、ユーザーからの要望を受けて取り入れられたものだと考えられる。

PowerShell 7.0.0 Preview6にはこうしたヌル系の機能として新しく「ヌル条件演算子」という機能が取り込まれた。記述方法はヌル合体演算子やヌル合体代入演算子と共通性があり、「?」が使われている。現段階ではまだ実験的な機能という扱いだが、このままいくとそう遠くない段階で正式な機能として有効化されることが見込まれる。今、このタイミングで取り上げておくのはよい頃合いだろう。

メンバプロパティやメソッドアクセスに対する「?」

実験に使った環境

「f」という変数があったとして、この変数に開いたファイルオブジェクトが入っていると仮定する。この場合、${f}.OpenText().ReadToEnd()とすればファイルの中身が標準出力に表示されることになるわけだが、${f}がヌルだとこの処理はエラーになる。次のような感じだ。

変数がヌルなのでメソッドはコールできない

ここでヌル条件演算子を使ってみる。この機能は実験的機能と位置づけられているので使用するにはまず機能を有効化する必要がある。それには、「Enable-ExperimentalFeature -Name PSNullConditionalOperators」と実行すればよい。こうすると、${f}?.やOpenText()?.のように、メンバプロパティやメソッドアクセスの「.」の前に「?」を指定することができるようになる。この指定がなされた場合、対象がヌルだった場合には処理がエラーにならずにそのままスルーされるようになる。

ヌル条件演算子を有効化して使ってみる

ちなみに、ヌル条件演算子が有効になっていない状態でこの機能を使おうとすると、次のようなエラーメッセージが表示される。

ヌル条件演算子が無効な状態で利用した場合のエラーメッセージサンプル

動作を確認するために、fにファイルを開いて割り当ててみる。

変数fにファイルを開いて割り当てる

この状態なら「${f}?.OpenText()?.ReadToEnd()」でも「${f}.OpenText().ReadToEnd()」でも同じ動作をする。「${f}」に明示的にヌルを代入してから同じ処理を行うと、「${f}.OpenText().ReadToEnd()」はエラーとなり、「${f}?.OpenText()?.ReadToEnd()」は処理がスルーされることを確認できる。

ヌル条件演算子の動作確認

このように、ヌル条件演算子を利用するとコーダーが何をしようとしていたのかが明確になる。if制御構文を使っても当然同じことはできるが、大きな違いはコードが短くて済むということだろう。

配列に対する「?」

ヌル条件演算子は配列に対しても使用できる。配列に対して使ったサンプルを次に示す。

ヌル条件演算子を配列に対して使ったところ

対象がヌルだった場合の分岐コードを全て記述すると、かなり煩雑なソースコードになってくる。ヌル条件演算子が正式な機能となれば、この部分の記述を簡潔に済ませられるようになる。いつ正式な機能となるのか、はたまたこのまま実験的機能として消えていくのかはまだわからないが、有益な機能であることは確かなので、今後の動向を見守りたい。

なお、繰り返しになるが、ヌル条件演算子は今のところ実験的な機能だ。そのため、一旦機能を有効にしてもPowerShellを終了するとその設定はクリアされてしまう。この機能を使うのであればPowerShellを起動するごとに「Enable-ExperimentalFeature -Name PSNullConditionalOperators」と実行して機能を有効化する必要があることを忘れないようにしておこう。

参考資料

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
対話システムをつくろう! Python超入門
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
PowerShell Core入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る