花や球根、木の葉など、一般的に食材として認知されていないものの、実は意外と食べているというので、そういうのを挙げていくコーナー。
食べられる花
ブロッコリー、カリフラワー、菜花などアブラナ科の花が食材として利用されることが多い。
また開花前、蕾の状態を食べるものが多い。
| 名称 | 食用例 | 備考 | 
|---|---|---|
| ブロッコリー | 温野菜 | 蕾 | 
| カリフラワー | 温野菜 | 蕾 | 
| ミョウガ | 漬物 | 蕾 | 
| 菜花 | おひたし | 蕾 | 
| 桜花 | 桜茶 | - | 
| 食用菊 | お刺身 | - | 
食べられる球根
私は中学生のときに教師から「食べられる球根なんてありません」と指摘され、この時、食べれる球根がパッと思いつかず反論できなかったのが、今日に至るまでの痛恨の痛みとして残っている。
| 名称 | 食用例 | 
|---|---|
| 百合根 | 茶碗蒸し | 
| 玉ねぎ | サラダ、炒め物、鍋など | 
| にんにく | 炒め物 | 
| ラッキョウ | 漬物 | 
全然関係ないが仕事などの日常でも、こういった具体例が思い浮かばず反論できないことがしばしばあり、理論武装力の低さを感じることがよくある。
食べられる木の葉
行事のときに食べることが多そうな物が多い気がする?
| 名称 | 食用例 | 
|---|---|
| 桜葉 | 桜餅 | 
| 木の芽 | 木の芽和え | 
食べられる樹皮
意外と身近にある樹皮
| 名称 | 食用例 | 
|---|---|
| シナモン | 香辛料 | 
シナモンというとスティックを連想する人もいると思うが、これを粉々にすると香辛料になり、この状態では樹皮として食べることができる。シナモンそのものはセイロンニッケイの幹の樹皮らしい。
ちなみにニッキ(肉桂)はシナモンの仲間で、こちらシナニッケイの根の皮から取れる油を利用してるらしい。
このコマンドをcronとかで回し続けてれば行けそう
事前準備
Value-Domainのコンパネから登録対象のDNSレコードにaaaaレコードを足しておく。
コマンド
ipaddr=$(ip a | grep 'scope global temporary dynamic' | perl -ne '/inet6 ([^\/]+)/; print $1')
echo 'https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=<ドメイン>&p=<パスワード>&h=<ホスト名>&i='$ipaddr
凡例
| 項目 | 値 | 
|---|---|
| ドメイン | example.comみたいなルートドメイン | 
| パスワード | Value-DomainのDDNSパスワード | 
| ホスト名 | sub.example.comのsubの部分 | 
参考
もち麦玄米ご飯 8食分のベースレシピ
材料
| 材料 | 分量 | 重量目安 | 備考 | 原産地 | 
|---|---|---|---|---|
| あきたこまち 無洗米 | 1.75合 | 268g | 秋田県産あきたこまち 単一原料米 | 秋田県 | 
| もち麦 | 120ml | 114g | ふくさきのもちむぎ | 兵庫県福崎町 | 
| 水 | 600ml | 600g | 神戸市水道局の水 | 琵琶湖と布引 | 
手順
各穀物の割合
| 材料 | 割合 | 
|---|---|
| あきたこまち | 70.15% | 
| もち麦 | 29.84% | 
備考
炊飯器は象印の一番安い三合炊きのIH炊飯器ならたぶんどれも同じだと思う。過去に二機種使っているが特に変わりはなかった。
取り分け容器にはニトリの「ごはん保存容器エアータイト」を使っている。これの容器重量は蓋なしで15-16g。
麦飯に慣れていない場合、半年間くらいは胃腸の調子に支障があると思う。
材料を買える場所
2025/03現在、個人的に把握している購入場所
「ふくさきのもちむぎ」は「脱力系八百屋 ちょっとどころじゃないです」で購入が可能。
ChromeからEdgeに乗り換えて一年半くらい経ったので、個人的にEdgeとChromeに思うところの比較をしてみた。これは別に優劣をつけるものではなく単なる感想。
| 項目 | Edge | Chrome | 
|---|---|---|
| Ad Block | ✅ | ❌ | 
| ダウンロード結果の保持 | ✅ | ❌ | 
| マウスジェスチャ | ✅ | ❌ | 
| UIがころころ変わらない | ✅ | ❌ | 
| クライアント領域の広さ | ✅ | ❌ | 
| Chrome Webストアから消えた拡張の維持 | ✅ | ❌ | 
| 他端末とのタブ共有 | ✅ | ✅ | 
| 閉じたウィンドウを開き直す | ✅ | ⚠️ | 
| 垂直タブバー | ✅ | ⚠️ | 
| 設定同期 | ⚠️ | ✅ | 
| 設定の単純さ | ❌ | ✅ | 
| ブラウザベンダーの広告 | ❌ | ✅ | 
Ad Block
Edgeには標準でAd Blockが導入されており、Chromeのようにサードパーティ製の胡散臭い拡張機能に依存する必要がない。
参考として個人的にはChromeの場合、uBlock Originを広告ブロッカーとして利用していた。これはAd Blockよりも強力だと思う。
ダウンロード結果の保持
Edgeではダウンロード結果を保持することができる。以下の画像の右側で「ダウンロード」と出ている垂直バーだ。
これが出ているとzipなどの書庫をダウンロードしたときに展開してフォルダに遷移がスムーズにできて便利だし、ダウンロード完了直後にアクション出来なかった場合も対応しやすいので非常に助かる。
Chromeにはこの機能がないのでダウンロードが完了した直後にクリックしようとしてもできないことがあるし、仮にできても展開先を開くには再表示しないとならず手間だ。ダウンロード中にクリックしておくとアクションの予約もできるが、上手く動かないことも多い。これは多分タイムアウトがかかってるのだと思う。
マウスジェスチャ
Edgeには標準でマウスジェスチャが導入されており、サードパーティ製の拡張機能に依存する必要がない。
ChromeのマウスジェスチャといえばcrxMouse Chrome™ Gesturesが有名だと思うが、この拡張機能は過去に公開停止されており、個人的にあまり信頼していない。
Edge標準のマウスジェスチャはcrxMouseと比べると貧弱だが、一般的なパターンと、必要最低限の割り当てができ、特定Webサイトでは機能しないようにするブロックリストもあるため、十分使える。何よりファーストパーティなので安心しやすい。
UIがころころ変わらない
Chromeはコンテキストメニューがスクロール方式になったり、ブックマークバーや各種メニューのボタンがある日突如、肥大化したり、ユーザーを使って大胆なABテストをしてくるので使いづらく感じることがしばしばあった。
Edgeを使っていて、このような破壊的変更を感じることはなく、全体的に落ち着いている印象だ。これは質実剛健なマイクロソフトと、柔軟に対応するGoogleとの会社文化の差としてみることもできそうだ。
クライアント領域の広さ
左がEdge、右がChromeの画面上部のUI部分だが、Edgeのほうが少しだけUIが狭い分、クライアント領域が広い。
Chrome Webストアから消えた拡張の維持
EdgeではChrome Webストアから拡張機能が消えても維持されるが、Chromeだと強制的に削除される。強制的に削除されると設定ごと吹き飛ぶため、Tampermonkeyのようにユーザー定義が大きな拡張はバックアップがないとマニュアルで再導入するのも厳しい。
但しEdgeであってもインストール元が消えているため、ブラウザの再インストール時には消えると思われる。
他端末とのタブ共有
Edgeを利用している他の端末が現在開いているタブを共有できる。これは最後に開いていた状態を持っているため、電源が落ちている端末のタブも見れる。
この機能は端末を多く持っている人ほど恩恵があるだろう。Chromeにも同様の機能があるようだが、内容は確認していない。
閉じたウィンドウを開き直す
Edgeでは誤ってウィンドウを閉じたときでも、閉じたウィンドウを復元できる機能がある。
最近閉じた項目にウィンドウが閉じた履歴が出るので、ここから復帰できる。
もちろん閉じたウィンドウの中身は展開でき、何を閉じたかも確認できる。
Chromeにもあるが、履歴に存在せずショートカットキーで出しづらいのと、何を閉じたのかが一目でわからないのが微妙に感じる。
垂直タブバー
Edgeには垂直タブバーがあり、多数のタブを開いているときに便利なケースがある。しかし個人的にはChromeのタブリストの方が必要な時にだけ画面上に被さるように出てくるため使いやすいと感じている。Edgeのは画面が狭くなるし、タブバーを開いている間は本来のタブが消えてしまうので操作性が悪い。
Edgeの垂直タブバー
垂直タブバーを表示すると元々のタブが消え操作性が変わってしまう上、能動的に非表示にしないと画面を占有して邪魔なので私はあまり好きではない。
Chromeの同等機能
Edgeと比べてUIに破壊的変化がなく、フォーカスを失えば勝手に消えるので便利だ。
設定同期
Edgeの設定同期には問題がある。それは設定の大半が同期されないことだ。Edgeにはマイクロソフトによるお節介機能が多くあり、これを無効化するための設定が多くあるのだが、これらは全く同期されない。無数に設定がある割に不親切だ。マイクロソフトの広告系の機能ならまだしも、マウスジェスチャすら同期されないのはいくら何でも酷いと思う。
一方でChromeは、設定画面にあるものであれば、ほとんどすべての設定が同期される。標準ダウンロード方式以外恐らくすべて同期されているのではなかろうか?
設定の単純さ
Edgeにはマイクロソフトの利益に繋がる広告機能や、Copilotなどの本質的にブラウザとして不要な機能が山のようにあり、これらの有効無効を切り替える設定が数多くある。これは多くの人間にとっては複雑なことだと思う。
一方でChromeの設定も多いとはいえ、Edgeと比べると単純だ。設定することもさほどないので導入が圧倒的に楽である。
ブラウザベンダーの広告
Edgeはひたすらマイクロソフトのサービスに誘導するように色々と邪魔くさく仕向けてくるが、Chromeではそんなことはない。
SDXLでキャラクターLoraをいい感じに作る方法。学習には教師画像のみを用いる。
必要なもの
- AUTOMATIC1111/stable-diffusion-webui
- Kohya_LoRA_param_GUI
- ベースとなるSDXLチェックポイントモデル
やり方
1. 学習用の素材となる画像を集める
学習画像の枚数・パターン
多ければ多いほどいいが、多すぎると学習に時間がかかりすぎるので、ある程度選別する。
例えば3Dキャラクターを学習する場合は、1ポーズ当たり正面・斜め前・横・斜め後ろ・真後ろの流れで一周八面の画像をいくつかのポーズ分作っておくと再現性が高くなる。
奇麗な画像があまりとれない場合は、極力そのキャラクターの特徴が出ている画像を数枚集める。4枚とかでもいい。1枚は試したことないのでどうなるのか不明。
学習素材となる画像の選定
学習元画像には背景が入っていてもいいが、そのキャラクターだけが映り込んでいるものを選ぶ。ほかのキャラクターが入っていたらトリミングするなどで消したほうが良い。
2. 学習用の素材画像にタグを打つ
- AUTOMATIC1111を起動し、Tagger→Batch from directoryを開く
- Additional tagsにキャラクターを出すためのトリガーワードを設定
- 既存のタグと衝突するとぶれるはずなので、一意な名前にする。例えば今井リサならimlsみたいに、とりあえず自分で識別できそうな適当な文字列を当てておく
 
- 既存のタグと衝突するとぶれるはずなので、一意な名前にする。例えば今井リサなら
3. タグファイルを整理する
前項で1画像ファイルに対して1タグファイルができているので、このファイルの内容を整理していく。
まずはゴミワードを探して取り除く。大抵複数ファイルに跨っているので一括置換するのがいい。
次に固定要素を取り除く。例えば髪型や髪の色、瞳の色、アクセサリーの特徴みたいな、何があっても変わらない部分は消す。例えば紫目のキャラクターならpurple eyesを、ヘアアクセサリが特徴的なキャラクターであればhair ornamentを消すといった感じだ。残したい特徴をタグから取り除くことで、その特徴が固定化されやすくなる。
逆に変動させたい部分、逆に服装やポーズ、体の向き、メガネの有無など、変動しうる場所は残しておく。そうすると、いい感じに特徴をとらえたキャラクターが出やすくなる上、プロンプトにそれらを含めなくても出るようになるためトークンの節約にもなる。
但し、この細工は教師画像が少ないとあまり効果がない気がしている。
参考:LoRA/学習方法 - としあきdiffusion Wiki*
4. 学習とモデルの作成
以下のコードをNew Preset.xmloraとか適当な名前で保存し、Kohya_LoRA_param_GUIで読み込み、チェックポイントモデルと教師画像、モデルの出力先を適当に指定して実行するとモデルが生成される。
体感ではponyDiffusionV6XL_v6StartWithThisOne.safetensorsが無難な気がしている。
<?xml version="1.0" encoding="utf-8"?>
<TrainParams xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ModelPath></ModelPath>
  <TrainImagePath></TrainImagePath>
  <OutputPath></OutputPath>
  <TensorBoardLogPath />
  <LoraModelPath />
  <LearningRate>0.0001</LearningRate>
  <Resolution>1024</Resolution>
  <BatchSize>2</BatchSize>
  <Epochs>8</Epochs>
  <NetworkDim>8</NetworkDim>
  <NetworkAlpha>3</NetworkAlpha>
  <RegImagePath />
  <ShuffleCaptions>true</ShuffleCaptions>
  <KeepTokenCount>0</KeepTokenCount>
  <SaveEveryNEpochs>0</SaveEveryNEpochs>
  <OptimizerType>AdamW8bit</OptimizerType>
  <WarmupSteps>250</WarmupSteps>
  <OutputName></OutputName>
  <Comment />
  <CpuThreads>1</CpuThreads>
  <NoBucketUpscaling>false</NoBucketUpscaling>
  <UseWarmupInit>false</UseWarmupInit>
  <ClipSkip>2</ClipSkip>
  <Seed>42</Seed>
  <SavePrecision>fp16</SavePrecision>
  <SchedulerType>cosine_with_restarts</SchedulerType>
  <MinBucketResolution>320</MinBucketResolution>
  <MaxBucketResolution>1536</MaxBucketResolution>
  <CaptionFileExtension>.txt</CaptionFileExtension>
  <VAEPath />
  <UnetLR>-1</UnetLR>
  <TextEncoderLR>-1</TextEncoderLR>
  <NoiseOffset>0</NoiseOffset>
  <Momentum>0.9</Momentum>
  <advancedTrainType>UNetOnly</advancedTrainType>
  <CrossAttenType>xformers</CrossAttenType>
  <UseGradient>true</UseGradient>
  <UseWeightedCaptions>false</UseWeightedCaptions>
  <AdaptiveNoiseScale>0</AdaptiveNoiseScale>
  <MinSNRGamma>0</MinSNRGamma>
  <MultiresNoiseIterations>0</MultiresNoiseIterations>
  <MultiresNoiseDiscount>0</MultiresNoiseDiscount>
  <NetworkDropout>0</NetworkDropout>
  <RankDropout>0</RankDropout>
  <ModuleDropout>0</ModuleDropout>
  <MaxNormReg>0</MaxNormReg>
  <CaptionDropout>0</CaptionDropout>
  <IpNoiseGamma>0</IpNoiseGamma>
  <ModuleType>LoRA</ModuleType>
  <AlgoType>lora</AlgoType>
  <ConvDim>4</ConvDim>
  <ConvAlpha>1</ConvAlpha>
  <UseConv2dExtend>true</UseConv2dExtend>
  <DyLoRAUnit>4</DyLoRAUnit>
  <DatasetConfigPath />
  <TrainNorm>false</TrainNorm>
  <RescaledOFT>false</RescaledOFT>
  <ConstrainedOFT>false</ConstrainedOFT>
  <UseScalar>false</UseScalar>
  <UseTucker>false</UseTucker>
  <WeightDocomposition>false</WeightDocomposition>
  <UseBlockWeight>false</UseBlockWeight>
  <BlockWeightIn>
    <int>20</int>
    <int>20</int>
    <int>20</int>
    <int>20</int>
    <int>20</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
  </BlockWeightIn>
  <BlockWeightMid>0</BlockWeightMid>
  <BlockWeightMid01>20</BlockWeightMid01>
  <BlockWeightMid02>20</BlockWeightMid02>
  <BlockWeightOut>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>20</int>
    <int>20</int>
    <int>20</int>
    <int>20</int>
    <int>20</int>
  </BlockWeightOut>
  <BlockWeightOffsetIn>0</BlockWeightOffsetIn>
  <BlockWeightOffsetOut>0</BlockWeightOffsetOut>
  <BlockWeightPresetTypeIn>none</BlockWeightPresetTypeIn>
  <BlockWeightPresetTypeOut>none</BlockWeightPresetTypeOut>
  <BlockWeightZeroThreshold>0</BlockWeightZeroThreshold>
  <UseBlockDim>false</UseBlockDim>
  <BlockDimIn>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
  </BlockDimIn>
  <BlockDimMid>32</BlockDimMid>
  <BlockDimMid01>4</BlockDimMid01>
  <BlockDimMid02>4</BlockDimMid02>
  <BlockDimBase>4</BlockDimBase>
  <BlockDimOutSDXL>4</BlockDimOutSDXL>
  <BlockDimOut>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
    <int>64</int>
  </BlockDimOut>
  <BlockAlphaIn />
  <BlockAlphaMid>-1</BlockAlphaMid>
  <BlockAlphaOut />
  <BlockAlphaInM>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
  </BlockAlphaInM>
  <BlockAlphaMidM>32</BlockAlphaMidM>
  <BlockAlphaMid01>4</BlockAlphaMid01>
  <BlockAlphaMid02>4</BlockAlphaMid02>
  <BlockAlphaBase>4</BlockAlphaBase>
  <BlockAlphaOutSDXL>4</BlockAlphaOutSDXL>
  <BlockAlphaOutM>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
    <decimal>64</decimal>
  </BlockAlphaOutM>
  <UseColorAug>false</UseColorAug>
  <UseFastLoading>true</UseFastLoading>
  <DontSaveMetadata>false</DontSaveMetadata>
  <UseFlipAug>false</UseFlipAug>
  <CropRandomly>false</CropRandomly>
  <CacheLatents>true</CacheLatents>
  <CacheLatentsToDisk>true</CacheLatentsToDisk>
  <HighVRAM>false</HighVRAM>
  <UseAdditionalOptArgs>false</UseAdditionalOptArgs>
  <LRSchedulerCycle>4</LRSchedulerCycle>
  <GradAccSteps>1</GradAccSteps>
  <DataLoaderThreads>1</DataLoaderThreads>
  <MaxTokens>75</MaxTokens>
  <mixedPrecisionType>fp16</mixedPrecisionType>
  <WeightDecay>0</WeightDecay>
  <Eps>1E-06</Eps>
  <D0>1E-06</D0>
  <GrowthRate>0</GrowthRate>
  <Betas0>0.9</Betas0>
  <Betas1>0.999</Betas1>
  <Betas2>0.999</Betas2>
  <DAdaptMomentum>0.9</DAdaptMomentum>
  <ProdigyBeta3>0</ProdigyBeta3>
  <DCoef>1</DCoef>
  <Decouple>false</Decouple>
  <NoProx>false</NoProx>
  <SafeguardWarmup>false</SafeguardWarmup>
  <UseBiasCorrection>false</UseBiasCorrection>
  <StableDiffusionType>XL</StableDiffusionType>
  <NoHalfVAE>false</NoHalfVAE>
  <CacheTextencoder>false</CacheTextencoder>
  <CacheTextencoderToDisk>false</CacheTextencoderToDisk>
  <IsEpoch>true</IsEpoch>
  <UseFullFP16>false</UseFullFP16>
  <UseFP8Base>false</UseFP8Base>
  <RelativeStep>true</RelativeStep>
  <ScaleParameter>true</ScaleParameter>
  <SaveState>false</SaveState>
  <MaskLoss>false</MaskLoss>
  <RandomNoiseOffset>false</RandomNoiseOffset>
  <RandomIpNoiseGamma>false</RandomIpNoiseGamma>
  <TokensSeparator />
  <LossType>LTwo</LossType>
  <HuberScheduleType>SNR</HuberScheduleType>
  <HuberC>0.1</HuberC>
  <LoRAPlusLRRatio>0</LoRAPlusLRRatio>
  <LoRAPlusUnetLRRatio>0</LoRAPlusUnetLRRatio>
  <LoRAPlusTELRRatio>0</LoRAPlusTELRRatio>
</TrainParams>













