2026年1月28日水曜日

Kindeは、SaaSを作る開発者向けに「ログイン基盤」と「利用権限の運用」をまとめて提供するサービスです。

 Kindeは、SaaSを作る開発者向けに「ログイン基盤」と「利用権限の運用」をまとめて提供するサービスです。ユーザー登録、メール認証、ソーシャルログイン、企業SSOなどを用意し、発行したトークンでAPIや画面のアクセス制御を行えます。さらに、プラン別の機能解放(エンタイトルメント/機能フラグ)を管理でき、どの顧客にどの機能を出すかをコードと設定で揃えられます。課金まわりも、定額や従量の設計に合わせて権限と連動させる考え方を提供し、BYOKなどAI利用料金の責任分界も整理します。結果として、認証、権限、機能解放、料金運用を一体で組み込み、SaaSの立ち上げと拡張を速くします。B2B向けには組織(Organization)単位のユーザー管理や役割(Role)設計、招待フローを整備しやすく、サーバー間連携用のM2M認証にも対応します。SDKやUI部品が用意されているため、ゼロから認証画面や権限判定を書く量を減らせます。運用面では鍵の保護、リダイレクトURL、監査やログ設計などの落とし穴を回避しやすいのが利点です。既存の決済基盤とも併用でき、まずAuthだけ導入し段階的に広げられます。移行コストを抑えつつ試せますね。


https://www.kinde.com/learn/billing/billing-for-ai/byok-pricing/

Doomsday Clock 終末時計

 

真夜中まで(秒)主な出来事
1947420秒終末時計が初登場、核時代の危機を象徴化
1949180秒ソ連が原爆実験に成功、核軍拡競争が本格化
1953120秒米ソが水爆を保有、熱核兵器競争へ
1960420秒東西対立の一時緩和、対話路線が評価
1963720秒部分的核実験禁止条約で大気圏内核実験が停止
1968420秒地域紛争拡大と核拡散で後退
1969600秒核不拡散条約(NPT)発効
1972720秒SALT・ABM条約で軍備管理が進展
1974540秒インド核実験、核拡散が現実化
1980420秒冷戦再緊張、核軍縮が停滞
1981240秒大国の強硬姿勢で核戦争リスク増大
1984180秒米ソ関係が最悪水準に
1988360秒INF全廃条約で中距離核戦力を廃棄
1990600秒冷戦終結過程が進展
19911020秒冷戦終結、核兵器の大幅削減
1995840秒核拡散と核物質管理への懸念
1998540秒インド・パキスタンが核実験
2002420秒核テロ懸念、軍備管理体制が後退
2007300秒核に加え気候変動を主要脅威として明示
2010360秒軍縮交渉と気候対策に限定的進展
2012300秒核・原子力・気候の複合危機
2015180秒核近代化と気候危機で急接近
2017150秒国際秩序の不安定化
2018120秒危機が差し迫った段階と判断
2020100秒核・気候・情報環境の同時悪化
202390秒ウクライナ戦争で核エスカレーション懸念
202589秒象徴的に1秒前進、極限状態を強調
202685秒大国対立と協調崩壊で史上最短

CRCとブルームフィルターの関係を知ると、駆け出しのプログラマーでも「同じビット列でも目的が違う」ことを一段深く理解できます。

 CRCとブルームフィルターの関係を知ると、駆け出しのプログラマーでも「同じビット列でも目的が違う」ことを一段深く理解できます。CRCは通信やファイルの誤り検出で、壊れたデータを早く見つけるための道具です。一方ブルームフィルターは、巨大な集合に対して「入っていない」を高速に断言するための道具で、検索やキャッシュの前段に置いて無駄な照会を減らします。ここが実務で効きます。例えば、DBやAPIを叩く前にブルームで弾けばレイテンシと課金を下げられますし、ログ収集やストレージではCRCで破損を検出して再送・再取得に回せます。

両者の接点は「入力からビット列を作る関数」としてCRCをハッシュ源に流用できる点です。CRCは実装が豊富で高速なので、組み込み、ゲーム、ネットワーク、バックエンドなど広い場面で“軽量なハッシュ”が欲しいときに候補になります。たとえば、ブルームフィルターのビット位置計算、簡易な重複検出、パーティション分割、シャーディングのキー生成などです。ただしCRCは暗号学的ハッシュではなく線形性があるため、入力が規則的だと偏りが出てブルームの偽陽性が増えることがあります。ここを理解すると「動くけど性能が出ない」「突然当たりが悪くなる」といった事故の原因を説明でき、対策(混合関数を挟む、二つのハッシュから展開する、用途に応じて別ハッシュを選ぶ)まで選べます。

つまりこの話題は、ネットワークの信頼性(CRC)と大規模データの効率(ブルーム)を一本の線でつなぎ、性能設計・コスト設計・安全設計の入口になります。アルゴリズムを“目的と性質”で選ぶ癖が付き、応用範囲が一気に広がります。




Core War / Redcodeコアサイズと距離の設計(なぜ“距離”が戦略になるか)

 Core War / Redcode では、**「コアサイズ N の円環上で、敵と自分の相対距離 d をどう作るか」**が、そのまま生存率になります。理由は、命令が実行される場所も、爆発(DAT など)が撒かれる場所も、全部 **アドレス差分(オフセット)**で決まるからです。

1) 距離 d は「当たり判定の座標」

コアは 0..N-1 の円。自分のコードがある位置を 0 とすると、相手はどこかの d にいます。

  • スキャナは「一定ステップで読む」ので、読む点列が当たりやすい d がある

  • ボムは「一定間隔で撒く」ので、撒く点列に乗る d がある

  • インプは「一定周期で進む」ので、周期の上で追いつく/追えないが決まる

つまり、距離は「運」ではなく、相手の周期列と自分の周期列が重なるかの問題です。

2) 周期(step)とコアサイズ N の最大公約数が本体

一定ステップ s でコアを巡回すると、訪れる位置集合は

  • 訪問数 = N / gcd(N, s)

  • 同じ場所に戻る周期 = N / gcd(N, s)

gcd が 1 なら「全域を舐める」
gcd が大きいと「特定の剰余類しか踏まない(穴が空く)」

これが「距離が戦略になる」最短の説明です。相手の撒く点列・読む点列に、こちらの本体(または分身)が乗ると死にます。

3) 距離が効く代表パターン

Stone(爆撃): 間隔 k の“地雷原”

Stone 系は 一定間隔 kで DAT を撒くことが多いです。
このとき、安全か危険かは「相手本体がその剰余類にいるか」で決まります。

  • 相手の爆撃列が「0, k, 2k, …」なら
    自分の本体位置がその列に乗った瞬間に被弾します。

  • 逆に言うと、自分は k と相性の悪い距離へ逃げる(または分散する)と生き残りやすい。

Scanner: 探索ステップ s の“探知レール”

Scanner は「s ずつ離れた場所」を見ていく(or 二点比較)ので、

  • gcd(N, s) が 1 なら理論上は全域を見られる(時間はかかる)

  • gcd が大きいと、見ないレーンができ、そこに潜ると見つかりにくい

距離設計=「相手の見ているレーンから外れる」発想になります。

Imp: 周期 p の“追いつけない列”

Imp は典型的に一定の進み方(例:+1)をし、これもまた周期列です。
コアサイズや相手の罠の配置が その周期列に刺さるかどうかで勝敗が変わります。

4) 実務的な“距離設計”の意思決定

記事としては、以下の 3 つを押さえると「なるほど」が出ます。

  1. 自分の移動(コピー/分身)で作る距離の分布
    固定距離に偏るか、散らせるか。

  2. 相手の周期列(爆撃間隔、スキャンステップ)との gcd 観点
    「穴が空く」設計は刺さると強いが、外されると弱い。

  3. 分散(複数拠点化)で“距離当たり判定”を薄める
    一撃死を避け、相手の周期列に同時に乗りにくくする。

5) この記事の結論

  • コアは円環、攻撃も探索も「一定ステップの点列」

  • 距離 d は「その点列に乗る/乗らない」の判定

  • したがって距離は運ではなく **周期設計(gcd)**の問題

2026年1月25日日曜日

🌐SLR/C LR/LALR 入門:LL 法との違いと特長まとめ

 構文解析にはトップダウン型(LL法)とボトムアップ型(LR法)があります。本記事では SLRLALRCLR といった代表的な LR パーサーの特徴を、LL 法との違いも含めて分かりやすく比較します。初心者でも理解しやすい図解付きで、各手法の利点と欠点も整理しています。

LL、LR、SLR、LALR、CLR はパーサー(構文解析器)の種類です。パーサーは、コンパイラの一部として使用され、ソースコードを抽象構文木(AST)に変換します。これらの略語は、各パーサーがどのように構文解析を行うかを表しています。

まずはボトムアップ(LR)、トップダウン(LL)の差を知ろう

ボトムアップ(LR)

ボトムアップ構文解析では、まずテキストの最下層の細部を認識し、次に中層の構造を認識し、最上層の全体構造を最後に認識します。
ボトムアップ解析では、左下端からツリーを検出して処理し、徐々に上方および右方向に作業を進めます。パーサーは、実際のデータ ツリーを作成せずに、構造階層の低レベル、中間レベル、および最上レベルに対処することができます。ボトムアップ構文解析は、ある構成要素のすべての部分をスキャンして解析するまで辛抱強く待ち、結合された構成要素が何であるかを確定させます。

トップダウン(LL)

この逆がトップダウン パーシングで、入力の全体的な構造を最初に決定(または推測)してから、中間レベルの部分を処理し、すべての最下位レベルの詳細の完成を最後に残すというものである。トップダウン パーサーは、階層ツリーを発見し、上から順に処理し、まず下へ、次に右へと漸進的に作業を進めます。トップダウン パーサーは、構成要素の左端の記号をスキャンしただけで、その構成要素のどの部分もまだ解析していないときに、その構成要素が何であるかをかなり早い段階で熱心に決定します。左隅解析は、各サブツリーの左端に沿ったボトムアップと、解析ツリーの残りの部分に対するトップダウンの両方式を実行するハイブリッド手法です。


トップダウン・パーサーには、デバッグが簡単であること、文法内の任意の非終端まで解析できること、解析中に解析木の上下に値(属性)を渡すことができることなど、(より一般的な文法以外にも)多くの利点があります。

大きくLR(ボトムアップ)とLL(トップダウン)があって、LRの種類がたいへん多い

ボトムアップ構文解析はバックトラックによって行われることもあります。しかし、より一般的には、ボトムアップ パーシングは LALR パーサーなどのシフト リダクション パーサーによって行われます。


構文木についても知る

コンピュータサイエンスの分野では、プログラミング言語で書かれたソースコードの抽象的な構文構造を木で表現したものを抽象構文木(AST)と呼んでいる。

LR


コンピュータサイエンスでは、LR パーサーは決定論的文脈自由言語を線形時間で解析するボトムアップ パーサーの一種である

LR パーサーは決定論的であり、推測やバックトラックを行わず、線形時間内に正しい構文を 1 つだけ生成します。これはコンピュータ言語には理想的ですが、LR パーサーは人間の言語には適しておらず、より柔軟な方法が必要ですが、必然的に時間がかかることになります。

LR パーサーは先行パーサーやトップダウン LL 構文解析よりも広範囲の言語と文法を処理できます。 これは LR パーサーが見つけたものに専念する前に、ある文法パターンのインスタンスの全体を見るまで待っているからです[3]。LLパーサーは、そのパターンの左端の入力記号を見ただけで、何を見たかをもっと早く決定したり推測したりする必要があります。

LL

LL文法、特にLL(1)文法はパーサーの構築が容易であり、多くのコンピュータ言語がLL(1)に設計されているため、実用上非常に興味深い[8]。また、LL文法は再帰的降下パーサーによって解析することができる

LLパーサー(Left-to-right, leftmost derivation)は制限付き文脈自由言語用のトップダウンパーサーである。

画像
https://amzn.to/3BIJ0XP

構文解析は、トークン列から文法規則に従った文の解析を行うための手法です。その中でも、LL、LR、SLR、LALR、CLRなどのアルゴリズムがあります。

  • LL: 左から右に読み進め、最も左の導出を採用する再帰下降パーサーを生成する手法です。左再帰に弱いという欠点がありますが、単純な文法に対して高速な処理ができるというメリットがあります。

  • LR: 左から右に読み進め、最も右の導出を採用するシフト-リデュースパーサーを生成する手法です。スタックを用いた構文解析手法で、強力な文法にも対応できるというメリットがありますが、パーステーブルの生成が複雑であるというデメリットがあります。

  • SLR: LRの一種で、ステート数を削減することで、パーステーブルのサイズを小さくすることができる手法です。しかし、LRに比べて強力な文法に対応できないというデメリットがあります。

  • LALR: LRの一種で、パーステーブルのサイズを小さくすることができる手法です。ステート数を削減することで、SLRに比べて強力な文法に対応できるというメリットがありますが、正確性が劣る場合があります。

  • CLR: LRの一種で、LRよりも強力な文法に対応できる手法です。パーステーブルのサイズが最小であるため、正確性が高いというメリットがありますが、パーステーブルの生成が非常に複雑であるというデメリットがあります。

LALRパーサーは、標準的なLRパーサーを簡略化したものです。

https://en.wikipedia.org/wiki/LALR_parser

文法が左再帰とはどういう事を言いますか?


具体的なプログラミング言語における左再帰文法の例を挙げると、C言語やその派生言語(例えばC++、Java)が良い例です。これらの言語では、特に式の解析に左再帰文法がよく用いられています

文法が左再帰であるとは、その文法の生成規則の中に、ある非終端記号が自身を含む導出規則を持ち、その再帰が左側(導出規則の始めの部分)にある状態を指します。これは構文解析時に特に注意が必要な点で、特にLLパーサーのようなトップダウン構文解析法では問題を引き起こすことがあります。

左再帰は、無限ループに陥る可能性があるため、特にトップダウン構文解析では問題となります。トップダウンパーサーは非終端記号から始めて導出を行うため、左再帰があるとパーサーが無限にその非終端記号の導出を繰り返してしまう可能性があります。

この問題を解決する一つの方法は、

左再帰の除去です。左再帰のある文法を書き換えて、同等の非左再帰的文法に変換することができます。これにより、トップダウンパーサーでも無限ループに陥ることなく、文法を解析することが可能になります。

左再帰の除去の一般的な方法は、左再帰的な規則を右再帰的な規則に書き換えることです。

LL LR SLR LALR CLRなど、コンパイル手法を操作できるツールライブラリはありますか?

コンパイラ構築で使用されるLL、LR、SLR、LALR、CLRなどのパーサ生成アルゴリズムを操作できるツールやライブラリはいくつかあります。これらは、言語の文法を定義し、その文法に基づいてソースコードを解析するパーサを自動生成するために使用されます。以下はそのようなツールやライブラリの例です:

  1. ANTLR (ANother Tool for Language Recognition): LL(*)パーサを生成するための強力なツールです。複数の言語への出力をサポートしており、様々なプログラミング言語で使用することができます。

  2. Bison: GNUプロジェクトの一部として開発されたBisonは、LALRパーサを生成するためのツールです。Yaccの互換性を持つため、多くのUNIXシステムで広く使用されています。

  3. Yacc (Yet Another Compiler Compiler): 伝統的なLRパーサジェネレータであり、多くのUNIXシステムに標準で含まれています。BisonはYaccの代替品として開発されました。

  4. Flex: レキシカルアナライザジェネレータで、BisonやYaccと組み合わせて使用されることが多いです。Flex自体はパーサを生成するものではありませんが、パーサと連携して使用されます。

  5. Gold Parsing System: LR、LALR、およびLLパーシングアルゴリズムをサポートするパーサジェネレータです。柔軟な文法定義と複数のプログラミング言語への出力をサポートしています。

  6. Menhir: OCamlで書かれたLR(1)パーサジェネレータで、OCamlプログラマーにとっての選択肢です。

2026年1月24日土曜日

構成主義と構造主義の違いを教えてください ラップで

 

Yo、考える方法、知覚の全て、
構成主義は経験を信じるセット。
知識は静的じゃない、動的なフロー、
経験から築く、それがこの主義の魅力所。

一方、構造を探るのは別の流れ、
構造主義はそのシステムを探る旅。
関係性、パターン、その裏側、
構造がキー、それがこの主義の楽しさと奥深さ。

だから、知識を築き上げるとき、
それが構成主義するんだ、分かるかい?
しかし、もっと深く見て分析したいとき、
構造を見つける、それが構造主義、明確に。

語尾を上げて言うなら、
「経験から学ぶのが構成主義」
そして構造を探るなら、

「それが構造主義だ」と言えるだろう。


構成主義 (Constructivism):

  1. 基本的な考え: 構成主義は、知識や意味は個人や社会集団によって「構築」されるという考え方を中心に据えています。現実は主観的に解釈され、経験や相互作用を通じて形成されると考えられます。

  2. 応用領域: 教育学や心理学では、学習者が新しい情報を既存の知識と結びつける過程を重視する教育手法や理論として構成主義が用いられます。

  3. 代表的な人物ジャン・ピアジェ (Jean Piaget) レフ・ヴィゴツキー (Lev Vygotsky) は、構成主義の心理学的アプローチの中心的な人物として知られています。

構造主義 (Structuralism):

  1. 基本的な考え: 構造主義は、さまざまな文化的・社会的現象の背後にある「構造」を解明しようとするアプローチです。この構造は、表面的な現象や内容よりも、その背後に潜む関係性やパターンに焦点を当てます。

  2. 応用領域: 言語学、文化人類学、文学批評など、多くの学問分野で構造主義の方法論が用いられています。

  3. 代表的な人物フェルディナン・ド・ソシュール (Ferdinand de Saussure) は、言語学における構造主義の基礎を築いたとされ、クロード・レヴィ=ストロース (Claude Lévi-Strauss) は、文化人類学における構造主義の代表的な人物として知られています。

まとめ:

  • 構成主義は「知識や現実の構築」に重点を置き、主観性や相互作用を強調します。

  • 構造主義は「背後にある構造」を明らかにしようとするアプローチで、関係性やパターンの解明に焦点を当てます。