Go WebAssembly と grdp を採用した、Web 上で動作する RDP クライアントです。

2026/04/25 19:59

Go WebAssembly と grdp を採用した、Web 上で動作する RDP クライアントです。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Web ベースのリモートデスクトッププロトコル (RDP) クライアントは、Go と WebAssembly を使用し、grdp ライブラリを構築しています。このクライアントは、プラグインなしでブラウザから Windows サーバーに直接接続することを可能にします。そのアーキテクチャは、WebSocket を介して軽量な Go プロキシサーバーに接続するブラウザタブ上の WASM 実行環境と、TCP を介して安全に RDP ホスト(デフォルトポート 3389)へトラフィックを転送するプロキシサーバーで構成されています。すぐに始めるには、Go 1.24 以降と到達可能な RDP サーバーを用意し、リポジトリ

https://github.com/nakagami/grdpwasm.git
をクローンして
make all
を実行し、WASM バイナリ、サポートする JavaScript ファイル、およびプロキシの実行可能ファイルを作成してください。起動するには
make serve
を使用するか、直接
./proxy/proxy -listen :8080 -static static
を実行してクライアントにアクセスできます(
http://localhost:8080
)。接続インターフェースでは、ホスト、ポート(デフォルト 3389)、ドメイン、ユーザー名、パスワード、および希望する幅/高さを入力する必要があります。

このクライアントは、キーボード入力量、マウスの移動、クリック、スクロールホイール、ならびに RDPSND を介したオーディオストリーミングを完全にサポートしています。オーディオ再生は、PCM 形式(44100 Hz、ステレオ、16 ビット符号付きリトルエンディアン)でブラウザの Web Audio API を使用して行われます。信頼性の高いキーボード操作のためには、ブラウザタブがフォーカスされたままにする必要があります。キーが反応しなくなったら、キャンバス領域をクリックすることで入力転送を回復できます。

セキュリティ上の考慮事項として、デフォルトではプロキシはあらゆるオリジンからの接続を受け付けます。そのため、信頼できるネットワーク上で配置するか、認証または TLS レイヤー(例:nginx、Caddy)の背後に置くべきです。開発用には、特定のコンポーネントを

make wasm
make proxy
、または
make wasm_exec
で再構築し、アーティファクトをクリーンアップするには
make clean
を使用できます。本プロジェクトは GPLv3 ライセンスの下で提供されています。

本文

Go WebAssembly および grdp を用いて構築された、ウェブベースの RDP クライアントです。ブラウザから Windows リモートデスクトップサーバーに直接接続でき、プラグインは一切不要です。

アーキテクチャ

ブラウザ (WASM) ──WebSocket──► プラクシー(Go) ──TCP──► RDP サーバー

ブラウザが生の TCP ソケットを開くことができないため、軽量な Go 製のプロキシサーバーが、ブラウザからの WebSocket 接続と、RDP サーバーの TCP ポート間の橋渡し役を務めます。

要件

  • Go 1.24 以降
  • 到達可能な RDP サーバー(Windows または任意の RDP 互換ホスト)

ビルド方法

git clone https://github.com/nakagami/grdpwasm.git
cd grdpwasm
make all

make all
コマンドを実行すると、以下の成果物が生成されます:

出力ファイル説明
static/main.wasm
ブラウザ内で実行される Go WebAssembly バイナリ
static/wasm_exec.js
Go ランタイム用の JavaScript サポートファイル
proxy/proxy
WebSocket から TCP への変換を行うプロキシサーバー+静的ファイルサーバー

実行方法

make serve
# または同等の操作として:
./proxy/proxy -listen :8080 -static static

その後、ブラウザで

http://localhost:8080
を開いてください。

プロキシオプション

フラグデフォルト値説明
-listen
:8080
リスニング先のアドレスおよびポート
-static
static
静的ファイルを配信するためのディレクトリパス

使用方法

  1. ブラウザで
    http://localhost:8080
    を開きます。
  2. 接続フォームに情報を填入します:
    • ホスト (Host) – RDP サーバーのホスト名または IP アドレス
    • ポート (Port) – RDP ポート番号(デフォルト:3389)
    • ドメイン (Domain) – Windows ドメイン名(ローカルアカウントを使用する場合は空欄のままにしてください)
    • ユーザー名 (User) – ユーザー名
    • パスワード (Password) – パスワード
    • 幅 / 高さ (Width / Height) – 初期デスクトップの解像度
  3. 「接続」ボタンをクリックします。
  4. リモートデスクトップがキャンバス領域に表示されます。キーボードの入力を受け付けるためには、キャンバス領域を一度クリックしてフォーカスを取得してください。
  5. 「断開」ボタンをクリックしてセッションを終了します。

キーボード・マウス操作

  • すべての標準的なキーボード入力は、RDP スキャンコード経由でリモートデスクトップに転送されます。
  • マウスの移動、クリック、スクロールホイールの操作は完全にサポートされています。
  • 注意: キーボードイベントが正しく転送されるには、ブラウザタブ自体にフォーカスが必要です。キーが無反応の場合は、キャンバス領域内をクリックしてフォーカスを再取得してください。

オーディオ

リモート側のオーディオは RDPSND プロトコルでストリーミングされ、ブラウザの Web Audio API を使用して再生されます(PCM 44100 Hz、ステレオ、16 ビット符号付きリトルエンディアン)。

セキュリティに関する注意事項

プロキシはあらゆるオリジンからの接続を受け入れます。インターネットに公開する場合は、信頼されたネットワーク上で実行するか、認証機能を追加してから使用してください。認証情報はブラウザからプロキシへ WebSocket 経由で転送されます。不信任されたネットワーク越しにアクセスする際には、HTTPS/WSS を使用してください(nginx や Caddy などの TLS ターミネーションを行うリバースプロキシの背後でプロキシを配置することをお勧めします)。

開発

  • make wasm
    # WebAssembly バイナリのみ再構築
  • make proxy
    # プロキシサーバーのみ再構築
  • make wasm_exec
    # ローカルの Go ツールチェーンから
    wasm_exec.js
    を更新
  • make clean
    # ビルド成果物をすべて削除

ライセンス

GPLv3 – 詳しくは grdp プロジェクトの LICENSE ファイルを参照してください。

同じ日のほかのニュース

一覧に戻る →

2026/04/22 16:20

無料ユニバーサルコンストラクションキット

## Japanese Translation: Free Universal Construction Kit は、10 の主要な建築玩具システム(Lego、Duplo、Fischertechnik、Gears! Gears! Gears!、K'Nex、Krinkles(Bristle Blocks)、Lincoln Logs、Tinkertoys、Zome および Zoob)の相互運用性を可能にし、「技術的ロックイン」を解消することに成功しました。これらすべてのシステムは、光学的コンパレーターを用いて 0.0001 インチ以内の精度で設計されたほぼ 80 の両方向アダプターブロックを通じて統合されています。これらのモデルは、Thingiverse.com、F.A.T. Lab ウェブサイトの 29MB の.zip ファイル、および The Pirate Bay の"physibles"チャンネルにある Torrent ファイルを介して自由にご利用可能です。ユーザーはオープンソースのデスクトッププリンター(例:Makerbot、RepRap、Ultimaker、Printrbot)または Ponoko.com などの高解像度サービスを利用して部品を再現できます。 fist サイズの Universal Adapter Brick は、すべてのサポートされたネットワークを一つの統合されたシステムに統一します。このプロジェクトは、リバースエンジニアリングを企業の「技術的ロックイン」や特許制約を超えようとする市民活動として位置付けています。法的には、レゴ(1958 年に特許出願)、Lincoln Logs(1920 年に特許出願)など従来のブランド向けのホーム印刷アダプターは「適合例外」に該当し、フェアユースによって保護されています。一方、Zoob および ZomeTool のアダプターは、依然として有効な特許制限により、それぞれ 2016 年 12 月および 2022 年 11 月までリリースが遅延しています。本キットは Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported ライセンスの下で提供されており、商業的大規模生産は禁止されていますが、オープンソースプリンターやサービス bureau を通じた個人による製造は許可されています。F.A.T. Lab と Sy-Lab が開発し、 Adapterz LLC が法的代表を務め、 Riley Harmon がビデオ製作を担当した本プロジェクトには、小さな部品が含まれているため 3 歳未満の幼児には不適切であるという窒息危険に関する警告表示があります。結局のところ、このオープンなアプローチは、創業者が既存デザインにおける保護された知的財産権を尊重しつつ相互運用性を育むことを可能にします。

2026/04/22 22:46

『一ビット:北斎「巨浪」(2023)』

## Japanese Translation: このデジタル・プロジェクトは、葛飾北斎『富嶽三十六景』を忠実な 1 ビット・ピクセルアートとして再製作する、5 年前のイニシアチブを蘇らせます。意図的に早期モノクロの Macintosh の美学を喚起し、Susan Kare のデザインへのレガシーを称え、Quadra 700 または PowerBook 100(System 7 が動作中)上で Aldus SuperPaint 3.0 を使用します。すべての画像は厳密にオリジナルの Mac 解像度 512×342 ピクセルに合致しています。 ユーザー @polyducks の提案によりシリーズを『神奈川沖浪裏』から開始し、寄稿者 hypertalking が 01/36 としてキュレーションした本シリーズには、近日中に追加作品も掲載されます。Mac デスクトップ背景用にボーナスの高解像度バージョン(640×480)も用意されています。本作はクリエイティブ・コモンズ Attribution-NonCommercial-NoDerivatives 4.0 International ライセンスの下で共有されており、画像を再利用または投稿する場合は創作者へのクレジットとウェブサイトのリンクが必要です。 ## Text to translate Summary remains good; minor improvement in flow and clarity below: This digital project revives a five‑year‑old initiative to recreate Hokusai's "Thirty‑Six Views of Mount Fuji" as authentic one‑bit pixel art. It intentionally evokes early black‑and‑white Macintosh aesthetics, honoring the design legacy of Susan Kare and using Aldus SuperPaint 3.0 on a Quadra 700 or PowerBook 100 running System 7. Every image strictly matches the original Mac resolution of 512 × 342 pixels. Launched with "The Great Wave off Kanagawa"—suggested by user @polyducks and curated as item 01/36 by contributor hypertalking—the series will feature additional works soon. A bonus high‑resolution version (640 × 480) is available for Mac desktop backgrounds. The artwork is shared under a Creative Commons Attribution‑NonCommercial‑NoDerivatives 4.0 International License; users must credit the creator and link back to the website when reproducing or posting the images.

2026/04/26 1:11

これまで完了することのなかったプロジェクトを、コーディング支援ツールを使って再開させる行為。

## Japanese Translation: 元のサマリーは質が高く、明確で、不必要な冗長性を排除しつつテキストの核心を捉えていますが、主要項目に記載されている特定の AI モデル(Claude Code/Opus)を明示的に記載することで、および使用された核心的なコーディング規約(例:Pydantic V2 の注釈、Google スタイルの docstring など)を簡潔に列挙することで、記述のプロセスの厳密さを強調し、その精度をさらに高めることができます。 これらの軽微な改善を盛り込みながら、流れを維持した上で若干洗練させたバージョンを示します。 ## 精査後のサマリー 著者は「Sub-standard」という個人用音楽プロジェクトを約一夜間で機能させることに成功しました。このプロセスでは、**Claude Code (Opus 4.6)** を活用して複雑なコーディングタスクを処理させました。この実験は、明確な規約(Pydantic V2 の注釈や Google スタイルの docstring など)とコンテキストを与えることで、AI アシスタントが「Tsundoku」現象(時間的あるいは能力的な制約により停滞するプロジェクト)を超えて個別のコーディング目標を完了させることが可能であることを示しています。このワークフローでは、ストリーミングに `yt-dlp`、検索に `ytmusicapi` といった特定のライブラリを利用し、約 80 の OpenSubsonic エンドポイントを扱うために SQLite ストレージを統合しました。初期の構築では、構造化データを正しく返すようにstubbed エンドポイントを見直す必要がありましたが、最終的な結果はプロフェッショナルなリリースよりも個人の願望実現を最優先し、意図的に認証をスキップしました。このアプローチは、開発者が AI に過剰に依存することで「deskilling」という潜在的なリスクを浮き彫りにしますが、クリエイターにとって強力なアクセラレータとなります。完全なリポジトリは git 上で入手可能であり、本来なら未完了のままになる可能性のある個人用プロジェクトの迅速実行のための青写真を提供しています。