Windows 10だとPowerShellで手軽に扱える
JSONは、今やExcelでも扱えるのだが、世間にあるJSONにはCSVで表現できるような比較的単純な構造を繰り返しているものもあれば、構造が入り組んでいてCSVや表などの表現にはなじまないものもある。
こうした繰り返し構造を部分的にしか持たないようなJSONは、Excelで処理するのは面倒で、かえって手間がかかってしまう(Microsoft 365版のExcelにはJSONの読み込み機能がある)。ここでは、WindowsのPowerShellでJSONを簡単に扱う方法を解説する。
ここではJSONは、ファイル形式になっているものと仮定する。とりあえずはサンプルとして、Windows Terminalの定義ファイル(defualt.json)や設定ファイル(settings.json)を使う。
この2つのファイルは、Windows Terminalを起動して、メニューの「設定」またはAltキーを押しながらメニューの「設定」を選べば、自動的に生成される。ちょっと見てみるとわかるが、かなり複雑な構造をしている。このあたりについては、以下の過去記事を参考にしていただきたい。
●Windows Terminalのカスタマイズを研究【キーボード編】
https://ascii.jp/elem/000/004/016/4016864/
●正式版が登場したWindows Terminalをカスタマイズする
https://ascii.jp/elem/000/004/016/4016188/
●Windows 10の新コンソール、Windows Terminalが完成直前のv0.11に
https://ascii.jp/elem/000/004/010/4010939/
PowerShellでファイルを読み込むには、Get-Contentコマンドを使う。これでJSONファイルを読み込むことはできる。
Get-Content -Path ファイルパス
とする。ただし、このままでは単にファイルを読んで表示して終わりである。
JSONファイルをPowerShell内のオブジェクトに変換して読み込むには、「ConvertFrom-JSON」コマンドを使う。つまり、以下のようにして2つのコマンドをパイプ記号「|」で接続する。すると、最初のコマンドの出力(ファイルの内容)が次のコマンドに送られて処理される。
Get-Content -Path ファイルパス | ConvertFrom-JSON
とすれば、PowerShellがJSONファイルを読み込んでくれる。
ただし、Windows 10付属のPowerShell(Ver.5.x)のJSON機能は、JSONスキーマやJSONCには対応していない。Ver.7.xなら注釈はエラーにならないが、Ver.5.xでは、エラーになってしまう。このときには、Where-Objectを使って注釈を取り除く。具体的には、
$x=Get-Content -Path .\settings.json | Where-Object{ $_ -notmatch "^\s*//.*$" } | ConvertFrom-Json
のようにする(繰り返しが面倒なので変数$xに結果を格納している)。Where-Objectの部分は、正規表現「^\s*//.*$」で注釈のパターンを指定し、それに一致しない(-notmatch)ものだけを通過させている。
こうした問題を考えると、PowerShell 7.xをインストールしておいたほうがいいかもしれない。ちなみにWindows 10に標準で含まれるPowerShellは現行の5.xのままで開発は停止、今後はgithubで公開されているPowerShell(6.xまではPowerShell Coreと呼んでいたが7.xからPowerShellという名前になった)のほうで開発が進められるということだ。
●github PowerShell/PowerShell Release v7.1.0
https://github.com/PowerShell/PowerShell/releases/tag/v7.1.0
$xに結果が入っているなら、以下の画面のように$x.keybindingsでsettings.json内の「keybindings」オブジェクトの中身を表示できる。あるいは、$x.profiles.listでプロファイル定義を見ることも可能だ。
オブジェクトの中身が同じ形式のオブジェクトの繰り返しなら、CSVファイルにすることも可能だ。読み込んだJSONが$xに入っているとしたら、
$x.keybindings | ConvertTo-Csv
とすることで、CSVファイルに変換できる。こうした処理を使うことで、JSONファイルの一部を取り出して、残りはExcelで処理といったことも可能だ。筆者は、Windows Terminalのdefault.jsonからキー割り当てだけを取り出して、加工したのちExcelに読み込んで、キー割り当て表を作っている。
公開当初より、内容を一部訂正しております。(12/7 18:30)
この連載の記事
-
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す -
第419回
PC
Windows Insider Previewが変わって、今秋登場のWindows 11 Ver.24H2の新機能が見えてきた? -
第418回
PC
Windows 11のスマートフォン連携は新機能が追加されるなど、いまだ進化している - この連載の一覧へ