紹興酒の造り方の考察

信憑性の高い一次情報しか信じないぞという強い気持ちを持って中国語のサイトとJ-Stageでちゃんと調べた。
黄酒(紹興酒)の造り方について、日本酒醸造の知識と照らし合わせてまとめた。
複数の情報源からまとめているので一部重複する内容や説明が前後する箇所あり。

黄酒の造り方

何はともあれWikipedia(中国版)を参考にする。

Google翻訳とDeepLを使いつつ手直し。
用語は適宜それっぽく日本酒用語に置き換え。

一般に黄酒は、米を煮て麦曲と酵母を加え、前・後発酵の2段階を経て圧搾して完成品とするもので、次のような工程を経て製造されます。

# 工程 概要
1 材料の選択 さまざまな品種で必要な穀物を選別します
2 浸漬 選択した穀物を浸す
3 蒸米 浸した穀物を蒸します
4 放冷 蒸した穀物を冷却
5 摊饭 麹と冷やしたご飯を混ぜる
6 前発酵 麹を混ぜたご飯を水槽に入れて発酵させます
7 櫂入れ 発酵タンクで醪をかき混ぜて、タンク内で上下に均等に発酵させます
8 後発酵 瓶を使用して空気の接触面積を減らし、発酵効果を向上させます
9 絞り 完全に発酵した醪に圧力をかけ、酒粕と原浆酒に分離させる
10 煎酒 白色の原浆酒を色が濃い半製品に変わるまで加熱します
11 ブレンド 煎酒を凝縮するときに揮発した蒸留アルコールを収集してブレンドします
12 澱引き・濾過 ブレンドされた半製品は、低温で2〜3日間澱引きされた後、再度濾過されます
13 火入れ 加熱・殺菌することで、ワインの沈殿物を同時に固化させ、さらに澱引きすることができます
14 梱包と保管 滅菌後、熱いうちに詰め、種類に応じて保存し、アルコールと酸のエステル化を促進して味を良くします

米酒は黄酒に比べて製造工程が単純で、個人の職人による製造は最初の6工程と最後の1工程のみであり、その結果、製品の賞味期限は短くなる。
一方、工業的に大量生産される米酒は、醸造工程が一度だけで、その他は黄酒醸造と同様であるため、職人の個人醸造品よりも賞味期限が長いのです。

黄酒を造るには発酵が重要で、温度やエアレーションをコントロールして、さまざまな微生物のバランスを調整しながらもろみを発酵させる。
醪が酸っぱくなるのを防ぐのがポイントです。
糖化と発酵が同時に行われ、高濃度の糖が生成されず、酵母へのダメージが緩和され、曲と米が酵母の増殖と発酵を促進し、米のタンパク質とビタミンBが高度アルコールなどの有害副産物を除去しやすくします。
15℃での長い後発酵により、18〜20%のアルコールが生成されます。

水は重要な原料の一つであり、伝統的な紹興酒の製造方法においても、もち米を浸漬してできる酸水(浆水)の一部を使用してもろみの酸度を調整し、酵母が必要とする栄養分や成長因子を補って、酒の香りを高めている。

最高の黄酒はもち米から作られる。
もち米のでんぷんの98.8%はアミロペクチンで、樹枝状構造で分子量が大きいため、吸水が早く糊化しにくく、可溶成分が多く、まろやかな味わいの黄酒に仕上がります。
ジャポニカ米とインディカ米のでんぷんはアミロースを20〜30%含んでおり、蒸したときに吸水性が高く、米が緩み、軽い味わいの酒になるのが特徴です。
即墨や大連では、原料にアワ米を使い、水で焦げ目がつくまであぶり、熱湯で煮てデンプンを溶かし、酒に独特の焦げの風味を与えている。

曲は黄酒製造の糖化剤として使用されるが、一部の曲には発酵作用もあり、酒の香りや風味に重要な役割を果たす。
品種には、麦曲、酒薬、紅曲などがあります。
コウジカビ、クモノスカビ、酵母の増殖により、液化や糖化の役割を果たすアミラーゼ酵素が生成されます。
酒薬(小曲)は、米粉、米ぬか、ふすまに麹の種を加え、適量の水を加え、よく混ぜて麹の粒を作り、それを育てて保湿します。
主な微生物はクモノスカビと酵母で、中国独自の菌株保存法です。
使用量は原料米の0.3〜0.6%で、米と混合し、酒中の微生物を適切な条件で増殖させ、糖化・発酵させて、甜酒酿(発酵もち米)、淋飯酒母、甜型黄酒、米白酒などを製造する。
紅曲は、米を浸漬して蒸し、ベニコウジカビの種子を加えて培養した紫紅色の米曲です。
福建省浙江省南部では醸造用の主な糖化剤、発酵剤となっている。
福建省古田県で生産される紅曲が有名です。

伝統的な醸造法では、「淋飯酒母」を使って精製した酵母の自然培養を行います。
醸造工程での発酵もろみの酸敗を防ぐため、機械化生産には純粋培養した酒母を使用します。

黄酒 - 维基百科,自由的百科全书

米酒の説明にある「個人の職人による製造」というのは家庭で自家醸造したものを指すのではないかと思う。

煎酒ブレンド

10〜11番の煎酒ブレンドは日本酒にはない概念。
絞ったばかりの熟成していない白色の原浆酒を煮詰めて、その際に揮発した蒸留アルコールを収集する。
煮詰まった黄酒に戻してブレンドする。
蒸留を目的としている訳ではなく、気化温度が水よりもエタノールの方が低いので飛んだものを液化して戻す、ということかと思う。

原浆酒

上の説明を見るに原浆酒とは「発酵が終わった醪を絞った液体」を指す模様。
日本酒でいうところの「原酒」だと思う。

日本酒の原酒は加水していないことを指すけど、
黄酒の原浆酒は上の工程を見るに煎酒ブレンドする前のものを指す。
煮詰める前のものを指すのか、原浆酒を煎酒した時に収集した蒸留アルコールを戻す前のものを指すのかは不明。

以下Google翻訳とDeepLを使いつつ手直し。

原浆酒とは、穀物を酒曲で発酵させて作られた原酒で、全くブレンドされていないものをいう。 1960年代以前は、伝統的な意味での中国酒は原酒というカテゴリーに属していた。
原浆酒について話す前に、まず「浆」の意味を理解する必要があります。「浆」は比較的濃い液体を指します。
原浆酒_百度百科

言葉の意味としては「ブレンドしていない濃い酒」のことらしい。
逆に、ブレンドしたものは「勾兑酒」と呼ぶ。
原浆酒や勾兑酒というのは主に白酒で使われる用語のようで黄酒に関する情報が出てこない。

白酒についての原浆酒と原酒は同じものなのか?については以下。
そのまんま翻訳すると原浆酒も原酒もどちらも「オリジナルワイン」と訳されてしまい非常に読みづらいけど。

原酒就是原浆酒吗?原酒可以喝吗? - 美酒网

酒母

酒母の種類

階層化するとこんな感じ。

  • 乳酸発酵系酒母
    • 浸麹酒母
      • 九醒春酒法
    • 酸漿酒母
      • 冬米明酒法
      • 醸白醪法
      • 酒麹秘方
    • 自然の生態系を利用する酒母培養法
      • 曝酒法
    • 淋飯酒母
  • 加酸系酒母

色々あって大変なので詳細は以下参照。

中国黄酒醸造における酒母造りの変遷

分類方法

酒母の手法の名前は、どのフェーズの特徴に重きを置いているかが端的に表されている。
pHを下げるフェーズ、糖化のフェーズ、酵母を培養するフェーズ、など。
そのため、手法が技術的に近いか遠いかは名前からは判断しづらい。

例えば、
浸麹酒母法は、麹を水に浸して乳酸菌とクモノスカビを生やすことに重きを置いた命名であり手法。
九醒春酒法は、米を9回に分けて米を入れる段仕込みに重きを置いた命名であり手法。

技術的な進化

煮沸すれば腐らないとか、低温で管理すれば雑菌が繁殖しないとか、そういうことが時代を経るごとに解明されていっている。
いくつかの酒母法を時系列順にピックアップ。
現代で使われている手法は、淋飯酒母、速醸複式発酵酒母、高温糖化酒母の3つ。

・浸麹酒母
漢代(紀元前206年-220年)から唐代(618年-907年)まで使われていた中国の最も古い酒母培養法。
生梗米で造った小麹と水で、乳酸菌とクモノスカビと酵母を培養する。
クモノスカビは生の穀物に生えやすいく糖化もアルコール発酵もするという性質を利用した原始的且つ最小構成での手法。

・酸漿を利用する酒母培養 - 冬米明酒法
「齊民要術」(530~550年頃の著作)に記されている手法。
精白した稲米とお湯と麹の粉末で、乳酸菌を生やす。
その乳酸菌の生えた液体(酸漿)に醸米を合わせて煮る。
煮沸消毒されたpHの低い液体が出来上がる。

・酸漿酒母法 - 酒麹秘方
栄代(960年-1279年)に生み出された手法。
水と精白した米で、低温で乳酸菌を生やす。
日本酒の菩提酛に近い。

・曝酒法
1116年頃。
現代黄酒淋飯酒母の原型と考えられている。
精米と酒薬と大麹で造る。
コウジカビが使われるようになった。
米が空気に触れる面積を広げて酵母をよく繁殖させるために「搭窩」という操作をする。

・淋飯酒母
現代でも紹興酒などで使われている手法。
精米と酒薬と麦麹で造る。
瓶に仕込む前に曲を作る手法。
この方法も「搭窩」を行う。
日本酒の山廃に近い。

・速醸複式発酵酒母
淋飯酒母を基にして市販乳酸の添加と酵母の純粋培養技術を取り入れて発展した酒母
日本酒の速醸酛に近い。

・高温糖化酒母
1970年代から機械化新式黄酒醸造法に使われて来た方法。
日本酒の高温糖化酛に近い。

原料

麹菌 / 麹

淋飯酒母の時代になって、酒薬にはクモノスカビ(リゾープス)を、麦麹にはコウジカビ(アスペルギルス)を使うようになった。
「日本酒はコウジカビ、紹興酒クモノスカビ」という説明はよく聞くし対比することでわかりやすさはあるけど現代の醸造方法の説明としては適切ではない。

酒薬にはリゾープスが使われる。

酒薬には根霉(Rhizopus),毛霉(mucor),酵母(天然酵母)が主要菌として存在し,
中国の酒(その2)醸造酒-黄酒について

麦麹にはアスペルギルスが使われる。

麦麹は挽き割りの小麦に水を混ぜ稲藁で包んでアスペルギルス草包麹(図1)にしたり,レンガのように固めたアスペルギルスの大麹である。
はじめは草包麹を使って来たが,近頃アスペルギルス大麹は製造の効率が高く,貯蔵性や運搬性がよく,使い方も便利なので,アスペルギルス大麹(白酒に使う大麹はリゾープスを主体とするものでちがう。)を使うようになっている。
中国黄酒醸造における酒母造りの変遷 - 1 淋飯酒母

ということは前回まとめた「麹と曲の違い」では以下のように書いたが誤りということになる。
麦曲にはコウジカビが使われているので、コウジカビを表す「曲」という字が使われているので学名に沿った名称が付いていて正しい。
しかしコウジカビが使われるようになった曝酒法以前から曲と呼ばれていたようなので曖昧さは残る。

中国では、コウジカビを表す「曲」という字を使ってクモノスカビを繁殖させたもの(麦曲など)を表していることになる。
ややこしい…。
麹と曲の違いと酒税法上の扱い - よしだ’s diary

大麹やら小麹やらって言葉が何を指すのかいまいちわからないが、きっちり統一されていないらしい。
なので文脈から察するしかない。

中国特有の酒である黄酒や白酒の生産に用いられる諸原料の中で麹についての名称,原料構成,製法は,相似点と相違点が入乱れ難解であるが,用語の全国的統一が中国各地の相互の技術交流とその促進のため急速に行なわれつつあるものと思う。
しかし,広大な国土と歴史的伝統の深さゆえに統一化も簡単ではなかろう.
中国の酒(その2)醸造酒-黄酒について

個人的な見解としては、紹興酒を作るにあたってはこんな感じかなと思う。合ってるかはわからん。
・小麹=生米にリゾープスが繁殖したもの。粉にして淋飯に振りかけるもの。酒薬。
・大麹=加熱した麦にアスペルギルスが繁殖したもの。原料として甕に入れるもの。麦曲。

酒薬

米粉とヤノギ蓼を混ぜたものにリゾープスと酵母を友麹させて丸めたもの。
リゾープスにはアルコール発酵の酵素もあるので酵母がいなくてもアルコール発酵はする。
酒薬は砕いて粉にして、淋飯した米に振りかけて更に繁殖させる。

酒薬は梗米粉にヤノギ蓼の粉を混ぜ,水で練り混ぜ,4cm位の餅状にしてから古い酒薬を友麹としてふりかけ,麹室でリゾープスと酵母を繁殖させた小麹である。
中国黄酒醸造における酒母造りの変遷 - 1 淋飯酒母

酒薬:酒薬は黄酒醸造に必須の原料で,一種の種麹と見るべきだろう。

酒薬には二種類ある。
i)白薬:白薬は米粉を辣蓼草の草汁でこね,これに古い酒薬を接種したもの。
ii)黒薬:黒薬は米粉に辣蓼草と数十種の中薬(杜仲・桂皮・洋草・良姜・草烏など)の浸出液を加えて成型したもの。

白薬は紹興酒醸造に使用され,黒薬は一搬に蒸留酒の製造過程で用いられる。
中国の酒(その2)醸造酒-黄酒について

酒醸、酒酿とも言う。
酒醸は地域によっては甘酒を指すこともある。

酒釀 - 维基百科,自由的百科全书

麦麹(麦曲)

繁殖する菌は黄麹菌、ケカビ、黒麹菌。
麦麹の製麹には3週間かかる。

黄麹霉ってAspergillus flavusのことらしいけど、黄麹菌と解釈して読み進めていいんだろうか…?
ちなみにAspergillus oryzaeは中国語で「米麴菌」。

麦麹の生産に要する日数は三星期つまり三週間で,繁殖する菌類は前述の記文のごとくだが,黄麹霉,毛霉と黒麹霉と他書に記されている。
中国の酒(その2)醸造酒-黄酒について

酒母

原料のサブ項目として酒母を入れるのはちょっと違うけど、原料のまとめとして便宜上ここに入れておく。

黄酒の酒母と日本酒の酒母は、製造工程の順序が同じではない。
カッコの優先度に注目。

・黄酒、淋飯酒母の場合。
(蒸米+酒薬)+浆水+麦曲

まずは冷やした蒸米にリゾープスと酵母を繁殖させる。
そこに浆水と麦曲を入れることで、pHを下げてアスペルギルスを加える。

・日本酒、速醸酛の場合。
水+米麹+蒸米+乳酸+酵母

順序は蔵によって若干違うかもしれないけど、だいたい同じタイミングで混ぜ合わせる。
目的としては、蒸米に麹の酵素を行き渡らせ糖化しやすくし、乳酸でpHを下げて酸で酵母が生きやすい環境を作る。

・日本酒、生酛/山廃の場合。
(水+米麹+蒸米)+酵母

まずは水+米麹+蒸米で、糖化を進めつつ乳酸菌を生やす。
乳酸菌がpHを下げて糖化酵素が糖度を上げて、酸と糖で酵母が生きやすい環境を作る。
環境が整ってから酵母を添加。

生酛の詳しい説明は以前書いた記事を参照。
生酛系酒母と天然醸造醤油の比較 - よしだ’s diary

まとめるとこうなる。
黄酒は、酵母を育ててからpHを下げる。
日本酒は、pHを下げてから酵母を育てる。

工程

淋飯酒と攤飯酒の違い

a 淋飯,灘飯は仕込の前,蒸米を一定の温度に冷却する操作を意味する。淋飯は冷水を注いで冷やし,灘飯は蒸米を竹薦にひろげ,冷気で灘鯨する。
b 淋飯酒は灘飯酒の酒母として用いる。
c 淋飯酒法は家庭的小規模の生産に適し,酒質は灘飯酒に及ばない。灘飯酒法は良質酒の大規模生産に向いている。
中国の酒(その2)醸造酒-黄酒について

以下の古越龍山のサイトの情報を表でまとめる。
紹興酒の伝統的な製法

淋飯酒 攤飯酒
浸漬時間 約一日 約1週間
蒸米の冷やし方 水をかけて冷却 竹敷にひろげて自然冷却
仕込み 大甕に淋飯と酒薬(酵母)を入れて酒母を造り、その後に水と麦麹を入れる 攤飯に水、麦麹、淋飯酒(酵母)を入れる
発酵期間 1次発酵3日間、2次発酵約2週間 1次発酵5日間(30度)、2次発酵80日間(室外)

淋飯酒は別名「酒娘」とも言う。
灘飯酒は別名「大飯酒」とも言う。
黄酒工艺_百度百科

酒母 / 醪

淋飯酒は攤飯酒の酒母と言える。
とするならば攤飯酒は醪と言える。

淋飯酒は、お酒として飲む場合は絞って殺菌する。(現在は売られていない)
攤飯酒の酒母として使う場合は絞らない。

そのまま発酵させ、絞って殺菌したものを「淋飯酒」と言う。現在の紹興酒酒母(母体)として用いられる淋飯酒は、絞ったり殺菌したりしない。アルコール度数は低い。以前はよく飲まれていたが、アルコール度数が低く、味も薄いので、現在は販売されていない。
紹興酒 - Wikipedia

淋飯酒を日本酒でいうと「山廃酒母」もしくは「山廃、酵母仕込、1段仕込み」と言ったところだろうか。(そんな日本酒が製品として存在するかは別として)
攤飯酒は「淋飯酒+1段」と言える。

浸漬 / 放冷

日本酒と比べると浸漬時間がだいぶ長い。
この理由は以下のいずれかではないかと思う。
うるち米ともち米の差。
・ビシャビシャの方がリゾープスを繁殖させるのに都合が良い
・最終的にグチャグチャに溶かして味を濃くするため。

淋飯よりも攤飯の方が浸漬時間が長いのは、水を使わずに冷却するために浸漬の段階で水分量を多くしておくためかと思われる。
蒸し時間や放冷後の水分量が同じだとした場合、淋飯の方が芯の固い蒸米になると思われる。

蒸米の冷やし方は、攤飯は日本酒で言うと路地放冷にあたる。

仕込み

攤飯酒に使う蒸米の放冷方法は、酒母用は淋飯、段仕込み用は攤飯、となる。
米の役割としては、酒母用の淋飯は麹米、段仕込み用の攤飯は掛米に近い。
そう考えると役割に応じた蒸米の硬さにするために合理的に浸漬時間と放冷方法を変えていることがわかる。

そして浸漬に使った水は、(一部を)浆水として仕込みに使う。

淋飯酒の仕込み配合

糯米 144kg
麦麹 22.5kg
酒薬 187.5g~250g
水 180kg
中国の酒(その2)醸造酒-黄酒について

酒薬の割合は、糯米量の0.13〜0.17%程度、総穀物量の0.11〜0.15%程度。
これは日本酒の酵母仕込の添えにおける酵母の割合よりも低い。
通常の酵母だと液体で比較しづらいし出典が見つからないので酵母仕込と比較する。

酵母仕込の場合の割合は、総米量の0.04〜0.06%程度。
3段仕込みのうち添えが総米の18%だと仮定すると、添えの米量の0.22〜0.33%程度。

仕込総米1t当たり400~600gの圧搾酵母(培養し固形化させた乾燥させていないもの)
酵母仕込 | 灘の酒用語集

水の割合は、総穀物量の107.98〜108.11%程度。
これは日本酒の酒母における汲水歩合よりも割合が低い。

日本酒の仕込み配合は以下参照。
仕込配合 | 灘の酒用語集

攤飯酒の仕込み配合

糯米 144kg
麦麹 22.5kg
酒母(淋飯酒) 5~8kg
水 112kg
漿水(浸米水) 84kg
中国の酒(その2)醸造酒-黄酒について

日本酒の仕込み配合と比較するために、まずは酒母(淋飯酒)に使われている穀物量を計算してみる。
酒母(淋飯酒)は仕込み配合から直接計算するとして、淋飯酒5~8kgに使われている穀物量は2.40〜3.84kg程度。
穀物のうち淋飯酒に使用される割合は1.42〜2.25%程度。
これを酒母歩合とすると、日本酒の酒母歩合よりも低い。

通常は、普通酒で7〜8%、吟醸酒で5〜6%ほど(普通速醸酒母の場合)
麹をたくさん使うと、どんな味の日本酒になる? - 「仕込み配合」を学ぶ | SAKE Street | プロも愛読の日本酒メディア

しかも日本酒の場合は3段仕込みのところ、攤飯酒では1段仕込み。
糖化酵素酵母は相当薄まるように思う。
そこで役に立つのが浆水と仕込み後の加熱。
浆水でpHの低い状態を保ち、30度まで温度を上げて一気に酵母を活性させているのかなと思う。

穀物量から酒薬の割合を計算してみる。
淋飯酒5~8kgに使われている酒薬は2.70〜5.77g程度。
穀物量に対する酒薬の割合は0.000016〜0.000021%程度。
これは酒母仕込みの総米に対する酵母の割合よりも低い。

汲水歩合は117.58〜133.22%程度。
日本酒の汲水歩合よりも低い。

汲水歩合は125~135%が標準である。吟醸酒などでは、140%以上に達することもある。
汲水歩合 | 灘の酒用語集

発酵期間

淋飯酒は、1次発酵3日間、2次発酵約2週間。
攤飯酒は、1次発酵5日間(30度)、2次発酵80日間(室外)。

淋飯酒を山廃酒母、攤飯酒を醪と捉えた場合、
酒母期間は日本酒よりも短く、醪期間は日本酒よりも長い。

この1次発酵2次発酵というのは古越龍山のサイトでの表記だが、最初に書いた前発酵と後発酵と同じ意味と思われる。
室外が30度より高いのか低いのかよくわからないが、おそらく室外の方が寒いんだろうと思う。
攤飯酒1次発酵の30度というのは日本酒の温度管理よりも高いが、日本酒でいうところの段仕込みの添えから留めまでの期間で温度を高くするのと同じ理由かと思う。

日本酒との比較まとめ

仕込み配合の比較。

紹興酒 日本酒 比較
淋飯酒 酵母仕込の添え
酒薬(酵母)の割合 糯米量の0.13〜0.17%
穀物量の0.11〜0.15%
添えの米量の0.22〜0.33%
汲水歩合 穀物量の107.98〜108.11% 130%前後(要出典)
淋飯酒 酒母
麹歩合 13.51% 33.57%
攤飯酒 酵母仕込の留め
酒薬(酵母)の割合 穀物量の0.000016〜0.000021% 総米量の0.04〜0.06%
攤飯酒
酒母歩合 1.42〜2.25% 5〜8%
汲水歩合 117.58〜133.22% 125~135%
吟醸酒 140%
麹歩合 13.51% 16.87%

発酵期間の比較。

紹興酒 日本酒 比較
淋飯酒 山廃酒母
発酵日数 1次発酵3日間
2次発酵約2週間
約30日
攤飯酒
発酵日数 1次発酵5日間(30度)
2次発酵80日間(室外)
添仲留4〜5日
醪日数20〜30日

あとがき

日本酒醸造をある程度知る身としては、手法が定着した技術的背景を含め概ね紹興酒の作り方は理解できたかなと思う。
正直長過ぎて疲れたので、今後気になったことや漏れがあった場合は後日書こうと思う。

日本酒醸造についても言えることだけど、伝統的(乳酸や酵母無添加、無農薬、杉樽を使う等)だから良いものだとか、工業的(速醸や高温糖化酛、アル添等)だから悪いものだというものではない。
消費者が言えることなんて所詮は「自分にとって好きか嫌いか」という主観だけ。
作る側は何かしらの意図や目的を持って技術や手法を選択しているので、そこに対しての理解と共感なくして外野が甲乙を付けることは出来ない。

RubyのOpenSSLライブラリでOpenSSH形式のRSA秘密鍵を扱えるように鍵をパースしてビルドする

どうも、公開鍵暗号方式大好き芸人です。
かれこれ3年くらい前だけど、ssh-keygenが出力する秘密鍵のデフォルト形式が変わってOpenSSLライブラリで読み込めなくなった。
それを解消するべく、秘密鍵をパースしてOpenSSLライブラリで読み込める形でビルドする。

事前知識

まずはおさらいから。
手元のMacに入ってるOpenSSH_8.1p1を前提に。

KeyFormat

ファイル形式。
これらの形式問わず拡張子がどれも.pemだったりするのでなんて呼べば良いのかややこしい。

鍵生成は以下。
-mオプションでファイル形式を指定する。

% ssh-keygen -m {keyformat}

鍵のファイル形式変換は以下。
-mオプションで変換後のファイル形式を指定する。
鍵は上書きされる。

% ssh-keygen -p -m {keyformat} -f private.pem

対応してる形式は以下。

The supported key formats are: ``RFC4716'' (RFC 4716/SSH2 public or private key), ``PKCS8'' (PKCS8 public or private key) or ``PEM'' (PEM public key).

・RFC4716 / SSH2
OpenSSH 7.8以降のデフォルトはこれになった。
これがOpenSSLライブラリでは開けなくて困る。

正式名称なのかはわからないけどOpenSSH形式と言ったらこれ。
ちなみにRFC4716というのは公開鍵ファイル形式の定義なので秘密鍵に対して言うのは違うんじゃないかなと思うけど詳しいことはよく知らない。

見た目。

-----BEGIN OPENSSH PRIVATE KEY-----
〜 Base64文字列(横幅70文字で改行) 〜
-----END OPENSSH PRIVATE KEY-----

RFC 4716 - The Secure Shell (SSH) Public Key File Format

・PEM
OpenSSH 7.8より前のデフォルトはこれだった。
これならOpenSSLライブラリで普通に開ける。

見た目。

-----BEGIN RSA PRIVATE KEY-----
〜 Base64文字列(横幅64文字で改行) 〜
-----END RSA PRIVATE KEY-----

PKCS#8
今回の話題とはあまり関係ないけど一応書くだけ書いておく。

見た目。

-----BEGIN PRIVATE KEY-----
〜 Base64文字列(横幅64文字で改行) 〜
-----END PRIVATE KEY-----
KeyType

暗号方式。
この方式によってssh-keygenではデフォルトの出力ファイル名が、~/.ssh/id_{keytype}になるのでファイル名に関してはKeyFormatの拡張子問題よりもわかりやすい。
ただしKeyTypeを問わずBEGINほげほげの行はどれも同じになるのでわかりづらい。
ssh-keygenだとOpenSSH形式、openssl genpkeyだとPKCS#8形式で出力される。
なのでopenssl asn1parseとかして鍵構造のパースをしないKeyTypeはわからない。(鍵の長さからなんとなく察することも出来なくはないけど特殊な訓練が必要)

対応してる方式は以下。

-t dsa | ecdsa | ed25519 | rsa
Specifies the type of key to create. The possible values are ``dsa'', ``ecdsa'', ``ed25519'', or ``rsa''.

強度は、ed25519 > rsa > ecdsa > dsaだと思う。
デフォルトはrsa
ed25519は現代最強っぽい。
ecdsaとdsaをわざわざ新規に使う人は現代にはいないのではなかろうか。

詳しくはこちら。
SSHの公開鍵暗号には「RSA」「DSA」「ECDSA」「EdDSA」のどれを使えばよいのか? - GIGAZINE

ed25519で出来ることは署名のみで、暗号化が出来ない。
個人的には~/.ssh/id_rsaを暗号化するための鍵として使っているので、それが理由でed25519に移行出来ずにいる。
まぁSSHとかの署名はed25519で暗号化用はRSAと、鍵を使い分ければいいといえばそれだけの話なのだけれども。

やりたいこと

さてここから本題。

Yamlファイルの特定の要素を暗号化する、結構昔に作ったGemの利便性を上げるために。
そもそもこれは何なのかっていうと、 ~/.ssh/id_rsa を鍵として暗号化/復号化を行うライブラリ。
Workspace内で鍵生成するのが面倒だったり、gitignoreに鍵を指定し忘れて誤コミットしてしまったり、そういうのを解消するのに役立つ。

GitHub - yoshida-eth0/ruby-secure_conf

ssh-keygenが生成する秘密鍵のデフォルトKeyFormatがOpenSSH形式に変更されたことによってこのライブラリが使えない状況が起こっていた。
鍵の扱いを楽にするライブラリを使う人なんて、ssh-keygenでわざわざKeyFormatを指定してPEM形式で鍵生成なんてしない訳で。
だからもうこっちでOpenSSH形式の鍵に対応してしまおう、と。

要件としてはこんな。
・OpenSSH形式の秘密鍵を使いたい。
ssh-keygenで変換しちゃうのが楽だとは思うけど、popenしたくない。
・変換するために鍵を不用意にコピーしたりファイルシステムに書き込みしたくない。

ということでRubyで自力でバイナリ弄ってOpenSSH形式の秘密鍵をパースしてPEM形式にビルドすることに。

やった

秘密鍵をPEM形式に変換してOpenSSLライブラリで読み込めるようにした。
secure_conf v2.0.0で、OpenSSH形式のRSA秘密鍵に対応済み。
RSA以外に対応したい場合、SecureConf::OpenSSH::Keytype 以下にクラス追加してpullreqください。

特に面白みのある解説はないので後述の参考資料を。
OpenSSH形式からPEM形式に変換する処理は以下。

ruby-secure_conf/openssh.rb at master · yoshida-eth0/ruby-secure_conf · GitHub

あとがき

こういう事象で困っている、原因と事前知識を説明、こうしたい、やりました、リリースしました、ソースどうぞ、解説は他所のサイトで…。
という中身があるのかないのかわからない記事になってしまった。

麹と曲の違いと酒税法上の扱い

麹=曲として翻訳して良いものか、漢字の歴史、酒税法上はどうなってるのか、とかそういう話。

事の発端

曲を日本語で言うと麹

紹興酒について調べると、こういう表現がされている。

「曲(きょく)」とは日本でいう麹を指します。しかし、厳密には曲と麹とは全く別物と考えた方が良いでしょう。簡単に言うと、菌が異なるからです。
紹興酒の原料を徹底解説!6つの源で生み出される個性

麹を中国語で言うと曲

北海道の田中酒造株式会社では、中国語訳で麹室が「酒曲室」と訳されていた。

はたして「麹=曲」なのか

麹と曲は相互に訳されている。
しかし別物。
では安易に相互に訳して良いものなのだろうか…?

麹と曲

漢字の歴史

Wikipedia(中国語版)を参考にする。

曲の項目を見ると、曖昧さ回避で麴にリンクが貼られている。

・麴/麯(qū / ㄑㄩˉ)
 ・麴,是釀酒時使用的酒種。如大麹、小麴等
曲 - 维基百科,自由的百科全书

麴の項目を見ると、麴霉屬(コウジカビ)も根霉屬(クモノスカビ)も種麹として挙げられている。

麴种
发酵工业中所用的微生物主要有以下种和属:
〜略〜
・麴霉屬
〜略〜
・根霉屬
〜略〜
麴 - 维基百科,自由的百科全书

麴の項目の参考資料を見るとこう書いてある。

繁体字原写作“麴”,然“麴”字后因《简化字总表》合并简化而改成了“曲”字。自《通用规范汉字表》于2013年颁布起(“麹”于三级字表,序号7748),已将“麴”字恢复并类推简化成“麹”字,故大陆最新规范以“麹”为“麴”的简体正写,“酒曲”、“米曲”、“盐曲”等写法则是此字表颁布前的旧规范。
麴 - 维基百科,自由的百科全书

Google翻訳してそれっぽく手直し。

繁体字は元々「麴」と書かれていましたが、「簡体字一般表」の統合と簡略化により、「麴」は「曲」に変更されました。
2013年に「通用規範漢字表」が公布されて以来(第3レベルの通用規範漢字表の「麹」、シリアル番号7748)、類推により「麴」という単語が復元され、「麹」に簡略化されました。
中国本土の最新規格は「麹」を使用「麴」の簡体字で表記されており、「酒曲」「米曲」「塩曲」の表記法は、この単語リストが公布される前の旧規格です。

漢字の歴史を見るに「麴」「麯」「麹」「曲」はすべて同じ意味の漢字。
「麴」「麯」「曲」は昔の表記で、2013年以降は「麹」が使われるようになったよ、ってことらしい。
とはいえ、中国でも日本でも紹興酒界隈では今(2022年現在)も「曲」が使われ続けている訳で…。

分類学上の定義

Wikipedia(日本語版と中国語版)を参考にする。

コウジカビ。

英語:Fungi Ascomycota Eurotiomycetes Eurotiales Aspergillaceae Aspergillus
日本語:菌界 子嚢菌門 ユーロチウム菌綱 ユーロチウム目 マユハキタケ科 コウジカビ属
中国語:真菌界 子囊菌门 散囊菌纲 散囊菌目 曲菌科 曲霉属
麴黴屬 - 维基百科,自由的百科全书

クモノスカビ。

英語:Fungi Mucoromycota Mucorales Mucoraceae Rhizopus
日本語:菌界 ケカビ亜門 ケカビ目 クモノスカビ科 クモノスカビ属
中国語:真菌界 毛霉门 毛霉目 毛霉科 根霉属
根黴 - 维基百科,自由的百科全书

中文学名を見ると、曲=マユハキタケ科=Aspergillaceaeであることがわかる。
中国では、コウジカビを表す「曲」という字を使ってクモノスカビを繁殖させたもの(麦曲など)を表していることになる。
ややこしい…。

使われ方の実情

快懂百科には漢字の旧規格とされている「酒曲」「米曲」「盐曲」の項目がある。(「酒麹」「米麹」「盐麹」の項目はない)
酒曲 - 快懂百科
米曲 - 快懂百科
盐曲 - 快懂百科

日本の魚沼醸造(マルコメ株式会社)の中国語版サイトを見るとこう書いてある。

酒曲在日文中写成“麹”,这个汉字是从中国传入日本的,是指用米、麦、大豆等谷物制成的所有酒曲。
米曲与糀甘酒(米曲甘酒) 鱼沼酿造——酿造自然,创造生命。

翻訳。

酒曲は日本語で「麹」と書かれています。これは、中国から日本に紹介された漢字で、米、小麦、大豆などの穀物から作られたすべての酒曲を指します。

中国では今でも一般的に「曲」が使われている。
「麹」は日本で使われている漢字という雰囲気。

コウジカビ以外の菌を使っても清酒を名乗れるのか?

クモノスカビ

クモノスカビを使って米曲を作って米を糖化させてアルコール発酵をした醸造酒は、日本の酒税法上は「清酒」なのか「その他の醸造酒」なのか。
通念的に大きな分類分けをするならば中国の黄酒(穀物を原料とした醸造酒)にあたりそうな気はする。

で、ちょっと調べたら新政がクモノスカビを使ってお酒を作っていた。
2021年の頒布会の7月分「C-Type」というものがクモノスカビを使ったものらしい。

クモノスカビにもさまざまなタイプがあり、今回使用したのは激しく酸っぱい有機酸(フマル酸)を生成するタイプの「Rhizopus delemar」を用いたとのことでした。
クモノスカビは蒸した穀物には生えにくいということから今回新政さんでは洗って水を吸わせた「生米」を使い麹を製造しています。
この麹単体ではとうてい米が溶けないため、適度に黄麹と混ぜて醸造し、なんとか本作品が完成となった。
【飲み比べ】新政頒布会 2021【7月分】No.6「K-Type」「C-Type」その味わいは? | ねこと日本酒

裏ラベルを見るにクモノスカビを使っていても原料は「米麹」とされるらしい。
よって品目は「日本酒」となり、酒税法上「清酒」として扱われている。

ということは、中国で米と米曲を使ってカラメルを添加しない醸造酒が作られた場合、中国では「黄酒」として扱われ、日本では酒税法上「清酒(SAKE)」として流通することになる。

きのこ

酒税法上はアミラーゼを生産する生物は全般「麹菌」という扱いなんだろうか。
コウジカビとクモノスカビは分類学的には門から違うから、菌界に属するアミラーゼを生産する生物は麹菌と呼べるのかもしれん。

ということはきのこの菌も麹菌として扱われる…?
きのこの菌から麹を作ってお酒作ったら、グアニル酸を含む旨味バチバチ清酒が出来るのでは…?
と思って調べてみたら、きのこの菌を使って味醂や甘酒を作ることに成功している研究者がいた。

耐熱性アミラーゼを生産するきのこ類を選抜し、甘酒の試醸を行ったところ、市販甘酒よりも高い糖度の甘酒を製造することが出来た。
本間 裕人 (Hiroto Homma) - きのこ類を用いて発酵させた新規甘酒様発酵飲料の開発 - 講演・口頭発表等 - researchmap

本研究において,きのこ類にはアルコール耐性,耐塩性,および酸耐性を有するアミラーゼを生産する菌が複数存在することが明らかになった。
また,それら菌の中には味醂の製造に利用可能な菌の存在も確認できた。
きのこ類を用いた発酵食品の製造~アルコール耐性アミラーゼ生産株の探索と味献の製造~

アミラーゼもプロテアーゼも生産して、アルコール耐性も耐塩性も酸耐性もあるなら、酒でも味噌でも醤油でもなんでも作れてしまいそうな気がする。
恐るべしきのこ。

まとめ

中国での使われ方。
・漢字としては「麴」「麯」「麹」「曲」は同じ意味。
分類学上の中文学名としては、曲はコウジカビを指す。
・一般的に曲と言えばクモノスカビを繁殖させたもの。
・日本のコウジカビを繁殖させた麹を中国語に翻訳する時は「曲」が使われる。
・広義の意味ではコウジカビを繁殖させたものもクモノスカビを繁殖させたものも曲。
・明示的に「麹」と書いたら日本のコウジカビを繁殖させたものを指しそうなニュアンスがある。

日本での使われ方。
・一般的に麹と言えばコウジカビを繁殖させたもの。
・中国のクモノスカビを繁殖させた曲を日本語に翻訳する時は「麹」が使われる。
・広義の意味ではコウジカビを繁殖させたものもクモノスカビを繁殖させたものも麹。
・明示的に「曲」と書いたら中国のクモノスカビを繁殖させたものを指す。
クモノスカビを使っても酒税法上は清酒を名乗れる。
・きのこの菌を使っても酒税法上は清酒を名乗れるかも?(教えて詳しい人🙏)

麹と曲の慣習的な使い分け。
日本でも中国でも慣習としてこういう使い分けがされているのかなという気がする。
事の発端で引用した紹興酒での説明と同じ結論に至った。
麹:コウジカビを繁殖させたもの。
曲:クモノスカビを繁殖させたもの。

中国でクモノスカビを繁殖させたものを曲という字で表していることだけ違和感が残る。
学名に反した名称というのはちょっとアレだけど、中国で慣習的にそうなっているなら納得するしかないとは思う。
もしかしたら調べきれてないだけで分類学上の再分類とかがあったのかもしれないし。

日本酒造りは儲かるのか

総米量とかがわかれば蔵の収支が大体わかるのでは?と思い計算してみることに。
造り以外にあんまり興味がなかったから、酒造教本も清酒製造技術も販売に関わるページはきれいなままだった、初めて開いたかもしれん。

計算方法

基本的な計算方法は以下を参照。
これをベースに計算してみる。
前提として、これに出てこない収支には触れないことにする。

日本酒の事業構造について書いてみた #1|酒井優太 / HINEMOS|note

計算結果

まずは結果を。
細かい話は後述の製造計画にて。
f:id:eth0jp:20220212162715p:plain

製造計画

醸造と販売の設計

面倒なので1種類のみをすべて1升瓶に詰めて販売しすべて売り切る場合として計算。
本来であれば吸水歩合ではなく、掛米は放冷後の歩合、麹米は出麹歩合を、麹歩合で合算するべきだけど面倒なのでキリ良くまとめて30%とした。
容器移動、追水、蒸発、分析、アル添、加水などでの増減は面倒なので計算しない。
醸造量は最低製造量(60kl)となるように設計。

・総米(kg) 25,000
・吸水歩合 30%
・汲水歩合 140%
・粕歩合 30%
・ボトル容量(L) 1.8
・ボトル小売価格 ¥2,500

醸造予測

上記仕込みで醸造量は60klとなり、1升瓶33,333本になる。
ちなみに酒造教本(第8章 製造計画)には本醸造60kl作るには白米26tが必要と書いてある。

支出

原価はよくわからないのでそのまんま鵜呑みにした。
人件費、その他の原料費(種麹、酵素剤、酵母、乳酸、水質調整剤、醸造アルコールなど)、ランニングコスト(重油代、電気代、設備投資や修繕費など)はここでは含んでいない。
それらや今回触れない収支はすべて粗利と合算。

・米(1俵60kgあたり) ¥14,500
・米以外の資材(1本あたり) ¥105
・酒税(1KLあたり) ¥110,000
・消費税 10%
・卸売マージン 13%
・小売マージン 23%

2022年現在の酒税(1klあたり)は、清酒は11万円、その他の醸造酒は12万円らしい。
昔からある清酒蔵よりも、WAK○ZEとかの方が税率が高い。
新参に厳しい…。

f:id:eth0jp:20220212162740p:plain
酒税法等の改正のあらまし

収支予測

右上のグラフは、小売価格を100%として何にお金がかかっているのか内訳。
右下のグラフは、参考にしたNoteの記事で出てくるグラフに寄せた。

儲かっているのか

儲かってるかはさておき、売れる算段があるなら人を増やす、売れないなら家族経営に収束する、というのが現状なのではなかろうか。
お店に並ぶお酒1本の内訳を知るならまだしも、醸造量から収支を算出するってのはちょっと生々しい感じは否めないので、まぁこの辺で。

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

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

日本酒の場合、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がコンパイルできないことにはどうしようもないのでどうにかしたいところ。