rksoftware

Visual Studio とか C# とかが好きです

C# で CSV を読み書き (ライブラリ使わず)

以前に C# でライブラリを使って CSV を読み込む方法を試しました。
rksoftware.hatenablog.com

しかし少々コードが長くなってしまったので、手軽に使えるスニペットを書いてみました。CSV の読み書き、何度かいても忘れてしまうのでもう書き残しておくことにします。
こんな感じのコードをプロジェクト内においておけば、しゅっと CSV が扱えるかもしれません。品質は保証できませんけれど。

■ 使い方

var csvString = "a,b,c\n1,2,3\n4,5,6\n";
var data = CsvParser.CsvReader.Read(csvString);
var csvString = "a,b,c\n1,2,3\n4,5,6\n";
var (header, data) = CsvParser.CsvReader.ReadHeaderAndData(csvString);

■ CSV 読み込みコード

public static class CsvReader
{
    public static string[][] Read(string csvString) => _Read(csvString);

    public static (string[] header, string[][] data) ReadHeaderAndData(string csvString)
    {
        var values = Read(csvString);
        return (values.FirstOrDefault() ?? Array.Empty<string>(), values.Skip(1).ToArray());
    }

    private static string[][] _Read(string csvString)
    {
        List<List<List<char>>> data = new();
        (bool isLineHead, bool isQuoted, char quote, bool isEscaped) = (true, false, '"', false);
        foreach (var c in csvString)
        {
            if (isLineHead) { data.Add(new List<List<char>>()); data.LastOrDefault()?.Add(new List<char>()); isLineHead = false; }
            if (data.LastOrDefault()?.LastOrDefault()?.Count == 0 && !isQuoted && (c == '"' || c == '\''))
            {
                (isQuoted, quote, isEscaped) = (true, c, false);
                continue;
            }
            if (!isEscaped && isQuoted && c == quote) { isEscaped = true; continue; }
            if (c == ',' && (!isQuoted || isEscaped)) { data.LastOrDefault()?.Add(new List<char>()); (isQuoted, isEscaped) = (false, false); continue; }
            if (c == '\n' && (!isQuoted || isEscaped)) { isLineHead = true; (isQuoted, isEscaped) = (false, false); continue; }
            isEscaped = false;
            data.LastOrDefault()?.LastOrDefault()?.Add(c);
        }
        return data.Select(line => line.Select(cell => new string(cell.ToArray())).ToArray()).ToArray();
    }
}

■ CSV 文字列化コード

public static class CsvWriter
{
    public static string Write(string[][] data) => _Write(data);

    public static string Write(string[] header, string[][] data) => Write(new string[][] { header }.Concat(data).ToArray());

    private static string _Write(string[][] data)
    {
        var sb = new System.Text.StringBuilder();
        foreach (var line in data ?? Array.Empty<string[]>())
            sb.Append(string.Join(',', line.Select(Escape)) + '\n');
        return sb.ToString();

        static string Escape(string cell) =>
            (cell.Contains('"') || cell.Contains('\'') || cell.Contains(',') || cell.Contains('\n'))
            ? $"\"{cell.Replace("\"", "\"\"")}\""
            : cell;
    }
}

■ GitHub

このコードは GitHub においています。

github.com

C# で CSV 文字列を CSV としてパースして指定のセルでソートして出力するコード

意外と難しかったのでメモ。

CsvHelper というライブラリを使っています。

導入方法

dotnet add package CsvHelper

C# で CSV 文字列を CSV としてパースして指定のセルでソートして出力するコードです。内部的にはデータを配列で扱っています。CSV の中身には決まりがないのでデータオブジェクトにマッピングしない、というスタンスでやってみました。

■ コード

// データの読み込みと加工
var (header, data) = ReadAndOrder(args.FirstOrDefault() ?? string.Empty, args.Skip(1).FirstOrDefault() ?? string.Empty);

// 結果の出力 ヘッダー行とデータ行
Console.WriteLine(string.Join(",", header.Select(Escape)));
Console.WriteLine(string.Join("\n", data.Select(line => string.Join(",", line.Select(Escape)))));


////
// == 以降メソッド ==
////

// データの読み込みと加工メソッド
static (string[], string[][]) ReadAndOrder(string csv, string orderCellName)
{
    // データの読み込みとヘッダー行の抽出
    var headerAndData = Read(csv).ToArray();
    var header = headerAndData.FirstOrDefault() ?? Array.Empty<string>();

    // ソートする列のインデックスを産出
    var orderCellIndex = header.Index().Where(x => string.Compare(x.Item, orderCellName) == 0).Select(x => x.Index + 1).FirstOrDefault() - 1;

    // ソートしつつデータ部の抽出
    var data = headerAndData.Skip(1).OrderBy(x => (-1 < orderCellIndex && orderCellIndex < x.Length) ? x[orderCellIndex] : "").ToArray();

    return (header, data);
}

// 読み込みメソッド CsvHelper 使用
static IEnumerable<string[]> Read(string csv)
{
    using var sr = new StringReader(csv);
    using var helper = new CsvHelper.CsvReader(sr, System.Globalization.CultureInfo.CurrentCulture);
    while (helper.Read())
        yield return Enumerable.Range(0, helper.Parser.Count).Select(i => helper.Parser[i]).ToArray();
}

// 結果出力時のエスケープ
static string Escape(string cell) =>
    (cell.Contains('"') || cell.Contains('\'') || cell.Contains(',') || cell.Contains('\n'))
    ? $"\"{cell.Replace("\"", "\"\"")}\""
    : cell;

■ 実行例

h1 列でソート

.\kaito.exe h1,h2`n3,6`n5,4`n6,5`n4,3 h1
h1,h2
3,6
4,3
5,4
6,5

h2 列でソート

.\kaito.exe h1,h2`n3,6`n5,4`n6,5`n4,3 h2
h1,h2
4,3
5,4
6,5
3,6

■ C# Tokyo お題

このコードは C# Tokyo のお題のコードを書いてみよう企画で書いたコードです。

github.com

C# で CSV を読み込む

結構面倒です。

すばらしいライブラリがあるので、ライブラリを使えばいいのですがちょっと重たい気がしたのでメモ。

■ ここでいう重たいとは

インスタンスを作って、動作の設定をセットして、while でわましながら読んだり。セルの読み出しが手間だったりをいうことをイメージしています。 static メソッドに string を渡して、string の二次元配列が返ってくるくらいのシンプルさが欲しい時もあります。というか結構そういうときのほうが多いかもしれないです。

■ どうして

ライブラリはお行儀がいいので、メモリに文字列をため込まない = string でなく stream で受け取る、一気に読まず while で回す、配列で返さずデータクラスのプロパティにマッピングする。いろいろとそういう感じだと思います。

しかし我々はお行儀が悪いので。

ライブラリがお行儀よくでも使う我々はお行儀が悪いので、配列でもらって加工したい、そもそも読むファイルが全行のセルが同じ数だと思うなよ! そんな感じです。

■ ライブラリを見てみよう!

今回見るライブラリは 3 つ。

  • Csv で検索すると出てきてダウンロード数が結構ある Csv
  • CsvHelper 皆大好きなライブラリです。しかし今は以前からは変更が入って使い方がかなり変わっています。データクラス定義しないで使う方法に結構苦しみました。
  • VisualBasic ライブラリの TextFieldParser。古来より受け継がれし遺跡です。.NET Framework 以前の Visula Basic 時代の便利機能が入っているようです。使ったら負けかなと思う由来ですが、正直便利です。TextFieldParser も、正直便利です。
//"a
// b",c""d
// e, f
using Csv;
using CsvHelper.Configuration;

var csv = """
"a
b","c""d"
e,f
""";
Console.WriteLine($"csv ->\n{csv}\n<- csv\n");

{   // Csv というライブラリ
    // dotnet add package Csv
    IEnumerable<Csv.ICsvLine> csvLines = Csv.CsvReader.ReadFromText(csv, new CsvOptions { HeaderMode = HeaderMode.HeaderAbsent });
    Console.WriteLine("Csv ->");
    foreach (Csv.ICsvLine line in csvLines)
        Console.WriteLine($"  row -> {string.Join(" , ", line.Values)}  <- row");
    Console.WriteLine("<- Csv\n");
}

{   // CsvHelper
    // dotnet add package CsvHelper
    using StringReader sr = new StringReader(csv);
    using var helper = new CsvHelper.CsvReader(sr, new CsvConfiguration(System.Globalization.CultureInfo.CurrentCulture) { HasHeaderRecord = false });
    Console.WriteLine("CsvHelper ->");
    while (helper.Read())
    {
        Console.Write($"  row -> ");
        Console.Write(string.Join(" , ", Enumerable.Range(0, helper.Parser.Count).Select(i => helper.Parser[i])));
        Console.WriteLine("  <- row");
    }
    Console.WriteLine("<- CsvHelper\n");
}

{   // VisualBasic (TextFieldParser)
    // dotnet add package Microsoft.VisualBasic
    using StringReader sr = new StringReader(csv);
    using var tfp = new Microsoft.VisualBasic.FileIO.TextFieldParser(sr);
    tfp.SetDelimiters(",");
    Console.WriteLine("VisualBasic (TextFieldParser) ->");
    while (!tfp.EndOfData)
        Console.WriteLine($"  row -> {string.Join(" , ", tfp.ReadFields() ?? Array.Empty<string>())}  <- row");
    Console.WriteLine("<- VisualBasic (TextFieldParser)");
}

■ 実行結果

csv ->
"a
b","c""d"
e,f
<- csv

Csv ->
  row -> "a  <- row
  row -> b" , c"d  <- row
  row -> e , f  <- row
<- Csv

CsvHelper ->
  row -> a
b , c"d  <- row
  row -> e , f  <- row
<- CsvHelper

VisualBasic (TextFieldParser) ->
  row -> a
b , c"d  <- row
  row -> e , f  <- row
<- VisualBasic (TextFieldParser)
  • Csv はセルの中に改行が許されません。
  • CsvHelper はデータはちゃんと読めていますが、配列でほしい時にちょっとインタフェースから取り方がわかりにくいですね。
  • TextFieldParser はもう少し配列でとりやすいですが、お行儀悪く使うにはやはり重いですね。

ままならないものです。お行委¥魏悪く生きるというのは。

いかがでしたか?

いかがでしたか?

winget で Visual Studio Code をオプション指定してインストールする (右クリックで Visual Studio Code を起動できるようにインストールする)

winget で Visual Studio Code をインストールしたい! そう思っていますね?

けれどうまくインストールできるか不安。わかります。エクスプローラー上での右クリックで Visual Studio Code が起動できるようにできるかが心配なのですよね。大丈夫です。すべてを解決してくれる素晴らしい記事があります。

zenn.dev

この記事に従うとこのようになると思います。

winget install Microsoft.VisualStudioCode --override "/VERYSILENT /NORESTART /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath"

実際にこれでインストールできました。

winget でインストールできるアプリの気になるものをちゃんと見ていこうと思います。

winget でインストールできるアプリの気になるものをちゃんと見ていこうと思います。

winget show <名前 または ID>

で調べられます。名前 または ID に空白が入る場合は

winget show "<名前 または ID>"

で OK です。

Sushi

動画字幕関連の Python プログラムのようですね。気になるのは名前だけでした。インストールはしないでおきます。
Sushi tp7.Sushi
https://github.com/tp7/Sushi/wiki

IP Messenger for Win

期待通り。皆さんの度想像通りのソフトウェアでした。かなり進化しているのですね。でも個人で使うソフトでもないので、私の環境にはインストールしないかな。
IP Messenger for Win FastCopy.IPMsg
https://github.com/FastCopyLab/IPMsgDist ipmsg.org

Ubuntu

WSL の Ubuntu ですね。ここからインストールする必要があるかは微妙ですがいいと思います。
Ubuntu 22.04.3 LTS 9PN20MSR04DW Unknown msstore

Zoom

あの Zoom ですね。もし使う機会があればここからインストールしたいと思います。個人では使う機会はまったくないのですが、必要になる日がいずれあるかもしれません。
Zoom Zoom.Zoom
https://zoom.us/

YouTube Music Desktop App

気になったけれど、非公式クライアントでした。ドキュメントとして書かれている URL も 404 ですし。無念。
YouTube Music Desktop App Ytmdesktop.Ytmdesktop

WinSCP

WinSCP ですね。やはり個人ではなかなか使わないですが、これもいいですね。覚えておきましょう。
WinSCP WinSCP.WinSCP
https://winscp.net/eng/docs/start

WinMerge

皆大好き WinMerge です。これはインストールでしょう。
WinMerge WinMerge.WinMerge
https://winmerge.org

Unity

みんな大好き Unity です。これも今使っていませんが使う際にはぜひインストールしたいですね。
Unity Hub Unity.UnityHub
https://unity.com/unity-hub
Unity 2023 Unity.Unity.2023
https://docs.unity3d.com/2023.2/Documentation/Manual/

Ruby

Ruby です。使う機会があればインストールしたいです。Ruby のサイトのトップでなく Windows 向けインストーラーのサイトが登録されているようです。
Ruby 3.2 with MSYS2 RubyInstallerTeam.Ruby
https://rubyinstaller.org

R

R 言語ですね。名前は知っているけど中身は私はよくしりません。これも機会があれば。
R for Windows RProject.R
https://cran.r-project.org/manuals.html

Python

Python 3.9 Python.Python.3.9
https://www.python.org/doc/

Java SE Development Kit 21

Oracle の Java ですね。これはインストールすることないかなあ。
Java SE Development Kit 21 Oracle.JDK.21
https://www.oracle.com/java

Node.js

Node.js これはいずれインストールします。
Node.js LTS OpenJS.NodeJS.LTS
https://nodejs.org/

OpenJDK

OpenJDK。Oracle ではなくこちらかな。
ojdkbuild OpenJDK JRE 17 ojdkbuild.openjdk.17.j
https://github.com/ojdkbuild/ojdkbuild

MS Paint IDE

MS ペイントからテキストを抽出してプログラムコードを実行するツール? 何を言っているかわからないですが、私もわかりません。
MS Paint IDE MSPaintIDE.MSPaintIDE
https://ms-paint-i.de/

Windows Terminal

これはインストール。
Windows Terminal Microsoft.WindowsTermi
https://docs.microsoft.com/windows/terminal

Microsoft Visual Studio Code

はい。
Microsoft Visual Studio Code Microsoft.VisualStudio
https://code.visualstudio.com

Visual Studio

インストール。
Visual Studio Professional 2022 Preview Microsoft.VisualStudio
Visual Studio Professional 2022 Microsoft.VisualStudio
Visual Studio Enterprise 2022 Preview Microsoft.VisualStudio
Visual Studio Enterprise 2022 Microsoft.VisualStudio
Visual Studio Community 2022 Preview Microsoft.VisualStudio
Visual Studio Community 2022 Microsoft.VisualStudio
https://visualstudio.microsoft.com/

Microsoft Teams

Teams はインストールしますよね。 Microsoft Teams Microsoft.Teams
https://www.microsoft.com/microsoft-teams/group-chat-software

Microsoft SQL Server Management Studio

みんな大好き Management Studio。本当に皆さんお好きですよね。
Microsoft SQL Server Management Studio Microsoft.SQLServerMan
https://learn.microsoft.com/ja-JP/sql/ssms/download-sql-server-management-studio-ssms

Microsoft SQL Server

SQL Server も OK。
Microsoft SQL Server 2022 Express Microsoft.SQLServer.20
Microsoft SQL Server 2022 Developer Microsoft.SQLServer.20
https://www.microsoft.com/en-us/

PowerShell

これは最初から入ってる?
PowerShell Microsoft.PowerShell
https://microsoft.com/PowerShell

OpenJDK

JDK はこっちを使ってもいいかも?
Microsoft Build of OpenJDK with Hotspot 21 Microsoft.OpenJDK.21
https://www.microsoft.com/openjdk

Microsoft 365 Apps for enterprise

Office です。ここからインストールできるならよさそう。サイトのダウンロードページ、サインインしないと出てこないし。
Microsoft 365 Apps for enterprise Microsoft.Office
https://www.office.com

NuGet

NuGet は Windows に最初から入っていてほしいくらいのソフトですよね。
NuGet Microsoft.NuGet
https://www.nuget.org

Git

Git。Microsoft のものらしいです。こちらは使う機会あるのかな。
Microsoft Git Microsoft.Git
https://aka.ms/ms-git

Microsoft .NET Core SDK Uninstall Tool

まず使うことないツールですが、覚えておきましょう。古い .NET が散らかっているときに使えることがあります。
Microsoft .NET Core SDK Uninstall Tool (x86) Microsoft.DotNet.Unins
https://github.com/dotnet/cli-lab/releases/

Microsoft .NET SDK

必須アプリ。
Microsoft .NET SDK 9.0 Preview Microsoft.DotNet.SDK.P
https://dotnet.microsoft.com

devtunnel

devtunnel Microsoft.devtunnel
https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/

Dev Home

Dev Home (Preview) Microsoft.DevHome
https://github.com/microsoft/devhome

JetBrains

JetBrains Rider JetBrains.Rider
https://www.jetbrains.com/rider/
JetBrains ReSharper JetBrains.ReSharper
https://www.jetbrains.com/resharper/
IntelliJ IDEA Community Edition JetBrains.IntelliJIDEA
https://www.jetbrains.com/idea
JetBrains Hub JetBrains.Hub
https://www.jetbrains.com/hub

FFmpeg

FFmpeg Gyan.FFmpeg
https://www.gyan.dev/ffmpeg/builds/

Android Studio

Android Studio Google.AndroidStudio
https://developer.android.com/studio#downloads

GitHub Desktop

GitHub Desktop GitHub.GitHubDesktop
https://desktop.github.com

Git

Git Git.Git
https://gitforwindows.org

GIMP

画像編集にこれを使うこと、最近減ってきています。でも覚えておきます。
GIMP GIMP.GIMP
https://www.gimp.org

Docker Desktop

Docker Desktop Docker.DockerDesktop
https://www.docker.com/products/docker-desktop

Power Automate for desktop

Power Automate for desktop Microsoft.PowerAutomat
https://flow.microsoft.com

Dev Proxy

Dev Proxy Microsoft.DevProxy
https://github.com/microsoft/dev-proxy/releases/

Google Chrome

これはいいですね。Chrome をインストールするために Edge を起動する IT しぐさを回避できるかも?
Google Chrome Google.Chrome
https://www.google.com/chrome/

winget の気になるソフト

先日 winget でインストールできるもの一覧を出したのですが、6,000 件を超えていて見切れません......。
高速スクロールしつつ目に留まったものだけ載せてみます。いったんここまで見るものを減らしてから見ていきたい。

注目は

Sushi                                                 tp7.Sushi               0.5.1          winget

IP Messenger for Win                                  FastCopy.IPMsg          5.6.2          winget

なんだこれ、きになる。

-----------------------------------------------------------------------------------------------------
Ubuntu 22.04.3 LTS                                    9PN20MSR04DW            Unknown        msstore
Ubuntu 20.04.6 LTS                                    9MTTCL66CPXJ            Unknown        msstore
Ubuntu 18.04.6 LTS                                    9PNKSF5ZN4SW            Unknown        msstore
Zoom                                                  Zoom.Zoom               6.0.0.37205    winget
YouTube Music Desktop App                             Ytmdesktop.Ytmdesktop   2.0.0          winget
WinSCP RC                                             WinSCP.WinSCP.RC        5.18.5-        winget
WinSCP                                                WinSCP.WinSCP           6.3.2          winget
WinMerge                                              WinMerge.WinMerge       2.16.38        winget
Unity Hub                                             Unity.UnityHub          3.7.0          winget
Unity 2023                                            Unity.Unity.2023        2023.2.18f1    winget
Unity 2022                                            Unity.Unity.2022        2022.3.24f1    winget
Unity 2021                                            Unity.Unity.2021        2021.3.37f1    winget
Unity                                                 Unity.Unity.2020        2020.3.48f1    winget
Sushi                                                 tp7.Sushi               0.5.1          winget
Ruby 3.2 with MSYS2                                   RubyInstallerTeam.Ruby 3.2.2-1        winget
Ruby 3.1 with MSYS2                                   RubyInstallerTeam.Ruby 3.1.2-1        winget
Ruby 3.0 with MSYS2                                   RubyInstallerTeam.Ruby 3.0.4-1        winget
Ruby 2.7 with MSYS2                                   RubyInstallerTeam.Ruby 2.7.6-1        winget
Ruby 2.6 with MSYS2                                   RubyInstallerTeam.Ruby 2.6.10-1       winget
Ruby 3.2                                              RubyInstallerTeam.Ruby 3.2.1-1        winget
Ruby 3.1                                              RubyInstallerTeam.Ruby 3.1.2-1        winget
Ruby 3.0                                              RubyInstallerTeam.Ruby 3.0.4-1        winget
Ruby 2.7                                              RubyInstallerTeam.Ruby 2.7.6-1        winget
Ruby 2.6                                              RubyInstallerTeam.Ruby 2.6.10-1       winget
R for Windows                                         RProject.R              4.3.3          winget
Python 3.9                                            Python.Python.3.9       3.9.13         winget
Python 3.8                                            Python.Python.3.8       3.8.10         winget
Python 3.7                                            Python.Python.3.7       3.7.9          winget
Python 3.6                                            Python.Python.3.6       3.6.8          winget
Python 3.5                                            Python.Python.3.5       3.5.4          winget
Python 3.4                                            Python.Python.3.4       3.4.4          winget
Python 3.3                                            Python.Python.3.3       3.3.5          winget
Python 3.2                                            Python.Python.3.2       3.2.5          winget
Python 3.13.0a5                                       Python.Python.3.13      3.13.0a5       winget
Python 3.12                                           Python.Python.3.12      3.12.3         winget
Python 3.11                                           Python.Python.3.11      3.11.9         winget
Python 3.10                                           Python.Python.3.10      3.10.11        winget
Python 3.1                                            Python.Python.3.1       3.1.4          winget
Python 3.0                                            Python.Python.3.0       3.0.1          winget
Python 2                                              Python.Python.2         2.7.18150      winget
Python Launcher                                       Python.Launcher         3.12.0         winget
Java SE Development Kit 21                            Oracle.JDK.21           21.0.2         winget
Java(TM) SE Development Kit                           Oracle.JDK.20           20.0.2.0       winget
Java SE Development Kit 18                            Oracle.JDK.18           18.0.2.1       winget
Java SE Development Kit 17                            Oracle.JDK.17           17.0.10.0      winget
Java 8                                                Oracle.JavaRuntimeEnvi 8.0.4010.10    winget
Node.js LTS                                           OpenJS.NodeJS.LTS       20.12.2        winget
Node.js                                               OpenJS.NodeJS           21.7.3         winget
ojdkbuild OpenJDK JRE 17                              ojdkbuild.openjdk.17.j 17.0030.6.1    winget
ojdkbuild OpenJDK 17                                  ojdkbuild.openjdk.17.j 17.0030.6.1    winget
OpenJDK 14                                            ojdkbuild.openjdk.14.j 14.0.1.1       winget
OpenJDK 13                                            ojdkbuild.openjdk.13.j 13.0.3.1       winget
OpenJDK JRE 11                                        ojdkbuild.openjdk.11.j 11.0.15.1      winget
OpenJDK 11                                            ojdkbuild.openjdk.11.j 11.0.15.1      winget
ojdkbuild OpenJDK                                     ojdkbuild.ojdkbuild     1.8.3321.9     winget
MS Paint IDE                                          MSPaintIDE.MSPaintIDE   3.0.0          winget
Windows Terminal Preview                              Microsoft.WindowsTermi 1.20.10822.0   winget
Windows Terminal                                      Microsoft.WindowsTermi 1.19.10821.0   winget
Windows Software Development Kit - Windows 10.0.2262 Microsoft.WindowsSDK.1 10.1.22621.24 winget
Windows Software Development Kit                      Microsoft.WindowsSDK.1 10.0.22000.832 winget
Windows Software Development Kit                      Microsoft.WindowsSDK.1 10.1.20348.1   winget
Windows Software Development Kit                      Microsoft.WindowsSDK.1 10.0.19041.685 winget
Windows SDK                                           Microsoft.WindowsSDK.1 10.0.18362.0   winget
Windows PC Health Check                               Microsoft.WindowsPCHea 3.7.2204.15001 winget
Windows Journal                                       Microsoft.WindowsJourn 10.0.237.0     winget
Windows 11 Installation Assistant                     Microsoft.WindowsInsta 1.4.19041.1610 winget
Windows App Runtime                                   Microsoft.WindowsAppRu 1.4.5          winget
Windows App Runtime                                   Microsoft.WindowsAppRu 1.3.3          winget
Windows App SDK                                       Microsoft.WindowsAppRu 1.2.2          winget
Windows App SDK                                       Microsoft.WindowsAppRu 1.1.5          winget
Windows App SDK                                       Microsoft.WindowsAppRu 1.0.4          winget
Windows Application Driver                            Microsoft.WindowsAppli 1.2.1.0        winget
Windows Admin Center                                  Microsoft.WindowsAdmin 1.5.19713.0    winget
Windows Assessment and Deployment Kit                 Microsoft.WindowsADK    10.1.22621.1   winget
Microsoft Web Platform Installer                      Microsoft.webpicmd      5.1.51515.0    winget
Microsoft Web Deploy                                  Microsoft.WebDeploy     10.0.1973      winget
Microsoft Visual Studio 2010 Tools for Office Runtime Microsoft.VSTOR         10.0.60917     winget
VSIX Bootstrapper                                     Microsoft.VSIXBootstra 1.0.37         winget
vott                                                  Microsoft.vott          2.2.0          winget
Microsoft Visual Studio Code Insiders CLI             Microsoft.VisualStudio 1.89.0         winget
Microsoft Visual Studio Code Insiders                 Microsoft.VisualStudio 1.89.0         winget
Microsoft Visual Studio Code CLI                      Microsoft.VisualStudio 1.88.1         winget
Microsoft Visual Studio Code                          Microsoft.VisualStudio 1.88.1         winget
Visual Studio Locator                                 Microsoft.VisualStudio 3.1.7          winget
Visual Studio Configuration Finder                    Microsoft.VisualStudio 1.0.47.55350   winget
Visual Studio Professional 2022 Preview               Microsoft.VisualStudio 17.9.0         winget
Visual Studio Professional 2022                       Microsoft.VisualStudio 17.9.6         winget
Visual Studio Enterprise 2022 Preview                 Microsoft.VisualStudio 17.9.0         winget
Visual Studio Enterprise 2022                         Microsoft.VisualStudio 17.9.6         winget
Visual Studio Community 2022 Preview                  Microsoft.VisualStudio 17.9.0         winget
Visual Studio Community 2022                          Microsoft.VisualStudio 17.9.1         winget
Visual Studio BuildTools 2022                         Microsoft.VisualStudio 17.9.6         winget
Visual Studio Professional 2019                       Microsoft.VisualStudio 16.11.35       winget
Visual Studio Enterprise 2019                         Microsoft.VisualStudio 16.11.35       winget
Visual Studio BuildTools 2019                         Microsoft.VisualStudio 16.11.35       winget
Microsoft Visual C++ 2022 Redistributable (Arm64)     Microsoft.VCRedist.202 14.34.31823.3  winget
Microsoft Visual C++ 2019 Redistributable (Arm64)     Microsoft.VCRedist.201 14.29.30139.0  winget
Microsoft Visual C++ 2015-2022 Redistributable (x86)  Microsoft.VCRedist.201 14.38.33135.0  winget
Microsoft Visual C++ 2015-2022 Redistributable (x64)  Microsoft.VCRedist.201 14.38.33135.0  winget
Microsoft Visual C++ 2013 Redistributable (x86)       Microsoft.VCRedist.201 12.0.40664.0   winget
Microsoft Visual C++ 2013 Redistributable (x64)       Microsoft.VCRedist.201 12.0.40664.0   winget
Microsoft Visual C++ 2012 Redistributable (x86)       Microsoft.VCRedist.201 11.0.61030.0   winget
Microsoft Visual C++ 2012 Redistributable (x64)       Microsoft.VCRedist.201 11.0.61030.0   winget
Microsoft Visual C++ 2010 x86 Redistributable         Microsoft.VCRedist.201 10.0.40219     winget
Microsoft Visual C++ 2010 x64 Redistributable         Microsoft.VCRedist.201 10.0.40219     winget
Microsoft Visual C++ 2008 Redistributable - x86       Microsoft.VCRedist.200 9.0.30729.6161 winget
Microsoft Visual C++ 2008 Redistributable - x64       Microsoft.VCRedist.200 9.0.30729.6161 winget
Microsoft Visual C++ 2005 Redistributable             Microsoft.VCRedist.200 8.0.61001      winget
Microsoft Visual C++ 2005 Redistributable (x64)       Microsoft.VCRedist.200 8.0.61000      winget
Microsoft Visual C++ 2015 UWP Desktop Runtime Package Microsoft.VCLibs.Deskt 14.0.33321.0   winget
Windows 10 Update Assistant                           Microsoft.UpdateAssist 1.4.19041.1555 winget
Microsoft.UI.Xaml                                     Microsoft.UI.Xaml.2.8   8.2310.30001.0 winget
Microsoft.UI.Xaml                                     Microsoft.UI.Xaml.2.7   7.2208.15002.0 winget
Microsoft Teams Preview                               Microsoft.Teams.Preview 1.6.00.33955   winget
Microsoft Teams Exploration                           Microsoft.Teams.Explor 1.5.00.31315   winget
Microsoft Teams Continuous Deployment                 Microsoft.Teams.Contin 1.5.00.31365   winget
Microsoft Teams classic                               Microsoft.Teams.Classic 1.7.00.7956    winget
Microsoft Teams                                       Microsoft.Teams         24060.2623.27 winget
Microsoft SQL Server Management Studio                Microsoft.SQLServerMan 20.1           winget
Microsoft SQL Server 2022 Express                     Microsoft.SQLServer.20 16.0.1000.6    winget
Microsoft SQL Server 2022 Developer                   Microsoft.SQLServer.20 16.0.1000.6    winget
Microsoft SQL Server 2019 Express                     Microsoft.SQLServer.20 15.2204.5490.2 winget
Microsoft SQL Server 2019 Developer                   Microsoft.SQLServer.20 15.2204.5490.2 winget
Microsoft SQL Server 2017 Express                     Microsoft.SQLServer.20 14.0.1000.169  winget
Microsoft SQL Server 2017 Developer                   Microsoft.SQLServer.20 14.0.1000.169  winget
PowerToys (Preview)                                   Microsoft.PowerToys     0.80.1         winget
PowerShell Preview                                    Microsoft.PowerShell.P 7.5.0.2        winget
PowerShell                                            Microsoft.PowerShell    7.4.2.0        winget
Microsoft PowerBI Desktop                             Microsoft.PowerBI       2.128.952.0    winget
Microsoft PowerApps CLI                               Microsoft.PowerAppsCLI  1.0            winget
Microsoft Build of OpenJDK with Hotspot 21            Microsoft.OpenJDK.21    21.0.2.13      winget
Microsoft Build of OpenJDK with Hotspot 17            Microsoft.OpenJDK.17    17.0.10.7      winget
Microsoft Build of OpenJDK with Hotspot 16            Microsoft.OpenJDK.16    16.0.2.7       winget
Microsoft Build of OpenJDK with Hotspot 11            Microsoft.OpenJDK.11    11.0.22.7      winget
Microsoft 365 Apps for enterprise                     Microsoft.Office        16.0.17531.20 winget
NuGet                                                 Microsoft.NuGet         6.9.1          winget
IronPython 3                                          Microsoft.IronPython.3  3.4.0.0001     winget
IronPython 2                                          Microsoft.IronPython.2  2.7.12.1000    winget
Microsoft Git                                         Microsoft.Git           2.44.0.0.2     winget
Microsoft .NET Core SDK Uninstall Tool (x86)          Microsoft.DotNet.Unins 4.96.657       winget
Microsoft .NET SDK 9.0 Preview                        Microsoft.DotNet.SDK.P 9.0.100-previ winget
Microsoft .NET SDK 8.0                                Microsoft.DotNet.SDK.8  8.0.204        winget
Microsoft .NET SDK 7.0                                Microsoft.DotNet.SDK.7  7.0.408        winget
Microsoft .NET SDK 6.0                                Microsoft.DotNet.SDK.6  6.0.421        winget
Microsoft .NET SDK 5.0                                Microsoft.DotNet.SDK.5  5.0.408        winget
Microsoft .NET SDK 3.1                                Microsoft.DotNet.SDK.3 3.1.426        winget
Microsoft .NET Runtime 9.0 Preview                    Microsoft.DotNet.Runti 9.0.0-preview winget
Microsoft .NET Runtime 8.0                            Microsoft.DotNet.Runti 8.0.4          winget
Microsoft .NET Runtime 7.0                            Microsoft.DotNet.Runti 7.0.18         winget
Microsoft .NET Runtime 6.0                            Microsoft.DotNet.Runti 6.0.29         winget
Microsoft .NET Runtime 5.0                            Microsoft.DotNet.Runti 5.0.17         winget
Microsoft .NET Runtime 3.1                            Microsoft.DotNet.Runti 3.1.32         winget
Microsoft ASP.NET Core Hosting Bundle 9.0 Preview     Microsoft.DotNet.Hosti 9.0.0-preview winget
Microsoft ASP.NET Core Hosting Bundle 8.0             Microsoft.DotNet.Hosti 8.0.4          winget
Microsoft ASP.NET Core Hosting Bundle 7.0             Microsoft.DotNet.Hosti 7.0.18         winget
Microsoft ASP.NET Core Hosting Bundle 6.0             Microsoft.DotNet.Hosti 6.0.29         winget
Microsoft ASP.NET Core Hosting Bundle 5.0             Microsoft.DotNet.Hosti 5.0.17         winget
Microsoft ASP.NET Core Hosting Bundle 3.1             Microsoft.DotNet.Hosti 3.1.32         winget
.NET Framework                                        Microsoft.DotNet.Frame 4.8.1          winget
Microsoft .NET Framework 4.5.1 Developer Pack (KB286 Microsoft.DotNet.Frame 4.5.2          winget
Microsoft .NET Windows Desktop Runtime 9.0 Preview    Microsoft.DotNet.Deskt 9.0.0-preview winget
Microsoft .NET Windows Desktop Runtime 8.0            Microsoft.DotNet.Deskt 8.0.4          winget
Microsoft .NET Windows Desktop Runtime 7.0            Microsoft.DotNet.Deskt 7.0.18         winget
Microsoft .NET Windows Desktop Runtime 6.0            Microsoft.DotNet.Deskt 6.0.29         winget
Microsoft .NET Windows Desktop Runtime 5.0            Microsoft.DotNet.Deskt 5.0.17         winget
Microsoft .NET Windows Desktop Runtime 3.1            Microsoft.DotNet.Deskt 3.1.32         winget
Microsoft ASP.NET Core Runtime 9.0 Preview            Microsoft.DotNet.AspNe 9.0.0-preview winget
Microsoft ASP.NET Core Runtime 8.0                    Microsoft.DotNet.AspNe 8.0.4          winget
Microsoft ASP.NET Core Runtime 7.0                    Microsoft.DotNet.AspNe 7.0.18         winget
Microsoft ASP.NET Core Runtime 6.0                    Microsoft.DotNet.AspNe 6.0.29         winget
Microsoft ASP.NET Core Runtime 5.0                    Microsoft.DotNet.AspNe 5.0.17         winget
Microsoft ASP.NET Core Runtime 3.1                    Microsoft.DotNet.AspNe 3.1.32         winget
devtunnel                                             Microsoft.devtunnel     1.0.1249+67b1 winget
Dev Home (Preview)                                    Microsoft.DevHome       0.1201.442.0   winget
Microsoft Deployment Toolkit                          Microsoft.DeploymentTo 6.3.8456.1000  winget
Microsoft Azure CLI                                   Microsoft.AzureCLI      2.59.0         winget
Microsoft Azure Storage Explorer                      Microsoft.Azure.Storag 1.33.1         winget
Microsoft Azure Storage Emulator                      Microsoft.Azure.Storag 5.10.19227.21 winget
Microsoft Azure Quick Review                          Microsoft.Azure.QuickR 0.52.0         winget
Microsoft Azure Kubelogin                             Microsoft.Azure.Kubelo 0.1.0          winget
Azure Functions Core Tools                            Microsoft.Azure.Functi 4.0.5611       winget
Azure Data CLI                                        Microsoft.Azure.DataCLI 20.3.14        winget
Azure Cosmos DB Emulator                              Microsoft.Azure.Cosmos 2.14.16        winget
Azure Developer CLI                                   Microsoft.Azd           1.8.100        winget
LINQPad 8                                             LINQPad.LINQPad.8       8.2.4          winget
LINQPad 7                                             LINQPad.LINQPad.7       7.8.10         winget
LINQPad 6                                             LINQPad.LINQPad.6       6.15.12        winget
LINQPad 5                                             LINQPad.LINQPad.5       5.48.0         winget
JetBrains Rider (EAP)                                 JetBrains.Rider.EAP     241.14494.107  winget
JetBrains Rider                                       JetBrains.Rider         2024.1         winget
JetBrains ReSharper (EAP)                             JetBrains.ReSharper.EAP 2021.2 EAP 8   winget
JetBrains ReSharper                                   JetBrains.ReSharper     2024.1         winget
IntelliJ IDEA Ultimate Edition (EAP)                  JetBrains.IntelliJIDEA 241.15989.21   winget
IntelliJ IDEA Ultimate Edition                        JetBrains.IntelliJIDEA 2024.1         winget
IntelliJ IDEA Community Edition (EAP)                 JetBrains.IntelliJIDEA 241.15989.21   winget
IntelliJ IDEA Community Edition                       JetBrains.IntelliJIDEA 2024.1         winget
JetBrains Hub                                         JetBrains.Hub           2023.1.16990   winget
FFmpeg (Shared)                                       Gyan.FFmpeg.Shared      7.0            winget
FFmpeg (Essentials Build)                             Gyan.FFmpeg.Essentials  7.0            winget
FFmpeg                                                Gyan.FFmpeg             7.0            winget
Android Studio Canary                                 Google.AndroidStudio.C 2023.3.1.9     winget
Android Studio Beta                                   Google.AndroidStudio.B 2023.1.1.25    winget
Android Studio                                        Google.AndroidStudio    2023.2.1.23    winget
Git LFS                                               GitHub.GitLFS           3.5.1          winget
GitHub Desktop Beta                                   GitHub.GitHubDesktop.B 3.1.3-beta3    winget
GitHub Desktop                                        GitHub.GitHubDesktop    3.3.13         winget
GitHub CLI                                            GitHub.cli              2.47.0         winget
Git Extensions                                        GitExtensionsTeam.GitE 4.2.1          winget
GitAhead                                              GitAhead.GitAhead       2.7.1          winget
Git for Windows SDK                                   Git.SDK                 1.0.8          winget
MinGit                                                Git.MinGit              2.41.0         winget
Git                                                   Git.Git                 2.44.0         winget
GIMP Nightly                                          GIMP.GIMP.Nightly       2.99.18        winget
GIMP                                                  GIMP.GIMP               2.10.36        winget
IP Messenger for Win                                  FastCopy.IPMsg          5.6.2          winget
Docker Desktop Edge                                   Docker.DockerDesktopEd 2.5.4.50534    winget
Docker Desktop                                        Docker.DockerDesktop    4.29.0         winget
Docker Compose                                        Docker.DockerCompose    2.23.3         winget
Docker CLI                                            Docker.DockerCLI        24.0.7         winget
Ubuntu 22.04 LTS                                      Canonical.Ubuntu.2204   2204.1.7.0     winget
Ubuntu 20.04 LTS                                      Canonical.Ubuntu.2004   2004.2021.825 winget
Ubuntu 18.04 LTS                                      Canonical.Ubuntu.1804   1804.2019.522 winget
Ubuntu 16.04 LTS                                      Canonical.Ubuntu.1604   1604.2019.523 winget
hub                                                   GitHub.hub              2.14.2         winget
Power Automate for desktop                            Microsoft.PowerAutomat 2.42.317.24061 winget
Dev Proxy                                             Microsoft.DevProxy      0.16.2         winget
Google Chrome Beta (EXE)                              Google.Chrome.Beta.EXE  124.0.6367.60  winget
Google Chrome Beta                                    Google.Chrome.Beta      124.0.6367.60  winget
Google Chrome                                         Google.Chrome           124.0.6367.61  winget

winget でインストールできるソフトウェアを調べる

前回 winget を調べたので、これからは winget で扱えるものはできるだけ winget で扱っていきたいと思います。

そのために必要なことは何でしょう? そう、扱えるソフトウェアを把握することです。

■ おそらく

おそらくここに書かれているソフトウェアが扱えるような気がしますが見るのが大変です。フォルダわけもされていますし。

■ 実際に検索してみる

ということで winget コマンドで実際に検索をしてその結果を見たいと思います。

winget search .

パッケージ名の検索で . がどう扱われるのかはわかりませんがどう扱われるにせよ全部検索できるのではないかと思います。

■ 検索結果

正直列挙できるものではありませんでした。 およそ 6,000 件です。

■ 次回

次回は 6,000 件から注目ソフトウェアを選び抜いて掲載をしてみたいと思います。