「枯れた技術」だと思っていたら、まだ基幹で動いていた話 — PowerShellの裏側にいる.NETとC#

たった1行のコマンドが、扉を開けた

[regex]::Matches($content, $pattern)

今日、文字数の境界を二分探索していたとき、何気なく使っていたこの1行を打ち込んだ瞬間に、ふと気づいた。これはPowerShell独自の機能ではない。[regex]という角括弧の書き方は、Microsoftが.NETというプラットフォームのために作った、正規表現エンジンのクラスをそのまま呼び出している記法だ。

[Math]::Floor()も同じだ。[int]$_という型変換の書き方も同じだ。今日PowerShellで打っていたコマンドの多くが、実はPowerShell専用の言語仕様ではなく、.NETというフレームワークの機能を、PowerShellというシェルの皮を被って直接叩いていたということに気づいた。

そこで一つの疑問が浮かんだ。「.NETって、まだ生きてたの?」。これは率直な驚きだった。.NETという名前は、もう何年も前から名前だけは聞いたことがある。だが、それは「Windowsの古いアプリが動いている、もう新しく使われることはない技術」という印象を、正直なところ持っていた。C#という言語名も同様だ。Javaと並んでよく比較される、企業向けの「重い」言語というイメージしかなかった。

調べてみると、その印象は大きく外れていた。

2026年、C#はJavaに歴史的な逆転を仕掛けている

プログラミング言語の人気を計測する代表的な指標の一つ、TIOBE Indexの動きを見ると、状況がよく分かる。2025年11月時点で、C#は前年同月比で2.67ポイント上昇し、シェア7.65%に達していた。対するJavaは8.54%で、その差はわずか0.89ポイントまで縮んでいた。さらに2026年1月の時点では、C#は7.39%まで上昇し(前年同月比+2.94ポイント)、Javaとの差は1.32ポイントに縮まっている。

TIOBEのCEO自身が「C#には、もはやJavaを選ぶ理由を上回らない理由がない」とコメントしているという報道もある。金融業界だけが例外で、それ以外の分野ではC#とJavaがほぼ並んでいる状況だという。2026年中に、この2つの言語のシェアが歴史的に逆転する可能性すら指摘されている。

これは「枯れた技術」の動きではない。何十年も同じ場所に留まっていた2つの巨大言語の勢力図が、今まさに動いている最中だということだ。

ASP.NETは、今も企業システムの裏側にいる

C#の主な活躍場所の一つが、ASP.NETというWebアプリケーション・API構築のフレームワークだ。2026年の統計を見ると、世界の企業向けWebアプリケーションの30%以上がASP.NETで構築されており、プロのバックエンド開発者の25〜28%が実際にASP.NETを使って仕事をしている。さらに、大企業の40%以上が、ミッションクリティカル(止まると業務が回らない)なシステムの少なくとも1つをASP.NETで運用しているという調査結果もある。

業界別では、金融・医療・政府機関といった、規制が厳しく長期運用が前提になる領域で特に強い。これは偶然ではない。ASP.NETは「最新の流行を追う」フレームワークではなく、「何十年も安定して動かす」ことを前提に設計された土台だからだ。実際、ASP.NETで作られたシステムは、新しいフレームワークで作られたものより、平均して運用される期間が長いという指摘もある。

つまり.NETやC#は、表に見えるWebサービスのトレンドからは少し距離があるように見えても、その裏側、企業の基幹システムという「絶対に止められない場所」に、今も深く根を張っている。

なぜ「枯れた」というイメージがついたのか

ここで一度、なぜ「もう古い技術」という印象が広がっていたのかを考えてみたい。

.NETは2002年、Windows専用のフレームワークとして登場した。当時はまさに「Microsoftの、Microsoftのための技術」という性格が強く、他のOS上では使えなかった。この時代の印象が、今でも残っているのだと思う。

しかしそこから状況は大きく変わっている。.NET Coreという、オープンソースで、Windows・macOS・Linuxを問わず動く新しい基盤への転換が進み、今の.NETは完全にクロスプラットフォームの技術になっている。さらにMicrosoftは、毎年新しいメジャーバージョンを欠かさずリリースし続けている。2025年末には.NET 10が出ており、2026年2月には.NET 11のプレビュー版が登場する予定になっている。これは「メンテナンスだけが続いている」状態ではなく、「今も活発に開発が続いている」状態だ。

技術というのは、登場した時期の第一印象がそのまま固定されてしまうことがある。.NETは「2000年代のWindows専用フレームワーク」という最初の印象から、20年以上経った今もなかなか抜け出せていない。だが実態は、その印象とはすでに別物になっている。

PowerShellは、その生き残った基盤の「窓口」だった

ここで、今日実際にやっていた作業に話を戻したい。今日PowerShellから打っていたコマンド——WordPressのREST APIを叩いて記事を取得し、正規表現で文字列を置換し、JSON形式に変換して送り返す——これらはすべて、.NETという、企業の基幹システムを支えている同じ土台の上で動いていた。

これは大事な発見だったと思う。PowerShellを「ちょっと便利なコマンドライン」として使っていたつもりが、実際には、世界中の金融機関や医療機関のシステムを動かしているのと同じ技術基盤に、知らないうちに接続していた。[regex]::Matches()という1行を打つたびに、自分のPCの中で、企業の基幹システムと同じ部品が動いていたということだ。

これは決して大げさな話ではない。PowerShell自体、今では「PowerShell Core」と呼ばれる、.NET上で動くクロスプラットフォームのシェルとして提供されている。Windowsだけでなく、macOSやLinuxでも同じように動く。今日使っていたコマンドの作法を覚えておけば、Windowsの個人PCから、企業のサーバーサイドシステムへも、地続きで知識を持っていける可能性がある。

「古い」と「枯れている」は、別の言葉だった

今回の調査を通して、一つはっきりした区別ができた。「古くからある」ことと、「もう動いていない、廃れている」ことは、まったく別の話だということだ。

.NETやC#は、たしかに古い。2000年代から存在している。だが、古いということは、それだけ長く実戦で使われ、改善され続けてきたということでもある。先ほどのASP.NETの統計にあった「規制の厳しい産業ほどASP.NETが好まれる」という事実は、まさにこの「古さ」が「信頼の積み重ね」として評価されている証拠だ。新しいフレームワークには、まだその実績がない。

枯れた技術というのは、「もう誰も使っていない、止まった技術」を指す言葉だと思っていた。しかし.NETやC#が示していたのは、その逆だった。長く使われ続けてきたからこそ、今もなお現役で、しかもまだシェアを伸ばしている最中の技術が、たしかに存在する。

今日、PowerShellのコマンドを何十回も打ち込んでいる間、その裏側ではこの「長く生き残った、今も成長している基盤」が動いていた。それに気づいたのは、文字数の境界を探していた、地味な作業の真ん中だった。技術への印象は、こういう小さな気づきから、案外簡単に裏返るものなのだと思う。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です