写真の物理学 ㊽ すべてを統合する

Share
📐
写真の物理学シリーズ ㊽
このシリーズでは、写真にまつわる現象を物理学の言葉で記述する。「なんとなくそうなる」を「なぜそうなるか」に変換することが目的である。

全48回にわたって導いてきた関数と法則を、ここで一望する。光子がシーンを離れ、レンズを通り、センサーまたはフィルム上で信号に変わり、現像・表示を経て、人間の意識に「像」として届くまで。この全過程を貫く変数の連鎖と、各段階を支配する物理法則の相互関係を整理することが、最終回の目的である。

入力変数と出力の全体像

写真の物理を記述する入力変数は、突き詰めれば次の7つに集約される。

  • $f$ : 焦点距離
  • $N$ : F値(絞り)
  • $d$ : 撮影距離(物体距離)
  • $S_{\text{sensor}}$ : センサー対角線長(センサーサイズ)
  • $S_{\text{subject}}$ : 被写体の実サイズ
  • $\lambda$ : 光の波長
  • $T$ : 露光時間(シャッター速度)

これらの入力から、写真の物理的な出力が決まる。主要な出力は以下のとおりである。

  • 画角 $2\alpha$
  • 像倍率 $m$
  • 被写界深度 DoF
  • ボケ円径 $c_{\text{blur}}$
  • 回折限界(エアリーディスク径) $d_{\text{Airy}}$
  • 信号対雑音比 SNR
  • 色(三刺激値 $X, Y, Z$ )

各出力は入力変数の関数であり、その関数形はシリーズの各回で導出した。以下ではこれらの写像関係を要約し、変数間の依存構造を明らかにする。

全関数の一覧と相互関係

I 光の本質(①〜③)

光の直進と薄肉レンズの結像で導いた結像公式が、全体の出発点である。

$$ \frac{1}{f} = \frac{1}{a} + \frac{1}{b} $$

$a$ は物体距離、$b$ は像距離。この式から横倍率 $m = -b/a$ が定まり、像の大きさが決まる。レンズメーカーの方程式 $1/f = (n-1)(1/R_1 - 1/R_2)$ は、焦点距離がレンズの材質と形状だけで決まることを示した。

電磁波としての光では、マクスウェル方程式から光速 $c = 1/\sqrt{\mu_0 \varepsilon_0}$ を導き、プランクの関係式 $E = h\nu$ で光のエネルギーが量子化されることを示した。偏光と干渉の記述もここに属する。

光と物質の相互作用では、フレネルの式で反射率の偏光依存性を定量化し、レイリー散乱(強度 $\propto 1/\lambda^4$)とミー散乱の区別を導入した。反射・屈折・散乱は、光がシーンからカメラに届くまでのあらゆる段階で登場する。

II 結像の幾何学(④〜⑦)

焦点距離と画角で導出した画角の式は、

$$ 2\alpha = 2 \arctan \frac{d_s}{2f} $$

$d_s$ はセンサー寸法である。画角は $f$ と $S_{\text{sensor}}$ の比で決まり、どちらか一方だけでは定まらない。この事実をセンサーサイズと換算焦点距離の正体で展開し、クロップファクター $k = d_{\text{FF}} / d_s$ と等価焦点距離 $f_{\text{eq}} = kf$ を定義した。

パースペクティブは撮影距離だけで決まるで示したとおり、遠近感を支配するのは撮影距離 $d$ のみであり、焦点距離やセンサーサイズには依存しない。この事実は写真表現の根幹に関わる。

像倍率の関数的記述では、通常撮影距離($d \gg f$)における近似 $m \approx f/d$ を導いた。被写体の像の大きさは焦点距離に比例し、撮影距離に反比例する。

III 露出の物理学(⑧〜⑩)

絞りと有効口径の物理的意味で、F値 $N = f/D$($D$ は有効口径)とセンサー面照度 $E_{\text{sensor}} \propto 1/N^2$ の関係を導出した。$\cos^4$ 則による周辺光量低下もここで定式化されている。

シャッターの物理学ではフォーカルプレーンシャッターの走行メカニズムとX同調速度の制約を扱い、露出の統合と逆数則ではAPEXシステムにより露出パラメータを対数量に統一した。

露出値 $\text{EV}$ は次のように定義される。

$$ \text{EV} = \log_2 \frac{N^2}{T} $$

この式は、F値とシャッター速度の組み合わせが定める光量を一つの数値で表現する。

IV ボケと被写界深度(⑪〜⑭)

被写界深度の厳密な導出で、許容錯乱円径 $c$ を基準にした被写界深度の前方限界 $d_n$ と後方限界 $d_f$ を導いた。過焦点距離は $H = f^2/(Nc)$ で与えられる。

ボケの円を関数で記述するでは、ピント面から距離 $\Delta$ だけ離れた点の像面でのボケ円径を、

$$ c_{\text{blur}} = \frac{f^2}{N} \cdot \frac{|\Delta|}{d(d + \Delta)} $$

と導出した。背景が十分遠い極限では、同じ被写体サイズでのボケ比較で示したとおり、物体空間でのボケの大きさは有効口径 $D = f/N$ そのものに一致する。

センサーサイズとボケの統一的理解は、同じ画角・同じ被写体サイズで比較したとき、ボケ量がセンサーサイズに比例することを等価F値の議論から定量的に示した。

V 解像の限界(⑮〜⑰)

回折限界と最適絞りでは、エアリーディスクの直径を

$$ d_{\text{Airy}} = 2.44 \lambda N $$

と導出した。この式は、絞りを絞りすぎると回折によって解像力が劣化することの定量的根拠を与える。

収差の物理学ではザイデルの五収差と色収差を分類し、MTFで読むレンズの解像力ではPSFのフーリエ変換としてMTFを定義し、空間周波数に対するコントラスト伝達を定量化した。

VI マクロの光学(⑱)

マクロ領域の光学では、通常撮影で暗黙に使われる $d \gg f$ の近似が崩れる領域を扱った。実効F値 $N_{\text{eff}} = N(1 + m)$ が導入され、倍率 $m$ が大きくなるほど照度が低下し被写界深度が極端に浅くなる。

VII ストロボと人工光(⑲〜㉑)

逆二乗則とガイドナンバーでは、点光源の照度が距離の二乗に反比例する逆二乗則からガイドナンバー $\text{GN} = d \times N$ を導出した。

光の硬さと柔らかさでは、光源の見かけの大きさ(立体角)が影のエッジの硬軟を決めることを半影の幾何学から定量化した。ハイスピードシンクロとフラッシュ同調の物理では、フォーカルプレーンシャッターとストロボ閃光の時間的整合の物理を扱った。

VIII 色の物理学(㉒〜㉕)

色とは何かで、色が光のスペクトル分布 $S(\lambda)$ と人間の錐体応答関数 $\bar{x}(\lambda), \bar{y}(\lambda), \bar{z}(\lambda)$ の内積として定義されることを示した。

$$ X = \int S(\lambda) \bar{x}(\lambda) \, d\lambda, \quad Y = \int S(\lambda) \bar{y}(\lambda) \, d\lambda, \quad Z = \int S(\lambda) \bar{z}(\lambda) \, d\lambda $$

ここからメタメリズム(異なるスペクトルが同じ三刺激値を与える現象)が導かれる。

色温度と黒体放射ではプランクの放射法則から黒体放射スペクトルを導き、相関色温度(CCT)とミレッドの体系を整理した。色空間の数学では CIE XYZ から sRGB、Adobe RGB、CIELAB への変換行列と伝達関数を定式化し、演色性とメタメリズムでは CRI/TM-30 による演色性評価と照明メタメリズムの崩壊を扱った。

IX デジタルセンサーの物理学(㉖〜㉙)

光電効果とフォトダイオードで、シリコンのバンドギャップ $E_g \approx 1.12$ eV から光電変換の波長限界を導き、量子効率 $\eta$ を定義した。

ベイヤー配列とデモザイキングでは、各画素が一色しか記録しないことの代償としての解像度低下を定量化した。

ダイナミックレンジとビット深度では、ダイナミックレンジを $\text{DR} = 20 \log_{10}(N_{\text{sat}} / \sigma_{\text{read}})$ dB と定義し、フルウェルキャパシティと読み出しノイズの比で決まることを示した。

ノイズの物理学では、ショットノイズ $\sigma = \sqrt{N_{\text{photon}}}$ から $\text{SNR} = \sqrt{N_{\text{photon}}}$ を導出し、ISO感度・センサーサイズとノイズの関係を統一的に記述した。

X フィルム写真の化学と物理(㉚〜㉜)

銀塩写真の化学ではハロゲン化銀の感光メカニズムをガーニー=モット機構で記述し、特性曲線の物理的意味では H-D カーブの直線部の傾き(ガンマ)がフィルムのコントラストを決定することを示した。フィルム現像の化学と暗室の光学では現像液の超加成性やカリエ効果を扱った。

XI 現像とトーンカーブの数理(㉝〜㉟)

ガンマとトーンカーブの知覚心理物理学では、ウェーバー=フェヒナーの法則とスティーヴンスのべき法則から、人間の明るさ知覚が非線形であることを根拠にガンマ補正の必然性を論じた。

RAW現像の信号処理では黒レベル補正からJPEG出力に至る全パイプラインを信号処理の言葉で記述し、HDRとトーンマッピングの数学では複数露光の合成とトーンマッピング演算子を定式化した。PQ伝達関数はBartenモデルに基づき、知覚的均等性を明示的に追求した符号化である。

XII 動画・映画の物理学(㊱〜㊴)

静止画に時間軸が加わることで、新たな物理変数が登場する。フレームレートと運動知覚では臨界フリッカー融合閾(CFF)とフェリー=ポーターの法則を導入した。

シャッターアングルとモーションブラーでは、像面上のブラー長 $b_{\text{blur}} = v_{\text{image}} \times T$ を導出し、180度シャッターの慣例の物理的根拠を示した。

Log収録とシネマカラーサイエンスではリニア符号化の限界から対数曲線の必然性を導き、ACESによるシーン参照ワークフローを体系化した。アナモルフィックレンズの光学では円柱レンズによる水平・垂直方向の結像特性の非対称性を定式化した。

XIII 自然光の物理学(㊵〜㊸)

太陽光と大気の物理学では太陽を約5778Kの黒体と見なし、エアマス $AM = 1/\cos\theta_z$ の概念でレイリー散乱による減衰を定量化した。空が青く、夕焼けが赤い理由は $1/\lambda^4$ の一言に帰着する。

マジックアワーとブルーアワーでは太陽高度に対する空の色の変化を、虹・ハロ・蜃気楼では水滴・氷晶による屈折・反射・干渉の幾何を、水中・霧中・宇宙の光では媒質が変わったときに光の振る舞いがどう変わるかを扱った。

XIV 表示と出力の物理学(㊹〜㊺)

ディスプレイの物理学ではLCDとOLEDの発光原理、EOTF(電気光学伝達関数)、ICCプロファイルによるカラーマネジメントを扱い、印刷の物理学ではCMYK減法混色、ハーフトーニング、$D_{\text{max}}$ によるダイナミックレンジの上限を扱った。

XV 人間の眼と知覚(㊻〜㊼)

人間の眼の光学では角膜と水晶体による屈折系を光学モデルとして記述し、網膜の桿体と錐体の分布、暗順応のメカニズムを扱った。

視覚の知覚心理物理学では、コントラスト感度関数(CSF)、マッハバンド効果、同時対比、色の恒常性、ハント効果、スティーヴンス効果を体系化した。写真の最終出力は、これらの知覚特性を通過して初めて「像」として成立する。

感度解析:どの変数が結果を最も大きく動かすか

7つの入力変数に対して各出力がどの程度敏感に応答するかは、偏微分で表現できる。主要な関係を整理する。

画角に対する感度

$$ \frac{\partial (2\alpha)}{\partial f} = -\frac{d_s}{f^2 + (d_s/2)^2} $$

画角は焦点距離の増加に対して単調に減少するが、短焦点域ほど変化が急峻である。24mmから28mmへの4mmの差は、100mmから104mmへの4mmの差よりもはるかに大きな画角変化を生む。

被写界深度に対する感度

過焦点距離 $H = f^2/(Nc)$ を用いた近似式から、

  • $\text{DoF} \propto N$ : F値に比例(線形)
  • $\text{DoF} \propto d^2$ : 撮影距離の二乗に比例
  • $\text{DoF} \propto 1/f^2$ : 焦点距離の二乗に反比例

撮影距離が被写界深度に与える影響は極めて大きい。被写体から一歩下がるだけで被写界深度は劇的に深くなる。焦点距離を変えるよりも、撮影距離を変える方が被写界深度に対して強い制御変数であることが偏微分から読み取れる。

SNRに対する感度

ショットノイズが支配的な条件では $\text{SNR} = \sqrt{N_{\text{photon}}}$ であり、光子数は露光時間、絞り面積、センサー面積に比例する。

$$ N_{\text{photon}} \propto \frac{T \cdot A_{\text{pixel}}}{N^2} $$

したがって、

  • $\text{SNR} \propto \sqrt{T}$ : 露光時間の平方根に比例
  • $\text{SNR} \propto 1/N$ : F値に反比例
  • $\text{SNR} \propto \sqrt{A_{\text{pixel}}}$ : 画素面積の平方根に比例

SNRを2倍にするには、露光時間を4倍にするか、F値を半分にする(2段開ける)必要がある。

等価撮影条件の完全な定式化

異なるセンサーサイズで「同じ画」を得る条件は、クロップファクター $k$ を用いて統一的に記述できる。センサーAをフルサイズ基準、センサーBをクロップファクター $k$ のセンサーとする。

同じ画角を得るには、

$$ f_B = f_A / k $$

同じ被写界深度を追加で揃えるには、

$$ N_B = N_A / k $$

同じSNRをさらに揃えるには、

$$ \text{ISO}_B = \text{ISO}_A / k^2 $$

この三つの条件を同時に満たすと、画角、被写界深度、ボケ量、ノイズレベルのすべてが一致する。等価条件はセンサーが集める総光子数を一定に保つことに帰着し、その物理的本質は「同じ立体角の光を同じ面積で同じ時間だけ集める」ことにほかならない。

ただし、等価条件が成立するのはショットノイズ支配域での話であり、読み出しノイズが支配的な極端な暗所では成り立たない。また、レンズの物理的な制約(小さなセンサー向けのレンズで $N/k$ を実現できるとは限らない)も現実の限界となる。

変数間のトレードオフ

写真の物理変数は、互いにトレードオフの関係にある。独立に最適化することはできず、常に何かを犠牲にしなければならない。

ボケ量 vs 被写界深度

ボケ量は有効口径 $D = f/N$ に比例し、被写界深度は $N$ に比例する。絞りを開ければボケは大きくなるが、被写界深度は浅くなる。この二者は同一変数 $N$ の相反する関数であるため、同時に最適化することは原理的に不可能である。

解像力 vs 回折

絞りを絞れば収差は減少し、幾何光学的な結像性能は向上する。しかしエアリーディスク径 $d_{\text{Airy}} = 2.44\lambda N$ は $N$ に比例して増大する。回折による劣化が収差の改善を上回る絞り値が最適絞りであり、その値はレンズの収差量とセンサーのピクセルピッチに依存する。

感度 vs ノイズ

ISO感度を上げることは、信号とノイズを同時に増幅することである。増幅で得られるのは「明るさ」であり「情報」ではない。ISO感度とは光子数のプロキシであり、高ISO画像の画質が低下するのは、光子数が少ないことのポアソン統計的な帰結にすぎない。

動画固有のトレードオフ:モーションブラー vs 時間解像度

シャッターアングルを狭くすれば1フレームあたりのモーションブラーは減るが、動きの連続性が損なわれジャダーが発生する。180度シャッターは、ブラーと鮮鋭度のバランスを経験的に最適化した慣例であり、物理的な必然ではないが知覚的な根拠を持つ。

物理法則が許す限界

いかなるセンサー技術やレンズ設計をもってしても超えられない、物理法則が定める絶対的な境界が存在する。

センサーサイズの限界

同じ画素数であれば、画素面積はセンサー面積に比例し、フルウェルキャパシティもおおむね画素面積に比例する。ダイナミックレンジの上限はフルウェルキャパシティと読み出しノイズの比で決まるため、センサーが小さいほどダイナミックレンジの物理的上限は低くなる。

回折限界

回折限界は波動光学の帰結であり、レンズの製造精度とは無関係に存在する。可視光($\lambda \approx 550$ nm)でF/8のとき、エアリーディスク径は約10.7 μm である。ピクセルピッチがこれを下回るセンサーでは、F/8以上に絞ると回折がセンサーの解像力を上回り、画素数を活かしきれなくなる。

光子ノイズの限界

$\text{SNR} = \sqrt{N_{\text{photon}}}$ が意味するのは、どれほど優れたセンサーでも光子数の平方根を超えるSNRは得られないということだ。暗い被写体を低ノイズで撮影するには、物理的に多くの光子を集めるしかない。大きなセンサー、明るいレンズ、長い露光時間。ノイズリダクションのアルゴリズムがいかに進歩しても、失われた光子は取り戻せない。

色再現の限界

人間の色知覚は三刺激値で記述される。CIE XYZ の等色関数は仮想原色を用いて非負に設計されているが、物理的に実在するいかなるRGB原色に対しても、対応する等色関数は必ず負の領域を持つ。色度図上の可視色域の境界(スペクトル軌跡と純紫線)は曲線であり、実在する三原色が張る三角形では可視色域の全体を囲むことができない。すべてのRGB色空間のガマットには物理的な上限が存在する。

カラーサイエンスの統一パイプライン

光がシーンから人間の意識に届くまでのカラーパイプラインは、次の連鎖で記述できる。

$$ S(\lambda) \xrightarrow{\text{等色関数}} (X, Y, Z) \xrightarrow{M_{\text{RGB}}} (R, G, B)_{\text{linear}} \xrightarrow{\gamma} (R', G', B')_{\text{encoded}} \xrightarrow{\text{EOTF}} L_{\text{display}} \xrightarrow{\text{眼}} (L, M, S)_{\text{cone}} $$

各段階の変換は明示的な関数で記述される。

  1. 光源のスペクトル $S(\lambda)$ が被写体の反射率 $\rho(\lambda)$ を通過し、カメラに届く
  2. センサーの分光感度(ベイヤーCFAの各チャンネル)がスペクトルを3値に射影する
  3. 色変換行列 $M$ で XYZ またはカメラ固有色空間からRGBに変換する
  4. トーンカーブ(sRGBガンマ、PQ、Log曲線など)で非線形符号化する
  5. ディスプレイのEOTFが符号化値を物理的な輝度に変換する
  6. 人間の錐体がディスプレイの光を再び三刺激値として知覚する

印刷の場合はステップ4以降が変わり、CMYK減法混色と用紙の反射率特性に置き換わる。最終段階で人間の眼が介在する構造は共通であり、知覚的な最適化なしには「よい写真」は成立しない。

アナログとデジタルの等価性と非等価性

フィルムとデジタルセンサーは、光を信号に変換するという目的は共通するが、その物理的メカニズムは根本的に異なる。

等価な側面。 両者ともに入射光量に対する応答関数を持つ。フィルムの特性曲線(H-Dカーブ)とデジタルのトーンカーブは、どちらも入力(露光量)から出力(濃度またはデジタル値)への写像を記述する。フィルムのガンマ(H-Dカーブの直線部の傾き)とデジタルのガンマ補正は、異なるメカニズムで同じ目的、すなわち知覚的に自然な階調再現を達成する。

非等価な側面。 フィルムの粒状性とデジタルのショットノイズは物理的起源が異なる。粒状性はハロゲン化銀結晶の空間的な不均一性に由来し、信号強度に対して非線形に振る舞う。一方、ショットノイズは光の量子性に由来するポアソン統計的なゆらぎであり、信号の平方根に比例する。両者のノイズ構造は統計的に異なり、そのため画像の「質感」も異なる。

フィルムの相反則不軌(シュワルツシルト効果)はデジタルには存在しない。フィルムでは極端な長時間露光や極短時間露光で感度が低下するが、デジタルセンサーの光電変換は露光時間に対して厳密に線形である(暗電流の蓄積を除けば)。

近似の成立条件の整理

本シリーズで使用した公式の多くは近似であり、その成立条件を明示しておくことが重要である。

通常撮影距離($d \gg f$)。 結像公式から $b \approx f$、横倍率 $m \approx f/d$ が成立する。被写界深度の公式、ボケ円径の近似式、パースペクティブの議論はすべてこの近似に基づく。

マクロ領域($d \approx 2f$)。 $m$ が 0.1 を超えるあたりから、通常撮影の近似は崩れ始める。実効F値 $N_{\text{eff}} = N(1 + m)$ を使う必要があり、被写界深度の式も倍率ベースの表現に切り替える。

超等倍($m > 1$)。 物体距離が焦点距離に近づき、像距離が焦点距離の数倍に達する。照度低下は $(1 + m)^2$ 倍にのぼり、被写界深度は数十マイクロメートルのオーダーになる。この領域では薄肉レンズモデルの精度そのものが問題になりうる。

近軸近似。 レンズの結像公式と収差論は近軸近似($\sin\theta \approx \theta$)に依存する。光軸から大きく離れた光線については、この近似が崩れ収差として顕在化する。魚眼レンズのような極端な広角系では、近軸近似を離れた投影関数が必要になる。

光子からシーンを離れ、意識に届くまで

全48回の知識を一本の流れとして俯瞰する。

光子はシーンの光源から放たれ(黒体放射、プランクの法則)、空間を波動として伝播し(マクスウェル方程式)、大気中でレイリー散乱やミー散乱を受けながら地上に届く。被写体表面で反射・散乱され(フレネルの式、BRDF)、その一部がレンズの入射瞳に到達する。

レンズ内でスネルの法則に従い屈折し、近軸近似の範囲で結像公式に従ってセンサー面に像を結ぶ。このとき有効口径がセンサー面照度を決め($E \propto 1/N^2$)、画角がセンサーで切り取る範囲を決め($2\alpha = 2\arctan(d_s/2f)$)、焦点面からの距離がボケ円径を決める。

センサー上で光子がフォトダイオードの電子に変換され(光電効果、量子効率)、ベイヤーCFAが各画素を一色に制限する。ポアソン統計がショットノイズを生み、回路の熱雑音が読み出しノイズを加え、ADCがアナログ信号をデジタル値に量子化する。

RAW現像パイプラインが黒レベル補正、ホワイトバランス、デモザイキング、色行列変換、ノイズリダクション、レンズ補正、トーンカーブ適用を順に実行し、sRGBやDCI-P3の符号化値を出力する。

ディスプレイのEOTFが符号化値を物理的な輝度に変換し、あるいはプリンターがCMYKインクの重ね合わせで用紙上の反射率分布を生成する。

最後に、人間の眼がこの光を受け取る。角膜と水晶体が網膜に像を結び、桿体と錐体が光を神経信号に変換し、側抑制がエッジを強調し、色の恒常性が照明を差し引き、ウェーバー=フェヒナーの対数的圧縮が階調を知覚的に再配分する。

この全過程のどこを切っても、物理法則が一つ残らず顔を出す。

制約が生む創造性

物理法則は写真の自由を奪うものではない。むしろ、制約の構造を理解することが表現の自由度を広げる。

回折限界があるからこそ、絞りの選択に意味が生まれる。ショットノイズがあるからこそ、大きなセンサーと明るいレンズに物理的な価値がある。逆二乗則があるからこそ、光源との距離による光の表情の変化を制御できる。知覚が非線形だからこそ、トーンカーブで感情に訴える階調をデザインできる。

全48回で導いた関数群は、この制約の全体地図である。地図を手にした者は、制約の中でどれだけ自由に動けるかを知ることができる。どの変数を動かせば何が変わるか。何を犠牲にすれば何が得られるか。どこに物理的な壁があり、どこに知覚的な余白があるか。

写真はつまるところ、光子を集め、秩序ある配列に変え、人間の意識に届ける行為だ。その全過程を貫く物理の言葉を手に入れたことが、このシリーズの到達点である。

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu