**MAUI が Linux に登場します**

2026/03/23 0:43

**MAUI が Linux に登場します**

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

要約

Japanese Translation:

Avalonia は、.NET MAUI アプリが Linux と WebAssembly 上で動作しつつ、すべてのプラットフォームで外観と感触を一貫して保つことができるプレビュー バックエンドをリリースしました。発表は Avalonia 12 と .NET 11 のプレビューとともに行われ、新しいバックエンドはネイティブ OS コントロールと Avalonia 自身で描画される UI 要素の両方をサポートします。

セットアップ:

  1. 標準的な MAUI アプリを作成する。
  2. Avalonia.Controls.Maui.Desktop
    NuGet パッケージを追加する。
  3. ターゲットを
    .net11.0
    に設定する。
  4. MauiBuilder
    内で
    UseAvaloniaApp
    を呼び出す。

チームは既存のアプリ MauiPlanets, 2048, AlohaAI, MyConference, TwentyOne Weather, MapApp を複数ポートし、バックエンドを検証しました。これらのポートではダーク/ライトテーマサポート、安全なコードトリミング、NativeAOT 互換性、カスタム タブバー、WebAssembly 用の CORS プロキシが維持されています。また、新しいハンドラにより、既存の .NET MAUI ライブラリ(例:

SkiaSharp.Views.Maui
,
Mapsui.Maui
)は変更なしで Avalonia プラットフォーム上でも動作します。

作業中に Avalonia はバージョン 12 で新しいナビゲーション API とコントロールを導入し、バックエンドがそれらを活用しています。将来的な計画としては、Avalonia 用の専用 Maui.Essentials 実装と WinUI 相互運用性により完全なネイティブプラットフォームサポートを実現することがあります。開発者にとっては、UI の外観をより厳密に制御しながらクロスプラットフォームの一貫性を保つことが可能になり、MAUI が Linux および WebAssembly 市場へのリーチを拡大する潜在的なメリットがあります。

本文

Avalonia 12 と .NET 11 プレビューの併用

.NET MAUI 用の Avalonia バックエンドの最初のプレビューを発表できることを嬉しく思います。
これにより、Linux や WebAssembly など新しいプラットフォームへ .NET MAUI アプリをデプロイできるようになり、Avalonia を活用できます。

昨年秋以降、Avalonia の強力な機能を .NET MAUI に持ち込むために大きく前進しました。
Linux と WebAssembly のサポートに加え、このバックエンドは Avalonia が掲げるクロスプラットフォームの一貫性をさらに推進します。ネイティブ UI はホストプラットフォームと融合し、描画 UI はすべてのプラットフォームでクラシックな外観を保ちます。


4 ステップで始める

  1. .NET MAUI アプリを作成
  2. Avalonia.Controls.Maui.Desktop
    NuGet パッケージを追加
  3. net11.0
    ターゲットフレームワークを追加
  4. MauiBuilder
    上で
    UseAvaloniaApp
    を呼び出す

これだけです。

net11.0
ターゲットを実行すると、Avalonia ブートストラッパーなしにアプリが起動します。
ソースジェネレーターは拡張・無効化可能で、完全な制御が取れます。例はリポジトリに掲載されています。


Avalonia をみんなのために改善

このプロジェクトは Avalonia 自体を改善する貴重な機会となりました:

  • .NET MAUI と Avalonia のコントロールセットのギャップを埋め、MAUI 専用コントロールを排除。
  • Avalonia 12 に搭載される新しいナビゲーション API とコントロールを導入。
  • すべての .NET MAUI ハンドラーは Avalonia のプリミティブに基づき、Avalonia API を通じて完全にカスタマイズ可能で、描画ベースのためプラットフォーム間で見た目が同一です。

テスト方法

既存の .NET MAUI アプリを移植し、新規アプリも作成しました:

アプリ備考
.NET MAUI Control Galleryサービスとコントロールをネイティブ版と比較テスト、特に WASM で。
AlohaAIJakub Florkowski と GitHub Copilot の協力によるプロジェクト。LLM コンセプトをゲーム化して教える。ダーク/ライトテーマの追加、trim‑safety、NativeAOT サポート、カスタムタブバーを実装。すべての MAUI プラットフォーム(ネイティブまたは描画)で動作。
MyConference.NET MAUI Live Stream から「Agentic AI」をデモ。テーマトリミング修正と WebAssembly 用 CORS プロキシが必要でしたが、他のすべてのデスクトッププラットフォームで Avalonia とネイティブハンドラーともに完璧に動作。

ネイティブと描画コントローラーを同時に実行することで柔軟性を示しています:

  • ネイティブ MAUI は OS コントロール、タブバー、ナビゲーションページを使用し、ホスト OS とより統一感があります。
  • Avalonia.Controls.Maui
    はすべてのプラットフォームで一貫した見た目と振る舞いを提供します。

サンプルアプリ

サンプル特徴
WebView WeatherTwentyOne元は .NET 6 用に作られ、FlexLayout でサイドバーとグリッドを実装。オープンソース WebView を利用し、Linux と WASM で動作します。
GraphicsViewMAUI の
GraphicsView
やプリミティブ上に構築されたコントロールがシームレスに機能;ハンドラーは新しいキャンバスへ描画。
SkiaSharp.Views.Maui依存ライブラリ(例:Mapsui.Maui)が Avalonia MAUI と相互運用できるようラップ。MapApp はデスクトップ、WASM、ネイティブ MAUI 上でオーバーレイコントロール付きのシンプルなマップビューを表示します。

今後の展望

  • Avalonia ベースの
    Maui.Essentials
    の独自実装に取り組み、API サポートを段階的に拡張。
  • WinUI との相互運用性を計画し、Avalonia コントロールをホストして .NET MAUI ネイティブプラットフォーム物語を完結させる。
  • ネイティブプラットフォーム向けにコントローラーライブラリ作者が描画メソッドへ拡張できるよう、シンプルなパターンを確立。

.NET 11 の一般公開に向けてワクワクしています。Avalonia MAUI を試し、新しいコントロールとライブラリを移植してみてください。そして、すべての対象プラットフォームで Avalonia が提供する価値を体感してください。

同じ日のほかのニュース

一覧に戻る →

2026/03/23 3:23

**PC Gamer 推奨RSSリーダー(37 MBの記事でダウンロードが止まらない場合)** - **Feedly** - クラウドベースでデバイス間同期が可能。 - カテゴリー分けやタグ付け機能が充実しています。 - **Inoreader** - 高度なフィルタリングと検索機能を備えています。 - オフライン閲覧モードもサポートします。 - **The Old Reader** - シンプルで軽量、Googleアカウント連携が可能です。 - 共有リストやコメント機能があります。 - **NewsBlur** - AIによるトピック分類と学習機能を提供。 - モバイルアプリも充実しています。 - **Reeder (macOS/iOS)** - Appleデザインに合わせた直感的なUIです。 - 多数のリーダーサービスと連携可能です。 **注意点** - 大容量の記事をダウンロードし続ける場合は、**「オフライン保存」機能**をご利用ください。 - **キャッシュクリア**や**ブラウザ拡張機能無効化**で問題が解決することもあります。 - それでも解決しない場合は、PC Gamerのサポートへ問い合わせるか、別のリーダーを試してください。

## Japanese Translation: PC Gamerの記事は、読者に通知ポップアップ、背景を暗くするニュースレターオーバーレイ、そして少なくとも5つの閉じにくいバナー広告でページを襲撃していることを示しています。ウェルカムマットを回避した後でも、その広告は記事のタイトルとサブタイトルの横に残ります。初期ページロードは37 MBです;5分以内にサイトはさらに約0.5ギガバイトの広告素材をダウンロードします。NetNewsWire、Unread、Current、Reeder など多くの RSS リーダーはこれらの侵襲的要素をフィルタリングでき、よりクリーンな閲覧体験を提供します。これはユーザーが PC Gamer サイトの煩わしさを避けるために広告なしの RSS フィードに切り替える可能性があることを示唆しており、出版社は読者の関与を維持するために過度な広告戦術を減らす圧力を受けるかもしれません。

2026/03/23 4:02

「最適化のゴールドスタンダード:ローラーコースター・タイクーンの内部を探る」

## Japanese Translation: クリス・ソーヤーの *RollerCoaster Tycoon*(1999)は、ほぼすべてのコードをアセンブリで書き、細部にわたる低レベル最適化を施したことで、滑らかなゲームプレイのベンチマークを確立しました。金額は最大想定範囲にちょうど合ったデータ型(ショップ価格は1バイト、総公園価値は4バイト)で保存されており、後にオープンソース再実装 OpenRCT2 ではこれらを統一的な8バイト変数へ移行し、現代のCPUアーキテクチャに合わせました。乗算・除算の代わりにビットシフト(`<<`/`>>`)が使用されており、コンパイラが自動で行うはずだった処理を手動で実装しています。 ゲームデザインの決定は性能制約と密接に結びついています。ソーヤーはデザイナー兼プログラマーとして、CPUフレンドリーな計算を優先する設計選択が可能でした。ゲストの移動はアトラクションへ向かう完全な経路探索ではなくランダムウォークに依存しており、多数のエージェントによる高価な計算を大幅に削減しました。パスファインディングは特定のシナリオ(例:乗物修理のメカニック、出口を探すゲスト)でのみ呼び出され、深さ制限が設けられています—デフォルトでは5つのジャンクション、条件に応じて7または8に増加し、フレームスパイクを回避します。混雑した道では同一タイルに複数のゲストが存在でき、衝突回避は完全に省かれ、近接による幸福度計算のみが影響を受けます。 OpenRCT2 はこの元のロジックをリバースエンジニアリングし、現代CPU向けに変数サイズを標準化し、パスファインダーの制限を拡張することで更新しました。これにより、レガシートリックが新しいハードウェアに適応できることが示されました。将来のアップデートでは、衝突チェックや厳密なデータサイズといった古い制約を緩和しつつ、今日のマシンで性能を損なわずにコア体験を保持することが可能です。 これらの洞察は、デザイナーとプログラマーの緊密な協働と意図的な低レベル最適化が、小規模チームでも高性能ゲームを構築できることを示しており、大手スタジオも採用すべきアプローチです。 ## Text to translate (including missing points):** Chris Sawyer’s *RollerCoaster Tycoon* (1999) set a benchmark for smooth gameplay by writing almost all of its code in Assembly and applying meticulous low‑level optimizations. Money values were stored in data types sized exactly to their maximum expected range (1‑byte for shop prices, 4‑bytes for total park value), and the original engine later shifted these to uniform 8‑byte variables in the open‑source reimplementation OpenRCT2 to match modern CPU architecture. Bit shifting (`<<`/`>>`) was used instead of multiplication/division by powers of two, a manual trick that compilers no longer perform automatically. Game‑design decisions were tightly coupled with performance constraints: Sawyer served as both designer and programmer, allowing design choices to favor CPU‑friendly calculations. Guest movement relied on random walking rather than full pathfinding toward attractions, drastically reducing expensive calculations for thousands of agents. Pathfinding was invoked only in specific scenarios (e.g., mechanics repairing rides, guests seeking exits) and had a depth limit—default 5 junctions, increased to 7 or 8 under certain conditions—to avoid frame‑spikes. Overcrowded paths allowed multiple guests on the same tile; collision avoidance was omitted entirely, with only happiness calculations affected by proximity. OpenRCT2 reverse‑engineered this original logic and modernized it—standardizing variable sizes for current CPUs and extending pathfinder limits—showing how legacy tricks can be adapted to new hardware. Future updates could relax some of these old constraints (such as collision checks or strict data sizing) without harming performance on today’s machines while still preserving the core experience. These insights underscore that close collaboration between designers and programmers, coupled with deliberate low‑level optimization, enables small teams to build high‑performance games—an approach larger studios might emulate.

2026/03/23 0:16

**バージョン管理の未来** バージョン管理は、従来型のリポジトリやブランチモデルを超えて進化しています。新たに浮上している動向としては、AI 主導の変更分析、分散したチーム間でのリアルタイム協働、および継続的デリバリー・パイプラインとの緊密な統合が挙げられます。コードベースがより大規模かつ複雑化するにつれて、これらの革新はワークフローを合理化し、マージコンフリクトを減少させ、全体的なソフトウェア品質を向上させることを約束しています。

## Japanese Translation: **Manyana** は、Conflict‑Free Replicated Data Types(CRDTs)がバージョン管理にどのように利用できるかを示すデモプロジェクトです。ユーザー体験を向上させます。 ファイルは *weave* として表現されます——1 つのデータ構造が、追加または削除された各行とメタデータを記録し、行順序を永続化し、同時挿入に対してマージ全体で一貫した順序を提供します。 CRDTs は順序非依存ですので、マージが失敗することはありません。衝突はファイルの同じ部分を編集したときだけ発生し、不透明なマージブロブではなく明確な競合マーカーが生成されます。 システムはまた、リベースが履歴を破壊せずに行えることも示しています:コミットは新しいベース上で再実行され、「プライマリー・アニサスター」注釈によって完全な祖先関係が保持されます。 チェリーピッキングとローカル Undo はまだ実装されていませんが、470 行の Python デモ(パブリックドメイン)は、CRDTs がバージョン管理における難しい UX 問題を解決し、現在のツールよりも明確な競合表示を提供できることを示しています。