見出し画像

開発者注目! Microsoft Build 2020 の最新トピック:実行環境&自動化編

Microsoft 主催のデベロッパー向け年次イベント「Microsoft Build」をご存知でしょうか?

・ イベントサイト(英語) https://mybuild.microsoft.com/
・ 動画サイト(英語) https://channel9.msdn.com/Events/Build/2020
※ この記事の図はすべて上記サイトから引用しています。

Windows や Azure や Visual Studio といった Microsoft 関連技術のアップデートやプレスリリースが集中する、とても重要なイベントです。
毎年この時期は、イベント参加のために、世界中のソフトウェアエンジニアがシアトルに集まります。
例年だと参加費と渡航宿泊費が高額なため躊躇していたんですが(参加費だけで 20 万円?高い!)、先日の「Microsoft Build 2020」はオンライン開催 かつ 参加無料でした。
そのおかげで、初めて参加することができました。

今回も 600 を超えるセッションを通じて、とてもたくさんの発表がありました。
この記事では その中から Windows 10 環境で使えるツールを中心に、耳寄りなトピックを紹介します。
題して「実行環境&自動化編」です。
ソフトウェアエンジニアならば「これは使えそう!」「めっちゃ楽チンw」と共感していただけるものばかりです

※ ここで紹介するソフトウェアや機能の一部はまだリリースされていません。Windows Insider Program への応募により使えるものも含まれます。

Windows Terminal [preview today]

画像4

・ これは何か → 統合されたターミナルウインドウ
・ wt コマンドで起動
・ タブのサポート
・ GPU によるテキストレンダリング
・ オープンソースプロジェクト
・ 紹介セッション: The new Windows command-line: Windows Terminal and WSL 2
・ 概要: https://docs.microsoft.com/ja-jp/windows/terminal/

Windows のシェルと言えば以下のものが主流です。

・ Command Prompt
・ Windows PowerShell
・ Bash on Ubuntu on Windows

他にもサードパーティー製のものも存在します(Git Bash など)。
これらのシェルは Start Menu から呼び出す段階で使い分ける必要がありました。
それらが Windows Terminal(の「プロファイル」)によって統合されました。

画像5

個人的には PowerShell しか使っていないのですが、それでもタブが複数開けるという点にはメリットを感じます。
いずれ GA リリースされたら、使用感などをお伝えしたいなと思います。

WSL 2: Windows Subsystem for Linux 2 [launch today]

画像1

・ これは何か → Windows 10 上で Linux Kernel/Distro を動作させる WSL の後継
・ 100% のシステムコール互換性(Windows カーネルに対して?)
・ システムコール(特に Disk I/O)のスループットが向上(約 2~5 倍に?)
・ wsl コマンドで起動
・ Linux GUI アプリも起動可能
・ GPU Compute も動作する
・ WSL 1 との相互運用性: wsl --export/--import
・ Linux Distro 配下のファイル参照も可能: \\wsl$\Ubuntu-18.04\home\\<username>\Project
・ 紹介セッション: The new Windows command-line: Windows Terminal and WSL 2
・ 概要: https://docs.microsoft.com/ja-jp/windows/wsl/compare-versions

WSL 2 では実用性がかなり改善されたようです。
Disk I/O の改善によって、WSL 上での git アクセスやコンパイル時間の短縮などが見込めます
このあたりのパフォーマンスに対する執着と努力は、Microsoft らしさを感じます。

そして eog や gedit や mpv といった Linux 向けの GUI アプリが、WSL 2 上で動作するようになりました。
ライブデモでは、スタイルの異なるウインドウが同居していました。
(下図は eog のウインドウで、GTK スタイルです)

画像2

Windows 上で Linux の GUI アプリを開発できるのは、一部のデベロッパーには嬉しい機能でしょう。
一度評価してみることをお勧めします。
なお GUI アプリの起動前には、WSL 2 上でウインドウマネージャー wayland を起動しておく必要があるようです。

WSL 2 上のプロセスから GPU の利用が可能になったのも大きなニュースです。
セッション中に行われたデモでは、tensorflow で実装された機械学習モデルのトレーニング中に、タスクマネージャーの GPU Load が上昇しているのが確認できました(しかも AMD の APU)。

画像4

機械学習分野の研究やフレームワークの主戦場は相変わらず Linux であり、公開されるコードベースも多くが Linux 環境前提となっているのが現状です。
機械学習ブームに乗り遅れまいと「手元の Windows 10 上で、それらのコードを追試したい」というデベロッパーも少なくないので(私見?)、この進歩はありがたいのではないでしょうか。
Docker Desktop for Windows の登場以降は「WSL を使うべきユースケース」というものは激減していたように感じていましたが、WSL 2 の登場で今後はもうひとつの選択肢になるかもしれません。

Windows Package Manager

画像6

・ これは何か → Windows 上で動作するアプリケーションのパッケージマネージャー
・ winget コマンドで起動
・ manifest ファイルに従ってインストール/アンインストールを実行可能
・ 紹介セッション: Get started with Windows Package Manager
・ 概要: https://docs.microsoft.com/en-us/windows/package-manager/

Windows にはサードパーティー製アプリケーションを管理する公式パッケージマネージャーはありませんでした。
GUI ならば「Windows Settings → Apps → Apps&features」で管理は可能ですが、多くのソフトウェアエンジニアはスクリプトで管理したいなと感じていました
それを実現するのが Windows Package Manager、通称 winget です。
Linux Distro における apt や yum と同じ感覚で使えます

winget は、アプリケーションの内容やインストール方法を指定するための manifest に従って動作します。
manifest は Marketplace から入手する方法と、localhost 上のパスで指定する方法とがあるようです。
Windows Store Apps や Install Shield をはじめとして基本的なインストール形式には対応しているそうで、プログラミング環境構築手順の統一化やキッティング簡素化への応用が期待できます。

※ ちなみに Chocolatey の扱いは協議中とのこと。

Win Automation

画像7

・ これは何か → オフラインで使えるコードいらずの RPA ツール
・ Windows 上での GUI 操作を「記録」して「再生」できる
・ コードやスクリプトの学習をしなくても始められる
・ ステップ実行も可能
・ 紹介セッション: Intelligent process automation with Power Automate
・ 概要: https://docs.microsoft.com/en-us/power-automate/ui-flows/create-processes

RPA で見落とされがちな要件のひとつは、エンジニアでない利用者自らの手でタスクフローを定義できることではないでしょうか。
Win Automation はその要件を満たしながら、操作対象ソフトウェアの UI 変更に耐性があるのが特徴のようです。

キッティングにおける細かい設定変更を自動化するのにも使えそうで、ソフトウェアエンジニア目線でもとても興味があるところです。
(どうやら有償の Power Automate RPA 契約が必要のようなので、筆者はしばらく試す機会には恵まれそうにありません)

なおこのセッションでは、Power Automate の使い方についても説明していました。
Power Automate(旧 Microsoft Flow)は Web サービス同士をつなげてデータ処理フローを定義できるサービスです。

有償プランのプラグインを使うと、例えば

自分宛てに届くメールに添付されている請求書(PDF)から、
1) OCR で注文番号や商品リストや合計額を読み取って、
2) 「必要事項が記入されているかどうか」や「特定項目の内容に不備が無いか」をチェックして、
3-1) それらを Excel ファイルの一覧表に追記するか、
3-2) 記入の不備がある旨をメール返信する

みたいなことがプログラミング言語を使わずに タスクフローとして定義できます
すごい!

画像8

Microsoft 365(旧 Office 365)を契約している企業であれば、Power Automate は無償で始められます。

この記事が気に入ったらサポートをしてみませんか?