Unity2D 画面の色をサンプリングするシェーダーがうまくいかない

takap-tech.com

Unity2DのURPで上の記事の手順に従って、すでに描画されている色を利用したシェーダーを作ろうとしました。
しかし最新バージョンでは若干変更があったようで上の通りにしてもうまくいきませんでした。

修正点は一つで、CameraSortingLayerTextureの設定です。
Unity6000.3.19fではテクスチャの設定にScopeという欄があります。ここがPerMaterialだとテクスチャが設定されません。
これをGlobalに設定するとうまく動くようになります。

Unity URP 謎のノイズが影の部分に出る

久しぶりにUnityを立ち上げてみました。随分前にURPへの置き換えが始まったところまでは知っていたのですが、今はほぼ完全に置き換えられたようです。
blenderで簡単なモデルを作成して読み込んでみましたが、影の部分や暗い部分に謎のノイズが出ているのが気になりました。

画像だと分かりにくいですが、雲のようなノイズがあります。画面を動かしてみてもモニターに引っ付いたみたいに描画されます。

どうやらSSAOというのがこの現象を引き起こしているようです。
SSAOはScreen Space Ambient Occlusionの略称です。この機能の実装は知りませんが名前からしてスクリーンスペースの手法のようです。だから画面に張り付いたようになっていたんでしょう。

少し複雑ですが切ることもできます。
URPはRenderPipelineを自分で設定できるようで、そのパイプラインはアセットとして管理されています。
そのアセットはAssets/Settingsの配下に、例えばPC_RPAssetとして存在していたりしますが、Edit > Project Settings > Graphicsの一番上にあるDefault Render Pipelineからもアクセスできます。

RenderPipelineはRendererを持っているみたいで、RendererListにはPC_Rendererが指定されていました。

このPC_Rendererを開いてみると下の方にScreen Space Ambient Occlusionという項目があるのが分かります。
この項目のチェックを外すことで無効化することができます。

確かにノイズが消えています。
無効化できることがわかりましたが、僕はオンのままにしておきました。メタリックテクスチャなどの適用で随分試行錯誤していた時に気づいたので、うまく適用できていないのかなーと思ったりしましたがテクスチャには関係ないようです。

高校物理 ブラッグの実験を理解する

初めて教科書でブラッグの実験を知った時に僕はたくさんの誤解をしました。
この記事では自分なりにそれを解決してブラッグの実験を理解することを目指します。

勘違いと疑問

ブラッグの実験では、結晶に入射した光が複数の方向について強め合うことはありません。入射した光は表面で反射する方向のみで強め合います。
ブラッグの条件を見る限りではnの値を変えると複数の方向で強め合うように思えますが、実際には1つの方向のみで強め合います。

また教科書では格子面という考え方が導入されるのですが、説明が少なくブラッグの実験との関係がわかりませんでした。その点についても書きます。

ブラッグの実験と条件

まずはブラッグの実験の概要と条件について見ます。

ブラッグの実験-単純な例

図のように規則的に結晶が構成されているとして、そこに入射したX線はそれぞれの原子にあたって全ての方向に散乱します。*1
図では散乱したX線のうち反射の法則を満たすもののみを描いています。

この時表面のX線と、その1層下の原子で散乱したX線の間には経路差ができます。すると位相差ができます。この2つのX線が干渉した結果強めあったり弱めあったりします。
上の例について具体的に計算します。
画像の赤線の部分が経路差になります。この経路差は  \theta と同じ角度を探すことで  2d \sin{\theta} だとわかります。 d は1層目と2層目の間隔です。
この経路差が波長の整数倍になると、散乱後のこの2つのX線の位相が揃うから強め合います。

式にすると整数 n を使って
 2d \sin{\theta} = n \lambda
と表すことができます。 \lambdaX線の波長です。

図の2つの原子で散乱したX線がこの条件を満たしていると、この2つのX線が強め合います。それ以外にも、もっと下の層の原子で散乱したX線も同じ位相になって強め合います。
具体的に、図の赤線の部分が n=1\lambda だったらその1つ下の層は、  2\lambda の経路差になります。
こんな感じで下の層でも位相が  \lambda ずつずれるから、この縦に並んだ原子で散乱したX線は全て強め合うことになります。

予想と誤解

僕はこの条件をもとに予想をしました。とにかくブラッグの条件を満たしていればX線は強め合うという予想です。これはつまり入射する1つのX線に対して、それが強め合う方向が複数あるという予想です。
この予想は間違っています。まずは僕の予想について説明します。

僕は、入射角や d \lambda が同じでも散乱した結果の方向によっては強め合うのではないか、と考えました。

ブラッグの実験-予想

この図では入射角や d などの全ての条件を変えないままで、原子によって散乱した光のうち上で考えたものとは違うものについて考えています。

原子にあたったX線はいろんな方向に散乱します。だから青線のような反射の方向だけではなくて別の方向にもX線が出ています。それの位相がうまく合って強め合うこともあるかもしれません。
この図はそういう例の1つを表しています。

入射の時の経路差は  \displaystyle d \sin{\theta} = \frac{1}{2}\lambda で赤い太線の部分に対応します。
ここで出射の時の経路差が同じく  \displaystyle \frac{1}{2}\lambda だと、上の反射の時のように経路差の合計が  \lambda になり強め合います。
しかしここで出射の時の経路差が  \displaystyle \frac{3}{2}\lambda になるような出射角について考えてみると、合計は  \displaystyle \frac{1}{2}\lambda + \frac{3}{2}\lambda = 2\lambda になりこれもまた強めあってしまいます。黄緑色の太線の部分と赤色の線で表された散乱方向がそれに対応します。(具体的には  \displaystyle d \sin{\theta '} = \frac{3}{2}\lambda を満たす  \theta ' の方向に出射する時)*2

だけど実際にはブラッグの実験では反射の方向のみでしか強め合いません。僕はブラッグの条件の式のみを見てこのような予想をしましたが実際にはこの式だけではなくてもう1つ重要な条件があり、このような方向ではうまく強め合いません。

ブラッグの実験に必要な全ての条件

ブラッグの実験でX線が強め合うための条件は  2d\sin{\theta} = n\lambda 以外にもあります。
それは反射の法則を満たす方向のみで強め合うというものです。
この条件から考えると、1つ目の青い方向の散乱は反射の法則を満たすため強めうことになります。一方赤い線の散乱は反射の法則を満たしていないので強め合わないことになります。
なぜそうなるのか、なぜ反射の法則を満たす必要があるのかについては、横に並んだ原子によって散乱したX線について考えるとわかります。

上では縦に並んだ原子に着目して、それによって散乱したX線が強め合う条件を考えました。
横に並んだ原子についても考えてみます。

ブラッグの実験-横に並んだ原子の散乱

この図では横に並んだ原子にあたって散乱したX線のうち、反射方向のものを取り出して描いています。横に並んだ原子の間隔は l としました。

この時、経路差は対称で  0 になるから l によらず常に強め合います。

つまり反射の法則を満たす方向では、縦に並んだ原子で散乱したX線だけでなく、横に並んだ原子で散乱したX線も強め合います。結果として結晶の全ての原子で散乱した全てX線が強め合うことになります。

逆に反射の法則を満たさない方向では、縦に並んだ原子で散乱したX線が強め合っても、横に並んだ原子で散乱したX線は強め合わず(または弱め合って)結果として反射の法則を満たす角度で観測したX線よりもだいぶ(またはかなり)弱いX線になります。

格子面の導入

今までの議論をまとめると、表面に対して反射の法則を満たす方向で、なおかつ  2d \sin{\theta} = n \lambda を満たす方向なら強め合うということになります。
基本的にはそのように考えることができるのですが、実際にはもう少し複雑です。
縦に並んだ原子からのX線が強め合っているとき、  l の値によっては、反射の法則を満たさない場合でも横に並んだ原子からのX線が強め合う時があるからです。
上では、反射の方向以外では強め合わないと結論づけましたがそういった特殊な場合では強め合うこともありそうです。

結論から言うと、同じ結晶に同じ角度で、同じ波長のX線を当てた時は反射の法則を満たす方向以外では強め合いません。しかし波長や角度を変えてうまく調節すると強め合います。この条件についてこれから議論します。

ブラッグの実験-反射の方向以外の散乱

この図は \theta で入射して  \theta ' で出射する様子を表しています。

このとき条件がうまくそろえば、縦に並んだ原子同士の経路差が波長の整数倍で、しかも横に並んだ原子同士の経路差も波長の整数倍になることがあります。つまり強め合います。

例えば横同士の経路差が \lambda で、縦同士の経路差も \lambda の時について考えてみます。

図でいうと、左上の原子が  0\lambda、右上と左下は  1\lambda、右下は横にいって  \lambda ズレて、縦にいって \lambda ズレるから 2\lambda の分だけ経路差ができることになります。
このようになるときの条件は式で書くことができそうです。具体的には、縦の原子同士の経路差についての条件である  d\sin{\theta} + d\sin{\theta'} = \lambda と横の原子についての  l\cos{\theta} - l\cos{\theta'} = \lambda になります。横の原子については鏡を使った回折格子の場合と同じように計算できます。経路差が  n\lambda の時も右辺を変えれば対応できます。

この2つの式を満たすような  \theta ' が実際どんな向きを表しているのかをより直感的に説明できるのが、格子面を使った考え方です。
上の図では水平に並んだ原子を結んで格子面を作りました。違う原子の結び方をして格子面を作ってみます。

ブラッグの実験-格子面の例

画像では右上の原子と左下の原子を結んで斜めの格子面を作りました。格子面どうしの間隔は d' とします。

このときこの格子面に対してなす角は入射と出射で等しくなります。なぜなら同じ格子面に属する原子からのX線の経路差が 0 になるからです。

反射の法則を満たす方向にX線が散乱するときは、同じ面ならどこでも経路差がありません。この例では、左上の原子と比較してX線は、右上の原子では  \lambda の経路差で左下の原子でも  \lambda の経路差でした。つまりこの2つの原子から出るX線に経路差はありません。そこで、この2つの原子を結ぶ線を引くと(または面を作ると)2つの原子における散乱はそれに対する反射と見ることができるようになります。

前の考え方では l について考える必要がありましたが、格子面を使った考え方では l が格子面の角度や間隔に自然に組み込まれてるため直接扱う必要はなくなります。
それにともなって横に並んだ原子によって散乱した光について課していた条件もより簡潔に、格子面に対して反射の法則を満たす向きである、と言い換えることができます。

前の考え方の縦に並んだ原子についての条件は、  d' \phi を使って言い換えることができます。
 2d'\sin{\phi} = n\lambda となります。
原子が一列に並んでいないので図形としては複雑になりますが、同じ格子面では経路差がないことを考えれば、最初に計算したのと全く同じように計算することができます。
また原子ごとにどのくらいの経路差が生まれるかを確認したときに得た結論から考えると格子面ごとに \lambda の経路差があることになるから右辺は  n\lambda になります。

この式から次のことがわかります。
結晶に対して別の方向からX線を当ててみると \phi が変化するから、式を満たすような 間隔  d' の格子面が存在する角度では強め合う。このとき結晶の表面に対して反射の法則を満たさない向きで強め合うこともあるけど、それは格子面に対しては反射の法則を満たしているということ。
結晶に当てるX線の波長を変えてみると強め合う方向が変わるということ。
他にも読み取れることはありそうです。

まとめ

教科書を読んでいたら詰まったのでたくさん調べて理解しました。
格子面の考え方は、例えばブラッグの条件が n=22d\sin{\theta} = 2\lambda のときも本当にうまくいくのかな、と疑ったりしましたが  \displaystyle  2 \frac{d}{2} \sin{\theta} = \lambda とすることで解決できました。つまり元の水平の格子面のちょうど半分の位置に格子面を作るということです。こんな感じで色々考えてみたのですが格子面の考え方はうまくいくようです。この記事では2次元で考えましたが3次元でも使うことができます。むしろ3次元の時の方が真価を発揮するのかもしれません。
ちなみに反射の法則を満たす方向のみで強め合うというのは教科書にも書いてあります。僕は見逃しました。

*1:散乱という表現について補足します。似たような実験に、鏡に傷をつけて回折格子を作成して干渉の様子を観察するというものがあります。僕はそれとブラッグの実験を比較したときに少し混乱しました。ブラッグの実験では原子にあたったX線が散乱してそれが干渉します。でも回折格子の実験では傷をつけたところで光が散乱して、それは干渉しません。同じ散乱という言葉が使われているのに起こる現象が違うことに違和感がありました。散乱という言葉の定義について調べてみた結果この言葉はたぶん位相が揃っている方を想定しているんだということがわかりました。逆に位相が揃っていない散乱は、反射面がザラザラだと、各点では散乱するけどそれがバラバラな点で起こった結果位相がバラバラになる、と説明できるんだと思います。

*2:黄緑色の太線は  \displaystyle \frac{3}{2}\lambda のつもりで書いています。少し短くなってしまいました。

Dioxus 0.7.0でtailwindcss

Dioxus | Fullstack crossplatform app framework for Rust

このページを読みながら進めてみます。

まずはプロジェクトのルートに tailwind.css を配置します。src フォルダとかと同じ階層です。
名前は tailwind.css じゃないとダメです。

次に tailwind.css に次のコードを書きます。

@import "tailwindcss";
@source "./src/**/*.{rs,html,css}";

上のページの通りのコードです。

最後にどこかの場所にインポート用のコードを追加します。今回は上のページと同じようにします。

fn app() -> Element {
    rsx! {
        document::Stylesheet { href: asset!("/assets/tailwind.css") }
    }
}

document::Stylesheet の代わりに link を使うことはできません。

ここまでできたら起動してみます。
起動するとルートにおいた tailwind.cssをもとに /assets/tailwind.css が生成されます。
tailwindcssも使えるようになりました。

dx serve とか dx serve --hotpatch とかを使っている人は一回 ctrl+c で終了してからもう一度立ち上げ直してください。
そうしないと /assets/tailwind.cssが生成されないからうまくいきません。

高校化学 電離平衡の近似の理由

1-a ≈ 1 の近似の理由

電離平衡の問題を解いていると  \displaystyle \frac {c \alpha ^{2}} {1-\alpha} c \alpha ^{2} への近似を使うことがあります。
説明なしでいきなり教えられますが、しっかりと説明をすることができます。

高校物理には一次近似という近似がありました。
電離平衡の近似ではこれよりも精度がいい二次近似を使います。
理由は後で説明します。まずは電離平衡の近似が二次近似であることを確認してみます。

一次近似は接線の傾きを利用して接線の向きに少しだけ進むというものでした。

 \displaystyle f(h) = f(0) + f'(0)h

これは0に近い場所の値を近似するときの一次近似の式です。

これに対して二次近似は次のようになります。

 \displaystyle f(h) = f(0) + f'(0)h + \frac{1}{2} f''(0)h

これは0に近い場所の値を近似するときの二次近似の式です。

実際に電離平衡の時に出てくる式を二次近似してみます。

 \displaystyle f(x) = \frac {c x^{2}} {1-x}

 \displaystyle
f(0) = \frac {c (0)^{2}} {1-0} = 0 \\
f'(0) = \frac{2c(0) - c(0)^{2}}{(1-0)^{2}} = 0 \\
f''(0) = \frac{2c}{(1-0)^{3}} = 2c
だから、これを二次近似の式に当てはめてみると
 f(h) = 0 + 0 \cdot h + \frac{1}{2} \cdot (2c) \cdot h^{2} = ch^{2}

0に十分に近い  \alpha について  \displaystyle \frac {c \alpha ^{2}} {1-\alpha} が近似したい元の式だから上の式を利用すれば  f(\alpha) = c \alpha^{2} と近似できることがわかります。
これは電離平衡の問題で利用していた近似と一致します。

二次近似であることを確認できました。なぜ二次近似なのでしょうか。

一次近似や二次近似があったように、三次近似や四次近似もあります。ここでは十分に大きな次元で近似した場合を考えてみます。
実際に微分の0における値を評価してみると近似は

 \begin{align} f(h) &= 0 + 0 h + ch^{2} + ch^{3} + ch^{4} + ch^{5}... \\\
&= ch^{2} + ch^{3} + ch^{4} + ch^{5}... \end{align}

のようになります。これを一般にテイラー展開、特に今回は0周りの近似なのでマクローリン展開と言います。

このように近似した関数の、形を捉える方法を考えます。
三次以上の項について考えてみます。 ch^{2} ch^{3} について考えてみると  h が十分に0に近いことを考えれば  ch^{3} の方がだいぶ小さいことがわかります。もっと高次の項になればより小さくなってしまいます。このことからこの近似した関数の形をとらえようと思ったら最も支配的である  ch^{2} のみをみればいいと考えることができます。
逆に一次近似では役不足です。これだけでは形を捉えることはできません。

結果的にちょうどいい二次近似を用いることになります。

追記

テイラー展開を用いて丁寧に考えることができました。
だけど式を近似するたびに何回も微分して0を代入、をするのは現実的ではありません。楽になる方法を考えてみます。

 \displaystyle \frac {c \alpha ^{2}} {1-\alpha} c \alpha ^{2} に近似した時に一応根拠としてこんなものがありました。

 1 - \alpha \alpha が非常に小さくて0に近い時に  1 として近似できる。

というものです。

これだけだとすごく納得がいきません。式を書いて考えてみます。

例として  \displaystyle \frac{(3+a)a}{1-a} を考えます。ここで a は非常に小さくて0にすごく近いです。
近似の興味があるのは  3+a 1-a です。
ここではそれらに加えて a も含めて一般的に書いてみます。近似で変化する部分を抽出して一般化したいからです。

 \displaystyle f(x,y,z) = \frac{yz}{x}
とすれば
 \displaystyle f(1-a,3+a,a) = \frac{(3+a)a}{1-a}

この関数の a についての一次近似について考えてみます。

まずは  1 - \alpha 1 と近似する戦法で近似をしてみます。これは実際、この場合だとうまくいきます。僕が知りたいのはこの戦法がどうしてうまくいくのかです。先にこの戦法で近似をして、それとテイラー展開を用いた近似が一致することを確認します。そうすればこの戦法がどうして成り立っているのかを、テイラー展開を用いた近似を求める過程をたどることで知ることができるからです。

議論を進める前に  1 - \alpha 1 と近似する方法にテキトーな名前をつけておきます。実際に記事を書き進めたところ何回も登場することになったそれを短く書きたいからです。ここでは置換法と呼びます。

置換法を実際に使用してみると  \displaystyle \frac{(3+a)a}{1-a} \displaystyle \frac{(3+0)a}{1-0} となって  \displaystyle 3a になります。 3+a の部分についても  a が0に近いから 3 と考えられるものとして置換します。

次にテイラー展開を用いた近似をしてみます。
一次近似は a について次のようになります。

 \displaystyle f(a) = f(0) + f'(0)a

 f(0) の値は簡単に求めることができるから、 あとは  f'(0) の値を求めればいいです。
 f'(0) の値を知るには  \displaystyle \frac{df}{da} を知る必要があります。それがわかっていれば次のように求めることができるからです。

 \displaystyle \frac{d}{da}f(x,y,z) = \frac{d}{da}f(1-a,3+a,a)
 a = 0 だから
 \displaystyle f'(0) = \frac{d}{da}f(1,3,0)

実際に  \displaystyle \frac{df}{da} を求めてみます。
 f(1-a,3+a,a) という関数を a について微分するには次の公式を使います。

 \displaystyle \frac{d}{da}f(x,y,z)
=\frac{\partial f}{\partial x}\frac{dx}{da}
+\frac{\partial f}{\partial y}\frac{dy}{da}
+\frac{\partial f}{\partial z}\frac{dz}{da}

ここでは  x, y, z がそれぞれ  1-a, 3+a, a に対応します。*1

微分を計算すると  \displaystyle \frac{dx}{da}=-1, \frac{dy}{da}=1, \frac{dz}{da}=1 です。
少し簡単になって

 \displaystyle \frac{d}{da}f(x,y,z)
=-\frac{\partial f}{\partial x}
+\frac{\partial f}{\partial y}
+\frac{\partial f}{\partial z}

のようになります。
 \displaystyle \frac{\partial f}{\partial x} などは省略されていますが、本来は  \displaystyle \frac{\partial f}{\partial x} (x, y, z) となります。

実際に値を代入するためには残ったものも計算する必要があります。

 \displaystyle
\frac{\partial f}{\partial x}
= -\frac{yz}{x^{2}},
\frac{\partial f}{\partial y}
= \frac{z}{x},
\frac{\partial f}{\partial z}
= \frac{y}{x}

だから

 \displaystyle \frac{d}{da}f(x,y,z) = \frac{yz}{x^{2}} - \frac{z}{x} + \frac{y}{x}

となります。  \displaystyle \frac{df}{da} がわかったから  f'(0) を計算することができます。

 \displaystyle f'(0) = \frac{d}{da}f(1,3,0) = \frac{3 \cdot 0}{1^{2}} - \frac{0}{1} + \frac{3}{1}

前の2つの項は消えて結果は  3 になります。最終的な一次近似は  f(a) = f(0) + f'(0)a = 0 + 3a = 3a になります。

置換法で求めた  f(a) = 3a という近似と一致しています。

テイラー展開を用いた近似を求める過程をさかのぼってどこにポイントがあったのか考えてみます。

 \displaystyle \frac{d}{da}f(1,3,0) = \frac{3 \cdot 0}{1^{2}} - \frac{0}{1} + \frac{3}{1}

という式は重要に見えます。どうやら肝心の係数となる  f'(0) の値は、ほとんどの項が  0 になることで残った1つの項によって決まるようです。
これを確認するには、ほとんどの項が  0 になる理由と、残った項が係数と同じになる理由を考える必要があります。ここでは先に、最終的な値に直接的に関係する残った1つの項について考えます。

上の例で残った、最後の項は  \displaystyle \frac{\partial f}{\partial z}\frac{dz}{da} です。
 z = a としたから  \displaystyle \frac{dz}{da}=1 です。ここの一般化はまた後ですることにします。
 \displaystyle \frac{\partial f}{\partial z}(x,y,z) の部分について考える必要がありそうです。

ここの部分は上では  \displaystyle \frac{\partial f}{\partial z} = \frac{\partial}{\partial z}\left(\frac{yz}{x}\right) = \frac{y}{x} \displaystyle \frac{\partial f}{\partial z}(1,3,0) = \frac{3}{1} として評価しました。

この過程は言い換えると、 z (もとは a )を除いた残りの式(z についての一次式を z について微分した式)に  a = 0 を代入した時の値を求める、です。

この一文が、置換法が成立する理由の半分を占める大事な考察です。
 x, y, z の式を  a の式に戻してみると、置換法と同じ操作をしていることがわかりやすくなります。
 \displaystyle \frac{(3+a)a}{1-a} について  z である  a を除いて、  \displaystyle \frac{y}{x} に対応する  \displaystyle \frac{3+a}{1-a}0 を代入し  \displaystyle \frac{3+0}{1-0}、 その結果を一次近似の係数として利用することで  3a を得ます。

ほとんどの項が  0 になる理由についても考えます。
 \displaystyle \frac{\partial f}{\partial x} = -\frac{yz}{x^{2}}, \frac{\partial f}{\partial y} = \frac{z}{x} でした。これらは  z = 0 を代入すると  0 になります。微分を計算してしまうと少し複雑になりますが、微分を計算しなくても  0 になることはわかります。
 \displaystyle \frac{yz}{x} = \left(\frac{y}{x} \right) z と変形すると、   \displaystyle \frac{y}{x}微分がどうなろうと、定数として  z が残り続けることになります。結果として代入のタイミングで 0 になります。

これが置換法が成立する理由のもう半分です。
2つの考察を組み合わせることで置換法が成り立つことがわかります。

化学平衡の計算に利用される式のテイラー展開を利用した近似

具体例  \displaystyle \frac{(3+a)a}{1-a} を用いましたが、この方法はある程度は汎用的です。
少なくとも言葉でなんとなく説明するよりは遥かにましです。

汎用的とは言いましたが z の部分が a である場合についてしか説明していないので不完全です。
今度はそもそも知りたかった電離の式  \displaystyle \frac {c \alpha ^{2}} {1-\alpha} を元に考えてみます。これは z は変わらず  \alpha としますが  z^{2} として f に現れるため少し違います。
この関数は一次近似だと、一階微分の値が 0 になるからうまくいきませんでした。
実際、  \displaystyle \frac{\partial f}{\partial a} は残った1項に  \displaystyle \frac{dz}{da} 由来の a が残るためそれも含めて全ての項が 0 になってしまいます。
二次近似を計算するために二階微分の値が必要になります。
規則的な変化をすることから考察すると結局残るのは  \displaystyle \frac{\partial^{2} f}{\partial z^{2}} \left( \frac{dz}{da} \right) ^{2} だけになります。
この場合係数に 2 などがかかりますがテイラー展開の係数  \frac{1}{k!} によって打ち消されます。

説明が足りませんが上のように考えることで  \alpha^{2} に対しても適用できることがわかります。

応用すると  za 0 の時に 0 になりさえすればいろんな関数に適用できます。

*1:関数の引数の書き方がわかりにくかったり、その他のところがわかりにくいかもしれません。
よくわからなかった時は合成関数の微分を思い出してもらうといいと思います。

Codex VSCode Auto Approve

Settings > Chat > Tools > Global > Auto Approve → On

設定から上の項目にチェックを入れることで自動で承認してくれます。
同時に拡張機能のアップデートもしましたもしかしたら関係あるかもしれません。  

TahoeでWacomのドライバーが反応しない

今日は2025年9月16日です。
Tahoeの正式なバージョンが出ましたがWacomのドライバーが反応しません。

解決方法

1つ前のバージョンのドライバーを使うと解決します。
6.4.9-2で動作しました。
6.4.10-3では動作しないようです。

追記

最新バージョン6.4.11でTahoeに正式に対応しました。