Pandora Pocket

IT系と日常系の備忘録。三日坊主。

Windows Package Managerに思うこと

日本時間5月20日0時から始まったMicrosoftのBuildで、Windows Package Managerが発表されました。

コマンドラインインターフェイスなパッケージマネージャです。

Linuxディストリビューションはaptやyum(たくさんありすぎてちゃんと把握してない)といったパッケージマネージャが、MacでもHomebrewなどのパッケージ管理システムが存在しているわけですが、WindowsはWindows 8までMicrosoft公式のアプリケーションパッケージマネージャはありませんでした。
Windows 8からストアアプリの配布を行うMicrosoft StoreアプリはWindows 10に至るまで存在しているわけですが、残念ながら成功しているとは思えません。

これはストアアプリとして公開するための手順が複雑であったこと、DesktopBridgeができるまでUWP形式のものしか基本的に公開できなかったこと、そしてセキュリティ上の問題を取り除くためにがちがちにできることを制限したことが原因だと私は解釈しています。

また、個人的にはWindows再インストール時に復元してくれず、マイアプリ欄から一つ一つインストールしなおす必要がある(コマンドラインのインストール手段がないのでスクリプト化できない)のも不満があります。

MS公式のパッケージマネジャーとしてはコマンドラインインターフェイスのPackage Management(OneGet)がWindows 10になってから公開されたのですが、こちらも瞬間話題になったような気がするものの、あっという間にすたれた印象です。

非公式なパッケージマネージャとしてChocolateyやScoopがあります。
こちらはなかなか活発に活動しているようで、実際環境構築時に使っているのですが、やはり公式外ということで一抹の不安はあります。
また、ChocolateyはUAC問題、Scoopはユーザー領域にインストールするのでUAC問題は基本的にないものの、Chocolateyに対してパッケージ数で劣ります。
またリポジトリ公開者=開発者ではないので、アップデートについていかなかったり悪意のあるソフトウェアをインストールされてしまう可能性が否定できず。

そんななかで新たに発表されたこの Windows Package Manager

果たしてこれまで抱えてきた問題を解決するものとなるのでしょうか。

まず大事なのはインストール可能なパッケージをたくさん確保することだと思います。
Microsoftストアは魅力的なソフトウェアが提供されていないことが過疎化の原因の一つだと思っています(卵か鶏かみたいなところはありますが)。
Windows Package Managerは今のところ開発者向けツールの位置づけのように思われますが、それでもやはり開発者が使うツールは一通りそろっていないとつらいものがあります。

この点ではナーバさんの投稿を見る限り、公開段階でそこそこの量の開発者向けパッケージを確保できているように見えます。

次にMSもしくは開発元が提供する安全なリポジトリ、パッケージ(Windows Package Managerではマニフェストというみたい)であること。
Microsoftストアは開発者が公開を行い、MSがチェックをすることで安全性を担保していますが、ChocolateyやScoopはこの辺りが心配です(確かVirusTotalでチェックしたりとかしてた気はしますが)。
少なくとも公式提供でないパッケージは先ほど書いたように必ずしもリポジトリでインストールされるソフトウェアが最新バージョンとは限らず、そして本物のソフトウェアをインストールする保証はありません。

Windows Package Managerは公式のリポジトリのほかサードパーティリポジトリが用意されるようですが、少なくとも公式リポジトリについてはSmartScreenやSHA256ハッシュ検証などで悪意のあるソフトウェアがインストールされる可能性を減らすようです。

次に、インストールコマンドを実行したらインストールが完了するまでノータッチで完了すること。
つまりは管理者権限不要であること、です。

Scoopが受けた理由はまさにこれだと思いますが、インストールコマンドを実行したらインストーラがダウンロードされて、実行されて、そしてUACウィンドウがぴょこんと出てきてそこでインストールが止まってしまうようでは困るんです。特に一気にソフトウェアをインストールしたいときに。

ScoopはZIP形式等で公開されているものをユーザー領域にインストールすることでUACを回避していますが、これだとインストーラしか公開されていないようなソフトだとダメなんですよねぇ。
これはインストーラの作りの問題でもあるので難しいとは思うのですが。

そういえばMSIXって結局どうなったんでしたっけ。

とりあえず眠い頭でつらつら書いてみたのですが、公式でパッケージマネージャが公開されること自体は大歓迎です。
Windowsを初期化した際、必要なソフトウェアを一つ一つインストーラをダウンロードしてインストールする手間が省けたらどんなに素晴らしいことか。

ただ、だいたいいつもこの手のMSソリューションは理想は高く現実は程遠くになりがちですので、どうかそんなことにならないことを祈っています。

MQTTHomeClientをプラグインで機能拡張できるように改良した

この記事で作っていたMQTTHomeClient。
MQTT Brokerから受け取ったTopicから処理を分岐させるんですが、ここで呼び出すWakeOnLANの処理をプロジェクト内で実装しています。
どうせ私しか使わないんでべたべた書いてもいいんですが、勉強がてらMQTTのクライアントの機能拡張をDLL追加でできるように改良してみました。

続きを読む

名古屋市上下水道代をクレジットカード決済に切り替えた

ほかの地域の方は今更?って感じかもしれないですが、名古屋市はこれまで口座振替か納入通知書による支払でしか上下水道代を支払うことができませんでした。

この度2020年4月からようやくクレジットカード決済に対応したので、さっそく切り替えることに。

続きを読む

「Ok Google,パソコンの電源を入れて」 を実現したい(IFTTT、MQTT、Raspberry Piを用いる方法)

家で仕事をしているのですが、普段寝る前にはパソコンの電源を落としています。
朝起きて身支度をして、仕事部屋に行ってからパソコンの電源を入れて・・・よりはデスクの前に来た段階で電源が入っていてほしい。

というわけで、朝起きたときに枕もとのGoogle Assistantに「パソコン付けて」というだけで電源が入るようにしました。

続きを読む

MQTTのクライアント側処理サンプル(.NET Core 汎用ホスト版)

個人的に作ってるアプリで必要だったので調べた成果。

MQTT BrokerはBeebottleを想定しつつ、一応汎用的に動くはず。

Beebottleの場合、アカウントIDにトークンを指定してください。

内部的にはMQTTのライブラリとして MQTTnet を使用しています。