Microsoft、C#やRustからWin32 APIへのアクセスを容易にする計画を発表「win32metadata」プロジェクト

Microsoftは、さまざまなプログラミング言語からWin32 APIへのアクセスを容易にする「win32metadata」プロジェクトを発表した。まずはC#、C++、Rust対応を進める。

» 2021年01月29日 16時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Microsoftは2021年1月21日(米国時間)、「win32metadata」プロジェクトを発表した。Win32 APIのメタデータを提供し、さまざまなプログラミング言語からWin32 APIへのアクセスを容易にすることが目的だ。

 Win32 APIをアプリケーションから利用すると、Windowsを最大限に活用できる。CやC++の開発者であれば既存の仕組みを容易に利用できるものの、C#やRustのような言語からWin32 APIへアクセスするには、手動でAPIのラッパーやバインディングを作成する必要がある。この方法はエラーが起こりやすく、広範なAPIをカバーする拡張性にも欠けている。

 近年では、さまざまな言語からWin32 APIを呼び出す必要性が高まっている。これを背景として、ラッパーやバインディングで強く型付けされた慣用的な表現を提供し、開発者の負担を軽減する幾つかのコミュニティープロジェクトも登場している。.NET向けの「P/Invoke」や、Rust向けの「winapi-rs」などが有名だ。

 これらのプロジェクトは有望なものの、手動でメンテナンスされているため、広範なAPIを持続的にカバーするのは困難であり、コストも高い。さらにプロジェクトの成果が他の言語に波及することもない。

多様な言語から広範囲のWin32 APIへアクセスできるように

 Microsoftは、コミュニティーの負担を軽減し、多様な言語から広範なWin32 APIへ、簡単に持続的にアクセスできるようにするため、win32metadataプロジェクトに乗り出した。

 既に同プロジェクトをGitHubで公開しており、Win32 APIを記述したメタデータを含むECMA-335準拠のWindowsメタデータファイル(winmd)のプレビュー版もNuGet.orgに公開した。

 さらに開発者が自分の選んだ言語からWin32 APIを慣用的な方法で呼び出すために必要な、メタデータをベースに作成された言語プロジェクションのプレビュー版(C#、C++、Rust)もGitHubで公開した。

オープンソースの.NETアセンブリブラウザ/デコンパイラ「ILSpy」にwinmdファイルをロードすると、メタデータのプレビュー版を閲覧できる(出典:Microsoft

2021年5月までにプレビュー版を公開

 win32metadataプロジェクトの現時点でのロードマップは次の通りだ。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。