SnowStack.EncodingProbe.PowerShell 1.2.0 リリースのお知らせ
2026年9月30日に SnowStack.EncodingProbe.PowerShell のバージョン 1.2.0 のリリースを開始したことを、ご報告します。
以下のコマンドレットを追加しました。
Out-ProbedFile : オブジェクトを整形して、ファイルに書き出す。
Convert-ProbedContent : 既存のファイルの文字エンコーディング・BOM・改行を変換する。
このほか、既存のコマンドレットの改善や不具合の修正も行っています。
詳細は、以下の固定ページで解説しています。
SnowStack.EncodingProbe 1.2.0 解説 — ファイル出力・変換コマンドと世界の言語への対応
また、NuGet パッケージの SnowStack.EncodingProbe 1.2.0 も同時にリリースしています。
公開 API(クラスやメソッド)の変更はありませんが、これまで英語と東アジアの CJK(日本語・中国語・韓国語)の言語でしか動作を確認していなかったクラスライブラリを、UTF.Unknown が対応している世界の言語でも使用できるように改修しました。
従来は、日本語などの東アジアの言語環境で、欧米などの言語のファイルを判定すると、Shift_JIS などと誤判定することがありました。1.2.0 では、これを正しく判定できるようにしました。ただし、短い文では、まだ誤判定することがあります。
1.1.0 のときとは違い、今回はクラスライブラリの判定処理そのものを改修しているので、NuGet パッケージを直接お使いの方にも、1.2.0 への更新をお勧めします。
機能説明書
NuGet パッケージとPowerShellコマンドレットの機能説明は既に6月のプレリリース時点で、固定ページで公開しております。
インストール方法や使い方については、こちらの固定ページをご覧下さい。
SnowStack.EncodingProbe NuGet Package 解説
SnowStack.EncodingProbe.PowerShell 解説
言い訳
「コマンドレットを二つ追加しただけで、ずいぶん時間がかかっているじゃないか」と思われる方も多いと思うので、それについて釈明させてください。
まず、今回最も時間を要したのは、二つのコマンドレットの開発ではなく、クラスライブラリの私用領域の扱いと、世界の言語への対応の方です。
先に説明しましたように、コマンドレットも参照しているクラスライブラリの SnowStack.EncodingProbe は、1.1.0 までは英語・日本語・韓国語・繁体字中国語・簡体字中国語でしか厳密な動作確認を行っていませんでした。
今回の 1.2.0 では、UTF.Unknown が対応している旧シングルバイト文字エンコーディングの判定も、東アジアの言語環境で正しく行われるように改修し、厳格な動作確認を行いました。
これにより、クラスライブラリを参照しているコマンドレットも、世界の言語環境で使用できるようになりました。
また、以前から予定していたように、香港の固有文字への対応を行いました。
香港については、Big5-HKSCS への対応をすることになります。Big5-HKSCS は Big5 に香港固有の文字を追加した上位互換の文字エンコーディングですが、.NET には Big5-HKSCS 専用のデコーダーが無く、big5-hkscs を指定しても台湾の Big5(コードページ 950)として扱われます。
香港固有の文字は、主に Big5 のユーザー定義領域(私用領域)に定義されているので、HKSCS に対応するということは、ユーザー定義領域(私用領域)の扱いを決めることと、ほぼ同義になります。
そのため、この Big5-HKSCS への対応をきっかけに、Shift_JIS を含む CJK の旧文字エンコーディング全般について、ユーザー定義領域(私用領域)の扱い方の方針を定めることになりました。
Shift_JIS では、外字の扱い方を定めたことになります。
既に、固定ページの外字(私用領域)の扱い — SnowStack.EncodingProbeで解説していますが、EncodingProbe ではユーザー定義領域(私用領域)の内容には干渉しない方針にしています。
干渉しないとは、例えば Shift_JIS から UTF-8 へ変換する場合は、Shift_JIS のユーザー定義領域の中身を、加工することなく、Unicode の私用領域(PUA)へそのまま写すことを意味します。
ユーザー定義領域の文字が何の字なのかは、ユーザーが決めるものなので、UTF-8 へ移しても PUA の中身の解釈は変更せず、ユーザーの管理下のままにするということです。
香港固有の文字も Big5 のユーザー定義領域に定義されており、Big5-HKSCS を UTF-8 などの Unicode に変換した場合、ユーザー定義領域の香港固有文字を、Unicode の PUA へそのまま写すことになります。
.NET が Big5 と Big5-HKSCS を同一の文字エンコーディングとして扱っている以上、バイナリパターン解析によって両者を区別することはできません。私用領域の文字が、台湾のユーザー定義文字(造字)なのか、香港固有文字なのかも、区別できません。
よって、私用領域の内容は Unicode の PUA へ、そのまま写すことにしました。
この私用領域の扱い方の方針は、そのまま Shift_JIS にも適用されます。外字も Unicode の PUA へ写されます。Unicode からの逆変換では、PUA からユーザー定義領域へ戻されるため、往復も可能です。
EUC-JP の場合は、.NET に 20932 と 51932 の二つのコードページがあり、外字(ユーザー定義領域)の扱いが異なります。外字を往復できるのは 20932 の方だけです。詳細は固定ページの解説をお読みください。
こういった、私用領域の扱い方の方針を定めることに、かなりの時間を要しました。
以前から説明しているように、開発は Claude Code を使用しているので簡単ですが、企画や設計では、私用領域の扱い方などの方針を定めなければならないため、AI に任せることができません。これは「何を、どうしたいのか」の部分なので、人間が考えるしか無いのです。
今のところ、ヘルプなどのメッセージの言語は、まだ世界の言語には対応しておらず、CJK 圏以外は全て英語で表示されますが、これも近い内に対応言語の範囲を広げるつもりでいます。但し、全ての言語のヘルプやメッセージに対応することはできないので、対象とする言語の範囲は絞り込むことになります。詳細は未定です。
クラスライブラリの SnowStack.EncodingProbe 1.2.0 は、まだ mfsr・mfprobe・rmsmf・txprobe には組み込んでいません。これらは 1.1.0 を使用しています。これから入れ替える予定です。入れ替えたら、このブログで告知します。
コーディングエージェントの進歩
これを開発している間にも Claude のアップデートが続き、Opus 5.5、Sonnet 5.5 を試すことになりました。
本当に、もう開発は人間の仕事ではないです。人間の仕事は企画立案と大枠の設計になります。
企画立案は問題発見領域の仕事でもあるので、問題発見こそが人間の仕事であるとも言えます。
OSS の開発と公開を始めてから、あれよあれよという間に AI エージェントが発達して、ソフトウェア開発の仕事が根底から覆ってしまいました。
AI エージェントの進歩は、予想を何倍も上回る速度で進んでいます。これはコーディングエージェントだけではなく、他の業務領域でも進むでしょう。
私もコマンドレットを開発しながら、「これからどうしようか?」と悩んでいました。
自動運転車も、来年には登場しそうだという報道が聞こえてきます。
コーディングエージェントの進歩から、これから世の中で起きる激変が垣間見えるようです。