2025年8月31日日曜日

なぜWEB3にRPCが必須か?——概観説明

 

. RPCとは何か

  • RPCノードは、クライアント(ウォレットなど)がブロックチェーンに対して処理指示を送ったり、データを取得するための API(インターフェース) を提供するサーバーです。HTTPやWebSocketで通信し、eth_getBalanceeth_sendRawTransaction などのメソッドを使ってやりとりします。Ethereum Stack Exchange+13Medium+13Medium+13Blockchain Council+1

  • JSON-RPCは、そのRPCメソッドを呼び出すための 軽量プロトコル です。ウォレットやDAppはこの形式でノードと通信します。AnkrBlockchain Council

2. ウォレットがRPCを必要とする理由

ウォレットは 秘密鍵の管理と署名を行うだけですが、チェーン上の状態(残高、トランザクション履歴、スマートコントラクトの実行結果など)を参照・操作するには、 ノードとの通信が不可欠 です。

  • 残高を表示するために → eth_getBalance

  • コントラクトデータ(例: token balance)を取得 → eth_call

  • 署名したトランザクションを送信 → eth_sendRawTransaction
    など、ブロックチェーンに関する処理は全て RPC 経由で行われます。これによって「鍵管理だけでは機能しない」ことが明らかです。cyfrin.io+5Medium+5GitHub+5Ankr+11Medium+11CoinsBench+11

3. Web3スタックでのJSON-RPCの位置付け

  • JSON-RPCはWeb3のスタックにおいて、非常に コアな存在 であり、MetaMaskやInfura、Alchemyのようなサービスがバックエンドで必ず使っている通信プロトコルです。CoinsBench+1

4. RPCエンドポイントの種類と選び方

  • パブリックRPC:誰でも使えるが、混雑・レート制限のリスクがある

  • プライベートRPC:専用で高速かつ安定。商用サービスではこちらを推奨

  • 自前ノード:完全な制御が可能だが、ストレージ・同期・運用が重い

  • 代替エンドポイント:フォールバック用の予備として複数準備するのが信頼性向上に効果的です。AlchemyMitosis Universitycyfrin.io


まとめリンクリスト

項目内容
RPCノードの役割RPCノードはウォレットやDAppがブロックチェーンとやり取りする仲介サーバー。MediumAlchemy
JSON-RPC概要軽量プロトコル。メソッド名・パラメータなどをJSONで送受信。ブロックチェーンとの基盤通信方式。AnkrBlockchain Council
Web3全体への重要性Ethereum などでは、状態読み取りもTx送信も JSON-RPC が基盤。CoinsBenchAnkr
種類と運用の考え方パブリック vs プライベート RPC vs 自前ノード:用途に応じて使い分けるのが安定動作の鍵。AlchemyMitosis Universitycyfrin.io

HDRPの「内部仕様」に相当する公開情報

  • 全体像(公式):HDRPはSRP上の高忠実度レンダラで、Compute対応プラットフォームを想定。機能とアーキテクチャの入口はここです。 Unity Manual

  • Render Graph の採用:HDRPは実装の多くをRender Graphで記述。拡張や独自パスを入れる場合、この仕組みの理解が前提になります。 Unity Manual

  • Frame Settings(カメラ単位の実行時スイッチ):SSR/SSAO/フォグ等の有効化・品質をカメラ/反射ごとに切替可能。実行時の品質プリセット設計の軸になります。 Unity Manual

  • 描画経路とライト管理:HDRPはForward/Deferredを選択可。ライトはタイル+クラスタ型のローカルライトリストで多数処理を捌きます。 Unity Manual+1

  • Custom Pass(注入点)Injection Pointsで不透明・透明・ポスト等の所定タイミングにフルスクリーン/オブジェクト描画やバッファアクセスを注入可能。拡張の正攻法です。 Unity Manual

  • ソースコード:HDRP本体はUnity Graphics リポジトリで公開(com.unity.render-pipelines.high-definition)。内部クラス/パス構成の“実物”を参照できます。 GitHub

  • 可視化ツールRendering Debugger / Frame Debuggerで、パス順・バッファ・ライトリスト等を確認できます。調査とチューニングの第一歩に有効です。 Unity Manual+1


SharedWorkerが“実戦投入”されている(または実運用を強く想定した)具体例

 

  • 共有カウンタや計算をタブ間で使い回す基本実装(ライブ動作)。MDN公式デモ。 mdn.github.io

  • Rails ActionCable/AnyCableをSharedWorker内に集約し、WebSocket接続を1本に集約するライブラリ。 GitHub

  • Socket.IOクライアントをSharedWorkerでラップし、複数タブで1本のSocket.IO接続を共有GitHub

  • WebSocket多重接続の削減を題材にした実装記事(コード付き解説)。SharedWorkerで中継してサーバ負荷を軽減。 DEV Community

  • TanStack Queryのキャッシュ共有デモ:BroadcastChannelとSharedWorkerの両方式を比較しつつ、SharedWorkerで永続化・配信。 GitHub

  • Reactで**板情報(Orderbook)**を処理するサンプル。WebWorker+SharedWorkerの併用(注意:ブラウザ対応の但し書きあり)。 GitHub

  • MDNの「Web Workersの使い方」内、Basic shared workerの解説(チュートリアル形式)。 MDN Web Docs

  • RingCentral WebPhoneのドキュメントで、実機能の多タブ同期のためにSharedWorker実装を推奨(状態配信・操作中継)。 GitHub

補足:SharedWorkerはブラウザ互換に差があるため、導入前にMDNの互換表で確認がおすすめです(機能が“Limited availability”と明記)。 MDN Web Docs

FP in JS コミュニティ(Ramda, Folktale, Fantasy Land など)

 

仕様・相互運用(Standards)

  • Fantasy Land spec(JSの代数的構造の相互運用規約) GitHub

  • fantasy-laws(Functor/Monadなどの法則テスト) GitHub

  • Static Land(メソッドではなく“静的関数”で定義する派生仕様) GitHub+1

コアOSS(JavaScript)

  • Ramda(関数合成・カリー化・不変)— 公式サイト/ドキュメント/GitHub ramdajs.com+1GitHub

  • Sanctuary(安全志向・実行時型チェック/FL準拠)— サイト/GitHub/型クラス群 sanctuary.js.orgGitHub+1

  • Folktale(ADT/Validation/Task など)— ドキュメント/GitHub(※現在は非アクティブ) folktale.github.ioGitHub

  • Fluture(Future/Task 系の非同期合成)— GitHub GitHub

  • crocks(Maybe/Either/State/Reader…のADT一式)— サイト/GitHub crocks.devGitHub

  • Monet.js(モナド群)— GitHub GitHub

  • daggy(タグ付き合併型=Sum Type を定義)— GitHub GitHub

  • union-type(軽量Union Type実装)— GitHub GitHub

  • (参考)Ramda-Fantasy は既にメンテ停止。代替として Sanctuary や Folktale 等が推奨。 GitHub

TypeScript圏(参考:JSからの橋渡し)

技法の解説(トランポリン/CPS/ポイントフリー)

学びの書籍・オンラインガイド

  • Professor Frisby’s Mostly Adequate Guide to FP(JS)(無料オンライン版) mostly-adequate.gitbook.io

  • Functional-Light JavaScript(Kyle Simpson/全文公開) GitHub

  • JavaScript Allongé(Reginald Braithwaite)— Leanpub/Amazon など LeanpubGoogle Books

  • Functional Programming in JavaScript(Luis Atencio/Manning) Manning Publications

便利な“リンク集”

  • Awesome FP JS(FPライブラリ&学習リソースの総まとめ) GitHub

必要なら、この中から用途別(検証パイプライン/非同期合成/ドメインモデリング)に絞ったおすすめセットや、各ライブラリの最小サンプルもすぐ出します。

とあるリンク

 

  • Reginald “raganwald” Braithwaite
    JavaScriptのコンビネータやYコンビネータ、トランポリン技法の解説で有名。JavaScript Allongéallong.es ライブラリで「関数を自己参照から切り離し、装飾的に合成する」アプローチを提唱。

  • Brian Lonsdorf(Dr. Boolean)
    Mostly Adequate Guide to FP 著者。状態やループを避け、関数合成で複雑な制御をシンプルに記述することを重視。多段カリー化、ポイントフリースタイルの実例多数。

  • Michael Fogus
    Functional JavaScript 著者。Clojureの思想をJavaScriptへ持ち込み、トランポリンによる安全な再帰や部分適用を紹介。Mori ライブラリなども開発。

  • Rich Hickey
    Clojure作者。言語に trampoline を組み込み、末尾再帰の無い環境でも再帰処理を安全に行う方法を普及。再帰と高階関数による状態レスな設計を推進。

  • Edward Kmett
    Haskell界の著名開発者。recursion-schemes ライブラリで「再帰のパターンを抽象化するコンビネータ群」を提供。明示的な再帰を書かずに合成可能な形へ落とし込む。

  • Oliver Steele
    Functional.js の作者。UnderscoreやAllong.esに影響を与えた初期のFPライブラリで、カリー化・部分適用・各種コンビネータをJSに導入。

  • FP in JS コミュニティ(Ramda, Folktale, Fantasy Land など)
    OSSや仕様策定を通じ、JavaScriptでの関数合成・再帰パターンの普及を推進。トランポリン、Continuation、ポイントフリーの技法を共有。

  • ダンテ『神曲』 地獄マップ(各歌リンク集)

    ダンテ『神曲』 地獄マップ(各歌リンク集)

    ダンテ『神曲』 地獄マップ

    Inferno 一枚図 + 各歌リンク(英Wikisource)
    上(地表) 下(地球中心) 地獄の門・門前(門外の亡者:無為の者)— Canto III 第1圏:リムボ(洗礼前者・徳者)— Canto IV Limbo 第2圏:色欲 — Canto V Lust 第3圏:貪食 — Canto VI Gluttony 第4圏:貪欲と浪費 — Canto VII(前半) Avarice / Prodigality 第5圏:憤怒・怠惰(スティクス)— Canto VII(後半)〜VIII Wrath / Sloth — Styx ディーテ市門 — Canto VIII–IX 第6圏:異端者(火葬墓)— Canto X Heretics(XIで下層の配列解説) 第7圏:暴力 — Canto XII–XVII 1. 隣人(血の川)— XII / 2. 自殺(木)— XIII / 3. 神・自然・技芸への暴力(燃える砂と火の雨)— XIV–XVI(+高利貸 XV–XVI, XVII) 怪物ゲリュオンで第8圏へ降下 — XVII 第8圏:マレボルジェ(十の壺)— Canto XVIII–XXX 1売春媒介 2追従 3聖職売買 4占い 5贓吏 6偽善 7盗賊 8悪賢者 9分裂扇動 10偽造 巨人の井戸(第8・9圏の境)— XXXI 第9圏:コキュートス(凍結湖)— Canto XXXII–XXXIV カイーナ / アンテノーラ / プトレマイア / ユーデッカ(ルチフェロ)
    ● 上層=節制の欠如(I–V圏)/中層=悪意(VI–VIII圏)/下層=獣性(IX圏)
    ※ Canto XI に罪の配列の公式解説(ディルヴィノの分類)
    出典ガイド:Longfellow 訳の各歌テキスト(Wikisource)/総合ポータル:Princeton Dante Project・Digital Dante。印刷は A4 横推奨。

    ナショナリズムの5類型(1枚図

    ナショナリズムの5類型(1枚図)

    ナショナリズムの5類型(1枚図)

    民族/市民/文化/宗教/日常 — 主要な拠り所と典型的な表現、注意点を要約

    民族(Ethnic)

    • 根拠:血統・祖先・言語
    • 同一化:出自の共有/民族自決
    • 典型:jus sanguinis(血統主義)
    • 注意:排外・同化圧のリスク

    市民(Civic)

    • 根拠:法・憲法・市民権
    • 同一化:合意と参加・忠誠
    • 典型:jus soli(出生地主義)
    • 注意:政治的二極化のリスク

    文化(Cultural)

    • 根拠:習俗・言語・教育
    • 同一化:文化の継承・標準化
    • 政策:言語政策・教科書
    • 注意:文化の均質化・周縁化

    宗教(Religious)

    • 根拠:信仰・聖典・儀礼
    • 同一化:宗教共同体・聖なる歴史
    • 政策:宗教法・象徴政治
    • 注意:他宗派排除・聖戦化

    日常(Everyday)

    • 根拠:習慣・記号・実践(旗・祝日・スポーツ・食)
    • 作用:無意識に国民境界を再生産
    • 媒体:地図、呼称、メディアの表現
    • 関連:ビリグ『平凡なナショナリズム』

    ディストピア作品の類型一覧:監視国家/消費社会/冷却世界

    監視国家

    • 定義:国家・巨大組織が情報・身体を常時監視し、統制と同調を強いる社会。

    • キーワード:全体主義/検閲/予防犯罪/ID・網膜・信用スコア/官僚制

    • 代表作:

      • 小説:ジョージ・オーウェル『1984年』(1949)、ザミャーチン『われら』(1921)、アトウッド『侍女の物語』(1985)

      • 映画:『未来世紀ブラジル』(1985)、『THX 1138』(1971)、『マイノリティ・リポート』(2002)

      • アニメ/漫画:『PSYCHO-PASS サイコパス』(2012–)、『攻殻機動隊』(1995/2002–)

    消費社会

    • 定義:快楽・利便・広告とプラットフォームが主体を“消費者”に還元し、穏やかな隷属が進む社会。

    • キーワード:ヘドニズム/過剰最適化/ブランド同一化/スコア化SNS/企業国家

    • 代表作:

      • 小説:ハクスリー『すばらしい新世界』(1932)、デイヴ・エガーズ『ザ・サークル』(2013)

      • 映画:『WALL·E/ウォーリー』(2008)、『ゼイリブ』(1988)、『アイディオクラシー』(2006)、『ロボコップ』(1987)

      • TV:『ブラックミラー』「Nosedive」(2016)/「Fifteen Million Merits」(2011)

      • ほか:『レディ・プレイヤー1』(2011/2018)(逃避的消費空間)

    冷却世界

    • 定義:資源・熱量・出生・共同体の“活力”が失われ、低温・縮退・無感動が常態化した社会(物理的寒冷/比喩的冷却の双方)。

    • キーワード:資源枯渇/気候冷却・核の冬/人口減/縮小社会/情動の鈍化

    • 代表作:

      • 小説:コーマック・マッカーシー『ザ・ロード』(2006)、シェパード『渚にて(On the Beach)』(1957)

      • 映画:『スノーピアサー』(2013)、『ザ・ロード』(2009)

      • ゲーム/小説:『メトロ2033』(2002/2010)

      • 準拡張例(情動の冷却):『トゥモロー・ワールド』(Children of Men, 2006)

    ※クロスオーバー可(例:『すばらしい新世界』は消費社会×穏やかな監視)。

    「Three.jsパーティクル実例20:ソース付リンク集」

     用途別に幅広く揃えた「Three.jsパーティクル実例20:ソース付リンク集」です(各行末のリンクがソースです)。

    1. BufferGeometryで数十万点のパーティクル(PointsMaterial)— 位置/色を属性で制御。 threejs.org

    2. スプライト粒子(雪)— テクスチャ付きSprite/Pointsの基本。 threejs.org

    3. サイン波パーティクル— 頂点シェーダで波打つ表現。 threejs.org

    4. ビルボード粒子— 常にカメラを向く板ポリで粒子表現。 threejs.org

    5. インタラクティブ粒子— マウス操作でフィールドに反応。 threejs.org

    6. Pointsのレイキャスト選択— 点群をクリック検出。 threejs.org

    7. カスタム属性×Points— サイズ/カラー等を頂点属性で。 threejs.org

    8. Dynamic Particles+ポストプロセス— ブルーム等と組合せ。 threejs.org

    9. GPGPUフロッキング(鳥群)— GPU計算で数千体を挙動更新。 threejs.org

    10. GPGPU+GLTFメッシュ群れ— モデルを群泳させる応用。 threejs.org

    11. GPGPUプロトプラネット(デブリ粒子)— 反応拡散/重力的な雰囲気。 threejs.org

    12. GPGPUウォーター— 水面の擾乱を粒子/テクスチャで。 threejs.org

    13. 銀河ジェネレーター(Points)— 渦巻銀河を成形するモジュール。 GitHub

    14. WebGPU Sprites— 次世代パイプラインで大量スプライト。 threejs.org

    15. WebGPU Instanced Sprites— インスタンシングで超高密度描画。 threejs.org

    16. three-nebula(ライブラリ)— 本格粒子エンジン&多数の例。 Three Nebula

    17. ShaderParticleEngine(ライブラリ)— GPU駆動の老舗実装。 GitHub

    18. THREE.GPUParticleSystem(ライブラリ)— 使い易いGPU粒子。 GitHub

    19. GPU Particles(3Dノイズ駆動)— ノイズ場で粒子群を制御。 GitHub

    20. Codrops: Interactive Particles(チュートリアル+コード)— オフスクリーンTexで大量点群をインタラクティブ化。 Codrops

    使い方のコツ

    • three.js公式デモはページ右下の「View source」からソースが開けます。

    • 古いライブラリを使う場合はバージョン差異に注意(移行ガイド参照)。 GitHub