ウェビリングが必要不可欠です

2026/07/06 3:46

ウェビリングが必要不可欠です

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

要約

Japanese Translation:

このテキストは、限られた既存のつながり(「n+0」の友人)を持つ個人のウェブサイト所有者に対して、「webring(共通のトピックを共有するサイトからなる円形リンクリスト)」を作成する方法を指導します。2026 年 7 月 5 日に公開された本ガイド(閲覧数 6,869 と表示)は、複雑なサーバー構成やホスティング料金を必要とせずともコミュニティネットワークを構築できる点が理想的である旨を強調しています。本ガイドでは、二つの実装アプローチを提供します:一是位の手動方法(サイト A が B に、B が C に、そして C が再び A にリンクする連続的な接続)、二是 Cloudflare Workers を用いた JavaScript による自動ソリューションです。自動方式において提供されているコードは、ルートへのアクセス時にリング名(現在は「Zadu」を返却)を表示し、「/next」、「/prev」、「/random」といったナビゲーションリクエストに対して適切な 302 リダイレクトを管理します。Cloudflare Workers は無料であり低利用にも適しているため、この構成は無料での運用を可能にします。また本記事には完全なソースコードへのリンクと、webring に関するより深い歴史的コンテキストが提供されており、異なる技術スキルレベルを持つ創造者が深遠なローや高価なインフラストラクチャを必要とせずに webring エコシステムに参加または設立できるようにしています。

本文

ウェブリングの導入ガイド:自己紹介と実装手法

1. ウェブリングとは?

ウェブリング(Webring)は、特定のテーマや共通点を持つウェブサイト同士を循環的にリンクさせるリストのことです。

  • 設定対象:
    • 個人ウェブサイトをお持ちの場合
    • 友達(または関係者)が N+0 名以上存在する場合
  • テーマの例:
    • 趣味
    • 情熱(関心のある事柄)
    • 友人との交流
  • 本質:
    • 裏側の伝説は深いが、大切なのは**「それが楽しい」**という点です。

2. 設定方法の選択肢

ウェブサイト同士を循環リンクさせるには、主に 2 つのアプローチがあります。

シンプルだが手作業による方法

  • グループメンバーそれぞれに、自サイトの URL を直接共有してもらいます。
  • 手動構成例:
    • サイト A → サイト B
    • サイト B → サイト C
    • サイト C → サイト A

フレキシブルな自動化方法(推奨)

  • すべての参加者のサイト情報をJSON ファイルで管理するサーバーを構築します。
  • /prev
    /next
    という専用のパスを通じて、プログラム的に前サイト・次サイトを自動探索・表示させます。

3. Cloudflare Worker を 활용한実装例

本ガイドでは、コストが安く過負荷になりにくいCloudflare Workerを利用した自動化方法を提案します。

システム構成

  • データ構造:
    ring.json
    に参加者のリストを格納。
  • ロジック: Worker がリクエストを受け取って、参照元(referer)を確認し、前後のサイトへ自動リダイレクトを行います。

コード実装:
worker.js

import ring from './ring.json';

const {members} = ring;

export default {
  /**
   * Cloudflare Worker の標準 fetch ハンドラーです。
   *
   * @param request - クライアントから送信された要求オブジェクト
   * @param env - wrangler.jsonc で宣言されたバインド変数へのインターフェース
   * @param ctx - ワーカーの実行コンテキスト
   * @returns クライアントへ返すレスポンスオブジェクト
   */
  async fetch(request, env, ctx): Promise<Response> {
    const pathname = new URL(request.url).pathname;

    // 参照元の取得(優先順位:クエリパラメータ > Header: referer > Header: referrer)
    const referrer = new URL(request.url).searchParams.get('from') 
                   || request.headers.get('referer') 
                   || request.headers.get('referrer') 
                   || '';
    
    // 参照元を登録されたメンバー情報と照合
    const currentMember = members.find(member => member.url === referrer);

    if (!currentMember) {
      return new Response('Member not found', {status: 404});
    }

    switch (pathname) {
      case '/':
        // ホームページ表示(今回は「Zadu」という定数値を返す例)
        return new Response('Zadu');
      
      case '/next':
        // 次のメンバーを検索してリダイレクト
        const nextMember = members[(members.indexOf(currentMember) + 1) % members.length];
        return Response.redirect(nextMember.url, 302);
      
      case '/prev':
        // 前のメンバーを検索してリダイレクト
        const prevMember = members[(members.indexOf(currentMember) - 1 + members.length) % members.length];
        return Response.redirect(prevMember.url, 302);
      
      case '/random':
        // ランダムなメンバーを指定し、そのページへ誘導
        const randomMember = members[Math.floor(Math.random() * members.length)];
        return Response.redirect(randomMember.url, 302);
      
      default:
        return new Response('Not Found', {status: 404});
    }
  },
} satisfies ExportedHandler<Env>;

デプロイと運用のポイント

  • プラットフォーム: Cloudflare Workers(無料枠で動作可能)。
  • 利点: リクエスト数が多くなりにくい特性上、コスト効率が極めて高いです。
  • ソースコード: 具体的な JSON データや設定詳細は、別途共有されるフルソースコードを確認してください。

注記: このプロジェクトの背景には、「アメリカ建国 250 周年」を記念した物語が隠されています(Moar).

同じ日のほかのニュース

一覧に戻る →

2026/07/06 6:03

Open プリンター

## Japanese Translation: Openprinter は、印刷技術における大きな転換点であり、コンパクトな耐久性と完全な修理可能性、そしてコスト削減および電子廃棄物削減を実現するオープンソースアーキテクチャを統合しています。Raspberry Pi Zero W および STM32 カートリッジ基板といった標準コンポーネントを基盤として構築されており、制限的な DRM を排除しつつ、Wi-Fi、Bluetooth、または USB を介して Windows、macOS、Linux、Android、iOS などの複数のオペレーティングシステムに対応します。このデバイスは高い汎用性を備えており、A4、A3、Letter の標準用紙、長さ 37.5m までのロール、バナーのようなカスタムフォーマットを処理でき、壁取付または机置き(統合されたカッターにより多様な構成が可能)に対応します。ユーザーは、特定の HP カートリッジ(地域によりモデルが異なる)に互換性のある再利用可能な Inkit ボトルを採用する低コストな消耗品戦略から恩恵を受け、モノクロ印刷においてすべての色が不要であっても、600〜1200 dpi の高品質出力を実現します。配布は Crowdsupply 上のクラウドソーシングモデルを通じて行われ、即席で使用できるユニットまたは組立キットが提供されます。さらに、該装置は電話アプリを介して HD ドキュメントキャプチャを含むスキャン機能を統合しています。結局のところ、このアプローチは個々に低価格な技術と統合されたスキャン機能を提供し、持続可能性を促進します。その成否は現在のキャンペーンにおける消費者の採用に依存し、印刷が引き続きアクセス可能な長期的な未来を約束しています。クリエイティブ・コモンズライセンスの下で配布され特許によって保護されている本プロジェクトは、倫理的利用を保証しつつ開示性を維持します。

2026/07/05 23:14

オーガニックマップ

## Japanese Translation: Organic Maps は、MapsWithMe および Maps.Me の背後にあるオープンソースコミュニティによって開発された、ハイキング、自転車走行、車での移動、地下鉄利用のための優れた無料オフラインファーストナビゲーションアプリです。完全におープンストリートマップのデータを動力源とし、アクティブなインターネット接続を必要とせず、かつデータを送信することなく、詳細なオフライン地図、曲がりくねるポイントごとの音声ガイダンス、等高線、高低差プロファイル、Wikipedia アーティクルを含むすべての機能を提供します。本アプリは、ゼロ広告、トラッカー、データ収集、強制登録、「ホームへ連絡」のない厳格なプライバシー設計で際立っており、これらは Exodus Privacy Project および iOS 用の TrackerControl による独立した監査によって検証されています。小さなフットプリントを持ち、1 つのバッテリー充電で 1 週間持つことができ、インターネットなしで機能の 100% をサポートするため、遠隔地域に最適です。Android、iOS、Linux(Flatpak/パッケージ)、Huawei AppGallery、Obtainium、Accrescent、F-Droid で利用可能で、Apache License 2.0 の下で動作し、寄付を通じて開発をサポートすることを可能にするコミュニティ主導のインディーズプロジェクトを育んでいます。本アプリは積極的にグローバルな参加者を招待しており、ベータテストプログラム(iOS 用の TestFlight、Android/Firebase/Flatpak/Linux デスクトップ用)を提供し、問題トラッカー、メール、Telegram、Matrix スペース、GitHub、Bluesky、FOSStodon などのソーシャルメディアプラットフォームなど複数のチャネルを通じてバグ報告、機能リクエスト、アップデートを提供しています。母語が多種類ある地元のコミュニティから支援され、専用の Matrix チャットおよび Telegram グループを通じてサポートされている Organic Maps は、ユーザーに世界を自由に探求できるようにすると同時に、監視慣行を拒否します。

2026/07/06 6:32

Show HN:自宅で作ってきたオープンソースゲームプラットフォーム「Homegames」

## Japanese Translation: Homegames は、アカウントを作成することもなくソフトウェアをインストールすることなく、ユーザーがゲームを楽しみ、作成し、共有できるブラウザベースのプラットフォームです。開発者は簡単なインブレーズアエディターを使用してコードを書き、ライブプレビューを確認しながら変更を即時テストし、マルチプレイヤーセッションを直接実行できます。資産管理は標準機能として搭載されており、ユーザーはファイルをアップロードするか、スタジオ内でコンテンツを描画または記録することもできます。ゲームはユーザーの好みに合わせて公開publishするか、プライベートに保つことが可能です。2018 年以来、GPLv3 ライセンスの下でオープンソースシステムとして構築され、単一サイドプロジェクトとして展開されてきた Homegames は、プラットフォーム全体とその API を個人ハードウェア上でのセルフホスティングを可能にし、元のサイトがオフラインになった場合でも長期的な保存を保証します。第三者サーバーへの依存を排除することで、Homegames はインディペンデント開発者に対する障壁を低下させ、プラットフォームの不安定さから創造的作業を守るための頑丈なインフラストラクチャを提供しています。

ウェビリングが必要不可欠です | そっか~ニュース