ビールの醸造技術について調べた

ビールの醸造技術について興味が出てきたので調べた。
日本酒醸造の知識をベースに解釈していく。
比重やアルコール度数の計算方法、日本酒醸造との工程や原料の比較など。

日本酒の場合、J-Stageを漁ればジャーナルやら論文やらきっちり日本語での参考文献が見つかる。
ビールの場合、情報は大量に出てくるけど信憑性が怪しい。
誰が書いてるのかわからない、出典が書いてない、断りもなしに式を簡略化してる。
日本語のサイトはヤードポンド法の計算を結構間違えてる。
英語を読まなくちゃいけない。

成果物

今回調べたものを計算出来るようにした。
RubyからPyCall経由でPandasを使った。
GitHub - yoshida-eth0/ruby-beer

各種計算

ガロン

日本人にとって馴染みがない単位なのでややこしい。
国によってガロンの定義が違うので更にややこしい。

名称 1ガロンのリットル換算
英ガロン (Imperial gallon) 4.54609リットル
米国液量ガロン (U.S. fluid gallon) 3.785411784リットル

麦芽のPPGがどっちのガロンで計算されているかよくわからない。
多分Malt Specification Sheetのmethodで書かれている手法に定義されてるんだろうと思うけどそこまでは追えてない。
まぁ実際はガロンの定義の違いでの誤差があったとしてもBrewhouse EfficiencyやらMash Efficiencyやらって係数で吸収できるから大した話ではないのかもしれない。
単行複発酵なので結局は初期比重がどうなるか、それだけが重要なんだと思う。

比重

BREWLANDの比重計算式を見るに既製品の比重はこうなるらしい。
出典はわからなかったけどとりあえずそういうものなんだと理解することにした。

原料 比重
モルトエキス 1.30800000459
砂糖 1.385

※手作りビールに挑戦(ビールの作り方) - 手作りビールキット、ビールサーバーの専門店:激安価格と豊富な品揃のブリューランド

糖度

ビールでは糖度はPlatoが使われるらしい。
日本酒で使われるボーメと比べると数値はだいたい半分くらい。

ボーメは潜在アルコール度数とほぼ一致するから、単行複発酵のビールこそボーメを使った方がわかりやすいのでは?という気がする。
歴史的背景はよく知らないけど。
確かワインはボーメを使っていたと思ったけど詳しいことはよく知らない。

アルコール度数

計算式がいくつかあった。
上の式がアルコール度数高くなって、下の式がアルコール度数低くなる。
最後の式が信憑性ありそうに見えるけど、どれが正しい(近い)のかはよくわからない。

一般的によく見る式。

アルコール度数(略称 ABV: alcohol by volume)は、初期比重と最終比重から概算することができる。
ABV=\frac{OG-FG}{0.00738}
比重 (ビール) - Wikipedia

上記の係数が違う式。

ABV=\frac{OG-FG}{0.00769230803382418}
※手作りビールに挑戦(ビールの作り方) - 手作りビールキット、ビールサーバーの専門店:激安価格と豊富な品揃のブリューランド

エチルアルコールの重量と密度から算出する式。

ABV =(((OG-FG)×1.05)/ FG)/0.79

この2つの数字は、すべてのビールのレシピで一貫しています。

1.05はエチルアルコールの重量
.079はエチルアルコールの密度
自家製の基礎:ビールのオリジナル重力

工程

製麦

基本的にブリュワリーは焙燥された麦芽仕入れて粉砕するところから仕込みスタートらしい。
日本酒で言えば精米済みの白米を仕入れるみたいなものだろうか。

粉砕に関しては荒すぎると糖化が進まず、細かすぎると濾過するときに目が詰まる、と。
醤油用の麹造りで小麦の粉砕する工程があるけど、それとは目的は違うらしい。

小麦を砕く理由は2つ。
細かい粒子で大豆同士の付着を防ぐ。
粗い粒子で大豆同士の間に隙間を作り、通気性をよくして麹菌の育成を助長、品温調節をやりやすくする。
醤油用の麹造り - よしだ’s diary

マッシング

華氏で表記されることもあってややこしい。

温度帯による働きと目的。

温度帯 名称 活動する酵素 働きと目的
50度前後 プロテインレスト プロテアーゼ タンパク質をアミノ酸に分解する。
タンパク質を分解することでクリアなビールに仕上がる。
52~62度 糖化 βアミラーゼ デンプンを発酵可能なグルコース、マルトース、マルトトリオースに分解する。
糖が分解されるためライトボディになる。
65~67度 糖化 αアミラーゼ デンプンを発酵可能なグルコース、マルトース、発酵不可能なデキストリンに分解する。
糖が残るためフルボディになる。
77度 マッシュアウト - 酵素の活動を止める。

技術的に容易かどうかはさておき、プロテインレスト→αアミラーゼ→βアミラーゼ→マッシュアウトの順でやったらより高アルコールでよりクリアな味わいになりそうな気はする。
ホームブリューイングの場合、αアミラーゼが活性する温度帯まで温めて保温、結果的にαアミラーゼ活性からのだんだん冷えてきてβアミラーゼ活性、という順序を辿るスケジュールは割と見かける。
実際のところ、それを狙ってるのか温度管理の怠惰なのかはよくわからない。

ビールのマッシングを日本酒で例えるなら、高温糖化酛みたいなものなんじゃないかと。
日本酒の高温糖化酛をビールに例えるなら、ワンステップ・インフュージョンマッシングのマッシュアウトなし、という感じだろうか。

ビールの場合は単行複発酵なので酵素を失活させるために最後に温度を上げる。
日本酒の場合は並行複発酵なので酵素を失活させない。

麹の酵素は60度前後で失活するけど、麦芽の場合はどうやら77度までは失活しないらしい。
同じαアミラーゼなのに何が違うのかはよくわからん。

A. oryzae EI 212株由来の部分精製α-アミラーゼの活性は55℃ではわずかに低下し60℃・60分間処理では30%にまで活性が低下することが報告されている.
塩麹製造での熟成温度が残存酵素活性に及ぼす影響

そもそも後続処理の煮沸の段階でどのみち酵素は失活するはずなのに、わざわざマッシュアウトと称して失活させる必要性はどこにあるのだろうか。
調べてもよくわからなかった。

計算。
モルトのスペックからマッシング後のウォートのOriginal GravityやBrix値に換算。
ruby-beer/full_mashing.ipynb at main · yoshida-eth0/ruby-beer · GitHub

濾過、スパージング

ロイタータンでウォートを循環させて濾過していく工程は、日本酒で言うところの荒走りの部分を再度戻して絞る感じだろうか。
日本酒にはない概念なので特に言うことがない。

煮沸

煮沸の目的。

1. 麦汁を殺菌する。
2. 麦汁に残っている酵素を失活させる。
3. 凝固性のタンパク質を加熱により凝固させる。
4. 第二麦汁によって薄まった麦汁を濃縮し、濃度を調整する。
5. 好ましくない香りを揮発させる。
6. ホップを投入してホップ成分(苦味、香り)を抽出する。
ビールについて学ぼう:第十二回 ~ホップの登場:煮沸工程~

日本酒にはない概念なので特に言うことがない。

計算。
ホップのα酸値と煮沸時間からIBUを算出。
式がいくつかあったので、Tinseth、Rager、Garetzの3種を実装した。
ruby-beer/ibu_estimates.ipynb at main · yoshida-eth0/ruby-beer · GitHub

主発酵(前発酵)

酵母を添加したらエアレーションして酸素をウォートに溶け込ませる。
日本酒で言うところの、汲み掛けみたいなものだろうか。

エアレーションは酵母を活性させるために酸素を含ませる。
汲み掛けは蒸米に酵素を吸収させる。
という違いはあれどタイミングとニュアンス的にはまぁ似たような雰囲気かなと。

貯酒・熟成(後発酵)

後発酵の目的。

・不快な匂いを取り除く
・仕事を終えた酵母を取り除く
・ビールの清澄
ビールについて学ぼう:第十四回 ~まだ飲んじゃだめ:貯酒・熟成工程~

作業としてはドライホッピングも。
ドライホッピングで添加すべき量の計算方法がよくわからない。

日本酒の香気成分について調べる時は「清酒 酵母 ppm site:www.jstage.jst.go.jp filetype:pdf」みたいな調べ方をよくする。
ビールの場合は野良レシピを参考にするのが良いのだろうか。
まぁ発酵に直接関わることではないし好みによって量は好きに変えなよ、程度の話ではあるのかもしれない。

原料

麦芽

ビールに影響する要因としてはこの辺だろうか。
・糖度(Yield)
・色(SRM、EBC、Lovibond)
・ロースト感とかカラメル感とか(乾燥法、乾燥温度)

乾燥法と乾燥温度によっていろいろあるらしい。
一覧は以下で。
- 手作りビールキット、ビールサーバーの専門店:激安価格と豊富な品揃のブリューランド

色に関しては以下。
麦芽の種類 | ビアトレ

ホップ

ホップは煮沸すると香りが飛ぶので目的に応じて品種とタイミングを変える。

タイミング 工程名 目的 ホップの分類、総称 ホップの特徴 主な品種
煮沸工程初期 煮沸 苦味付け ビタリングホップ α酸が高いもの マグナム、ノーザンブルワーなど
煮沸工程後期 煮沸 香り付け アロマホップ 香りが強いもの シトラ、カスケードなど
熟成時 ドライホッピング 香り付け アロマホップ 香りが強いもの シトラ、カスケードなど

醸造免許を持たない個人が唯一できそうなことはドライホッピング
思いついた手法は2つ、この方法であれば自家醸造には当たらず合法なのではなかろうか。

・ビールにホップを浸してすぐ飲む。
作り置きをしたら違法なので、消費の直前において混和した酒類(要はカクテル)として飲む。

1 消費の直前において混和した酒類を販売した場合の取扱い
 酒場、料理店その他の酒類を専ら自己の営業場において飲用に供することを業とする者が当該営業場以外の場所において消費されることを予知して混和した場合又は酒類の消費者が他に販売する目的で混和した場合は、消費の直前において混和したこととはならないので、法第54条《無免許製造の罪》の規定に該当し、無免許製造となるものであるから留意する。
第43条 みなし製造|国税庁

・キンミヤにホップを一晩漬け込んでホッピーで割って飲む。
アルコール度数20度以上の焼酎にならホップを漬け込んでも良い(はず)。
唯一怪しいのは「香料」、まぁハーブみたいなものだしいいんじゃないかと思うけど確証はない。

 焼酎等に梅等を漬けて梅酒等を作る行為は、酒類と他の物品を混和し、その混和後のものが酒類であるため、新たに酒類を製造したものとみなされますが、消費者が自分で飲むために酒類(アルコール分20度以上のもので、かつ、酒税が課税済みのものに限ります。)に次の物品以外のものを混和する場合には、例外的に製造行為としないこととしています。
 また、この規定は、消費者が自ら飲むための酒類についての規定であることから、この酒類を販売してはならないこととされています。

1 米、麦、あわ、とうもろこし、こうりゃん、きび、ひえ若しくはでん粉又はこれらのこうじ
2 ぶどう(やまぶどうを含みます。)
3 アミノ酸若しくはその塩類、ビタミン類、核酸分解物若しくはその塩類、有機酸若しくはその塩類、無機塩類、色素、香料又は酒類のかす
【自家醸造】|国税庁

酵母

まずは酵母の学名。

酵母 学名
上面発酵酵母 Saccharomyces cerevisiae
下面発酵酵母 Saccharomyces pastorianus
清酒酵母 主にSaccharomyces cerevisiae

分類学上は同じ学名がついていても、上面発酵酵母清酒酵母では随分と違うものらしい。

清酒酵母(Sake)はパン酵母(Bakery)やワイン酵母(Wine)、ビール酵母(上面酵母、Ale)とは明らかに異なるグループに属しています。清酒酵母に近いのは、やはり我が国の伝統的蒸留酒である焼酎や泡盛酵母(Shochu)であることが明らかになりました。
お酒造りの小さな主役 -清酒酵母の話- Part5 清酒酵母の系譜しらべ

一般にビール酵母グルコース、マルトース、マルトトリオースの資化能を持つ。
一般に清酒酵母グルコースの資化能を持つ。

ビールの場合、なんでもアルコール発酵できる。
日本酒の場合、グルコアミラーゼ力価の高い麹を作る必要がある。

英語の用語

toji gemsを作っていた際に、日本語の用語を英語に訳して結構無理やり感があった。
今回ビールでネイティブな英語の用語が出てきたので比較。
ビール用語に合わせた方が世界標準っぽい感じがしてわかりやすいかもしれない。

・アルコール度数などの予測値
ビール用語:estimate 見積もり値
toji gems:expect 期待値
TestCaseっぽくexpectとactualとしていた。

・比重
ビール用語:gravity
toji gems:nihonshudo
Sake Meter Value(SMV)って言い回しもあるっぽいけど日本語を話す身からすると分かりづらいのでアレ。

・総容量
ビール用語:batch size
toji gems:tank capacity

香りの表現

この表現は日本酒にはないように思う。

ビール用語 意味
アロマ 鼻で感じ取ることのできる香り
フレーバー 口に含んだ時に感じる香り

吉田がよく言う日本酒の酵母由来の香りの表現として「揮発性のある香り」「揮発性のない香り」があるけどまぁまぁ近い概念かなと思う。
鼻に抜けず舌に残る香りを「揮発性のない香り」と表現してるけど、この香りを「米の旨味(味)」と誤認している人が多くて嘆かわしく思ってる。

そもそも多くの日本酒消費者は酵母が酒質に与える影響を軽視しているように感じる。
酵母が変われば香りや酸の立ち方が変わるという当たり前の事実を理解せず、米の品種やら蔵の個性やらそういう言葉で片付けようとしている節を感じる。

極論かもしれないけど米の違いなんてニュアンスでしかなくて、酒造りの本質はそこじゃない。
雄町好きを公言していたけど、何もわかっていなかったなと今となってはちょっと恥ずかしく思う。

「一麹、二酛、三造り」って言葉はよく聞くけど、原料の重要度もその順序なんじゃないかと。
つまり「一麹菌、二酵母、三米」。
原料の重要度というか、その他の原料の特徴をマスクしうる強い要因となる原料、とでも言うべきだろうか。

日本酒の場合、酵母が非公開だったり、蔵でそんないくつも酵母を使い分けなかったりするので、酵母に依存する要因が蔵の個性ってことにされてしまっている節を感じる。
ビールの場合、ビアスタイルを聞けば大分類として酵母のタイプ(上面発酵か下面発酵かそれ以外か)はわかる。
この違いは大きいように思う。

日本酒よりも簡単だと思う箇所

実際にマッシングとかやったことがある訳ではないので完全に机上の空論。
やったこともないものを簡単だと言い切るのはアレだとは思うけど。

・糖度測定が楽
単行複発酵のビールの場合、初期比重は屈折計を使ってBrixを求められる。
並行複発酵の日本酒の場合、濾過やら蒸留やらしないといけなくて面倒。

・単行複発酵
並行複発酵の日本酒は最後まで確定しない要因が多い。
単行複発酵のビールはひとつの工程に対してひとつ要因が確定する。
あとどうでもいいけど、並行の対義語は単行ではなく直列なんじゃないかという気はする。

・自重で濾過出来る
日本酒の場合、自重で絞るにしても袋にひとつずつ醪を流し込んで吊るしたり。
そして結局ヤブタやらフネやらで圧力を掛けて絞る。
ビールの場合、タンクの移し替えをして自重で液体が出てきて循環させて濾過して完了。
もしかしたらスパージングのあとに圧力掛けたりするビアスタイルもあるのかもしれないけどよく知らない。

・仕込み回数が少ない
ビールの場合、マッシングは1回、日中の常識的な時間で終わる。
日本酒の場合、麹を全量1回で作って酒母立てて3段仕込みする場合に米を蒸すのは5回、製麹は丸2日かかる。

・温度管理が一定
ウォートの温度管理は常に一定。
日本酒の場合は糖化とアルコール発酵のバランスを取るために日々の温度管理が欠かせない。

・発酵期間が短い
上面発酵の場合、1週間もかからない。
日本酒の場合1ヶ月くらいはかかる。

3年5ヶ月の無職期間中の話

2018年4月に仕事を辞めて2021年9月からまた働き出した。
29歳から33歳の働き盛り(?)の無職期間中に何をしていたのかとかそういう話をつらつらと。
主に数学の勉強と醸造の研究に当てていた感じはある。

作ったプログラム

主なものをいくつかピックアップ。
全部Ruby
主に数学ばっかりやってた。

hpsqrt

平方根丸め誤差なしで計算出来るRubyのライブラリ、rubygemsで公開。
個人的にはかなり優秀なライブラリが出来たと思ってるけど、Rubyでそこまで精度にこだわった平方根の計算をするという需要はなかったのかなという印象。

GitHub - yoshida-eth0/ruby-sqrt: High precision square root library for Ruby
hpsqrt | RubyGems.org | your community gem host

vdsp / audio_stream / synthesizer

Rubyでデジタル信号処理、音楽制作を出来るようにして、シンセサイザーを実装した。
rubygemsで公開。
数学的には、三角関数フーリエ変換、行列計算、畳み込み演算、Biquad Filter、インパルス応答、あたりの分野。
これを作ってる時は中学数学、高校数学を思い出すためにトライイットのYoutubeばっか見て勉強をしてた。

Rubyで実装したDAWとシンセサイザーの技術仕様 - よしだ’s diary

toji

清酒醸造に関するデータモデル、rubygemsで公開。
醸造データの分析、統計学、あたりの分野。
データ分析的には、回帰分析、標準偏差、相関など。
統計学的には、ベイジアンネットワーク、因子分析、主成分分析など。
これを作ってる時は高校数学、大学数学をより深く知るためにヨビノリのYoutubeばっか見て勉強をしてた。

これは思ったよりも反響があって、ダウンロード数が32,000を超えてる。(2021年12月12日現在)
公開からの日平均ダウンロード数でいうと今まで公開したgemsの中で一番。
もうそろそろ自分の手を離れたかなという感じはあるので、あとは誰かよろしくお願いしました。

GitHub - yoshida-eth0/ruby-toji: Management tools for brewing japanese sake.
toji | RubyGems.org | your community gem host

Dynamoid

上記toji gemsを使ってAWSでシステムを実装するにあたって、Dynamoidに機能追加をした。
コントリビューターか?ってくらいゴリゴリ書いた。
思想がぶつかりあう危険性のない軽微な修正はPullReqも送ってmerge済みなのでなかなか良い仕事をした気がしてる。
ゴリゴリの機能追加はGistにて公開。

Dynamoidでembeds_many/embeds_one出来るようにする · GitHub
DynamoidでTransaction処理できるようにした。行ロックにも対応。 · GitHub
DynamoidのHash-Range Tableでhas_many/has_one/belongs_to/embeds_many/embeds_oneできるようにした。 · GitHub
Dynamoidで先読み処理できるようにした。 · GitHub

減量

3ヶ月で10kg減量した。
食事制限と筋トレと有酸素運動
有酸素運動K-POPダンス、J-POPダンス、Jazzダンスなど、基本踊ってた。

次は増量に励んでいるけどなかなかうまく行かない。
減量は計算できるけど、増量は計算よりも努力が必要。
増量は難しい。

高タンパク低カロリーな筋肉メシのレパートリーが増えたのでまたしても自炊力が高まった。

摂取カロリーと消費カロリーを計算して体重増減の予測をする - よしだ’s diary

発酵系、醸造

酒蔵での酒造り

2019年度の冬は東北の酒蔵に行って酒造り。
2020年度以降はコロナの影響で行けず…。

自宅での醸造研究

味噌用の米麹造り、味噌造り、醤油用の大豆麹造り、醤油造り、J-Stageの論文読み漁りなど。
先人の知恵をまとめたものははてなブログで公開、自分の経験則や考えなどはFacebookで友人まで公開。
学問に関する間違った情報を公開してインターネットの海を汚したくないので。

日本酒醸造に適した麹を作りたい - よしだ’s diary
なぜ麹造りの湿度管理に乾湿差が使われるのか? - よしだ’s diary
醤油用の麹造り - よしだ’s diary
生酛系酒母と天然醸造醤油の比較 - よしだ’s diary

仕事関係と交友関係

忘年会

仕事を辞めて1年目に思ったことは、年末に忘年会の予定がほぼ入らない。
考えてみれば年末は仕事関係の人との飲み会が優先的に埋まり、年始は(良い意味で利害関係がない)適当に飲む人との飲み会が入っていた。
なので無職の年末年始は、年明けからが飲み本番みたいな感じだった。
仕事関係で忘年会に呼んでもらえるのも、利害関係のない新年会に呼んでもらえるのもありがたい話。

珍しいのかもしれないけど、個人的には仕事関連の飲み会を嫌だと思ったことがないので年末の飲み会が減るのは無職のデメリットかもしれない。

周りの人から言われたこと

・大学行けば?
自分ひとりでもやりたい勉強は出来ているので別にいいかなと。

・輸出用清酒製造免許取れば?
試験製造免許の方が欲しい。
要は自家醸造がしたい。

・魚屋で働けば?
2年働いてふぐ調理師免許を取るってのはありだったかなとは思う。

・酒蔵で働けば?
初対面の蔵の人に突っ込んだ質問をすると同業者を疑われてしまうことが最近あるので、今となってはどこの蔵にも属していない方が立ち回りやすいかなという感じがある。
もちろんひとつの蔵に深く関わることに意義があるのは言うまでもなく。

周りの人からの反応

働いていないことを心配され、社会復帰を喜ばれる。
飲み友達と道端でばったり会うことが割とあって、働いていないことを気にかけてくれる人多数、ありがたい話。
社会復帰したことを伝えたら就職祝いみたいな感じで飲みを奢ってくれる人もいたり、ありがたい話。

お金

前職最後の振込:2018/05/28
今回最初の振込:2021/12/10
期間:3年6ヶ月13日(1292日)
使った額:10,106,350円(財布の現金とか細かいものは含まず)

杉並区在住、世帯主、賃貸。
生活資金に1千万使ったっていうとなかなか多い気もするけど、月額に換算すると家賃も税金も込みで平均237,926円くらいなので意外と安いのかなという感じはする。
数年前は毎日外食したりほぼ毎週末は新幹線乗って泊りがけでどこか行ったりしてもっと支出が多かった時期もあったけど、コロナでだいぶ抑えられた感じはしてる。
自分で言うのもアレだけど自炊力は結構高いので、食費をかなり抑えたうえで自分で自分の胃袋を満足させることが苦なく出来た。
あと、今思うと家は買っておいても良かったかもしれないなとは思う。

巷で散々言われてることだけど、無職1年目は所得税が容赦ない。
2年目からは国民年金保険料や国民健康保険料が免除になったり割と行政は無所得者に優しい。
なので無職は2年目からが本番という感じがある。

うっかり税金を払い忘れて区役所から電話がかかってきた時に、誰の番号かわからなくてその電話番号をググったら、ヤ●ザとか闇金とかそんなふうに書かれていた。
まぁ区役所から催促の電話がかかってくるような人ってのはそういうことをするんだなぁと。

社会復帰

無職の期間、ありがたいことに仕事の話は誰かしらからコンスタントにいただけていた。
元気がなかったり忙しかったりで返信したりしなかったり、社会不適合者ですみません。

業務内容としてはRuby on Rails関連が多かった。
「吉田=Rubyの人」として周りからは認識されているらしい。
しかし吉田が好き且つ得意なのは「Ruby」であって「Ruby on Rails」じゃないということがなかなか理解されがたい趣向。

そんな中、日本酒の分析やら統計やらをしていたからかPythonのデータ分析の話が舞い込んできたのでそのままスッと社会復帰。
日本酒醸造管理ツールの開発が一段落ついた、行列計算をRubyでやることに限界を感じていてPythonに活路を見出していた、減量が一段落した、など都合がちょうどハマったタイミングだった。
吉田が得意なこと、吉田が出来ること、吉田が興味あること、そういうのを把握してくれている人はありがたい。
過不足の多い人間なので。

Rubyで実装したDAWとシンセサイザーの技術仕様

よくもまぁこんな面倒臭い大変なものを作ったなと自分で思う。
RubyのEnumerator::Yielderとlambdaを多用したリアルタイム処理とも親和性が高い作りをしてる。
だいぶ前に書いた文章が発掘されたので手直しして公開。
供養、ナムナム。

デモ

百聞は一見に如かず、まずはデモ音源を。
ドラム以外の音は全てRubyで生成したもの。
ドラムだけはLogic Pro Xで打ち込んでmp3出力して、Rubyに読み込ませてる。

パッケージ

すべてRubyGemsで公開してる。

audio_stream

Rubyで音楽制作できるようにした。
DAWとFXみたいなもの。
依存:vdsp coreaudio

GitHub - yoshida-eth0/ruby-audio_stream: AudioStream is a Digital Audio Workstation for CLI
audio_stream | RubyGems.org | your community gem host

インストール

coreaudio gemsのコンパイルで、Xcode 12系だと以下のエラーが出る。

compiling coreaudio.m
coreaudio.m:785:12: error: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    return rb_thread_call_without_gvl(ca_buffer_wait, ptr,
           ^
1 error generated.

なので以下のようにしてまずはcoreaudio gemsをインストールしてからsynthesizer gemsをインストール。

gem install coreaudio -- --with-cflags="-Wno-error=implicit-function-declaration"
gem install synthesizer

audio_streamの機能と仕様

Audio Busの接続

オーディオファイルやらオーディオデバイスやらのAudioInputをObservableとして、Audio Busなど後続のObserverにBufferを通知する。
FXの接続、ステレオ/モノラル変換、Send ToでのBusの合流などもこのObserverパターンで実装してる。

ruby-audio_stream/audio_observable.rb at master · yoshida-eth0/ruby-audio_stream · GitHub

トラック間の同期

AudioInputはEnumerableを実装していて、Enumerator::Yielderがバッファを生成し続ける。
全てのトラックが同じタイミングで同じ回数Enumerator#nextを呼ぶためにSizedQueueを使って1回の呼び出しごとにThreadを止める。
そして全トラックのバッファが揃ったタイミングで、止めていたThreadを起動させて次のバッファを生成させる。

ruby-audio_stream/conductor.rb at master · yoshida-eth0/ruby-audio_stream · GitHub

FX

FXを自力実装することで今までなんとなく雰囲気で掛けてたFXの意味を正しく理解することが出来たのは良かった。
当初VST2相当の仕組みで作っていたけど、途中でヴォコーダーを作る時にVST2相当だとLRでキャリアとモジュレーションを分けるというあの懐かしい様式になってしまうのが嫌でサイドチェインに対応してVST3相当の汎用性を得たので満足感高い。
Rubyは数値解析系が充実してなくてリバーブの実装で一部SciPyの再開発をすることになったのは想定外で割と苦戦した。

BiquadFilterの美しさ

BiquadFilterには数学的美しさが詰まってると思う。

フィルター系のグラフ。
上から順に、LowPassFilter、HighPassFilter、LowShelfFilter、HighShelfFilter、BandPassFilter、PeakingFilter。
f:id:eth0jp:20211124202610j:plain:h320

上記フィルターを複数使ったイコライザー系のグラフ。
上から順に、2BandEqualizer、3BandEqualizer、GraphicEqualizer。
f:id:eth0jp:20211124202640j:plain:h320

オクターブ差の16帯域のBandPassFilterのグラフ。
周波数軸を対数表示にすることで等間隔のキレイなグラフになる。
440Hzを基準とした平均律の計算しやすさは数学的にも浮動小数点演算的にも美しい。
f:id:eth0jp:20211124202702j:plain:h320

synthesizerの機能と仕様

Oscillator、Amplifier、Filter、とシンセサイザーをいじったことのある人なら音を想像できるくらい直感的なインターフェイスになっていると思う。
VSTi開発の知識がある人であれば、自分でシンセサイザーのロジック部分だけを実装して使える。
シンセサイザーといえばC++が基本みたいなところあるけど、カジュアルにRubyで書けるというのは結構な利点だと思ってる。
f:id:eth0jp:20211124202727j:plain:h320

波形バッファの生成

バッファ分の波形を生成するlambdaをEnumerator::Yielderで実行してる。
NoteOnのタイミングでOscillator、Amplifier、Filterを初期化して、Enumerator#nextされる度に続きの波形を生成し続ける。

Oscillatorで生成する波形の角度はクロージャのような仕組みで保持してる。
なのでバッファが分割されても途切れることなく続きの波形を延々生成し続けることが出来る。
また、NoteOnから時間の推移とともに変化していくパラメータも同じ仕組みで状態保持しているのでADSRやLFOなどのエンベロープが掛けられるようになっている。

ruby-synthesizer/note_perform.rb at master · yoshida-eth0/ruby-synthesizer · GitHub
ruby-synthesizer/low.rb at master · yoshida-eth0/ruby-synthesizer · GitHub

NoteOn/NoteOffでやっていること

以下の設定や状態を計算して最終的な値を算出する。
シンセサイザー固有の設定や状態(PitchBend、Glide)
・Note固有の状態(Volume、Panなど)
・Oscillator固有の状態(Volume、Panなど)

NoteOnのタイミングでやることは以下。
・Oscillator、Amplifier、Filterを初期化。

NoteOnからNoteOffまでの間に延々やることは以下。
・Oscillator、Amplifierの各種パラメータのエンベロープを更新。
・VolumeにNoteOnのVelocityを反映。
・Tuneのエンベロープを更新してPitchBendを反映し、生成する波形の周波数を算出。
・上記の周波数とパラメータからOscillatorが波形バッファを生成。
・Filterのエンベロープを更新。
・Oscillatorが生成した波形バッファにFilterを掛ける。

NoteOff以降にやることは以下。
・ADSRの残響の計算。
・ADSRでRelease途中でVolumeが0を超えていればNoteOn中と同等の処理をする。
・ADSRでReleaseし終えてVolumeが0になったらNoteを削除。

この辺はもう普通にシンセサイザー
理論上は普通のGUIや物理ボタンを持つシンセサイザーと同等のことが出来る。

ruby-synthesizer/low.rb at master · yoshida-eth0/ruby-synthesizer · GitHub

エンベロープ

ADSR、LFO、Glide、Curve、を実装した。
これらを各種パラメータに掛けることができる。

エンベロープを掛けられるOscillatorのパラメータはVolume、Pan、Tune(semi / cent)、Sym、Sync、Unison(num / detune / stereo)など。
エンベロープを掛けられるAmplifierのパラメータはVolume、Pan、Tune(semi / cent)、Unison(num / detune / stereo)など。

ADSRのグラフ。
f:id:eth0jp:20211124224952j:plain:h320

ruby-synthesizer/modulation_value.rb at master · yoshida-eth0/ruby-synthesizer · GitHub
ruby-synthesizer/adsr.rb at master · yoshida-eth0/ruby-synthesizer · GitHub

Oscillator

波形生成ロジックは独立して外側に置けるので、sine、triangle、saw、squareなどの基本的な波形以外にも、フォルマントヴォコーダーをOscillatorとして実装するなんてことも出来るようにしてある。
実際にフォルマントヴォコーダーは実装して使えるようにした。
デモのCinemaではフォルマントヴォコーダーを使ってる。

ruby-synthesizer/base.rb at master · yoshida-eth0/ruby-synthesizer · GitHub
ruby-synthesizer/shape.rb at master · yoshida-eth0/ruby-synthesizer · GitHub

Amplifier

AmplifierにはADSRやLFOなどのエンベロープが指定できる。
ADSRの減衰やLFOの角度の状態は、Oscillatorの波形生成と同様にクロージャのような仕組みで保持してる。

Filter

FXに準ずるフィルターの実装。
パラレル/シリアルでのフィルター処理にも対応した。

ステップエディタ

ST/GT方式のステップエディタを実装した。
分解能とBPMを指定することで、Tickでの指定も出来るようにもした。(sync機能)
ダブステップとかでLFOBPMに同期させる時とかに便利。

ruby-synthesizer/st_gt.rb at master · yoshida-eth0/ruby-synthesizer · GitHub

あとがき

Enumerator::Yielder大好き芸人としてはかなり満足の出来。
coreaudioがコンパイル出来ないので今手元で動かせていないのが悔やまれる。
Ruby2.7系の時代に作ったものなので、(多分動くと思うけど)Ruby3.0系で動くか不明。
coreaudioがコンパイルできないことにはどうしようもないのでどうにかしたいところ。

朝日酒造試飲会@イオンリカー高円寺店

2021/10/1、イオンリカー高円寺店にて朝日酒造試飲会に参加した時のメモ。

Facebookで友人限定で書いていた記事を転載。
固有の蔵に関することを書くのは肩入れしてるみたいで嫌だなとFacebookで友人までの公開ばかりになってしまっていたけど、公なアウトプットも増やしてしていこうかなと。
あまり主観を含めたくないので聞いた話がメイン。

高円寺バルイベント予告10月1日日本酒の日~|高円寺店|イオングループのリカー専門店「イオンリカー」
日本酒の日/久保田を作る朝日酒造試飲会開催|高円寺店|イオングループのリカー専門店「イオンリカー」

f:id:eth0jp:20211122183806j:plain:h360

本文

日本酒の日。
久保田の朝日酒造のイベントに行って根掘り葉掘り聞いてきた。

熟成3種セット。
・久保田 千寿:1年瓶内熟成。
・久保田 千寿 秋あがり:1年タンク熟成。
・千年翠 純米吟醸:2年瓶内熟成。

久保田 千寿は自社で培養した9号系の酵母を使っている。
千年翠 純米吟醸はスペック的には千寿 純米吟醸と同じ。
千年翠は総米3トンで仕込んだものをソムリエの人がブレンドしてる。(余りは千寿にブレンド?)

萬寿 自社酵母仕込(の話だったと思う)はCEL-24とかそんな感じのカプロン系と言ってた。
今回飲んでないから記憶が曖昧だけど、黒いラベルの純米大吟醸も確かカプロンプンプン系だった気がするけど、方向性としてはそんな感じなんだろうか、聞き忘れた。
わざわざ自社酵母仕込と謳っているものと千寿の自社で培養した酵母は何が違うのだろうか、聞けばよかった。
尿素を生産する18号系の酵母を使うと海外へ輸出できなくなるので朝日酒造では使っていない。

尿素については基準値があるのか、尿素非生産性株を使わないとダメなのか、調べてもよくわからなかった。
輸出用清酒製造免許は国内同様の清酒造りができると思っていたけど、こういう海外の基準も影響を受けるっぽい。

通年醸造はしていない。
9月〜5月に仕込み。

火入れについて。
温度を早く上げると香りは残りやすいが熟成には向かない。
温度をゆっくり上げると香りは飛びやすいが熟成させた時に崩れにくい。
千寿は前者、千年翠は後者。

スパークリングについて。
ガス添の流れ:絞り、火入れ、貯蔵、火入れ、ガス添、瓶詰め。
ガスを添加してからタンクで2日くらい馴染ませてから瓶詰めする。
酵母由来のガスは泡が荒い、ガス添は泡がきめ細かい。
ガス添してすぐに瓶詰めすると注いだときにグラスに付く泡が多くなるらしい。
原酒14度、加水して12度。
詳しくは聞いてないけど、甘辛度に関しては日本酒度よりもグルコース量を重要視してそうな感じ。

淡麗な酒質について。
9号系の酵母を使って酸を抑える。
五百万石を使って軽い酒質にする。
この2点が設計の軸にあるらしい。
フィルターについても聞きたかったけど聞きそびれた。

あと何言ってたかな、いろいろ教えてもらったけど記憶力がニワトリなので。
教わったことを整理して後になってからあれも聞けばよかったなってのが多々あって1度では聞ききれないからイベントは2daysやってほしい。
特に今回はパターン違いの熟成酒の飲み比べという入口だったのもあり、麹とかまで深掘りできなかったのが悔やまれる。

朝日酒造のような大手メーカーにも小さな地酒蔵同様に蔵の考えや特色があるはずなのに、いつでもどこでも飲めるせいで蔵の特色ってよりもスタンダードな日本酒って印象になるのは飲み手の問題なのだろうか。
大手メーカーにも潜入捜査したい。

ニッポン全国物産展2021 吟醸祭@池袋サンシャインシティ

ニッポン全国物産展2021 吟醸祭@池袋サンシャインシティに行ってきたのでメモ。
2021/11/21、最終日の閉場90分前くらいに到着したのであまり巡れなかったのが悔やまれる。
あまり主観を含めたくないので聞いた話がメイン。

ニッポン全国物産展|ここでしか味わえない、ニッポン全国の魅力が大集合。今こそ、食べて、楽しんで、みんなで地域にエールを送りましょう。

株式会社大都商会

左から順に。
ピカソ十九代 純米吟醸 出羽燦々
・秘製 ピカソ十九代 純米大吟醸 出羽燦々
・極秘製 ピカソ十九代 純米大吟醸 雪女神
f:id:eth0jp:20211122181435j:plain:h360

もともとが貿易の会社で、海外向けに販売をしている蔵らしい。
国内販売の免許を取って今年から国内販売を始めた。
主な輸出先は中国とかアジア圏。
輸送は冬の時期に常温でしている。
海外の飲食店での保存方法は冷蔵されたり常温で置かれたりまちまち。
海外での飲み方は、飲む前に冷やすという飲み方が多い。

ピカソ十九代 | 新都ホールディングス株式会社
日本酒推薦 | 十九代日本清酒 | 五左衛門 純米大吟釀Sake - PBC尚懋生醫

倉本酒造株式会社

f:id:eth0jp:20211122181928j:plain:h360
菩提酛で作られたお酒が8種類。
菩提山 正暦寺というお寺で酒母が作られ、その共通の酒母を使って各蔵が添えから仕込んだという8種類。
寺は酒母の製造免許はあるけど清酒の製造免許はないらしい。

忙しそうであまり突っ込んだ話は聞けなかった。

奈良県菩提酛による清酒製造研究会

花の舞酒造株式会社

左から順に。
・Abysse -アビス-
・Abysse Sparkling -アビススパークリング-
f:id:eth0jp:20211122181959j:plain:h360

アビスは生原酒。
使用している白ワイン酵母(ブルゴーニュ菌株)は低温に強いらしい。
低温で醪日数30日。
アルコール度数12度。
日本酒度は聞いたけど忘れちゃった、ネットの情報を見るに-18らしい。
吸水歩合を下げるのと、放冷で温度をちゃんと下げることでお米が〆り溶けにくく長期発酵向きの蒸米になるらしい。
具体的な品温は聞いてないけど、原酒で低アルコールで甘めな酒質で醪日数30日引っ張るというのはだいぶ低温なのではないかと思う。
温度調整はサーマルタンクではなく水を回して下げているらしい。

アビススパークリングは瓶内二次発酵の瓶火入れ。
アビスより醪日数短めで、瓶詰めのタイミングで酵母を添加して7日間瓶内二次発酵してるって言っていたような気がする。
火入れの仕方で味が全然変わるので試行錯誤した結果パストライザーでの火入れに落ち着いたらしい。

https://hananomai.co.jp/pr/abysse/
https://hananomai.co.jp/pr/abysse/tastingnotes.html

日本酒醸造管理ツールの技術仕様

以前公開した日本酒醸造管理ツールの技術仕様、主にCognitoの権限とかセキュリティに関して。
一般的に、ここまでセキュリティを高くする必要はないし、明らかにオーバースペックではある。

今回の記事は半年くらい前に書いていた文章。
自分用のメモみたいな。
時が経ちすぎて自分でも結構忘れてるしなんで公開してなかったのかも覚えてないからどこか書き直したいところがあったのかな、覚えてないけどとりあえず公開して供養。
セキュリティの要件ベースでまぁ面白みはないけど、セキュリティにカジュアルな面白みなんて存在しないし興味ある人だけどうぞ。
供養、ナムナム。

セキュリティこだわりポイント

サービスと認証をドメインレベルで完全に分離する

ユーザはサービス開発者が何か悪いことをするのではないかと疑ってサービスを利用すべき。
ユーザはサービス開発者を信じてはいけない。

Federated Identityで認証する場合、自ドメインで開発者が手の届く場所でID/Passを入力させることが出来る。
そのサービス開発者なら難しいことなくJavaScriptでID/Passをスッポ抜くことが出来てしまう。
仮にサービス開発者が善人だとしても、サイトの改ざんや、広告からの良からぬスクリプト実行なども想定するべき。

なので、この2つをしないようにした。
・サービスドメインでID/Passを入力させない。
・サービスドメインでログインボタンを押させない。

したがって、認証用の外部ドメインに飛びOpenIDでログインして、サービスドメインに戻ってくるようにした。
サービスドメインでは認証に関わる入力や操作を一切しない、させない。

一般に、Facebookログインボタンだけが置かれた外部ドメインに飛ぶ方が怪しいらしい。
しかしここは見た目の怪しさよりも実際のセキュリティの高さを優先し最良の方法をとった。

ユーザに必要以上の権限を与えない

サービス開発者はユーザが何か悪いことをするのではないかと疑ってサービスを提供すべき。
サービス開発者はユーザを信じてはいけない。

よくあるのがネイティブアプリだからってDynamoDBとかFirebaseとかの書き込み権限を与えてしまうパターン。
これは良くない。
いくら書き込み前にvalidateしても所詮はユーザの手元でのチェック。
ユーザに与えた権限は開発者の意図しない形で行使されるものと思うべき。

Androidアプリなんて逆コンパイルして再ビルドして実機にインストールするくらいのことは出来る。
特に危ないのがAndroidアプリで中身がC#で書かれてるアプリ、あんなもん完全に逆コンパイルしてくださいと言っているようなもの。

なのでFederated Identityで安易に権限を与えてはいけない。
権限を与えるにしてもポリシーでギチギチに固めるべき。

認証情報やアカウント情報など保護すべきデータを保持しない

認証情報はOpenID Connect IdP(今回はFacebook)が管理。
アカウント情報はCognito UserPoolが管理。
ApiGatewayの認証はCognito UserPoolで。
IoT(MQTT)の認証はCognito Federated Identity。
権限はCognito Federated Identityに紐づけてIAMロールとIoTポリシーで管理。

DynamoDBにはUserPoolのsubしか持たない。
なのでOpenID Connect IdPがクラックされない限り、認証情報や個人情報を抜くことも出来ないし、権限を得ることも出来ない。

WebAPIを実行する時の認証

Webアプリ/ネイティブアプリ共通。
Cognito UserPoolのJWTトークンで認証する。

構成:
ブラウザ ー(HTTPS)→ Cognito UserPool ー(OpenID Connect)→ Facebook

認証:
UserPoolで認証して、DynamoDBのAccountテーブル(UserPoolのsubがキー)でBreweryテーブルに対する権限をチェックする。

ネイティブアプリ:IoT Core(MQTT)でPub/Subする時の認証

前提となる問題点:
MQTTでの認証はFederated Identity。
UserPoolで認証できればBreweryとの紐付けチェックは簡単だけど、Federated Identityからチェックしなければいけない。

構成:
Cognito Federated Identity ー(統合)→ Cognito UserPool

事前準備:
Breweryが作成されたタイミングで、Brewery単位でIoTポリシーを作成。
AccountテーブルとBrewreyテーブルが紐づくタイミングで、Federated Identity IDに対してBrewery単位のIoTポリシーをattach。
これでFederated IdentityからIoTポリシーベースでBreweryに対して権限があるか否かを判定できる。

認証:
MQTTではFederated Identityで認証して、Accountテーブル(UserPool認証)を経由することなくBrewreyに対して権限があるものにのみConnect/Pub/Sub権限が与えられる。

DynamoDB Streams、冪等性を以て整合性を保証する

冪等性が保証されることで、テーブル間の整合性を保証する流儀について。
分散DBが当たり前のこのご時世、トランザクションを使ってAll or Nothingで整合性を取る時代は終わった。
Streamsでlambdaを起動することで、Push型のObserverパターンとしてlambdaでレコードを数珠つなぎに処理出来る。
今回の設計でいうとStreamsで仕込み配合の更新をトリガーして、仕込み単位の作業日程に展開して、複数の仕込みを集計して実作業用のレコードを作るということをしている。
Streamsのエラー制御により冪等性が保証されることで、最初のレコードの状態に対する後続テーブルの対応レコードの状態を保証出来る。

生酛系酒母と天然醸造醤油の比較

目的が違えば選択すべき菌も変わってくるし、環境が違えば生き残る菌も変わってくる。
麹菌、乳酸菌、酵母の3つについて、性質や役割を生酛系酒母と天然醸造醤油で比較していく。

流れを確認しながら比較するためにまとめたけどこの程度の概要ではちゃんと理解するには至らないので、この記事を読んで全体像を把握したらリンクした引用元や参考文献を全部読むべきかなと思う。
日本酒と醤油の相互理解、全体像と流れを把握し、更に詳細を掘っていくための索引としては価値があるかなと。

麹菌

まずは仕込みや麹造り以前に種麹の話。

生酛は「乳酸を添加しないもの」ではなく「自然の乳酸菌を取り込んでpHを下げるもの」と捉えて分類する。
そして「麹由来のクエン酸でpHを下げるもの」を焼酎系として分類する。
焼酎系は余談程度で。

詳しいことは、麹学(村上英也 編著) P195「育種の対象とすべき麹菌の性質」あたりに書いてある。

生酛

清酒用麹菌として具備すべき性質。

1)蒸米によく繁殖すること,繁殖速度の速いこと
2)アミラーゼ力の強いこと
3)清酒の雑味二を少なくするためにプロテアーゼカの比較的弱いこと
4)香りのよい米麹を造ること
5)胞子着生がよく種麹が造り易いこと
6)長い胞子柄は機械製麹において堆積層の空気流を妨害するので,胞子柄の短いこと
7)火落菌の生育必須因子であるMVAを生産しないこと
8)黒粕防止の意味から米麹を褐変しないこと(チロシナーゼを生産しないこと)
9)DFを生産しないこと
清酒醸造微生物学の進歩(1)

使われる麹菌の種類は以下の通り。

・Aspergillus oryzae (ニホンコウジカビ)
黄麹菌。
日本酒用、甘酒用といえばこれ。

でんぷんを分解する酵素であるα-アミラーゼ遺伝子、α-グルコシダーゼ遺伝子は複数個存在することが分かり、このことがA. oryzaeの清酒醸造で必要な高アミラーゼ生産の理由のひとつと考えられます。
麹菌ゲノム解読 | キッコーマン

ニホンコウジカビ - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%9B%E3%83%B3%E3%82%B3%E3%82%A6%E3%82%B8%E3%82%AB%E3%83%93

焼酎系

一般的には泡盛、焼酎用。
クエン酸を多く生産する。

使われる麹菌の種類は以下の通り。

・Aspergillus luchuensis (アワモリコウジカビ)
黒麹菌。
古い分類ではAspergillus awamoriとされていたので古い文献を見る時は注意。

・Aspergillus luchuensis mut. kawachii
白麹菌。
Aspergillus luchuensisの突然変異種。

ニホンコウジカビ(A. oryzae)と異なりクエン酸の生産力が強く雑菌の繁殖が抑えられもろみが腐敗しにくい。
アワモリコウジカビ - Wikipedia

焼酎系麹菌を醤油醸造に用いるとポン酢醤油のような風味の醤油になるらしい。

醤油醸造に用いられている麹菌は、Aspergillus oryzaeとA. sojaeである。
麹菌以外の黒麹菌や他のAspergillus属での醤油醸造の検討が行われたが、黒麹菌はクエン酸を多量に生成するため、ポン酢醤油のような風味の醤油となり、結局は上述の2種類の麹菌が、醤油醸造に最も適した黴であると考えられる。
身近で活躍する有用微生物 食品と有用微生物-和食文化と微生物4 醤油と味噲の微生物

アワモリコウジカビ - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AF%E3%83%A2%E3%83%AA%E3%82%B3%E3%82%A6%E3%82%B8%E3%82%AB%E3%83%93

醤油

醤油用麹菌に求められる性質。

1)たんぱく質を分解するアルカリプロテアーゼ・中性プロテアーゼの生産能が高く、
2)アミノ酸化を高めるアミノペプチダーゼ・グルタミナーゼが強く、
3)食物組織崩壊に寄与するペクチンリアーゼなどの酵素を生産能が高く、
4)適量のアミラーゼと酸性プロテアーゼを生産し、
5)生育速度が大きく、
6)製麹中の糖消費が多くなく、製麹作業性に優れ、
7)種麹の分生子着生が良好で、
8)マイコトキシン非生産性であること
麹学(村上英也 編著) P196「育種の対象とすべき麹菌の性質」(iii)醤油麹菌

使われる麹菌の種類は以下の通り。

・Aspergillus sojae
黄麹菌。

A. sojaeとA. oryzaeのゲノムを比較したところ、A. sojaeはA. oryzaeと同様に多数のタンパク質分解酵素をもつこと、また、A. sojaeに固有のタンパク質分解酵素遺伝子も複数個存在することが明らかになりました。
しょうゆ醸造では、主原料である大豆たんぱく質を分解するために、麹菌には高いプロテアーゼ活性が求められます。
A. sojaeがA. oryzae以上にプロテアーゼ遺伝子を多数もつことは、A. sojaeがしょうゆ醸造で利用されている理由の1つであると考えられます。
また、A. oryzaeはゲノム中に3つのα-アミラーゼ遺伝子をもちますが、A. sojaeは1つだけでした。
麹菌ゲノム解読 | キッコーマン

・Aspergillus oryzae (ニホンコウジカビ)
黄麹菌。
中でも高いたんぱく質分解能をもつ株が使用される。

味噌・しょうゆ製造ではA. sojaeあるいはA. oryzaeの中でも高いたんぱく質分解能をもつ株が使用されています。
麹菌ゲノム解読 | キッコーマン

・Aspergillus tamarii (タマリコウジカビ)
黄麹菌。
たまり醤油用の麹菌。
情報がさっぱり出てこないので詳細不明。

A.tamariiの使用頻度は著しく少ない。
醤油醸造微生物学の進歩(1)

麹菌ゲノム解読 | キッコーマン
https://www.kikkoman.com/jp/quality/research/about/soysauce/genome.html

製麹

以前書いた別の記事を参照。
これも日本酒と醤油を比較しつつまとめてある。

醤油用の麹造り - よしだ’s diary
https://yoshida-eth0.hatenablog.com/entry/2021/08/03/040606

微生物の遷移

ここからは酒母中、諸味中での微生物の働きについて。
まずは全体像の流れを。

生酛
f:id:eth0jp:20210823023800p:plain
清酒醸造微生物学の進歩 (4)

生酛特有の微生物遷移。

打瀬の初期に栄養分が少なくても低温で生育できる硝酸還元菌(Pseudomonas, Enterobacter,その他水棲細菌,産膜酵母)が生えて,汲水中の硝酸を還元して亜硝酸を生成する(最高で10ppm)。
次いで溶解が進み糖分が多くなると,低温で生育できる乳酸菌が生えて乳酸が生成し,亜硝酸と乳酸,濃糖,低温の相乗作用で野生酵母,細菌が死滅するか極端に弱まる。
これは予定しない早い時期に野生酵母などによる増殖がはじまる(早湧き)を阻止するための重要な作用である。
その後品温の上昇とともに乳酸発酵が進み,物量は酸性(pH3.5 ~ 4)となり,硝酸還元菌も含めて雑菌は殆どいない状態になる。
この頃になると亜硝酸は消え,糖分,アミノ酸が増え,酵母の栄養分も十分となり,酒蔵に棲み付いた優良な家付き清酒酵母が生育してくる。
あるいは隣の発酵中の酒母を入れたりする(差酛)。
乳酸菌は生成アルコールのために死滅する。
「生酛造り」に関する一考察

生酛系酒母・生酛 | 灘の酒用語集
http://www.nada-ken.com/main/jp/index_ki/224.html

醤油
f:id:eth0jp:20210823023852p:plain
醤油醸造での醤油乳酸菌の働きとその影響

乳酸菌の死滅から酵母の増殖について。

醤油乳酸菌は,乳酸発酵後期になると諸味pHの低下に伴い死滅に向かい,代わって酵母が増殖しアルコール発酵が始まる.
ところが,後述するアミノ酸分解株には,速やかに死滅せずに,発酵後期まで生残するものが存在する.
このような醤油乳酸菌株がメインで働いた諸味では酵母の生育が阻害され,その結果,アルコールと芳香が低い醤油となる場合がある.
また,通常,乳酸菌の後に増殖する酵母が醤油乳酸菌と同時期に増殖すると,醤油乳酸菌の生育が阻害され乳酸発酵が微弱となる場合があることが報告されている.
醤油醸造での醤油乳酸菌の働きとその影響

乳酸菌

生酛

生酛酒母中で生育する乳酸菌は2種類。
硝酸還元菌が生成した亜硝酸が野生酵母の発育を抑制し、低温で仕込むことによって低温耐性のあるこれらの乳酸菌のみが生育する。

・Leuconostoc mesenteroides var. sake
ヘテロ乳酸発酵、通性嫌気性、グラム陽性菌、非運動性、非胞子性、球形。

・Lactobacillus sake
条件的ヘテロ発酵型、グラム陽性、桿菌。

生酛系酒母中の乳酸菌は球菌としてLeuconostoc mesenteroides var. sake,桿菌としてLactobacillus sakeの2種類に限られることが明らかになった。
まず生育の早い球菌が増殖し,2~3日遅れて桿菌が増殖する。
乳酸菌がこの2種類に限られるのは低温が制限因子となっているためで,4℃においてLeuc. mesenteroidesは生育に7~9日,L. sakeは9~14日を要するが,他の乳酸菌は4℃では生育不可能である。
清酒醸造微生物学の進歩 (4)

生酛中の乳酸菌は球菌のLeuconostoc mesenteroidesと桿菌のLactobacillus sakeiにほぼ限定される。
一般に生酛においては最初に球菌が生育し,ついで桿菌が生育する,優占乳酸菌の遷移が起こっているといわれている。
球菌が先に優占乳酸菌となるのは,麹から分離される乳酸菌のほとんどがL. mesenteroidesであること,球菌は栄養要求性が単純であり,生酛初期の栄養分の少ない環境で良好に生育できることが原因であると考えられている。
そして次にL. sakeiが優勢となるのは,乳酸酸性下において亜硝酸耐性の弱いL. mesenteroidesが死滅した後に,亜硝酸耐性の強いL. sakeiが生育してくるためであると言われている。
生酛においてLactobacillus sakeiを優占菌とする増殖因子

一般的に言われているのは上記の2種類だが、以下の論文を見るにLactobacillus curvatusという乳酸菌も酒母中で生存できるらしい。

分離乳酸桿菌B1株およびB2株は,16S rDNA配列解析から,解析した約500bpの配列で,L. sakeiおよびLactobacillus curvatusと100%の相同性を示し,いずれかの菌種であると推定された.
これらのことから,分離乳酸桿菌2株は,L. sakeiではなく,L. curvatusと同定した.
分離乳酸桿菌は,既述のようにL. curvatusであったが,L. sakeiと同程度の低温生育性,アルコール感受性および低pH生育性を有していた.
以上の結果から,分離乳酸球菌L. mesenteroidesと分離乳酸桿菌L. curvatusは,生酛系酒母中で増殖することを示唆しており,生酛系酒母製造安定化のための添加乳酸菌としての活用が期待できる.
県内酒造場の山廃酛から分離した乳酸菌とその性質

硝酸還元菌 | 灘の酒用語集
http://www.nada-ken.com/main/jp/index_shi/214.html

乳酸菌 | 灘の酒用語集
http://www.nada-ken.com/main/jp/index_ni/216.html

Leuconostoc mesenteroides - Wikipedia
https://en.wikipedia.org/wiki/Leuconostoc_mesenteroides

Latilactobacillus sakei - Wikipedia
https://en.wikipedia.org/wiki/Latilactobacillus_sakei

乳酸菌の種類|株式会社農(みのり)
http://www.minori-lab.com/lacto2.html

醤油

醤油諸味中で生育する乳酸菌は1種類。
高い塩分濃度によって雑菌の発育を抑制し、耐塩性のある乳酸菌のみが生育する。

・Tetragenococcus halophilus
ホモ乳酸発酵、グラム陽性、好気性、中程度の好塩菌、非運動性、球菌。
生育にもっとも適した食塩濃度は5~10%、24%の食塩濃度でも生育が可能。
育成温度は10〜45℃。
生育pHは5.0〜9.0。

醤油乳酸菌Tetragenococcus halophilus(以下,醤油乳酸菌)は,1907年に醤油諸味から分離され,その後,諸味の発酵と熟成に関わる主要な微生物として性質などが明らかにされた.
また,一般的な乳酸菌の性質と大きく異なる点は耐塩性であり,生育にもっとも適した食塩濃度は5~10%であるが,24%の食塩濃度でも生育が可能である.
醤油醸造での醤油乳酸菌の働きとその影響

乳酸菌の役割。

この菌の役割は味噌,醤油諸味の中で乳酸を生成し,諸味のpHを下げ,食塩含有の中で増殖する耐塩性酵母の増殖最適pHにする.
また低いpHは味噌や醤油の変質や微生物の汚染を防ぎ,保存性を増す効果がある.
例えば,仕込後の諸味発酵期間中に味噌や醤油の有害菌である産膜性酵母(Hansenula,Pichia,Debaryomyces属菌)や細菌の菌数がpHの低下と熟成とともに減少し,最後にはほとんど検出されない.
味噌,醤油の微生物

テトラジェノコッカス属 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%88%E3%83%A9%E3%82%B8%E3%82%A7%E3%83%8E%E3%82%B3%E3%83%83%E3%82%AB%E3%82%B9%E5%B1%9E

漬物と微生物
https://www.eiken.co.jp/uploads/modern_media/literature/MM1511_04.pdf

A. oryzae麹を使って醤油を仕込む場合

A. oryzae麹はA. sojae麹よりもクエン酸含量が多いので諸味初期のpHが低くなる。
初期のpHが低いため諸味中での醤油乳酸菌の生育が不振で乳酸や酢酸の生成が少なく、熟成によるpHの低下が緩やか。

A.sojae No.9麹の諸味ではpH低下が速やかで,熟成60日において平均4.81とすでに通常の醤油のpHに近似していた。
これは熟成初期に乳酸菌の増殖が速やかで,乳酸,酢酸が多く蓄積されたためと考えられた。
これに対し,A.oryzae S-03麹の諸味ではpH低下が緩やかで,熟成60日で平均4.96と高く,生醤油で平均4.85に達した。
これは熟成のほぼ全期間を通じて徐々に乳酸発酵が行われたことが主因と思われた。
Aspergillus sojaeとAspergillus oryzaeを使用した醤油麹及び醤油の比較

酵母

生酛

・Saccharomyces cerevisiae
清酒の他にもビールやワイン、パンなどを造るときに用いられる醸造酵母

酵母の一種で、「出芽酵母」や「パン酵母」というと一般的にこの種を示します。
S. cerevisiaeは糖を代謝しアルコール発酵を行うことが大きな特徴です。
サッカロマイセス・セレビシエ (Saccharomyces cerevisiae) の特徴 – 株式会社テクノスルガ・ラボ

清酒酵母を分類上Saccharomyces sakeに分けるべく研究している人も。

日本の文化である日本酒の醸造において、清酒酵母S. sakeとビール、ワイン、パン等に用いられるその他の醸造酵母S. cerevisiaeとを区別できなければ、より良い『清酒醸造を行うことはできません。
清酒酵母S. sakeの研究を積極的に行い、清酒酵母S. sakeとS. cerevisiaeを実用や嗜好に左右されることなく、微生物学的に区別、分類することが、清酒醸造従事者にとって不可欠であり、意義があります。
研究室トピックス|醸造微生物学研究室 | 東京農業大学

酵母添加タイミングについて。

かつては蔵内に存在していた蔵付き酵母が自然に育てられたが、現在では醸造の安定化のために優良酵母を添加する場合も少なくない。
酵母を添加する場合は、亜硝酸によって増殖が阻害されないように、酒母中の亜硝酸反応が消えてから添加する。
生酛系酒母・生酛 | 灘の酒用語集

家つき酵母・蔵つき酵母 | 灘の酒用語集
http://www.nada-ken.com/main/jp/index_i/189.html

清酒酵母 - Wikipedia
https://ja.wikipedia.org/wiki/%E6%B8%85%E9%85%92%E9%85%B5%E6%AF%8D

出芽酵母 - Wikipedia
https://ja.wikipedia.org/wiki/%E5%87%BA%E8%8A%BD%E9%85%B5%E6%AF%8D

醤油

耐塩性のある酵母のみが生育する。

醤油づくりで活躍する酵母は大きく2つ。主発酵酵母と後熟酵母です。
まず主発酵酵母ブドウ糖を元にアルコールを生み出し、乳酸菌がつくり出した有機酸と化学反応をして複雑な香りをつくりだします。

続いて、主発酵酵母の活動が落ち着き熟成期に入ると後熟酵母にバトンタッチ。
小麦の皮の成分から熟成香に分類される燻製のような香りを出し風味に深みを与えるなど、ゆっくりゆっくりと活動していきます。
この深みは一年以上醸造した醤油でないと出てこないといわれています。
酵母菌 | 職人醤油 - 醤油を使い分けると、食はもっと楽しくなる!

・Zygosaccharomyces rouxii
主発酵酵母
発酵適温は28℃前後。
pHが5.4以下で活動。

しょう油もろみ,味噌の主発酵酵母で,pHが5.4以下で活動する。
しょう油もろみの酵母発酵は,この菌の適温である28℃前後に90日程度保持して,その菌数は最低105/g,通常106/9以上とし,3~4%のアルコールを生成させることが必要とされている。
ここで留意しなければならないのは,しょう油もろみの酵母発酵はアルコールそのものが最終の目的物ではない点で,アルコールは単に香気成分の一つの指標であり,この程度まで発酵すればその他のしょう油香気成分が副成してくる目安が得られる。
熟成に関する微生物について

・Candida versatilis, Candida etchellsii 等
後熟酵母
古い分類ではTorulopsisに属していたので古い文献を見る時は注意。

Tomlopsis属酵母のある菌株はしょう油もろみの後熟酵母として,とくにしょう油香を特徴づける4エチルグアヤコールの生成能を有する点から注目されるようになった。
S. roumxiiよりもかなり細胞が小型で,好塩的性格を有し,醸造後期に除々にその影響を現わす。
熟成に関する微生物について

酵母の役割。

酵母の役割は原料臭,未熟臭(豆臭,米臭など),温醸臭などの消失や悪い臭いのマスク,味噌や醤油の芳香の付与(4-エチルグアヤコールが醤油の香と言われていたが醤油の香が強すぎるため,4-Hydroxy-2(or5)-ethyl-5(or2)-methyl-3(2H)-furanoneが醤油の塩味をやわらげ,まろやかな味にし,醤油のカラメルのような甘い香をもち,品質の良い醤油に含まれ,また酵母菌体の自己消化によりゴク味や,おし味を付与し,Z.rouxiiの増殖に伴なってコハク酸が生成され,旨味を増している.
味噌,醤油の微生物

熟成に関する微生物について
https://www.jstage.jst.go.jp/article/jbrewsocjapan1915/66/7/66_7_675/_pdf

耐塩性酵母 Zygosaccharomyces rouxii の生理特性(1)
https://www.jstage.jst.go.jp/article/jbrewsocjapan1988/92/11/92_11_783/_pdf/-char/ja

酵母菌 | 職人醤油 - 醤油を使い分けると、食はもっと楽しくなる!
https://www.s-shoyu.com/knowledge/0711

A. oryzae麹を使って醤油を仕込む場合

A. oryzae麹はA. sojae麹よりも、pH低下が緩やかなため適正添加時期(pH5.0~5.2のとき)が長い。
酢酸が少ないので阻害を受けずアルコール発酵が強いが、熟成の後半では一部が揮散し最終的に差はなくなる。

(A.sojae No.9麹の諸味について)アルコール発酵が弱いのは醤油酵母が諸味中の酢酸によって阻害を受けているためと思われた。
したがって,A.sojae No.9麹で諸味を仕込む場合には,諸味pHの推移を厳密に把握し,培養酵母の適正添加時期(pH5.0~5.2のとき)を逸しないようにする必要がある。
Aspergillus sojaeとAspergillus oryzaeを使用した醤油麹及び醤油の比較

A.oryzae S-03麹の諸味は熟成の早い時期にアルコールが生成したために熟成の後半で一部揮散し,逆にA.sojae No.9麹の諸味はアルコール生成が遅れていたものの,徐々にA.oryzae s-03麹による諸味のレベルに追いついたためと考えられた。
Aspergillus sojaeとAspergillus oryzaeを使用した醤油麹及び醤油の比較