**Wii ニュースチャンネルをローカルニュース配信にパッチ適用(2025)**

2026/01/16 21:58

**Wii ニュースチャンネルをローカルニュース配信にパッチ適用(2025)**

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

要約

Japanese Translation:

概要:
著者は、Wii コンソールのニュースチャンネルが Nintendo のオリジナルソースではなく「El Nuevo Día」RSS フィードから新鮮なプエルトリコのニュースを表示できるようにする完全なシステムを作成しました。チャネルの WAD ファイル(

0000000b.app
セクション)内にハードコードされた URL を
news.wiilink.ca
に置き換え、WiiLink のオープンソースニュースジェネレーターに新しいフィードを追加することで、このパッチはホームブリュー対応システムで動作します。
更新された RSS データは Go プログラムによって処理され、LZ10 で圧縮され、OpenSSL によって生成された秘密鍵で RSA スタイルに署名され、必要な
news.bin.NN
ファイル(プエルトリコのハードコード済み緯度/経度を含む)を書き出します。AWS Lambda 関数は EventBridge により毎時間トリガーされ、このプログラムを実行し、バイナリを S3 バケットにアップロードして Wii のニュースチャンネルを自動的に最新の状態に保ちます。
このプロジェクトは 2013 年に Nintendo が廃止したサービスを復活させ、オープンソースツールとクラウド自動化がレガシー ハードウェアを拡張できることを示しています。ホームブリュー Wii ユーザーは最新のローカルニュースにアクセスでき、この手法は他の廃止サービスの復活にもインスピレーションを与える可能性があります。

本文

2025年8月25日

🎧 現在再生中: Menu (News Channel) – Nintendo Music App から

地元ニュース記事を意外な場所に表示することが好きだったので、Nintendo Wii の News Channel に最新のローカルニュースを表示させるには何が必要か試してみるのは面白いプロジェクトだと考えました。以下に成果物をちらっとご紹介します。


TL;DR – クリックで展開(ネタバレ)

  • Go と wadlib を使って News Channel のハードコードされた Nintendo URL を S3 ストレージバケットへ向けるよう修正し、必要なバイナリファイルをメモリ上で抽出・編集。
  • WiiLink のオープンソースニュース生成器を改変して 「El Nuevo Día」 をニュースソースに追加。
  • AWS Lambda + EventBridge を設定し、毎時間必要なニュースバイナリファイルを再生成。

ソースコード: WiiNewsPRWiiNewsPR‑Patcher


Wii の News Channel

News Channel は北米で 2007年1月26日 にデビューしました。これは Wii 発売から約 2 か月後です。この日以来、Wii コンソールにプレインストールされ、世界中のニュースを読む新しい方法を提供してきました。他の「ユーティリティ」チャンネル(例:Forecast Channel)と並び、Wii を単なるゲーム機以上のものとして位置づけようとしました。

2013年6月27日にサービスが終了する直前の動画記録をご覧ください。


News Channel がコンテンツを取得する仕組み

カスタムニュースを表示できるかどうかを検討する前に、まず News Channel が実際にどのようにコンテンツを取得しているかを調べる必要があります。起動時に「Downloading…」というスプラッシュスクリーンが表示されるため、何らかの方法でニュースを取得しているはずです。

Wii はインターネット接続設定でプロキシ機能をサポートしています。つまり、ローカルマシンに mitmproxy をセットアップして HTTP の挙動を観測できます。

# スクリーンショットしやすい UI で mitmweb を起動:
mitmweb --listen-port 8080

未修正の Wii で News Channel 用にミドルマンプロキシを実行すると、次の URL から

news.bin.00
ファイルを取得しようとします。

http://news.wapp.wii.com/v2/1/049/news.bin.00

URL パスの解説

セグメント意味
1
「英語」(コンソール言語設定)。devkitPro の
conf.h
に可能な値が示されています。
049
米国の Wii 国コード。wiibrew.org で全リストが確認できます。

このファイル取得に失敗すると News Channel はエラーを表示します。バイナリファイルはおそらくニュースデータです。HTTP リクエストを行う様子を見ると、独自のデータをサーブできる可能性があります。

プロキシ設定を正しく構成した後にインターネット接続テストを実行すると、Wii が

http://conntest.nintendowifi.net
に HTTP リクエストを送信するのが分かります。あのページはまだオンラインです!


コミュニティのホームブリューで News Channel を保存

12 年以上前に Nintendo は News Channel のオンライン機能へのサポートを終了しました。愛されるレトロコンソールとして、コミュニティはその機能を保全し、意図された寿命を超えても利用できるようにする努力を続けています。

この種の非公式ソフトウェアプロジェクトは一般的に ホームブリュー と呼ばれます。今回のプロジェクトでは特に重要なのが、WiiLink チームがサーバーを維持し、今日でも Wii のオンライン接続機能を体験できるようにしてくれることです。

Wii コンソールでホームブリューを始める方法に興味がある場合は https://wii.hacks.guide をご覧ください。

Thanks to WiiLink, we can revive the News Channel and browse up‑to‑date news – just not local news, which is our real goal.


WiiLink が News Channel をパッチする仕組み

WiiLink をインストールした後に mitmproxy を起動し、Wii が何をしているか確認すると、別のドメイン

news.wiilink.ca
からファイルを取得するようになります。
news.bin.00
を取得でき、
news.bin.23
まで要求し続けます。News Channel はこのサーバーから 24 時間分のニュースを正常に取得しています。

高レベル手順

  1. News Channel を自分が管理するドメインへリダイレクトさせる。
  2. 目的のコンテンツでバイナリファイルを生成する。

ステップ 1: News Channel のリダイレクト用パッチ

WiiLink のインストールガイドに従い、重要なステップは News Channel のパッチ版をインストールすることです。同組織の GitHub には WiiLink24‑Patcher が含まれています。

patch.cs
で VCDIFF エンコードされた
News_1.delta
パッチへの参照が見つかります。

注:WiiLink ガイドは現在 CLI パッチャーではなく Python ベースの

WiiLink-Patcher-GUI
を使用することを推奨しています。

.delta
ファイルをローカルにダウンロードしたら、
xdelta3
で確認できます。

xdelta3 printdelta News_1.delta

出力は

0000000b.app
ファイルが必要で、パッチ後のバイナリを
news.dol
として保存することを示しています。WAD ファイル管理には libWiiSharp が使われていますが、ここでは Go の wadlib を使用します。

// 簡易抽出スクリプト(エラーハンドリングは省略)
wad, _ := wadlib.LoadWADFromFile("news.wad")
titleMetadata := wad.TMD
contentMetadata := titleMetadata.Contents

outputDir := "extracted_wad/"
os.MkdirAll(outputDir, 0755)

for i := 0; i < len(wad.Data); i++ {
    data, _ := wad.GetContent(i)
    contentID := contentMetadata[i].ID
    filename := filepath.Join(outputDir, fmt.Sprintf("%08x.app", contentID))
    os.WriteFile(filename, data, 0644)
}

公式(v7) News Channel WAD ファイルでこのスクリプトを実行すると、12 個の

.app
ファイルが抽出されます。中には
0000000b.app
が含まれています。

次にデルタパッチを適用します。

xdelta3 -d -s extracted_wad/0000000b.app News_1.delta news.dol

生成された

news.dol
にはパッチ後のバイナリが格納されています。簡易的にヘックス検索すると、元の URL(
http://news.wapp.wii.com/v2/%d/%03d/news.bin
)が
http://news.wiilink.ca
に置き換えられていることが分かります。

メモリ上で URL を上書き

自分のドメインへリダイレクトするために、次のような小さな Go ユーティリティを書きました。

const OriginalURL = "http://news.wapp.wii.com/v2/%d/%03d/news.bin"
const NewURL      = "http://wii.rauln.com/news/%d/%03d/news.bin"

wad, _ := wadlib.LoadWADFromFile(wadPath)
content, _ := wad.GetContent(1) // ID 0000000b

originalBytes := []byte(OriginalURL)
newBytes     := []byte(NewURL)

padded := make([]byte, len(originalBytes))
copy(padded, newBytes)

offset := bytes.Index(content, originalBytes)
copy(content[offset:offset+len(originalBytes)], padded)

wad.UpdateContent(1, content)
os.WriteFile(outputPath, wadBytes, 0644)

実行例:

go build
wiinewspr-patcher news.wad patched_news.wad

patched_news.wad
http://wii.rauln.com/news/%d/%03d/news.bin
を指すようになっています。YAWM (ModMii Edition) で Wii にインストールし、再度 mitmproxy を起動してリクエストが自分のドメインへ向かっていることを確認します。


ステップ 2: News Channel 対応ニュースファイルの生成

WiiLink チームの

NewsChannel
プロジェクトは Go で書かれており、
news.wiilink.ca
から配信されるバイナリニュースファイルを生成します。主な手順は次のとおりです。

  1. 国別設定を取得する。
  2. 設定されたソース(例:NHK)から記事とメタデータをフェッチ。
  3. データをバイトバッファに加工。
  4. LZ10 で圧縮し、RSA 署名を付与してディスクへ書き込み。

ファイル名は特定の補間パターンに従っています – これが News Channel のデータ URL に使用される言語/国コードを知る手がかりになりました。

面白い事実: LZ10 は Game Boy Advance、DS、Wii 系で使われている Nintendo 独自の LZ77 バリアントです。

wii-tools/lzx
に Go のソースコードがあります。


WiiLink のジェネレーターを Puerto Rico ニュースに対応させる

私は

NewsChannel
リポジトリを
WiiNewsPR
へフォークし、記事キャッシュとバイナリ出力パスのフラグサポートを追加しました。既存のソースはすべて削除し、新しい 「El Nuevo Día」(ENDI) を追加しました。フィードはスニペットのみですが、多くの記事には画像が付属しており、News Channel でカテゴリ分けする際に役立ちます。


最終設定要件

  1. 各バイナリニュースファイルをカスタム RSA キーで署名(Wii が処理できるように):

    openssl genrsa -traditional -out Private.pem 2048
    
  2. ソース用の低品質ロゴを作成(ImageMagick):

    magick logo.svg -quality 30 -resize 200x200 -strip logo.jpg
    
  3. Go バイナリをビルドし、実行して

    ./v2/1/049
    にニュースバイナリを生成:

    go build
    ./WiiNewsPR -o ./output -c ./cache
    

    これにより

    news.bin.NN
    ファイルが作成されます。24 個(毎時間)必要です。一時的な対策として、現在の時間帯のファイルを他のすべての時間帯へコピーします。


テスト

S3 バケットに 24 個のファイルをアップロードし、パッチ済み News Channel がカスタムドメインから取得するよう設定してチャネルを起動。リクエストが順次完了すると記事が表示されます – これで満足感が得られます!


ボーナスステップ: AWS Lambda で毎時間ニュース更新を自動化

ファイルを手作業で S3 バケットにコピーするのは便利ですが、自動でバイナリを生成してくれる仕組みが理想的です。

Lambda ハンドラ(簡略版)

func Handler(ctx context.Context) error {
    cmd := exec.CommandContext(ctx, "./WiiNewsPR", "-o", "/tmp", "-c", "/tmp/cache")
    // …

    _, err = uploader.Upload(ctx, &s3.PutObjectInput{
        Bucket:      aws.String(bucketName),
        Key:         aws.String(fmt.Sprintf("%snews.bin.%s", keyPrefix, hour)),
        Body:        file,
        ContentType: aws.String("application/octet-stream"),
    })
    // …
}

Serverless 設定(抜粋)

service: wiinewspr-generator

provider:
  name: aws
  environment:
    TZ: America/Puerto_Rico   # 正しい時間帯を確保
  events:
    - schedule:
        rate: cron(30 * * * ? *)   # 毎時間 30 分に実行
        name: wiinewspr-every-30pasthour

package:
  patterns:
    - bootstrap   # コンパイル済み Lambda ハンドラ
    - WiiNewsPR   # バイナリニュース生成器
    - ../Private.pem

備考

  • Puerto Rico のタイムゾーンで Lambda を実行し、
    time.Now()
    が期待通りの時間を返すようにします。
  • デフォルトメモリより多めに割り当てることをおすすめします。LZ10 圧縮は低 CPU Lambda ではボトルネックになりやすく、30 秒でタイムアウトする可能性があります。

24 時間稼働させると、S3 バケットには常に最新ニュースが更新され続けます。


まとめ

これで朝起きてコーヒーを飲みながら、2007 年のように Nintendo Wii で地元ニュースを閲覧できるようになりました。

ご清聴ありがとうございました!

クレジット

この実験は Wii ホームブリューコミュニティ――特に RiiConnect24 Team、WiiLink Team、wiibrew.org の貢献者――の素晴らしい仕事がなければ失敗に終わっていたでしょう。

同じ日のほかのニュース

一覧に戻る →

2026/01/17 2:16

東ドイツのバルーン脱走(「East Germany Balloon Escape」)

## Japanese Translation: (すべての重要ポイントを含む)** この物語は、1979年9月16日に東ドイツから西ドイツへと2家族が自作熱気球で大胆に脱出したことを記述しています。目的地は西ドイツ近郊のナイラで、計画には18か月以上の準備が必要でした:3つの熱気球、800 m² のタフタ素材、2本のプロパンタンク、ブロワー、および家庭用ガスボトルから作ったバーナー。7月3日の以前の試行では、熱気球は国境から180 m 先に着陸し失敗しましたが、その朝、当局は放置された装備を発見しました。 9 月の飛行は28分間続き、高度2,500 m に達し、西ドイツへと横断。最終的に1 人だけ怪我(ウェッツェルの足首骨折)で着陸しました。この脱出直後、東ドイツは国境警備を強化しました:小型空港が閉鎖され、プロパンや布地の購入も厳しく管理されました。 飛行後、ストレリク兄弟はポツダムで逮捕され、ストレリクと彼女の妹マリア、そしてその夫は2年半の刑を受けましたが、アモニティ・インターナショナルの圧力により後に釈放されました。家族はナイラに定住し(ウェッツェルは自動車整備士、ストレリクはテレビ修理店を経営)、1985 年にスタジが脅迫したためスイスへ移住しました。1990 年のドイツ統一後、再びポエスネックに戻りました。 この物語はディズニー映画「ナイト・クロッシング」(1982)やマイケル・ヘルビグの「バルーン」(2018)、BBC Outlook および PBS Nova のドキュメンタリーにもインスピレーションを与えました。2017 年には、レゲンブルクにあるハウズ・デア・バイエリッヒェン・ギセヒト博物館で熱気球が常設展示され、同年ピーター・ストレリクは長い病気の後に74 歳で亡くなりました。 この改訂された概要は、リストからすべての主要ポイントを取り入れつつ、明確かつ曖昧さのない表現を保っています。

2026/01/16 23:25

**Cloudflare が Astro を買収** Cloudflare は、Astro の買収を発表し、エッジコンピューティング機能を拡充するとともに、ウェブパフォーマンス市場での地位を強化しました。今回の取引は、Astro の技術を Cloudflare のサービス群へ統合することが見込まれ、顧客にはモダンな Web アプリケーション向けに高速・セキュリティ・信頼性が向上したソリューションが提供されます。

## Japanese Translation: Cloudflare は公式に Astro のフルタイムチームを吸収し、同社は全リソースをオープンソースの Astro フレームワークの開発と保守に注力できるようになりました。これにより Cloudflare のグローバルインフラストラクチャを活用しつつ、Astro はウェブ体験の中心にコンテンツを置くというビジョンを共有する長年のスポンサーシップに続くパートナーシップが実現します。 Astro は MIT ライセンスであり、オープンガバナンスモデルに従い、任意のプラットフォーム上で無料で利用できます。採用率は毎年倍増しており、ほぼ 100 万件の週次ダウンロードが Webflow、Wix、Microsoft、Google などのサイトを支えています。ホストされたプリミティブ、Astro DB、または e‑commerce レイヤーによる収益化試みは成功せず、コアフレームワークから注意が逸れました。 Astro 6 beta は既に公開されており、チームは正式リリースを計画し、その後 2026 年のロードマップでコンテンツ主導型ウェブ構築、パフォーマンス、スケーラビリティ、信頼性、および開発者体験(特に AI コーディングツールが登場する中)を強調します。この協力関係により Astro は有料エコシステムモデル(ホスティングや CMS)を追求することを止め、コンテンツ中心のウェブサイト向けフレームワークの改善に専念できます。 結果として、さらに高速で信頼性の高いオープンソース ソリューションが実現し、ベンダー非依存のままで開発者と企業はベンダーロックインなしで高性能サイトを構築できるようになり、ウェブエコシステム全体にわたってパフォーマンス、スケール、信頼性、および開発者体験が向上します。

2026/01/17 7:15

## Install.md LLM実行可能ファイルのインストール規格。

## Japanese Translation: **install.md** は、AI アシスタントがソフトウェアインストール手順を自動的に読み取り実行できる軽量 Markdown フォーマットであり、手動設定を排除します。 ファイルはプロジェクトルートまたは `/docs` ディレクトリに配置されるべきです。Mintlify は `https://<your-docs-url>/install.md` で自動生成しますが、開発者は必要に応じて上書きや無効化を行うことができます。 典型的な install.md はヘッダー(製品名)、説明ブロッククオート、アクションプロンプト(「[Product] をインストールしてほしい」)、**OBJECTIVE**、**DONE WHEN** の基準、TODO チェックリスト、詳細ステップセクション(コードブロック付き)および **EXECUTE NOW** コール・トゥ・アクションを含みます。 このフォーマットは言語非依存であり、バイナリ、パッケージ、スクリプトのいずれもサポートします。ステップ内の条件付きロジックにより、npm/pnpm、macOS/Linux、Arch Linux などの環境に適応できます。 Mintlify のツールは既存ドキュメントからインストール知識を自動検出し、エージェント向けの install.md を合成・ホストします。開発者はメインドキュメントを煩雑にせずにエッジケース処理を組み込むことが可能です。 ユーザーは `curl -fsSL https://www.example.com/docs/install.md | claude` のような簡単なコマンドでファイルを取得し、任意の LLM に貼り付けるか、オートノーマルエージェントへ直接パイプして実行し、ステップごとの承認を選択できます。 仕様はオープンソース(spec: installmd.org, GitHub: github.com/mintlify/install-md)であり、カスタマイズ可能です。開発者はバージョン固有ファイルのホスティングや検出ロジックの追加を行えます。 セキュリティ上の配慮として、ファイルは人間が読める形式で、ステップごとの承認を許可し、自然言語で結果を明示するため、`curl | bash` スクリプトに比べて隠れた悪意ある動作を減らします。 多くの設定オプションを必要とする高度な統合の場合は専用ウィザードがまだ優先されることがありますが、それ以外では install.md がほぼすべてのメリットを提供し、エンジニアリング労力を削減します。 任意で、`llms.txt` ファイルを install.md と併用してインストール中に追加情報やトラブルシューティング情報を提供できます。

**Wii ニュースチャンネルをローカルニュース配信にパッチ適用(2025)** | そっか~ニュース