【登壇】Interact 2019でPowerShell CoreとPowerShell 7についてお話してきました #msinteract19 #IN06

2019.06.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

2019年6月29日に開催されたInteract 2019で「PowerShell CoreからPowerShell 7に至る道」というタイトルで登壇しました。

Interactは主催のうるしまさんのもと多くのWindows、Microsoft製品インフラ系コミュニティが集まりお祭りみたいなイベントやろうぜと始まった個人主催のイベントで今回で6回目となります。
回を追うごとに規模も大きくなり今回は全30セッション+2 Extend Session、参加者も申し込み時点で350人超えという規模になっています。

概要

【セッションタイトル】
PowerShell CoreからPowerShell 7に至る道

【セッション概要】
2016年にPowerShellがオープンソースとなってから早3年。 現在はPowerShell Core 6としてWindowsだけでなくLinuxやmacOSでも動作するクロスプラットフォームなアプリケーションとなっています。そして、つい先日メジャーバージョンアップとなるPowerShell 7のロードマップが発表されました。  
本セッションではPowerShell Coreを改めておさらいし、PowerShell 7が目指しているものについてお話します。

登壇資料

発表で使用したスライドはSpeaker Deckに上げています。

デモで使用したコードはGitHubにアップしています。

PowerShell CoreからPowerShell 7に至る道

セッション全体の流れとしてはPowerShellの歴史を追いながらPowerShell Coreの誕生から現在最新のPowerShellであるPowerShell Core 6.xについて触れ、さいごに先日ロードマップが発表されたPowerShell 7について説明する流れとしました。

PowerShell Coreの誕生

PowerShell Coreの前提として.NET Coreの誕生があり、この.NET Coreを基盤としたNano ServerのPowerShell(PowerShell 5.1 Core Edition)がはじめにありました。そこからPowerShellがオープンソースのプロジェクトとなりPowerShell Core 6.xとして従来のPowerShell(Windows PowerShell)とは枝分かれする形で発展し今に至っています。

セッションでお伝えしなかった重要な点として、Windows PowerShellとPowerShell Coreは併用可能です。
Windows環境であれば既存のPowerShellはそのままにPowerShell Coreを追加でインストールして使ってみることができますので、PowerShell Coreを使ったことが無い方は"とりあえず"でよいのでインストールして使ってみてください。

PowerShell Core 6.x

現在最新のPowerShellであるPowerShell Core 6.xの機能紹介をしました。
こちらはセッション中でお伝えした様に以下の記事に詳細を書いていますのでぜひご覧ください。

PowerShellの目指すところ

オープンソースとなりクロスプラットフォームなアプリケーションとなったPowerShellの目指すところとしてJeffrey Snover御大のキーノートからその内容を引用しました。

この他に以前の登壇でもPowerShellの未来について触れているので、よろしければこちらの記事もご覧ください。

PowerShell 7に至る道

PowerShell 7についてはPowerShell Teamのアナウンスをベースにしています。
Developers.IOで解説記事を書いていますので詳しい内容については以下をご覧ください。

デモについて

セッションでは以下の2つのデモを紹介しました。

1. PowerShell Core 6.x 新機能

PowerShell Core 6.0~6.2の新機能からスライドで紹介したものについて簡単なデモを紹介しました。
コマンドを実行してその結果を確認するだけと非常に地味なので少しネタ寄りにしたのですがそれでも地味でした...
今後はより上手い見せ方を考えていきたいです。

# お見せしたデモコード(抜粋)
# ※ nkf をインストールしたUnbuntu環境で実施

# 03. エンコーディング回り
"平成生まれ" > ./natural-born-heisei.txt
nkf --guess ./natural-born-heisei.txt
"平成生まれ2" | Out-File ./natural-born-heisei2.txt
nkf --guess ./natural-born-heisei2.txt

$encoding = [Text.Encoding]::GetEncoding(51932)
"平成生まれ3" | Out-File -FilePath ./natural-born-heisei3.txt -Encoding $encoding
nkf --guess ./natural-born-heisei3.txt

# 04. & によるジョブ実行
$title = "パンクティーンエイジガールデスロックンロールヘブン"
Write-Output "$title すき" &
Get-Job | Receive-Job

#
# PowerShell Core 6.2 新機能
#
Get-ExperimentalFeature
Enable-ExperimentalFeature -Name PSTempDrive -Scope CurrentUser
# コンソールを再起動
Get-PSDrive 
Get-PSDrive -Name Temp
dir Temp:\

それはそれとしてデモで触れた平成生まれやその他ハトポポコ作品はどれも非常に面白いのでおススメです。マストバイ。

2. PowerShell Lambda

クラウド管理の例としてPowerShell Lambdaを使い特定のタグ(AutoShutdown = true)が付いたEC2インスタンスを停止させる関数を紹介しました。
こちらはPython(boto3)を使った例がAWS公式ドキュメントやDevelopers.IOで紹介されており、AWS的にはあるあるな内容かと思います。

デモの際は実行しませんでしたが、Lambdaの環境構築コードも公開しています。
こちらの詳細については別記事で紹介したいと思います。

【2019.07.08追記】

デモに対する解説記事を書きました。

【登壇】Interact 2019で紹介したデモ(PowerShell Lambda)の解説 #msinteract19 #IN06

【追記ここまで】

最後に

緊張しすぎてあらかじめ練習していたシナリオがいくつか飛んでしまいました...
加えてマイクの調子が悪かったのもありセッションに参加してくれた方からするとお聞き苦しいところがあったかもしれません。

それでもお伝えしたいことはお話することができました。
このセッションのなかで一つでも得るものがあったのであれば非常に嬉しいです。