SnowStack.EncodingProbe.PowerShell 1.2.0 リリースのお知らせ

less than 1 minute read

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 エージェントの進歩は、予想を何倍も上回る速度で進んでいます。これはコーディングエージェントだけではなく、他の業務領域でも進むでしょう。

私もコマンドレットを開発しながら、「これからどうしようか?」と悩んでいました。

自動運転車も、来年には登場しそうだという報道が聞こえてきます。

コーディングエージェントの進歩から、これから世の中で起きる激変が垣間見えるようです。

Updated: