Wikibooks
jawikibooks
https://ja.wikibooks.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
MediaWiki 1.47.0-wmf.24
first-letter
メディア
特別
トーク
利用者
利用者・トーク
Wikibooks
Wikibooks・トーク
ファイル
ファイル・トーク
MediaWiki
MediaWiki・トーク
テンプレート
テンプレート・トーク
ヘルプ
ヘルプ・トーク
カテゴリ
カテゴリ・トーク
Transwiki
Transwiki‐ノート
TimedText
TimedText talk
モジュール
モジュール・トーク
Event
Event talk
実用英語技能検定
0
8453
304843
297338
2026-10-18T08:05:24Z
~2026-55816-24
92814
/* ライティング */ 内容追加
304843
wikitext
text/x-wiki
{{Pathnav|試験|資格試験|frame=1}}
'''実用英語技能検定'''(じつようえいごぎのうけんてい)は資格試験の一つである。日本で有名な資格の一つであり、'''英検'''とも呼ばれる。<br>
国際共通の英語に関するテストについては、[[TOEIC]]を参照していただきたい。
{{stub|資}}
== 検定級 ==
{|class="wikitable" cellpadding="4" cellspacing="0" style="font-size:100%;"
!style="width:2em; background: #574e54; color: White;" |級
!style="background: #574e54; color: White;"|レベル
!style="background: #574e54; color: White;"|試験内容
|-
!1
|大学上級程度
|rowspan="6"|筆記・リスニング・面接
|-
!準1
|大学中級程度
|-
!2
|高校卒業程度
|-
!準2プラス
|高校上級程度
|-
!準2
|高校中級程度
|-
!3
|中学校卒業程度
|-
!4
|中学校中級程度
|rowspan="2"|筆記・リスニング(・スピーキング)
|-
!5
|中学校初級程度
|-
|}
*4級・5級のスピーキングテストは、合格に必須ではない。
=== 受験内容 ===
; 一次試験
: 筆記による試験を行う。リスニング試験も同時に行う。
; 二次試験(3級以上)
: 一次試験の約1か月後、一次試験の合格者に対して面接試験を行う。
== 受験方法(従来型) ==
この検定は、年度3回(6~7月・10~11月・1~2月)実施される。申込締め切りは一次試験の約1ヶ月前。受験方法には、本会場と準会場実施があり、方式により検定料が異なる。
; 本会場
: いわゆる一般受験。英検の協会が用意した会場で受験する方式。基本的に日曜日実施である。
; 準会場
: 塾など、英検の協会から準会場認定を受けた会場で受ける方式。土曜もしくは日曜実施。また、中学や高校で受ける方式(特別準会場)もある。この場合、金曜もしくは土曜に受けることができる。ただし、準1級以上は準会場で受けられない。また二次試験は、必ず本会場で受験することになる。
=== 申し込みの流れ ===
==== 一次試験まで ====
; 受験の申込方法
* 本会場の申し込みは、ネット・コンビニ・書店で申し込める。
* 準会場(特別準会場含む)の申し込みは、その団体の担当者へ申し込む。
; 受験直前
: 受験日の6日前までに受験票が自宅に到着する。
; 受験当日
: 受験当日は、指定された会場・時間に行くこと。会場に行く際は周辺の迷惑にならないよう、公共交通機関を利用すること。
:* 3級以上の受験者は、受験票に写真(3×2.4cm)が必要となる。また身分証明者(写真なし可)も必要になるので、忘れずに持っていくこと。忘れた場合は受験ができない。
== 受験方法(S-CBT) ==
この検定は、コンピューター上で解答を行うCBTタイプの試験であり、スピーキングを含めた4技能を1日で測ることができる(後日面接はない)。原則毎週実施され、級・スコアは英検(従来型)と同等に扱われる。ただし、準1級-3級しか受けられない。
; スピーキング
: 問題が画面上に表示され、解答者はヘッドセットを用いて録音する。
; リスニング・リーディング
: 問題が画面上に表示され、解答者はマウスを用いて解答する。
; ライティング
: 問題が画面上に表示され、解答者は解答用紙に手書きで記入するか、キーボードで入力するかを選択して解答する。
=== 日程 ===
年度内に第1回(4月-7月)・第2回(8月-11月)・第3回(12月-3月)の中で原則毎週実施され、受験者は同回次において同一級を2回まで受験できる(従来型を含めると最大3回)。なお、試験を欠席・棄権した場合にもそれは受験回数に含まれる。
=== 申込方法 ===
ウェブ上で受験級・受験会場・受験日時を選択し、アカウント認証・個人情報等の入力を行った後に、コンビニ払い・クレジットカード払い・郵便局ATMで支払う。その後、申込完了メールと受験票が届く。{{Efn|[https://www.eiken.or.jp/s-cbt/apply/flow/ お申し込みの流れ|英検S-CBT|公益財団法人 日本英語検定協会](2025-01-13閲覧)}}
== 傾向 ==
=== リーディング ===
リーディングは4択のマークシート方式で準一級は31問構成。
=== ライティング ===
2024年度から2級、準1級、1級には元々の意見論述(Englis essay)に加え、要約問題(English Summary)が追加され、2問構成になった。
要約問題は「内容」「構成」「語彙」「文法」の4つの項目で採点される。
=== リスニング ===
リスニングテストはリーディングと同様に4択のマークシート方式で準一級は29問構成である。
=== スピーキング ===
約5~8分の面接試験。面接委員と向かい合って行う形式。
== 学習方法 ==
* 英検のテキストを購入する。
* スクールの講座を受講する。
* 過去問題集を用いて問題演習をする。
==脚注==
{{Notelist}}
{{Reflist}}
==関連リンク==
{{Wikipedia|実用英語技能検定}}
*[https://www.eiken.or.jp/eiken/ 実用英語技能検定 公式サイト]
*[https://www.ei-navi.jp/dictionary/ 英ナビ辞書] - 英和辞典。1級を除く各級の単語一覧も掲載している。
{{DEFAULTSORT:しつようえいこきのうけんてい}}
[[Category:語学系資格]]
[[Category:英語]]
15stjju9w0eez1prmcs1t27yg9ftdv4
304844
304843
2026-10-18T08:07:08Z
~2026-55816-24
92814
/* ライティング */ 内容追加
304844
wikitext
text/x-wiki
{{Pathnav|試験|資格試験|frame=1}}
'''実用英語技能検定'''(じつようえいごぎのうけんてい)は資格試験の一つである。日本で有名な資格の一つであり、'''英検'''とも呼ばれる。<br>
国際共通の英語に関するテストについては、[[TOEIC]]を参照していただきたい。
{{stub|資}}
== 検定級 ==
{|class="wikitable" cellpadding="4" cellspacing="0" style="font-size:100%;"
!style="width:2em; background: #574e54; color: White;" |級
!style="background: #574e54; color: White;"|レベル
!style="background: #574e54; color: White;"|試験内容
|-
!1
|大学上級程度
|rowspan="6"|筆記・リスニング・面接
|-
!準1
|大学中級程度
|-
!2
|高校卒業程度
|-
!準2プラス
|高校上級程度
|-
!準2
|高校中級程度
|-
!3
|中学校卒業程度
|-
!4
|中学校中級程度
|rowspan="2"|筆記・リスニング(・スピーキング)
|-
!5
|中学校初級程度
|-
|}
*4級・5級のスピーキングテストは、合格に必須ではない。
=== 受験内容 ===
; 一次試験
: 筆記による試験を行う。リスニング試験も同時に行う。
; 二次試験(3級以上)
: 一次試験の約1か月後、一次試験の合格者に対して面接試験を行う。
== 受験方法(従来型) ==
この検定は、年度3回(6~7月・10~11月・1~2月)実施される。申込締め切りは一次試験の約1ヶ月前。受験方法には、本会場と準会場実施があり、方式により検定料が異なる。
; 本会場
: いわゆる一般受験。英検の協会が用意した会場で受験する方式。基本的に日曜日実施である。
; 準会場
: 塾など、英検の協会から準会場認定を受けた会場で受ける方式。土曜もしくは日曜実施。また、中学や高校で受ける方式(特別準会場)もある。この場合、金曜もしくは土曜に受けることができる。ただし、準1級以上は準会場で受けられない。また二次試験は、必ず本会場で受験することになる。
=== 申し込みの流れ ===
==== 一次試験まで ====
; 受験の申込方法
* 本会場の申し込みは、ネット・コンビニ・書店で申し込める。
* 準会場(特別準会場含む)の申し込みは、その団体の担当者へ申し込む。
; 受験直前
: 受験日の6日前までに受験票が自宅に到着する。
; 受験当日
: 受験当日は、指定された会場・時間に行くこと。会場に行く際は周辺の迷惑にならないよう、公共交通機関を利用すること。
:* 3級以上の受験者は、受験票に写真(3×2.4cm)が必要となる。また身分証明者(写真なし可)も必要になるので、忘れずに持っていくこと。忘れた場合は受験ができない。
== 受験方法(S-CBT) ==
この検定は、コンピューター上で解答を行うCBTタイプの試験であり、スピーキングを含めた4技能を1日で測ることができる(後日面接はない)。原則毎週実施され、級・スコアは英検(従来型)と同等に扱われる。ただし、準1級-3級しか受けられない。
; スピーキング
: 問題が画面上に表示され、解答者はヘッドセットを用いて録音する。
; リスニング・リーディング
: 問題が画面上に表示され、解答者はマウスを用いて解答する。
; ライティング
: 問題が画面上に表示され、解答者は解答用紙に手書きで記入するか、キーボードで入力するかを選択して解答する。
=== 日程 ===
年度内に第1回(4月-7月)・第2回(8月-11月)・第3回(12月-3月)の中で原則毎週実施され、受験者は同回次において同一級を2回まで受験できる(従来型を含めると最大3回)。なお、試験を欠席・棄権した場合にもそれは受験回数に含まれる。
=== 申込方法 ===
ウェブ上で受験級・受験会場・受験日時を選択し、アカウント認証・個人情報等の入力を行った後に、コンビニ払い・クレジットカード払い・郵便局ATMで支払う。その後、申込完了メールと受験票が届く。{{Efn|[https://www.eiken.or.jp/s-cbt/apply/flow/ お申し込みの流れ|英検S-CBT|公益財団法人 日本英語検定協会](2025-01-13閲覧)}}
== 傾向 ==
=== リーディング ===
リーディングは4択のマークシート方式で準一級は31問構成。
=== ライティング ===
2024年度から2級、準1級、1級には要約問題(English Summary)が、3級、準2級にはEメール問題が追加され、2問構成になった。
要約問題は「内容」「構成」「語彙」「文法」の4つの項目で採点される。
=== リスニング ===
リスニングテストはリーディングと同様に4択のマークシート方式で準一級は29問構成である。
=== スピーキング ===
約5~8分の面接試験。面接委員と向かい合って行う形式。
== 学習方法 ==
* 英検のテキストを購入する。
* スクールの講座を受講する。
* 過去問題集を用いて問題演習をする。
==脚注==
{{Notelist}}
{{Reflist}}
==関連リンク==
{{Wikipedia|実用英語技能検定}}
*[https://www.eiken.or.jp/eiken/ 実用英語技能検定 公式サイト]
*[https://www.ei-navi.jp/dictionary/ 英ナビ辞書] - 英和辞典。1級を除く各級の単語一覧も掲載している。
{{DEFAULTSORT:しつようえいこきのうけんてい}}
[[Category:語学系資格]]
[[Category:英語]]
6ib6qwdq4mnkb5wa9ga7k5qxds3pxop
高校化学 元素と周期表
0
10475
304820
304336
2026-10-17T16:47:08Z
Nermer314
62933
304820
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校理科|高等学校化学|[[高等学校 化学|化学]]|pagename=元素と周期表|frame=1|small=1}}
=== 典型元素と遷移元素 ===
[[ファイル:元素の分類.png|thumb|480px|right|<small>★</small> - [[ランタノイド]](15元素 詳細略)<br /><small>★★</small> - [[アクチノイド]](15元素 詳細略)]]
3~12族までの元素を'''遷移元素'''、1,2族、13~18族の元素を'''典型元素'''という<ref>12族を含めず3~11族を遷移元素とする場合もある。</ref>。周期表の全体と、元素のおもな分類を次の図に示す。
'''典型元素'''は、1族から順に18族まで価電子数が規則的に変化する。価電子の数は18族は0であり、その他は族番号の1の位と等しい。価電子の数が周期的に変化するため、それに伴って性質も周期的に変化する。したがって、同じ族に属している元素('''同族元素''')は互いに似た化学的性質をもつ。
典型元素はさらに、それぞれの性質から次のような分類がされる。
* '''アルカリ金属''': <chem>H</chem>を除く1族
* '''アルカリ土類金属''': 2族<ref>令和4年度実施の教育課程から<chem>Be, Mg</chem>も加わった。</ref>
* '''ハロゲン''': 17族
* '''貴ガス'''<ref>2005年に英語での名称が「rare gas」から「noble gas」に改称されたのに合わせ、令和4年度実施の教育課程において希ガス(正字:稀ガス)から改称された。</ref>: 18族
一方、'''遷移元素'''は価電子の数がほとんど変化せず(多くは1個か2個)、周期性は見られないが、周期表で隣り合う元素どうしも互いに似た化学的性質をもつことが多い。また、イオンや化合物は有色であることが多いほか、酸化数のとり方が複数あることも特徴である。
典型・遷移元素という分類の他、次のような分類のしかたもある。
* '''金属元素''': 単体が金属であるもの
* '''非金属元素''': 単体が非金属であるもの
'''金属'''とは、金属光沢があって、展性・延性をもち、電気や熱を伝えやすい性質をもった物質のことであり、単体がこの性質をもつ元素を'''金属元素'''と呼んでいる。遷移元素はすべて金属元素であり、典型金属に比べて密度が大きく融点が高い傾向にある。金属元素の原子は陽イオンになることが多い。また、単体が金属でない元素を'''非金属元素'''と呼び、17・18族はすべて非金属元素である。18族はイオンになりにくく、また1族の水素は陽イオンになることが多いが、その他の非金属元素は陰イオンになることが多い。
周期表の左側の1・2族(水素を除く)と、中央の遷移元素は金属元素であり、右上に非金属元素が集まる。金属元素と非金属元素の境界付近にある元素の単体は、金属と非金属の中間的な性質をもつことがある。
おもな典型元素の分類を、次の表にまとめる。
{| class="wikitable"
! 族 !! 名称 !! おもな元素 !! 価電子の数 !! なりやすいイオン
|-
| 1 || アルカリ金属 || <chem>Li, Na, K</chem> || 1 || 1価の陽イオン(<chem>Na+</chem> など)
|-
| 2 || アルカリ土類金属 || <chem>Be, Mg, Ca, Sr, Ba</chem> || 2 || 2価の陽イオン(<chem>Ca^2+</chem> など)
|-
| 13 || — || <chem>B, Al</chem> || 3 || <chem>Al</chem> は3価の陽イオン <chem>Al^3+</chem>
|-
| 16 || — || <chem>O, S</chem> || 6 || 2価の陰イオン(<chem>O^2-, S^2-</chem>)
|-
| 17 || ハロゲン || <chem>F, Cl, Br, I</chem> || 7 || 1価の陰イオン(<chem>Cl-</chem> など)
|-
| 18 || 貴ガス || <chem>He, Ne, Ar</chem> || 0 || イオンになりにくい
|}
==== 周期表の成り立ち ====
1869年、ロシアのメンデレーエフは、当時知られていた約60種類の元素を原子量の順に並べ、性質の似た元素が同じ列に並ぶように配置した表を発表した。これが周期表の始まりである。メンデレーエフは、表の中で当てはまる元素が見つかっていない場所を空欄とし、そこに入るべき元素の存在と性質を予言した。その後、ガリウム(1875年)、スカンジウム(1879年)、ゲルマニウム(1886年)が発見され、その性質が予言とよく一致したことから、周期表は広く認められるようになった。
現在の周期表は、原子量ではなく原子番号(陽子の数)の順に元素を並べている。原子量の順に並べると、<chem>Ar</chem>(原子量 39.95)と <chem>K</chem>(原子量 39.10)、<chem>Te</chem>(原子量 127.6)と <chem>I</chem>(原子量 126.9)のように、性質の並びと順序が逆転する組があるが、原子番号の順ではこのような逆転は起こらない。
=== 周期表と性質の変化 ===
[[高等学校化学基礎/物質の構成|物質の構成]]の章で学んだように、元素を原子番号の順に並べた表を'''周期表'''と呼ぶ。原子番号が増えると、元素の性質は周期的に変化する。これを'''周期律'''という。
周期表の中で、左上の水素と、右上にある典型元素は非金属元素であり、その他中央~左下にかけては金属元素が分布している。ただし、ホウ素やケイ素など、金属元素と非金属元素の境目にあるような物質は、金属と非金属との中間的な性質をもつものが多い。
==== 周期表と電子配置 ====
周期表の周期は、原子の最も外側の電子殻(最外殻)の番号に対応する。同じ周期の元素は、同じ電子殻に電子が入り始めた元素である。同じ族の典型元素は、価電子の数が等しいため、似た性質をもつ。
たとえば1族の <chem>Li, Na, K</chem> は、いずれも価電子を1個もち、1価の陽イオン <chem>Li+, Na+, K+</chem> になりやすい。17族の <chem>F, Cl, Br, I</chem> は価電子を7個もち、1価の陰イオン <chem>F-, Cl-, Br-, I-</chem> になりやすい。18族の貴ガスは、最外殻電子の配置が安定で、他の原子と結合しにくい。
第1周期から第3周期までの元素の電子配置を、次の表に示す。数字は、K殻・L殻・M殻に入っている電子の数である。
{| class="wikitable"
! 族 !! 1 !! 2 !! 13 !! 14 !! 15 !! 16 !! 17 !! 18
|-
! 第1周期
| <chem>H</chem> 1 || || || || || || || <chem>He</chem> 2
|-
! 第2周期
| <chem>Li</chem> 2,1 || <chem>Be</chem> 2,2 || <chem>B</chem> 2,3 || <chem>C</chem> 2,4 || <chem>N</chem> 2,5 || <chem>O</chem> 2,6 || <chem>F</chem> 2,7 || <chem>Ne</chem> 2,8
|-
! 第3周期
| <chem>Na</chem> 2,8,1 || <chem>Mg</chem> 2,8,2 || <chem>Al</chem> 2,8,3 || <chem>Si</chem> 2,8,4 || <chem>P</chem> 2,8,5 || <chem>S</chem> 2,8,6 || <chem>Cl</chem> 2,8,7 || <chem>Ar</chem> 2,8,8
|-
! 価電子の数
| 1 || 2 || 3 || 4 || 5 || 6 || 7 || 0
|}
第4周期の <chem>K</chem> と <chem>Ca</chem> では、M殻に8個の電子が入ったところで、N殻に電子が入る(<chem>K</chem> は 2,8,8,1、<chem>Ca</chem> は 2,8,8,2)。その後の遷移元素(<chem>Sc</chem> から <chem>Zn</chem>)では、最外殻のN殻の電子は1個か2個のまま、内側のM殻に電子が入っていく。遷移元素で価電子の数がほとんど変化しないのは、このためである。
==== 原子半径 ====
原子の大きさは、周期表の中で次のように変化する。
* 同じ周期では、原子番号が大きくなるほど(右へ行くほど)原子半径は小さくなる。最外殻が同じであるのに、原子核の正電荷が増して電子を強く引きつけるためである。
* 同じ族では、周期が大きくなるほど(下へ行くほど)原子半径は大きくなる。電子殻の数が増えるためである。
したがって、原子半径は周期表の左下の元素ほど大きく、右上の元素ほど小さい(貴ガスを除く)。
===== イオン半径 =====
原子が陽イオンになると、電子が減るため電子どうしの反発が弱まり、原子核による引力の影響が相対的に強くなるため、もとの原子より小さくなる。また、陽イオンになるときに最外殻の電子をすべて失って電子殻が1つ減る場合、半径は大きく減少する。たとえば、<chem> Na+ </chem> は <chem>Na</chem> より小さい。
逆に、原子が陰イオンになると、電子が増えて電子どうしの反発が強まり、電子雲が広がるため、もとの原子より大きくなる。たとえば、<chem> Cl- </chem> は <chem>Cl</chem> より大きい。
<chem>O^2-, F-, Na+, Mg^2+, Al^3+</chem> は、いずれも <chem>Ne</chem> と同じ電子配置(K殻2個、L殻8個)をもつ。このように電子配置が同じイオンでは、原子番号が大きいほど原子核の正電荷が大きく、電子を強く引きつけるため、イオン半径は小さくなる。
<chem>O^2-</chem> > <chem>F-</chem> > <chem>Na+</chem> > <chem>Mg^2+</chem> > <chem>Al^3+</chem>(イオン半径の大きい順)
==== イオン化エネルギー ====
ある原子から、電子を1個取り去って陽イオンとするために必要なエネルギーを、'''第1イオン化エネルギー'''と呼ぶ。これを単にイオン化エネルギーとも呼ぶ。たとえばナトリウムでは、次の変化に必要なエネルギーが第1イオン化エネルギーである。
:<chem>Na -> Na+ + e-</chem> <math>496\ \mathrm{kJ/mol}</math>
イオン化エネルギーが小さいほど陽イオンになりやすく、そのような性質をもった元素を'''陽性'''が強いという。
第1イオン化エネルギーは、次の図のように周期的に変化する。
[[ファイル:First ionization energies.png|元素順の第1イオン化エネルギー|300px]]
* 同じ周期の中では、おおむね原子番号とともに大きくなる。1族のアルカリ金属が最も小さく、18族の貴ガスが最も大きい。
* 同じ族の中では、周期が大きくなるほど小さくなる。電子殻の数が増えて、最外殻電子が原子核から遠くなるためである。
* 同じ周期の中でも、<chem>Be</chem> と <chem>B</chem>、<chem>N</chem> と <chem>O</chem> のように、増加の傾向からはずれる部分がある。これらは最外殻の電子配置の違いによる。
;発展:同じ周期でのイオン化エネルギーの例外
電子殻は、さらにいくつかの軌道に分かれている。L殻には、エネルギーの低い2s軌道(電子2個まで)と、やや高い2p軌道(電子6個まで)がある。<chem>B</chem> の5個目の電子は2p軌道に入るため、2s軌道の電子だけをもつ <chem>Be</chem> よりも取り去りやすい。また、<chem>O</chem> の2p軌道の4個目の電子は、すでに電子が入っている軌道に対をつくって入るため、電子どうしの反発で取り去りやすくなる。このため、<chem>Be</chem> と <chem>B</chem>、<chem>N</chem> と <chem>O</chem> の間で、第1イオン化エネルギーが逆転する。
一般に、第1イオン化エネルギーよりも、原子から2個目、3個目の電子を取り去るために必要なエネルギー(第2、第3イオン化エネルギー)のほうが大きい。これは、陽イオンから電子を取り去るほうが、静電気力による引力に逆らう量が大きいためである。次の表に、<chem>Na</chem> と <chem>Mg</chem> の値を示す。
{| class="wikitable"
! 元素 !! 第1 !! 第2 !! 第3 (kJ/mol)
|-
| <chem>Na</chem> || 496 || 4562 || 6910
|-
| <chem>Mg</chem> || 738 || 1451 || 7733
|}
<chem>Na</chem> は第1と第2の間で値が大きく増え、<chem>Mg</chem> は第2と第3の間で大きく増える。これは、<chem>Na</chem> は価電子が1個、<chem>Mg</chem> は2個であり、それより内側の閉殻の電子は取り去りにくいことを示している。このため、<chem>Na</chem> は1価、<chem>Mg</chem> は2価の陽イオンになる。
==== 電子親和力 ====
ある原子の最外殻に電子を1つ加えて陰イオンとするときに、原子が放出するエネルギーを'''電子親和力'''と呼ぶ。たとえば塩素では、次の変化で放出されるエネルギーが電子親和力である。
:<chem>Cl + e- -> Cl-</chem> <math>349\ \mathrm{kJ/mol}</math>
電子親和力が大きいということは、陰イオンの状態のほうが安定であり、陰イオンになりやすいことを意味する。このような性質を'''陰性'''が強いという。
電子親和力は、同じ周期ではおおむね族番号が大きいほど大きく、17族のハロゲンで最大となる。ただし、貴ガスは電子を受け取って安定な陰イオンをつくらない。同じ族では、周期が大きくなると電子親和力は小さくなる傾向があるが、<chem>F</chem> は <chem>Cl</chem> よりも小さいという例外がある。
{| class="wikitable"
! 元素 !! <chem>Li</chem> !! <chem>C</chem> !! <chem>O</chem> !! <chem>F</chem> !! <chem>Na</chem> !! <chem>Si</chem> !! <chem>S</chem> !! <chem>Cl</chem> !! <chem>Br</chem> !! <chem>I</chem>
|-
! 電子親和力 (kJ/mol)
| 60 || 122 || 141 || 328 || 53 || 134 || 200 || 349 || 325 || 295
|}
同じ周期の中では、族番号が大きいほどイオン化エネルギーは大きく、電子親和力も大きい(貴ガスを除く)。同じ族の中で比較すると、周期が大きくなるほどイオン化エネルギーは小さくなる。したがって、周期表の中では、右上の元素ほど陰性が強く、左下の元素ほど陽性が強いということがいえる。
==== 電気陰性度 ====
化学結合している2原子のうち、結合に使われている電子を引きつける強さを表す尺度を'''電気陰性度'''という。電気陰性度が大きいほど、電子を引きつけやすい。電気陰性度には、イオン化エネルギーと電子親和力の両方が関係している。
電気陰性度の代表的な値(ポーリングの値)を示す。
{| class="wikitable"
! 族 !! 1 !! 2 !! 13 !! 14 !! 15 !! 16 !! 17
|-
! 第2周期
| <chem>Li</chem> 0.98 || <chem>Be</chem> 1.57 || <chem>B</chem> 2.04 || <chem>C</chem> 2.55 || <chem>N</chem> 3.04 || <chem>O</chem> 3.44 || <chem>F</chem> 3.98
|-
! 第3周期
| <chem>Na</chem> 0.93 || <chem>Mg</chem> 1.31 || <chem>Al</chem> 1.61 || <chem>Si</chem> 1.90 || <chem>P</chem> 2.19 || <chem>S</chem> 2.58 || <chem>Cl</chem> 3.16
|}
電気陰性度は、周期表の右上の元素ほど大きく、左下の元素ほど小さい(貴ガスは通常、値を定めない)。フッ素が最大である。
結合する2原子の電気陰性度の差が大きいほど、結合の電子の偏り(極性)が大きい。たとえば <chem>H</chem>(2.20)と <chem>Cl</chem>(3.16)が結合した塩化水素 <chem>HCl</chem> では、電子が <chem>Cl</chem> 側に偏り、<chem>Cl</chem> がわずかに負、<chem>H</chem> がわずかに正に帯電する。
==== 第3周期の元素の単体と酸化物 ====
第3周期の元素について、単体と酸化物の性質を比べると、左から右へ、金属から非金属へと規則的に変化していることがわかる。
{| class="wikitable"
! 元素 !! <chem>Na</chem> !! <chem>Mg</chem> !! <chem>Al</chem> !! <chem>Si</chem> !! <chem>P</chem> !! <chem>S</chem> !! <chem>Cl</chem>
|-
! 単体の分類
| colspan="3" | 金属 || colspan="4" | 非金属
|-
! おもな酸化物
| <chem>Na2O</chem> || <chem>MgO</chem> || <chem>Al2O3</chem> || <chem>SiO2</chem> || <chem>P4O10</chem> || <chem>SO3</chem> || <chem>Cl2O7</chem>
|-
! 酸化物の性質
| colspan="2" | 塩基性酸化物 || 両性酸化物 || colspan="4" | 酸性酸化物
|}
金属元素の酸化物は、水と反応して塩基を生じたり、酸と反応して塩を生じたりする塩基性酸化物であることが多い。非金属元素の酸化物は、水と反応して酸を生じたり、塩基と反応して塩を生じたりする酸性酸化物であることが多い。
<chem>Na2O + H2O -> 2NaOH</chem>
<chem>SO3 + H2O -> H2SO4</chem>
境界付近の <chem>Al</chem> の酸化物 <chem>Al2O3</chem> は、酸とも強塩基とも反応する両性酸化物である。
<chem>Al2O3 + 6HCl -> 2AlCl3 + 3H2O</chem>
<chem>Al2O3 + 2NaOH + 3H2O -> 2Na[Al(OH)4]</chem>
なお、<chem>SiO2</chem> は水に溶けないが、塩基(高温で融解した <chem>NaOH</chem> など)と反応して塩をつくるので、酸性酸化物に分類される。
==== 例題 ====
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題1 イオン化エネルギーと電気陰性度'''
|-
|style="padding:5px"|
次の問いに答えよ。ただし、<chem>Na</chem> の原子量を 23、第1イオン化エネルギーを <math>496\ \mathrm{kJ/mol}</math> とする。
# 次の原子のうち、第1イオン化エネルギーが最も大きいものを選べ。<chem>Li, Na, K, Ne</chem>
# 次の元素を、電気陰性度の大きい順に並べよ。<chem>O, F, Cl, Na</chem>
# <chem>Na</chem> の気体原子 <math>1.0\ \mathrm{g}</math> から電子を1個ずつ取り去るために必要なエネルギーは何 kJ か。
|}
{{解答|例題1の解答}}
# <chem>Ne</chem>。貴ガスは同じ周期で第1イオン化エネルギーが最大であり、また同じ周期の <chem>Li</chem> や、周期が大きい <chem>Na, K</chem> よりも大きい。
# <chem>F</chem> > <chem>O</chem> > <chem>Cl</chem> > <chem>Na</chem>。右上の元素ほど大きく、<chem>F</chem> が最大である。第2周期の <chem>O</chem>(3.44)は第3周期の <chem>Cl</chem>(3.16)より大きい。
# <chem>Na</chem> の物質量は <math>\frac{1.0}{23} = 0.0435\ \mathrm{mol}</math> であるから、<math>0.0435 \times 496 = 21.6 \approx 22\ \mathrm{kJ}</math>。
{{証明終わり}}
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題2 電子配置・イオン半径・酸化物'''
|-
|style="padding:5px"|
次の問いに答えよ。ただし、<chem>Mg</chem> の原子量を 24、第1イオン化エネルギーを <math>738\ \mathrm{kJ/mol}</math>、第2イオン化エネルギーを <math>1451\ \mathrm{kJ/mol}</math> とする。
# 原子番号16の元素について、元素記号、電子配置(K殻・L殻・M殻の電子の数)、価電子の数、なりやすいイオンを答えよ。
# <chem>Cl-, K+, Ca^2+, S^2-</chem> を、イオン半径の大きい順に並べよ。
# <chem>Mg</chem> の気体原子 <math>1.0\ \mathrm{g}</math> を、すべて気体の <chem>Mg^2+</chem> にするために必要なエネルギーは何 kJ か。
# 次の酸化物を、酸性酸化物・塩基性酸化物・両性酸化物に分類せよ。<chem>CaO, CO2, Al2O3, SO2, Na2O</chem>
|}
{{解答|例題2の解答}}
# 元素記号は <chem>S</chem>、電子配置は K殻2個・L殻8個・M殻6個、価電子の数は6、なりやすいイオンは2価の陰イオン <chem>S^2-</chem> である。
# <chem>S^2-</chem> > <chem>Cl-</chem> > <chem>K+</chem> > <chem>Ca^2+</chem>。4つのイオンはいずれも <chem>Ar</chem> と同じ電子配置(2,8,8)をもつので、原子番号が大きいほど、原子核が電子を強く引きつけてイオン半径は小さくなる。
# <chem>Mg -> Mg^2+ + 2e-</chem> には、第1と第2のイオン化エネルギーの和 <math>738 + 1451 = 2189\ \mathrm{kJ/mol}</math> が必要である。<chem>Mg</chem> の物質量は <math>\frac{1.0}{24}\ \mathrm{mol}</math> であるから、<math>\frac{1.0}{24} \times 2189 = 91.2 \approx 91\ \mathrm{kJ}</math>。
# 酸性酸化物は <chem>CO2, SO2</chem>、塩基性酸化物は <chem>CaO, Na2O</chem>、両性酸化物は <chem>Al2O3</chem> である。非金属元素の酸化物は酸性酸化物、<chem>Al, Zn, Sn, Pb</chem> などの両性金属を除く金属元素の酸化物は塩基性酸化物になることが多い。たとえば <chem>CaO</chem> は水と反応して塩基を生じる(<chem>CaO + H2O -> Ca(OH)2</chem>)。
{{証明終わり}}
----
{{DEFAULTSORT:ひきんそくけんそのたんたいとかこうふつ けんそとしゆうきひよう}}
[[Category:高等学校化学]]
[[カテゴリ:元素]]
21t431j7r74m8pntpjidwp6vbqo4zpl
高校化学 遷移金属
0
10730
304837
299789
2026-10-18T02:33:53Z
Nermer314
62933
304837
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校理科|高等学校化学|[[高等学校 化学|化学]]|pagename=遷移金属|frame=1|small=1}}[[File:Eisen 1.jpg|100px|鉄|代替文=鉄|サムネイル]]
== 鉄 ==
=== 性質 ===
'''鉄''' <chem>Fe</chem> の単体は灰白色で比較的やわらかい。また、合金にして鉄道のレール、流し台や窓枠のステンレス鋼、建築材の鉄骨など、さまざまなものに鉄が用いられている。[[File:Castingiron.jpg|100px|鉄製品の鋳造|代替文=鉄製品の鋳造|サムネイル]]
=== 製法 ===
鉄鉱石からの鉄の精錬では、赤鉄鉱 <chem>Fe2O3</chem> や磁鉄鉱 <chem>Fe3O4</chem> などの鉄鉱石を溶鉱炉で溶かし、コークス <chem>C</chem> 、石灰石 <chem>CaCO3</chem> を加える。コークスの燃焼で発生する一酸化炭素 <chem>CO</chem> が鉄鉱石を還元して、鉄となる。
[[ファイル:Hochofenprozess.PNG|サムネイル|477x477ピクセル|高炉プロセスの概略図。ドイツ語の表記は、Trocken- und Vorwärmzone:乾燥および予熱の領域、Reduktionszone:還元の領域、Kohlungszone:浸炭の領域、Schmelzzone:融解の領域、Roheisen:銑鉄、Schlacke:スラグ、Erz:鉱石、Koks:コークス、Zuschläge:添加物、Gichtgas:高炉ガス。]]
: <chem>CO</chem> の生成: <chem>C + O2 -> CO2</chem>
: <chem>CO2 + C -> 2CO</chem>
鉄鉱石は段階的に次のように還元される。
<chem>Fe2O3 -> Fe3O4 -> FeO -> Fe</chem>
それぞれの反応式は
450 ℃: <chem>3Fe2O3 + CO -> 2Fe3O4 + CO2 ^</chem>
800 ℃: <chem>Fe3O4 + CO -> 3FeO + CO2 ^</chem>
1200 ℃: <chem>FeO + CO -> Fe + CO2 ^</chem>
全体での反応は次の反応式で表される。
:<chem>Fe2O3 + 3CO -> 2Fe + 3CO2 ^</chem>
また、不純物を取り除くため'''石灰石''' <chem>CaCO3</chem> を加える。石灰石によりシリカ <chem>SiO2</chem> やアルミナ <chem>Al2O3</chem> などの脈石(岩石を構成する成分)が分離される。このようにして高炉で得られた鉄を'''{{ruby|銑鉄|せんてつ}}'''という。
なお、高炉の内側の耐火性のレンガにより、高炉は高温に耐えられるようになっている。
石灰石は熱分解して酸化カルシウムとなり、これが鉱石中の二酸化ケイ素と反応して'''スラグ''' <chem>CaSiO3</chem> を形成する。
: <chem>CaCO3 -> CaO + CO2 ^</chem>
: <chem>CaO + SiO2 -> CaSiO3</chem>
スラグは密度が銑鉄より小さいため、銑鉄の上に浮く。スラグはセメントの原料になるため、廃棄せず分離して回収する。
銑鉄は炭素を質量比で4%ほど含む。鉄中の炭素が多いと、粘りがなくなり、衝撃に対してもろく、硬いが割れやすくなる。銑鉄は割れやすいが、混合物のため融点が低く、流動性も良いので、鋳造に用いられる。そのため、炭素含有量の多い鉄は{{ruby|鋳鉄|ちゅうてつ}}と呼ばれる。
鋳鉄は割れやすいため、建築材には向いていない。丈夫な鉄を得るには、銑鉄の炭素量を適量に減らす必要があり、転炉で酸素を吹き込んで炭素を燃焼させて取り除く。この酸化熱は、鉄を溶かし続ける熱源に使える。
炭素を0.02%~2%ほど含む鉄を'''鋼'''という。
建築材などの構造材に用いられるのは、十分な硬さと強さをもたせた鋼である。
高炉では、添加物のため融点が下がり、およそ1400℃で融解して、溶鉱炉の底に溶けた鉄がたまる。
鉄の化学的性質として、鉄の単体および銑鉄や鋳鉄は、湿った空気中で酸化されやすく、さびやすい。さびを防ぐために、鋼にクロム <chem>Cr</chem> やニッケル <chem>Ni</chem> などを混ぜた合金が'''ステンレス鋼'''である。このステンレス鋼は化学的な耐食性が高く、さびにくいため、建築材や台所部材として用いられる。
=== 鉄の化学的性質 ===
純度の高い鉄の単体は、灰白色であり、比較的やわらかい。
鉄には酸化数 +2 または +3 の化合物がある。
鉄の酸化物には、黒色の酸化鉄(II) <chem>FeO</chem> 、赤褐色の酸化鉄(III) <chem>Fe2O3</chem> 、黒色の四酸化三鉄 <chem>Fe3O4</chem> などがある。
鉄は、湿った空気中で酸化されやすい。鉄の赤さびは、酸化鉄(III) <chem>Fe2O3</chem> を主成分とする。
鉄は、酸に溶けて水素を生じる。
: <chem>Fe + 2HCl -> FeCl2 + H2 ^</chem>
希硫酸に加えると、水素を発生して溶け、淡緑色の溶液になる。この水溶液から水を蒸発させて濃縮すると、硫酸鉄(II)七水和物 <chem>FeSO4*7H2O</chem> が得られる。
濃硝酸では、表面に皮膜ができる不動態となり、それ以上は反応が進行しない。
=== 強磁性体 ===
鉄 <chem>Fe</chem> 、ニッケル <chem>Ni</chem> 、コバルト <chem>Co</chem> は、単体で磁性を帯びることができる金属である。
一方、銅やアルミニウムは、磁化されない。
鉄、ニッケル、コバルトのように、磁石になることができる物質を'''強磁性体'''という。
=== 鉄イオンの水溶液 ===
鉄イオンには2価と3価のものがあり、価数により異なる性質をもつ。
=== 鉄(II)イオン ===
鉄(II)イオン <chem>Fe^2+</chem> は淡緑色をしている。アンモニア水や水酸化ナトリウム水溶液のような塩基と反応して、水酸化鉄(II)の緑白色沈殿を生じる。
: <chem>Fe^2+ + 2OH^- -> Fe(OH)2 v</chem>
この沈殿は空気中で酸化されて、水酸化鉄(III)になる。
: <chem>4Fe(OH)2 + O2 + 2H2O -> 4Fe(OH)3</chem>
硫化水素とは塩基性条件下で反応して、硫化鉄(II)の黒色沈殿を生じる。酸性条件下では反応しない。
: <chem>Fe^2+ + S^2- -> FeS v</chem>
酸化剤である過酸化水素水を加えると、イオンが酸化されて <chem>Fe^3+</chem> となり、黄褐色の水溶液となる。
: <chem>2Fe^2+ + H2O2 + 2H^+ -> 2Fe^3+ + 2H2O</chem>
* ヘキサシアニド鉄(III)酸カリウム水溶液 <chem>K3[Fe(CN)6]</chem> を <chem>Fe^2+</chem> 水溶液に加えると、'''ターンブルブルー'''と呼ばれる濃青色の沈殿を生じる。一方、<chem>Fe^3+</chem> 水溶液に加えると暗褐色の水溶液となる。
このヘキサシアニド鉄(III)酸カリウム水溶液の反応は、鉄イオンの検出に用いられる。
=== 鉄(III)イオン ===
一方、鉄(III)イオン <chem>Fe^3+</chem> は黄褐色をしている。アンモニア水や水酸化ナトリウム水溶液のような塩基と反応して、水酸化鉄(III)の赤褐色沈殿を生じる。
: <chem>Fe^3+ + 3OH^- -> Fe(OH)3 v</chem>
硫化水素とは塩基性条件下で反応して、いったんイオンが還元されて <chem>Fe^2+</chem> となった後、硫化鉄(II)の黒色沈殿を生じる。酸性条件下ではイオンが還元されて <chem>Fe^2+</chem> となり、硫化水素が酸化されて生じた硫黄によって白濁するが、硫化鉄(II)の沈殿は生じない。
: <chem>2Fe^3+ + H2S -> 2Fe^2+ + S v + 2H^+</chem>
: <chem>Fe^2+ + S^2- -> FeS v</chem>
鉄(III)イオンの塩として、塩化鉄(III)六水和物 <chem>FeCl3*6H2O</chem> がある。黄褐色の固体であるが、潮解性がある。
[[File:Chlorid železitý.JPG|center|200px|塩化鉄(III)六水和物の潮解|代替文=塩化鉄(III)六水和物の潮解|サムネイル]]
鉄イオンは、上記のほかにも次のような反応をする。これらは、鉄イオンの検出・分離に有用である。
[[File:Eisen(III)-Ionen und Thiocyanat.JPG|150px|鉄(III)イオン水溶液(左)にチオシアン酸カリウム水溶液を加える(右)|代替文=鉄(III)イオン水溶液(左)にチオシアン酸カリウム水溶液を加える(右)|サムネイル]]
* チオシアン酸カリウム水溶液 <chem>KSCN</chem> を <chem>Fe^3+</chem> 水溶液に加えると、血赤色の水溶液となる。なお、<chem>Fe^2+</chem> 水溶液とは反応しない。
*: <chem>Fe^3+ + SCN^- -> [FeSCN]^2+</chem>
* ヘキサシアニド鉄(II)酸カリウム水溶液 <chem>K4[Fe(CN)6]</chem> を <chem>Fe^3+</chem> 水溶液に加えると、'''ベルリンブルー'''と呼ばれる濃青色の沈殿を生じる。
これらのチオシアン酸カリウム水溶液 <chem>KSCN</chem> やヘキサシアニド鉄(II)酸カリウム水溶液の反応は、鉄イオンの検出に用いられる。
[[File:Eisen(II),(III).JPG|center|250px|左から、鉄(II)イオン、ターンブルブルー、鉄(III)イオン、ベルリンブルー|代替文=左から、鉄(II)イオン、ターンブルブルー、鉄(III)イオン、ベルリンブルー|サムネイル]]
なお、ベルリンブルーとターンブルブルーは、同一の化合物である。
== 銅 ==
[[ファイル:Cu,29.jpg|代替文=|サムネイル|200x200ピクセル|銅]]
'''銅''' <chem>Cu</chem> は赤色の金属光沢をもつ金属である。展性・延性に富み、電気伝導性・熱伝導性が大きいことから、電線、調理器具、装飾品など、幅広く用いられている。
[[ファイル:StatueOfLiberty01.jpg|代替文=緑青に覆われた自由の女神|サムネイル|220x220ピクセル|緑青に覆われた自由の女神]]
銅は空気中で風雨にさらされると'''{{ruby|緑青|ろくしょう}}'''と呼ばれる青緑色の錆を生じる。たとえば名古屋城の屋根や、アメリカの自由の女神などは緑色をしているが、これは緑青によるものである。
: <chem>2Cu + CO2 + H2O + O2 -> CuCO3*Cu(OH)2</chem>
日本では、昭和後期まで緑青は毒性が強いと考えられていたが、動物実験による検証で、毒性はほとんどないことが分かった。
=== 製法 ===
銅の鉱産資源は、化合してない単体が産出することもあるが、ほとんどは黄銅鉱 <chem>CuFeS2</chem> などの鉱石として産出する。 銅の鉱石を加熱してニッケルや金などの不純物を含む粗銅をつくり、これを電解精錬することにより純度の高い銅(99.97%程度)が得られる。電解精錬では、硫酸銅(II)水溶液を電解液として、陽極に粗銅板を、陰極に純銅板を用いて電気分解をすると、陽極の粗銅が溶解して銅(II)イオンを生じ、陰極には銅が析出する。
[[ファイル:Electrorefining copper jp.svg|thumb|銅の電解精錬|400px]]
: '''陽極''': <chem>Cu -> Cu^2+ + 2e^-</chem>
: '''陰極''': <chem>Cu^2+ + 2e^- -> Cu</chem>
陽極の下には、溶液に溶けなかった金や銀などの不純物がたまる。これを'''陽極泥'''という。
=== 銅の精錬 ===
銅の精錬には、まず、黄銅鉱など銅鉱石を溶鉱炉で溶かす。溶鉱炉にはコークス <chem>C</chem> およびケイ砂 <chem>SiO2</chem> を加える。
: <chem>2CuFeS2 + 4O2 + 2SiO2 -> Cu2S + 2FeSiO3 + 3SO2 ^</chem>
硫化銅(I) <chem>Cu2S</chem> は「かわ」とよばれ、炉の下層に沈む。<chem>FeSiO3</chem> は上層に分離し、「からみ」という。なお、<chem>FeSiO3</chem> を <chem>FeO*SiO2</chem> と書く場合もある。
この硫化銅(I)に転炉で空気を吹き込むと、銅が遊離する。
: <chem>Cu2S + O2 -> 2Cu + SO2 ^</chem>
こうして転炉でつくった銅を'''粗銅'''という。粗銅の純度は98.5%程度である。
=== 化学的な性質 ===
銅は塩素と激しく反応して、塩化銅(II)を生じる。
: <chem>Cu + Cl2 -> CuCl2</chem>
銅はイオン化傾向が小さく、希硫酸や塩酸には溶けない。しかし、硝酸や熱濃硫酸(濃硫酸であり加熱したもの)といった酸化力の強い酸には溶けて、銅(II)イオンを生じる。
: '''希硝酸''': <chem>3Cu + 8HNO3 -> 3Cu(NO3)2 + 4H2O + 2NO ^</chem>
: '''濃硝酸''': <chem>Cu + 4HNO3 -> Cu(NO3)2 + 2H2O + 2NO2 ^</chem>
: '''熱濃硫酸''': <chem>Cu + 2H2SO4 -> CuSO4 + 2H2O + SO2 ^</chem>
=== 水溶液の性質 ===
[[ファイル:CopperSulphate.JPG|代替文=銅(II)イオン水溶液|サムネイル|銅(II)イオン水溶液]]
銅(II)イオン <chem>Cu^2+</chem> 水溶液は青色をしている。これに水酸化ナトリウム水溶液、またはアンモニア水を少量加えると、水酸化銅(II) <chem>Cu(OH)2</chem> の青白色沈殿を生じる。
: <chem>Cu^2+ + 2OH^- -> Cu(OH)2 v</chem>
これに、さらにアンモニア水を過剰に加えると、テトラアンミン銅(II)イオン <chem>[Cu(NH3)4]^2+</chem> を生じて溶け、深青色の水溶液となる。
: <chem>Cu(OH)2 + 4NH3 -> [Cu(NH3)4]^2+ + 2OH^-</chem>
=== 酸化物 ===
水酸化銅(II)を加熱すると、黒色の酸化銅(II) <chem>CuO</chem> を生じる。
: <chem>Cu(OH)2 -> CuO + H2O</chem>
酸化銅(II)は黒色であるが、高温で加熱すると赤色の酸化銅(I) <chem>Cu2O</chem> となる。
{| align="center" style="border:solid #aaffaa 1px; text-align:center;"
|[[ファイル:CopperIIoxide.jpg|192x192ピクセル|酸化銅(II)]]
|[[ファイル:CopperIoxide.jpg|251x251ピクセル|酸化銅(I)]]
|-
|酸化銅(II)
|酸化銅(I)
|}
=== 硫化物 ===
銅(II)イオン水溶液に硫化水素 <chem>H2S</chem> を通じると、硫化銅(II) <chem>CuS</chem> の黒色沈殿を生じる。
: <chem>Cu^2+ + H2S -> 2H^+ + CuS v</chem>
[[ファイル:Copper_sulfate.jpg|代替文=硫酸銅(II)五水和物|サムネイル|102x102ピクセル|硫酸銅(II)五水和物]]
銅と硫酸の化合物である硫酸銅(II)五水和物 <chem>CuSO4*5H2O</chem> は青色の結晶である。水に溶かすと青色の水溶液となる。これを加熱すると白色の硫酸銅(II)無水物 <chem>CuSO4</chem> の粉末となるが、水を加えると再び青色となる。この反応は水の検出に用いられる。
[[ファイル:Hydrating-copper(II)-sulfate.jpg|代替文=水の検出|中央|サムネイル|250x250ピクセル|水の検出]]
=== 銅の合金 ===
銅は、さまざまな合金の原料である。
: {{ruby|黄|おう}}銅(ブラス)とは、銅と亜鉛との合金である。
: 青銅(ブロンズ)とは、銅とスズとの合金である。
: 白銅とは、銅とニッケルとの合金である。
: 洋銀とは、銅と亜鉛とニッケルの合金である。
{| align="center" style="border:solid #aaffaa 1px; text-align:center;"
|[[ファイル:Trombone_CG_Bach42AG.jpg|200x200ピクセル|黄銅]]
|[[ファイル:Baltesspannarna_Gbg_-_J_P_Molin.jpg|200x200ピクセル|青銅]]
|[[ファイル:100JPY.JPG|300x300ピクセル|白銅]]
|-
|黄銅(金管楽器)
|青銅(ブロンズ像)
|白銅(100円玉)
|}
: 十円硬貨は、銅に亜鉛3%と錫2%を加えた青銅である。
: 五円硬貨は黄銅である。
: 五百円硬貨には、銅・亜鉛・ニッケルの合金(ニッケル黄銅)が使われている。
== 銀 ==
銀 '''<chem>Ag</chem>''' は白色の金属光沢をもつ金属である。すべての金属の中で、熱伝導性と電気伝導性が最も高い。
銀イオンの水溶液は無色であるが、水酸化ナトリウム水溶液、または少量のアンモニア水を加えると、酸化銀(I) <chem>Ag2O</chem> の褐色沈殿を生じる。
: <chem>2Ag^+ + 2OH^- -> Ag2O v + H2O</chem>
この沈殿に、さらに過剰のアンモニア水を加えると、沈殿が溶けてジアンミン銀(I)イオン <chem>[Ag(NH3)2]^+</chem> を生じ、無色の水溶液となる。
: <chem>Ag2O + 4NH3 + H2O -> 2[Ag(NH3)2]^+ + 2OH^-</chem>
:※ 銅の単元でも似たような反応を説明したが、いくつかの金属元素の水酸化物の沈殿は、過剰のアンモニア水を加えると[[高校化学 化学結合#配位結合|錯イオン]]を形成して溶け、水溶液になる。このことを理解しておけば、あとは、どの金属がどの色の沈殿をつくるかを覚えればよい。
:一方、水酸化ナトリウム水溶液を過剰に加えても、鉄の水酸化物や銅の水酸化物の沈殿は溶けない。錯イオンの形成が、過剰のアンモニア水に溶ける理由の本質であると考えられる。
銀イオン水溶液にクロム酸カリウム水溶液を加えると、クロム酸銀の赤褐色沈殿を生じる。
: <chem>2Ag^+ + CrO4^2- -> Ag2CrO4 v</chem>
銀イオン水溶液に硫化水素を通じると、硫化銀の黒色沈殿を生じる。
: <chem>2Ag^+ + H2S -> Ag2S v + 2H^+</chem>
* ハロゲン化物イオンとの反応
銀イオン水溶液に塩酸 <chem>HCl</chem> を加えると、塩化銀の白色沈殿を生じる。塩酸に限らず、ハロゲン化水素の水溶液を加えると、ハロゲン化銀の沈殿を生じる。
: <chem>Ag^+ + Cl^- -> AgCl v</chem>(白色)
: <chem>Ag^+ + Br^- -> AgBr v</chem>(淡黄色)
: <chem>Ag^+ + I^- -> AgI v</chem>(黄色)
* ハロゲン化銀
フッ化銀 <chem>AgF</chem> は、水に溶けやすい。フッ化銀以外のハロゲン化銀は水に溶けにくい。塩化銀は、アンモニア水、チオ硫酸ナトリウム水溶液、シアン化カリウム水溶液のいずれにも、錯イオンを形成して溶ける。臭化銀は、濃アンモニア水に少し溶け、チオ硫酸ナトリウム水溶液とシアン化カリウム水溶液には溶ける。水溶液はいずれも無色である。ヨウ化銀は溶解度が非常に小さく、溶けない。(水に対する溶解度は <math>10^{-8}\, \mathrm{mol/L}</math> 、アンモニア水に対する溶解度も <math>10^{-5} \, \mathrm{mol/L}</math> 程度と非常に小さい。)
また、ハロゲン化銀は、光を当てると、分解して、銀が遊離する。この性質を感光性といい、アナログカメラの写真はこの性質を利用している。カメラのフィルムには臭化銀 <chem>AgBr</chem> などが感光剤として含まれており、その感光性から写真を撮影することができる。
塩化銀の沈殿にチオ硫酸ナトリウム <chem>Na2S2O3</chem> 水溶液を加えると、ビス(チオスルファト)銀(I)酸イオンを生じ、無色の水溶液となる。
: <chem>AgCl + 2Na2S2O3 -> [Ag(S2O3)2]^3- + 3Na^+ + NaCl</chem>
=== イオン化傾向 ===
銀はイオン化傾向の小さい金属であり、塩酸や希硫酸には溶けない。しかし、熱濃硫酸や硝酸といった酸化力の強い酸には溶けて気体を発生する。
: 熱濃硫酸: <chem>2Ag + 2H2SO4 -> Ag2SO4 + 2H2O + SO2 ^</chem>
: 濃硝酸: <chem>Ag + 2HNO3 -> AgNO3 + H2O + NO2 ^</chem>
: 希硝酸: <chem>3Ag + 4HNO3 -> 3AgNO3 + 2H2O + NO ^</chem>
== 金と白金 ==
=== 金 ===
[[ファイル:Achaemenid_coin_daric_420BC_front.jpg|サムネイル|アケメネス朝ペルシアの金貨。紀元前5世紀ごろ]]
'''金''' <chem>Au</chem> は金属光沢のある黄橙色の金属である。イオン化傾向が小さく、反応性が低いことから単体として天然に存在する。純粋な金は柔らかく、展性・延性は全金属中最大である。密度は <math>19.3\ \mathrm{g/cm^3}</math> で、融点は1064 ℃である。金は通常の酸とは反応しないが、濃塩酸と濃硝酸を3:1で混合した'''王水'''には溶ける。
王水では、塩酸と硝酸が反応し塩化ニトロシル <chem>NOCl</chem> となって金と反応する。
<chem>HNO3 + 3HCl <=> 2H2O + NOCl + Cl2</chem>
<chem>Au + NOCl + Cl2 + HCl <=> H[AuCl4] + NO</chem>
{{multiple image|align=center|direction=horizontal|total_width=760|caption_align=center|image1=Dissolution of gold in aqua regia (I).JPG|alt1=|caption1=初期の状態|image2=Dissolution of gold in aqua regia (II).JPG|alt2=|caption2=中間の状態|image3=Dissolution of gold in aqua regia (III).JPG|alt3=|caption3=最終の状態|header_align=center|header='''王水に溶ける金'''}}
=== 白金 ===
[[ファイル:Platin_1.jpg|代替文=白金|左|サムネイル|152x152ピクセル|白金]]
[[ファイル:Sponsored_lantern_at_temple.jpg|代替文=金の利用|サムネイル|150x150ピクセル|金の利用]]
'''白金''' <chem>Pt</chem> は金属光沢のある白色の金属である。金と同様にイオン化傾向が小さく、反応性が低い。
金や白金は多く産出しないため、貴金属と呼ばれ、古くから硬貨や装飾品などに用いられてきた。しかし、これらは近年、工業的に重要な物質となってきている。たとえば、金は精密電子部品の配線に用いられ、白金は化学反応を速める触媒として用いられる。また、白金とイリジウムの合金は、かつてメートル原器の材質として用いられていた。
白金も金と同様に王水に溶ける。
{{multiple image|align=center|direction=horizontal|total_width=760|caption_align=center|image1=Plaatina reageerimine kuningveega 01.JPG|alt1=|caption1=王水の中にある[[:en:Wikipedia:Commemorative coins of the Soviet Union#Platinum coins|ソビエトの白金記念硬貨]]|image2=Plaatina reageerimine kuningveega 02.JPG|alt2=|caption2=中間の状態|image3=Plaatina reageerimine kuningveega 03.JPG|alt3=|caption3=四日後の状態|header_align=center|header='''王水に溶ける白金'''}}
== 亜鉛 ==
'''亜鉛''' '''<chem>Zn</chem>''' は周期表12族の元素であり、原子は価電子を2個もち、2価の陽イオンになりやすい。
亜鉛の単体は、銀白色の金属である。亜鉛は両性元素であり、酸とも塩基とも反応して水素を発生する。たとえば塩酸と水素を発生しながら反応して塩化亜鉛になる。
: <chem>Zn + 2HCl -> ZnCl2 + H2 ^</chem>
また、強塩基の水酸化ナトリウムと反応し、水素を発生してテトラヒドロキソ亜鉛(II)酸イオンを生じる。
: <chem>Zn + 2NaOH + 2H2O -> 2Na^+ + [Zn(OH)4]^2- + H2 ^</chem>
[[ファイル:Zinc_oxide.jpg|代替文=酸化亜鉛|サムネイル|200x200ピクセル|酸化亜鉛]]
* 用途
たとえば、一般的な乾電池の負極は亜鉛板でできている。また、鉄板に亜鉛をメッキした板は'''トタン'''と呼ばれ、屋根やバケツなどに用いられる。
==== 亜鉛の化合物とイオン ====
亜鉛に塩酸を加えると、先に見たように水素を発生しながら溶け、塩化亜鉛 <chem>ZnCl2</chem> を生じる。塩化亜鉛は水に溶ける物質で、水溶液中では亜鉛イオン <chem>Zn^2+</chem> として存在している。この亜鉛イオン水溶液に水酸化ナトリウム水溶液またはアンモニア水を少量加えると、水酸化亜鉛 <chem>Zn(OH)2</chem> の白色ゼリー状沈殿を生じる。
: <chem>Zn^2+ + 2OH^- -> Zn(OH)2 v</chem>
しかし、これに水酸化ナトリウム水溶液またはアンモニア水を過剰量加えると、沈殿は溶けて無色透明の水溶液となる。水酸化ナトリウム水溶液ではテトラヒドロキソ亜鉛(II)酸イオン <chem>[Zn(OH)4]^2-</chem> を生じ、アンモニア水ではテトラアンミン亜鉛(II)イオン <chem>[Zn(NH3)4]^2+</chem> を生じる。
: <chem>Zn(OH)2 + 2NaOH -> 2Na^+ + [Zn(OH)4]^2-</chem>
: <chem>Zn(OH)2 + 4NH3 -> [Zn(NH3)4]^2+ + 2OH^-</chem>
アンモニア水を過剰に加えて弱塩基性とした亜鉛イオン水溶液に硫化水素を通じると、硫化亜鉛 <chem>ZnS</chem> の白色沈殿を生じる。
: <chem>Zn^2+ + S^2- -> ZnS v</chem>
=== 酸化亜鉛 ===
酸化亜鉛 <chem>ZnO</chem> は白色の粉末で、水に溶けにくく、白色絵の具の顔料として用いられる。<chem>ZnO</chem> は両性酸化物であり、塩酸にも水酸化ナトリウムにも溶ける。
: <chem>ZnO + 2HCl -> ZnCl2 + H2O</chem>
: <chem>ZnO + 2NaOH + H2O -> Na2[Zn(OH)4]</chem>
酸化亜鉛は{{ruby|亜鉛華|あえんか}}とも呼ばれる。
=== 硫化亜鉛 ===
亜鉛イオン <chem>Zn^2+</chem> を含む水溶液を中性または塩基性にして、硫化水素を通じると、硫化亜鉛 <chem>ZnS</chem> の白色沈殿が生じる。
: <chem>Zn^2+ + S^2- -> ZnS v</chem>
硫化亜鉛は、微量の不純物を加えると光を当てた後に発光するので、夜光塗料などに用いられる。
== 水銀とカドミウム ==
=== カドミウム ===
'''カドミウム''' <chem>Cd</chem> はニッケルとともにニッケル-カドミウム電池として用いられる。
カドミウムイオンは硫化物イオンと結合して黄色の沈殿である硫化カドミウムを生じる。
: <chem>Cd^2+ + S^2- -> CdS v</chem>
硫化カドミウムは黄色絵の具の顔料として用いられる。
[[ファイル:Cadmium_sulfide.jpg|サムネイル|硫化カドミウム]]
=== 水銀 ===
[[ファイル:Hg_Mercury.jpg|右|サムネイル|200x200ピクセル|水銀]]
'''水銀''' <chem>Hg</chem> は常温常圧で液体として存在する唯一の単体金属<ref>単体金属では、ガリウムの融点が 29.76 ℃ であり、室温でも液体になり得る。常温や室温という語には明確な定義がないものの、一般的には29℃は常温と呼ぶにはやや高いだろう。なお、合金ではガリンスタン(ガリウム、インジウム、錫の合金)が常温で液体となる。</ref>である。水銀は他の金属と合金をつくりやすく、水銀の合金を'''アマルガム'''という。
水銀イオンは硫化物イオンと結合して黒色の沈殿を生じる。
: <chem>Hg^2+ + S^2- -> HgS v</chem>
水銀は、天然には辰砂(しんしゃ、主成分は <chem>HgS</chem>)などとして産出する。
[[ファイル:Cinnabar on Dolomite.jpg|サムネイル|辰砂]]
水銀は、蛍光灯にも用いられる。水銀は他の液体と比べて密度が高いため、圧力計に用いられていた。また、温度計にも用いられていた。現在では、水俣条約により、水銀を用いた製品の製造や輸出入が規制されている。
カドミウムや水銀などの重金属類は、工業でよく用いられるが、しばしば公害を引き起こした。たとえば、有機水銀化合物(メチル水銀)は水俣病の原因物質であり、カドミウムはイタイイタイ病の原因物質である。
{{-}}
== クロム・マンガン・タングステン ==
=== クロム ===
[[ファイル:Chrom.PNG|200x200ピクセル|クロム|代替文=クロム|サムネイル]]
'''クロム''' <chem>Cr</chem> は空気中でも水中でも常温で安定な金属である。銀白色の光沢をもつ。
化合物中での酸化数は、おもに +6 または +3 である。
クロムは、空気中では表面に酸化物の緻密な皮膜ができるので(不動態)、それ以上は酸化されず、安定である。
鉄の表面に施すクロムめっきは、この不動態の性質を利用して、さびを防ぐものである。
クロムは、ステンレス鋼の材料でもある。
==== イオン ====
酸化数が +6 のクロムの多原子イオンの主なものに、クロム酸イオン <chem>CrO4^2-</chem> がある。この水溶液は黄色であるが、酸を加えて溶液を酸性にすると、同じく酸化数が +6 の二クロム酸イオン <chem>Cr2O7^2-</chem> となり、橙色の水溶液となる。
: <chem>2CrO4^2- + 2H^+ <=> Cr2O7^2- + H2O</chem>
逆に、橙色の二クロム酸イオン水溶液に塩基を加えて溶液を塩基性にすると、クロム酸イオンの黄色水溶液となる。
{| align="center"
|[[ファイル:Kaliumchromat.jpg|315x315ピクセル|クロム酸カリウム水溶液]]
|
|[[ファイル:Kaliumdichromat.jpg|318x318ピクセル|二クロム酸カリウム水溶液]]
|- align="center"
|<chem>K2CrO4</chem>(黄色)<br>クロム酸カリウム水溶液
|
|<chem>K2Cr2O7</chem>(橙色)<br>二クロム酸カリウム水溶液
|}
クロム酸イオンは、さまざまな金属イオンと反応して沈殿となる。たとえば、クロム酸イオン水溶液に銀イオンを加えると、クロム酸銀の赤褐色沈殿が生成する。
: <chem>CrO4^2- + 2Ag^+ -> Ag2CrO4 v</chem>
また、クロム酸イオン水溶液に鉛(II)イオンやバリウムイオンを加えると、ともに黄色の沈殿を生じる。
: <chem>CrO4^2- + Pb^2+ -> PbCrO4 v</chem>(クロム酸鉛(II))
: <chem>CrO4^2- + Ba^2+ -> BaCrO4 v</chem>(クロム酸バリウム)
* 酸化作用
希硫酸を加えて酸性とした赤橙色の二クロム酸イオン水溶液は強い酸化剤であり、自身は還元されてクロム(III)イオン <chem>Cr^3+</chem> の緑色水溶液となる。
: <chem>Cr2O7^2- + 14H^+ + 6e^- -> 2Cr^3+ + 7H2O</chem>
=== マンガン ===
[[ファイル:Mangan_1.jpg|右|100x100ピクセル|マンガン]]
'''マンガン''' <chem>Mn</chem> は銀白色の金属である。空気中で簡単に酸化されるので、単体では用いない。合金の材料として利用されることがある。イオン化傾向が鉄より大きく、酸に溶ける。
==== 過マンガン酸カリウム ====
過マンガン酸カリウム <chem>KMnO4</chem> は酸化剤として有名で、過マンガン酸カリウム水溶液は赤紫色であるが、自身は還元されてマンガン(II)イオン <chem>Mn^2+</chem> の淡桃色水溶液となる。
: <chem>MnO4^- + 8H^+ + 5e^- -> Mn^2+ + 4H2O</chem>
たとえば、硫酸酸性の過マンガン酸カリウム水溶液は、過酸化水素と次のように反応して、赤紫色が消える。
: <chem>2MnO4^- + 5H2O2 + 6H^+ -> 2Mn^2+ + 5O2 ^ + 8H2O</chem>
この <chem>Mn^2+</chem> 水溶液にアンモニア水を加えて塩基性とした後、硫化水素を通じると、硫化マンガン(II)の淡桃色沈殿を生じる。
: <chem>Mn^2+ + S^2- -> MnS v</chem>
二酸化マンガンから過マンガン酸イオン水溶液を得ることができる。二酸化マンガンに水酸化カリウム水溶液を加え、酸化剤の存在下で加熱すると、緑色のマンガン酸イオン <chem>MnO4^2-</chem> の水溶液となる。これに希硫酸を加えると、過マンガン酸イオンの赤紫色水溶液となる。このとき、マンガン酸イオンの一部は二酸化マンガンになる。
: <chem>3MnO4^2- + 4H^+ -> 2MnO4^- + MnO2 v + 2H2O</chem>
==== 二酸化マンガン ====
二酸化マンガン <chem>MnO2</chem> は、黒色の粉末である。過酸化水素水の分解を速める触媒としてはたらく。
: <chem>2H2O2 ->[MnO2] 2H2O + O2 ^</chem>
また、酸化剤でもあり、たとえば塩酸を酸化して塩素とする。
: <chem>4HCl + MnO2 ->[\Delta] MnCl2 + 2H2O + Cl2 ^</chem>
二酸化マンガンは、マンガン乾電池の正極の材料として用いられている。
=== タングステン ===
タングステン <chem>W</chem> は融点が3422 ℃ときわめて高く、耐熱性が大きいので、電球のフィラメントなどに用いられる。金属の単体では、タングステンが最も融点が高い。
また、炭化タングステン <chem>WC</chem> は、かなり硬い。
== 金属イオンの反応のまとめ ==
この章で扱った金属イオンについて、水溶液の色と、塩基や硫化水素との反応を次の表にまとめる。
{| class="wikitable" style="text-align:center"
! rowspan="2" | イオン !! rowspan="2" | 水溶液の色 !! colspan="2" | 水酸化ナトリウム水溶液 !! colspan="2" | アンモニア水 !! colspan="2" | 硫化水素
|-
! 少量 !! 過剰 !! 少量 !! 過剰 !! 酸性 !! 中性・塩基性
|-
| <chem>Fe^2+</chem> || 淡緑色 || <chem>Fe(OH)2</chem>(緑白色) || 溶けない || <chem>Fe(OH)2</chem>(緑白色) || 溶けない || 沈殿しない || <chem>FeS</chem>(黒色)
|-
| <chem>Fe^3+</chem> || 黄褐色 || <chem>Fe(OH)3</chem>(赤褐色) || 溶けない || <chem>Fe(OH)3</chem>(赤褐色) || 溶けない || 硫黄が生じて白濁 || <chem>FeS</chem>(黒色)
|-
| <chem>Cu^2+</chem> || 青色 || <chem>Cu(OH)2</chem>(青白色) || 溶けない || <chem>Cu(OH)2</chem>(青白色) || <chem>[Cu(NH3)4]^2+</chem>(深青色) || <chem>CuS</chem>(黒色) || <chem>CuS</chem>(黒色)
|-
| <chem>Ag+</chem> || 無色 || <chem>Ag2O</chem>(褐色) || 溶けない || <chem>Ag2O</chem>(褐色) || <chem>[Ag(NH3)2]+</chem>(無色) || <chem>Ag2S</chem>(黒色) || <chem>Ag2S</chem>(黒色)
|-
| <chem>Zn^2+</chem> || 無色 || <chem>Zn(OH)2</chem>(白色) || <chem>[Zn(OH)4]^2-</chem>(無色) || <chem>Zn(OH)2</chem>(白色) || <chem>[Zn(NH3)4]^2+</chem>(無色) || 沈殿しない || <chem>ZnS</chem>(白色)
|}
過剰の水酸化ナトリウム水溶液に溶けるのは、両性元素である亜鉛の水酸化物である。過剰のアンモニア水に溶けるのは、アンミン錯イオンをつくる銅、銀、亜鉛の水酸化物や酸化物である。硫化水素との反応では、イオン化傾向の小さい銅や銀のイオンは酸性でも硫化物が沈殿するが、鉄や亜鉛のイオンは中性・塩基性でなければ沈殿しない。これらの違いを利用して、混合水溶液から金属イオンを分離することができる。
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題1 金属イオンの分離'''
|-
|style="padding:5px"|
<chem>Fe^3+, Cu^2+, Zn^2+</chem> を含む水溶液に、アンモニア水を過剰に加えた。沈殿として残るイオンはどれか。また、ろ液の色は何色か。
|}
{{解答|例題1の解答}}
水酸化物はいずれも沈殿するが、<chem>Cu(OH)2</chem> は <chem>[Cu(NH3)4]^2+</chem>、<chem>Zn(OH)2</chem> は <chem>[Zn(NH3)4]^2+</chem> となって溶ける。したがって、沈殿として残るのは <chem>Fe(OH)3</chem>(赤褐色)、すなわち <chem>Fe^3+</chem> である。ろ液は、<chem>[Cu(NH3)4]^2+</chem> を含むため深青色である。
{{証明終わり}}
== 合金 ==
[[ファイル:Sauce_boat.jpg|右|サムネイル|ステンレス鋼のソースボート(肉汁ボート)]]
[[ファイル:Dewoitine_D.333_Cassiopée_F-ANQB_Algérie_1938.jpg|サムネイル|200x200ピクセル|ジュラルミンが航空機に用いられた例。画像は旅客機 D.333 。フランス国 Dewoitine社。]]
[[ファイル:Jug_Egypt_Louvre_OA7436.jpg|サムネイル|250x250ピクセル|真鍮(黄銅)の水差し。この画像の水差しは14世紀のエジプトで用いられていた。]]
2種類以上の金属を溶融して混合したあとに凝固させたものを'''合金'''という。
一般に合金では、もとの金属単体よりも硬さが増す。また、一般に合金の電気抵抗は、もとの金属よりも大きくなる。これは、合金元素によって結晶中の原子の配列が乱れるからである。
主要な合金の例を示す。
* 黄銅
: 銅60%~70%と亜鉛30%~40%の合金。
: 銅が60%程度で亜鉛が40%程度の黄銅を六四黄銅といい、銅が70%程度で亜鉛が30%程度の黄銅を七三黄銅という。
: 合金化により硬くなり、強度が高まる。色は黄色である。[[w:ブラスバンド]]のブラスとは黄銅のことである。真鍮ともいう。
* 青銅
: 銅とスズの合金。
: ブロンズともいう。亜鉛などが加えられる場合もある。銅とスズのみを主成分とする青銅を、すず青銅という。
: 合金化により硬くなり、強度が高まる。鏡として用いられる場合もある(青銅鏡)。
* 白銅
: 銅とニッケルの合金。日本の50円硬貨と100円硬貨は、銅75%とニッケル25%の白銅である。
: 組成中のニッケルの増加とともに、色が銅の赤色からニッケルの白色に変わっていく。
: 腐食しにくく、耐食性が良い。
* 洋銀
: 組成:銅に、ニッケル5%~30%、亜鉛5%~30%を加えたもの。
: ニッケルシルバともいう。
* ステンレス鋼
: 組成:鉄約70%、クロム約20%、ニッケル約10%
: 鉄にクロムとニッケルなどを混ぜたもの。錆びにくい。
* ジュラルミン
: 組成:アルミニウム約95%、銅、マグネシウム、マンガン
: 軽くて強度が大きいので航空機材料や自動車材料などに用いられる。
* はんだ
: 鉛とスズの合金。融点が低い。はんだは電気回路部品の接合などに用いられたが、鉛の有害性が指摘され、最近では無鉛はんだが用いられる。
* ニクロム
: ニッケル60%~80%とクロム20%の合金。名称は、ニッケルとクロムに由来する。
: 電気抵抗が大きい。電気抵抗材料に用いられるニクロム線の材料である。
=== ブリキとトタン ===
[[ファイル:Fe_corrosion.svg|サムネイル]]
酸素や水と接触した金属は表面で酸化還元反応を起こし、金属がイオン化し脱落する。この反応を腐食という。イオン化した金属が酸化物や水酸化物となって表面に堆積したものを錆という。
鋼板にスズをメッキしたものを'''ブリキ'''、亜鉛をメッキしたものを'''トタン'''という。イオン化傾向は <chem>Zn > Fe > Sn</chem> の順である。ブリキでは、スズが鉄を覆って腐食を防いでいる。しかし、メッキが傷つき鉄が露出した箇所に水がつくと、鉄がスズよりもイオン化しやすいため、鉄が腐食しやすい。トタンは、亜鉛が鉄より腐食しやすいが、鉄が露出した箇所があっても、亜鉛が鉄よりもイオン化しやすいため、亜鉛が先に腐食して、内部の鉄の腐食が防がれる。
つまり、傷がなく鉄が露出していない場合はブリキの方が錆びにくいが、傷がついた場合はトタンの方が錆びにくい。このため、ブリキは缶詰や金属玩具などに用いられ、トタンは屋根やバケツなどに用いられる。
[[ファイル:Tin toys.JPG|thumb|180px|right|ブリキの玩具]]
[[ファイル:Hückeswagen - Kölner Straße - Tennishalle 02 ies.jpg|サムネイル|トタンの屋根]]
=== その他の合金 ===
'''水素吸蔵合金'''
ランタン-ニッケル合金やチタン-鉄合金などは、常温で合金の結晶間に水素を吸蔵する性質をもつ。加熱などによって水素を放出することができる。これらの合金は、自身の体積の1000倍以上の水素を吸蔵できるものもある。
ランタン-ニッケル合金を使用したニッケル水素電池はハイブリッド自動車で使用されている。今後は、燃料電池自動車の燃料タンクとしての利用も期待され、開発が進められている。
'''形状記憶合金'''
チタンとニッケルの合金には、特定の高温で成形した形状を記憶し、常温で変形しても加熱することでもとの形に戻る特性をもつものがある。これを形状記憶合金という。眼鏡フレームなどで利用されている。
'''超伝導合金'''
ある物質は、非常に低温(絶対零度に近い温度)で電気抵抗がゼロになる。この現象を利用した超伝導合金として、ニオブとスズの合金やニオブとチタンの合金が代表例である。超伝導合金は、強い電磁石をつくる際や、医療用MRI(強い磁場と電波を利用して人体の断層画像を撮影する装置)などに使用されている。
'''アモルファス合金'''
アモルファス合金は、結晶構造をもたない非晶質の合金である。製法としては、高温で融けた金属を急冷することで、原子が通常の結晶構造の位置に配置される前に固化させる。このため、結晶構造をもたず、結晶の合金とは異なる特性を示すことが多い。
アモルファス合金は、磁気記録用ヘッドなどに利用されており、鉄系のアモルファス合金は耐腐食性が必要な環境で使われることがある。ただし、高温にすると結晶化してしまうため、高温での加工ができないという短所がある。
<references />
[[カテゴリ:高等学校化学|せんいきんそく]]
9krwqattfrrt8gves9yg3n4pk8gpqum
ガリア戦記 第7巻
0
12163
304851
304534
2026-10-18T10:28:53Z
Linguae
449
/* 34節 */ 修整
304851
wikitext
text/x-wiki
[[Category:ガリア戦記|7]] [[Category:ガリア戦記 第7巻|*]]
[[ガリア戦記]]> '''第7巻''' >[[ガリア戦記 第7巻/注解|注解]]
<div style="text-align:center">
<span style="font-size:20px; font-weight:bold; font-variant-caps: petite-caps; color:white; background: rgb(47,94,255);background: linear-gradient(180deg, rgba(47,94,255,1) 0%, rgba(24,56,255,1) 50%, rgba(0,8,255,1) 100%);"> C IVLII CAESARIS COMMENTARIORVM BELLI GALLICI </span>
<span style="font-size:40px; font-weight:bold; color:white; background: rgb(47,94,255);background: linear-gradient(180deg, rgba(47,94,255,1) 0%, rgba(24,56,255,1) 50%, rgba(0,8,255,1) 100%);"> LIBER SEPTIMVS </span>
</div>
[[画像:Gaule -52.png|thumb|right|150px|ガリア戦記 第7巻の情勢図(BC52年)。<br>黄色の領域がローマ領。桃色が同盟部族領。]]
{| id="toc" style="align:left;clear:all;" align="left" cellpadding="5"
! style="background:#ccccff; text-align:left;" colspan="2" | ガリア戦記 第7巻 目次
|-
| style="text-align:right; font-size: 0.86em;"|
'''[[#カルヌーテース族の蜂起|カルヌーテース族の蜂起]]''':<br />
'''[[#ウェルキンゲトリークスとガッリア同盟軍の蜂起|ウェルキンゲトリークスとガッリア同盟軍の蜂起]]''':<br />
<br />
'''[[#アウァーリクム攻略戦|アウァーリクム攻略戦]]''':<br />
<br />
<br />
'''[[#ゲルゴウィア攻略戦、ハエドゥイー族の離反|ゲルゴウィア攻略戦、ハエドゥイー族の離反]]''':<br />
<br />
<br />
'''[[#ラビエーヌスのルテティア遠征|ラビエーヌスのルテティア遠征]]''':<br />
'''[[#ガッリア戦乱の拡大|ガッリア戦乱の拡大]]''':<br />
'''[[#アレスィア攻囲戦|アレスィア攻囲戦]]''':<br />
<br />
<br />
'''[[#ガッリア同盟軍主力の降伏|ガッリア同盟軍主力の降伏]]''':<br />
<br />
<br />
| style="text-align:left; font-size: 0.86em;"|
[[#1節|01節]] |
[[#2節|02節]] |
[[#3節|03節]] <br />
[[#4節|04節]] |
[[#5節|05節]] |
[[#6節|06節]] |
[[#7節|07節]] |
[[#8節|08節]] |
[[#9節|09節]] |
[[#10節|10節]] <br />
[[#11節|11節]] |
[[#12節|12節]] |
[[#13節|13節]] <br />
[[#14節|14節]] |
[[#15節|15節]] |
[[#16節|16節]] |
[[#17節|17節]] |
[[#18節|18節]] |
[[#19節|19節]] |
[[#20節|20節]] <br />
[[#21節|21節]] |
[[#22節|22節]] |
[[#23節|23節]] |
[[#24節|24節]] |
[[#25節|25節]] |
[[#26節|26節]] |
[[#27節|27節]] |
[[#28節|28節]] |
[[#29節|29節]] |
[[#30節|30節]] <br />
[[#31節|31節]] <br />
[[#32節|32節]] |
[[#33節|33節]] |
[[#34節|34節]] |
[[#35節|35節]] |
[[#36節|36節]] |
[[#37節|37節]] |
[[#38節|38節]] |
[[#39節|39節]] |
[[#40節|40節]] <br />
[[#41節|41節]] |
[[#42節|42節]] |
[[#43節|43節]] |
[[#44節|44節]] |
[[#45節|45節]] |
[[#46節|46節]] |
[[#47節|47節]] |
[[#48節|48節]] |
[[#49節|49節]] |
[[#50節|50節]] <br />
[[#51節|51節]] |
[[#52節|52節]] |
[[#53節|53節]] |
[[#54節|54節]] |
[[#55節|55節]] |
[[#56節|56節]] <br />
[[#57節|57節]] |
[[#58節|58節]] |
[[#59節|59節]] |
[[#60節|60節]] |
[[#61節|61節]] |
[[#62節|62節]] <br />
[[#63節|63節]] |
[[#64節|64節]] |
[[#65節|65節]] |
[[#66節|66節]] |
[[#67節|67節]] <br />
[[#68節|68節]] |
[[#69節|69節]] |
[[#70節|70節]] <br />
[[#71節|71節]] |
[[#72節|72節]] |
[[#73節|73節]] |
[[#74節|74節]] |
[[#75節|75節]] |
[[#76節|76節]] |
[[#77節|77節]] |
[[#78節|78節]] |
[[#79節|79節]] |
[[#80節|80節]] <br />
[[#81節|81節]] |
[[#82節|82節]] |
[[#83節|83節]] |
[[#84節|84節]] |
[[#85節|85節]] |
[[#86節|86節]] |
[[#87節|87節]] |
[[#88節|88節]] <br />
[[#89節|89節]] |
[[#90節|90節]] <br />
[[#脚注|脚注]]<br />
[[#参考リンク|参考リンク]]<br />
|}
<br style="clear:both;" />
__notoc__
==カルヌーテース族の蜂起==
===1節===
*<span style="background-color:#ffd;">[[/注解/1節]] {{進捗|00%|2025-10-26}}</span>
[[画像:Maccari-Cicero.jpg|thumb|right|250px|[[w:カティリナ弾劾演説|カティリーナ弾劾演説]]をする[[w:マルクス・トゥッリウス・キケロ|キケロー]](左中央)(チェザレ・マッカリによる19世紀のフレスコ画)。[[w:プブリウス・クロディウス・プルケル|クローディウス]]はこれを越権行為であるとして、カエサルの政敵となっていたキケローを一時的に亡命へ追い込み、ついにはキケローの友人ミローの配下によって殺害された。]]
[[画像:Pompei_Magnus_Antiquarium.jpg|thumb|right|250px|[[w:グナエウス・ポンペイウス|グナエウス・ポンペイウス]]の胸像。クローディウス殺害に伴う騒乱を収拾するべく、[[w:元老院|元老院]]によりポンペイウスが単独の[[w:執政官|執政官]]に選出され、首都ローマと本土イタリアを制圧した。一方、カエサルも属州で新たに徴兵して兵力を増した。元老院派はカエサルの勢力が強大になることを恐れて、カエサル自身から将兵を取り上げて召還すべきと主張したが、ポンペイウスは不和を避けて宥和を図った。]]
:
;首都ローマの政情不安、ガッリア人領袖たちの謀計
*<!--❶--><sup>(1)</sup> [[wikt:en:quietus#Latin|Quieta]] [[wikt:en:Gallia#Latin|Gallia]],
**[[w:ガリア|ガッリア]]が鎮定されると、
*Caesar, ut [[wikt:en:constituerat|constituerat]],
**カエサルは、定めていたように、
*in [[wikt:en:Italia#Latin|Italiam]] ad [[wikt:en:conventus#Noun|conventus]] [[wikt:en:agendus#Latin|agendos]] [[wikt:en:proficiscitur|proficiscitur]].
**イタリアに、巡回裁判を行なうために出発する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ここでいうイタリアとは、カエサルの属州であった<br> [[w:ガリア・キサルピナ|ガッリア・キサルピーナ]]を指す。<br> カエサルは、巡回裁判を除けば、おもに[[w:ラヴェンナ|ラウェンナ]]に<br> 滞在していたと考えられる。[[内乱記_第1巻#5節|『内乱記』第1巻5節]]を参照。)</span>
:
*[[wikt:en:ibi#Latin|Ibi]] [[wikt:en:cognoscit|cognoscit]] de <P.> [[wikt:en:Clodius#Latin|Clodii]] [[wikt:en:caedes#Latin|caede]],
**そこで[[w:プブリウス・クロディウス・プルケル|プーブリウス・クローディウス]]の殺害について知って、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:クローディウスは護民官を務めた<ruby><rb>[[w:ポプラレス|民衆派]]</rb><rp>(</rp><rt>ポプラレス</rt><rp>)</rp></ruby> の政治家で、<br> カエサルから恩義を受けていた。<br> かの弁論家[[w:マルクス・トゥッリウス・キケロ|キケロー]]やその友人ティトゥス・ミロー [[w:la:Titus_Annius_Milo|Milo]] ら<br> <ruby><rb>[[w:オプティマテス|元老院派]]</rb><rp>(</rp><rt>オプティマテス</rt><rp>)</rp></ruby> と激しく対立し、ミローの配下によって殺害された。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:<P.> ([[wikt:en:Publius#Latin|Publii]]) 「プーブリウスの」は ρ系写本にのみ記されている。)</span>
*<de> <u>senatus</u>que <u>consulto</u> [[wikt:en:certior#Latin|certior]] [[wikt:en:factus#Participle|factus]], ut omnes [[wikt:en:iunior#Latin|iuniores]] Italiae [[wikt:en:coniurarent|coniurarent]],
**イタリアの全青年に<small>(新兵として)</small>宣誓するようにとの元老院決議について知らされて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:この事態を収拾すべく元老院派の[[w:グナエウス・ポンペイウス|ポンペイウス]]が単独の執政官<br> (''[[w:de:Consul sine collega|consul sine collega]]'')に選任されて本土イタリアを掌握した。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:<de> は現存する写本にはなく、近世以降に挿入提案されたもの。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注: [[wikt:en:senatus_consultum#Latin|senātūs cōnsultum]] ([[wikt:en:ultimus#Latin|ultimum]]) 「[[w:セナトゥス・コンスルトゥム・ウルティムム|元老院(の最終)決議]]」<br> ; dē [[wikt:en:senatus_consulto#Latin|senātūs cōnsultō]] 「元老院決議について」)</span>
*<u>dilectum</u> [[wikt:en:totus#Latin|tota]] [[wikt:en:provincia#Latin|provincia]] habere [[wikt:en:instituo#Latin|instituit]].
**<small>(カエサルは)</small>属州<small>〔ガッリア・キサルピーナ〕</small>全体での徴集をすることを決定する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:dilectus#Noun|dilectum]] は、[[wikt:en:delectus#Noun_2|delectum]] と表記している校訂版もある。)</span>
:
*<!--❷--><sup>(2)</sup> Eae res in Galliam [[wikt:en:transalpinus#Latin|Transalpinam]] celeriter [[wikt:en:perferuntur|perferuntur]].
**その状況は、[[w:ガリア・ナルボネンシス|ガッリア・トラーンサルピーナ]]<small>〔アルプスの向こう側のガッリア〕</small>に速やかに報知された。
:
*[[wikt:en:addunt|Addunt]] ipsi et [[wikt:en:adfingunt|adfingunt]] [[wikt:en:rumor#Latin|rumoribus]] [[wikt:en:Galli#Latin|Galli]],
**[[w:ガリア人|ガッリア人]]たち自身が風評に想像して付け加えたのは、
*quod res [[wikt:en:poscere|poscere]] [[wikt:en:videbatur|videbatur]]:
**事態が要求すると思われていたことで、
*[[wikt:en:retineri|retineri]] <u>urbano</u> [[wikt:en:motus#Noun_2|motu]] Caesarem
**カエサルは、都<small>〔[[w:ローマ|ローマ市]]〕</small>の騒乱に束縛されて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:urbanus#Adjective|urbānus]] は「都市の」「都会の」と訳されるが、<br> とりわけ「首都[[w:ローマ|ローマ市]]の」を意味する。)</span>
*neque in [[wikt:en:tantus#Latin|tantis]] [[wikt:en:dissensio#Latin|dissensionibus]] ad [[wikt:en:exercitus#Noun|exercitum]] venire posse.
**これほどの対立においては、軍隊のもとへ来ることができない、<br>ということである。
:
*<!--❸--><sup>(3)</sup> Hac [[wikt:en:impulsus#Participle|impulsi]] [[wikt:en:occasio#Latin|occasione]],
**このような好機に刺激されて、
*qui iam ante se [[wikt:en:populus#Noun|populi]] Romani [[wikt:en:imperium#Latin|imperio]] [[wikt:en:subiectus#Latin|subiectos]] [[wikt:en:dolerent|dolerent]],
**すでに以前から自分たちがローマ国民の支配に服属させられているのを悲嘆している者たちは、
*[[wikt:en:libere#Adverb_2|liberius]] atque [[wikt:en:audacter#Latin|audacius]] de bello [[wikt:en:consilium#Latin|consilia]] [[wikt:en:inire|inire]] [[wikt:en:incipiunt|incipiunt]].
**より自由に、かつ、より向こう見ずに、戦争について謀議に取りかかり始める。
:
[[画像:Brennus_mg_9724.jpg|thumb|right|250px|[[w:ブレンヌス|ブレンヌス]]の胸像。BC4世紀([[w:紀元前387年|387年]])に、ローマ軍を破って、ローマ市を占領した。アッコーと同じセノネース族の族長だったとされている。]]
*<!--❹--><sup>(4)</sup> [[wikt:en:indictus#Latin|Indictis]] inter se principes Galliae [[wikt:en:concilium#Latin|conciliis]] [[wikt:en:silvestris#Latin|silvestribus]] ac [[wikt:en:remotus#Latin|remotis]] locis
**ガッリアの領袖たちは、森林や人里離れた場所での会合を互いに申し合わせて、
*[[wikt:en:queruntur|queruntur]] de [[wikt:en:Acco#Latin|Acconis]] [[wikt:en:mors#Latin|morte]];
**アッコーの死について嘆く。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[ガリア戦記 第6巻#44節|第6巻44節]]を参照。)</span>
*<u>posse</u> hunc [[wikt:en:casus#Latin|casum]] ad ipsos [[wikt:en:recidere#Verb_4|recidere]] [[wikt:en:demonstrant#Latin|demonstrant]];
**彼<small>〔アッコー〕</small>の結末が彼ら自身へ降りかかりうることを説く。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:posse#Verb|posse]] の位置は、<br> α系写本では hunc の前だが、<br> β系写本では hunc casum ad ipsos recidere <u>posse</u> demonstrant <br> となっている。)</span>
:
*<!--❺--><sup>(5)</sup> [[wikt:en:miserantur|miserantur]] [[wikt:en:communis#Latin|communem]] Galliae [[wikt:en:fortuna#Latin|fortunam]];
**ガッリア共通の境遇をあわれむ。
*omnibus [[wikt:en:pollicitatio#Latin|pollicitationibus]] ac [[wikt:en:praemium#Latin|praemiis]] [[wikt:en:deposcunt|deposcunt]]
**<small>(以下の者たちを)</small>あらゆる約束と恩賞によって求める。
*qui [[wikt:en:bellum#Latin|belli]] <u>initia</u> [[wikt:en:faciant|faciant]] et sui [[wikt:en:caput#Latin|capitis]] [[wikt:en:periculum#Latin|periculo]] Galliam in [[wikt:en:libertas#Latin|libertatem]] [[wikt:en:vindicent|vindicent]].
**戦端を開いて、自らを危険にさらしても、ガッリアを解放する者たちを。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:~ in libertatem vindicare;~を解放する)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:initia#Latin|initia]] (複数形) だが、<br> β系写本では [[wikt:en:initium#Latin|initium]] (単数形) となっている。)</span>
:
*<!--❻--><sup>(6)</sup> In primis [[wikt:en:ratio#Latin|rationem]] esse [[wikt:en:habendus#Latin|habendam]] [[wikt:en:dicunt|dicunt]],
**とりわけ、<small>(以下のような)</small>方策を採るべきであると述べる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:in_primis#Latin|in primis]] は、[[wikt:en:inprimis#Adverb|
inprimis]] と表記している校訂版もある。)</span>
*[[wikt:en:priusquam#Latin|prius quam]] eorum [[wikt:en:clandestinus#Latin|clandestina]] consilia [[wikt:en:efferantur|efferantur]],
**彼らの秘密の計画が漏らされるより前に、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:反ローマの挙兵のはかりごとが漏れる前に)</span>
*ut Caesar ab [[wikt:en:exercitus#Noun|exercitu]] [[wikt:en:intercludatur|intercludatur]].
**カエサルが軍隊から切り離されるように、と。
:
*<!--❼--><sup>(7)</sup> Id esse [[wikt:en:facilis#Latin|facile]],
**それは容易なことである。
*quod neque legiones [[wikt:en:audeant|audeant]] [[wikt:en:absens#Latin|absente]] [[wikt:en:imperator#Latin|imperatore]] ex [[wikt:en:hiberna#Noun|hibernis]] [[wikt:en:egredi|egredi]],
**というのは、[[w:ローマ軍団|諸軍団]]は将軍<small>〔カエサル〕</small>が不在のときにあえて冬営から出て行こうとはしないし、
*neque [[wikt:en:imperator#Latin|imperator]] sine [[wikt:en:praesidium#Latin|praesidio]] ad legiones [[wikt:en:pervenire#Latin|pervenire]] [[wikt:en:possit|possit]].
**将軍は護衛なしに諸軍団のところへ到着することはできないのだから。
: <!-- [[wikt:en:| -->
*<!--❽--><sup>(8)</sup> [[wikt:en:postremo#Adverb|Postremo]] in [[wikt:en:acies#Latin|acie]] <u>praestare</u> [[wikt:en:interfici|interfici]],
**結局のところ、戦列において討ち死にする方がましである。
**:<span style="color:#009900;">(訳注:[[wikt:en:praestare|praestare]] ~ [[wikt:en:quam#Adverb|quam]] …「…よりも~がより優る」)</span>
*<u>quam</u> non [[wikt:en:vetus#Latin|veterem]] belli [[wikt:en:gloria#Latin|gloriam]] [[wikt:en:libertas#Latin|libertatem]]<nowiki>que</nowiki> quam a [[wikt:en:maior#Noun|maioribus]] [[wikt:en:acceperint|acceperint]], [[wikt:en:recuperare#Latin|recuperare]].
**先祖から受け継いだかつての戦争の栄誉および自由を取り戻さないことよりは。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===2節===
[[画像:Chartres_1.jpg|thumb|right|320px|カルヌーテース族([[w:la:Carnutes|Carnutes]])の名を残す現在の[[w:シャルトル|シャルトル]]([[w:en:Chartres|Chartres]])の象徴である[[w:シャルトル大聖堂|シャルトル大聖堂]]([[w:世界遺産|世界遺産]])。[[ガリア戦記 第6巻#13節|第6巻13節]]⑩項で既述のように、カルヌーテース族の土地はガッリアの中心・聖地と見なされていた。ガッリアがキリスト教化されると、[[w:司教|司教座]]が置かれて、宗教的中心地となった。]]
*<span style="background-color:#ffd;">[[/注解/2節]] {{進捗|00%|2025-11-05}}</span>
;ガッリア諸部族の会合で、カルヌーテース族が開戦動議
:
*<!--❶--><sup>(1)</sup> His rebus [[wikt:en:agitatus#Latin|agitatis]],
**これらの事柄が論議されて、
*[[wikt:en:profiteor#Latin|profitentur]] [[wikt:en:Carnutes#Latin|Carnutes]],
**カルヌーテース族の者が公言したことには、
*se [[wikt:en:nullus#Determiner|nullum]] [[wikt:en:periculum#Latin|periculum]] [[wikt:en:communis#Latin|communis]] [[wikt:en:salus#Latin|salutis]] causa [[wikt:en:recusare#Latin|recusare]],
**<small>(ガッリア)</small>共通の安全のためにはいかなる危険をも辞さない、
*[[wikt:en:princeps#Latin|principes]]<nowiki>que</nowiki> ex omnibus bellum [[wikt:en:facturus#Latin|facturos]] [[wikt:en:pollicentur|pollicentur]];
**かつ<small>(ガッリア方)</small>総勢の先鋒として戦争を遂行するであろうと約束する。
:
*<!--❷--><sup>(2)</sup> et, [[wikt:en:quoniam#Latin|quoniam]] in [[wikt:en:praesentia#Noun|praesentia]] [[wikt:en:obses#Latin|obsidibus]] [[wikt:en:cavere#Verb_2|cavere]] inter se non [[wikt:en:possint|possint]],
**目下のところ、人質により互いに保証し合うことはできなかったので、
*ne res [[wikt:en:efferatur|efferatur]],
**事が漏らされないように、
*<u>ut</u> [[wikt:en:ius_iurandum#Latin|iure iurando]] ac [[wikt:en:fides#Latin|fide]] [[wikt:en:sanciatur|sanciatur]], [[wikt:en:petunt|petunt]],
**誓約と信義でもって批准するように求める。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、写本ST<sup>c</sup> では ut だが、<br> 写本 T<sup>1</sup>・ρ系では at 、<br> 写本BMLNV・χ系では aut となっている。)</span>
*[[wikt:en:conlatus#Latin|conlatis]] [[wikt:en:militaris#Adjective|militaribus]] [[wikt:en:signum#Latin|signis]],
**軍旗が運び集められて、
*[[wikt:en:quo#Etymology_2_2|quo]] [[wikt:en:mos#Latin|more]] eorum [[wikt:en:gravissimus#Latin|gravissima]] [[wikt:en:caerimonia#Latin|caerimonia]] [[wikt:en:continetur|continetur]],
**それは彼らの慣習で最も荘重な<ruby><rb>神聖儀式</rb><rp>(</rp><rt>カエリモーニア</rt><rp>)</rp></ruby>として保たれているのだが、
*ne [[wikt:en:factus#Latin|facto]] [[wikt:en:initium#Latin|initio]] belli ab reliquis [[wikt:en:deserantur|deserantur]].
**開戦したら、ほかの<small>(部族の)</small>者たちから見放されないように、ということである。
: <!-- [[wikt:en:| -->
*<!--❸--><sup>(3)</sup> Tum [[wikt:en:conlaudatus#Latin|conlaudatis]] [[wikt:en:Carnutes#Latin|Carnutibus]],
**それから、カルヌーテース族が賞賛されて、
*[[wikt:en:datus#Participle|dato]] [[wikt:en:ius_iurandum#Latin|iure iurando]] ab omnibus, qui [[wikt:en:aderant|aderant]],
**訪れていたすべての者たちによって誓約が交わされて、
*[[wikt:en:tempus#Latin|tempore]] eius rei [[wikt:en:constitutus#Participle|constituto]]
**その事の時期を決定すると、
*ab [[wikt:en:concilium#Latin|concilio]] [[wikt:en:disceditur|disceditur]].
**<small>(ガッリアの領袖たちは)</small>会合から立ち去る。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===3節===
[[画像:Cathédrale_Sainte-Croix_d'Orléans_2008_PD_16.JPG|thumb|right|280px|ケナブム(Cenabum)すなわち現在の[[w:オルレアン|オルレアン]]の聖十字架大聖堂。ここもカルヌーテース族の[[w:オッピドゥム|城塞都市]]で、ガッリアの[[w:ドルイド|ドルイド]]たちが集まる聖地だったという。ローマの[[w:ルキウス・ドミティウス・アウレリアヌス|アウレリアヌス帝]](Aurelianus)によって再建されたのでアウレリアヌスの都市(アウレリアヌム [[w:la:Aurelianum|Aurelianum]])と改称され、オルレアン(Orléans)と転訛した。キリスト教化によってここにも[[w:司教|司教座]]が置かれて、布教の中心地になった。]]
*<span style="background-color:#ffd;">[[/注解/3節]] {{進捗|00%|2025-11-17}}</span>
;カルヌーテース族がケナブム進駐
:
*<!--❶--><sup>(1)</sup> [[wikt:en:ubi#Latin|Ubi]] ea dies venit,
**その日が来ると、
*[[wikt:en:Carnutes#Latin|Carnutes]],
**カルヌーテース族は、
*Cotuato et Conconnetodumno [[wikt:en:dux#Latin|ducibus]], [[wikt:en:desperatus#Latin|desperatis]] hominibus,
**捨て身覚悟の連中であるコトゥアトゥスとコンコンネトドゥムヌスを指導者として、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ガリア語では、<br> コトゥアトス ''[[w:fr:Cotuatos|Cotuatos]]''、<br> コンコンネトドゥムノス ''[[w:fr:Conconnetodumnos|Conconnetodumnos]]''。)</span>
*<u>Cenabum</u> [[wikt:en:signum#Latin|signo]] [[wikt:en:datus#Participle|dato]] [[wikt:en:concurrunt|concurrunt]]
**号令が発せられるとともに<u>ケナブム</u>に襲来する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ケナブムは、現在の[[w:オルレアン|オルレアン]]。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:fr:Cenabum|Cenabum]] はケルト語風の読みで、''[[ガリア戦記/注解編/写本と校訂版#Vossius|Vossius]]'' による修正提案。<br> 写本では genabim, genebim, genebin などとなっている。<br> ⇒ [[wikt:en:Genabum#Latin|Genabum]])</span>
*[[wikt:en:civis#Latin|cives]]<nowiki>que</nowiki> [[wikt:en:Romanus#Adjective|Romanos]], qui [[wikt:en:negotiandi|negotiandi]] causa [[wikt:en:ibi#Latin|ibi]] [[wikt:en:constiterant|constiterant]],
**そこには、商いを営むためにローマ市民たちが滞在していて、
*in his [[wikt:en:Gaius#Latin|Gaium]] [[wikt:en:Fufius#Latin|Fufium]] Citam, [[wikt:en:honestus#Latin|honestum]] [[wikt:en:eques#Latin|equitem]] [[wikt:en:Romanus#Adjective|Romanum]],
**彼らの中には、気高いローマ人[[w:エクィテス|騎士]]ガーイウス・フーフィウス・キタがいて
*qui rei [[wikt:en:frumentarius#Latin|frumentariae]] [[wikt:en:iussus#Noun|iussu]] Caesaris [[wikt:en:praeerat|praeerat]],
**カエサルの指図により糧秣調達を統率していたが、
*[[wikt:en:interficiunt|interficiunt]] [[wikt:en:bonum#Noun_2|bona]]<nowiki>que</nowiki> eorum [[wikt:en:diripiunt|diripiunt]].
**<small>(カルヌーテース勢は彼らローマ市民たちを)</small>殺害して、彼らの財産を略奪する。
:
*<!--❷--><sup>(2)</sup> Celeriter ad omnes Galliae [[wikt:en:civitas#Latin|civitates]] [[wikt:en:fama#Latin|fama]] [[wikt:en:perfertur|perfertur]].
**速やかに全ガッリア部族のもとへ、評判が報知される。
*Nam, <u>ubique</u> [[wikt:en:maior#Latin|maior]] atque [[wikt:en:inlustrior|inlustrior]] [[wikt:en:incidit#Etymology_1|incidit]] res,
**なぜなら、より重大でより目立った事態が起こればどこであろうが、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、主要写本ω の大半では [[wikt:en:ubique#Latin|ubique]] だが、写本STでは [[wikt:en:ubi#Latin|ubi]] 、<br> さらに [[wikt:en:ubicumque#Latin|ubicumque]] という異読もあり、<br> ''[[ガリア戦記/注解編/写本と校訂版#Schneider,K.E.Chr.|Chr. Schneider]]'' は ubi quae と修正提案している。)</span>
*[[wikt:en:clamor#Latin|clamore]] per [[wikt:en:ager#Latin|agros]] [[wikt:en:regio#Latin|regiones]]<nowiki>que</nowiki> [[wikt:en:significant#Latin|significant]];
**耕地や<small>(集落の)</small>区域を介して、大声で呼びかける。
*<u>hinc</u> [[wikt:en:alius#Latin|alii]] [[wikt:en:deinceps#Latin|deinceps]] [[wikt:en:excipiunt|excipiunt]]
**ここから、別の者たちが続けて引き受けて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本の大半では [[wikt:en:hanc#Latin|hanc]] だが、<br> β系写本では [[wikt:en:hinc#Latin|hinc]] 「ここから」、<br> 写本Sでは [[wikt:en:hunc|hunc]] となっている。)</span>
*et [[wikt:en:proximus#Noun|proximis]] [[wikt:en:tradunt|tradunt]];
**近隣の者たちへ伝える。
*ut tum [[wikt:en:accidit#Etymology_1|accidit]].
**そのときにも<small>(同様のことが)</small>起こったのである。
: <!-- [[wikt:en:| -->
*<!--❸--><sup>(3)</sup> Nam, quae <u>Cenabi</u> [[wikt:en:oriens#Latin|oriente]] [[wikt:en:sol#Latin|sole]] gesta essent,
**ケナブムで日が昇るときになされていたこと<small>〔襲撃〕</small>が、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:Cenabi はケルト語風の読みで、''[[ガリア戦記/注解編/写本と校訂版#Vossius|Vossius]]'' による修正提案。<br> 主要写本ω では genabi となっている。 ⇒ [[wikt:en:Genabum#Latin|Genabum]])</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:gestus#Latin|gesta]] [[wikt:en:essent#Etymology_1|essent]] は [[wikt:en:gero#Latin|gerō]] の3人称・複数・過去完了・受動・接続法。)</span>
*ante [[wikt:en:primus#Latin|primam]] [[wikt:en:confectus#Latin|confectam]] [[wikt:en:vigilia#Latin|vigiliam]]
**第一夜警時の終わる前頃には
**:<span style="color:#009900;">(訳注:第一夜警時は、日の入から真夜中までの時間帯の前半「宵の口」。<br> [[古代ローマの不定時法#夜警時|#夜警時]] を参照。)</span>
*in finibus [[wikt:en:Arverni#Latin|Arvernorum]] audita sunt,
**アルウェルニー族の領土において聞かれた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:auditus#Latin|audita]] [[wikt:en:sunt#Latin|sunt]] は [[wikt:en:audio#Latin|audiō]] の3人称・複数・完了・受動・直説法)</span>
*[[wikt:en:qui#Latin|quod]] [[wikt:en:spatium#Latin|spatium]] est [[wikt:en:mille#Latin|milium]] [[wikt:en:passus#Etymology_2|passuum]] circiter [[wikt:en:centum#Latin|centum]] [[wikt:en:sexaginta#Latin|sexaginta]](CLX).
**約160ローママイルもの隔たりがあったのに。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ミーッレ・パッスーム、ミーリア(ローママイル)|ローママイル]]は約1.48 kmで、160マイルは約240 km)</span>
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
==ウェルキンゲトリークスとガッリア同盟軍の蜂起==
===4節===
[[画像:Vercingetorix stater CdM.jpg|thumb|right|200px|“<span style="font-family:Times New Roman;font-size:15pt;">(VERCIN)GETORIXS</span>”の名と横顔が刻まれた金貨。]]
[[画像:Vercingétorix_par_Millet.jpg|thumb|right|250px|[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の立像(フランスのアリーズ=サント=レーヌ <small>[[w:fr:Alise-Sainte-Reine|Alise-Sainte-Reine]]</small>)。<br>近代[[w:ナショナリズム|ナショナリズム]]の高揚とともに[[w:フランス|フランス]]国民が自らを古代[[w:ガリア人|ガッリア人]]の末裔と見なすようになると([[w:ガリア起源説|ガッリア起源説]])、ガッリア諸部族を率いて[[w:古代ローマ|古代ローマ]]と戦った彼は「'''フランス最初の英雄'''」として祀り上げられた。[[w:フランス第二帝政|第二帝政]]期に皇帝[[w:ナポレオン3世|ナポレオン3世]]の命により[[w:アレシアの戦い|アレスィア古戦場]]の発掘調査が実施され、[[w:1865年|1865年]]にはその地に彫刻家エメ・ミレ([[w:fr:Aimé Millet|Aimé Millet]])による高さ7メートルの銅像が建立された。<br>([[w:fr:Vercingétorix_(statue_d'Aimé_Millet)|fr:La statue de Vercingétorix]])]]
[[画像:Statue-vercingetorix-jaude-clermont.jpg|thumb|right|250px|[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の騎馬像([[w:fr:Statue équestre de Vercingétorix (Frédéric Auguste Bartholdi)|fr]])。彼の出身地ゲルゴウィアの近く、[[w:クレルモン=フェラン|クレルモン=フェラン市]]中央広場に建つ。[[w:1903年|1903年]]に、[[w:自由の女神像 (ニューヨーク)|自由の女神像]]の作者として著名な彫刻家[[w:フレデリク・バルトルディ|フレデリク・オーギュスト・バルトルディ]]によって建立された。[[w:フランス語|フランス語]]で「我は皆の自由のために武器を取った」« J’ai pris les armes pour la liberté de tous » と刻まれている。]]
*<span style="background-color:#ffd;">[[/注解/4節]] {{進捗|00%|2025-11-24}}</span>
;アルウェルニー族のウェルキンゲトリークスが挙兵、ガッリア諸部族同盟軍を指揮する
:
*<!--❶--><sup>(1)</sup> [[wikt:en:similis#Latin|Simili]] [[wikt:en:ratio#Latin|ratione]] ibi
**そこ<small>〔アルウェルニー族領〕</small>でも同様のやり方によって、
*[[wikt:en:Vercingetorix#Latin|Vercingetorix]],
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]という、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ガリア語 [[wikt:en:Reconstruction:Gaulish/Werkingetorix|*Werkingetorīx]] は「戦士たちの最高の王」という意味で、<br> ガッリア同盟軍の最高司令官にふさわしい呼び名である。<br> 《[[ガリア戦記/ガリア語の名前#Vercingetorix|'''ガリア語の名前'''#Vercingetorix]]》 を参照せよ。)</span>
*[[wikt:fr:Celtillus|Celtilli]] filius, [[wikt:en:Arvernus#Latin|Arvernus]],
**ケルティッルスの息子で[[w:アルウェルニ族|アルウェルニー族]]の者で、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:en:Celtillus|Celtillus]]'' はガリア語で「小さなケルト人」という意味だと解される。)</span>
*[[wikt:en:summus#Adjective|summae]] [[wikt:en:potentia#Latin|potentiae]] [[wikt:en:adulescens#Noun|adulescens]],
**最高の影響力のある青年が、
*cuius [[wikt:en:pater#Latin|pater]] [[wikt:en:principatus#Latin|principatum]] Galliae [[wikt:en:totus#Etymology_1|totius]] [[wikt:en:obtinuerat|obtinuerat]]
**──その父<small>〔ケルティッルス〕</small>はガッリア全体の主導権を占めていたが、
*et ob eam causam, quod [[wikt:en:regnum#Latin|regnum]] [[wikt:en:adpetebat|adpetebat]], ab [[wikt:en:civitas#Latin|civitate]] erat [[wikt:en:interfectus#Latin|interfectus]],
**王位を求めたという理由により、部族の者によって誅殺されていたのであるが、──
*[[wikt:en:convocatus#Latin|convocatis]] suis [[wikt:en:cliens#Latin|clientibus]]
**自らの庇護者たちを招集して、
*facile [[wikt:en:incendit|incendit]].
**容易に焚き付けた。
:
*<!--❷--><sup>(2)</sup> [[wikt:en:cognitus#Participle|Cognito]] eius [[wikt:en:consilium#Latin|consilio]]
**彼の計画を知ると、
*ad [[wikt:en:arma#Latin|arma]] [[wikt:en:concurritur|concurritur]].
**<small>(人々は)</small>武器のもとへ群がり集まった。
*[[wikt:en:prohibetur|Prohibetur]] ab [[wikt:fr:Gobannitio|Gobannitione]], [[wikt:en:patruus#Latin|patruo]] suo, [[wikt:en:reliquus#Latin|reliquis]]<nowiki>que</nowiki> [[wikt:en:princeps#Noun_3|principibus]],
**彼の<small>(父方の)</small>おじゴバンニティオやほかの領袖たちにより妨げられた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:fr:Gobannitio|Gobannitio]]'' は「鍛冶屋」か「鍛冶の神」に由来する名前と解される。)</span>
*qui hanc [[wikt:en:temptandus#Latin|temptandam]] [[wikt:en:fortuna#Latin|fortunam]] non [[wikt:en:existimabant|existimabant]];
**その者たちは、このような運命を試すべきとは考えていなかったのだ。
*[[wikt:en:expellitur|expellitur]] ex [[wikt:en:oppidum#Latin|oppido]] [[wikt:en:Gergovia#Latin|Gergovia]];
**<small>(ウェルキンゲトリークスは)</small>城塞都市ゲルゴウィアから追放される。
:
*<!--❸--><sup>(3)</sup> non [[wikt:en:destitit|destitit]] tamen
**しかしながら<small>(彼は計画を)</small>取り止めず、
*atque in agris habet [[wikt:en:dilectus#Noun|dilectum]] [[wikt:en:egens#Latin|egentium]] ac [[wikt:en:perditor#Noun|perditorum]].
**野に貧窮者たちやならず者たちを徴集する。
:
*Hac [[wikt:en:coactus#Latin|coacta]] [[wikt:en:manus#Latin|manu]],
**こうした手勢が集められ、
*[[wikt:en:quoscumque|quoscumque]] [[wikt:en:adit#Latin|adit]] ex civitate,
**部族のうちで<small>(彼が)</small>会った者は誰であれ、
*ad suam [[wikt:en:sententia#Latin|sententiam]] [[wikt:en:perducit|perducit]];
**自らの意図に引き込んだ。
:
*<!--❹--><sup>(4)</sup> [[wikt:en:hortatur|hortatur]] ut [[wikt:en:communis#Latin|communis]] [[wikt:en:libertas#Latin|libertatis]] causa [[wikt:en:arma#Latin|arma]] [[wikt:en:capiant|capiant]],
**<small>(ガッリア)</small>共通の自由のために武器を取るように鼓舞した。
*[[wikt:en:magnus#Latin|magnis]]<nowiki>que</nowiki> [[wikt:en:coactus#Latin|coactis]] [[wikt:en:copia#Latin|copiis]]
**大軍勢が集められて、
*[[wikt:en:adversarius#Latin|adversarios]] suos, a quibus paulo ante erat [[wikt:en:eiectus#Latin|eiectus]],
**少し前に<small>(彼をゲルゴウィアから)</small>放逐したところの敵対者たちを、
*[[wikt:en:expellit|expellit]] ex civitate.
**部族から追放する。
*[[wikt:en:rex#Latin|Rex]] ab suis [[wikt:en:appellatur|appellatur]].
**<small>(ウェルキンゲトリークスは)</small>配下の者たちから王と呼ばれている。
:
*<!--❺--><sup>(5)</sup> [[wikt:en:dimittit|Dimittit]] [[wikt:en:quoque#Latin|quoque]] [[wikt:en:versus#Adverb|versus]] [[wikt:en:legatio#Latin|legationes]];
**<small>(ウェルキンゲトリークスは)</small>あらゆる方向へ使節団を派遣して、
*[[wikt:en:obtestatur|obtestatur]] ut in [[wikt:en:fides#Latin|fide]] [[wikt:en:maneant|maneant]].
**誓約に留まるようにと、懇願する。
:
*<!--❻--><sup>(6)</sup> Celeriter sibi
**速やかに、自分たち<small>〔アルウェルニー族〕</small>に対して
*[[wikt:en:Senones#Latin|Senones]], [[wikt:en:Parisii#Latin|Parisios]], [[wikt:en:Pictones#Latin|Pictones]], [[wikt:en:Cadurci#Latin|Cadurcos]], <u>Turonos</u>, [[wikt:en:Aulerci#Latin|Aulercos]], [[wikt:en:Lemovices#Latin|Lemovices]], <u>Andes</u>
**セノネース族、パリースィイー族、ピクトネース族、カドゥルキー族、<br><u>トゥロニイー族</u>、アウレルキー族、レモウィーケース族、アンデース族、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部のトゥロニイー族 ''[[w:Turoni|Turoni]]'' は、トゥロネース族 ''[[wikt:en:Turones#Latin|Turonēs]]'' ともいう。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:二つ目の下線部は、α系写本では [[wikt:en:Andi#Latin|Andos]]「アンディー族」だが、<br> ''[[ガリア戦記/注解編/写本と校訂版#Glareanus|Glareanus]]'' は、[[wikt:en:Andes#Latin|Andēs]]「アンデース族」と修正提案し、<br> これは別名「アンデカーウィー族」''[[wikt:en:Andecavi#Latin|Andecāvī]]'' ともいう。)</span>
*reliquosque omnes, qui [[wikt:en:Oceanus#Latin|Oceanum]] [[wikt:en:adtingunt|adtingunt]], [[wikt:en:adiungit|adiungit]];
**および<ruby><rb>大洋<span style="color:#009900;">〔[[w:大西洋|大西洋]]〕</span></rb><rp>(</rp><rt>オーケアヌス</rt><rp>)</rp></ruby>に接するほかの全部族を、加盟させる。
*omnium [[wikt:en:consensus#Latin|consensu]]
**すべての者たちの同意により、
*ad eum [[wikt:en:defertur|defertur]] [[wikt:en:imperium#Latin|imperium]].
**彼<small>〔ウェルキンゲトリークス〕</small>に<small>(諸部族の)</small>軍勢指揮権が譲り渡される。
:
*<!--❼--><sup>(7)</sup> Qua [[wikt:en:oblatus#Latin|oblata]] [[wikt:en:potestas#Latin|potestate]]
**<small>(ウェルキンゲトリークスは)</small>その権限が任されると、
*omnibus his civitatibus [[wikt:en:obses#Latin|obsides]] [[wikt:en:imperat|imperat]],
**これらすべての部族に人質<small>(の供出)</small>を命令して、
*[[wikt:en:certus#Latin|certum]] numerum [[wikt:en:miles#Latin|militum]] ad se celeriter [[wikt:en:adduci#Latin|adduci]] [[wikt:en:iubet#Latin|iubet]],
**兵の一定の数が自分のもとへ速やかに動員されることを命じる。
:
*<!--❽--><sup>(8)</sup> [[wikt:en:arma#Latin|armorum]] [[wikt:en:quantum#Latin|quantum]] [[wikt:en:quisque#Latin|quaeque]] civitas [[wikt:en:domi#Latin|domi]] [[wikt:en:quisque#Latin|quodque]] ante tempus [[wikt:en:efficiat|efficiat]], [[wikt:en:constituit#Latin|constituit]];
**おのおのの部族が本国で、武器のどれほどをその時期の前に生産するかを、決定した。
*in primis [[wikt:en:equitatus#Latin|equitatui]] [[wikt:en:studet|studet]].
**とりわけ、[[w:騎兵|騎兵隊]]を熱心に求めた。
: <!-- [[wikt:en:| -->
*<!--❾--><sup>(9)</sup> Summae diligentiae summam [[wikt:en:imperium#Latin|imperii]] [[wikt:en:severitas#Latin|severitatem]] addit;
**<small></small>(ウェルキンゲトリークスは)最高の入念さに、命令の最高の厳格さを付け加える。
*magnitudine [[wikt:en:supplicium#Latin|supplicii]] [[wikt:en:dubitans#Latin|dubitantes]] cogit.
**重大な刑罰をふんぎりが付かぬ者たちへ強いる。
: <!-- [[wikt:en:| -->
*<!--❿--><sup>(10)</sup> Nam maiore commisso delicto <u>igni</u> atque omnibus tormentis necat,
**すなわち、より重大な違反を犯したら、火とあらゆる拷問によって誅殺した。
*leviore de causa auribus desectis aut singulis effossis oculis domum remittit,
**より軽微な場合については、両耳を切り取り、あるいは眼を一つずつ繰り抜いて、郷里へ送還する。
*ut sint reliquis documento et magnitudine poenae perterreant alios.
**ほかの者たちへの警告となり、懲罰の重大さが別の者たちを畏怖させるようにである。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===5節===
*<span style="background-color:#ffd;">[[/注解/5節]] {{進捗|00%|2025-12-14}}</span>
;ビトゥリゲース族が、ガッリア同盟軍に寝返る
:
*<!--❶--><sup>(1)</sup> His [[wikt:en:supplicium#Latin|suppliciis]] celeriter [[wikt:en:coactus#Latin|coacto]] [[wikt:en:exercitus#Noun|exercitu]],
**<small>(ウェルキンゲトリークスは)</small>これらの刑罰により速やかに軍隊を徴集して、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:「軍隊」と訳される [[wikt:en:exercitus#Noun|exercitus]] には「鍛えられて規律がある」という意味合いがあり、<br> これまでカエサルがガッリア人の軍勢をこのように表現したことはまれであった。)</span>
*[[wikt:en:Lucterius#Latin|Lucterium]] [[wikt:en:Cadurcus#Latin|Cadurcum]], [[wikt:en:summus#Latin|summae]] hominem [[wikt:en:audacia#Latin|audaciae]],
**この上なく豪胆な人物であるカドゥルキー族のルクテリウスを
*cum parte [[wikt:en:copiarum#Noun_2|copiarum]] in [[wikt:en:Ruteni#Latin|Rutenos]] [[wikt:en:mittit|mittit]];
**軍勢の一部とともにルテーニー族のところに遣わす。
*ipse in [[wikt:en:Bituriges#Latin|Bituriges]] [[wikt:en:proficiscitur|proficiscitur]].
**<small>(ウェルキンゲトリークス)</small>自身はビトゥリゲース族のところに出発する。
:
; ビトゥリゲース族が、ハエドゥイー族に、対ウェルキンゲトリークスのための援兵を依頼
*<!--❷--><sup>(2)</sup> Eius [[wikt:en:adventus#Latin|adventu]]
**彼<small>〔ウェルキンゲトリークス〕</small>の到来により、
*[[wikt:en:Bituriges#Latin|Bituriges]] ad [[wikt:en:Aeduos|Haeduos]], quorum erant in [[wikt:en:fides#Latin|fide]],
**ビトゥリゲース族は、彼らが庇護下にあった[[w:ハエドゥイ族|ハエドゥイー族]]のもとへ、
*[[wikt:en:legatus#Latin|legatos]] [[wikt:en:mittunt|mittunt]] [[wikt:en:subsidium#Latin|subsidium]] [[wikt:en:rogatum#Verb|rogatum]],
**使節たちを、<small>(ハエドゥイー族からの)</small>援兵を依頼するために派遣する。
*[[wikt:en:quo#Adverb|quo]] [[wikt:en:facile#Latin|facilius]] hostium copias [[wikt:en:sustinere|sustinere]] [[wikt:en:possint|possint]].
**それにより、敵の軍勢をより容易に持ちこたえることができるようにということであった。
:
; ハエドゥイー族が、ビトゥリゲース族に対して援兵を派兵
*<!--❸--><sup>(3)</sup> [[wikt:en:Aedui#Latin|Haedui]] de [[wikt:en:consilium#Latin|consilio]] [[wikt:en:legatus#Latin|legatorum]], quos Caesar ad [[wikt:en:exercitus#Noun|exercitum]] [[wikt:en:reliquerat|reliquerat]],
**[[w:ハエドゥイ族|ハエドゥイー族]]は、カエサルが軍隊のもとへ残していた<ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レーガートゥス</rt><rp>)</rp></ruby>たちの助言により、
*copias [[wikt:en:equitatus#Noun|equitatus]] [[wikt:en:peditatus#Latin|peditatus]]<nowiki>que</nowiki> [[wikt:en:subsidium#Latin|subsidio]] [[wikt:en:Bituriges#Latin|Biturigibus]] [[wikt:en:mittunt|mittunt]].
**[[w:騎兵|騎兵隊]]と[[w:歩兵|歩兵隊]]の軍勢をビトゥリゲース族に対する援兵として派遣する。
:
; ハエドゥイー族の援兵が、ビトゥリゲース族の寝返りを怖れて、途中で逃げ帰ってしまう
*<!--❹--><sup>(4)</sup> Qui cum ad flumen [[wikt:en:Liger#Latin|Ligerim]] [[wikt:en:venissent|venissent]], quod [[wikt:en:Bituriges#Latin|Bituriges]] ab [[wikt:en:Aeduis|Haeduis]] [[wikt:en:dividit#Latin|dividit]],
**その者たち<small>〔援兵〕</small>は、ビトゥリゲース族を[[w:ハエドゥイ族|ハエドゥイー族]]から分け隔てるリゲル川のたもとへやって来たときに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:リゲル川 [[w:la:Liger|Liger]] は、現在の[[w:ロワール川|ロワール川]]。<br> 本書に登場するビトゥリゲース・クビ族 ''[[w:en:Bituriges Cubi|Bituriges Cubi]]'' は、<br> ロワール川西岸の[[w:シェール県|シェール県]]の辺りに居住していた。<br> 対して、[[w:ハエドゥイ族|ハエドゥイー族]]は、<br> ロワール川東岸の[[w:ニエーヴル県|ニエーヴル県]]の辺りに居住していた。)</span>
[[画像:Map of Eduens people-fr.svg|thumb|right|250px|[[w:ハエドゥイ族|ハエドゥイー族]]を軸とするガッリアの合従連衡(<small>フランス語表記</small>)。赤い部分がハエドゥイー族(Eduens)、桃色・茶色の部分が同盟部族、灰色の部分が敵対する[[w:アルウェルニ族|アルウェルニー族]](Arvernes)とセクアニ族(Sequanes)の領域である。茶色のビトゥリゲース族(Bituriges)と赤いハエドゥイー族(Eduens)の境界に沿ってリゲル川([[w:ロワール川|ロワール川]])が流れていることが見て取れる。川の西岸はビトゥリゲース族とアルウェルニー族の勢力圏になっている。]]
*paucos dies ibi [[wikt:en:moratus#Participle|morati]]
**わずかな日々をそこでぐずぐずして、
*neque flumen [[wikt:en:transire#Latin|transire]] [[wikt:en:ausus#Participle|ausi]] [[wikt:en:domus#Latin|domum]] [[wikt:en:revertuntur|revertuntur]]
**川をあえて渡らずに、故国に引き返す。
:
*<!--❺--><sup>(5)</sup> [[wikt:en:legatus#Latin|legatis]]<nowiki>que</nowiki> nostris [[wikt:en:renuntiant|renuntiant]]
**<small>(ハエドゥイー族の援兵たちが)</small>我が方<small>〔ローマ方〕</small>の<ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レーガートゥス</rt><rp>)</rp></ruby>たちに報告したことには、
*se [[wikt:en:Bituriges#Latin|Biturigum]] [[wikt:en:perfidia#Latin|perfidiam]] [[wikt:en:veritus#Latin|veritos]] [[wikt:en:revertisse|revertisse]],
**自分たち<small>〔援兵〕</small>は、ビトゥリゲース族の寝返りを恐れて引き返した。
*quibus id [[wikt:en:consilium#Latin|consilii]] fuisse [[wikt:en:cognoverint|cognoverint]],
**彼らには、以下のような謀計があったことを探知したのだ。
*ut, si flumen [[wikt:en:transissent#Latin|transissent]], una ex parte ipsi, altera [[wikt:en:Arverni#Latin|Arverni]] se [[wikt:en:circumsisterent|circumsisterent]].
**もし川を渡ったら、一方から<small>(ビトゥリゲース族)</small>自身が、他方から[[w:アルウェルニ族|アルウェルニー族]]が自分たちを包囲するというものだ、と。
:
*<!--❻--><sup>(6)</sup> Id ea<span style="background-color:#ffa;">[[wikt:la:-ne|ne]]</span> de causa, quam [[wikt:en:legatus#Latin|legatis]] <u>pronuntiarunt</u>,
**そのことは<small>(援兵たちが)</small><ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レーガートゥス</rt><rp>)</rp></ruby>たちに報告した理由によって<small>(なしたのか?)</small>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:-ne#Latin|-ne]] ~ [[wikt:en:an#Latin|an]] …;~であるか、あるいは…であるか。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の [[wikt:en:pronuntiarunt|pronuntiarunt]]<sub> (直接法・完了形)</sub> は古い印刷本 ''[[ガリア戦記/注解編/写本と校訂版#クリティカル・アパラトゥスとその略号|edd.vett.]]'' の記述で、<br> α系写本では [[wikt:en:pronuntiarint|pronuntiarint]]<sub> (接続法・完了形)</sub> だが、<br> β系写本では [[wikt:en:pronuntiaverint|pronuntia<u>ve</u>rint]]<sub> (接続法・完了形)</sub> となっている。)</span>
*<span style="background-color:#ffa;">[[wikt:la:an|an]]</span> [[wikt:en:perfidia#Latin|perfidia]] [[wikt:en:adductus#Latin|adducti]] [[wikt:en:fecerint|fecerint]],
**あるいは<small>(ビドゥリゲース族の)</small>寝返りに動かされて、なしたのか?
*[[wikt:en:quod#Conjunction|quod]] [[wikt:en:nihil#Latin|nihil]] nobis [[wikt:en:constat#Latin|constat]],
**我々<small>〔ローマ人〕</small>には何ら定かではないので、
*non [[wikt:en:videtur|videtur]] pro [[wikt:en:certus#Latin|certo]] esse <u>proponendum</u>.
**確言するべきであるとは思われない。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:~ pro certo ponere;~を確かであると主張する)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:proponendum|<u>pro</u>ponendum]] だが、<br> β系写本では [[wikt:en:ponendum|ponendum]] となっている。)</span>
: <!-- [[wikt:en:| -->
; ビトゥリゲース族が、ローマ人やハエドゥイー族から離反して、アルウェルニー族と同盟してしまう
*<!--❼--><sup>(7)</sup> [[wikt:en:Bituriges#Latin|Bituriges]] eorum [[wikt:en:discessus#Noun|discessu]]
**ビトゥリゲース族は、彼ら<small>〔援兵〕</small>の撤収により、
*[[wikt:en:statim#Latin|statim]] <u>se</u> cum [[wikt:en:Arverni#Latin|Arvernis]] <u>coniunguntur</u>.
**ただちに[[w:アルウェルニ族|アルウェルニー族]]と<small>(同盟を)</small>結んだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:iunguntur|iunguntur]] だが、<br> β系写本では se ~ [[wikt:en:coniungunt|coniungunt]] となっている。)</span>
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===6節===
*<span style="background-color:#ffd;">[[/注解/6節]] {{進捗|00%|2025-12-15}}</span>
[[画像:Warsaw Royal Castle GM (12).JPG|thumb|right|200px|[[w:グナエウス・ポンペイウス|グナエウス・ポンペイウス]]の立像([[w:ワルシャワ歴史地区|ワルシャワ王宮]])。彼は首都の騒乱を鎮めるために単独の[[w:執政官|執政官]]として大権を与えられ、イタリアの徴兵権を得た。[[w:三頭政治|三頭政治]]後のこの混乱期に、彼はカエサルの政敵たちからこぞって支持されたが、危機に瀕していたカエサルを打倒する絶好の機会を見送った。これは重大な逸機であり、数年後にポンペイウスにとって致命的な結果をもたらすことになる。]]
;諸軍団と分断されて苦慮するカエサル
:
*<!--❶--><sup>(1)</sup> His rebus in Italiam Caesari [[wikt:en:nuntiatus#Latin|nuntiatis]],
**これらの事情がイタリアにいるカエサルへ知らされると、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ここでいうイタリアとは、<br> カエサルの属州[[w:ガリア・キサルピナ|ガッリア・キサルピーナ]]のことである。)</span>
*cum iam ille [[wikt:en:urbanus#Latin|urbanas]] res [[wikt:en:virtus#Latin|virtute]] [[wikt:en:Gnaei#Latin|Gnaei]]<sub> ([[wikt:en:Cn.#Latin|Cn.]])</sub> [[wikt:en:Pompeius#Proper_noun|Pompei]] [[wikt:en:commodior#Latin|commodiorem]] in [[wikt:en:status#Noun_11|statum]] [[wikt:en:pervenisse#Latin|pervenisse]] [[wikt:en:intellegeret|intellegeret]],
**彼は、もはや都<small>〔[[w:ローマ|ローマ市]]〕</small>の事態は[[w:グナエウス・ポンペイウス|グナエウス・ポンペイウス]]の果断さによってより相応な状態に至ったと認識したので、
*in [[wikt:en:Gallia_transalpina#Latin|Transalpinam Galliam]] [[wikt:en:profectus#Latin|profectus]] est.
**ガッリア・トラーンサルピーナ<small>〔アルプスの向こう側のガッリア〕</small>に出発した。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[#1節|1節]]②項で言及された Galliam Transalpinam は<br> アルプスの西側「長髪のガッリア」全般を指すと思われるが、<br> ここではどちらかといえば<br> ガッリア南部のローマ属州ガッリア・トラーンサルピーナ<br> すなわち後の[[w:ガリア・ナルボネンシス|ガッリア・ナルボーネーンスィス]]を指す。)</span>
:
*<!--❷--><sup>(2)</sup> [[wikt:en:eo#Adverb|Eo]] cum [[wikt:en:venisset|venisset]],
**<small>(カエサルが)</small>そこに来たときに、
*magna [[wikt:en:difficultas#Latin|difficultate]] [[wikt:en:adficiebatur|adficiebatur]], qua [[wikt:en:ratio#Latin|ratione]] ad [[wikt:en:exercitus#Noun|exercitum]] [[wikt:en:pervenire#Latin|pervenire]] [[wikt:en:posset#Latin|posset]].
**どのような方策で軍隊のもとへ到達することができるか、という大きな困難に苦悩させられていた。
:
*<!--❸--><sup>(3)</sup> Nam, si [[wikt:en:legio#Latin|legiones]] in [[wikt:en:provincia#Latin|provinciam]] [[wikt:en:arcesseret|arcesseret]],
**なぜなら、もし、諸[[w:ローマ軍団|軍団]]を属州<small>〔ガッリア・トラーンサルピーナ〕</small>に呼び寄せるのならば、
*se [[wikt:en:absens#Latin|absente]] in [[wikt:en:iter#Latin|itinere]] [[wikt:en:proelium#Latin|proelio]] [[wikt:en:dimicaturus#Latin|dimicaturas]] [[wikt:en:intellegebat|intellegebat]];
**自分<small>〔カエサル〕</small>が不在のままで、行軍中に戦闘を闘うことになるであろうと理解していた。
: <!-- [[wikt:en:| -->
*<!--❹--><sup>(4)</sup> si ipse ad exercitum [[wikt:en:contenderet|contenderet]],
**もし<small>(カエサル)</small>自身が<small>(大部隊の護衛なしで)</small>軍隊のもとへ急いで行くのならば、
*<u>ne</u> iis <u>quidem</u> eo tempore qui quieti [[wikt:en:viderentur|viderentur]],
**そのときには、中立を保っていると見られる者たちでさえも、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:iis#Latin|iis]] はβ系写本の記述で、α系写本では [[wikt:en:his#Latin|his]] となっている。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:quietus#Latin|quietus, quieti]]「平和的な、中立的な」)</span>
*suam [[wikt:en:salus#Latin|salutem]] [[wikt:en:recte#Latin|recte]] [[wikt:en:committi|committi]] [[wikt:en:videbat|videbat]].
**自分の身の安全を良く託されるとは思えなかったのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:前年まで、すなわち第6巻までの戦争は主としてガッリア北部・中部などで闘われていたので、<br> [[ガリア戦記 第6巻#44節|第6巻44節]]で既述のように、ローマ諸軍団はガッリア北部・中部周辺に冬営させられていた。<br> 今回は軍団が駐留していないガッリア中南部を中心に反乱が起こったので、<br> カエサルと諸軍団は分断された。<br> そのため、カエサルが大部隊の護衛なしで北上すれば、<br> 同盟部族にさえ寝首を掻かれる怖れがあったのである。)
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===7節===
*<span style="background-color:#ffd;">[[/注解/7節]] {{進捗|00%|2025-12-19}}</span>
;ルクテリウスとカエサルのナルボーをめぐる駆け引き
[[画像:Narbonne_panorama.jpg|thumb|right|300px|'''ナルボー'''(Narbo)すなわち現在の[[w:ナルボンヌ|ナルボンヌ市]](Narbonne)の街並み。ローマ人が[[w:ドミティア街道|ドミティア街道]]の拠点として植民市'''コロニア・ナルボー・マルティウス'''(Colonia Narbo Martius)を建設し、後には[[w:ローマ内戦 (紀元前49年-紀元前45年)|ローマ内乱]]のときにもカエサル派の根拠地となった。その重要性から帝政期には州都に昇格し、[[w:属州|属州]]名も[[w:ガリア・ナルボネンシス|ガッリア・ナルボネンスィス]]に改められたほどである。]]
[[画像:Via_domitia_map600x600_(1).png|thumb|right|200px|[[w:ドミティア街道|ドミティア街道]](Via Domitia)の経路。ローマ人によってイタリアと[[w:ヒスパニア|ヒスパーニア]]を結ぶ重要な街道として整備された。本節でカエサル側の軍勢が往復したのもこの街道である。]]
:
; カドゥルキー族のルクテリウスが、ルテーニー族を同盟に引き入れる
*<!--❶--><sup>(1)</sup> [[wikt:en:interim#Latin|Interim]] [[wikt:en:Lucterius#Latin|Lucterius]] [[wikt:en:Cadurcus#Latin|Cadurcus]]
**その間に、カドゥルキー族のルクテリウスが
*in [[wikt:en:Ruteni#Latin|Rutenos]] [[wikt:en:missus#Participle|missus]]
**ルテーニー族のところに遣わされて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[#5節|5節]]の冒頭で述べられた。<br> ルテーニー族 ''[[w:en:Ruteni|Ruteni]]'' は現在の[[w:アヴェロン県|アヴェロン県]]の<br> [[w:ロデーズ|ロデーズ]]辺りにいたとされる。)</span>
*eam [[wikt:en:civitas#Latin|civitatem]] [[wikt:en:Arverni#Latin|Arvernis]] [[wikt:en:conciliat|conciliat]].
**その部族に[[w:アルウェルニ族|アルウェルニー族]]との仲を取り持つ。
:
; ルクテリウスが、ローマ属州内の拠点都市ナルボーを目指す
*<!--❷--><sup>(2)</sup> [[wikt:en:progressus#Participle|Progressus]] in [[wikt:en:Nitiobriges#Latin|Nitiobriges]] et [[wikt:en:Gabali#Latin|Gabalos]]
**<small>(彼は)</small>ニティオブリゲース族とガバリー族のところに進んで行き、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ニティオブリゲース族<br> またはニティオブロゲース族 ''[[w:en:Nitiobroges|Nitiobroges]]'' は<br> 現在の[[w:ロット=エ=ガロンヌ県|ロット=エ=ガロンヌ県]][[w:アジャン|アジャン]]辺り、<br> ガバリー族 ''[[w:en:Gabali|Gabali]]'' は現在の[[w:ロゼール県|ロゼール県]]辺りにいたらしい。)</span>
*ab [[wikt:en:uterque#Latin|utrisque]] [[wikt:en:obses#Latin|obsides]] [[wikt:en:accipit|accipit]]
**双方から人質たちを受け取って、
*et, magna [[wikt:en:coactus#Latin|coacta]] [[wikt:en:manus#Latin|manu]],
**多くの手勢を徴集すると、
*in [[wikt:en:provincia#Latin|provinciam]] [[wikt:en:Narbo#Latin|Narbonem]] [[wikt:en:versus#Latin|versus]] [[wikt:en:eruptio#Latin|eruptionem]] facere [[wikt:en:contendit|contendit]].
**<small>(ローマ人の)</small>[[w:属州|属州]]内のナルボーに向かって出撃することを急ぐ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ナルボー [[w:la:Narbo|Narbo]] は、ローマ人が建設した地中海岸の植民市で、<br> ヒスパーニアとイタリアを結ぶ拠点であった。<br> 現在の[[w:ナルボンヌ|ナルボンヌ]]。)</span>
:
; カエサルもナルボーを目指す
*<!--❸--><sup>(3)</sup> Qua re [[wikt:en:untiatus#Latin|nuntiata]]
**その事を報告されると、
*Caesar omnibus [[wikt:en:consilium#Latin|consiliis]] [[wikt:en:antevertendus#Latin|antevertendum]] <span style="color:#009900;font-size:8pt;">(esse)</span> [[wikt:en:existimavit|existimavit]], ut [[wikt:en:Narbo#Latin|Narbonem]] [[wikt:en:proficisceretur|proficisceretur]].
**カエサルは、ナルボーに出発することを、あらゆる計画に先立ってするべきであると考えた。
:
*<!--❹--><sup>(4)</sup> [[wikt:en:eo#Adverb|Eo]] cum [[wikt:en:venisset|venisset]],
**<small>(カエサルは)</small>そこへやって来ると、
*[[wikt:en:timens#Latin|timentes]] [[wikt:en:confirmat#Latin|confirmat]],
**<ruby><rb>怖気</rb><rp>(</rp><rt>おじけ</rt><rp>)</rp></ruby>ている者たちを元気付けて、
*[[wikt:en:praesidium#Latin|praesidia]]
**守備隊を
*in [[wikt:en:Ruteni#Latin|Rutenis]] [[wikt:en:provincialis#Latin|provincialibus]], [[wikt:en:Volcae#Latin|Volcis]] [[wikt:en:Arecomici#Latin|Arecomicis]], [[wikt:en:Tolosates#Latin|Tolosatibus]]
**属州側のルテーニー族、[[w:ウォルカエ族|ウォルカエ]]・アレコミキー族、トローサーテース族<small>(らの領内)</small>に、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:上述のように、属州外の<u>ルテーニー族</u>は[[w:アルウェルニ族|アルウェルニー族]]と結んでいる。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:ウォルカエ族|ウォルカエ族]]は、西側に住むテクトサゲース族 ''[[w:en:Tectosages|Tectosages]]'' と<br> 東側に住むアレコミキー族 ''[[w:en:Arecomici|Arecomici]]'' の2支族に分かれていた。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:トローサーテース族 ''[[w:fr:Tolosates|Tolosates]]'' は、ウォルカエ・テクトサゲース族の分派とされ、<br> 現在の[[w:トゥールーズ|トゥールーズ]]の近くにいたと考えられている。)</span>
*[[wikt:en:circum#Preposition|circum]]<nowiki>que</nowiki> [[wikt:en:Narbo#Latin|Narbonem]], quae [[wikt:en:locum#Latin|loca]] hostibus erant [[wikt:en:finitimus#Latin|finitima]],
**および敵方に隣接した地である[[w:ナルボンヌ|ナルボー]]周辺に
*[[wikt:en:constituit#Latin|constituit]];
**駐留させる。
:
*<!--❺--><sup>(5)</sup> partem [[wikt:en:copiae#Noun_2|copiarum]] ex [[wikt:en:provincia#Latin|provincia]]
**属州<small>〔ガッリア・トラーンサルピーナ〕</small>からの軍勢の一部、
*[[wikt:en:supplementum#Latin|supplementum]]<nowiki>que</nowiki>, quod ex Italia [[wikt:en:adduxerat|adduxerat]],
**およびイタリアから率いて来た補充兵を
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:後者の補充兵 supplementum は、[[#1節|1節]]で既述のように、<br> [[w:ガリア・キサルピナ|ガッリア・キサルピーナ]]で徴募された軍団兵であろう。)</span>
*in [[wikt:en:Helvii#Latin|Helvios]], qui fines [[wikt:en:Arverni#Latin|Arvernorum]] [[wikt:en:contingunt|contingunt]],
**[[w:アルウェルニ族|アルウェルニー族]]の領土に接しているヘルウィイー族のところに
*[[wikt:en:convenire#Latin|convenire]] [[wikt:en:iubet#Latin|iubet]].
**集結することを命じる。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===8節===
*<span style="background-color:#ffd;">[[/注解/8節]] {{進捗|00%|2026-01-03}}</span>
[[画像:Carte-cevennes-france.png|thumb|right|200px|フランスにおける[[w:中央高地 (フランス)|中央高地]](Massif Central)とセヴェンヌ山地(Cévennes)の位置]]
[[画像:Col_de_legal.jpeg|thumb|right|200px|[[w:雪|雪]]に覆われた[[w:オーヴェルニュ地域圏|オーヴェルニュ高地]]。オーヴェルニュ(Auvergne)の名は[[w:アルウェルニ族|アルウェルニー族]](Arverni)に由来する。]]
[[画像:Causse_Mejean_Evening.jpg|thumb|right|200px|城壁のように続くケウェンナ(セヴェンヌ)山地の断崖]]
[[画像:France_Massif_central.jpg|thumb|right|200px|[[w:アルウェルニ族|アルウェルニー族]]の勢力圏であった[[w:中央高地 (フランス)|中央高地]](Massif Central)の領域(着色部分)。平野の多いフランスにおいて山塊としてそびえ立つ。]]
:
;カエサルがケウェンナ山地を越えてアルウェルニー族の領内へ突入
*<!--❶--><sup>(1)</sup> His rebus [[wikt:en:comparatus#Latin|comparatis]],
**これらの事が整えられて、
*[[wikt:en:repressus#Latin|represso]] iam [[wikt:en:Lucterius#Latin|Lucterio]] et [[wikt:en:remotus#Latin|remoto]],
**<small>(カドゥルキー族の)</small>ルクテリウスはすでに押し留められ、遠ざけられた。
*quod [[wikt:en:intrare#Latin|intrare]] intra [[wikt:en:praesidium#Latin|praesidia]] [[wikt:en:periculosus#Latin|periculosum]] [[wikt:en:putabat|putabat]],
**──というのは<small>(ローマ人の)</small>守備の範囲内に踏み込むことは危険なことであると<small>(ルクテリウスが)</small>見なしていたからであるが、──
*in [[wikt:en:Helvii#Latin|Helvios]] [[wikt:en:proficiscitur|proficiscitur]].
**<small>(そこで、カエサルは)</small>ヘルウィイー族のところに出発する。
:
; カエサルが、アルウェルニー族の要害ケウェンナ山を越える
*<!--❷--><sup>(2)</sup> <u>Etsi</u> mons <u>Cevenna</u>, qui [[wikt:en:Arverni#Latin|Arvernos]] ab [[wikt:en:Helvii#Latin|Helviis]] [[wikt:en:discludit|discludit]],
**[[w:アルウェルニ族|アルウェルニー族]]をヘルウィイー族から隔てている<u>ケウェンナ山</u>は、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:山の名は写本によって Cebenna または Cevenna となっており、<br> [[w:ガイウス・プリニウス・セクンドゥス|大プリーニウス]]が記した [[wikt:en:Cebenna#Latin|Cebenna]] がガリア語に近いようである。<br> 現在名はセヴェンヌ山地 Cévennes と呼ばれ、<br> [[w:中央高地 (フランス)|フランス中央高地]](Massif Central)の南東部にそそり立っている。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:etsi#Latin|etsi]] ~ [[wikt:en:tamen#Latin|tamen]] …「~としても、にもかかわらず…」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:mons#Latin|mons]] は β系写本の記述で、α系写本にはない。)</span>
*[[wikt:en:durissimus#Latin|durissimo]] tempore anni
**最も厳しい時季に
*[[wikt:en:altissimus#Latin|altissima]] [[wikt:en:nix#Latin|nive]] iter [[wikt:en:impediebat|impediebat]],
**豪[[w:雪|雪]]によって道を閉ざしていたのであるが、
*<u>tamen</u> [[wikt:en:discussus#Latin|discussa]] [[wikt:en:nix#Latin|nive]] sex in [[wikt:en:altitudo#Latin|altitudinem]] [[wikt:en:pes#Latin|pedum]]
**にもかかわらず<small>(カエサル勢は)</small>深さ6<u>ペース</u>の雪を粉砕して、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ペース|ペース]]は約29.6cmで、6ペースは約1.8メートル弱。)</span>
*atque ita [[wikt:en:via#Latin|viis]] [[wikt:en:patefactus#Latin|patefactis]] [[wikt:en:summus#Latin|summo]] [[wikt:en:miles#Latin|militum]] <u>sudore</u>
**このように兵士たちの最大の努力によって道が開かれて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:sudor#Latin|sudore]]「汗」だが、<br> β系写本では [[wikt:en:labor#Latin|labore]]「労苦」 となっている。)</span>
*ad fines [[wikt:en:Arverni#Latin|Arvernorum]] [[wikt:en:pervenit#Latin|pervenit]].
**[[w:アルウェルニ族|アルウェルニー族]]の領土へ到達した。
:
; アルウェルニー族が、カエサルの奇襲に周章狼狽する
*<!--❸--><sup>(3)</sup> Quibus [[wikt:en:oppressus#Latin|oppressis]] [[wikt:en:inopinans#Latin|inopinantibus]],
**<small>(アルウェルニー族は)</small>彼らに対する<small>(カエサルの)</small>攻撃を予期していなかったが、
*quod se <u>Cevenna</u> ut [[wikt:en:murus#Latin|muro]] [[wikt:en:munitus#Latin|munitos]] [[wikt:en:existimabant|existimabant]],
**──というのは、自分たちは<u>ケウェンナ</u>を壁として防御されていると考えていたからであり、
*ac <u>ne</u> [[wikt:en:singularis#Latin|singulari]] <u>quidem</u> [[wikt:en:umquam#Latin|umquam]] homini eo tempore anni [[wikt:en:semita#Latin|semitae]] [[wikt:en:patuerant|patuerant]],
**かつ、その時季には、個人にとってさえも、小道はかつて開かれていなかったからであるが、──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
*[[wikt:en:eques#Latin|equitibus]] [[wikt:en:imperat|imperat]],
**<small>(カエサルは)</small>騎兵たちに命令する。
*ut, [[wikt:en:quam#Adverb|quam]] [[wikt:en:late#Latin|latissime]] [[wikt:en:possint|possint]], [[wikt:en:vagentur|vagentur]]
**できるだけ広く動き回り、
*et [[wikt:en:quam#Adverb|quam]] maximum hostibus [[wikt:en:terror#Latin|terrorem]] [[wikt:en:inferant|inferant]].
**敵たちに最大限の恐怖を引き起こすように、と。
:
; ウェルキンゲトリークスが、ビトゥリゲース族のもとから軍勢を取って返す
*<!--❹--><sup>(4)</sup> Celeriter haec [[wikt:en:fama#Latin|fama]] ac <u>nuntiis</u>
**これらのことは速やかに風評や伝令たちによって、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、主要写本ω では [[wikt:en:nuntii#Latin|nuntii]] だが、<br> ''[[ガリア戦記/注解編/写本と校訂版#Manutius|Manutius]]'' が [[wikt:en:nuntiis#Etymology_1|nuntiis]] と修正提案している。)</span>
*ad [[wikt:en:Vercingetorix#Latin|Vercingetorigem]] [[wikt:en:perferuntur|perferuntur]];
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]のもとへ報知される。
*quem [[wikt:en:perterritus#Latin|perterriti]] omnes [[wikt:en:Arverni#Latin|Arverni]] [[wikt:en:circumsistunt|circumsistunt]] atque [[wikt:en:obsecrant|obsecrant]],
**彼<small>〔ウェルキンゲトリークス〕</small>を、脅かされている[[w:アルウェルニ族|アルウェルニー族]]の皆が取り巻いて、嘆願する。
*ut suis [[wikt:en:fortuna#Latin|fortunis]] [[wikt:en:consulat#Latin|consulat]],
**自分たち<small>〔アルウェルニー族〕</small>の境遇に配慮してくれるように、
*<u>neve</u> ab hostibus <u>diripiantur</u>,
**自分たち<small>〔アルウェルニー族〕</small>が敵<small>〔ローマ人〕</small>によって略奪されることを許容しないように、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:この行は、α系写本では [[wikt:en:neve#Latin|neve]] ab hostibus [[wikt:en:diripiantur|diripiantur]] <br> β系写本では [[wikt:en:neu#Latin|neu]] se ab hostibus [[wikt:en:diripi|diripi]] [[wikt:en:patiatur|patiatur]] となっている。)</span>
*[[wikt:en:praesertim#Latin|praesertim]] cum [[wikt:en:videat|videat]] [[wikt:en:omnis#Latin|omne]] ad se bellum [[wikt:en:translatus#Participle|translatum]].
**とりわけ、すべての戦争が自分たちへ向けられると<small>(彼が)</small>見なしているのであるから
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:praesertim cum ~;とりわけ~であるから)</span>
: <!-- [[wikt:en:| -->
*<!--❺--><sup>(5)</sup> Quorum ille [[wikt:en:prex#Latin|precibus]] [[wikt:en:permotus#Latin|permotus]]
**彼<small>〔ウェルキンゲトリークス〕</small>は、その者たちの懇願に揺り動かされて、
*[[wikt:en:castra#Latin|castra]] ex [[wikt:en:Bituriges#Latin|Biturigibus]] [[wikt:en:movet|movet]] in [[wikt:en:Arverni#Latin|Arveruos]] [[wikt:en:versus#Latin|versus]].
**陣営をビトゥリゲース族のところから[[w:アルウェルニ族|アルウェルニー族]]のところに向けて行軍する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:castra movet 「陣営を動かす」=「行軍する」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:現在の[[w:ブールジュ|ブールジュ]]辺りから[[w:クレルモン=フェラン|クレルモン=フェラン]]辺りに南下したようである。)</span>
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===9節===
*<span style="background-color:#ffd;">[[/注解/9節]] {{進捗|00%|2026-01-12}}</span>
;カエサルが北上して諸軍団と合流するが、同盟軍はゴルゴビナ攻略をめざす
:
*<!--❶--><sup>(1)</sup> At Caesar, [[wikt:en:biduum#Latin|biduum]] in his locis [[wikt:en:moratus#Participle|moratus]],
**それに対して、カエサルは2日間、この地に留まった。
*quod haec de [[wikt:en:Vercingetorix#Latin|Vercingetorige]] usu ventura [[wikt:en:opinio#Latin|opinione]] [[wikt:en:praeceperat|praeceperat]],
**──というのは、[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]についてこれ<small>〔陣営の移動〕</small>が起こると予想をしていたからだが、──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:usu venire 「起こる」→ usu [[wikt:en:venturus#Latin|ventūra]] (esse) 「起こるであろう」)</span>
*per causam [[wikt:en:supplementum#Latin|supplementi]] [[wikt:en:equitatus#Noun|equitatus]]<nowiki>que</nowiki> [[wikt:en:cogendus#Latin|cogendi]]
**補充兵と騎兵隊を徴集するためという口実のもとに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:per causam 「口実のもとに」)</span>
*ab [[wikt:en:exercitus#Noun|exercitu]] [[wikt:en:discedit|discedit]];
**軍隊から離れる。
:
*<!--❷--><sup>(2)</sup> [[wikt:en:Brutus#Latin|Brutum]] [[wikt:en:adulescens#Noun|adulescentem]] his copiis [[wikt:en:praeficit|praeficit]];
**<small>(カエサルは)</small><u>青年ブルートゥス</u>にこの軍勢を指揮させる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:青年ブルートゥスとは、<br> [[w:デキムス・ユニウス・ブルトゥス・アルビヌス|デキムス・ブルートゥス]](<small>[[w:la:Decimus_Iunius_Brutus_Albinus|Decimus Iunius Brutus Albinus]]</small>)のことで、<br> [[ガリア戦記 第3巻#14節|第3巻14節]]でカエサルの艦隊を指揮した。)</span>
*hunc [[wikt:en:monet#Latin|monet]], ut in omnes partes [[wikt:en:eques#Latin|equites]] quam [[wikt:en:late#Latin|latissime]] [[wikt:en:pervagentur|pervagentur]]:
**彼には、[[w:騎兵|騎兵]]たちがあらゆる方面にできるだけ広く駆け回るようにと、忠告する。
*<u>daturum</u> se <u>operam</u>, ne longius [[wikt:en:triduum#Latin|triduo]] ab [[wikt:en:castra#Latin|castris]] [[wikt:en:absit#Latin|absit]].
**自分<small>〔カエサル〕</small>は、3日間より長く陣営から離れないように、努力をするであろう、と。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:opera#Latin|operam]] dare 「努力をする」→ operam [[wikt:en:daturus#Latin|datūrum]] (esse) 「努力をするであろう」)</span>
[[画像:Image-Vienne-Cropped.jpg|thumb|right|300px|'''ウィエンナ'''(Vienna)すなわち現在のヴィエンヌ(Vienne)。ロダヌス川(現[[w:ローヌ川|ローヌ川]])のほとりにある当地は、南仏[[w:プロヴァンス|プロヴァンス地方]]と北仏[[w:ブルゴーニュ地域圏|ブルゴーニュ地方]]を結ぶ交通の要衝として、古代ローマ時代から栄え、今もローマ時代の遺跡が多く残る。]]
:
; カエサルが、急いでウィエンナへ北進する
*<!--❸--><sup>(3)</sup> His [[wikt:en:constitutus#Participle|constitutis]] rebus,
**これらの事を決定すると、
*<u>omnibus</u> suis [[wikt:en:inopinans#Latin|inopinantibus]],
**配下の皆が予期しないほど、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:omnibus は β系写本の記述で、<br> α系写本にはない。)</span>
*quam [[wikt:en:maximus#Latin|maximis]] potest [[wikt:en:iter#Latin|itineribus]],
**できるかぎりの強行軍で、
*[[wikt:en:Vienna#Etymology_1|Viennam]] [[wikt:en:pervenit#Latin|pervenit]].
**<u>ウィエンナ</u>に到着する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ウィエンナ [[w:la:Vienna|Vienna]] は、<br> 現在の[[w:ヴィエンヌ (イゼール県)|ヴィエンヌ]] ''[[w:en:Vienne, Isère|Vienne]]'')</span>
:
; カエサルが、ハエドゥイー族領を抜けて、2個軍団が冬営するリンゴネース族領へ向けて北上する
*<!--❹--><sup>(4)</sup> [[wikt:en:ibi#Latin|Ibi]] [[wikt:en:nactus#Latin|nactus]] [[wikt:en:recens#Latin|recentem]] [[wikt:en:equitatus#Latin|equitatum]], quem [[wikt:en:multus#Latin|multis]] ante diebus eo [[wikt:en:praemiserat|praemiserat]],
**そこで、何日も前にそこに先遣していたまだ新兵の騎兵隊を得て、
[[画像:Langres_FR_(march_2008).jpg|thumb|right|300px|リンゴネース族(Lingones)の名を残す[[w:ラングル|ラングル]](Langres)の街の雪景色]]
*neque [[wikt:en:diurnus#Latin|diurno]] neque [[wikt:en:nocturnus#Latin|nocturno]] itinere [[wikt:en:intermissus#Latin|intermisso]]
**昼間も夜間も行軍を中断せずに、
*per fines [[wikt:en:Aedui#Latin|Haeduorum]]
**[[w:ハエドゥイ族|ハエドゥイー族]]の領土を通って、
*in [[wikt:en:Lingones#Latin|Lingones]] [[wikt:en:contendit|contendit]],
**<u>リンゴネース族のところ</u>に急いだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:リンゴネース族 [[w:la:Lingones|Lingones]] の首邑は<br> 現在の[[w:ラングル|ラングル]] ''[[w:en:Langres|Langres]]'' で、<br> ローマ時代には [[w:la:Andematunnum|Andematunnum]] と呼ばれたが、<br> ''[[wikt:fr:Lingones|Lingones]]'' の転訛が ''[[wikt:fr:Langres|Langres]]'' である。)</span>
*[[wikt:en:ubi#Latin|ubi]] [[wikt:en:duo#Latin|duae]] [[wikt:en:legio#Latin|legiones]] [[wikt:en:hiemabant|hiemabant]],
**そこには、2個[[w:ローマ軍団|軍団]]が冬営していた。
*ut, si [[wikt:en:aliquis#Latin|quid]] etiam de sua [[wikt:en:salus#Latin|salute]] ab [[wikt:en:Aedui#Latin|Haeduis]] [[wikt:en:iniretur|iniretur]] [[wikt:en:consilium#Latin|consilii]], [[wikt:en:celeritas#Latin|celeritate]] [[wikt:en:praecurreret|praecurreret]].
**もし<small>(カエサル)</small>自らの安全についてさえ、ハエドゥイー族により何らかの謀計が始められても、速やかに凌駕するように。
:
; カエサルが、リンゴネース族領の軍団冬営地へ到着して、諸軍団へ集結を指令する
*<!--❺--><sup>(5)</sup> [[wikt:en:eo#Adverb|Eo]] cum [[wikt:en:pervenisset|pervenisset]],
**<small>(カエサルは)</small>そこへ到着したときに、
*ad reliquas [[wikt:en:legio#Latin|legiones]] [[wikt:en:mittit|mittit]]
**残りの軍団のもとへ<small>(伝令を)</small>遣わす。
*<u>prius</u>que omnes in unum locum [[wikt:en:cogit|cogit]], <u>quam</u> de eius [[wikt:en:adventus#Latin|adventu]] [[wikt:en:Arverni#Latin|Arvernis]] [[wikt:en:nuntiari|nuntiari]] [[wikt:en:posset#Latin|posset]].
**彼の到着について[[w:アルウェルニ族|アルウェルニー族]]に知らされ得るより早く、総勢が一か所に集結するように、と。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:priusquam#Latin|prius ~ quam]] …;…より早く~)</span>
: <!-- [[wikt:en:| -->
; ウェルキンゲトリークスが、ボイイー族がいるゴルゴビナの攻略を企図する
*<!--❻--><sup>(6)</sup> Hac re [[wikt:en:cognitus#Participle|cognita]],
**この事を知ると、
*[[wikt:en:Vercingetorix#Latin|Vercingetorix]] rursus in [[wikt:en:Bituriges#Latin|Bituriges]] [[wikt:en:exercitus#Noun|exercitum]] [[wikt:en:reducit|reducit]]
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は再びビトゥリゲース族のところに軍隊を連れ戻して、
*atque [[wikt:en:inde#Latin|inde]] [[wikt:en:profectus#Participle_2|profectus]] Gorgobinam, [[wikt:en:Boii#Latin|Boiorum]] [[wikt:en:oppidum#Latin|oppidum]],
**そこから、[[w:ボイイ族|ボイイー族]]の城塞都市であるゴルゴビナへ出発した。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ゴルゴビナ ''[[w:en:Gorgobina|Gorgobina]]'' は、現在の候補地としては、<br> [[w:ニエーヴル県|ニエーヴル県]]のサン=パリズ=ル=シャテル<small>([[w:en:Saint-Parize-le-Châtel|Saint-Parize-le-Châtel]])</small><br> [[w:アンドル=エ=ロワール県|アンドル=エ=ロワール県]]のラ・ゲルシュ([[w:en:La Guerche|La Guerche]])<br> あるいは、[[w:シェール県|シェール県]]のサン=サテュル([[w:fr:Saint-Satur|Saint-Satur]])などが挙げられている。)</span>
*quos ibi [[wikt:en:helvetico|Helvetico]] [[wikt:en:proelium#Latin|proelio]] [[wikt:en:victus#Participle|victos]]
**──[[w:ヘルウェティイ族|ヘルウェーティイー族]]の戦闘で打ち負かされた彼らをそこに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ボイイー族はヘルウェーティイー族とともにガッリアに移動して、カエサルに敗れていた。第1巻28節~29節を参照。)</span>
*Caesar [[wikt:en:conlocaverat#Latin|conlocaverat]] [[wikt:en:Aedui#Latin|Haeduis]]<nowiki>que</nowiki> [[wikt:en:adtribuerat#Latin|adtribuerat]],
**カエサルは宿営させ、ハエドゥイー族<small>(の庇護)</small>に委ねていたのだが、──
*[[wikt:en:oppugnare#Latin|oppugnare]] [[wikt:en:instituit#Latin|instituit]].
**<small>(ウェルキンゲトリークスはゴルゴビナの)</small>攻略を決意した。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===10節===
[[画像:Caesar's_campaign_to_Agedincum_in_52BC.png|thumb|right|250px|前節までのカエサルの[[w:ナルボンヌ|ナルボー]]からアゲディンクムへの進路(青線)および[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の進路(赤線)。青字名は親ローマ部族、赤字名は反ローマ部族。カエサルは[[w:アルウェルニ族|アルウェルニー族]]の本拠ゲルゴウィアを突くと見せかけてウェルキンゲトリークスを引き寄せ、その間に[[w:ブルゴーニュ地域圏|ブルゴーニュ]]に冬営していた諸軍団と合流できた。これに対して、ウェルキンゲトリークスはボイイー族を攻めようとする。]]
*<span style="background-color:#ffd;">[[/注解/10節]] {{進捗|00%|2026-01-16}}</span>
;カエサルがアゲディンクムを発って、ボイイー族支援に向かう
:
; カエサルが抱えることになった「大きな困難」とは?
*<!--❶--><sup>(1)</sup> Magnam haec res Caesari [[wikt:en:difficultas#Latin|difficultatem]] ad [[wikt:en:consilium#Latin|consilium]] [[wikt:en:capiendus#Latin|capiendum]] [[wikt:en:adferebat|adferebat]]<!--:-->,
**この事態は、カエサルが作戦を立てるためには、大きな困難を引き起こしていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:haec res 「この事態」とは、<br> ウェルキンゲトリークスが<br> ハエドゥイー族の庇護下にあったボイイー族を攻めること。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:magnam ~ difficultatem 「大きな困難を」)</span>
*si reliquam partem [[wikt:en:hiems#Latin|hiemis]] uno loco [[wikt:en:legio#Latin|legiones]] [[wikt:en:contineret|contineret]],
**もし、冬の残りの期間に、諸[[w:ローマ軍団|軍団]]を1か所に留めておくならば、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:前節で述べられたように、<br> カエサルはリンゴネース族の軍団冬営地に着いたときに、<br> 諸軍団に1か所に集結するべく伝令を遣わしていた。)</span>
*ne, [[wikt:en:stipendiarius#Latin|stipendiariis]] [[wikt:en:Haedui#Latin|Haeduorum]] [[wikt:en:expugnatus#Latin|expugnatis]], [[wikt:en:cunctus#Latin|cuncta]] Gallia [[wikt:en:deficeret|deficeret]],
**[[w:ハエドゥイ族|ハエドゥイー族]]の朝貢国が攻略されて、ガッリア全体が背くのではないか?
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:「ハエドゥイー族の朝貢国」とは、ボイイー族のこと。)</span>
*quod [[wikt:en:nullus#Determiner|nullum]] amicis in eo [[wikt:en:praesidium#Latin|praesidium]] <u>videret positum esse</u>;
**──というのは、彼<small>〔カエサル〕</small>においては、友邦に対するいかなる守備隊も置かれていないと<small>(ガッリアが)</small>見るからである──。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、<br> [[ガリア戦記/注解編/写本と校訂版#写本の系図|α系写本]]のうち、χ系・M・B・S写本などでは [[wikt:en:videret|videret]] [[wikt:en:positus#Latin|positum]] esse 、<br> α系写本のうち、写本M・L・Nなどでは [[wikt:en:videretur|videretur]] positum esse 、<br> β系写本では、positum videret となっている。)</span>
*si [[wikt:en:mature#Adverb|maturius]] ex [[wikt:en:hiberna#Noun|hibernis]] [[wikt:en:educeret|educeret]],
**もし、尚早に冬営地から<small>(諸軍団を)</small>進発させれば、
*ne ab re [[wikt:en:frumentarius#Latin|frumentaria]] [[wikt:en:durus#Latin|duris]] [[wikt:en:subvectio#Latin|subvectionibus]] [[wikt:en:laboraret|laboraret]].
**<small>(降雪時期の)</small>糧秣供給の厄介な輸送によって苦労するのではないか?
:
*<!--❷--><sup>(2)</sup> <u>Praestare</u> [[wikt:en:visus#Participle|visum]] est tamen omnes [[wikt:en:difficultas#Latin|difficultates]] [[wikt:en:perpeti#Verb|perpeti]],
**しかしながら、あらゆる困難に耐えることの方が<u>優っている</u>ように見える。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:praestare|praestare]] ~ [[wikt:en:quam#Adverb|quam]] …「…よりも~が優る」)</span>
*<u>quam</u> [[wikt:en:tantus#Latin|tanta]] [[wikt:en:contumelia#Latin|contumelia]] [[wikt:en:acceptus#Latin|accepta]] omnium suorum [[wikt:en:voluntas#Latin|voluntates]] [[wikt:en:alienare#Latin|alienare]].
**これほどの恥辱を受けて、配下の皆の意欲を遠ざけてしまう<u>よりは</u>。
:
*<!--❸--><sup>(3)</sup> Itaque [[wikt:en:cohortatus#Latin|cohortatus]] [[wikt:en:Haedui#Latin|Haeduos]] de [[wikt:en:supportandus#Latin|supportando]] [[wikt:en:commeatus#Noun|commeatu]],
**こうして、<small>(カエサルは)</small>ハエドゥイー族に軍需物資の輸送について、激励して、
*[[wikt:en:praemittit|praemittit]] ad [[wikt:en:Boii#Latin|Boios]], qui de suo [[wikt:en:adventus#Latin|adventu]] [[wikt:en:doceant|doceant]]
**[[w:ボイイ族|ボイイー族]]のもとへ、<small>(カエサル)</small>自らの到着について知らせるための者たちを先遣して、
*[[wikt:en:hortentur|hortentur]]<nowiki>que</nowiki> ut in [[wikt:en:fides#Latin|fide]] [[wikt:en:maneant|maneant]] atque hostium [[wikt:en:impetus#Latin|impetum]] magno animo [[wikt:en:sustineant|sustineant]].
**<small>(カエサルへの)</small>信義に留まって、敵たちの襲撃に大いなる決意をもって持ちこたえるように、と激励させた。
[[画像:Aqueduc2.jpg|thumb|right|250px|アゲディンクム、すなわちセノネース族(Senones)の名を残す現在の[[w:サンス|サーンス]](Sens)に建てられたローマ時代の[[w:水道橋|水道橋]]遺跡。]]
: <!-- [[wikt:en:| -->
*<!--❹--><sup>(4)</sup> Duabus [[wikt:en:Agedincum#Latin|Agedinci]] legionibus atque [[wikt:en:impedimentum#Latin|impedimentis]] [[wikt:en:totus#Latin|totius]] [[wikt:en:exercitus#Noun|exercitus]] [[wikt:en:relictus#Latin|relictis]],
**アゲディンクムに、2個軍団および軍隊全体の輜重を残すと、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:アゲディンクムは敵対するセノネース族の首邑だが、<br> [[ガリア戦記 第6巻#44節|第6巻44節]]で6個軍団を冬営させていた。<br> 現在の[[w:サンス|サーンス]]。)</span>
*ad [[wikt:en:Boii#Latin|Boios]] [[wikt:en:proficiscitur|proficiscitur]].
**[[w:ボイイ族|ボイイー族]]のもとへ出発した。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===11節===
[[画像:France_-_Loiret_-_Montargis_-_Passerelle_vers_l'écluse.JPG|thumb|right|250px|ウェッラウノドゥーヌムの候補地の一つであるモンタルジ(Montargis)の運河沿いの景観。セノネース族の城塞都市ウェッラウノドゥーヌム(Vellaunodunum)が現在のどの地点に当たるのか定説はない。アゲディンクム(現在の[[w:サンス|サーンス]])とケナブム(現在の[[w:オルレアン|オルレアン]])の中間地点であると考えられることから、モンタルジ([[w:en:Montargis|Montargis]])、ボーヌ=ラ=ロランド([[w:en:Beaune-la-Rolande|Beaune-la-Rolande]])やシャトー=ランドン([[w:en:Château-Landon|Château-Landon]])などが候補地に挙げられている。]]
*<span style="background-color:#ffd;">[[/注解/11節]] {{進捗|00%|2026-02-02}}</span>
;セノネース族のウェッラウノドゥーヌムを降し、カルヌーテース族のケナブムを攻略
:
*<!--❶--><sup>(1)</sup> [[wikt:en:alter#Latin|Altero]] die
**<small>(カエサルは出発して)</small>翌日に、
*cum ad [[wikt:en:oppidum#Latin|oppidum]] [[wikt:en:Senones#Latin|Senonum]] [[wikt:en:Vellaunodunum#Latin|Vellaunodunum]] [[wikt:en:venisset|venisset]],
**セノネース族の城塞都市ウェッラウノドゥーヌムへやって来たときに、
*ne [[wikt:en:aliquem|quem]] post se hostem [[wikt:en:relinqueret|relinqueret]],
**自らの後方に何らかの敵を残しておかないように、
*[[wikt:en:quo#Latin|quo]] [[wikt:en:expeditior#Latin|expeditiore]] re [[wikt:en:frumentarius#Adjective|frumentaria]] [[wikt:en:uteretur|uteretur]],
**そのことにより、妨げなく糧秣供給を享受するように、
*[[wikt:en:oppugnare#Latin|oppugnare]] [[wikt:en:instituit#Latin|instituit]]
**<small>(同市の)</small>攻囲を決めて、
*<u>idque</u> [[wikt:en:biduum#Latin|biduo]] [[wikt:en:circumvallavit|circumvallavit]];
**それ<small>〔城塞都市〕</small>を2日間で<small>(塁壁で)</small>囲んだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:id#Latin|id]]<nowiki>que</nowiki> だが、<br> β系写本では [[wikt:en:eo#Etymology_4|eo]]<nowiki>que</nowiki> となっている。)</span>
:
; セノネース族の城塞都市ウェッラウノドゥーヌムが降伏する
*<!--❷--><sup>(2)</sup> [[wikt:en:tertius#Latin|tertio]] die
**3日目に、
*[[wikt:en:missus#Participle|missis]] ex [[wikt:en:oppidum#Latin|oppido]] [[wikt:en:legatus#Noun|legatis]] de [[wikt:en:deditio#Latin|deditione]],
**城塞都市から降伏についての使節たちが遣わされて来て、
*[[wikt:en:arma#Latin|arma]] [[wikt:en:conferri|conferri]],
**武器が運び集められること、
*[[wikt:en:iumentum#Latin|iumenta]] [[wikt:en:produci#Latin|produci]],
**役畜が引き渡されること、
*[[wikt:en:sescenti#Latin|sescentos]] [[wikt:en:obses#Latin|obsides]] [[wikt:en:dari#Latin|dari]] [[wikt:en:iubet#Latin|iubet]].
**600名の人質が供出されることを<small>(カエサルが)</small>命じる。
:
; ウェッラウノドゥーヌムに副官トレボーニスと守備隊を残し、カエサル自身はケナブムへ向かう
*<!--❸--><sup>(3)</sup> Ea qui [[wikt:en:conficeret|conficeret]],
**それらのことを成就するための者として、
*[[wikt:en:Gaius#Latin|Gaium]] [[wikt:en:Trebonius#Latin|Trebonium]] [[wikt:en:legatus#Latin|legatum]] [[wikt:en:relinquit|relinquit]].
**<ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レーガートゥス</rt><rp>)</rp></ruby> [[w:ガイウス・トレボニウス|ガーイウス・トレボーニウス]]を<small>(ウェッラウノドゥーヌムに)</small>残留させる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:la:Gaius Trebonius|Gaius Trebonius]] は、カエサルの副官の一人。)</span>
*Ipse, ut quam primum iter <u>faceret</u><ref>faceret はα系写本の表記で、β系写本では conficeret となっている。</ref>,
**<small>(カエサル)</small>自身は、できるだけ素早く<small>(ゴルゴビナへの)</small>行軍を成就するように、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:quam#Adverb|quam]] [[wikt:en:primum#Latin|primum]] 〜「できるだけ素早く〜」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:faceret|faceret]] だが、<br> β系写本では [[wikt:en:conficeret|conficeret]] となっている。)</span>
*[[wikt:en:Genabum#Latin|Cenabum]] [[wikt:en:Carnutes#Latin|Carnutum]] [[wikt:en:proficiscitur|proficiscitur]];
**カルヌーテース族のケナブムに出発する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ケナブム Cenabum はケルト語風の読みで、現在の[[w:オルレアン|オルレアン]]。)</span>
:
*<!--❹--><sup>(4)</sup> qui tum primum [[wikt:en:adlatus#Latin|adlato]] [[wikt:en:nuntium#Latin|nuntio]] de [[wikt:en:oppugnatio#Latin|oppugnatione]] [[wikt:en:Vellaunodunum#Latin|Vellaunoduni]],
**そのとき彼ら<small>〔カルヌーテース族〕</small>は、当初はウェッラウノドゥーヌムの攻囲についての報告をもたらされて、
*cum [[wikt:en:longe#Latin|longius]] eam rem <u>ductum</u> [[wikt:en:iri#Latin|iri]] [[wikt:en:existimarent|existimarent]],
**その事・軍事作戦はより長く引き延ばされて行われると考えていたので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ductus#Noun_2|ductus]] は、軍事的な指揮・作戦などを表す。[[#62節]]も同様。)</span>
*[[wikt:en:praesidium#Latin|praesidium]] [[wikt:en:Genabum#Latin|Cenabi]] [[wikt:en:tuendus#Latin|tuendi]] causa, quod eo [[wikt:en:mitterent|mitterent]], [[wikt:en:comparabant|comparabant]].
**ケナブムを固守するために、守備隊をそこへ派遣することを準備していた。
:
; カエサルが、カルヌーテース族の城塞都市ケナブムの攻囲を翌日に延期する
*<!--❺--><sup>(5)</sup> [[wikt:en:huc#Latin|Huc]] [[wikt:en:biduum#Latin|biduo]] [[wikt:en:pervenit#Etymology_1|pervenit]].
**<small>(カエサルは)</small>ここ<small>〔ケナブム〕</small>へ2日間で到着する。
*[[wikt:en:castra#Latin|Castris]] ante oppidum [[wikt:en:positus#Participle|positis]],
**城塞都市の前に陣営を設置したが、
*[[wikt:en:dies#Latin|diei]] [[wikt:en:tempus#Latin|tempore]] [[wikt:en:exclusus#Latin|exclusus]]
**日の時刻<small>〔夕刻〕</small>によって妨げられたので、
*in posterum [[wikt:en:oppugnatio#Latin|oppugnationem]] [[wikt:en:differt|differt]],
**翌日に攻囲を延期する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:in posterum = in [[wikt:en:posterus#Latin|posterum]] [[wikt:en:diem#Latin|diem]]「翌日に」)</span>
*[[wikt:en:quisque#Latin|quaeque]] ad eam rem [[wikt:en:usus#Latin|usui]] [[wikt:en:sint#Latin|sint]],
**その事<small>〔攻囲〕</small>に有益になることは何であれ、
*[[wikt:en:miles#Latin|militibus]] [[wikt:en:imperat|imperat]];
**兵士たちに命令する。
[[画像:Orleans.jpg|thumb|right|400px|ケナブム(Cenabum)すなわち現在の[[w:オルレアン|オルレアン]](Orléans)を流れるリゲル川(現在の[[w:ロワール川|ロワール川]])の景観。左が北岸のオルレアン聖十字架大聖堂、右がジョージ5世橋と思われる。]]
:
*<!--❻--><sup>(6)</sup> et, quod oppidum [[wikt:en:Genabum#Latin|Cenabum]] [[wikt:en:pons#Latin|pons]] [[wikt:en:flumen#Latin|fluminis]] [[wikt:en:Liger#Latin|Ligeris]] [[wikt:en:contingebat|contingebat]],
**城塞都市ケナブムには、リゲル川の橋が接していたので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:リゲル川は、現在の[[w:ロワール川|ロワール川]]。)</span>
*[[wikt:en:veritus#Latin|veritus]] ne [[wikt:en:noctu#Adverb|noctu]] ex oppido [[wikt:en:profugerent|profugerent]],
**夜間に城塞都市から<small>(敵勢が)</small>逃亡するのではないかと恐れて、
*[[wikt:en:duo#Latin|duas]] legiones in [[wikt:en:arma#Latin|armis]] [[wikt:en:excubare|excubare]] [[wikt:en:iubet#Latin|iubet]].
**<small>(カエサルは)</small>2個[[w:ローマ軍団|軍団]]に武装して寝ずの番をすることを命じる。
:
; ケナブムの住民たちが退避し始める
*<!--❼--><sup>(7)</sup> [[wikt:en:Genabensis#Noun|Cenabenses]] paulo ante mediam noctem
**ケナブムの人々は、真夜中の少し前に
*[[wikt:en:silentium#Latin|silentio]] ex oppido [[wikt:en:egressus#Participle|egressi]]
**沈黙のうちに城塞都市から出て、
*flumen [[wikt:en:transire#Latin|transire]] [[wikt:en:coeperunt|coeperunt]].
**川を渡り始めた。
:
; カエサルの諸軍団がケナブムを制圧する
*<!--❽--><sup>(8)</sup> Qua re per [[wikt:en:explorator#Latin|exploratores]] [[wikt:en:nuntiatus#Latin|nuntiata]]
**その事が偵察者たちによって報告されると、
*Caesar legiones, quas [[wikt:en:expeditus#Latin|expeditas]] esse [[wikt:en:iusserat|iusserat]]
**カエサルは、戦備を整えることを命じていた諸軍団を、
*[[wikt:en:porta#Latin|portis]] [[wikt:en:incensus#Participle|incensis]]
**<small>(ケナブムの)</small>城門を焼き打ちさせた後で、
*[[wikt:en:intromittit|intromittit]] atque oppido [[wikt:en:potitur|potitur]],
**<small>(軍団を)</small>送り込み、城塞都市を占領させて、
*[[wikt:en:perpaucus#Latin|perpaucis]] ex hostium numero [[wikt:en:desideratus#Latin|desideratis]] [[wikt:en:quin#Latin|quin]] [[wikt:en:cunctus#Latin|cuncti]] [[wikt:en:caperentur#Etymology_1|caperentur]],
**敵のうちからわずかな数を取り逃がしたが、むしろ皆がことごとく捕らえられた。
*quod [[wikt:en:pons#Latin|pontis]] atque [[wikt:en:iter#Latin|itinerum]] [[wikt:en:angustia#Latin|angustiae]] <u>multitudinis</u> fugam [[wikt:en:intercluserant|intercluserant]].
**──というのは、橋や道の狭さが、大勢の逃亡をさえぎったからである。──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:multitudinis|multitudinis]]<sub> (単数・属格)</sub> だが、<br> β系写本では [[wikt:en:multitudini|multitudini]]<sub> (単数・与格)</sub> となっている。)</span>
: <!-- [[wikt:en:| -->
; カエサル勢がケナブムを略奪・焼き討ち。リゲル川を渡ってビトゥリゲース族領へ達する
*<!--❾--><sup>(9)</sup> Oppidum [[wikt:en:diripit|diripit]] atque [[wikt:en:incendit|incendit]],
**<small>(カエサルは)</small>城塞都市を略奪し、焼き討ちして、
*[[wikt:en:praeda#Latin|praedam]] militibus [[wikt:en:donat#Latin|donat]],
**略奪品を兵士たちに与える。
*[[wikt:en:exercitus#Noun|exercitum]] <u>Ligerem</u> [[wikt:en:traducit|traducit]]
***軍隊にリゲル川を渡らせて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:Ligerem|Ligerem]] だが、<br> β系写本では Ligerim となっている。)</span>
*atque in [[wikt:en:Bituriges#Latin|Biturigum]] fines [[wikt:en:pervenit#Etymology_1|pervenit]].
*ビトゥリゲース族の領土に到達する。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===12節===
[[画像:Sancerre.jpg|thumb|right|250px|ビトゥリゲース族の城塞都市があったと考えられる[[w:サンセール|サンセール]]([[w:en:Sancerre|Sancerre]])の街並み。カエサルがケナブム(現[[w:オルレアン|オルレアン]])からリゲル川(現[[w:ロワール川|ロワール川]])沿いに当初の目的地であったゴルゴビナへ向かい、後にアウァーリクム(現[[w:ブールジュ|ブールジュ]])へ右折したと見なせば、この地がノウィオドゥーヌムであったとも考えられる。街の名 Sancerre の意味が「カエサルに捧げられた」であるという説もある。現在は[[w:ロワールワイン|ロワールワイン]]の産地として有名で、辛口の白ワインなどの銘柄「Sancerre」にもなっている。]]
[[画像:Neung-sur-Beuvron_église_Saint-Denis_1.jpg|thumb|right|250px|城塞都市ノウィオドゥーヌム(Noviodunum)の所在地として現在有力視されている[[w:ロワール=エ=シェール県|ロワール=エ=シェール県]]のヌン=スュル=ブーヴロン([[w:en:Neung-sur-Beuvron|Neung-sur-Beuvron]])のサン=ドニ教会。カエサルは当初の目的地であったボイイー族のゴルゴビナへは真っ直ぐ向かわずに大きく迂回しており、ケナブム(現[[w:オルレアン|オルレアン]])の南方約45kmにあるこの地点(Beuvron川沿いのNeung)がノウィオドゥーヌムであると推定されている。上空からは、ガッリア時代の城塞都市跡の輪郭が見て取れるという。しかしながら、ボイイ族からは遠い位置にある。]]
*<span style="background-color:#ffd;">[[/注解/12節]] {{進捗|00%|2026-02-02}}</span>
;ビトゥリゲース族のノウィオドゥーヌムを降すが、敵の騎兵が来援
:
*<!--❶--><sup>(1)</sup> [[wikt:en:Vercingetorix#Latin|Vercingetorix]], ubi de Caesaris [[wikt:en:adventus#Latin|adventu]] [[wikt:en:cognovit#Latin|cognovit]],
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、カエサルの到来について知るや否や、
*[[wikt:en:oppugnatio#Latin|oppugnatione]] <u>destitit</u>
**<small>(ボイイー族の城塞都市ゴルゴビナの)</small>攻略を取り止めて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、<br> α系写本では [[wikt:en:destitit|destitit]]<sub> (完了形)</sub> だが、<br> β系写本や印刷本では [[wikt:en:desistit#Latin|desistit]]<sub> (現在形)</sub> となっている。)</span>
*atque [[wikt:en:obviam#Adverb|obviam]] Caesari [[wikt:en:proficiscitur|proficiscitur]].
**カエサルの方に向かって進発する。
:
*<!--❷--><sup>(2)</sup> Ille oppidum [[wikt:en:Biturigēs|Biturigum]] [[wikt:en:positus#Latin|positum]] in via [[wikt:en:Noviodunum#Latin|Noviodunum]] [[wikt:en:oppugnare#Latin|oppugnare]] [[wikt:en:instituerat|instituerat]].
**彼<small>〔カエサル〕</small>は、途中に位置しているビトゥリゲース族の[[w:オッピドゥム|城塞都市]]ノウィオドゥーヌムの攻略を決めていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:どこへの途中なのか明記されていないため、その解釈により場所についての解釈が変わるようである。)</span>
:
; カエサルの城塞都市ノウィオドゥーヌムへの降伏条件
*<!--❸--><sup>(3)</sup> [[wikt:en:qui#Determiner|Quo]] ex oppido
**その城塞都市から
*cum legati ad eum [[wikt:en:venissent|venissent]] [[wikt:en:oratum#Verb|oratum]] ut sibi [[wikt:en:ignosceret|ignosceret]] suaeque vitae [[wikt:en:consuleret|consuleret]],
**使節たちが彼<small>〔カエサル〕</small>のもとへ、自分たちを容赦して生命を助けるように嘆願するために、やって来たときに、
*ut celeritate reliquas res [[wikt:en:conficeret|conficeret]], [[wikt:en:qui#Determiner|qua]] [[wikt:en:pleraque#Latin|pleraque]] erat [[wikt:en:consecutus#Latin|consecutus]],
**<small>(カエサルは)</small>多くのことを実行してきた迅速さによって、ほかの事を成し遂げるために、
*arma [[wikt:en:conferri|conferri]],
**武具が運び集められること、
*[[wikt:en:quus#Latin|equos]] [[wikt:en:produci#Verb_2|produci]],
**馬匹が引き渡されること、
*obsides [[wikt:en:dari#Latin|dari]] [[wikt:en:iubet#Latin|iubet]].
**人質が供出されること、を命じる。
:
*<!--❹--><sup>(4)</sup> Parte iam obsidum [[wikt:en:traditus#Participle|tradita]],
**すでに人質の一部が移送されて、
*cum [[wikt:en:reliqua#Latin|reliqua]] [[wikt:en:administrarentur|administrarentur]],
**残り<small>(の人質たち)</small>が処置されていたときに、
*[[wikt:en:centurio#Latin|centurionibus]] et paucis [[wikt:en:miles#Latin|militibus]] [[wikt:en:intromissus#Latin|intromissis]], qui arma [[wikt:en:iumentum#Latin|iumenta]]<nowiki>que</nowiki> [[wikt:en:conquirerent|conquirerent]],
**<ruby><rb>[[w:ケントゥリオ|百人隊長]]</rb><rp>(</rp><rt>ケントゥリオ</rt><rp>)</rp></ruby>たちや若干の兵士たちが、武器や[[w:使役動物|役畜]]を探し集めるべく<small>(城塞都市の中に)</small>送り込まれていたのだが、
*[[wikt:en:equitatus#Noun|equitatus]] hostium procul [[wikt:en:visus#Latin|visus]] est, qui [[wikt:en:agmen#Latin|agmen]] [[wikt:en:Vercingetorix#Latin|Vercingetorigis]] [[wikt:en:antecesserat|antecesserat]].
**ウェルキンゲトリークスの隊列に先行していた敵の[[w:騎兵|騎兵隊]]が遠くに望見された。
:
; ウェルキンゲトリークスの来援に気づいた城塞の者たちが、籠城に転じる
*<!--❺--><sup>(5)</sup> Quem [[wikt:en:simulatque|simulatque]] [[wikt:en:oppidanus#Noun|oppidani]] [[wikt:en:conspexerunt|conspexerunt]] atque in [[wikt:en:spes#Latin|spem]] [[wikt:en:auxilium#Latin|auxilii]] [[wikt:en:venerunt|venerunt]],
**それ<small></small>を城塞都市の者たちが視認して、救援の希望を抱くや否や、
*[[wikt:en:clamor#Latin|clamore]] [[wikt:en:sublatus#Etymology_1|sublato]]
**雄叫びを上げて、
*arma capere,
**武具を取ること、
*portas [[wikt:en:claudere#Etymology_1|claudere]],
**城門を閉じること、
*[[wikt:en:murus#Latin|murum]] [[wikt:en:complere|complere]] [[wikt:en:coeperunt|coeperunt]].
**城壁を<small>(兵で)</small>満たすこと、を始めた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:sublato は [[wikt:en:tollo|tollo]] の分詞)</span>
: <!-- [[wikt:en:| -->
; 城塞民たちの心変わりに感づいたローマ人の将兵たちが城外に撤収する
*<!--❻--><sup>(6)</sup> [[wikt:en:centurio#Latin|Centuriones]] in oppido,
**城塞都市の中の<small>(カエサルの配下の)</small>百人隊長たちは、
*cum ex [[wikt:en:significatio#Latin|significatione]] Gallorum [[wikt:en:novus#Latin|novi]] [[wikt:en:aliquis#Latin|aliquid]] ab iis [[wikt:en:iniri#Latin|iniri]] consilii [[wikt:en:intellexissent|intellexissent]],
**ガッリア人たちの兆候から、彼らによる何らかの新たな謀りごとが始められていると察知していたので、
*[[wikt:en:gladius#Latin|gladiis]] [[wikt:en:destrictus#Latin|destrictis]]
**<ruby><rb>[[w:グラディウス (武器)|長剣]]</rb><rp>(</rp><rt>グラディウス</rt><rp>)</rp></ruby> を抜いて、
*portas [[wikt:en:occupaverunt|occupaverunt]]
**城門を占拠して、
*suosque omnes [[wikt:en:incolumis#Latin|incolumes]] [[wikt:en:receperunt|receperunt]].
**配下たち皆を無傷なままで退却させた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===13節===
*<span style="background-color:#ffd;">[[/注解/13節]] {{進捗|00%|2026-02-15}}</span>
[[画像:Caesar's_campaign_to_Noviodunum_in_52BC.png|thumb|right|250px|ノウィオドゥーヌムに至るカエサルの進路(青線)および[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の進路(赤線)。青字名は親ローマ部族、赤字名は反ローマ部族。カエサルはアゲディンクムを発してからウェッラウノドゥーヌム、ケナブム、ノウィオドゥーヌムを続けて降し、ボイイー族のゴルゴビナ攻略を諦めたウェルキンゲトリークスもノウィオドゥーヌム来援に駆けつけて来た。ここに、初めて両軍が騎兵戦で激突することになった。]]
;同盟軍の騎兵を撃退、城塞都市を再び降して、アウァーリクム攻めに向かう
:
; カエサルが、騎兵戦の切り札としてゲルマーニア騎兵を繰り出す
*<!--❶--><sup>(1)</sup> Caesar ex castris [[wikt:en:equitatus#Latin|equitatum]] [[wikt:en:educi#Latin|educi]] [[wikt:en:iubet#Latin|iubet]],
**カエサルは、陣営から[[w:騎兵|騎兵隊]]を進発させることを命じて、
*<u>[[wikt:en:proelium#Latin|proelium]]</u> [[wikt:en:equester#Latin|equestre]] [[wikt:en:committit|committit]];
**<small>(ウェルキンゲトリークス勢と)</small>騎兵戦を交える。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、<br> α系写本では proelium だが、<br> β系写本では proelium<u>que</u> となっている。)</span>
*[[wikt:en:laborans#Latin|laborantibus]] iam suis
**配下の者たちがすでに苦戦していたときに、
*[[wikt:en:Germanus#Adjective|Germanos]] [[wikt:en:eques#Latin|equites]] circiter CCCC([[wikt:en:quadringentos|quadringentos]]) [[wikt:en:submittit|submittit]],
**<small>(カエサルは)</small>[[w:ゲルマニア|ゲルマーニア]]人の騎兵たち約400騎を救援に派遣する。
*quos ab [[wikt:en:initium#Latin|initio]] <u>habere [[wikt:en:secum#Latin|secum]]</u> [[wikt:en:instituerat|instituerat]].
**その者らは<small>(戦いの)</small>当初から自分のそばに保持すると決めていたものであった。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、<br> χ系・B・M・S写本では habere secum だが、<br> β系・L・N写本では secum habere となっている。)</span>
:
; ゲルマーニア騎兵が、ウェルキンゲトリークス配下の騎兵を一蹴する
*<!--❷--><sup>(2)</sup> Eorum [[wikt:en:impetus#Latin|impetum]] [[wikt:en:Galli#Latin|Galli]] [[wikt:en:sustineo#Latin|sustinere]] non [[wikt:en:potuerunt|potuerunt]]
**彼ら<small>〔ゲルマーニア人騎兵〕</small>の突撃に<small>(敵側の)</small>ガッリア人たちは持ちこたえることができず、
*atque in fugam [[wikt:en:coniectus#Participle|coniecti]]
**敗走に追いやられて、
*multis [[wikt:en:amissus#Latin|amissis]]
**大勢の者を失い、
*se ad [[wikt:en:agmen#Latin|agmen]] [[wikt:en:receperunt|receperunt]].
**<small>(後方にいたウェルキンゲトリークスの)</small>隊列に退却した。
:
; 城塞都市ノウィオドゥーヌムがカエサルの軍門に降る
*Quibus [[wikt:en:profligatus#Latin|profligatis]],
**彼ら<small>〔ウェルキンゲトリークスの騎兵隊〕</small>が制圧されると、
*rursus [[wikt:en:oppidanus#Noun|oppidani]] [[wikt:en:perterritus#Latin|perterriti]]
**[[w:オッピドゥム|城塞都市]]<small>〔ノウィオドゥーヌム〕</small>の者たちは再び怖れをなして、
*[[wikt:en:comprehensus#Latin|comprehensos]] eos, quorum [[wikt:en:opera#Latin|opera]] [[wikt:en:plebs#Latin|plebem]] [[wikt:en:concitatus#Latin|concitatam]] [[wikt:en:existimabant|existimabant]],
**その働きかけによって民衆を扇動したと<small>(城塞の民が)</small>考えていたところの者たちを拘束して、
*ad Caesarem [[wikt:en:perduxerunt|perduxerunt]]
**カエサルのもとへ連行して、
*seseque ei [[wikt:en:dediderunt|dediderunt]].
**自分たちも彼<small>〔カエサル〕</small>に降伏した。
: <!-- [[wikt:en:| -->
; カエサルが、ビトゥリゲース族の城塞都市アウァーリクムを目指す
*<!--❸--><sup>(3)</sup> Quibus rebus [[wikt:en:confectus#Latin|confectis]],
**それらの事が成し遂げられると、
*Caesar ad oppidum [[wikt:en:Avaricum#Latin|Avaricum]],
**カエサルは、[[w:オッピドゥム|城塞都市]]アウァーリクムへ、
*quod erat [[wikt:en:maximus#Latin|maximum]] [[wikt:en:munitissimus#Latin|munitissimum]]<nowiki>que</nowiki> in finibus [[wikt:en:Bituriges#Latin|Biturigum]] atque [[wikt:en:ager#Latin|agri]] [[wikt:en:fertilissimus#Latin|fertilissima]] [[wikt:en:regio#Latin|regione]],
**──それはビトゥリゲース族の領土で耕地の最も肥沃な地方にあり、最大かつ最も要塞化されていたが、──
*[[wikt:en:profectus#Etymology_3|profectus]] est,
**<small>(そこへ)</small>出発した。
*quod eo oppido [[wikt:en:receptus#Latin|recepto]]
**──というのは、その城塞都市を獲得することで、
*[[wikt:en:civitas#Latin|civitatem]] [[wikt:en:Bituriges#Latin|Biturigum]] se in [[wikt:en:potestas#Latin|potestatem]] [[wikt:en:redacturus#Latin|redacturum]] [[wikt:en:confidebat|confidebat]].
**ビトゥリゲースの部族国家を<small>(カエサルの)</small>隷下に引き戻すであろうと、確信していたからである──。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
==アウァーリクム攻略戦==
===14節===
*<span style="background-color:#ffd;">[[/注解/14節]] {{進捗|00%|2026-03-08}}</span>
;ウェルキンゲトリークスが兵站妨害と焦土戦術を決断
:
*<!--❶--><sup>(1)</sup> [[wikt:en:Vercingetorix#Latin|Vercingetorix]] tot [[wikt:en:continuus#Latin|continuis]] [[wikt:en:incommodum#Latin|incommodis]] [[wikt:en:Vellaunodunum#Latin|Vellaunoduni]], [[wikt:en:Genabum#Latin|Cenabi]], [[wikt:en:Noviodunum#Latin|Novioduni]] [[wikt:en:acceptus#Latin|acceptis]]
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、ウェッラウノドゥーヌム、ケナブム、ノウィオドゥーヌムと、このような多くの引き続く敗北をこうむると、
*suos ad [[wikt:en:concilium#Latin|concilium]] [[wikt:en:convocat#Latin|convocat]].
**麾下の者たちを会合へ召集する。
: <!-- [[wikt:en:| -->
; ウェルキンゲトリークスが、ローマ勢の糧道を断つことを提言
*<!--❷--><sup>(2)</sup> [[wikt:en:docet|Docet]] longe alia ratione esse bellum [[wikt:en:gerendus#Latin|gerendum]] atque antea [[wikt:en:gestus#Participle|gestum]] sit.
**以前に遂行されていたのとはまったく別の作戦で戦争が遂行されるべきである、と説く。
*Omnibus [[wikt:en:modus#Latin|modis]] huic rei studendum, ut [[wikt:en:pabulatio#Latin|pabulatione]] et [[wikt:en:commeatus#Noun|commeatu]] Romani [[wikt:en:prohibeantur|prohibeantur]].
**ローマ人たちが[[w:糧秣|糧秣]]徴発と物資輸送を妨げられるべく、この事をあらゆる方法で追求するべきだ。
:
*<!--❸--><sup>(3)</sup> Id esse facile,
**そのことは、容易である。
*quod [[wikt:en:equitatus#Latin|equitatu]] ipsi [[wikt:en:abundent#Latin|abundent]]
**というのは<small>(我々ガッリア勢)</small>自身は[[w:騎兵|騎兵隊]]がたくさんおり、
*et quod anni tempore [[wikt:en:subleventur|subleventur]].
**<small>(冬という)</small>時季に支えられているのだから。
:
; ローマ人が穀物倉に群がるところを騎兵で襲撃するべし
*<!--❹--><sup>(4)</sup> [[wikt:en:pabulum#Latin|Pabulum]] [[wikt:en:secari|secari]] non posse;
**<small>(この時季には)</small><ruby><rb>[[w:秣|秣]]</rb><rp>(</rp><rt>まぐさ</rt><rp>)</rp></ruby> は刈り取られることができない。
*[[wikt:en:necessario#Adverb|necessario]] [[wikt:en:dispersus#Latin|dispersos]] hostes ex [[wikt:en:aedificium#Latin|aedificiis]] [[wikt:en:petere|petere]];
**敵たち<small>〔ローマ勢〕</small>はやむなく分散して、家屋から<small>(糧秣を)</small>求める。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ほとんどの会話が間接話法を採る本書で、<br> ローマ勢が「敵」hostes と表現されることは極めてまれである。)</span>
*hos omnes [[wikt:en:cotidie#Latin|cotidie]] ab [[wikt:en:eques#Latin|equitibus]] <u>deleri</u> posse.
**これら皆を日々に<small>(ガッリア側の)</small>騎兵隊によって壊滅させることができる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、β系写本では [[wikt:en:deleri|deleri]]「滅ぼされる」だが、<br> α系写本では [[wikt:en:diligi#Latin|diligi]]「分断される」となっている。)</span>
:
; 焦土戦術をもって、ローマ人と軍馬を飢えさせるべし
*<!--❺--><sup>(5)</sup> Praeterea [[wikt:en:salus#Latin|salutis]] causa rei [[wikt:en:familiaris#Adjective|familiaris]] [[wikt:en:commodum#Latin|commoda]] [[wikt:en:neglegendus#Latin|neglegenda]];
**さらに<small>(同盟諸部族に共通の)</small>安全のために、私有資産の利益はなおざりにされるべきだ。
*[[wikt:en:vicus#Latin|vicos]] atque [[wikt:en:aedificium#Latin|aedificia]] [[wikt:en:incendi#Verb_2|incendi]] [[wikt:en:oportet#Latin|oportere]]
**<small>(以下のような領域の)</small>村々や建物は焼かれるべきだ。
*hoc spatio ab Boia quoque versus, quo [[wikt:en:pabulandi#Verb|pabulandi]] causa [[wikt:en:adire#Latin|adire]] posse [[wikt:en:videantur|videantur]].
**[[w:ボイイ族|ボイイー族]]のところから四方八方へ糧秣徴発するために赴くことができると思われる領域では。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:主要写本ω にある ab Boia「ボイイー族のところから」は、<br> 現代では「街道から」ab via と修正読みされることが多い。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:quoque#Latin|quōque]] [[wikt:en:versus#Adverb|versus]] = [[wikt:en:quisque#Latin|quōquō]] versus「あらゆる方向へ」)</span>
[[画像:Eglise_saint_parize_le_chatel.jpg|thumb|right|250px|ボイイ族(Boii)の領内であったと思われる現在のサン=パリーズ=ル=シャテルの教会。ボイイー族の首邑ゴルゴビナは、[[w:ニエーヴル県|ニエーヴル県]]のサン=パリーズ=ル=シャテル([[w:en:Saint-Parize-le-Châtel|Saint-Parize-le-Châtel]])あるいは[[w:シェール県|シェール県]]のラ・ゲルシュ=スュル=ローボワ([[w:en:La Guerche-sur-l'Aubois|La Guerche-sur-l'Aubois]])の近辺にあったと推定されている。]]
:
*<!--❻--><sup>(6)</sup> Harum ipsis rerum copiam [[wikt:en:suppeto#Latin|suppetere]],
**<small>(ガッリア勢)</small>自身には、これらの物は、豊富に貯えてある。
*quod quorum in finibus bellum [[wikt:en:geratur|geratur]], eorum [[wikt:en:ops#Noun_4|opibus]] [[wikt:en:subleventur|subleventur]];
**──というのは、戦争が遂行される領土内の者たちの、彼らの助力に支えられているからだ。──
:
*<!--❼--><sup>(7)</sup> Romanos <u>aut</u> [[wikt:en:inopia#Latin|inopiam]] non [[wikt:en:laturus#Latin|laturos]] <span style="color:#009900;">(esse)</span>
**ローマ人たちは、あるいは<small>(糧食の)</small>欠乏に耐えられないであろうし、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:aut#Latin|aut]] ~ aut …「あるいは~あるいは…」)</span>
*<u>aut</u> magno <u>cum</u> periculo longius <u>ab</u> castris [[wikt:en:processurus#Latin|processuros]] <span style="color:#009900;">(esse)</span>;
**あるいは大きな危険とともに陣営からより遠くに進み出るであろう。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:cum は、ρ系写本・写本Tの記述で、<br> α系写本・写本Vにはない。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ab は、α系・ρ系写本・写本Vの記述で、写本Tでは a となっている。)</span>
:
*<!--❽--><sup>(8)</sup> neque [[wikt:en:interesse#Latin|interesse]], ipsos<u>ne</u> [[wikt:en:interficiant|interficiant]], [[wikt:en:impedimentum#Latin|impedimentis]]<u><nowiki>ne</nowiki></u> [[wikt:en:exuant|exuant]],
**<small>(ローマ人の)</small>当人たちを殺戮するか、輜重を奪い取るか、<small>(どちらであろうが)</small>違いはない。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:-ne#Latin|-ne]] は疑問小辞。~ -ne, … -ne 「~か、…か」)</span>
*quibus [[wikt:en:amissus#Latin|amissis]] bellum [[wikt:en:geri#Latin|geri]] non [[wikt:en:possit|possit]].
**それら<small>〔輜重〕</small>を失えば、戦争を遂行することができないのだから。
:
*<!--❾--><sup>(9)</sup> Praeterea oppida [[wikt:en:incendi#Verb_2|incendi]] [[wikt:en:oportet#Latin|oportere]],
**さらに、<small>(以下のような)</small>[[w:オッピドゥム|城塞都市]]は焼かれなければならない。
*quae non [[wikt:en:munitio#Latin|munitione]] et loci natura <u>ab omni</u> sint <u>periculo</u> [[wikt:en:tutus#Latin|tuta]],
**防塁や地勢によってあらゆる危険から守られていない<small>(城塞都市は)</small>。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ab [[wikt:en:omni#Latin|omni]] [[wikt:en:periculum#Latin|periculo]] 「あらゆる危険から」)</span>
*<u>neu</u> suis sint ad <u>detrectandam</u> [[wikt:en:militia#Latin|militiam]] [[wikt:en:receptaculum#Latin|receptacula]]
**麾下の者たちにとっては<small>(城塞都市が)</small>[[w:兵役逃れ|兵役を忌避すること]]のための隠れ場所になることがないように、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:neu#Latin|neu]] は α系写本の記述で、β系写本では [[wikt:en:ne#Latin|ne]] となっている。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:detrectandam|detrectandam]] は α系・ρ系写本の表記で、π系写本では [[wikt:en:detractandam|detractandam]] となっている。)</span>
*neu [[wikt:en:Romani#Latin|Romanis]] [[wikt:en:propositus#Latin|proposita]] ad [[wikt:en:copia#Latin|copiam]] [[wikt:en:commeatus#Noun|commeatus]] [[wikt:en:praeda#Latin|praedam]]<nowiki>que</nowiki> [[wikt:en:tollendus#Latin|tollendam]],
**ローマ人たちにとって<small>(城塞都市が)</small>豊富な物資や戦利品を奪うための置き場所ともならないように。
:
*<!--❿--><sup>(10)</sup> Haec si [[wikt:en:gravis#Latin|gravia]] aut [[wikt:en:acerbus#Latin|acerba]] [[wikt:en:videantur|videantur]],
**もし、これら<small>(の作戦)</small>が厳しい、または苦しいと見えるとしても、
*multo illa [[wikt:en:graviter#Latin|gravius]] <u>aestimare</u>, [[wikt:en:liber#Noun_6|liberos]], [[wikt:en:coniunx#Latin|coniuges]] in [[wikt:en:servitus#Latin|servitutem]] [[wikt:en:abstrahi|abstrahi]], ipsos [[wikt:en:interfici|interfici]];
**それより、子供や配偶者たちが奴隷状態で連れ去られ、自身が殺されることの方が、はるかに厳しいと判断されるべきだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:aestimare|aestimare]] だが、 <br> β系写本では [[wikt:en:aestimari|aestimari]] [[wikt:en:debere|debere]] となっている。)</span>
*quae sit [[wikt:en:necesse#Latin|necesse]] [[wikt:en:accido#Etymology_1|accidere]] [[wikt:en:victus#Participle|victis]].
**それらのことは、打ち負かされた者たちには、起こることが必然なのである。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===15節===
[[画像:Bourges_-_002_-_Low_Res.jpg|thumb|right|300px|'''アウァーリクム'''(Avaricum)すなわちビトゥリゲース族(Bituriges)の名を残すともいわれる現在の[[w:ブールジュ|ブールジュ]](Bourges)の[[w:サン=テチエンヌ大聖堂 (ブールジュ)|サン=テティエンヌ大聖堂]]([[w:世界遺産|世界遺産]])。この街はガッリア時代からこの地方の中心的な城塞都市であり、現代ではそれほど大都会ではないが、世界遺産の大聖堂や音楽祭などで広く知られている。]]
[[画像:Bourges.JPG|thumb|right|300px|アウァーリクムすなわち[[w:ブールジュ|ブールジュ]]の大聖堂から眺めた街並み。'''ビトゥリゲース族'''はかつてはイタリア北部に移住したこともある強大な部族で、この当時はブルディガラ(Burdigala:現在の[[w:ボルドー|ボルドー]])周辺にいたビトゥリゲース・ウィウィスキ族(Bituriges Vivisci)およびアウァーリクム周辺にいた'''ビトゥリゲース・クビ族'''(Bituriges Cubi)の二派に分かれていた。『ガリア戦記』に登場するのはビトゥリゲース・クビ族の方である。]]
*<span style="background-color:#ffd;">[[/注解/15節]] {{進捗|00%|2026-03-08}}</span>
;焦土戦術開始、しかしアウァーリクムの防衛を決定
:
; 焦土戦術として、ビトゥリゲース族の街々が焼かれる
*<!--❶--><sup>(1)</sup> Omnium [[wikt:en:consensus#Latin|consensu]]
**<small>(会合の参加者)</small>全員の合意により
*hac [[wikt:en:sententia#Latin|sententia]] [[wikt:en:probatus#Latin|probata]],
**<small>(ウェルキンゲトリークスの)</small>この意向が承認されると、
*uno die [[wikt:en:amplius|amplius]] [[wikt:en:viginti|viginti]]<sub> (XX)</sub> [[wikt:en:urbs#Latin|urbes]] [[wikt:en:Bituriges#Latin|Biturigum]] [[wikt:en:incenduntur|incenduntur]].
**一日で、20より多いビトゥリゲース族の街々が焼かれる。
:
; ほかの諸部族の街々も焼かれる
*<!--❷--><sup>(2)</sup> Hoc idem fit in reliquis [[wikt:en:civitas#Latin|civitatibus]]:
**これと同じことが、ほかの諸部族でも行なわれて、
*in omnibus partibus
**あらゆる方面において、
*[[wikt:en:incendium#Latin|incendia]] [[wikt:en:conspiciuntur|conspiciuntur]];
**炎上が望見される。
*quae <u>etsi</u> magno cum [[wikt:en:dolor#Latin|dolore]] omnes [[wikt:en:ferebant|ferebant]],
**それらの皆が大きな悲嘆とともに耐えていたとしても、
*<u>tamen</u> hoc sibi [[wikt:en:solacium#Latin|solacii]] [[wikt:en:proponebant|proponebant]],
**しかし、自分らにとっての<small>(以下の)</small>慰めを抱いていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:etsi#Latin|etsi]] ~ [[wikt:en:tamen#Latin|tamen]] …<br> 「~としても、にもかかわらず…」)</span>
*quod se prope [[wikt:en:exploratus#Latin|explorata]] [[wikt:en:victoria#Latin|victoria]]
**勝利はほぼ確実なものとされて、
*celeriter [[wikt:en:amissus#Latin|amissa]] [[wikt:en:reciperaturus#Latin|reciperaturos]] <span style="color:#009900;">(esse)</span>
**失ったものを速やかに回復するであろう、
*[[wikt:en:confidebant|confidebant]].
**と確信していたことである。
:
; アウァーリクムは、焦土戦術か、それとも防衛すべきか?
*<!--❸--><sup>(3)</sup> [[wikt:en:deliberatur|Deliberatur]] de [[wikt:en:Avaricum#Latin|Avarico]] in [[wikt:en:communis#Latin|communi]] [[wikt:en:concilium#Latin|concilio]], [[wikt:en:incendi#Latin|incendi]] <u>placeret</u> an [[wikt:en:defendi#Latin|defendi]].
**合同の会合において、アウァーリクムについて (も) 焼き討ちが良いか、あるいは防衛か、が吟味される。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:placeret|placeret]]<sub> (接続法・未完了過去)</sub> だが、<br> β系写本では [[wikt:en:placeat|placeat]]<sub> (接続法・現在)</sub> となっている。)</span>
:
; ビトゥリゲース族が、要害であるアウァーリクムの防衛を懇願する
*<!--❹--><sup>(4)</sup> [[wikt:en:procumbunt|Procumbunt]] omnibus Gallis ad pedes [[wikt:en:Bituriges#Latin|Bituriges]],
**<small>(会合に参加していた)</small>すべてのガッリア人の足元へ、ビトゥリゲース族の者たちはひれ伏す。
*ne [[wikt:en:pulcherrimus#Latin|pulcherrimam]] prope <u>[[wikt:en:totus#Latin|totius]] Galliae</u> [[wikt:en:urbs#Latin|urbem]], quae <u>et</u> [[wikt:en:praesidium#Latin|praesidio]] et [[wikt:en:ornamentum#Latin|ornamento]] sit [[wikt:en:civitas#Latin|civitati]],
**ほぼ全ガッリアの街々で最も美しいもの、部族にとっては要害でも誉れでもあるものを、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:totius Galliae は α系写本の語順で、β系写本では Galliae totius となっている。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:et は β系写本にはあるが、α系写本にはない。)</span>
*suis manibus [[wikt:en:succendo#Latin|succendere]] [[wikt:en:cogerentur|cogerentur]];
**自分たちの手で燃やすことを強いられないように、と(懇願した)。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ne ~ cogerentur;~を強いられないように)</span>
:
; アウァーリクムの地の利
*<!--❺--><sup>(5)</sup> facile se loci natura [[wikt:en:defensurus#Latin|defensuros]] [[wikt:en:dicunt|dicunt]],
**自分たちは<small>(アウァーリクムを)</small>地勢によって容易に防衛するだろう、と述べる。
*quod prope ex omnibus partibus [[wikt:en:flumen#Latin|flumine]] et [[wikt:en:palus#Latin|palude]] [[wikt:en:circumdatus#Latin|circumdata]]
**というのは<small>(アウァーリクムは)</small>ほぼあらゆる方向から川や沼地で囲まれており、
*unum habeat et [[wikt:en:perangustus#Latin|perangustum]] [[wikt:en:aditus#Latin|aditum]].
**一つだけ、非常に狭い進入路を持っているからだ。
[[画像:Bourges_2.JPG|thumb|right|300px|アウァーリクムすなわち[[w:ブールジュ|ブールジュ]]の大聖堂から眺めた沼地。イェーヴル川([[w:fr:Yèvre (Cher)|fr:Yèvre]])と沼地は、カエサルが書いたようにガッリア時代からこの街を囲んでいる。]]
:
; アウァーリクムの防衛が認められる
*<!--❻--><sup>(6)</sup> [[wikt:en:datur#Latin|Datur]] [[wikt:en:petens#Latin|petentibus]] [[wikt:en:venia#Latin|venia]]
**<small>(アウァーリクムの防衛を)</small>求める者たちに許可が与えられる。
*[[wikt:en:dissuadens#Latin|dissuadente]] primo [[wikt:en:Vercingetorix#Latin|Vercingetorige]],
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は当初は思い止まらせていたが、
*post [[wikt:en:concedens#Latin|concedente]] et [[wikt:en:prex#Latin|precibus]] ipsorum et [[wikt:en:misericordia#Latin|misericordia]] [[wikt:en:vulgus#Latin|vulgi]].
**後には、彼ら当人の懇願にも、民衆への哀れみにも、譲歩した。
*[[wikt:en:defensor#Latin|Defensores]] [[wikt:en:oppidum#Latin|oppido]] [[wikt:en:idoneus#Latin|idonei]] [[wikt:en:deliguntur|deliguntur]].
**城塞都市の適切な防衛者たちが選ばれる。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===16節===
*<span style="background-color:#ffd;">[[/注解/16節]] {{進捗|00%|2026-03-22}}</span>
;アウァーリクムをめぐる両軍の駆け引き
:
; ウェルキンゲトリークスが、アウァーリクムから16マイル離れたところに宿営する
*<!--❶--><sup>(1)</sup> [[wikt:en:Vercingetorix#Latin|Vercingetorix]] [[wikt:en:minor#Latin|minoribus]] Caesarem [[wikt:en:iter#Latin|itineribus]] [[wikt:en:subsequitur|subsequitur]]
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、カエサルを緩やかな行軍で追尾して、
*et locum [[wikt:en:castra#Latin|castris]] [[wikt:en:eligit#Latin|deligit]] [[wikt:en:palus#Latin|paludibus]] [[wikt:en:silva#Latin|silvis]]<nowiki>que</nowiki> [[wikt:en:munitus#Latin|munitum]]
**沼地や森林で防御された地点を陣営のために選んだ。
*ab [[wikt:en:Avaricum#Latin|Avarico]] longe milia passuum [[wikt:en:sedecim#Latin|sedecim]]<sub> (XVI)</sub>.
**アウァーリクムから16<u>ローママイル</u>隔たっていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ミーッレ・パッスーム、ミーリア(ローママイル)|ローママイル]]は約1.48 kmで、16マイルは約24 km)</span>
:
; ウェルキンゲトリークスが、斥候を放ってアウァーリクムを探り、部下たちに指図する
*<!--❷--><sup>(2)</sup> Ibi per [[wikt:en:certus#Latin|certos]] [[wikt:en:explorator#Latin|exploratores]]
**そこで、一定の斥候たちを通して、
*in [[wikt:en:singulus#Latin|singula]] diei tempora, quae ad [[wikt:en:Avaricum#Latin|Avaricum]] <u>agerentur</u>, [[wikt:en:cognoscebat|cognoscebat]]
**日中の毎時、アウァーリクム近傍で行なわれていることを探知して、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:agerentur|agerentur]] だが、<br> β系写本では [[wikt:en:gererentur|gererentur]] となっている。)</span>
*et, [[wikt:en:quis#Latin|quid]] [[wikt:en:fieri#Latin|fieri]] [[wikt:en:vellet#Latin|vellet]], [[wikt:en:imperabat|imperabat]].
**<small>(彼自身が)</small>なされることを欲していることを<small>(麾下の者たちに)</small>命令していた。
:
; ウェルキンゲトリークスとローマ勢の糧秣調達をめぐる攻防
*<!--❸--><sup>(3)</sup> Omnes nostras [[wikt:en:pabulatio#Latin|pabulationes]] [[wikt:en:frumentatio#Latin|frumentationes]]<nowiki>que</nowiki> [[wikt:en:observabat|observabat]]
**我が方<small>〔ローマ勢〕</small>の[[w:糧秣|秣や糧食]]の徴発の一部始終を注視していて、
*[[wikt:en:dispersus#Latin|dispersos]]<nowiki>que</nowiki>, cum longius necessario [[wikt:en:procederent|procederent]], [[wikt:en:adoriebatur|adoriebatur]]
**<small>(ローマ勢が)</small>分散して、やむを得ずにはるか遠くに進み出たときに、<small>(ガッリア勢が)</small>襲いかかって、
*[[wikt:en:magnus#Latin|magno]]<nowiki>que</nowiki> [[wikt:en:incommodum#Latin|incommodo]] [[wikt:en:adficiebat|adficiebat]],
**<small>(ローマ勢に)</small>大きな損害を与えていた。
*[[wikt:en:etsi#Latin|etsi]], quantum [[wikt:en:ratio#Latin|ratione]] [[wikt:en:provideri|provideri]] [[wikt:en:poterat|poterat]], ab nostris [[wikt:en:occurrebatur|occurrebatur]],
**とはいえ、できるかぎり用心する判断により<small>(敵の襲撃を)</small>我が方<small>〔ローマ勢〕</small>によって阻止していた。
*ut [[wikt:en:incertus#Latin|incertis]] temporibus [[wikt:en:diversus#Latin|diversis]]<nowiki>que</nowiki> itineribus [[wikt:en:iretur|iretur]].
**不確定な時間帯にまったく別々の道を行き来するというように。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===17節===
[[画像:Carte_du_Cher.svg|thumb|right|250px|アウァーリクム、すなわち現在の[[w:ブールジュ|ブールジュ市]](Bourges)のあるフランス・[[w:シェール県|シェール県]]の地図。中心にブールジュがあり、右下(南東)のラ・ゲルシュ=スュル=ローボワ([[w:en:La Guerche-sur-l'Aubois|La Guerche-sur-l'Aubois]])の近辺にボイイー族の首邑ゴルゴビナ(Gorgobina)があったと推定されている。右(東)隣の[[w:ニエーヴル県|ニエーヴル県]](Nièvre)が[[w:ハエドゥイ族|ハエドゥイー族]]の版図であった。]]
*<span style="background-color:#ffd;">[[/注解/17節]] {{進捗|00%|2026-03-28}}</span>
;アウァーリクム攻囲に取りかかるローマ軍の糧秣欠乏
:
; カエサルが、アウァーリクム攻囲のための堡塁工事に着手
*<!--❶--><sup>(1)</sup> [[wikt:en:castra#Latin|Castris]] ad eam partem [[wikt:en:oppidum#Latin|oppidi]] [[wikt:en:positus#Participle|positis]] Caesar,
**カエサルは、[[w:オッピドゥム|城塞都市]]の<small>(以下に述べるような)</small>方面に陣営を設置して、
*quae [[wikt:en:intermissus#Latin|intermissa]] a flumine et a <u>paludibus</u>
**──<small>(その方面は)</small>川や沼地により<small>(外部から)</small>遮断されて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:paludibus|paludibus]] だが、<br> β系写本では [[wikt:en:palude#Latin|palude]] となっている。)</span>
*[[wikt:en:aditus#Noun_3|aditum]], ut supra [[wikt:en:diximus#Latin|diximus]], [[wikt:en:angustus#Latin|angustum]] [[wikt:en:habebat|habebat]],
**<u>前に述べたように</u>、狭い進入路を持っているというものであるが、──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[#15節|15節]]⑤項では、<br> ほぼあらゆる方向から川や沼地で囲まれており、<br> 一つだけ、非常に狭い進入路を持っている、<br> と言及された。)</span>
*[[wikt:en:agger#Latin|aggerem]] [[wikt:en:apparare#Latin|apparare]],
**<small>(さらに)</small><ruby><rb>[[w:土塁|土塁]]</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby> を装備すること、
*[[wikt:en:vinea#Latin|vineas]] [[wikt:en:ago#Latin|agere]],
**<ruby><rb>[[w:ウィネア|工作小屋]]</rb><rp>(</rp><rt>ウィネア</rt><rp>)</rp></ruby> を駆動すること、
*[[wikt:en:turris#Latin|turres]] duas [[wikt:en:constituo#Latin|constituere]] [[wikt:en:coepit|coepit]];
**2つの<ruby><rb>[[w:攻城塔|攻城櫓]]</rb><rp>(</rp><rt>トゥッリス</rt><rp>)</rp></ruby> を建てること、を始めた。
*nam [[wikt:en:circumvallo#Latin|circumvallare]] loci natura [[wikt:en:prohibebat|prohibebat]].
**なぜなら<small>(城塞都市を)</small>堡塁で囲むことを地勢が妨げていたからだ。
<div style="text-align:center;">
{|
|-
|[[画像:Caesar's Gallic war; (Allen and Greenough's ed.) (1898) (14781415375).jpg|thumb|right|350px|城壁(図中の左端)を攻略するために築かれた<ruby><rb>土塁</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby> の復元画([[ガリア戦記_第2巻#12節|第2巻12節]]で既出)。左上には、両軍の<ruby><rb>[[w:攻城塔|攻城櫓]]</rb><rp>(</rp><rt>トゥッリス</rt><rp>)</rp></ruby>が描かれている。]]
|[[画像:Bender - Vinea.JPG|thumb|right|350px|<ruby><rb>工作小屋</rb><rp>(</rp><rt>ウィネア</rt><rp>)</rp></ruby> [[wikt:en:vinea|vinea]] の復元画([[ガリア戦記_第2巻#12節|第2巻12節]]で既出)。敵の矢玉などから身を守りながら城壁に近づくために用いられたと考えられている。]]
|}
</div>
:
; カエサルが、同盟者であるボイイー族やハエドゥイー族に、糧秣徴発を促す
*<!--❷--><sup>(2)</sup> De re [[wikt:en:frumentarius#Adjective|frumentaria]]
**<small>(カエサルは)</small>[[w:糧秣|糧秣]]調達について、
*[[wikt:en:Boii#Latin|Boios]] atque [[wikt:en:Haedui#Latin|Haeduos]] [[wikt:en:adhortari|adhortari]] non [[wikt:en:destitit|destitit]];
**[[w:ボイイ族|ボイイー族]]や[[w:ハエドゥイ族|ハエドゥイー族]]を鼓舞することを止めなかった。
*quorum [[wikt:en:alter#Latin|alteri]], quod [[wikt:en:nullus#Determiner|nullo]] [[wikt:en:studium#Latin|studio]] [[wikt:en:agebant|agebant]], non multum [[wikt:en:adiuvabant|adiuvabant]],
**彼らのうち一方<small>〔ハエドゥイー族〕</small>は、何らの努力を行なわなかったので、あまり助けにならなかった。
*[[wikt:en:alter#Latin|alteri]] non magnis [[wikt:en:facultas#Latin|facultatibus]], quod [[wikt:en:civitas#Latin|civitas]] erat [[wikt:en:exiguus#Latin|exigua]] et [[wikt:en:infirmus#Latin|infirma]],
**他方<small>〔ボイイー族〕</small>は、貧弱かつ無力な部族であったので、大した貯えもなく、
*celeriter quod [[wikt:en:habuerunt|habuerunt]] [[wikt:en:consumpserunt|consumpserunt]].
**早々と持っていたものを消費し切ってしまった。
:
; 糧秣の欠乏が続くが、ローマの将兵たちが耐え抜く
*<!--❸--><sup>(3)</sup> [[wikt:en:summus#Latin|Summa]] [[wikt:en:difficultas#Latin|difficultate]] rei [[wikt:en:frumentarius#Adjective|frumentariae]] [[wikt:en:adfectus#Latin|adfecto]] [[wikt:en:exercitus#Noun|exercitu]]
**<small>(ローマ人の)</small>軍隊は糧秣調達の大いなる困難さに苦悩させられながらも、
*[[wikt:en:tenuitas#Latin|tenuitate]] [[wikt:en:Boii#Latin|Boiorum]],
**──<small>(その困難は)</small>ボイイー族の微力さ、
*[[wikt:en:indiligentia#Latin|indiligentia]] [[wikt:en:Haedui#Latin|Haeduorum]],
**ハエドゥイー族の怠慢、
*[[wikt:en:incendium#Latin|incendiis]] [[wikt:en:aedificium#Latin|aedificiorum]],
**<small>(敵勢による)</small>家屋の焼き打ちによるものであったが、──
*usque eo ut [[wikt:en:complures#Determiner|complures]] dies [[wikt:en:frumentum#Latin|frumento]] [[wikt:en:miles#Latin|milites]] [[wikt:en:caruerint|caruerint]]
**かなりの日々にわたって兵士たちは糧食を欠くまでになり、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:usque#Latin|usque]] eo ut ~「~まで」)</span>
*et [[wikt:en:pecus#Latin|pecore]] ex [[wikt:en:longinquior#Latin|longinquioribus]] [[wikt:en:vicus#Latin|vicis]] [[wikt:en:adactus#Latin|adacto]]
**かなり遠方の村々から家畜を駆り立てたので
*[[wikt:en:extremus#Latin|extremam]] [[wikt:en:fames#Latin|famem]] [[wikt:en:sustentarent|sustentarent]],
**極限の飢えに耐え通すまでになったのであるが、
*[[wikt:en:nullus#Determiner|nulla]] tamen <u>vox est ab iis</u> [[wikt:en:auditus#Latin|audita]] populi Romani [[wikt:en:maiestas#Latin|maiestate]] et [[wikt:en:superior#Latin|superioribus]] [[wikt:en:victoria#Latin|victoriis]] [[wikt:en:indignus#Latin|indigna]].
**しかしながら、ローマ人民の威厳やかつての勝利にふさわしからぬ声は、彼らから何ら聞かれなかった。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:vox#Latin|vox]] est <u>ab</u> iis だが、<br> β系写本では <u>ex</u> iis vox est となっている。)</span>
:
; ローマ人将兵たちがカエサルに攻囲の継続を訴える
*<!--❹--><sup>(4)</sup> [[wikt:en:quin#Latin|Quin]] etiam Caesar cum in [[wikt:en:opus#Latin|opere]] [[wikt:en:singulus#Latin|singulas]] [[wikt:en:legio#Latin|legiones]] [[wikt:en:appellaret|appellaret]],
**いやそればかりか、カエサルが作業中のそれぞれの[[w:ローマ軍団|軍団]]に呼びかけたとき、
*et, si [[wikt:en:acerbe#Latin|acerbius]] [[wikt:en:inopia#Latin|inopiam]] [[wikt:en:ferrent#Latin|ferrent]], se [[wikt:en:dimissurus#Latin|dimissurum]] <span style="color:#009900;"><sub>(esse)</sub></span> [[wikt:en:oppugnatio#Latin|oppugnationem]] [[wikt:en:diceret|diceret]],
**もし、とても過酷に欠乏に耐えているのならば、自分は攻囲を放棄するであろう、とカエサルが言っていたときに、
:
*<!--❺--><sup>(5)</sup> [[wikt:en:universi#Latin|universi]] ab eo, ne id [[wikt:en:faceret|faceret]], [[wikt:en:petebant|petebant]] :
**<small>(各軍団の)</small>一同は、彼<small>〔カエサル〕</small>に、それ<small>〔攻囲の放棄〕</small>をしないように求めていた。
*sic se complures annos illo [[wikt:en:imperans#Latin|imperante]] [[wikt:en:meruisse|meruisse]],
**自分たちは<small>(以下のように)</small>幾年にもわたって彼<small>〔カエサル〕</small>の麾下で努めてきた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:sic ~ ut …「…のように~である」)</span>
*ut [[wikt:en:nullus#Determiner|nullam]] [[wikt:en:ignominia#Latin|ignominiam]] [[wikt:en:acciperent|acciperent]], <u>nusquam incepta</u> re [[wikt:en:discederent|discederent]]:
**何ら不名誉を蒙ってないし、事<small>〔戦役〕</small>が完遂されないまま<small>(戦列を)</small>離脱することは決してなかったのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:nusquam#Latin|nusquam]] [[wikt:en:inceptus#Latin|incepta]] だが、<br> β系写本では [[wikt:en:numquam#Latin|numquam]] [[wikt:en:infectus#Adjective|infecta]] となっている。)</span>
:
*<!--❻--><sup>(6)</sup> hoc se [[wikt:en:ignominia#Latin|ignominiae]] <u>loco [[wikt:en:laturus#Latin|laturos]]</u> <span style="color:#009900;"><sub>(esse)</sub></span>, si [[wikt:en:inceptus#Latin|inceptam]] [[wikt:en:oppugnatio#Latin|oppugnationem]] [[wikt:en:reliquissent|reliquissent]];
**もし<small>(自分たちが)</small>着手した攻囲を放棄してしまったならば、自分たちはこの状態を不名誉と見なすであろう。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、β系写本では loco laturos の語順だが、<br> α系写本では laturos loco の語順となっている。)</span>
:
*<!--❼--><sup>(7)</sup> <u>praestare</u> omnes [[wikt:en:perferre|perferre]] [[wikt:en:acerbitas#Latin|acerbitates]],
**あらゆる厳しさに持ちこたえることは<small>(以下のこと)</small>よりましである。
**:<span style="color:#009900;">(訳注:[[wikt:en:praestare|praestare]] ~ [[wikt:en:quam#Adverb|quam]] …「…よりも~がより優る」)</span>
*<u>quam</u> non [[wikt:en:civis#Latin|civibus]] Romanis, qui [[wikt:en:Genabum#Latin|Cenabi]] [[wikt:en:perfidia#Latin|perfidia]] Gallorum [[wikt:en:interissent|interissent]], [[wikt:en:parentarent|parentarent]].
**ケナブムでガッリア人たちの不義により滅びたローマ市民たちの仇討ちをしないよりも。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[#3節|3節]]①項を参照。仇討ちをしないのなら、苦しむ方がましである、の意)</span>
:
*<!--❽--><sup>(8)</sup> Haec [[wikt:en:idem#Latin|eadem]] [[wikt:en:centurio#Latin|centurionibus]] [[wikt:en:tribunus#Latin|tribunis]]<nowiki>que</nowiki> [[wikt:en:miles#Latin|militum]]
**これらと同じことを、<ruby><rb>[[w:ケントゥリオ|百人隊長]]</rb><rp>(</rp><rt>ケントゥリオ</rt><rp>)</rp></ruby>たちや<ruby><rb>[[w:トリブヌス・ミリトゥム|兵士長官]]</rb><rp>(</rp><rt>トリブヌス・ミリトゥム</rt><rp>)</rp></ruby>たちに、
*[[wikt:en:mandabant|mandabant]], ut per eos ad Caesarem [[wikt:en:deferrentur|deferrentur]].
**彼らを通じてカエサルに申し立てるように、依頼していた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===18節===
*<span style="background-color:#ffd;">[[/注解/18節]] {{進捗|00%|2026-04-13}}</span>
;カエサルがウェルキンゲトリークス不在の敵陣へ迫る
:
; カエサルは、ウェルキンゲトリークスが糧秣の欠乏によりローマ勢の糧秣徴発隊を襲撃に向かったと知る
*<!--❶--><sup>(1)</sup> Cum iam [[wikt:en:murus#Latin|muro]] [[wikt:en:turris#Latin|turres]] [[wikt:en:adpropinquassent#Latin|adpropinquassent]],
**すでに<small>(アウァーリクムの)</small>城壁に<small>(ローマ勢の)</small>[[w:攻城塔|攻城櫓]]が近づいていた際に、
*ex [[wikt:en:captivus#Noun|captivis]] Caesar [[wikt:en:cognovit#Latin|cognovit]],
**カエサルは、捕虜たちから<small>(以下のことを)</small>知った。
*[[wikt:en:Vercingetorix#Latin|Vercingetorigem]], [[wikt:en:consumptus#Latin|consumpto]] [[wikt:en:pabulum#Latin|pabulo]],
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は[[w:糧秣|糧秣]]を消費し切ると、
*castra [[wikt:en:movisse#Latin|movisse]] propius [[wikt:en:Avaricum#Latin|Avaricum]],
**陣営をアウァーリクムのより近くに移動させて、
*atque ipsum cum [[wikt:en:equitatus#Latin|equitatu]] [[wikt:en:expeditus#Noun|expeditis]]<nowiki>que</nowiki>, qui inter [[wikt:en:eques#Latin|equites]] [[wikt:en:proeliari#Verb|proeliari]] [[wikt:en:consuessent#Latin|consuessent]],
**彼自身は、[[w:騎兵|騎兵]]隊、および騎兵たちの間で争闘することに習熟していた[[w:軽装歩兵|軽装歩兵]]たちとともに、
*<u>insidiarum</u> causa eo [[wikt:en:profectus#Etymology_3|profectum]], quo nostros postero die [[wikt:en:pabulatum#Verb|pabulatum]] [[wikt:en:venturus#Latin|venturos]] [[wikt:en:arbitraretur#Latin|arbitraretur]].
**我が方<small>〔ローマ勢〕</small>が翌日に糧秣徴発にやって来るであろうと思われるところで待ち伏せするために、出発した、と。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:insidiarum|insidiarum]] だが、<br> β系写本では [[wikt:en:insidiandi#Latin|insidiandi]] となっている。)</span>
[[画像:AVARICUM Battaglia 52 aC.png|thumb|right|300px|アウァーリクム攻略戦の布陣図(<small>イタリア語</small>)。中央がアウァーリクム(AVARICUM)、右下の赤枠内がカエサルと8個軍団の陣営、赤い矢印の先端がローマ軍の土塁。左上の楕円形がウェルキンゲトリークスが移動させた陣営。]]
[[画像:Funerary chariot in the archeological museum of Strasbourg.jpg|thumb|right|300px|[[w:ハルシュタット文化|ハルシュタット文化]]の墳墓の副葬品として発掘された '''四輪荷馬車''' のレプリカ(仏ストラスブール考古学博物館)。]]
:
*<!--❷--><sup>(2)</sup> Quibus rebus [[wikt:en:cognitus#Participle|cognitis]]
**<small>(カエサルは)</small>それらの事情を知るや、
*media nocte [[wikt:en:silentium#Latin|silentio]] [[wikt:en:profectus#Etymology_3|profectus]]
**真夜中の静けさのうちに出発して、
*ad hostium castra [[wikt:en:mane#Adverb_2|mane]] [[wikt:en:pervenit#Etymology_2|pervenit]].
**敵の陣営の辺りへ朝方に到着した。
:
*<!--❸--><sup>(3)</sup> Illi, celeriter per [[wikt:en:explorator#Latin|exploratores]] [[wikt:en:adventus#Latin|adventu]] Caesaris [[wikt:en:cognitus#Participle|cognito]]
**あの者たちは、速やかに斥候たちを通じてカエサルの到来を知るや、
*<u>carros</u> [[wikt:en:impedimentum#Latin|impedimenta]]<nowiki>que</nowiki> sua in [[wikt:en:artior#Latin|artiores]] [[wikt:en:silva#Latin|silvas]] [[wikt:en:abdiderunt#Latin|abdiderunt]],
**自分たちの<u>四輪荷馬車</u>と[[w:輜重|輜重]]をとても深い森の中に隠して、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:四輪荷馬車 [[wikt:en:carrus#Latin|carrus]] は、例えば右の画像のものを参照。)</span>
*copias omnes in loco [[wikt:en:editus#Latin|edito]] atque [[wikt:en:apertus#Latin|aperto]] [[wikt:en:instruxerunt#Latin|instruxerunt]].
**全軍勢を高くそびえて開けている場所に配置した。
:
*<!--❹--><sup>(4)</sup> Qua re [[wikt:en:nuntiatus#Latin|nuntiata]]
**その事を報告されて、
*Caesar celeriter [[wikt:en:sarcina#Latin|sarcinas]] [[wikt:en:conferri#Latin|conferri]],
**カエサルは速やかに<small>(兵士たちの)</small>[[w:背嚢|背嚢]]が運び集められること、
*[[wikt:en:arma#Latin|arma]] [[wikt:en:expediri#Latin|expediri]] [[wikt:en:iussit#Verb|iussit]].
**武具が<small>(すぐ使えるように)</small>整えられることを命じた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===19節===
*<span style="background-color:#ffd;">[[/注解/19節]] {{進捗|00%|2026-04-20}}</span>
;丘の上のガッリア勢と沼沢を挟んで対峙する
:
; ガッリア勢の陣営の地勢
*<!--❶--><sup>(1)</sup> [[wikt:en:collis#Latin|Collis]] erat <u>leniter</u> ab [[wikt:en:infimus#Latin|infimo]] [[wikt:en:adclivis#Latin|adclivis]].
**<small>(ガッリア勢がいる)</small>丘陵はふもとから緩やかに、登り坂になっていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、β系・χ系・B・M・S・N<sup>c</sup> 写本では [[wikt:en:leviter#Latin|leviter]] 、<br> L・N写本では [[wikt:en:breviter#Latin|breviter]] だが、<br> より劣った写本 ''[[ガリア戦記/注解編/写本と校訂版#クリティカル・アパラトゥスとその略号|codd.deter.]]'' では [[wikt:en:leniter#Latin|leniter]] となっている。
*Hunc ex omnibus fere partibus [[wikt:en:palus#Latin|palus]] [[wikt:en:difficilis#Latin|difficilis]] atque [[wikt:en:impeditus#Latin|impedita]] [[wikt:en:cingebat#Latin|cingebat]]
**これ<small>〔丘陵〕</small>を、ほぼすべての方角から、不便で通りにくい沼地が取り巻いていて、
*non [[wikt:en:latior#Latin|latior]] [[wikt:en:pes#Latin|pedibus]] [[wikt:en:quinquaginta#Latin|quinquaginta]].
**<small>(その沼地は)</small>50<u>[[w:ペース (長さ)|ペース]]</u>より幅広くなかった。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ペース|ペース]]は約29.6cmで、50ペースは約15メートル弱。)</span>
:
; 丘の周囲を部族ごとに分かれて守備している
*<!--❷--><sup>(2)</sup> Hoc se [[wikt:en:collis#Latin|colle]] [[wikt:en:interruptus#Latin|interruptis]] [[wikt:en:pons#Latin|pontibus]]
**この丘陵において、橋梁を破却すると、
*Galli [[wikt:en:fiducia#Latin|fiducia]] loci [[wikt:en:continebant#Latin|continebant]]
**ガッリア人たちは、地勢を頼りに留まっていて、
*[[wikt:en:generatim#Latin|generatim]]<nowiki>que</nowiki> [[wikt:en:distributus#Latin|distributi]] in civitates
**<small>(軍勢を)</small>諸部族の種族ごとに分けて配置させて、
*omnia [[wikt:en:vadum#Latin|vada]] ac [[wikt:en:saltus#Etymology_2|saltus]] eius [[wikt:en:palus#Latin|paludis]] <u>certis custodiis</u> [[wikt:en:obtinebant#Latin|obtinebant]],
**その沼地の、すべての浅瀬や隘路を <u>一定の護衛兵たちによって</u> 占領していた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の [[wikt:en:certus#Latin|certis]] [[wikt:en:custodia#Latin|custodiis]] は β系写本の記述で、α系写本にはない。)</span>
*<u>sic</u> animo [[wikt:en:paratus#Latin|parati]] <u>ut</u>, si eam [[wikt:en:palus#Latin|paludem]] Romani [[wikt:en:perrumpo#Latin|perrumpere]] [[wikt:en:conarentur#Latin|conarentur]], [[wikt:en:haesitans#Latin|haesitantes]] [[wikt:en:premerent#Latin|premerent]] ex loco [[wikt:en:superior#Latin|superiore]];
**もしローマ勢がその沼地を強行突破せんと試みたならば、ぐずぐずしている者らを高地から圧倒する心積もりであった。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:sic#Latin|sīc]] ~, [[wikt:en:ut#Latin|ut]] ・・・「…であるように~である」)</span>
:
; 両軍は互角か?
*<!--❸--><sup>(3)</sup> ut, qui [[wikt:en:propinquitas#Latin|propinquitatem]] loci [[wikt:en:videret#Latin|videret]],
**<small>(両軍の)</small>陣地が近接していることを見た者は、
*[[wikt:en:paratus#Latin|paratos]] prope [[wikt:en:aequus#Latin|aequo]] <u>Marte</u> ad [[wikt:en:dimicandum#Latin|dimicandum]] [[wikt:en:existimaret#Latin|existimaret]],
**<small>(ガッリア勢がローマ勢に対して)</small>ほぼ互角の戦い<small>(の条件)</small>で闘うつもりでいると考えただろう。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、[[wikt:en:Mars#Proper_noun_22|Mars]]「戦争の神マールス」ではなく、<br> [[wikt:en:Mars#Noun_4|Mars]]「戦争、闘い」そのものを指す。)</span>
; ガッリア勢は不利なのに虚勢を張っているのか?
*qui [[wikt:en:iniquitas#Latin|iniquitatem]] [[wikt:en:condicio#Latin|condicionis]] [[wikt:en:perspiceret#Latin|perspiceret]],
**<small>(ガッリア勢の)</small>条件の不利なことを見通した者は、
*[[wikt:en:inanis#Latin|inani]] [[wikt:en:simulatio#Latin|simulatione]] sese [[wikt:en:ostentare#Latin|ostentare]] [[wikt:en:cognosceret#Latin|cognosceret]].
**<small>(ガッリア勢が)</small>虚栄の見せかけで己を誇示していることを、理解しただろう。
:
; カエサルが、至近距離の敵への攻撃にいきり立つ将兵らを教え諭す
*<!--❹--><sup>(4)</sup> [[wikt:en:indignans#Latin|Indignantes]] [[wikt:en:miles#Latin|milites]] Gaesar,
**カエサルは<small>(ガッリア勢の誇示に)</small>憤慨している兵士たちに、
*quod [[wikt:en:conspectus#Noun_2|conspectum]] suum hostes <u>perferre</u> [[wikt:en:possent#Latin|possent]] [[wikt:en:tantulus#Latin|tantulo]] [[wikt:en:spatium#Latin|spatio]] [[wikt:en:interiectus#Latin|interiecto]],
**──というのも、これほどのわずかな距離しか介在してないのに、敵勢が自分らを<small>(平然と)</small>見据えていられるためだが──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:perferre#Latin|perferre]] だが、β系写本では [[wikt:en:ferre#Latin|ferre]] となっている。)</span>
*et signum proelii [[wikt:en:exposcens#Latin|exposcentes]] [[wikt:en:edocet#Latin|edocet]],
**および戦闘の合図を熱心に求めている者たちに対して<small>(以下のように)</small>説く。
*[[wikt:en:quantus#Latin|quanto]] [[wikt:en:detrimentum#Latin|detrimento]] et [[wikt:en:quot#Latin|quot]] [[wikt:en:vir#Latin|virorum]] [[wikt:en:fortis#Latin|fortium]] [[wikt:en:mors#Latin|morte]] [[wikt:en:necesse#Adverb|necesse]] sit [[wikt:en:constare#Latin|constare]] [[wikt:en:victoria#Latin|victoriam]];
**勝利を確実にすることが、どれほどの損害と、どれほど多くの勇敢な<ruby><rb>兵士</rb><rp>(</rp><rt>ウィル</rt><rp>)</rp></ruby>たちの死を必要とするか、を。
: <!-- [[wikt:en:| -->
; 多くのローマ兵が死に瀕すれば、カエサル自身が戦争犯罪で弾劾されるだろう
*<!--❺--><sup>(5)</sup> quos cum <u>sic</u> [[wikt:en:animus#Latin|animo]] [[wikt:en:paratus#Latin|paratos]] [[wikt:en:videat#Latin|videat]], <u>ut</u> [[wikt:en:nullus#Determiner|nullum]] pro sua [[wikt:en:laus#Latin|laude]] [[wikt:en:periculum#Latin|periculum]] [[wikt:en:recusent#Latin|recusent]],
**彼ら<small>〔兵士たち〕</small>が己の賞賛のためにいかなる危険をも辞さない心積もりであると<small>(カエサルは)</small>見て取ったので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:sic#Latin|sīc]] ~, [[wikt:en:ut#Latin|ut]] ・・・「…であるように~である」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:pro sua laude 「自らの賞賛のために」は、「カエサルの賞賛のために」と解することもできる。<br> しかし、共和制国家に忠誠を誓っているはずの兵士らが、カエサル個人のために命を投げ出そうとする記述は、<br> 野心家カエサルが軍隊を私兵化しようとしている野望をさらけ出すことになり、政敵たちを利することになる。)</span>
*[[wikt:en:summus#Latin|summae]] se [[wikt:en:iniquitas#Latin|iniquitatis]] [[wikt:en:condemnari#Latin|condemnari]] [[wikt:en:debere#Latin|debere]], [[wikt:en:nisi#Conjunction|nisi]] eorum [[wikt:en:vita#Latin|vitam]] sua [[wikt:en:salus#Latin|salute]] [[wikt:en:habeat#Latin|habeat]] [[wikt:en:carior#Latin|cariorem]].
**<small></small>彼ら<small>〔兵士〕</small>の生命を己<small>〔カエサル〕</small>の安全より貴重と思わない限り、自分<small>〔カエサル〕</small>は極度の不正のために告発されるに違いない。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:すでにサビーヌスら多くのローマ市民が戦死しており、ここでさらに多くのローマ市民を死なせることは、<br> カエサルから軍隊を取り上げることを主張していた政敵たちから厳しく糾弾されることになったであろう。)</span>
: <!-- [[wikt:en:| -->
*<!--❻--><sup>(6)</sup> Sic [[wikt:en:miles#Latin|milites]] [[wikt:en:consolatus#Latin|consolatus]]
**<small>(カエサルは)</small>このように兵士たちを<ruby><rb>宥</rb><rp>(</rp><rt>なだ</rt><rp>)</rp></ruby>めて、
*eodem die [[wikt:en:reducit#Latin|reducit]] in castra
**同日に陣営の中に連れ戻して、
*[[wikt:en:reliquus#Latin|reliqua]]<nowiki>que</nowiki> quae ad [[wikt:en:oppugnatio#Latin|oppugnationem]] <u>[[wikt:en:pertinebant#Latin|pertinebant]] [[wikt:en:oppidum#Latin|oppidi]]</u> [[wikt:en:administrare#Latin|administrare]] [[wikt:en:instituit#Latin|instituit]].
**城塞都市<small>〔アウァーリクム〕</small>の攻略に関わっているほかのことに従事することを決めた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、χ系・B・M・S写本では pertinebant oppidi の語順だが、<br> L・N・β系写本では oppidi pertinebant の語順となっている。)</span>
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===20節===
*<span style="background-color:#ffd;">[[/注解/20節]] {{進捗|00%|2026-05-04}}</span>
;ウェルキンゲトリークスが味方に弁明し、捕虜に問い質す
:
*<!--❶--><sup>(1)</sup> [[wikt:en:Vercingetorix#Latin|Vercingetorix]], cum ad suos [[wikt:en:redisset#Latin|redisset]], [[wikt:en:proditio#Latin|proditionis]] [[wikt:en:insimulatus#Latin|insimulatus]],
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、味方のもとに戻った際に、<small>(以下のことで)</small>裏切りだと非難されていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:以下、[[wikt:en:quod#Conjunction|quod]] ~ で箇条書き。)</span>
*quod [[wikt:en:castra#Latin|castra]] [[wikt:en:propius#Latin|propius]] [[wikt:en:Romani#Latin|Romanos]] [[wikt:en:movisset#Latin|movisset]],
**陣営をローマ人たちのより近くに移動させていたこと、
*quod cum omni [[wikt:en:equitatus#Noun|equitatu]] [[wikt:en:discessisset#Latin|discessisset]],
**全[[w:騎兵|騎兵隊]]とともに<small>(陣営を)</small>離れていたこと、
*quod sine [[wikt:en:imperium#Latin|imperio]] [[wikt:en:tantus#Latin|tantas]] [[wikt:en:copiae#Latin|copias]] [[wikt:en:reliquisset#Latin|reliquisset]],
**司令権<small>(を持つ者)</small>なしに、これほど多くの軍勢を置き去りにしていたこと、
*quod eius [[wikt:en:discessus#Noun|discessu]] [[wikt:en:Romani#Latin|Romani]] [[wikt:en:tantus#Latin|tanta]] [[wikt:en:opportunitas#Latin|opportunitate]] et [[wikt:en:celeritas#Latin|celeritate]] [[wikt:en:venissent#Latin|venissent]];
**彼<small>〔ウェルキンゲトリークス〕</small>の退去によりローマ人がこれほどの好機とこれほどの迅速さでやって来ていたこと、である。
:
*<!--❷--><sup>(2)</sup> non haec omnia [[wikt:en:fortuito#Latin|fortuito]] aut sine [[wikt:en:consilium#Latin|consilio]] [[wikt:en:accido#Etymology_1|accidere]] [[wikt:en:potuisse#Latin|potuisse]];
**──これらすべてが偶然に、あるいは謀りごとなしに起こることはあり得なかったのだ。
*[[wikt:en:regnum#Latin|regnum]] illum Galliae <u>malle</u> Caesaris [[wikt:en:concessus#Noun|concessu]] <u>quam</u> ipsorum habere [[wikt:en:beneficium#Latin|beneficio]]
**彼<small>〔ウェルキンゲトリークス〕</small>は<small>(ガッリア人)</small>自身の厚遇を得ることよりもむしろカエサルの許しにより[[w:ガリア|ガッリア]]の王権<small>(を持つこと)</small>を好んでいるのだ。──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:malle#Latin|malle]] ~ quam …「…よりも、むしろ~を好む(選ぶ)」)</span>
**:<span style="color:#009900;">(訳注:ウェルキンゲトリークスが王権を望むあまり、同盟部族の生命をカエサルに売り渡したということである。)</span>
[[画像:Vercingetorix_stater_n2_CdM_alternate.jpg|thumb|right|250px|[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の横顔が刻まれたガッリアの金貨(パリの[[w:ビブリオテーク・ナショナル|仏国立図書館]]貨幣部蔵)]]
:
; ━━ウェルキンゲトリークスの弁明が始まる━━
*<!--❸--><sup>(3)</sup> [[wikt:en:talis#Latin|tali]] [[wikt:en:modus#Latin|modo]] [[wikt:en:accusatus#Latin|accusatus]]
**こんな風に非難されて、
*ad haec [[wikt:en:respondit#Latin|respondit]]:
**<small>(ウェルキンゲトリークスは)</small>これらのことへ答えた。
*Quod [[wikt:en:castra#Latin|castra]] [[wikt:en:movisset#Latin|movisset]],
**陣営を移動させていたことは、
*[[wikt:en:factus#Latin|factum]] [[wikt:en:inopia#Latin|inopia]] [[wikt:en:pabulum#Latin|pabuli]],
**[[w:糧秣|糧秣]]の欠乏によりなされたのであり、
*etiam ipsis [[wikt:en:hortans#Latin|hortantibus]];
**<small>(ガッリア人たち)</small>自身が熱心に勧めることさえしているのだ。
*quod [[wikt:en:propius#Latin|propius]] [[wikt:en:Romani#Latin|Romanos]] [[wikt:en:accessisset#Latin|accessisset]],
**ローマ人たちのより近くに近寄っていたことは、
*[[wikt:en:persuasus#Latin|persuasum]] loci [[wikt:en:opportunitas#Latin|opportunitate]], qui se <u>ipsum</u> [[wikt:en:munitio#Latin|munitione]] [[wikt:en:defenderet#Latin|defenderet]];
**<small>(移動先の丘陵が)</small>それ自体を<small>(沼地という天然の)</small>要害により守っているという地の利に納得させられたのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:上記の se <u>ipsum</u> munitione defenderet 「そのものを防御物によって守る」は主要写本 ω の記述で、<br>''[[ガリア戦記/注解編/写本と校訂版#Bentley,_Thomas|Th. Bentley]]'' は se <u>ipse sine</u> munitione defenderet 「そのものが防御物なしで守る」と修正提案している。)</span>
:
; 騎兵は、湿地帯での任務に適していない
*<!--❹--><sup>(4)</sup> [[wikt:en:eques#Latin|equitum]] vero [[wikt:en:opera#Latin|operam]]
**騎兵たちの働きはまさに、
*neque in loco [[wikt:en:paluster#Latin|palustri]] [[wikt:en:desiderari#Latin|desiderari]] [[wikt:en:debuisse#Latin|debuisse]]
**沼沢地において望まれるべきものではなかったし、
**:<span style="color:#009900;">(訳注:湿地・沼地では、ぬかるみに馬の足が取られるため、<br> 騎兵の長所である機動力が著しく低下し、<br> 速さを活かした偵察・突撃・迂回・追撃などがし難くなる。)</span>
*et [[wikt:en:illic#Adverb|illic]] fuisse [[wikt:en:utilis#Latin|utilem]], quo sint [[wikt:en:profectus#Participle_2|profecti]].
**<small>(騎兵たちが)</small>発って行ったところにおいては有効だったのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[#16節|16節]]冒頭の説明によれば、<br> ウェルキンゲトリークスが最初に宿営した場所は、<br> アウァーリクムから16マイル離れ、沼地や森林に守られていた。<br> [[#19節|19節]]では、より近い、沼地に囲まれたゆるやかな丘陵に移動したという。<br> この移動前後の地勢の優劣を、カエサルは必ずしも明瞭に説明していない。)</span>
:
; 兵は拙速を尊ぶ
*<!--❺--><sup>(5)</sup> [[wikt:en:summa#Latin|Summam]] [[wikt:en:imperium#Latin|imperii]]
**<small>(軍勢の)</small>最高司令権は、
*se [[wikt:en:consulto#Adverb|consulto]] [[wikt:en:nullus#Latin|nulli]] [[wikt:en:discedens#Latin|discedentem]] [[wikt:en:tradidisse#Latin|tradidisse]],
**<small>(ウェルキンゲトリークス)</small>自らが意図的に、立ち去るに当たって、誰にも委託しなかった。
*[[wikt:en:ne#Latin|ne]] is [[wikt:en:multitudo#Latin|multitudinis]] [[wikt:en:studium#Latin|studio]] ad [[wikt:en:dimicandus#Latin|dimicandum]] [[wikt:en:impelleretur#Latin|impelleretur]];
**その者が大勢の熱意によって<small>(ローマ人と)</small>闘うことに駆り立てられないように、である。
*cui rei <u>propter animi [[wikt:en:mollities#Latin|mollitiem]]</u> [[wikt:en:studere#Latin|studere]] omnes [[wikt:en:videret#Latin|videret]],
**その事<small>〔闘って決着を付けること〕</small>を、<u>心の柔弱さのゆえに</u>、皆が求めたがっている。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:「心の柔弱さのゆえに、闘いがしたくなる」というのは、<br> 一見すると奇妙に感じられるが、ここでの柔弱さ([[wikt:en:mollities#Latin|mollities]])とは、<br> 長期の攻囲戦の労苦や疲弊に持ちこたえる忍耐力のなさを指し、<br> 長い苦難から逃避するために早期決戦を志向する心理を意味すると考えられる。)</span>
*quod [[wikt:en:diutius#Latin|diutius]] [[wikt:en:labor#Latin|laborem]] ferre non [[wikt:en:possent#Latin|possent]].
**──というのは、<small>(兵は)</small>より長く<small>(攻囲戦の)</small>労苦に耐えることができないからだ──。
**:<span style="color:#009900;"> (訳注:[[w:孫子 (書物)|孫子]]に曰く「兵は拙速を聞くも、未だ巧の久しきを<ruby><rb>睹</rb><rp>(</rp><rt>み</rt><rp>)</rp></ruby>ざるなり」<ref>[[wikt:en:故に兵は拙速を聞くも、未だ巧の久しきを睹ざるなり|故に兵は拙速を聞くも、未だ巧の久しきを睹ざるなり]]
「戦争というものは、拙劣に短期決戦を挑んだ事例は聞くが、巧妙に長期戦を続けた事例は聞かない」の意。長い戦争は人々を消耗させ、疲弊させてしまう。</ref>)</span>
:
; ローマ人は、闘わずに退却したではないか
*<!--❻--><sup>(6)</sup> Romani si [[wikt:en:casu#Latin|casu]] [[wikt:en:intervenerint#Latin|intervenerint]], [[wikt:en:fortuna#Latin|fortunae]],
**もしローマ人たちが偶然に現われたのならば、命運に<small>(感謝するべきであり)</small>、
*si [[wikt:en:alicuius#Latin|alicuius]] [[wikt:en:indicium#Latin|indicio]] [[wikt:en:vocatus#Latin|vocati]], huic [[wikt:en:habendus#Latin|habendam]] [[wikt:en:gratia#Latin|gratiam]],
**もし<small>(ローマ人たちが)</small>何者かの申し立てに呼ばれて来たのならば、その者に感謝するべきだ。
*quod <u>et</u> [[wikt:en:paucitas#Latin|paucitatem]] eorum ex loco [[wikt:en:superior#Latin|superiore]] [[wikt:en:cognosco#Latin|cognoscere]]
**──というのは、より高い位置から彼ら<small>〔ローマ人〕</small>の少なさを知ることも、
*<u>et</u> [[wikt:en:virtus#Latin|virtutem]] [[wikt:en:despicio#Latin|despicere]] [[wikt:en:potuerint#Latin|potuerint]],
**<small>(ローマ人の)</small>武勇とやらを見下すこともできたのだから。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:et ~ et …「~も…も」)</span>
*qui [[wikt:en:dimico#Latin|dimicare]] non [[wikt:en:ausus#Participle|ausi]]
**彼ら<small>〔ローマ人〕</small>は闘うことをあえてせずに、
*[[wikt:en:turpiter#Latin|turpiter]] se in castra [[wikt:en:receperint#Latin|receperint]].
**見苦しくも陣営に退却したのだ──。
:
; ガッリア人が勝つのだから、カエサルに寝返るはずがない
*<!--❼--><sup>(7)</sup> [[wikt:en:imperium#Latin|Imperium]] se <u>ab</u> Caesare per [[wikt:en:proditio#Latin|proditionem]] [[wikt:en:nullus#Latin|nullum]] [[wikt:en:desidero#Latin|desiderare]],
**自分<small>〔ウェルキンゲトリークス〕</small>は、カエサルから裏切りを通じて、どのような司令権も望んではいない。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:上の (2) 項では、味方のガッリア人たちは、ウェルキンゲトリークスが<br> カエサルにより [[wikt:en:regnum#Latin|regnum]](王権、支配権)を得ようとしていると非難したのに対し、<br> 彼は [[wikt:en:imperium#Latin|imperium]](軍隊司令権、または支配権)という言葉を巧妙に引きずって答えている。<br> もちろん、言葉を変えたのは、筆者カエサル自身であろう。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ab はα系写本の記述で、β系写本では a となっている。)</span>
*quod habere [[wikt:en:victoria#Latin|victoria]] [[wikt:en:posset#Latin|posset]],
**<small>(支配権は、ローマ人に対する)</small>勝利によって得られるものであり、
*quae iam esset sibi atque omnibus [[wikt:en:Galli#Latin|Gallis]] [[wikt:en:exploratus#Latin|explorata]];
**<small>(勝利は)</small>もはや自分とすべてのガッリア人にとって確実なものとされているのだ。
*quin etiam ipsis <u>remittere</u>,
**いやそればかりか<small>(以下の様であれば、ガッリア人たち)</small>自身に<small>(司令官職を)</small>返還しているだろう。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の [[wikt:en:remitto#Latin|remittere]] は、写本Sの記述および ''[[ガリア戦記/注解編/写本と校訂版#Stephanus_(Estienne)|Stephanus]]'' や ''[[ガリア戦記/注解編/写本と校訂版#Vascosanus|Vascosanus]]'' による修正提案で、<br> β系・χ系写本・写本B・M・L・N では [[wikt:en:remitteret#Latin|remitteret]] となっている。)</span>
*si sibi <u>magis</u> [[wikt:en:honor#Latin|honorem]] [[wikt:en:tribuo#Latin|tribuere]], <u>quam</u> ab se [[wikt:en:salus#Latin|salutem]] [[wikt:en:accipio#Latin|accipere]] [[wikt:en:videantur#Latin|videantur]].
**もし<small>(ガッリア人が)</small>自分から安全を受け取っているよりも、むしろ顕職を自分に授けていると思っているのならば、だが。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:magis#Latin|magis]] ~, quam …「…というよりは、むしろ~」)</span>
:
; 捕虜のローマ人たちに訊いてみなさい
*<!--❽--><sup>(8)</sup> <!--▲直接話法--><span style="background-color:#e8e8ff;"> <span style="color:#009900;">«</span> Haec ut [[wikt:en:intellegatis#Latin|intellegatis]], <span style="color:#009900;">»</span> </span> [[wikt:en:inquit#Latin|inquit]], <!--▲直接話法--><span style="background-color:#e8e8ff;"> <span style="color:#009900;">«</span> a me [[wikt:en:sincere#Latin|sincere]] [[wikt:en:pronuntiari#Latin|pronuntiari]], [[wikt:en:audite#Latin|audite]] [[wikt:en:Romanus#Adjective|Romanos]] [[wikt:en:miles#Latin|milites]]. <span style="color:#009900;">»</span> </span>
**「これらは諸君が理解しているように、私により率直に示された。ローマ兵たちに聞いてみよ」と言った。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:<!--▲直接話法--><span style="background-color:#e8e8ff;"> <span style="color:#009900;">«</span> ~ <span style="color:#009900;">»</span> </span> の箇所は、直接話法で記されている。)</span>
:
*<!--❾--><sup>(9)</sup> [[wikt:en:producit#Latin|Producit]] [[wikt:en:servus#Latin|servos]], quos in [[wikt:en:pabulatio#Latin|pabulatione]] paucis ante diebus [[wikt:en:exceperat#Latin|exceperat]] et [[wikt:en:fames#Latin|fame]] [[wikt:en:vinculum#Latin|vinculis]]<nowiki>que</nowiki> [[wikt:en:excruciaverat#Latin|excruciaverat]].
**数日前に糧秣徴発しているのを<small>(彼が)</small>ひっ捕らえて、飢えと鎖で拷問していたところの奴隷たちを引き出す。
**:<span style="color:#009900;">(訳注:[[wikt:en:calo#Noun_5|cālō]] カーロー(軍属奴隷)と呼ばれる輜重や陣営を管理する奴隷たちのことであろう。)</span>
:
*<!--❿--><sup>(10)</sup> Hi iam ante [[wikt:en:edoctus#Latin|edocti]], quae [[wikt:en:interrogatus#Latin|interrogati]] [[wikt:en:pronuntiarent#Latin|pronuntiarent]],
**彼ら<small>〔奴隷〕</small>は、すでに前もって<small>(ガッリア勢から)</small>訊問された際に語ることを<small>(ローマ人から)</small>教え込まれており、
**:<span style="color:#009900;">(訳注:カエサルは奴隷たちが誰に教え込まれたのか明記していないため、<br> ウェルキンゲトリークスに教え込まれたと訳している場合もある。)</span>
*[[wikt:en:miles#Latin|milites]] se esse [[wikt:en:legionarius#Latin|legionarios]] [[wikt:en:dicunt#Latin|dicunt]];
**自分たちは[[w:軍団兵|軍団兵]]であると言った。
**:<span style="color:#009900;">(訳注:糧秣徴発に出かけていた者は、たとえ軍団兵でも軽装であったであろうが、<br> 奴隷たちは、もともと戦争で捕虜になったガッリア人たち等であったと考えられるので、<br> 地中海人種のローマ人とは容易に見分けが付きそうなものではある。)</span>
*[[wikt:en:fames#Latin|fame]] <u>et</u> [[wikt:en:inopia#Noun_2|inopia]] [[wikt:en:adductus#Latin|adductos]] [[wikt:en:clam#Latin|clam]] ex castris [[wikt:en:exisse#Latin|exisse]], si [[wikt:en:aliquis#Latin|quid]] [[wikt:en:frumentum#Latin|frumenti]] aut [[wikt:en:pecus#Latin|pecoris]] in agris [[wikt:en:reperio#Latin|reperire]] [[wikt:en:possent#Latin|possent]];
**<small>(奴隷たち曰く)</small>飢えと欠乏に動かされて、何か穀物または家畜が野に見出せないかと、ひそかに陣営から抜け出した。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:et はα系写本の記述で、β系写本では atque となっている。)</span>
:
*<!--⓫--><sup>(11)</sup> [[wikt:en:similis#Latin|simili]] omnem [[wikt:en:exercitus#Noun|exercitum]] [[wikt:en:inopia#Noun_2|inopia]] [[wikt:en:premi#Latin|premi]],
**<small>(ローマ人の)</small>全軍隊が同様の欠乏に悩まされて、
*<u>nec</u> iam [[wikt:en:vis#Latin|vires]] [[wikt:en:sufficio#Latin|sufficere]] [[wikt:en:quisquam#Latin|cuiusquam]] <u>nec</u> ferre [[wikt:en:opus#Latin|operis]] [[wikt:en:labor#Latin|laborem]] posse;
**もはや<small>(兵士の)</small>誰もが十分な能力がなく、<small>(城攻めの)</small>作業の労苦に耐えることができない。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:nec ~ nec …「~でもなく、…でもない」)</span>
*itaque [[wikt:en:statuisse#Latin|statuisse]] [[wikt:en:imperator#Latin|imperatorem]], si [[wikt:en:nihil#Latin|nihil]] in [[wikt:en:oppugnatio#Latin|oppugnatione]] oppidi <u>profecissent</u>, [[wikt:en:triduum#Latin|triduo]] [[wikt:en:exercitus#Noun|exercitum]] [[wikt:en:deduco#Latin|deducere]].
**こうして将軍<small>〔カエサル〕</small>は、もし城塞都市の攻略において何ら得られないならば、3日間で軍隊を連れ帰ると決めた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、写本S・L・Nでは [[wikt:en:profecissent#Latin|profecissent]]<sub> (3人称・<u>複数</u>・過去完了・接続法)</sub> だが、<br> β系写本では [[wikt:en:profecisset#Latin|profecisset]]<sub> (3人称・<u>単数</u>・過去完了・接続法)</sub> となっており、<br> χ系および写本B・Mでは proficissent という綴りになっている。)</span>
: <!-- [[wikt:en:| -->
*<!--⓬--><sup>(12)</sup> <!--▲直接話法--><span style="background-color:#e8e8ff;"> <span style="color:#009900;">«</span> Haec, <span style="color:#009900;">»</span> </span> [[wikt:en:inquit#Latin|inquit]], <!--▲直接話法--><span style="background-color:#e8e8ff;"> <span style="color:#009900;">«</span> a me, <span style="color:#009900;">»</span> </span> [[wikt:en:Vercingetorix#Latin|Vercingetorix]],
**「これぞ」「私によって」とウェルキンゲトリークスは言った。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:以下、<!--▲直接話法--><span style="background-color:#e8e8ff;"> <span style="color:#009900;">«</span> ~ <span style="color:#009900;">»</span> </span> の箇所は、直接話法で記されている。)</span>
*<!--▲直接話法--><span style="background-color:#e8e8ff;"> <span style="color:#009900;">«</span> [[wikt:en:beneficium#Latin|beneficia]] [[wikt:en:habetis#Latin|habetis]], quem [[wikt:en:proditio#Latin|proditionis]] [[wikt:en:insimulatis#Verb|insimulatis]];
**「裏切りだと諸君が糾弾している<small>(私という)</small>者のおかげで得ているのだ。
*<!--➡直接話法--><span style="background-color:#e8e8ff;"> cuius [[wikt:en:opera#Latin|opera]] sine [[wikt:en:vester#Latin|vestro]] [[wikt:en:sanguis#Latin|sanguine]]
**その<small>(私という)</small>者の尽力により、諸君らの流血なしに、
*<!--➡直接話法--><span style="background-color:#e8e8ff;"> tantum [[wikt:en:exercitus#Noun|exercitum]] [[wikt:en:victor#Latin|victorem]] [[wikt:en:fames#Latin|fame]] <u>paene</u> [[wikt:en:consumptus#Latin|consumptum]] [[wikt:en:videtis#Latin|videtis]];
**これほどの軍隊の勝利者<small>〔ローマ人〕</small>を飢えにより、ほとんど滅ぼしたのを諸君は見ているのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:paene は β系写本の記述で、α系写本にはない。)</span>
*<!--➡直接話法--><span style="background-color:#e8e8ff;"> quem [[wikt:en:turpiter#Latin|turpiter]] se ex <u>hac</u> fuga [[wikt:en:recipiens#Latin|recipientem]]
**彼ら<small>〔ローマ人〕</small>が見苦しくもこのような逃亡から退却したところを、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:hac は β系写本の記述で、α系写本にはない。)</span>
*<!--➡直接話法--><span style="background-color:#e8e8ff;"> ne [[wikt:en:aliqua#Pronoun|qua]] [[wikt:en:civitas#Latin|civitas]] suis finibus [[wikt:en:recipiat#Latin|recipiat]],
**<small>(それらの退却したローマ人を)</small>どの部族も自らの領土に受け入れないように、
*<!--➡直接話法--><span style="background-color:#e8e8ff;"> a me [[wikt:en:provisus#Latin|provisum]] est. <span style="color:#009900;">»</span> </span>
**私<small>〔ウェルキンゲトリークス〕</small>により、手配された。」
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===21節===
*<span style="background-color:#ffd;">[[/注解/21節]] {{進捗|00%|2026-05-10}}</span>
;ウェルキンゲトリークスの誠心とアウァーリクムの重要性を確認
:
*<!--❶--><sup>(1)</sup> [[wikt:en:conclamat#Latin|Conclamat]] omnis [[wikt:en:multitudo#Latin|multitudo]]
**群集すべてが雄叫びを上げて、
*et suo [[wikt:en:mos#Latin|more]] [[wikt:en:arma#Latin|armis]] [[wikt:en:concrepat#Latin|concrepat]],
**自分たちの慣習で武具を打ち鳴らす。
*quod facere in eo [[wikt:en:consuerunt#Verb_2|consuerunt]], cuius [[wikt:en:oratio#Latin|orationem]] [[wikt:en:adprobant#Latin|adprobant]];
**<small>(演説した)</small>その者の雄弁に賛同したら、その者に対してそれをすることが常であったのだ。
*summum esse [[wikt:en:Vercingetorix#Latin|Vercingetorigem]] [[wikt:en:dux#Latin|ducem]],
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は最高の将帥であり、
*<u>nec</u> de eius [[wikt:en:fides#Latin|fide]] [[wikt:en:dubitandus#Latin|dubitandum]],
**彼の信義については疑念を抱くべきではなく、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:nec#Latin|nec]] ~, nec …「~でもないし、…でもない」)</span>
*<u>nec</u> [[wikt:en:maior#Latin|maiore]] [[wikt:en:ratio#Latin|ratione]] bellum [[wikt:en:administrari#Latin|administrari]] posse.
**これ以上の作戦で戦争を指導することはできない<small>(と、叫んで武具を打ち鳴らす)</small>。
:
*<!--❷--><sup>(2)</sup> [[wikt:en:statuunt#Latin|Statuunt]], ut decem<sub> (X)</sub> milia hominum [[wikt:en:delectus#Latin|delecta]] ex omnibus [[wikt:en:copiae#Latin|copiis]] in oppidum <u>mittantur</u>,
**<small>(彼らは)</small>すべての軍勢から選り抜かれた兵員1万を<small>(アウァーリクムの)</small>[[w:オッピドゥム|城塞都市]]の中に派遣すると決定する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:mittantur#Latin|mittantur]] だが、<br> β系写本では [[wikt:en:submittantur#Latin|submittantur]] となっている。)</span>
:
*<!--❸--><sup>(3)</sup> nec [[wikt:en:solus#Latin|solis]] [[wikt:en:Bituriges#Latin|Biturigibus]] [[wikt:en:communis#Latin|communem]] [[wikt:en:salus#Latin|salutem]] [[wikt:en:committendus#Latin|committendam]] [[wikt:en:censent#Latin|censent]],
**<small>(ガッリア)</small>共通の安全をビトゥリゲース族だけに託すべきではないと考える。
*quod <u>penes eos</u>, si id oppidum [[wikt:en:retinuissent#Latin|retinuissent]],
**というのは、<u>彼らのもとで</u>、その城塞都市を維持したか否かが、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、<br> 主要写本ω では [[wikt:en:penes#Latin|penes]] eos 「彼らのもとで」だが、<br> オックスフォード写本 ''[[ガリア戦記/注解編/写本と校訂版#Codex_Oxoniensis_Andino|codd. Andino. Oxon.]]'' や ''[[ガリア戦記/注解編/写本と校訂版#Aldus|Aldus]]'' は paene in eo 「ほぼそのことにおいて」としている。)</span>
*[[wikt:en:summa#Latin|summam]] victoriae [[wikt:en:consto#Latin|constare]] [[wikt:en:intellegebant#Latin|intellegebant]].
**勝利の天王山を確かなものにすること、を理解していたからである。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===22節===
*<span style="background-color:#ffd;">[[/注解/22節]] {{進捗|00%|2026-06-01}}</span>
;アウァーリクムの籠城ガッリア勢が坑道戦で攻防に努める
:
*<!--❶--><sup>(1)</sup> [[wikt:en:singularis#Latin|Singulari]] [[wikt:en:miles#Latin|militum]] nostrorum [[wikt:en:virtus#Latin|virtuti]]
**我が方<small>〔ローマ勢〕</small>の兵士の卓越した武勇に、
*[[wikt:en:consilium#Latin|consilia]] [[wikt:en:quisque#Latin|cuiusque]] [[wikt:en:modus#Latin|modi]] [[wikt:en:Galli#Latin|Gallorum]] [[wikt:en:occurrebant#Latin|occurrebant]],
**<small>(敵勢は)</small>ガッリア人のあらゆる流儀の方策で抗戦していた。
*ut est summae [[wikt:en:genus#Latin|genus]] [[wikt:en:sollertia#Latin|sollertiae]]
**確かに<small>(ガッリア人は)</small>このうえなく器用な種族であり、
*atque ad [[wikt:en:omnia#Noun|omnia]] [[wikt:en:imitandus#Latin|imitanda]] et [[wikt:en:efficiendus#Latin|efficienda]], quae ab [[wikt:en:quisque#Latin|quoque]] [[wikt:en:traduntur#Latin|traduntur]], [[wikt:en:aptissimus#Latin|aptissimum]].
**誰かによって教えられることすべてを模倣すること、造り出すことにとても適しているのだ。
:
; 鉄鉱山の土地柄で、坑道戦を展開する
*<!--❷--><sup>(2)</sup> Nam <u>et</u> [[wikt:en:laqueus#Latin|laqueis]] [[wikt:en:falx#Latin|falces]] [[wikt:en:avertebant#Latin|avertebant]],
**すなわち、輪縄で<small>(ローマ勢の)</small>破城鎌をそらし、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:et ~, et …「~でもあり、…でもある」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:破城鎌([[w:en:Falx|falx]])については、右図や[[ガリア戦記 第5巻#42節|第5巻42節]]を参照)</span>
[[画像:Falx_bgiu.png|thumb|right|250px|破城鎌([[w:en:Falx|falx]])の想像画(再掲)]]
[[画像:Doura_Europos_tunnel.jpg|thumb|right|250px|ローマ支配下の城砦跡に残る[[w:坑道|坑道]]の例(シリアの[[w:ドゥラ・エウロポス|ドゥラ・エウロポス]]遺跡)。[[w:サーサーン朝|サーサーン朝]]軍が[[w:坑道戦|坑道戦]]のために掘削したと考えられている。]]
*quas, cum [[wikt:en:destinaverant#Latin|destinaverant]],
**それを縛り付けておいてから、
*[[wikt:en:tormentum#Latin|tormentis]] [[wikt:en:introrsus#Latin|introrsus]] [[wikt:en:reducebant#Latin|reducebant]],
**巻揚げ機で<small>(城塞都市の)</small>内部に引き込んでいたし、
*<u>et</u> [[wikt:en:agger#Latin|aggerem]] [[wikt:en:cuniculus#Latin|cuniculis]] [[wikt:en:subtrahebant#Latin|subtrahebant]],
**<small>(ローマ勢の)</small><ruby><rb>[[w:アッゲル|土塁]]</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby> を[[w:坑道|坑道]]によって陥没させたりもした。
*<u>eo</u> [[wikt:en:scienter#Latin|scientius]]
**<small>(以下の理由により、彼らはそのことに)</small>より習熟しているのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:eo#Pronoun_5|eō]] ~ [[wikt:en:quod#Conjunction|quod]] …「…という理由で~」)</span>
*<u>quod</u> apud eos magnae sunt [[wikt:en:ferraria#Latin|ferrariae]]
**──というのも、彼らのもとには多くの[[w:鉄鉱石|鉄鉱]]山があり、
*atque [[wikt:en:omnis#Latin|omne]] [[wikt:en:genus#Latin|genus]] [[wikt:en:cuniculus#Latin|cuniculorum]] [[wikt:en:notus#Latin|notum]]
**坑道のあらゆる類いが知られていて
*atque [[wikt:en:usitatus#Latin|usitatum]] est.
**慣れていただけに<small>(習熟しているのだ)</small>。──
:
; アウァーリクムの全周に防御のための櫓を建てる
*<!--❸--><sup>(3)</sup> [[wikt:en:totus#Latin|Totum]] autem [[wikt:en:murus#Latin|murum]] ex omni parte
**他方で、城壁の全体をあらゆる方向から、
*[[wikt:en:turris#Latin|turribus]] [[wikt:en:contabulaverant#Latin|contabulaverant]]
**<ruby><rb>[[w:攻城塔|攻城櫓]]</rb><rp>(</rp><rt>トゥッリス</rt><rp>)</rp></ruby>を<small>(何層にも)</small>構築しておいて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:動詞 [[wikt:en:contabulo#Latin|contabulare]] は「板張りする」。[[内乱記_第2巻#9節|『内乱記』第2巻9節]]には [[wikt:en:contabulatio#Latin|contabulatio]]「床板張り」という単語が出て来る。)</span>
*atque has [[wikt:en:corium#Latin|coriis]] [[wikt:en:intexerant#Latin|intexerant]].
**これらを皮革で覆っていた。
:
*<!--❹--><sup>(4)</sup> Tum [[wikt:en:creber#Latin|crebris]] [[wikt:en:diurnus#Latin|diurnis]] [[wikt:en:nocturnus#Latin|nocturnis]]<nowiki>que</nowiki> [[wikt:en:eruptio#Latin|eruptionibus]]
**それから、たびたび昼間も夜間も出撃して、
*aut [[wikt:en:agger#Latin|aggeri]] [[wikt:en:ignis#Latin|ignem]] [[wikt:en:inferebant#Latin|inferebant]]
**あるいは土塁に火災を引き起こしたり、
*aut [[wikt:en:miles#Latin|milites]] [[wikt:en:occupatus#Latin|occupatos]] in [[wikt:en:opus#Latin|opere]] [[wikt:en:adoriebantur#Latin|adoriebantur]],
**あるいは工事に従事している<small>(ローマ人)</small>兵士たちを襲撃したりした。
[[画像:University_of_Queensland_Pitch_drop_experiment-white_bg.jpg|thumb|right|200px|<ruby><rb>[[w:ピッチ (樹脂)|樹脂]]</rb><rp>(</rp><rt>ピッチ</rt><rp>)</rp></ruby>の滴下実験の様子(豪州[[w:クイーンズランド大学|クイーンズランド大学]])。[[w:木材|木材]]を密閉加熱すると[[w:木炭|木炭]]が得られるが、その残り物から[[w:乾留液#木タール|木タール]]を[[w:蒸留|蒸留]]させた残り<ruby><rb>滓</rb><rp>(</rp><rt>かす</rt><rp>)</rp></ruby>がピッチである。樹木から得られるピッチは、黒色で[[w:粘度|粘っこく]]、高温で燃焼する。中世ヨーロッパでは城砦の防衛に使用され、城壁に近づく敵の上から熱したピッチを注いで焼死させたりしたという([[w:fr:Poix (matière)|fr:poix]])。]]
*et nostrarum [[wikt:en:turris#Latin|turrium]] [[wikt:en:altitudo#Latin|altitudinem]],
**我が方<small>〔ローマ勢〕</small>の[[w:攻城塔|攻城櫓]]の高さを、
*[[wikt:en:quantum#Latin|quantum]] has [[wikt:en:cotidianus#Latin|cotidianus]] agger [[wikt:en:expresserat#Latin|expresserat]],
**毎日のようにこれらを<small>(ローマ側の)</small>土塁が押し出した分だけ、
*[[wikt:en:commissus#Latin|commissis]] suarum [[wikt:en:turris#Latin|turrium]] [[wikt:en:malus#Noun_5|malis]] [[wikt:en:adaequabant#Latin|adaequabant]],
**自分たち<small>〔ガッリア勢〕</small>の櫓を、柱を組み立てることにより、<small>(ローマ側の櫓の高さと)</small>等しくしようとした。
:
*<!--❺--><sup>(5)</sup> et [[wikt:en:apertus#Latin|apertos]] [[wikt:en:cuniculus#Latin|cuniculos]]
**<small>(ローマ勢が掘削した)</small>坑道の露出したところを
*[[wikt:en:praeustus#Latin|praeusta]] et [[wikt:en:praeacutus#Latin|praeacuta]] [[wikt:en:materia#Latin|materia]]
**先端を焼いて尖らせた木材や、
*et [[wikt:en:pix#Latin|pice]] [[wikt:en:fervefactus#Latin|fervefacta]]
**熱した<ruby><rb>[[w:ピッチ (樹脂)|樹脂]]</rb><rp>(</rp><rt>ピッチ</rt><rp>)</rp></ruby>や、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:pix は<ruby><rb>[[w:歴青|瀝青]]</rb><rp>(</rp><rt>れきせい</rt><rp>)</rp></ruby>と訳されることもあるが、とくに[[w:ピッチ (樹脂)|ピッチ]]を指す<ref>[https://kotobank.jp/word/%E6%9C%A8%E3%81%9F%E3%83%BC%E3%82%8B-3173189 木タール] などを蒸留したあとに残る黒色の物質。</ref>。<br> [[w:歴青|瀝青]]は「ビチューメン」ともいい、ラテン語の [[wikt:en:bitumen#Latin|bitūmen]] に由来する。<br> [[w:ピッチ (樹脂)|ピッチ]]([[w:en:Pitch (resin)|Pitch]])は、ラテン語の [[wikt:en:pix#Latin|pix]] に由来する。)</span>
*et [[wikt:en:maximus#Latin|maximi]] [[wikt:en:pondus#Latin|ponderis]] [[wikt:en:saxum#Latin|saxis]] [[wikt:en:morabantur#Etymology_1|morabantur]]
**たいへんな重さの岩石で、<small>(ローマ勢の掘削を)</small>滞らせたり、
*[[wikt:en:moenia#Latin|moenibus]]<nowiki>que</nowiki> [[wikt:en:adpropinquo#Latin|adpropinquare]] [[wikt:en:prohibebant#Latin|prohibebant]].
**<small>(ローマ勢が)</small>城壁に接近することを<small>(ガッリア勢が)</small>妨げたりしていた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===23節===
{{Commons|Category:Murus gallicus|Murus gallicus}}
*<span style="background-color:#ffd;">[[/注解/23節]] {{進捗|00%|2026-06-14}}</span>
;ガッリア式城壁の構造
:
*<!--❶--><sup>(1)</sup> [[wikt:en:murus#Latin|Muri]] autem omnes [[wikt:en:Gallicus#Latin|Gallici]] hac fere [[wikt:en:forma#Latin|forma]] sunt.
**ところで、ガッリアの<ruby><rb>城壁</rb><rp>(</rp><rt>ムルス</rt><rp>)</rp></ruby>のすべては、ほぼ以下のような形態である。
:
; 木材を2ペースずつ等間隔で離して、ずっと並べていく
*<u>Trabes</u> [[wikt:en:derectus#Latin|derectae]] [[wikt:en:perpetuus#Latin|perpetuae]] <u>in longitudinem</u>
**<u><ruby><rb>木材</rb><rp>(</rp><rt>トラプス</rt><rp>)</rp></ruby></u>が<small>(城壁の)</small><u><ruby><rb>長手方向</rb><rp>(</rp><rt>ロンギトゥードー</rt><rp>)</rp></ruby></u>に、<small>(垂直に)</small>真っ直ぐに、ずっと続いて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:trabs#Latin|trabes]] は、とくに梁のような水平材を指していると思われる。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:in [[wikt:en:longitudo#Latin|longitudinem]] は、ここでは、城壁に沿った長手方向を指す。)</span>
[[画像:Murus gallicus de Lyon Fourvière - Maquette de Nicolas Hirsch - Service Archéologique de la Ville de Lyon - Détail structure.jpg|thumb|right|300px|ガッリア式城壁の[[w:ジオラマ|ジオラマ]](仏[[w:リヨン|リヨン市]]考古学局)。木材を約60cmの間隔で並べる。]]
*[[wikt:en:par#Latin|paribus]] [[wikt:en:intervallum#Latin|intervallis]], [[wikt:en:distans#Latin|distantes]] inter se [[wikt:en:binus#Latin|binos]] [[wikt:en:pes#Latin|pedes]],
**等間隔で、互いに2<u>ペース</u>ずつ離れて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ペース|ペース]]は約29.6cmで、2ペースは約60 cm弱。)</span>
*in [[wikt:en:solum#Latin|solo]] [[wikt:en:conlocantur#Latin|conlocantur]].
**<ruby><rb>地面</rb><rp>(</rp><rt>ソルム</rt><rp>)</rp></ruby>に配置される。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:右の画像を参照。)</span>
:
; 木材をつなぎ合わせ、土砂を埋めて、石材をかぶせる
[[画像:2018 Rheinisches Landesmuseum Trier, Keltischer Wehrmauer.jpg|thumb|right|300px|同じく城壁のジオラマ(独[[w:トリーア|トリーア市]])。]]
*<!--❷--><sup>(2)</sup> [[wikt:en:hae#Latin|Hae]] [[wikt:en:revinciuntur#Latin|revinciuntur]] [[wikt:en:introrsus#Latin|introrsus]]
**これら<small>〔木材〕</small>は、内側で緊結されて、
**:<span style="color:#009900;">(訳注:明瞭な説明ではなく、肝心な記述が欠落している。<br> 上記の2ペースずつ等間隔で並べられた平行な木材は、<br> 節末で述べられるような40ペースの長い木材によって<br> 井桁状に組み合わされて、鉄の釘で固定されたようである。<br> 右上と右のジオラマの画像を参照。)</span>
*et [[wikt:en:multus#Latin|multo]] [[wikt:en:agger#Latin|aggere]] [[wikt:en:vestiuntur#Latin|vestiuntur]];
**多くの<ruby><rb>土砂</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby>で覆われる。
*ea autem, quae [[wikt:en:diximus#Verb|diximus]], [[wikt:en:intervallum#Latin|intervalla]]
**さらに、前述した<small>(2ペースの)</small>間隔には、
*[[wikt:en:grandis#Latin|grandibus]] in [[wikt:en:frons#Latin:_forehead|fronte]] [[wikt:en:saxum#Latin|saxis]] <u>efferciuntur</u>.
**前面に大きな<ruby><rb>石塊</rb><rp>(</rp><rt>サクスム</rt><rp>)</rp></ruby>が詰め込まれる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、ρ系写本・写本V では [[wikt:en:efferciuntur#Latin|efferciuntur]] と表記され、<br> α系写本・写本T では [[wikt:en:effarciuntur#Latin|effarciuntur]] と表記されるが、<br> [[w:母音弱化|母音弱化]]の語形である前者の方が、共和制末期のカエサルが用いたと考えられる。)</span>
[[画像:Keltenmauer.gif|thumb|right|280px|ガッリア式城壁の構成図(上が側面、中が上面、下が前面)。木材を水平な井桁状に並べて[[w:釘|釘]]で緊結し、土砂で覆って何層にも重ね、前面には石をはめ込む。井桁状の骨組によって[[w:破城槌|破城槌]]など横からの力(水平荷重)に耐えられるように工夫されている。]]
:
*<!--❸--><sup>(3)</sup> His [[wikt:en:conlocatus#Latin|conlocatis]] et [[wikt:en:coagmentatus#Latin|coagmentatis]]
**<u>これら</u>が配置されて結び合わされると、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:<u>これら</u> とは、上述の木材や石材のこと。)</span>
*alius [[wikt:en:insuper#Latin|insuper]] [[wikt:en:ordo#Latin|ordo]] [[wikt:en:additur#Latin|additur]],
**上に別の<ruby><rb>階層</rb><rp>(</rp><rt>オルドー</rt><rp>)</rp></ruby>が付け加えられる。
*ut idem illud [[wikt:en:intervallum#Latin|intervallum]] [[wikt:en:servetur#Latin|servetur]],
**その同じ<small>(2ペースの)</small>間隔が保たれて、
*neque inter se [[wikt:en:contingant#Latin|contingant]] [[wikt:en:trabs#Latin|trabes]],
**かつ<ruby><rb>木材</rb><rp>(</rp><rt>トラプス</rt><rp>)</rp></ruby>が互いに接触しないように、
**:<span style="color:#009900;">(訳注:上下の層の水平材どうしが接触しないように、<br> 互い違いに並べているようである。)</span>
*sed [[wikt:en:par#Latin|paribus]] [[wikt:en:intermissus#Latin|intermissae]] [[wikt:en:spatium#Latin|spatiis]] [[wikt:en:singulus#Latin|singulae]]
**けれども、等間隔で間をあけられたそれぞれ<small>(の木材)</small>は、
*[[wikt:en:singulus#Latin|singulis]] [[wikt:en:saxum#Latin|saxis]] [[wikt:en:interiectus#Latin|interiectis]]
**それぞれの<ruby><rb>石塊</rb><rp>(</rp><rt>サクスム</rt><rp>)</rp></ruby>が間に挟まれることによって、
*[[wikt:en:arte#Adverb|arte]] [[wikt:en:contineantur#Latin|contineantur]].
**緊密に連結される。
:
*<!--❹--><sup>(4)</sup> Sic [[wikt:en:deinceps#Latin|deinceps]] omne [[wikt:en:opus#Latin|opus]] [[wikt:en:contexitur#Latin|contexitur]], [[wikt:en:dum#Latin|dum]] [[wikt:en:iustus#Latin|iusta]] [[wikt:en:murus#Latin|muri]] [[wikt:en:altitudo#Latin|altitudo]] [[wikt:en:expleatur#Latin|expleatur]].
**このように、<ruby><rb>城壁</rb><rp>(</rp><rt>ムルス</rt><rp>)</rp></ruby>の十分な高さが満たされるまで、すべての<ruby><rb>工作物</rb><rp>(</rp><rt>オプス</rt><rp>)</rp></ruby>が続けて組み立てられる。
[[画像:Bibracte_murus_gallicus1.jpg|thumb|right|300px|ガッリア式城壁の[[w:ジオラマ|ジオラマ]](仏[[w:ビブラクテ|ビブラクテ]]遺跡のケルト文明博物館)。この構造形式はカエサルの記述から「[[w:ムルス・ガリクス|ムルス・ガリクス]](ガッリア壁)」と呼ばれるが、ガッリアに限らず、[[w:鉄器時代|鉄器時代]]末期すなわちBC1世紀頃の後期[[w:ラ・テーヌ文化|ラ・テーヌ文化]]が及んだ各地に遺構として残る。木材どうしを緊結するために数百トンもの[[w:鉄|鉄]]の[[w:釘|釘]]を用いているのが大きな特徴で、[[w:鉄#製錬|製鉄]]・[[w:鋳造|鋳造]]技術の発達を示す。]]
:
; ガッリア式城壁は、外観が見事で、城塞都市の防御にも有益
:<span style="color:#009900;font-family:Times New Roman;">(訳注:以下、cum ~ tum … の構文「~だけでなく、また…でもある」。)</span>
*<!--❺--><sup>(5)</sup> Hoc <u>cum</u> in [[wikt:en:species#Latin|speciem]] [[wikt:en:varietas#Latin|varietatem]]<nowiki>que</nowiki> [[wikt:en:opus#Latin|opus]] [[wikt:en:deformis#Latin|deforme]] non est [[wikt:en:alternus#Latin|alternis]] [[wikt:en:trabs#Latin|trabibus]] ac [[wikt:en:saxum#Latin|saxis]],
**<ruby><rb>この</rb><rp>(</rp><rt>ホク</rt><rp>)</rp></ruby><ruby><rb>工作物</rb><rp>(</rp><rt>オプス</rt><rp>)</rp></ruby>は、互い違いの<ruby><rb>木材</rb><rp>(</rp><rt>トラプス</rt><rp>)</rp></ruby>と<ruby><rb>石塊</rb><rp>(</rp><rt>サクスム</rt><rp>)</rp></ruby>により、変化に富む外観において不格好でなく、
*quae [[wikt:en:rectus#Latin|rectis]] [[wikt:en:linea#Latin|lineis]] suos [[wikt:en:ordo#Latin|ordines]] [[wikt:en:servant#Latin|servant]],
**──それら<small>〔木材と石〕</small>は真っ直ぐな線により、その<ruby><rb>階層</rb><rp>(</rp><rt>オルドー</rt><rp>)</rp></ruby>を保っているのだが──
*<u>tum</u> ad [[wikt:en:utilitas#Latin|utilitatem]] et [[wikt:en:defensio#Latin|defensionem]] [[wikt:en:urbs#Latin|urbium]]
**同様に、都市の防御の有益性のためにも、
*summam [[wikt:en:habet#Latin|habet]] [[wikt:en:opportunitas#Latin|opportunitatem]],
**きわめて好都合となっている。
*quod et ab [[wikt:en:incendio#Latin|incendio]] [[wikt:en:lapis#Latin|lapis]] et ab [[wikt:en:aries#Latin|ariete]] [[wikt:en:materia#Latin|materia]] [[wikt:en:defendit#Latin|defendit]],
**──というのは、<ruby><rb>石材</rb><rp>(</rp><rt>ラピス</rt><rp>)</rp></ruby>が火災からも、<ruby><rb>材木</rb><rp>(</rp><rt>マーテリア</rt><rp>)</rp></ruby>が<ruby><rb>[[w:破城槌|破城槌]]</rb><rp>(</rp><rt>はじょうつい</rt><rp>)</rp></ruby>からも、防護しており、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:et ~ et …「~でもあり、…でもある」)</span>
*quae [[wikt:en:perpetuus#Latin|perpetuis]] [[wikt:en:trabs#Latin|trabibus]] [[wikt:en:pes#Latin|pedes]] [[wikt:en:quadragenus#Latin|quadragenos]] [[wikt:en:plerumque#Adverb|plerumque]] [[wikt:en:introrsus#Latin|introrsus]] [[wikt:en:revinctus#Latin|revincta]]
**それ<small>〔短手方向の材木〕</small>は、たいてい40<u>ペース</u>にわたって<small>(長手方向に)</small>続く<ruby><rb>木材</rb><rp>(</rp><rt>トラプス</rt><rp>)</rp></ruby>により内部で緊結されており、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ペース|ペース]]は約29.6cmで、40ペースは約12メートル。)</span>
*neque [[wikt:en:perrumpi#Latin|perrumpi]] neque [[wikt:en:distrahi#Latin|distrahi]] potest.
**突破されることも、引きはがされることもできないからである。──
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===24節===
[[画像:Avaricum_westpoint_july_2006.jpg|thumb|right|350px|[[w:アウァリクム包囲戦|アウァーリクム攻略戦]]の[[w:ジオラマ|ジオラマ]]<small>([[w:陸軍士官学校 (アメリカ合衆国)|米国陸軍士官学校]]博物館)</small>。ローマ軍の<ruby><rb>[[w:アッゲル|土塁]]</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby>は、城壁(奥)の手前に材木と土砂を積み重ねた構築物が築き上げられ、左右の土手道をそれぞれ4層の[[w:攻城塔|攻城櫓]]が城壁に迫る。土塁の周辺には<ruby><rb>[[w:ウィネア|工作小屋]]</rb><rp>(</rp><rt>ウィネア</rt><rp>)</rp></ruby>(vinea)を多数つないだ通路(坑道)が延びている。手前には2台の<ruby><rb>投射機</rb><rp>(</rp><rt>スコルピオ</rt><rp>)</rp></ruby>が見える。]]
*<span style="background-color:#ffd;">[[/注解/24節]] {{進捗|00%|2026-06-15}}</span>
;ローマ勢が徹夜の土塁工事、籠城ガッリア勢の攻勢
:
; ローマ勢が、25日間で大がかりな攻城設備を構築する
*<!--❶--><sup>(1)</sup> His [[wikt:en:tot#Latin|tot]] rebus [[wikt:en:impeditus#Latin|impedita]] [[wikt:en:oppugnatio#Latin|oppugnatione]]
**これら多くの事情により攻囲が妨げられて、
*[[wikt:en:miles#Latin|milites]],
**兵士たちは、
*cum [[wikt:en:totus#Etymology_1|toto]] tempore <u>luto</u> [[wikt:en:frigus#Latin|frigore]] et [[wikt:en:adsiduus#Latin|adsiduis]] [[wikt:en:imber#Latin|imbribus]] <u>tardarentur</u>,
**常時、<ruby><rb><u>泥土</u></rb><rp>(</rp><rt>ルトゥム</rt><rp>)</rp></ruby>、寒さと絶え間ない<ruby><rb>雨嵐</rb><rp>(</rp><rt>イムベル</rt><rp>)</rp></ruby>によって遅らせられていたが、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の [[wikt:en:lutum#Latin|luto]] は、β系写本の記述で、<br> α系写本にはない。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の二つ目は、<br> χ系・β系写本では [[wikt:en:tardarentur#Latin|tardarentur]] だが、<br> 写本B・M・Sでは traderentur、<br> 写本L・Nでは terrerentur などとなっている。)</span>
*tamen [[wikt:en:continens#Adjective|continenti]] [[wikt:en:labor#Latin|labore]] omnia haec [[wikt:en:superaverunt#Latin|superaverunt]]
**しかしながら、絶え間ない労働によってこれらすべてに打ち克って、
*et diebus XXV<small> ([[wikt:en:quinque#Latin|quinque]] et [[wikt:en:viginti#Latin|viginti]])</small>
**25日間で、
*[[wikt:en:agger#Latin|aggerem]] [[wikt:en:latus#Latin:_wide|latum]] [[wikt:en:pes#Latin|pedes]] CCCXXX<small> ([[wikt:en:trecenti#Latin|trecenti]] [[wikt:en:triginta#Latin|triginta]])</small>, [[wikt:en:altus#Latin|altum]] pedes LXXX<small> ([[wikt:en:octoginta#Latin|octoginta]])</small> [[wikt:en:exstruxerunt#Latin|exstruxerunt]].
**幅330<u>ペース</u>、高さ80<u>ペース</u>の<ruby><rb>[[w:アッゲル|土塁]]</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby>を築き上げた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ペース|ペース]]は約29.6cmで、幅330ペースは約98メートル。高さ80ペースは約24メートル。)</span>
:
; アウァーリクムに籠城するガッリア勢が、攻囲するローマ勢の土塁に夜襲をしかける
*<!--❷--><sup>(2)</sup> Cum is [[wikt:en:murus#Latin|murum]] hostium paene [[wikt:en:contingeret#Latin|contingeret]],
**それ<small>〔ローマ側の土塁〕</small>が敵の城壁にほとんど接しようとしていたとき、
*et Caesar ad [[wikt:en:opus#Latin|opus]] [[wikt:en:consuetudo#Latin|consuetudine]] [[wikt:en:excubaret#Latin|excubaret]]
**かつ、カエサルが習慣により作業のそばで寝ずの番をしていて、
*[[wikt:en:miles#Latin|milites]]<nowiki>que</nowiki> [[wikt:en:hortaretur#Latin|hortaretur]], ne [[wikt:en:aliquod#Latin|quod]] [[wikt:en:omnino#Latin|omnino]] [[wikt:en:tempus#Latin|tempus]] ab [[wikt:en:opus#Latin|opere]] [[wikt:en:intermitteretur#Latin|intermitteretur]],
**いかなる時も作業がまったく中断されないように、と兵士たちを励ましていたときに、
*paulo ante tertiam [[wikt:en:vigilia#Latin|vigiliam]]
**第三夜警時の少し前に、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:第三夜警時は、真夜中から日の出までの時間帯の前半。「未明」<br> [[古代ローマの不定時法#夜警時|#夜警時]] を参照。)</span>
*est [[wikt:en:animadversus#Participle|animadversum]] [[wikt:en:fumo#Latin|fumare]] [[wikt:en:agger#Latin|aggerem]],
**土塁に煙が上がっていることが気付かれた。
*quem [[wikt:en:cuniculus#Latin|cuniculo]] hostes [[wikt:en:succenderant#Latin|succenderant]];
**<small>(その土塁を)</small>[[w:坑道|坑道]]によって敵たちが焼き討ちしていたものである。
:
*<!--❸--><sup>(3)</sup> [[wikt:en:idem#Latin|eodem]]<nowiki>que</nowiki> [[wikt:en:tempus#Latin|tempore]]
**そして同時に、
*[[wikt:en:totus#Latin|toto]] [[wikt:en:murus#Latin|muro]] [[wikt:en:clamor#Latin|clamore]] [[wikt:en:sublatus#Latin:_raised|sublato]],
**<small>(アウァーリクムの)</small>城壁全体で雄叫びが上がって、
*duabus portis ab [[wikt:en:uterque#Latin|utroque]] [[wikt:en:latus#Latin:_side|latere]] [[wikt:en:turris#Latin|turrium]]
**二つの城門より、<small>(ローマ勢の)</small>[[w:攻城塔|攻城櫓]]の両方の側面から
*[[wikt:en:eruptio#Latin|eruptio]] [[wikt:en:fiebat#Latin|fiebat]].
**<small>(ガッリア勢による)</small>突撃がなされていた。
:
*<!--❹--><sup>(4)</sup> Alii [[wikt:en:fax#Latin|faces]] atque [[wikt:en:aridus#Latin|aridam]] <u>materiam</u> de [[wikt:en:murus#Latin|muro]] in [[wikt:en:agger#Latin|aggerem]] [[wikt:en:eminus#Latin|eminus]] [[wikt:en:iaciebant#Latin|iaciebant]],
**<small>(ガッリア勢の)</small>他の者たちは、<ruby><rb>[[w:たいまつ|松明]]</rb><rp>(</rp><rt>たいまつ</rt><rp>)</rp></ruby>および乾いた材木を、城壁から<small>(ローマ側の)</small>土塁に、遠くから投げ込んで、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、β系写本では [[wikt:en:materiam#Latin|materiam]] だが、<br> α系写本では [[wikt:en:materiem#Latin|materiem]] となっている。<br> 文法学者[[w:カエサレアのプリスキアヌス|プリスキアーヌス]]は、カエサルの文法書 "De Analogia" について materiam と引用している。)</span>
*[[wikt:en:pix#Latin|picem]] [[wikt:en:reliquus#Latin|reliquas]]<nowiki>que</nowiki> res, quibus [[wikt:en:ignis#Latin|ignis]] [[wikt:en:excitari#Latin|excitari]] potest, [[wikt:en:fundebant#Latin|fundebant]],
**<ruby><rb>[[w:ピッチ (樹脂)|樹脂]]</rb><rp>(</rp><rt>ピッチ</rt><rp>)</rp></ruby>や、火を燃え立たせられるほかのもの<small>〔可燃物〕</small>を注ぎ込んだ。
*ut, [[wikt:en:quo#Latin:_where|quo]] primum <u>curreretur</u> aut cui rei [[wikt:en:ferretur#Latin|ferretur]] [[wikt:en:auxilium#Latin|auxilium]],
**それで、まずどこに駆け付けるのか、あるいはどの事態に支援がなされるのか、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:curreretur#Latin|curreretur]] だが、<br> β系写本では [[wikt:en:occurreretur#Latin|occurreretur]] となっている。)</span>
*vix [[wikt:en:ratio#Latin|ratio]] [[wikt:en:iniri#Latin|iniri]] posset.
**<small>(ローマ兵には)</small>ほとんど分別され得なかった。
:
*<!--❺--><sup>(5)</sup> Tamen, quod [[wikt:en:institutum#Latin|instituto]] Caesaris <u>semper duae</u> [[wikt:en:legio#Latin|legiones]] pro [[wikt:en:castra#Latin|castris]] [[wikt:en:excubabant#Latin|excubabant]]
**しかしながら、カエサルの定めにより常に2個[[w:ローマ軍団|軍団]]が陣営の前に寝ずの番をしていたので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本の語順では semper duae だが、<br> β系写本の語順では duae semper となっている。)</span>
*[[wikt:en:plus#Latin|plures]]<nowiki>que</nowiki> [[wikt:en:partitus#Latin|partitis]] [[wikt:en:tempus#Latin|temporibus]] erant in [[wikt:en:opus#Latin|opere]],
**かつ、より多くの者たちが時間を割り当てられて作業していたので、
*celeriter [[wikt:en:factus#Latin|factum]] est,
**<small>(防戦は)</small>速やかになされた。
*ut <u>alii</u> [[wikt:en:eruptio#Latin|eruptionibus]] [[wikt:en:resisterent#Latin|resisterent]],
**ある者たちは<small>(ガッリア勢の)</small>突撃に抵抗しており、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:alii ~ alii …「~する者もいれば、…する者もいる。」)</span>
*<u>alii</u> [[wikt:en:turris#Latin|turres]] [[wikt:en:reducerent#Latin|reducerent]]
**別のある者たちは[[w:攻城塔|攻城櫓]]を引き戻して、
*[[wikt:en:agger#Latin|aggerem]]<nowiki>que</nowiki> [[wikt:en:interscinderent#Latin|interscinderent]],
**土塁を<small>(城壁側から)</small>切り離していた。
*omnis vero ex [[wikt:en:castra#Latin|castris]] [[wikt:en:multitudo#Latin|multitudo]] ad [[wikt:en:restinguendum#Verb|restinguendum]] [[wikt:en:concurreret#Latin|concurreret]].
**さらに陣営から大勢の皆が、消火するために急ぎ集まっていた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===25節===
*<span style="background-color:#ffd;">[[/注解/25節]] {{進捗|00%|2026-06-29}}</span>
;籠城ガッリア勢が必死の防戦
:
*<!--❶--><sup>(1)</sup> Cum in omnibus locis, <u>[[wikt:en:consumptus#Latin|consumpta]] iam reliqua parte noctis</u>, [[wikt:en:pugnaretur#Latin|pugnaretur]],
**<u>すでに夜も明けて</u>、至る所で戦われていたときに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の直訳は「すでに夜の残りの部分も費やされて」。)</span>
*[[wikt:en:semper#Latin|semper]]<nowiki>que</nowiki> hostibus [[wikt:en:spes#Latin|spes]] [[wikt:en:victoria#Latin|victoriae]] [[wikt:en:redintegraretur#Latin|redintegraretur]],
**かつ、常に敵たちにとって勝利の希望が蘇っており、
*<u>eo magis, quod</u> [[wikt:en:deustus#Latin|deustos]] [[wikt:en:pluteus#Latin|pluteos]] [[wikt:en:turris#Latin|turrium]] [[wikt:en:videbant#Latin|videbant]] nec facile [[wikt:en:adire#Latin|adire]] [[wikt:en:apertus#Latin|apertos]] ad [[wikt:en:auxiliandum#Verb|auxiliandum]] [[wikt:en:animadvertebant#Latin|animadvertebant]],
**<span style="font-family:Times New Roman;font-size:11pt;">[[w:攻城塔|攻城櫓]]の<ruby><rb>障壁</rb><rp>(</rp><rt>プルテウス</rt><rp>)</rp></ruby>が<ruby><rb>焼き落された</rb><rp>(</rp><rt>デウストゥス</rt><rp>)</rp></ruby>のを見ていて、<ruby><rb>身を曝した者</rb><rp>(</rp><rt>アペルトゥス</rt><rp>)</rp></ruby>たちが救援のために容易に近づけないのに気付いていた<u>のでなおさらだったが</u>、</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:eo magis quod|eo magis quod]] ~ 「~なので、その分だけ、より一層」。[[ガリア戦記 第3巻#14節|第3巻14節]]も参照。)</span>
*[[wikt:en:semper#Latin|semper]]<nowiki>que</nowiki> ipsi [[wikt:en:recens#Adjective|recentes]] [[wikt:en:defessus#Latin|defessis]] [[wikt:en:succederent#Latin|succederent]]
**常に彼ら自身<small>〔籠城ガッリア勢〕</small>は新たな者たちが疲れ果てた者たちに交代しており、
*[[wikt:en:omnis#Latin|omnem]]<nowiki>que</nowiki> Galliae [[wikt:en:salus#Latin|salutem]] <u>in illo [[wikt:en:vestigium#Latin|vestigio]] temporis [[wikt:en:positus#Participle|positam]] <span style="color:#009900;"><small>(esse)</small></span></u> [[wikt:en:arbitrarentur#Latin|arbitrarentur]],
**ガッリアのすべての安全が、<u>その瞬間にかかっている</u>と思われていたので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の直訳は「その時の足跡(瞬間)に置かれている」。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:以上の cum ~ arbitrarentur, が状況や理由を説明する副文で、以下が主文となっている。)</span>
*[[wikt:en:accidit#Etymology_1|accidit]] [[wikt:en:inspectans#Latin|inspectantibus]] nobis,
**我が方<small>〔ローマ勢〕</small>が見ているなかで起こったのは、
*[[wikt:en:quod#Pronoun|quod]] [[wikt:en:dignus#Latin|dignum]] [[wikt:en:memoria#Latin|memoria]] [[wikt:en:visus#Participle|visum]] [[wikt:en:praetereundus#Latin|praetereundum]] non [[wikt:en:existimavimus#Latin|existimavimus]].
**記憶に値すると思われたことを<small>(我がローマ勢が)</small>見過ごすべきではないと考えていたことである。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:この主文の主語を省略せずに記せば、以下のようになる。<br> [id], quod dignum memoria visum [esse] praetereundum [esse] non existimavimus.)</span>
[[画像:048_Conrad_Cichorius,_Die_Reliefs_der_Traianssäule,_Tafel_XLVIII_(Ausschnitt 01).jpg|thumb|right|250px|<ruby><rb>[[w:スコルピオ|投射機]]</rb><rp>(</rp><rt>スコルピオー</rt><rp>)</rp></ruby>を操作する[[w:ダキア人|ダキア人]]の彫刻([[w:トラヤヌスの記念柱|トラヤヌス帝の記念柱]]に刻まれた[[w:レリーフ|レリーフ]])。]]
[[画像:Balliste_fireing.jpg|thumb|right|250px|<ruby><rb>[[w:スコルピオ|投射機]]</rb><rp>(</rp><rt>スコルピオー</rt><rp>)</rp></ruby>([[w:en:Scorpio (dart-thrower)|Scorpio]])の現代における復元。]]
:
*<!--❷--><sup>(2)</sup> [[wikt:en:quidam#Determiner|Quidam]] ante portam oppidi [[wikt:en:Gallus#Noun|Gallus]], <u>qui</u>
**城塞都市の城門の前にいた、ある<small>(1人の)</small>ガッリア人が、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の qui は、β系写本の記述で、α系写本にはない。)</span>
*per [[wikt:en:manus#Latin:_hand|manus]] [[wikt:en:sebum#Latin|sebi]] ac [[wikt:en:pix#Latin|picis]] [[wikt:en:traditus#Participle|traditas]] [[wikt:en:glaeba#Latin|glaebas]]
**手から手へと渡された<ruby><rb>獣脂</rb><rp>(</rp><rt>セーブム</rt><rp>)</rp></ruby>や<ruby><rb>[[w:ピッチ (樹脂)|樹脂]]</rb><rp>(</rp><rt>ピッチ</rt><rp>)</rp></ruby>の塊を、
*in [[wikt:en:ignis#Latin|ignem]] <u>e regione</u> turris [[wikt:en:proiciebat#Latin|proiciebat]]:
**攻城櫓の正面にある火炎の中に投げ込んでいたが、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:e_regione#Latin|ē regiōne]]「まっすぐに」「~の真向かいに」。)</span>
*[[wikt:en:scorpio#Latin|scorpione]] ab [[wikt:en:latus#Latin:_side|latere]] [[wikt:en:dexter#Latin|dextro]] [[wikt:en:traiectus#Participle|traiectus]]
**<ruby><rb>[[w:スコルピオ|投射機]]</rb><rp>(</rp><rt>スコルピオー</rt><rp>)</rp></ruby>で右の横腹を射られて、
*[[wikt:en:exanimatus#Latin|exanimatus]]<nowiki>que</nowiki> [[wikt:en:concidit#Verb|concidit]].
**息絶えて倒れた。
:
*<!--❸--><sup>(3)</sup> Hunc ex [[wikt:en:proximus#Noun|proximis]] unus [[wikt:en:iacens#Latin|iacentem]] [[wikt:en:transgressus#Latin|transgressus]]
**彼が倒れているのを、すぐ近くの者たちのうちの1人が乗り越えて、
*[[wikt:en:idem#Latin|eodem]] illo [[wikt:en:munus#Latin|munere]] [[wikt:en:fungebatur#Latin|fungebatur]];
**その同じ<ruby><rb>任務</rb><rp>(</rp><rt>ムーヌス</rt><rp>)</rp></ruby>を果たしていた。
*[[wikt:en:idem#Latin|Eadem]] [[wikt:en:ratio#Latin|ratione]] [[wikt:en:ictus#Noun_4|ictu]] [[wikt:en:scorpio#Latin|scorpionis]] [[wikt:en:exanimatus#Latin|exanimato]]
**<small>(その第2の者が)</small>同様に<ruby><rb>[[w:スコルピオ|投射機]]</rb><rp>(</rp><rt>スコルピオー</rt><rp>)</rp></ruby>の射撃で息絶えさせられると
*alteri [[wikt:en:successit#Latin|successit]] tertius
**<small>(息絶えた)</small>第2の者に第3の者が代わって、
*et tertio quartus,
**<small>(さらに)</small>第3の者に第4の者が<small>(代わった)</small>。
: <!-- [[wikt:en:| -->
*<!--❹--><sup>(4)</sup> <u>nec prius</u> ille est a [[wikt:en:propugnator#Latin|propugnatoribus]] [[wikt:en:vacuus#Latin|vacuus]] [[wikt:en:relictus#Participle|relictus]] locus
**防戦者たちは、持ち場を放棄することがなかった。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:直訳は「その場(ille locus)は、防戦者たちによって空<small>〔無人〕</small>にして置かれることがなかった。」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:nec [[wikt:en:prius#Adverb|prius]] ~ [[wikt:en:quam#Conjunction|quam]] …「…するまでは~しなかった」)</span>
*<u>quam</u> [[wikt:en:restinctus#Latin|restincto]] [[wikt:en:agger#Latin|aggere]] atque <u>omni ex parte</u> [[wikt:en:submotus#Latin|submotis]] hostibus [[wikt:en:finis#Latin:_end|finis]] est [[wikt:en:pugnandi#Verb|pugnandi]] [[wikt:en:factus#Latin:_done|factus]].
**<ruby><rb>[[w:アッゲル|土塁]]</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby>が鎮火されて、そのすべての方面から敵たちが追い払われて、戦いに終止符が打たれる<u>までは</u>。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、omni <u>ex</u> parte は ''[[ガリア戦記/注解編/写本と校訂版#Ciacconius|Ciacconius]]'' による修正で、<br> α系写本では omni <u>ea</u> parte <br> β系写本では omni parte となっている。)</span>
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===26節===
*<span style="background-color:#ffd;">[[/注解/26節]] {{進捗|00%|2026-07-13}}</span>
;アウァーリクム脱出の企て、女たちの絶叫
:
; 万策尽きたガッリア勢が、アウァーリクム脱出を企てる
*<!--❶--><sup>(1)</sup> [[wikt:en:omnia#Noun|Omnia]] [[wikt:en:expertus#Participle|experti]] [[wikt:en:Galli#Latin|Galli]],
**ガッリア人たちはあらゆることを試みたが、
*quod res [[wikt:en:nullus#Determiner|nulla]] [[wikt:en:successerat#Latin|successerat]],
**何ら事が成功しなかったので、
*[[wikt:en:posterus#Latin|postero]] die [[wikt:en:consilium#Latin|consilium]] [[wikt:en:ceperunt#Latin|ceperunt]] ex [[wikt:en:oppidum#Latin|oppido]] [[wikt:en:profugio#Latin|profugere]],
**<small>(戦いの夜が明けて)</small>翌日には、<small>(アウァーリクムの)</small><ruby><rb>城塞都市</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>から退避する計画を立てた。
*[[wikt:en:hortans#Latin|hortante]] et [[wikt:en:iubens#Latin|iubente]] [[wikt:en:Vercingetorix#Latin|Vercingetorige]].
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]によって促され、命じられたものであった。
:
; 脱出をはかるガッリア勢の期待とその理由
*<!--❷--><sup>(2)</sup> Id [[wikt:en:silentium#Latin|silentio]] noctis [[wikt:en:conatus#Participle|conati]]
**そのこと<small>〔アウァーリクムからの退避〕</small>を夜の静けさのうちに試みても、
*non magna <u>iactura</u> suorum
**味方の大きな<ruby><rb>犠牲</rb><rp>(</rp><rt>ヤクトゥーラ</rt><rp>)</rp></ruby>もなしに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:iactura#Noun|iactura]] は「投げ捨てること」、比喩的に「損害、犠牲」。)</span>
*sese [[wikt:en:effecturus#Latin|effecturos]] <span style="color:#009900;"><small>(esse)</small></span> [[wikt:en:sperabant#Latin|sperabant]],
**自分たちは成し遂げるだろうと期待していた。
*<u>propterea quod</u> <u>neque</u> longe ab oppido [[wikt:en:castra#Latin|castra]] [[wikt:en:Vercingetorix#Latin|Vercingetorigis]] [[wikt:en:aberant#Latin|aberant]],
**──というのも、ウェルキンゲトリークスの陣営は<small>(アウァーリクムの)</small></small><ruby><rb>城塞都市</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>からあまり離れていなかったし、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:propterea_quod#Latin|propterea quod]] ~「なぜなら~からである」。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:neque ~ et …「~ではなく、…である」)</span>
*<u>et</u> [[wikt:en:palus#Latin|palus]], <u>quae [[wikt:en:perpetuus#Latin|perpetua]]</u> [[wikt:en:intercedebat#Latin|intercedebat]], [[wikt:en:Romani#Latin|Romanos]] ad [[wikt:en:insequendum#Verb|insequendum]] [[wikt:en:tardabat#Latin|tardabat]].
**沼地も絶え間なく介在していて、ローマ人たちの追跡を遅らせていたからだ。──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:二つ目の下線部は、α系写本の語順は quae perpetua だが、<br> β系写本の語順は perpetua quae となっている。)</span>
:
; 母親たちが男たちに、女子供を置き去りにして敵のいけにえにするな、と哀願する
*<!--❸--><sup>(3)</sup> [[wikt:en:iam#Latin|Iam]]<nowiki>que</nowiki> <u>hoc</u> facere [[wikt:en:noctu#Latin|noctu]] [[wikt:en:apparabant#Latin|apparabant]],
**すでに、<u>このことを</u>実行することを夜間に準備していた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、主要写本ω では [[wikt:en:haec#Latin|haec]]<sub> (中性・複数・対格)</sub> だが、<br> 最初の印刷本 [[ガリア戦記/注解編/写本と校訂版#Editio_princeps|ed.pr]] では [[wikt:en:hoc#Latin:_this|hoc]]<sub> (中性・単数・対格)</sub> としている。)</span>
*<u>cum</u> [[wikt:en:mater#Latin|matres]] [[wikt:en:familia#Latin|familiae]] [[wikt:en:repente#Adverb_2|repente]] in [[wikt:en:publicum#Noun|publicum]] [[wikt:en:procurrerunt#Latin|procurrerunt]],
**そのときに家族の母親たちが不意に公の場に走り出て来て、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の cum は、「倒逆のcum」([[wikt:en:cum inversum|cum inversum]])と呼ばれ、<br> cum 以下 ~ impediret までの副文が、上記の主文よりも重要な構文の中心になる。)</span>
*[[wikt:en:flens#Latin|flentes]]<nowiki>que</nowiki> [[wikt:en:proiectus#Latin|proiectae]] ad [[wikt:en:pes#Latin|pedes]] suorum
**泣きながら、味方<small>(の男たち)</small>の足元に<small>(身を)</small>投げ出して、
*omnibus [[wikt:en:prex#Latin|precibus]] [[wikt:en:petierunt#Latin|petierunt]],
**あらゆる懇願でもって頼んだ。
*ne se et [[wikt:en:communis#Latin|communes]] [[wikt:en:liberi#Noun_2|liberos]] hostibus ad [[wikt:en:supplicium#Latin|supplicium]] [[wikt:en:dederent#Latin|dederent]],
**自分たち<small>〔女たち〕</small>と<small>(男たちとの)</small>共通の子供たちを、処刑されることのために敵方に引き渡さないで、
*<u>quos</u> ad [[wikt:en:capiendus#Latin|capiendam]] [[wikt:en:fuga#Latin|fugam]] [[wikt:en:natura#Latin|naturae]] et [[wikt:en:vis#Latin|virium]] [[wikt:en:infirmitas#Latin|infirmitas]] [[wikt:en:impediret#Latin|impediret]].
**それらの者<small>〔女子供たち〕</small>が逃亡をとるためには、性質や体力の弱さが、妨げるのだ、と。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:quos#Latin|quos]]<sub> (男性・複数・対格)</sub> だが、<br> β系写本では [[wikt:en:quas#Latin|quas]]<sub> (女性・複数・対格)</sub> となっている。)</span>
:
; 窮した母親たちが、男たちの脱出の兆候をローマ人に伝えようとする
*<!--❹--><sup>(4)</sup> [[wikt:en:ubi#Latin|Ubi]] eos in [[wikt:en:sententia#Latin|sententia]] [[wikt:en:perstare#Latin|perstare]] [[wikt:en:viderunt#Latin|viderunt]],
**彼ら<small>〔男たち〕</small>が<small>(女・子供を置き去りで脱出するという)</small>意思を固持していると<small>〔女たちが〕</small>見て取るや、
*[[wikt:en:quod#Conjunction|quod]] [[wikt:en:plerumque#Adverb|plerumque]] in [[wikt:en:summus#Latin|summo]] [[wikt:en:periculum#Latin|periculo]] [[wikt:en:timor#Latin|timor]] [[wikt:en:misericordia#Latin|misericordiam]] non [[wikt:en:recipit#Latin|recipit]],
**──というのは、たいてい最大級の危険においては、恐怖が<ruby><rb>憐憫</rb><rp>(</rp><rt>れんびん</rt><rp>)</rp></ruby>の<ruby><rb>情</rb><rp>(</rp><rt>じょう</rt><rp>)</rp></ruby>を受け入れないものであるからだが、──
*[[wikt:en:conclamo#Latin|conclamare]] et [[wikt:en:significo#Latin|significare]] de [[wikt:en:fuga#Latin|fuga]] [[wikt:en:Romani#Latin|Romanis]] [[wikt:en:coeperunt#Latin|coeperunt]].
**<small>(女たちは)</small>叫び声を上げて、ローマ人たちに<small>(男たちの)</small>逃亡について知らしめ始めた。
:
; ガッリア勢の男たちが、ローマ側の騎兵隊を恐れて、アウァーリクム脱出を断念する
*<!--❺--><sup>(5)</sup> [[wikt:en:qui#Determiner|Quo]] [[wikt:en:timor#Latin|timore]] [[wikt:en:perterritus#Latin|perterriti]] [[wikt:en:Galli#Latin|Galli]],
**<small>(女たちがローマ側へ男たちの脱出について報知したことで)</small>その恐怖によって脅かされたガッリア人<small>(の男)</small>たちは、
*[[wikt:en:ne#Latin:_no|ne]] ab [[wikt:en:equitatus#Latin|equitatu]] Romanorum [[wikt:en:via#Latin|viae]] [[wikt:en:praeoccuparentur#Latin|praeoccuparentur]],
**ローマ方の[[w:騎兵|騎兵隊]]によって道があらかじめ占拠されないように、
*[[wikt:en:consilium#Latin|consilio]] [[wikt:en:destiterunt#Latin|destiterunt]].
**<small>(アウァーリクムからの脱出の)</small>計画を取り止めた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===27節===
[[画像:Avaricum_westpoint_july_2006.jpg|thumb|right|300px|[[w:アウァリクム包囲戦|アウァーリクム攻略戦]]の[[w:ジオラマ|ジオラマ]](再掲;[[w:陸軍士官学校 (アメリカ合衆国)|米国陸軍士官学校]]博物館)。ローマ軍の<ruby><rb>[[w:アッゲル|土塁]]</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby>の周辺には、<ruby><rb>[[w:ウィネア|工作小屋]]</rb><rp>(</rp><rt>ウィネア</rt><rp>)</rp></ruby>(vinea)の両端を開いて多数つないだ廊下状の通路(坑道)が延びている。]]
*<span style="background-color:#ffd;">[[/注解/27節]] {{進捗|00%|2026-08-01}}</span>
;ローマ軍が大雨の中でアウァーリクムの城壁を占拠
:
*<!--❶--><sup>(1)</sup> Postero die Caesar,
**翌日にカエサルは、
*[[wikt:en:promotus#Latin|promota]] [[wikt:en:turris#Latin|turri]]
**<small>(後退していた)</small>[[w:攻城塔|攻城櫓]]<small>(の1基)</small>が前進させられて、
*<u>perfectis</u><nowiki>que</nowiki> [[wikt:en:opus#Latin|operibus]], quae facere [[wikt:en:instituerat#Latin|instituerat]],
**実施を定めていた作業が<u>成し遂げられると</u>、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、<br> π系写本では [[wikt:en:perfectis#Latin|perfectīs]] 「完成されると」だが、<br> α系・ρ系写本では [[wikt:en:derectis#Latin|dērēctīs]] 「整えられると」<br> となっている。)</span>
*magno [[wikt:en:coortus#Latin|coorto]] <u>imbre</u>
**激しい嵐が起こったが、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:imbre#Latin|imbre]] だが、β系写本では [[wikt:en:imbri#Latin|imbri]] となっている。)</span>
*non [[wikt:en:inutilis#Latin|inutilem]] hanc ad [[wikt:en:capiendus#Latin|capiendum]] [[wikt:en:consilium#Latin|consilium]] [[wikt:en:tempestas#Latin|tempestatem]] <u>arbitratus est</u>,
**作戦計画を立てるために、この天候は不利ではないと思われた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:arbitratus#Participle|arbitratus]] est だが、β系写本では単に arbitratus となっている。)</span>
*[[wikt:en:quod#Conjunction|quod]] paulo [[wikt:en:incautius#Adverb|incautius]] [[wikt:en:custodia#Latin|custodias]] in [[wikt:en:murus#Latin|muro]] [[wikt:en:dispositus#Latin|dispositas]] [[wikt:en:videbat#Latin|videbat]],
**──というのは、城壁に配置された番兵たちが少しより油断していると見ていたからだが、──
*<u>suosque</u> [[wikt:en:languide#Adverb|languidius]] in [[wikt:en:opus#Latin|opere]] [[wikt:en:versor#Latin|versari]] [[wikt:en:iussit#Verb|iussit]]
**配下の者たちには<small>(わざと)</small>より緩慢に作業に従事することを命じて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:suos#Latin|suōs]]<nowiki>que</nowiki> だが、β系写本では [[wikt:en:suos#Latin|suōs]] [[wikt:en:quoque#Adverb|quoque]] となっている。)</span>
*et, [[wikt:en:quid#Pronoun_2|quid]] [[wikt:en:fieri#Latin|fieri]] [[wikt:en:vellet#Latin|vellet]], [[wikt:en:ostendit#Latin|ostendit]].
**何がなされることを<small>(カエサルが)</small>欲しているか、を示した。
:
*<!--❷--><sup>(2)</sup> [[wikt:en:legio#Latin|Legionibus]]<nowiki>que</nowiki> <u>extra castra intra [[wikt:en:vinea#Latin|vineas]]</u> in occulto [[wikt:en:expeditus#Participle|expeditis]],
**[[w:ローマ軍団|諸軍団]]が<u>陣営の外の<ruby><rb>[[w:ウィネア|工作小屋]]</rb><rp>(</rp><rt>ウィネア</rt><rp>)</rp></ruby>の内側で</u>ひそかに準備を整えており、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、写本や校訂版によって異同がある。[[ガリア戦記_第7巻/注解/27節#注記|注記]]を参照。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:in_occulto#Latin|in occulto]]「ひそかに」「隠れた所で」)</span>
*[[wikt:en:cohortatus#Latin|cohortatus]], ut [[wikt:en:aliquando#Latin|aliquando]] pro [[wikt:en:tantus#Latin|tantis]] [[wikt:en:labor#Latin|laboribus]] [[wikt:en:fructus#Latin:_noun|fructum]] victoriae [[wikt:en:perciperent#Latin|perciperent]],
**<small>(カエサルは)</small>やっと、これほどの労苦の見合う勝利の報酬を我がものとするように激励し、
*iis, qui [[wikt:en:primus#Latin|primi]] [[wikt:en:murus#Latin|murum]] [[wikt:en:adscendissent#Latin|adscendissent]], [[wikt:en:praemium#Latin|praemia]] [[wikt:en:proposuit#Latin|proposuit]]
**一番乗りとして城壁に登った者たちには、恩賞を約束して、
*[[wikt:en:miles#Latin|militibus]]<nowiki>que</nowiki> [[wikt:en:signum#Latin|signum]] [[wikt:en:dedit#Latin|dedit]].
**兵士たちに号令を発した。
:
*<!--❸--><sup>(3)</sup> Illi [[wikt:en:subito#Adverb_8|subito]] ex omnibus partibus [[wikt:en:evolaverunt#Latin|evolaverunt]]
**彼ら<small>〔ローマ軍団兵〕</small>は不意にあらゆる方角から飛び出して、
*[[wikt:en:murus#Latin|murum]]<nowiki>que</nowiki> celeriter [[wikt:en:compleverunt#Latin|compleverunt]].
**速やかに<small>(アウァーリクムの)</small>城壁を埋め尽くしたのだ。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===28節===
*<span style="background-color:#ffd;">[[/注解/28節]] {{進捗|00%|2026-08-11}}</span>
;ローマ軍がアウァーリクムの市民4万人を大虐殺
:
*<!--❶--><sup>(1)</sup> Hostes re nova [[wikt:en:perterritus#Latin|perterriti]],
**敵たち<small>〔籠城するガッリア勢〕</small>は新たな事態に脅かされて、
*[[wikt:en:murus#Latin|muro]] [[wikt:en:turris#Latin|turribus]]<nowiki>que</nowiki> [[wikt:en:deiectus#Participle|deiecti]]
**<small>(ローマ兵によって)</small>城壁や櫓から追い落とされて、
*in [[wikt:en:forum#Latin|foro]] ac locis [[wikt:en:patentior#Latin|patentioribus]] [[wikt:en:cuneatim#Latin|cuneatim]] [[wikt:en:constiterunt#Etymology_1|constiterunt]],
**<ruby><rb>広場</rb><rp>(</rp><rt>フォルム</rt><rp>)</rp></ruby>や開けた場所に楔状に立ちふさがった。
*hoc animo, ut, si [[wikt:en:aliqui#Latin|qua]] ex parte [[wikt:en:obviam#Adverb|obviam]] <span style="color:#009900;">[</span>contra<span style="color:#009900;">]</span> [[wikt:en:veniretur#Latin|veniretur]], [[wikt:en:acies#Latin|acie]] [[wikt:en:instructus#Latin|instructa]] [[wikt:en:depugnarent#Latin|depugnarent]].
**もし、どの方向から相対して対抗して来られても、戦列を整えて決戦しようという心積もりでいたのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:contra#Latin|contra]] は α系・π系写本・写本Rにある記述だが、<br> 写本U にはなく、削除提案されている。)</span>
:
*<!--❷--><sup>(2)</sup> Ubi [[wikt:en:nemo#Latin|neminem]] in aequum locum sese [[wikt:en:demitto#Latin|demittere]], sed [[wikt:en:totus#Latin:_whole|toto]] [[wikt:en:undique#Latin|undique]] [[wikt:en:murus#Latin|muro]] [[wikt:en:circumfundi#Latin|circumfundi]] [[wikt:en:viderunt#Latin|viderunt]],
**<small>(ローマ兵が)</small>誰も平らな所に降りて来ず、しかし城壁全体の至る所で取り囲まれたことを見たときに、
*[[wikt:en:veritus#Latin|veriti]], ne [[wikt:en:omnino#Latin|omnino]] spes fugae [[wikt:en:tolleretur#Latin|tolleretur]],
**<small>(籠城ガッリア勢は)</small>逃亡のあらゆる希望を奪われないかと怖れて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:veriti, [[wikt:en:ne#Latin:_no|ne]] ~ 「~ではないかと恐れて」恐れの表現。)</span>
*[[wikt:en:abiectus#Latin|abiectis]] [[wikt:en:arma#Latin|armis]]
**武器を投げ捨てて、
*[[wikt:en:ultimus#Latin|ultimas]] oppidi partes
**城塞都市の<small>(ローマ勢から)</small>最も遠くの方面を
*[[wikt:en:continens#Latin|continenti]] [[wikt:en:impetus#Latin|impetu]] [[wikt:en:petiverunt#Latin|petiverunt]],
**絶え間ない殺到によって求めた。
:
*<!--❸--><sup>(3)</sup> <u>pars</u><nowiki>que</nowiki> ibi, cum [[wikt:en:angustus#Latin|angusto]] [[wikt:en:exitus#Latin|exitu]] portarum se ipsi [[wikt:en:premerent#Latin|premerent]], a militibus,
**ある者たちは、城門の狭い出口で自分らで互いに押し合っていたので、そこで<small>(ローマ人)</small>兵士たちによって<small>(殺され)</small>、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:pars#Latin|pars]] ~, pars …「ある者たちは~、別の者たちは…」。)</span>
*<u>pars</u> iam [[wikt:en:egressus#Latin|egressa]] portis ab [[wikt:en:eques#Latin|equitibus]] est [[wikt:en:interfectus#Latin|interfecta]].
**別の者たちはすでに城門を出ていたが、<small>(ローマ側の)</small>[[w:騎兵|騎兵]]たちによって虐殺された。
:
*<!--❹--><sup>(4)</sup> [[wikt:en:nec#Latin|Nec]] fuit [[wikt:en:quisquam#Pronoun|quisquam]], qui [[wikt:en:praeda#Latin|praedae]] [[wikt:en:studeret#Latin|studeret]].
**<small>(ローマ勢には)</small>戦利品を熱心に求める何者もいなかった。
*[[wikt:en:sic#Latin|Sic]] et <u>Cenabi</u> [[wikt:en:caedes#Latin|caede]] et [[wikt:en:labor#Latin|labore]] [[wikt:en:opus#Latin|operis]] [[wikt:en:incitatus#Latin|incitati]]
**このように、ケナブムの<small>(ローマ市民の)</small>殺害にも、(攻城)作業の労苦にも煽られて
**:<span style="color:#009900;">(訳注:カルヌーテース族によるローマ市民の殺害については[[#3節|3節]]を参照。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の cenabi は、α系写本では [[wikt:en:Genabi#Latin|genabi]] <br> ρ系写本や写本Tでは [[wikt:en:Genabensi#Adjective|genabensi]]<br> 写本Uおよび写本Tの一部では cenabensi となっている。<br> なお、cenabi, cenabensi はケルト語風の表記である。)</span>
*non [[wikt:en:aetas#Latin|aetate]] [[wikt:en:confectus#Latin|confectis]],
**<small>(ローマ勢は)</small>年老いた者たちも、
*non [[wikt:en:mulier#Latin|mulieribus]],
**妻女たちも、
*non [[wikt:en:infans#Noun|infantibus]] [[wikt:en:pepercerunt#Latin|pepercerunt]].
**乳幼児たちも<small>(虐殺することを)</small>思いとどまらなかった。
**:<span style="color:#009900;">(訳注:ビトゥリゲース族はローマ市民の殺害には関与しておらず、報復される対象とするのは的外れである。</span>
**:<span style="color:#009900;">ましてや非戦闘員である老人・女性・子供たちまで殺戮するのは、戦争の狂気というしかない。)</span>
:
*<!--❺--><sup>(5)</sup> [[wikt:en:denique#Latin|Denique]] ex omni <u><span style="color:#009900;">eo</span></u> numero, qui fuit circiter milium XL<small> ([[wikt:en:quadraginta#Latin|quadraginta]])</small>,
**ついには、約40000名もいたすべての人員のうち、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の [[wikt:en:eo#Latin:_there|eo]] は β系写本の記述で、α系写本にはない。)</span>
*vix DCCC<small> ([[wikt:en:octingenti#Latin|octingenti]])</small>, qui primo [[wikt:en:clamor#Latin|clamore]] [[wikt:en:auditus#Latin|audito]] se ex oppido <u>eiecerunt</u>,
**やっと800名が、はじめにどよめきを聞いて、城塞都市から急ぎ出て、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:eiecerunt#Latin|eiecerunt]]<small> (直接法・完了)</small> だが、<br> β系写本では [[wikt:en:eiecerant#Latin|eiecerant]]<small> (直接法・過去完了)</small> となっている。)</span>
*[[wikt:en:incolumis#Latin|incolumes]] ad [[wikt:en:Vercingetorix#Latin|Vercingetorigem]] [[wikt:en:pervenerunt#Latin|pervenerunt]].
**無傷のままで[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]のもとへ到着した。
:
*<!--❻--><sup>(6)</sup> Quos ille multa iam nocte <u>silentio</u> ex fuga [[wikt:en:excepit#Latin|excepit]],
**彼<small>〔ウェルキンゲトリークス〕</small>は、逃亡して来たその者たちを、すでに夜も更けた<u>静寂のうちに</u>迎え入れた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:silentio#Latin|silentio]] だが、β系写本にはない。<br> 他方、β系写本では [[wikt:en:sic#Latin|sic]] とあるが、α系写本にはない。)</span>
*[[wikt:en:veritus#Latin|veritus]], ne qua in castris ex eorum [[wikt:en:concursus#Latin:_convergence|concursu]] et [[wikt:en:misericordia#Latin|misericordia]] [[wikt:en:vulgus#Latin|vulgi]] seditio <u>oreretur</u>,
**彼らの密集や一般兵士たちの同情から、陣営の中で何らかの暴動が生じないように怖れて、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ne [[wikt:en:aliqui#Latin|qua (aliqua)]] ~ [[wikt:en:seditio#Latin|seditio]]「何らかの暴動が~ないように」
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、一部の写本は [[wikt:en:oreretur#Latin|oreretur]] だが、<br> 他の写本では [[wikt:en:oriretur#Latin|oriretur]] となっているが、語形の相違。)</span>
*ut procul in via [[wikt:en:dispositus#Latin|dispositis]] [[wikt:en:familiaris#Noun|familiaribus]] suis [[wikt:en:princeps#Latin|principibus]]<nowiki>que</nowiki> [[wikt:en:civitas#Latin|civitatum]],
**自らの郎党たちや部族の領袖たちを<small></small>(陣営の)遠くから道沿いに配置して、
*[[wikt:en:disparandus#Latin|disparandos]] [[wikt:en:deducendus#Latin|deducendos]]<nowiki>que</nowiki> ad suos [[wikt:en:curaret#Latin|curaret]],
**<small>(敗走者たちを)</small>味方のもとへ、引き離して連れて行くように手配した。
*quae [[wikt:en:cuique#Latin|cuique]] civitati pars castrorum ab [[wikt:en:initium#Latin|initio]] [[wikt:en:obvenerat#Latin|obvenerat]].
**陣営の各部分は、おのおのの部族にはじめから与えられていたのだ。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===29節===
*<span style="background-color:#ffd;">[[/注解/29節]] {{進捗|00%|2026-08-11}}</span>
[[画像:Vercingetorix stater CdM.jpg|thumb|right|250px|[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の横顔が刻まれたガリアの金貨(パリの[[w:ビブリオテーク・ナショナル|仏国立図書館]]貨幣部蔵)]]
;ウェルキンゲトリークスが演説で味方を鼓舞する
:
*<!--❶--><sup>(1)</sup> Postero die [[wikt:en:concilium#Latin|concilio]] [[wikt:en:convocatus#Latin|convocato]],
**翌日に、会合が召集されると、
*[[wikt:en:consolatus#Latin|consolatus]] [[wikt:en:cohortatus#Latin|cohortatus]]<nowiki>que</nowiki> est,
**<small>(ウェルキンゲトリークスは、味方の者たちを)</small>慰めて、励ました:
*<u>ne</u> se [[wikt:en:admodum#Latin|admodum]] animo [[wikt:en:demitterent#Latin|demitterent]],
**あまり気を落とさないように、
*<u>ne</u> [[wikt:en:perturbarentur#Latin|perturbarentur]] [[wikt:en:incommodum#Latin|incommodo]].
**敗北により取り乱さないように、と。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:上の下線部は、α系写本では [[wikt:en:ne#Latin:_no|ne]] ~ ne だが、<br> β系写本では ne ~ [[wikt:en:neve#Latin|neve]] となっている。)</span>
:
*<!--❷--><sup>(2)</sup> Non [[wikt:en:virtus#Latin|virtute]] neque in [[wikt:en:acies#Latin|acie]] [[wikt:en:vicisse#Latin|vicisse]] [[wikt:en:Romani#Latin|Romanos]],
**ローマ人たちが勝ったのは、武勇においてでも、戦列<small>〔野外の合戦〕</small>においてでもなく、
*sed [[wikt:en:artificium#Noun|artificio]] [[wikt:en:quidam#Determiner|quodam]] et [[wikt:en:scientia#Latin:_knowledge|scientia]] [[wikt:en:oppugnatio#Latin|oppugnationis]],
**ある種の技巧および攻城戦の知識によるものであって、
*cuius rei [[wikt:en:fuerint#Latin|fuerint]] ipsi [[wikt:en:imperitus#Latin|imperiti]].
**その事柄に<small>(ガッリア人)</small>自身が通じていなかったのだ。
**:<span style="color:#009900;">(訳注:[[ガリア戦記 第5巻#42節|第5巻42節]]では、ネルウィイー族らガッリア北部のベルガエ勢はローマ人の攻城術をまねていた。)</span>
:
*<!--❸--><sup>(3)</sup> [[wikt:en:erro#Latin:_wander|Errare]], si [[wikt:en:aliqui#Latin|qui]] in [[wikt:en:bellum#Latin|bello]] omnes [[wikt:en:secundus#Adjective|secundos]] rerum [[wikt:en:proventus#Latin|proventus]] [[wikt:en:exspectent#Latin|exspectent]].
**誰であれ、戦争において、万事が順調な成功になることを期待するのならば、<small>(その者らは)</small>誤っている。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:語順が判りにくいが、<br> 物事のすべて(omnes rerum)が幸運な結果(secundos proventus)であることを期待するのならば~。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:errare の意味上の主語([[wikt:en:eos#Latin|eos]])が省略されている。)</span>
:
*<!--❹--><sup>(4)</sup> Sibi [[wikt:en:numquam#Latin|numquam]] [[wikt:en:placuisse#Latin|placuisse]] [[wikt:en:Avaricum#Latin|Avaricum]] [[wikt:en:defendi#Latin|defendi]],
**自分<small>〔ウェルキンゲトリークス〕</small>にとって、アウァーリクムが防衛されることは決して好ましいものではなかった。
*cuius rei [[wikt:en:testis#Latin:_witness|testes]] ipsos [[wikt:en:haberet#Latin|haberet]];
**その事の証人は<small>(諸君ら)</small>自身である。
*sed <u>factum</u> [[wikt:en:inprudentia#Latin|inprudentia]] [[wikt:en:Bituriges#Latin|Biturigum]] et [[wikt:en:nimius#Latin|nimia]] [[wikt:en:obsequentia#Latin|obsequentia]] reliquorum, <u>uti</u> hoc [[wikt:en:incommodum#Latin|incommodum]] [[wikt:en:acciperetur#Latin|acciperetur]].
**だが、ビトゥリゲース族の軽率さと、ほかの者たちの過度な同調により、この敗北を蒙るようになったのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:factus#Latin:_done|factum]] (esse) ~ [[wikt:en:uti#Latin:_how|uti]] …「…ようになった」)</span>
:
*<!--❺--><sup>(5)</sup> Id tamen se celeriter [[wikt:en:maior#Adjective_2|maioribus]] [[wikt:en:commodum#Latin:noun|commodis]] [[wikt:en:sanaturus#Latin|sanaturum]] <span style="color:#009900;">(esse)</span>.
**しかしながら、自分がそれ<small>〔敗北〕</small>を速やかに大いなる勝利によって埋め合わせるであろう。
:
*<!--❻--><sup>(6)</sup> Nam quae ab reliquis [[wikt:en:Galli#Latin:_Gauls|Gallis]] civitates [[wikt:en:dissentirent#Latin|dissentirent]],
**一方、<small>(ウェルキンゲトリークスら)</small>ほかのガッリア人たちとは意見を相異する諸部族、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:先行詞 [[wikt:en:civitas#Latin|civitates]] が quae 以下の関係文中に入り込む倒置の語順。)</span>
*has sua [[wikt:en:diligentia#Noun|diligentia]] [[wikt:en:adiuncturus#Latin|adiuncturum]] <span style="color:#009900;">(esse)</span>
**彼ら<small>〔諸部族〕</small>を自分<small>〔ウェルキンゲトリークス〕</small>の入念さにより合流させるであろうし、
*atque unum [[wikt:en:consilium#Latin|consilium]] [[wikt:en:totus#Latin:_whole|totius]] [[wikt:en:Gallia#Latin|Galliae]] [[wikt:en:effecturus#Latin|effecturum]] <span style="color:#009900;">(esse)</span>,
**全ガッリアの考えを一つにするであろう。
*cuius [[wikt:en:consensus#Latin|consensui]] ne orbis quidem terrarum [[wikt:en:possit#Latin|possit]] [[wikt:en:obsistere#Latin|obsistere]];
**その団結には、全世界でさえ邪魔することはできない。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:orbis#Latin|orbis]] [[wikt:en:/terrarum#Latin|terrarum]]「全世界」)</span>
*[[wikt:en:id#Latin|id]]<nowiki>que</nowiki> se [[wikt:en:prope#Adverb|prope]] iam [[wikt:en:effectus#Latin:_participle|effectum]] habere.
**それを自分<small>〔ウェルキンゲトリークス〕</small>は、ほとんどすでに成し遂げたと思う。
:
*<!--❼--><sup>(7)</sup> [[wikt:en:interea#Latin|Interea]] [[wikt:en:aequus#Latin|aequum]] esse ab iis [[wikt:en:communis#Latin|communis]] [[wikt:en:salus#Latin|salutis]] causa [[wikt:en:impetrari#Latin|impetrari]],
**その間に<small>(ガッリアの)</small>共通の安全のために、彼ら<small>〔ガッリア人〕</small>によって<small>(以下のように)</small>達成されることが好都合である。
*ut castra [[wikt:en:munio#Latin|munire]] [[wikt:en:instituerent#Latin|instituerent]],
**陣営を防御することを実施するように、
*[[wikt:en:quo#Latin:_where|quo]] [[wikt:en:facilius#Latin|facilius]] [[wikt:en:repentinus#Latin|repentinos]] hostium [[wikt:en:impetus#Latin|impetus]] <u>sustinerent</u>.
**それにより、敵たち<small>〔ローマ人〕</small>の予期せぬ襲撃に対して、より容易に持ちこたえられるように。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:sustinerent#Latin|sustinerent]] だが、<br> β系写本では [[wikt:en:sustinere#Latin|sustinere]] [[wikt:en:possent#Latin|possent]] となっている。)</span>
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===30節===
*<span style="background-color:#ffd;">[[/注解/30節]] {{進捗|00%|2026-08-29}}</span>
;ガッリア勢がウェルキンゲトリークスに心服し、希望を抱く
:
*<!--❶--><sup>(1)</sup> Fuit haec [[wikt:en:oratio#Latin|oratio]] non [[wikt:en:ingratus#Latin|ingrata]] [[wikt:en:Galli#Latin:_Gauls|Gallis]],
**この演説は、ガッリア人たちにとっては不快なものではなかった。
*et maxime, quod ipse animo non [[wikt:en:defecerat#Latin|defecerat]], [[wikt:en:tantus#Latin|tanto]] [[wikt:en:acceptus#Latin|accepto]] [[wikt:en:incommodum#Latin|incommodo]],
**──というのは、とりわけ<small>(ウェルキンゲトリークス)</small>自身がこれほどの敗北を蒙っても意気消沈することなく、
*neque <u>se</u> [[wikt:en:in_occultum#Latin|in occultum]] [[wikt:en:abdiderat#Latin|abdiderat]]
**秘密の場所に身を隠したり、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の再帰代名詞 se は 最初の印刷本 [[ガリア戦記/注解編/写本と校訂版#Editio_princeps|''ed. pr.'']] で挿入されたもので、主要写本 ω にはない。)</span>
*et [[wikt:en:conspectus#Latin:_noun|conspectum]] [[wikt:en:multitudo#Latin|multitudinis]] [[wikt:en:fugerat#Latin|fugerat]]<!--,-->;
**大勢の見ているところを避けたりしなかったからである──。
:
*<!--❷--><sup>(2)</sup> [[wikt:en:plus#Latin:_adverb|plus]]<nowiki>que</nowiki> animo [[wikt:en:provideo#Latin|providere]] et [[wikt:en:praesentio#Latin|praesentire]] [[wikt:en:existimabatur#Latin|existimabatur]],
**<small>(ウェルキンゲトリークスは他の者よりも)</small>より先見の明があり、予感していると考えられていた。
*quod re [[wikt:en:integer#Latin|integra]]
**──というのは、事態が手つかずのままで、
*[[wikt:en:primo#Latin:_adverb|primo]] [[wikt:en:incendendus#Latin|incendendum]] <span style="color:#009900;">(esse)</span> [[wikt:en:Avaricum#Latin|Avaricum]],
**当初はアウァーリクムが焼き払われるべきだと<small>(主張し)</small>、
*post [[wikt:en:deserendus#Latin|deserendum]] <span style="color:#009900;">(esse)</span>, [[wikt:en:censuerat#Latin|censuerat]].
**後には<small>(アウァーリクムは)</small>放棄されるべきだ、と主張していたからだ──。
:
*<!--❸--><sup>(3)</sup> [[wikt:en:itaque#Latin|Itaque]] <u>ut</u> [[wikt:en:reliquus#Latin|reliquorum]] [[wikt:en:imperator#Latin|imperatorum]] res adversae [[wikt:en:auctoritas#Latin|auctoritatem]] [[wikt:en:minuunt#Latin|minuunt]],
**それゆえに、逆境がほかの将軍たちの影響力を減ずる一方で、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ut#Conjunction|ut]] ~, [[wikt:en:sic#Latin|sic]] …「~であるように、同様に…」あるいは「~である一方で、…」。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:res#Latin|res]] [[wikt:en:adversus#Participle|adversae]]「逆境、(戦争における)敗北」。)</span>
*<u>sic</u> huius <u>ex contrario</u> [[wikt:en:dignitas#Latin|dignitas]] <u>incommodo</u> [[wikt:en:acceptus#Latin|accepto]] <u>in dies</u> [[wikt:en:augebatur#Latin|augebatur]].
**それどころか、彼の威厳は、災難を蒙っても、日ごとに高まっていたのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ex_contrario#Latin|ex contrario]]「それどころか」。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:incommodum#Latin|incommodum]]「不運、災難、(戦争における)敗北」。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:in_dies#Latin|in dies]]「日に日に」「日ごとに」。)</span>
: <!-- [[wikt:en:| -->
*<!--❹--><sup>(4)</sup> [[wikt:en:simul#Latin|Simul]] <u>in spem [[wikt:en:veniebant#Latin|veniebant]]</u> eius [[wikt:en:adfirmatio#Latin|adfirmatione]] de reliquis [[wikt:en:adiungendus#Latin|adiungendis]] [[wikt:en:civitas#Latin|civitatibus]];
**同時に、彼の断言によって<small>(ガッリア人たちは)</small>ほかの諸部族を合流させることについて希望を抱いていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:in [[wikt:en:spes#Latin|spem]] [[wikt:en:venio#Latin|venire]]「希望を抱くようになる」。)</span>
*[[wikt:en:primum#Adverb|primum]]<nowiki>que</nowiki> eo tempore [[wikt:en:Galli#Latin:_Gauls|Galli]] [[wikt:en:castra#Latin|castra]] [[wikt:en:munio#Latin|munire]] [[wikt:en:instituerunt#Latin|instituerunt]],
**そのときに初めて、ガッリア人たちは陣営の防備を固めることに着手した。
*et <u>sic</u> <u>sunt</u> animo <u>consternati</u>, homines [[wikt:en:insuetus#Latin|insueti]] [[wikt:en:labor#Latin|laboris]],
**<small>(陣営の防備という)</small>労苦に慣れていない人々が、<u>気持ちが狼狽していたので、</u>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:sic#Latin|sic]] ~, [[wikt:en:ut#Conjunction|ut]] …「~であるので、その結果…ほどだった」。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の sunt は主要写本 ω の記述だが、erant とする修正提案もある。<br> sunt なら未完了過去 (sunt consternati)、erant なら過去完了 (erant consternati) になる。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の [[wikt:en:consternati#Latin|consternati]] は主要写本 ω の記述だが、<br> ''[[ガリア戦記/注解編/写本と校訂版#Nipperdey|Nipperdey]]'' は [[wikt:en:confirmati#Latin|confirmati]] と修正提案している。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:写本の読みは sunt [[wikt:en:consternati#Latin|consternati]] 「(彼らは)恐怖に陥っていた、混乱していた。」だが、<br> 修正読みでは sunt [[wikt:en:confirmati#Latin|confirmati]] 「(彼らは)励まされた」。)</span>
*<u>ut</u> omnia, quae [[wikt:en:imperarentur#Latin|imperarentur]], sibi [[wikt:en:patiendus#Latin|patienda]] <span style="color:#009900;">(esse)</span> <u>et perferenda <span style="color:#009900;">(esse)</span></u> [[wikt:en:existimarent#Latin|existimarent]].
**自分たちにとって、命令されたことすべてを耐えるべきであり、<u>成就するべきである</u>と考えるに至ったほどであった。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の et [[wikt:en:perferenda#Latin|perferenda]] (esseは省略されている) はβ系写本の記述で、<br> α系写本にはない。)</span>
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===31節===
*<span style="background-color:#ffd;">[[/注解/31節]] {{進捗|00%|2026-08-29}}</span>
;ウェルキンゲトリークスがほかの諸部族を勧誘し、兵力を補充する
:
; ウェルキンゲトリークスが、さらに多くの部族に同盟を誘いかける
*<!--❶--><sup>(1)</sup> Nec minus, quam est [[wikt:en:pollicitus#Latin|pollicitus]],
**約束したことに劣らず、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:nec#Latin|nec]] [[wikt:en:minus#Adverb_4|minus]] [[wikt:en:quam#Latin|quam]] ~「~に劣らず」。)</span>
*[[wikt:en:Vercingetorix#Latin|Vercingetorix]] animo [[wikt:en:laborabat#Latin|laborabat]], ut reliquas [[wikt:en:civitas#Latin|civitates]] [[wikt:en:adiungeret#Latin|adiungeret]],
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、ほかの諸部族を加盟させるように、心から努力した。
*atque <u>earum principes donis pollicitationibusque</u> [[wikt:en:adliciebat#Latin|adliciebat]].
**それらの領袖たちに贈物を約束することによって、誘い込もうとしていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、β系写本では earum [[wikt:en:princeps#Noun_3|principes]] [[wikt:en:donum#Latin|donis]] [[wikt:en:pollicitatio#Latin|pollicitationibus]]<nowiki>que</nowiki> だが、<br> α系写本では eas donis pollicitationibus となっている。)</span>
:
*<!--❷--><sup>(2)</sup> Huic rei [[wikt:en:idoneus#Latin|idoneos]] homines [[wikt:en:deligebat#Latin|deligebat]],
**この事<small>〔同盟に誘うこと〕</small>に適切な人物たちを<small>(ウェルキンゲトリークスが)</small>選び出して、
*quorum [[wikt:en:quisque#Latin|quisque]] aut [[wikt:en:oratio#Latin|oratione]] [[wikt:en:subdolus#Latin|subdola]] aut [[wikt:en:amicitia#Latin|amicitia]]
**その者たちのおのおのは、巧妙な演説により、あるいは友情により、
*[[wikt:en:facillime#Latin|facillime]] <u>capere</u> posset.
**かなり容易に<small>(同盟者を)</small>得ることができた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、χ系写本・写本Lでは [[wikt:en:capere#Latin|capere]] だが、<br> β系写本では [[wikt:en:capi#Latin|capi]] となっている。)</span>
:
; アウァーリクムからの逃亡者たちに、武具と衣服を支給する
*<!--❸--><sup>(3)</sup> <span style="color:#009900;">[eos]</span> qui [[wikt:en:Avaricum#Latin|Avarico]] [[wikt:en:expugnatus#Latin|expugnato]] [[wikt:en:refugerant#Latin|refugerant]],
**<small>(ウェルキンゲトリークスは)</small>アウァーリクムが攻略されたので逃げて来ていた者たちに、
*[[wikt:en:armandus#Latin|armandos]] [[wikt:en:vestiendus#Latin|vestiendos]]<nowiki>que</nowiki> [[wikt:en:curat#Latin|curat]];
**武装させられ、服を着せられるように、手配する。
:
; 同盟部族に徴集する兵員の数と集まる期日を指示する
*<!--❹--><sup>(4)</sup> [[wikt:en:simul#Latin|simul]], ut [[wikt:en:deminutus#Latin|deminutae]] [[wikt:en:copiae#Latin|copiae]] [[wikt:en:redintegrarentur#Latin|redintegrarentur]],
**同時に、減り衰えた軍勢が補充されるように、
*[[wikt:en:imperat#Latin|imperat]] [[wikt:en:certus#Latin|certum]] <u>numerum</u> militum civitatibus, <u>quem</u> et <u>quam ante diem</u> in castra [[wikt:en:adduci#Latin|adduci]] [[wikt:en:velit#Latin|velit]],
**諸部族に、兵の一定の<u>数</u>を<u>どれほど</u>、かつ、<u>いつの日の前までに</u>陣営に連れて来ることを欲しているかを指図し、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:qui#Determiner|quem]] [[wikt:en:numerus#Latin|numerum]] 「どれほどの数を」。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:qui#Determiner|quam]] ante [[wikt:en:dies#Latin|diem]] 「いつの日の前までに」。)</span>
*[[wikt:en:sagittarius#Noun|sagittarios]]<u>que</u> omnes, quorum erat [[wikt:en:permagnus#Latin|permagnus]] <u>numerus in Gallia</u>, [[wikt:en:conquiri#Latin|conquiri]] et ad se [[wikt:en:mitti#Latin|mitti]] [[wikt:en:iubet#Latin|iubet]].
**ガッリアにかなり大勢がいた弓兵のすべてを、徴募して自分<small>〔ウェルキンゲトリークス〕</small>のもとへ派遣することを命じる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本の語順は numerus in Gallia で、<br> β系写本の語順は in Gallia numerus となっている。)</span>
*His rebus celeriter id, quod [[wikt:en:Avaricum#Latin|Avarici]] [[wikt:en:deperierat#Latin|deperierat]], [[wikt:en:expletur#Latin|expletur]].
**これらの事により、速やかに、アウァーリクムで壊滅していたそれら<small>(の軍勢)</small>が補充される。
:
; ニティオブロゲース族の王テウトマトゥスが、騎兵隊らとともにウェルキンゲトリークスに合流する
*<!--❺--><sup>(5)</sup> [[wikt:en:interim#Latin|Interim]] [[wikt:en:Teutomatus#Latin|Teutomatus]], [[wikt:en:Ollovico#Latin|Olloviconis]] filius, rex <u>Nitiobrogum</u>,
**その間に、オッロウィコーの息子で、ニティオブロゲース族の王であるテウトマトゥスが、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、主要写本ω では Nitiobrogum だが、<br> 写本Uの一部では [[wikt:en:Nitiobriges#Latin|Nitiobrigum]] となっている。)</span>
*cuius pater ab [[wikt:en:senatus#Latin|senatu]] nostro amicus erat [[wikt:en:appellatus#Latin|appellatus]],
**その父<small>〔オッロウィコー〕</small>は、我が方<small>〔ローマ人〕</small>の[[w:元老院 (ローマ)|元老院]]から友人と呼ばれていたのだが、
*cum magno [[wikt:en:eques#Latin|equitum]] suorum numero et quos ex [[wikt:en:Aquitania#Latin|Aquitania]] [[wikt:en:conduxerat#Latin|conduxerat]] ad eum [[wikt:en:pervenit#Etymology_2|pervenit]].
**自らの騎兵の多数およびアクィーターニアから募っていた者たちとともに、彼<small>〔ウェルキンゲトリークス〕</small>のもとへ到着した。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
==ゲルゴウィア攻略戦、ハエドゥイー族の離反==
===32節===
*<span style="background-color:#ffd;">[[/注解/32節]] {{進捗|00%|2026-09-23}}</span>
;ハエドゥイー族内紛の危機
:
*<!--❶--><sup>(1)</sup> Caesar [[wikt:en:Avarici#Latin|Avarici]] complures dies [[wikt:en:commoratus#Latin|commoratus]]
**カエサルは、アウァーリクムに幾日も留まって、
*[[wikt:en:summus#Latin|summam]]<nowiki>que</nowiki> ibi [[wikt:en:copia#Latin|copiam]] [[wikt:en:frumentum#Latin|frumenti]] et reliqui [[wikt:en:commeatus#Latin:_noun|commeatus]] [[wikt:en:nactus#Latin|nactus]]
**そこでかなり多量の糧食やほかの必需品を手に入れて、
*[[wikt:en:exercitus#Latin:_noun|exercitum]] ex [[wikt:en:labor#Latin:_work|labore]] atque [[wikt:en:inopia#Latin:_noun|inopia]] <u>reficit</u>.
**軍隊を労苦や欠乏から回復させた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、χ系・β系写本では [[wikt:en:reficit#Latin|reficit]]<sub> (現在形)</sub> だが、<br> φ系写本では [[wikt:en:refecit#Latin|refecit]]<sub> (完了形)</sub> となっている。)</span>
:
*<!--❷--><sup>(2)</sup> Iam [[wikt:en:prope#Adverb|prope]] [[wikt:en:hiems#Latin|hieme]] [[wikt:en:confectus#Latin|confecta]],
**すでに、ほぼ冬は過ぎ去り、
*cum ipso anni tempore ad [[wikt:en:gerendus#Latin|gerendum]] bellum [[wikt:en:vocaretur#Latin|vocaretur]] et ad hostem [[wikt:en:proficisci#Latin|proficisci]] [[wikt:en:constituisset#Latin|constituisset]],
**<small>(カエサルが)</small>まさにその時季に戦争を遂行するために呼び寄せられて、敵の方へ発つことを決意していたときに、
*<u>sive</u> eum ex [[wikt:en:palus#Latin|paludibus]] [[wikt:en:silva#Latin|silvis]]<nowiki>que</nowiki> [[wikt:en:elicio#Latin|elicere]] <u>sive</u> [[wikt:en:obsidio#Latin|obsidione]] [[wikt:en:premo#Latin|premere]] [[wikt:en:posset#Latin|posset]],
**<u>あるいは</u><small>(敵を)</small>沼地や森林から誘い出せるか、<u>あるいは</u>包囲により圧倒することができるか、というときに、
**:<span style="color:#009900;">(訳注:sive ~ sive …「あるいは~、あるいは…」)</span>
*[[wikt:en:legatus#Latin:_noun|legati]] ad eum [[wikt:en:princeps#Latin:_noun|principes]] [[wikt:en:Haedui#Latin|Haeduorum]] [[wikt:en:veniunt#Latin|veniunt]]
**[[w:ハエドゥイ族|ハエドゥイー族]]の領袖たちが使節として彼<small>〔カエサル〕</small>のもとへやって来る。
*[[wikt:en:oratum#Latin:_supine|oratum]], ut maxime [[wikt:en:necessarius#Latin:_unavoidable|necessario]] tempore [[wikt:en:civitas#Latin|civitati]] [[wikt:en:subveniat#Latin|subveniat]]<!--;-->:
**きわめて緊急の時に、部族を助けてくれるように、と頼むために。
:
; ハエドゥイー族の救援要請(以下、間接話法)
*<!--❸--><sup>(3)</sup> [[wikt:en:summus#Latin|summo]] esse in [[wikt:en:periculum#Latin|periculo]] rem,
**事態は最大の危機にある。
*quod, cum [[wikt:en:singulus#Latin|singuli]] [[wikt:en:magistratus#Latin|magistratus]] [[wikt:en:antiquitus#Latin|antiquitus]] [[wikt:en:creari#Latin|creari]] atque [[wikt:en:regius#Latin|regiam]] [[wikt:en:potestas#Latin|potestatem]] <u>annum</u> [[wikt:en:obtineo#Latin|obtinere]] [[wikt:en:consuessent#Latin|consuessent]],
**──というのは、昔から一人ずつの統領が選出されて、一年ごとに支配権力に就くことが常であったのに、
**:<span style="color:#009900;">(訳注:[[ガリア戦記 第1巻#16節|第1巻16節]]によれば、ウェルゴブレトゥス [[w:la:Vergobretus|Vergobretus]]という最高官職が毎年選ばれて大権を司る。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:annum#Latin|annum]] だが、<br> β系写本では [[wikt:en:annuam#Adjective|annuam]] となっている。)</span>
*duo [[wikt:en:magistratus#Latin|magistratum]] [[wikt:en:gerant#Latin|gerant]]
**2名が統領を司り、
*et se [[wikt:en:uterque#Latin|uterque]] eorum legibus <u>creatum esse</u> [[wikt:en:dicat#Latin:_speak|dicat]].
**彼らの双方ともに自分は法により<small>〔合法的に〕</small>選出されたのであると言っているのだから──。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、α系写本では [[wikt:en:creatus#Latin|creatum]] esse だが、<br> β系写本では esse は省かれている。)</span>
: <!-- [[wikt:en:| -->
{{wikipedia|en:Convictolitavis}}
*<!--❹--><sup>(4)</sup> Horum esse alterum [[wikt:en:Convictolitavis#Latin|Convictolitavem]], [[wikt:en:florens#Latin|florentem]] et [[wikt:en:inlustris#Latin|inlustrem]] [[wikt:en:adulescens#Noun|adulescentem]]<!--,-->;
**彼らの一方は、コンウィクトリタウィスで、声望があり、秀でた青年である。
*alterum [[wikt:en:Cotus#Latin|Cotum]], [[wikt:en:antiquissimus#Latin|antiquissima]] familia [[wikt:en:natus#Latin:_born|natum]]
**他方は、コトゥスで、とても古くからの家系に生まれて、
*atque ipsum hominem summae [[wikt:en:potentia#Latin|potentiae]] et magnae [[wikt:en:cognatio#Latin|cognationis]],
**自身も最大勢力と多くの縁戚関係をもつ人物であり、
*cuius frater Valetiacus proximo anno eundem [[wikt:en:magistratus#Latin|magistratum]] [[wikt:en:gesserit#Latin|gesserit]].
**その兄弟ウァレティアクスは前年に同じ統領を司っていたのである。
: <!-- [[wikt:en:| -->
*<!--❺--><sup>(5)</sup> Civitatem esse omnem in [[wikt:en:arma#Latin|armis]];
**部族は皆が武装している。
*[[wikt:en:divisus#Latin|divisum]] [[wikt:en:senatus#Latin|senatum]], divisum [[wikt:en:populus#Latin:_people|populum]], <u>suas</u> [[wikt:en:cuiusque#Latin|cuiusque]] eorum [[wikt:en:clientela#Latin|clientelas]].
**評議会も分裂し、民衆も分裂し、彼ら<small>〔2名〕</small>の<small>(それぞれの)</small>庇護民となっている。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部の suas は主要写本ωの記述だが、より劣った写本では in suas となっている。)</span>
*[[wikt:en:quodsi#Latin|Quodsi]] [[wikt:en:diutius#Latin|diutius]] [[wikt:en:alatur#Latin|alatur]] [[wikt:en:controversia#Latin|controversia]],
**もしこれ以上、紛争が進められれば、
*fore uti pars cum parte civitatis [[wikt:en:confligat#Latin|confligat]].
**部族の派閥と派閥が激突することになるであろう。
*Id ne [[wikt:en:accidat#Etymology_1|accidat]], [[wikt:en:positus#Latin|positum]] in eius [[wikt:en:diligentia#Latin|diligentia]] atque [[wikt:en:auctoritas#Latin|auctoritate]].
**それが起こらないかは、彼(カエサル)の入念さと影響力にかかっている。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===33節===
*<span style="background-color:#ffd;">[[/注解/33節]] {{進捗|00%|2026-10-04}}</span>
;カエサルがハエドゥイー族の権力をコンウィクトリタウィスに与える
:
; カエサルが、ハエドゥイー族の内紛を危惧する
*<!--❶--><sup>(1)</sup> Caesar, <u>etsi</u> a bello atque hoste [[wikt:en:discedo#Latin|discedere]] [[wikt:en:detrimentosus#Latin|detrimentosum]] esse [[wikt:en:existimabat#Latin|existimabat]],
**カエサルは、戦争や敵から離れることは損害をもたらすものである、と考えていたのではあるが、
*<u>tamen</u> non [[wikt:en:ignorans#Latin|ignorans]], [[wikt:en:quantus#Latin|quanta]] ex [[wikt:en:dissensionibus#Latin|dissensionibus]] [[wikt:en:incommodum#Noun|incommoda]] [[wikt:en:oriri#Latin|oriri]] [[wikt:en:consuessent#Latin|consuessent]],
**しかしながら、[[wikt:ja:内訌|内訌]]からどれほどの災厄が生じることが常であるか、知らないではなかったし、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:etsi#Latin|etsi]] ~, [[wikt:en:tamen#Latin|tamen]] …「~ではあるが、しかしながら…」)</span>
*ne [[wikt:en:tantus#Latin|tanta]] et [[wikt:en:tam#Latin|tam]] [[wikt:en:coniunctus#Latin:_participle|coniuncta]] [[wikt:en:populus#Latin|populo]] [[wikt:en:Romanus#Adjective|Romano]] [[wikt:en:civitas#Latin|civitas]],
**──これほど大きく、これほどローマ人民と協同している<small>(ハエドゥイーの)</small>{{ruby|部族国家|キーウィタース}}が、
*quam ipse semper [[wikt:en:aluisset#Latin|aluisset]] [[wikt:en:omnis#Latin|omnibus]]<nowiki>que</nowiki> rebus [[wikt:en:ornasset#Latin|ornasset]],
**彼らのことを<small>(カエサル)</small>自身は常に助成して、かつあらゆる事柄で敬意を表していたのだが、
*ad [[wikt:en:vis#Latin|vim]] atque [[wikt:en:arma#Latin|arma]] [[wikt:en:descenderet#Latin|descenderet]],
**<small>(彼らが内紛という)</small>暴力や戦乱に沈み込まないように、
*atque ea pars, quae [[wikt:en:minus#Latin:_adverb|minus]] sibi [[wikt:en:confideret#Latin|confideret]], [[wikt:en:auxilia#Latin|auxilia]] a [[wikt:en:Vercingetorix#Latin|Vercingetorige]] [[wikt:en:arcesseret#Latin|arcesseret]],
**かつ、自分たちにとって劣勢だと確信している一派が[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の支援を呼び寄せないように──
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ne ~ civitas, ~ descenderet, ~ arcesseret「~部族が、~沈まないように、~招かないように」)</span>
*huic rei [[wikt:en:praevertendus#Latin|praevertendum]] [[wikt:en:existimavit#Latin|existimavit]],
**この事柄は<small>(戦争遂行よりも)</small>優先されるべき、と考えた。
:
; ハエドゥイー族の内紛を沙汰すべく、カエサル自らが赴く
*<!--❷--><sup>(2)</sup> et, quod [[wikt:en:lex#Latin|legibus]] [[wikt:en:Haedui#Latin|Haeduorum]] iis, qui summum [[wikt:en:magistratus#Latin|magistratum]] [[wikt:en:obtinerent#Latin|obtinerent]], [[wikt:en:excedo#Latin|excedere]] ex finibus non [[wikt:en:liceret#Latin|liceret]],
**──というのは、[[w:ハエドゥイ族|ハエドゥイー族]]の法により、最高官職に就いている者は領土から出ることを許されないので──
*ne [[wikt:en:aliquid#Latin:_pronoun|quid]] de [[wikt:en:ius#Latin:_justice|iure]] aut de [[wikt:en:lex#Latin|legibus]] eorum [[wikt:en:deminuisse#Latin|deminuisse]] [[wikt:en:videretur#Latin|videretur]],
**<small>(カエサルが)</small>彼らの法令あるいは法制について何ら軽視したとは思われないように、
[[画像:FR-58-Decize29.JPG|thumb|right|250px|デケティア([[w:la:Decetia|Decetia]])すなわち現在のドスィーズ([[w:fr:Decize|Decize]])の景観。[[w:ハエドゥイ族|ハエドゥイー族]]の版図であった[[w:ニエーヴル県|ニエーヴル県]]の南部にあり、リゲル川(現[[w:ロワール川|ロワール川]])のほとりに位置している。]]
*ipse in [[wikt:en:Haedui#Latin|Haeduos]] [[wikt:en:proficisci#Latin|proficisci]] [[wikt:en:statuit#Latin|statuit]]
**<small>(カエサル)</small>自身がハエドゥイー族のもとに出発することを決心した。
*[[wikt:en:senatus#Latin|senatum]]<nowiki>que</nowiki> omnem et <u>quos inter [[wikt:en:controversia#Latin|controversia]] [[wikt:en:esset#Latin:_be|esset]]</u>
**かつ、<u>評議会</u>の全員、および紛争が介在しているところの者たちを
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:部族国家の合議制統治機関を、カエサルの『ガリア戦記』では<br> ローマの元老院になぞらえて [[wikt:en:senatus#Latin|senatus]] と呼んでいるが、<br> 区別して「評議会」と訳す。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:quos inter ~ は、関係節の関係代名詞 quos が<br> 前置詞 inter の前に出ている語順。)</span>
*ad se [[wikt:en:Decetia#Latin|Decetiam]] [[wikt:en:evocavit#Latin|evocavit]].
**デケティアの自分<small>〔カエサル〕</small>のもとへ呼び出した。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:デケティア [[w:la:Decetia|Decetia]] は、現在の[[w:en:Decize|Decize]] ドシーズ(ドゥスィズ<ref>Decize の発音は [[wikt:fr:Decize|Decize]] を参照せよ。</ref>)であると考えられている。)</span>
:
*<!--❸--><sup>(3)</sup> Cum prope omnis civitas eo [[wikt:en:convenisset#Latin|convenisset]], [[wikt:en:doceretur#Latin|doceretur]]<nowiki>que</nowiki>
**部族のほぼすべての<small>(主だった)</small>者たちがそこに集まっていたときに、<small>(以下のことが)</small>報知された。
*[[wikt:en:paucus#Latin|paucis]] [[wikt:en:clam#Latin|clam]] [[wikt:en:convocatus#Latin|convocatis]] [[wikt:en:alius#Latin|alio]] loco, [[wikt:en:alius#Latin|alio]] tempore atque [[wikt:en:oportuerit#Latin|oportuerit]],
**わずかな者たちが密かに、あるべきはずとは別の場所、別の時に呼び集められて、
*[[wikt:en:fratrem#Latin|fratrem]] a [[wikt:en:fratre#Latin|fratre]] [[wikt:en:renuntiatus#Latin|renuntiatum]] <span style="color:#009900;">[esse]</span>,
**兄により弟<small>(の就位)</small>が告げられたというのだ。
**:<span style="color:#009900;">(訳注:前年に統領であった兄ウァレティアクスによって<br> 弟コトゥスの統領への就位が告げられたということであろう。)</span>
*<span style="font-size:11pt;">cum leges <u>duo</u> ex una familia [[wikt:en:vivus#Latin|vivo]] [[wikt:en:utroque#Latin|utroque]] <u>non solum</u> [[wikt:en:magistratus#Latin|magistratus]] [[wikt:en:creari#Latin|creari]] [[wikt:en:vetarent#Latin|vetarent]], <u>sed etiam</u> in [[wikt:en:senatus#Latin|senatu]] esse [[wikt:en:prohiberent#Latin|prohiberent]],</span>
**<span style="font-size:11pt;">──法が、一家族の2名が双方とも存命中に、統領に選出されるのを禁じるだけでなく、<u>評議会</u>にいることも禁じているのに──</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:non [[wikt:en:solum#Latin:_adverb|solum]] ~ [[wikt:en:sed#Latin|sed]] [[wikt:en:etiam#Latin|etiam]] …「~のみならず、…もまた」)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、χ・β系写本や写本B・M・Sでは [[wikt:en:duo#Latin|duo]] だが、<br> 写本L・Nでは [[wikt:en:duos#Latin|duos]] となっている。)</span>
*[[wikt:en:Cotus#Latin|Cotum]] [[wikt:en:imperium#Latin|imperium]] [[wikt:en:depono#Latin|deponere]] [[wikt:en:coegit#Latin|coegit]]<!--,-->;
**(カエサルは)コトゥスに支配権を放棄することを強要した。
: <!-- [[wikt:en:| -->
*<!--❹--><sup>(4)</sup> [[wikt:en:Convictolitavis#Latin|Convictolitavem]], qui per [[wikt:en:sacerdos#Latin|sacerdotes]] [[wikt:en:mos#Latin|more]] [[wikt:en:civitas#Latin|civitatis]] [[wikt:en:intermissus#Latin|intermissis]] [[wikt:en:magistratus#Latin|magistratibus]] [[wikt:en:esset#Latin:_be|esset]] [[wikt:en:creatus#Latin|creatus]],
**コンウィクトリタウィスは、統領が空位になったときに、部族の規則により、<u>祭司</u>を通じて選出されたので、
**:<span style="color:#009900;">(訳注:ここでいう祭司 sacerdos が[[ガリア戦記 第6巻#13節|第6巻13節]]以下で説明された[[w:ドルイド|ドルイド]]と同じか否かは不詳である。)</span>
*[[wikt:en:potestas#Latin|potestatem]] [[wikt:en:obtineo#Latin|obtinere]] [[wikt:en:iussit#Latin|iussit]].
**<small>(カエサルは彼に)</small>権力の座に就くことを命じた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===34節===
*<span style="background-color:#ffd;">[[/注解/34節]] {{進捗|00%|2026-10-18}}</span>
;ハエドゥイー族を動員し、ローマ軍をカエサルとラビエーヌスの二隊に分散
: <!-- [[wikt:en:| -->
*<!--❶--><sup>(1)</sup> Hoc decreto interposito,
**この決定により仲裁すると、
*cohortatus [[wikt:en:Haedui#Latin|Haeduos]],
**<small>(カエサルは)</small>[[w:ハエドゥイ族|ハエドゥイー族]]に以下のように励ました。
*ut controversiarum ac dissensionis obliviscerentur
**<small>(部族内部の)</small>紛争や不和を忘れるように、
*atque omnibus omissis his rebus
**かつ、これらすべての事情を度外視して、
*huic bello servirent,
**<small>(ウェルキンゲトリークスとの)</small>この戦争に尽くすように、
*eaque, quae meruissent, praemia ab se devicta Gallia exspectarent,
**ガッリアが征服されたときには<small>(彼らが)</small>受けるに値する自分<small>〔カエサル〕</small>からの恩賞を期待するように、
*equitatum<nowiki>que</nowiki> omnem et peditum milia X([[wikt:en:decem#Latin|decem]]) sibi celeriter mitterent,
**<small>(ハエドゥイー族の)</small>騎兵隊のすべてと歩兵1万名を自分<small>〔カエサル〕</small>に速やかに派遣するように、
*quae in praesidiis rei frumentariae causa disponeret,
**それらは糧食供給のために守備隊として分けて置くものである、と。
*exercitum in duas partes divisit:
**<small>(カエサルは)</small>軍隊を二つの方面軍に分けた。
[[画像:Brioude pont.JPEG|thumb|right|250px|エラウェル川([[w:la:Elaver|Elaver]])こと現在の[[w:アリエ川|アリエ川]](Allier)。ハエドゥイー族領の境辺りでリゲル川([[w:la:Liger|Liger]])こと現[[w:ロワール川|ロワール川]]([[w:fr:Loire (fleuve)|Loire]])に合流する。]]
: <!-- [[wikt:en:| -->
*<!--❷--><sup>(2)</sup> quattuor legiones in [[wikt:en:Senones#Latin|Senones]] [[wikt:en:Parisii#Latin|Parisios]]<nowiki>que</nowiki> [[wikt:en:Labienus#Latin|Labieno]] ducendas dedit,
**4個[[w:ローマ軍団|軍団]]をセノネース族やパリスィイー族のところに率いて行くべく[[w:ティトゥス・ラビエヌス|ラビエーヌス]]に委ねた。
**:<span style="color:#009900;">(訳注:ラビエーヌス [[w:la:Titus Labienus|Labienus]] のこの遠征については[[#57節|57節]]~62節で述べられる。)</span>
*sex ipse in [[wikt:en:Arverni#Latin|Arvernos]] ad oppidum [[wikt:en:Gergovia#Latin|Gergoviam]] secundum flumen [[wikt:en:Elaver#Latin|Elaver]] duxit;
**6個を自身<small>〔カエサル〕</small>がアルウェルニー族のところの城塞都市ゲルゴウィアへエラウェル川に沿って率いて行った。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:エラウェル川 [[w:la:Elaver|Elaver]] は現在の[[w:アリエ川|アリエ川]] Allier である。)</span>
*equitatus partem illi [[wikt:en:adtribuit#Latin|adtribuit]], partem sibi reliquit.
**騎兵隊の一部は彼<small></small>(ラビエーヌス)に割り当てて、(残りの)部分は自分のもとに残した。
: <!-- [[wikt:en:| -->
*<!--❸--><sup>(3)</sup> Qua re cognita
**その事を知ると、
*[[wikt:en:Vercingetorix#Latin|Vercingetorix]] omnibus interruptis eius fluminis pontibus
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]はその川のすべての橋を破却しながら、
*ab altera fluminis parte iter facere coepit.
**川の別の側を行軍し始めた。
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===35節===
'''カエサルが陽動によってエラウェル川に架橋、渡河する'''
*① Cum uterque utrimque exisset exercitus<ref>utrimque exisset exercitus はα系写本の記述で、β系写本では utrique esset exercitui となっている。</ref>, in conspectu, fereque e regione castris castra ponebant<ref>ponebant はα系写本の記述で、β系写本では poneret となっている。</ref>,
**(ガッリア勢とローマ勢の)軍隊の双方が互いに視界にあって、ほぼ真向かいに互いの陣営を設置したときに、
*dispositis exploratoribus, necubi effecto ponte Romani copias traducerent,
**(ウェルキンゲトリークスは)ローマ人の軍勢がどこにも橋を造って渡河しないように、偵察者たちを分けて置き、
*erat in magnis Caesaris<ref>Caesaris はα系写本などの記述で、π系写本などでは Caesari となっている。</ref> difficultatibus res,
**カエサルにとって事態は大きな困難になっていた。
*ne maiorem aestatis partem flumine impediretur,
**夏の大部分(の対岸の敵との交戦)が川により妨げられるのではないか、
*quod non fere ante autumnum [[w:la:Elaver|Elaver]] vado transiri solet.
**というのは、[[w:アリエ川|エラウェル川]]は秋の前はほとんど浅瀬を渡らない習わしであったからだ。
*② Itaque, ne id accideret, silvestri loco castris positis
**こうして、それが生じないように、森林地帯に陣営を設置した。
*e regione unius eorum pontium, quos [[w:la:Vercingetorix|Vercingetorix]] rescindendos curaverat,
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]が切り裂かれるように手配していたところの橋の一つの真向かいに。
*postero die cum duabus legionibus in occulto restitit;
**翌日に、2個[[w:ローマ軍団|軍団]]とともに密かなところに留まった。
*③ reliquas copias cum omnibus impedimentis, ut consueverat, misit,
**残りの軍勢(=4個軍団)をすべての輜重とともに、通常のように、出発させた。
*captis<ref>写本(ω)では captis となっているが、Herald Fuchs の校訂版(1932年)では sic collocatis という記述が提案されている。etc.</ref> quibusdam cohortibus, uti numerus legionum constare videretur.
**軍団の数を保っていると(敵から)見られるように、いくつかの<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>を含ませていた。
*④ His quam longissime possent egredi<ref>egredi はα系写本の記述で、β系写本では progredi となっている。</ref> iussis,
**彼ら(4個軍団)には、できる限り遠くまで前進することを命じた。
*cum iam ex diei tempore coniecturam ceperat<ref>ceperat はα系写本の記述で、β系写本では caperet となっている。</ref> in castra perventum,
**すでに、日の時刻から(彼らが)宿営地に到達したと(カエサルが)推測をしたときに、
*isdem sublicis, quarum pars inferior integra remanebat, pontem reficere coepit.
**(前述の)同じ橋杭は、そのより下方の部分が損なわれないで残っていたので、橋を修復し始めた。
*⑤ Celeriter effecto opere
**速やかに工事が成し遂げられて、
*legionibusque traductis et loco castris idoneo delecto
**(2個)軍団が渡河させられて、陣営に適切な地点を選んで、
*reliquas copias revocavit.
**残りの軍勢(=4個軍団)を呼び戻した。
*⑥ Vercingetorix re cognita,
**ウェルキンゲトリークスは事態を知って、
*ne contra suam voluntatem dimicare cogeretur,
**自らの意向に反して(ローマ勢と)争闘することを強いられないように、
*magnis itineribus antecessit.
**強行軍で(ゲルゴウィアに向けて)先行した。
===36節===
[[画像:FR-63-Gergovie.JPG|thumb|right|300px|[[w:ゲルゴウィア|ゲルゴウィア]]([[w:la:Gergovia|Gergovia]])すなわち現在のジェルゴヴィ高地([[w:fr:Plateau de Gergovie|Plateau de Gergovie]])の[[w:ピュイ=ド=ドーム県|ピュイ=ド=ドーム県]]県道978号(D978)からの眺望。19世紀の[[w:ウジェーヌ・ストッフェル|ウジェーヌ・ストッフェル]]大佐(colonel Eugène Stoffel)の発掘調査によって、城砦やローマ軍の溝の遺構などが発見され、当地がゲルゴウィアの古戦場だと確認された。]]
[[画像:Siège_GergovieI_-52.png|thumb|right|300px|ゲルゴウィアにおける両軍の布陣図。山の頂にある城塞都市に隣接してガッリア諸部族の陣営(黄色部分)、右方にローマ軍の大きな陣営(赤色部分)と左下にローマ軍の小さな陣営(赤色部分)が見える。推定される位置関係は19世紀の[[w:ウジェーヌ・ストッフェル|ストッフェル]]大佐の発掘調査に依拠しており、小陣営があった地点は現在のラ・ロシュ=ブランシュ([[w:fr:La Roche-Blanche (Puy-de-Dôme)|La Roche-Blanche]])だと考えられている。]]
'''両軍がゲルゴウィアの要衝に陣営を築く'''
*① Caesar ex eo loco quintis castris [[w:la:Gergovia|Gergoviam]] pervenit
**カエサルは(渡河した)その地点から5回目の宿営で[[w:ゲルゴウィア|ゲルゴウィア]]に到着した。
*equestrique eo die proelio levi facto,
**(到着した)その日に(ガッリア勢と)軽微な[[w:騎兵|騎兵]]戦を闘って、
*perspecto urbis situ, quae posita in altissimo monte omnes aditus difficiles habebat,
**山の非常に高いところに位置し、すべての接近路を困難なものとしている(ゲルゴウィアの)町の地勢を認識して、
*de expugnatione<ref>expugnatione はα系写本の記述で、β系写本では oppugnatione となっている。</ref> desperavit,
**(拙速に突撃するような)攻略については断念して、
*de obsessione non prius agendum constituit, quam rem frumentariam expedisset.
**糧食調達の整備をするより前には、攻囲について行なうべきでないと決心した。
*② At [[w:la:Vercingetorix|Vercingetorix]], castris prope oppidum in monte<ref>in monte はβ系写本の記述で、α系写本にはない。</ref> positis,
**それに対して、[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、山中の城塞都市の近くに陣営を設置して、
*mediocribus circum se intervallis separatim singularum civitatium<ref>civitatium はB・M・L・N写本の記述で、χ・S・β系写本では civitatum となっている。</ref> copias conlocaverat
**自陣の周りに、適切な間隔で個々の部族の軍勢を別々に駐屯させて、
*atque omnibus eius iugi collibus occupatis, qua despici poterat,
**その尾根のうち(山麓を)見下ろすことができたすべての丘陵を占有して、
*horribilem speciem praebebat;
**恐ろしげな姿を現わした。
*③ principesque earum civitatium<ref>civitatium はA・Q・B・M・L・N写本の記述で、Q・S・β系写本では civitatum となっている。</ref>, quos sibi ad consilium capiendum delegerat,
**(ウェルキンゲトリークス)自らが作戦を立てるために選び出していた諸部族の領袖たちに
*prima luce cotidie ad se convenire iubebat,
**毎日、夜明けに自分のところへ集まることを命じた。
*seu quid communicandum, seu quid administrandum videretur,
**何らかのことを伝達・協議するのか、あるいは何らかのことを指導するのだと思われる。
**:<span style="color:#009900;">(訳注:seu ~ seu …「あるいは~、あるいは…」)</span>
*④ neque ullum fere diem intermittebat, quin equestri proelio interiectis sagittariis,
**騎兵戦に弓兵を介在させることを、ほとんどどの日も中断せずに、
*quid in quoque esset animi ac virtutis suorum, perspiceretur<ref>perspiceretur はα系写本の記述で、T写本では perspiceret、β系写本では periclitaretur となっている。</ref>.
**どのような心構えや武勇が、配下の者たちのおのおのにあるかを、吟味した。
*⑤ Erat e regione oppidi collis sub ipsis radicibus montis
**山のその麓の下方に、城塞都市の真向かいに、丘陵があって、
*egregie munitus atque ex omni parte circumcisus;
**あらゆる方面から周囲が険しくて、(その地形により)すばらしく護られていた。
*quem si tenerent nostri, et aquae magna parte et pabulatione libera prohibituri hostes videbantur.
**もし、それを我が方(ローマ勢)が占めれば、水源の大半と自由な糧秣徴発から敵たちを妨げるであろうと思われた。
*⑥ Sed is locus praesidio ab his, non nimis firmo, tenebatur.
**だが、その地点は、彼ら(ガッリア勢)により、大して強力ではない守備隊で占められていた。
*⑦ Tamen silentio noctis Caesar ex castris egressus,
**にもかかわらず(昼間ではなく)夜の静けさのうちに、カエサルは陣営から出撃して、
*priusquam subsidio ex oppido veniri posset,
**城塞都市(のそばの陣営)から援兵に来られるより前に、
*deiecto praesidio potitus loco duas ibi legiones conlocavit
**守備隊を追い出して、地点を占拠して、そこに2個[[w:ローマ軍団|軍団]]を駐屯させた。
*fossamque duplicem duodenum pedum a maioribus castris ad minora perduxit,
**12[[w:ペース (長さ)|ペース]](=約3.6mの幅)の二重の堀を、より大きな陣営から(この丘陵の)より小さな陣営へ至らしめた。
*ut tuto ab repentino hostium incursu singuli commeare possent.
**敵たちの不意の襲撃から安全に、1人1人が往来することができるように。
===37節===
'''ハエドゥイー族のコンウィクトリタウィスがガッリア同盟軍に内応する'''
*① Dum haec ad [[w:la:Gergovia|Gergoviam]] geruntur,
**これらがゲルゴウィアのところでなされている間に、
*Convictolitavis [[w:la:Haedui|Haeduus]],
**[[w:ハエドゥイ族|ハエドゥイー族]]のコンウィクトリタウィスは、
*cui magistratum adiudicatum a Caesare demonstravimus,
**その者はカエサルによって統領として承認されたと([[#33節|33節]]で)既述したが、
*sollicitatus ab Arvernis pecunia cum quibusdam adulescentibus conloquitur,
**[[w:アルウェルニ族|アルウェルニー族]]により金銭でそそのかされて、ある若者たちと談判した。
*quorum erat princeps Litaviccus atque eius fratres,
**その者たちの領袖は[[w:リタウィックス|リタウィックス]]とその兄弟たちであり、
*amplissima familia nati adulescentes.
**とても強大な一族に生まれた若者たちだった。
*② Cum his praemium communicat
**彼らとともに(アルウェルニー族からの)報酬を共有して、
*hortaturque, ut se liberos et imperio natos meminerint.
**自分たちが自由民で支配層の生まれであるのを思い起こせ、と鼓舞した。
*③ Unam esse Haeduorum civitatem, quae certissimam Galliae victoriam distineat<ref>distineat はM・N・π・R写本などの記述で、Q・U写本などでは destineat 、A・B・S写本などでは dedistineat などとなっている。</ref>;
**ハエドゥイーの部族国家は、ガッリアの至極確実な勝利を阻んでいる唯一のものであり、
*eius auctoritate reliquas contineri;
**その声望により、ほかの(同盟部族の)ものたちが(ローマ側に)保持されているが、
*qua traducta locum consistendi Romanis in Gallia non fore.
**それが(ガッリア勢に)引き入れられることによって、ガッリアにおいてローマ人が留まり続ける場はないであろう。
*④ Esse nonnullo se Caesaris beneficio adfectum,
**自分はカエサルの少なからぬ恩義をかけられているが、
*sic tamen, ut iustissimam apud eum causam obtinuerit;
**しかし、彼(カエサル)のもとで至極合法的な理由を手に入れたまでであり、
*sed plus communi libertati tribuere.
**しかし、(ガッリアの)共通の自由に従うことの方がより大きい。
*⑤ Cur enim potius Haedui de suo iure et de legibus ad Caesarem disceptatorem quam Romani ad Haeduos veniant?
**なぜ実際、ハエドゥイー族は自らの法令や法制について、ローマ人がハエドゥイー族へ来るよりむしろ、カエサルを仲裁者とするのか?
*⑥ Celeriter adulescentibus et oratione magistratus et praemio deductis,
**若者たちは速やかに、統領の演説と報酬によって導き入れられた。
*cum se vel principes eius consilii fore profiterentur,
**自分たちがその謀計の首謀者にすらなろうと申し出たときに、
*ratio perficiendi quaerebatur,
**(謀計を)成し遂げる方法が求められた。
*quod civitatem temere ad suscipiendum bellum adduci posse non confidebant.
**というのは、部族がむやみに(ローマ人との)戦争実行へ動かされることができるとは確信していなかったからだ。
*⑦ Placuit, ut Litaviccus decem illis milibus, quae Caesari ad bellum mitterentur, praeficeretur atque ea ducenda curaret,
**リタウィックスに、カエサルに戦争のために派遣されるあの(歩兵)1万名を指揮させ率いさせるのが良いとされた。
**:<span style="color:#009900;">(訳注:歩兵1万名については[[#34節|34節]]を参照。)</span>
*fratresque eius ad Caesarem praecurrerent.
**彼の兄弟たちは、カエサルのところへ先立って行った。
*Reliqua qua ratione agi placeat constituunt.
**残りのことが、どのようなやり方で行なわれるのが良いかが決められた。
===38節===
'''リタウィックスの鼓舞でハエドゥイー族の歩兵1万が挙兵する'''
*① Litaviccus accepto exercitu
**リタウィックスは(1万名の)歩兵隊を受け取って、
*cum milia passuum circiter XXX(triginta)<ref>XXX(triginta) はα系写本の記述で、β系写本では XL(quadraginta) となっている。</ref> ab<ref>ab は写本(ω)の記述であるが、モイゼル(Henricus Meusel)は a を提案している。</ref> [[w:la:Gergovia|Gergovia]] abesset,
**[[w:ゲルゴウィア|ゲルゴウィア]]から約30[[w:ローママイル|ローママイル]](=45km弱)離れたところに来たときに、
*convocatis subito militibus lacrimans,
**兵士たちを突然に呼び集めて、泣きながら、
*② "Quo proficiscimur," inquit, "milites?
**「兵士らよ、どこへ我々は進むのか?」と言った。
*Omnis noster equitatus, omnis nobilitas interiit;
**「我が方(ハエドゥイー族)のすべての[[w:騎兵|騎兵隊]]とすべての高貴な者たちは滅んだ。
*principes civitatis, [[w:la:Eporedorix|Eporedorix]] et Viridomarus,
**部族の領袖たち、エポレドリクスとウィリドマルスは、
*insimulati proditionis ab Romanis indicta causa interfecti sunt.
**裏切りの罪を着せられて、ローマ人たちによって、弁解の余地なく殺されてしまったのだ。
**:<span style="color:#009900;">(訳注:indicta causa「弁解の余地なく」)</span>
*③ Haec ab ipsis<ref>ipsis はα系写本の記述で、β系写本では his となっている。</ref> cognoscite, qui ex ipsa caede fugerunt;
**これは、その虐殺から逃げて来た当人たちから聞き知ってくれ。
*nam ego fratribus atque omnibus meis propinquis interfectis
**なぜなら、私は、兄弟たちやすべての我が親族たちが殺されて
*dolore prohibeor, quae gesta sunt, pronuntiare."
**悲嘆により、なされたことを物語ることを妨げられているからだ。」
*④ Producuntur hi<ref>hi はφ・β系写本の記述で、A写本では ii 、Q写本では hii となっている。</ref>, quos ille edocuerat quae dici vellet,
**彼(リタウィックス)が言って欲しいことを教え込んでいた者たちが連れ出されて来て、
*atque eadem, quae Litaviccus pronuntiaverat, multitudini exponunt:
**リタウィックスが物語ったのと同じことを群衆に説明した。
*⑤ multos<ref>multos はα系写本の記述で、β系写本では omnes となっている。</ref> equites [[w:la:Haedui|Haeduorum]] interfectos, quod conlocuti cum Arvernis dicerentur;
**ハエドゥイー族の多くの騎兵たちは、アルウェルニー族と談判したと言われたので、殺された、と。
*ipsos se inter multitudinem militum occultasse atque ex media caede fugisse.
**(彼ら)自身は、兵士ら多数の間に身を隠して、虐殺の最中から逃げて来たのだ、と。
*⑥ Conclamant Haedui et Litaviccum obsecrant, ut sibi consulat.
**ハエドゥイー族の者たちは叫び声を上げて、リタウィックスに、自分たちに(どうするべきか)助言するように懇願した。
*"Quasi vero" inquit ille "consilii sit res, ac non necesse sit
**彼は言った「実にあたかも、事態が協議するべきというかのようだ。(協議する)必要はないのだ。
*nobis Gergoviam contendere et cum Arvernis nosmet coniungere.
**我々にとって、ゲルゴウィアに急行して、アルウェルニー族と我々が合流することは。
*⑦ An dubitamus, quin nefario facinore admisso Romani iam ad nos interficiendos concurrant?
**非道の悪行を犯したローマ人がもはや我々を殺戮するために襲いかかって来ることを疑うのかね?
*⑧ Proinde, si quid in nobis animi est,
**それゆえに、もし我々に何らかの心構えがあるならば、
*persequamur eorum mortem, qui indignissime interierunt,
**とても不面目に滅びた者たちの死に仇討ちしようではないか。
*atque hos latrones interficiamus."
**かの略奪者たち(ローマ人)を誅殺しようではないか。」
*Ostendit cives Romanos, qui eius praesidii fiducia una erant<ref>erant は写本(ω)の記述であるが、モムゼン(Mommsen)らは ierant を提案している。</ref>:
**(リタウィックスは)彼の護衛を信頼して一緒にいたローマ市民たちを示した。
*⑨ Continuo<ref>Continuo はβ系写本の記述で、α系写本にはない。</ref> magnum numerum frumenti commeatusque diripit,
**ただちに、(ローマ市民たちの)糧食や必需品の多数を略奪して、
*ipsos crudeliter excruciatos interficit.
**当人たちを残酷に拷問して殺した。
*⑩ Nuntios tota civitate Haeduorum dimittit,
**ハエドゥイー族の伝令たちを、部族全体にわたって遣わして、
*in<ref>in はβ系写本の記述だが、α系写本にはない。</ref> eodem mendacio de caede equitum et principum permovet<ref>permovet はL・N写本の記述だが、B写本では permanet 、χ・M・S・β系写本などでは permonet となっている。</ref>;
**騎兵や領袖たちの虐殺について、同じ嘘によって扇動した。
*hortatur ut simili ratione atque ipse fecerit suas iniurias persequantur.
**(リタウィックス)自身がしたのと同様のやり方で、自分たちの(受けた)無法に仇討ちするようにと鼓舞した。
===39節===
'''エポレドリクスがハエドゥイー勢1万の寝返りをカエサルに知らせる'''
*① [[w:la:Eporedorix|Eporedorix]] [[w:la:Haedui|Haeduus]], summo loco natus adulescens et summae domi potentiae,
**[[w:ハエドゥイ族|ハエドゥイー族]]の[[w:エポレドリクス|エポレドリクス]]は、最高の身分に生まれた青年で、本国で最高の権勢にあった。
*et una Viridomarus, pari aetate et gratia, sed genere dispari,
**とともに、[[w:ウィリドマルス|ウィリドマルス]]も、同じ年輩で、同様に敬意を受けていたが、異なる階級であった。
*quem Caesar ab Diviciaco sibi traditum ex humili loco ad summam dignitatem perduxerat,
**カエサルは彼を[[w:ディウィキアクス|ディウィキアクス]]により託されて、低い身分から最高の地位へと引き立てていた。
**:<span style="color:#009900;">(訳注:ディウィキアクスはかつてローマに援助を求めた有力者で、カエサルに殺されたドゥムノリクスの兄弟。)</span>
*in equitum numero convenerant nominatim ab eo evocati.
**(その2人は)彼(カエサル)から名指しで呼び出されて、[[w:騎兵|騎兵]]として(ローマの陣中に)一緒に来ていた。
*② His erat inter se de principatu contentio
**彼ら(2人)には、互いに指揮官の座についての競争があって、
*et in illa magistratuum controversia
**あの統領をめぐる紛争においても
**:<span style="color:#009900;">([[#32節|32節]]~33節を参照。)</span>
*alter pro Convictolitavi, alter pro Coto summis opibus pugnaverant<ref>pugnaverant はα系写本の記述で、β系写本では pugnaverat となっている。</ref>.
**一方は[[w:コンウィクトリタウィス|コンウィクトリタウィス]]のために、他方は[[w:コトゥス|コトゥス]]のために、最大限の助力で奮闘していた。
*③ Ex his Eporedorix cognito Litavicci consilio
**彼らのうちエポレドリクスが[[w:リタウィックス|リタウィックス]]の謀計を知って、
*media fere nocte rem ad Caesarem defert;
**ほぼ真夜中に、事情をカエサルのところへ報知した。
*orat ne patiatur civitatem pravis adulescentium consiliis ab amicitia populi Romani deficere;
**(ハエドゥイーの)部族が青年たちのゆがんだ謀計によってローマ人民の友好から背くことを容認しないように懇願した。
*quod futurum provideat, si se tot hominum milia cum hostibus coniunxerint,
**もし、このように多くの幾千もの同胞が敵たちと協同するならば、(上記の)ことが生じると用心するように、と。
*quorum salutem neque propinqui neglegere,
**(寝返った1万の歩兵たちの)縁者たちは彼らの身の安全をなおざりにすることはないし、
*neque civitas levi momento aestimare posset.
**部族が(寝返った歩兵たちの)影響力を軽く評価できない、と。
===40節===
'''カエサルが4個軍団を率いてハエドゥイー勢1万を制止し、リタウィックスは逃亡'''
*① Magna adfectus sollicitudine hoc nuntio Caesar,
**この知らせにより、大きな不安を感じたカエサルは、
*quod semper [[w:la:Haedui|Haeduorum]] civitati praecipue indulserat,
**常に[[w:ハエドゥイ族|ハエドゥイーの部族]]にとくに気遣っていたので、
*nulla interposita dubitatione legiones expeditas quattuor equitatumque omnem ex castris educit;
**何らためらいを差しはさまずに、戦備を整えた4個[[w:ローマ軍団|軍団]]と[[w:騎兵|騎兵隊]]すべてを陣営から進発させた。
*② nec fuit spatium tali tempore ad contrahenda castra,
**このような情勢で、陣営を縮小するための余地はなかった。
**:<span style="color:#009900;"> (訳注:[[#36節|36節]]で、カエサルはゲルゴウィアの大きな陣営および敵に近い小さな陣営を6個軍団で守っていた。)</span>
*quod res posita in celeritate videbatur;
**というのは、事態は迅速さにかかっていると思われたからだ。
*C.(Gaium) Fabium legatum cum legionibus duabus castris praesidio relinquit.
**総督副官[[w:ガイウス・ファビウス|ガイウス・ファビウス]]を2個軍団とともに陣営の守備に残しておいた。
*③ Fratres Litavicci cum comprehendi iussisset,
**(カエサルは)リタウィックスの兄弟たちを拘束することを命じていたのだが、
*paulo ante reperit ad hostes fugisse.
**少し前に(ゲルゴウィアの)敵たちのところへ去ったことを探り出した。
*④ Adhortatus milites ne necessario tempore itineris labore permoveantur,
**(カエサルは)緊急の時に、行軍の労苦により乱されないように、兵士たちを激励して、
*cupidissimis omnibus progressus milia passuum [[w:la:Viginti quinque|XXV]] agmen Haeduorum conspicatus<ref>conspicatus はα系写本の記述で、β系写本では conspicatur となっている。</ref>
**皆がとても熱中していたので、25[[w:|ローママイル]](約37km)進んで、ハエドゥイー族の隊列を視認した。
*immisso equitatu iter eorum moratur atque impedit
**騎兵隊を突進させて、彼ら(ハエドゥイー勢)の行軍を妨げて、停止させた。
*interdicitque omnibus ne quemquam interficiant.
**(ハエドゥイー勢を)誰一人殺さないように(ローマ勢の)皆に禁じた。
*⑤ [[w:la:Eporedorix|Eporedorigem]] et Viridomarum, quos illi interfectos existimabant,
**彼ら(ハエドゥイー勢)が、殺されたものと考えていた者たち、[[w:エポレドリクス|エポレドリクス]]と[[w:ウィリドマルス|ウィリドマルス]]に、
*inter equites versari suosque appellare iubet.
**(ハエドゥイー勢の)騎兵たちの間を歩き回って、味方に呼びかけることを命じた。
*⑥ His cognitis et Litavicci fraude perspecta Haedui manus tendere,
**彼ら(2人)に気付いて、リタウィックスのごまかしを見通して、ハエドゥイー族の者たちは手を差し出して、
*deditionem significare et proiectis armis mortem deprecari incipiunt.
**降伏の意を表して、武器を投げ出して、死を赦免されることを求め始めた。
*⑦ Litaviccus cum suis clientibus,
**[[w:リタウィックス|リタウィックス]]は、配下の子分たちとともに、
*quibus more Gallorum nefas est etiam in extrema fortuna deserere patronos,
**ガッリア人の風習では、最悪の境遇にあってさえも(子分が自分の)親分を見捨てることは非道であったので、
*[[w:la:Gergovia|Gergoviam]] profugit.
**(親分・子分ともども)[[w:ゲルゴウィア|ゲルゴウィア]]に逃れた。
===41節===
'''副官ファビウスの報告:ゲルゴウィアの敵勢がローマ陣営に襲来'''
*① Caesar nuntiis ad civitatem [[w:la:Haedui|Haeduorum]] missis,
**カエサルは伝令たちを[[w:ハエドゥイ族|ハエドゥイー]]の部族(当局)に遣わして、
*qui suo beneficio conservatos docerent quos iure belli interficere potuisset,
**彼ら(伝令)に、戦時の権限により殺せた者たち(歩兵1万)は(カエサル)自らの恩恵により許されたのだ、と説かせた。
*tribusque horis noctis exercitui ad quietem datis castra ad [[w:la:Gergovia|Gergoviam]] movit.
**(カエサルは)夜の3時間を軍隊に休息のために与えて、陣営を引き払ってゲルゴウィアの方へ向かった。
**:<span style="color:#009900;">(訳注:古代ローマの不定時法では、夏季の夜の3時間は、現在の定時法の3時間よりかなり短い。)</span>
*② Medio fere itinere equites a Fabio missi,
**(ゲルゴウィアへの)道程のほぼ中間のところで、ファビウスから[[w:騎兵|騎兵]]たちが遣わされて来て、
*quanto res in periculo fuerit, exponunt.
**事態がどれほどの危機にあるか、を打ち明けた。
*Summis copiis castra oppugnata demonstrant,
**(ガッリア勢の)最大級の軍勢により(ローマ勢の)陣営が攻撃された、と説明した。
*cum crebro integri defessis succederent
**そのときに(ガッリア勢は)たびたび新たな者たちが疲労した者たちに交代していたが、
*nostrosque adsiduo labore defatigarent,
**我が方(ローマ勢)は絶え間ない労苦により疲れ果てていた。
*quibus propter magnitudinem castrorum perpetuo esset isdem in vallo permanendum.
**彼ら(ローマ勢)にとり、陣営の大きさのために、同じ者たちが防柵の中に留まらざるを得なかった。
**:<span style="color:#009900;">(訳注:カエサルは[[#40節|40節]]②項で「陣営を縮小するための余地はなかった」とあらかじめ弁解している。)</span>
*③ Multitudine sagittarum atque omnis generis<ref>omnis generis はα系写本の記述で、β系写本では omni genere となっている。</ref> telorum multos vulneratos;
**(ガッリア勢からの)矢の多数と飛び道具のあらゆる類いによって(ローマ勢の)多くのものが傷つけられた。
*ad haec sustinenda magno usui fuisse tormenta.
**これに持ちこたえるために、投石器が大いに役立った。
*④ Fabium discessu eorum duabus relictis portis obstruere ceteras
**ファビウスは、彼ら(ガッリア勢)が退却すると、2つの門を残して、ほか(の門)を閉鎖した。
*pluteosque vallo addere et se in posterum diem similemque casum apparare<ref>similemque casum apparare はα系写本の記述で、β系写本では similem ad casum parare となっている。</ref>.
**胸壁を防柵を付け加えて、翌日における似たような状況に備えた。
*⑤ His rebus cognitis Caesar
**これらの事態を知って、カエサルは、
*summo studio militum ante ortum solis in castra pervenit.
**兵士たちの最大級の努力によって、日の出の前に(ゲルゴウィアの)陣営に到着した。
===42節===
'''ハエドゥイー族の者たちが反ローマ暴動を引き起こす'''
*① Dum haec ad [[w:la:Gergovia|Gergoviam]] geruntur,
**これらがゲルゴウィアの辺りでなされている間に、
*[[w:la:Haedui|Haedui]] primis nuntiis ab Litavicco acceptis
**[[w:ハエドゥイ族|ハエドゥイー族]]の者たちは、[[w:リタウィックス|リタウィックス]]からの最初の知らせを受け取ったが、
*nullum sibi ad cognoscendum spatium relinquunt.
**自分たちには(この知らせを)調べるための余地を何ら残さなかった。
*② Impellit alios avaritia, alios iracundia et temeritas
**ある者たちを貪欲さが、ある者たちを激しやすさや無分別が駆り立てた。
*─ quae maxime illi hominum generi est innata ─ ut levem auditionem habeant pro re comperta.
**あの種族の人々はとりわけ、軽率な風聞を確認された事として見なすように、生まれついているのだ。
*③ Bona civium Romanorum diripiunt, caedes faciunt, in servitutem abstrahunt.
**(ハエドゥイー族の者たちは)ローマ市民たちの財産を略奪し、殺戮を行なって、隷属状態に引きずり込んだ。
*④ Adiuvat rem proclinatam Convictolitavis
**(さらに)傾いた事態を[[w:コンウィクトリタウィス|コンウィクトリタウィス]]が助長して、
*plebemque ad furorem impellit, ut facinore admisso ad sanitatem reverti pudeat.
**民衆を狂暴さへと、悪行を犯して冷静さへ引き返すことを恥と思うように、駆り立てた。
*⑤ M.(Marcum) Aristium tribunum militum iter ad legionem facientem
**<ruby><rb>[[w:トリブヌス・ミリトゥム|兵士長官]]</rb><rp>(</rp><rt>トリブヌス・ミリトゥム</rt><rp>)</rp></ruby>であるマルクス・アリスティウスが[[w:ローマ軍団|軍団]]のところへ旅しているところを
*fide data ex oppido [[w:la:Cabillonum|Cavillono]] educunt;
**(安全の)保証を与えて、城塞都市カウィッロヌムから連れ出した。
**:<span style="color:#009900;">(訳注:カウィッロヌム Cavillonum はカビッロヌム Cabillonum とも綴り、現在の[[w:シャロン=スュル=ソーヌ|シャロン=スュル=ソーヌ]])</span>
*idem facere cogunt eos, qui negotiandi causa ibi constiterant.
**そこに商売をするために定住していた(ローマ人の)者たちにも同じことをするように強要した。
*⑥ Hos continuo <in><ref>in は写本にないが、近世の活字本から挿入されている。</ref> itinere adorti omnibus impedimentis exuunt;
**直ちに彼らを途中で襲撃して、すべての手荷物を奪い取った。
*repugnantes diem noctemque obsident;
**抵抗する者たちを昼夜にわたって包囲した。
*multis utrimque interfectis
**(ハエドゥイー族とローマ人の)双方とも多くの者たちが殺されて、
*maiorem multitudinem armatorum<ref>armatorum はα系写本の記述で、β系写本では ad arma となっている。</ref> concitant.
**(ハエドゥイー族の)より多くの群衆を武装へと扇動した。
===43節===
'''ハエドゥイー族当局がカエサルに屈服。ガッリア大動乱の予感'''
*① Interim nuntio adlato omnes eorum milites in potestate Caesaris teneri,
**その間に、彼ら(ハエドゥイー族)の兵士すべてがカエサルの権力下で支配されているという知らせがもたらされて、
*concurrunt ad Aristium,
**(ハエドゥイー族当局の者たちは)アリスティウスのところへ急ぎ集まって、
*nihil publico factum consilio demonstrant;
**(ローマ市民に対する襲撃は)何ら公けに企てがなされたものではないと説明した。
*② quaestionem de bonis direptis decernunt,
**(部族当局は、ローマ市民から)略奪された財産についての究明を決定して、
*Litavicci fratrumque bona publicant,
**リタウィックスと兄弟たちの財産を没収し、
*legatos ad Caesarem sui purgandi gratia mittunt.
**カエサルのところへ使節たちを、自分たちを赦免することのために遣わした。
*③ Haec faciunt reciperandorum<ref>reciperandorum はα系写本の記述で、β系写本では recuperandorum となっている。</ref> suorum causa;
**これらを、配下の者たち(=歩兵1万名)を取り戻すために行なったのだ。
*sed contaminati facinore et capti compendio ex direptis bonis,
**しかし(彼らは)悪行に汚染されていて、略奪した財産の利得にとらわれており、
*quod ea res ad multos pertinebat, timore<ref>timore はα系写本の記述で、β系写本では et timore となっている。</ref> poenae exterriti
**その事に多くの者たちが関与していたので、懲罰の恐れに脅かされて、
*consilia clam de bello inire incipiunt
**ひそかに戦争の謀計に取りかかり始めて、
*civitatesque reliquas legationibus sollicitant.
**ほかの諸部族を使節派遣によって、そそのかした。
*④ Quae tametsi Caesar intellegebat, tamen quam mitissime potest legatos appellat;
**カエサルはそのようなことを認識していたけれども、(ハエドゥイー族の)使節たちにできるだけ平静に話しかけた。
*nihil se propter inscientiam levitatemque vulgi gravius de civitate iudicare
**自分は(ハエドゥイー族の)民衆の無知や軽率さのために、部族を何ら厳重に裁断することはない、と。
*neque de sua in [[w:la:Haedui|Haeduos]] benevolentia deminuere.
**自分のハエドゥイー族に対する好意を減ずることはない、と。
*⑤ Ipse maiorem Galliae motum exspectans,
**(カエサル)自身は、ガッリアのより大きな動乱を予期しており、
*ne ab omnibus civitatibus circumsisteretur,
**すべての部族によって包囲されることがないように、
*consilia inibat, quemadmodum ab<ref>ab はχ系写本の記述で、φ系写本では a となっており、β系写本にはない。</ref> [[w:la:Gergovia|Gergovia]] discederet ac rursus omnem exercitum contraheret,
**どのようにゲルゴウィアから撤退して再び軍隊全体を集結するか、策定に取りかかった。
*ne profectio nata ab<ref>ab はα系写本の記述で、β系写本では a となっている。</ref> timore defectionis similis<ref>similis はα系写本の記述で、β系写本では similisque となっている。</ref> fugae videretur.
**(諸部族の)背反の恐れから生じた出発が、逃亡同然と見られないように。
===44節===
'''ゲルゴウィアの急所の尾根'''
[[画像:Plateau_of_Gergovia.jpg|thumb|center|900px|ゲルゴウィア([[w:la:Gergovia|Gergovia]])すなわち現在のジェルゴヴィ高地([[w:fr:Plateau de Gergovie|Plateau de Gergovie]])の全景(南方のル・クレスト [[w:fr:Le Crest|Le Crest]] から撮影)。<br>画像中央の右下に、ローマ勢が占領して小さい方の陣営を築いていたと推定されているラ・ロシュ=ブランシュ([[w:fr:La Roche-Blanche (Puy-de-Dôme)|La Roche-Blanche]])の丘陵が見える。<br>本節①項で言及されているのは画像の左端に写る丘陵と思われ、尾根伝いにほぼ平坦なゲルゴウィアの山頂(画像中央)に続いている。<br>これらの位置関係の推定は、19世紀の[[w:ウジェーヌ・ストッフェル|ウジェーヌ・ストッフェル]]大佐(colonel Eugène Stoffel)の発掘調査に依拠したものである。]]
[[画像:La_Roche_Blanche.JPG|thumb|right|300px|ローマ勢が占領して小さい方の陣営を築いていたと推定されているラ・ロシュ=ブランシュ([[w:fr:La Roche-Blanche (Puy-de-Dôme)|La Roche-Blanche]])の丘陵]]
*① Haec cogitanti accidere visa est facultas bene rei gerendae<ref>rei gerendae はα系写本の記述で、β系写本では gerendae rei となっている。</ref>.
**(カエサルが)これらを考慮しているときに、事をうまく行なえる可能性が生じたと思われた。
*Nam cum in minora castra operis perspiciendi causa venisset,
**すなわち、(ローマ勢の)小さい方の陣営に、作業を視察するためにやって来たときに、
*animadvertit collem qui ab hostibus tenebatur nudatum hominibus,
**敵たちによって占められていた丘陵が、無人にされているのに気付いた。
*qui superioribus diebus vix prae multitudine cerni poterat.
**それは、前日には、(ガッリア勢の)大勢の者たちのためにほとんど見分けが付けられないものだった。
*② Admiratus quaerit ex perfugis causam,
**(カエサルは)驚いて、(ゲルゴウィアからの)[[w:脱走兵|脱走兵]]たちに理由を尋ねた。
*quorum magnus ad eum cotidie numerus confluebat.
**その者たちの多数は、毎日、彼(カエサル)のところへ群がり集まっていたのだ。
**:<span style="color:#009900;">(訳注:[[#14節|14節]]⑨項で既述のように、ガッリア勢は[[w:兵役逃れ|兵役忌避]]の多さに悩まされていた。)</span>
*③ Constabat inter omnes
**(脱走兵たち)皆の間では同じ意見であった。
*─ quod iam ipse Caesar per exploratores cognoverat ─
**─ すでにカエサル自身が偵察者たちを通して知っていたことであったが ─
*dorsum esse eius iugi prope aequum, sed silvestre<ref>silvestre はβ系写本の記述で、α系写本では hunc silvestrem となっている。</ref> et angustum,
**その尾根の背面はほぼ平地で、しかし森林におおわれて狭く、
*qua esset aditus ad alteram partem oppidi<ref>partem oppidi はα系写本の記述で、β系写本では oppidi partem となっている。</ref>;
**それによって城塞都市の別の方面への出入口となっている、と。
*④ vehementer huic illos loco<ref>vehementer huic illos loco はα系写本の記述で、β系写本では huic loco vehementer illos となっている。</ref> timere nec iam aliter sentire,
**この地帯を彼ら(ガッリア勢)が極度に恐れ、すでに感じていたことには、
*uno colle ab Romanis occupato, si alterum amisissent,
**ローマ人によって一つの丘陵が占領されているので、もしもう一方をも失ったならば、
*quin paene circumvallati atque omni exitu et pabulatione interclusi viderentur;
**(ゲルゴウィアが)ほとんど包囲されて、あらゆる出口と糧秣徴発を阻まれると思われたのである。
*ad hunc muniendum locum<ref>locum はβ系写本の記述で、α系写本にはない。</ref> omnes a [[w:la:Vercingetorix|Vercingetorige]] evocatos.
**この地帯の辺りを防御するために、[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]により総勢が召集されていたのだ、と。
===45節===
'''ローマ勢の陽動部隊が敵を引き付け、本隊が敵の本陣を目指す'''
*① Hac re cognita Caesar mittit complures equitum turmas eodem<ref>eodem はβ系写本の記述で、α系写本では eisdem などとなっており、またモイゼル(Meusel)は eo de と解釈している。</ref> media nocte;
**この事を知って、カエサルは多数の[[w:騎兵|騎兵]]<ruby><rb>小隊</rb><rp>(</rp><rt>トゥルマ</rt><rp>)</rp></ruby>を同じところに真夜中に派遣した。
**:<span style="color:#009900;"> (訳注:騎兵小隊 turma は、ローマの同盟部族などからなる騎兵の単位で、30騎ほどからなるとされている。)</span>
*imperat his<ref>his はβ系写本の記述で、α系写本にはない。</ref> ut paulo tumultuosius omnibus locis vagarentur<ref>vagarentur はα系写本の記述で、β系写本では pervagentur となっている。</ref>.
**彼らには、いくらか騒々しく、あらゆる場所を動き回るように命令した。
*② Prima luce magnum numerum impedimentorum ex castris mulorumque produci deque his stramenta detrahi
**夜明けに、陣営から多数の荷馬や[[w:ラバ|ラバ]]を連れ出して、これらから[[w:鞍|荷鞍]]を取り去って、
*mulionesque cum cassidibus equitum specie ac simulatione collibus circumvehi iubet.
**ラバ引きの者たちを鉄兜とともに、騎兵の外見と真似をさせて、丘々を乗り回すことを命じた。
*③ His paucos addit equites, qui latius ostentationis causa vagarentur<ref>vagarentur はα系写本の記述で、β系写本では vagentur となっている。</ref>.
**彼らに少数の騎兵を付き添わせて、より広く見せびらかすために動き回らせた。
*Longo circuitu easdem omnes iubet petere regiones.
**(ラバ引きと騎兵の)皆には、長く迂回して、同じ一帯を目指すことを命じた。
*④ Haec procul ex oppido videbantur, ut erat a Gergovia despectus in castra,
**これらは<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>から遠くに望見され、ゲルゴウィアから(ローマ勢の)陣営が眺められたほどであったが、
*neque tanto spatio certi quid esset explorari poterat.
**これほどの距離のために(ガッリア勢からは)何ごとか確かなことは探り出されなかった。
*⑤ Legionem unam eodem iugo mittit
**(カエサルは)1個[[w:ローマ軍団|軍団]]を同じ尾根に派遣して、
*et paulum progressam inferiore constituit loco silvisque occultat.
**いくらか前進させて低い場所に駐留させ、森林に隠した。
*⑥ Augetur Gallis suspicio
**(これらを見た)ガッリア人には疑念が増されて、
*atque omnes illo ad munitionem copiae traducuntur.
**軍勢のすべてがあそこ(=無人にしていた急所の丘陵)へ防御のために移動した。
*⑦ Vacua castra hostium Caesar conspicatus
**カエサルは敵たちの(ゲルゴウィア山頂の)陣営が空であると気付いて、
*tectis insignibus suorum occultatisque signis militaribus
**配下の者たちの標章を覆い隠し、軍旗を隠して、
*raros milites, ne ex oppido animadverterentur, ex maioribus castris in minora traducit
**兵士たちをまばらに、城塞都市から気付かれないように、大きい方の陣営から小さい方に移動させた。
*legatisque, quos singulis legionibus praefecerat, quid fieri velit, ostendit;
**個々の軍団を指揮させていた<ruby><rb>[[w:レガトゥス|副官]]</rb><rp>(</rp><rt>レガトゥス</rt><rp>)</rp></ruby>たちに、何がなされることを欲しているかを示した。
*⑧ in primis monet ut contineant milites,
**第一に、兵士たちを抑え留めるように戒めた。
*ne studio pugnandi aut spe praedae longius progrediantur;
**(兵士たちが)戦うことの熱意、あるいは略奪の希望により、より遠くまで進み出ないように、と。
*⑨ quid iniquitas loci habeat incommodi proponit;
**地勢の不利がどれほど敗北を生じるかを示した。
*hoc una celeritate posse vitari<ref>vitari はβ系写本の記述で、α系写本では mutari となっている。</ref>;
**迅速さのみがこれを避けることができる。
*occasionis esse rem, non proelii.
**事の成否は、戦闘にではなく、好機にかかっている。
*⑩ His rebus expositis signum dat
**これらの事柄を説明して、(副官たちに進軍の)号令を出した。
*et ab dextra parte alio ascensu eodem tempore Haeduos mittit.
**右の方面からは、別の登り道を(ローマ軍本隊と)同時に[[w:ハエドゥイ族|ハエドゥイー族]](の騎兵)を派遣した。
===46節===
'''ローマ軍の本隊が防壁を越えて、敵陣の一部を占拠'''
*① Oppidi murus ab<ref>ab はB・M・L・N写本の記述で、β系写本では a となっている。</ref> planitie atque initio ascensus recta regione,
**(ゲルゴウィアの)<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の城壁は、平地や登り道の始まりから真っ直ぐに(=直線距離で)、
*si nullus amfractus<ref>amfractus はα系写本の記述で、β系写本では anfractus となっている。</ref> intercederet, mille CC(mille ducenti)<ref>mille CC(=1200) はα系写本の記述で、β系写本では CC(=200)となっている。</ref> passus aberat;
**もし何らの湾曲が間になければ、1200[[w:パッスス|パッスス]](=約1.8km)離れていた。
*② quicquid huc circuitus ad molliendum clivum accesserat<ref>accesserat は写本(ω)の記述だが、オットー・ゼール [[w:de:Otto Seel|Otto Seel]] の校訂では accesserit としている。</ref>,
**ここに(山の斜面の)傾斜を緩和するために、何らかの回り道が付け加わっていて、
*id spatium itineris augebat.
**その道のりの距離を増していた。
*③ A medio fere colle in longitudinem, ut natura montis ferebat,
**丘陵のほぼ真ん中から、山の地形が作り出したかのように、長きにわたって、
*ex grandibus saxis sex pedum murum qui nostrum<ref>nostrum は中世の写本(ω)の記述だが、近世の版では nostrorum となっている。</ref> impetum tardaret,
**大きな石垣からなる6[[w:ペース (長さ)|ペース]](=約1.8m)もの、我が方(ローマ勢)の突進を遅らせる防壁を、
*praeduxerant Galli,
**ガッリア人は引いて来ており、
*atque inferiore omni spatio vacuo relicto
**(その石垣の防壁)より下方のすべての空間は人気なく残されていて、
*superiorem partem collis usque ad murum oppidi densissimis castris compleverant.
**丘陵のより上方の部分を、城塞都市の城壁の方へ続けざまに、とても密集した(各部族ごとの)陣営で満たしていた。
*④ Milites dato signo celeriter ad munitionem perveniunt
**(ローマ人の)兵士たちは号令を与えられて、速やかに(石垣の)防壁のところへ到達して、
*eamque transgressi trinis castris potiuntur;
**それを越えて行って、3つの(部族ごとの)陣営を占拠した。
*⑤ ac tanta fuit in castris capiendis<ref>castris capiendis はα系写本の記述で、β系写本では capiendis castris となっている。</ref> celeritas,
**(3つの)陣営を奪取することにおいて、これほどにも迅速さがあったので、
*ut Teutomatus, rex Nitiobrogum, subito in tabernaculo oppressus,
**その結果、[[w:ニティオブロゲス族|ニティオブロゲス族]]の王[[w:テウトマトゥス|テウトマトゥス]]は、[[w:テント|天幕]]において突然に襲われて、
*ut meridie conquieverat, superiore corporis parte nudata<ref>nudata はα系写本の記述で、β系写本では nuda となっている。</ref>
**昼寝をしていたが、上半身は裸のままで、
*vulnerato equo vix se ex manibus praedantium militum eriperet.
**傷付けられた馬によって、略奪している(ローマ人)兵士の手から、やっと自らを救い出した。
===47節===
'''血気にはやるローマ兵たちの猪突猛進、ガッリア女たちの命乞い'''
*① Consecutus id quod animo proposuerat
**心に決めていたことを達成したので、
*Caesar receptui cani iussit
**カエサルは退却ラッパを吹くことを命じた。
*legionique decimae, quacum erat, contionatus signa constituit.
**彼とともにいた[[w:第10軍団エクェストリス|第10軍団]]に呼びかけて、軍旗を停止した。
**:<span style="color:#009900;">(訳注:第10軍団はガッリア戦争初期からの最古参の軍団。軍旗を停止するとは、進軍を止めること。)</span>
*② Ac<ref>ac はα系写本の記述で、β系写本では at となっている。</ref> reliquarum legionum milites non exaudito<ref>exaudito はα系写本の記述で、β系写本では audito となっている。</ref> sono tubae,
**ほかの[[w:ローマ軍団|軍団]]の兵士たちは、ラッパの響きを聞き取れなかった。
*quod satis magna valles intercedebat,
**というのは、十分に大きな峡谷が間にあったからである。
*tamen ab<ref>ab はα系写本の記述で、β系写本では a となっている。</ref> tribunis militum legatisque, ut erat a Caesare praeceptum, retinebantur;
**しかしながら、<ruby><rb>[[w:トリブヌス・ミリトゥム|兵士長官]]</rb><rp>(</rp><rt>トリブヌス・ミリトゥム</rt><rp>)</rp></ruby>たちや<ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レガトゥス</rt><rp>)</rp></ruby>たちにより、カエサルから指図されていたように、制止されていた。
*③ Sed elati spe celeris victoriae et hostium fuga et superiorum temporum secundis proeliis
**だが(兵士たちは)迅速な勝利の希望や、敵たちの逃亡や、それ以前のときの順調な戦闘により、高慢になっていて、
*nihil adeo arduum sibi esse existimaverunt<ref>esse existimaverunt はα系写本の記述で、β系写本では existimabant となっている。</ref>, quod non virtute consequi possent,
**自分たちにとって、武勇で達することができないほどの困難なものはまったく何もない、と考えており、
*neque finem prius sequendi fecerunt quam muro oppidi portisque adpropinquarunt.
**(ゲルゴウィアの)城塞都市の城壁や城門に近付くまでは、追及を終結させなかった。
*④ Tum vero ex omnibus urbis partibus orto clamore,
**すると、まさに(ゲルゴウィアの)町のあらゆる方面から叫び声が発せられて、
*qui longius aberant, repentino tumultu perterriti,
**(城内の)遠い方に離れていた者たちは、予期せぬ騒ぎに脅えており、
*cum hostem intra portas esse existimarent,
**敵(=ローマ人)が城門の内側にいると考えたので、
*sese ex oppido eiecerunt.
**城塞都市から急ぎ出た。
*⑤ Matres familiae de muro vestem argentumque iactabant
**家庭の母親たちは、城壁から衣類や貨幣をたびたび投げやった。
*et pectore nudo prominentes passis manibus obtestabantur Romanos,
**そして胸を裸にして(城壁の上に)進み出て、手を伸ばしてローマ人たちに哀願した。
*ut sibi parcerent
**自分たちを容赦するように、
*neu, sicut Avarici fecissent, ne a mulieribus quidem atque infantibus abstinerent;
**(ローマ人が)アウァーリクムでしたように女たちや子供たちでさえも赦免しないことのないように、と。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
**:<span style="color:#009900;">(訳注:ローマ人がアウァーリクムでした行為については、[[#28節|28節]]④項を参照。)</span>
*⑥ nonnullae de muris<ref>muris はα系写本の記述で、β系写本では mure となっている。</ref> per manus demissae sese militibus tradebant.
**少なからぬ者たちは、城壁から手で降ろされて、(ローマ人)兵士たちに身を任せた。
[[画像:Gergovie_mur_pano2.jpg|thumb|center|700px|ゲルゴウィア([[w:la:Gergovia|Gergovia]])すなわち現在のジェルゴヴィ高地([[w:fr:Plateau de Gergovie|Plateau de Gergovie]])で発掘された城壁の遺構。]]
*⑦ L.(Lucius) Fabius centurio legionis VIII(octavae),
**[[w:第8軍団アウグスタ|第8軍団]]の<ruby><rb>[[w:ケントゥリオ|百人隊長]]</rb><rp>(</rp><rt>ケントゥリオ</rt><rp>)</rp></ruby>であるルキウス・ファビウスは、
*quem inter suos eo die dixisse constabat
**配下の者たちの間で、その日、(以下のように)言ったことが知られていた。
*excitari se Avaricensibus praemiis neque commissurum, ut prius quisquam murum ascenderet,
**自分はアウァーリクムの恩賞に奮い立たせられて、何者かが(自分)より早く城壁を登るようなことは生じさせない、と。
*tres suos nactus manipulares
**(ファビウスは)同じ隊の兵士である3人の配下と遭遇して、
**:<span style="color:#009900;">(訳注:manipulares は「[[w:マニプルス|歩兵中隊]]の」とも解されるが、ここでは「同じ隊の兵士」という意味であろう。)</span>
*atque ab his sublevatus murum ascendit,
**彼らによって持ち上げられて城壁を登った。
*hos<ref>hos はα系写本の記述で、π系写本では eos 、ρ系写本では eo となっている。</ref> ipse rursus singulos exceptans in murum extulit.
**彼らは(ファビウス)自身が再び1人ずつ引き出して、城壁に導き上げた。
===48節===
'''ガッリア勢が城塞都市に引き返して、防戦に努める'''
*① Interim hi<ref>hi はα系・π系・R写本の記述で、U写本では ii となっている。</ref> qui ad alteram partem oppidi, ut supra demonstravimus, munitionis causa convenerant,
**その間に、前に述べたように、<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の別の方面へ、防御のために集結していた(ガッリア勢の)者たちは、
**:<span style="color:#009900;">(訳注:[[#45節|45節]]⑥項で述べられている。)</span>
*primo exaudito clamore,
**初めに叫び声を聞き取り、
*inde etiam crebris nuntiis incitati oppidum ab Romanis teneri,
**さらに、城塞都市がローマ人たちによって占領されたという頻繁な知らせにさえも駆り立てられて、
*praemissis equitibus magno concursu<ref>concursu はα系写本の記述で、β系写本では cursu となっている。</ref> eo contenderunt.
**[[w:騎兵|騎兵]]たちを先遣して、(歩兵たちも)駆けに駆けて、そこ(=城塞都市)へ急いだ。
[[画像:Auvergne_Gaul_coin_CdM.jpg|thumb|right|300px|[[w:アルウェルニ族|アルウェルニー族]]の兵士が刻まれた貨幣([[w:ビブリオテーク・ナショナル|仏国立図書館]]貨幣部所蔵)]]
*② Eorum ut quisque primus venerat,
**彼らの(城塞都市に)到着した者から順々に
**:<span style="color:#009900;">(訳注:quisque primus「最初の者ごとに;順々に」)</span>
*sub muro consistebat suorumque pugnantium numerum augebat.
**城壁の下に陣取って、味方の戦う者たちの数を増した。
*③ Quorum cum magna multitudo convenisset,
**その者たちの大群集が集結したときに、
*matres familiae quae paulo ante Romanis de muro manus tendebant,
**少し前にはローマ人たちに城壁から手を差し出していた家庭の母親たちが
*suos obtestari
**味方に哀願して、
*et more Gallico passum capillum ostentare liberosque in conspectum proferre coeperunt.
**ガッリアの風習により、髪を広げて示し、子供たちを(男たちの)眼前に運び始めた。
*④ Erat Romanis nec loco nec numero aequa contentio;
**ローマ人たちにとっては、地の利でも(兵の)数でも、対等な闘いはなかった。
*simul et cursu et spatio pugnae defatigati
**と同時に、戦いの疾走や時間(の長さ)に疲弊させられていて、
*non facile recentes atque integros sustinebant.
**(ガッリア勢の)新来かつ無傷の者たちに、容易に持ちこたえられなかった。
===49節===
'''カエサルが劣勢の自軍に副官セクスティウスを増援する'''
*① Caesar cum iniquo loco pugnari hostiumque augeri copias videret,
**カエサルは(戦闘が自軍に)不利な場所で戦われていること、かつ敵方の軍勢が増やされていることを見たので、
*praemetuens suis
**配下の者たちを気遣って、
*ad T.(Titum) Sextium legatum, quem minoribus castris praesidio reliquerat, misit,
**小さい方の陣営に守備として残しておいた<ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レガトゥス</rt><rp>)</rp></ruby>ティトゥス・セクスティウスのところへ(伝令を)遣わして、
**:<span style="color:#009900;">(訳注:セクスティウスについては、すでに副官として[[ガリア戦記 第6巻#1節|第6巻1節]]で言及されている。)</span>
*ut cohortes ex castris celeriter educeret
**陣営から(いくつかの)<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>を速やかに進発させるように、
*et sub infimo colle ab dextro latere hostium constitueret,
**かつ丘陵のふもとの下方で、敵方の右の側面に布陣するように、と。
*② ut, si nostros loco depulsos vidisset, quominus libere hostes insequerentur terreret.
**もし我が方が(戦闘の)場所から追いやられたのを見たら、敵方が自由に追撃することにならぬよう脅かすためである。
*③ Ipse paulum ex eo loco cum legione progressus, ubi constiterat,
**(カエサル)自身は、停止していた場所から、軍団とともに少し前進して、
**:<span style="color:#009900;">([[#47節|47節]]①項で既述のように、カエサルとともに停止していたのは[[w:第10軍団エクェストリス|第10軍団]]である。)</span>
*eventum pugnae exspectabat.
**戦いの決着を待っていた。
===50節===
'''激戦の末、敗勢に陥るローマ軍'''
*① Cum acerrime comminus pugnaretur, hostes loco et numero, nostri virtute confiderent,
**(両軍により)激烈に格闘して戦われていて、敵方は地の利と(兵の)数を、我が方(ローマ軍)が武勇を頼りとしていたときに、
*subito sunt Haedui visi ab latere nostris aperto,
**突如として、我が方にとって開けた側面(=右側)から、[[w:ハエドゥイ族|ハエドゥイー族]]の者たち(の姿)が見られた。
**:<span style="color:#009900;">(訳注:「開けた側面から」ab latere aperto とは、兵士の[[w:スクトゥム|長盾]]で覆われていない右側を指す。)</span>
*quos Caesar ab dextra parte alio ascensu manus distinendae causa miserat.
**カエサルがその者たちを右の方面から別の登り道により(敵の)部隊を分散しておくために派遣していたのだ。
**:<span style="color:#009900;">(訳注:この事は、[[#45節|45節]]⑩項で述べられている。)</span>
*② Hi similitudine armorum vehementer nostros perterruerunt,
**彼らの武具が(ガッリア勢のものと)似ていることが、我が方(の兵士たち)を極度に怖れさせた。
*ac tametsi dextris humeris<ref>humeris が写本(ω)の記述であるが、umeris とするのも一般的となっている。</ref> exsertis animadvertebantur, quod insigne pactum<ref>pactum はHellerによる修正提案で、写本(ω)では pacatum となっており、研究者たちにより他の修正も提案されている。</ref> esse consuerat,
**(ハエドゥイー勢は)右の肩を脱いでいるのが視認され、その印は(味方として)定められているのが常であったが、
*tamen id ipsum sui fallendi causa milites ab hostibus factum existimabant.
**けれども(ローマ人の)兵士たちは、それ自体が自分たちを欺くために、敵方によりなされたと考えたのだ。
[[画像:Dorf_La_Roche_Blanche.JPG|thumb|right|300px|ゲルゴウィア([[w:la:Gergovia|Gergovia]])すなわち現在のジェルゴヴィ高地([[w:fr:Plateau_de_Gergovie|Plateau de Gergovie]])の遠景(南方のル・クレスト [[w:fr:Le_Crest|Le Crest]] から撮影)。画像中央がローマ軍が小さい方の陣営を設置していたと推定されているラ・ロシュ=ブランシュ([[w:fr:La_Roche-Blanche_(Puy-de-Dôme)|La Roche Blanche]])の丘陵で、山頂からこの丘陵の辺りが激戦地だったと思われる。現在は山麓にかけて住宅地が広がっている。]]
*③ Eodem tempore L.(Lucius) Fabius centurio quique una murum ascenderant,
**同じ時に、<ruby><rb>[[w:ケントゥリオ|百人隊長]]</rb><rp>(</rp><rt>ケントゥリオ</rt><rp>)</rp></ruby>ルキウス・ファビウスおよび一緒に城壁を登っていた者たちは、
**:<span style="color:#009900;">(訳注:ファビウスらについては、[[#47節|47節]]⑦項で述べられている。)</span>
*circumventi atque interfecti de<ref>de はβ系写本の記述で、α系写本にはない。</ref> muro praecipitabantur.
**(ガッリア勢に)取り囲まれ、殺害されて、城壁から突き落とされた。
*④ M.(Marcus) Petronius, eiusdem legionis centurio,
**同じ[[w:ローマ軍団|軍団]]の百人隊長マルクス・ペトロニウスは、
**:<span style="color:#009900;">(訳注:ファビウスと同じ軍団とは、[[#47節|47節]]⑦項で述べられているように[[w:第8軍団アウグスタ|第8軍団]]である。)</span>
*cum portas<ref>portas は写本(ω)の記述だが、portam と単数形にする修正も提案されている。</ref> excidere conatus esset,
**城門を突き破って出ることを試みていたときに、
*a multitudine oppressus ac sibi desperans multis iam vulneribus acceptis,
**(敵の)大勢によって圧倒されて、すでに多くの傷を受けて自分に絶望しており、
*manipularibus suis, qui illum secuti erant<ref>secuti erant はα系写本の記述で、β系写本では erant secuti となっている。</ref>,
**彼に付き従っていた同じ隊の配下の者たちに、
*"quoniam" inquit "me una vobiscum servare non possum,
**曰く「私と諸君を一緒に救うことはできないのだから、
*vestrae quidem certe vitae prospiciam, quos cupiditate gloriae adductus in periculum deduxi.
**せめて、栄誉の欲に引き寄せられて危険に引きずり込んでしまった諸君の生命にはきっと見通しを与えるであろう。
*⑤ Vos data facultate vobis consulite."
**諸君は(生き延びる)可能性が与えられているから、諸君(自身)を助けたまえ。」
*Simul in medios hostes inrupit duobusque interfectis reliquos a porta paulum submovit.
**と同時に、敵方の真ん中に押し入って、2名を殺害して、ほかの者たちを城門からいくらか退けた。
*⑥ Conantibus auxiliari suis
**(ペトロニウスは自分の)支援を試みる配下の者たちに、
*"frustra" inquit "meae vitae subvenire conamini, quem iam sanguis viresque deficiunt.
**曰く「もはや血も活力も尽き果てた私の生命を助けることを試みているのは無益だ。
*Proinde abite, dum est facultas, vosque ad legionem recipite."
**ゆえに(生き延びる)可能性がある間に立ち去れ。諸君は軍団のところへ退却せよ。」
*Ita pugnans post paulum<ref>paulum はα系・ρ系写本の記述で、π系写本では paululum となっており、paulo という修正提案もされている。</ref> concidit ac suis saluti fuit.
**こうして(ペトロニウスは)戦って少し後で斃れ、配下の者たちにとっては救いとなった。
===51節===
[[画像:Monument_gergovie_fr.jpg|thumb|right|290px|[[w:ゲルゴウィアの戦い|ゲルゴウィア戦勝]]記念碑。[[w:1903年|1903年]]に[[w:クレルモン=フェラン|クレルモン=フェラン市]]出身の建築家ジャン・テラール([[w:fr:Jean Teillard|Jean Teillard]])が、侵略者カエサルを撃退した郷土の英雄[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]に捧げるためにジェルゴヴィ高地([[w:fr:Plateau_de_Gergovie|Plateau de Gergovie]])に建立したものである。]]
[[画像:Plaque_Napoléon_III_Gergovie.jpg|thumb|right|300px|[[w:ゲルゴウィアの戦い|ゲルゴウィア]]の地に残る銘板。フランス語で「[[w:ナポレオン3世|ナポレオン3世]]は、1862年のゲルゴウィアの[[w:オッピドゥム|城塞都市]](跡)訪問の結果、メルドーニュ(Merdogne)の住民たちの要求に対して、1865年1月11日の政令によって、彼らの村にジェルゴヴィ([[w:fr:Gergovie|Gergovie]])の名を与えることを決定した。」<!-- «A la suite de sa visite sur l'oppidum de Gergovia en 1862, Napoléon III, à la demande des habitants de Merdogne, décida d'attribuer à leur village le nom de Gergovie, par décret du 11 janvier 1865.»-->]]
'''カエサルが一敗地に塗れる'''
*① Nostri cum undique premerentur,
**我が方(ローマ軍)は、至る所で圧倒されたので、
*XLVI(sex et quadraginta)<ref>XLVI はα系写本の記述で、β系写本では sex et XL となっている(どちらも46)。</ref> centurionibus amissis deiecti sunt loco.
**46名の<ruby><rb>[[w:ケントゥリオ|百人隊長]]</rb><rp>(</rp><rt>ケントゥリオ</rt><rp>)</rp></ruby> を失い、(激戦の)場所から追いやられた。
*Sed intolerantius Gallos insequentes
**けれども、容赦なく追撃して来るガッリア人たちを
*legio decima tardavit, quae pro subsidio paulo aequiore loco constiterat.
**予備部隊(もしくは要撃部隊)として、いくらか平らな所に陣取っていた[[w:第10軍団エクェストリス|第10軍団]]が妨げた。
**:<span style="color:#009900;">(訳注:[[#47節|47節]]①項で既述のように、第10軍団はカエサルとともに待機していた。)</span>
*② Hanc rursus XIII(tertiae decimae) legionis cohortes exceperunt,
**これ(=第10軍団)をさらに、第13軍団の諸<ruby><rb>[[w:コホルス|大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>が支えた。
*quae ex castris minoribus eductae cum T.(Tito) Sextio legato ceperant locum<ref>ceperant locum はα系写本の記述で、β系写本では locum ceperant となっている。</ref> superiorem.
**それらは<ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レガトゥス</rt><rp>)</rp></ruby>ティトゥス・セクスティウスとともに小さい方の陣営から進発してより高い所を占めていたのだ。
**:<span style="color:#009900;">(訳注:[[#49節|49節]]を参照。)</span>
*③ Legiones ubi primum planitiem attigerunt,
**諸[[w:ローマ軍団|軍団]]は、平野に達するや否や、
*infestis contra hostes signis constiterunt.
**敵方に抗して戦備を整えて陣取った。
*④ [[w:la:Vercingetorix|Vercingetorix]] ab radicibus collis suos intra munitiones reduxit.
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、配下の者たちを丘陵の麓から(ゲルゴウィアの)防備の内側に連れ戻した。
*Eo die milites sunt paulo minus [[wikt:la:Septingenti|septingenti]] desiderati.
**その日、(ローマ軍は)700名よりいくらか少ない兵士を失った。
<br>
:<span style="color:#009900;">(訳注:カエサルとウェルキンゲトリークスは、たびたび交えた騎兵戦ではカエサルが勝っているが、</span>
:<span style="color:#009900;">両軍の主力部隊である歩兵どうしが激突したこの戦闘は、地の利もあって、ウェルキンゲトリークスが完勝した。</span>
:<span style="color:#009900;">カエサルは第8軍団など古参の部隊を投入しながら、歴戦の百人隊長と兵士たちを多く失った。)</span>
===52節===
'''敗軍の将カエサルが兵士たちを責める'''
*① Postero die Caesar contione advocata
**翌日にカエサルは(兵士たちの)集会を召集して、
*temeritatem cupiditatemque militum<ref>cupiditatemque militum はα系写本の記述で、β系写本では militum cupiditatemque となっている。</ref> reprehendit,
**兵士たちの無思慮や功名心をとがめた。
*quod sibi ipsi iudicavissent, quo procedendum aut quid agendum videretur,
**というのは、どこへ進み出るべきか、あるいは何がなされるべきと思われるのか、自分たちに対し自分たちで判断してしまったからだ。
*neque signo recipiendi dato constitissent
**退却することの合図を与えられても留まりもせず、
*neque ab<ref>ab はα系写本の記述で、β系写本では a となっている。</ref> tribunis militum legatisque retineri potuissent.
**<ruby><rb>[[w:トリブヌス・ミリトゥム|兵士長官]]</rb><rp>(</rp><rt>トリブヌス・ミリトゥム</rt><rp>)</rp></ruby>や<ruby><rb>[[w:レガトゥス|総督副官]]たち</rb><rp>(</rp><rt>レガトゥス</rt><rp>)</rp></ruby>により制止されることもできなかったからだ。
*② Exposuit quid iniquitas loci posset, quod<ref>quod は写本(ω)では quid となっているが、近世以降の校訂者たちは quod と修正提案している。</ref> ipse ad [[w:la:Avaricum Biturigum|Avaricum]] sensisset,
**地の利のなさがどれほど影響するのか、(カエサル)自身がアウァーリクムで判断したことを説明した。
*cum sine duce et sine equitatu deprehensis hostibus
**将帥もなく騎兵隊もない敵たちを探し当てたときに、
**:<span style="color:#009900;">(訳注:[[#18節|18節]]~[[#19節|19節]]を参照。そのときガッリア勢は、ウェルキンゲトリークスが騎兵隊を連れて出て不在であった。)</span>
*exploratam victoriam dimisisset,
**確実であった勝利を諦めたのだ。
*ne parvum modo detrimentum in contentione propter iniquitatem loci accideret.
**地の利のなさのために、闘いにおいてほんのわずかな損害も生じないように(勝利を諦めたのだ)。
*③ Quanto opere<ref>Quanto opere はα系写本の記述で、β系写本では Quantopere となっている。</ref> eorum animi magnitudinem admiraretur,
**彼ら(兵士たち)の大胆さに(カエサルが)驚嘆すればするほど、
**:<span style="color:#009900;">(訳注:quanto opere ~ tanto opere …/quantopere ~ tantopere …「~すればするほど、ますます…」)</span>
*quos non castrorum munitiones, non altitudo montis, non murus oppidi tardare potuisset,
**彼らのことを(ガッリア勢の)陣営の防備も、山の高さも、[[w:オッピドゥム|城塞都市]]の城壁も妨げることができなかったのではあるが、
*tanto opere<ref>tanto opere はα系・T・ρ系写本の記述で、V写本では tantopere となっている。</ref> licentiam arrogantiamque reprehendere,
**それだけにますます(兵士たちの)勝手気ままさや高慢さを(カエサルは)非難する(と言った)。
*quod plus se quam imperatorem de victoria atque exitu rerum sentire existimarent;
**というのは、自分たちが将軍(カエサル)よりも勝利と事の結末についてよく判断していると考えていたからだ。
*④ nec<ref>nec はα系写本の記述で、β系写本では non となっている。</ref> minus se ab<ref>ab はα系写本の記述で、β系写本では in となっている。</ref> milite modestiam et continentiam quam virtutem atque animi magnitudinem desiderare.
**自分(カエサル)は兵士たちに、武勇や大胆さよりも、慎重さや自制心を望んでいるのだ。
*:<span style="color:#009900;">(訳注:カエサルは兵士たちを上のように責めたが、兵士たちを統制できなかった責任は最高司令官にある。)</span>
===53節===
'''カエサルとローマ軍がゲルゴウィアから撤退'''
*① Hac habita contione et ad extremam orationem confirmatis militibus,
**(カエサルは)このような熱弁を振るって、演説の最後に、兵士たちを元気付けた。
*ne ob hanc causam animo permoverentur
**このような理由のために心をかき乱されないように、
*neu, quod iniquitas loci attulisset, id virtuti hostium tribuerent,
**かつ、地の利のなさが引き起こしたことを、敵方の武勇に転嫁しないように、と。
*eadem de profectione cogitans, quae ante senserat,
**(ゲルゴウィアからの)出発については、以前から判断していたのと同じことを考えていて、
**:<span style="color:#009900;">(訳注:[[#43節|43節]]⑤項を参照。ゲルゴウィアからの撤退が敗走同然に見られないようにと、考えていたのであろう。)</span>
*legiones ex castris eduxit aciemque idoneo loco constituit.
**諸[[w:ローマ軍団|軍団]]を陣営から進発させて、適切な場所に戦列を整えた。
*② Cum [[w:la:Vercingetorix|Vercingetorix]] nihilo minus < intra munitiones remaneret neque > in aequum locum descenderet,
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]が、防備の内側に留まったばかりか、平らな場所に降りてこなかったので、
**:<span style="color:#009900;">(訳注:< intra munitiones remaneret neque > は、写本になく、近代に挿入提案された修正案の一つ。)</span>
*levi facto equestri proelio, atque secundo, in castra exercitum reduxit.
**軽微な騎兵戦を行なって、順調のうちに軍隊を陣営に連れ戻した。
*③ Cum hoc idem postero die fecisset,
**翌日もこれと同じことを行なって、
*satis ad Gallicam ostentationem minuendam militumque animos confirmandos factum existimans
**ガッリア人の誇示を弱めること、および(ローマ人)兵士の心を強固にすることが十分になされたと考えたので、
*in [[w:la:Haedui|Haeduos]] movit castra.
**[[w:ハエドゥイ族|ハエドゥイー族]]のところに陣営を移(すために出発)した。
*④ Ne tum quidem insecutis hostibus
**そのとき、敵方は決して追撃して来なかったので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
*tertio die ad flumen [[w:la:Elaver|Elaver]] pontes<ref>pontes はα系写本の記述で、β系写本では pontem となっている。</ref> reficit<ref>reficit はχ系・B・M・L・N写本の記述で、S写本では refecit となっている。</ref> eoque exercitum<ref>eoque exercitum はα系写本の記述で、β系写本では exercitumque となっている。</ref> traducit<ref>traducit はα系写本の記述で、β系写本では traduxit となっている。</ref>.
**3日目にはエラウェル川(=現在の[[w:アリエ川|アリエ川]])のところで橋を再建して、そこで軍隊を渡らせた。
===54節===
'''ハエドゥイー族のエポレドリクスとウィリドマルスらがカエサルのもとから立ち去る'''
*① Ibi a Viridomaro atque [[w:la:Eporedorix|Eporedorige]] [[w:la:Haedui|Haeduis]] appellatus discit
**そこで(カエサルが)[[w:ハエドゥイ族|ハエドゥイー族]]の[[w:ウィリドマルス|ウィリドマルス]]と[[w:エポレドリクス|エポレドリクス]]から話しかけられて知ったことには、
**:<span style="color:#009900;">(訳注:[[#39節|39節]]~[[#40節|40節]]を参照。ウィリドマルスとエポレドリクスはカエサルの軍勢に従軍していたと思われる。)</span>
*cum omni equitatu Litaviccum ad sollicitandos Haeduos profectum;
**[[w:リタウィックス|リタウィックス]]がすべての騎兵隊とともに、ハエドゥイー族の者たちをそそのかすために出発したという。
**:<span style="color:#009900;">(訳注:[[#40節|40節]]を参照。リタウィックスは謀計が破れたので、ゲルゴウィアに逃れていた。)</span>
*opus esse ipsos antecedere ad confirmandam civitatem.
**部族の支持を固めるために、(彼ら)自身が(リタウィックスより)先行することが必須であるというのだ。
*② Etsi multis iam rebus perfidiam Haeduorum<ref>perfidiam Haeduorum はα系写本の記述で、β系写本では Haeduorum perfidiam となっている。</ref> Caesar<ref>Caesar はβ系写本の記述で、α系写本にはない。</ref> perspectam habebat
**カエサルは、すでに多くの事により、ハエドゥイー族の背信行為を目にして来ており、
**:<span style="color:#009900;">(訳注:Etsi ~, tamen …「~としても、しかしながら…」)</span>
*atque horum discessu admaturari defectionem civitatis existimabat,
**この者たちが(カエサルのもとから)立ち去ることで、(ハエドゥイー)部族の背反が一層促進されると考えていたのだが、
*tamen eos retinendos non censuit<ref>censuit はπ系写本の記述で、α系・ρ系写本では constituit となっている。</ref>,
**しかしながら、彼ら(2人)を束縛するべきではないと考慮した。
*ne aut inferre iniuriam videretur aut dare<ref>dare はα系写本の記述で、β系写本では daret となっている。</ref> timoris aliquam<ref>timoris aliquam はα系写本の記述で、β系写本では aliquam timoris となっている。</ref> suspicionem.
**(カエサルが)無法行為を起こすと思われないように、あるいは(彼らを)怖れているという何らかの疑念を与えないように。
*③ Discedentibus his breviter sua in Haeduos merita exposuit,
**(カエサルは)立ち去る彼らに、ハエドゥイー族における自分の功績を手短に説明した。
*quos et quam humiles accepisset, compulsos in oppida, multatos agris,
**彼らが、どれほど無力であったのを引き受けたことか、[[w:オッピドゥム|城塞都市]]に押し込められ、耕地を台無しにされて、
**:<span style="color:#009900;">(訳注:et ~, et …「~でもあり、…でもある。」)</span>
*omnibus ereptis sociis<ref>sociis「同盟者たち」 はβ系写本の記述で、α系写本では copiis「軍勢」となっている。</ref>, imposito stipendio, obsidibus summa cum contumelia extortis,
**すべての同盟者たちを奪い取られ、貢物を課せられて、たいへんな侮辱とともに人質をもぎ取られていたことか。
*④ et quam in fortunam quamque in amplitudinem deduxisset,
**かつ、どれほどの境遇に、どれほどの高位に(カエサルが)引き上げもしたことか。
*ut non solum in pristinum statum redissent,
**その結果(ハエドゥイー族は)かつての地位に戻っただけでなく、
*sed omnium temporum dignitatem et gratiam antecessisse viderentur.
**(以前の)あらゆる時期の品格や信望をも越えていると思われる。
*His datis mandatis eos ab se dimisit.
**このような訓示を与えて、彼ら(2人)を自分のもとから送り出した。
===55節===
'''エポレドリクスとウィリドマルスらがローマの拠点ノウィオドゥーヌムで寝返る'''
[[画像:Nevers_-_Vue_depuis_la_rive_sud_de_la_Loire.jpg|thumb|center|700px|ノウィオドゥーヌム([[w:la:Nivernum|Noviodunum]])=現・[[w:ヌヴェール|ヌヴェール]]([[w:fr:Nevers|Nevers]])における、リゲル川([[w:la:Liger|Liger]])=現・[[w:ロワール川|ロワール川]]([[w:fr:Loire (fleuve)|Loire]])の岸辺の景観]]
*① [[w:la:Nivernum|Noviodunum]] erat oppidum [[w:la:Haedui|Haeduorum]] ad ripas [[w:la:Liger|Ligeris]] opportuno loco positum.
**ノウィオドゥーヌムは、[[w:ハエドゥイ族|ハエドゥイー族]]の[[w:オッピドゥム|城塞都市]]で、リゲル川(現[[w:ロワール川|ロワール川]])岸の好都合な所に位置していた。
**:<span style="color:#009900;">(訳注:『ガリア戦記』には同名の都市が計3か所載っているが、こちらは現在の[[w:ヌヴェール|ヌヴェール]] Nevers である。<br> 「[[ガリア戦記/ガリア語の名前#Nouio-dūnon|ガリア語の名前 #Nouio-dūnon]]」を参照せよ。)</span>
*② Huc Caesar omnes obsides Galliae, frumentum, pecuniam publicam,
**ここに、カエサルは、ガッリアのすべての人質たちや、糧食、公金、
*suorum atque exercitus impedimentorum magnam partem contulerat;
**および自分と軍隊の[[w:輜重|輜重]]の大部分を運び集めていた。
*③ huc magnum numerum equorum huius belli causa in [[w:la:Italia|Italia]] atque [[w:la:Hispania|Hispania]] coemptum miserat.
**ここに、この戦争のためにイタリアと[[w:ヒスパニア|ヒスパニア]]から買い集めた馬匹の多数を送っておいた。
*④ Eo cum [[w:la:Eporedorix|Eporedorix]] Viridomarusque venissent et de statu civitatis cognovissent,
**そこに、[[w:エポレドリクス|エポレドリクス]]と[[w:ウィリドマルス|ウィリドマルス]]がやって来て、(以下のような)部族の情勢について察知したときに、
[[画像:Bibracte333_crop.JPG|thumb|right|400px|[[w:ビブラクテ|ビブラクテ]]の[[w:オッピドゥム|城塞都市]]跡に整備された城壁の遺構]]
*Litaviccum [[w:la:Bibracte|Bibracti]] ab Haeduis receptum,
**(すなわち)リタウィックスが、ハエドゥイー族の者たちによって[[w:ビブラクテ|ビブラクテ]]に迎え入れられ、
*─ quod est oppidum apud eos maximae auctoritatis ─,
**それ(ビブラクテ)は彼ら(ハエドゥイー族)のもとで最大の影響力を持つ城塞都市であるが、
*Convictolitavem<ref>Convictolitavem はβ系・N写本の記述で、χ系・B・M・S・L写本では Convictolitabim となっている。</ref> magistratum magnamque partem senatus ad eum convenisse,
**統領コンウィクトリタウィスと評議会の大半の者たちが彼(リタウィックス)のもとへ参集し、
*legatos ad [[w:la:Vercingetorix|Vercingetorigem]] de pace et<ref>et は α系・U写本の記述で、π系・R写本では et de となっている。</ref> amicitia concilianda publice missos,
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]のところへ和平と友好を仲介するべく公けに使節たちが遣わされた(ことを知った)ので、
*non praetermittendum instans<ref>instans はβ系写本の記述で、α系写本にはない。</ref> tantum commodum existimaverunt.
**(エポレドリクスとウィリドマルスは)眼前にあるこれほどの好機を放置するべきではないと考えたのだ。
*⑤ Itaque interfectis Novioduni custodibus quique eo negotiandi aut itineris<ref>aut itineris はβ系写本の記述で、α系写本にはない。</ref> causa convenerant,
**こうして(2人は)ノウィオドゥーヌムの(ローマ側の)番兵たちや商用や旅行のために来訪していた者たちを殺害し、
*pecuniam atque equos inter se partiti sunt;
**金銭および馬匹を互いに分け合った。
*⑥ obsides civitatum Bibracte ad magistratum deducendos curaverunt;
**(ガッリアの)部族の人質たちをビブラクテの統領のところへ連れて行くように手配した。
*⑦ oppidum, quod a<ref>a はα系写本の記述で、β系写本では ab となっている。</ref> se teneri non posse iudicabant,
**(ノウィオドゥーヌムの)城塞都市は、自分たちによって固守することはできないと判断したので、
*ne cui esset usui Romanis, incenderunt;
**ローマ人たちの有益になることがないように、焼き打ちした。
*⑧ frumenti quod subito potuerunt navibus avexerunt,
**糧食のうち、急いで(運ぶことが)できるものを船団で運び去って、
*reliquum flumine atque incendio corruperunt.
**残りのものを川(に流すこと)により、および焼き打ちにより、役立たないようにした。
*⑨ Ipsi ex finitimis regionibus copias cogere,
**(彼ら)自身は、近隣の地方から軍勢を徴集して、
*praesidia custodiasque ad ripas Ligeris disponere
**リゲルの川岸のたもとへ守備隊や番兵を分配して、
*equitatumque omnibus locis iniciendi timoris causa ostentare coeperunt,
**(ローマ人に)恐怖(の感情)を起こさせるために、[[w:騎兵|騎兵隊]]に誇示をさせ始めた。
*si ab re frumentaria Romanos excludere
**もし、ローマ人たちが糧食調達することを阻止するなら、
*† aut adductos inopia in provincia<ref>in provincia は、α系写本では ex provincia「属州から」、β系写本では provincia となっているが、コンスタン Constans やクロッツ A.Klotz らにより in provincia「属州に」と修正提案されている。</ref> expellere<ref>expellere「駆逐する」 はα系写本の記述で、β系写本では excludere「阻止する、妨げる」 となっている。</ref> † possent.
**あるいは(糧食などの)欠乏により、属州に駆逐することができるなら、と。
**:<span style="color:#009900;">(訳注:† ~ † は、写本の文章が崩れて校訂者を迷わせていることを表す記号。修正提案されている。)</span>
*⑩ Quam ad spem multum eos adiuvabat,
**そのような希望へ、彼らを大いに励まし助けたのは、
*quod Liger ex nivibus creverat,
**リゲル川(の水位)が雪水により増したことで、
*ut omnino vado non posse transiri videretur.
**すべての浅瀬が渡らせられることができないと思われたのである。
===56節===
'''カエサルが属州へは戻らず、増水したリゲル川の渡河を敢行'''
*① Quibus rebus cognitis Caesar maturandum sibi censuit,
**それらの事態を知ると、カエサルは自らにとって(以下のことを)急ぐべきだと考慮した。
*si esset in perficiendis pontibus periclitandum,
**もし、橋を造り上げる最中に(敵勢と闘うという)危険を冒すのであれば、
*ut prius, quam essent maiores eo coactae copiae, dimicaret.
**そこに(敵方の)より多くの軍勢が集結するよりも早く闘うように(急ぐべきだと)。
*② Nam ut commutato consilio iter in provinciam converteret,
**なぜなら、作戦を変更して、属州([[w:ガリア・ナルボネンシス|ガッリア・トラーンサルピーナ]])に進路を方向転換するようにと、
*ne metu quidem<ref>ne metu quidem はα系写本の記述で、β系写本では nemo tunc quidem 、そのほか近代の校訂者によって修正提案が行なわれている。</ref> necessario faciendum<ref>faciendum はβ系写本の記述で、α系写本では faciundum となっている。</ref> existimabat;
**(ガッリア勢への)怖れによって行なうことは決して必要ではない、と考えたのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
*cum infamia atque indignitas rei
**(属州に撤退するという)事の不名誉や恥辱が、
**:<span style="color:#009900;">(訳注:cum ~ tum …「~であるのと同様に特に…である」)</span>
*et oppositus mons Cevenna<ref>Cevenna はχ系・U写本の記述で、π系・R写本の記述では Cebenna、φ系写本では Cevennae となっている。</ref> viarumque difficultas impediebat,
**およびケウェンナ山地が相対して道の(通行の)困難なことが、(属州への撤退を)妨げていたし、
**:<span style="color:#009900;">(訳注:ケウェンナ山地 mons Cevenna は現在のセヴェンヌ山地。[[#8節|8節]]を参照。)</span>
*tum maxime quod abiuncto [[w:la:Titus_Labienus|Labieno]] atque iis legionibus, quas una miserat, vehementer timebat.
**同様に、とりわけ[[w:ティトゥス・ラビエヌス|ラビエーヌス]]と一緒に派遣していた諸[[w:ローマ軍団|軍団]]から遠ざけられて、非常に心配してもいたのだ。
*③ Itaque admodum magnis diurnis nocturnisque itineribus confectis
**こうして、昼間も夜間も非常な強行軍を成し遂げて、
*contra omnium opinionem ad [[w:la:Liger|Ligerem]]<ref>Ligerem はα系写本の記述で、β系写本では Ligerim となっている。</ref> venit
**皆の予想に反して、リゲル川(=現[[w:ロワール川|ロワール川]])の辺りにやって来た。
*④ vadoque per equites invento pro rei necessitate opportuno,
**事態の緊急性に見合う好都合な浅瀬を、[[w:騎兵|騎兵]]たちを通じて見出して、
*ut brachia modo atque humeri<ref>humeri はA・φ系・ρ系写本の記述で、Q写本では umeri となっている。</ref> ad sustinenda arma liberi ab aqua esse possent,
**やっと腕と肩を、武器を差し上げるために、水から自由になることができた。
*disposito equitatu, qui vim fluminis refringeret,
**川の流れの圧力を妨げるべく、騎兵隊を分けて置いて、
*atque hostibus primo aspectu perturbatis,
**敵方は(ローマ勢を)初めに一見するや狼狽していたので、
*⑤ incolumem exercitum traduxit
**(カエサルは)軍隊を無傷のまま渡河させた。
*frumentumque in agris et pecoris copiam nactus
**耕地の穀物、および大量の家畜を獲得して、
*repleto his rebus exercitu
**これらの物を軍隊に補充して、
*iter in Senones facere instituit.
**セノネース族のところに行軍することを決めた。
**:<span style="color:#009900;">(訳注:セノネース族の方面には、副官ラビエーヌスと4個軍団を派遣していた。)</span>
==ラビエーヌスのルテティア遠征==
===57節===
'''副官ラビエーヌスがルテティア制圧に向かう'''
*① Dum haec apud Caesarem geruntur,
**これらがカエサルのもとで遂行されている間に、
*[[w:la:Titus Labienus|Labienus]] eo supplemento, quod nuper ex Italia venerat,
**[[w:ティトゥス・ラビエヌス|ラビエーヌス]]は、最近イタリアから来ていた補充兵(予備兵)を
**:<span style="color:#009900;">(訳注:[[#34節|34節]]で既述のようにラビエーヌスはカエサルから4個軍団とともにガッリア北部の制圧を委ねられていた。</span>
**:<span style="color:#009900;">また、[[#1節|1節]]で既述のようにカエサルはイタリア(属州[[w:ガリア・キサルピナ|ガッリア・キサルピーナ]])で部隊を徴兵していた。)</span>
*relicto [[w:la:Agedincum|Agedinci]], ut esset impedimentis praesidio,
**アゲディンクムに、[[w:輜重|輜重]]にとっての守備隊となるように、残留させて、
**:<span style="color:#009900;">(訳注:[[#10節|10節]]で既述のように、カエサルはアゲディンクム(現在の[[w:サンス|サンス]])に全軍の輜重を残していた。)</span>
*cum quattuor legionibus Luteciam<ref>Luteciam はα系写本の記述で、π系写本では Luceciam 、ρ系写本では Lucetiam となっている。[[ガリア戦記 第6巻#3節|第6巻3節]]では Lutetia(m) とも綴られている。</ref> proficiscitur.
**4個軍団とともに[[w:ルテティア|ルテティア]]に出発した。
**:<span style="color:#009900;">(訳注:ルテティア Lutetia は写本ではルテキア Lutetia とも綴られる。[[ガリア戦記 第6巻#3節|第6巻3節]]を参照。)</span>
*Id est oppidum Parisiorum, quod positum est<ref>quod positum est はα系写本の記述で、β系写本では単に positum となっている。</ref> in insula fluminis [[w:la:Sequana|Sequanae]].
**それ(ルテティア)は[[w:パリシイ族|パリスィイ族]]の<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>で、セクアナ川(=現[[w:セーヌ川|セーヌ川]])の中洲に位置している。
*② Cuius adventu ab hostibus cognito
**彼(ラビエーヌス)の到来が敵方により知られると、
*magnae ex finitimis civitatibus copiae convenerunt.
**近隣の諸部族から大軍勢が集結していた。
*③ Summa imperii traditur Camulogeno Aulerco,
**(北部ガッリア勢の)最高司令権は、[[w:アウレルキ族|アウレルキ族]]の[[w:カムロゲヌス|カムロゲヌス]]に託された。
*qui prope confectus aetate
**その者はかなり年老いていたが、
*tamen propter singularem scientiam rei militaris ad eum est honorem evocatus.
**けれども、彼の卓越した軍事の知識のために、顕職に召集されたのだ。
*④ Is cum animadvertisset perpetuam esse paludem,
**彼(カムロゲヌス)は、沼地が絶え間なくあることに気付いていたので、
*quae influeret in Sequanam atque illum omnem locum magnopere impediret,
**それはセクアナ(川)に流れ込み、かの一帯すべてを大いに近付きにくくしていたので、
*hic consedit nostrosque transitu prohibere instituit.
**ここに陣取って、我が方(ローマ勢)が渡河するのを妨げることに決めた。
===58節===
'''ラビエーヌスがメトロセドゥムを陥落させ、ルテティアのガッリア勢と対峙'''
*① [[w:la:Titus Labienus|Labienus]] primo vineas agere, cratibus atque aggere paludem explere
**[[w:ティトゥス・ラビエヌス|ラビエーヌス]]は初めに、<ruby><rb>[[w:ウィネア|工作小屋]]</rb><rp>(</rp><rt>ウィネア</rt><rp>)</rp></ruby>を駆ること、柴や土砂で沼地を埋め立てること、
*atque iter munire conabatur.
**および道を築くこと、を試みた。
*② Postquam id difficilius confieri<ref>confieri はχ系・β系写本の記述で、Q写本では confici となっている。</ref> animadvertit,
**それが成し遂げられることが困難だと気付いた後で、
*silentio e castris tertia vigilia egressus
**(敵に知られないように)静けさのうちに第三夜警時に陣営から進発して、
*eodem, quo venerat, itinere Metlosedum<ref>Metlosedum はコンスタン L.-A. Constans による修正で、π系・U写本では Metiosedum 、α系・ρ系写本では Mellodunum などとなっており、写本により表記がさまざまである。</ref> pervenit.
**やって来たのと同じ道程により、メトロセドゥムに到達した。
**:<span style="color:#009900;">(訳注:メトロセドゥム Metlosedum は、写本によりメティオセドゥム Metiosedum とも綴られ、</span>
**:<span style="color:#009900;">後にはメロドゥーヌム [[w:la:Melodunum|Melodunum]] として知られる。現在の[[w:ムラン|ムラン]] [[w:fr:Melun|Melun]] である。)</span>
*③ Id est oppidum [[w:la:Senones|Senonum]] in insula [[w:la:Sequana|Sequanae]] positum, ut paulo ante de [[w:la:Lutetia|Lutecia]] diximus.
**それはセノネース族の城塞都市で、少し前に[[w:ルテティア|ルテティア]]について述べたように、セクアナ川の[[w:中州|中州]]に位置している。
**:<span style="color:#009900;">(訳注:ルテティアすなわち現在の[[w:パリ|パリ]]の中心部に[[w:シテ島|シテ島]]や[[w:サン=ルイ島|サン=ルイ島]]という[[w:セーヌ川|セーヌ川]]の中州があるように、</span>
**:<span style="color:#009900;">現在のムランの中心部にもサン=テティエンヌ島 [[w:fr:Île Saint-Étienne|Île Saint-Étienne]] というセーヌ川の中州がある。)</span>
*④ Deprensis<ref>deprensis という語形はα系写本の記述で、β系写本では deprehensis となっている。</ref> navibus circiter quinquaginta celeriterque coniunctis
**約50隻の船を探し出して、速やかに結び合わせて(舟橋として)、
*atque eo militibus iniectis
**そこに兵士たちを投入して、
*et rei novitate perterritis oppidanis,
**事の新奇さに<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の者たちは脅えて、
*quorum magna pars erat ad bellum evocata,
**彼ら(住民)の大部分は戦争へ徴集されていた(ため不在であった)ので、
*sine contentione oppido potitur.
**(ラビエーヌスは)闘うことなしに(中州にあるメトロセドゥムの)城塞都市を掌握した。
*⑤ Refecto ponte, quem superioribus diebus hostes resciderant, exercitum traducit
**それ以前の日々に敵方が破却していた橋を再建して、軍隊を(中州から対岸へ)渡らせて、
*et secundo flumine ad Luteciam iter facere coepit.
**川に沿ってルテティアの方へ行軍を始めた。
*⑥ Hostes re cognita ab iis, qui Metlosedo<ref>Metlosedo はコンスタン L.-A. Constans による修正で、β系・S写本では Metiosedo 、χ系写本では Melloduno 、B・M・L・N写本では Ametlodone(あるいは Ametclodone)などとなっている。</ref> fugerant,
**敵方は、メトロセドゥムから逃げて来た者たちから事態を知って、
*Luteciam incendi pontesque eius oppidi rescindi iubent;
**ルテティアを焼打ちすること、その城塞都市の橋を破却すること、を命じた。
*ipsi profecti a palude ad ripas<ref>ad ripas はχ系・B・M・L・N写本の記述で、S・Vおよびρ系写本では in ripas 、T写本では in ripa となっている。</ref> Sequanae
**彼ら自身は、沼地からセクアナの川岸へ出発して、
*e regione Luteciae contra Labieni castra considunt.
**ルテティア(の対岸)に向かってラビエーヌスの陣営に対抗して陣取った。
===59節===
'''ガッリア諸部族が迫り、ラビエーヌスが作戦変更を決断'''
*① Iam Caesar a [[w:la:Gergovia|Gergovia]] discessisse audiebatur,
**すでに、カエサルが[[w:ゲルゴウィア|ゲルゴウィア]]から撤退したことが聞かれていたし、
*iam de [[w:la:Haedui|Haeduorum]] defectione et secundo Galliae motu rumores adferebantur,
**もはや、[[w:ハエドゥイ族|ハエドゥイー族]]の背反や、ガッリアの動乱の順調さについての噂がもたらされていた。
*Gallique in conloquiis
**(当地の)ガッリア人たちは会話の中で、
*interclusum itinere et [[w:la:Liger|Ligeri]] Caesarem inopia frumenti coactum in provinciam contendisse confirmabant.
**カエサルが行軍やリゲル(渡河)を遮られて、糧食の欠乏により属州([[w:ガリア・ナルボネンシス|ガッリア・トラーンサルピーナ]])に急ぐことを強いられた、と確言した。
*② Bellovaci autem defectione Haeduorum cognita,
**一方で、ベッロウァキ族もハエドゥイー族の背反を知って、
**:<span style="color:#009900;">(訳注:ベッロウァキ族は、ハエドゥイー族の仲介によりカエサルに降伏していた。[[ガリア戦記 第2巻#14節|第2巻14節]]~15節を参照。)</span>
*qui iam<ref>qui iam は古典学者 ニコラエス・ハインシウス1世 [[w:en:Nikolaes_Heinsius_the_Elder|Nikolaes Heinsius the Elder]] による修正提案で、χ系・S・β系写本では qui 、B・M・L・N写本では quia となっている。</ref> ante erant per se infideles,
**彼ら自身もすでに以前から(カエサルやローマ人に)忠誠的でなかったが、
*manus cogere atque aperte bellum parare coeperunt.
**手勢を徴集して、公けに戦争を準備することを始めた。
*③ Tum [[w:la:Titus Labienus|Labienus]] tanta rerum commutatione
**そこで、[[w:ティトゥス・ラビエヌス|ラビエーヌス]]はこれほどの事態の変動により、
*longe aliud sibi capiendum consilium, atque antea senserat, intellegebat,
**自分にとって、以前に判断していたのとはまったく別の作戦が立てられるべきだ、と考えた。
**:<span style="color:#009900;">(訳注:aliud ~ atque …「…とは別の~」)</span>
*④ neque iam, ut aliquid adquireret proelioque hostes lacesseret,
**もはや、何らかのものを獲得したり、敵方に戦闘を挑むようにではなく、
**:<span style="color:#009900;">(訳注:neque ut ~, sed ut …「~ようにではなく、…ように」)</span>
*sed ut incolumem exercitum Agedincum reduceret, cogitabat.
**軍隊を無傷のままでアゲディンクム(=現[[w:サンス|サンス]])に連れ戻すように、と考えた。
**:<span style="color:#009900;">(訳注:アゲディンクムには輜重と守備隊が残されていた。[[#10節|10節]]・[[#57節|57節]]を参照。)</span>
*⑤ Namque altera ex parte Bellovaci,
**実際、一方の側からはベッロウァキ族が、
*quae civitas in Gallia maximam habet opinionem virtutis, instabant,
**ガッリアにおいて武勇に最大の評判を持つその部族が、迫りつつあった。
*alteram Camulogenus parato atque instructo exercitu tenebat:
**他方からは、カムロゲヌスが軍隊を準備し、整列させて、進んでいた。
*tum legiones a praesidio atque impedimentis interclusas
**そのとき、(ラビエーヌス麾下の)諸軍団は(アゲディンクムにいる)守備隊や輜重から遮られて、
*maximum flumen distinebat.
**とても大きな(セクアナ)川が阻んでいた。
*⑥ Tantis subito difficultatibus obiectis
**突然に、これほどの困難が投げ出されたので、
*ab animi virtute auxilium petendum videbat.
**武勇の心構えに救いを求めるべきだと(ラビエーヌスは)思った。
===60節===
'''ラビエーヌスが陽動戦術に努める'''
*① Itaque<ref>Itaque はS・β系写本の記述で、α系写本にはない。</ref> sub vesperum consilio convocato
**こうして([[w:ティトゥス・ラビエヌス|ラビエーヌス]]は)夕方に会議を召集して、
*cohortatus, ut ea, quae imperasset, diligenter industrieque administrarent,
**(彼が)命令したことを入念かつ勤勉に従事するように鼓舞した。
*naves, quas [[w:la:Melodunum|Metlosedo]]<ref>Metlosedo はコンスタン L.-A. Constans による修正で、χ系・S・β系写本では Metiosedo 、B・M写本では ameclodone 、L・N写本では a mellodone 、<i>etc</i>. となっている。</ref> deduxerat, singulas equitibus Romanis attribuit,
**[[w:ムラン|メトロセドゥム]]から引いて来ていた船団を、ローマ人騎士たち1人ずつに配分して、
*et prima confecta vigilia IIII(quattuor) milia passuum secundo flumine silentio progredi
**第一夜警時が終わる頃に、4ローママイル(6km弱)下流に静けさのうちに進発すること、
*ibique se exspectari<ref>exspectari はα系・T・ρ系写本の記述で、S・V写本では exspectare などとなっている。</ref> iubet.
**かつ、そこで自分(ラビエーヌス)を待つことを命じた。
*② Quinque cohortes, quas minime firmas ad dimicandum esse existimabat,
**(白兵戦を)闘うためにはあまり強くないと(ラビエーヌスが)考えていた5個<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>
*castris praesidio relinquit;
**陣営にとっての守備隊として残留させた。
*quinque eiusdem legionis reliquas
**同じ軍団の残りの5個(歩兵大隊)を
*de media nocte cum omnibus impedimentis adverso flumine magno tumultu proficisci imperat.
**真夜中から、すべての[[w:輜重|輜重]]とともに、上流の方に大きな喧騒でもって出発することを命令した。
*④ Conquirit etiam lintres;
**小舟さえも探し集めて、
*has magno sonitu remorum incitatas in eandem partem mittit.
**これらを大きな音とともに[[w:櫂|櫂]]を駆って、同じ方面に派遣した。
*Ipse post paulo silentio egressus cum tribus legionibus
**(ラビエーヌス)自身は、少し後で静けさのうちに3個[[w:ローマ軍団|軍団]]とともに進発して、
*eum locum petit, quo naves appelli iusserat.
**船団が停められることを命じていた地点へ行った。
===61節===
'''ラビエーヌスの陽動により、敵将カムロゲヌスが兵力を分散'''
*① Eo cum esset ventum,
**(ラビエーヌスの軍勢が)そこにやって来たときに、
*exploratores hostium, ut omni fluminis parte erant dispositi,
**敵方の偵察者たちが(セクアナ)川の至る所に分けて置かれていたが、
*inopinantes, quod magna subito erat coorta tempestas,
**突然に大きな嵐が生じたので(ローマ勢の襲撃を)予期していなかった者たちは、
*ab<ref>ab はχ系・B・M・L・N写本の記述で、S・β系写本では a となっている。</ref> nostris opprimuntur;
**我が方(ローマ勢)によって不意を襲われたのだ。
*② exercitus equitatusque equitibus Romanis administrantibus, quos ei negotio praefecerat,
**歩兵隊と騎兵隊が、(ラビエーヌスが)任務を指揮させていたローマ人騎士たちの指導により、
*celeriter transmittitur.
**速やかに(セクアナ川を)渡らせられた。
*③ Uno fere tempore sub lucem hostibus nuntiatur
**夜明け前のほぼ一時に(以下のことが)敵方に報知された。
*in castris Romanorum praeter consuetudinem tumultuari
**ローマ人の陣営において、通例に反して、騒がれていること、
*et magnum ire agmen adverso flumine
**大きな隊列が上流の方へ行軍していること、
*sonitumque remorum in eadem parte exaudiri
**(船を漕ぐ)櫂の音が同じ方面で聞き取られたこと、
*et paulo infra milites navibus transportari.
**少し下流で兵士たちが船で(セクアナ川を)渡されたこと、である。
*④ Quibus rebus auditis,
**それらの事態が聞かれて、
*quod existimabant tribus locis transire legiones atque omnes perturbatos defectione [[w:la:Haedui|Haeduorum]] fugam parare,
**(ローマ勢の)諸軍団が3か所で渡河したこと、[[w:ハエドゥイ族|ハエドゥイー族]]の背反により総勢が取り乱して逃亡を準備していること、を考えたので、
*suas quoque copias in tres partes distribuerunt.
**自分たちの軍勢をも3方面に分配した。
*⑤ Nam praesidio e regione castrorum relicto
**すなわち(一隊がローマ勢の)陣営の真向かいに守備隊として残され、
*et parva manu Metlosedum<ref>Metlosedum はQ写本の記述で、χ系・β系写本では Metiosedum 、などとなっている。</ref> versus missa,
**(別の)わずかな手勢が[[w:ムラン|メトロセドゥム]]の方面へ派遣され、
*quae tantum progrediatur<ref>progrediatur はα系写本の記述で、Q・S・β系写本では progrederetur となっている。</ref>, quantum naves processissent,
**(ローマ勢の)船団が進み出るだけ、(ガッリア兵も)前進するようにした。
*reliquas copias contra Labienum duxerunt.
**残りを軍勢をラビエーヌスに対して(カムロゲヌス自身が)率いて行った。
===62節===
'''ラビエーヌスがカムロゲヌス麾下のガッリア勢を各個撃破して、カエサルと合流'''
*① Prima luce et nostri omnes erant transportati
**夜明けに、我が方(ローマ勢)は総勢が(セクアナ川の左岸に)渡されていたし、
*et hostium acies cernebatur.
**敵方の戦列も見分けられた。
*② [[w:la:Titus Labienus|Labienus]] milites cohortatus,
**[[w:ティトゥス・ラビエヌス|ラビエーヌス]]は兵士たちを(以下のように)鼓舞した。
*ut suae pristinae virtutis et tot<ref>tot はS・β系写本の記述で、α系写本にはない。</ref> secundissimorum proeliorum retinerent memoriam<ref>retinerent memoriam はχ系・B・M・L・N写本の記述で、S・β系写本では memoriam retinerent となっている。</ref>
**自分たちのかつての武勇とこのようにとてもうまくいっている諸戦闘を記憶に留めるように、
*atque ipsum Caesarem, cuius ductu saepe numero hostes superassent, praesentem adesse existimarent,
**かつ、その指揮によって何度もしばしば敵方を打ち破って来たカエサル当人が目下居合わせていると考えるように、と。
*dat signum proelii.
**(それから)戦闘の号令を発した。
*③ Primo concursu ab dextro cornu, ubi septima legio constiterat,
**最初の激突は、[[w:第7軍団クラウディア・ピア・フィデリス|第7軍団]]が布陣していた(ローマ軍の)右翼からで、
*hostes pelluntur atque in fugam coniciuntur;
**敵方は撃退されて、逃亡に追いやられた。
*④ ab sinistro, quem locum duodecima legio tenebat,
**第12軍団が場所を占めていた左翼からは、
*cum primi ordines hostium transfixi pilis<ref>pilis はβ系写本の記述で、α系写本では telis となっている。</ref> concidissent,
**敵方の最前列(の兵たち)が投げ槍で突き通されて斃れたのだが、
*tamen acerrime reliqui resistebant
**けれども残りの者たちがとても激烈に抵抗していて、
*nec dabat suspicionem fugae quisquam.
**誰も逃亡の予兆を示さなかった。
*⑤ Ipse dux hostium Camulogenus suis aderat atque eos cohortabatur.
**敵方の将帥カムロゲヌス自身は、麾下の者たちに居合わせて、彼らを激励していた。
*⑥ At<ref>cohortabatur. At はχ系写本などの記述で、別の写本では記述が異なる。</ref> incerto nunc etiam<ref>nunc etiam はB・M・L・N写本の記述で、χ系・S・β系写本では etiamnunc となっている。</ref> exitu victoriae,
**勝敗の帰趨は今もなお不確実だったが、
*cum septimae legionis tribunis esset nuntiatum, quae in sinistro cornu gererentur,
**第7軍団の<ruby><rb>[[w:トリブヌス・ミリトゥム|兵士長官]]</rb><rp>(</rp><rt>トリブヌス・ミリトゥム</rt><rp>)</rp></ruby>たちに、左翼で<ruby><rb>出来</rb><rp>(</rp><rt>しゅったい</rt><rp>)</rp></ruby>したことが報告されたときに、
*post tergum hostium legionem ostenderunt signaque intulerunt.
**敵方の背後に(第7)軍団を差し向けて、軍旗を進めた(=進撃した)。
*⑦ Ne eo quidem tempore quisquam loco cessit,
**その時でさえ、(ガッリア勢の)誰も(戦闘の)場から退却しなかった
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
*sed circumventi omnes interfectique sunt.
**けれども、総勢が包囲されて(ローマ軍により)殺戮された。
*Eandem fortunam tulit Camulogenus.
**同じ不幸をカムロゲヌスも蒙った。
*⑧ At ii<ref>ii はχ系写本の記述で、他の写本では記述が異なる。</ref>, qui praesidio contra castra Labieni erant relicti,
**これに対して、ラビエーヌスの陣営に対して守備隊として残されていた(ガッリア勢の)者たちは、
*cum proelium commissum audissent, subsidio suis ierunt collemque ceperunt,
**(両軍が)戦闘を交えているのを聞き付けたので、味方の援兵として出て行って、丘陵を占めていたが、
*neque nostrorum militum victorum impetum sustinere potuerunt.
**勝勢の我が方(ローマ軍)の兵士たちの突撃を持ちこたえることができなかった。
*⑨ Sic cum suis fugientibus permixti,
**このようにして、敗走している味方と混じり合ったときに、
*quos non silvae montesque texerunt, ab equitatu sunt interfecti.
**森林や山岳が覆い隠すことのなかったその者たちは、(ローマ側の)騎兵隊によって殺戮された。
*⑩ Hoc negotio confecto Labienus revertitur Agedincum,
**この戦役が成し遂げられると、ラビエーヌスは[[w:サンス|アゲディンクム]]に引き返した。
*ubi impedimenta totius exercitus relicta erant;
**そこには軍隊全体の[[w:輜重|輜重]]が残されていたのだ。
*inde die Ⅲ.<ref>inde die Ⅲ. は近代の校訂者による修正提案で、Q・M・S・N・β系写本では単に inde 、他の写本では別の記述になっている。</ref> cum omnibus copiis ad Caesarem pervenit.
**そこから3日目(=2日後)にすべての軍勢とともにカエサルのところへ到着した。
==ガッリア戦乱の拡大==
===63節===
'''ハエドゥイー族がウェルキンゲトリークスに主導権争いを挑む'''
*① Defectione [[w:la:Haedui|Haeduorum]] cognita bellum augetur.
**[[w:ハエドゥイ族|ハエドゥイー族]]の背反が知られて、戦乱は拡大された。
*② Legationes in omnes partes circummittuntur;
**(ハエドゥイー族らにより)使節たちがあらゆる方面に遣わされまくり、
*quantum gratia, auctoritate, pecunia valent, ad sollicitandas civitates nituntur;
**信望、勢力や金銭によってできる限り、諸部族をそそのかすことに努めた。
**:<span style="color:#009900;">(訳注:quantum ~ valere「~によってできる限り」)</span>
*③ nacti obsides, quos Caesar apud eos deposuerat,
**カエサルが彼ら(ハエドゥイー族)のもとに預けて置いた人質たちを手に入れて、
*horum supplicio dubitantes territant.
**彼ら(人質たち)の処刑(を示唆すること)によって、決心がつかぬ者たちを恐れさせた。
*④ Petunt a [[w:la:Vercingetorix|Vercingetorige]] Haedui, ut ad se veniat rationesque belli gerendi communicet;
**ハエドゥイー族は、[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]に、自分たちのところへ来て戦争遂行の戦略を協議するように要求した。
*re impetrata contendunt, ut ipsis summa imperii tradatur.
**その事が成し遂げられると、(ハエドゥイー族)自身に最高司令権が委ねられるように頑張った。
*Et re<ref>et re は近代の校訂者による修正提案で、β系写本では re 、α系写本では et rem となっている。</ref> in controversiam deducta totius Galliae concilium [[w:la:Bibracte|Bibracte]] indicitur.
**その事が論争の状態に置かれて、[[w:ビブラクテ|ビブラクテ]]でのガッリア全体の会合が公示された。
*Eodem conveniunt<ref>Eodem conveniunt はα系写本の記述で、β系写本では単に conveniunt 、etc.となっている。</ref> undique frequentes.
**同じところに至る所からたくさんの者たちが集まって来た。
*⑥ Multitudinis suffragiis res permittitur;
**(最高司令権の)事は衆人の票決に任せられて、
*ad unum omnes Vercingetorigem probant imperatorem.
**衆議一決により、ウェルキンゲトリークスを将軍(最高司令官)として承認した。
**:<span style="color:#009900;">(訳注:ad unum omnes「最後の一人に至るまですべて」)</span>
*⑦ Ab hoc concilio Remi, Lingones, Treveri afuerunt,
**この会合へは、[[w:レミ族|レーミー族]]、リンゴネス族、トレウェリ族が不在であった。
*illi quod amicitiam Romanorum sequebantur,
**前者(レーミー族とリンゴネス族)は、ローマ人との友好を遵守したので(不在であった)。
*Treveri quod aberant longius et ab<ref>ab はα系写本の記述で、β系写本では a となっている。</ref> [[w:la:Germani|Germanis]] premebantur,
**トレウェリ族は、はるか遠くに離れており、[[w:ゲルマニア|ゲルマニア]]人により圧迫されていた。
*quae fuit causa quare toto abessent bello
**それが、何ゆえに(ウェルキンゲトリークスによる)戦争全体に関与しなかったかの理由であり、
*et neutris auxilia mitterent.
**(ウェルキンゲトリークスとカエサルの)どちら側にも援軍を派遣しなかった。
*⑧ Magno dolore Haedui ferunt se deiectos principatu,
**ハエドゥイー族は、自分たちが盟主の座から遠ざけられて、とても憤懣やるかたなかったし、
*queruntur fortunae commutationem
**境遇の変わりようを嘆いて、
*et Caesaris indulgentiam in se<ref>indulgentiam in se はα系写本の記述で、β系写本では in se indulgentiam となっている。</ref> requirunt
**カエサルの自分たちへの寛大さを惜しんだ。
*neque tamen suscepto bello suum consilium ab reliquis separare audent.
**けれども戦争を引き受けてしまったので、あえて自分たちの作戦計画をほか(の諸部族)と異にしなかった。
*⑨ Inviti summae spei adulescentes Eporedorix et Viridomarus Vercingetorigi parent.
**たいへんな野心を持つ青年たち[[w:エポレドリクス|エポレドリクス]]と[[w:ウィリドマルス|ウィリドマルス]]は、意に反してウェルキンゲトリークスに服従した。
===64節===
'''ウェルキンゲトリークスがガッリア諸部族の誘降・服従を謀る'''
*① Ipse<ref>ipse はα系写本の記述で、β系写本では ille となっている。</ref> imperat reliquis civitatibus obsides denique ei rei constituit diem;
**(ウェルキンゲトリークス)自身は、ほかの諸部族に人質(の供出)を命令して、のみならずその事の期日を決めた。
*huc omnes equites, [[wikt:la:quindecim|XV(quindecim)]] milia numero, celeriter convenire iubet.
**そこに、1万5000名の数のすべての[[w:騎兵|騎兵]]に、速やかに集結することを命じた。
*② Peditatu quem antea habuerit se fore contentum dicit
**(歩兵については)自分は、以前から持っていた[[w:歩兵|歩兵隊]]で満足するであろうと言った。
*neque fortunam temptaturum aut in acie<ref>in acie はα系写本の記述で、β系写本では単に acie となっている。</ref> dimicaturum,
**(歩兵で)武運を試すことはしないであろうし、あるいは野戦で(白兵戦を)闘うこともないであろう、と。
*sed quoniam abundet equitatu,
**しかし、騎兵隊は豊富であるから、
*perfacile esse factu frumentationibus pabulationibusque Romanos prohibere;
**ローマ人たちの糧食・糧秣徴発を妨げることは、とても容易である、と。
*③ aequo modo animo sua ipsi frumenta corrumpant aedificiaque incendant,
**ただ平静な心で、自分たちの穀物を自身で傷めて、(穀物の)建屋を焼打ちするように。
*qua rei familiaris iactura perpetuum imperium libertatemque se consequi videant.
**資産の犠牲により、永久の領有権と自由を自分たちが獲得することを思え、と。
*④ His constitutis rebus
**これらの事が決定されると、
*[[w:la:Haedui|Haeduis]] Segusiavisque, qui sunt finitimi provinciae, decem milia peditum imperat;
**[[w:ハエドゥイ族|ハエドゥイー族]]および(ローマ人の)属州に隣接するセグスィアウィ族には1万の歩兵(の供出)を命令していたが、
*huc addit equites [[wikt:la:octingenti|octingentos]].
**この中に、800騎の騎兵たち(の供出)を付け加えた。
*⑤ His praeficit fratrem Eporedorigis bellumque inferri<ref>inferri はα系写本の記述で、β系写本では inferre となっている。</ref> Allobrogibus iubet.
**彼らをエポレドリクスの兄弟に指揮させて、アッロブロゲス族に戦争をしかけることを命じた。
*⑥ Altera ex parte Gabalos proximosque <u>[[wikt:en:pagus#Latin|pagos]]</u> Arvernorum in Helvios,
**別の方面から、ガバリ族および近隣のアルウェルニー族の諸<u>郷</u>に、ヘルウィイ族のところに(攻め入るように)、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''pagus'' (郷) はここでは、部族の領土の農村区画を指す行政用語<ref name="pagus">''[[w:en:Pagus]]'' 等を参照。</ref>。)</span>
*item Rutenos Cadurcosque ad fines Volcarum Arecomicorum depopulandos mittit.
**同様に、ルテーニー族およびカドゥルキー族に、ウォルカエ・アレコミキ族の領土を荒らしまわるべく派遣した。
*⑦ Nihilo minus clandestinis nuntiis legationibusque Allobrogas<ref>Allobrogas はα系写本の記述で、β系写本では Allobroges となっている。</ref> sollicitat,
**それにもかかわらず、隠密に伝令たちや使節たちにより、アッロブロゲス族を(蜂起を)そそのかした。
*quorum mentes nondum ab<ref>ab はβ系写本の記述で、α系写本では ab となっている。</ref> superiore bello resedisse sperabat.
**彼ら(アッロブロゲス族)の心がかつての戦争からまだ静まっていないことを期待したのだ。
**:<span style="color:#009900;">(訳注:アッロブロゲス族は、BC61年にローマに反旗を翻し、翌BC60年に鎮圧されていた。[[ガリア戦記 第1巻#6節|第1巻6節]]を参照。)</span>
*⑧ Horum principibus pecunias,
**彼らの領袖たちに金銭を(約束し)、
*civitati autem imperium totius provinciae pollicetur.
**さらに部族には(カエサル統治下の)属州全体の支配権をも約束したのだ。
===65節===
'''カエサルと同盟諸部族の防戦。ゲルマニア騎兵を呼び寄せる'''
*① Ad hos omnes casus provisa erant praesidia cohortium duarum et viginti,
**これらすべての出来事に対して、(カエサルは)22個<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>からなる守備隊を用意していた。
*quae ex ipsa coacta<ref>coacta はχ系・β系写本の記述で、φ系写本にはない。</ref> provincia ab L.(Lucio) Caesare legato
**それらは、<ruby><rb>[[w:レガトゥス|総督副官]]</rb><rp>(</rp><rt>レガトゥス</rt><rp>)</rp></ruby>ルキウス・カエサルによって属州全体から徴集されたもので、
**:<span style="color:#009900;">(訳注:ここでいう属州とは、[[w:ガリア・ナルボネンシス|ガッリア・トラーンサルピーナ]]を指すと思われる。</span>
**:<span style="color:#009900;">ルキウス・ユリウス・カエサル4世 [[w:en:Lucius Julius Caesar IV|Lucius Julius Caesar IV]] は本書の著者カエサルと4代前の高祖父を共有する元執政官。[[w:en:Julii Caesares|Julii Caesares]] を参照。)</span>
*ad omnes partes opponebantur.
**あらゆる方面に対して配置された。
*② Helvii sua sponte cum finitimis proelio congressi pelluntur
**[[w:ヘルウィイ族|ヘルウィイ族]]は、自分たちの意思により、近隣(の諸部族)と戦闘で争って撃退され、
**:<span style="color:#009900;">(訳注:この部族については[[#7節|7節]]~8節を参照。)</span>
*et C.(Gaio) Valerio Domnotauro<ref>Domnotauro はS・L・N写本の記述で、A・B・N写本では Donnotauro 、χ系・π系写本では Donotauro となっており、ρ系写本には記述がない。</ref>, Caburi filio, principe civitatis,
**カブルスの息子で、部族の領袖であるガイウス・ウァレリウス・ドムノタウルス
**:<span style="color:#009900;">(訳注:彼は、ローマとの友好により、ローマ人風の名前を与えられていたのであろう。)</span>
*compluribusque aliis interfectis intra oppida ac muros<ref>ac muros はα系写本の記述で、β系写本では murosque となっている。</ref> compelluntur.
**および他のかなりの者たちが殺戮されて、<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>と城壁の内側に追い込まれた。
*③ Allobroges crebris ad [[w:la:Rhodanus|Rhodanum]] dispositis praesidiis
**[[w:アッロブロゲス族|アッロブロゲス族]]は、ロダヌス(=現[[w:ローヌ川|ローヌ川]])のところへ密に守備隊を分け置いて、
*magna cum cura et diligentia suos fines tuentur.
**たいへんな注意と入念さにより、自分たちの領土を守った。
*④ Caesar quod hostes equitatu superiores esse intellegebat
**カエサルは、敵方が[[w:騎兵|騎兵隊]]で(自軍より)優っていると認識していたので、
*et interclusis omnibus itineribus nulla re ex provincia atque Italia sublevari poterat,
**かつ、すべての道が遮られて、属州やイタリアから何ら支援されることができなかったので、
**:<span style="color:#009900;">(訳注:属州 provincia とはガッリア・トラーンサルピーナ、イタリア Italia とは[[w:ガリア・キサルピナ|ガッリア・キサルピーナ]]のことであろう。)</span>
*trans [[w:la:Rhenus|Rhenum]] in [[wikt:la:Germania|Germaniam]] mittit ad eas civitates, quas superioribus annis pacaverat,
**レヌス(=現[[w:ライン川|ライン川]])の向こう側の[[w:ゲルマニア|ゲルマニア]]に、先年に平定していた諸部族のところへ(使節を)遣わした。
**:<span style="color:#009900;">(訳注:ゲルマニア遠征や平定については、[[ガリア戦記 第4巻#16節|第4巻16節]]~19節、[[ガリア戦記 第6巻#9節|第6巻9節]]~10節を参照。)</span>
*equitesque ab his arcessit et levis armaturae pedites,
**彼らから、騎兵たち、および[[w:ウェリテス|軽い武装の歩兵]]たちを呼び寄せた。
*qui inter eos proeliari consuerant.
**その者ら(軽装歩兵)は、彼ら(騎兵)の間で戦闘することが常であったのだ。
*⑤ Eorum adventu, quod minus idoneis equis utebantur,
**彼ら(ゲルマニア騎兵)が到着すると、(戦闘に)あまり適していない馬を使役していたので、
**:<span style="color:#009900;">(訳注:ゲルマニア人の馬の使用については、[[ガリア戦記 第4巻#2節|第4巻2節]]を参照。)</span>
*a tribunis militum reliquisque equitibus Romanis atque evocatis equos sumit
**<ruby><rb>[[w:トリブヌス・ミリトゥム|兵士長官]]</rb><rp>(</rp><rt>トリブヌス・ミリトゥム</rt><rp>)</rp></ruby>たちやほかのローマ人騎士たちや<ruby><rb>再徴集兵</rb><rp>(</rp><rt>エウォカティ</rt><rp>)</rp></ruby>たちから、馬匹を取り上げて、
*[[w:la:Germani|Germanis]]que distribuit.
**ゲルマニア人たちに分配した。
===66節===
'''属州へと南下するカエサル、迎え撃とうとするウェルキンゲトリークス'''
*① Interea dum haec geruntur,
**その間に、これらが出来している間に、
*hostium copiae ex Arvernis
**敵方の(歩兵の)軍勢が(滞陣していたゲルゴウィアの)[[w:アルウェルニ族|アルウェルニー族]]のところから、
*equitesque qui toti Galliae erant imperati conveniunt.
**および全ガッリアの命令されていた[[w:騎兵|騎兵]]たちが、(ウェルキンゲトリークスのところに)集結して来た。
*② Magno horum coacto numero,
**これらの(ガッリア兵の)多数が徴集されて、
*cum Caesar in Sequanos per extremos Lingonum fines iter faceret,
**カエサルが、[[w:セクアニ族|セクアニ族]]のところに(向かって)[[w:リンゴネス族|リンゴネス族]]の領土の外縁を通って行軍していたときに、
**:<span style="color:#009900;">(訳注:属州へは、リンゴネス族と後述のマンドゥビイ族の間を通ってセクアニ族領を通らねばならなかった。)</span>
*quo facilius subsidium provinciae ferri<ref>ferri はα系写本の記述で、β系写本では ferre となっている。</ref> posset,
**(それは)属州(ガッリア・トラーンサルピーナ)に援兵をより容易にもたらせるようにするためであったが、
*circiter milia passuum X(decem) ab Romanis trinis castris [[w:la:Vercingetorix|Vercingetorix]] consedit
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、ローマ人たちから約10ローママイル(15km)のところに、3つの陣営にて陣取った。
*③ convocatisque ad concilium praefectis equitum
**(ウェルキンゲトリークスは)騎兵の指揮官たちを会合へ召集して、
*venisse tempus victoriae demonstrat;
**勝利の時が来たと、明言した。
*fugere in provinciam Romanos Galliaque excedere.
**ローマ人たちは属州に逃亡して、ガッリアから立ち退きつつある、と。
*④ Id sibi ad praesentem obtinendam libertatem satis esse;
**それは、自分たちにとって目下のところ、自由を維持するためには十分であるが、
*ad reliqui temporis pacem atque otium parum profici;
**将来の平和と平穏は不充分にしか得られない。
*maioribus enim coactis copiis reversuros
**なぜなら(ローマ人たちは)より大きな軍勢を徴集して(ガッリアに)戻って来るであろうし、
*neque finem bellandi facturos.
**戦争することに結末をつけることはないであろう。
*Proinde agmine impeditos adorirentur<ref>adorirentur はA・β系写本の記述で、M・L・N写本では adoriantur 、S写本では adorantur 、Q・B・M写本ではadorientur となっている。</ref>.
**それゆえに、(ローマ勢の)行軍によって重荷となっている(輜重隊の)者たちを襲撃するのだ。
*⑤ Si pedites suis auxilium ferant atque in eo morentur, iter facere<ref>facere はα系写本の記述で、β系写本では confici となっている。</ref> non posse;
**もし(ローマ勢の)歩兵たちが味方を支援し、そのことで滞留するならば、(属州へ)行軍することはできない。
*si ─id quod magis futurum confidat─
**もし、─(我は)むしろそうなるであろうと期待することであるが─
*relictis impedimentis suae saluti consulant,
**(ローマ歩兵たちが)[[w:輜重|輜重]]を残して、自分たちの身の安全に意を用いるならば、
*et usu rerum necessariarum et dignitate spoliatum iri.
**必需品の使用や(ローマ人としての)品格をはぎ取られることになる。
*⑥ Nam de equitibus hostium,
**なぜなら、敵方の騎兵については
**<span style="color:#009900;">:(訳注:著者カエサルはここでは、間接話法でありながら、ローマ勢について hostium「敵方の」と表現している。)</span>
*quin nemo eorum progredi modo extra agmen audeat,
**彼ら(ローマ騎兵)のうち誰も、<ruby><rb>行軍縦隊</rb><rp>(</rp><rt>アグメン</rt><rp>)</rp></ruby>の外にすら、あえて進み出ようとしないこと、
*et ipsos quidem non<ref>et ipsos quidem non はα系写本の記述で、β系写本では ne ipsos quidem となっている。</ref> debere dubitare.
**(そのことを、諸君ら)自身は決して疑念を持つことなかれ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
*Id quo maiore faciant animo,
**それ(=輜重隊への襲撃)を、より大胆な心構えで実行してもらうために、
*copias se omnes pro castris habiturum et terrori hostibus futurum.
**自分(ウェルキンゲトリークス)が軍勢すべてを陣営の前に保持しておくであろうし、敵方の心胆を寒からしめるであろう。
*⑦ Conclamant equites
**(ガッリア勢の)騎兵たちは(以下のように)叫んだ。
*sanctissimo iure iurando confirmari oportere,
**最も神聖な誓約によって確証されなければならぬ。
*ne tecto recipiatur, ne ad liberos, ne ad parentes, ad<ref>ne ad …, ne ad …, ad が写本(ω)の記述であるが、モイゼル Meusel は ne ad …, ad …, ad と修正提案をしている。</ref> uxorem aditum habeat,
**(以下の者は)家に迎え入れられたり、子供たちや親たちや妻女たちのところへ近づくことがないように。
*qui non bis per agmen hostium perequitasset<ref>perequitasset はα系写本の記述で、β系写本では perequitarit となっている。</ref>.
**敵方(ローマ勢)の隊列を越えて(往復の)2度、騎馬で駆け抜けることがなかった者は。
**:<span style="color:#009900;">(訳注:敵中突破と生還を成し遂げなかった騎兵は、復員してはならない、と誓約したのである。)</span>
===67節===
'''カエサル麾下のゲルマニア騎兵がウェルキンゲトリークスを一蹴'''
*① Probata re atque omnibus iure iurando adactis
**これが賛同されて、(ガッリア騎兵の)皆が誓約させられて、
*postero die in tres partes distributo equitatu
**翌日に、[[w:騎兵|騎兵隊]]を3つの分隊に分配した。
*duae se acies ab duobus lateribus ostendunt,
**2隊は(ローマ勢の左右)2つの側面から<ruby><rb>戦闘隊形</rb><rp>(</rp><rt>アキエス</rt><rp>)</rp></ruby>として現われた。
*una a<ref>a はβ系写本の記述で、α系写本にはない。</ref> primo agmine iter impedire coepit.
**1隊は(ローマ勢の)前衛から行軍を妨げ始めた。
*② Qua re nuntiata
**その事が報告されて、
*Caesar suum quoque equitatum tripertito divisum contra hostem ire iubet.
**カエサルは麾下の騎兵隊おのおのを3つに配分して、敵に対して向かって行くことを命じた。
*Pugnatur una omnibus in partibus.
**(騎兵戦が)同時にすべての方面で戦われた。
*③ Consistit agmen;
**(ローマ勢の)<ruby><rb>行軍縦隊</rb><rp>(</rp><rt>アグメン</rt><rp>)</rp></ruby>は一歩も引かなかった。
*impedimenta intra legiones recipiuntur.
**[[w:輜重|輜重]]は諸[[w:ローマ軍団|軍団]]の内側に後退した。
*④ Si qua in parte nostri laborare aut gravius premi videbantur,
**もし、我が方(ローマ勢)のある部隊が苦戦したり、またはひどく押されぎみだと思われたならば、
*eo signa inferri Caesar aciemque constitui<ref>constitui はα系写本の記述で、β系写本では converti 、T写本では conferri となっている。</ref> iubebat;
**カエサルはそこに進撃して戦列を組織することを命じた。
**:<span style="color:#009900;">(訳注:signa inferre「軍旗を進める、進撃する」)</span>
*quae res et hostes ad insequendum tardabat et nostros spe auxilii confirmabat.
**その事が、敵方が追撃して来るのを遅らせもしたし、我が方が支援の希望により元気付けられもした。
*⑤ Tandem Germani ab dextro latere summum iugum nacti hostes loco depellunt,
**ついに、ゲルマニア人(騎兵)たちが右の側面から尾根の頂きを掌握して、敵方をその場から追いやった。
*fugientes usque ad flumen,
**逃亡する(ガッリア騎兵の)者たちを川の辺りまで(追って)、
*ubi [[w:la:Vercingetorix|Vercingetorix]] cum pedestribus copiis consederat,
**そこには[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]が[[w:歩兵|歩兵]]の軍勢とともに陣取っていたのだが、
*persecuntur<ref>persecuntur はα系写本の記述で、β系写本では persequuntur となっている。</ref> compluresque interficiunt.
**(ゲルマニア騎兵が敵を川辺まで)追撃して、かなりの者たちを殺戮した。
*⑥ Qua re animadversa
**その事が(敵方に)気付かれて、
*reliqui ne circumirentur<ref>circumirentur はA・φ系写本の記述で、Q・β系写本では circumvenirentur となっている。</ref> veriti se fugae mandant.
**(ガッリア勢の)残りの者たちは、包囲されないようにと怖れて、逃亡に身を任せた。
*Omnibus locis fit caedes.
**(こうしてローマ方により)あらゆる場所で虐殺が行なわれた。
*⑦ Tres nobilissimi [[w:la:Haedui|Haedui]] capti ad Caesarem perducuntur:
**[[w:ハエドゥイ族|ハエドゥイー族]]の3人の高位の貴族が捕らえられて、カエサルのところへ連行されて来た。
*Cotus, praefectus equitum, qui controversiam cum Convictolitavi proximis comitiis habuerat,
**コトゥスは騎兵指揮官で、最近の会議でコンウィクトリタウィスと(統領の座をめぐって)係争した。
**:<span style="color:#009900;">(訳注:[[#32節|32節]]~33節を参照。)</span>
*et Cavarillus, qui post defectionem Litavicci pedestribus copiis praefuerat,
**カウァリッルスは、リタウィックスの背反の後に、歩兵の軍勢を指揮していた。
*et Eporedorix, quo duce ante adventum Caesaris Haedui cum Sequanis bello contenderant.
**エポレドリクスは、カエサルの到来以前にハエドゥイー族の将帥としてセクアニ族と戦争を闘っていた。
**:<span style="color:#009900;">(訳注:この人物は、ウィリドマルスとともにカエサルを裏切ったエポレドリクスとは同名異人である。)</span>
==アレスィア攻囲戦==
===68節===
[[画像:Alésia.jpg|thumb|right|300px|[[w:アレシアの戦い|アレスィア古戦場]]であるとほぼ確実視されている仏アリーズ=サント=レーヌ村([[w:fr:Alise-Sainte-Reine|Alise-Sainte-Reine]])近郊のオソワ山(Mont Auxois)という丘陵の西端にある[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]像(<small>[[w:fr:Vercingétorix_(statue d'Aimé Millet)|Statue de Vercingétorix]]</small>)。<small>[http://maps.google.co.jp/?ie=UTF8&ll=47.538579,4.490544&spn=0.001172,0.002401&t=h&z=19&brcurrent=3,0x0:0x0,1 Googleマップ]</small>の航空写真にもこの巨像が写っている。<br>当地はフランス東部[[w:ブルゴーニュ地域圏|ブルゴーニュ地方]][[w:コート=ドール県|コート=ドール県]](<small>[[w:fr:Côte-d'Or|Côte-d'Or]]</small>)のオソワ地域(<small>[[w:fr:Auxois (région)|L'Auxois]]</small>)にあり、県都[[w:ディジョン|ディジョン]]市街から西北西へ約4.5kmの地点に位置する。ディジョン方面から県道905号(D905)を北西に進んで行くと、ヴナレ=レ=ローム(<small>[[w:fr:Venarey-les-Laumes|Venarey-les-Laumes]]</small>)から東の郊外にかけて古戦場跡が広がる。<br>オソワ(Auxois)という地域名・山名は、ラテン語の Alesiensis pagus「アレスィア郷」が転訛し、アリーズ(Alise)の名もアレスィア(Alesia)に由来すると考えられている。サント=レーヌ([[w:fr:Sainte Reine|Sainte Reine]] 聖レグニア)とはこの地でAD252年に殉教したキリスト教徒ガッリア人女性で、カトリック教会から聖人に列せられている。]]
'''ウェルキンゲトリークスがアレスィア入城、カエサルは攻囲を決断'''
*① Fugato omni equitatu
**すべての[[w:騎兵|騎兵隊]]が逃げてしまったので、
*[[w:la:Vercingetorix|Vercingetorix]] copias suas<ref>suas はβ系写本の記述で、α系写本にはない。</ref>, ut pro castris conlocaverat, reduxit
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、陣営の前に配置するようにしていた麾下の(歩兵の)軍勢を呼び戻して、
*protinusque [[w:la:Alesia|Alesiam]], quod est oppidum Mandubiorum, iter facere coepit
**すぐに、マンドゥビイ族の<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>である[[w:アレシア|アレスィア]]へ行軍し始めた。
*celeriterque impedimenta ex castris educi et se subsequi iussit.
**かつ、速やかに陣営から[[w:輜重|輜重]]を進発させること、および自分に追随すること、を命じた。
*② Caesar impedimentis in proximum collem deductis,
**カエサルは、輜重を近隣の丘陵に移させて、
*duabus legionibus praesidio relictis,
**2個[[w:ローマ軍団|軍団]]を(輜重の)守備隊として(その丘陵に)残留させた。
*secutus quantum diei tempus est passum,
**日中の時間が許される限り(ガッリア勢を)追跡して、
*circiter tribus milibus hostium ex novissimo agmine interfectis
**敵方の後衛のうちから約3000人を殺戮して、
*altero die ad Alesiam castra fecit.
**翌日には、アレスィアの辺りに陣営を張った。
*③ Perspecto urbis situ
**(アレスィアの)都市の地勢を吟味して、
*perterritisque hostibus, quod equitatu, qua maxime parte exercitus confidebant, erant pulsi,
**敵方は、部隊の大部分において頼りにしていた騎兵隊が撃退されていたので、怖れおののいていたから、
*adhortatus ad laborem milites circumvallare instituit.
**(カエサルは)兵士たちを労役に駆り立てて、(敵陣を)[[w:堡塁|堡塁]]で囲むことを決断した。
===69節===
[[画像:Alise2.jpg|thumb|right|300px|[[w:アレシア|アレスィア]]にあったローマ時代の[[w:フォルム|フォルム]](広場)や[[w:バシリカ|バシリカ]](教会堂)などと思われる遺跡([http://maps.google.co.jp/?ie=UTF8&t=h&brcurrent=3,0x0:0x0,1&ll=47.539477,4.5008&spn=0.002343,0.004801&z=18 Googleマップ]の航空写真を参照)。現在、オソワ山(Mont Auxois)と呼ばれているこの丘陵は、頂きが平坦な台地状になっており、その中央のさらに高い所に[[w:オッピドゥム|オッピドゥム]](城塞都市)があったと思われる。<br>上の画像からは、同等の高さの丘陵が周囲を取り巻いていることが見て取れる。<br>『ガリア戦記』に書かれたアレスィアの所在地については諸説があって永らく不明であったが、ゲルゴウィアと同様に19世紀のウジェーヌ・ストッフェル大佐(colonel Eugène Stoffel)の発掘調査によってローマ軍の遺構などが発見され、地勢もカエサルの記述にかなり合っていると見なされて、オソワ山とその中腹にあるアリーズ=サント=レーヌが有力視されることになった。]]
'''アレスィアの地勢、ローマ軍の攻囲線'''
*① Ipsum erat oppidum [[w:la:Alesia|Alesia]] in colle summo admodum edito loco,
**[[w:アレシア|アレスィア]]の<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>そのものは、丘陵の頂きにおいて、ひときわ高い地点にあって、
*ut nisi obsidione expugnari non posse videretur.
**攻囲(包囲)以外には攻略されることができないと思われた。
*② Cuius collis radices duo duabus ex partibus flumina subluebant.
**その丘陵のふもとを2つの方面から、2つの川が流れていた。
*③ Ante id<ref>id はα系写本の記述で、β系写本にはない。</ref> oppidum planities circiter milia passuum Ⅲ(tria) in longitudinem patebat;
**その城塞都市の前に、約3ローママイル(4.5km)の間隔で、平地が広がっていた。
*④ reliquis ex omnibus partibus colles mediocri interiecto spatio
**ほかのすべての方面からは(いくつかの)丘陵が適度な空間を置いており、
*pari altitudinis fastigio oppidum cingebant.
**同等の高さの頂上で(アレスィアの)城塞都市を取り巻いていた。
*⑤ Sub muro, quae pars collis ad orientem solem spectabat,
**(アレスィアの)丘陵の日が昇る方(=東方)へ面していた部分の城壁の下には、
*hunc omnem locum copiae Gallorum compleverant
**このすべての場所を、ガッリア人たちの軍勢が満たしていて、
*fossamque et maceriam sex in altitudinem pedum praeduxerant.
**堀、および高さ6[[w:ペース (長さ)|ペース]](約1.8m)の防壁を前に引いていた。
**:<span style="color:#009900;">(訳注:[[wikt:en:maceria|maceria]] は、軍事用語としては、立てこもるための城壁<ref><i>muraille (pour se retrancher)</i>(ラルース社の羅仏辞典 <small>“Dictionnaire MaxiPoche Plus latin-français et français-latin”</small> を参照)</ref>を指す。)</span>
*⑥ Eius munitionis quae ab Romanis instituebatur circuitus XI<ref>XI はα系写本の記述で、β系写本では X となっている。</ref> milia passuum tenebat.
**ローマ人たちによって建てられようとしていた塁壁の周囲は、11ローママイル(約16km)を占めていた。
**:<span style="color:#009900;">(訳注:α系写本では 11マイル=約16km、β系写本では 10マイル=約15km となっている。)</span>
*⑦ Castra opportunis locis erant posita
**(ローマ勢の)陣営は(戦略上)都合良い地点に設置されていて、
**:<span style="color:#009900;">(訳注:歩兵・騎兵の陣営が計8か所に置かれていたようである。)</span>
*ibique<ref>ibique はα系写本の記述で、β系写本では itemque となっている。</ref> castella XXIII(viginti tria) facta,
**同じく23基の砦が造られた。
*quibus in castellis interdiu stationes ponebantur,
**それらの砦には、昼間は、歩哨たちが置かれて、
*ne qua subito eruptio fieret;
**不意に何らかの突撃がなされないようにした。
*haec eadem noctu excubitoribus ac firmis praesidiis tenebantur.
**この同じところが、夜間は、寝ずの番兵および強力な守備隊により固守された。
===70節===
'''カエサル麾下のゲルマニア騎兵が、再びガッリア騎兵を虐殺'''
*① Opere instituto
**(ローマ人により)[[w:堡塁|堡塁]]が建てられだして、
*fit equestre proelium in ea planitie,
**かの平地において[[w:騎兵|騎兵]]戦がなされた。
*quam intermissam collibus tria milia passuum in longitudinem patere supra demonstravimus.
**それ(平地)は(周囲の)丘陵から3ローママイル(約4.5km)の間隔を空けて広がっていることを、[[#69節|前]]に述べた。
*Summa vi ab utrisque contenditur.
**(騎兵戦は)双方の主力によって闘われた。
*② Laborantibus nostris Caesar Germanos submittit
**苦戦している我が方(ローマ騎兵)に対して、カエサルは[[w:ゲルマニア|ゲルマニア]]人(騎兵)を援けに派遣した。
*legionesque pro castris constituit, ne qua subito inruptio ab hostium peditatu fiat.
**諸[[w:ローマ軍団|軍団]]を陣営の前に駐留させて、不意に何らかの突入が敵方の[[w:歩兵|歩兵隊]]によってなされないようにした。
*③ Praesidio legionum addito nostris animus augetur;
**軍団の守備が加わって、我が方(ローマ勢の)勇気が増された。
*hostes in fugam coniecti se ipsi multitudine impediunt
**敵方(の騎兵)は敗走に追いやられて、彼ら自身が自分たち(の敗走)を大勢であることにより妨げた。
*atque angustioribus portis relictis coacervantur<ref>coacervantur は近世の写本(ς)の記述で、α系写本では coacervati tum 、β系写本では coartantur となっている。</ref>.
**さらに(ガッリア陣地の)諸門がとても狭いままにしておかれたので(騎兵たちが)積み重ねられた。
*④ Germani acrius usque ad munitiones sequuntur.
**ゲルマニア人(騎兵)たちは(ガッリア騎兵たちを)苛烈に、防塁のところまで追撃した。
*⑤ Fit magna caedes.
**(こうして)大虐殺が起こった。
*Nonnulli relictis equis fossam transire et maceriam transcendere conantur.
**(ガッリア騎兵の)幾人かは、馬を置き去りにして、堀を越えること、および防壁を登り越えることを試みた。
*Paulum legiones Caesar quas pro vallo constituerat promoveri iubet.
**カエサルは、防柵の前に駐留させていた諸軍団に、いくらか前進することを命じた。
*⑥ Non minus qui intra munitiones erant perturbantur Galli:
**防塁の内側にいたガッリア人たちも(騎兵たちに)劣らず狼狽した。
*veniri ad se confestim existimantes ad arma conclamant;
**(ローマ勢により)自分たちのところへ直ちにやって来られると考えた者たちは、防具を取れと叫んだ。
*nonnulli perterriti in oppidum inrumpunt.
**(ガッリア勢の)幾人かは、怖れおののいて(丘陵の頂きにある)城塞都市の中に押し入った。
*⑦ [[w:la:Vercingetorix|Vercingetorix]] iubet portas claudi, ne castra nudentur.
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、陣営が無防備にされないように、(防塁の)諸門が閉じられることを命じた。
*Multis interfectis, compluribus equis captis Germani sese recipiunt.
**(ガッリア騎兵の)多くが殺戮され、おびただしい馬が捕獲されて、ゲルマニア人(騎兵)たちは退却した。
===71節===
[[画像:Statue_Vercingetorix_st_germain_en_laye.JPG|thumb|right|250px|[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の立像(<small>パリ郊外の[[w:サン=ジェルマン=アン=レー|サン=ジェルマン=アン=レー]] [[w:fr:Saint-Germain-en-Laye|Saint-Germain-en-Laye]]</small>)。[[w:アレシアの戦い|アレスィア古戦場]](<small>現在のアリーズ=サント=レーヌ</small>)にある巨大な銅像と同様に彫刻家エメ・ミレ([[w:fr:Aimé Millet|Aimé Millet]])によって建立された。]]
[[画像:Napoleon3.PNG|thumb|right|250px|ウジェーヌ・ストッフェル大佐(colonel Eugène Stoffel)をして[[w:アレシア|アレスィア]]およびゲルゴウィアの発掘調査をさせた立役者・皇帝[[w:ナポレオン3世|ナポレオン3世]]の肖像。[[w:ガリア起源説|ガッリア起源説]]により、王政に反感を持つフランスの共和派や庶民は、旧[[w:ブルボン家|ブルボン王朝]]を[[w:クロヴィス1世|クロヴィス]]や[[w:ユーグ・カペー|カペー]]にさかのぼるゲルマン系の[[w:フランク人|フランク人]]と見なし、自分たちのルーツを[[w:ケルト人|ケルト系]]の古代[[w:ガリア人|ガッリア人]]に求めた。ナポレオン3世はこのような国民の意識を利用して、[[w:ナショナリズム|ナショナリズム]]の高揚および帝政の基盤強化を図ったのである。]]
'''ウェルキンゲトリークスが援兵召集のため騎兵を放ち、籠城策を定める'''
*① [[w:la:Vercingetorix|Vercingetorix]], priusquam munitiones ab Romanis perficiantur,
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、ローマ人たちによって塁壁が完成されるより前に、
*consilium capit omnem ab se equitatum noctu dimittere.
**自分のところから[[w:騎兵|騎兵隊]]のすべてを夜間に送り出すことを計画した。
*② Discedentibus mandat
**(アレスィアから)退去する(騎兵の)者たちに(以下のように)指図した。
*ut suam quisque eorum civitatem adeat
**彼ら(騎兵)のおのおのが自らの部族に行くように、
*omnesque qui per aetatem arma ferre possint ad bellum cogant.
**かつ、年齢により武器を手に取ることができる者たちの皆を戦争へ徴集するように、と。
*③ Sua in illos merita proponit obtestaturque
**(ウェルキンゲトリークスは)彼ら(ガッリア人たち)における自分の功績に言及して(以下のように)懇願した。
*ut suae salutis rationem habeant
**自分の身の安全を顧慮してくれるように、
*neu se optime de communi libertate meritum in cruciatum hostibus<ref>in cruciatum hostibus はβ系写本の記述で、α系写本では hostibus in cruciatum となっている。</ref> dedant.
**かつ(ガッリア)共通の自由について功績が最上である自分を、敵方の責め苦に渡すことがないように、と。
*Quod si indiligentiores fuerint,
**ところが、もし(騎兵たちがウェルキンゲトリークスたちの安全に)無関心であったならば、
*milia hominum delecta octoginta una secum interitura demonstrat.
**選りすぐりの兵員8万名が自分と一緒に滅びるであろう、と明言した。
*④ Ratione inita frumentum se exigue dierum XXX(triginta) habere<ref>frumentum ~ habere はβ系写本の記述で、χ系・φ系あるいはモイゼル H. Meusel の修正提案など、写本や校訂者により語順が異なっていたり、単語が欠けていたりする。</ref>,
**見積もったところ、自分たちはわずかに30日分の穀物を保有しているが、
*sed paulo etiam longius tolerari posse parcendo.
**しかし節約することにより、なおいくらか長く耐え忍ぶことができる、と。
*⑤ His datis mandatis,
**これらの指図を与えてから、
*qua erat nostrum opus<ref>erat nostrum opus はβ系写本の記述で、α系写本では単に opus erat となっている。</ref> intermissum, secunda vigilia silentio equitatum mittit<ref>mittit はχ系・B・M・S写本の記述で、β系写本では dimittit となっている。</ref>.
**我が方(ローマ勢)の構築物が中断しているところから、第二夜警時に静けさのうちに、騎兵隊を送り出した。
*⑥ Frumentum omne ad se referri iubet,
**穀物をすべて自分のところへ運んで来ることを命じて、
*capitis poenam iis qui non paruerint constituit;
**服従しなかった者たちを極刑に処すと決めた。
*⑦ pecus, cuius magna erat copia a Mandubiis<ref>a Mandubiis はβ系写本の記述で、α系写本では ab Manduviis となっている。</ref> compulsa, viritim distribuit;
**家畜は、マンドゥビイ族によって大量に集められていたが、個々に分配した。
*frumentum parce et paulatim metiri instituit;
**穀物を節約して少しずつ量り分けることを定めた。
*⑧ copias omnes quas pro oppido collocaverat in oppidum recepit.
**<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の前に駐留させていた(歩兵の)軍勢すべてを城塞都市の中に退却させた。
*⑨ His rationibus auxilia Galliae exspectare et bellum parat administrare<ref>parat administrare はα系写本の記述で、β系写本では administrare parat となっている。</ref>.
**これらの手段により、ガッリア(諸部族)の援軍を待つこと、および戦争を指導しようとしたのである。
===72節===
'''カエサルが、より大掛かりな攻囲陣地を構築する'''
*① Quibus rebus cognitis<ref>cognitis がこの位置にあるのはα系写本の記述で、β系写本では captivis の後となっている。</ref> ex perfugis et captivis
**それらの事情を脱走兵たちや捕虜たちから知って、
*Caesar haec genera munitionis instituit.
**カエサルは以下の類いの塁壁工事に取りかかった。
<br>
*'''前線の切り立った空堀'''
*Fossam pedum XX(viginti) derectis lateribus duxit,
**20[[w:ペース (長さ)|ペース]](約6m)の(幅の)垂直な側面の堀を引いた。
*ut eius fossae<ref>fossae がこの位置にあるのはβ系写本の記述で、α系写本では summa(e) の後になっている。</ref> solum tantundem pateret, quantum summa<ref>summa はβ系写本の記述で、α系写本では summae となっている。</ref> labra distarent<ref>distarent はα系写本の記述で、β系写本では distabant となっている。</ref>.
**その堀(の底)は、頂きの縁が離れているのとちょうど同じ分だけ広がるようにした。
**:<span style="color:#009900;">(訳注:上辺と底の幅が等間隔になるような切り立った空堀にした。)</span>
*② Reliquas omnes munitiones ab ea fossa pedes<ref>pedes はα系写本の記述で、β系写本では pedibus となっている。</ref> CCCC(quadringentos) reduxit.
**ほかのすべての塁壁は、その堀から400ペース(約120m)後ろに引いた。
**:<span style="color:#009900;">(訳注:写本にあるこの数字は、19世紀のウジェーヌ・ストッフェル大佐(colonel Eugène Stoffel)の</span>
**:<span style="color:#009900;">発掘調査によって400[[w:パッスス|パッスス]](約600m)と修正された。この堀は、アレスィアの西方に引かれたと思われる。)</span>
*Id hoc consilio,
**それは、以下の考えによる。
*quoniam tantum spatium necessario esset<ref>spatium necessario esset はβ系写本の記述で、α系写本では esset necessario spatio となっている。</ref> complexus
**これほどの空間が包囲されなければならないのであるから、
*nec facile totum corpus<ref>corpus はα系写本の記述で、β系写本では opus となっており、ρ系写本にはない。</ref> corona militum cingeretur,
**すべての包囲作業が兵士たちの<ruby><rb>哨兵線</rb><rp>(</rp><rt>コロナ</rt><rp>)</rp></ruby>で取り囲まれるのは容易ではない。
*ne de improviso aut noctu ad munitiones hostium multitudo<ref>hostium multitudo はα系写本の記述で、β系写本では multitudo hostium となっている。</ref> advolaret
**不意に、あるいは夜間に、敵方の大勢が(ローマ側の)塁壁へ突進することがないように、
*aut interdiu tela in nostros operi destinatos conicere possent<ref>possent はα系写本の記述で、β系写本では posset となっている。</ref>.
**あるいは日中に、工事中の我が方(ローマ勢)に飛道具が投げ付けられることができないように。
<br>
[[画像:Fosse.Saint.Pierre.en.Chastres.png|thumb|right|300px|二重の堀およびその背後の堡塁(土塁と障壁・櫓)の模式図([[w:ウジェーヌ・エマニュエル・ヴィオレ・ル・デュク|ヴィオレ=ル=デュク]]著『中世フランス建築体系辞典』[[s:fr:Dictionnaire raisonné de l’architecture française du XIe au XVIe siècle - Tome 5, Fossé|(s)]]より)。]]
[[画像:AlesiaFortifications.JPG|thumb|right|300px|[[w:アレシアの戦い|アレスィア古戦場]]跡に再現された、二重の堀およびその背後の堡塁(土塁と鹿柴、胸壁・鋸壁、櫓)。]]
*'''二重の堀'''
*③ Hoc intermisso spatio
**この空間をあけて、
*duas fossas XV(quindecim) pedes latas eadem altitudine perduxit;
**15ペース(約4.5m)の幅の2つの堀を、同じ深さ(15ペース)で張り巡らせた。
*quarum interiorem campestribus ac demissis locis
**それらの内側(の堀)の平地で低く下がった所には、
**:<span style="color:#009900;">(訳注:内側の堀とは、アレスィアに近い東側の堀と考えられている。)</span>
*aqua ex flumine derivata complevit.
**川から導かれた水で満たした。
<br>
*'''土塁と防柵、胸壁と鋸壁、鹿柴、櫓'''
*④ Post eas aggerem ac vallum XII(duodecim) pedum exstruxit.
**それらの後ろには、12ペース(約3.6mの高さ)の<ruby><rb>[[w:土塁|土塁]]</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby>と<ruby><rb>防柵</rb><rp>(</rp><rt>ウァッルム</rt><rp>)</rp></ruby>を築き上げた。
*Huic loricam pinnasque adiecit
**これに<ruby><rb>胸壁</rb><rp>(</rp><rt>ロリカ</rt><rp>)</rp></ruby>と<ruby><rb>鋸壁</rb><rp>(</rp><rt>ピンナ</rt><rp>)</rp></ruby>を付け加えて、
**:<span style="color:#009900;">(訳注:胸壁と鋸壁とは、[[ガリア戦記 第5巻#40節|第5巻40節]]で既出のように、凹凸形に編み込まれた柴の壁)</span>
*grandibus cervis eminentibus ad commissuras pluteorum atque aggeris,
**障壁と土塁の接合部の辺りに大きな<ruby><rb>鹿柴</rb><rp>(</rp><rt>ケルウス</rt><rp>)</rp></ruby>を突き出させて、
**:<span style="color:#009900;">(訳注:<ruby><rb>鹿柴</rb><rp>(</rp><rt>ろくさい</rt><rp>)</rp></ruby>(鹿砦または<ruby><rb>逆茂木</rb><rp>(</rp><rt>さかもぎ</rt><rp>)</rp></ruby>)とは、鹿の角のように枝分かれした杭や枝を逆立てた杭囲い。</span>
**:<span style="color:#009900;">障壁とは、防柵の前に取り付けられた胸壁と鋸壁の総称であろう。)</span>
*qui ascensum hostium tardarent,
**敵方が登って来るのを妨げようとした。
*et turres toto opere circumdedit, quae pedes LXXX(octoginta) inter se distarent.
**構築物の全体を、互いに80ペース(約24m)離れて立つ櫓で取り巻いた。
===73節===
'''カエサルは、攻囲陣地をさらに障害物で補強する'''
*① Erat eodem tempore et materiari et frumentari et tantas munitiones fieri necesse
**材木収集と糧食徴発、およびこれほどの塁壁工事がなされることが、同時に必要であった。
*deminutis nostris copiis, quae longius ab<ref>ab はα系写本の記述で、β系写本では a となっている。</ref> castris progrediebantur.
**我が方の軍勢(ローマ勢)は減じており、陣営からはるか遠くに進み出ていた。
*Ac nonnumquam opera nostra Galli temptare
**いくたびか、我が方の構築物に、ガッリア人が攻撃すること(を試み)、
*atque eruptionem ex oppido pluribus portis summa vi facere conabantur.
**かつ、<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の多くの門から、主力でもって出撃することを試みた。
*② Quare ad haec rursus opera addendum Caesar putavit,
**そのゆえに、この構築物へさらに(以下の障害物が)付け加えられるべきだとカエサルは考えた。
*quo minore numero militum munitiones defendi possent.
**それによって、より少ない数の兵士で塁壁が防衛されることができるように、と。
[[画像:Archeodrome_Beaune_8.jpg|thumb|right|300px|[[w:アレシアの戦い|アレスィア古戦場]]跡に再現された攻囲陣地(上の画像と同じ物)。堡塁(土塁と障壁と櫓)の前の平地に、樹枝が突き出た「尖り杭」(奥)と落とし穴を枝で覆った「百合」(手前)が見える。]]
[[画像:Trous.de.loup.png|thumb|right|300px|サイコロの五つ目状に並べられた落とし穴「百合」(lilium)の模式図([[w:ウジェーヌ・エマニュエル・ヴィオレ・ル・デュク|ヴィオレ=ル=デュク]]著『中世フランス建築体系辞典』[[s:fr:Dictionnaire raisonné de l’architecture française du XIe au XVIe siècle - Tome 5, Fossé|(s)]]より)。図の上部が五つ目状の配列を、図の下部が落とし穴の断面図を示す。この断面図では、尖らされた樹幹の先端が、傾斜した穴の突き固められた底から4本指ほど突き出ていると解釈しているようである。カエサルの記述からは、地表から突き出ているとも解釈できる。]]
[[画像:Aiguillon.png|thumb|right|200px|鉄の鉤が固定された杭「刺」の模式図([[w:ウジェーヌ・エマニュエル・ヴィオレ・ル・デュク|ヴィオレ=ル=デュク]]著『中世フランス建築体系辞典』[[s:fr:Dictionnaire raisonné de l’architecture française du XIe au XVIe siècle - Tome 5, Fossé|(s)]]より)。]]
[[画像:Archeodrome_Beaune_2.jpg|thumb|right|300px|[[w:アレシアの戦い|アレスィア古戦場]]跡に再現された攻囲陣地(上の画像と同じ物)。いちばん手前に「刺」が再現されている。]]
:
'''尖り杭'''
*Itaque truncis arborum aut admodum firmis ramis abscisis
**こうして、樹木の幹、あるいは非常に強固な枝が切り取られて、
*atque horum delibratis ac praeacutis cacuminibus
**これらの皮がむかれて、<ruby><rb>梢</rb><rp>(</rp><rt>こずえ</rt><rp>)</rp></ruby>が<ruby><rb>尖</rb><rp>(</rp><rt>とが</rt><rp>)</rp></ruby>らされて、
*perpetuae fossae quinos pedes altae ducebantur.
**5[[w:ペース (長さ)|ペース]](約1.5m)ずつの連続した堀が引かれた。
*③ Huc illi stipites demissi
**ここに、あの樹幹が沈められて、
*et ab infimo revincti, ne revelli possent, ab ramis eminebant.
**底から固くしばられて、はぎ取ることができないようにして、枝から(地上に)突き出るようにしていた。
*④ Quini erant ordines coniuncti inter se atque implicati;
**5列ずつが、互いにつなげられて、結び合わされた。
*quo qui intraverant se ipsi acutissimis vallis induebant.
**そこに踏み込んだ者は、自身が自らをきわめて鋭い杭に陥れた。
*Hos cippos appellabant.
**(将兵たちは)これらを<ruby><rb>尖り杭</rb><rp>(</rp><rt>キップス</rt><rp>)</rp></ruby>と呼んだ。
**:<span style="color:#009900;">(訳注:[[wikt:en:cippus|cippus]]「尖り杭」は「墓標」とも訳されるが、後者は古典期以降のラテン語で長方形の墓碑を指す<ref><small>POSTCLASSIQUE</small> <i>[[w:fr:Cippe|cippe]] (colonne funéraire rectangulaire)</i>(ラルース社の羅仏辞典 <small>“Dictionnaire MaxiPoche Plus latin-français et français-latin”</small> を参照)</ref>。)</span>
:
'''百合'''
*⑤ Ante<ref>ante はβ系写本の記述で、α系写本にはない。</ref> quos<ref>quos はα系写本の記述で、β系写本では hos となっている。</ref> obliquis ordinibus in quincuncem dispositis
**それらの前に、(サイコロの)<ruby><rb>五つ目状</rb><rp>(</rp><rt>クィンクンクス</rt><rp>)</rp></ruby>に斜めの列に配置されて、
*scrobes tres in altitudinem pedes fodiebantur
**深さ3ペース(約90cm)の穴が掘られた。
*paulatim angustiore ad infimum fastigio.
**しだいに、より狭く、底の方へ傾斜を付けて。
*⑥ Huc teretes stipites [[w:la:Femur|feminis]] crassitudine
**ここに、太ももの厚さの丸みを帯びた樹幹が
*ab summo praeacuti et praeusti demittebantur,
**先端から尖らせられ、焦がされて(穴の底に)突き刺された。
*ita ut non amplius digitis quattuor ex terra<ref>ex terra はα系写本の記述で、V・ρ系写本では e terra 、T写本では contra となっている。</ref> eminerent;
**4本の指より長くないほど地中から突き出るように。
*⑦ simul confirmandi et stabiliendi causa
**同時に、強固にして固定するために、
*singuli ab infimo solo pedes terra exculcabantur;
**それぞれ底から1ペース(約30cm)だけ土で突き固められた。
*reliqua pars scrobis ad occultandas insidias viminibus ac virgultis integebatur.
**穴の残りの部分は、わなを隠すために、柳の細枝や若枝で覆われた。
*⑧ Huius generis octoni ordines ducti ternos inter se pedes distabant.
**この類いを、8列ずつ、3ペース(約90cm)ずつ互いに離して、作った。
*Id ex similitudine floris lilium appellabant.
**(将兵たちは)それを花との類似から、<ruby><rb>[[w:ユリ|百合]]</rb><rp>(</rp><rt>リリウム</rt><rp>)</rp></ruby>と呼んだ。
:
'''刺'''
*⑨ Ante haec taleae pedem longae ferreis hamis infixis totae in terram infodiebantur
**これらの前に、鉄製の鉤が打ち込まれた長さ1ペース(約30cm)の棒の全体が地中に埋め込まれた。
*mediocribusque intermissis spatiis omnibus locis disserebantur,
**適度な空間を間にあけて、至る所に配置された。
*quos stimulos nominabant.
**(将兵たちは)それらを刺と呼んだ。
{| class="wikitable"
|-
! colspan="2" | [[w:la:Obsidio Alesiae|Obsidio Alesiae]]
|-
| style="vertical-align:top; text-align:left; width:35em;" |[[画像:Fortificazioni alesia png.png|thumb|left|500px|[[w:アレシアの戦い|アレシアの戦い]]における攻囲陣地の構成(図の説明はイタリア語)。]]
|}
===74節===
'''ガッリア人の来援に備えて、外周にも同様の塁壁を張り巡らす'''
*① His rebus perfectis
**これらの物が造り上げられると、
*regiones secutus quam potuit aequissimas pro loci natura
**地勢に応じて、できるかぎり好都合な地帯を探し求めて、
*XIIII(quattuordecim) milia passuum complexus
**14ローママイル(約21km)を取り巻いて、
*pares eiusdem generis munitiones,
**(内周の塁壁と規模が)匹敵する同じ類いの塁壁を
*diversas ab his, contra exteriorem hostem perfecit,
**これら(内周)に対置させて、外側の敵に対抗して造り上げた。
*ut ne magna quidem multitudine, si ita accidat equitatus<ref>equitatus はシェーラー(Schoeller)による修正提案で、写本(ω)では eius であるが、近代の校訂者たちにより修正提案がなされている。</ref> discessu,
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:ne quidem|ne ~ quidem]]「~でさえ…ない」)</span>
**もし[[w:騎兵|騎兵隊]]の退去によりこのようなこと(外敵との遭遇)が生じても、決して大軍により
*munitionum praesidia circumfundi possent;
**塁壁の守備隊が包囲されることができないように。
*② <ne> autem<ref>ne autem は近代の校訂者による修正提案で、α系・π系写本では aut、ρ系写本では ut となっている。</ref> cum periculo ex castris egredi cogatur,
**(ローマ勢が)危険を伴って陣営から進発することを強いられることもないように、
*dierum XXX(triginta) pabulum frumentumque habere omnes convectum iubet.
**30日分の[[w:糧秣|秣(まぐさ)や穀物]]を運び集めて保持することを皆に命じた。
===75節===
'''ガッリア同盟が各部族に動員を要請する'''
*① Dum haec apud<ref>apud はα系写本の記述で、β系写本では ad となっている。</ref> [[w:la:Alesia|Alesiam]] geruntur,
**これらが[[w:アレシア|アレスィア]]のもとで遂行されている間に、
*Galli concilio principum indicto
**ガッリア人たちは、領袖たちの会合を課して、
*non omnes hos<ref>omnes hos はα系写本の記述で、β系写本では単に omnes となっている。</ref> qui arma ferre possent, ut censuit [[w:la:Vercingetorix|Vercingetorix]], convocandos statuunt,
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]が見積もったように武器を扱える者たち皆を召集するべき、ではないと判断した。
*sed certum numerum cuique ex civitate<ref>ex civitate はα系写本の記述で、β系写本では civitati となっている。</ref> imperandum,
**けれども、おのおのの部族から一定の兵数(の供出)を命令すること(を決めた)。
*ne tanta multitudine confusa nec moderari nec discernere suos nec frumentandi rationem<ref>frumentandi rationem はT・U・R写本などの記述で、V・U写本などでは frumenti rationem となっている。</ref> habere possent.
**これほどの大軍で混乱したり、味方を指揮できなかったり判別できなかったり、ということがないように。
*② Imperant [[w:la:Haedui|Haeduis]] atque eorum clientibus, Segusiavis, Ambivaretis, Aulercis Brannovicibus, Blannoviis, milia XXXV(triginta quinque);
**[[w:ハエドゥイ族|ハエドゥイー族]]とその庇護民であるセグスィアウィ族、アンビウァレティ族、アウレルキ・ブランノウィケス族、ブランノウィイ族に3万5千名を命令した。
*parem numerum Arvernis adiunctis Eleutetis, Cadurcis, Gabalis, Vellaviis,
**[[w:アルウェルニ族|アルウェルニー族]]に隣接しているエレウテティ族、カドゥルキー族、ガバリ族、ウェッラウィイ族に同等の兵数。
*qui sub imperio Arvernorum esse consuerunt;
**彼らはアルウェルニー族の支配下にいるのが常であった。
*③ Sequanis, Senonibus, Biturigibus, Santonis, Rutenis, Carnutibus duodena milia;
**セクアニ族、セノネース族、ビトゥリゲース族、サントネス族、ルテーニー族、カルヌーテース族には1万2千ずつ。
*Bellovacis X(decem); totidem Lemovicibus;
**ベッロウァキ族に1万。レモウィケス族に同じだけ多く(1万)。
*octona Pictonibus et Turonis et Parisiis et Helvetiis;
**ピクトネス族とトゥロニ族とパリスィイ族と[[w:ヘルウェティイ族|ヘルウェティイ族]]に8(千)ずつ。
*Senonibus<ref>Senonibus は写本(ω)にある記述だが、sen<a Suessi>onibus「6(千)ずつをスエッスィオニス族…に」などさまざまな修正提案がなされている。</ref>, Ambianis, Mediomatricis, Petrocoriis, Nerviis, Morinis, Nitiobrogibus quina milia;
**セノネース族、アンビアニ族、メディオマトリキ族、ペトロコリイ族、ネルウィイ族、モリニ族、ニティオブロゲス族に5千ずつ。
**:<span style="color:#009900;">(訳注:Senonibus「セノネース族」は既出のためスエッスィオネス族などに書き替える修正提案がなされ、以下は校訂版によっては兵数がずれる。</span>
**:<span style="color:#009900;">しかし、スエッスィオネス族 Suessiones は[[ガリア戦記 第2巻#12節|第2巻12節]]でレーミー族を通じてカエサルに降伏しており、</span>
**:<span style="color:#009900;">第8巻6節でも「レーミー族に委ねられていた」「同盟者」と記されているので、アレスィアには出兵していないであろう。)</span>
*Aulercis Cenomanis totidem; Atrebatibus IIII;
**アウレルキ・ケノマニ族に同じだけ多く(5千)。アトレバテス族に4(千)。
*Veliocassis, Lexoviis et Aulercis Eburovicibus terna;
**ウェリオカッセス族、レクソウィイ族とアウレルキ・エブロウィケス族に3(千)ずつ。
*Rauracis et Boiis<ref>Boiis はα系写本の記述で、β系写本では Bois となっている。</ref> bina;
**ラウラキ族とボイイ族に2(千)ずつ。
*XXX<ref>XXX はα系写本の記述で、さまざまな修正提案がなされている。</ref> milia universis civitatibus, quae Oceanum attingunt
**<ruby><rb>大洋<span style="color:#009900;">〔[[w:大西洋|大西洋]]〕</span></rb><rp>(</rp><rt>オーケアヌス</rt><rp>)</rp></ruby>に接する諸部族全体に3万。
**:<span style="color:#009900;">(訳注:この数は写本により異なっており、混乱している。)</span>
*quaeque eorum consuetudine Aremoricae appellantur,
**それらは、彼ら(ガッリア人)の慣習でアレモリカエと呼ばれており、
*quo sunt in numero Coriosolites, Redones, Ambibarii, Caletes, Osismi, Veneti, Lemovices, Unelli.
**コリオソリテス族、レドネス族、アンビバリイ族、カレテス族、オスィスミ族、ウェネティ族、レモウィケス族、ウネッリ族がそれらに数えられる。
*⑤ Ex his Bellovaci suum numerum non compleverunt<ref>compleverunt はα系写本の記述で、β系写本では contulerunt となっている。</ref>,
**これらのうちで、ベッロウァキ族は、自分たちの(割り当てられた)数を満たさなかった。
*quod se suo nomine atque arbitrio cum Romanis bellum gesturos dicebant
**というのは、彼らは自らの名と裁量でもってローマ人と交戦するであろうと言ったのだ。
*neque cuiusquam imperio obtemperaturos;
**(自分たちは)何者の命令にも服従しないであろう、と。
*rogati tamen ab<ref>ab はα系写本の記述で、β系写本では a となっている。</ref> Commio pro eius hospitio duo milia una miserunt.
**けれども、[[w:コンミウス|コンミウス]]の懇願により、彼を賓客としているために、2千名を一緒に送り出した。
**:<span style="color:#009900;">(訳注:ベッロウァキ族は要求された兵数の5分の1しか出さなかったが、第8巻22節ではこの出兵をも含めてカエサルから責められる。)</span>
===76節===
'''コンミウスもガッリア同盟軍に内応、約25万の大軍が集結'''
*① Huius opera Commii, ut antea demonstravimus, fideli atque utili
**前に述べたように、この[[w:コンミウス|コンミウス]]の信頼すべき有益な働きを
**:<span style="color:#009900;">(訳注:[[ガリア戦記 第4巻#21節|第4巻21節]]・[[ガリア戦記 第4巻#27節|27節]]・[[ガリア戦記 第4巻#35節|35節]]、[[ガリア戦記 第5巻#22節|第5巻22節]]、[[ガリア戦記 第6巻#6節|第6巻6節]]を参照。)</span>
*superioribus annis erat usus in [[w:la:Britannia Maior|Britannia]] Caesar;
**カエサルは先年(BC55~54年)に[[w:ブリタンニア|ブリタンニア]]において役立てていた。
**:<span style="color:#009900;">(訳注:コンミウスは、[[w:ローマによるブリタンニア侵攻 (紀元前55年-紀元前54年)|カエサルのブリタンニア侵攻]]の先導役を務めていた。後にブリタンニアで王となる。)</span>
*quibus ille pro meritis civitatem eius immunem esse iusserat,
**彼(カエサル)はそれらの功績の見返りに、彼(コンミウス)の部族が免税となることを命じており、
*iura legesque reddiderat atque ipsi Morinos attribuerat.
**権能や法度を元に戻してやり、(コンミウス)自身にモリニ族(の統治)をも委ねていた。
*② Tamen tanta<ref>tamen tanta はα系写本の記述で、β系写本では tanta tamen となっている。</ref> universae Galliae consensio fuit libertatis vindicandae et pristinae belli laudis recuperandae,
**けれども、自主独立が求められるべきで、かつての戦争の誉れが取り戻されるべきだという、ガッリア全体の合意があった。
*ut neque beneficiis neque amicitiae memoria moverentur
**その結果、(カエサルからの)厚遇にも友情の記憶にも揺り動かされず、
*omnesque et animo et opibus in id bellum incumberent.
**(ガッリアの)皆が闘志によっても兵力によっても、その戦争に没頭していたのだ。
*③ Coactis equitum milibus VIII(octo) et peditum circiter CCL(ducenti quinquaginta)<ref>CCL はβ系写本の記述で、α系写本では CCXL または CCXXXX となっている。</ref>
**[[w:騎兵|騎兵]]8千騎と[[w:歩兵|歩兵]]およそ250(千)名が徴集されて、
**:<span style="color:#009900;">(訳注:歩兵の数は、β系写本では25万、α系写本では24万と異なっている。)</span>
*haec in Haeduorum finibus recensebantur, numerusque inibatur, praefecti constituebantur.
**これら(の軍勢)が[[w:ハエドゥイ族|ハエドゥイー族]]の領土で閲兵されて、数が見積もられて、指揮官たちが決められた。
*④ Commio Atrebati, Viridomaro et [[w:la:Eporedorix|Eporedorigi]] [[w:la:Haedui|Haeduis]],
**アトレバテス族の[[w:コンミウス|コンミウス]]、ハエドゥイー族のウィリドマルスとエポレドリクス、
*[[w:la:Vercassivellaunus|Vercassivellauno]] Arverno, consobrino Vercingetorigis, summa imperii traditur.
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の従兄弟である[[w:アルウェルニ族|アルウェルニー族]]のウェルカッスィウェッラウヌスに、最高司令権が託された。
*His delecti ex civitatibus attribuuntur, quorum consilio bellum administraretur.
**彼らに、諸部族から選ばれた者たちが付与されて、その者たちの協議により戦争が指導された。
*⑤ Omnes alacres et fiduciae pleni ad [[w:la:Alesia|Alesiam]] proficiscuntur,
**皆が、活気があって自身に満ち、[[w:アレシア|アレスィア]]へ向けて出発した。
*⑥ neque erat omnium quisquam qui adspectum modo tantae multitudinis sustineri posse arbitraretur,
**これほどの大軍を一見しただけで持ちこたえられる者は、誰一人いないと思われた。
*praesertim ancipiti proelio,
**とりわけ(内周と外周の)両面の戦闘で、
*cum ex oppido eruptione pugnaretur, foris tantae copiae equitatus peditatusque cernerentur.
**城塞都市からは出撃により戦われ、外からは騎兵と歩兵のこれほどの軍勢が視認されるのであるから。
===77節===
'''飢餓状態のアレスィアで、クリトグナトゥスが極論を唱える'''
*① At ii qui [[w:la:Alesia|Alesiae]] obsidebantur
**ところが、[[w:アレシア|アレスィア]]に包囲されていた者たちは、
*praeterita die qua auxilia suorum exspectaverant,
**味方の援軍を待ち望んでいた日も経過して、
*consumpto omni frumento,
**すべての糧食を消費し尽くして、
*inscii quid in [[w:la:Haedui|Haeduis]] gereretur,
**[[w:ハエドゥイ族|ハエドゥイー族]]のところにおいて何がなされているのかを知らず、
*concilio coacto de exitu suarum fortunarum consultabant.
**会合を召集して、自分たちの命運の結末について協議した。
*② Ac variis dictis sententiis
**そして、さまざまな意見が述べられた。
*quarum pars deditionem,
**それらの一部は降伏を、
*pars dum vires suppeterent eruptionem censebat,
**別の一部は、活動力が十分にある間に突撃することを考慮していた。
*non praetereunda oratio [[w:la:Critognatus|Critognati]] videtur propter eius singularem et nefariam crudelitatem.
**クリトグナトゥスの演説は、彼の特異で非道な残酷さのために、看過されるべきではないと思われる。
<br>
'''クリトグナトゥスの演説が始まる'''
*③ Hic summo in Arvernis ortus loco et magnae habitus auctoritatis,
**彼は、[[w:アルウェルニ族|アルウェルニー族]]において最高の身分に生まれ、大きな影響力を持つとみなされていた。
<br>
'''降伏論者は最低の輩だ'''
*"Nihil" inquit "de eorum sententia dicturus sum, qui turpissimam servitutem deditionis nomine appellant,
**「最も恥ずべき隷属を降伏という名で呼んでいる者たちの意見については、(私は)何も述べないであろう」と言った。
*neque hos habendos civium loco neque ad concilium adhibendos censeo.
**「この者たちは市民の身分を持つべきではないし、会合へ招き入れられるべきでもない、と(私は)考える。
<br>
'''突撃論者には辛抱が欠けている'''
*④ Cum his mihi res sit, qui eruptionem probant;
**突撃に賛同した者たちとともに、私の関わりはあるべきだ。
*quorum in consilio omnium vestrum consensu
**その者たちの考えには、君たち皆の同意があるだろうし、
*pristinae residere virtutis memoria videtur.
**かつての武勇の記憶が残っていることと思われる。
*⑤ Animi est ista mollitia, non virtus, paulisper inopiam ferre non posse.
**しばらくの間も(糧食の)欠乏に耐えることができない(君らの)ことは、気の弱さであって、武勇ではない。
*Qui se ultro morti offerant facilius reperiuntur quam qui dolorem patienter ferant.
**自発的に玉砕して逝った者たちは、苦痛に辛抱強く耐えた者たちよりも、より容易に見出されるのだ。
*⑥ Atque ego hanc sententiam probarem ─tantum apud me dignitas potest─,
**しかし私は(突撃という)この意見に賛同したであろう。それほど、私にとっても価値がある。
*si nullam praeterquam vitae nostrae iacturam fieri viderem;
**(ただし)もし、我々(ガッリア勢)の生命が投げ出されること以外に(方策が)何もないと思ったならばだ。
*⑦ sed in consilio capiendo omnem Galliam respiciamus, quam ad nostrum auxilium concitavimus.
**けれども、作戦を立てるに当たっては、我々のために援軍を(我々が)呼び寄せた全ガッリアを顧慮しよう。
*⑧ Quid hominum milibus LXXX(octoginta) uno loco interfectis
**(我々ガッリア勢)8万の人間が(アレスィア)1か所で殺戮されたら、
*propinquis consanguineisque nostris animi fore existimatis,
**我々の親類縁者たちの士気はどうなると(君らは)判断しているのか。
*si paene in ipsis cadaveribus proelio decertare cogentur?
**もし、ほとんど(我々)自身の亡骸の中で(味方が)決戦することを強いられたら?
*⑨ Nolite hos vestro auxilio exspoliare qui vestrae salutis causa suum periculum neglexerunt,
**君らの身の安全のために、己の危険を顧みなかった者たちのことを、君らが援助すること(の機会)を奪わないでくれ。
*nec stultitia ac temeritate vestra aut animi imbecillitate omnem Galliam prosternere et perpetuae servituti subicere.
**君らの愚かさや無思慮、または心の弱さによって、全ガッリアを滅ぼすことや永久の隷属に委ねることがないように。
<br>
'''ローマ人たちが恐れているのを見よ'''
*⑩ An quod ad diem non venerunt, de eorum fide constantiaque dubitatis?
**それとも(援軍が)期日までにやって来なかったので、彼らの誠実さや剛直さについて(君らは)疑っているのか?
*Quid ergo?
**それでは(あれは)何だ?
*Romanos in illis ulterioribus munitionibus animine causa cotidie exerceri putatis?
**ローマ人たちがあの向こう側の塁壁のところで、趣味のために毎日たえず働かされていると(君らは)思うのか?
*⑪ Si illorum nuntiis confirmari non potestis omni aditu praesaepto,
**もし、すべての出入口を(防柵で)遮られて、(援軍の到来を)彼らの伝令により(君らが)確証できないのならば、
*his utimini testibus adpropinquare eorum adventum,
**こちらの者たち(ローマ人)を、彼ら(援軍)の到来が近づいている証人として示せ。
*cuius rei timore exterriti diem noctemque in opere versantur.
**(援軍の到来という)その事態の恐れに戦慄して(ローマ人たちは)昼も夜も工事に従事しているのだ。
<br>
'''クリトグナトゥスの意見は?'''
*⑫ Quid ergo mei consilii est?
**それでは、私の考えは何であるか?
*Facere quod nostri maiores nequaquam pari bello Cimbrorum Teutonumque fecerunt:
**我々の先祖たちが(今回とは)決して比べものにならない[[w:キンブリ・テウトニ戦争|キンブリ族・テウトニ族との戦争]]でしたことをするのだ。
*qui in oppida compulsi ac simili inopia subacti
**彼ら(先祖たち)は、[[w:オッピドゥム|城塞都市]]に押し込められて、(今回と)似たような欠乏により衰弱させられて、
*eorum corporibus, qui aetate ad bellum inutiles videbantur, vitam toleraverunt
**加齢により戦争に役立たないと思われた者たちの肉体(を食べること)によって、生命を持ちこたえて、
*neque se hostibus tradiderunt.
**敵方に降伏しなかったのだ。
*⑬ Cuius rei si exemplum non haberemus,
**もし、そういう事態の先例を我々が持たなかったとしても、
*tamen libertatis causa institui et posteris prodi pulcherrimum iudicarem.
**けれども、自由のために、最も栄誉なことが決断され、子孫たちに伝えられることと、私は思いたい。
*⑭ Nam quid illi simile bello fuit?
**実際、あの戦争に(今回と)似ている何があっただろうか?
*Depopulata Gallia Cimbri magnaque inlata calamitate
**キンブリ族はガッリアを荒らしまわって、大きな災禍をもたらしたが、
*finibus quidem nostris aliquando excesserunt atque alias terras petierunt;
**あるとき我々の領土から立ち去って、他の土地を求めて行った。
*iura, leges, agros, libertatem nobis reliquerunt.
**権限、法度、耕地、自由を我々(ガッリア人)に残して行ったのだ。
*⑮ Romani vero quid petunt aliud aut quid volunt
**しかし、ローマ人たちは(以下に挙げることの)他に何を求め、何を欲しているのだろうか。
**:<span style="color:#009900;">(訳注:「しかし、ローマ人が求め、欲しているのは、以下のことである」の意。)</span>
*nisi invidia adducti quos fama nobiles potentesque bello cognoverunt,
**高貴で戦争に力強い(ガッリアの)者たちを名声で知って羨望に駆られた以外には、
*horum in agris civitatibusque considere atque his aeternam iniungere servitutem?
**彼らの土地や部族共同体に居座って、彼らを永遠の隷属を課すること以外には。
*Neque enim ulla alia condicione bella gesserunt.
**実際、(ローマ人は)他のいかなる条件でも決して戦争を遂行したことがなかった。
*⑯ Quodsi ea quae in longinquis nationibus geruntur ignoratis,
**もし、遠方の種族のところでなされていることを(君らが)知らないのであれば、
*respicite finitimam Galliam,
**ガッリアの隣人たちを見渡しなさい。
*quae in provinciam redacta,
**(彼らはローマの)[[w:属州|属州]]になることを余儀なくされ、
*iure et legibus commutatis,
**権限や法度を変えられて、
*securibus subiecta perpetua premitur servitute."
**(ローマの)権力に服属させられて、永久の隷属に苦しめられているのだ。
===78節===
'''マンドゥビイ族の投降をカエサルが拒む'''
*① Sententiis dictis
**(いくつかの)意見が述べられて、
*constituunt ut ii, qui valetudine aut aetate inutiles sunt<ref>sunt はα系写本の記述で、β系写本では sint となっている。</ref> bello, oppido excedant
**(ガッリア人たちは)健康または年齢により戦争に役立たない者たちは[[w:オッピドゥム|城塞都市]]を退去するように決めた。
*atque omnia prius experiantur quam ad Critognati sententiam descendant;
**さらに、クリトグナトゥスの意見に同意するよりも、まずあらゆることを試みるように(決めた)。
*② illo tamen potius utendum consilio,
**けれども(以下の場合には)むしろ彼(クリトグナトゥス)の意見を実行するべきだ。
*si res cogat atque auxilia morentur,
**もし、事態が強いて、援軍が遅滞させられるのならば、
*quam aut deditionis aut pacis subeundam condicionem.
**降伏あるいは講和条件を受諾することよりも(クリトグナトゥスの意見を実行するべきだ)、と。
*③ Mandubii qui eos oppido receperant,
**彼ら(ガッリア勢)を城塞都市に受け入れていたマンドゥビイ族は、
*cum liberis atque uxoribus exire coguntur.
**子供たちや妻女たちとともに(城塞都市から)出て行くことを強いられた。
*④ Hi cum ad munitiones Romanorum accessissent,
**彼らは、ローマ人たちの塁壁のところへ近づいたときに、
*flentes omnibus precibus orabant, ut se in servitutem receptos cibo iuvarent.
**自分たちを奴隷として受け入れて食糧で助けてくれるように、泣きながらあらゆる懇願で頼んだ。
*⑤ At Caesar dispositis in vallo custodibus<ref>custodibus はα系写本の記述で、β系写本では custodiis となっている。</ref> recipi prohibebat.
**だが、カエサルは、防柵の中に番兵を分けて置き、(マンドゥビイ族を)受け入れることを禁じた。
===79節===
'''ガッリア同盟軍の来援、アレスィアの歓呼'''
*① Interea Commius reliquique duces, quibus summa imperii permissa erat,
**その間に、最高司令権を任されていた[[w:コンミウス|コンミウス]]とほかの将帥たちが、
*cum omnibus copiis ad Alesiam perveniunt
**すべての軍勢とともに[[w:アレシア|アレスィア]]の辺りへ到着して、
*et colle exteriore occupato
**より外側の丘陵を占拠して、
**:<span style="color:#009900;">(訳注:現在のミュスィ=ラ=フォス村 [[w:fr:Mussy-la-Fosse|Mussy-la-Fosse]]<ref>[http://maps.google.com/maps?q=47.521944,4.438611&hl=fr&ie=UTF8&ll=47.522012,4.438648&spn=0.01849,0.027423&t=h&z=15 Google map]を参照。</ref> のある丘陵であると思われる。)</span>
*non longius mille passibus ab nostris munitionibus considunt.
**我が方(ローマ勢)の塁壁から1ローママイル(約1.5km)ほども遠くないところに陣取った。
**:<span style="color:#009900;">(訳注:現在のヴナレ=レ=ローム [[w:fr:Venarey-les-Laumes|Venarey-les-Laumes]] 市街<ref>[http://maps.google.com/maps?q=47.542778,4.445833&hl=fr&ie=UTF8&ll=47.543106,4.458475&spn=0.036965,0.054846&t=h&z=14 Google map]を参照。</ref>の周辺であると思われる。)</span>
*② Postero die equitatu ex castris educto
**翌日に、[[w:騎兵|騎兵隊]]が陣営から進発させられて、
*omnem eam planitiem quam in longitudinem milia passuum III(tria)<ref>milia passuum III はβ系写本の記述で、α系写本では quattuor milia passuum などとなっている。</ref> patere demonstravimus, complent
**3ローママイル(約4.5km)の長さにわたり広がっていることを既述した平地のすべてを、満たした。
**:<span style="color:#009900;">(訳注:[[#69節|69節]]を参照。現在のローム平原に当たると思われる。)</span>
*pedestresque copias paulum ab eo loco abditas in locis superioribus constituunt.
**[[w:歩兵|歩兵]]の軍勢を、その地からいくらか遠ざけて、より高いところに駐留させた。
**:<span style="color:#009900;">(訳注:上記の丘陵のより高い所であると思われる。)</span>
*③ Erat ex oppido Alesia despectus in campum.
**アレスィアの[[w:オッピドゥム|城塞都市]]からは(その)平地に眺望があった。
*Concurrunt<ref>concurrunt はα系写本の記述で、β系写本では concurritur となっている。</ref> his auxiliis visis;
**これらの援軍が現われると(アレスィアのガッリア人たちは)群がり集まった。
*fit gratulatio inter eos
**彼らの間で祝賀がなされて、
*atque omnium animi ad laetitiam excitantur.
**皆の心が喜びへと鼓舞された。
*④ Itaque productis copiis ante oppidum considunt
**こうして(アレスィアの)軍勢が出撃させられて、城塞都市の前に陣取って、
*et proximam fossam cratibus integunt atque aggere explent
**最も近い堀を、柴で蔽って、土砂を充満させて、
*seque ad eruptionem atque omnes casus comparant.
**突撃やあらゆる有事に戦備を整えた。
===80節===
'''ゲルマニア騎兵らローマ勢が来援ガッリア騎兵をも打ち破る'''
*① Caesar omni exercitu ad utramque partem munitionum<ref>munitionum はα系写本の記述で、β系写本では munitionis となっている。</ref> disposito,
**カエサルは、すべての[[w:歩兵|歩兵隊]]を、塁壁の(内周と外周)両側に分けて置き、
*ut, si usus veniat, suum quisque locum teneat et noverit,
**もし、必要が生じたら、おのおのが自らの部署を知って固守するようにした。
*equitatum ex castris educi et proelium committi iubet.
**[[w:騎兵|騎兵隊]]を陣営から進発させて、交戦することを命じた。
*② Erat ex omnibus castris, quae summum undique iugum tenebant, despectus
**至る所で尾根の頂きを占めていた(ローマ勢の)すべての陣営から(騎兵戦の)眺望があった。
*atque omnes milites intenti<ref>intenti はα系写本の記述で、β系写本では intenti animi、Fuchs は intentis animis と修正提案している。</ref> pugnae proventum<ref>pugnae proventum はα系写本の記述で、β系写本では proventum pugnae となっている。</ref> exspectabant.
**すべての兵士たちは(観戦に)没頭して、戦いの結果を待っていた。
*③ Galli inter equites raros sagittarios expeditosque levis armaturae interiecerant,
**ガッリア人たちは、弓兵たちと軽装歩兵たちをまばらに、騎兵たちの間に置いていて、
*qui suis cedentibus auxilio succurrerent
**その者たち(弓兵と軽装歩兵)は、味方が後退するのを支援するために馳せ寄って、
*et nostrorum equitum impetus sustinerent.
**我が方(ローマ勢)の騎兵の突撃に持ちこたえていた。
*Ab his complures de improviso vulnerati proelio excedebant.
**彼らによって(ローマ側騎兵の)かなりの者たちが、思いがけず負傷させられて、戦闘から退いた。
*④ Cum suos pugna superiores esse Galli confiderent
**ガッリア人たちが、味方が戦いで優勢であることを確信したとき、
*et nostros multitudine premi viderent,
**かつ、我が方(ローマ勢)が多勢(のガッリア騎兵)により圧倒されているのを見て取ったときに、
*ex omnibus partibus et ii qui munitionibus continebantur
**あらゆる方面から(ローマ勢の)塁壁によって囲まれていた者たちも、
*et hi<ref>hi はφ系・β系写本の記述で、χ系写本では ii となっている。</ref> qui ad auxilium convenerant
**(アレスィア)救援のために集結して来ていた者たちも、
*clamore et ululatu suorum animos confirmabant.
**大声やわめき声によって味方の闘志を強めた。
*⑤ Quod in conspectu omnium res gerebatur
**(両軍の)皆の環視の中で合戦が遂行されたので、
*neque recte ac<ref>ac はα系・π系写本の記述で、ρ系写本では aut となっている。</ref> turpiter factum celari poterat,
**立派な行為または見苦しい行為も隠されることができなかったので、
*utrosque et laudis cupiditas et timor ignominiae ad virtutem excitabant<ref>excitabant はB・M・L・N・R写本などの記述で、χ系・B・S・π系・U写本などでは excitabat となっている。</ref>.
**賞賛への功名心も、不名誉への恐れも、双方を武勇へと駆り立てた。
*⑥ Cum a meridie prope ad solis occasum dubia victoria pugnaretur,
**正午から、ほぼ日没の頃まで、勝利が不確実なまま戦われていたときに、
*Germani una in parte confertis turmis
**ゲルマニア人たちが、騎兵部隊を一か所に密集させて、
*in hostes impetum fecerunt eosque propulerunt;
**敵方に突撃を行ない、彼ら(ガッリア騎兵)を駆逐した。
*⑦ quibus in fugam coniectis
**その者たち(ガッリア騎兵)は逃亡に追いやられて、
*sagittarii circumventi interfectique sunt.
**弓兵たちは包囲されて殺戮された。
*⑧ Item ex reliquis partibus nostri cedentes usque ad castra insecuti
**我が方(ローマ勢)の残りの部隊も、撤退する(ガッリア騎兵の)者たちを陣営のところまで追撃して、
*sui colligendi facultatem non dederunt.
**立ち直る機会を与えなかった。
*⑨ At ii qui ab [[w:la:Alesia|Alesia]] processerant,
**そして、[[w:アレシア|アレスィア]]から進み出ていた者たちは、
*maesti prope victoria desperata se in oppidum receperunt.
**ほとんど絶望的な勝利に悲嘆して、城塞都市に退却した。
===81節===
'''ガッリア来援軍と籠城軍がローマ陣地に夜襲をしかける'''
*① Uno die intermisso Galli
**ガッリア人たちは一日を間に置いて、
*atque hoc spatio magno cratium, scalarum, harpagonum numero effecto
**この間に、多数の柴、[[w:梯子|梯子]]、鉤竿を調達して、
*media nocte silentio ex castris egressi
**真夜中に静けさのうちに陣営から進発して、
*ad campestres munitiones accedunt.
**平地の(ローマ勢の)塁壁の辺りへ近づいた。
*② Subito clamore sublato, qua significatione
**突然に雄叫びを上げて、それを合図として、
*qui in oppido obsidebantur de suo adventu cognoscere possent,
**[[w:オッピドゥム|城塞都市]]の中に包囲されている者たちが、自分たちの到来について認識できるようにした。
*crates proicere, fundis, sagittis, lapidibus nostros de vallo proturbare
**柴を投げ込み、投石器で、矢で、石でもって我が方(ローマ勢)を防柵から追い出すこと、
*reliquaque quae ad oppugnationem pertinent parant administrare.
**(塁壁の)攻略のために役立つほかのことに従事すること、を目論んだ。
*③ Eodem tempore clamore exaudito
**同時に(来援軍の)雄叫びを聞き取って、
*dat tuba signum suis [[w:la:Vercingetorix|Vercingetorix]] atque ex oppido educit.
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、麾下の者たちにラッパで指図を与えて、城塞都市から進発させた。
*④ Nostri, ut superioribus diebus, suus cuique<ref>suus cuique はβ系写本の記述で、χ系・B・M・S写本では ut cuique となっている。</ref> erat locus attributus, ad munitiones accedunt;
**我が方(ローマ勢)は、以前の日々に、おのおのの部署が割り当てられており、塁壁のところへ近寄った。
*fundis librilibus sudibusque, quas in opere disposuerant, ac glandibus Gallos proterrent.
**堡塁に分配されていたポンド投石器や杭、並びに玉によって、ガッリア人たちを追い払った。
**:<span style="color:#009900;">(訳注:librilis funda「ポンド投石器」;古代ローマの1ポンド [[w:la:Libra pondus|libra]] は約327グラム<ref>[[w:en:Ancient Roman units of measurement#Weight]]を参照。</ref>。)</span>
*⑤ Prospectu tenebris adempto multa utrimque vulnera accipiuntur.
**眺望が暗闇により奪われて、双方が多くの傷を蒙った。
*Complura tormentis tela coniciuntur.
**かなり多くの飛び道具が(巻上式)投石機によって投じられた。
*⑥ At [[w:la:Marcus Antonius|M.(Marcus) Antonius]] et [[w:la:Gaius Trebonius|C.(Gaius) Trebonius]] legati,
**[[w:マルクス・アントニウス|マルクス・アントニウス]]と[[w:ガイウス・トレボニウス|ガイウス・トレボニウス]] [[w:レガトゥス|両副官]]は、
*quibus hae partes ad defendendum obvenerant,
**この方面を防衛するために割り当てられていたが、
*qua ex parte nostros premi intellexerant,
**我が方(ローマ勢)が押されぎみであると見なした一帯のために、
*his auxilio ex ulterioribus castellis deductos submittebant.
**この者たちを支援するために、向こう側の砦から引き出した者たちを(援兵として)派遣した。
===82節===
'''アレスィア内外のガッリア勢が障害物に阻まれて退く'''
*① Dum longius ab munitione aberant Galli,
**ガッリア人たちは(ローマ勢の)塁壁から遠くに離れていた間は、
*plus multitudine telorum proficiebant;
**飛び道具の多さによって、前進していた。
*posteaquam propius successerunt,
**(塁壁の方へ)さらに近くに進入して来た後では、
*aut se ipsi<ref>ipsi はβ系写本の記述で、α系写本にはない。</ref> stimulis inopinantes induebant
**あるいは、思いがけず自ら「刺」に陥り、
**:<span style="color:#009900;">(訳注:stimulus「刺」については、[[#73節|73節]]⑨項を参照。)</span>
*aut in scrobes delati transfodiebantur
**あるいは、穴に陥落して(「百合」で)突き刺されたり、
**:<span style="color:#009900;">(訳注:「穴」と「百合」については、[[#73節|73節]]⑤~⑧項を参照。)</span>
*aut ex vallo ac turribus traiecti pilis muralibus interibant.
**あるいは、防柵や櫓から[[w:ピルム・ムーリアリス|防壁槍]]で射抜かれて逝った。
**:<span style="color:#009900;">(訳注:防壁槍については、[[ガリア戦記 第5巻#40節|第5巻40節]]を参照。)</span>
*② Multis undique vulneribus acceptis
**(ガッリア勢は)至る所で多くの傷を負ったが、
*nulla munitione perrupta,
**どの(ローマ側の)塁壁も突破されなかった。
*cum lux appeteret,
**<ruby><rb>暁光</rb><rp>(</rp><rt>ぎょうこう</rt><rp>)</rp></ruby>が(空を)染めたとき、
*veriti ne ab latere aperto ex superioribus castris eruptione circumvenirentur,
**開けた側面から、(ローマ勢の)高所の陣営からの突撃によって包囲されないようにと怖れて、
**:<span style="color:#009900;">(訳注:開けた側面とは、盾で守られていない右側のこと。)</span>
*se ad suos receperunt.
**味方のところへ退却した。
*③ At interiores
**それに対して、(アレスィア攻囲の)内側の者たちは、
*dum ea quae a [[w:la:Vercingetorix|Vercingetorige]] ad eruptionem praeparata erant<ref>praeparata erant は、写本(ω)ではpraeparaverant だが、このように修正提案されている。あるいは、a Vercingetorige が削除提案されている。</ref> proferunt,
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]により、突撃のために準備していたものを運び出して
*priores fossas explent,
**一番前の堀を埋めている間に、
*diutius in his rebus administrandis morati
**これらの事に従事することに、より長く妨げられて、
*prius suos discessisse cognoverunt quam munitionibus adpropinquarent.
**塁壁に近づくよりも前に味方(=来援軍)が退去したことを知ったのだ。
*Ita re infecta in oppidum reverterunt.
**こうして、事は達成されていないものの、[[w:オッピドゥム|城塞都市]]に引き返した。
===83節===
'''ウェルカッスィウェッラウヌスが兵6万を率いて急所の丘へ向かう'''
*① Bis magno cum detrimento repulsi Galli
**大きな損害とともに二度も撃退されたガッリア人たちは、
*quid agant consulunt;
**何をなすべきかを協議した。
*locorum peritos adhibent;
**(その)土地に熟知した者たちを招いた。
*ex his superiorum castrorum situs munitionesque cognoscunt.
**この者たちから、(ローマ勢の)高いところの陣営の位置や塁壁を調べ上げた。
*② Erat a septentrionibus collis,
**(アレスィアの)北方に丘陵があって、
**:<span style="color:#009900;">(訳注:これは現在のレア山 le Mont Réa であると思われ、山頂にはメネルー=ル=ピトワ村<ref>[[w:fr:Ménétreux-le-Pitois]]や[http://maps.google.fr/maps?f=q&hl=fr&geocode=&q=m%C3%A9n%C3%A9treux+le+pitois&sll=42.423457,8.789063&sspn=23.611541,40.957031&ie=UTF8&t=h&hq=&hnear=M%C3%A9n%C3%A9treux-le-Pitois,+C%C3%B4te-d'Or,+Bourgogne&ll=47.55475,4.460106&spn=0.018507,0.010042&z=15 Google map]などを参照。</ref>がある。)</span>
*quem propter magnitudinem circuitus
**その周囲の大きさのために、
*opere circumplecti non potuerant nostri,
**我が方(ローマ勢)は、堡塁により囲い込むことができずにいた。
*necessarioque<ref>-que はβ系写本の記述で、α系写本にはない。</ref> paene iniquo loco et leniter<ref>leniter はπ系写本の記述で、α系・ρ系写本では leviter となっている。</ref> declivi castra fecerunt<ref>fecerunt はα系写本の記述で、β系写本では fecerant となっている。</ref>.
**やむをえず、ほとんど不利でゆるやかに傾斜した地点に陣営を造った。
*③ Haec C.(Gaius) Antistius Reginus et C.(Gaius) Caninius Rebilus legati
**これを、ガーイウス・アンティスティウス・レーギーヌスとガイウス・カニニウス・レビルス [[w:レガトゥス|両副官]]が
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:fr:Caius Antistius Reginus|Gaius Antistius Reginus]]'' は[[ガリア戦記_第6巻#1節|第6巻1節]]で既出。[[#90節|90節]]で後出。)</span>
*cum duabus legionibus obtinebant.
**2個軍団とともに占めていた。
*④ Cognitis per exploratores regionibus duces hostium
**敵方の将帥たちは、偵察者たちを通じて一帯を調べ上げて、
*LX(sexaginta) milia ex omni numero deligunt
**総員のうちから6万名を選抜した。
*earum civitatum quae maximam virtutis opinionem habebant;
**武勇において大きな評判を得ている部族のうち(から選抜した)。
*⑤ quid quoque pacto agi placeat, occulte inter se constituunt;
**何が、どんな方法で行なわれるのがよいか、互いに密かに取り決めた。
*adeundi tempus definiunt, cum meridie<ref>meridie は中世の写本(ω)の記述であるが、近世の写本(ς)では meridies となっている。</ref> esse videatur.
**正午であると思われる頃を突撃する時と定めた。
*⑥ His copiis Vercassivellaunum Arvernum,
**この軍勢を、[[w:アルウェルニ族|アルウェルニー族]]のウェルカッスィウェッラウヌス、
*unum ex quattuor ducibus, propinquum [[w:la:Vercingetorix|Vercingetorigis]], praeficiunt.
**(すなわち)4人の将帥たちの1人で、[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]の親族である者に、指揮させた。
*⑦ Ille ex castris prima vigilia egressus
**彼(ウェルカッスィウェッラウヌス)は、陣営から第一夜警時に進発して、
*prope confecto sub lucem itinere
**夜明け前にほぼ行軍が成し遂げられて、
*post montem se occultavit
**山の後ろに身を隠して、
*militesque ex nocturno labore sese reficere iussit.
**兵士たちに夜間の疲労を回復しておくことを命じた。
*⑧ Cum iam meridies adpropinquare videretur,
**すでに正午に近付いていると思われたときに、
*ad ea castra, quae supra demonstravimus, contendit;
**前に述べた陣営のところへ急いだ。
**:<span style="color:#009900;">(訳注:本節②項を参照。)</span>
*eodemque tempore equitatus ad campestres munitiones accedere
**同時に(ガッリア来援軍の)[[w:騎兵隊|騎兵隊]]が平地の(ローマ勢の)塁壁のところへ近付き、
*et reliquae copiae pro castris sese ostendere coeperunt.
**残りの軍勢が陣営の前に姿を現わし始めた。
===84節===
'''ウェルキンゲトリークスらアレスィア籠城軍も善戦する'''
*① [[w:la:Vercingetorix|Vercingetorix]] ex arce [[w:la:Alesia|Alesiae]] suos conspicatus ex oppido egreditur;
**[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は、[[w:アレシア|アレスィア]]の高台から味方を望見して、[[w:オッピドゥム|城塞都市]]から進発した。
*a castris<ref>a castris はβ系写本の記述で、α系写本では単に castris となっている。</ref>, longurios, musculos, falces
**陣営から、長い竿、小屋、破城鎌や、
**:<span style="color:#009900;">(訳注:falx「破城鎌」については、[[ガリア戦記 第5巻#42節|第5巻42節]]を参照。)</span>
*reliquaque quae eruptionis causa paraverat profert.
**(塁壁を)突破するために準備していたほかのものを運び出した。
*② Pugnatur uno tempore omnibus locis atque omnia temptantur;
**一時にあらゆる場所で戦われて、あらゆることが試みられた。
*quae minime visa pars firma est, huc concurritur.
**あまり堅固ではないと思われる部分、ここへ襲いかかった。
*③ Romanorum manus tantis munitionibus distinetur
**ローマ人の手勢は、これほどの(長大な)塁壁により離して置かれていて、
*nec facile pluribus locis occurrit.
**より多くの場所には容易に駆け付けられなかった。
*④ Multum ad terrendos nostros valet clamor qui post tergum pugnantibus exstitit,
**戦っている者たちの背後で生じた雄叫びは、我が方(ローマ勢)を怖れさせるために大いに力があった。
*quod suum periculum in aliena vident virtute<ref>virtute「武勇」 はβ系写本の記述で、α系写本では salute「安全」 となっている。</ref> constare;
**というのは、自分たち(ローマ勢)の危険が他人(ガッリア勢)の武勇に依拠していると思ったから。
*omnia enim plerumque, quae absunt, vehementius hominum mentes perturbant.
**なぜなら(そこに)不在であるものすべてはたいてい、人間の心を激しく混乱させるものであったからである。
===85節===
'''ウェルカッスィウェッラウヌスが急所の丘を攻める'''
*① Caesar idoneum locum nactus
**カエサルは適当な場所を得て,
*quid quaque in<ref>quaque in はβ系写本の記述で、α系写本では qua ex となっている。</ref> parte geratur cognoscit;
*何が各方面でなされているのかを認識した。
*laborantibus submittit.
**苦戦している者たちに(援兵を)派遣した。
*② Utrisque ad animum occurrit unum esse illud tempus, quo maxime contendi conveniat:
**双方にとって、最も雌雄を決するべきはこの時のみであるということが、心に生じた。
*③ Galli, nisi perfregerint munitiones, de omni salute desperant;
**ガッリア人たちは、(ローマ人の)塁壁を突破しない限り、あらゆる身の安全に絶望することになる。
*Romani, si rem obtinuerint, finem laborum omnium exspectant.
**ローマ人は、もし事を成就したら、すべての労苦の終わるということを期待した。
*④ Maxime ad superiores munitiones laboratur, quo [[w:la:Vercassivellaunus|Vercassivellaunum]] missum demonstravimus.
**ウェルカッスィウェッラウヌスが派遣されたと既述した、より高い塁壁の辺りで(ローマ勢は)とりわけ苦戦した。
*Iniquum loci ad declivitatem fastigium magnum habet momentum.
**けわしい地形の不利な傾斜が(ローマ勢にとって)大きな影響力を持った。
*⑤ Alii tela coniciunt, alii testudine facta subeunt;
**(ガッリア勢の)ある者は飛び道具を投げやって、ある者は[[w:テストゥド|亀甲陣形]]を形成して突き進んだ。
*defatigatis invicem integri succedunt.
**疲労させられた者たちに対しては、新手の者たちが交代した。
*⑥ Agger ab universis in munitionem coniectus
**土が総勢により(ローマ人の)塁壁に投じられて、
*et ascensum dat Gallis
**ガッリア人たちに登り道を与えもしたし、
*et ea, quae in terra occultaverant Romani, contegit;
**ローマ人たちが地中に隠しておいたもの(障害物)を埋め込んでしまった。
*nec iam arma nostris nec vires suppetunt.
**我が方(ローマ勢)には、もはや武器も活力も十分になかった。
===86節===
'''危急存亡の秋、両軍の苦闘'''
*① His rebus cognitis
**これらの事態を知って、
*Caesar [[w:la:Titus Labienus|Labienum]] cum cohortibus sex subsidio laborantibus mittit;
**カエサルは、[[w:ティトゥス・ラビエヌス|ラビエーヌス]]を6個<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>とともに援兵として苦戦している者たちへ派遣した。
*② imperat, si sustinere non possit<ref>possit はχ系・B・M・S・β系写本の記述で、L・N写本では posset となっている。</ref>, deductis cohortibus eruptione pugnaret<ref>pugnaret はα系写本の記述で、β系写本では pugnet となっている。</ref>;
**もし(塁壁の防衛が)持ちこたえられなかったならば、諸大隊を引率して突撃によって戦うように、と命令していた。
*id nisi necessario ne faciat.
**それは、やむをえないのでなければ行なわないように(と命じていた)。
*③ Ipse adit reliquos, cohortatur ne labori succumbant;
**(カエサル)自身は、ほかの者たちを訪れて、労苦に屈服しないようにと鼓舞した。
*omnium superiorum dimicationum fructum in eo die atque hora docet consistere.
**これまでのあらゆる奮闘の結実がこの日、この時にかかっていることを説いた。
*④ Interiores desperatis campestribus locis propter magnitudinem munitionum
**(アレスィアに包囲されている)内側の者たちは、塁壁の大規模さのために、平坦な地点(での突破)を断念して、
*loca praerupta ex ascensu temptant;
**けわしい場所を登り坂から攻撃してみた。
*huc ea quae paraverant conferunt.
**ここに、準備していたものを運び集めた。
*⑤ Multitudine telorum ex turribus propugnantes deturbant,
**たくさんの飛び道具によって、防戦している者たちを櫓から駆逐した。
*aggere et cratibus fossas explent,
**土砂や柴で堀を埋めて、
*falcibus vallum ac loricam rescindunt.
**破城鎌によって防柵や胸壁を切り裂いた。
**:<span style="color:#009900;">(訳注:falx「破城鎌」については、[[ガリア戦記 第5巻#42節|第5巻42節]]を参照。)</span>
===87節===
'''カエサルの救援、ラビエーヌスの作戦'''
*① Mittit primo<ref>primo はφ系・ρ系写本の記述で、χ系・π系写本では primum となっている。</ref> [[w:la:Decimus Iunius Brutus Albinus|Brutum adulescentem]] cum cohortibus Caesar,
**カエサルは、初めに[[w:デキムス・ユニウス・ブルトゥス・アルビヌス|青年ブルトゥス]]を諸<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>とともに派遣して、
**:<span style="color:#009900;">(訳注:デキムス・ブルトゥスには[[ガリア戦記 第3巻#14節|第3巻14節]]で艦隊を、本巻[[#9節|9節]]②項では騎兵隊を指揮させている。)</span>
*post cum aliis C.(Gaium) Fabium legatum;
**後に副官のガイウス・ファビウスをほかの隊とともに(派遣した)。
*postremo ipse, cum vehementius pugnaretur,
**最後には(カエサル)自身が、激しく戦われていたので、
*integros subsidio adducit.
**新手の者たちを援兵として率いて行った。
*② Restituto proelio ac repulsis hostibus
**戦況が回復され、敵方が撃退されると、
*eo quo Labienum miserat contendit;
**ラビエーヌスを派遣していたところに急いだ。
*cohortes IIII(quattuor) ex proximo castello deducit,
**近隣の砦から4個歩兵大隊を引き出して、
*equitum partem se<ref>se はβ系写本の記述で、α系写本にはない。</ref> sequi,
**[[w:騎兵|騎兵]]のある一部には、自らに随行することを、
*partem circumire exteriores munitiones et ab<ref>ab はα系写本の記述で、β系写本では a となっている。</ref> tergo hostes adoriri iubet.
**別の一部には、外側の塁壁を取り囲んで、敵方を背後から襲撃することを命じた。
*③ Labienus, postquam neque aggeres neque fossae vim hostium sustinere poterant,
**ラビエーヌスは、土塁も堀も敵方の武力に持ちこたえることができなかった後で、
*coactis una XL(quadraginta) cohortibus, quas ex proximis praesidiis deductas fors obtulit,
**近隣の宿営地から、はからずも引き出しておいた40個歩兵大隊を集結させて、
**:<span style="color:#009900;">(訳注:この数は、写本によって異なり、モイゼルらは undecim「11個」と提案している。)</span>
*Caesarem per nuntios facit certiorem, quid faciendum existimet.
**何がなされるべきと考えたのかを、カエサルに伝令を通じて報告した。
*Accelerat Caesar, ut proelio intersit.
**カエサルは、戦闘(の場)に居合わせるように急いで行った。
===88節===
'''雌雄決し、ガッリア来援軍が敗走'''
*① Eius adventu ex colore vestitus cognito, quo insigni in proeliis uti consuerat,
**彼(カエサル)の到来が、(彼が)戦闘において目印として用いるのが常であった衣服の色から認識され、
**:<span style="color:#009900;">(訳注:カエサルは、真紅の外套を着用していたようである。)</span>
*turmisque equitum et cohortibus visis quas se sequi iusserat,
**(カエサルが)自らに随行することを命じていた諸<ruby><rb>[[w:騎兵|騎兵]]小隊</rb><rp>(</rp><rt>トゥルマ</rt><rp>)</rp></ruby>や諸<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>が望見されて、
*ut de locis superioribus haec declivia et devexa cernebantur,
**(ウェルカッスィウェッラウヌスらが派遣された)高地から、これらの斜面や急坂が見分けられたので、
*hostes proelium committunt.
**敵方(ガッリア勢)は戦端を開いた。
*② Utrimque clamore sublato
**(ガッリア来援軍とアレスィア籠城軍の)双方から雄叫びが上げられて、
*excipit rursus ex vallo atque omnibus munitionibus clamor.
**さらに、防柵やすべての塁壁から(ローマ勢の)雄叫びが続いた。
*Nostri omissis pilis gladiis rem gerunt.
**我が方(ローマ勢)は<ruby><rb>[[w:ピルム|投槍]]</rb><rp>(</rp><rt>ピルム</rt><rp>)</rp></ruby>を放棄して、<ruby><rb>[[w:グラディウス (武器)|長剣]]</rb><rp>(</rp><rt>グラディウス</rt><rp>)</rp></ruby>で合戦した。
*③ Repente post tergum equitatus cernitur;
**不意に(ガッリア勢の)背後に(ローマ勢の)騎兵隊が見分けられた。
**:<span style="color:#009900;">(訳注:87節②項で、カエサルは騎兵隊に外壁を迂回して敵を背後から襲撃するように命じていた。)</span>
*cohortes aliae adpropinquant.
**別の諸<ruby><rb>歩兵大隊</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>も接近して来た。
*Hostes terga vertunt;
**敵方(ガッリア勢)は、(ローマ勢に)背を向けた。
*fugientibus equites occurrunt.
**逃げる者たち(ガッリア勢)を(ローマ勢の)騎兵たちが追撃した。
*Fit magna caedes.
**大虐殺が起こった。
*④ Sedullus, dux et princeps Lemovicum, occiditur;
**レモウィケス族の将帥で領袖であるセドゥッルスが斃された。
*[[w:la:Vercassivellaunus|Vercassivellaunus]] Arvernus vivus in fuga comprehenditur;
**[[w:アルウェルニ族|アルウェルニー族]]のウェルカッスィウェッラウヌスは逃亡中に生きたまま捕らえられた。
*signa militaria LXXIIII(septuaginta quattuor) ad Caesarem referuntur;
**(ガッリア勢の)74本の軍旗がカエサルのところへ運んで来られた。
*pauci ex tanto numero se incolumes<ref>se incolumes はα系写本の記述で、β系写本では incolumes se となっている。</ref> in castra recipiunt.
**これほどの兵数のうち、わずかな者たち(だけ)が無傷のまま陣営に退却した。
*⑤ Conspicati ex oppido caedem et fugam suorum
**(アレスィアの)[[w:オッピドゥム|城塞都市]]から味方の虐殺や逃亡を視認した者たちは、
*desperata salute copias a munitionibus reducunt.
**身の安全に絶望して、軍勢を塁壁から(城塞都市に)呼び戻した。
*⑥ Fit protinus hac re audita ex castris Gallorum fuga.
**この事態が聞かれるとただちに、(来援に来ていた)ガッリア人たちの陣営から逃亡が生じた。
*Quodnisi crebris subsidiis ac totius diei labore milites essent defessi,
**もし、たびたびの(味方への)支援や一日中の働きにより兵士たちが疲れ果てていなかったならば、
*omnes hostium copiae deleri potuissent.
**敵方(ガッリア来援軍)の全軍勢が壊滅させられることが可能であっただろう。
*⑦ De media nocte missus equitatus novissimum agmen consequitur;
**真夜中の頃に、派遣されていた(ローマ勢の)騎兵隊が(ガッリア勢の)後衛に追いついて、
*magnus numerus capitur atque interficitur;
**(ガッリア勢の)大多数が捕らえられ、かつ殺戮された。
*reliqui ex fuga in civitates discedunt.
**(ガッリア来援軍の)残りの者たちは、逃亡して諸部族のところに逃げのびた。
==ガッリア同盟軍主力の降伏==
===89節===
[[画像:Vercingétorix se rend à César 1886 HPMotte.jpg|thumb|right|330px|「カエサルの陣営に投降するウェルキンゲトリークス」<br>“Vercingétorix se rendant au camp de César”、<br>アンリ=ポール・モット([[w:fr:Henri-Paul_Motte|Henri-Paul Motte]])画、1886年。<br>[[w:ル・ピュイ=アン=ヴレ|ル・ピュイ=アン=ヴレ]]のクロザティエ美術館([[w:fr:Musée Crozatier au Puy-en-Velay|Musée Crozatier]] au [[w:fr:Le Puy-en-Velay|Puy-en-Velay]])蔵。]]
[[画像:Lionel Royer - Vercingetorix Throwing down His Weapons at the feet of Julius Caesar.jpg|thumb|right|330px|「ウェルキンゲトリークスが彼の武器をユリウス・カエサルの足元に投げ捨てる」“Vercingétorix jette ses armes aux pieds de Jules César”、リオネル=ノエル・ロワイエ([[w:fr:Lionel Royer|Lionel-Noël Royer]])
画、1899年。[[w:ル・ピュイ=アン=ヴレ|ル・ピュイ=アン=ヴレ]]のクロザティエ美術館([[w:fr:Musée Crozatier au Puy-en-Velay|Musée Crozatier]] au [[w:fr:Le Puy-en-Velay|Puy-en-Velay]])蔵。]]
[[画像:Coin_Vercingetorix.jpg|thumb|right|300px|ローマがBC48年に発行した[[w:デナリウス|デナリウス銀貨]]。ウェルキンゲトリークスの横顔が刻まれているとも言われ、[[w:マメルティヌスの牢獄|トゥッリアヌム牢獄]]に虜囚となっているかつてのガッリアの盟主を見せしめにしたものとも考えられる。彼はBC46年に処刑されたが、カエサルもBC44年に暗殺された。]]
'''ウェルキンゲトリークスとアレスィア籠城軍の降伏'''
*① Postero die [[w:la:Vercingetorix|Vercingetorix]] concilio convocato
**(来援軍が敗走した)翌日に、[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]は会合を召集して、
*id bellum se suscepisse<ref>se suscepisse はα系写本の記述で、β系写本では suscepisse se となっている。</ref>
**この戦争を引き受けたことは
*non suarum necessitatum<ref>necessitatum はχ系・S・L・N・β系写本の記述で、B・M写本では necessitatium となっている。</ref>, sed communis libertatis causa demonstrat,
**自らの(野心の)必要性からではなく、(ガッリア)共通の自由のためだ、と明言した。
*② et quoniam sit fortunae cedendum,
**運命には従うべきものなのであるから、
*ad utramque rem se illis offerre,
**(敗軍の将として、以下の)どちらの事にも、自ら(の処遇)を彼ら(ガッリア人たち)に委ねよう。
*seu morte sua Romanis satisfacere
**あるいは(ウェルキンゲトリークス)自らの死によってローマ人たちに償うこと(を欲する)にせよ、
*seu vivum tradere velint.
**あるいは生きたまま(ローマ人たちに)引き渡すことを欲するにせよ、と。
*③ Mittuntur de his rebus ad Caesarem legati.
**これらの事柄について、カエサルのところへ使節たちが遣わされた。
*Iubet arma tradi, principes produci.
**(カエサルは)武器が引き渡されること、領袖たちが連行されて来ることを命じた。
*④ Ipse in munitione pro castris consedit;
**(カエサル)自身は、陣営の前の塁壁のところに腰掛けた。
*eo duces producuntur.
**そこに(アレスィアに籠城していた)将帥たちが連行されて来た。
*Vercingetorix deditur, arma proiciuntur.
**ウェルキンゲトリークスが引き渡されて、武器が投げ捨てられた。
*⑤ Reservatis [[w:la:Haedui|Haeduis]] atque Arvernis,
**(カエサルは)[[w:ハエドゥイ族|ハエドゥイー族]]と[[w:アルウェルニ族|アルウェルニー族]](の将兵たち)を保持しておいた。
*si per eos civitates reciperare<ref>reciperare はχ系・B<sup>1</sup>・S・U写本の記述で、B<sup>c</sup>・M・L・N・π系・R写本では recuperare となっている。</ref> posset,
**彼らによって両部族国家を(同盟国として)回復できないだろうかと(考えたのだ)。
*ex reliquis captivis toto exercitui capita singula praedae nomine distribuit.
**残りの(諸部族の)捕虜たちから、全軍(のローマ人)に一名ずつを戦利品という名目で分配した。
===90節===
[[画像:Autun_porte_Saint-André.JPG|thumb|right|300px|[[w:オータン|オータン市]]に遺されたローマ時代からの聖アンドレ門。[[w:ビブラクテ|ビブラクテ]]を首邑としていた[[w:ハエドゥイ族|ハエドゥイー族]]は、ローマ帝政初期に東方の平地に移り、「[[w:アウグストゥス|アウグストゥス]]の砦」を意味するアウグストドゥーヌム([[w:la:Augustodunum|Augustodunum]])を建設して首邑とした。これが現在のオータン(Autun)となっている。]]
[[画像:Clermont_vu_de_Montjuzet.JPG|thumb|right|300px|[[w:クレルモン=フェラン|クレルモン=フェラン市]]の街並み。ローマに降伏した[[w:アルウェルニ族|アルウェルニー族]]は、後に首邑のゲルゴウィアを廃城とされ、北方の平野にあるネメトゥム(Nemetum)に移住させられた。帝政初期に[[w:アウグストゥス|アウグストゥス]]に由来するアウグストネメトゥム([[w:la:Augustonemetum|Augustonemetum]])に改称して、[[w:クレルモン教会会議|クレルモン教会会議]]が開かれるなど宗教的中心地として栄え、現在のクレルモン=フェランに至る。]]
'''ハエドゥイー族とアルウェルニー族の降伏、諸軍団の冬営'''
*① His rebus confectis in [[w:la:Haedui|Haeduos]] proficiscitur;
**これらの事が成し遂げられて、(カエサルは)[[w:ハエドゥイ族|ハエドゥイー族]]のところに出発した。
*civitatem recipit.
**同部族を(同盟国として)回復した。
*② Eo legati ab Arvernis missi:
**そこに、[[w:アルウェルニ族|アルウェルニー族]]から使節たちが遣わされて来て、
*quae imperaret, se facturos pollicentur.
**自分たちは(カエサルが)命令したことを行なうであろう、と約束した。
*Imperat magnum numerum obsidum.
**(カエサルは)多数の人質(の供出)を命令した。
*③ Legiones in hiberna mittit.
**(カエサルは)諸[[w:ローマ軍団|軍団]]を冬営地に派遣した。
*Captivorum circiter XX(viginti) milia Haeduis Arvernisque reddit.
**捕虜たち約2万人をハエドゥイー族とアルウェルニー族に返還した。
*④ [[w:la:Titus Labienus|T.<small>(Titum)</small> Labienum]] duabus cum<ref>duabus cum はχ系・B・M・S写本の記述で、L・N・β系写本では cum duabus となっている。</ref> legionibus et equitatu in Sequanos proficisci iubet;
**[[w:ティトゥス・ラビエヌス|ティトゥス・ラビエーヌス]]を2個軍団および[[w:騎兵|騎兵隊]]とともにセクアニ族のところに出発することを命じた。
*huic M.<small>(Marcum)</small> Sempronium Rutilum attribuit.
**彼には、マルクス・[[w:センプロニウス氏族|センプロニウス]]・ルティルスを付属させた。
*⑤ C.<small>(Gaium)</small> Fabium legatum et L.<small>(Lucium)</small> Minucium Basilum cum legionibus duabus in Remis conlocat,
**副官 ガーイウス・ファビウスとルキウス・ミヌキウス・バスィルスを2個軍団とともにレーミー族のところに配置した。
**:<span style="color:#009900;">(訳注:バスィルスは[[ガリア戦記 第6巻#29節|第6巻29節]]で騎兵隊を指揮した。)</span>
*ne quam ab<ref>ab はφ系写本の記述で、χ系・β系写本では a となっている。</ref> finitimis Bellovacis calamitatem accipiant.
**(レーミー族が)近隣のベッロウァキ族から何らかの災禍を蒙らないようにしたのである。
*⑥ C.<small>(Gaium)</small> Antistium Reginum in Ambivaretos,
**ガーイウス・アンティスティウス・レーギーヌスをアンビウァレティ族のところに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:fr:Caius Antistius Reginus|Gaius Antistius Reginus]]'' は[[ガリア戦記_第6巻#1節|第6巻1節]]、[[#83節|本巻83節]]で既出。)</span>
*T.<small>(Titum)</small> Sextium in Bituriges,
**ティトゥス・セクスティウスをビトゥリゲース族のところに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:en:Titus Sextius|Titus Sextius]] も[[ガリア戦記_第6巻#1節|第6巻1節]]で既出。第6巻の年からカエサルの副官、<br> [[w:三頭政治#第二回三頭政治|第二回三頭政治]]では[[w:アフリカ属州|アフリカ属州]]の総督を務め、[[w:マルクス・アエミリウス・レピドゥス|レピドゥス]]に引き継ぐ。)
*C.<small>(Gaium)</small> Caninium Rebilum in Rutenos cum singulis legionibus mittit.
**ガーイウス・カニニウス・レビルスをルテーニー族のところに、それぞれ1個軍団とともに派遣した。
*⑦ [[w:la:Quintus Tullius Cicero|Q.<small>(Quintum)</small> Tullium Ciceronem]] et P.<small>(Publium)</small> Sulpicium
**[[w:クィントゥス・トゥッリウス・キケロ|クィーントゥス・トゥッリウス・キケロー]]とプーブリウス・スルピキウス(・ルーフス)を
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:カエサルの副官 ''[[w:en:Sulpicia_gens#Sulpicii_Rufi|Publius Sulpicius Rufus]] は、<br> [[ガリア戦記_第4巻#22節|第4巻22節]]で既述。[[内乱記_第1巻#74節|『内乱記』第1巻74節]]でも言及される。<br> [[w:紀元前48年|BC48年]]に[[w:プラエトル|法務官]]、[[w:紀元前42年|BC42年]]に[[w:ケンソル|監察官]]に任官する。)</span>
*[[w:la:Cabillonum|Cavilloni]]<ref>Cavilloni はβ系写本の記述で、α系写本などでは Cabilloni となっている。</ref> et [[w:la:Matisco|Matiscone]] in Haeduis ad Ararim rei frumentariae causa conlocat.
**ハエドゥイー族のところのアラル川沿いのカウィッロヌムとマティスコに、糧秣調達のために配置した。
**:<span style="color:#009900;">(訳注:カウィッロヌムは現在の[[w:シャロン=スュル=ソーヌ|シャロン=スュル=ソーヌ]]、マティスコは現在の[[w:マコン|マコン]]。)</span>
*Ipse [[w:la:Bibracte|Bibracte]] hiemare constituit.
**(カエサル)自身は、[[w:ビブラクテ|ビブラクテ]]で冬営することを決めた。
*⑧ His litteris<ref>his litteris「これらが書簡により(知られると)」はα系写本の記述で、β系写本では huius anni rebus「この年の事績が(知られると)」と異なっており、huius anni rebus <ex Caesaris> litteris「この年の事績が<カエサルの>書簡により(知られると)」 などと修正提案されている。」</ref> cognitis Romae dierum viginti supplicatio redditur.
**これらが(カエサルの)書簡により知られると、ローマで20日間の感謝祭が許された。
**:<span style="color:#009900;">(訳注:[[ガリア戦記 第2巻#35節|第2巻35節]]では、かつてない15日間の感謝祭が決議されたが、今回はそれを超えるものであった。)</span>
----
*<span style="background-color:#99ff99;">「ガリア戦記 第7巻」了。「[[ガリア戦記 第8巻]]」へ続く。</span>
==脚注==
<references />
==参考リンク==
'''ウィキペディア英語版など'''
*'''[[w:en:Category:Tribes of ancient Gaul|Category:Tribes of ancient Gaul]]'''('''[[w:Category:ガリアの部族|Category:ガリアの部族]]''')- [[w:fr:Catégorie:Personnalité gauloise|fr:Catégorie:Personnalité gauloise]]
**[[w:en:Allobroges|Allobroges]](アッロブロゲス族)
**'''[[w:en:Arverni|Arverni]]'''('''[[w:アルウェルニ族|アルウェルニー族]]''')
**:'''[[w:en:Vercingetorix|Vercingetorix]]'''('''[[w:ウェルキンゲトリクス|ウェルキンゲトリークス]]''')- '''<span style="background-color:#ffff00;">[[w:la:Vercingetorix|la:Vercingetorix]]</span>'''
**:[[w:fr:Celtillos|fr:Celtillos]](ケルティッルス);ウェルキンゲトリークスの父
**:[[w:fr:Gobannitio|fr:Gobannitio]](ゴバンニティオ);ウェルキンゲトリークスのおじ
**:[[w:en:Vercassivellaunos|Vercassivellaunos]](ウェルカッスィウェッラウヌス) - <span style="background-color:#ffff00;">[[w:la:Vercassivellaunus|la:Vercassivellaunus]]</span>
**:Critognatus(クリトグナトゥス)- <span style="background-color:#ffff00;">[[w:la:Critognatus|la:Critognatus]]</span>
**[[w:en:Atrebates|Atrebates]](アトレバテス族)
**:[[w:en:Commius|Commius]]([[w:コンミウス|コンミウス]]):ガッリアとブリタンニアにおけるアトレバテス族の王
**[[w:en:Aedui|Aedui]]([[w:ハエドゥイ族|ハエドゥイー族]])- '''<span style="background-color:#ffff00;">[[w:la:Haedui|la:Haedui]]</span>''';ガッリア中部の有力部族 - [[w:fr:Éduens|fr:Éduens]] <[[w:fr:Catégorie:Éduens|fr:Catégorie:Éduens]]
**:[[w:en:Convictolitavis|Convictolitavis]](コンウィクトリタウィス)- [[w:fr:Convictolitavis|fr:Convictolitavis]]
**:[[w:fr:Cotos|fr:Cotos]](コトゥス)
**:[[w:fr:Litaviccos|fr:Litaviccos]](リタウィックス)
**:エポレドリクス - <span style="background-color:#ffff00;">[[w:la:Eporedorix|la:Eporedorix]]</span>
**:ウィリドマルス
**[[w:en:Andes (Andecavi)|Andes (Andecavi)]](アンデス族);現在の[[w:アンジェ|アンジェ]](Angers)周辺の部族
**[[w:en:Aulerci|Aulerci]](アウレルキ族);現在のフランス北西部に居住していた部族連合
**[[w:en:Bellovaci|Bellovaci]](ベッロウァキ族)
**[[w:en:Bituriges|Bituriges]](ビトゥリゲース族);現在の[[w:ブールジュ|ブールジュ]](Bourges)周辺の部族。[[#5節|5節]]でガッリア同盟軍に寝返る。
**[[w:en:Boii|Boii]](ボイイ族)- <span style="background-color:#ffff00;">[[w:la:Boii|la:Boii]]</span>;[[w:ボヘミア|ボヘミア]]([[w:la:Bohemia|la:Bohemia]])から移住してきた部族
**Cadurci(カドゥルキー族);現在の[[w:カオール|カオール]](Cahors)周辺の部族 - [[w:fr:Cadurques|fr:Cadurques]]
**:[[w:en:Lucterius|Lucterius]](ルクテリウス);カドゥルキー族の指導者、[[#5節|5節]]を参照。
**[[w:en:Carnutes|Carnutes]](カルヌーテース族);現在の[[w:シャルトル|シャルトル]](Chartres)周辺の部族
**[[w:en:Gabali|Gabali]](ガバリ族)
**Haedui ⇒ Aedui
**[[w:en:Helvii|Helvii]](ヘルウィイ族);ガッリア南部にいたローマの同盟部族
**[[w:en:Lemovices|Lemovices]](レモウィケス族);現在の[[w:リモージュ|リモージュ]](Limoges)周辺の部族
**:[[w:en:Sedullos|Sedullos]](セドゥッルス Sedullus);レモウィケス族の将帥・領袖
**[[w:en:Lingones|Lingones]](リンゴネス族)- [[w:fr:Lingons|fr:Lingons]];現在のラングル([[w:en:Langres|Langres]])周辺の部族
**[[w:en:Mandubii|Mandubii]](マンドゥビイ族);[[w:アレシア|アレスィア]]周辺にいた部族
**Nitiobroges(ニティオブロゲス族)- [[w:fr:Nitiobroges|fr:Nitiobroges]]
**:[[w:fr:Ollovico|fr:Ollovico]](オッロウィコ);ローマ元老院から友人と呼ばれた王
**:[[w:fr:Teutomatos|fr:Teutomatos]](テウトマトゥス);王で、オッロウィコの子
**[[w:en:Parisii (Gaul)|Parisii (Gaul)]]([[w:パリシイ族|パリスィイ族]]);現在の[[w:パリ|パリ]]周辺の部族
**[[w:en:Pictones|Pictones]](ピクトネス族);現在の[[w:ポワチエ|ポワティエ]](Poitiers)周辺の部族
**[[w:en:Remi|Remi]](レーミー族)
**[[w:en:Ruteni|Ruteni]](ルテーニー族)
**[[w:en:Segusiavi|Segusiavi]](セグスィアウィ族)
**[[w:en:Senones|Senones]](セノネース族)- <span style="background-color:#ffff00;">[[w:la:Senones|la:Senones]]</span>;現在の[[w:サン (ヨンヌ県)|サン]](Sens)周辺の部族
***[[w:en:Acco|Acco]](アッコー)
**[[w:en:Sequani|Sequani]](セクアニ族)
**[[w:en:Treveri|Treveri]](トレウェリ族)
**[[w:en:Turones|Turones]](トゥロニ族/トゥロネス族);現在の[[w:トゥール (アンドル=エ=ロワール県)|トゥール]](Tours)周辺の部族
**[[w:en:Volcae|Volcae]](ウォルカエ族)
*<span style="background-color:#ffff00;">[[w:la:Germani|la:Germani]]</span>(ゲルマニア人)
*'''ガッリアの地名''' - '''[[w:la:Categoria:Urbes Franciae|la:Categoria:Urbes Franciae]]'''(フランスの都市)
**<span style="background-color:#ffff00;">[[w:la:Agedincum|la:Agedincum]]</span>(アゲディンクム);現在の[[w:サンス|サンス]]([[w:en:Sens|Sens]])
**[[w:en:Alesia_(city)|Alesia (city)]]([[w:アレシア|アレスィア]])- <span style="background-color:#ffff00;">[[w:la:Alesia|la:Alesia]]</span>:現在のアリーズ=サント=レーヌ([[w:fr:Alise-Sainte-Reine|fr:Alise-Sainte-Reine]])
**:'''[[w:en:Battle_of_Alesia|Battle of Alesia]]'''('''[[w:アレシアの戦い|アレスィアの戦い]]''')- '''<span style="background-color:#ffff00;">[[w:la:Alesiae_pugna|la:Alesiae pugna]]</span>'''
**[[w:en:Avaricum|Avaricum]] ⇒ [[w:en:Bourges|Bourges]](アウァーリクム - 現在の[[w:ブールジュ|ブールジュ]])- <span style="background-color:#ffff00;">[[w:la:Avaricum_Biturigum|la:Avaricum Biturigum]]</span>
**[[w:en:Bibracte|Bibracte]]([[w:ビブラクテ|ビブラクテ]]) - <span style="background-color:#ffff00;">[[w:la:Bibracte|la:Bibracte]]</span>:[[w:ハエドゥイ族|ハエドゥイー族]]の首邑。現在のボーヴレ山([[w:fr:Mont_Beuvray|fr:Mont Beuvray]])の山頂に位置していた。
**<span style="background-color:#ffff00;">[[w:la:Cabillonum|la:Cabillonum]]</span>(カビッロヌム/カウィッロヌム)- 現在の[[w:シャロン=スュル=ソーヌ|シャロン=スュル=ソーヌ]]([[w:fr:Chalon-sur-Saône|fr:Chalon-sur-Saône]])
**[[w:en:Cenabum|Cenabum]](ケナブム)- 現在の[[w:オルレアン|オルレアン]] - [[w:fr:Cenabum|fr:Cenabum]]
**<span style="background-color:#ffff00;">[[w:la:Decetia|la:Decetia]]</span>(デケティア)- [[w:en:Decize|en:Decize]] - 現在のドスィーズ(ドシーズ)([[w:fr:Decize|fr:Decize]])
**[[w:en:Gergovie|Gergovie]](ゲルゴウィア)- <span style="background-color:#ffff00;">[[w:la:Gergovia|la:Gergovia]]</span>
**:'''[[w:en:Battle of Gergovia|Battle of Gergovia]]'''('''[[w:ゲルゴウィアの戦い|ゲルゴウィアの戦い]]''')- '''<span style="background-color:#ffff00;">[[w:la:Obsidio Gergoviensis|la:Obsidio Gergoviensis]]</span>'''
**[[w:en:Gorgobina|Gorgobina]](ゴルゴビナ);ボイイ族が定住した城塞都市。現在のサン=パリズ=ル=シャテル([[w:en:Saint-Parize-le-Châtel|Saint-Parize-le-Châtel]])またはラ・ゲルシュ([[w:en:La Guerche|La Guerche]])
**'''[[w:en:Lutetia|Lutetia]]'''('''[[w:ルテティア|ルテティア]]'''/ルテキア);[[w:パリシイ族|パリスィイ族]]の首邑、現在の[[w:パリ|パリ市]] - <span style="background-color:#ffff00;">[[w:la:Lutetia|la:Lutetia]]</span>
**<span style="background-color:#ffff00;">[[w:la:Matisco|la:Matisco]]</span>(マティスコ);現在の[[w:マコン|マコン]](Mâcon)
**Metlosenum(メトロセドゥム/メティオセドゥム/メロドゥーヌム);現在の[[w:ムラン|ムラン]] - <span style="background-color:#ffff00;">[[w:la:Melodunum|la:Melodunum]]</span>
**[[w:en:Narbonne|Narbonne]]([[w:ナルボンヌ|ナルボンヌ]];ラテン名ナルボ)- <span style="background-color:#ffff00;">[[w:la:Narbo|la:Narbo]]</span>;ガッリア南部・地中海岸のローマの拠点
**[[w:en:Noviodunum|Noviodunum]](ノウィオドゥーヌム)- 現在のヌン=スュル=ブーヴロン([[w:en:Neung-sur-Beuvron|Neung-sur-Beuvron]])と推定されている。従来はローヌ川沿いの[[w:サンセール|サンセール]]([[w:en:Sancerre|Sancerre]])が有力だった
**[[w:en:Vellaunodunum|Vellaunodunum]](ウェッラウノドゥーヌム)- [[w:fr:Vellaunodunum|fr:Vellaunodunum]];現在のモンタルジ([[w:en:Montargis|Montargis]])やボーヌ=ラ=ロランド([[w:en:Beaune-la-Rolande|Beaune-la-Rolande]])、シャトー=ランドン([[w:en:Château-Landon|Château-Landon]])などと推定されている
**[[w:en:Vienne, Isère|Vienne, Isère]](ヴィエンヌ;ラテン名ウィエンナ)- [[w:la:Vienna|la:Vienna]]
*'''ガッリアの地形'''
**Cevenna(ケウェンナ山地):現在のセヴェンヌ山地([[w:fr:Cévennes|fr:Cévennes]]・[[w:en:Cévennes|Cévennes]])
**<span style="background-color:#ffff00;">[[w:la:Elaver|la:Elaver]]</span>(エラウェル川):現在の[[w:アリエ川|アリエ川]]([[w:fr:Allier (rivière)|fr:Allier (rivière)]])
**<span style="background-color:#ffff00;">[[w:la:Liger|la:Liger]]</span>(リゲル川):現在の[[w:ロワール川|ロワール川]]([[w:fr:Loire (fleuve)|fr:Loire (fleuve)]])
**<span style="background-color:#ffff00;">[[w:la:Rhenus|la:Rhenus]]</span>(レヌス川):現在の[[w:ライン川|ライン川]]([[w:fr:Rhin|fr:Rhin]])
**<span style="background-color:#ffff00;">[[w:la:Rhodanus|la:Rhodanus]]</span>(ロダヌス川):現在の[[w:ローヌ川|ローヌ川]]([[w:fr:Rhône|fr:Rhône]])
**<span style="background-color:#ffff00;">[[w:la:Sequana|la:Sequana]]</span>(セクアナ川):現在の[[w:セーヌ川|セーヌ川]]([[w:fr:Seine|fr:Seine]])
*ローマ勢
**[[w:en:Mark_Antony|Mark Antony]]([[w:マルクス・アントニウス|マルクス・'''アントニウス''']])- <span style="background-color:#ffff00;">[[w:la:Marcus_Antonius|la:Marcus Antonius]]</span>
**[[w:en:Decimus_Junius_Brutus_Albinus|Decimus Junius '''Brutus''' Albinus]]([[w:デキムス・ユニウス・ブルトゥス・アルビヌス|デキムス・ユニウス・'''ブルトゥス'''・アルビヌス]])- <span style="background-color:#ffff00;">[[w:la:Decimus_Iunius_Brutus_Albinus|Decimus Iunius Brutus Albinus]]</span>([[#9節|9節]])
**[[w:en:Quintus Tullius Cicero|Quintus Tullius '''Cicero''']]([[w:クィントゥス・トゥッリウス・キケロ|クィントゥス・トゥッリウス・'''キケロ''']])- <span style="background-color:#ffff00;">[[w:la:Quintus Tullius Cicero|la:Quintus Tullius Cicero]]</span>:カエサルの副官
**Gaius '''Fabius'''(ガイウス・'''ファビウス'''):カエサルの副官
**[[w:en:Titus Labienus|Titus '''Labienus''']]([[w:ティトゥス・ラビエヌス|ティトゥス・'''ラビエーヌス''']])- <span style="background-color:#ffff00;">[[w:la:Titus Labienus|la:Titus Labienus]]</span>:カエサルの副官
**[[w:en:Trebonius|'''Trebonius''']]([[w:ガイウス・トレボニウス|ガイウス・'''トレボニウス''']])- <span style="background-color:#ffff00;">[[w:la:Gaius_Trebonius|la:Gaius Trebonius]]</span>:カエサルの副官
**[[w:en:Lucius Julius Caesar IV|Lucius Julius '''Caesar''' IV]](ルキウス・ユリウス・'''カエサル'''4世):総督カエサルの副官で、4代前の高祖父を共有する。BC64年に執政官を務めた。
*イタリア方面
**[[w:en:Cisalpine_Gaul|Cisalpine Gaul]]([[w:ガリア・キサルピナ|ガッリア・キサルピーナ]]) - [[w:la:Gallia Cisalpina|la:Gallia Cisalpina]]
**[[w:en:Populares|Populares]]([[w:ポプラレス|ポプラレス]];民衆派)- [[w:la:Populares|la:Populares]]
**:[[w:en:Publius_Clodius_Pulcher|Publius Clodius Pulcher]]([[w:プブリウス・クロディウス・プルケル|プブリウス・クロディウス・プルケル]]) - [[w:la:Publius_Clodius_Pulcher|la:Publius Clodius Pulcher]]
**[[w:en:Optimates|Optimates]]([[w:オプティマテス|オプティマテス]];元老院派)
**:[[w:en:Cicero|Cicero]]([[w:マルクス・トゥッリウス・キケロ|マルクス・トゥッリウス・キケロ]])- [[w:la:Marcus_Tullius_Cicero|la:Marcus Tullius Cicero]]
**:[[w:en:Titus_Annius_Milo|Titus Annius Milo]](ティトゥス・アンニウス・ミロ)- [[w:la:Titus_Annius_Milo|la:Titus Annius Milo]]
**:[[w:en:Pompey|Pompey]]([[w:グナエウス・ポンペイウス|グナエウス・ポンペイウス]])- [[w:la:Gnaeus_Pompeius_Magnus|la:Gnaeus Pompeius Magnus]]
jat031ib3k61rgfg1hffyl2wmstn0xq
高校化学 芳香族化合物
0
13379
304826
304691
2026-10-17T19:42:48Z
Leyo
4113
simplified
304826
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校理科|高等学校化学|[[高等学校 化学|化学]]|pagename=芳香族化合物|frame=1|small=1}}
== ベンゼン ==
:[[File:ベンゼン環の分子模型.svg|thumb|left|150x150px|ベンゼンの分子模型]]
[[ファイル:Benzene Structural diagram.svg|サムネイル|ベンゼンの構造。]]
'''ベンゼン''' <chem>C6H6</chem> は、6個の炭素原子が正六角形に結合し、その外側に水素原子が1個ずつ結合した環状構造をもつ。これら12個の原子はすべて同一平面上にある。
ベンゼンの構造式は、炭素原子間の結合が二重結合と単結合を交互にくり返すように書かれる。しかし、実際には、炭素原子間の6本の結合はすべて等価であり、結合の長さはすべて0.140 nm である。これは、単結合(0.154 nm)と二重結合(0.134 nm)の中間の値であり、ベンゼンの炭素原子間の結合は、単結合と二重結合の中間の性質をもつ。実際には結合が環全体に広がっていると考えられている。
ベンゼンの不飽和度は 4 である。
この特徴的な環構造を'''ベンゼン環'''という。ベンゼン環の構造は
:[[File:Benzol.svg|60px|ベンゼン環]] または [[File:Benzene circle.svg|60px|ベンゼン環]] または [[File:Benzene 200.svg|60px]]
などと略記する。この教科書では、いずれの書き方も用いる。
=== 製法 ===
アセチレン <chem>C2H2</chem> を赤熱した鉄に接触させると、3分子が重合してベンゼンが生じる。
:<chem>3C2H2 -> C6H6</chem>
工業的には、ベンゼンは、石油(ナフサ)の接触改質などによって得られる。
=== 性質 ===
* 特有の臭いをもち、無色で揮発性の液体(沸点 80 ℃、融点 5.5 ℃)である。
* 水に溶けにくく、有機化合物をよく溶かすので、有機溶媒として用いられる。
* 引火しやすい。炭素の割合が多いため、多量のすすを出して燃える。
* 人体には有毒で発がん性がある。
=== ベンゼンの置換反応 ===
ベンゼンは、ベンゼン環が安定であるため、アルケンと比べて付加反応を起こしにくい。一方、置換反応では環の構造が保たれるため、ベンゼンは置換反応を起こしやすい。
==== スルホン化 ====
: 濃硫酸にベンゼンを加え加熱すると、水素原子がスルホ基 <chem>-SO3H</chem> に置換され、'''ベンゼンスルホン酸''' <chem>C6H5SO3H</chem> を生じる。
: <chem>C6H6 + H2SO4 -> C6H5SO3H + H2O</chem>
: [[ファイル:ベンゼンスルホン酸の合成式.svg|500x500ピクセル|ベンゼンスルホン酸の合成式]]
ベンゼンスルホン酸は強酸である。また、親水性のスルホ基をもつため、水に溶ける。
==== ニトロ化 ====
: 濃硫酸と濃硝酸の混合物('''混酸''')にベンゼンを加え加熱すると、水素原子がニトロ基 <chem>-NO2</chem> で置換され、'''ニトロベンゼン''' <chem>C6H5NO2</chem> を生じる。
: <chem>C6H6 + HNO3 -> C6H5NO2 + H2O</chem>
:: [[ファイル:ニトロベンゼンの合成式.svg|500x500ピクセル|ニトロベンゼンの合成式]]
ニトロベンゼンは、無色〜淡黄色の液体で、特有の甘い香りをもつ。ニトロベンゼンは、水に溶けにくく、'''水より重い'''(密度 <math>1.2\ \mathrm{g/cm^3}</math>)。
ニトロベンゼンのように、炭素原子に直接ニトロ基が結合した化合物をニトロ化合物という。
ニトロ基の数が多くなると、爆発性をもつようになる。ピクリン酸やトリニトロトルエン(TNT)などが例である。なお、ニトログリセリンやニトロセルロースも爆発性をもつが、これらは硝酸エステルであり、ニトロ化合物ではない。
==== ハロゲン化 ====
: [[ファイル:1,4-dichlorobenzene.svg|サムネイル|191x191ピクセル|p-ジクロロベンゼン]]ベンゼンに触媒を用いてハロゲンを反応させると、置換反応が生じる。たとえば、鉄粉または塩化鉄(III)を触媒として塩素を反応させると、水素原子を1個置換して'''クロロベンゼン''' <chem>C6H5Cl</chem> が生じる。
: <chem>C6H6 + Cl2 -> C6H5Cl + HCl</chem>
:: [[ファイル:クロロベンゼンの合成式.svg|500x500ピクセル|クロロベンゼンの生成]]
: クロロベンゼンにさらに塩素を反応させると、ジクロロベンゼンが生じる。このうち、パラジクロロベンゼン(''p''-ジクロロベンゼン)は昇華性がある無色の固体(融点 54 ℃)であり、防虫剤として用いられる。
{{-}}
==== アセチル化 ====
[[File:Acetophenone structure.svg|Acetophenone_structure|左|150px]]
ベンゼンと塩化アセチル <chem>CH3COCl</chem> を、粉末状の塩化アルミニウム <chem>AlCl3</chem> を触媒に反応させると、ベンゼン環の水素原子が1個アセチル基 <chem>-COCH3</chem> に置換され、'''アセトフェノン''' <chem>C6H5COCH3</chem> が生じる。
: <chem>C6H6 + CH3COCl -> C6H5COCH3 + HCl</chem>
{{-}}
==== アルキル化 ====
ベンゼンと塩化アルキル <chem>R-Cl</chem> を、塩化アルミニウムを触媒に反応させると、置換反応が起こる。
たとえば、クロロメタン <chem>CH3Cl</chem> を反応させると、水素原子が1個置換されて'''トルエン''' <chem>C6H5CH3</chem> が生じる。
: <chem>C6H6 + CH3Cl -> C6H5CH3 + HCl</chem>
トルエンは有機溶媒としてよく用いられるが、シンナーなどの成分でもあり、蒸気を吸い込むと中毒を起こすおそれがある。
ここで扱った5つが、ベンゼンのおもな置換反応である。
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題1 ニトロベンゼンの収率'''
|-
|style="padding:5px"|
ベンゼン 7.8 g を混酸でニトロ化したところ、ニトロベンゼンが収率 80 %で得られた。得られたニトロベンゼンは何 g か。原子量は H = 1.0、C = 12、N = 14、O = 16 とする。
|}
{{解答|例題1の解答}}
ベンゼン <chem>C6H6</chem> のモル質量は 78 g/mol であるから、7.8 g は <math>\dfrac{7.8}{78}=0.10\ \mathrm{mol}</math> である。<chem>C6H6 + HNO3 -> C6H5NO2 + H2O</chem> より、理論上は、ニトロベンゼンが 0.10 mol 生じる。ニトロベンゼン <chem>C6H5NO2</chem> のモル質量は 123 g/mol であるから、収率 80 %のとき、<math>0.10\times123\times0.80\fallingdotseq9.8\ \mathrm{g}</math> である。
答: 9.8 g
{{証明終わり}}
{| class="wikitable"
|+ ベンゼンの置換反応まとめ
|-
! 反応名 !! 反応剤 !! 置換
|-
| スルホン化 || 濃 <chem>H2SO4</chem> || <chem>-H</chem> → <chem>-SO3H</chem>(スルホ基)
|-
| ニトロ化 || 濃 <chem>HNO3</chem><br />(触媒: 濃 <chem>H2SO4</chem>) || <chem>-H</chem> → <chem>-NO2</chem>(ニトロ基)
|-
| ハロゲン化<br />(塩素の場合) || <chem>Cl2</chem><br />(触媒: <chem>Fe</chem>) || <chem>-H</chem> → <chem>-Cl</chem>(クロロ基)
|-
| アセチル化 || <chem>CH3COCl</chem><br />(触媒: <chem>AlCl3</chem>) || <chem>-H</chem> → <chem>-COCH3</chem>(アセチル基)
|-
| アルキル化 || <chem>R-Cl</chem><br />(触媒: <chem>AlCl3</chem>) || <chem>-H</chem> → <chem>-R</chem>(アルキル基)
|}
=== ベンゼンの付加反応 ===
ベンゼンでは付加反応はほとんど起こらないが、高温・高圧下でニッケルなどの触媒を用いると、水素が付加してシクロヘキサン <chem>C6H12</chem> を生じる。
:<chem>C6H6 + 3H2 -> C6H12</chem>
: [[ファイル:ベンゼンの水素付加反応.svg|450x450ピクセル|ベンゼンの水素付加反応]]
また、ベンゼンと塩素の混合物に紫外線を加えても、付加反応を起こし、'''1,2,3,4,5,6-ヘキサクロロシクロヘキサン''' <chem>C6H6Cl6</chem> を生じる。
:<chem>C6H6 + 3Cl2 -> C6H6Cl6</chem>
: [[ファイル:ベンゼンの塩素付加反応.svg|510x510ピクセル|ベンゼンの塩素付加反応]]
1,2,3,4,5,6-ヘキサクロロシクロヘキサンは'''ベンゼンヘキサクロリド(BHC)'''とも呼ばれ、かつては殺虫剤として使われていた。
== 芳香族炭化水素 ==
{| cellspacing="0" border="1" align="right"
!名称
!構造式
|-
|'''トルエン''' <chem>C6H5CH3</chem>
|[[ファイル:Toluene_acsv.svg|91x91ピクセル|トルエン]]
|-
|'''スチレン''' <chem>C6H5CH=CH2</chem>
|[[ファイル:Polystyrol-Strukturformel.svg|100x100ピクセル|スチレン]]
|-
|'''ナフタレン''' <chem>C10H8</chem>
| [[ファイル:Naphthalene-2D-Skeletal.svg|100x100ピクセル|ナフタレン]]
|-
| '''アントラセン''' <chem>C14H10</chem>
| [[ファイル:Anthracen.svg|150x150ピクセル|アントラセン]]
|-
|}
ベンゼン環をもつ炭化水素を'''{{Ruby|芳香|ほうこう}}族炭化水素'''という。 芳香族炭化水素には、ベンゼンの水素原子がメチル基に置換した'''トルエン'''(toluene、分子式 <chem>C6H5CH3</chem>)やキシレン、ベンゼン環が2個縮合した'''ナフタレン'''(naphthalene、分子式 <chem>C10H8</chem>)などがある。
これらの化合物は芳香をもつものが多く、人体には有害なものが多い。また、ベンゼンと同様に可燃性があり、燃えると、すすを多く出す。
キシレンには、2つのメチル基の位置によって3種類の異性体が存在する。
[[ファイル:Xylenes_ja.png|中央|500x500ピクセル|キシレンの異性体]]
''o''-、''m''-、''p''- はそれぞれ、オルト、メタ、パラと読む<ref>たとえば、''p''-キシレンは、パラキシレンと読む。</ref>。
2つの置換基がある場合、ある置換基に対して、そのすぐ隣の位置を'''オルト位'''、1つ空いて離れた位置を'''メタ位'''、ベンゼン環を挟んで正反対の位置を'''パラ位'''と呼び、それぞれ記号''o''-,''m''-,''p''-をつけて異性体を区別する。
{| class="wikitable"
|+
!名称
!融点 / ℃
!沸点 / ℃
|-
|ベンゼン
|6
|80
|-
|トルエン
| -95
|111
|-
|スチレン
| -31
|145
|-
|''o''-キシレン
| -25
|144
|-
|''m''-キシレン
| -48
|139
|-
|''p''-キシレン
|13
|138
|-
|ナフタレン
|81
|218
|-
|アントラセン
|216
|342
|-
|}
==== おもな芳香族化合物 ====
ベンゼン環に置換基が1個結合した化合物には、次のようなものがある。
{| class="wikitable" style="text-align:center"
|+ ベンゼンの一置換体
! 名称 !! 示性式 !! 置換基
|-
| トルエン || <chem>C6H5CH3</chem> || メチル基 <chem>-CH3</chem>
|-
| スチレン || <chem>C6H5CH=CH2</chem> || ビニル基 <chem>-CH=CH2</chem>
|-
| ニトロベンゼン || <chem>C6H5NO2</chem> || ニトロ基 <chem>-NO2</chem>
|-
| ベンゼンスルホン酸 || <chem>C6H5SO3H</chem> || スルホ基 <chem>-SO3H</chem>
|-
| フェノール || <chem>C6H5OH</chem> || ヒドロキシ基 <chem>-OH</chem>
|-
| ベンジルアルコール || <chem>C6H5CH2OH</chem> || ヒドロキシメチル基 <chem>-CH2OH</chem>
|-
| アニリン || <chem>C6H5NH2</chem> || アミノ基 <chem>-NH2</chem>
|-
| ベンズアルデヒド || <chem>C6H5CHO</chem> || ホルミル基 <chem>-CHO</chem>
|-
| 安息香酸 || <chem>C6H5COOH</chem> || カルボキシ基 <chem>-COOH</chem>
|}
==== 側鎖の酸化反応 ====
'''側鎖'''(ベンゼン環に結合している炭素鎖)は、ベンゼン環に直接結合した炭素原子に水素原子が結合していれば、強力な酸化剤により'''すべてカルボキシ基 <chem>-COOH</chem> まで酸化される'''。
例えば、トルエン・エチルベンゼン・スチレンは硫酸酸性条件下で過マンガン酸カリウムと反応させると、芳香族カルボン酸である安息香酸を生じる。
同様に、''o''-キシレンはフタル酸、''m''-キシレンはイソフタル酸、''p''-キシレンはテレフタル酸を生じる。
側鎖の炭素原子の数によらず、1つの側鎖は、ベンゼン環に直接結合した炭素原子を含む1個の <chem>-COOH</chem> になる。したがって、酸化で生じるカルボン酸のカルボキシ基の数は、もとの化合物の側鎖の数と等しい。
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題2 C<sub>8</sub>H<sub>10</sub> の異性体'''
|-
|style="padding:5px"|
分子式 <chem>C8H10</chem> で表され、ベンゼン環をもつ化合物には、何種類の構造異性体があるか。また、そのうち、過マンガン酸カリウムで酸化すると安息香酸を生じるものはどれか。
|}
{{解答|例題2の解答}}
<chem>C8H10</chem> からベンゼン環 <chem>C6H4</chem> または <chem>C6H5</chem> を除くと、残りは炭素原子 2 個である。側鎖が1つの場合はエチルベンゼン <chem>C6H5CH2CH3</chem>、側鎖が2つ(メチル基2個)の場合は ''o''-、''m''-、''p''-キシレンであるから、構造異性体は4種類である。側鎖が1つのエチルベンゼンだけが、酸化されて安息香酸を生じる。キシレンは、カルボキシ基を2個もつフタル酸、イソフタル酸、テレフタル酸を生じる。
答: 4種類、エチルベンゼン
{{証明終わり}}
==== トルエンのニトロ化 ====
混酸をもちいてトルエンをニトロ化すると、''o''-位や ''p''-位がニトロ化されて、ニトロトルエン <chem>C6H4(CH3)NO2</chem> が生じる。<gallery widths="150px" heights="150px">
File:O-Nitrotoluol.svg|o-ニトロトルエン
File:P-Nitrotoluol.svg|p-ニトロトルエン
File:Trinitrotoluene acsv.svg|2,4,6-トリニトロトルエン
</gallery>さらにニトロ化すると、2,4,6-トリニトロトルエン(略称: TNT)が生じる。TNT は爆薬として用いられる。
なお、「2,4,6」とは、トリニトロトルエンの図で、<chem>-CH3</chem> のついている炭素原子を1番として、右回りでも左回りでも、2番目、4番目、6番目の位置に <chem>-NO2</chem> があることを表す。
== フェノール類 ==
{| style="text-align:center" cellspacing="0" border="1" align="right"
!名称
!構造式
|-
|'''フェノール'''
|[[ファイル:Phenol topo.svg|85x85ピクセル|フェノール]]
|-
|'''''o''-クレゾール'''
|[[ファイル:O-Kresol.png|76x76ピクセル|o-クレゾール]]
|-
|'''''m''-クレゾール'''
|[[ファイル:M-Kresol.png|76x76ピクセル|m-クレゾール]]
|-
|'''''p''-クレゾール'''
|[[ファイル:P-Kresol.png|99x99ピクセル|p-クレゾール]]
|}
ベンゼン環にヒドロキシ基 <chem>-OH</chem> が直接結合したものを'''フェノール類'''と呼ぶ。ベンゼン環に直接結合したヒドロキシ基を'''フェノール性ヒドロキシ基'''、ベンゼン環以外の炭素原子に結合したヒドロキシ基を'''アルコール性ヒドロキシ基'''という。フェノール類には、フェノールのほか、クレゾール、ナフトールなどがある。フェノール類は互いに似た性質を示す。
構造式を下に示すベンジルアルコールのように、ベンゼン環に直接ヒドロキシ基が結合しないものはフェノール類に属さない。
[[ファイル:Alkohol_benzylowy.svg|中央|サムネイル|150x150ピクセル|ベンジルアルコール]]
フェノール類のヒドロキシ基は水溶液中でわずかに電離し、弱酸性を示す。フェノール類は、炭酸よりも弱い酸である。
: [[ファイル:フェノキシドイオンの合成式.svg|600x600ピクセル|フェノキシドイオンの合成式]]
フェノール類は水に溶けにくい(フェノールは少し溶ける)が、水酸化ナトリウムなどの強塩基の水溶液と反応して塩となり、水に溶ける。
: [[ファイル:ナトリウムフェノキシドの合成式.svg|600x600ピクセル|ナトリウムフェノキシドの合成式]]
ナトリウムフェノキシドの水溶液に、フェノールよりも強い酸である二酸化炭素を通じると、フェノールが遊離する。
:<chem>C6H5ONa + CO2 + H2O -> C6H5OH + NaHCO3</chem>
* ナトリウムとの反応
また、フェノール類は、アルコールと同様に単体のナトリウムと反応し、水素を発生する。
:<chem>2C6H5OH + 2Na -> 2C6H5ONa + H2 ^</chem>
: 2[[ファイル:フェノール.svg|100x100ピクセル|フェノール]] + 2Na → 2 [[ファイル:Natriumphenolat_Structural_Formula_V.1.svg|80x80ピクセル|ナトリウムフェノキシド]] + <chem>H2 ^</chem>
=== 検出反応 ===
フェノール類の水溶液に塩化鉄(III) <chem>FeCl3</chem> 水溶液を加えると青紫〜赤紫色を呈する。この呈色反応はフェノール類の検出に利用される。
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題3 C<sub>7</sub>H<sub>8</sub>O の異性体'''
|-
|style="padding:5px"|
分子式 <chem>C7H8O</chem> で表され、ベンゼン環をもつ化合物には、何種類の構造異性体があるか。また、そのうち、金属ナトリウムと反応して水素を発生するものと、塩化鉄(III)水溶液で呈色するものは、それぞれ何種類か。
|}
{{解答|例題3の解答}}
構造異性体は、ベンジルアルコール、''o''-クレゾール、''m''-クレゾール、''p''-クレゾール、アニソール(メチルフェニルエーテル <chem>C6H5OCH3</chem>)の5種類である。ヒドロキシ基をもつ、ベンジルアルコールと3種類のクレゾールは、金属ナトリウムと反応して水素を発生する(4種類)。エーテルであるアニソールは、反応しない。塩化鉄(III)水溶液で呈色するのは、フェノール類である3種類のクレゾールである(3種類)。
答: 5種類、4種類、3種類
{{証明終わり}}
=== フェノール ===
'''フェノール'''はベンゼン環の水素原子を1つヒドロキシ基で置換した構造である。
特有の匂いをもつ、人体には有毒な白色の固体である。石炭の乾留から得られるため石炭酸ともいう。
[[ファイル:Phenol topo.svg|左|サムネイル|128x128ピクセル|フェノール]]
{{-}}
==== フェノールの合成 ====
ベンゼンに直接ヒドロキシ基を置換することはできないが、フェノールはベンゼンを原料としてさまざまな経路により合成することができる。中でも、工業的には'''クメン法'''が重要である。
; クメン法
# ベンゼンとプロペン(プロピレン)を、酸触媒を用いて反応させ、クメンを生じる。
# クメンを酸素(空気)で酸化し、クメンヒドロペルオキシドとする。(ペルオキシドは「過酸化物」の意)
# 希硫酸により分解し、フェノールを生じる。この際、副生成物としてアセトンを生じる。
:<chem>C6H6 + CH3CH=CH2 -> C6H5CH(CH3)2</chem>
:<chem>C6H5CH(CH3)2 + O2 -> C6H5C(CH3)2OOH</chem>
:<chem>C6H5C(CH3)2OOH -> C6H5OH + CH3COCH3</chem>
: [[ファイル:Cumene-process-overview-2D-skeletal.svg|中央|700x700ピクセル|クメン法]]
ベンゼンもプロペンも石油から得られ、希硫酸も石油の脱硫で得た硫黄から接触法で安く合成できるので、クメン法は、ハーバー・ボッシュ法と同じく、安く大量生産できる工業的製法の成功例の一つである。また、副産物のアセトンも有機溶媒などとして用いられるので、無駄にならない。
なお、クメンヒドロペルオキシドがフェノールとアセトンに分解する過程では、ベンゼン環が酸素原子に結合する位置が移る転位反応が起こる。
3つの反応式をまとめると、次のようになる。ベンゼン 1 mol から、フェノールとアセトンが 1 mol ずつ生じる。
:<chem>C6H6 + CH3CH=CH2 + O2 -> C6H5OH + CH3COCH3</chem>
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題4 クメン法の量的関係'''
|-
|style="padding:5px"|
クメン法でフェノールを 47 kg つくるとき、同時に生じるアセトンは何 kg か。また、原料のベンゼンは何 kg 必要か。ただし、反応はすべて完全に進むものとし、原子量は H = 1.0、C = 12、O = 16 とする。
|}
{{解答|例題4の解答}}
フェノール <chem>C6H5OH</chem> のモル質量は 94 g/mol であるから、47 kg は <math>\dfrac{47\times10^3}{94}=5.0\times10^2\ \mathrm{mol}</math> である。上のまとめの式より、アセトン <chem>CH3COCH3</chem>(モル質量 58 g/mol)とベンゼン <chem>C6H6</chem>(モル質量 78 g/mol)も、それぞれ <math>5.0\times10^2\ \mathrm{mol}</math> である。したがって、アセトンは <math>5.0\times10^2\times58=2.9\times10^4\ \mathrm{g}</math>、ベンゼンは <math>5.0\times10^2\times78=3.9\times10^4\ \mathrm{g}</math> である。
答: アセトン 29 kg、ベンゼン 39 kg
{{証明終わり}}
他にも、ベンゼンスルホン酸のアルカリ融解や、クロロベンゼンからフェノールを合成する方法も存在する。
: [[ファイル:フェノールの昔の製法.svg|700x700ピクセル|フェノールの昔の製法]]
なお、ベンゼンスルホン酸からの製法では、水酸化ナトリウムを 300 ℃前後で融解させるので、'''アルカリ融解'''ともいわれる。
また、フェノールはコールタール(石炭の乾留から生じる液体)の分留によっても得ることができる。
==== フェノールの反応 ====
フェノールは反応性が高く、さまざまな化合物を生じる。フェノールに臭素を反応させると、ヒドロキシ基に対してオルト位とパラ位の水素原子が臭素で置換され、2,4,6-トリブロモフェノールの白色沈殿を生じる。
:<chem>C6H5OH + 3Br2 -> C6H2Br3OH v + 3HBr</chem>
: [[ファイル:2,4,6-tribromophenol_synthesis.PNG|400x400ピクセル|2,4,6-トリブロモフェノールの合成]]
[[ファイル:Pikrinsäure.svg|サムネイル|ピクリン酸]]また、フェノールに濃硫酸と濃硝酸を作用させると、ヒドロキシ基に対してオルト位とパラ位をニトロ化して'''ピクリン酸'''を生じる。ピクリン酸は、'''塩化鉄(III)の呈色反応を示さない、水に可溶で電離する、強酸である'''と、フェノール類としては特異な性質をもっている。
なお、「2,4,6」とは、フェノールの図で、<chem>-OH</chem> のついている炭素原子を1番として、右回りでも左回りでも、2番目、4番目、6番目の位置に置換基があることを表す。ピクリン酸は 2,4,6-トリニトロフェノール、トリブロモフェノールは 2,4,6-トリブロモフェノールである。
:<chem>C6H5OH + 3HNO3 -> C6H2(NO2)3OH + 3H2O</chem>
フェノールと臭素水の反応は、白色沈殿が生じるので、フェノールの検出にも用いられる。
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題5 2,4,6-トリブロモフェノールの生成量'''
|-
|style="padding:5px"|
フェノール 0.94 g を含む水溶液に、十分な量の臭素水を加えたところ、2,4,6-トリブロモフェノールの白色沈殿が生じた。反応が完全に進んだとすると、沈殿は何 g 生じるか。原子量は H = 1.0、C = 12、O = 16、Br = 80 とする。
|}
{{解答|例題5の解答}}
フェノール <chem>C6H5OH</chem> のモル質量は 94 g/mol であるから、0.94 g は <math>\dfrac{0.94}{94}=1.0\times10^{-2}\ \mathrm{mol}</math> である。反応式より、2,4,6-トリブロモフェノール <chem>C6H2Br3OH</chem>(モル質量 331 g/mol)も <math>1.0\times10^{-2}\ \mathrm{mol}</math> 生じるから、その質量は <math>1.0\times10^{-2}\times331\fallingdotseq3.3\ \mathrm{g}</math> である。
答: 3.3 g
{{証明終わり}}
== 芳香族カルボン酸 ==
ベンゼン環にカルボキシ基が直接結合した化合物を'''芳香族カルボン酸'''という。一般に、水には溶けにくいが、水中ではわずかに電離して、弱い酸性を示す。
また、水酸化ナトリウムなどの塩基の水溶液と中和して塩を生じ、水に溶ける。
芳香族カルボン酸は、医薬品や染料の原料として、よく用いられる。
=== 安息香酸 ===
[[ファイル:安息香酸.svg|サムネイル|安息香酸]]
'''{{Ruby|安息香|あんそくこう}}酸''' <chem>C6H5COOH</chem> はベンゼン環の水素原子1個をカルボキシ基で置換した物質である。白色の固体で、水に溶けにくいが、熱水には溶け、水溶液中では弱酸性を示す。また、有機溶媒によく溶ける。安息香酸は水酸化ナトリウム水溶液に加えると、安息香酸ナトリウムを生じて溶ける。しかし、塩酸などの強酸を加えると、弱酸である安息香酸が遊離し、白色結晶が析出する。
:<chem>C6H5COOH + NaOH -> C6H5COONa + H2O</chem>
:<chem>C6H5COONa + HCl -> C6H5COOH + NaCl</chem>
: [[ファイル:安息香酸の合成式.svg|600x600ピクセル|安息香酸の合成式]]
安息香酸は、トルエンの酸化により得られる。トルエンを過マンガン酸カリウム水溶液中で加熱すると、側鎖の <chem>-CH3</chem> が酸化されて、安息香酸が得られる。塩基性の水溶液中では、安息香酸ナトリウムまたはカリウムが生じるので、酸を加えて安息香酸を遊離させる。
:<chem>C6H5CH3 + 2KMnO4 -> C6H5COOK + 2MnO2 + KOH + H2O</chem>
: [[ファイル:ベンズアルデヒドと安息香酸の式.svg|600x600ピクセル|ベンズアルデヒドと安息香酸の式]]
トルエンから安息香酸までの反応の際、おだやかな条件で酸化させると、まずトルエンのメチル基 <chem>-CH3</chem> が酸化されてホルミル基 <chem>-CHO</chem> となり、ベンズアルデヒド <chem>C6H5CHO</chem> が生じる。ベンズアルデヒドは無色で芳香をもち、空気中で徐々に酸化されて、しだいに安息香酸になる。
{{-}}
=== フタル酸・テレフタル酸・イソフタル酸===
[[ファイル:Phthalic_Acid.PNG|サムネイル|フタル酸]]
'''フタル酸''' <chem>C6H4(COOH)2</chem> はベンゼン環に2個のカルボキシ基が、互いにオルト位に結合した物質である。フタル酸は2個のカルボキシ基が近い位置にあるため、加熱により分子内脱水反応が起こり、無水フタル酸を生じる。
: [[ファイル:フタル酸と無水フタル酸.svg|500x500ピクセル|フタル酸と無水フタル酸]]
フタル酸は、工業的には、''o''-キシレンの酸化によって得られる。
なお、酸化バナジウム(V)を触媒としてナフタレンを酸化しても、無水フタル酸が得られる。
'''テレフタル酸'''はフタル酸の異性体であり、互いにパラ位に2個のカルボキシ基が存在する。フタル酸とは異なり、カルボキシ基が離れているため、加熱しても分子内の脱水反応は起こらない。テレフタル酸はペットボトルやワイシャツなどの素材となる PET(ポリエチレンテレフタラート)の原料である。テレフタル酸は、工業的には、''p''-キシレンの酸化によって得られる。
: [[ファイル:テレフタル酸.svg|600x600ピクセル|テレフタル酸]]
'''イソフタル酸'''もフタル酸の異性体であり、互いにメタ位に2個のカルボキシ基が存在する。イソフタル酸は、''m''(メタ)-キシレンの酸化によって得られる。
[[ファイル:Phthalic acid isomers.PNG|thumb|フタル酸(左)・イソフタル酸(中)・テレフタル酸(右)|450px]]
{{-}}
=== サリチル酸 ===
'''サリチル酸'''は、ベンゼン環にカルボキシ基とヒドロキシ基が互いにオルト位に結合した物質である。サリチル酸は、ナトリウムフェノキシドから合成される。ナトリウムフェノキシドに二酸化炭素を高温・高圧下で反応させると、サリチル酸ナトリウムが生じる。そのサリチル酸ナトリウムに希硫酸を作用させると、サリチル酸が得られる。
:<chem>C6H5ONa + CO2 -> C6H4(OH)COONa</chem>
:<chem>2C6H4(OH)COONa + H2SO4 -> 2C6H4(OH)COOH + Na2SO4</chem>
: [[ファイル:サリチル酸の合成式.svg|700x700ピクセル|サリチル酸の合成式]]
サリチル酸は無色(白色)の結晶で、水にはわずかに溶けて酸性を示す。温水やエタノールにはよく溶ける。サリチル酸はベンゼン環に直接ヒドロキシ基が結合しているため、芳香族カルボン酸としての性質をもつと同時に、[[高校化学 芳香族化合物#フェノール類|フェノール類]]としての性質ももつ。
サリチル酸の誘導体は、古くから、柳の樹皮が解熱や鎮痛に用いられてきたことと関係が深い。しかし、サリチル酸は、皮膚や粘膜を刺激する作用があり、内服すると胃が荒れる副作用がある。現在では、この作用を利用して、ウオノメなどの外用の治療薬として用いられる。
また、サリチル酸のヒドロキシ基を無水酢酸でアセチル化(アセチル基 <chem>CH3CO-</chem> での置換反応)すると、'''アセチルサリチル酸'''となる。アセチルサリチル酸はアスピリンとも呼ばれ、解熱鎮痛剤として広く用いられている。
: [[ファイル:アセチルサリチル酸の合成式.svg|800x800ピクセル|アセチルサリチル酸の合成式]]
:<chem>C6H4(OH)COOH + (CH3CO)2O -> C6H4(OCOCH3)COOH + CH3COOH</chem>
サリチル酸のカルボキシ基をメタノールでエステル化すると、'''サリチル酸メチル'''となる。サリチル酸メチルは湿布薬などに消炎剤として用いられる。
:<chem>C6H4(OH)COOH + CH3OH -> C6H4(OH)COOCH3 + H2O</chem>
{| class="wikitable"
|+ サリチル酸の誘導体まとめ
|-
! 性質等 !!アセチルサリチル酸 !! サリチル酸メチル
|-
| '''形状''' || 無色の結晶(白色粉末) || 芳香性無色液体(油性)
|-
| '''水への溶解性''' || 微溶 || 難溶
|-
| '''<chem>FeCl3</chem> による呈色反応'''<br />(フェノール性ヒドロキシ基の検出) || 示さない || 赤紫色に呈色
|-
| '''<chem>NaHCO3</chem> 水溶液による弱酸遊離反応'''<br />(カルボキシ基の検出) || <chem>CO2</chem> を発生 || 示さない
|-
| '''主な用途''' || 解熱鎮痛剤 || 外用消炎剤(湿布)
|}
アセチルサリチル酸の結晶にサリチル酸が残っているかどうかは、塩化鉄(III)水溶液を加えて調べることができる。赤紫色に呈色すれば、フェノール性ヒドロキシ基をもつサリチル酸が残っている。
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題6 アセチルサリチル酸の収率'''
|-
|style="padding:5px"|
サリチル酸 6.90 g に無水酢酸を十分に作用させたところ、アセチルサリチル酸が 7.20 g 得られた。収率は何 %か。原子量は H = 1.0、C = 12、O = 16 とする。
|}
{{解答|例題6の解答}}
サリチル酸 <chem>C7H6O3</chem> のモル質量は 138 g/mol であるから、6.90 g は <math>\dfrac{6.90}{138}=0.0500\ \mathrm{mol}</math> である。反応式より、アセチルサリチル酸 <chem>C9H8O4</chem>(モル質量 180 g/mol)は、理論上 0.0500 mol、すなわち <math>0.0500\times180=9.00\ \mathrm{g}</math> 生じる。したがって、収率は <math>\dfrac{7.20}{9.00}\times100=80.0\ \%</math> である。
答: 80.0 %
{{証明終わり}}
== 芳香族アミン ==
アンモニア <chem>NH3</chem> の水素原子を炭化水素基で置換した化合物を'''アミン'''(amine)といい、ベンゼン環にアミノ基 <chem>-NH2</chem> が直接結合した化合物を'''芳香族アミン'''という。
芳香族アミンは弱塩基性であり、アンモニアに化学的性質が似ている。
=== アニリン ===
'''アニリン'''はベンゼンの水素原子1つをアミノ基で置換した物質である。アニリン <chem>C6H5NH2</chem> は無色油状の液体(沸点 185 ℃)で、水に溶けにくい。アニリンを水と混ぜると、水より重いので、分離して下に沈む。アミノ基は弱塩基性を示すため、塩酸と反応するとアニリン塩酸塩 <chem>C6H5NH3Cl</chem> を生じて、水に溶ける。
:<chem>C6H5NH2 + HCl -> C6H5NH3Cl</chem>
: [[ファイル:アニリン塩酸塩の合成式.svg|600x600ピクセル|アニリン塩酸塩の合成式]]
アニリン塩酸塩に、水酸化ナトリウムのような強塩基の水溶液を加えると、油状のアニリンが遊離する。
:<chem>C6H5NH3Cl + NaOH -> C6H5NH2 + NaCl + H2O</chem>
アニリンの水溶液は、さらし粉の水溶液を加えると、次亜塩素酸イオンにより酸化されて'''赤紫色'''になる。この呈色反応はアニリンの検出反応として重要である。
また、アニリンを硫酸酸性二クロム酸カリウム水溶液で酸化すると黒色物質を生じる。これは'''アニリンブラック'''と呼ばれ、黒色染料や黒色顔料として用いられる。なお、一般にアミン・フェノールは酸化すると黒系統の色になることが知られている。
* 製法
アニリンは、実験室ではニトロベンゼンから合成される。ニトロベンゼンにスズと塩酸を加えて加熱すると、還元され、アニリン塩酸塩を生じる。
:<chem>2C6H5NO2 + 3Sn + 14HCl -> 2C6H5NH3Cl + 3SnCl4 + 4H2O</chem>
この水溶液に水酸化ナトリウム水溶液のような強塩基を加えて、アニリンを遊離させる。アニリンは水に溶けず分離するため、ジエチルエーテルを加えてアニリンをエーテルに溶かし抽出する。エーテル層と水層の2層に分離するので、エーテル層のみを取り出してエーテルを蒸発させると、アニリンが得られる。
: [[ファイル:Nitrobenzene-reduction.png|300x300ピクセル|アニリンの合成]]
=== アセトアニリド ===
アニリンに無水酢酸を作用させると、アミノ基がアセチル化され、'''アセトアニリド''' <chem>C6H5NHCOCH3</chem> を生じる。アセトアニリドは無色無臭(白色)の固体であり、解熱鎮痛剤の原料となる。
:<chem>C6H5NH2 + (CH3CO)2O -> C6H5NHCOCH3 + CH3COOH</chem>
: [[ファイル:アセトアニリドの合成式.svg|700x700ピクセル|アセトアニリドの合成式]]
この反応で生じた結合 <chem>-NH-CO-</chem> を'''アミド結合'''という。アミド結合は、タンパク質を構成する結合としても重要である。
== アゾ化合物 ==
アニリンに希塩酸を加えてアニリン塩酸塩とし、これを5℃以下に冷却しながら亜硝酸ナトリウム水溶液を少しずつ反応させると、塩化ベンゼンジアゾニウム <chem>[C6H5N2]+Cl-</chem> を生じる。
:<chem>C6H5NH3Cl + NaNO2 + HCl -> [C6H5N2]Cl + NaCl + 2H2O</chem>
: [[ファイル:塩化ベンゼンジアゾニウムの合成式.svg|700x700ピクセル|塩化ベンゼンジアゾニウムの合成式]]
このように、'''ジアゾニオ基''' <chem>-N+</chem><chem>#N</chem> を含む化合物を'''ジアゾニウム化合物'''と呼び、ジアゾニウム塩を生じる反応を'''ジアゾ化'''と呼ぶ。亜硝酸ナトリウム <chem>NaNO2</chem> は、塩酸と反応して亜硝酸 <chem>HNO2</chem> を生じ、これがアニリンと反応する。
塩化ベンゼンジアゾニウムは非常に不安定な物質であり、水溶液中で温度が上がると、フェノールと窒素に分解してしまう。そのため、5 ℃以下に冷却して反応を進行させる必要がある。
なお、塩化ベンゼンジアゾニウムの水溶液を加熱して分解させる反応は、フェノールの合成法の一つである。
:<chem>[C6H5N2]+Cl- + H2O -> C6H5OH + N2 ^ + HCl</chem>
=== ジアゾカップリング ===
分子中に'''アゾ基''' <chem>-N=N-</chem> をもつ物質を'''アゾ化合物'''と呼ぶ。
塩化ベンゼンジアゾニウム水溶液にナトリウムフェノキシド水溶液を加えると、{{ruby|''p''|パラ}}-ヒドロキシアゾベンゼン(''p''-フェニルアゾフェノール)を生じて橙赤色を呈する。このようにジアゾニウム塩と他の芳香族化合物からアゾ化合物を生成する反応を'''ジアゾカップリング'''と呼ぶ。ジアゾカップリングも低温で行う必要がある。
:<chem>[C6H5N2]+Cl- + C6H5ONa -> C6H5-N=N-C6H4-OH + NaCl</chem>
: [[ファイル:Pヒドロキシアゾベンゼンの合成式.svg|900x900ピクセル|Pヒドロキシアゾベンゼンの合成式]]
アゾ化合物は様々な色をもち、染料として用いられるものもある。
=== アゾ化合物の利用 ===
芳香族アゾ化合物は、一般に、黄色〜赤色、橙色の化合物であり、染料('''アゾ染料''')や顔料として用いられる。
[[ファイル:Methyl-orange-sample.jpg|サムネイル|メチルオレンジ]]
[[ファイル:Methyl_orange_for_beginner_student_jp.svg|600x600ピクセル|メチルオレンジ]][[ファイル:Methyl_orange_02035.JPG|左|サムネイル|200x200ピクセル|メチルオレンジの溶液]]
{{-}} また、メチルオレンジやメチルレッドもアゾ化合物であり、水溶液中の pH によって色が変わるので、pH 指示薬として用いられている。
== 芳香族化合物の分離 ==
芳香族化合物の混合物をジエチルエーテルに溶かし、酸や塩基の水溶液を加えて、塩にして水層に移すことにより、分離することができる。
{| class="wikitable"
|+ 芳香族化合物の分離
|-
! 化合物 !! 加える水溶液 !! 水層に移る理由
|-
| 芳香族アミン(アニリンなど) || 塩酸 || 塩(アニリン塩酸塩など)になる
|-
| 芳香族カルボン酸(安息香酸など) || 炭酸水素ナトリウム水溶液 || ナトリウム塩になる(<chem>CO2</chem> が発生する)
|-
| フェノール類 || 水酸化ナトリウム水溶液 || ナトリウムフェノキシドなどの塩になる(中和反応)
|}
芳香族カルボン酸は炭酸より強い酸であるから、炭酸水素ナトリウムと反応して塩になるが、フェノール類は炭酸より弱い酸であるから、炭酸水素ナトリウムとは反応しない。
:<chem>C6H5COOH + NaHCO3 -> C6H5COONa + H2O + CO2</chem>
水層に移った塩は、もとより強い酸や塩基を加えると、もとの化合物にもどる。たとえば、アニリン塩酸塩の水溶液に水酸化ナトリウム水溶液を加えるとアニリンが遊離し、安息香酸ナトリウムやナトリウムフェノキシドの水溶液に塩酸を加えると、それぞれ安息香酸やフェノールが遊離する。遊離した化合物は、再びジエチルエーテルを加えて抽出することができる。
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''例題7 芳香族化合物の分離'''
|-
|style="padding:5px"|
アニリン、フェノール、安息香酸、ニトロベンゼンを含むジエチルエーテル溶液がある。これを分液漏斗に入れ、次の操作を順に行った。水層 A〜C とエーテル層 D には、それぞれどの化合物が(塩として)含まれるか。
# 希塩酸を加えてよく振り混ぜ、水層 A とエーテル層に分けた。
# エーテル層に炭酸水素ナトリウム水溶液を加えてよく振り混ぜ、水層 B とエーテル層に分けた。
# エーテル層に水酸化ナトリウム水溶液を加えてよく振り混ぜ、水層 C とエーテル層 D に分けた。
|}
{{解答|例題7の解答}}
# 塩基性のアニリンだけが塩酸と反応し、アニリン塩酸塩となって水層 A に移る。
#: <chem>C6H5NH2 + HCl -> C6H5NH3Cl</chem>
# 炭酸より強い酸である安息香酸だけが炭酸水素ナトリウムと反応し、安息香酸ナトリウムとなって水層 B に移る。フェノールは炭酸より弱い酸であるから、反応しない。
# フェノールが水酸化ナトリウムと反応し、ナトリウムフェノキシドとなって水層 C に移る。
#: <chem>C6H5OH + NaOH -> C6H5ONa + H2O</chem>
# 酸とも塩基とも反応しない中性のニトロベンゼンは、エーテル層 D に残る。
答: A アニリン(アニリン塩酸塩)、B 安息香酸(安息香酸ナトリウム)、C フェノール(ナトリウムフェノキシド)、D ニトロベンゼン
なお、操作 2 と 3 の順序を逆にすると、水酸化ナトリウム水溶液を加えた段階で、安息香酸とフェノールがともに水層に移り、分離できない。
{{証明終わり}}
== 芳香族化合物の検出反応 ==
{| class="wikitable"
|+ おもな検出反応
|-
! 試薬・操作 !! 反応する化合物 !! 変化
|-
| 塩化鉄(III)水溶液 || フェノール類(フェノール、クレゾール、サリチル酸など) || 青紫〜赤紫色に呈色する
|-
| 臭素水 || フェノール || 2,4,6-トリブロモフェノールの白色沈殿を生じる
|-
| さらし粉水溶液 || アニリン || 赤紫色に呈色する
|-
| 硫酸酸性の二クロム酸カリウム水溶液 || アニリン || アニリンブラック(黒色)を生じる
|-
| 炭酸水素ナトリウム水溶液 || カルボン酸(安息香酸、サリチル酸など) || <chem>CO2</chem> を発生して溶ける
|-
| ジアゾ化したのち、ナトリウムフェノキシド水溶液 || アニリン || 橙赤色のアゾ化合物を生じる
|}
== 発展:ベンゼン環の共鳴 ==
[[ファイル:共鳴を知らない場合のO-キシレンの想定.svg|サムネイル|300x300ピクセル|共鳴を知らない場合のo-キシレンの想像図(じっさいとは、ちがう)。]]
[[ファイル:Benzol_Representationen.svg|サムネイル|600x600ピクセル|π電子の説明図、など(図中の文字はドイツ語)下段の右から2つめの図 Benzol Delokalisierte π-Orbitalwolke の青色で表現された電子のように、ベンゼン環では価電子がリング状に存在している。]]
ベンゼンの二置換体のひとつ、''o''-キシレンは、想像図のように2通りが考えられそうだが、じっさいには1通りしかない。
なぜなら、ベンゼン環の炭素原子間の結合は、すべて、単結合と二重結合の中間の状態になっているからである。
このように、1つの構造式では表せない分子を、複数の構造式の重ね合わせとして表す考え方を'''共鳴'''という。
ベンゼン環が共鳴しているということは、価電子(π電子)が、特定の2個の炭素原子間に束縛されず、ベンゼン環全体に広がって存在しているということである。このような現象を、電子の'''非局在化'''という。この性質により、ベンゼン環は安定性が高い。
{{コラム|ベンゼンの構造の提案|2=ベンゼンは、1825年にファラデーによって発見された。その分子式 <chem>C6H6</chem> は水素原子の割合が少ないにもかかわらず、ベンゼンはアルケンのような付加反応を起こしにくく、その構造は長く謎であった。1865年、ケクレは、6個の炭素原子が環をつくり、単結合と二重結合が交互に並ぶ構造を提案した。しかし、この構造では、''o''-キシレンのような二置換体に2種類の異性体が存在するはずなのに、実際には1種類しか見つからない。ケクレは、2つの構造の間で二重結合の位置が速く入れかわっていると考えた。現在では、上で述べたように、ベンゼン環のπ電子は環全体に広がっており、6本の結合はすべて等しいことがわかっている。}}
ベンゼン環が共鳴していることを明記したい場合、
[[ファイル:Benzene_circle.svg|左|72x72ピクセル|ベンゼン環]]
でベンゼン環を表記する場合もある。
{{-}} 共鳴している構造式は、下図のように両矢印でつないで書き、[ ]で囲って表す。
[[ファイル:O-キシレンの共鳴_1.svg|左|サムネイル|300x300ピクセル|O-キシレンの共鳴の書き方のひとつ。]]
{{-}}
== 発展: ベンゼン環の置換基の配向性 ==
{| class="wikitable"
|+置換基の配向性
!オルトパラ配向性
| <chem>-OH</chem>、<chem>-CH3</chem>、<chem>-NH2</chem>、<chem>-NHCOCH3</chem>、<chem>-Cl</chem>、<chem>-Br</chem>、<chem>-OCH3</chem>
|-
!メタ配向性
| <chem>-NO2</chem>、<chem>-COOH</chem>、<chem>-SO3H</chem>、<chem>-COCH3</chem>、<chem>-CHO</chem>
|}
=== オルト・パラ配向性 ===
[[ファイル:オルトパラ配向性.svg|左|サムネイル|600x600ピクセル|オルトパラ配向性]]
ベンゼンの一置換体は、置換基の種類によって、オルト位とパラ位での置換を起こしやすいものと、メタ位での置換を起こしやすいものがある。
たとえば、トルエンをニトロ化すると、''o''-ニトロトルエンや ''p''-ニトロトルエンが多く生成される。このようにオルト位とパラ位での置換反応が起きやすい置換基をオルト・パラ配向性という。
これは、オルト・パラ配向性の置換基がベンゼン環に電子を供与することによって、オルト位
とパラ位で反応が起きやすくなるためである。ただし、ハロゲンは、ベンゼン環の反応性を下げるが、オルト・パラ配向性を示す。{{-}}
=== メタ配向性 ===
[[ファイル:メタ配向性.svg|左|サムネイル|600x600ピクセル|メタ配向性]]
メタ配向性の置換基のベンゼン一置換体は、オルト位とパラ位での置換反応を起こ'''しにくい'''ため、メタ位での置換反応を起こしやすくなる。
:メタ配向性の置換基は、ベンゼン環の電子を吸引し、反応が起きにくくなる。そのため、相対的にメタ位での置換反応が多くなる。
<references />
{{DEFAULTSORT:ほうこうそくかこうふつ へんせん}}
[[Category:高等学校化学]]
otv6gou5mjb8cnnj0elnnxw2dh6a12y
中学受験社会/歴史/上巻
0
26149
304823
295093
2026-10-17T18:20:43Z
PacmanD
92813
([[c:GR|GR]]) [[c:COM:FR|File renamed]]: [[File:2004年08月25日竪02.JPG]] → [[File:2004年08月25日 登呂遺跡の復元竪穴状平地建物.jpg]] [[c:COM:FR#FR2|Criterion 2]] (meaningless or ambiguous name) · 名前が日付以外何を指しているのか解りづらいです。
304823
wikitext
text/x-wiki
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|中学受験参考書|中学受験社会|中学受験社会/歴史|frame=1}}
[[{{PAGENAME}}]]では、中学受験社会の歴史分野について、太古~平安時代を解説します。
== はじめに ==
=== 時代の表し方 ===
; 時代
: 歴史学習で使う時代の表し方には、まず「時代」があります。これは、「奈良時代」「江戸時代」などと、大きなことがら(都や天皇が変わる)ごとに時代を変えていく表し方です。
; 西暦
: {{ruby|西暦|せいれき}}は、イエス・キリストが生まれたとされる年を西暦1年として表します。今は西暦{{CURRENTYEAR}}年です。西暦1年より前の年を「{{ruby|'''紀元前'''|きげんぜん}}(B.C.) 〇年」と表します。なお、西暦1年以降の年を「{{ruby|'''紀元後'''|きげんご}}(A.D.)〇年」と表します。
; 世紀
: 「{{ruby|世紀|せいき}}」とは、100年ごとに区切って、年を数える単位です。西暦1年から西暦100年までが1世紀です。西暦101年から西暦200年までが2世紀です。西暦2001年から西暦2100年までを21世紀と言います。たとえば、105年は2世紀、1853年は19世紀です。
===単位の表し方===
*米に関する単位
*長さと面積の単位
*お金に関する単位
== {{ruby|旧石器|きゅうせっき}}時代 ==
=== {{ruby|氷河期|ひょうがき}} - 1万年前のくらし ===
1万年くらい前までは、地球は'''{{ruby|氷河期|ひょうがき}}'''と言って、今よりもずっと冷えていたのです。その結果、海水面は今よりも低く、ユーラシア大陸と日本は陸続きだったのです。そのため、大陸の北の方から'''マンモス'''や'''オオツノジカ'''が、南の方から'''ナウマンゾウ'''などの陸上動物が日本にやってきました。これらの動物の化石が、日本列島でも発見されています。
[[File:Sinomegaceros yabei - National Museum of Nature and Science, Tokyo - DSC06925.JPG|thumb|left|200px|オオツノシカの{{ruby|骨格標本|こっかくひょうほん}}]]
古い時代の物が発掘される場所を '''{{ruby|遺跡|いせき}}''' と言います。長野県の {{ruby|[[w:野尻湖遺跡|野尻湖遺跡]]|のじりこいせき}} などから、ナウマンゾウの化石が見つかっています。この発見により、ユーラシア大陸と日本が陸続きで、ナウマンゾウやオオツノジカが渡って来たことが証明されました。
これらの動物達と同じくらいの時期か、しばらくあとに、人間もやってきたと考えられています。それが日本人の{{ruby|[[wikt:祖先|祖先]]|そせん}}です。
{{clear}}
=== {{ruby|旧石器時代|きゅうせっきじだい}} ===
[[ファイル:JapanesePaleolithic VariousChippedStoneTools.jpg|サムネイル|石同士を打って作った打製石器]][[File:National park stone tools.jpg|thumb|440px|外国での石器の例]]
'''{{ruby|石器|せっき}}'''といって、石を砕いてとがらせた物や、石をみがいて作った物が見つかっています。おそらく、石器は動物の狩りをしたり、野菜や果物をとったりするときなどに利用されたのだろうと考えられています。
石を打ち砕いて作ったと思われる石器を'''<span style="color:red">{{ruby|打製石器|だせいせっき}}'''</span>と言います。打製石器を多く使っていた時代を '''{{ruby|旧石器時代|きゅうせっきじだい}}''' と言います。この旧石器時代は、後述する縄文時代よりも、さらに古い時代です。縄文時代の石器には、旧石器時代とは違い、{{ruby|磨製石器|ませいせっき}}という、石同士を磨き合わせて作った石器があります。旧石器時代には、まだ磨製石器はありません。また、土器が製造されてなかったため、この時代は、「'''先土器時代'''」や「'''無土器時代'''」とも呼ばれます。
==== {{ruby|岩宿遺跡|いわじゅくいせき}} ====
[[ファイル:ObsidianOregon.jpg|thumb|250px|アメリカ合衆国オレゴン州レイク郡で採取された黒耀石]]
群馬県の '''岩宿遺跡''' からは、一万年以上前にできた地層から打製石器のかけらが見つかっています。岩宿遺跡の石器は、'''{{ruby|相沢忠洋|あいざわただひろ}}'''という青年により1949年に発見されました。
相沢により、群馬県の関東ローム層の地層から、石器のような{{ruby|黒耀石|こくようせき}}の欠片が発見されました。相沢は、この破片を大学に調査してもらおうと思い、{{Ruby|明治|まいじ}}大学に石の破片の調査を依頼しました。学者の調査で、この遺跡が一万年以上前の遺跡であることが分かり、日本に今までなかったとされた旧石器時代があったことが証明されました。
== {{ruby|縄文|じょうもん}}時代――土器の使用 ==
[[File:Jomon Vessel with Flame-like Ornamentation, attributed provenance Umataka, Nagaoka-shi, Niigata, Jomon period, 3000-2000 BC - Tokyo National Museum - DSC05620.JPG|thumb|250px|縄文土器]]
地球の氷河期から数千年経つと、氷河期が終わり、地球は暖かくなり、海面は上昇し、日本列島は海に周囲を囲まれた島になりました。
このころ、日本列島に住んでいる人々は土器 を作りだしました。その土器に縄目の文様(模様)がついているので、この土器は {{ruby|'''縄文土器'''|じょうもんどき}} と呼ばれます。
今から約1万6,500年前 (紀元前145世紀) から、今から約3,000年前 (紀元前10世紀) あたりまでの時代を、<span style="color:red">{{Ruby|'''縄文時代'''|じょうもんじだい}}</span>と言います。
[[File:Yoshinogari-iseki tateanashiki-juukyo.JPG|thumb|250px|right|弥生時代の竪穴建物(復元、吉野ヶ里遺跡)。]]
縄文時代は、{{ruby|'''竪穴建物'''|たてあなたてもの}} (竪穴住居)といって、地面に穴をほりさげたあとに、柱を立てて草ぶきの屋根をかけた住居に住んでいました。かつては{{ruby|'''竪穴式住居'''|たてあなしきじゅうきょ}}という呼び方もありました。
[[File:Kasori midden preserve north.jpg|thumb|200px|{{ruby|加曽利貝塚|かそりかいづか}}の北貝層断面]]
縄文人の{{ruby|集落|しゅうらく}}があったと考えられる場所からは、貝がらなどを含む、生活ごみが発掘されました。このような場所を<span style="color:red">'''{{ruby|貝塚|かいづか}}'''</span> と言います。
前述しましたが、縄文時代の石器には、打製石器の他に、石同士で表面を磨き合わせて作った <span style="color:red">{{Ruby|'''磨製石器'''|ませいせっき}}</span>が見つかっています。磨製石器は、石の{{ruby|槍先|やりさき}}や、石の矢じり、{{ruby|斧|おの}}などに使われていました。
動物の骨でつくった <span style="color:red">'''{{ruby|骨角器|こっかくき}}'''</span> という刃物も、みつかっています。{{ruby|釣り針|つりばり}}や もり (水中の魚を突き刺す武器)などに使用されたと考えられています。
[[Image:JomonStatue.JPG|thumb|right|200px|亀ヶ岡遺跡で出土した土偶]]
縄文時代の遺跡から、<span style="color:red">{{Ruby|'''土偶'''|どぐう}}</span>という、女性のような形の、土を焼きかためた人形が見つかる場合があります。土偶は、食料が増えることを{{Ruby|祈|いの}}ったり、女性の安産を祈ったものだと考えられていますが、本当なのかは不明です。
有名な貝塚として、{{ruby|大森|おおもり}}貝塚が知られています。明治時代にアメリカ人のエドワード・モースが大森貝塚を発見しました。この大森貝塚の発見がきっかけとなり、日本各地で貝塚の調査や発掘が始まりました。それ以外にも、福井県の{{ruby|鳥浜|とりはま}}貝塚や千葉県の{{ruby|加曽利|かそり}}貝塚があります。
=== {{ruby|三内丸山遺跡|さんない まるやま いせき}} ===
[[ファイル:Reconstructed Pillar Supported Structure.jpg|right|thumb|300px|六本柱建物 (復元) ]]
青森県の '''三内丸山遺跡''' からは、栗の木を、{{ruby|栽培|さいばい}}した形跡が見つかっています。また、多くの土器や石器のかけらもみつかっています。大型の{{ruby|掘立て柱|ほったてばしら}} の穴も見つかっています。掘立て柱の用途はまだ分かっていません。ヒスイの玉や、黒曜石で出来た刃物のようなものも見つかっています。ところが、ヒスイはこの地ではとれず、新潟県の{{ruby|糸魚川|いといがわ}}などの他の土地で取れるので、他の地域と{{ruby|交易|こうえき}}があったと考えられています。
この三内丸山遺跡は、縄文時代を知る遺跡として代表的な遺跡です。
{{Clear}}
==== {{ruby|屈葬|くっそう}} ====
[[ファイル:Oguruwa shell mounds-Flexed burial.jpg|300px|屈葬]]
縄文人の死者の骨は、手足を折り曲げて、{{ruby|葬|ほうむ}}られている遺体が多く見つかっています。このような葬り方を{{ruby|屈葬|くっそう}}と言います。これは、死者から発生すると考えられていた悪霊を寄せ付けないようにするためと考えられています。
{{clear}}
== {{ruby|弥生|やよい}}時代――ムラからクニへ ==
〜'''米づくりがはじまる'''〜<br>
[[Image:YayoiJar.JPG|right|250px|thumb|弥生式土器。<br>紀元1世紀から3世紀に製作されたもの。]]
紀元前の5世紀ごろ、ユーラシア大陸の中国 や朝鮮半島あたりの人々から、米による稲作 が、日本に伝わりました。
米作りは、まず西日本に伝わり、西日本から東日本へと、米作りが広がっていき、東北地方まで広がりました。
この時代の農具の多くは、まだ、木製 です。ただし、米作りとともに鉄器 の技術 も日本に伝わっているので、一部では鉄を用いた農具も見つかっています。
穂から米をとるのに、{{Ruby|石包丁|いしぼうちょう}} が、使われました。
* 弥生土器
また、このころ、土器は、縄文土器よりも うすくて かたい <span style="color:red">{{Ruby|'''弥生土器'''|やよいどき}} </span>を作るようになりました。かつては{{Ruby|'''弥生式土器'''|やよいしきどき}} と言う呼び方もありました。「弥生」とは、学者が発見した場所が、東京の弥生町 で見つかったので、「弥生土器」と、よばれています。
縄文土器と弥生土器の違いは、弥生時代のころには、土器をつくる技術が進歩したので、土器の形が 変わったのだろうと考えられています。
* {{Ruby|高床倉庫|たかゆかそうこ}}
米の保管には、<span style="color:red">{{Ruby|'''高床倉庫''' |たかゆかそうこ}}</span>が使用されました。かつては{{Ruby|'''高床式倉庫'''|たかゆかしきそうこ}} と言う呼び方もありました。
高床倉庫が高いのは、ねずみなどの動物が入りづらくするためというのが主な理由だろうと考えられています。風通しをよくし、湿気を逃すため、という理由もあるでしょう。ねずみの害を防ぐという理由の有力な根拠として、地面から床までの柱の、柱の頂上に「ネズミがえし」がついていて、動物などが登れないように工夫した高床倉庫が見つかっています。
<gallery widths="200px" heights="200px">
Image:Takayukasikisouko.JPG|高床倉庫 妻側より (復元、神奈川県、大塚・{{Ruby|歳勝土|さいかちど}}遺跡)
File:Yoshinogari-iseki takayukashiki-souko.JPG|高床倉庫 (復元、吉野ヶ里遺跡)
</gallery>
弥生時代の多くの住まいは、竪穴建物です。
{{clear}}
* 金属器
[[ファイル:DotakuBronzeBellLateYayoi3rdCenturyCE.jpg|thumb|銅鐸 (日本の青銅器)]]
大陸や朝鮮半島から米作りがつたわるととも)に、{{Ruby|青銅器|せいどうき}} や鉄器 などの金属器 が伝わりました。そして、日本でも弥生時代中に、金属器がつくられるようになりました。
青銅 とは、銅 と すず(金属のひとつ) とを溶かしてまぜあわせた金属でつくられた、合金 です。
青銅器には、銅剣 や、{{Ruby|銅矛|どうほこ}} 、{{Ruby|銅鐸|どうたく}} 、{{Ruby|銅鏡|どうきょう}} などがあります。
<gallery widths="200px" heights="200px">
File:Koujindani Remains 03.JPG|銅矛と共に出土した銅鐸 (島根県・出雲市の{{ruby|荒神谷|こうじんだに}}遺跡) 。古墳時代の遺跡。
ファイル:YayoiBronzeSpearTip1-2ndCenturyKyushu.jpg|弥生時代の銅矛 (九州で出土、1–2世紀)
</gallery>
青銅器は、おもに祭りに使われました。一方、鉄器は、農具や武器などの実用品に使われました。
* {{Ruby|登呂遺跡|とろいせき}}
[[File:2004年08月25日 登呂遺跡の復元竪穴状平地建物.jpg|thumb|240px|right|登呂遺跡。復元、竪穴状平地建物。]]
静岡県の{{Ruby|登呂|とろ}}遺跡 からは、竪穴建物に似た平地建物と、高床倉庫が見つかっています。水田の跡もあります。水路やあぜ道は、矢板 という板で、仕切られています。
* {{Ruby|吉野ケ里遺跡|よしのがりいせき}}
[[File:Yoshinogari-iseki zenkei.JPG|thumb|440px|right|吉野ケ里遺跡。遠景]]
これは佐賀県吉野ヶ里町にあります。
まわりを{{Ruby|濠|ほり}} でかこまれた {{Ruby|'''環壕集落'''|かんごうしゅうらく}} である。
人骨からは矢尻が刺さっているものも見つかっています。これらのことから、人々のあいだで争いがあったことが予想できます。
堀の内側からは、多くの高床倉庫が見つかっています。
おそらくは、米作りによって、食料生産が増えたので人口が多くなって、それぞれの集落で、多くの人口を養うために米の生産量を増やす必要が生じたため、土地や水が必要になり、なので、集落どうしで土地や水をめぐっての争いが起きたのだろうと思われています。
このような争いが、身分の差を作っていった理由の一つだとも思われています。
この吉野ケ里遺跡は、弥生時代を知る遺跡として、代表的な遺跡です。
=== {{Ruby|『漢書』地理誌|かんじょちりし}} ===
~中国の歴史書に見る日本~
この頃の日本にはまだ文字がありません。ですが、中国の王朝の国には、文字がありました。
その中国の歴史書から、日本の様子も、分かります。
中国の、今の中華人民共和国のあたりに、紀元前1世紀ごろの当時あった帝国の'''漢''' という国の歴史書の『漢書』の中の『地理誌』では、日本の弥生時代のころのようすについても、記述が書かれています。
: (漢書にかかれた漢は、前漢である。前漢については後述。漢には、時代によって前漢と後漢がある。)
その頃、漢の人は日本を<span style="color:red">{{Ruby|'''倭'''|わ}} </span>と呼び、日本人を{{Ruby|'''倭人'''|わじん}}と呼んでいます。
漢書によると、そのころの、日本は、100あまりの国に分かれており、漢の王朝へ、定期的に貢物 を持って、あいさつ に やってくるそうです。
日本は、{{Ruby|楽浪郡|らくろうぐん}}(今の朝鮮半島) のむこうにあるようです。
{{コラム|中国の王朝の変化|
漢も、最初からあったわけではありません。
:{{Ruby|夏|か}} :古代文明の{{Ruby|黄河|こうが}}文明があったあと、しばらくして{{Ruby|夏|か}}という国がありました。
:{{Ruby|殷|いん}} :そのあと、紀元前1500年ごろに、殷 という国が出きました。
:{{Ruby|周|しゅう}} :つぎに、紀元前1100年ごろに、周 が殷をほろぼします。
:紀元前8世紀に、その周が分裂しました。
:{{Ruby|秦|しん}} :紀元前221年に、秦 が統一しました
:{{Ruby|漢|かん}} :その秦 が漢 に滅ぼされました。
漢は一度ほろびました。そのあと再び漢の王朝になったので、前漢 と後漢 とに分けられました。
:さらに後漢が分裂しました。
:三国時代 :多くの諸国の中から有力な勢力が三つ勝ち残った三国時代になりました。
三国時代とは、「三国志」などで有名な、{{Ruby|魏|ぎ}}・{{Ruby|呉|ご}}・{{Ruby|蜀|しょく}} の三国の時代です。
三国の中で魏が、もっとも強く、最終的に魏が、三国を統一します。統一したあとの王朝の名は「魏」ではなく、別の名前なのですが、まだ覚えなくても良いです。
ここまで、国名だけを、まとめると
「殷 、周 、秦 、漢 、三国時代 」となります。
}}
後漢の歴史書の{{Ruby|『後漢書』東夷伝 |ごかんじょ とういでん}}によると、倭の{{Ruby|奴国|なこく}}の王が、後漢に外交の使者をおくり、日本から漢に貢物を送ったことが記されています。
{{Ruby|奴|な}}とは、100あまり、あった国のうちの一つだと、思われています。
[[File:King of Na gold seal.jpg|260px|thumb|left|金印 (きんいん) 。漢委奴国王印]]
[[File:King of Na gold seal imprint 1935.jpg|thumb|right|金印の印文。漢委奴國王印文]]
漢の皇帝の{{Ruby|光武帝|こうぶてい}} は、日本の奴国王に<span style="color:red">'''金印'''</span>を授けたといいます。
金印は、江戸時代の1784年に、今の福岡県の博多湾の{{Ruby|志賀島|しかのしま}}で、発見されています。金印の印の面には、文字がほられ、「漢委奴国王」と、ほられています。「漢委奴国王」は、「かん の わ のな こくおう」などと読みます。
{{clear}}
=== {{ruby|邪馬台国|やまたいこく}} ===
* {{Ruby|『魏志』倭人伝 |ぎし わじんでん}}
中国大陸の3世紀ごろの歴史書の '''『魏志』倭人伝''' では、日本の3世紀ごろは、国の数が30あまりになっていることが分かります。東夷伝では100あまりの国が、魏志倭人伝では30ほどの国まで減っているので、このあいだの長い年月に、統一が進んでいったことが分かります。
そして、日本にこれら30あまりの国を従えた <span style="color:red">'''{{ruby|邪馬|やま}}台国'''</span> がありました。邪馬台国は、名を <span style="color:red">{{Ruby|'''卑弥呼'''|ひみこ}}</span> という女の人物が治めていました。
倭人伝によると、倭 の国では、もともとは男の王をたてていたようですが、戦争が続いたので、卑弥呼を女王にしたようです。
邪馬台国の場所は、現在まだ不明であり、近畿説と九州説があります。
もし、倭人伝の記述どおりの方向に場所を特定しようとすると、九州の南の太平洋の海の上に出てしまい、倭人伝の方向の記述が、あてになりません。
邪馬台国の場所の有力な説は、九州北部にあったという説と、奈良県の{{Ruby|大和|やまと}}にあったという説です。
邪馬台国は、魏に、外交の使いを送ります。
卑弥呼は、魏の皇帝から、 '''{{Ruby|親魏倭王|しんぎわおう}}'''という称号の入った<span style="color:red">'''金印'''</span> と、そのほか、100枚の銅鏡と、絹の織物や、毛織物などを、日本は受け取りました。
倭人伝によると、卑弥呼の政治は、まじないや占いによるものだったようです。卑弥呼は、宮殿にこもりきりで、人々の前には、ほとんど姿を見せなかったようです。卑弥呼の弟が、宮殿に出入りをしていて、卑弥呼からの指示を人々につたえていたらしいです。実務は、弟など、卑弥呼でない人物が行っていたようです。
卑弥呼が死ぬと、大きな墓が作られ、また、100人あまりの{{Ruby|奴隷|どれい}} が、いっしょに埋められました。
倭人伝により、当時の日本の様子が分かります。
身分の差は、人々のあいだに、すでにありました。道端で身分の違う者どうしが出会うと、身分のひくい側のほうが道をゆずったといいます。
服装は、女性は{{Ruby|'''貫頭衣'''|かんとうい}} という、布のまんなかに、顔をだすための穴をあけただけの服を着ていたようです。
また、税の制度があると、倭人伝に書かれています。{{Ruby|市|いち}}も、開かれているようです。
== {{Ruby|古墳|こふん}}時代 ==
[[画像:NintokuTomb Aerial photograph 2007.jpg|thumb|前方後円墳。{{Ruby|仁徳天皇陵|にんとくてんのうりょう}}と思われている{{Ruby|大仙|だいせん}}古墳<br />大阪府堺市]]
3世紀から4世紀ごろになると、王や豪族の間で大きな墓が作られ始めました。
このような、大きな王などをほうむった大きな墓を <span style="color:red"><big>古墳</big></span> といいます。特に近畿地方や瀬戸内海の沿岸に見られました。
この、3世紀ごろの時代から、7世紀ごろまでの時代を {{Ruby|古墳|こふん}}時代 と言います。
古墳には、いろいろな形のものがあります。円形に盛り上がった古墳を円墳と言います。四角く盛り上がった古墳を方墳と言います。円墳と方墳があわさったような、かぎ穴のような形の古墳を <span style="color:red"><big>前方後円墳</big></span>(といいます。
大阪府の堺市にある <big>{{Ruby|大仙|だいせん}}(大山)古墳</big> は、日本で最大の面積の古墳です。
大仙古墳は、まわりが3重の{{Ruby|濠|ほり}}で、かこまれています。
ほかの場所でも、古墳が発見されています。代表的な古墳としては、
:{{Ruby|稲荷山|いなりやま}}古墳…埼玉県
:{{Ruby|五色塚|ごしきづか}}古墳…兵庫県
:{{Ruby|高松塚|たかまつづか}}古墳…奈良県明日香村
:{{Ruby|江田船山|えだふなやま}}古墳…熊本県
などがあります。
* 古墳の副葬品
[[File:KofunSoldier.jpg|thumb|left|140px|はにわ。武装男子立像]]
[[画像:HaniwaHorse.JPG|thumb|190px|はにわ。馬形埴輪]]
古墳からは、鏡や玉、剣などの副葬品が、発見されている。他にも、<span style="color:red"><big>はにわ</big></span>(埴輪)という、土を焼いて作られた人型や馬型などの置き物が、発見されています。
{{clear}}
==== 大和朝廷 ====
奈良県の{{Ruby|大和|やまと}}地方には、大きな古墳が多い。このことから、この大和の地方に、有力な勢力があったと、考えられている。この奈良地方の有力な豪族たちの政治勢力を '''大和政権''' といます。
この大和政権の政府を <span style="color:red"><big>大和朝廷</big></span>(やまと ちょうてい) といい、その最高権力者を <span style="color:red"><big>大王</big></span>(おおきみ) といいます。
大王(おおきみ)の一族は、後の天皇とよばれる一族である。
{{コラム|キビとイズモの王朝|
当時の日本には、地方によっては、ヤマト政権の他にも有力な豪族の治める王国があった。今でいう島根県あたりの出雲や、今でいう岡山県あたりの吉備での、ヤマト以外の豪族たちの政権である。これらの政権を、大和朝廷や大和政権に対応して、出雲のほうは出雲政権とかイズモ政権とかイズモ王国、吉備のほうは吉備政権やキビ政権や吉備王国やキビ王国などと呼ぶこともあります。
最終的に、のちの時代に日本を支配することになったのは奈良を中心とする政権の大和朝廷である。
イズモ政権やキビ政権については、まだ学者たちが研究中のこともあり、よく分かっていないことが多い。
}}
[[File:Inariyama sword.JPG|thumb|350px|right|まんなかの剣が発掘された金錯銘鉄剣]]
埼玉県の稲荷山古墳から見つかった鉄剣には、'''ワカタケル'''大王の名が刻まれた文がありました。文を読むと、この地方の王は、ワカタケル大王に使えていたようです。
熊本県の {{ruby|江田船山|えだふなやま}}古墳 にも、おなじ名前の刻まれた鉄刀があり、ワカタケル大王の支配する領域が、関東地方から九州までの広い範囲に、およんでいたことが、分かります。
正確に言うと、当時はまだ漢字しか文字がなかったので、稲荷山の鉄剣には115字の漢字が刻まれており、その漢字の中に「{{Ruby|獲加多支鹵|ワカタケル}}大王」という名が、刻まれています。
また江田船山古墳で発掘されたの鉄刀には、「獲□□□鹵大王」と, 一部が読めなくなっていますが、同じ名前が刻まれています。
後の日本の神話の書の『古事記』や、後の歴史書の『日本書紀』などから「ワカタケル」という人物の存在が知られているので、鉄剣などがワカタケルの存在を裏付ける証拠になったのです。日本書紀に「{{ruby|幼武|わかたけ}}天皇」という記述があるのです。
ワカタケル大王とは、 {{Ruby|雄略|ゆうりゃく}}天皇 だということが分かっています。
* 氏と姓
日本国内では、日本国内での大和朝廷による勢力拡大が進むにつれ、豪族において、{{Ruby|氏|うじ}}と{{Ruby|姓|かばね}}とによる、後の氏姓制度が作られました。
'''氏'''は、主に、血のつながった者どうしの集団で, たとえば, {{Ruby|蘇我氏|そがし}}・{{Ruby|物部|もののべ}}氏・{{Ruby|大伴|おおとも}}氏などが, '''姓''' とは、政治の地位による称号で、たとえば「{{Ruby|臣|おみ}}」や「{{Ruby|連|むらじ}}」という姓があります。
* 渡来人
5世紀ごろ、朝鮮半島や中国大陸から、多くの人が日本に渡ってきて、日本に移り住んだ。このように、古い時代に外国から日本に移り住んだ人たちを {{Ruby|渡来人|とらいじん}} といいます。
この5世紀頃の渡来人により、外国の文化が日本に多く伝わりました。
* '''漢字'''が日本に伝わりました。
* '''{{Ruby|儒教|じゅきょう}}''' が伝わりました。儒教とは、中国の{{Ruby|孔子|こうし}}が始めた、政治や道徳の思想です。
* 用水路の土木技術や、{{Ruby|機|はた}}織りの技術、農具や工具や武器などをつくる技術など、新しい技術も、日本に伝わります。
* 仏教の伝来
また、538年に 仏教も、外国から伝わりました。
仏教は、紀元前5世紀ごろのインドで、 {{ruby|釈迦|しゃか}}が始めました。
{{clear}}
== {{Ruby|飛鳥|あすか}}時代 ==
~{{Ruby|聖徳太子|しょうとくたいし}}の登場~
{| class="wikitable" style="float:right"
|+ 聖徳太子のころ
| 年 || 年令 || 太子の行ったこと || 社会のできごと
|-
! style="text-align: left;" colspan="4" | 6世紀
|-
| || || || 豪族どうしが争う
|-
|574 || 1才 || 聖徳太子が生まれる ||
|-
| || || || {{Ruby|蘇我|そが}}氏が権力をにぎる
|-
|589 || || || {{Ruby|隋|ずい}}が中国を統一する
|-
|593 || 20才 || 聖徳太子が摂政となる ||
|-
! style="text-align: left;" colspan="4" |7世紀
|-
|603 || 30才 || 冠位十二階を定める ||
|-
|604 || 31才 || 十七条の憲法を定める ||
|-
|607 || 34才 || 小野妹子を遣隋使として送る ||
|-
|618 || || || 隋がほろんで{{Ruby|唐|とう}}となる
|-
|622 || 49年 || 聖徳太子がなくなる ||
|-
|645 || || || 大化の改新
|-
|}
日本では、6世紀ごろから 豪族の影響力が強まり, 豪族同士の戦いや争いも出てきました。
後に、{{ruby|蘇我|そが}}氏が{{Ruby|物部|もののべ}}氏と争います。
蘇我氏は、仏教などの渡来人の伝える外国文化の受け入れに積極的でした。いっぽう、物部氏は、仏教には反対でした。
[[ファイル:Prince Shotoku with Two Princes by Kano Osanobu 1842.png|180px|thumb|聖徳太子が描かれた肖像画。まんなかの、一番、背の高い人物が聖徳太子。]]
推古天皇は、<big>摂政</big>(せっしょう)として<span style="color:red"><big>聖徳太子</big></span>(しょうとく たいし)という人物をたて、聖徳太子に、朝廷の強さをますための、あたらしい法律や政治のしくみをつくらせる。
摂政とは、天皇のかわりに、政治の実務を行なうものです。天皇がなんらかの理由で政治の実務が行えない時に、摂政が、たてられます。歴史的には、天皇が幼い場合や、天皇が女性の場合に、摂政がたてられることが多いです。
聖徳太子は 厩戸皇子(うまやどの おうじ) とも言われます。
聖徳太子は蘇我馬子と協力し、これらの改革をすすめました。
聖徳太子らによる改革では、'''<span style="color:red">冠位十二階の制</span>'''と、<span style="color:red"><big>十七条の憲法</big></span>(じゅうななじょう の けんぽう)があります。
* 冠位十二階の制(かんいじゅうにかい の せい)
冠位十二階の制は、家柄に関係なく有能な役人を採用するための制度です。能力や手柄(てがら)によって、役人に位(くらい)が与えられます。位は、一代かぎりです。
役人の位を12段階に分けたので、このような名前で呼ばれます。これ以前は、家柄によって位が与えられたのが、あらためられました。
* 十七条の憲法(じゅうななじょう の けんぽう)
役人の心がまえを、記したものです。豪族などに対して、役人としての心がまえを述べたものでしょう。
内容を現代風に訳すと、およそ、次のようなことが書かれています。
:1条 :争いをやめ、'''仲良くしなさい'''。
:2条 :仏教を'''保護'''しなさい。
:3条 :天皇の命令には、'''したがい'''なさい。
:12条 :百姓(ひゃくしょう)などの民(たみ)から、'''かって'''に税や貢物(みつぎもの)をとっては、いけません。
:17条 :重要なことを決めるときには、'''話し合い'''で決めなさい。
その他にも、いろんなことが書かれていて、全部で17条あるので、十七条の憲法と言います。
もともとの文は漢文で書かれています。この聖徳太子の時代には、まだ、ひらがなが、ありません。のちの歴史書の『日本書紀』(にほんしょき)に、十七条の憲法の原文があります。
原文は、けっこう長いです。
:(小学生は、原文をおぼえなくてもいいです。)
原文に、読みやすいように送り仮名をつけ、記述の一部を抜粋(ばっすい)すると、
:一(いち)に曰く(いわく)、和(わ)を以て貴し(とうとし)と為し(なし)、忤(さか)ふること無きを宗(むね)とせよ。(後略)<br/>
:二に曰く、篤く(あつく)三宝(さんぽう)を敬へ(うやまえ)。三宝とは仏(ほとけ)・法(のり)・僧(ほうし)なり。(後略)<br/>
:三に曰く、詔(みことのり)を承り(うけたまわり)ては必ず謹(つつし)め、君をば天(あめ)とす、臣をば地(つち)とす。(略)<br/>
(中略)
:十二に曰く、国司(くにのみこともち)・国造(くにのみやつこ)、百姓(おおみたから)に斂る(おさめる)ことなかれ。国に二君(ふたりのきみ)非(な)く、民に両主(ふたりのあるじ)無し、率土(くにのうち)の兆民(おおみたから)、王(きみ)をもって主となす。(略)<br/>
(中略)
:十七に曰く、夫れ事独り断むべからず。必ず衆(もろもろ)とともに宜しく論(あげつら)ふべし。(後略)
といったふうに、書かれています。
十七条の憲法は、「憲法」と言っても、現代の日本の「日本国憲法」(にほんこく けんぽう)のような、他の法律の基本となる民主主義の理念や、日本国の国家理念がふくまれたものとは、ちがうので、混同しないでください。
聖徳太子らの行った重要な政策には、外交政策も、あります。中国を支配していた<big>隋</big>(ずい)という帝国(ていこく)との外交です。ある国と、別の国とが、政治の取り引きをすることを外交と言います。
607年に、外交の使者として '''<span style="color:red">{{Ruby|小野妹子|おののいもこ}}</span>'''たちを 隋に送りました。<span style="color:red"><big>遣隋使</big></span>(けんずいし)の派遣(はけん)です。
なお、小野妹子は男です。
{{Ruby|隋|ずい}}に外交の使者を派遣するので「遣隋使」といいます。
外交の結果、日本は隋と国交を結びます。国交とは、それまで、つきあいのなかった2つの国どうしが、平和に、かかわりを持ち始めることです。
また、隋の文化や制度は日本よりも進んでいたので、多くの文化や制度を、日本は取り入れます。
隋と国交をむすぶとき、日本は、隋と日本とを対等の立場で、国交を結ぼうとします。そして、対等の立場で国交をむすぶことに、日本は成功します。
それ以前の外交では、中国大陸の帝国には、周辺国が貢物を持ってきて、中国の帝国の属国として外交をむすぶことが、ふつうでした。
当時の隋は、朝鮮半島の{{Ruby|高句麗|こうくり}}と敵対していたので、高句麗と日本が協力することを恐れたのだろう、と言われています。
隋の歴史書である『隋書』(ずいしょ)に、この妹子との外交に関する記述があります。
:(小学生は原文を覚えなくてもいいです。)
[[ファイル:Sui-yangdi.jpg|thumb|隋の皇帝である煬帝(ようだい)。真ん中の人物が楊帝。]]
隋の皇帝へと、小野妹子が差し出した国書(こくしょ)には、
「日出ずる処(ひ いずるところ)の天子(てんし)、書(しょ)を日(ひ)没する処(ぼっするところ)の天子に致す(いたす)。恙無きや(つつがなきや)」 ※おぼえなくて良い
(原文 :日出處天子致書日沒處天子無恙) ※おぼえなくて良い
とあります。両国とも「天子」(てんし)という表現を用いていることに注目してください。つまり、日本の天皇と、中国大陸の皇帝を、同じ地位(ちい)と見ているわけです。
ほかにも、日本のことを「日出ずる処」と書いて、隋(ずい)を「日没する処」と書いてあります。
当初、この日本からの国書を読んだ隋の皇帝の煬帝(ようだい)は、日本を無礼な国だと思い激怒したといいます。
『隋書』には、漢文で書かれています。これを日本語に読み下すと
:訳 :帝は国書を読んだが、不満であった。部下の外交官に言うには「日本からの書は、無礼である。二度と私に日本からの国書を見せるでない。」
と、なります。
ですが、隋の皇帝・{{Ruby|煬帝|ようだい}}は高句麗との戦争を有利にすすめるため、隋は日本に良い待遇をしたのです。
日本の側も、隋と高句麗都との敵対した情勢に関する情報をつかんでおり、その情勢を利用して外交での交渉に利用したのです。
==== 飛鳥文化 ====
聖徳太子が政治をおこなっていた時期でもある7世紀ごろ、今でいう奈良県である飛鳥地方に都が置かれていました。この時代のことを <big>飛鳥時代</big>(あすかじだい) といい、この時代の文化を <big>飛鳥文化</big>(あすかぶんか) といいます。
この飛鳥文化は仏教を中心とした文化である。
* 法隆寺
[[ファイル:Horyu-ji08s3200.jpg|thumb|法隆寺。金堂と五重塔]]
[[File:Shakyamuni Triad Horyuji2.JPG|thumb|法隆寺の釈迦三尊像(金堂)]]
聖徳太子は、法隆寺を、607年に、建てさせます。法隆寺の場所は、今でいう奈良県にあります。法隆寺は、現存する木造建築の中で、世界最古の木造建築です。法隆寺は、世界文化遺産に1993年に登録されました。
法隆寺には、 <big>釈迦三尊像</big>(しゃか さんぞんぞう) や <big>百済観音像</big>(くだらかんのんぞう) 、おさめられている。
[[ファイル:Tamamushi Shrine.JPG|thumb|right|200px|玉虫厨子]]
そのほか、法隆寺には絵画の<big>玉虫厨子</big>(たまむしのずし)など、多くの美術品が、おさめられている。
法隆寺の柱は、円柱の中央が、ふくらんでいる。これはギリシア建築に多く見られる特徴でエンタシスという特徴である。
その他、唐草文様などが美術品に見られるが、唐草文様の発祥はギリシアである。
これらのことから、ギリシアや中東の美術文化が、おそらくは中国大陸を通して、日本に美術文化が入って来ていることが分かる。
さて、聖徳太子は、四天王寺(してんのうじ)も、建てさせます。場所は、今でいう大阪府です。
飛鳥時代の、ほかの寺では、広隆寺(こうりゅうじ)の弥勒菩薩像(みろく ぼさつぞう)も、飛鳥時代の仏像として有名である。
<gallery widths="200px" heights="200px">
Image:Maitreya Koryuji.JPG|弥勒菩薩像。京都、広隆寺。
</gallery>
==== 聖徳太子の死後 ====
622年に、聖徳太子が、死にます。
聖徳太子の死後は、蘇我氏が権力が強まります。
蘇我馬子(そがのうまこ)も、626年に、なくなります。
まず、蘇我馬子の子である<big>蘇我蝦夷</big>(そがの えみし)の権力が、強まります。さらに、馬子の孫であり、蝦夷の子である<big>蘇我入鹿</big>(そがのいるか)の権力が強まります。
643年に、蘇我入鹿は、山背大兄王(やましろのおおえのおう)という聖徳太子の子である人物と、山背大兄王 の一族を滅ぼします。
このような強権的な蘇我氏に対して、豪族たちからの不満が高まります。
* 乙巳の変(いっしのへん) ※ 小学生は、おぼえなくて良い。
<big>645年</big>に、ついに、皇族の<span style="color:red"><big>中大兄皇子</big></span>(なかのおおえの おうじ)と、豪族の<span style="color:red"><big>中臣鎌足</big></span>(なかとみの かまたり)(藤原鎌足)との協力により、蘇我入鹿は殺害されます。蝦夷は、この事件を知り、自殺します。
この蘇我氏の死亡した事件を 乙巳の変(いっしのへん) という。 (※ 小学生は、おぼえなくて良い。)
* 大化の改新(たいか の かいしん)
このあと、中大兄皇子らが権力を取り、政治改革を色々と行なう。この皇子らの改革を <span style="color:red"><big>大化の改新</big></span>(たいか の かいしん) という。645年に年号(ねんごう)を「大化」(たいか)に定めたので、この一連の改革は大化の改新と呼ばれています。
「大化」という年号により、日本では、はじめて年号が定められます。年号をさだめることは、中国大陸の帝国を参考にしたのです。
645年の覚え方には、「虫殺し」(むしごろし、645ろし)と覚える語呂合わせ(ごろあわせ)が、あります。
645年 :大化の改新 虫殺し(645ろし)
645年の一連の事件により、皇極天皇(こうぎょくてんのう)は退位して、皇極元・天皇の弟の孝徳天皇(こうとくてんのう)が645年に天皇になります。
==== 改新の詔 ====
:(かいしん の みことのり)
中国大陸では、すでに618年に隋(ずい)が滅んでおり、<big>唐</big>(とう)という帝国になっていた。日本も、これに対して、政治改革をする必要があった。
さて、改革の内容はと言うと・・・
646年に<big>改新の詔</big>(かいしん の みことのり)が出されます。これは改革内容の方針や目標を表したものです。この詔の発見は『日本書紀』で発見されています。
改革の内容は、以下の、<big>公地公民</big>(こうちこうみん)、<big>班田収授</big>(はんでんしゅうじゅ)、租(そ)・庸(よう)・調(ちょう)、<big>国司</big>(こくし)の設置(せっち)、です。
* 公地公民(こうちこうみん)
これまでは豪族や皇族たちが持っていた土地は、すべて朝廷のものになります。豪族や皇族が持っていた人民も、朝廷が持つことになります。この命令が<big>公地公民</big>(こうちこうみん)です。朝廷が管理できない土地の存在を禁止します。同様に、朝廷が管理できない住民の存在も禁止します。
* 班田収授(はんでんしゅうじゅ)
人民の<big>戸籍</big>(こせき)を作り、人民に耕作をさせるための<big>口分田</big>(くぶんでん)という田を与え耕作させます。
この当時の戸籍とは、人民をひとりずつ、公文書に登録することで、住所や家族の名や年齢、家の世帯主、などを把握することです。
この飛鳥時代に、すでに「戸籍」という言葉がありました。
このような情報の管理は、税をとることが目的です。税の台帳である<big>計帳</big>(けいちょう)をつくるため、戸籍が必要なのです。
現在の日本での戸籍とは、「戸籍」の意味が少しちがうので、注意してください。「計帳」という言葉は、この飛鳥時代の言葉です。詔の本文に書かれています。
詔の本文に、「初造戸籍計帳班田収授之法。」とあります。現代風に読みやすく区切りを入れれば、「初 造 戸籍 計帳 班田収授之法。」とでも、なりましょう。
目的は、収穫から税収をとるためです。前提として、公地公民が必要です。
6年ごとに人口を調査します。
税を取るにも、まずは人口を正しく把握しないと、いけないわけです。女にも、 口分田が与えられます。
原則として、6才以上の男に2反(720歩=約24アール)の田を与え、女(6才以上)には男の3分の2(480歩=約16アール)の田を与えています。5才以下には与えられません。
死んだ人の分の田は、国に返すことになっていました。
* 租(そ)・庸(よう)・調(ちょう)
{| class="wikitable" style="float:right"
|+ <span style="font-size: large;">一般の人々の負担</span>
! colspan="2" | <span style="font-size: large;">種類</span> ||<span style="font-size: large;">内容</span>
|-
| rowspan="3" |<SPAN STYLE="FONT-WEIGHT:NORMAL;"><span style="font-size: large;"> 税 </span></SPAN>
|<SPAN STYLE="FONT-WEIGHT:NORMAL;"><span style="font-size: large;">租</span></SPAN>
|収穫(しゅうかく)の約3%の稲(いね)
|-
|<SPAN STYLE="FONT-WEIGHT:NORMAL;"><span style="font-size: large;">調</span></SPAN>
|地方の特産物(糸、きぬ、わた、塩、<br />魚、海そう、鉄、・・・)などを納める。
|-
|<SPAN STYLE="FONT-WEIGHT:NORMAL;"><span style="font-size: large;">庸</span></SPAN>
|麻の布を納める。(労役の代わり。)
|-
| rowspan="1" |<SPAN STYLE="FONT-WEIGHT:NORMAL;"><span style="font-size: large;"><br /> 兵 <br /> 役 </span></SPAN>
|<SPAN STYLE="FONT-WEIGHT:NORMAL;"><span style="font-size: large;">防人</span></SPAN>
|九州北部で兵士を3年。
|-
|}
税(ぜい)の種類です。
祖(そ)とは、田の収穫量の、およそ3%を、国に納めよ(、という税です。
調(ちょう)とは、絹(きぬ)や、地方の特産物を、国に納めよ、という税です。
庸(よう)とは、都に出てきて年10日以内の労働をせよという労役(ろうえき)か、または布を納めよ、という税です。
前提として、公地公民(こうちこうみん)や班田収授(はんでんしゅうじゅ)などが必要です。
この他、防人(さきもり)という、九州で警備(けいび)の兵士をする、兵役(へいえき)の仕事がありました。租庸調(そようちょう)を都に運ぶ負担も、他の農民たちの負担でした。
この防人のつらさを歌った歌として、つぎのような歌が、残っています。
<div style="border:1px solid #000000;">
'''さきもりの歌''' ( 『万葉集』(まんようしゅう)より )
:: 唐衣(からころも) 裾(すそ)に取りつき 泣く子らを 置きてそ来ぬや 母(おも)なしにして
::(現代語訳) 唐衣の 裾(すそ)に、すがって 泣きつく子どもたちを (防人に出るため)置いてきてしまったなあ、 (あの子たちには)母もいないのに
</div>
{{clear}}
* 国・郡・里
政府の組織や、地方行政の組織にも、改革が加わります。
まず、日本全国をいくつかの 国(くに) に分けて管理し、国は郡(こおり)に分けられ、郡は里(さと)に分けられます。
<div style="font-size:120%;">
<pre>
国 (国司)
┃
郡 (郡司)
┃
里 (里長)
</pre>
</div>
国には、中央の朝廷から、<big>国司</big>(こくし)という役人が派遣され、この国司によって、それぞれの国が管理されます。
郡を管理する役職は、<big>郡司</big>(ぐんじ)という役職の役人に管理させます。たいて、その地方の豪族が郡司です。
==== 国際情勢 ====
7世紀のなかばになると、朝鮮半島で戦乱が起きます。
660年に百済(くだら)が、 <big>新羅</big>(しらぎ) という国に滅ぼされます。
朝鮮半島には百済という国があって、その百済は、日本とは親しかったのでした。
新羅は、唐(とう)の協力を、えています。
* 白村江の戦い(はくすきのえ の たたかい)
日本は百済を復活させるため、新羅と戦争をします。663年に、中大兄皇子の指導により朝鮮半島に軍を送り、日本 対 新羅の戦争が起きます。これが<big>白村江の戦い</big>(はくすきのえ[はくそんこう] の たたかい) です。新羅と唐の連合軍に、大敗しました。
なお、後に新羅は676年に高句麗(こうくり)も滅ぼし、朝鮮半島を統一することになります。
==== 日本国内の強化 ====
白村江の戦い にやぶれた日本は、国内の政治に集中します。中大兄皇子は、唐と新羅の攻撃にそなえるため、九州の防備を強化します。九州北部に <big>防人</big>(さきもり) という防衛のための兵士たちを置き、水城(みずき)という土塁(どるい)と濠(ほり)を作ります。さらに北九州や瀬戸内海周辺の西日本の各地に山城(やまじろ)を作ります。
667年に、中大兄皇子は都を移します。奈良の飛鳥(あすか)から、今でいう滋賀県である近江(おうみ)に都を移します。大津宮に都が移ります。
この都を近江(おうみ)にうつしたことも、攻撃に備えてなのかもしれません。近江は、飛鳥よりも内陸にあります。
668年に中大兄皇子は天皇として即位し、天智天皇(てんじ てんのう)になります。
668年に、法典である 近江令(おうみりょう) が出来ます。天智天皇が中臣鎌足に命じ、役人たちに編纂(へんさん)させたものです。
全国的な戸籍である 庚午年籍(こうごねんじゃく) が作成されます。
* 壬申の乱(じんしんのらん)
天智天皇がなくなると、天皇の座をめぐり、天智の弟の大海人皇子(おおあまのおうじ)と、天智の子の大友皇子(おおとものおうじ)とが、672年に争い戦争になる。これを <big>壬申の乱</big>(じんしんのらん) という。大海人皇子が勝ち、大海人皇子が <big>天武天皇</big>(てんむてんのう) になる。
天武天皇の死後、皇后の持統天皇(じとうてんのう)が即位します。持統天皇は、都を奈良に移し、藤原京(ふじわらきょう)を建設させます。
==== 大宝律令 ====
:(たいほう りつりょう)
701年の文武天皇(もんむてんのう)のときに、 <span style="color:red"><big>大宝律令</big></span>(たいほうりつりょう) という法典が完成する。この大宝律令を編纂(へんさん)した人物は、<big>藤原不比等</big>(ふじわらの ふひと) らが中心に編纂(へんさん)した。藤原不比等は、中臣鎌足(なかとみのかまたり)の子である。
「律」は罪人をさばくためのい刑法で、「令」(りょう)は役所や役人などに対する法律です。
政府の中央組織には 二官八省(にかんはっしょう) が置かれた。
二官には、紙をまつる宗教を行なう神祇官(じんぎかん)と、一般の政務をおこなう太政官(だじょうかん)がおかれた。
太政官の下に、大蔵省などの八省が置かれた。
班田収授や、租庸調(そようちょう)も定められた。
<div style="font-size:120%;">
<pre>
┏━━中務省
┏━太政官━━━╋━━式部省
┃ ┣━━民部省
天皇━┫ ┣━━兵部省
┃ ┣━━刑部省
┃ ┣━━大蔵省
┗━神祇官 ┣━━宮内省
┗━━治部省
</pre>
</div>
:中務省(なかつかさしょう)の仕事は、詔(みことのり)や勅(ちょく)の作成。
:式部省(しきぶしょう)の仕事は、役人の人事や教育。
:民部省(みんぶしょう)の仕事は、戸籍や租税。
:兵部省(ひょうぶしょう)の仕事は、軍事や警備。
:刑部省(ぎょうぶしょう)の仕事は、刑罰や裁判。
:大蔵省(おおくらしょう)の仕事は、物資の管理や財政。
:宮内省(くないしょう)の仕事は、宮中の事務や庶務。
:治部省(じぶしょう)の仕事は、儀式や外交。
== {{Ruby|奈良|なら}}時代 ==
[[File:Heijokyo.jpg|right|500px|平城京 条坊図]]
文武天皇(もんむてんのう)のつぎの天皇である元明天皇(げんめいてんのう)の時代に、都が移る。710年に、奈良の <span style="color:red"><big>平城京</big></span>(へいじょうきょう) へと移る。藤原京から平安京に移る。
年号をおぼえる語呂合わせは「なんと(7、10)、うつくしい(きれいな)平城京」。
794年に平安京(へいあんきょう)に都が移るまで、この平城京が都である。平城京に都があった710年から80年間ほどの時代を<big>奈良時代</big>(ならじだい) と言う。
平城京は、道の通りが碁盤目(ごばんめ)のように、区画(くかく)が整理されています。このような、碁盤目のような区画のつくりを 条坊制(じょうぼうせい) と言います。
{{clear}}
[[File:Wadokaichin coin 8th century Japan.jpg|thumb|left|200px|和同開珎]]
経済では、この奈良時代の都では、<span style="color:red"><big>和同開珎</big></span>(わどうかいちん)という貨幣が708年に発行され、流通していました。
これより古い貨幣には、7世紀後半の天武天皇の頃に富本銭(ふほんせん)という貨幣がつくられています。
* 税について。墾田永年私財法(こんでん えいねん しざい の ほう)
農民は貧しく(まずしく)、多くの農民は竪穴住居に住んでいた。また、人口が増えたので口分田は不足した。税の負担は重く、口分田を捨てて逃げ出す農民が増えた、
朝廷は税を増やすため、田を増やす必要があり、そのため、法律を変え、開墾した3代にわたり、田を所有できるように法を制定した。これが <big>三世一身の法</big>(さんぜい いっしん の ほう) であり723年の出来事である。
さらに743年には、期限が無く所有し続けられる <big>墾田永年私財法</big>(こんでん えいねん しざい ほう) が制定された。
これは、つまり公地公民の原則を廃止したことになる。
また、貴族や豪族は、これを利用し、私有地を広げた。この貴族の私有地は、のちに 荘園(しょうえん) と呼ばれることになる。
* 古事記、日本書紀
712年に<span style="color:red"><big>『古事記』</big></span>(こじき)という天皇家や貴族などにつたわる神話の時代をまとめた書が、できます。この『古事記』は、天武天皇により編纂が命じられ、712年に完成しました。
『古事記』は、稗田阿礼(ひえだのあれ)が、暗記していた神話や歴史を、太安万侶(おおのやすまろ)が3巻の書にまとめた書です。
神話の時代から推古天皇にいたるまでの出来事が古事記に書かれています。
また、日本の歴史書の『日本書紀』が720年に完成します。神話の時代の伝説から、7世紀末ごろの持統天皇にいたるまでの国家と天皇の歴史を書いた、歴史書のような書です。
日本書紀の編纂は、時代順に出来事を書く編年体(へんねんたい)で記述しています。
日本書紀は、舎人親王(とねりしんのう)らが、全30巻にまとめています。
{{clear}}
=== 大仏づくり ===
聖武天皇のころ、飢饉(ききん)がつづいたり、貴族の反乱が起きたりします。
[[File:Daibutsu of Todaiji 3.jpg|thumb|right|300px|東大寺盧舎那仏像]]
737年には病気の天然痘(てんねんとう)が流行り、多くの死者が出る。
740年には、九州で、貴族の藤原広嗣(ふじわらのひろつぐ)による反乱も起きた。
政治が不安定になる。
また、人口が増えて公地公民が上手くいかなくなってきた。
聖武天皇は、仏教の力に、すがる。
まず741年に国ごとに <big>国分寺</big> (こくぶんじ)と <big>国分尼寺</big> (こくぶんにじ)を建てさせる。
都には <big>東大寺</big> (とうだいじ)を建てさせた。
743年に、東大寺の本尊(ほんぞん)として大仏を作らせる。
東大寺の大仏は、盧遮那仏(るしゃなぶつ)という仏です。 ※おぼえなくて良い。
<big>行基</big>(ぎょうき)という僧(そう)がいました。彼は、民衆のために用水の池や端をつくったりしながら、諸国をまわって教えをといていたので、民衆に、したわれていました。
しかし、朝廷は、はじめは、行基の行動をとりしまります。当時は、民衆への仏教の布教が禁止されていたし、寺の外での活動も禁止されています。
朝廷からは、おそらく行基は、民衆をそそのかす危険人物だろう、と思われていたのです。
さて、大仏を作るのは、とても多くの労働力を必要とするので、朝廷には、民衆の支持が必要でした。このため、民衆に慕われていた僧の行基(ぎょうき)の活動を認めます。
=== 遣唐使と鑑真 ===
:(けんとうし と がんじん)
中国大陸の帝国が唐にかわっても、かつての遣隋使(けんずいし)と同様に、日本から中国の唐に、外交の使者の (けんとうし)<span style="color:red"><big>遣唐使</big></span> を送ります。
遣唐使は、奈良時代のあいだは、おこなわれています。
のちの時代の平安時代に遣唐使は廃止されます。奈良時代には、まだ遣唐使は廃止されません。
717年に唐にわたった 阿倍仲麻呂(あべのなかまろ) や、仲麻呂と供に唐にわたったこともある 吉備真備(きびのまきび) が遣唐使として有名です。
なお、最初の遣唐使として630年に唐に派遣された犬上御田鍬(いぬがみ の みたすき)は、最後の遣隋使でも、あります。
阿倍仲麻呂は、日本に帰ろうとして乗った船が難破(なんぱ)し、日本に帰れず、最終的に唐の皇帝に仕えることになります。
吉備真備は日本に帰れます。吉備真備は2回も唐にわたり、日本に帰れます。
* 鑑真(がんじん)
[[ファイル:Ganjin wajyo portrait.JPG |thumb|鑑真和尚像]]
日本の朝廷らは、唐の有名な僧の <span style="color:red"><big>鑑真</big></span>(がんじん) に、日本でも仏教をひろめてほしいと、鑑真を日本へ招き(まねき)ます。この招きを受け、鑑真は日本への渡航をおこないますが、5回も失敗し、6回目で日本に着きます。6回目で日本についたころには、鑑真は失明しています。海の水しぶきをあびつづけることは、目に悪いのです。
鑑真は、奈良に <big>唐招提寺</big>(とうしょうだいじ) を開きました。
{{clear}}
=== 天平文化 ===
:(てんぴょう ぶんか)
奈良時代の文化は、仏教の影響と、唐との交流の影響が、特徴(とくちょう)です。
とくに、聖武天皇の治めた 天平(てんぴょう) の年号の時代に、この傾向が強いので、この奈良時代の文化を 天平文化(てんぴょうぶんか) と言います。
[[Image:Shoso-in.jpg|thumb|300px|正倉院正倉]]
[[Image:Azekura-dukuri JPN.JPG|thumb|right|230px|校倉造(あぜくらつくり)。正倉院の宝物庫は、三角形の断面の木を組み合わせたつくりの校倉造で、つくられている。]]
東大寺にある <big>正倉院</big>(しょうそういん) には、奈良時代の美術品や、聖武天皇が日用した道具などが収められています。
:※ 有名な宝物で「螺鈿紫檀五絃琵琶」(らでんしたんごげんのびわ、図参照)や「瑠璃杯」(るりのつき)が保存されているのですが、ウィキペディアに画像がありません。外部サイトや参考書で、画像をお探しください。
宝物には、ギリシャやペルシャ、インドなどから運ばれてきたものもある。シルクロードという中国大陸からヨーロッパまでの貿易の通路を通ってきた宝物である。後世の言い方だが正倉院のことを「シルクロードの終着駅」とも例える。
<gallery widths="250px">
Image:RED LACQUERED CABINET Shosoin N2.JPG|赤漆文欟木御厨子
Image:8Lobed Mirror Inlay Shosoin.jpg|平螺鈿背八角鏡
Image:Silver Backed Bronze Mirror Shosoin.JPG|金銀山水八卦背八角鏡
Image:LADIES UNDER TREES SCREEN4th Shosoin.JPG|鳥毛立女屏風第4 部分
Image:ROCHECHI Screen Panel Shosoin NH44.JPG|羊木臈纈屏風
Image:Silver Incense Burner Shosoin.JPG|銀薫炉
Image:Gold Silver Painted BOX Shosoin.JPG|蘇芳地金銀絵箱蓋
</gallery>
(※ 赤漆文欟木御厨子〜蘇芳地金銀絵箱蓋は、おぼえなくて良い。)
文学では、和歌(わか)をまとめた<big>万葉集</big>(まんようしゅう)が759年ごろから編纂(へんさん)されます。
貴族の作った和歌だけでなく、農民や防人などの様々な身分の者が作ったと思われる和歌も収録されています。
合計で4500首の歌が収録されています。
貴族の歌人では、柿本人麻呂(かきのもとのひとまろ)や大伴家持(おおとものやかもち)、山上憶良(やまのうえのおくら)、山部赤人(やまべのあかひと)などが有名です。
万葉集の文字の読みは、万葉仮名(まんようがな)という、漢字の音で日本語を表す読みです。たとえば、次のような句を次のように読みます。
:(万葉仮名文)去來子等 早日本邊 大伴乃 御津乃濱松 待戀奴良武 (※ おぼえなくて良い。)
:(訓)いざ子ども 早く日本(やまと)へ 大伴(おおとも)の 御津(みつ)の浜松(はままつ) 待ち恋ひぬらむ(まちこいぬらん)
{{clear}}
== {{Ruby|平安|へいあん}}時代 ==
〜<big>貴族がさかえた時代</big>〜<br>
かつての天平文化の仏教保護の政策などにより、仏教の僧や寺院の影響力が強くなる。
のちの天皇や朝廷は、これらの仏教勢力を嫌がり、そのため、<big>桓武天皇</big>(かんむてんのう)により、寺院の多い現在でいう奈良県から京都府へと都をうつす。まず784年に京都府の 長岡京(ながおかきょう) にうつす。さらに794年に京都府の <span style="color:red"><big>平安京</big></span>(へいあんきょう) にうつす。
<big>鳴くよ(794、なくよ) ウグイス 平安京<ref>鳴くよ(794、なくよ) 感動(桓武天皇、かんどう) 平安京 とも言う。</ref></big>
「ホーホケキョー」とウグイスは鳴きますが、それと「へいあんきょう」をかけたダジャレの語呂合わせ(ごろあわせ)です。
平安時代(へいあんじだい)の当時に、こういうダジャレがあったわけでは、ありません。現代の私たちが、歴史上の出来事のおきた年をおぼえるための語呂合わせ(ごろあわせ)です。
[[画像:HeiankyouMapJapanese.svg|900px]]
奈良から平安京への寺院の移転は禁止されます。
他にも、社会の変化で、もはや、公地公民による昔の政治が上手くいかなくなり、政治のしかたを改める必要もあったのだろう。
平安京に都を移してから約400年間は、政治の中心地は平安京だったので、この時代を <big>平安時代</big>(へいあんじだい) という。
くわしくいうと、後に1192年に武士である源頼朝が権力をにぎる鎌倉幕府(かまくら ばくふ)ができますが、794年から1192年までを平安時代と言うことが多い。
なお、平安時代より、あとの武士による政治の時代になっても、都は平安京のままです。明治時代に東京に都が移るまでは、平安京が日本の都でした。平安京のつくりは、唐の都である 長安(ちょうあん) を、参考にしています。
桓武天皇は、公地公民が上手くいかない理由の一つである、税負担の重さに改革の手をつけます。
税負担の重さを減らしました。
雑用(ぞうよう)の日数を60日から30日に減らします。
また、桓武天皇の政権は、東北地方に支配を広げます。
東北地方の <big>蝦夷</big>(えみし) とよばれる人々は朝廷の支配に反対し、たびたび反乱を起こしていました。朝廷は <big>坂上田村麻呂</big>(さかのうえのたむらまろ) という人物を <big>征夷大将軍</big>(せいいたいしょうぐん) という役職(やくしょく)に任命し(797年)、彼に東北の平定を命じ、東北の平定のため、東北に兵を送らせます。
蝦夷の族長はアテルイ(阿弖流為)という人物で、アテルイの兵力と、対する田村麻呂らの朝廷軍との戦いです。
結果的に、田村麻呂の側が勝ちます。つまり朝廷の側が勝ちます。
アテルイは負け、802年に降伏(こうふく)します。アテルイは平安京に連行されたのち、京にて処刑されます。
田村麻呂は、アテルイの命を助けるよう減刑をもとめましたが、貴族たちの反対により、アテルイは処刑されました。
東北での戦争のさい、胆沢城(いさわじょう、場所は岩手県) などが田村麻呂らにより築かれ、朝廷による東北支配の拠点になります。
* 仏教界の変化
[[ファイル:最澄像 一乗寺蔵 平安時代.jpg|thumb|left|最澄]]
[[ファイル:Kukai2.jpg|thumb|空海]]
平安時代に入り、奈良時代の仏教とは、変化をした。<big>天台宗 </big>(てんだいしゅう)や<big>真言宗</big>(しんごんしゅう)という新しい宗派(しゅうは)ができ、それが広まった。奈良時代の仏教とはちがい、新しい平安時代の宗派は、山奥(やまおく)で修行(しゅぎょう)をしたりする仏教である。
僧の<big>最澄</big>(さいちょう)と僧の<span style="color:red"><big>空海</big></span>(くうかい)による、新しい仏教の考え方が広まった。おそらくは朝廷が、奈良時代の政治に深く介入した従来の仏教勢力をきらい、かわりに新しい宗派を保護したのだろう。
最澄も空海も、遣唐使と共に唐にわたり留学し、唐の新しい仏教の教えを学んできた僧である。
最澄は805年に日本に帰国し、比叡山(ひえいざん、滋賀県にある。)に 延暦寺(えんりゃくじ) をたて、<big>天台宗 </big>(てんだいしゅう)をひろめた。最澄は伝教大師(でんきょうだいし)とも言われます。
空海は806年に帰国し、高野山(こうやさん、和歌山県にある。)に 金剛峯寺(こんごうぶじ) をたて、<big>真言宗</big>(しんごんしゅう)をひろめた。空海は 弘法大師(こうぼうだいし)のことです。ことわざの「弘法も筆のあやまり」(こうぼうもふでのあやまり)の弘法大師のことです。
比叡山と言い、高野山と言い、ともに山であることに注目もしよう。朝廷の、仏教の政治介入をきらう事とも、つじつまがあう。
* 荘園(しょうえん)
奈良時代に墾田永年私財法により、開梱した土地の所有が認められるようになったので、貴族たちや寺社は農民らに開墾をさせ、貴族の所有する土地を広げていった。この貴族の所有する私有地が <span style="color:red"><big>荘園</big></span>(しょうえん) である。
また、平安時代に、貴族や寺社の所有する荘園には税をおさめなくてもよいという、貴族につごうのいい権利が出来た。
税を収めない権利を<big>不輸の権</big>(ふゆのけん)と言い、荘園への役人の立ち入りを拒否(きょひ)できる権利を<big>不入の権</big>(ふにゅうのけん)といいます。
これら不輸不入の権もあり、貴族の荘園は、どんどんふえていき、朝廷の税収は減るので財政は悪化し、律令政治が上手くいかなくなります。
有力な貴族でない者の荘園は国司に取り上げられたり、他の豪族にうばわれることもあったので、そのような有力でない者は、朝廷の有力な貴族に、形式的だが荘園を寄付した。これを<big>寄進</big>(きしん) という。
* 摂関政治(せっかんせいじ)
9世紀の中頃になると藤原鎌足(ふじわらのかまたり、中臣鎌足のこと。)の子孫の一族の<big>藤原氏</big>(ふじわらし) が、権力を強めます。
藤原氏の一族は、代々、娘を天皇の妃(きさき)にしています。
すると、藤原氏は天皇の母方の親戚(しんせき)ということになるので、藤原氏の権力が強まる、という仕組みで、さらに権力を強めました。
[[File:Fujiwara no Michinaga 2.jpg|thumb|300px|藤原道長(ふじわらの みちなが)]]
藤原氏の一族では、とくに11世紀の前半に <span style="color:red"><big>藤原道長</big></span>(ふじわらの みちなが) と、道長の子の<big>藤原頼通</big>(ふじわらのよりみち)らの親子が権力をにぎっていた時代が、もっとも勢力が、さかんでした。
道長が有名なので、よく、教科書などに道長が取り上げられますが、藤原氏の権力は、べつに11世紀に急に強まったわけではなく、9世紀ごろから藤原良房(ふじわらのよしふさ)が摂政になったりなど、すでに藤原氏の勢力が強かったです。皇族以外で摂政になったのは、良房が、はじめてです。
天皇が幼いときは、藤原氏の者が摂政になり政治の実権(じっけん)を握り、天皇が成人しても藤原氏は関白(かんぱく)という地位になり実権をにぎり、政治を行いつづける、という手法で権力を強めました。このような摂政や関白として政治を行なうという政治の方法を <span style="color:red"><big>摂関政治</big></span>(せっかん せいじ) といいます。
道長の読んだ歌で、つぎの歌があります。
:<big><big>「この世(よ)をば わが世とぞ思ふ(おもう) 望月(もちづき)の 欠けたることも なしと思へば(おもえば)」</big></big>
意味は、「この世は 自分(道長)のためにあるようなものだ 望月(=満月)のように 何も足りないものはない」という意味です。
<div style="border:1px solid #000000;">
:藤原実資(ふじわら さねすけ)の日記。
::寛永2年(1018年)、今日は道長さまの娘さまの威子(いし)さまが、中宮(ちゅうぐう)になられる日である。道長さまが私(=日記の作者。実資)を呼んで、こう、いわれた。
::「和歌をよもうと思う。君もかならず歌をかえしたまえ。」と言われた。
:::私は返事をして「きっと歌をかえしましょう。」と答えた。
::つづけて、道長さまはこう言われた。「自慢(じまん)の歌なのだよ。べつにあらかじめ作っておいた歌では無いがね。」と。
:そして、歌をよまれた。「この世をば 我が世とぞ思う 望月の 欠けたることも なしと思わば。」と。
:::私は答えた。「とても、すばらしい歌です。かえす歌も作れません。(道長いがいの)みんなで、このお歌を唱和するのがよろしいでしょう。」ともうしあげた。みんなも、私の言葉におうじ、この歌を唱和した。道長さまは、たいそう気をよくして、歌をかえさなかった私をせめなかった。
:(『小右記』(しょうゆうき)より。藤原実資(さねすけ)の日記。一部分。)
</div>
[[ファイル:Byodoin Phoenix Hall Uji 2009.jpg|300px|thumb|left|平等院 鳳凰堂]]
道長の子である<big>藤原頼通</big>(ふじわらの よりみち) は、<big>平等院鳳凰堂</big>(びょうどういんほうおうどう)を、たてさせています。十円玉に描かれている、あの建物(たてもの)は、平等院鳳凰堂の絵です。
[[ファイル:10JPY.JPG|thumb|10円]]
{{clear}}
=== 平安時代の文化 ===
* 遣唐使の廃止と、国風文化
まず、894年に、遣唐使が廃止されます。
:語呂合わせ:<big>白紙(はくし、894)に戻そう(もどそう) 遣唐使</big>
[[File:Sugawara Michizane.jpg|thumb|200px|菅原道真(すがわらの みちざね)]]
菅原道真(すがわらの みちざね)の進言によります。
遣唐使の廃止の理由は、すでに唐から多くのことを学んであること、中国大陸で内乱が多く唐が弱っていること、船の遭難(そうなん)など死の危険が多く有能な人材の命を損ないかねないこと、経済的な負担が大きい、などです。
この遣唐使の廃止により、日本の貴族文化では、だんだん、中国大陸の文化の影響(えいきょう)が、うすれていきます。
かわりに日本独自の貴族文化が発展していきます。この平安時代に発展した日本独自の貴族文化を<big>国風文化</big>(こくふうぶんか) と言います。
なお、その後、菅原道真は藤原氏と対立し、901年には太宰府(だざいふ)に追放されてしまいます。
[[画像:Hiragana origin new.svg|thumb|right|300px|漢字からひらがなへの変化]]
* かな文字の発明
ひらがな や カタカナ などの <big>かな文字</big> が、平安時代に発明されます。
ひらがなは、漢字の形をくずして、発明されました。カタカナは漢字の へん や つくり などの一部をもとに発明されました。
[[ファイル:Katakana origin new.svg|thumb|left|300px|カタカナの由来]]
{{clear}}
この時代、ひらがなやカタカナは、女が用いる字であった。貴族の<span style="color:red"><big>紀貫之</big></span>(きの つらゆき)は男だが、名を隠し、女を名乗り<big>『土佐日記』</big>(とさにっき)を描いた。
紀貫之が、国司(こくし)として、四国の土佐(とさ)に派遣されていたので、土佐から京にかえるまでの様子をしるした日記です。
ほかにも、<big>古今和歌集</big>(こきんわかしゅう、紀貫之の編集) や<big>竹取物語</big>(たけとりものがたり) などが、かな文字を用いた作品です。
古今和歌集は、<big>紀貫之</big>(きのつらゆき)という人物による編集です。醍醐天皇(だいごてんのう)の命令により、紀貫之らが編集しました。
* その他の文化
[[Image:Miniature Model of HigashiSanjoDono.jpg|thumb|375px|典型的な寝殿造である東三条殿の復元模型(京都文化博物館)
----
1. 寝殿(しんでん)、2. 北対(きたのたい)、3. 細殿(ほそどの)、4. 東対(ひがしのたい)、5. 東北対(ひがしきたのたい)、6. 侍所(さむらいどころ)、7. 渡殿(わたどの)、8. 中門廊(ちゅうもんろう)、9. 釣殿(つりどの)]]
[[image:安部正弘の肖像.jpg|thumb|left|150px|江戸時代の束帯(阿部正弘)]]
[[File:十二単です.JPG|thumb|150px|left|五衣唐衣裳(俗称 十二単)(京都御所にて)]]
平安時代には、貴族の衣服の正装(せいそう・・・正式な服のこと)が変わります。
男の貴族の服は <big>束帯</big>(そくたい) になり、女の貴族の服は <big>十二単</big>(じゅうにひとえ) になります。
貴族の住居の形が <big>寝殿造</big>(しんでんづくり) になる。
絵画には、日本の風景などを書いた <big>大和絵</big>(やまとえ) が出てくる。寝殿造りの屋敷の屏風(びょうぶ)や ふすま などに大和絵が描かれた。絵巻物などにも大和絵は描かれた。
{{clear}}
[[ファイル:Chouju thief.jpg|thumb|right|300px|鳥獣戯画の一部分]]
大和絵の作品では、<big>鳥獣戯画</big>(ちょうじゅうぎが)や<big>源氏物語絵巻</big>(げんじものがたりえまき)などが有名です。
鳥獣戯画(ちょうじゅうぎが)は、当時の社会を風刺するために、かえるやさる、うさぎなどの動物たちを擬人的に描いて表現した絵です。
{{clear}}
文学の物語では『源氏物語』(げんじものがたり)という創作(そうさく)の物語が、貴族の紫式部(むらさきしきぶ)によって描かれました。この源氏物語は、主人公は貴族の「光源氏」という人物で、光る人物を中心にして貴族の恋愛などを書いています。
なお、名前が後の幕府の源氏(げんじ)と似ていますが、べつに光源氏は武士ではありません。源氏物語が出来た1007年ごろは、まだ鎌倉幕府はありません。紫式部は女です。藤原為時(ためとき)の娘です。
大和絵にも、「源氏物語絵巻」(げんじものがたりえまき)が、描かれました。絵画を使って、物語を絵で表したものを絵巻物(えまきもの)といいます。
随筆では、貴族の清少納言(せいしょうなごん)が『枕草子』を記しました。清少納言が 日常生活や自然を観察して、感想を述べたものです。
清少納言は女です。
* 浄土教(じょうどきょう)
[[Image: Kuya Portrait.JPG |thumb|right|200px|空也の像 (六波羅蜜寺) ]]
平安時代の中ごろは、伝染病が流行ったり(はやったり)、災害が起きたりしたので、社会の不安が大きくなった。このため、宗教では、人々に安心を与える宗教が、平安時代の半ば(なかば)ごろから、流行る(はやる)ようになる。
[[ファイル:Uji Byodo-in Phönixhalle Innen Amida-Buddha 2.jpg|thumb|200px|left|阿弥陀如来像 (平等院・鳳凰堂)]]
浄土教という信仰が流行るようになる。阿弥陀如来(あみだにょらい)にすがり、「{{ruby|南無阿弥陀仏|なむあみだぶつ}}」と念仏を唱えていれば、死後には、極楽浄土へ行ける、という信仰である。
浄土教を布教した人物では、<big>空也</big>(くうや)という人物が有名である。空也(生:903年〜没:972年)は、10世紀中ごろ、諸国をまわり、庶民に浄土教を布教していた。人が集まる市(いち)で布教していたことから、空也は、市聖(いちのひじり)とも呼ばれます。
仏教の教えによると、1052年は釈迦が死んでから1000年後ということらしく、死後1000年ともなると釈迦の教えがおとろえて世の中が悪くなるという思想があり、この思想は <big>末法</big>(まっぽう) と言われた。この末法思想もあって、浄土信仰は広まっていった。
{{clear}}
[[ファイル:Konjikido-Ooido.jpg|right|240px|thumb|金色堂。外側の覆堂(おおいどう)]]
地方にも浄土教がひろまり、各地に阿弥陀仏をまつる寺院である 阿弥陀堂(あみだどう) がたてられた。たとえば岩手県の平泉(ひらいずみ)には <big>中尊寺金色堂</big>(ちゅうそんじ こんじきどう)という阿弥陀堂 が、たてられた。大分県に富貴寺大堂(ふきじ おおどう)が、たてられた。
{{clear}}
=== 平安時代の武士たち ===
平安時代には、地方の豪族たちは私有地を広げていったのであった。
9世紀の中ごろから、豪族や有力な農民たちは、自分たちの土地や財産をまもるためには、兵力をたくわえていった。一族の者や、手下の農民たちに武装させるようになった。
このようにして、<span style="color:red"><big>武士</big></span>が、できていった。
武士たちは、一族の かしら を棟梁(とうりょう)として、それぞれの一族ごとに<big>武士団</big>を結成していった。
貴族の中にも、これにならい、武士団をつくり棟梁となって兵を指揮する者が、地方貴族から出てきた。源氏や平氏などが、そのような貴族の武士である。
源氏も平氏も天皇の子孫です。
武士の中には、朝廷に対して反乱を起こす者も出てきました。
* 平将門(たいらの まさかど)の乱
10世紀の935年に、平将門(たいらの まさかど)が反乱を関東地方で起こします。朝廷は、ほかの武士の助けを借りて、将門の反乱を鎮圧します。
* 藤原純友(ふじわらの すみとも)の乱
939年には、藤原純友(ふじわらの すみとも)が反乱を瀬戸内海の周辺で起こし、海賊らを率いて反乱を起こします。朝廷は、ほかの武士の助けを借りて、反乱を鎮圧します。
朝廷の力だけでは、この2つの反乱をしずめることはできず、ほかの武士の協力をえる必要があり、これらの反乱により武士の影響力が増すことになった。
この2つの反乱のことを、起きた年の年号をとり 承平・天慶の乱(じょうへい・てんぎょう の らん) と言う。
* 東北地方での反乱
10世紀の1051年には東北地方で反乱が起き、安倍頼時らが反乱を起こします。この反乱の鎮圧を、源氏である源頼義(みなもとのよりよし)および源義家(みなもとのよしいえ)らの兵が鎮圧します。この反乱と鎮圧の争乱を 前九年の役(ぜんくねん の えき) と言います。
源氏が鎮圧を行ったので、関東地方では源氏の影響力が強まります。
=== 院政 ===
:(いんせい)
11世紀の半ばすぎごろになると、藤原氏の影響力は弱まり、天皇には、藤原氏とは関係のうすい <big>後三条天皇</big>(ごさんじょうてんのう) が即位した。天皇は、藤原氏の政治に不満をもつ貴族も用いて、政治の実権を天皇にもどした。
天皇は1069年には荘園整理令(しょうえん せいりれい)を出し、不法な荘園を取りしまった。
次の天皇の <big>白河天皇</big>(しらかわ てんのう) も、天皇中心の政治を行った。
1086年には生存中(せいぞんちゅう)に次の天皇の堀河天皇(ほりかわ てんのう)に位をゆずり、白河 元・天皇は上皇として、政治の実権をにぎります。
上皇の住む住居が 院(いん) と呼ばれていたので、上皇による政治を <big>院政</big>(いんせい) と言います。
堀河天皇の死後は、白河の孫である 鳥羽天皇(とばてんのう) が即位する。この鳥羽天皇も白河上皇の次の鳥羽上皇(とば じょうこう)になった。
鳥羽上皇の次は、後白河 元・天皇が後白河上皇となり、院政を行った。
このようにして院政が100年ばかり、続いて(つづいて)いく。
いっぽう、藤原氏の権力は、おとろえていった。
さて、天皇家の内部でも天皇と上皇との権力をめぐって対立が起きてくる。
これにくわえて、藤原氏の内部の対立も加わり、ついに1156年には戦乱が起きる。
<big>保元の乱</big>(ほうげん の らん)である。
上皇の側の崇徳上皇(すとく じょうこう)には、左大臣の藤原頼長(ふじわらの よりなが)、平氏の平忠正(たいらの ただまさ)、源氏の源為義(みなもとの ためよし)が、従った(したがった)。
[[ファイル:Taira no Kiyomori.jpg|thumb|200px|平清盛(たいらの きよもり)。]]
天皇の側の後白河天皇には、関白の藤原忠通(ふじわらの ただみち)、平氏の<span style="color:red"><big>平清盛</big></span>(たいらの きよもり)、源次の源義朝(みなもとの よしとも)が、従った。
勝ったのは、御白河天皇の側である。
つまり平清盛と源義朝が加わった側が勝っている。
この乱の後、1159年に、保元の乱での恩賞に不満をいだいた源義朝が兵をあげ乱をおこしたが、平清盛らの軍に鎮圧される。これが <big>'''平治の乱'''</big>(へいじのらん) です。
この件により、平氏の影響力が強まります。
* 平氏の台頭(たいとう)
清盛は、武士の力を利用しようとする後白河上皇との関係を深めます。
1167年には、清盛は武士としては初めての太政大臣(だじょう だいじん)になります。
{{clear}}
==脚注==
<references />
== 関連項目 ==
* 次へ進む:[[中学受験社会/歴史/中巻]]
{{スタブ|小}}
{{デフォルトソート:ちゆうかくしゆけんれきし1}}
[[Category:社会]]
[[Category:中学受験参考書|れきし1]]
{{カテゴリ準備|中学受験社会|小学校社会|ちゆうかくしゆけんれきし1|れきし1}}
1bbe0oatdg9ppf1r1o8m5fma9ksb06c
小学校社会/6学年/歴史編/上巻
0
28428
304824
291306
2026-10-17T18:20:46Z
PacmanD
92813
([[c:GR|GR]]) [[c:COM:FR|File renamed]]: [[File:2004年08月25日竪02.JPG]] → [[File:2004年08月25日 登呂遺跡の復元竪穴状平地建物.jpg]] [[c:COM:FR#FR2|Criterion 2]] (meaningless or ambiguous name) · 名前が日付以外何を指しているのか解りづらいです。
304824
wikitext
text/x-wiki
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|小学校社会/6学年|小学校社会/6学年/歴史編|frame=1}}<!-- 当ページを編集される方は、学習指導要領解説社会編や検定教科書を参考に編集してください。また、小学生向けであることに留意してください。 -->
このページは旧版です
このページでは、日本の歴史について、{{Ruby|安土桃山|あづちももやま}}時代までを学びましょう。{{Ruby|江戸|えど}}時代{{Ruby|以降|いこう}}についての{{ruby|下巻|げかん}}は[[小学校社会/6学年/歴史編/下巻|こちら]]です。
また、人物についてくわしく学ぶ「人物事典」は[[小学校社会/6学年/歴史編/人物事典|こちら]]です。政治や日本の世界へのかかわりについて学ぶ「政治・国際編」は[[小学校社会/6学年/政治・国際編|こちら]]です。
== はじめに ==
=== 時代の表し方 ===
[[File:日本の時代の年表.png|450px|thumb|時代の流れ]]
* 時代
** 歴史学習で使う時代の表し方には、まず「時代」があります。これは、「{{ruby|奈良|なら}}時代」「{{ruby|江戸|えど}}時代」などと、大きなことがら(政治の{{Ruby|拠点|きょてん}}が移る,{{Ruby|天皇|てんのう}}が変わるなど)ごとに時代を変えていく表し方です。なお、室町時代のうち1392年までを「{{Ruby|南北朝|なんぼくちょう}}時代」、1467年{{Ruby|以降|いこう}}を「{{Ruby|戦国|せんごく}}時代」ということもあります。
* 西暦
** {{ruby|西暦|せいれき}}は、[[w:イエス・キリスト|イエス・キリスト]]が生まれたとされる年を西暦1年として年を表す表し方です。現在は西暦{{CURRENTYEAR}}年です。
* 世紀
** {{ruby|世紀|せいき}}とは、100年ごとに区切って年を数える単位です。西暦1年から西暦100年までが1世紀です。西暦101年から西暦200年までが2世紀です。西暦2001年から西暦2100年までを21世紀といいます。たとえば、105年は2世紀、1853年は19世紀です。
== 大昔の{{Ruby|暮|く}}らしとくにづくり ==
;大昔の{{Ruby|暮|く}}らし
[[File:Jomon Vessel with Flame-like Ornamentation, attributed provenance Umataka, Nagaoka-shi, Niigata, Jomon period, 3000-2000 BC - Tokyo National Museum - DSC05620.JPG|thumb|250px|縄文土器]]
いまから1万5000年ほど前になると、{{ruby|氷河|ひょうが}}期が終わり、地球の気候があたたかくなりました。
そして、いまから1万2000年ほど前のころ、日本列島に住んでいる人たちは、海や川の近くに住んで、石や{{ruby|骨|ほね}}でつくった{{ruby|刃|は}}物や{{ruby|槍|やり}}や矢をつかって、シカやイノシシなどの動物を、とらえて食料にしていました。
同じころ、日本列島に住んでいた人たちは、'''{{ruby|土器|どき}}'''をつくるようになりました。その土器に縄の{{ruby|模様|もよう}}がついているので、この時代に作られた土器を {{ruby|縄文|じょうもん}}土器 といいます。
この土器は、食べ物を{{ruby|煮炊|にた}}きしたりするための、今でいう なべ のような物です。
今から約1万2000年前から約3,000年前までの時代のことを、 '''{{Ruby|縄文|じょうもん}}時代''' といいます。
[[File:Yoshinogari-iseki tateanashiki-juukyo.JPG|thumb|250px|right|弥生時代の竪穴建物の復元、{{ruby|佐賀|さが}}県{{ruby|吉野ヶ里|よしのがり}}遺跡]]
縄文時代の人の家の建物は、'''{{ruby|竪穴|たてあな}}建物''' といい地面に穴をほりさげたあとに、柱を立て、草ぶきの屋根をかけただけの住居にすんでいました。
[[File:Kasori midden preserve north.jpg|thumb|200px|加曽利貝塚、北貝{{ruby|層|そう}}断面]]
縄文時代の人の集落があったと思われる場所からは、多くの貝がらが{{ruby|発掘|はっくつ}}されています。
この貝がらが多く発掘された、集落だったと思われる場所を {{ruby|貝塚|かいづか}} といいます。貝塚からは、貝がら以外にも、動物の{{ruby|骨|ほね}}や、魚の骨などが出土することもよくあります。
なお、貝塚には、たとえば{{ruby|東京|とうきょう}}都の{{ruby|大森|おおもり}}貝塚や、{{ruby|福井|ふくい}}県の{{ruby|鳥浜|とりはま}}貝塚や、{{ruby|千葉|ちば}}県の{{ruby|加曽利|かそり}}貝塚などがあります。
なお、貝塚や石器などに限らず古い時代の物が見つかる場所のことを、 '''{{ruby|遺跡|いせき}}''' といいます。
遺跡などから出土する物によって、その時代の{{ruby|暮|く}}らしもわかります。
魚{{ruby|釣|つ}}りに必要な、「釣り{{ruby|針|ばり}}」と「もり」が、縄文時代の遺跡から出土することも多く、漁もしていたことがわかります。
なお、動物の骨は、とがらせて使うことが多く、とがらせたものを {{ruby|骨角器|こっかくき}} といいます。骨角器のようなとがった骨も出土することがあります。狩りなどで、槍の先の武器として使ったりすることが多かったものと思われます。
[[Image:JomonStatue.JPG|thumb|right|200px|土偶({{ruby|亀ヶ岡|かめがおか}}遺跡)]]
縄文の{{ruby|遺跡|いせき}}から、'''{{ruby|土偶|どぐう}}''' という、土を焼き固めた、女性のような形の人形が見つかる場合があります。
土偶は、食料が増えることや女性の安産をいのったものだと考えられています。
[[ファイル:Reconstructed Pillar Supported Structure.jpg|right|thumb|300px|六本柱建物(復元)]]
{{ruby|青森|あおもり}}県の '''{{ruby|三内丸山遺跡|さんないまるやまいせき}}''' は、約5500年前から約1500年前の間の集落だったということがわかっています。
この三内丸山遺跡から、木を{{ruby|栽培|さいばい}}した{{ruby|形跡|けいせき}}が見つかっています。
つまり、すでにこの時代から農業をしていたことがわかります。
また、多くの土器や石器のあとも見つかっています。
大型の、{{ruby|掘立|ほった}}て柱も、見つかっています。掘立て柱の{{ruby|用途|ようと}}はまだ分かっていません。
ヒスイの玉や、{{ruby|黒曜石|こくようせき}}でできた{{ruby|刃|は}}物のようなものも見つかっています。
ヒスイは、この地ではとれず、新潟県の{{ruby|糸魚|いとい}}川などの他の土地でとれるので、他の{{ruby|地域|ちいき}}と交易があったのだろう、と考えられています。
この三内丸山遺跡は、縄文時代を知る遺跡として代表的な遺跡です。
{{ruby|縄文|じょうもん}}時代の次の時代は、{{ruby|弥生|やよい}}時代です。
;{{ruby|弥生|やよい}}時代
'''~米づくりがはじまる~'''
[[Image:YayoiJar.JPG|right|250px|thumb|{{ruby|弥生|やよい}}土器]]
いまから2400年ぐらい前のころ、ユーラシア大陸や{{ruby|朝鮮|ちょうせん}}半島あたりの人々から、米による{{ruby|稲作|いなさく}}が、日本に伝わりました。
米作りは、まず西日本につたわり、西日本から東日本へと、米作りが広がっていき、東北地方にまで広がりました。
この時代の農具の多くは、まだ木製です。ただし、米作りとともに鉄器の技術も日本に伝わっているので、一部では鉄を用いた農具も見つかっています。
{{ruby|穂|ほ}}から米をとるときに、 {{ruby|石包丁|いしぼうちょう}} が、使われました。
* {{ruby|弥生|やよい}}土器
** また、このころ、土器は、{{ruby|縄文|じょうもん}}土器よりも うすくて かたい '''{{ruby|弥生|やよい}}土器''' をつくるようになりました。「{{ruby|弥生|やよい}}」とは、学者が発見した場所が、{{ruby|東京|とうきょう}}の弥生町(現在の{{ruby|文京|ぶんきょう}}区)だったので、弥生の土器という意味で、「弥生土器」とよばれています。
** 縄文土器と弥生土器の形のちがいについては、弥生時代のころには、土器をつくる技術が進歩したので、土器の形が かわったのだろう、と考えられています。
* {{ruby|高床|たかゆか}}倉庫
** 米は、 '''{{ruby|高床|たかゆか}}倉庫''' で保管されていました。
高床倉庫が高いのは、ねずみ などの動物が入りづらくするためです。なお、風通しをよくするため、という理由も考えられます。ねずみの害を防ぐという理由の有力な{{ruby|根拠|こんきょ}}として、地面から床までの柱の、柱のてっぺんに、「かえし」がついていて、動物などが登れないように工夫した高床倉庫が見つかっています。
<gallery widths="200px" heights="200px">
Image:Takayukasikisouko.JPG|高床倉庫 妻側より(復元、{{ruby|神奈川|かながわ}}県、{{ruby|大塚|おおつか}}・{{ruby|歳勝土遺跡|さいかちどいせき}})
File:Yoshinogari-iseki takayukashiki-souko.JPG|高床倉庫(復元、{{ruby|佐賀|さが}}県{{ruby|吉野ヶ里遺跡|よしのがりいせき}})
</gallery>
{{ruby|弥生|やよい}}時代の多くの住まいは、{{ruby|竪穴|たてあな}}建物です。
{{clear}}
* 金属器
[[ファイル:DotakuBronzeBellLateYayoi3rdCenturyCE.jpg|thumb|銅鐸]]
大陸や{{ruby|朝鮮|ちょうせん}}半島から米作りがつたわるとともに、青銅器や鉄器などの金属器が、伝わります。そして、日本でも、弥生時代中に、金属器がつくられるようになりました。
青銅とは、銅 と すず(金属の1つ)を、とかしてまぜあわせた金属でつくられた、合金です。
青銅器には、銅{{ruby|剣|けん}}や、銅{{ruby|矛|ほこ}}、銅{{ruby|鐸|たく}}、銅{{ruby|鏡|きょう}}などが、あります。
<gallery widths="200px" heights="200px">
File:Koujindani Remains 03.JPG|銅矛とともに出土した銅鐸({{ruby|島根|しまね}}県・{{ruby|出雲|いづも}}市の{{ruby|荒神谷|こうじんだに}}遺跡)。{{ruby|古墳|こふん}}時代の遺跡。
ファイル:YayoiBronzeSpearTip1-2ndCenturyKyushu.jpg|弥生時代の銅矛(九州で出土、1~2世紀)
</gallery>
青銅器は、おもに祭りに使われるようになります。
いっぽう、鉄器は、農具や武器などの実用品につかわれるようになります。
* {{ruby|登呂遺跡|とろいせき}}
[[File:2004年08月25日 登呂遺跡の復元竪穴状平地建物.jpg|thumb|240px|right|登呂遺跡。復元、竪穴状平地建物。]]
{{ruby|静岡|しずおか}}県にある、{{ruby|登呂遺跡|とろいせき}}からは、{{ruby|竪穴|たてあな}}建物に似た平地建物と、{{ruby|高床|たかゆか}}倉庫が見つかっています。{{ruby|水田|すいでん}}のあともあります。
* {{ruby|吉野ケ里遺跡|よしのがりいせき}}
[[File:Yoshinogari-iseki zenkei.JPG|thumb|440px|right|吉野ケ里遺跡,遠景]]
{{ruby|佐賀|さが}}県にあります。
まわりを{{ruby|濠|ほり}}でかこまれた {{ruby|環壕|かんごう}}集落 です。
矢がささった{{ruby|人骨|じんこつ}}も見つかっています。これらのことから、人々のあいだで争いがあったことが予想できます。
濠の内側からは、多くの高床倉庫が見つかっています。
おそらくは、米作りによって、食料生産が増えたので人口が多くなって、
:それぞれの集落で、多くの人口を養うために米の生産量を増やす必要が生じて、
:そのため、土地や水が必要になり、
:集落どうしで、土地や水をめぐっての争いが起きたのだろうと思われています。
このような争いが、身分の差を作っていった理由の一つだとも、思われています。
この吉野ケ里遺跡は、弥生時代を知る遺跡として、代表的な遺跡です。
;日本の統一へ
* 邪馬台国
中国大陸の3世紀ごろの歴史書では、日本の3世紀ごろは、国の数が30あまりになっていることが分かりました。
そして、日本にはこれら30あまりの国をしたがえた {{ruby|邪馬台国|やまたいこく}} がありました。邪馬台国で、代表的な地位にあった人物は、'''{{ruby|卑弥呼|ひみこ}}''' という女性です。{{ruby|彼女|かのじょ}}の政治は、まじないやうらないによるものだったようです。
邪馬台国の場所は、わかっていません。
邪馬台国は、{{ruby|魏|ぎ}} に、外交の使いを送りました。
<!-- 「魏」という国名は、検定教科書に無く、範囲外だが、検定教科書どおりに「中国」というのも紛らわしいので(日本の中国・四国地方と混同の恐れあり)、本wikiでは「魏」を使う。なお、日本文教出版でこの時代を紹介し、chinaについては日本文教出版は「中国」と表記。東京書籍は他の時代だが「大陸」などで表現をゴマかす。 隋や唐について、光村は「中国(隋)」や「中国(唐)」の表記。-->
[[File:King of Na gold seal.jpg|260px|thumb|left|金印。]]
57年、日本は、{{ruby|魏|ぎ}}の{{ruby|皇帝|こうてい}}から、'''金印'''などを受け取りました。
<!-- 日本文教出版『日本の歩み』検定教科書で、金印を紹介。 -->
{{-}}
;{{ruby|古墳|こふん}}時代
[[画像:NintokuTomb Aerial photograph 2007.jpg|thumb|{{ruby|仁徳天皇陵|てんのうりょう}}と思われている{{ruby|大山|だいせん}}古墳。前方後円墳、{{ruby|大阪|おおさか}}府{{ruby|堺|さかい}}市]]
3世紀から4世紀ごろになると、王や{{ruby|豪族|ごうぞく}}をほうむる大きな墓がつくられはじめました。
このような、大きな王などをほうむった大きな墓を '''{{ruby|古墳|こふん}}'''といいます。
古墳は,特に{{ruby|近畿|きんき}}地方から{{ruby|瀬戸内海沿岸|せとないかいえんがん}}の{{ruby|地域|ちいき}}に見られます。
この、3世紀ごろから7世紀ごろの時代を '''古墳時代''' といいます。
古墳時代の文化のことを 古墳文化 といいます。
古墳には、いろいろな形のものがあります。円形に{{ruby|盛|も}}り上がった古墳を{{ruby|円墳|えんふん}}といいます。四角く盛り上がった古墳を{{ruby|方墳|ほうふん}} といいます。円墳と方墳があわさったような、かぎ{{ruby|穴|あな}}のような形の古墳を {{ruby|前方後円墳|ぜんぽうこうえんふん}} といいます。
{{ruby|大阪|おおさか}}府{{ruby|堺|さかい}}市にある {{ruby|大仙|だいせん}}(大山)古墳 は、日本で最大の面積の古墳です。
大仙古墳は、まわりが3重の{{ruby|濠|ほり}}で、かこまれています。
* 古墳の{{ruby|副葬|ふくそう}}品
[[File:KofunSoldier.jpg|thumb|left|140px|はにわ。{{ruby|武装|ぶそう}}男子立像({{ruby|群馬|ぐんま}}県{{ruby|太田|おおた}}市出土)]]
[[画像:HaniwaHorse.JPG|thumb|190px|はにわ。(馬形{{ruby|埴輪|はにわ}})]]
古墳からは、鏡や玉、{{ruby|剣|つるぎ}}などの副葬品が発見されている。ほかにも、'''はにわ''' という、土を焼いて作られた人型や馬型などの置き物が発見されています。
{{clear}}
==== {{ruby|大和政権|やまとせいけん}} ====
{{ruby|奈良|なら}}県の{{ruby|大和|やまと}}地方には、大きな{{ruby|古墳|こふん}}が多く発見されています。このことからこの地方に、有力な勢力があったと考えられている。この地方の有力な{{ruby|豪族|ごうぞく}}たちの政治勢力を '''{{ruby|大和政権|やまとせいけん}}''' といいます。
この大和政権の政府を 大和{{ruby|朝廷|ちょうてい}} と言い、その最高{{ruby|権力|けんりょく}}者を {{ruby|大王|おおきみ}} といいます。
[[File:Inariyama sword.JPG|thumb|350px|right|真ん中の、{{ruby|縦|たて}}に長いものが、{{ruby|発掘|はっくつ}}された{{ruby|鉄剣|てっけん}}。]]
{{ruby|埼玉|さいたま}}県の{{ruby|稲荷山|いなりやま}}古墳から見つかった{{ruby|鉄剣|てっけん}}には、「ワカタケル大王」という名が{{ruby|刻|きざ}}まれた文が発見されました。この文から、この地方の王は、ワカタケル大王に使えていたことがわかります。
{{ruby|熊本|くまもと}}県の {{ruby|江田船山|えだふなやま}}古墳 にも、一部が読めなくなっていましたが、「ワ□□□ル大王」という同じ名の刻まれた鉄刀があり、ワカタケル大王の支配する{{ruby|領域|りょういき}}が、{{ruby|関東|かんとう}}地方から{{ruby|九州|きゅうしゅう}}までの広い{{ruby|範囲|はんい}}におよんでいたことがわかります。
{{コラム|ヤマトタケルの物語|
{{ruby|皇子|おうじ}}であるヤマトタケルノミコトは、{{ruby|武勇|ぶゆう}}にすぐれていました。かれは父の命令で九州に行き、{{ruby|朝廷|ちょうてい}}にしたがわない{{ruby|豪族|ごうぞく}}である クマソ をたおしました。
それから{{ruby|関東|かんとう}}に行き、広い野原で焼きうちにあってしまいましたが、きりぬけて、関東を{{ruby|征服|せいふく}}しました。
しかし、タケルは帰る{{ruby|途中|とちゅう}}で、病気で なくなりました。そして、タケルは大きな白い鳥になって、{{ruby|大和|やまと}}のほうへ飛んでいきました。
}}
* {{ruby|仏教|ぶっきょう}}の伝来
また、{{ruby|仏教|ぶっきょう}}も、外国から伝わりました。538年に、{{ruby|朝鮮|ちょうせん}}半島の{{ruby|百済|くだら}}という国の王から、仏像や{{Ruby|経典|きょうてん}}が、日本の{{ruby|天皇|てんのう}}に送られました。
{{clear}}
== {{ruby|天皇|てんのう}}を中心とした国づくり ==
~{{ruby|聖徳太子|しょうとくたいし}}の登場~
{| class="wikitable" style="float:right"
|+ {{ruby|聖徳太子|しょうとくたいし}}
| 年 || 年{{ruby|齢|れい}} || {{ruby|行|おこな}}ったこと || 社会のできごと
|-
! style="text-align: left;" colspan="4" | 6世紀
|-
| || || || {{ruby|豪族|ごうぞく}}どうしが争う
|-
|574 || 1才 || 聖徳太子が生まれる ||
|-
| || || || {{ruby|蘇我|そが}}氏が{{ruby|権力|けんりょく}}をにぎる
|-
|589 || || || {{ruby|隋|ずい}}が中国を統一する
|-
|593 || 20才 || 聖徳太子が{{ruby|摂政|せっせい}}になる ||
|-
! style="text-align: left;" colspan="4" |7世紀
|-
|603 || 30才 || {{ruby|冠位十二階|かんいじゅうにかい}}を定める ||
|-
|604 || 31才 || {{ruby|十七条|じゅうななじょう}}の{{ruby|憲法|けんぽう}}を定める ||
|-
|607 || 34才 || {{ruby|小野妹子|おののいもこ}}を{{ruby|遣隋使|けんずいし}}として送る ||
|-
|618 || || || {{ruby|隋|ずい}}がほろんで{{ruby|唐|とう}}になる
|-
|622 || 49才 || 聖徳太子がなくなる ||
|-
|645 || || || {{ruby|大化|たいか}}の改新
|-
|}
<!-- ネットではデマで「今の検定教科書に『聖徳太子』の名前は無く、『厩戸王』になっている。」というデマがありますが、
日本文教出版、『日本の歩み 小学校の社会6上』、平成22年3月10日 検定済み版、平成25年2月10日発行、30ページ・31ページ、
東京書籍、『新しい社会6上』、27ページ、平成22年2月10日 検定済み版、平成26年1月15日 発行、27ページ、
光村書店、『社会6』、平成22年3月10日 検定版、平成26年2月5日 発行、32ページ、
などに、堂々と『聖徳太子』と書いてあります。デマに騙されないようにしましょう。 -->
日本では、6世紀ごろから、{{ruby|豪族|ごうぞく}}の{{ruby|影響力|えいきょうりょく}}が強まりました。豪族の{{ruby|反乱|はんらん}}や、豪族どうしの争いも起こり始めました。
この、豪族どうしの争いで、最終的に587年ごろ、{{ruby|蘇我馬子|そがのうまこ}}が勝ちました。
そして、女性である '''{{ruby|推古天皇|すいこてんのう}}''' による政治が行われましたが、蘇我氏の{{ruby|影響|えいきょう}}下にありました。
[[File:Prince Shotoku face2.svg|180px|thumb|聖徳太子]]
'''{{ruby|聖徳太子|しょうとくたいし}}'''({{ruby|厩戸王|うまやどのおう}})は、おばの推古天皇の政治を{{ruby|補助|ほじょ}}する {{ruby|摂政|せっしょう}}という仕事につきました。
:※ なお当時、「摂政」という用語は無い。のちの時代に、幼少の天皇や女性天皇などを助ける仕事のことを「摂政」と呼ぶようになった。
聖徳太子は蘇我馬子と協力し、これらの{{ruby|改革|かいかく}}をすすめました。
聖徳太子らによる改革のひとつに、'''{{ruby|十七条|じゅうしちじょう}}の{{ruby|憲法|けんぽう}}'''の制定があります。
* 十七条の憲法
役人の心がまえを記したものです。豪族などに対して、役人としての心がまえを述べたものでしょう。
{| style="border:1px solid #777; background-color:#ffffff; width:100%; margin:0.25em 0"
| style="padding:0.25em 0.5em" |'''十七条の憲法(要約)'''
1条 争いをやめ、なかよくしなさい。
2条 仏教を厚く保護しなさい。
3条 {{Ruby|天皇|てんのう}}の命令には{{ruby|従|したが}}いなさい。
5条 {{Ruby|裁判|さいばん}}は、公正に行いなさい。
12条 農民などの{{ruby|民|たみ}}から、勝手に税やみつぎ物をとってはいけません。
17条 重要なことを決めるときには、話し合いで決めなさい。
|}
聖徳太子らの行った重要な{{ruby|政策|せいさく}}には、外交政策もあります。ユーラシア大陸の一部を支配していた '''{{ruby|隋|ずい}}''' という国との外交です。
607年に、外交の使者として '''{{ruby|小野妹子|おののいもこ}}''' たちを 隋に送ります。この使者を '''{{ruby|遣隋使|けんずいし}}''' といいます。
なお、小野妹子は男だと考えられています。
外交の結果、日本は隋と国交を結びました。また、隋の文化や制度は日本よりも進んでいたので、日本は多くの文化や制度を取り入れました。
* {{ruby|冠位十二階|かんいじゅうにかい}}の制
聖徳太子らによる改革には、'''{{ruby|冠位十二階|かんいじゅうにかい}}の制'''というものもあります。これは、家がらに関係なく有能な役人を採用するための制度です。能力や手がらによって、役人に位が与えられます。位は、一代かぎりです。
役人の位を12{{ruby|段階|だんかい}}に分けたので、このような名前で{{ruby|呼|よ}}ばれます。
<!-- 東京書籍の教科書で、冠位十二階を紹介している。 -->
* {{Ruby|法隆寺|ほうりゅうじ}}の{{Ruby|建立|こんりゅう}}
[[ファイル:Horyu-ji08s3200.jpg|thumb|法隆寺。{{ruby|金堂|きんどう}}と{{ruby|五重塔|ごじゅうのとう}}]]
[[File:Shakyamuni Triad Horyuji2.JPG|thumb|法隆寺の{{ruby|釈迦三尊像|しゃかさんぞんぞう}}(金堂)]]
聖徳太子は、607年に, 現在の{{ruby|奈良|なら}}県に{{Ruby|法隆寺|ほうりゅうじ}}を建てさせました。法隆寺は、現存する木造建築としては世界最古です。法隆寺は、1993年に世界文化{{ruby|遺産|いさん}}に登録されました。
;さまざまな{{ruby|改革|かいかく}}
622年に、{{ruby|聖徳太子|しょうとくたいし}}が{{ruby|亡|な}}くなりました。聖徳太子の死後には、{{ruby|蘇我|そが}}氏の{{Ruby|権力|けんりょく}}が強まりました。
{{ruby|蘇我馬子|そがのうまこ}}も、626年に、なくなりました。
まず、蘇我馬子の子である{{ruby|蘇我蝦夷|そがのえみし}}の権力が強まりました。さらに、馬子の孫であり、蝦夷の子である 蘇我{{Ruby|入鹿|いるか}} の権力が強まりました。
'''645年'''に{{ruby|皇族|こうぞく}}の'''{{ruby|中大兄皇子|なかのおおえのおうじ}}'''と、{{ruby|豪族|ごうぞく}}の '''{{ruby|中臣鎌足|なかとみのかまたり}}''' との協力により、蘇我入鹿は殺害されました。蝦夷は、この事件を知り、自殺しました。
* {{Ruby|大化|たいか}}の{{Ruby|改新|かいしん}}
このあと、中大兄皇子らが権力を取り、さまざまな政治{{Ruby|改革|かいかく}}を行いました。この改革を {{Ruby|大化|たいか}}の{{Ruby|改新|かいしん}} といいます。645年に元号を「大化」と定めたので、この一連の改革は大化の改新と呼ばれています。
「大化」という元号により、日本では、はじめて元号が定められました。これは、中国を手本としたものでした。
* {{Ruby|公地公民|こうちこうみん}}
これまでは{{ruby|豪|ごう}}族や皇族たちが持っていた土地は、すべて朝廷のもの(朝廷が管理する)になりました。これを '''{{Ruby|公地公民|こうちこうみん}}''' といいます。
* {{Ruby|戸籍|こせき}}をつくる
人民の {{Ruby|戸籍|こせき}} を作り、それにもとづいて国が人々に土地を{{Ruby|与|あた}}え、仕事をさせました。
この当時の戸籍は、人民を1人ずつ、{{Ruby|公文書|こうぶんしょ}}に登録することで、住所や家族の名や年{{ruby|齢|れい}}、家の世帯主などを{{ruby|把握|はあく}}するためのものでした。
* {{Ruby|租|そ}}・{{Ruby|調|ちょう}}・{{ruby|庸|よう}}
{| class="wikitable" style="float:right"
|+ <span style="font-size: large;">{{ruby|一般|いっぱん}}の人々の{{ruby|負担|ふたん}}</span>
! colspan="2" | <span style="font-size: large;">種類</span> ||<span style="font-size: large;">内容</span>
|-
| rowspan="3" |<span style="font-size: large;"> 税 </span>
|<span style="font-size: large;">{{Ruby|租|そ}}</span>
|{{ruby|収穫|しゅうかく}}の約3~10%の{{ruby|稲|いね}}を{{ruby|納|おさ}}める。
|-
|<span style="font-size: large;">調</span>
|地方の特産物(糸、{{Ruby|絹|きぬ}}、わた、塩、<br />魚、海そう、鉄など)を納める。
|-
|<span style="font-size: large;">庸</span>
|都で年10日ほど働くか、布を納める。
|-
| rowspan="1" |<span style="font-size: large;"> {{ruby|兵役|へいえき}} </span>
|<span style="font-size: large;">{{ruby|防人|さきもり}}</span>
|九州北部で兵士を3年行う。
|-
|}
税の種類です。
:{{Ruby|租|そ}}とは、田の{{ruby|収穫|しゅうかく}}量の、約3~10%を、国に{{ruby|納|おさ}}める税です。
:{{Ruby|調|ちょう}}とは、地方の特産物を、国に納める税です。
:{{Ruby|庸|よう}}とは、都に出てきて年10日ほど働くか、布を納める税です
このほかに、{{Ruby|防人|さきもり}}という、九州で兵士として{{ruby|警備|けいび}}を行う、{{Ruby|兵役|へいえき}}の仕事がありました。
この防人のつらさを歌った歌として、つぎのような歌が残っています。
<div style="border:1px solid #000000;">
'''さきもりの歌''' (『{{Ruby|万葉集|まんようしゅう}}』より )
:: {{中付きルビ|3|唐|から|衣|ころも|裾|すそ}}に取りつき泣く子らを置きてそ来ぬや{{Ruby|母|おも}}なしにして
::(現代語{{Ruby|訳|やく}})唐衣のにすがって泣きつく子どもたちを、(防人に出るため)置いてきてしまったなあ。あの子たちには母もいないのに。
</div>
{{clear}}
* {{Ruby|大宝律令|たいほうりつりょう}}
701年に、 '''{{Ruby|大宝律令|たいほうりつりょう}}''' という、税金や都についての{{ruby|法律|ほうりつ}}が完成しました。
<!-- ※日本文教出版の教科書で、「大宝律令」という言葉が紹介されている。-->
;{{ruby|奈良|なら}}時代
[[File:Heijokyo.jpg|right|500px|平城京のイメージ図]]
710年に、都が{{ruby|奈良|なら}}の {{ruby|平城京|へいじょうきょう}} へと移りました。
この都が平城京にあった時代を '''{{ruby|奈良|なら}}時代''' といいます。
<!-- 厳密にはのちの794年に平安京に移る前に、長岡京に移っています。 -->
平城京は、{{ruby|碁盤|ごばん}}の目のように、区画が整理されています。
{{clear}}
{{clear}}
* 古事記と日本書紀
712年に『'''{{ruby|古事記|こじき}}'''』という{{Ruby|天皇家|てんのう}}や{{Ruby|貴族|きぞく}}などに伝わる、神話の時代をまとめた書がつくられました。
<!-- 日本文教出版の教科書で、古事記と日本書紀が紹介されている。-->
古事記には、神話の時代から{{Ruby|推古|すいこ}}天皇にいたるまでの出来事が書かれています。
また、日本の歴史書である『{{ruby|日本書紀|にほんしょき}}』が720年に完成しました。神話の時代の伝説から、7世紀末ごろの持統天皇に{{Ruby|至|いた}}るまでの国家と天皇の歴史について書いた書です。
{{clear}}
=== 大仏づくり ===
[[File:Daibutsu of Todaiji 3.jpg|thumb|right|300px|東大寺の大仏]]
[[File:Emperor Shomu Face2.svg|thumb|聖武天皇]]
8世紀のなかごろ、都では病気が流行し、多くの死者が出たり、さらに、{{ruby|貴族|きぞく}}の{{Ruby|反乱|はんらん}}が起きたりしたため、世の中が混乱しました。
{{Ruby|仏教|ぶっきょう}}を信じた'''{{ruby|聖武天皇|しょうむてんのう}}'''は、仏教の力を借りて人々の不安をしずめ、社会を安定させようとしました。
まず741年に国(今でいう都道府県)ごとに {{ruby|国分寺|こくぶんじ}} を建てさせました。
都には {{ruby|東大寺|とうだいじ}}を建てさせ、そのなかに大仏を作らせました。
[[ファイル:Gyouki Face2.svg|thumb|行基]]
このころ、'''{{ruby|行基|ぎょうき}}'''という{{ruby|僧|そう}}がいました。かれは、{{ruby|渡来人|とらいじん}}の子孫で、{{Ruby|民衆|みんしゅう}}のために用水の池や橋を造りながら、{{Ruby|諸国|しょこく}}をまわって教えを説いていたので、多くの人々にしたわれていました。
しかし、{{Ruby|朝廷|ちょうてい}}は、はじめは、行基の行動をとりしまりました。当時は、{{Ruby|民衆|みんしゅう}}への仏教の布教は禁止されていました。
朝廷からは、行基は{{Ruby|危険|きけん}}な人物だろうと思われていたのです。
大仏を作るのは、とても多くの労働力を必要とするので、朝廷には、人々の支持が必要でした。このため、民衆にしたわれていた僧の行基の活動を{{Ruby|認|みと}}めました。
{{-}}
=== {{Ruby|遣唐使|けんとうし}}と{{Ruby|鑑真|がんじん}} ===
中国の{{Ruby|帝国|ていこく}}が{{Ruby|唐|とう}}に変わっても、かつての{{Ruby|遣隋使|けんずいし}}と同様に、日本から中国の唐に、外交の使者の {{Ruby|遣唐使|けんとうし}} を送りました。
遣唐使として有名な人物には、{{Ruby|阿倍仲麻呂|あべのなかまろ}} や、{{Ruby|吉備真備|きびのまきび}} などがいます。
<!--※ 安倍仲麻呂は、教育出版の教科書で、章末のコラムで名前を紹介している。また、日本文教出版の教科書で、阿倍仲麻呂や吉備真備の名前を紹介している。-->
阿倍仲麻呂は、日本に帰国するために乗った船が{{ruby|難破|なんぱ}}したため日本に帰国できず、最終的に唐の{{Ruby|皇帝|こうてい}}に仕えることになりました。
吉備真備は日本に帰れました。吉備真備は2回唐にわたり、2回とも日本に帰国できました。
* {{Ruby|鑑真|がんじん}}
日本の朝廷らは、唐の有名な僧の '''{{Ruby|鑑真|がんじん}}''' に、日本でも仏教をひろめてほしいと、鑑真を日本へ招きました。これを受け、鑑真は日本へわたりましたが、5回も失敗し、6回目にようやく日本に着きました。6回目に日本についたころには、失明しました。
鑑真は、{{Ruby|奈良|なら}}に '''{{Ruby|唐招提寺|とうしょうだいじ}}''' を開き,そして多くの日本人の僧を育てました。
{{clear}}
* 正倉院
[[Image:Shoso-in.jpg|thumb|300px|正倉院正倉]]
[[Image:Azekura-dukuri JPN.JPG|thumb|right|230px|正倉院の宝物庫]]
{{Ruby|東大寺|とうだいじ}}にある {{Ruby|正倉院|しょうそういん}} には、{{ruby|奈良|なら}}時代の美術品や、{{Ruby|聖武天皇|しょうむてんのう}}が愛用した道具などが{{Ruby|収|おさ}}められています。
※「{{Ruby|螺鈿紫檀五絃琵|らでんしたんごげんのびわ}}」(図参照)や「{{Ruby|瑠璃杯|るりのつき}}」などの{{Ruby|宝物|ほうもつ}}も{{Ruby|保存|ほぞん}}されているのですが、画像を用意できません。外部サイトや参考書などで、画像を{{ruby|探|さが}}してください。
<gallery widths="250px">
Image:RED LACQUERED CABINET Shosoin N2.JPG|{{Ruby|赤漆文欟木御厨子|せきしつぶんかんぼくのおんずし}}
Image:8Lobed Mirror Inlay Shosoin.jpg|{{Ruby|平螺鈿背八角鏡|へいらでんはいのはっかくきょう}}
Image:Silver Backed Bronze Mirror Shosoin.JPG|{{Ruby|金銀山水八卦背八角鏡|きんぎんさんすいはっけはいのはっかくきょう}}
Image:LADIES UNDER TREES SCREEN4th Shosoin.JPG|{{Ruby|鳥毛立女屏風|とりげりつじょのびょうぶ}}第4(部分)
Image:ROCHECHI Screen Panel Shosoin NH44.JPG|{{Ruby|羊木臈纈屏風|ひつじきろうけちのびょうぶ}}
Image:Silver Incense Burner Shosoin.JPG|{{Ruby|銀薫炉|ぎんのくんろ}}
Image:Gold Silver Painted BOX Shosoin.JPG|{{Ruby|蘇芳地金銀絵箱蓋|すおうじきんぎんえのはこ}}
</gallery>
(これらはあくまで参考です。)
* 万葉集
和歌をまとめた {{Ruby|万葉集|まんようしゅう}} が759年ごろから{{Ruby|編纂|へんさん}}されました。
{{Ruby|貴族|きぞく}}だけでなく、農民や{{Ruby|防人|さきもり}}など様々な身分の者が作ったと思われる和歌も{{Ruby|収録|しゅうろく}}されています。
合計で4500首の歌が収録されています。
{{clear}}
== 貴族のくらしと文化 ==
~{{ruby|貴族|きぞく}}がさかえた時代~
:{{Ruby|桓武天皇|かんむてんのう}}は794年に都を{{ruby|京都|きょうと}}の '''{{ruby|平安京|へいあんきょう}}''' にうつしました。
[[画像:HeiankyouMapJapanese.svg|800px]]
奈良から平安京への寺院の移転は禁止されました。
他にも、社会の変化で、もはや、{{ruby|公地公民|こうちこうみん}}による昔の政治がうまくいかなくなり、政治のしかたを改める必要もあったのだと思われます。
政治の中心地が平安京であった、約400年間の時代を '''{{Ruby|平安|へいあん}}時代''' といいます。
* {{Ruby|摂関|せっかん}}政治
9世紀の中ごろになると{{Ruby|藤原鎌足|ふじわらのかまたり}}({{ruby|中臣|なかとみの}}鎌足)の子孫の一族である '''藤原氏''' が、{{Ruby|権力|けんりょく}}を強めました。
藤原氏の一族は、代々、{{Ruby|娘|むすめ}}を{{ruby|天皇|てんのう}}の きさき(妻)にしています。
すると、藤原氏は天皇の母方の親せきということになるので、藤原一族の権力が強まる、という仕組みで、さらに権力を強めました。
[[File:Fujiwara no Michinaga Face2.svg|thumb|{{Ruby|藤原道長|ふじわらのみちなが}}]]
藤原氏は、天皇が{{Ruby|幼|おさな}}いときは、藤原氏の者が{{Ruby|摂政|せっしょう}}となり政治の{{ruby|実権|じっけん}}をにぎり、天皇が成人しても藤原氏は{{Ruby|関白|かんぱく}}という地位になり実権をにぎり、政治を行いつづける、という手法で権力を強めました。
<!-- 日本文教出版の教科書で、藤原の一族について「関白」という言葉が紹介されている。-->
道長は、次の歌をよみました。
'''「この世をば わが世とぞ思{{ruby|ふ|(う)}} {{ruby|望月|もちづき}}の 欠けたることも なしと思{{Ruby|へ|(え)}}ば」'''
(この世は、望月(満月)のように欠けているものがなく、まるで{{ruby|私|わたし}}(道長)の物のようだ。)
[[ファイル:Byodoin Phoenix Hall Uji 2009.jpg|300px|thumb|left|平等院鳳凰堂]]
{{Ruby|道長|みちなが}}の子である {{ruby|藤原頼通|ふじわらのよりみち}} は、{{Ruby|京都|きょうと}}に '''{{Ruby|平等院鳳凰堂|びょうどういんほうおうどう}}''' を建てさせました。現在の10円玉の表面にもえがかれています。
[[ファイル:10JPY.JPG|thumb|現在の10円玉]]
{{clear}}
;平安時代の文化
* {{ruby|遣唐使|けんとうし}}の中止と国風文化
{{ruby|菅原道真|すがわらのみちざね}}の進言により、894年に{{ruby|遣唐使|けんとうし}}が中止されました。
[[File:Sugawara Michizane.jpg|thumb|200px|菅原道真]]
遣唐使の廃止の理由は、すでに唐から多くのことを学んであること、ユーラシア大陸で{{Ruby|内乱|ないらん}}が多く唐が弱っていること、船の{{Ruby|遭難|そうなん}}など死の{{Ruby|危険|きけん}}が多く有能な人材の命を損ないかねないこと、{{Ruby|経済|けいざい}}的な{{Ruby|負担|ふたん}}が大きい、などです。
この遣唐使の廃止により、日本の{{中付きルビ|2|貴|き|族|ぞく}}文化では、だんだんユーラシア大陸の文化の{{ruby|影響|えいきょう}}がうすれたかわりに、{{ruby|国風文化|こくふうぶんか}}と{{ruby|呼|よ}}ばれる日本独自の貴族文化が{{Ruby|発展|はってん}}しました。
[[画像:Hiragana origin new.svg|thumb|right|300px|漢字からひらがなへの変化]]
* かな文字の発明
ひらがな や カタカナ などの '''かな文字''' が、平安時代に発明されました。
ひらがなは、漢字の形をくずして発明されました。カタカナは漢字の へん や つくり などの一部をもとに発明されました。
[[ファイル:Katakana origin new.svg|thumb|left|300px|カタカナの由来]]
{{clear}}
ほかにも、歌集である'''{{Ruby|古今和歌集|こきんわかしゅう}}''' や '''{{Ruby|竹取物語|たけとりものがたり}}''' は、かな文字を用いた作品です。
* その他の文化
[[Image:Miniature Model of HigashiSanjoDono.jpg|thumb|375px|典型的な寝殿造である{{ruby|東三条殿|ひがしさんじょうどの}}の復元{{ruby|模型|もけい}}(京都}文化博物館)
----
1. {{ruby|寝殿|しんでん}}、2. {{ruby|北対|きたのたい}}、3. {{Ruby|細殿|ほそどの}}、4. {{Ruby|東対|ひがしのたい}}、5. {{Ruby|東北対|ひがしきたのたい}}、6. {{ruby|侍所|さむらいどころ}}、7. {{ruby|渡殿|わたどの}}、8. {{Ruby|中門廊|ちゅうもんろう}}、9. {{ruby|釣殿|つりどの}}]]
[[image:安部正弘の肖像.jpg|thumb|left|150px|{{Ruby|江戸|えど}}時代の束帯]]
[[File:十二単です.JPG|thumb|150px|left|十二単、京都{{Ruby|御所|ごしょ}}にて]]
{{Ruby|平安|へいあん}}時代には、貴族の衣服({{Ruby|正装|せいそう}})が変わります。
男の{{ruby|貴族|きぞく}}の服は {{ruby|束帯|そくたい}} になり、女の貴族の服は {{ruby|十二単|じゅうにひとえ}} となりました。
<!-- 一部の教科書が、束帯および十二単について紹介している -->
貴族の住居の形が {{ruby|寝殿造|しんでんづくり}} になりました。
{{clear}}
[[画像:Genji emaki azumaya.jpg|thumb|300px|right|大和絵『源氏物語絵巻』 <br>
源氏物語は人気作となり、絵巻物まで作られるほどになりました。この絵は、源氏物語の作品のなかの場面をえがいたものです。]]
文学の物語では『{{ruby|源氏|げんじ}}物語』という{{ruby|創作|そうさく}}の物語が、貴族である{{ruby|紫式部|むらさきしきぶ}}によって書かれました。貴族の「{{ruby|光源氏|ひかるげんじ}}」という人物を主人公にして貴族の{{ruby|恋愛|れんあい}}などを書いています。
「源氏物語{{ruby|絵巻|えまき}}」も{{ruby|描|えが}}かれました。
{{ruby|随|ずい}}筆では、貴族である{{ruby|清少納言|せいしょうなごん}}が『枕草子』を記しました。清少納言が、日常生活や自然を観察して、感想をつづったものです。
絵画には、日本の風景などを書いた {{ruby|大和絵|やまとえ}} が現れ、寝殿造の{{ruby|屋敷|やしき}}の{{ruby|屏風|びょうぶ}}や ふすま などに描かれました。さきほど紹介した源氏物語絵巻も、大和絵です。
<!-- 「大和絵」は、教育出版が紹介している -->
{{clear}}
== 武士の世の中へ ==
;平安時代の武士たち
平安時代には、地方の{{ruby|豪族|ごうぞく}}たちが{{ruby|私有|しゆう}}地を広げていきました。
9世紀の中ごろから、豪族や有力な農民たちは、自分たちの土地や財産をまもるためには、兵力をたくわえました。一族の者や、手下の農民たちに{{ruby|武装|ぶそう}}させるようになりました。
このようにして、'''武士'''ができていきました。武士たちは、一族の かしら をリーダーとして、それぞれの一族ごとに 武士団 を結成しました。
* 平氏
[[ファイル:Taira no Kiyomori.jpg|thumb|200px|平清盛]]
この時代に、{{ruby|天皇|てんのう}}の{{ruby|座|ざ}}をめぐって{{ruby|皇族|こうぞく}}どうしで{{ruby|権力|けんりょく}}争いが起きると、武士たちは、これらの戦いに加わりました。
その結果、 '''{{ruby|平清盛|たいらのきよもり}}'''の加わっていた '''{{ruby|平氏|へいし}}''' の側が勝利したので、清盛が権力をにぎっていきました。
そして1167年には、平清盛は、武士としては初めて {{ruby|太政大臣|だいじょうだいじん}} の位につきました。
平清盛は、清盛のむすめを、天皇の{{ruby|后|きさき}}(妻)にさせました。
このようにして、平氏の一族が、{{ruby|朝廷|ちょうてい}}での重要な役職を得ていき、権力を強めました。
[[File:Itsukushima Hiroshima.JPG|thumb|250px|厳島神社。平氏の一族は、一族の{{ruby|繁栄|はんえい}}を厳島神社に願った。{{ruby|国宝|こくほう}}。世界{{ruby|遺産|いさん}}。]]
清盛は 海の神をまつっている {{ruby|厳島|いつくしま}}神社 を{{ruby|敬|うやま}}いました。厳島神社は、今でいう{{ruby|広島|ひろしま}}県の{{ruby|瀬戸内海|せとないかい}}の側にあります。
そして厳島神社の神を、平氏一族がまつるべき{{ruby|氏神|うじがみ}}としました。
しかし、平氏の{{ruby|独裁|どくさい}}的な政治に、ほかの貴族やほかの武士などからの不満が高まっていきました。
それらがのちに、平氏をたおすことへとつながりました。
* {{ruby|源氏|げんじ}}と{{ruby|平氏|へいし}}の戦い
ついに1180年、{{ruby|皇族|こうぞく}}は、{{ruby|平氏|へいし}}をほろぼすように命令を下しました。
[[File:Minamoto2.jpg|thumb|250px|源頼朝と伝えられる人物
:頼朝が子供のころ、{{ruby|平治|へいじ}}の{{ruby|乱|らん}}で頼朝の父の{{ruby|義朝|よしとも}}が平氏と戦って敗北したので、小さいころに源頼朝は、伊豆に流されていた。やがて成人して大人になった頼朝が、平氏への反乱をした。]]
{| class="wikitable" style="float:right"
|+ 源氏と平氏の戦い
! 年 !! おもなできごと
|-
| 1180 || 源頼朝が{{ruby|伊豆|いず}}(現在の{{ruby|静岡|しずおか}}県)で挙兵するが、{{ruby|石橋山|いしばしやま}}の戦い で平氏にやぶれる<br> 源頼朝が富士川の戦いで平氏をやぶる
|-
| 1181 || {{ruby|平清盛|たいらのきよもり}}がなくなる
|-
| 1183 || {{ruby|源義仲|みなもとのよしなか}}が、{{ruby|倶利伽羅峠|くりからとうげ}}の戦いで平氏をやぶる
|-
| 1184 || {{ruby|源義経|みなもとの よしつね}}が {{ruby|一ノ谷|いちのたに}}の戦い で平氏をやぶる
|-
| 1185 || 源義経が{{ruby|八島|やしま}}の戦いで平氏をやぶる <br> 源義経が{{ruby|壇ノ浦|だんのうら}}の戦いで平氏をやぶる <br> 平氏がほろびる
|-
|}
{{-}}
* {{ruby|源平|げんぺい}}の戦い
{{ruby|源頼朝|みなもとのよりとも}} は、関東で兵をあげました。{{ruby|富士|ふじ}}川の戦いで平氏をやぶったあと、頼朝は関東の{{ruby|鎌倉|かまくら}}に、とどまって、勢力の{{ruby|基盤|きばん}}をかためました。
そして頼朝は、平氏に不満をもっている武士の{{ruby|北条氏|ほうじょうし}}など関東の武士とも協力して、勢力をのばしていきました。
頼朝は、自らは鎌倉にとどまり、代わりに弟の '''{{ruby|源義経|みなもとのよしつね}}''' の兵を借りて、平氏を西へと追いつめていきました。
1185年、{{ruby|源義経|みなもとのよしつね}}らはついに本州の西の{{ruby|端|はし}}である今の{{ruby|山口|やまぐち}}県の{{ruby|下関|しものせき}}で起こった {{Ruby|壇ノ浦|だんのうら}}の戦いで、ついに平氏をほろぼしました。
これらの源氏と平氏との一連の戦いを「{{ruby|源平|げんぺい}}の戦い」あるいは「源平合戦」といいます。
[[File:Minamoto no Yoshitsune Face2.svg|thumb|源義経]]
;{{ruby|鎌倉|かまくら}}時代
{{ruby|平氏|へいし}}の{{ruby|滅亡|めつぼう}}後、頼朝が{{ruby|朝廷|ちょうてい}}に要求したことより、新しい制度として、国ごとに守護が1人ずつ置かれ、{{ruby|荘園|しょうえん}}や公領には '''{{ruby|地頭|じとう}}''' が置かれました。
守護の{{ruby|役割|やくわり}}は、その国の軍や{{ruby|警察|けいさつ}}の管理者でした。地頭の役割は、{{ruby|荘園|しょうえん}}および公領の管理や、税である{{ruby|年貢|ねんぐ}}の取り立てでした。
頼朝は1185(1192)年に朝廷から '''{{ruby|征夷大将軍|せいいたいしょうぐん}}''' に任命されました。
頼朝は{{ruby|鎌倉|かまくら}}(現在の{{ruby|神奈川|かながわ}}県)に、武家による政治の{{ruby|拠点|きょてん}}である {{ruby|鎌倉幕府|かまくらばくふ}}を開きました。鎌倉に幕府があった時代を '''{{ruby|鎌倉|かまくら}}時代''' といいます。
この鎌倉時代から、政治の{{ruby|権力|けんりょく}}が朝廷から幕府へと移っていき、武家政治の時代となっていきました。
幕府の行政の仕組みは、朝廷による制度とは {{ruby|異|こと}}なります。
{{ruby|将軍|しょうぐん}}の家来の武士のことを '''{{ruby|御家人|ごけにん}}''' といいます。
将軍は、「'''ご{{ruby|恩|おん}}'''」と{{ruby|呼|よ}}ばれる、御家人たちの土地の{{ruby|権利|けんり}}を保証する{{ruby|政策|せいさく}}をとるかわりに、{{ruby|奉公|ほうこう}}と呼ばれる、御家人たちは将軍のために{{ruby|警備|けいび}}を行ったり、戦争の時には戦ったりするという{{ruby|主従|しゅじゅう}}関係を、 '''ご恩と奉公''' といいます。
[[File:ご恩と奉公.svg|thumb|400px|ご恩と奉公]]
「'''いざ{{ruby|鎌倉|かまくら}}'''」といって、御家人は戦いが起きれば、すぐに鎌倉へと行って将軍に指示を聞き、将軍のために戦うべき、とされていました。<!-- 東京書籍などが紹介 -->
この主従関係は、土地を仲立ちとしています。
御家人たちの{{ruby|屋敷|やしき}}は、{{ruby|武家造|ぶけづくり}}という作りで、屋敷のまわりに{{ruby|堀|ほり}}があったり、{{ruby|塀|へい}}で囲まれていたりと、戦いにそなえたつくりになっています。
「{{ruby|一所懸命|いっしょけんめい}}」という言葉がありますが、これは、御家人たちが自分たちの領地を守るために命がけで戦う様子からできた言葉です。なお、これが転じて「{{ruby|一生|いっしょう}}懸命」となりました。
[[ファイル:Hojo Masako.jpg|thumb|200px|北条政子({{ruby|菊池容斎|きくちようさい}} 画、{{ruby|江戸|えど}}時代)]]
頼朝の死後は、頼朝の長男である{{ruby|頼家|よりいえ}}が次の{{ruby|将軍|しょうぐん}}となり、さらに次の将軍は頼朝の次男である{{ruby|実朝|さねとも}}となりましたが、幕府の{{ruby|実権|じっけん}}は、有力な御家人である北条氏の一族がにぎっていました。頼朝の妻は '''{{ruby|北条政子|ほうじょう まさこ}}''' で、その父である {{ruby|北条時政|ほうじょうときまさ}} が {{ruby|執権|しっけん}} という役職につき、北条時政らが幕府の実権をにぎりました。
北条氏のように、執権として政治の実権をにぎる政治の方法を {{ruby|執権|しっけん}}政治 といいます。
* {{ruby|承久|じょうきゅう}}の{{ruby|乱|らん}}
頼朝の死後、1221年に{{ruby|朝廷|ちょうてい}}は、政治の{{ruby|実権|じっけん}}を武士から取りかえそうとして、幕府をたおせという命令を出しました。
このとき、{{ruby|北条政子|ほうじょうまさこ}}は、武士たちに、「あなたたちに頼朝があたえたご{{ruby|恩|おん}}は、山よりも高く、海よりも深いものです。その恩にむくいようとするものは、力を合わせて{{ruby|敵軍|てきぐん}}をうちとり、{{ruby|幕府|ばくふ}}をまもるでしょう。」と、武士たちによびかけ、武士たちをまとめた。
この結果、北条氏の幕府軍と、朝廷の軍との戦争になり、北条氏の側が勝利しました。
そして、幕府の権力は、{{ruby|朝廷|ちょうてい}}をしのぐほどになりました。
また、幕府は、武士のための{{ruby|法律|ほうりつ}}をととのえました。
* 武士のくらし
[[Image:Yabusame 02.jpg|thumb|やぶさめ]]
武士は、日ごろから [[w:流鏑馬|やぶさめ]] などの武芸にはげんでいました。「やぶさめ」とは、馬にのって走りながら、いくつもある板の的をつぎつぎに{{ruby|射|い}}る武芸のことです。
{{-}}
* モンゴルとの戦い
* モンゴル{{ruby|帝国|ていこく}}の{{ruby|元|もと}}
13世紀、中国をふくむユーラシア大陸の広い{{ruby|地域|ちいき}}では モンゴル民族が モンゴル{{ruby|帝国|ていこく}}を築いていました。
モンゴル帝国はユーラシア大陸を制圧すると、モンゴルの国号(国名)を {{ruby|元|げん}} に変えました。
* {{ruby|元寇|げんこう}}
モンゴルは、まず{{ruby|朝鮮|ちょうせん}}をしたがえました。つづいて、日本にも、モンゴルに{{ruby|従|したが}}えと、元は使者を日本によこしました。
しかし、ときの{{ruby|執権|しっけん}}であった{{ruby|北条時宗|ほうじょうときむね}}は、これを断りました。
そして、元は、1274年と1281年の2度にわたって、軍隊とともに日本にせめこみました。
最終的には暴風雨のえいきょうにより元軍が引き上げたので日本が勝利しましたが、元との戦いでは元軍の火薬を用いた新兵器(日本では「てつはう」と{{ruby|呼|よ}}ばれた)、毒矢、元軍の集団戦に苦戦しました。
[[ファイル:Mōko Shūrai Ekotoba.jpg|thumb|700px|1274年のモンゴル軍の{{ruby|襲来|しゅうらい}}において、矢が飛びかい、てつはうが{{ruby|炸裂|さくれつ}}する中を、モンゴル軍へこうげきする御家人の {{ruby|竹崎季長|たけさきすえなが}} と、応戦・{{ruby|逃亡|とうぼう}}するモンゴル兵]]
右の合戦の絵は、{{ruby|蒙古襲来絵詞|もうこしゅうらいえことば}}という絵巻物の一部の絵です。
「蒙古」とはモンゴルのことです。
{{clear}}
1度目の戦いのあと、幕府は次のモンゴル軍がせめこんでくるのに備え、今の{{ruby|福岡|ふくおか}}県にある{{ruby|博多|はかた}}湾の{{ruby|沿岸|えんがん}}に こうげきを防ぐための{{ruby|石垣|いしがき}}である'''{{ruby|石塁|せきるい}}'''を築かせました。
1281年に、元の軍勢は、14万人もの大軍を率いてふたたび日本に おそいかかりましたが、日本が勝利しました。
この2度の元軍の{{ruby|襲来|しゅうらい}}を あわせて '''{{ruby|元寇|げんこう}}''' といいます。
御家人は元寇で多くの費用を使いましたが、幕府は ご{{ruby|恩|おん}}としてのほうびの土地を、十分に用意できなかったので、{{ruby|御家人|ごけにん}}は{{ruby|幕府|ばくふ}}に不満を持つようになりました。
* その他
{{ruby|鎌倉|かまくら}}時代には、{{ruby|彫刻|ちょうこく}}で {{ruby|金剛力士像|こんごうりきしぞう}}がつくられました。<!-- 教育出版の教科書で紹介している-->
※金剛力士像の画像が用意できないので、ここには画像をのせません。
金剛力士像は、{{ruby|奈良|なら}}県の{{ruby|東大寺|とうだいじ}}の{{ruby|南大門|なんだいもん}}にあります。
{{-}}
== 今に伝わる室町文化 ==
[[File:Kinkaku Yoshimitsu2.svg|thumb|left|300px|金閣と足利義満]]
[[File:Ginkaku yoshimasa2.svg|thumb|center|300px|銀閣と足利義政]]
<!-- 検定教科書に「鹿苑寺」や「慈照寺」などの名称は無いです。「金閣」「銀閣」のみです。東京書籍『新しい社会6』、光村書店『社会6』および、日本文教出版『日本の歩み 小学生の社会6上』で確認。 -->
{{-}}
1336年、今の{{ruby|京都|きょうと}}の{{Ruby|室町|むろまち}}に{{ruby|室町|むろまち}}幕府ができました。
1394年、室町幕府の3代{{ruby|将軍|しょうぐん}}である{{ruby|足利義満|あしかがよしみつ}}は、京都の{{Ruby|北山|きたやま}}に '''{{Ruby|金閣|きんかく}}''' を建てました。金閣には、金ぱくがはられています。
1482年、室町幕府の8代将軍である{{Ruby|足利義政|あしかがよしまさ}}は、京都の{{Ruby|東山|ひがしやま}}に '''{{ruby|銀閣|ぎんかく}}''' を建てました。銀閣には、銀ぱくは はられていません。
{{-}}
* 生活
[[File:Tukinami huuzoku taue.jpg|thumb|400px|室町時代の田植えの様子。『{{ruby|月次風俗図屏風|つきなみふうぞくずびょうぶ}}』より]]
色々な村で、用水路や共用地の管理など村の運営のしかたについて、寺社などに集まって自主的に相談しあって決めるようにするなど、農民どうしの集まりが開かれるようになりました。
室町時代には、農民は、{{Ruby|厳|きび}}しい領主に対しては、集団で対立するようになりました。
{{ruby|年貢|ねんぐ}}が重い場合は、集団で領主におしかけてうったえでたり、全員が村から{{ruby|逃亡|とうぼう}}したりして{{ruby|対抗|たいこう}}しました。
{{-}}
* 室町文化
* {{Ruby|書院造|しょいんづくり}}
[[File:Takagike Kashihara JPN 001.jpg|thumb|400px|書院造]]
'''{{Ruby|書院造|しょいんづくり}}'''という、和室の様式が出てきました。
特ちょうは、
* {{ruby|違|ちが}}い{{ruby|棚|だな}}という、{{ruby|段差|だんさ}}になった棚がある
* {{ruby|障子|しょうじ}}やふすまがある
* {{ruby|畳|たたみ}}の{{ruby|床|ゆか}}がある
などです。
これが、今の和室の様式につながっています。
* 水墨画
[[ファイル:SesshuToyo.jpg|left|thumb|180px|水墨画。秋冬山水図のうち秋景(東京国立博物館)]]
[[ファイル:Portrait of Sesshu.jpg|thumb|220px|雪舟]]
鎌倉時代に、中国から '''{{ruby|水墨画|すいぼくが}}''' の技法が日本に伝わりました。
はじめ日本では、水墨画は、仏教の世界をえがくためにえがかれました。
しかし、室町時代になり、{{ruby|雪舟|せっしゅう}}は、水墨画と仏教を分けて考え、仏教にとらわれずに、自然の風景などの水墨画をえがきました。
{{コラム|雪舟|雪舟は、{{ruby|幼|おさな}}いとき、今の{{ruby|岡山|おかやま}}県の{{ruby|興福寺|こうふくじ}}に{{ruby|預|あず}}けられていました。しかし雪舟はそこで{{ruby|修行|しゅぎょう}}をせず絵ばかりかいていました。そこでおこった{{ruby|和尚|おしょう}}は雪舟を柱にしばりつけました。しばらくして和尚が様子を見に行くと、雪舟の足元にねずみがいたので、追いはらおうとしましたが、ねずみは動きません。雪舟が、なみだでかいたねずみだったのです。和尚は、それ{{ruby|以降|いこう}}、絵をかくのを{{Ruby|認|みと}}めました。}}
[[File:Sesshu - View of Ama-no-Hashidate.jpg|thumb|600px|雪舟の水墨画、『{{ruby|天橋立図|あまのはしだてず}}』]]
{{-}}
* 茶の湯
書院造の部屋で、おちついた作法にしたがって茶を飲む、'''{{ruby|茶|ちゃ}}の{{ruby|湯|ゆ}}'''が始まりました。茶の湯は、今でも{{ruby|茶道|さどう}}として、受けつがれています。
* {{Ruby|能|のう}}
{{ruby|観阿弥|かんあみ}}と{{Ruby|世阿弥|ぜあみ}}の親子が、芸能のひとつである '''{{ruby|能|のう}}''' を形成しました。
{{clear}}
== {{Ruby|戦国|せんごく}}の世の統一 ==
* {{ruby|鉄砲|てっぽう}}とキリスト教の伝来
{{-}}
* {{ruby|鉄砲|てっぽう}}
[[ファイル:Arquebus.jpg|thumb|right|300px|種子島{{ruby|火縄銃|ひなわじゅう}}<br>当時の鉄砲は,つつ先から火薬とたまをいれるものでした。なお,たまがとどくきょりは,100mほどだといわれています。]]
1543年に,現在の鹿児島県の島である{{ruby|種子島|たねがしま}}に,ポルトガル人を乗せた船が流れ着きました。
このとき, ポルトガル人から'''{{ruby|鉄砲|てっぽう}}'''が日本に伝わりました。それまでの日本では鉄砲は知られておらず, 日本にとっては鉄砲は新しい兵器でした。
やがて日本の各地に鉄砲の情報が広がり、大量に鉄砲が作られるようになりました。
鉄砲が日本に伝わってから少しあとのころ,キリスト教が日本に伝わりました。
[[File:Xabier face2.svg|thumb|250px|ザビエル]]
1549年にはスペイン人の{{ruby|宣教師|せんきょうし}}である'''ザビエル'''が日本の{{ruby|鹿児島|かごしま}}に来て,'''キリスト教'''を伝えました。
そのあと,他の宣教師も,次々と日本にやってきました。
宣教師は,日本とヨーロッパとのあいだの貿易の世話もしたので,大名たち(特に西日本)の中にはキリスト教を保護する者もいました。
このようなことをきっかけに,日本は,ポルトガルやスペインとの貿易を始めました。ポルトガル人・スペイン人の商船が,{{Ruby|九州|きゅうしゅう}}の{{ruby|長崎|ながさき}}や{{ruby|平戸|ひらど}}や,{{ruby|大阪|おおさか}}の{{ruby|堺|さかい}}の港などを{{ruby|訪|おとず}}れて貿易をするようになりました。
;天下統一へ
~'''織田信長・豊臣秀吉・徳川家康'''~
* 織田信長
* 桶狭間の戦い
[[File:Odanobunaga.jpg|250px|thumb|織田信長]]
[[File:Sengoku period 1565.png|thumb|500px|1565年の領地の様子]]
<!-- ※教育出版の教科書に書いてあります。 -->
{{ruby|戦国|せんごく}}時代には各地に大名がおり,多くの大名どうしが争っていた。1560年{{ruby|以降|いこう}}から,まず,{{ruby|尾張|おわり}}(現在の愛知県の西部)の大名であった '''{{ruby|織田信長|おだのぶなが}}'''が勢力を{{ruby|拡大|かくだい}}し始めました。
1560年に,愛知県にいる織田の領地に,となりの静岡県の{{ruby|今川義元|いまがわよしもと}}がせめこみ、{{ruby|桶狭間|おけはざま}}の戦い が起こりました。
この戦いで,今川義元を織田らの軍が{{ruby|討|う}}ち取り,今川義元は{{ruby|亡|な}}くなりました。このため,今川軍は命令の{{ruby|系統|けいとう}}がくずれてしまい,敗北しました。
桶狭間の戦い以降,信長は西へと勢力を拡大しました。1568年には,{{ruby|室町幕府|むろまちばくふ}}の{{ruby|足利|あしかが}}氏の一族である{{ruby|足利義昭|あしかがよしあき}}を{{ruby|支援|しえん}}して京都に入りました。義昭はのちに,室町幕府の15代{{ruby|将軍|しょうぐん}}となりました。
1569年,信長は,キリスト教の{{ruby|宣教師|せんきょうし}}と初めて出会い,かれにキリスト教の布教を許可しました。信長本人はキリスト教の信者ではなく,信長のねらいは宣教師のもたらす情報などがねらい,あるいは当時に信長と{{ruby|敵対|てきたい}}していた仏教勢力への{{ruby|対策|たいさく}}などと,いっぱんに言われています。
1571年には, 仏教勢力である{{ruby|延暦寺|えんりゃくじ}}が織田を{{Ruby|裏|うら}}切ったことから、織田信長は,{{ruby|比叡山延暦寺|ひえいざんえんりゃくじ}} を焼き{{ruby|討|う}}ちにしました。
<!-- ※ 日本文教出版の教科書『日本のあゆみ』で,延暦寺の焼き討ちなどを紹介しています。 -->
そして,1573年ごろ,室町幕府は ほろびました。
* 長篠の戦い
[[File:Battle of Nagashino word2.svg|700px|thumb|長篠の戦い。左側が織田・徳川の連合軍。右側が武田軍。]]
1575年に{{ruby|三河|みかわ}}(現在の{{ruby|愛知|あいち}}県の東部)で、{{ruby|織田|おだ}}・{{ruby|徳川|とくがわ}}の{{ruby|同盟|どうめい}}と,{{ruby|甲斐|かい}}の大名の{{ruby|武田勝頼|たけだかつより}}らの戦争である '''{{ruby|長篠|ながしの}}の戦い'''が起きました。この戦いでは,織田・徳川の同盟が勝利し,武田は敗北しました。
{{-}}
{{Clear}}
* {{Ruby|安土城|あづちじょう}}
<!-- ※ 小学の範囲内です。検定教科書に想像図や復元図などがかいてあります。 -->
1576年,織田信長は{{ruby|近江|おうみ}}(現在の{{ruby|滋賀|しが}}県)にある小高い山の上に '''{{ruby|安土城|あづちじょう}}''' を築かせました。
安土城の城下町では,自由に商売をできるようにしたので,とてももうかりました。
また,安土の城下町には,キリスト教の学校や教会も建てられました。
安土城の城下町付近では、商業をさかんにするため,関所で通行税をとることを{{ruby|廃止|はいし}}しました。
なお、このような政策を {{ruby|楽市楽座|らくいちらくざ}}といいます。
* 本能寺の変
[[File:Sengoku period 1582.png|thumb|400px|1582年の領地の様子]]
{{Ruby|織田信長|おだのぶなが}}を、家臣の '''{{ruby|明智光秀|あけちみつひで}}'''が{{ruby|裏|うら}}切り,明智の軍が信長におそいかかり,この本能寺で信長は{{ruby|死亡|しぼう}}しました。
なお、この一連の事件を '''本能寺の{{Ruby|変|へん}}''' といいます。
'''信長は,天下統一をなしとげられませんでした。'''
'''信長は,天下統一をしていません。'''
天下統一ならず,信長は死亡します。
{{-}}
;豊臣秀吉の{{Ruby|台頭|たいとう}}
[[File:Toyotomi_Hideyoshi_c1598_Kodai-ji_Temple.png|thumb|250px|豊臣秀吉。秀吉は,もともと農民でしたが,武士になりました。そして,信長に{{Ruby|認|みと}}められ,信長の部下になりました。]]
[[File:Osaka Castle Keep tower of 「A figure of camp screen of the Osaka summer」.jpg|thumb|大阪城]]
信長の死を聞いた'''{{ruby|豊臣秀吉|とよとみひでよし}}'''は,ただちに毛利との停戦をし,そして京都・大阪に向かい,{{Ruby|明智光秀|あけちみつひで}}をたおしました。
その後も,秀吉にさからう大名をつぎつぎとたおし,支配をかためていきました。
このようにして,しだいに秀吉の地位は高まっていき,信長の領地を受けついでいきました。
1583年に秀吉は,大阪城を築かせ,そこを{{Ruby|本拠地|ほんきょち}}にしました。
そのあと,秀吉は各地の大名たちを平定して{{Ruby|従|したが}}えていきました。
そして1590年には,秀吉に従わなかった{{Ruby|北条|ほうじょう}}氏の治める関東の{{Ruby|小田原|おだわら}}をせめ,{{ruby|北条氏政|ほうじょううじまさ}}をほろぼしました。
1590年,秀吉に従っていなかった東北の{{Ruby|伊達|だて}}氏など東北の大名も,秀吉に従いました。こうして、'''秀吉が天下統一をなしとげました。'''
;秀吉の政策
* {{Ruby|検地|けんち}}
農民からねんぐを取るための土地の調査を'''{{Ruby|検地|けんち}}'''といいます。
検地は信長の時代からも行われていたが,秀吉は各地でちがっていた長さや面積などの単位を全国で統一させました。
そして記録によって,田畑の面積や,田の{{Ruby|収穫高|しゅうかくだか}}である'''{{ruby|石高|こくだか}}''',その田畑を耕す農民の名前などが記録される {{Ruby|検地帳|けんちちょう}} が作られました。
検地帳によって耕作者がはっきりしたので,農民は田畑を持つ{{Ruby|権利|けんり}}を{{Ruby|認|みと}}められましたが,同時にねんぐを{{Ruby|納|おさ}}める義務を負うことになり,土地を勝手に はなれることができなくなりました。また,かつての{{Ruby|荘園|しょうえん}}のように土地の権利がはっきりしない土地がなくなりました。
* '''{{Ruby|刀狩|かたながり}}'''
1588年に、豊臣秀吉は'''{{Ruby|刀狩令|かたながりれい}}'''という、農民から刀や{{Ruby|鉄砲|てっぽう}}などの武器を{{Ruby|没収|ぼっしゅう}}する命令を出しました。
表向きの理由は,{{Ruby|京都|きょうと}}の{{Ruby|方広寺|ほうこうじ}}に大仏を作るので材料の鉄が必要であるためですが、秀吉の実際のねらいは,{{Ruby|一揆|いっき}}を防ぐためといわれています。
<div style="border:1px solid #000000;">
:'''{{Ruby|刀狩令|かたながりれい}}'''
:{{Ruby|百姓|ひゃくしょう}}が刀・やり・鉄砲などの武器をもつことを禁止する。ねんぐを出ししぶり,一揆をおこすものは,{{Ruby|厳|きび}}しくばっする。
:とりあげた刀は,大仏をつくるためのくぎなどにするから,百姓は仏のめぐみで,この世だけでなく,あの世でも救われるだろう。
</div>
;朝鮮出兵
日本を統一した秀吉は,つぎに,外国を{{Ruby|征服|せいふく}}しようとしました。そのため,中国を征服しようとしました。このための足がかりとして,まず{{Ruby|朝鮮|ちょうせん}}に通行の許可や協力などをもとめたが,朝鮮に断られたため,朝鮮との戦争になり,2度にわたって朝鮮に兵を送って戦争をしました。
この戦争を,'''朝鮮出兵''' とか '''朝鮮{{Ruby|侵略|しんりゃく}}'''といいます。
秀吉の朝鮮出兵は2度あります。
最終的に日本は朝鮮・明の連合軍に敗北しました。
1598年に日本国内で秀吉が病死し,日本軍は日本にひきあげ,朝鮮出兵は終わりました。
{{-}}
{{コラム|朝鮮出兵の結果|朝鮮出兵の結果として、
* 日本の{{Ruby|諸|しょ}}大名などからの豊臣氏への信用が弱まり,のちに,豊臣氏がほろしていくきっかけの一つになる。
* 朝鮮に大きな{{Ruby|被害|ひがい}}をあたえた。
* 戦争でほろんだ明の力も弱まる。
などのことが起こりました。}}
;徳川家康
[[File:Tokugawa_Ieyasu2.JPG|thumb|300px|徳川家康]]
1590年,秀吉の命令によって,家康の領地が関東に移され,{{Ruby|江戸城|えどじょう}}が家康の{{Ruby|拠点|きょてん}}となりました。家康が江戸に移る前は,{{Ruby|三河|みかわ}}(今でいう愛知県の東部)の大名でした。
豊臣秀吉が{{Ruby|亡|な}}くなると,徳川家康の勢力が強まりました。
* {{Ruby|関ヶ原|せきがはら}}の戦い
[[File:Sekigaharascreen.jpg|thumb|500px|関ヶ原の戦い<br>絵の右側にいるのが徳川軍。絵の左側にいるのが豊臣軍。]]
1600年、{{Ruby|関ヶ原|せきがはら}}(今の岐阜県)で、徳川家康が率いる軍と,豊臣秀吉が率いる軍が戦いました。これを '''関ヶ原の戦い''' といいます。結果は,徳川家康が率いる軍の勝利でした。
* {{Ruby|江戸幕府|えどばくふ}}
:1603年,{{Ruby|朝廷|ちょうてい}}から{{Ruby|徳川家康|とくがわいえやす}}は {{Ruby|征夷大将軍|せいいたいしょうぐん}} に任命されました。
:家康は{{Ruby|江戸|えど}}(現在の東京)に'''{{Ruby|幕府|ばくふ}}'''を開きました。これが'''江戸幕府'''であり,この時から'''江戸時代'''が始まりました。江戸時代は260年ほど続きます。
* 大阪城をせめる
:1614年 家康により,{{Ruby|豊臣|とよとみ}}氏をほろぼすための戦争を始めました。
そして,この戦いに敗れた豊臣氏は,ほろぼされました。
* 江戸の工事
[[File:Edo P detail.jpg|500px|thumb|江戸城]]
江戸のまちは,江戸幕府より前は,政治の中心地になったことがなかったので,やや不便でした。
そのため家康は,日本全国の大名に資金や人手を{{Ruby|提供|ていきょう}}させて,江戸の町を広げる工事をさせました。江戸城を広げる工事も行われました。
{{-}}
;まとめ : 信長・秀吉・家康
{| class="wikitable" style="float:right"
|+ {{ruby|信長|のぶなが}}・{{Ruby|秀吉|ひでよし}}・{{Ruby|家康|いえやす}}の時代
| 織田信長 <br>[[File:Odanobunaga face.png|150px|織田信長の顔。]]|| 豊臣秀吉 <br>[[File:Toyotomi hideyoshi face.png|150px|豊臣秀吉の顔。]]|| 徳川家康 <br>[[File:Tokugawa Ieyasu2 face.png|150px|徳川家康の顔。]]
|-
| 1534 {{Ruby|尾張|おわり}}(現在の{{Ruby|愛知|あいち}}県の西部)の大名の子として生まれる || 1537 尾張に農民の子として生まれる || 1542 三河(現在の愛知県の東部)の大名の子として生まれる
|-
| 1560 {{Ruby|今川|いまがわ}}氏を破る || ||
|-
| 1562 家康と連合する || || 1562 信長と連合する
|-
| 1573年 {{Ruby|足利|あしかが}}氏を{{Ruby|京都|きょうと}}から追い出す<br />(室町幕府をほろぼす) || ||
|-
| style="text-align: left;" colspan="3" | 1575 '''{{Ruby|長篠|ながしの}}の戦い'''で,信長と家康の連合軍が,武田の軍をたおす
|-
| 1576 {{Ruby|安土城|あづちじょう}}を築く || ||
|-
| 1582 {{Ruby|明智光秀|あけちみつひで}}におそわれ,<br />信長は自害する({{ruby|本能寺|ほんのうじ}}の変) || <br>1582 秀吉が光秀をたおす ||
|-
| || 1583 {{Ruby|大阪城|おおさかじょう}}を築く ||
|-
| || 1588 '''{{Ruby|刀狩|かたながり}}'''を命じる ||
|-
| || 1590 日本を統一する || 1590 秀吉の命令で,関東に領地をうつす
|-
| || 1592 {{Ruby|朝鮮|ちょうせん}}をせめる ||
|-
| || 1597 ふたたび朝鮮をせめる ||
|-
| || 1598 病死する ||
|-
| || || 1600 関ヶ原の戦いで勝つ
|-
| || || 1603 {{Ruby|征夷大将軍|せいいたいしょうぐん}}になり,'''{{Ruby|江戸幕府|えどばくふ}}'''をひらく
|-
| || || 1615 豊臣氏をほろぼす
|-
| || || 1618 病死する
|-
|}
{{clear}}
つぎのような句があります。
'''{{Ruby|織田|おだ}}がつき {{Ruby|羽柴|はしば}}がこねし 天下もち'''
'''すわりしままに 食うは{{Ruby|徳川|とくがわ}}'''
「{{Ruby|羽柴|はしば}}」とは,豊臣秀吉のことです。秀吉は,「豊臣秀吉」と名乗る前には,「羽柴秀吉」と長く名乗っていました。
「織田」とは,織田信長のことです。
「徳川」とは,徳川家康のことです。
なぜ,このような歌で説明されるようになったのか,「ヒント」をもとに自分の言葉で説明してみましょう。
ヒント:織田は「もちをついて」、つまりもちをやわらかくしています。羽柴は「もちをこね」、つまり織田がついたもちをさらにやわらかくしています。そして徳川は「すわりしままに食う」、つまりもち作りに協力していないのに、{{Ruby|優雅|ゆうが}}にもちを食べています。
{{clear}}
また、かれらの性格をあらわした,つぎのような句があります。
{| class="wikitable"
|+
| 織田信長 <br>[[File:Odanobunaga face.png|150px|織田信長の顔。]]|| 豊臣秀吉 <br>[[File:Toyotomi hideyoshi face.png|150px|豊臣秀吉の顔。]]|| 徳川家康 <br>[[File:Tokugawa Ieyasu2 face.png|150px|徳川家康の顔。]]
|-
| 鳴かぬなら <br> 殺してしまえ <br> ホトトギス || 鳴かぬなら <br> 鳴かせてみせよう <br> ホトトギス || 鳴かぬなら <br> 鳴くまで待とう <br> ホトトギス
|-
|}
織田信長は「逆らうものは{{Ruby|排除|はいじょ}}する」という{{Ruby|姿勢|しせい}}をとり、豊臣秀吉は「逆らうものは{{Ruby|従|したが}}わせる」という姿勢をとり、徳川家康は「逆らうものは従うまで待つ」、つまりチャンスを{{Ruby|探|さぐ}}るという姿勢をとっています。
{{clear}}
<!-- ここにヨーロッパから伝わった言葉の記述がありましたが、2020年度教科書では削除されているため削除しました -->
当時の日本人がヨーロッパ人を'''「{{Ruby|南蛮人|なんばんじん}}」'''と{{Ruby|呼|よ}}んだので,日本によるヨーロッパとの貿易を'''{{Ruby|南蛮貿易|なんばんぼうえき}}'''といいます。
<!-- ※ 小学教科書の章末コラムなどで,「南蛮」の用語がある。日本文教出版,教育出版など -->
[[File:Nanbansen Carrack by Kano Naizen.jpg|thumb|left|350px|{{Ruby|南蛮屏風|なんばんびょうぶ}}(※ 一部分)<br>南蛮貿易のようすがかかれています。日本人がえがいたものです。]]
[[カテゴリ:小学校社会|6れきし1]]
5dlrhnlsd0c63k3f0nz460ev97ku59w
小学校社会/6学年/歴史編/歴史の始まり
0
32852
304825
301870
2026-10-17T18:20:49Z
PacmanD
92813
([[c:GR|GR]]) [[c:COM:FR|File renamed]]: [[File:2004年08月25日竪02.JPG]] → [[File:2004年08月25日 登呂遺跡の復元竪穴状平地建物.jpg]] [[c:COM:FR#FR2|Criterion 2]] (meaningless or ambiguous name) · 名前が日付以外何を指しているのか解りづらいです。
304825
wikitext
text/x-wiki
{{Nav}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|小学校社会/6学年|小学校社会/6学年/歴史編|frame=1}}
{| class="wikitable" style="width:100%"
|+ この章の概要
|<!--(ア) 狩猟・採集や農耕の生活,古墳,大和朝廷(大和政権)による統一の様子を手掛かりに,むらからくにへと変化したことを理解すること。その際,神話・伝承を手掛かりに,国の形成に関する考え方などに関心をもつこと。-->
★時代区分:原始時代、石器時代、縄文時代、弥生時代、古墳時代</br>
★取り扱う年代:おおむね5世紀以前
;狩猟・採集から農耕へ
: 大昔、日本に人々が住みはじめたころ、人々は、木の実をひろったり(採集)、動物や魚を狩などでつかまえて(狩猟)、食料や衣服としていました。このころ、ものを切ったりするのに使った道具は石でできていました。このような道具を、'''石器'''といい、この時代を「'''石器時代'''」と言います。時代がだんだん進むと、人々は、土を火で焼き固めると固くなってうつわなどを作ること('''土器''')ができることを発見します。最初は低い温度で厚くもろい器や人形('''土偶''')を作っていましたが(このような土器を「'''縄文土器'''」といい、この時代を「'''縄文時代'''」と言います)、さらに時代が進んで薄く硬い土器が作られるようになりました(このような土器を「'''弥生式土器'''」といい、この時代を「'''弥生時代'''」と言います)。
: 縄文時代から弥生時代に変わるころ、人々は狩猟・採集のくらしから田んぼや畑をたがやして米などを作る生活('''農耕''')をするようになりました。狩猟・採取の生活から農耕生活になると、人々は定住し「'''むら'''」ができます。人々が互いに行き来するようになると、「むら」はだんだん大きくなり、また、いくつかの「むら」が集まって「'''くに'''」となります。
;「くに」の統一
: 「くに」を統治する王や女王は、海を越えて中国や朝鮮半島など大陸に使者を送ったりしました。その結果、大陸から'''青銅'''や'''鉄'''を作る技術や'''文字'''(「'''漢字'''」)などの文化が流入しました。鉄器が普及したことで石器は使われることがなくなり「石器時代」は終わります。この時代、「くに」の王など有力者は、墓として「'''古墳'''」を作りましたが、そこには'''{{ruby|埴輪|はにわ}}'''などのほか、青銅製の鏡(銅鏡)などが副葬されています(この時代を「'''古墳時代'''」とも言います)。
:そして、これらの「くに」をまとめて今の日本の元を作ったのが、天皇を長とした'''{{ruby|大和|やまと}}朝廷(大和政権)'''です。統一前に「くに」をひきいていた有力者などは'''豪族'''と呼ばれます。
|}
== 大昔の暮らし ==
[[File:Paleolithic Stone Tools from Hokkaido - Joy of Museums - National Museum of Nature and Science, Tokyo.jpg|thumb|250px|北海道で出土したナイフ状の石器]]
;<span id="石器時代"/>石器時代と狩猟生活
:日本に人類が住み始めたのは、いろいろな説がありますが、ほりだされたもので確かめられるところでは、だいたい3万8000年前と言われています。
:そのころ、日本列島に住んでいる人たちは、海や川の近くに住んで、石や骨でつくった刃物や槍や矢をつかって、シカやイノシシなどの動物を、とらえて食料にしていました。このような石や骨でつくった道具を、'''石器'''といい、この時代を「'''石器時代'''」と言います。動物の骨は、とがらせて使うことが多く、とがらせたものを {{ruby|骨角器|こっかくき}} と言います。骨角器のようなとがった骨も出土することがあります。狩りなどで、槍の先の武器として使ったりすることが多かったものと思われます。
:石器も、最初のうちは、石をただ割ったものを使っていたのですが、時代がくだると、固い石をといでするどくしたり、{{ruby|黒曜石|こくようせき}}と言われるガラスに似た石をうすくとがらせてナイフのようにしたものも見られます。
;{{ruby|考古学|こうこがく}}
:この時代には文字がありませんでしたから、何が起こったのかという記録は残っていません。しかし、土をほりかえしてみると、このように使った土器や、とって食べたと思われる動物の骨、火を使ったあとなどが見つかることがあります。このようなものを、よく調べて大昔はどうであったかを研究する学問を'''考古学'''と言います。
=== 縄文時代 ===
[[file:Jomon Vessel with Flame-like Ornamentation, attributed provenance Umataka, Nagaoka-shi, Niigata, Jomon period, 3000-2000 BC - Tokyo National Museum - DSC05620.JPG|thumb|200px|縄文土器
]]
:人々は、土を火で焼き固めて'''土器'''をつくるようになりました。その土器に縄の模様がついているので、この時代に作られた土器を {{ruby|縄文|じょうもん}}土器 と言います。この土器は、採取した木の実などを貯めたり、食べ物を煮炊きする「なべ」に用いたりしました。ふちに、炎のような飾りをつけたものは実用的ではありませんが、神々や祖先をまつる時に用いられたものと考えられています。
:この縄文土器を使用した、約1万2000年前から約3000年前までの時代のことを、 '''{{Ruby|縄文|じょうもん}}時代''' と言います。
[[Image:JomonStatue.JPG|thumb|left|150px|土偶({{ruby|亀ヶ岡|かめがおか}}遺跡)]]
;土偶
:器だけでなく、土を焼き固めた人形が見つかる場合があります。これを、'''{{ruby|土偶|どぐう}}'''といっています。土偶は、食料が増えることや女性の安産をいのったものだと考えられています。
{{-}}
;貝塚
[[File:Kasori midden preserve north.jpg|thumb|200px|加曽利貝塚、北貝層断面]]
:土地を掘り返すと、多くの貝がらがまとまって発見されることがあります。そこには、貝がら以外にも、動物の骨や、魚の骨、土器の破片などが出土することもよくあります。研究の結果、これは、縄文時代の人々が住み着いた土地で、貝がらなどをごみとして捨てた場所であることがわかりました。これを、'''{{ruby|貝塚|かいづか}}'''といい、周辺に縄文の人々の集落があったことがわかります。
:貝塚には、東京都の{{ruby|大森|おおもり}}貝塚や、福井県の{{ruby|鳥浜|とりはま}}貝塚や、千葉県の{{ruby|加曽利|かそり}}貝塚などが有名です。
:貝塚や石器などに限らず古い時代の物が見つかる場所のことを、 '''遺跡'''と言います。遺跡などから出土する物(これを出土品や遺物と言います)によって、その時代の暮らしもわかります。
:魚つりに必要な、「釣り針」と「もり」が、縄文時代の遺跡から出土されることも多く、漁もしていたことがわかります。
:縄文時代の人の家の建物は、<span id="竪穴住居"/>'''{{ruby|竪穴|たてあな}}建物'''(竪穴住居) といい地面に穴をほりさげたあとに、柱を立て、草ぶきの屋根をかけた建物<ref>それでは、「『竪穴建物』ではない建物」とはどういうものでしょう。柱を固定するのに穴を掘って建てたものを、現在でも「{{ruby|掘立|ほった}}て小屋」といって、{{ruby|粗末|そまつ}}な建物のたとえに使います(実際に、そのやり方で建てる建物はほとんどありません)。穴を掘って柱を固定するだけなので大変簡単な建物の建て方({{ruby|工法|こうほう}})ですが、この工法だと、うめられた木材の柱は、地面の水分によってすぐに腐って、建物がだめになります。時代がくだると、地面に大きな石(「{{ruby|束石|つかいし}}」といいます)をしいてその上に柱を置き、横組みによって、おのおのの柱が倒れないような工法になりました。こうすることで、木造の建物でも長期間使い続けることができるようになったのです。現在の木造建築の多くはコンクリートで硬い基礎をつくり、その上に置いて固定する工法となっています。</ref>にすんでいました。
==== 三内丸山遺跡 ====
[[ファイル:Reconstructed Pillar Supported Structure.jpg|right|thumb|200px|三内丸山遺跡 六本柱建物(復元)]]
:青森県の '''{{ruby|三内丸山|さんないまるやま}}遺跡''' は、約5500年前から約1500年前の間の縄文時代の集落だったということがわかっています。
:この三内丸山遺跡から、クリ、クルミ、トチといった実のなる樹木を栽培したあとが見つかっています。つまり、すでにこの時代から一種の農耕が始まっていたものと考えられています。
:また、多くの土器や石器のあとも見つかっており、大型の{{ruby|掘立|ほった}}て柱の跡も、見つかっていますが、この用途はまだ分かっていません。
:ヒスイの玉や、黒曜石でできた刃物のようなものも見つかっています。ヒスイは、この地ではとれず、新潟県の{{ruby|糸魚川|いといがわ}}などの他の土地でとれるので、他の地域と交易があったのだろう、と考えられています。
:この三内丸山遺跡は、縄文時代を知る遺跡として代表的な遺跡です。
{{-}}
=== 弥生時代 ===
[[Image:YayoiJar.JPG|right|200px|thumb|弥生土器]]
;{{ruby|弥生|やよい}}土器
:約3000年前から、土器は、それまでの縄文土器に比べて、うすくかたいものとなりました。これは、縄文土器に比べて、土を焼き固めるのに高い温度で焼き固めることができるよう技術が進歩したためです。これを、'''{{ruby|弥生|やよい}}土器'''(または、「弥生式土器」)と言います<ref>1884年(明治17年)に東京府本郷区向ヶ岡弥生町(現在の東京都文京区弥生)の貝塚(向ヶ岡貝塚 東京大学構内)で発見されたためこの名がついています。</ref>。
:この弥生土器を使用した、約3000年前から約1800年位前(紀元後3世紀中期)までの時代のことを、 '''{{Ruby|弥生|やよい}}時代''' と言います。
;{{ruby|稲作|いなさく}}のはじまり
:縄文時代の生活は狩猟・採集によるものが主でした。縄文時代の後期になって農耕をやっていたと考えられますが、あまり大規模なものではありません。'''弥生時代'''を特徴づけるのは、稲作をはじめ定住したことです。
:2400年ぐらい前のころから、現代中国の{{ruby|揚子江|ようすこう}}(または、{{ruby|長江|ちょうこう}})周辺から、日本に'''水田'''(田んぼ)を用いて米を栽培する技術('''稲作''')が伝わりました。
:稲作は、まず西日本につたわり、西日本から東日本へと、米作りが広がっていき、東北地方南部にまで広がりました<ref>弥生時代の遺跡は、新潟県北部と千葉県・茨城県を結んだ線より西側で発見されており、弥生時代には東北まで稲作ができる品種がなかったと考えられています。</ref>。
:この時代の農具は、まだ、木製や石器です<ref>北部九州の一部では鉄を用いた農具も見つかっています。</ref>。{{ruby|穂|ほ}}から米をとるときに、 {{ruby|石包丁|いしぼうちょう}} が、使われました。
;<span id="むら"/>「むら」の誕生
:米は乾燥させると、長期間保管ができます。米を大量に保管することで、冬など食料となるものが少なくなる時期でも、人々は安定した生活をおくることができます<ref>同じような穀物に、小麦やトウモロコシがあります。小麦は、乾燥した土地を好むので日本の気候にあまり合いませんし、トウモロコシは、まだ日本に伝わっていませんでした。</ref>。米は縄文時代から採集または水田を使わずに栽培されていたことがわかっていますが、水田を作って栽培することで、収穫量が大きく上がります。一方で、土地をならして水田をつくったり、ため池などの水源を確保し水を引く水路を作ったりする作業は少人数でやるのはむずかしいことです。そして、一度作った水田は何年も使い続けないと、また、荒れ地をきりひらいて水田を作ることから始めないといけなくなります。稲作を続けていくために、人々は水田を中心に定住を始めます。米などの農作物が安定して取れることで人口が増えていき、やがて、多くの人々が住む「'''むら'''」ができます<ref>「むら」ということばは、「むらがる・むれる(集まる)」や「むれ(集まったもの)」と関係があると言われています。</ref>。
;{{ruby|高床|たかゆか}}倉庫
:米は、 '''{{ruby|高床|たかゆか}}倉庫''' で保管されていました。
:高床倉庫が高いのは、ねずみ などの動物が入りづらくするためです。なお、風通しをよくするため、という理由も考えられます。ねずみの害を防ぐという理由の有力な根拠として、地面から床までの柱の、柱のてっぺんに、「かえし」がついていて、動物などが登れないように工夫した高床倉庫が見つかっています。弥生時代の多くの住まいは、縄文時代同様、[[w:竪穴建物|竪穴建物]]でした。
<gallery widths="200px" heights="200px">
Image:Takayukasikisouko.JPG|高床倉庫 妻側より(復元、神奈川県、{{ruby|大塚|おおつか}}・{{ruby|歳勝土|さいかちど}}遺跡)
File:Yoshinogari-iseki takayukashiki-souko.JPG|高床倉庫(復元、佐賀県{{ruby|吉野ヶ里|よしのがり}}遺跡)
File:2004年08月25日 登呂遺跡の復元竪穴状平地建物.jpg|thumb|240px|right|弥生時代の[[w:竪穴状平地建物|竪穴状平地建物]](復元、静岡県{{ruby|登呂|とろ}}遺跡)
File:Yoshinogari-iseki tateanashiki-juukyo.JPG|thumb|250px|right|弥生時代の竪穴建物(復元、佐賀県吉野ヶ里遺跡)
</gallery>
;金属器の伝来
:およそ2300年前、青銅器や鉄器などの金属器とその製造法が伝わります。
:青銅とは、銅 と すず(金属の1つ)を、とかしてまぜあわせた金属でつくられた合金です<ref>ブロンズとも呼ばれます。銅像の多くの材料は青銅です。皆さんの身の回りにある、もっと身近な青銅製のものは十円硬貨(十円玉)でしょう。</ref>。比較的低い温度で溶けて加工することができるという特徴があります。鉄は、今でも身近にある非常に硬い金属ですが、製造するためには、青銅より強い火力を必要とします。世界の歴史では、まず、金属器としては青銅が普及し、続いて実用的な鉄が普及したのですが、日本には、ほぼ同時期に伝来したと考えられ、青銅器は、おもに祭りの道具を作るのに使われ、鉄器が、農具や武器などの実用品につかわれるようになりました。
:石器の原料である石に比べると、鉄は加工が簡単で強くするどいものを作ることができるため、鉄の農具は農地を深くたがやすことができるようになり、鉄器で耕した農地は石器で耕した農地より豊かになり、石器を使う人たちを圧倒するようになります。こうして、鉄器など金属器を使い始めると、石器が使われなくなるため、それ以降を[[#石器時代|石器時代]]とはいわなくなります<ref>世界の歴史では、使われる金属器によって「青銅器時代」「鉄器時代」ということもあり、現代も含めて「鉄器時代」ですが、皆さんは覚える必要はありません。「石器時代」が終わったことだけ理解しておいてください。</ref>。
:青銅器は表面がさびても形を残す性質があるため、銅{{ruby|剣|けん}}や、銅{{ruby|矛|ほこ}}、銅{{ruby|鐸|たく}}、銅{{ruby|鏡|きょう}}などが残っています。一方、鉄は、うめられると、さびてボロボロになってしまいますし、鉄自体、貴重なものだった<ref name="鉄">鉄は、材料となる砂鉄や鉄鉱石が日本では希少で、製造に大量の炭を使い、{{ruby|鍛治|かじ}}という特殊な技術が必要であったため、当時の生活から見るとかなり高価なものでした。</ref>ので、再利用して、あらたな道具として作り直されることが多く、当時のものはほとんど残っていません。
<gallery widths="200px" heights="200px">
ファイル:YayoiBronzeSpearTip1-2ndCenturyKyushu.jpg|弥生時代の銅矛(九州で出土、1~2世紀)
ファイル:DotakuBronzeBellLateYayoi3rdCenturyCE.jpg|thumb|銅鐸
</gallery>
{{-}}
[[file:Toro Site 1.jpg|thumb|200px|登呂遺跡全景]]
;{{ruby|登呂|とろ}}遺跡
:静岡県の登呂遺跡は、1943年(昭和18年)発見され、1947年に考古学・人類学・地質学など各分野の学者が加わった日本で初めての総合的な発掘調査が行われた遺跡です。8万平方メートルを超える水田跡や井戸の跡、[[w:竪穴状平地建物|竪穴建物に似た平地建物]]・[[w:高床建物|高床建物]]を建てたあとが検出されました。この他にも、農耕や狩猟、魚釣りのための木製道具や火起こしの道具、占いに用いた骨などが出土しました。
{{-}}
[[File:Yoshinogari-iseki zenkei.JPG|thumb|440px|right|吉野ケ里遺跡,遠景]]
;{{ruby|吉野ケ里|よしのがり}}遺跡
:佐賀県の吉野ヶ里遺跡は、昔から、遺物の出土が見られた土地でしたが、工業用地開発にあたり調査をしたところ、1989年に弥生時代の大規模な集落あとであることが発見されました。
:この遺跡は、まわりを{{ruby|濠|ほり}}でかこまれた {{ruby|環壕|かんごう}}集落 であるところに特徴があります。ほりの内側からは、多くの高床倉庫が見つかっています。ほりは集落を守るためにめぐらされたと考えられています。
:また、矢がささった人骨も見つかっており、これらのことから、人々のあいだで争いがあったことが想像できます。おそらくは、米作りによって、食料生産が増えたので人口が多くなって、それぞれの集落で、さらに多くの人口を養うために米の生産量を増やす必要が生じ、集落どうしで、土地や水をめぐっての争いが起きたのだろうと思われています。このような争いが、身分の差を作っていった理由の一つだとも、思われています。
{{-}}
=== 「むら」から「くに」へ ===
;「くに」の誕生<!--
::*「むら」と「くに」はどこが違うのか。
::*「むら」や「くに」はなぜ大きくなっていかなければならなかったのか。-->
:[[#むら|こうして「むら(村)」ができると]]、村同士のあらそいがしばしば起こりました。その原因は、村と村の間に水源がある時にどちらが使うかというものであったり、不作などで食糧が足りなくなったのでとなりの村をおそって食糧をうばったりしたものだったのでしょう。相手の村に対抗するため、別の村と共同してあらそうことがあったかもしれません。
:強い村が弱い村をしたがえたり、村同士で共同したりして、村はだんだん大きなものとなっていきます。村が大きくなってくると、人の行き来もふえ、道を作ったりしなければならなくなります。<span id="市"/>また、人が集まると、人々は同じ農耕(稲作)ばかりではなく、野菜や果物を作ったり、魚をとったり、カゴなど竹細工や木工品を作ったりと別々のことをやって、それぞれ作った農作物や、とった魚や動物、作ったカゴなど工作品とを交換して生活を豊かにすることができるようになります。こうしたものの交換の場として、'''{{ruby|市|いち}}'''ができます。
:田を耕したり、物を収穫したりする能力は人それぞれです。村の中にも豊かな人とそうでない人の差はできました。さらに、たとえば、広い田を持つ豊かな人は、田を持たない人に収穫の一部を与える代わりに自分の田をたがやさせたり、貧しい人の子どもをもらってきて育て、やはり、自分の農地で使ったりもしたでしょう。村のあらそいで負けた人々が、このような立場になることもあったとも考えられます。このころには、こうした豊かな人たちと、その人たちに支配される人々の差がでてきました。
:村が大きくなるにつれ、ばらばらの人をまとめるリーダーが必要になってきます。リーダーは、ため池・水路や道をつくったり、整備することの指示をしたり、市を開いたり、市でのもめごとをおさめたり(仲裁)、また、他の村とのあらそいでは武器を持って戦ったり、それを指揮したりしたでしょう。このリーダーには、上でのべた豊かな人たちがなったり<ref name="鉄"/>、そのような人の中で能力が高いために人々が押し上げたりしたのでしょう。知識をたくわえ、{{ruby|神|かみ}}の声として伝えて、そのようなリーダーになった人もいたかもしれません。
:さらに、時間がたつと、村はますます大きくなっていきます。だんだん、このリーダーたちは、自分で田を耕さず、日々の指示や仲裁や戦うことだけを仕事とするようになり、リーダーたちの生活は村の人々が収穫の一部をわけることで成り立つようになります。すなわち、「'''税'''」です。税の仕組みができた村を「'''くに'''」と言います<ref>「くに」ということばは、「むら」ほど明確な関係は、わかっていませんが、「{{ruby|組|く}}む」「{{ruby|組|くみ}}」と関係があるとも言われています。</ref>。そして、のちに「くに」のリーダーの、さらに長を「'''王'''」、女性の場合は「'''女王'''」と言ったりします<ref name="王">「くに」の長については、当時の言葉が残っていないので、中国語の考え方(漢字)を当てています。少し後の時代に、「主人」という意味で「きみ(君)」と呼ばれていたらしいとも考えられています。「くに・くむ・くみ」と少し似ていますね。「きみ」を支配するものが「おおきみ」です。</ref>。
:「くに」は、「むら」と同様に、となりの「くに」とあらそうなどして、大きくなっていきます<ref name="人口">弥生時代の日本の全人口は60万人くらいだったのではないかといわれています。次の古墳時代の終わりころになって、ようやくその10倍くらいになります。紀元前1世紀頃は100数カ国あったとされる(これは、九州北部から近畿地方までと考えられていますから、おそらく200以上はあったでしょう)ので、「くに」といっても、人口数千人から数万人の規模であったと考えられます。</ref>。このころになると、朝鮮半島をはじめとする大陸としばしば行き来するようになります<ref>稲作や金属器製法の伝来は大陸からなので、それ以前も行き来はあったでしょうが紀元前1世紀くらいから特にふえます。</ref>。「王」の中には大陸から渡ってきたものもいるかもしれませんし、大陸にわたって王になったものもいるかもしれません。
;中国との交流<span id="中国との交流"/>
:中国には、約5000年前から青銅器を作り、約3500年前には文字(漢字)を使っていた古い文明をもった人々が住んでいました。紀元前3世紀には、大きな国となって、それを{{ruby|皇帝|こうてい}}が治めていました。
:日本の「くに」の王は、皇帝に{{ruby|貢|みつ}}ぎ物をおくり、関係をもちました。これは、皇帝に貢ぎ物をおくると、そのお返しに数倍の価値の品物を与えられ<span id="朝貢"/>、また、皇帝によって「くに」の王としての地位が認められたからです。
:中国の歴史書には、日本の「くに」が貢ぎ物をおくったことが記録されています。
[[File:King of Na gold seal.jpg|200px|thumb|right|金印。「漢委奴国王」印]]
:#最初の記録は、紀元前1世紀に、当時の'''{{ruby|漢|かん}}'''{{ruby|王朝|おうちょう}}<ref>同じ家系の皇帝によって治められた時代を王朝と言います。</ref>(前漢<ref name="漢">漢は一度ほろぼされましたが、一族がまた王朝を開きました。滅ぼされる前の王朝を「{{ruby|前漢|ぜんかん}}」、新しくできた王朝を「{{ruby|後漢|ごかん}}」と言います。</ref>)の朝鮮半島にある役所に貢ぎ物がなされたこと記録されています。当時の日本は「'''{{ruby|倭|わ}}'''<ref>なよなよした人、背が低い人(矮)などの意味で、あまり良い意味ではありません。</ref>」と呼ばれ、百数国に分かれていたと書かれています。これが、日本のことが文書に書かれた最初の例です。
:#57年、倭の{{ruby|奴|な}}国が貢ぎ物をし、漢(後漢<ref name="漢"/>)の皇帝は、'''金印'''をさずけました。金印は江戸時代になって、現在の福岡県で発見されました。金印には「漢委奴国王」と書いてあります。これは、一般に「{{ruby|漢|かん}}の{{ruby|委|わ}}(=倭)の{{ruby|奴|な}}の国王」と読んでいます。「漢が支配する倭(=日本)の奴の国の王」という意味です。
:#107年、倭国王が来て、奴隷160人を貢ぎ物として、皇帝に会うことをねがった。文明の進歩していない日本からの貢ぎ物は、おもに人(奴隷)だったことがわかります。
:#147年から189年にかけて、倭国の中で大きな戦争があって、国々が互いに争ったことが記録されています。その当時になると、中国も日本に興味を持っていたことがわかります。
:#<span id="邪馬台国"/>235年、'''{{ruby|魏|ぎ}}'''<ref>このころ、中国では後漢はほろぼされ、「魏」が最も有力な王朝となっていました。</ref>の皇帝に、使いをおくりました。おくった国は、'''{{ruby|邪馬台国|やまたいこく}}'''といい、その王は女性で'''{{ruby|[[小学校社会/6学年/歴史編/人物事典#卑弥呼(ひみこ)|卑弥呼]]|ひみこ}}'''といいました。
:#*この卑弥呼が魏におくった使者については、くわしく記録されており<ref>この歴史書を、『{{ruby|魏志|ぎし}}{{ruby|倭人|わじん}}{{ruby|伝|でん}}』と言います。</ref>、当時の社会をよく知ることができます。以下にいくつか例をあげます。
:#**百数国あった国は、このころ、中国と行き来のある国は、約30国になった。
:#**邪馬台国は30国をしたがえているが、{{ruby|狗奴国|くなこく}}と対立している。
:#**卑弥呼はうらないやまじないで国をまとめていて、その姿を人前にあらわすことはない。
:#**人々は、顔や体に{{ruby|入|い}}れ{{ruby|墨|ずみ}}を入れ、貫頭衣と言われる単純な服を着ている。
:#**養蚕をして糸をえている。牛や馬は飼っていない。
:#**邪馬台国からの貢物は男女の奴隷10人とわずかな布に対して、皇帝は、金印に加えて、大量の錦などの高価な織物や金、刀、銅鏡100枚などを与えた。
:#*邪馬台国の場所は分かっておらず、古くから多くの人が色々な説を出して論争をしています。奈良県と北部九州が有力ですが、結論は出ていません。
== 「くに」の統一 ==
=== 古墳時代 ===
[[画像:NintokuTomb Aerial photograph 2007.jpg|thumb|{{ruby|仁徳天皇陵|にんとくてんのうりょう}}<ref>「{{ruby|陵|りょう}}」とは天皇や皇后といった皇族のお墓の呼び名です。「仁徳天皇陵」とは仁徳天皇のお墓という意味です。</ref>と伝えられている大山古墳。前方後円墳、大阪府堺市]]
:3世紀から4世紀ごろになると、各地で'''{{ruby|古墳|こふん}}'''といわれる、大きな墓が作られるようになります。古墳には「くに」の王や有力者('''{{ruby|豪族|ごうぞく}}''')が{{ruby|埋葬|まいそう}}されたと考えられています。この、3世紀ごろから7世紀ごろの時代を '''古墳時代''' と言います。
:古墳は全国に分布しますが、特に九州地方から中国地方をへて、近畿地方にかけて多く見られます。古墳は朝鮮半島南部にも見られ、この地域との関係が深かったことがわかります。
:古墳には、いろいろな形のものがあります。円形に{{ruby|盛|も}}り上がった古墳を{{ruby|円墳|えんふん}}と言います。四角く盛り上がった古墳を{{ruby|方墳|ほうふん}} と言います。円墳と方墳があわさったような、かぎ{{ruby|穴|あな}}のような形の古墳を {{ruby|前方後円墳|ぜんぽうこうえんふん}} と言います。大阪府{{ruby|堺|さかい}}市にある {{ruby|大仙|だいせん}}(大山)古墳 は、日本で最大の面積の古墳です。
:弥生時代に比べて古墳時代は、古墳作りのような大規模な事業ができるほど人口が増えます<ref name="人口"/>。これは、大陸から、牛や馬がもちこまれたり<ref name="牛馬">『魏志倭人伝』には、「倭には、馬や牛はいない」と書かれていますので、この時代(古墳時代)に伝わったことがわかります。馬は、漢字の音(昔の中国語の音)で「マ」と発音しますが、それがなまって「うま」となったとされています。</ref>、鉄を製造する技術が普及したためであると考えられています。
:なお、このころ、中国は国内が乱れたため、邪馬台国を書いたような歴史書がとだえ、4世紀の様子はあまり伝わっていません。ただ一方で、<span id="好太王の碑"/>4世紀末から5世紀にかけて朝鮮半島の北部に倭の軍隊がせめいって北部の国({{ruby|高句麗|こうくり}})と戦ったことが、朝鮮半島の石碑<ref>「{{ruby|好太王|こうたいおう}}の碑」といいます。</ref>に残っています。このように、この当時も朝鮮半島とは盛んに行き来がありました。
{{-}}
;古墳の{{ruby|副葬|ふくそう}}品
:古墳からは、鏡や玉・{{ruby|勾玉|まがたま}}、{{ruby|剣|つるぎ}}などが副葬<ref>遺体とともに埋葬されることを言います。</ref>されています。ほかにも、'''{{ruby|埴輪|はにわ}}''' という、土を焼いて作られた筒状のもの<ref>「はに」-土で作ったもの、「わ」-円形のもの、で、「はにわ」と言います。</ref>が発見されています。これは、時代がくだると、人や牛馬<ref name="牛馬"/>、家や船などをかたどったものが見られるようになります。埴輪から、当時の人々がどのような姿をし、どのような家に住み、どのような船に乗ったのかなど、当時の生活の様子を知ることができます。これら、古墳の副葬品からわかる古墳時代の文化のことを'''古墳文化'''と言います。
<gallery widths="200px" heights="200px">
File:Large domestic mirror, Kofun period, 300s-400s AD, bronze - Tokyo National Museum - Ueno Park, Tokyo, Japan - DSC09133.jpg|副葬品の銅鏡(奈良県・{{ruby|柳本大塚|やなぎもとおおつか}}古墳出土 )
File:Koujindani Remains 03.JPG|銅矛とともに出土した銅鐸(島根県・{{ruby|出雲|いづも}}市の{{ruby|荒神谷|こうじんだに}}遺跡)。古墳時代の遺跡。
Magatamas.JPG|古墳時代の勾玉(東京国立博物館所蔵)
塚廻り古墳 - panoramio.jpg|埴輪出土の様子
ファイル:メスリ山古墳出土 大型円筒埴輪.JPG|大型円筒埴輪
File:KofunSoldier.jpg|thumb|left|140px|埴輪。武装男子立像(群馬県{{ruby|太田|おおた}}市出土)
画像:HaniwaHorse.JPG|thumb|190px|馬形埴輪
ファイル:西都原古墳群出土 埴輪 子持家.JPG|家の埴輪
ファイル:西都原古墳群出土 埴輪 船.JPG|船の埴輪
</gallery>
{{-}}
=== 大和政権 ===
[[File:Inariyama sword.JPG|thumb|250px|right|真ん中の、{{ruby|縦|たて}}に長いものが、発掘された{{ruby|鉄剣|てっけん}}。]]
:現在の奈良県奈良市周辺、{{ruby|大和|やまと}}川上流部の奈良{{ruby|盆地|ぼんち}}は、「'''やまと'''(後に「'''大和'''」の字を当てます)」と呼ばれる稲作に適した豊かな土地<ref>現代の考え方では、多くは川の下流の海に近い広い低湿地の方が稲作に適していると考えられていますが、そのような土地は水害に弱く、江戸時代くらいになるまでは、このような盆地や台地で水の豊富な土地が稲作の中心でした。</ref>で、大和川を下って、現在の大阪府中部周辺も一体となった、この地域における「くに」の王や豪族は、大変有力なものとなりました。それは、この地方に、大きな古墳が数多く発見されていることからもわかります。
:この地方の豪族たちは、自分たちのリーダーとして'''{{ruby|大王|おおきみ}}'''<ref name="王"/>をおしたて、それに従うことになります。この{{ruby|大王|おおきみ}}が、現在の天皇の祖先とされ、{{ruby|大王|おおきみ}}の政府を大和{{ruby|朝廷|ちょうてい}}<ref>天皇を中心とした政治の仕組みを{{ruby|朝廷|ちょうてい}}といいます。</ref>と言い、この大和地方の勢力を'''{{ruby|大和政権|やまとせいけん}}''' と言います。
:大和政権は、東西に兵を出して、日本の「くに」を一つにまとめようとします
:5世紀後半に作られたと見られる埼玉県の{{ruby|稲荷山|いなりやま}}古墳から見つかった{{ruby|鉄剣|てっけん}}には、「ワカタケル大王」という名がきざまれた文が発見されました。この文から、この地方の王は、ワカタケル大王に使えていたことがわかります。また、熊本県の {{ruby|江田船山|えだふなやま}}古墳 にも、一部が読めなくなっていましたが、「ワ□□□ル大王(□は読むことができない文字です、文字数は数えることができます)」という、「ワカタケル大王」と考えられる名前が刻まれた鉄刀があり、ワカタケル大王の支配する領域が、関東地方から九州までの広い範囲におよんでいたことがわかります。このことから、大和政権は、5世紀後半から6世紀前半にかけて、日本を統一したのではないかと考えられています。
:<span id="南北"/>5世紀に入ると中国はやや安定し、南北に王朝ができ、より安定した南の王朝に日本が使者を何度も送ったことが記録されており、これを送ったのは大和政権の{{ruby|大王|おおきみ}}(天皇)であろうとされています。
;「くにづくり」についての日本神話
:<span id="漢字伝来"/>日本に、文字(漢字)が伝えられたのは、4世紀後半から5世紀前半にかけてであろうとされています。伝説では、朝鮮半島から渡ってきた{{ruby|王仁|わに}}が伝えたとされていますが、その前から、ある程度の読み書きはできていたと考えられますし、1人の伝えたもので、文字が伝わるものでもありません。おそらく、朝鮮半島から、漢字を読み書きできる集団が移住してきて大和朝廷につかえたことの、{{ruby|象徴|しょうちょう}}だと考えられます<ref>実際に、王仁の子孫とされる{{ruby|西文|かわちのふみ}}氏は、朝廷に{{ruby|史|ふひと}}という書記の役職で朝廷につかえます。</ref>。
:したがって、文字が伝わるまで日本で何があったのかはよくわかりません。また、文字が伝わった後も、しばらくは書かれたものも少なかったため、記録はほとんど残っておらず、やはり詳しいところはわかっていません。
:この時代のことを知るには、出土品などから考古学の方法によるか、中国などに残る歴史書にたよるしかありません。
:<span id="神話"/>しかし、文字のない時代にあっても、人々は、いろいろなできごとを、物語にして語り伝えてきました。これを、「{{ruby|口伝|くでん}}」といいます。人が記憶によって伝えるのですから、語り伝えている間に、正しく伝わらなかったり、伝える人に都合よくかえられたり、また、よくわからないことについては、神秘的なできごと、つまり、{{ruby|神|かみ}}さまのやったことにしてしまうなど、正確なものとはいえませんが、元々のできごとを想像させたり、それを語りついだ人々の考えを知ったりすることができます。このようにして、語り伝えられた物語を{{ruby|神話|しんわ}}といいます。
:日本においても、神話は語りつがれていました。8世紀になって、日本人が漢字を自由に使いこなし、紙なども大量に入手できるようになると、日本の歴史をまとめることをはじめます<ref>[[小学校社会/6学年/歴史編/天皇中心の国づくり-飛鳥時代から奈良時代#奈良時代|次の章の「奈良時代」]]で詳しく説明します。</ref>。この時に、日本神話を多く書き残しました。[[小学校社会/6学年/歴史編/天皇中心の国づくり-飛鳥時代から奈良時代#記紀|特に、大和朝廷の成立に関係する神話については『{{ruby|古事記|こじき}}』・『{{ruby|日本書紀|にほんしょき}}』という書物にまとめます]]。この二つの書物の名をとって、これらの神話を、{{ruby|記紀|きき}}神話と言います。以下に簡単に紹介します。すでにいくつか知っている話もあるかもしれません。'''[[/「くにづくり」についての日本神話|別のページ]]'''では、もう少し詳しく解説します。
:ただし、神話はあくまでも物語です。これを読む時に歴史的事実とごちゃごちゃにならないよう注意しましょう<ref>たとえば、ここに紹介する神武天皇の話は『古事記』によると、約2700年前の話になるのですが、そのころに、鉄などの高度な文明があったことは、考古学上発見されていません。</ref>。
:;[[/「くにづくり」についての日本神話#1|国産み・神産み神話]]
::男神イザナギと女神イザナミは結婚して、日本の国土の島々を産み、また、さまざまな物事に関するたくさんの神々を産みました。
:;[[/「くにづくり」についての日本神話#2|{{ruby|高天原|たかまがはら}}神話]]
::イザナギの子である太陽の女神アマテラスは、神々の土地である{{ruby|高天原|たかまがはら}}をおさめますが、弟の男神スサノオが暴れるので、{{ruby|天岩戸|あまのいわと}}と言われるほらあなにかくれてしまいます。太陽の神がかくれたので、世の中は真っ暗やみになります。困った神々は策略をめぐらしアマテラスを天岩戸からひっぱりだして、元の平穏な世界にもどります(天岩戸伝説)。スサノオは高天原を追放されます。
:;[[/「くにづくり」についての日本神話#3|{{ruby|出雲|いずも}}神話]]
::高天原を追放されたスサノオは、出雲(現在の島根県)に向かいます。出雲で、人々を困らせる大蛇の化物ヤマタノオロチの話を聞き、これを退治し出雲に住んでここを治めます(ヤマタノオロチ伝説)
::出雲の神さまであるオオクニヌシは、兄弟の神々からいじめられていましたが、海岸でひどい目にあっているシロウサギを助けるなど優しい心の持ち主であったので({{ruby|因幡|いなば}}の白兎伝説)、多くの人々に受け入れられ、やがて、スサノオをついで出雲を治め、日本全国をおさめることになります。オオクニヌシの国は、オオクニヌシを厚くまつることを条件にアマテラスからの使者にアマテラスの子孫にゆずることを約束させられます(国譲り神話、出雲大社由来)。
:;[[/「くにづくり」についての日本神話#4|{{ruby|天孫降臨|てんそんこうりん}}神話・{{ruby|日向|ひゅうが}}神話・{{ruby|神武東遷|じんむとうせん}}神話]]
::アマテラスは孫のニニギに日本を治めさせることとし、ニニギは天上の高天原から日向(現在の宮崎県)の{{ruby|高千穂|たかちほ}}におります({{ruby|天孫降臨|てんそんこうりん}}神話)。
::ニニギの子のホオリ({{ruby|山幸彦|やまさちひこ}})は、兄のホスセリ({{ruby|海幸彦|うみさちひこ}})と対立しましたが、ホオリがホスセリをしたがえました(海幸山幸伝説)。
::ホオリの孫であるイワレヒコは、日向から船出し瀬戸内海沿岸の国々をしたがえ、大和を征服し、初代天皇である「神武天皇」となりました({{ruby|神武東遷|じんむとうせん}})。
:;[[/「くにづくり」についての日本神話#5|ヤマトタケル神話]]
::景行天皇の皇子であるヤマトタケルは、西に九州の{{ruby|熊襲|くまそ}}を平定したのち、東国に向かい、各地を平定しました。
== 脚注 ==
以下は学習の参考ですので覚える必要はありません。<small>
<references/></small>
----
{{前後
|type=章
|[[小学校社会/6学年/歴史編]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|日本の歴史の流れ]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|歴史の流れをつかもう]]
|[[小学校社会/6学年/歴史編/天皇中心の国づくり-飛鳥時代から奈良時代|天皇中心の国づくり-飛鳥時代から奈良時代]]
}}
[[Category:社会|しようかつこうしやかい6]]
[[Category:小学校社会|6ねん]]
[[Category:小学校社会 歴史|#03]]
g32o7inu3xggpech3m3fwq7zkrx9gpw
ジョーク集/エスニックジョーク
0
34208
304850
304733
2026-10-18T09:57:35Z
~2026-55826-74
92817
/* アダムとイブの国籍 */
304850
wikitext
text/x-wiki
{{wikipedia|エスニックジョーク}}
エスニックジョーク(民族や国民性や国家を題材としたジョーク)は、ある民族の典型的な特徴を誇張することで笑いを誘うものです。
この項では、エスニックジョークを紹介します。
ブラックジョークもあるので注意!
== 前提 ==
{{wikipedia|ステレオタイプ#人種・国籍・肌の色など}}
よくジョークに登場する民族とその特徴は、しばしば次のように表現されることが多いです。なお、重複する特徴もしばしばあります。言語の違いによるジョークも多いです。国民性・民族性に由来する偏見(いわゆる「[[w:ステレオタイプ|ステレオタイプ]]」)を笑うものですが、現在では公の場での取り扱いは注意を要します。
*アメリカ人:大雑把、陽気、贅沢、ヒーローへのあこがれが強い、訴訟をよくおこす、地理の知識がない、銃社会、ケンカ好き、傲慢、独善的。
*イギリス人:皮肉屋、紅茶好き、紳士の国、合理的、料理が不味い、堅苦しい、賭博好き。
*フランス人:ひねくれ者、キザ、恋愛重視、感覚的、自己中心的。
*イタリア人:女好き、怠け者、陽気、グルメ、情熱的。
*ドイツ人:生真面目、合理的、技術大国、頑固、個人主義。
*ロシア人:酒好き(特にウォッカ)、旧ソ連の影響のあるものは秘密主義などの厳しい政治。
*日本人:真面目、技術大国、集団主義、働きすぎ、家が狭い、勤勉、金持ち、英語が下手。
*中国人:食へのこだわり・グルメ、ケチ、強引、法を守らない。
*韓国人:酒好き、日本へのライバル意識、他責思考、韓国起源説の主張。
*ユダヤ人:狡猾、金儲けがうまい。米国においては、基本的に富裕層。
*アイルランド人:酒豪、ケチ。米国においては、遅れて入植したヨーロッパ系移民であって、多くは貧困層を形成するものとされた。
*ロマ(いわゆる「ジプシー」):高価なものや財布を見つけたらすぐ盗りに行く。ケチ。
*ポルトガル人:時間にルーズ。うるさい。ロマンチック。味覚が鈍感。
== 沈没船 ==
世界各国の人が乗った船が沈没しかかっています。そこで、船長は各国の乗客を海に飛び込ませようとします。
* アメリカ人に対して「飛び込めばヒーローになれますよ」
* ロシア人に対して「海にウォッカのビンが流れていますよ」
* イタリア人に対して「飛び込めば女性に愛されますよ」または「美女が飛び込みました」
* フランス人に対して「絶対に飛び込まないでください」
* イギリス人に対して「海に飛び込めばあなたは紳士です」
* ドイツ人に対して「海に飛び込むのはルールです」
* インド人に対して「牛が溺れていますよ」
* 中国人に対して「おいしい魚が泳いでいますよ」
* 日本人に対して「みなさん飛び込んでいます」
* 韓国人に対して「日本人はもう飛び込みました」
* 北朝鮮人に対して「今が脱北のチャンスです」又は「[[ja:w:金正恩|偉大なる第一書記様]]の命令です」
* 台湾人に対して「中国が飛び込めば侵略を諦めると言っていましたよ」
== 酒場にて ==
頼んだ酒にハエが入っているのを見て、
* フランス人は怒って帰った。
* イギリス人はウエイターに取り替えさせた。2杯分の代金を払った。
* ドイツ人はハエを除いて飲んだ。
* ロシア人はそのまま飲んだ。
* アメリカ人はウエイターに取り替えさせた。1杯分の料金を払った。
* 日本人はアメリカ人と同じ。
* 中国人はハエを食べた。
* 韓国人はこれは日本のせいだ!と言って帰っていった。
* 台湾人は中国に腐肉を投げつけてあっち行けと言って帰った。
または
* アメリカ人はビールを飲んでから不衛生だと裁判所に店を訴えた。
* イギリス人はビールを飲まず、皮肉を言って交換させた。
* ドイツ人は「アルコールで消毒されている」と思い、ハエを取り除いて飲んだ。
* フランス人は激怒して散々悪態をついて、もう一杯せしめた。
* ロシア人はすでに酔っぱらっていたのでハエに気付かずに飲んだ。
* ユダヤ人は「こら、これは俺のビールだ! 飲んだ分を返せ!」とハエを小突いた。
* 日本人は自分のジョッキにだけハエが入っているのを確認してからウエイターを呼んだ。
== 諜報機関 ==
([[w:アネクドート#秘密警察]]より)
国連がソ連のKGBとフランスのGIGNとアメリカのCIAは誰が一番犯人を捕まえるのがうまいか証明しようとしていた。国連の事務総長は彼らをテストすることにした。彼は森に1匹のウサギを放つと、それを捕まえてくるよう各々に指示した。
CIAは、動物の情報提供者を森中に配置した。さらに、植物や鉱物の目撃者に尋ねて回った。そうして3ヶ月に渡る徹底的な調査が終了した後、彼らはウサギは存在しないという結論を下した。
GIGNは2週間捜索し、成果が得られないとみると森に火をつけウサギもろともみんな殺してしまった。彼らは謝りもせず、ウサギに責任があると言った。
KGBは2時間ほど森に入っていたかと思うと、ひどく痛めつけられたクマを連れてきた。クマはうめいて言った「へぇへぇ、俺がウサギでございやす、ウサギで」。
== 無人島 ==
無人島に男2人、女1人が流された。そのときどうなるか。
*アメリカ人:男Aと女は結婚するが、すぐに離婚。男Bがその際の弁護士役を務める。
*ドイツ人:男Aと女は結婚し、男Bがその証人として書類を作成する。
*フランス人:男Aと女は結婚し、女は男Bと浮気する。
*イタリア人:3人で楽しむ。
*日本人:男2人はそれぞれ、女をどうすればいいかについて東京の本社にお伺いを立てる。
== 料理 ==
フランス人が言った
「日本は豊かだと思っていたがそうではないようだ。腐った大豆(もしくは海藻)を食べているなんて」
日本人が言った
「フランスは豊かだと思っていたがそうではないようだ。かたつむりを食べているなんて」
フランス人と日本人が言った
「イギリスは豊かだと思っていたがそうではないようだ。イギリス料理を食べているなんて」
== 銃 ==
アメリカで家族全員が銃殺される事件が起きた。それが報道された時アメリカ人は口を揃えて言った。
「もっと銃規制が軽ければ家族は銃で自分の身を守れたであろう!」
== 酒 ==
いつも一緒に酒を飲んでいるロシア人とイギリス人とドイツ人がいた。
ある日、ドイツ人が言った「俺の寿命はもう一年もないらしい。俺が死んだら、毎年俺の命日にウォッカを墓にかけてくれないか?」
それを聞いたイギリス人は「毎年欠かさずにかけてやるさ」と言った。
ロシア人も言った「俺もかけてやるよ。ただし一回腎臓を通してからでいいかな?」
== 新聞 ==
ある新聞が『アイルランド人はケチである』という内容の記事を書いたところ、アイルランド人の団体から抗議の手紙が届いた。その手紙にはこう書いてあった。
「貴紙の書いたアイルランド人はケチであるという話は事実無根でありこのような記事を書き続ける場合は我々アイルランド人は対抗措置として貴紙を他人から借りて読むのをやめることとする」
== 必要なものは ==
国際的な会議でコロナ禍の今、なにが必要かについて話し合われた。
*アメリカ人は勇気、
*ドイツ人はルール、
*フランス人は愛、
*日本人は技術、
*ロシア人はウォッカと答えた。
周りはロシア人に聞いた。 どうしてウォッカなのかと。
ロシア人は答えた。
「ウイルスは抑制できないが、不安を抑制することはできる。」
== 来る時間 ==
*開始一時間前に来たのがドイツ人と日本人とユダヤ人、
*開始30分前に来るのがイギリス人、
*開始時間ちょうどに来るのがアメリカ人、
*10分後に来るのがフランス人、
*15分後に来るのがイタリア人、
*30分〜1時間後に来るのがスペイン人。
*いつ来るのか分からないのがポルトガル人。
*中国人は、不法滞在している、もしくは入国禁止措置を取られているため来れない。
== 天国と地獄 ==
天国とは、
*コックは中国人(またはフランス人)
*政治家がイギリス人
*エンジニアが日本人(またはドイツ人)
*銀行員がドイツ人(またはスイス人)
*恋人がイタリア人
*警察官がイギリス人
地獄とは、
*コックがイギリス人
*政治家が日本人
*エンジニアが中国人
*銀行員がイタリア人
*恋人がドイツ人(またはスイス人)
*警察官がドイツ人(または中国人)
または
天国とは
*日本人の妻を持ち、
*アメリカ人の給料をもらい、
*中国人のコックを雇い、
*イギリス人の邸宅に住むこと
地獄とは
*アメリカ人の妻を持ち、
*中国人の給料をもらい、
*イギリス人のコックを雇い、
*日本人の家に住むこと
※ 中国が経済成長をする前のバージョン。
== 幸福 ==
幸福を買うかと神は各国の人々に言った。
*フランス人はワインとチーズがあるので買いませんと言った。
*イタリア人はパスタとサッカーさえあればいいので買いませんと言った。
*日本人は幸福を買い、領収書をもらった。
== たくさんあるもの ==
列車にアメリカ人とキューバ人とロシア人と弁護士と中国人(インド人)と付き添いの中国人(インド人)と日本人が座っていた。
キューバ人は葉巻を吸い終えると「ハバナの葉巻は最高級品だ。だがわが国には捨てるほどある。」と言って残った葉巻を窓の外に投げ捨てた。
ロシア人はウオッカを飲み終えると「ロシアのウオッカは最高だ。だがわが国には捨てるほどある。」と言って残った瓶を窓の外に放り投げた。
日本人はカメラで写真を撮ると「日本の機械は最高だ。だがわが国には捨てるほどある。」と言って写真を取り出して捨てた。
それを聞いたアメリカ人は、弁護士を窓から投げ捨てた。
それも見た中国人(インド人)は隣の中国人(インド人)を投げ捨てた。
韓国人はその話を聞いて「それらのルーツはすべて韓国だ」と言った。
== アジア関連 ==
=== 二次会 ===
結婚式の後、日本人と中国人と韓国人が二次会に行くことにした。
* 日本人「みんなが行くなら私も行きます」
* 中国人「おごってくれるなら私も行きます」
* 韓国人(黙って二人を二次会の飲み屋に連れていく)
=== 国際会議 ===
*国際会議において一番難しいのはインド人を黙らせ、日本人を喋らせることである。
=== 日本誕生 ===
*神様が日本列島を作りながら言った「この島々は日本と名付けよう。そしてこの国には美しい自然と素晴らしい文化と技術を与えよう。」助手がそれを聞いて言った「それではあまりにも日本が恵まれすぎています」神様は言った「安心しろ。多くの地震プレートや隣に朝鮮と中国、ロシアを作っておいた」
=== お会計 ===
*アジア人はどちらが全額支払うかで揉める。
=== 少子高齢化 ===
日本の少子高齢化について国会で話し合われた。
それからしばらく経って日本人の代表者がその問題について会見を行った。
その日本人は高らかに宣言した。
「私が最後の日本人だ」
=== 不良品 ===
*各国の工場に不良品は1000個に一個の精度でお願いします、とお願いすると
ロシアの工場では納期の延長を頼んだ。
中国の工場は不良品が10個あった。
日本の工場では999個作り終えると、「不良品用の設計図が届いていないのですが」と連絡しに来た。
=== 信用ならない言葉 ===
アジア人の信用ならない言葉3選
*日本人の「できません」
*韓国人の「できます」
*中国人の「できました」
=== 38度 ===
韓国の医学校で、生徒が先生に質問した。「先生、人は38度を超えるとどうなりますか?」「射殺されます」
=== 診察 ===
風邪をひいた日本人がアメリカのクリニックを訪れた。「How are you?」「I'm fine thank you, and you?」
=== アンケート ===
100人の日本人を対象にアンケートが実施された。「日本人は優柔不断な民族だと思いますか?」
*はい:13人
*いいえ:8人
*どちらとも言えない:79人
=== 輸血 ===
韓国の大統領が会談のために訪朝したが、道中で不慮の事故に遭い、意識不明の重体に陥った。
手術のために大量の輸血が行われたが、この時北朝鮮の官僚は思った。「今、ヤツの身体には北朝鮮人の血がたくさん流れている。親北思想に生まれ変わるに違いない!そうなれば韓国はあっという間に我らの手中に…!」
何時間にも及ぶ手術が終わり、大統領が意識を取り戻すと、開口一番に叫んだ。「金正恩の馬鹿野郎!」
=== ジョークと日本人 ===
日本人は1つのジョークで3回笑う。ジョークを聞いた時、隣の人にジョークのオチを説明してもらった時、家に帰ってからジョークのオチを理解した時。
=== パン屋 ===
ロシアを観光中の日本人・中国人・韓国人・北朝鮮人が、パン屋に並ぶ長蛇の列に出くわした。
日本人「パンを買う人の大行列ができている。この店のパンは絶品に違いない」
中国人「パンを買う人の大行列ができている。ロシア人は律儀な民族に違いない」
韓国人「パンを買う人の大行列ができている。この店は苦情が殺到するに違いない」
北朝鮮人「並びさえすればパンが買えるのか。ロシアは民主主義国家に違いない」
=== 日本人の怒らせ方 ===
中国・韓国・ロシア・北朝鮮・アメリカが、日本人を怒らせたくなって、結託して意地悪をする事にした。
中国は尖閣諸島を奪い取った。韓国は竹島を奪い取った。ロシアは北方領土を奪い取った。北朝鮮は弾道ミサイルを何発も発射した。アメリカは核爆弾を2発もお見舞いした。それでも日本人は怒らなかった。
各国がお手上げ状態になったその時、日本のテレビであるニュースが報じられ、日本人は憤慨した。「回転寿司の卓上醤油のボトルを舌で舐める動画が拡散され…」
=== 中国文化を学ぶ方法 ===
唐王朝の文化を見たいなら日本に行け。
宋王朝の文化を見たいならベトナムに行け。
明王朝の文化を見たいなら韓国に行け。
元王朝の文化を見たいならモンゴルに行け。
中華民国の文化を見たいなら台湾へ行け。
== 面白いジョーク ==
BはAに対して「面白いジョークを言えたら1ドルやるよ」と言った。以下は続き。
'''アメリカ&イギリス'''
*A「あるアメリカ人紳士がいた…」
*B「君には負けたよ!絶対にありえないじゃないか!」
'''ロシア人'''
*A「ある酒が嫌いなロシア人がいた…」
*B「君には負けたよ!絶対にありえないじゃないか!」
'''ドイツ人'''
*A「あるユニークなドイツ人がいた…」
*B「君には負けたよ!絶対にありえないじゃないか!」
== 教皇 ==
中世ヨーロッパには教皇が2人存在していた。
ある者が提案した。「みんなが納得する新しい教皇が必要だ。」そして3人目を出した。
結果は他の2人が認めず一時的に3人になり、問題を増やしてしまうだけだった。
== 嘘発見器 ==
中国共産党の習近平総書記と日本の岸田首相とアメリカのトランプ(ブッシュ)大統領が、ウソ発見器にかけられることになった。ウソをつくと「ビー」とブザーが鳴る装置である。
はじめに習近平総書記が装置に座って言った。
「私はいつも考えています。中国だけでなく世界中が豊かになればいいと」
「ビー、ビー、ビー」
次に岸田首相が装置に座って言った。
「私はいつも考えています。日本と北朝鮮が良き友人になればいいと」
「ビー、ビー、ビー」
最後にトランプ(ブッシュ)大統領が装置に座って言った。
「私はいつも考えています」
「ビー、ビー、ビー」
== 拉致 ==
ブッシュ大統領がテロリストに拉致された。「500万ドル用意しろ!さもなくばブッシュを生かして返すぞ」
== 拉致その2 ==
通勤中に渋滞に巻き込まれてしまった。すると前方から警察が歩いてきて窓をノックした。
「この先でブッシュ大統領がテロリストに拉致されてしまったんです。犯人は身代金を出さなければブッシュにガソリンを蒔いて火をつけるぞと言っています。いくらか寄付をお願いします」
「なるほど。いくら寄付すればいい?」
「1リットルもあれば十分です」
== 各国のベストセラー ==
アメリカでは新約聖書、
イスラエルでは旧約聖書、
ロシアでは偉人『スターリン』、
中国では毛沢東語録、
韓国では韓国の栄光、
日本では漫画
つまりどこの国でもフィクションが人気である
== 製品開発 ==
ドイツ人が発明し、
アメリカ人が製品化し、
イギリス人(ユダヤ人)が投資し、
フランス人がデザインし、
イタリア人が宣伝し、
日本人が小型化(高性能化)し、
中国が海賊版をつくり、
韓国が起源を主張する
== 懐に入れる ==
ある酒場に日本人・アメリカ人・ブラジル人の政治家が集まって話をしていた。
日本「あそこに橋が見えるでしょう?」
アメリカ「立派な橋ですね」
日本「実はここだけの話、建設費の10%を懐に入れましてね」
一同、ニヤニヤ
アメリカ「あそこにビルが見えるでしょう?」
ブラジル「高いビルですね」
アメリカ「私は30%を懐に入れましたよ」
一同、爆笑
ブラジル「あそこにダムが見えるでしょう?」
日本・アメリカ「いいえ?」
ブラジル「100%懐に入れました」
== 不法滞在 ==
オーストラリアの首相が言った
「我が国への不法滞在は絶対に許さない!」
アボリジニ「えっ!いつ帰ってくれるの?」
==オリンピック==
オリンピックのマークを見てアメリカ人はこう言った。
「O、O、O、O、Oってなんだ?」
== 時間厳守! ==
日本人「アメリカ人は時間にルーズだ。会議の開始時刻になっても全員集まらない」
アメリカ人「日本人は時間にルーズだ。終了時刻になってもまだ会議が終わらない」
== お静かに ==
日本のオフィスで静かにしなければならないのは、みんな仕事に集中しているから。
イタリアのオフィスで静かにしなければならないのは、みんな寝ているから。
== 図書館にて ==
「『平和国家・アメリカ』という本はありますか?」「ありますよ。ファンタジーノベルの棚をご覧ください」
== 持ち込み禁止 ==
2人のアメリカ人がカフェを訪れ、それぞれのカバンからサンドイッチを取り出し食べ始めた。
店員が注意を促した。「お客様、持参物の飲食はご遠慮願います」
2人は目を見合わせると、互いのサンドイッチを交換した。
== 理想の人間 ==
最も望ましい人間とは…
*ロシア人のように酒を慎み
*イギリス人のように料理が上手く(または「賭け事を慎み」)
*フランス人のように協調性があり
*イタリア人のように紳士的で(または「よく働き」)
*アメリカ人のように清貧で(または「寛容で」)
*ユダヤ人のように太っ腹で
*中国人のように法を守り
*インド人のように時間を守り
*日本人のように個性的で
*韓国人のように責任感があり
*ドイツ人のようにユーモラスな者である。
== 交通事故 ==
車を運転中、飛び出してきた歩行者に接触してしまった。ケガをした歩行者が運転手にかけた言葉とは?
アメリカ人「私から言う事は何もない。あとは弁護士と話してくれ」
ドイツ人「貴方が加入している保険会社の損害賠償額と免責事項を教えて下さい」
フランス人「なにボサッとしてんだ!こっちにだって飛び出す権利がある筈だ!」
イタリア人「あなたに娘さんはいますか?」
イギリス人「ちくしょう、今日は誰とも話さないって賭けをしてたのに!」
日本人「私にも落ち度があります。示談にしますか?保険を使いますか?」
韓国人「絶対に許さない!孫の代まで謝罪と賠償を要求する」
中国人は不法滞在しているので無言で立ち去る。
== 100万で買えるもの ==
日本人「100万もらったぞ!中古車くらいなら買えるかな。」
アメリカ人「は?100万あったら庭付きの家位は買えるだろ。」
韓国人「お前らのところ物価低すぎるだろ、100万あったら買えるのはせいぜいスマホくらいだろ」
日本人は100万円のことを言っており、アメリカ人は100万ドルのことを言っており、韓国人は100万ウォンのことを言っている。
==アリとキリギリス==
アリは夏の間にせっせと働き、冬を耐えるための食べ物を蓄えた。
キリギリスはその間バイオリンを弾いていた。
さて、冬になったらどうする?
フランス人「愛し合って冬を凌ぐ」
ドイツ人「キリギリスがアリの家でバイオリンを弾き、演奏料金としてアリから食べ物をもらう」
日本人「アリが過労により死に、キリギリスがそれらを食べて冬を耐えた」
==優秀な将軍==
フランス人とドイツ人とロシア人が、歴史上で最も優秀な将軍が誰か話し合っている。
そこで彼らはこう言った。
フランス人「ナポレオンこそ優秀な将軍だ」
ドイツ人「ヒトラーほど素晴らしい指導者はいない」
ロシア人「冬”将軍”だ」
== 道に落ちているりんご ==
ノルウェー人は拾って食べる
アイスランド人はりんごを拾い、綺麗に拭いてあげる
スウェーデン人は気づかないふりをする
フィンランド人は気づかない
デンマーク人はりんごをスウェーデン人に売りつける
日本人はどうするか悩む
中国人はけとばす
== ジャパングリッシュ ==
ある日本人がイタリア人とイギリス人に言った。
日本人「イタリアとイギリスって首都名の頭文字一緒ですよね!”ロ”ンドン、”ロ”ーマ、一緒なんて面白いですね!」
イタリア人「確かに日本語ではそうだけど…」
イギリス人「英語表記では違いますね」
日本人「えっそうなんですか!…あっ!でも国名の頭文字は一緒ですね!!”イ”タリア、”イ”ギリスですもんね!」
イタリア人「えっ、あぁ…」
イギリス人「”日本語表記では”確かに一緒ですね。」
イタリア人・イギリス人『…まさか日本人はRとLを間違えるとは聞いたことがあるけど…IとEも見分けられないのか…』
〜聖書に登場する人類の祖先「アダムとイブ」の正体について、各国の人が議論しています。〜
「アダムとイブは、一体どこの国の人だったのだろうか?」
• フランス人: 「服を着ずに愛し合っていたんだ。絶対にフランス人に違いない!」
• イギリス人: 「いや、1つのリンゴを紳士淑女として分け合って食べたんだ。イギリス人だよ」
• 日本人: 「いやいや、神様の言うルールを頑なに守ろうとしていたから、日本人に決まっている」
そこへ、事情をよく知る旧ソ連圏の人間がやってきて言いました。
「いや、彼らは間違いなく我が国の人間だ。着る服もなく、住む家もなく、食べるものはリンゴ1個しかないのに、自分たちは天国にいると信じ込まされていたんだから」
== 青いキリン ==
ある大富豪は言った。「青いキリンを一番早く連れてきた者に総資産を渡そう」と。
* イギリス人は複数人集まって議論し、青いキリンは居ないという結論についた。
* ドイツ人は図書館などで調べた。
* アメリカ人は世界中を調べまわった。
* 日本人は品種改良の末に青いキリンを作り出せた。
* 中国人は青いペンキを買いに行った。
== ロボコップ ==
日本人のエンジニアが、犯罪者を探して捕縛するロボットを作り上げた。早速日本で稼働させてみたところ、ロボットは1時間で10人のスリ師を捕まえてみせた。
ロボットをアメリカに輸出し稼働させてみたところ、1時間で100人の窃盗犯を捕まえた。
ロボットを中国に輸出し稼働させてみたところ、総書記を捕まえようとしたため、粉々になった。
ロボットをメキシコに輸出してみたところ、このロボットそのものが盗まれた。
93vyti0k25j167mnd09fzwq28as9xpe
高校化学 無機化学まとめ
0
35588
304819
299790
2026-10-17T15:42:01Z
Nermer314
62933
304819
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校理科|高等学校化学|[[高等学校 化学|化学]]|pagename=無機化学まとめ|frame=1|small=1}}
高校化学で扱われる気体の発生、沈殿反応、イオン・化合物の色などについてまとめた。
== 気体 ==
乾燥剤欄の×は、その気体と乾燥剤が反応してしまうことを示す。
{| class="wikitable"
|+ 気体の製法と性質
|-
!rowspan="3"|気体 !! rowspan="3"|化学反応式 !! rowspan="3"|反応様式 !! rowspan="3"|性質 !! colspan="5"|乾燥剤 !! rowspan="3"|捕集法
|-
! colspan="2"|酸性 !! 中性 !! colspan="2"|塩基性
|-
! 十酸化四リン !! 濃硫酸 !! 塩化カルシウム !! 酸化カルシウム !! ソーダ石灰
|-
| 水素 || <chem>Zn + H2SO4 -> ZnSO4 + H2 ^</chem>(希硫酸) || 酸化還元反応 || 中性 || ○ || ○ || ○ || ○ || ○ || 水上置換
|-
| 酸素 || <chem>2H2O2 ->[(MnO2)] 2H2O + O2 ^</chem><br><chem>2KClO3 ->[\Delta (MnO2)] 2KCl + 3O2 ^</chem> || 酸化還元反応 || 中性 || ○ || ○ || ○ || ○ || ○ || 水上置換
|-
| オゾン || <chem>3O2 -> 2O3</chem> || 無声放電/光化学反応 || 中性 || ○ || ○ || ○ || ○ || ○ || -
|-
| 窒素 || <chem>NH4NO2 ->[\Delta] 2H2O + N2 ^</chem> || 熱分解反応 || 中性 || ○ || ○ || ○ || ○ || ○ || 水上置換
|-
|塩素 || <chem>MnO2 + 4HCl ->[\Delta] MnCl2 + 2H2O + Cl2 ^</chem><br><chem>Ca(ClO)2.2H2O + 4HCl-> CaCl2 + 4H2O + 2Cl2 ^</chem> || 酸化還元反応 || 酸性 || ○ || ○ || ○ || × || × || 下方置換
|-
| 塩化水素 || <chem>NaCl + H2SO4 -> NaHSO4 + HCl ^</chem>(濃硫酸) || 不揮発性酸による揮発性酸の遊離反応 || 酸性 || ○ || ○ || ○ || × || × || 下方置換
|-
| フッ化水素 || <chem>CaF2 + H2SO4 -> CaSO4 + 2HF ^ </chem>(濃硫酸) || 不揮発性酸による揮発性酸の遊離反応 || 酸性 || ○ || ○ || ○ || × || × || 下方置換
|-
| 硫化水素 || <chem>FeS + H2SO4 -> FeSO4 + H2S ^ </chem>(希硫酸)<br><chem>FeS + 2HCl -> FeCl2 + H2S ^</chem>(希塩酸) || 弱酸遊離反応 || 酸性 || ○ || × ※1 || ○ || × || × || 下方置換
|-
| アンモニア || <chem> 2NH4Cl + Ca(OH)2 ->[\Delta] CaCl2 + 2H2O + 2NH3 ^ </chem><br><chem>(NH4)2SO4 + 2NaOH ->[\Delta] Na2SO4 + 2H2O + 2NH3 ^</chem> || 弱塩基遊離反応 || 塩基性 || × || × || × ※2 || ○ || ○ || 上方置換
|-
| rowspan="2"|二酸化硫黄 || <chem>Cu + 2H2SO4 ->[\Delta] CuSO4 + 2H2O + SO2 ^ </chem>(熱濃硫酸) || 酸化還元反応 || rowspan="2"|酸性 || rowspan="2"|○ || rowspan="2"|○ || rowspan="2"|○ || rowspan="2"|× || rowspan="2"|× || rowspan="2"|下方置換
|-
| <chem>NaHSO3 + H2SO4 -> NaHSO4 + H2O + SO2 ^</chem>(希硫酸)<br><chem>2NaHSO3 + H2SO4 -> Na2SO4 + 2H2O + 2SO2 ^</chem>(希硫酸) || 弱酸遊離反応
|-
| 一酸化窒素 || <chem>3Cu + 8HNO3 -> 3Cu(NO3)2 + 4H2O + 2NO ^</chem>(希硝酸) || 酸化還元反応 || 中性 || ○ || ○ || ○ || ○ || ○ || 水上置換
|-
| 二酸化窒素 || <chem>Cu + 4HNO3 -> Cu(NO3)2 + 2H2O + 2NO2 ^</chem>(濃硝酸) || 酸化還元反応 || 酸性 || ○ || ○ || ○ || × || × || 下方置換
|-
| rowspan="3"|一酸化炭素 || <chem>R + nO2 -> x H2O + y CO2 + z CO ^</chem>※3 || 不完全燃焼 || rowspan="3"|中性 || rowspan="3"|○ || rowspan="3"|○ || rowspan="3"|○ || rowspan="3"|○ || rowspan="3"|○ || rowspan="3"|水上置換
|-
| <chem>HCOOH ->[\Delta] H2O + CO ^</chem> || 脱水反応
|-
| <chem>CO2 + C ->[\Delta] 2CO</chem><br><chem>C + H2O ->[\Delta] H2 + CO ^</chem> || 酸化還元反応
|-
| rowspan="2"|二酸化炭素 || <chem>CaCO3 + 2HCl -> CaCl2 + H2O + CO2 ^ </chem> || 弱酸遊離反応 || rowspan="2"|酸性 || rowspan="2"|○ || rowspan="2"|○ || rowspan="2"|○ || rowspan="2"|× || rowspan="2"|× || rowspan="2"|下方置換
|-
| <chem>2NaHCO3 ->[\Delta] Na2CO3 + H2O + CO2</chem> || 熱分解反応
|}
※1:濃硫酸は硫化水素と酸化還元反応を起こして単体の硫黄を生成する。
:<chem>H2SO4 + H2S -> S + SO2 + 2H2O</chem>
※2:アンモニアは塩化カルシウムと付加反応を起こして塩化カルシウム八アンモニア付加物を生成する。
:<chem>8NH3 + CaCl2 -> CaCl2.8(NH3)</chem>
※3:Rは有機化合物を表す。ここでは、炭素の単体も含む。
=== 乾燥剤の選び方 ===
気体と乾燥剤が反応しないように、気体の性質に合わせて選ぶ。
* 酸性の気体には、塩基性の乾燥剤(酸化カルシウム、ソーダ石灰)を用いない。
* 塩基性の気体(<chem>NH3</chem>)には、酸性の乾燥剤(十酸化四リン、濃硫酸)を用いない。また、<chem>NH3</chem> は塩化カルシウムとも反応するので、<chem>NH3</chem> の乾燥にはソーダ石灰を用いる。
* 濃硫酸は酸化作用をもつので、還元性のある硫化水素(<chem>H2S</chem>)の乾燥には用いない。
=== 捕集法の選び方 ===
気体の捕集法は、水への溶けやすさと、空気と比べた密度の大小で選ぶ。
{| class="wikitable"
! 捕集法 !! 適する気体 !! おもな例
|-
| 水上置換 || 水に溶けにくい気体 || <chem>H2, O2, N2, NO, CO</chem>
|-
| 上方置換 || 水に溶けやすく、空気より軽い気体 || <chem>NH3</chem>
|-
| 下方置換 || 水に溶けやすく、空気より重い気体 || <chem>Cl2, HCl, H2S, SO2, NO2, CO2</chem>
|}
空気は、体積でおよそ <chem>N2</chem> 80%、<chem>O2</chem> 20% の混合気体とみなせるので、平均分子量は <math>28 \times 0.80 + 32 \times 0.20 = 28.8</math> である。分子量が 28.8 より小さい気体は空気より軽く、大きい気体は空気より重い。たとえば <chem>NH3</chem>(分子量 17)は空気より軽く、<chem>HCl</chem>(分子量 36.5)は空気より重い。
水に溶けにくい気体は、純粋な気体を集めやすい水上置換で捕集する。<chem>CO2</chem> は水に少し溶けるが、水上置換で捕集することもある。
=== 気体の検出 ===
{| class="wikitable"
|+ 気体の検出法
|-
! 気体 !! 検出法
|-
| 水素 || 点火すると、音を立てて燃え、水が生じる。
|-
| 酸素 || 火のついた線香を入れると、線香が炎をあげて燃える。
|-
| 塩素 || ヨウ化カリウムデンプン紙が青紫色になる。
|-
| 塩化水素 || アンモニアを近づけると、塩化アンモニウムの白煙が生じる。
|-
| 硫化水素 || 酢酸鉛(II)水溶液をしみこませたろ紙が、硫化鉛(II)の生成により黒変する。
|-
| アンモニア || 濃塩酸を近づけると白煙が生じる。湿らせた赤色リトマス紙が青変する。
|-
| 二酸化硫黄 || 硫化水素と反応して、硫黄が生じて白濁する。<chem>SO2 + 2H2S -> 3S + 2H2O</chem>
|-
| 一酸化窒素 || 空気に触れると、赤褐色の二酸化窒素になる。<chem>2NO + O2 -> 2NO2</chem>
|-
| 二酸化炭素 || 石灰水に通すと、炭酸カルシウムが沈殿して白濁する。<chem>CO2 + Ca(OH)2 -> CaCO3 + H2O</chem>
|}
== 沈殿 ==
* 硝酸イオン <chem>NO3^-</chem>
: 沈殿しにくい
* 塩化物イオン <chem>Cl^-</chem>
: <chem>Ag^+, Pb^2+, Hg2^2+</chem>と沈殿をつくる。<chem>AgCl</chem> は光で分解、<chem>PbCl2</chem> は熱湯に溶ける。
* 硫酸イオン <chem>SO4^2-</chem>
: <chem>Ba^2+, Ca^2+, Sr^2+, Pb^2+</chem>と沈殿をつくる。{{ruby|馬|Ba}}{{ruby|鹿|Ca}}に{{ruby|する|Sr}}{{ruby|な|Pb}}硫酸。
* 炭酸イオン <chem>CO3^2-</chem>
: アルカリ金属、<chem>NH4^+</chem>以外と沈殿をつくる。
* クロム酸イオン <chem>CrO4^2-</chem>
: <chem>Ba^2+, Pb^2+, Ag^+</chem>と沈殿をつくる。{{ruby|バ|Ba}}{{ruby|ナ|Pb}}ナを{{ruby|銀|Ag}}{{ruby|貨|褐}}で買ったら{{ruby|苦労|CrO4}}した。<chem>Ba^2+</chem> と <chem>Pb^2+</chem> の沈殿はバナナと同じ黄色。<chem>Ag^+</chem> の沈殿は赤褐色。
* 水酸化物イオン <chem>OH^-</chem>
: イオン化傾向が <chem>Li^+</chem> ~ <chem>Na^+</chem> の範囲の金属イオンは、水酸化物が沈殿しにくい。<chem>Mg^2+</chem> ~ <chem>Cu^2+</chem> の範囲の金属イオンと <chem>Mn^2+</chem> は、水酸化物が沈殿する。<chem>Hg^2+, Ag^+</chem> は、水酸化物が分解して酸化物が沈殿する。水酸化物を加熱すると、酸化物が生成する。<chem>Na^+</chem> までは <chem>NaOH</chem> 水溶液で沈殿が生じにくいことから、連想できる。<chem>Hg^2+, Ag^+</chem> は個別に覚え、その間のイオン化傾向の金属イオンは沈殿すると覚える。
* 硫化物イオン <chem>S^2-</chem>
: イオン化傾向が <chem>Li^+</chem> ~ <chem>Al^3+</chem> の範囲の金属イオンは、硫化物が沈殿しにくい。<chem>Mn^2+</chem> と <chem>Zn^2+</chem> ~ <chem>Ni^2+</chem> の範囲の金属イオンは、中性・塩基性で沈殿する。<chem>Cd^2+</chem> と <chem>Sn^2+</chem> ~ <chem>Ag^+</chem> の範囲の金属イオンは、酸性でも沈殿する。{{ruby|あら|Al}}{{ruby|ま|Mn}}、{{ruby|あ|Zn}}{{ruby|に|Ni}}、た{{ruby|か|Cd}}{{ruby|す|Sn}}{{ruby|ぎ|Ag}}!
=== 錯イオン ===
水酸化ナトリウムの水溶液を過剰に加え、沈殿が錯イオンを形成して溶解するものは、両性金属のイオンと <chem>Cr^3+</chem> である。
<chem>Al(OH)3 ->[NaOH] [Al(OH)4]^-</chem>
<chem>Zn(OH)2 ->[NaOH] [Zn(OH)4]^2-</chem>
<chem>Sn(OH)2 ->[NaOH] [Sn(OH)4]^2-</chem>
<chem>Pb(OH)2 ->[NaOH] [Pb(OH)4]^2-</chem>
<chem>Cr(OH)3 ->[NaOH] [Cr(OH)4]^-</chem>
アンモニアの水溶液を過剰に加え、沈殿が錯イオンを形成して溶解するものは、<chem>Cu^2+, Cd^2+, Ag^+, Ni^2+, Zn^2+</chem> である。{{ruby|どう|Cu}}{{ruby|か|Cd}}{{ruby|銀|Ag}}{{ruby|に|Ni}}{{ruby|会えん|Zn}}か。
<chem>Cu(OH)2 ->[NH3] [Cu(NH3)4]^2+</chem>
<chem>Ag2O ->[NH3] [Ag(NH3)2]^+</chem>
<chem>Ni(OH)2 ->[NH3] [Ni(NH3)6]^2+</chem>
<chem>Zn(OH)2 ->[NH3] [Zn(NH3)4]^2+</chem>
<chem>Cd(OH)2 ->[NH3] [Cd(NH3)4]^2+</chem>
これらの錯イオンは、ジアンミン銀(I)イオン、ヘキサアンミンニッケル(II)イオンを除いて配位数4である。
<chem>Fe^2+</chem> または <chem>Fe^3+</chem> を含む水溶液に、ヘキサシアニド鉄(II)酸カリウム <chem>K4[Fe(CN)6]</chem> 水溶液、ヘキサシアニド鉄(III)酸カリウム <chem>K3[Fe(CN)6]</chem> 水溶液、チオシアン酸カリウム <chem>KSCN</chem> 水溶液を加える。
{| class="wikitable"
|+
!
!<chem>Fe^2+</chem>
!<chem>Fe^3+</chem>
|-
|<chem>K4[Fe(CN)6]</chem>
|青白色沈殿
|濃青色沈殿
|-
|<chem>K3[Fe(CN)6]</chem>
|濃青色沈殿
|褐色溶液
|-
|<chem>KSCN</chem>
|変化なし
|血赤色溶液
|}
このうち、青白色沈殿と褐色溶液になるものは、出題されることが少ない。
=== 金属イオンの分離 ===
金属イオンの沈殿を利用して、水溶液中の金属イオンを次の1から6の群に分離することができる。
# <chem>Cl^-</chem> によって沈殿するもの。<chem>Ag^+, Pb^2+, Hg2^2+</chem>
# 強酸性条件下で <chem>S^2-</chem> と沈殿するもの。<chem>Cu^2+, Cd^2+, Sn^2+</chem><ref>イオン化傾向で <chem>Cd^2+</chem> と <chem>Sn^2+</chem> ~ <chem>Ag^+</chem> の範囲にあるもの</ref>
# 塩基性条件下で <chem>OH^-</chem> と沈殿するもの。<chem>Fe^3+, Al^3+, Cr^3+</chem>
# 中・塩基性で <chem>S^2-</chem> と沈殿するもの。<chem>Zn^2+, Mn^2+, Ni^2+</chem>
# <chem>CO3^2-</chem> と沈殿するもの。<chem>Ca^2+, Ba^2+, Sr^2+</chem>
# 1から5までで沈殿しないもの。<chem>Na^+, K^+</chem> など
それぞれの操作には、次のような注意点がある。
{| class="wikitable"
! 段階 !! 加える試薬 !! 沈殿 !! 注意点
|-
| 1 || 希塩酸 || <chem>AgCl</chem>(白)、<chem>PbCl2</chem>(白) || <chem>PbCl2</chem> は熱水に溶けるので、熱水で <chem>AgCl</chem> と分けられる。
|-
| 2 || 酸性で <chem>H2S</chem> || <chem>CuS</chem>(黒)、<chem>CdS</chem>(黄) など || 酸性では <chem>S^2-</chem> の濃度が小さいので、溶解度の特に小さい硫化物だけが沈殿する。
|-
| 3 || 煮沸のあと、希硝酸、過剰の <chem>NH3</chem> 水 || <chem>Fe(OH)3</chem>(赤褐)、<chem>Al(OH)3</chem>(白) など || 煮沸して <chem>H2S</chem> を追い出す。<chem>H2S</chem> で還元されて生じた <chem>Fe^2+</chem> を、希硝酸で <chem>Fe^3+</chem> に戻してから、アンモニア水を加える。
|-
| 4 || 塩基性で <chem>H2S</chem> || <chem>ZnS</chem>(白)、<chem>MnS</chem>(淡赤)、<chem>NiS</chem>(黒) || 塩基性では <chem>S^2-</chem> の濃度が大きくなり、2で沈殿しなかった硫化物も沈殿する。
|-
| 5 || <chem>(NH4)2CO3</chem> 水溶液 || <chem>CaCO3</chem>(白)、<chem>BaCO3</chem>(白) など ||
|-
| 6 || — || — || <chem>Na+, K+</chem> は炎色反応で確認する。
|}
<references />
[[ファイル:金属イオンの分離.svg|中央|サムネイル|1011x1011ピクセル|「HCl 塩基性」の部分は「HCl 酸性」と読み替えること]]
== 色 ==
高校化学で扱われる化合物の色について扱う。
沈殿として生じる塩化物、硫酸塩、炭酸塩は、すべて白色である。<chem>AgCl, PbCl2, Hg2Cl2, BaSO4, CaSO4, SrSO4, PbSO4, BaCO3, CaCO3, SrCO3</chem>
=== 水溶液中のイオン ===
<chem>Fe^2+</chem>:淡緑 <chem>Fe^3+</chem>:黄褐 <chem>Cu^2+</chem>:青 <chem>Ni^2+</chem>:緑 <chem>Cr^3+</chem>:緑 <chem>Mn^2+</chem>:淡桃 <chem>MnO4^-</chem>:赤紫 <chem>CrO4^2-</chem>:黄 <chem>Cr2O7^2-</chem>:赤橙 <chem>[Cu(NH3)4]^2+</chem>:深青 <chem>[Cr(OH)4]^-</chem>:濃緑 <chem>[Ni(NH3)6]^2+</chem>:青紫
[[ファイル:Дихромат калия.jpg|中央|サムネイル|<chem>Cr2O7^2-</chem>]]
[[ファイル:Potassium chromate sоlution.jpg|中央|サムネイル|<chem>CrO4^2-</chem>]]
[[ファイル:Synthesizing Copper Sulfate.jpg|中央|サムネイル|<chem>Cu^2+</chem>]]
[[ファイル:Green rust from FeSO4.jpg|中央|サムネイル|<chem>Fe^2+</chem>]]
=== 酸化物 ===
<chem>CuO</chem>:黒 <chem>Cu2O</chem>:赤 <chem>Fe2O3</chem>:赤褐 <chem>Fe3O4</chem>:黒 <chem>FeO</chem>:黒 <chem>Al2O3</chem>:白 <chem>Ag2O</chem>:褐 <chem>ZnO</chem>:白 <chem>MnO2</chem>:黒 <chem>HgO</chem>:黄
[[ファイル:CopperIIoxide.jpg|中央|サムネイル|<chem>CuO</chem>]]
[[ファイル:CopperIoxide.jpg|中央|サムネイル|<chem>Cu2O</chem>]]
[[ファイル:Iron(III)-oxide-sample.jpg|中央|サムネイル|<chem>Fe2O3</chem>]]
[[ファイル:Fe3O4.JPG|中央|サムネイル|<chem>Fe3O4</chem>]]
[[ファイル:Iron(II) oxide.jpg|中央|サムネイル|<chem>FeO</chem>]]
[[ファイル:Oxid hlinitý.PNG|中央|サムネイル|<chem>Al2O3</chem>]]
[[ファイル:Zinc oxide sample.jpg|中央|サムネイル|<chem>ZnO</chem>]]
[[ファイル:Manganese(IV) oxide.jpg|中央|サムネイル|<chem>MnO2</chem>]]
[[ファイル:HgOpowder.jpg|中央|サムネイル|<chem>HgO</chem>]]
=== 水酸化物 ===
<chem>Fe(OH)2</chem>:緑白 <chem>Fe(OH)3</chem>:赤褐 <chem>Cu(OH)2</chem>:青白 <chem>Cr(OH)3</chem>:灰緑 <chem>Ni(OH)2</chem>:緑 その他:白
[[ファイル:Hydroxid železitý.PNG|中央|サムネイル|<chem>Fe(OH)3</chem>]]
[[ファイル:სპილენძის ჰიდროქსიდი.jpg|中央|サムネイル|<chem>Cu(OH)2</chem>]]
=== クロム酸塩 ===
<chem>BaCrO4</chem>:黄 <chem>PbCrO4</chem>:黄 <chem>Ag2CrO4</chem>:赤褐
=== 銀の化合物 ===
<chem>Ag+</chem> は多くの陰イオンと沈殿をつくり、その色はさまざまである。
{| class="wikitable"
! 沈殿 !! 色 !! アンモニア水を過剰に加えたとき
|-
| <chem>AgCl</chem> || 白 || 溶ける
|-
| <chem>AgBr</chem> || 淡黄 || 少し溶ける
|-
| <chem>AgI</chem> || 黄 || 溶けない
|-
| <chem>Ag2O</chem> || 褐 || 溶ける
|-
| <chem>Ag2S</chem> || 黒 || 溶けない
|-
| <chem>Ag2CrO4</chem> || 赤褐 || 溶ける
|}
ハロゲン化銀のうち、<chem>AgF</chem> は水によく溶けるので沈殿しない。<chem>AgCl</chem> がアンモニア水に溶けるのは、ジアンミン銀(I)イオンを生じるためである。
<chem>AgCl + 2NH3 -> [Ag(NH3)2]+ + Cl-</chem>
<chem>AgCl, AgBr</chem> は光によって分解して銀を遊離するので、褐色瓶に保存する。この性質は、写真のフィルムに利用されてきた。
=== 硫化物 ===
<chem>ZnS</chem> :白 <chem>CdS</chem>:黄 <chem>MnS</chem>:淡赤 <chem>SnS</chem>:褐 その他:黒
[[ファイル:Zinc_sulfide.jpg|中央|サムネイル|<chem>ZnS</chem>]]
[[ファイル:Cadmium_sulfide.jpg|中央|サムネイル|<chem>CdS</chem>]]
[[ファイル:Sulfid_manganatý.PNG|中央|サムネイル|<chem>MnS</chem>]]
=== 炎色反応 ===
{{ruby|リ|Li}}{{ruby|アカ|赤}}ー{{ruby|な|Na}}{{ruby|き|黄}}{{ruby|K|K}}{{ruby|村|紫}}{{ruby|動|Cu}}{{ruby|力|緑}}{{ruby|借る|Ca}}{{ruby|とう|橙}}{{ruby|する|Sr}}も{{ruby|くれない|紅}}{{ruby|馬|Ba}}{{ruby|力|緑}}
<chem>Li</chem>(赤)、<chem>Na</chem>(黄)、<chem>K</chem>(赤紫)、<chem>Cu</chem>(青緑)、<chem>Ca</chem>(橙赤)、<chem>Sr</chem>(紅)、<chem>Ba</chem>(黄緑)
<gallery>
ファイル:Flametest--.swn.jpg|ガスバーナーの色
ファイル:FlammenfärbungLi.png|リチウム
ファイル:Flametest--Na.swn.jpg|ナトリウム
ファイル:FlammenfärbungK.png|カリウム
ファイル:FlammenfärbungCa.png|カルシウム
ファイル:FlammenfärbungSr.png|ストロンチウム
ファイル:Flametest--Cu.swn.jpg|銅
ファイル:BaCl Flame colour.jpg|バリウム
</gallery>
=== 気体 ===
* <chem>Cl2</chem> 黄緑
* <chem>NO2</chem> 赤褐
* <chem>O3</chem> 淡青
* <chem>F2</chem> 淡黄
== その他 ==
試薬の保存
:フッ化水素酸はガラスを溶かすのでポリエチレン容器に保存。
:黄リンは空気中で自然発火するので水中保存。
:ナトリウムやカリウムは、空気中の酸素や水と反応するので石油(灯油)中に保存。
:水酸化ナトリウムの水溶液はガラスを侵すので、ポリエチレン容器かゴム栓をしたガラス瓶に保存。
:硝酸は光化学反応で二酸化窒素に分解されるので褐色瓶中で冷暗所に保存。
:過酸化水素水はガラスに不純物として微量に含まれる金属を触媒とした分解反応で酸素を生じるのでポリエチレン容器に入れガス抜きの穴を開けた蓋をつけて保存。
両性金属:<chem>Al, Zn, Sn, Pb</chem> {{ruby|あ|Al}}{{ruby|あ|Zn}}{{ruby|すん|Sn}}{{ruby|な|Pb}}りと両性に愛される。
潮解性:<chem>NaOH, KOH, H3PO4, P4O10, CaCl2</chem>
風解性:<chem>Na2CO3.10H2O, \, CuSO4.5H2O</chem>
[[カテゴリ:無機化学|むきかかくまとめ]]
924tlhhfvslywck70gtj9fvdafoujtt
高等学校日本史探究
0
36598
304834
304764
2026-10-17T23:55:34Z
Kwawe
68789
/* 第7章 グローバル化のなかの現代日本 */
304834
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>高等学校日本史探究
高等学校日本史探究のページです。{{進捗状況}} 本ページの目次と項目の配列は、実教出版株式会社の新課程教科書「[https://www.jikkyo.co.jp/book/detail/23010423 日本史探究]」(日探702・日探007-901)に合わせて作成しています。文章の配列も原則上記教科書会社さんに従いました。学習指導要領に定められた日本史探究の標準単位数は'''3単位です。'''
※本ページは大学の二次試験まで対応させるため、日本史探究の完成時期は未定です。当面の間は日本史Bを参照して下さい。
== 第1部 原始・古代の日本と東アジア ==
INTRODUCTION
=== 第1章 日本文化のあけぼの ===
# [[高等学校日本史探究/日本列島最古の文化Ⅰ|日本列島最古の文化Ⅰ]]{{進捗|100%|2024-09-21}}(人類の誕生と日本列島への居住)
# [[高等学校日本史探究/日本列島最古の文化Ⅱ|日本列島最古の文化Ⅱ]]{{進捗|100%|2024-10-01}}(日本の旧石器時代)
# [[高等学校日本史探究/縄文時代の社会と文化|縄文時代の社会と文化]]{{進捗|100%|2026-09-27}}(縄文文化の成立~縄文社会と縄文人)
# 弥生時代の社会と文化Ⅰ{{進捗|00%|2023-11-11}}
# 弥生時代の社会と文化Ⅱ{{進捗|00%|2023-11-11}}
=== 第2章 ヤマト政権の成立と古墳文化 ===
# 小国の分立と邪馬台国{{進捗|00%|2023-11-11}}
# 古墳の出現とヤマト政権の成立{{進捗|00%|2023-11-11}}
# ヤマト政権の展開と統治の進展{{進捗|00%|2023-11-11}}
# 古墳時代の生活と文化{{進捗|00%|2023-11-11}}
=== 第3章 律令国家の形成 ===
# [[高等学校日本史探究/古代国家の形成Ⅰ|古代国家の形成Ⅰ]]{{進捗|100%|2024-11-18}}(6世紀の朝鮮半島と倭~7世紀の東アジアと倭国)
# [[高等学校日本史探究/古代国家の形成Ⅱ|古代国家の形成Ⅱ]]{{進捗|100%|2025-02-01}}(大化の改新~東北遠征と白村江の戦い)
# [[高等学校日本史探究/古代国家の形成Ⅲ|古代国家の形成Ⅲ]]{{進捗|100%|2025-02-11}}(近江朝廷と壬申の乱~天武・持統期の政治改革)
# [[高等学校日本史探究/飛鳥文化・白鳳文化|飛鳥文化・白鳳文化]]{{進捗|100%|2024-11-06}}
# [[高等学校日本史探究/律令制度|律令制度]]{{進捗|100%|2025-06-03}}(大宝律令の官制~土地・人民の支配制度)
# [[高等学校日本史探究/奈良時代の政治Ⅰ|奈良時代の政治Ⅰ]]{{進捗|100%|2025-07-21}}(遣唐使派遣と平城京遷都)
# [[高等学校日本史探究/奈良時代の政治Ⅱ|奈良時代の政治Ⅱ]]{{進捗|100%|2025-11-22}}(奈良時代初期の政策~度重なる遷都と鎮護国家の仏教)
# [[高等学校日本史探究/奈良時代の政治Ⅲ|奈良時代の政治Ⅲ]]{{進捗|100%|2025-12-21}}(公地公民制の修正~奈良時代後半の政争)
# 天平文化
STEP UP 1 [[高等学校日本史探究/奈良時代の人々の暮らし|奈良時代の人々の暮らし]]{{進捗|100%|2026-04-09}}(奈良時代の貴族生活~生活文化の発展と庶民の苦難)
=== 第4章 古代の国家・社会の変容 ===
# [[高等学校日本史探究/律令体制再編期の政治と社会Ⅰ|律令体制再編期の政治と社会Ⅰ]]{{進捗|100%|2026-10-11}}(平安京遷都と東北経営)
# [[高等学校日本史探究/律令体制再編期の政治と社会Ⅱ|律令体制再編期の政治と社会Ⅱ]]{{進捗|100%|2026-10-16}}(律令政治の再編成~法・儀式の整備と教育)
# 律令体制再編期の政治と社会Ⅲ{{進捗|00%|2026-09-5}}(密教の隆盛~弘仁・貞観文化)
# 摂関政治の成立と支配体制の転換
# 国風文化
== 第2部 中世の日本と世界 ==
INTRODUCTION
=== 第1章 荘園公領制の成立と院政 ===
※荘園公領制の成立と院政は2027年4月に記述します。
* 荘園公領制の成立と院政Ⅰ
* 荘園公領制の成立と院政Ⅱ
* 荘園公領制の成立と院政Ⅲ
* 荘園公領制の成立と院政Ⅳ
=== 第2章 中世の国家・社会の展開 ===
# 鎌倉幕府の成立と朝廷
# 中世に生きる人々
# 蒙古襲来と幕府の衰退
# 鎌倉文化
=== 第3章 中世の国家・社会の変容 ===
# 南北朝の動乱
# 室町幕府の政治と外交
# 室町社会の展開と応仁の乱
# 室町文化
# [[高等学校日本史探究/戦国大名の分国経営Ⅰ|戦国大名の分国経営Ⅰ]]{{進捗|100%|2025-02-15}}(戦国時代の特質~戦国の争乱)
# 戦国大名の分国経営Ⅱ{{進捗|00%|2023-00-00}}(分国経営)
# 戦国大名の分国経営Ⅲ{{進捗|00%|2025-02-15}}(都市の発達と町衆~経済の混乱)
STEP UP 2 東アジアのなかのアイヌ文化・琉球文化
STEP UP 3 女性と仏教
== 第3部 近世の日本と世界 ==
INTRODUCTION
=== 第1章 東アジア世界の変容と天下統一 ===
# 織豊政権
# 天下統一の完成
# 近世成立期の文化
歴史資料と近世の展望
=== 第2章 幕藩体制の成立と展開 ===
# 幕藩体制の成立
# 貿易の統制と対外関係
# 近世社会のしくみ
# 幕府政治の展開
# 経済の発展
# 元禄文化と学芸の発展
STEP UP 4 近世の遊郭
=== 第3章 近世の国家・社会の変容 ===
# 幕藩体制の動揺と幕政の改革
# 欧米列強の接近と天保の改革
# 近世文化の成熟と変容
STEP UP 5 百姓一揆と義民物語
== 第4部 近現代の地域・日本と世界 ==
INTRODUCTION(近代)
=== 第1章 開国から倒幕へ ===
歴史資料と近代の展望
=== 第2章 明治維新 ===
# 明治維新
# 文明開化
=== 第3章 近代国家の形成 ===
# 立憲国家への道
# 議会政治の展開と日清・日露戦争
# 産業革命と社会の変化
# 近代文化の形成と展開
STEP UP 6 日露戦争のアジアへの影響
=== 第4章 両大戦間の日本 ===
# 第一次世界大戦
# 政党政治の展開
# 市民文化の展開
STEP UP 7 近代日本の「食」と米
=== 第5章 十五年戦争と日本 ===
# 満洲事変
# 日中戦争
# アジア・太平洋戦争(太平洋戦争)
INTRODUCTION(現代)
=== 第6章 戦後日本の形成 ===
# 占領と民主改革
# 独立と日米安保体制の形成
# 高度経済成長下の日本
STEP UP 8 エネルギー革命
=== 第7章 グローバル化のなかの現代日本 ===
# 「国際化」する経済大国Ⅰ{{進捗|00%|2023-00-00}}(ドル=ショックと石油危機~安定成長への転換まで)
# 「国際化」する経済大国Ⅱ{{進捗|00%|2023-00-00}}(経済大国への道と国際化の時代)
# 「国際化」する経済大国Ⅲ{{進捗|00%|2023-00-00}}(貿易摩擦とバブル経済~「豊かさ」と社会・生活の変容まで)
# [[高等学校日本史探究/新たな世紀の日本へⅠ|新たな世紀の日本へⅠ]]{{進捗|100%|2026-04-10}}(冷戦の終結とグローバル化~湾岸戦争と平和維持活動まで)
# [[高等学校日本史探究/新たな世紀の日本へⅡ|新たな世紀の日本へⅡ]]{{進捗|50%|2026-10-18}}(政界再編と55年体制の終結~行政改革と日米安保の変化まで)
# [[高等学校日本史探究/新たな世紀の日本へⅢ|新たな世紀の日本へⅢ]]{{進捗|100%|2026-09-23}}(「構造改革」と対テロ戦争~憲法改正論と政権交代まで)
# [[高等学校日本史探究/新たな世紀の日本へⅣ|新たな世紀の日本へⅣ]]{{進捗|25%|2026-09-24}}(新しい世界を目指して~平成時代・令和時代の文化史・科学史まで)
【STEP UP 9】[[高等学校日本史探究/多文化共生|多文化共生]]{{進捗|100%|2024-09-24}}
現代の日本の課題の探究
== 読書案内・学習方法 ==
* [[高等学校日本史探究/資料出所・読書案内|資料出所・読書案内]]
* [[学習方法/高校日本史|高校日本史学習方法]]{{進捗|100%|2026-04-29}}(新試験対応)
[[カテゴリ:高等学校日本史|探]]
fhh0gpn3wijgs3946xlcc9d5lovtpaq
高等学校日本史探究/新たな世紀の日本へⅡ
0
38286
304803
304785
2026-10-17T12:28:26Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らした。
304803
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域産業の空洞化)。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
ghplu4gwdl2wznpp0q699976dfnliol
304804
304803
2026-10-17T12:32:21Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなった。
304804
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域産業の空洞化)。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
nfz55htw1raakxmdua8zz7y1yolipay
304805
304804
2026-10-17T12:42:42Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 写真を追加。
304805
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域産業の空洞化)。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
1t50e9gqmsj4uubtkwkibmexl0afaq8
304806
304805
2026-10-17T12:50:31Z
Kwawe
68789
/* バブルの崩壊 */ 重要用語を黒太字化。
304806
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域'''産業の空洞化''')。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
2fzgd84ozn3zva9na5uvqghti0ok8ow
304828
304806
2026-10-17T23:23:54Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 冷戦後、橋本龍太郎内閣は日米安全保障体制を見直した。
304828
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域'''産業の空洞化''')。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
冷戦後、橋本龍太郎内閣は日米安全保障体制を見直しました。アメリカのビル・クリントン大統領が1996年4月に日本を訪れ、橋本首相と話し合って日米安全保障共同宣言を発表しました。日米安全保障共同宣言から日本とアメリカは日本防衛以外にもアジア太平洋地域の戦争防止・紛争防止まで努めていくようになりました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
6m3jgrihu3b4394afxurtch6rttt8ur
304829
304828
2026-10-17T23:25:29Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 1997年、日本政府とアメリカ合衆国政府は「新しい日米防衛協力のための指針(新ガイドライン)」を作った。
304829
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域'''産業の空洞化''')。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
冷戦後、橋本龍太郎内閣は日米安全保障体制を見直しました。アメリカのビル・クリントン大統領が1996年4月に日本を訪れ、橋本首相と話し合って日米安全保障共同宣言を発表しました。日米安全保障共同宣言から日本とアメリカは日本防衛以外にもアジア太平洋地域の戦争防止・紛争防止まで努めていくようになりました。
自衛隊がアメリカ軍に必要物資を運ぶなどの後方支援についても、日米防衛協力のための指針を見直しました。1997年、日本政府とアメリカ合衆国政府は「新しい日米防衛協力のための指針(新ガイドライン)」を作りました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
0ss5g5lk24pfroemnmjj27m8q1sc08r
304830
304829
2026-10-17T23:26:44Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 日本が外国から直接攻撃されても直接攻撃されていなくても、日本周辺国の戦争などから日本の平和と安全に大きく関わっていたらアメリカ合衆国側も新ガイドラインに従って助け合った(周辺事態)。
304830
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域'''産業の空洞化''')。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
冷戦後、橋本龍太郎内閣は日米安全保障体制を見直しました。アメリカのビル・クリントン大統領が1996年4月に日本を訪れ、橋本首相と話し合って日米安全保障共同宣言を発表しました。日米安全保障共同宣言から日本とアメリカは日本防衛以外にもアジア太平洋地域の戦争防止・紛争防止まで努めていくようになりました。
自衛隊がアメリカ軍に必要物資を運ぶなどの後方支援についても、日米防衛協力のための指針を見直しました。1997年、日本政府とアメリカ合衆国政府は「新しい日米防衛協力のための指針(新ガイドライン)」を作りました。
日本が外国から直接攻撃されても直接攻撃されていなくても、日本周辺国の戦争などから日本の平和と安全に大きく関わっていたらアメリカ合衆国側も新ガイドラインに従って助け合いました(周辺事態)。ただし日本から何キロ以内というような距離だけだとアメリカ合衆国側は何もしません。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
n6bh76y2iy8y8rdn6myzy0r8wgypucp
304831
304830
2026-10-17T23:30:53Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 川田龍平さんの写真を追加。
304831
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域'''産業の空洞化''')。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
ファイル:Ryuhei Kawada 20240307.jpg|川田龍平
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
冷戦後、橋本龍太郎内閣は日米安全保障体制を見直しました。アメリカのビル・クリントン大統領が1996年4月に日本を訪れ、橋本首相と話し合って日米安全保障共同宣言を発表しました。日米安全保障共同宣言から日本とアメリカは日本防衛以外にもアジア太平洋地域の戦争防止・紛争防止まで努めていくようになりました。
自衛隊がアメリカ軍に必要物資を運ぶなどの後方支援についても、日米防衛協力のための指針を見直しました。1997年、日本政府とアメリカ合衆国政府は「新しい日米防衛協力のための指針(新ガイドライン)」を作りました。
日本が外国から直接攻撃されても直接攻撃されていなくても、日本周辺国の戦争などから日本の平和と安全に大きく関わっていたらアメリカ合衆国側も新ガイドラインに従って助け合いました(周辺事態)。ただし日本から何キロ以内というような距離だけだとアメリカ合衆国側は何もしません。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
30l1zqeghic1uczul5i3uctvqmtufd2
304832
304831
2026-10-17T23:44:08Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ ビル・クリントン大統領と民族共生象徴空間ウポポイの写真を追加。
304832
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域'''産業の空洞化''')。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の阪神・淡路大震災[兵庫県南部地震]が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(地下鉄サリン事件)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
ファイル:Ryuhei Kawada 20240307.jpg|川田龍平
</gallery>1995年9月、自由民主党総裁選挙から橋本龍太郎が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
[[ファイル:Official Portrait of President William Jefferson Clinton - DPLA - 4697184146b3b6e2d6791b8f3c297476.jpg|サムネイル|221x221ピクセル|ビル・クリントン大統領]]
冷戦後、橋本龍太郎内閣は日米安全保障体制を見直しました。アメリカのビル・クリントン大統領が1996年4月に日本を訪れ、橋本首相と話し合って日米安全保障共同宣言を発表しました。日米安全保障共同宣言から日本とアメリカは日本防衛以外にもアジア太平洋地域の戦争防止・紛争防止まで努めていくようになりました。
自衛隊がアメリカ軍に必要物資を運ぶなどの後方支援についても、日米防衛協力のための指針を見直しました。1997年、日本政府とアメリカ合衆国政府は「新しい日米防衛協力のための指針(新ガイドライン)」を作りました。
日本が外国から直接攻撃されても直接攻撃されていなくても、日本周辺国の戦争などから日本の平和と安全に大きく関わっていたらアメリカ合衆国側も新ガイドラインに従って助け合いました(周辺事態)。ただし日本から何キロ以内というような距離だけだとアメリカ合衆国側は何もしません。
[[ファイル:UPOPOY 202608.jpg|サムネイル|民族共生象徴空間ウポポイ]]
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
2f993rcucz34rlv8zz80n39gp4mlw7p
304833
304832
2026-10-17T23:54:45Z
Kwawe
68789
/* 行政改革と日米安保の変化 */ 重要用語を色太字化。
304833
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>新たな世紀の日本へⅡ
引き続き「新たな世紀の日本へ」の内容を解説します。第2回目では、政界再編から小渕恵三内閣までの国内政治を見ていきます。
== 政界再編と55年体制の終結 ==
※55年体制の崩壊で、国内政治はどのように変わりましたか。
{| style="border:2px solid #80A491;width:100%" cellspacing="0"
! style="background:#80A491" |村山談話
1995年8月15日「戦後五十周年の終戦記念日にあたって」を現代語に翻訳
|-
| style="padding:5px" |
|}
== バブルの崩壊 ==
プラザ合意後、大量のお金が土地購入・株式購入のために使われ、土地の値段・株価[資産価格]が次第に上がりました(資産インフレ)。1989(平成元)年、日本銀行は銀行へお金をあまり貸さなくなり、政府も土地の値段を上げすぎないようにしました(金融引き締め政策)。1990年代に入ってから、土地の値段・株価は下がり始めました。日経平均株価は、1989年12月末に3万8915円まで上がりました。しかし、その後は株式売却が増えて株価もいきなり下がり、1992年8月に1万4309円まで下がりました。土地の値段も1991年頃から下がり始め、1992年以後は日本各地で下がりました。2000年代半ばになると、大阪の一部商業地は一番高い時期の値段から約10分の1まで下がりました。こうして土地や株式の大幅な値上がりは終わり、1980年代後半のバブル経済は終わりました。
★日本の実質経済成長率の推移
[[ファイル:GDP_growth_rate_in_Japan.svg|代替文=日本の実質経済成長率の推移|フレームなし|924x924px]]
日本の景気は1991年から悪くなりました('''平成不況''')。実質経済成長率は1992年に1.3%、1993年に1%未満まで下がりました。1992年を3か月ずつに分けて見ると、4~6月は-3.3%となり、前の3か月より国内経済が小さくなりました。7~9月と10~12月もそれぞれ-0.1%となりました。第1次石油危機後に2期連続の経済縮小時期はあっても、3期連続の経済縮小は戦後初めてでした。僅かな景気回復時期も平成不況の途中にありました。しかしすぐに経済縮小となり、平成不況が長年続きました。
バブル経済当時の国民は金融機関からお金を借りて、株価と地価をより高い価格で買いました。金融機関は不動産会社にもお金を貸しました。バブル崩壊後、株価と地価が大きく下がりました。国民は株と土地を全て売っても借金を返せなくなりました。国民の借金も金融機関へ返ってこなくなりました(不良債権)。金融機関は株と土地を債権として持っており、不良債権から金融機関も大赤字になりました。
金融機関は不良債権処理にずっと追われて、さらに苦しくなりました。その結果、金融機関は不良債権の心配からお金を貸さなくなりました。企業は金融機関からお金を借りにくくなりました。国民も「この金融機関は大丈夫か」と不安を感じるようになり、金融機関はさらに苦しくなりました。その後、企業は新しい商品を作れなくなり、新しい工場を建てられなくなり、新しい機械も買えなくなりました。地価の下落・株価の下落・不良債権の増加・金融機関の経営悪化・金融機関の融資停止が全て重なって景気も次第に悪くなりました('''複合不況''')。
当時の政府と日本銀行はこれまでの不況と同じように、財政支出の拡大・低金利政策から数年で景気も回復するかもと思っていました。この誤対策は複合不況に一切効果ありません。住宅金融専門会社は1995年頃から相次いでつぶれました。1997年、北海道拓殖銀行と山一証券がつぶれました。1998年、日本債券信用銀行と日本長期信用銀行がつぶれました。このように大手金融機関がつぶれると、国民も他の金融機関も危ないのではないかと不安になりました。政府は金融システムまで止まらないように、倒産寸前の大手金融機関などに大量の公的資金を入れました。<gallery mode="nolines" widths="200" heights="200">
ファイル:The Hokkaido Takushoku Bank.JPG|旧北海道拓殖銀行本店
ファイル:Kayabacho Tower, at Shinkawa, Chuo, Tokyo (2019-01-02) 02.jpg|旧山一證券本社
ファイル:日債銀本店.jpg|旧日本債券信用銀行本店
ファイル:Shinsei Bank (head office 1).jpg|旧日本長期信用銀行本店
</gallery>1998年、小渕恵三が内閣総理大臣になりました。小渕恵三内閣も大型予算から景気を回復させしようとしました。小渕内閣が公共投資を増やして国民のお金を回そうとしても複合不況に一切効果ありません。こうして、公債発行残高は増えました。物価は1990年代後半からずっと下がり続けました(デフレスパイラル)。
[[ファイル:Unemployment Rate of Japan 1953-2009.jpg|サムネイル|395x395ピクセル|日本の失業率]]
企業は赤字なので、生き残るために経営の効率化[事業整理・人員削減・雇用調整・海外進出など]を進めました(リストラクチャリング)。中小企業の倒産も増えて、中高年労働者の解雇・中高年労働者の早期退職・新卒採用の削減から企業の人件費を大幅に減らしました。バブル景気の時期は労働者不足から「売り手市場」でも、バブル崩壊後から「買い手市場」へ変わりました。1990年代半ばから2000年代前半、企業は新卒採用を大幅に減らしました(就職氷河期)。1998年の完全失業率は4%を超え、2001年の完全失業率で5%になりました。
失業者が増えると労働者も「自分も仕事を失うかもしれない」と不安になり、個人消費を減らしました。消費者は同じような商品なら出来るだけ安い商品を選ぶようになり、ブランド品・高級品を買ってくれなくなりました。商品が売れなくなると、会社も少量生産・既存工場・既存機械だけで行うようになりました。その結果、会社の利益がさらに減って、人員削減・採用縮小もさらに進みました。株価と地価の下落から不良債権が増えて、金融機関の経営も苦しくなり、企業へお金を貸せなくなりました。
円高も国際分業も進みました。1994年、1ドルが100円を割り込みました。輸出主導・量産指向型産業[自動車・電子・家電・事務機器など]は海外で売れにくくなりました。また、バブル崩壊後の不景気から国内の購入者も減りました。生産費用を少しでも減らすため、労働者の給料が日本より低いアジア諸国[中国など]へ工場を移すようになりました[国内工場の閉鎖・国内工場の海外移転]。その結果、地元企業・周辺店舗の売り上げを減らし、失業者を増やしました(地域'''産業の空洞化''')。
繊維産業の事業所数は減り続けました。2015年の繊維産業の事業所数は1991年と比べて約4分の1になりました。国内衣料品市場のうち海外衣料品購入割合は1991年で52%になり、2017年で97%まで上がりました。多数の多国籍企業が1990年代後半に日本企業を合併したり、買収したりしました。企業が日本型雇用を取り入れていても競争力強化・経営効率化から人員削減・能力給の導入を進めました。その結果、働き方の不安定さが広がりました。
日本は技術面でも負けています。1980年代、日本企業はエレクトロニクス[電子機器]・新素材・バイオテクノロジーなどの技術でアメリカに追いつこうとしていました。1990年代から情報通信技術の活用や生産性の伸びでアメリカ合衆国に負けました。商品は日本国内で売れにくくなり、業務内容も変わっていきました。そのため、日本企業は海外企業に負けないような対策を取りました。
バブル崩壊後、銀行制度・企業制度も変えられました。「日本版金融ビッグバン」を1996年に打ち出して、銀行・証券会社などにも規制を緩めて金融の自由化・国際化を進めました。1997年の独占禁止法改正から禁止の持株会社を再度認めました。企業は持株会社からグループ内の会社をまとめ直したり、経営の進め方を変えたりしやすくなり、その後の企業再編・金融再編にもつながりました。
以前の大規模小売店舗法は店舗面積500平方メートル以上の大規模小売店舗出店条件として出店規模・営業時間・営業日数などを定めていました。しかし、大規模小売店舗は中小小売業者の近くにも自由に出店しており、中小小売業者のお客様まで消えました。そのため、政府は大規模小売店舗の立地場所を1998年から制限しました(大規模小売店舗立地法)。中小小売業者から流れすぎないように守りながら、大規模小売店舗も中小小売業者も商売を続けられるようにしました。2000年、大規模小売店舗法を廃止しました。[[ファイル:Asian Financial Crisis EN-2009-05-05.png|サムネイル|273x273px|アジア通貨危機の影響国]]企業再編・合併は政府の規制緩和から広がり、海外企業と国内企業の協力・合併も増えました。その流れから六大企業集団もまとまりました。金融業界でも銀行などが倒産したり、別の銀行と合併したりしました。その結果、日本の金融業界は三井住友グループ[旧三井系と旧住友系]・三菱UFJ[旧三菱系と三和系]・みずほグループ[旧第一勧銀系と旧富士系]の三大金融グループへまとまりました。
国内長期不況で苦しむ中、アジア諸国の経済は大成長しました。しかし短期海外資金の依存・金融機関の過剰な借入れ・企業の過剰な借入れ・金融制度の弱さ・投機資金の流入などから海外投資家が危機感を示して一斉に海外資金を回収・売却・国外移動を行いました。1997年、タイの通貨バーツの価値が大きく下がりました。海外投資家は東アジア・東南アジアから次々と海外資金を回収・売却・国外移動を行いました(アジア通貨危機)。その結果、東アジア・東南アジア諸国の金融と経済は大きな爪痕を残しました。債務問題は韓国などで大きくなり、国際通貨基金(International Monetary Fund:IMF)の支援を受けました。アジア通貨危機は日本経済と日本の金融機関にも大きな爪痕を残して、不良債権問題をさらに悪化させました。
日本政府はアジア通貨危機の発生から地域的な金融協力制度[アジア通貨基金構想]を出しました。しかし、アメリカ合衆国の反対から日本政府は二国間金融支援と新宮沢構想などに切り替えて、東アジア諸国を金銭面で助けました。
バブル経済崩壊後の平成不況はずっと続きました。景気は2002年初期に少しだけ上向きました。しかし、政府が公共事業中心の従来型景気対策を抑えながら不良債権処理と規制改革を進めました。その結果、企業は引き続き大規模なリストラと雇用調整を行いました。当初、バブル崩壊後の長期停滞は「失われた10年」とよばれました。その後も日本経済の停滞が強く、「失われた20年」「失われた30年」とよばれました。
== 行政改革と日米安保の変化 ==
1990年代後半、大規模災害の対策・重大事件への対策・行政改革・財政改革・金融改革・冷戦後の日米安全保障体制見直し・政党の組み直しを行いました。1995年1月17日、阪神・淡路地域でマグニチュード7.3の<span style="color:#f29100">'''阪神・淡路大震災[兵庫県南部地震]'''</span>が起こりました。神戸市を中心に6400人以上が亡くなり、建造物・高速道路までも大きく壊れました。当地震で大都市は自然災害に弱く、都市政策・耐震化基準・防災体制の見直しをしました。また、国民は被災地に入って、避難民[被災者]の生活を支えたり、被災地の後片付けを手伝ったりしました。この活動からボランティア活動が全国に広がりました。
1995年3月20日、オウム真理教集団は東京都の地下鉄でサリンを撒いて、多数の死傷者を出しました(<span style="color:#f29100">'''地下鉄サリン事件'''</span>)。このように阪神・淡路大震災と地下鉄サリン事件・少年犯罪の殺人事件・児童虐待などが何度も報道機関で取り上げられ、旧価値観的な安全神話も崩れて国民の意識も変わりました。<gallery mode="packed" widths="200" heights="200">
ファイル:Hanshin Expressway Nada b059.jpg|阪神淡路大震災被災後
ファイル:【地下鉄サリン事件】除染を行う自衛隊員と警察官.jpg|地下鉄サリン事件
ファイル:Ryutaro Hashimoto 19960111.jpg|橋本龍太郎
ファイル:Ryuhei Kawada 20240307.jpg|川田龍平
</gallery>1995年9月、自由民主党総裁選挙から<span style="color:#f29100">'''橋本龍太郎'''</span>が選ばれました。1996年1月、村山富市首相退陣後の内閣総理大臣指名選挙で橋本龍太郎が選ばれました。橋本内閣でも自民党・社会民主党・新党さきがけの3党が引き続き協力して、政策を進めました。なお日本社会党は自衛隊・日米安全保障条約の賛成側に回り、1996年に党名を社会民主党へ変えました。
薬害エイズ問題も大きく取り上げられました。橋本龍太郎内閣厚生大臣の菅直人は薬害エイズ被害者[川田龍平など]に謝罪しました。その後、国と製薬会社と被害者が話し合い、和解しました。
1996年、新しい選挙制度で初めて衆議院議員総選挙が行われ、自由民主党の議席を大きく増やしても、過半数を下回りました。社会民主党と新党さきがけは第2次橋本内閣から国務大臣を出さなくなり、閣外協力に変わりました。その結果、自由民主党単独政権に戻りました。
橋本龍太郎内閣は冷戦後の国際変化・国内経済・政府問題を解決するため、行政・財政・金融の各分野を見直しました。行政改革は政府組織を減らしたり、類似の政府組織を1つにまとめたりして、首相などの政策案を出しやすくしました。1998年、中央省庁等改革基本法が導入されて中央省庁等改革関連法から行政改革の方針を決めました。
2001年1月、政府はこの行政改革の方針から中央省庁を1府22省庁から1府12省庁に減らしました。その結果、内閣総理大臣は各省庁へ指示を出して、政府全体の政策を進めやすくしました。2007年、防衛庁を防衛省に上げました。
★省庁再編
{| class="wikitable"
!再編前
!再編後
!再編前
!再編後
|-
|内閣官房
|内閣官房
|大蔵省
|財務省
|-
| rowspan="2" |総理府
金融再生委員会
経済企画庁
沖縄開発庁
| rowspan="2" |内閣府
|科学技術庁
文部省
|文部科学省
|-
|厚生省
労働省
|厚生労働省
|-
|国家公安委員会
|国家公安委員会
|農林水産省
|農林水産省
|-
|防衛庁
|防衛庁(省)
|通商産業省
|経済産業省
|-
|総務庁
郵政省
自治省
|総務省
| rowspan="2" |北海道開発庁
国土庁
建設省
運輸省
| rowspan="2" |国土交通省
|-
|法務省
|法務省
|-
|外務省
|外務省
|環境庁
|環境省
|}
橋本龍太郎内閣は国債の発行額を減らそうとしました。1997年4月、財政構造改革法に従って消費税率を3%から5%に引き上げて公共事業費などを減らしました。国債発行額は1970年代後半から増えても1980年代末で一度減りました。1990年代に入り、公共投資を再拡大させてから大幅な国債発行額増加に向かいました。
しかし、国民は消費税率の引き上げなどから財布の紐もきつくなり、金融機関も生き残れなくなりました。さらにアジア通貨・金融危機も起きて、日本経済は再不況になりました。やがて、銀行同士は金融不安の拡大から合併して1つの銀行になりました。1997年度の実質経済成長率は-0.4%となり、1974年度[第1次石油危機直後]以来のマイナス成長になりました。1998年度の実質経済成長率は-2%まで下がり、平成不況の大きさを改めて物語りました。
[[ファイル:Official Portrait of President William Jefferson Clinton - DPLA - 4697184146b3b6e2d6791b8f3c297476.jpg|サムネイル|221x221ピクセル|ビル・クリントン大統領]]
冷戦後、橋本龍太郎内閣は日米安全保障体制を見直しました。アメリカのビル・クリントン大統領が1996年4月に日本を訪れ、橋本首相と話し合って<span style="color:#f29100">'''日米安全保障共同宣言'''</span>を発表しました。日米安全保障共同宣言から日本とアメリカは日本防衛以外にもアジア太平洋地域の戦争防止・紛争防止まで努めていくようになりました。
自衛隊がアメリカ軍に必要物資を運ぶなどの後方支援についても、日米防衛協力のための指針を見直しました。1997年、日本政府とアメリカ合衆国政府は「新しい日米防衛協力のための指針(新ガイドライン)」を作りました。
日本が外国から直接攻撃されても直接攻撃されていなくても、日本周辺国の戦争などから日本の平和と安全に大きく関わっていたらアメリカ合衆国側も新ガイドラインに従って助け合いました(周辺事態)。ただし日本から何キロ以内というような距離だけだとアメリカ合衆国側は何もしません。
[[ファイル:UPOPOY 202608.jpg|サムネイル|民族共生象徴空間ウポポイ]]
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 高埜利彦、高村直助ほか編著『日本史A 改訂版』株式会社山川出版社 2016年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[近・現代]の特別講座』株式会社KADOKAWA 2014年(絶版本)
* 外園豊基編集代表『最新日本史図表』株式会社第一学習社 2026年
* 東京法令出版編著『歴史資料館 日本史のライブラリー』東京法令出版株式会社 2026年
[[カテゴリ:高等学校日本史探究|あらたなせいきのにほんへ]]
[[カテゴリ:20世紀]]
26z74r22puxcozs96946zalswgwzhm6
解析学基礎/ベクトル解析
0
45683
304817
304607
2026-10-17T15:30:51Z
~2026-55692-88
92812
/* 線積分 */
304817
wikitext
text/x-wiki
{{Pathnav|数学|解析学|解析学基礎|frame=1}}
{{wikipedia|ベクトル解析}}
ここでは、ベクトル解析について解説する。[[物理数学I ベクトル解析]]も参照。
==前提知識==
ここでは、実数のみで考える。
===ベクトル===
[[高等学校数学C/ベクトル]]、[[線型代数学/ベクトル]]、[[解析学基礎/ベクトル]]などを参照。本項では、矢印を付した表記(<math>\vec{a}</math>など)と太字斜体による表記(<math>\boldsymbol{x}</math>など)を混用する。
===行列===
[[高等学校数学C/数学的な表現の工夫]]及び[[線形代数学]]・[[線型代数学続論]]の各ページを参照。本項では大文字の太字立体(<math>\mathbf{A}</math>など)で表記する。
===多変数解析===
[[解析学基礎/多変数関数の微積分]]を参照。
===領域===
<math>D\subset\mathbb{R}^n</math>と点<math>\boldsymbol{a}\in D</math>(位置ベクトル表記なので太文字斜体)に対し、集合<math>B_\varepsilon(\boldsymbol{a}) := \{ \boldsymbol{x} \in D \mid \| \boldsymbol{x} - \boldsymbol{a} \|<\varepsilon \}</math>を点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開球'''という。不等号を<math>\leqq</math>に変えたときは開区間↔閉区間と同様に'''閉球'''と呼ぶ。このとき、<math>D</math>のように<math>\mathbb{R}^n</math>の部分集合であって<math>\varepsilon</math>-開球を含むものを点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開近傍'''と呼ぶ。閉球を含むときは同様に'''閉近傍'''と呼ぶ。
<math>\forall \boldsymbol{a} \in U, \exist \varepsilon>0, B_\varepsilon(\boldsymbol{a})\subset U</math>を満たす<math>U\subset\mathbb{R}^n</math>を'''開集合'''と呼び、<math>V=\mathbb{R}^n\setminus U</math>を'''閉集合'''と呼ぶ。
注意点として、開集合と閉集合は排反ではない。則ち「開集合且つ閉集合」である集合が存在し(例えば<math>\mathbb{R}, \varnothing</math>)、「開集合でも閉集合でもない」集合も存在する(例えば<math>[0, 1)</math>)。
<math>M\subset\mathbb{R}^n</math>を含む最小の閉集合を<math>M</math>の'''閉包'''と呼び、<math>M^-, \bar{M}, \mathrm{Cl}(M)</math>などと表す。例えば有理数の稠密性より<math>\mathbb{Q}^-=\mathbb{R}</math>である。
閉包の性質として「閉包=集合の内部と境界の和集合(<math>M^- = \mathrm{Int}(M) \cup \partial{M}</math>)」がある。
集合<math>S\subset\mathbb{R}^n</math>に対して以下を満たす<math>\mathbb{R}^n</math>上開集合の組<math>(G_1, G_2)</math>が'''とれない'''とき、
#<math>G_1 \cap S = \varnothing \land G_2 \cap S = \varnothing</math>
#<math>S = (G_1 \cap S) \sqcup (G_2 \cap S)</math>
「<math>S</math>は'''連結'''である」または「<math>S</math>は'''連結集合'''」という(但し、<math>\sqcup</math>は[[w:非交和|非交和]])。
空でない開連結集合を'''領域'''という。
実は、高校数学や1年次の解析学で扱ってきた「領域」はこの定義を満たしていないことが多かった。これは、「領域」の歴史的な用法では「条件の解集合」という意味であって開性や連結性を要求しなかったためである。しかし、本項を含めた以降に登場する数学ではこの定義を満たしていることが前提条件となる。なお、ややこしいことに「積分領域」は従来通り「その上で積分を行う集合」という緩い意味で使われることが多いので、区別が必要である。
===右手系===
三次元空間の正規直交基底を<math>(\boldsymbol{e}_1, \boldsymbol{e}_2, \boldsymbol{e}_3)</math>と置く。螺子を<math>\boldsymbol{e}_1\to\boldsymbol{e}_2</math>の向きに回すと<math>\boldsymbol{e}_3</math>の正方向に進むように3つの軸をとった系を'''右手系'''という。負方向に進むようにとったものを'''左手系'''という。数学・物理に限らず理数系の約束事として、'''三次元空間は必ず右手系で考える'''という暗黙の了解が存在するので覚えておこう。
右手系・左手系は基底の一部または全ての符号を反転することで変換することができる。一つだけを反転する場合は'''鏡像変換'''、二つだけを反転する場合は'''半回転'''、全てを反転する場合は'''空間反転'''と呼ぶ。
外積の結果として得るベクトルは右手系・左手系のどちらを考えるかで向きが変わる。このように、右手系↔左手系の変換で向きが変わるベクトルを'''軸性ベクトル'''という。
系の取り方で向きが変わるということは基底の係数である'''成分は不変量'''である。つまり、観測者の動きにベクトルが追従し、このベクトルは「物理的な実体を有しているのではなく計算の都合上向きが定められた便宜的な(=観測者が勝手に決めた)ベクトル」ということである。そのため、軸性ベクトルは'''擬ベクトル'''(シュードベクトル)とも呼ばれる。
位置や速度、加速度のような右手系・左手系のどちらを考えても同じ向きを向くベクトルを'''極性ベクトル'''という。座標系を取り換えても向きが維持されるため'''成分は座標変換に応じて変化する'''。これは、「観測の仕方によって起こる現象は変わらない」ということである。つまり擬ベクトルに対し、極性ベクトルは'''物理的実体を有するベクトル'''である。
偶奇と同じように軸性・極性にも外積を通じた相互関係が存在する。
:(軸性)×(軸性)=(軸性)
:(軸性)×(極性)=(極性)
:(極性)×(極性)=(軸性)
==基礎事項==
===ベクトル関数===
関数<math>\boldsymbol{f} (x) = \sum_{i} f_i(x) \boldsymbol{e}_i</math>を'''ベクトル(値)関数'''(vector-valued function, vector function)という。
ただし、各<math>\boldsymbol{e}_i</math>は各座標軸方向の単位ベクトルであり、<math>\boldsymbol{f}(x)</math>の定義域は各<math>f_i(x)</math>の定義域の積集合である。
ベクトルの演算が成分ごとの演算結果を並べたベクトルで定義されたように、ベクトル関数の演算は(結果となる値が存在するならば)各成分の演算結果を並べたベクトルに等しい。これはベクトルの線型性による。
例えば、<math>\boldsymbol{f}(x) = \begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>の極限は、
:<math>\lim_{x\to0} \boldsymbol{f}(x) = \begin{pmatrix} \lim_{x\to0} \cos x \\ \lim_{x\to0} \sin x \end{pmatrix}</math> (<math>\because</math>線型性)
:<math>=\begin{pmatrix} 1 \\ 0 \end{pmatrix}</math>
:<math>=\boldsymbol{e}_x</math>
と求まる。
このとき、<math>\boldsymbol{e}_x</math>を<math>\begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>に於ける'''極限ベクトル'''という。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で連続であるとは<math>\lim_{x\to\alpha}\boldsymbol{f}(x)=\boldsymbol{f}(\alpha)</math>が成立することであり、区間<math>I</math>で連続であるとは<math>\forall \alpha \in I</math>で連続であることである。
また、ベクトル関数の導関数<math>\boldsymbol{f}'(x)</math>は
:<math>\frac{d}{dx} \boldsymbol{f} (x) = \frac{d}{dx} \left( \sum_i f_i(x) \boldsymbol{e}_i \right)</math>
:<math>= \sum_i \left( \frac{d}{dx} f_i (x) \boldsymbol{e}_i \right)</math>(<math>\because</math>線型性)
:<math>= \begin{pmatrix} f'_1(x) \\ f'_2(x) \\ \vdots \\ f'_i(x) \\ \vdots \end{pmatrix}</math>
である。
この結果は、ベクトル関数に於ける導関数の正式な定義 <math>\lim_{h\to0} \frac{\boldsymbol{f}(x+h) - \boldsymbol{f}(x)}{h}</math>からも導かれる。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で微分可能であるとは極限値<math>\boldsymbol{f}'(\alpha)=\lim_{x\to\alpha}\frac{\boldsymbol{f}(x)-\boldsymbol{f}(\alpha)}{x-\alpha}</math>が存在することであり、区間<math>I</math>で微分可能であるとは<math>\forall \alpha \in I</math>で微分可能であることである。
高階導関数・高階微分可能も同様にして定義される。
<math>\boldsymbol{f}(x)</math>が区間<math>I</math>で連続ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^0</math>級であるといい、<math>\boldsymbol{f}\in C^0(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で微分可能で<math>\boldsymbol{f}'(x)\in C^0(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^1</math>級である(一階連続微分可能)といい、<math>\boldsymbol{f}\in C^1(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で二階微分可能で<math>\boldsymbol{f}'\in C^1(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^2</math>級である(二階連続微分可能)といい、<math>\boldsymbol{f}\in C^2(I)</math>と書く。同様にして順々に<math>C^k</math>級が定義され、<math>\forall k \in \mathbb{N}, \boldsymbol{f}\in C^k(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>で<math>C^\infty</math>級(無限階連続微分可能)であるといい、<math>\boldsymbol{f}\in C^\infty(I)</math>と書く。<math>C^\infty</math>級である関数を'''滑らかな'''関数ともいう。
高校数学や高校物理で扱った平面(<math>\mathbb{R}^2</math>)上の運動は、実は2項ベクトル関数の理論に他ならない。
例えば、平面上の運動に於ける加速度・速度・変位の関係は<math>\boldsymbol{x}(t)= \begin{pmatrix} f(t) \\ g(t) \end{pmatrix}</math>として<math>\boldsymbol{a}(t) = \frac{d}{dt}\boldsymbol{v}(t) = \frac{d^2}{dt^2} \boldsymbol{x}(t)</math>と表すことができる。
曲線の媒介変数表示は、パラメータを変数とするベクトル関数とみることができる。
例えば、円の媒介変数表示<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \end{cases}</math>は、<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>という2次元ベクトル関数とみることができる。更に<math>\theta=\omega t</math>とすると、これは等速円運動の式である。
1変数ベクトル関数の微分に関して、以下の公式が成り立つ。
#定数倍の導関数:<math>\{k\boldsymbol{a}(x)\}'=k\boldsymbol{a}'(x)</math>
#和・差の導関数:<math>\{ \boldsymbol{a}(x)\pm\boldsymbol{b}(x) \}' = \boldsymbol{a}'(x)\pm\boldsymbol{b}'(x)</math>
#積の導関数:<math>\{ f(x)\boldsymbol{a}(x) \}' = f'(x)\boldsymbol{a}(x)+f(x)\boldsymbol{a}'(x)</math>
#商の導関数:<math>\left\{ \frac{\boldsymbol{a}(x)}{f(x)} \right\}' = \frac{f(x)\boldsymbol{a}'(x)-f'(x)\boldsymbol{a}(x)}{\{f(x)\}^2} \quad (f(x)\neq0)</math>
#内積の導関数:<math>\{\boldsymbol{a}(x)\cdot\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)+\boldsymbol{a}(x)\cdot\boldsymbol{b}'(x)</math>
#外積の導関数:<math>\{\boldsymbol{a}(x)\times\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\times\boldsymbol{b}(x)+\boldsymbol{a}(x)\times\boldsymbol{b}'(x)</math>
#スカラー三重積の導関数:<math>[\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#ベクトル三重積の導関数:<math>[\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#連鎖律(チェイン・ルール):<math>[\boldsymbol{a}\{f(x)\}]'=\boldsymbol{a}'\{f(x)\}f'(x)</math>
ベクトル関数の'''ノルム'''(大きさ、長さ)は、通常のベクトルと同様に
:<math>\| \boldsymbol{f}(x) \| = \sqrt{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)} = \sqrt{\sum_{i} \{f_i (x)\}^2}</math>
で与えられる。
つまり、ノルムは元のベクトル関数と同一変数のスカラー関数である。
ここで、このスカラー関数が定数関数である条件に就て見てみよう。
:<math>\| \boldsymbol{f}(x) \|= c \quad (c\in\mathbb{R}_{>0})</math>の両辺を2乗して
:<math>\| \boldsymbol{f}(x) \|^2 = \boldsymbol{f}(x)\cdot\boldsymbol{f}(x) = c^2</math>
:両辺微分すると内積の微分より
:<math>\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:<math>\therefore \boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:逆に、
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0 \iff 2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=0</math>
:<math>\int \{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'dx= \int 0 dx</math>
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)=C_1</math>(<math>C_1\geq0</math>は積分定数)
:<math>\| \boldsymbol{f}(x) \|^2=C_1</math>より
:<math>\| \boldsymbol{f}(x) \| = \sqrt{C_1} = \mathrm{const}.</math>
よって、以下が成り立つ。
{{定理|(直交条件の定理)}}
:<math>\| \boldsymbol{f}(x) \|= \mathrm{const}. \iff \boldsymbol{f}(x) \cdot \boldsymbol{f}'(x) = 0</math>
{{定理終わり}}
これは、物理的には「位置ベクトルと速度ベクトルが直交する」ことを表す。則ち、<math>\boldsymbol{f}(x)</math>の終点が始点を中心とする円運動(球面運動)をするということである。
また、ベクトル関数が変数に依らず常に同一方向を向く条件も見てみよう(但し<math>\boldsymbol{f}(x)\neq\boldsymbol{0}</math>)。
:所与の条件は零ベクトルでない定ベクトル<math>\boldsymbol{c}</math>を用いて<math>\boldsymbol{f}(x) = f(x)\boldsymbol{c}</math>と表される。
:両辺微分して<math>\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}=f'(x)\boldsymbol{c}</math>
:ここで元のベクトル関数との外積をとると
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}\times\{f'(x)\boldsymbol{c}\}=f(x)f'(x) (\boldsymbol{c}\times\boldsymbol{c})=f(x)f'(x)\boldsymbol{0}=\boldsymbol{0}</math>
:逆に、
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\boldsymbol{0}</math>とすると一次従属なので
:<math>\boldsymbol{f}'(x)=g(x)\boldsymbol{f}(x)</math>という微分方程式が成り立つ。
:各成分ごとに微分方程式を解くと、
::これは変数分離型微分方程式なので第i成分は
::<math>\frac{df_i}{dx}=g(x)f_i(x)</math>
::<math>\int \frac{df_i}{f_i(x)}=\int g(x)dx</math>
::<math>G'(x)=g(x), C_i</math>を積分定数として<math>\log|f_i(x)|=G(x)+C_i</math>
::<math>C_i=\pm e^{C_i}</math>と改めておくと<math>f_i(x)=C_i e^{G(x)}</math>
:よって
:<math>\boldsymbol{f}(x)=\sum_i f_i(x) \boldsymbol{e}_i = \sum_i C_i e^{G(x)} \boldsymbol{e}_i = e^{G(x)} \sum_i C_i \boldsymbol{e}_i</math>
:ここで<math>f(x)=e^{G(x)}, \boldsymbol{c}=\sum_i C_i \boldsymbol{e}_i</math>と置くと
:<math>\boldsymbol{f}(x) = f(x) \boldsymbol{c}</math>となり、方向は変数に依らず一定であることが判る//
よって、以下が成り立つ。
{{定理|(平行条件の定理)}}
<math>\boldsymbol{c},\boldsymbol{f}(x)\neq\boldsymbol{0}</math>として
:<math>\boldsymbol{f}(x)=f(x)\boldsymbol{c} \iff \boldsymbol{f}(x) \times \boldsymbol{f}'(x) = \boldsymbol{0}</math>
{{定理終わり}}
ベクトル解析では三次元空間の場合を考えることが多いため上では外積を用いて証明したが、外積は3項ベクトル(または7項ベクトル)にしか定義されないのであった。
一般次元では外積に代わって次の関係式を用いる。
:<math>|\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)|=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|</math>
これはCS不等式の等号成立の場合である。
実際、<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|\cos\{\theta(x)\}</math>より等号成立の必要十分条件は
:<math>\cos\{\theta(x)\}=\pm1\iff\theta(x) \equiv 0 \,(\mathrm{mod}\pi)</math>
であり、2ベクトル<math>\boldsymbol{f}(x), \boldsymbol{f}'(x)</math>は平行とわかる。<br/>
平行ということは一次従属ということなので先程のように変数分離形微分方程式を解くことで3次元と同じ結果を得る。//
補足として、力学への応用を考える。
:速さの二乗<math>\|\boldsymbol{v}(t)\|^2</math>を時間微分すると
:<math>\frac{d}{dt}\|\boldsymbol{v}(t)\|^2=\frac{d}{dt}(\boldsymbol{v}(t)\cdot\boldsymbol{v}(t))=\frac{d\boldsymbol{v}(t)}{dt}\cdot\boldsymbol{v}(t)+\boldsymbol{v}(t)\cdot\frac{d\boldsymbol{v}(t)}{dt}=2(\boldsymbol{v}(t)\cdot\boldsymbol{a}(t))</math>
:よって等速運動の条件<math>\|\boldsymbol{v}(t)\|=\mathrm{const}.</math>は直交条件の定理から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>に同値である。
:これを力学的に解釈すると、「加速度ベクトルは速度ベクトル方向に仕事をしないから速度ベクトルの大きさを変えずに向きだけを変える」となる。
:平面上で等速円運動を考えると円運動条件から<math>\boldsymbol{r}(t)\perp\boldsymbol{v}(t)</math>、等速条件から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>なので<math>\boldsymbol{r}(t) /\!/ \boldsymbol{a}(t)</math>が出てくる。
:円運動条件<math>\|\boldsymbol{r}(t)\|^2=r^2</math>を一階微分すると
::<math>2\boldsymbol{r}(t)\cdot\boldsymbol{r}'(t)=0</math>
:もう一度微分して
::<math>2(\boldsymbol{r}(t)\cdot\boldsymbol{r}''(t)+\boldsymbol{r}'(t)\cdot\boldsymbol{r}'(t))=0</math>
:則ち
::<math>\boldsymbol{r}(t)\cdot\boldsymbol{a}(t)+\boldsymbol{v}(t)\cdot\boldsymbol{v}(t)=0</math>
:位置ベクトルと加速度ベクトルが一次従属なので<math>\boldsymbol{a}(t)=\lambda\boldsymbol{r}(t)</math>であり、等速条件より<math>\|\boldsymbol{v}(t)\|=v</math>なので
::<math>\lambda r^2 + v^2 = 0</math>
::<math>\therefore \lambda = -\frac{v^2}{r^2}<0</math>
:則ち<math>\boldsymbol{r}(t)</math>と<math>\boldsymbol{a}(t)</math>は逆向きであり、円運動の中心は<math>\boldsymbol{r}(t)</math>の始点なので<math>\boldsymbol{a}(t)</math>は常に円運動の中心を向く'''向心加速度'''であることが証明された。//
なお、3次元以上では「<math>\boldsymbol{a}\perp\boldsymbol{b}\land\boldsymbol{b}\perp\boldsymbol{c}\implies\boldsymbol{a}/\!/\boldsymbol{c}</math>」が一般には成り立たないのでこの議論を成立させるには追加の条件が必要である。
<math>\boldsymbol{f}(x)</math>の不定積分は、各<math>f_i(x)</math>の原始関数を並べたベクトルを<math>\boldsymbol{F}(x)</math>として
:<math>\int \boldsymbol{f}(x) dx = \boldsymbol{F}(x)+\boldsymbol{C}</math>(<math>\boldsymbol{C}</math>は各積分定数を並べたベクトル)
と表される。
また、定積分は
:<math>\int^b_a \boldsymbol{f}(x) dx=\boldsymbol{F}(b)-\boldsymbol{F}(a)</math>
と表される。
1変数ベクトル関数の積分について、以下が成り立つ(不定積分表記だが定積分に就ても同様)。
#定数倍の原始関数:<math>\int \{k\boldsymbol{a}(x)\} dx = k\int\boldsymbol{a}(x)dx</math>
#和・差の原始関数:<math>\int \{\boldsymbol{a}(x)\pm\boldsymbol{b}(x)\}dx=\int\boldsymbol{a}(x)dx\pm\int\boldsymbol{b}(x)dx</math>
#内積の原始関数<math>\int \{\boldsymbol{k}\cdot\boldsymbol{a}(x)\}dx=\boldsymbol{k} \cdot \left( \int \boldsymbol{a}(x) dx \right)</math>
#外積の原始関数<math>\int \{\boldsymbol{k}\times\boldsymbol{a}(x)\}dx=\boldsymbol{k} \times \left( \int \boldsymbol{a}(x) dx \right)</math>
#スカラー倍の部分積分:<math>\int f(x)\boldsymbol{a}'(x)dx= f(x)\boldsymbol{a}(x)-\int f'(x)\boldsymbol{a}(x) dx \iff \int f'(x)\boldsymbol{a}(x)dx= f(x)\boldsymbol{a}(x)-\int f(x)\boldsymbol{a}'(x) dx</math>
#内積の部分積分:<math>\int \{ \boldsymbol{a}(x)\cdot\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\cdot\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)\}dx</math>
#外積の部分積分:<math>\int \{ \boldsymbol{a}(x)\times\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\times\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\times\boldsymbol{b}(x)\}dx</math>
#置換積分:<math>u=f(x)</math>として<math>\int \boldsymbol{a}'\{f(x)\}f'(x) dx = \int \boldsymbol{a}(u)du</math>
平行条件の定理の証明でベクトル関数の微分方程式を解いたように、成分毎に考えることで解空間ベクトルを求められる。
:1階線型常微分方程式<math>\boldsymbol{f}'(x)+a(x)\boldsymbol{f}(x)=\boldsymbol{b}(x)</math>の解に就て考える。
:第<math>i</math>成分を考えると<math>f'_i(x)+a(x)f_i(x)=b_i(x)</math>という1階線型常微分方程式を得るので、
:両辺に積分因子<math>\mu(x)=\exp\left(\int a(x) dx\right)</math>を掛けることで
:<math>f_i(x)=\frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\}</math>を得る。
:よって一般解は
:<math>\boldsymbol{f}(x) = \sum_i \frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\} \boldsymbol{e}_i=\frac{1}{\mu(x)}\left\{ \int \mu(x) \boldsymbol{b}(x) dx + \boldsymbol{C} \right\}</math>
ベクトル関数は必ずしもここで扱った<math>\boldsymbol{f}: \mathbb{R}\to\mathbb{R}^n</math>のみを指さない。
例えば、ベクトル変数 <math>\boldsymbol{x}= \sum_i g_i (x) \boldsymbol{e}_i</math>に対して
:<math>\boldsymbol{h}(\boldsymbol{x})=\sum_i (h_i \circ g_i) (x) \boldsymbol{e}_i</math>
と定義されるような関数<math>\boldsymbol{h}:\mathbb{R}^m \to \mathbb{R}^m</math>もベクトル関数である。
また、始域と終域の次元が異なる<math>\boldsymbol{i}: \mathbb{R}^m \to \mathbb{R}^n \, (m, n\neq1)</math>のようなベクトル関数も考えられる。
一般に、始域が<math>\mathbb{R}^n (n\neq1)</math>であっても終域が<math>\mathbb{R}</math>である関数はベクトル関数に対して'''スカラー関数'''(scalar function)と呼ばれる。スカラー関数は入力ベクトルを「変数の組」と見れば通常の多変数関数に一致する。
この節で述べた理論は、多くは一般のベクトル関数に対しても成り立つ。但し、後述のヤコビ行列のような拡張を必要とするものもある。
また、多変数ベクトル関数<math>\boldsymbol{f}(x_1, x_2,\cdots,x_n)</math>を考えたとき、多変数微積分の理論は一変数微積分と同様にしてベクトル関数にもそのまま拡張される。
===ベクトル場・スカラー場===
写像<math>\boldsymbol{a}: \mathbb{R}^m \to \mathbb{R}^n</math>を'''ベクトル場'''(vector field)という。
実際には<math>m=n</math>の場合を考えることが多い。
写像<math>\varphi: \mathbb{R}^n \to \mathbb{R}</math>を'''スカラー場'''(scalar field)という。
それぞれ上で述べたベクトル関数・スカラー関数に対応する。
もう少し具体的に述べると、空間の領域<math>V</math>が与えられたときその各点にスカラーまたはベクトルを割り当てたものが場である。要するに、<math>p\in V</math>とすると
:スカラー場:<math>\varphi=\varphi(p)</math>
:ベクトル場:<math>\boldsymbol{a}=\boldsymbol{a}(p)</math>
のように場は「点を入力とする<sup>※</sup>関数」である。
<small>※なお、ベクトル場を図示するときは「出力されたベクトルの'''始点は原点でなく入力された点'''」であることに注意が必要である。出力ベクトルの成分表示は「入力点を基準に据えたときの位置ベクトル」なので原点から目盛を数えることに意味はない。</small>
ここで<math>V</math>に何かしらの座標が設定されていれば、その座標系の変数の組をベクトルと見做すことで場を「通常のスカラー関数・ベクトル関数」として扱えるのである。
則ち、「滑らかな場」という概念は「滑らかな関数」として定義することができる。より具体的に言うと、スカラー場・ベクトル場が'''滑らか'''であるとは対応するスカラー関数・ベクトル関数が<math>C^\infty</math>級であることである。但し、滑らかさは任意の座標変換で保たれるわけではないことに注意が必要である(後述の座標変換テンソル及びその逆行列の全ての成分関数が滑らかである必要がある)。
ここで、二変数関数の極値を思い返してみる。
<math>z=f(x, y)</math>が<math>(a, b)</math>で極大であるとは<math>\begin{pmatrix} x \\ y \end{pmatrix}\neq\begin{pmatrix} a \\ b \end{pmatrix}</math>として
:<math>\exist \delta>0, \forall {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in \mathbb{R}^2, {\scriptstyle\left\| \left(\begin{array}{c} x \\[-6pt] y \end{array}\right) - \left(\begin{array}{c} a \\[-6pt] b \end{array}\right) \right\|} < \delta \implies f(x, y) \leq f(a, b)</math>
という定義だった。
<math>z=f(x, y)</math>は曲面を表すが、これを<math>z</math>軸正方向から<math>xy</math>平面に射影するとその陰が<math>(x, y)</math>の動く範囲となるのであった。
ここで<math>\boldsymbol{x}:=\begin{pmatrix} x \\ y \end{pmatrix}, \boldsymbol{\alpha}:=\begin{pmatrix} a \\ b \end{pmatrix}</math>とすると<math>z=f(x, y)</math>はスカラー場<math>z=\phi(\boldsymbol{x})</math>と解釈することができ、更に条件法の前件は<math>\boldsymbol{\alpha}</math>の<math>\delta</math>-開球(二次元なので開円板)である。
なので、極大値の定義式をベクトル解析的に解釈すると「<math>xy</math>平面の各点に<math>z</math>の値を割り当てた数分布に於いて、開円板<math>B_\delta(\boldsymbol{\alpha})</math>内部に於ける<math>z</math>の最大値が<math>\phi(\boldsymbol{\alpha})</math>となるような正数<math>\delta</math>が存在する」ということである。
ベクトル場の例としては、電場・磁場・重力場などが挙げられる。
スカラー場の例としては、電位分布・温度分布・圧力分布などが挙げられる。
例えば、ベクトル場<math>\boldsymbol{f}=(x, 0, 0)</math>は、<math>\mathbb{R}^3</math>内の平面<math>x=k</math>上の任意点に、その点を始点とするベクトル<math>\begin{pmatrix} k \\ 0 \\ 0 \end{pmatrix}</math>が存在する状態を表す。
ベクトル場の和は、出力ベクトルの型が同じならばベクトル場の成分の和をとったものに等しい。
例えば、<math>\boldsymbol{f}(x, y, z)=(y, z, x), \boldsymbol{g}(x, y, z)=(z, x, y)</math>について
:<math>(\boldsymbol{f}+\boldsymbol{g})(x, y, z)=(y, z, x)+(z, x, y)=(y+z, z+x, x+y)</math>である。
これは、ベクトル場の加法の定義が
:<math>\forall p \in V, (\boldsymbol{f}+\boldsymbol{g})(p):=\boldsymbol{f}(p)+\boldsymbol{g}(p)</math>
となっていて且つ<math>V</math>に座標を入れればベクトル関数の加法則をそのまま適用できるためである(入力点が異なるとき、場同士は足すことができない)。
曲線<math>\{\boldsymbol{x}\in\mathbb{R}^2 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等高線'''(等高曲線)、曲面<math>\{\boldsymbol{x}\in\mathbb{R}^3 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等位面'''(等位曲面)という。これらの詳細は後述する。
==曲線論・曲面論==
===曲線===
<math>xy</math>平面上の曲線は<math>y=f(x) (x\in[a, b])</math>という陽関数表示で扱うことが多かった。しかし、これだと自分自身と交わる('''自己交叉'''する)曲線や<math>x=x_0</math>に対して<math>f(x_0)</math>の値が複数存在する(<math>f</math>が'''多価関数''')場合に不都合が生じる。
例えば円を陽関数表示しようとすると
:<math>x^2+y^2=r^2</math>を<math>y</math>に就いて解いて
:<math>y=\pm\sqrt{r^2-x^2}</math>
則ち
:<math>y=\begin{cases} \sqrt{r^2-x^2} & (y\geq0) \\ -\sqrt{r^2-x^2} & (y<0) \end{cases}</math>
という多価関数が必要になる。
これだと端点の振舞を一々調べる必要があって曲線の連続性や接線の議論が煩雑になってしまう。
しかし、先程も述べたように曲線の媒介変数表示はベクトル関数として見れるのであった。
:<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>(再掲)
こうすると一変数連続ベクトル関数によって曲線を表すことが可能である。物理的に捉えると「質点の運動の軌跡を原点からの位置ベクトルの時間変化で表す」ということである。
一般に、<math>\boldsymbol{r}\in\mathbb{R}^n, t \in I</math>としてベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>の解集合<math>\{\boldsymbol{r}(t) \mid t \in I \}</math>は<math>n</math>次元空間内の曲線<math>C</math>を表す。これを<math>C</math>の'''ベクトル表示'''という。
ベクトル表示は成分表示に直せば<math>\boldsymbol{r}(t)=\sum_i r_i(t)\boldsymbol{e}_i</math>となる。これは媒介変数表示<math>\begin{cases} x_1&=&r_1(t) \\ x_2&=&r_2(t) \\ &\,\,\vdots& \\ x_n&=&r_n(t) \end{cases}</math>をベクトル表記したものに一致する。
例えば、<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ bt \end{pmatrix}</math>は'''常螺旋'''(弦巻線)のベクトル表示である。
パラメータが増加するときの点の移動方向を曲線の'''正の向き'''と定める。曲線の'''負の向き'''はパラメータが減少するときの点の移動方向である。このとき、パラメータで'''向き付け'''された曲線という表現もなされる。曲線<math>C</math>に対し、同じパラメータを用いた逆向きの曲線を<math>-C</math>と表す。ベクトル表示では<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>-C:\boldsymbol{r}=\boldsymbol{r}(-t)</math>ということである。
パラメータに関する変数変換<math>u=\phi(t)</math>を考える。但し、<math>\phi</math>は広義単調関数とする<sup>※</sup>。このとき、<math>\frac{du}{dt}</math>が非負ならば曲線の向き付けが保たれ、非正ならば向き付けが反転する。<math>\frac{du}{dt}=0</math>となる領域では点の運動が停止する。
<small>※<math>\phi</math>が非単調関数のときは曲線上の点が行ったり来たりすることになるため曲線のパラメータ表示としては扱いづらい。</small>
<math>\boldsymbol{r}(t) \in C^1</math>且つ<math>\boldsymbol{r}'(t)\neq\boldsymbol{0}</math>であるとき、曲線<math>C</math>は'''滑らか'''であるという。
滑らかな曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>\boldsymbol{r}'(t)</math>を<math>C</math>の'''速度ベクトル'''という。
<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}</math>として点<math>\mathrm{P}(t)</math>に於ける速度ベクトルは<math>\lim_{\Delta t\to0}\frac{\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)}{\Delta t}</math>の極限ベクトルであるが、<math>\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)</math>を図示することで速度ベクトルが曲線<math>C</math>の点<math>\mathrm{P}(t)</math>に於ける接線の方向ベクトルになっていることがわかる。よって、速度ベクトルを'''接線ベクトル'''(接ベクトル)ともいう。
速度ベクトルが非零である曲線を'''正則'''な曲線と呼ぶ。滑らかな曲線は正則曲線である。
なお、一般には陽関数表示が区分的であることとベクトル表示の成分関数が区分的であることに対応はないほか、パラメータの取り方で速度ベクトルが変わるので「曲線の幾何学的滑らかさ」と「ベクトル表示した関数の解析学的滑らかさ」は一致するとは限らない。
正則な曲線に対して曲線長('''弧長''')を考える。
二次元曲線の場合は数学Ⅲで既に扱った。
:<math>L=\int_a^b \sqrt{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2}dt</math>
実は、これを一般の<math>n</math>次元にそのまま拡張することができる。
{{定理|(弧長公式)}}
曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ(<math>a<b</math>)は
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
で与えられる。
{{定理終わり}}
*証明
:<math>a=t_0, b=t_m</math>として閉区間<math>[a, b]</math>を各<math>t_i</math>で等分割する。このとき小区間<math>[t_{k-1}, t_k]</math>の長さは<math>\Delta t=\frac{b-a}{m}</math>。
:<math>C</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ<math>L</math>は折れ線の長さ<math>\overline{\mathrm{P}(t_{k-1})\mathrm{P}(t_k)}</math>の総和で近似される。
:ここで<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}(t)</math>より
::<math>L_m=\sum_{k=1}^m \| \boldsymbol{r}(t_k)-\boldsymbol{r}(t_{k-1}) \| = \sum_{k=1}^m \left\| \frac{\boldsymbol{r}(t_{k-1}+\Delta t)-\boldsymbol{r}(t_{k-1})}{\Delta t-0} \right\|(\Delta t-0)</math>
:分割を限りなく細かくする極限をとると<math>m\to\infty</math>より<math>\Delta t\to0</math>なので
::<math>\lim_{m\to\infty} L_m = \sum_{k=1}^\infty \left\| \frac{d\boldsymbol{r}}{dt}(t_{k-1}) \right\|dt</math>
:区分求積法より最後の無限級数は収束して
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>//
ここで、<math>dl:=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>という微小量を'''線素'''と呼ぶ。
1を線素に関して積分したパラメータ<math>s:=\int_0^t dl</math>を'''弧長パラメータ'''(標準パラメータ)という。弧長パラメータは曲線上で「基準点からの符号付き距離」を表す。
曲線の弧長パラメータによるベクトル表示('''弧長パラメータ表示''')を考える。<math>s=\int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>で正則よりノルムは正。則ち<math>\frac{ds}{dt}>0</math>より<math>s=\phi(t)</math>は狭義単調増加なので、逆関数<math>t=\phi^{-1}(s)</math>を考えることができる。よって、<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>に<math>t=\phi^{-1}(s)</math>を代入した<math>\boldsymbol{r}=\boldsymbol{r}(\phi^{-1}(s))</math>が弧長パラメータ表示である。これを<math>\boldsymbol{r}=\boldsymbol{r}(s)</math>と略記してしまうことも多いが、'''一般には元の<math>\boldsymbol{r}(t)</math>と成分関数が異なる'''ことに注意。
通常の媒介変数によるベクトル表示は「座標系が予め与えられた状況」での表示であるが、弧長パラメータは座標系を取り替えたとしても表す曲線そのものが変わらなければ不変である。よって、「座標系に依存しない表記」として弧長パラメータ表示は多く利用されている。
また、弧長パラメータ表示で連鎖律を適用すると
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{dt}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{1}{\frac{ds}{dt}}</math>
ここで微分積分学の基本定理より
:<math>\frac{ds}{dt}=\frac{d}{dt} \int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt = \left\| \frac{d\boldsymbol{r}}{dt} \right\|</math>
なので
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{\frac{d\boldsymbol{r}(t)}{dt}}{\left\| \frac{d\boldsymbol{r}}{dt} \right\|}</math>
であり、自身のノルムで割ってるので恒等的に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>である。
よって、弧長パラメータ表示された曲線の接ベクトルは常に単位ベクトルである。
弧長パラメータ表示された曲線で線素を考えると<math>s=\int_0^s \left\| \frac{d\boldsymbol{r}(s)}{ds} \right\| ds = \int_0^s dl</math>だが、常に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>なので<math>ds=dl</math>であり、弧長パラメータの微小量は線素に等しい(弧長パラメータそのものが1の線素に関する積分なので当たり前ではある)。
<math>\boldsymbol{e}_\dagger(s)=\frac{d\boldsymbol{r}}{ds}</math>と置くと、点<math>\mathrm{P}(s_0)</math>に於ける接線の方程式は
:<math>\boldsymbol{p}-\boldsymbol{r}(s_0)=\boldsymbol{e}_\dagger(s_0) (s-s_0)</math>
と表される。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>
であり、「接線が一次近似に対応する」という構造はベクトル関数でも維持されることが判った。
領域<math>\boldsymbol{D}</math>上の滑らかなベクトル場<math>\boldsymbol{a}</math>について、微分方程式<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t)) (\boldsymbol{r} \in \boldsymbol{D})</math>で与えられる曲線<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>を<math>\boldsymbol{a}</math>の'''流線'''(streamline)という(入力点を位置ベクトルと同一視していることに注意)。流線の接線ベクトルは元のベクトル場そのものになるので、ベクトルの相等から得る方程式<math>\frac{dx_1}{a_1}=\frac{dx_2}{a_2}=\cdots=\frac{dx_n}{a_n}</math>を'''流線方程式'''という。
例えば、<math>\boldsymbol{f}(x, y)=(y, x)</math>の流線は、
:定義から<math>\frac{dx}{dt}=y, \frac{dy}{dt}=x</math>
:合成関数の微分公式から<math>\frac{dy}{dx}=\frac{\frac{dy}{dt}}{\frac{dx}{dt}}=\frac{x}{y}</math>
:<math>\int y dy=\int xdx</math>
:<math>\frac{1}{2}y^2=\frac{1}{2}x^2+C</math>
:よって双曲線<math>y^2-x^2=2C</math>//
この場合、<math>t</math>に関する2つの微分方程式を組み合わせることで
:<math>\frac{d^2x}{dt^2}=x, \frac{d^2y}{dt^2}=y</math>という二階線型常微分方程式となり、一般解が双曲線関数を用いて<math>\begin{cases} x=C_1\cosh t+C_2\sinh t \\ y=C_1\sinh t+C_2\cosh t \end{cases}</math>であることが容易に判る。<br>なお、流線方程式を用いても<math>\frac{dx}{y}=\frac{dy}{x}</math>から<math>\frac{dy}{dx}=\frac{x}{y}</math>が出てくる。
「流線の接線ベクトルが元のベクトル場になる」とはつまり、「接線が常にベクトル場と平行になるような曲線」を考えているということである。滑らかなベクトル場を考えているためそのような曲線は常に存在する。流線は「ベクトル場の流れを繋げていった曲線」と考えることができるので、「流れを簡潔に図示」するのにちょうどよい。
有名な例として、電気力線・磁力線はそれぞれ電場<math>\boldsymbol{E}</math>・磁束密度<math>\boldsymbol{B}</math>の流線である。
流線の微分方程式を弧長パラメータ表示を用いて変形する。
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t))</math>の左辺に就いて
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\frac{ds}{dt}=\frac{d\boldsymbol{r}}{ds}\cdot \|\boldsymbol{r}'(\phi^{-1}(s))\|</math>
元の方程式の両辺でノルムをとると
:<math>\left\|\frac{d\boldsymbol{r}}{dt}\right\|=\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
代入して
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{r}'(\phi^{-1}(s))\|=\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
:<math>\therefore \frac{d\boldsymbol{r}}{ds} = \boldsymbol{e}_{\boldsymbol{a}(\boldsymbol{r}(\phi^{-1}(s)))}</math>
ここから、流線の形状はノルムには関係なく方向場のみで決まることがわかる。
===フレネ標搆===
ここでは、三次元空間に於ける正則曲線について考える。
<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>上の点<math>\mathrm{P}(s)</math>に於ける単位接線ベクトルを<math>\boldsymbol{t}</math>とおく。
先程の議論より<math>\boldsymbol{t}(s)=\frac{d\boldsymbol{r}(s)}{ds}</math>であり、<math>\left\| \frac{d\boldsymbol{r}(s)}{ds} \right\|=1 (=\mathrm{const}.)</math>なので直交条件の定理から<math>\boldsymbol{t}\cdot\frac{d\boldsymbol{t}}{ds}=0</math>、則ち<math>\boldsymbol{t} \perp \frac{d\boldsymbol{t}(s)}{ds}</math>である。この<math>\frac{d\boldsymbol{t}(s)}{ds}</math>を'''主法線ベクトル'''という。
主法線ベクトルを<math>\boldsymbol{n}</math>とおくとき、<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n}</math>を'''従法線ベクトル'''(陪法線ベクトル)という。ここで先程の結果より<math>\boldsymbol{t}\perp\boldsymbol{n}</math>であって<math>\boldsymbol{b}</math>の定義より<math>\boldsymbol{t}\perp\boldsymbol{b}, \boldsymbol{n}\perp\boldsymbol{b}</math>なので、この3ベクトルの組を正規化した<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b \}</math>は<math>\mathbb{R}^3</math>の正規直交基底である。これを<math>\mathbb{R}^3</math>の'''フレネ標搆'''という。外積の結果よりフレネ標搆は<math>\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b</math>の順に右手系をなす。なお、接線ベクトル・主法線ベクトル・従法線ベクトルは全て曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>を入力したベクトル場として捉えることができる。
<math>\{\boldsymbol{e}_n, \boldsymbol{e}_b \}</math>の張る平面を'''法平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_b \}</math>の張る平面を'''展直平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n \}</math>の張る平面を'''接触平面'''という。
即ち、法平面・展直平面・接触平面は<math>tnb</math>空間の点<math>\mathrm{P}(s)</math>を原点とした基準面である。
平面の方程式の法線ベクトルに接ベクトル・主法線ベクトル・従法線ベクトルをそれぞれ代入することで
:法平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{t}(s)=0</math>
:展直平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{n}(s)=0</math>
:接触平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{b}(s)=0</math>
とわかる。
<math>\|\boldsymbol{t}\|=1</math>は常に成り立つが<math>\|\boldsymbol{n}\|, \|\boldsymbol{b}\|</math>は<math>1</math>とは限らない。そこで、主法線ベクトルの大きさ<math>\kappa(s)=\|\boldsymbol{n}(s)\|</math>を曲線<math>C</math>の'''曲率'''と呼ぶことにする。なお、<math>\|\boldsymbol{b}\|=\| \boldsymbol{t} \| \|\boldsymbol{n}\|\sin\frac{\pi}{2}</math>より<math>\|\boldsymbol{b}\|=\|\boldsymbol{n}\|=\kappa</math>が成り立つ。
主法線ベクトルの定義に立ち戻ると<math>\boldsymbol{n}(s)=\frac{d\boldsymbol{t}(s)}{ds}</math>であった。つまり、主法線ベクトルは接ベクトルの速度ベクトルなので「弧長パラメータを変化させたときに接ベクトルがどのくらい変化するか」という指標である。接ベクトルの変化の大小と<math>\kappa</math>の大小は対応し、接ベクトルの大小はカーブの緩急に対応することから<math>\kappa</math>の大小とカーブの緩急も対応する。これが「曲率」という名前の由来である。
なお、<math>\kappa(s)=0</math>の場合は<math>\boldsymbol{n}(s)=\boldsymbol{0}</math>なので<math>\boldsymbol{t}(s)=\boldsymbol{k}</math>(定ベクトル)であり、<math>\boldsymbol{r}(s)=s\boldsymbol{k}</math>という直線の場合に対応することがわかる。
単位接ベクトルの<math>s</math>を微分変数とする導関数(<math>s</math>-導関数)は主法線ベクトルだったが、単位主法線ベクトル・単位従法線ベクトルの<math>s</math>-導関数がどのように表されるか見ていく。
ここで、フレネ標搆が<math>\mathbb{R}^3</math>の正規直交基底であることから、<math>\frac{d\boldsymbol{e}_n}{ds}, \frac{d\boldsymbol{e}_b}{ds}</math>ともにフレネ標搆の一次結合で表現できると予想される。
単位従法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_b}{ds}=\frac{d}{ds}(\boldsymbol{e}_t\times\boldsymbol{e}_n)=\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n+\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\boldsymbol{t}=\boldsymbol{e}_t</math>より<math>\frac{d\boldsymbol{e}_t}{ds}=\boldsymbol{n}=\kappa\boldsymbol{e}_n</math>則ち<math>\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n=\kappa\boldsymbol{e}_n\times\boldsymbol{e}_n=\boldsymbol{0}</math>なので
:<math>\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\|\boldsymbol{e}_n\|=1</math>から直交条件の定理より<math>\boldsymbol{e}_n\perp\frac{d\boldsymbol{e}_n}{ds}</math>なので
:<math>\boldsymbol{e}_n\times\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_n\times(\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds})=\left(\boldsymbol{e}_n\cdot\frac{d\boldsymbol{e}_n}{ds}\right)-(\boldsymbol{e}_n\cdot\boldsymbol{e}_t)\frac{d\boldsymbol{e}_n}{ds}=\boldsymbol{0}</math>
外積が零ベクトルなので<math>\frac{d\boldsymbol{e}_b}{ds} /\!\!/ \boldsymbol{e}_n</math>であり、一次従属より
:<math>\frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>
となるスカラー関数<math>\tau(s)</math>が存在する。
この<math>\tau(s)</math>を曲線<math>C</math>の'''捩率'''と呼ぶ。捩率は接触平面の回転(捩れ)の率を表す。
<math>\tau=0</math>ならば<math>\frac{d\boldsymbol{e}_b}{ds}=0</math>より<math>\boldsymbol{e}_b</math>方向は変化しないので曲線は接触平面と平行な平面上に拘束される。即ち、<math>C</math>は平面曲線である。
単位主法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{d}{ds}(\boldsymbol{e}_b\times\boldsymbol{e}_t)=\frac{d\boldsymbol{e}_b}{ds}\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\frac{d\boldsymbol{e}_t}{ds}</math>
ここで<math>\frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n, \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>を代入して
:<math>\frac{d\boldsymbol{e}_n}{ds}=-\tau\boldsymbol{e}_n\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\kappa\boldsymbol{e}_n=\tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t</math>
よって、フレネ標搆の弧長パラメータを微分変数とする導関数を以下のようにフレネ標搆の一次結合で表すことができた。
:<math>\begin{cases} \frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n \\ \frac{d\boldsymbol{e}_n}{ds} = \tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t \\ \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n \end{cases}</math>
これを一次変換で表記すると以下のようになる。但し、厳密にはベクトルを成分としている部分は列ではなく行に配置するのが正しいことに注意。
{{定理|(フレネ=セレーの公式)}}
:<math>\frac{d}{ds}\begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix} = \begin{pmatrix} 0 & \kappa & 0 \\ -\kappa & 0 & \tau \\ 0 & -\tau & 0 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix}</math>
{{定理終わり}}
表現行列が反対称行列(歪対称行列)になっているが、これは「直交変換を一次近似すると反対称変換になる」という無限小回転の理論に対応する。
捩率を求めるときは「基底分解の係数は対応する基底ベクトルとの内積に等しい」という性質を利用すれば<math>\boldsymbol{e}_b\cdot\frac{d\boldsymbol{e}_n}{ds}=\tau</math>となるので左辺を計算すればよい。
例えば、円<math>\begin{cases} x^2+y^2=a^2 \\ z=b \end{cases}</math>の曲率と捩率は以下のように求まる。
:媒介変数表示して<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ b \end{pmatrix}</math>
:接線ベクトルは<math>\frac{d\boldsymbol{r}(t)}{dt}=\begin{pmatrix} -a\sin t \\ a\cos t \\ 0 \end{pmatrix}</math>
:弧長パラメータ<math>s</math>は<math>s=\int^t_0 \left\|\frac{d\boldsymbol{r}(t)}{dt}\right\|dt = \int_0^t a dt = at</math>
:<math>\therefore t=\frac{s}{a}</math>
:<math>\boldsymbol{r}(s)=\begin{pmatrix} a\cos\frac{s}{a} \\ a\sin\frac{s}{a} \\ b \end{pmatrix}</math>
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}(s)}{ds}=\begin{pmatrix} -\sin\frac{s}{a} \\ \cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{n}=\frac{d\boldsymbol{t}(s)}{ds}=\frac{1}{a}\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\kappa=\|\boldsymbol{n}\|=\frac{1}{a}</math>
:<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n} = \begin{pmatrix} 0 \\ 0 \\ \frac{1}{a} \end{pmatrix}</math>
:<math>\boldsymbol{e}_n=\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{e}_b = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}</math>
:<math>\tau = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}\cdot\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}=0</math>//
フレネ・セレーの公式は[[線型代数学続論/行列値関数|行列関数]]に関する一階常微分方程式である。そのため、微分方程式の基本定理(ピカール=リンデレーエフの定理)により初期条件(<math>s=0</math>に於けるフレネ標搆)を与えれば、滑らかな曲率関数・捩率関数の組<math>(\kappa, \tau)</math>を定めることで微分方程式の解として一般の<math>s</math>に対するフレネ標搆を一意に得る。このとき、曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>は接ベクトルを出発点を選んで積分することで決定される。
従って、次の定理が成り立つ<!-- 厳密証明はhttps://sshmathgeom.private.coocan.jp/diffgeom/curvetheorem.htmlを参照 -->。
{{定理|(曲線の基本定理)}}
開区間<math>(a,b)</math>上の実数<math>s</math>を変数とする2つの滑らかな関数<math>\kappa(s),\tau(s)</math>を与える。但し、<math>\kappa(s)</math>は正とする。<br/>
このとき、<math>\kappa(s)</math>を曲率、<math>\tau(s)</math>を捩率、<math>s</math>を弧長パラメータとする三次元空間上の曲線<math>C</math>が剛体運動を除いて一意に定まる。
{{定理終わり}}
剛体運動とは「曲線の形を変えない」運動のことである(平行移動・回転など)。
<math>\kappa(s), \tau(s)</math>の定める曲線族を一般に<math>\mathcal{C}[\kappa, \tau]</math>と書く。
例えば、円を含む螺旋は<math>c_1, c_2=\mathrm{const}.</math>として<math>\mathcal{C}[c_1, c_2]</math>と書ける。
<math>R=\frac{1}{\kappa}</math>を'''曲率半径'''という。曲率半径は曲線の特定のカーブにおける曲がり具合の急さを表す指標であり、カーブを近似する真円('''密着円''')の半径でもある。高速道路の標識で<math>R=\circ\circ \mathrm{m}</math>は、そのカーブの曲率半径を示している。道路設計では、快適なドライブの為曲率半径がなるべく大きくなるように工夫を凝らしている。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>(再掲)
だったが、二次近似式(三次以降を切り捨てた式)を考えると
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\frac{d\boldsymbol{r}(s_0)}{ds}(s-s_0) + \frac{1}{2}\frac{d^2\boldsymbol{r}(s_0)}{ds^2}(s-s_0)^2 </math>
フレネ標搆を用いて書き直すと
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\boldsymbol{e}_t(s-s_0) + \frac{1}{2}\kappa(s_0)\boldsymbol{e}_n(s-s_0)^2 </math>
二次近似とは「曲線を円弧で近似する」ことだったので曲率<math>\kappa(s_0)</math>が近似に用いる円弧と関係ある量であることが予想される。<br/>
接触平面で密着円<math> \| \boldsymbol{r} - (\boldsymbol{r}(s_0)+R\boldsymbol{e}_n) \| = R </math>を考える。接触平面を<math>xy</math>平面と考えると円の方程式は
:<math>x^2+(y-R)^2=R^2</math>
:<math>y=R-\sqrt{R^2-x^2}</math>
テイラー展開して
:<math>y=\frac{x^2}{2R}+O(x^4)</math>
二次の項を比較すると
:<math>\frac{x^2}{2R}=\frac{(s-s_0)^2}{2}\kappa</math>
よって
:<math>R=\frac{1}{\kappa}</math>
と定義するのは妥当である。
なお、先ほど求めた円の曲率から、真円に関して「曲率半径=半径」であることが判る。
フレネ・セレーの公式で最初の二行二列のみを考えると<math>\mathbb{R}^2</math>内の曲線に対するフレネ・セレーの公式を得る。一般に<math>\mathbb{R}^n</math>上の曲線に対し、今回の議論と同様にして接ベクトル・主法線ベクトル・曲率を定義することができる。但し、三次元空間と異なって同じ曲率に対して異なる曲線を与えることができる(主法線ベクトルが接触平面内で接ベクトルに対して左右どちらを向くかがそのままでは定まらないため)。なお、4次元以上であっても平面拘束曲線ならば捩率は0であって従法線ベクトルは零ベクトルに定まる。
===単純閉曲線===
パラメータ区間を<math>I=[a, b]</math>とする。
このとき、曲線の端点はそれぞれ<math>\mathrm{P}(a), \mathrm{P}(b)</math>である。
端点が一致する、つまり<math>\mathrm{P}(a)=\mathrm{P}(b)</math>である連続曲線を'''閉曲線'''という。
自己交叉しない、つまり<math>\forall t_1, t_2 \in (a, b), t_1 \neq t_2 \iff \mathrm{P}(t_1)\neq\mathrm{P}(t_2)</math>となる閉曲線を'''単純閉曲線'''(ジョルダン曲線)という。閉曲線でない曲線に就いて「自己交叉しない」という条件は「曲線を表すベクトル関数が単射」と同値であるので、端点のみ単射性を外してやれば単純閉曲線の定義を得る。
幾何学的直観から、平面に拘束された単純閉曲線はその平面を単純閉曲線で囲まれた'''内部'''とそうでない'''外部'''の二つの領域に分割することが予想できる。
このことは以下の定理によって保証される。
{{定理|(ジョルダンの曲線定理)}}
平面<math>\Pi\subset\mathbb{R}^n</math>内の任意の単純閉曲線<math>\gamma</math>に対し、有界領域<math>I</math>・非有界領域<math>O</math>の組であって<math>\Pi\setminus\gamma=I \sqcup O</math>且つ<math>\partial{I}=\partial{O}=\gamma</math>であるものが唯一つに定まる。
{{定理終わり}}
この<math>I, O</math>をそれぞれ内部・外部と定義する。証明は[[位相幾何学]]で行う。なお、「<math>\partial{I}=\partial{O}=\gamma</math>」を態々明示しているのは、滑らかでない単純閉曲線に対しては「<math>\Pi\setminus\gamma=I \sqcup O \implies \partial{I}=\partial{O}=\gamma</math>」が自明でないためである。
正則単純閉曲線に対して「曲線の向き」の幾何学的意味を考える。
ジョルダンの曲線定理より単純閉曲線<math>\gamma:\boldsymbol{r}=\boldsymbol{r}(s) \quad(\boldsymbol{r}\in \Pi)</math>は平面<math>\Pi</math>を内部<math>I</math>と外部<math>O</math>に分割する。平面拘束曲線なので<math>\forall{s}, \tau(s)=0</math>であり、従法線ベクトルは零ベクトル且つ接触平面が常に<math>\Pi</math>に一致する。
主法線ベクトル<math>\boldsymbol{n}(s)</math>が接ベクトル<math>\boldsymbol{t}(s)</math>に対して左側を向いているとすると、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0) \quad(\varepsilon>0)</math>が点<math>\mathrm{P}(s_0)</math>に於ける<math>\gamma</math>の進行方向左側にある点である。
ここで、<math>\mathrm{P}(s_0)</math>に於ける<math>\varepsilon</math>-開球<math>B_\varepsilon(s_0)</math>を考えると、平面<math>\Pi</math>上では<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が左側の領域、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が右側の領域に入る。
<math>s=s_0</math>を動かすと各点で進行方向左は<math>I, O</math>のいずれかであり、<math>\gamma</math>の正則性と<math>I, O</math>の連結性から「<math>I, O</math>のどちらが左側であるかは曲線全体で変わらない」ことが言える。
ここで円の場合を考える。<math>\Pi</math>に直交座標<math>u, v</math>を入れると向心加速度の議論から「加速度ベクトル=主法線ベクトルは円の中心を向く」ので、「円の正の向きは円の内部を左手に見る進行方向」である。
任意の正則単純閉曲線<math>\gamma</math>に対して自己交叉を起こさないまま円へ連続変形する可逆写像が存在し、その変形に於いて「左側」と「<math>I, O</math>」の対応は変化しない。則ち、円で確認された「正の向きは囲まれた内部を左手に見る向き」は任意の正則単純閉曲線で成り立つ。
つまり、単純閉曲線の正の向きは点を動かしたときに'''自身の囲む領域の内部を左手に見る向き'''である。負の向きは左手に外部を見る向きである。
集合<math>A</math>に含まれる任意の2点に対してそれらを端点とする滑らかな曲線<math>C</math>をとれるとき、<math>A</math>は'''弧状連結'''であるという。
弧状連結集合<math>S</math>内の任意の閉曲線<math>\gamma</math>に対して1点に退化するような連続変形が可能なとき、<math>S</math>は'''単連結'''であるという。単連結でない集合は'''多重連結'''であるという。
平面<math>\Pi\subset\mathbb{R}^n</math>に含まれる単連結集合<math>S</math>に対し、<math>\hat{\Pi}:=\Pi\cup\{\infty\}</math>とすると集合<math>\hat{\Pi}\setminus{S}</math>は連結である。逆も成り立つ。
なお、「<math>A</math>が連結集合である」ことは「補集合<math>\overline{A}</math>が非連結集合である」ことを意味しない。そのため「単連結な連結集合」も考えられ、特に「単連結な領域」はこの先頻繁に登場する。
集合<math>A</math>に含まれる任意の2点を結んだ線分が<math>A</math>に包含されるとき、<math>A</math>は'''凸型'''であるという。凸型集合でない集合は'''凹型'''であるという。
集合<math>A</math>内の1点を固定してそこから<math>A</math>内任意点へ引いた線分が<math>A</math>に包含されるとき、<math>A</math>は'''星状'''(星型)であるという。このとき固定した点を'''星の中心'''という。凸型集合は全て星状集合である。
単純閉曲線<math>\gamma</math>を境界とする内部<math>I</math>に関して<math>I\cup\gamma</math>が凸型集合であるとき、<math>\gamma</math>を'''卵形線'''(凸単純閉曲線・オーヴァル)という。
曲線<math>C</math>の曲率関数<math>\kappa(s)</math>が<math>C^3</math>級であるとき、<math>\kappa'(s_0)=0</math>を満たす点<math>\mathrm{P}(s_0)</math>を<math>C</math>の'''頂点'''という。
例えば、標準楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>の頂点は4点<math>(\pm{a},0),(0,\pm{b})</math>である。このことは、<math>\mathbb{R}^2</math>上曲線<math>C:\boldsymbol{r}=x(t)\boldsymbol{e}_x(t)+y(t)\boldsymbol{e}_y(t)</math>に対する曲率の公式<math>\kappa(t)=\frac{\left|\frac{dx}{dt}\frac{d^2y}{dt^2}-\frac{dy}{dt}\frac{d^2x}{dt^2}\right|}{\left\{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2\right\}^\frac{3}{2}}</math>と<math>\frac{ds}{dt}>0</math>を用いて確かめられる。
実は、この事実は楕円に限らないことが以下の定理で示される。
{{定理|(ムコパディヤーヤの定理・四頂点定理)}}
<math>\mathbb{R}^2</math>上の滑らかな卵形線は少なくとも4つの頂点を持つ。
{{定理終わり}}
*証明
:滑らかな卵形線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)\quad(s\in[a, b])</math>に対して曲率関数<math>\kappa(s)</math>は滑らかであり、<math>\kappa\in C^3</math>を満たす。
:卵形線は単純閉曲線なので<math>\mathrm{P}(a)=\mathrm{P(b)}</math>であり、<math>\kappa(a)=\kappa(b)</math>。
:曲率関数が定数関数のときは<math>\kappa\in C^\infty</math>且つ常に<math>\kappa'(s)=0</math>なので曲線を構成するすべての点が頂点であり、明らかに定理を満たす。
:曲率関数が定数関数でないとする。
:ワイエルシュトラスの極値定理より<math>\kappa(s)</math>は<math>s\in[a, b]</math>のどこかで最大値・最小値をとり、その点で<math>\kappa'(s)=0</math>を満たす。
:従って少なくとも2つの頂点を持つ。
:ここで、頂点がこの2つのみと仮定する。
:曲率が最大値・最小値をとる点をそれぞれ<math>\mathrm{M, N}</math>と置く。
:線分<math>\mathrm{MN}</math>を含む直線を<math>x</math>軸とし、その垂直方向に<math>y</math>軸をとる。
:<math>s</math>が増加すると曲線上の点が<math>\mathrm{N}\to\mathrm{M}</math>のように動くとき、
:<math>\kappa(s)</math>は最小値から最大値に向かって増大し、他に頂点がないので狭義単調増加である。
:同様に、<math>\mathrm{M}\to\mathrm{N}</math>の向きでは<math>\kappa(s)</math>は狭義単調減少である。
:従って、<math>\kappa'(s)y(s)\neq0</math>の正の側だけ考えれば良い。
:<math>y(a)=y(b)=0</math>に注意すると部分積分して
:<math>0<\int_a^b \kappa'(s)y(s)ds=-\int_a^b \kappa(s)y'(s)ds</math>
:主法線ベクトル<math>\boldsymbol{n}(s)= \begin{pmatrix} \xi_1(s) \\ \xi_2(s) \end{pmatrix}</math>を考えると二次元版フレネ=セレーの公式から<math>\frac{d\boldsymbol{n}}{ds}=-\kappa\frac{d\boldsymbol{r}}{ds}</math>なので
:<math>\xi'_2(s)=-\kappa(s)y'(s)</math>
:よって
:<math>-\int_a^b \kappa(s)y'(s)ds=\int_a^b \xi_2(s)ds = \left[\xi_2(s)\right]_a^b=0</math>
:なので矛盾した不等式<math>0<0</math>を得る。
:則ち、<math>\mathrm{M, N}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在する。
:そのような点を<math>\mathrm{L}</math>と置く。
:<math>\mathrm{L}</math>が<math>\mathrm{N}\to\mathrm{M}</math>という経路の途中にあるとする。
:このとき、<math>\mathrm{L}</math>以外に<math>\kappa'(s)=0</math>を満たす点が存在すると「<math>\mathrm{M}\to\mathrm{N}</math>という経路の途中にそのような点が無い」という最初の仮定に反するので
:<math>\mathrm{M, N, L}</math>以外では<math>\kappa'(s)y(s)>0</math>である。
:同様に部分積分を行うことで矛盾した不等式を得、<math>\mathrm{M, N, L}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在することが判る。
:この時点で「<math>\mathrm{M, N}</math>間の二つの経路のいずれにも<math>\kappa'(s)=0</math>を満たす点が存在しない」という仮定が否定されたのでこれ以上背理法を適用することはできない。
:よって、頂点個数の最小値は<math>4</math>である。//
最小値4をとる卵形線が実際に存在することは楕円の例で確かめた。
この定理は「卵形線」を「(正則)単純閉曲線」に取り換えてもそのまま成り立つことが知られている。一般の閉曲線でこの定理を成り立たせるには追加の条件が必要となる。
先程も述べたように、接ベクトルと単位主法線ベクトルは2次元以上の空間内部にある曲線ならば定義することができる。そして、<math>\boldsymbol{t}\cdot\boldsymbol{n}=0</math>も必ず成り立つ。よって、<math>\boldsymbol{e}_t\cdot\boldsymbol{e}_n=0</math>の両辺を<math>s</math>で微分して
:<math>\frac{d\boldsymbol{e}_t}{ds}\cdot\boldsymbol{e}_n+\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=0</math>
:<math>\therefore \boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\boldsymbol{n}\cdot\boldsymbol{e}_n=-\kappa</math>
ここで「基底分解に於ける成分はその基底との内積に等しい」という性質から、<br/>
一般次元に於いても「<math>\frac{d\boldsymbol{e}_n}{ds}</math>の接線方向成分は<math>-\kappa(s)</math>」であることが判る。
ここで<math>C^2</math>級曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>に対して単位主法線<math>\boldsymbol{e}_n(s)</math>を対応させることを考える。この対応を'''ガウス表示'''という。
<math>\boldsymbol{e}_n(s)</math>を二次までテイラー展開すると<math>\Delta s>0</math>を微小量として
:<math>\boldsymbol{e}_n(s+\Delta s)=\boldsymbol{e}_n(s)+\frac{d\boldsymbol{e}_n(s)}{ds}\Delta s + O(\Delta s^2)</math>
ここで<math>\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\kappa</math>より、<math>s</math>を<math>\Delta s</math>だけ動かしたときの接線方向の速さは<math>|\kappa(s)|\Delta s</math>である(<math>\kappa(s)</math>が正で正の向き、負で負の向きに動くとする)。
閉曲線に対してはガウス表示によって法線方向の変化を完全に捉えられるので、<math>\kappa(s)</math>を微小量<math>\Delta s</math>に関して積分した<math>\int_a^b \kappa(s)ds</math>を考えてみる。
ガウス表示では曲線を単位主法線ベクトルの描く単位円として考えることができる。閉曲線では<math>\mathrm{P}(a)=\mathrm{P}(b)</math>より明らかに<math>\boldsymbol{e}_n(a)=\boldsymbol{e}_n(b)</math>であり、閉曲線が一周する間にベクトル<math>\boldsymbol{e}_n(s)</math>はこの単位円を<math>m(\in\mathbb{Z})</math>周する<sup>※</sup>。
<small>※物理的には「円そのものが動いても円周上の質点は『この円をどっちの方向に何周したか』という情報しか持たない」ので、単位円が動くことは議論にあまり関係ない</small>
弧度法より単位円を<math>m</math>周する符号付き道のりは<math>2\pi{m}</math>であり、ガウス表示より<math>\int_a^b \kappa(s)ds=2\pi{m}</math>。
従って、<math>m=\frac{1}{2\pi}\int_a^b \kappa(s)ds</math>
この<math>m</math>を閉曲線の'''回転数'''と呼ぶことにする。
曲率が負の場合には積分値が途中で相殺されてしまうので、絶対値を付けて積分した
:<math>\mu:=\int_a^b |\kappa(s)|ds</math>
という量を考えることにする。
これを閉曲線の'''全曲率'''と呼ぶ。
全曲率に対して以下の定理が成り立つ。
{{定理|(フェンヒェルの定理)}}
滑らかな閉曲線の全曲率は<math>\mu\geq2\pi</math>を満たす。等号成立の場合は卵形線である。
{{定理終わり}}
証明は省略する。
===曲面===
多変数解析で既に扱った、三次元空間に於ける曲面の陽関数表示<math>z=f(x, y)</math>を'''モンジュ表示'''という。<math>f(x, y, z)=\mathrm{const}.</math>と陰関数表示された曲面は陰関数定理が成り立つ範囲でモンジュ表示に直すことができる。
一次式で陰関数表示される曲面を'''一次曲面'''という。平面の方程式より、一次曲面は全て平面である。
二次式で陰関数表示される曲面を'''二次曲面'''という。
以下、三次元空間に於ける二次曲面の例を挙げる。各係数は非退化条件を満たすとする。なお、「直線に平行な平面」は「直線を法線とする平面に垂直な平面」を意味することに注意。
*'''球面'''(sphere)
:高校数学で扱ったように、点<math>(a, b, c)</math>を中心とする半径<math>r</math>の球面の方程式は<math>(x-a)^2+(y-b)^2+(z-c)^2=r^2</math>である。この球面上の点の位置ベクトルは<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>なので、球面が満たすベクトル方程式は一般に<math>\|\boldsymbol{r}-\boldsymbol{a}\|=\mathrm{const}.</math>である。これは円のベクトル方程式の次元を上げたものである。
*'''楕円面'''(ellipsoid)
:楕円の方程式を拡張した方程式<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1</math>が表す曲面である。<math>xyz</math>空間の基本面で切った断面は全て楕円となる。
*'''楕円拋物面'''(elliptic paraboloid)
:楕円の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は拋物線となる。
*'''双曲拋物面'''(hyperbolic paraboloid)
:双曲線の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}-\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は双曲線、平行な平面で切った断面は拋物線となる。また、原点は鞍点である。
*'''一葉双曲面'''(hyperboloid of one sheet)
:楕円面の方程式の一つの項の符号を変えた<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は双曲線となる。
*'''二葉双曲面'''(hyperboloid of two sheet)
:楕円面の方程式の二つの項の符号を変えた<math>\frac{x^2}{a^2}-\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。断面の分類は一葉双曲面と同じだが、<math>m^2<c^2</math>のときは平面<math>z=m</math>と交わらないため「二葉」と名付けられている。
*'''錐面'''(conical surface)
:方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>の表す曲面。<math>xy</math>平面との交点は原点のみであり、<math>yz</math>平面・<math>zx</math>平面で切った断面は直線である。
閉区間<math>I\subset\mathbb{R}</math>上の一変数ベクトル関数<math>\boldsymbol{r}(t)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t) \quad(t\in I)</math>の解集合は次元に依らず曲線を表した。
同様に、領域<sup>※</sup><math>D\subset\mathbb{R}^2</math>上の二変数ベクトル関数<math>\boldsymbol{r}(t, u)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t, u) \quad({\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)}\in D)</math>の解集合は次元に依らず曲面を表すと考えられる。
厳密には[[線型代数学/基底と次元|階数・退化次数の定理]]<!-- 次元定理・線型写像の基本定理 -->などを用いてこのことを確かめられる。
<small>※ここでいう「領域」は冒頭で厳密に定義した「領域」であることに注意。</small>
曲線と同様に、曲面の'''パラメータ表示'''と'''ベクトル表示'''は次のように定義される。
:パラメータ表示:<math>\begin{cases} x_1&=&r_1(t, u) \\ x_2&=&r_2(t, u) \\ &\,\,\vdots& \\ x_n&=&r_n(t, u) \end{cases}</math>
:ベクトル表示:<math>\left\{\boldsymbol{r}(t, u) \,\bigg|\, {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D \right\}</math>
また、<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>のようにも表す。
例えば、<math>k>l>0</math>として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (k+l\cos u)\cos t \\ (k+l\cos u)\sin t \\ l\sin u \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq 2\pi \\ 0 \leq u \leq 2\pi \end{array} \right\})</math>は'''トーラス'''のベクトル表示である。
<math>\mathbb{R}^3</math>上の平面の方程式は高校数学に於いて<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>として一次式<math>ax+by+cz+d=0</math>と表せることを学んだ。
これのベクトル方程式を求めてみよう。
:①<math>c=0</math>のとき
::平面の方程式は<math>\begin{cases} ax+by+d=0 \\ z=\mathrm{const}. \end{cases}</math>
::[1]<math>b=0</math>のとき
:::平面の方程式は<math>\begin{cases} ax+d=0 \\ y=\mathrm{const}. \\ z=\mathrm{const}. \end{cases}</math>
:::<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>より<math>a\neq0</math>
:::<math>y=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} -\frac{d}{a} \\ t \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} -\frac{d}{a} \\ 0 \\ 0 \end{pmatrix}</math>
::[2]<math>b\neq0</math>のとき
:::<math>x=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} t \\ -\frac{a}{b}t-\frac{d}{b} \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 1 \\ -\frac{a}{b} \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} 0 \\ -\frac{d}{b} \\ 0 \end{pmatrix}</math>
:②<math>c\neq0</math>のとき
::<math>x=t, y=u</math>と置換すると
::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} t \\ u \\ -\frac{a}{c}t-\frac{b}{c}u-\frac{d}{c} \end{pmatrix}</math>
::<math>\boldsymbol{r}=t\begin{pmatrix} 1 \\ 0 \\ -\frac{a}{c} \end{pmatrix}+u\begin{pmatrix} 0 \\ 1 \\ -\frac{b}{c} \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ -\frac{d}{c} \end{pmatrix}</math>
なお、ここから平面のベクトル方程式が一般に<math>\boldsymbol{r}=\boldsymbol{a}+t\boldsymbol{b}+u\boldsymbol{c}</math>という「直線のベクトル方程式を拡張した形」であることがわかる。
<math>\boldsymbol{r}(t, u)\in C^1</math>且つ<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}\neq\boldsymbol{0}</math>である曲面を'''滑らか'''な曲面という。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>とその上の点<math>\mathrm{P}_0=(a, b)</math>に対し、曲線<math>\boldsymbol{r}=\boldsymbol{r}(a, u), \boldsymbol{r}=\boldsymbol{r}(t, b)</math>をそれぞれ点<math>\mathrm{P}_0</math>に於ける'''<math>t</math>曲線'''・'''<math>u</math>曲線'''という。
<math>\boldsymbol{r}(t, u)\in C^1</math>であるとき、偏導関数の定義から
:<math>\frac{\partial}{\partial{u}}\boldsymbol{r}(a, u)=\frac{d}{du}\boldsymbol{r}(a, u)</math>
:<math>\frac{\partial}{\partial{t}}\boldsymbol{r}(t, b)=\frac{d}{dt}\boldsymbol{r}(t, b)</math>
ここで<math>a, b</math>をそれぞれ<math>t</math>軸・<math>u</math>軸上で動かすことで<math>t</math>曲線・<math>u</math>曲線の接ベクトルがそれぞれ<math>\frac{\partial{\boldsymbol{r}}}{\partial{u}}, \frac{\partial{\boldsymbol{r}}}{\partial{t}}</math>であると判る。これらを曲面のパラメータ方向の'''接ベクトル'''という。
これらの接ベクトルが平行でないとき、曲面<math>S</math>上の任意の点<math>\mathrm{P}</math>に対して<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>の張る平面が定まる。これを曲面<math>S</math>の点<math>\mathrm{P}</math>に於ける'''接平面'''という。曲線の接線は一次元ベクトル空間<math>\left\{ \xi\frac{d\boldsymbol{r}}{dt} \bigg| \xi \in\mathbb{R} \right\}</math>で表されたが、曲面の接平面は二次元ベクトル空間<math>\left\{ \xi\frac{\partial{\boldsymbol{r}}}{\partial{t}}+\eta\frac{\partial{\boldsymbol{r}}}{\partial{u}} \bigg| \xi, \eta \in \mathbb{R} \right\}</math>で表される。このような接ベクトル全体が張るベクトル空間を一般に'''接空間'''と呼ぶ。
接ベクトルの組が一次独立である曲面を'''正則'''な曲面という。滑らかな曲面は正則曲面である。
曲面<math>S</math>の接平面に垂直なベクトルを<math>S</math>の'''法線ベクトル'''という。
三次元空間ならば接平面を張る2ベクトルの外積<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}} \times \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>で求められる。
モンジュ表示された曲面<math>S:z=f(x, y)</math>に対して接平面の存在性(つまり曲面の正則性)は「二変数関数<math>f</math>の全微分可能」に対応した。ベクトル表示された曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>に対しては「ベクトル関数<math>\boldsymbol{r}</math>の全微分可能性」だけでは足りず、「ヤコビ行列<math>\frac{\partial{(\boldsymbol{r})}}{\partial{(t, u)}}</math>の階数が2」も要求される。
以下、正則曲面のみ扱う。
<math>\boldsymbol{r}(t, u)</math>の微小変化は全微分で与えられる。
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
則ち、各パラメータを同時に<math>\begin{pmatrix} t \\ u \end{pmatrix}\to\begin{pmatrix} t+dt \\ u+du \end{pmatrix}</math>と単調に動かしたとき、対応する曲面上の点が描く領域は2ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt, \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行四辺形として近似できる。その微小面積は線型代数の内容から
:<math>\sqrt{ \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}}dt \right\|^2 \left\| \frac{\partial{\boldsymbol{r}}}{\partial{u}}du \right\|^2 - \left\{ \left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right) \right\}^2 }=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
である。
これを領域<math>D=\mathrm{dom}\,S</math>で重積分してやれば曲面の表面積('''曲面積''')が求まると考えられる。
{{定理|(曲面積)}}
<math>E := \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2,\quad F := \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}},\quad G := \left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2</math>とすると、<br>
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>の領域<math>D</math>に於ける曲面積は
:<math>S=\iint_D \sqrt{EG-F^2}dtdu</math>
{{定理終わり}}
この<math>E, F, G</math>を<math>S</math>の'''第一基本量'''と呼ぶ。また、<math>dS:=\sqrt{EG-F^2}dtdu</math>を'''面素'''(面積素・面積要素)と呼ぶ。
<math>t, u</math>が共通のパラメータ<math>\theta</math>で媒介変数表示されるとき、曲面は曲線に退化するので線素を考えられる。
具体的には、
:<math>dl=\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|d\theta</math>
より
:<math>\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|^2=\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}</math>
ここで合成関数の常微分公式より
:<math>\frac{d\boldsymbol{r}}{d\theta}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{d\theta}+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{d\theta}</math>
なので
:<math>\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}=\left\|\frac{d\boldsymbol{r}}{dt}\right\|^2\left(\frac{dt}{d\theta}\right)^2+2\left(\frac{d\boldsymbol{r}}{dt}\cdot\frac{d\boldsymbol{r}}{du}\right)\frac{dt}{d\theta}\frac{du}{d\theta}+\left\|\frac{d\boldsymbol{r}}{du}\right\|^2\left(\frac{du}{d\theta}\right)^2</math>
:<math>=E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2</math>
よって
:<math>dl=\sqrt{E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2}d\theta=\sqrt{E(dt)^2+2Fdtdu+G(du)^2}</math>
このように、線素は<math>\theta</math>のとり方に依存しない。
そこで、最後の式で右辺を二乗した
:<math>I:=E(dt)^2+2Fdtdu+G(du)^2</math>
を<math>S</math>の'''第一基本形式'''と定める。
第一基本形式は二次形式になっていることが見て取れるので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{K}:=\begin{pmatrix} E & F \\ F & G \end{pmatrix}</math>とおくと
:<math>I={}^t\!\boldsymbol{v} \mathbf{K} \boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{K}</math>を'''第一基本行列'''という。
ここで<math>I=dl^2>0</math>なので<math>\mathbf{K}</math>は正定値行列である。
また、<math>\boldsymbol{x}_i=\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{x}_j=\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>と置いて第一基本量の定義を思い返してみると<math>\mathbf{K}_{ij}=\boldsymbol{x}_i \cdot \boldsymbol{x}_j</math>なのでこの行列は接ベクトルに関するグラム行列である。この意味でも、<math>\mathbf{K}</math>は正定値行列である。
また、面素の式で根号の中身が<math>\det\mathbf{K}</math>に等しいことも判る。
則ち、第一基本量が曲面の本質であると予想される。
<math>F=0 \land E=G=\lambda</math>であるとき、<math>\mathbf{K}=\lambda\mathbf{E}_2</math>である。このときのパラメータの組<math>(u, v)</math>を曲面の'''等温座標系'''という。
等温座標系で表示された曲面<math>S</math>に対し、第一基本形式は<math>I=\lambda(dt^2+du^2)</math>と二次形式の標準形となっている。則ち、等温座標系へのパラメータ変換は主軸変換である。
面素を考えると<math>dS=\lambda^2dtdu</math>と非常に単純な形となるほか、曲面上の角度計算が平面の場合と全く同じ式で与えられることも等温座標系の利点である。
曲面<math>S</math>上の各点<math>\mathrm{P}</math>に対して単位法線ベクトル<math>\boldsymbol{n}(\mathrm{P})</math>を考える。ベクトル表示の定義域<math>D</math>でベクトル場<math>\boldsymbol{n}(\mathrm{P})</math>が連続であるとき、<math>S</math>は'''向き付け可能'''であるという。
向き付け不能な曲面の例として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (u\cos t+2)\sin 2t \\ (u\cos t+2)\cos 2t \\ u\sin t \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq \pi \\ -1 \leq u \leq 1 \end{array} \right\})</math>と表される'''メビウスの帯'''が挙げられる。
メビウスの帯が向き付け不能である証明を概説する。
:接ベクトルをそれぞれ求める。簡単のため<math>u=0</math>として考える。単位法線ベクトルは外積を正規化して得るが、向きの取り方で正負の符号が付く。どちらの符号を採用するにしろ<math>\boldsymbol{n}(\boldsymbol{r}(0, 0))\neq\boldsymbol{n}(\boldsymbol{r}(\pi, 0))</math>を得、<math>\boldsymbol{r}(0, 0)=\boldsymbol{r}(\pi, 0)</math>より同じ点に対して異なる法線ベクトルを出力するので<math>\boldsymbol{n}(\mathrm{P})</math>はwell-definedではなく、向き付け可能性の定義を満たさない。//
四次元以上の空間では法線ベクトルの方向を複数とれるため法線ベクトル場は扱いにくい。そこで、法線ベクトルに依らない定義を考えたい。
2つの滑らかな曲面<math>S_1, S_2</math>が以下を満たすとき、
#パラメータ<math>(t_1, u_1), (t_2, u_2)</math>の間に滑らかな全単射<math>\begin{cases}t_2 =\phi(t_1, u_1) \\ u_2=\psi(t_1, u_1) \end{cases}</math>が存在する。
#この変数変換のヤコビ行列<math>\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}</math>が正則。
#<math>\boldsymbol{r}_1(t_1, u_1)=\boldsymbol{r}_2(t_2, u_2)</math>
この2つは'''パラメータ変換で同値'''という。
このとき、ヤコビアンが正であるパラメータの組は'''同じ向き'''、負であるパラメータの組は'''逆向き'''であるという。
任意の<math>(t_1, u_1)</math>に対して開近傍<math>U \subset \mathrm{dom}\,S_1</math>をとったとき、どの<math>U</math>上でも<math>\det\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}>0</math>を満足するならば<math>S_1</math>は'''向き付け可能'''という。
向き付け可能な曲面の接空間に対して右手系を成すような向きの法線ベクトルを'''外向き法線ベクトル'''と呼ぶ。
外向き法線の向く側を曲面の'''表'''、その反対側を曲面の'''裏'''と定義する。
<math>\partial{S}=\varnothing</math>を満たす正則曲面<math>S</math>を'''閉曲面'''という。ジョルダンの曲線定理を拡張した定理('''ジョルダン・ブラウワーの分離定理''')によって閉曲面が空間を内部・外部に分割することが保証される。内部に面する向きを閉曲面の裏、外部に面する向きを閉曲面の表と定義する。
パラメータ空間の座標軸の向きの組み合わせが<math>xy</math>平面と同じとき、外向き法線で定義される閉曲面の表裏は内部・外部から定義される表裏に一致する。
===回転面===
ここでは三次元空間内の曲面について考える。
高校数学で回転体を扱ったが、領域の回転体の表面である曲面は元の領域の疆界である単純閉曲線を軸に関して回転したものである。そこで、平面上の任意の曲線を回転すると曲面('''回転面''')を得ると考えられる。
簡単な場合として、<math>x\geq0</math>で定義された<math>zx</math>平面上の曲線<math>z=f(x)</math>を<math>y</math>軸に関して回転させた回転面を考える。
:任意の<math>k\in[0,\infty)</math>に関して曲線上の点は<math>\begin{pmatrix} x \\ z \end{pmatrix}=\begin{pmatrix} k \\ f(k)\end{pmatrix}</math>と与えられる。
:領域<math>\left\{ {\scriptstyle\left(\begin{array}{c} x \\[-6pt] z \end{array}\right)} \big| x \leq k \right\}</math>を<math>y</math>軸に関して回転した回転体を平面<math>z=f(k)</math>で切った断面は半径<math>k</math>の閉円盤であり、疆界円周上の点を<math>\begin{pmatrix} x \\ y \\ f(k) \end{pmatrix}</math>とすると<math>k=\sqrt{x^2+y^2}</math>である。
:則ち回転体の疆界である回転面上の点<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は方程式<math>z=f(\sqrt{x^2+y^2})</math>を満たし、逆にこの方程式を満たす<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は回転面上にある。
纏めると以下のようになる。
{{定理|(回転面の方程式)}}
<math>zx</math>平面上の曲線<math>z=f(x)\quad(x\geq0)</math>を<math>y</math>軸に関して回転させた回転面の方程式は
:<math>z=f(\sqrt{x^2+y^2})</math>
{{定理終わり}}
<math>z</math>軸・<math>x</math>軸に関する回転面の方程式は変数を輪環の順に入れ替えることで得られる。
回転面に対し、元の曲線を'''母線'''という。
母線が直線である回転面は'''円錐'''である。
:<math>z=mx+n\quad(m\neq0,x\geq0)</math>とすれば<math>y</math>軸に関して回転した曲面の方程式は
:<math>z=m\sqrt{x^2+y^2}+n</math>
:<math>z-n = m\sqrt{x^2+y^2}</math>
これを両辺二乗すると
:<math>(z-n)^2=m^2x^2+m^2y^2</math>
であり、錐面の方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>を満たしていることがわかる。
回転軸が傾いている場合、<math>xyz</math>空間の回転行列<math>\mathbf{R}</math>を利用することで各軸に関する回転に帰着することもできるが、ここでは曲面のベクトル表示を扱ったのでベクトル方程式で回転を記述することを考えたい。
点<math>\mathrm{O}</math>から<math>\boldsymbol{r}</math>とそれに平行でない単位ベクトル<math>\boldsymbol{e}</math>が伸びており、そのなす角が<math>\theta</math>であるとする。<math>\boldsymbol{r}</math>の終点<math>\mathrm{P}</math>を含み<math>\boldsymbol{e}</math>を法線とする平面を<math>\Pi</math>、<math>\Pi</math>と直線<math>\{k\boldsymbol{e} \mid k>0\}</math>の交点を<math>\mathrm{N}</math>、<math>\mathrm{P}</math>を<math>\Pi</math>内で<math>\mathrm{N}</math>を中心として<math>\phi</math>回転した点を<math>\mathrm{Q}</math>、<math>\mathrm{NQ}</math>から<math>\mathrm{NP}</math>へ降ろした垂足を<math>\mathrm{R}</math>と置く。但し、回転角<math>\phi</math>の正の向きは<math>\boldsymbol{e}</math>を右螺子の進む向きとする方向に定める。
このとき、<math>\boldsymbol{r}</math>を<math>\boldsymbol{e}</math>に関して<math>\phi</math>だけ回転させたベクトル<math>\boldsymbol{r}'</math>は以下のように表される。
{{定理|(ロドリゲスの公式)}}
:<math>\boldsymbol{r}'=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
{{定理終わり}}
*証明
:<math>\boldsymbol{r}'=\overrightarrow{\mathrm{OQ}}=\overrightarrow{\mathrm{ON}}+\overrightarrow{\mathrm{NR}}+\overrightarrow{\mathrm{RQ}}</math>
:<math>\overrightarrow{\mathrm{ON}}</math>は<math>\boldsymbol{r}</math>の<math>\boldsymbol{e}</math>への正射影ベクトルなので
::<math>\overrightarrow{\mathrm{ON}}=\frac{\boldsymbol{r}\cdot\boldsymbol{e}}{\boldsymbol{e}\cdot\boldsymbol{e}}\boldsymbol{e}=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}</math>
:<math>\triangle\mathrm{NQR}</math>を考えると<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>と<math>\|\overrightarrow{\mathrm{NR}}\|=\|\overrightarrow{\mathrm{NQ}}\|\cos\phi</math>及び<math>\overrightarrow{\mathrm{NR}}/\!\!/\overrightarrow{\mathrm{NP}}</math>より
::<math>\overrightarrow{\mathrm{NR}}=\overrightarrow{\mathrm{NP}}\cos\phi=(\overrightarrow{\mathrm{OP}}-\overrightarrow{\mathrm{ON}})\cos\phi=\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi</math>
:<math>\boldsymbol{r}\times\boldsymbol{e}</math>は外積の定義から<math>\overrightarrow{\mathrm{NP}}</math>を<math>\Pi</math>上で<math>-\phi</math>方向に<math>\frac{\pi}{2}</math>だけ回転させたベクトルになるので、
:<math>\boldsymbol{r}\times\boldsymbol{e}/\!\!/\overrightarrow{\mathrm{RQ}}</math>と<math>\|\overrightarrow{\mathrm{RQ}}\|=\|\overrightarrow{\mathrm{NQ}}\|\sin\phi</math>及び<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>から
::<math>\overrightarrow{\mathrm{RQ}}=-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
:これらを足して
::<math>\boldsymbol{r}'=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}+\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})(1-\cos\phi)\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>//
この証明ではベクトルの平行移動を用いているのでアフィン空間を前提とするが、この式そのものはアフィン構造に依存してないので一般のベクトル空間で成り立つ。
また、回転後のベクトルは母線のパラメータ<math>t</math>に加えて回転角<math>\phi</math>もパラメータとして有するので、<math>\boldsymbol{r}'(t, \phi)</math>という二変数ベクトル関数となって曲面を表すことになる。則ち、「曲線を回転すれば曲面を得る」という直感は正しい。
ロドリゲスの公式の応用として、例えば円錐のベクトル方程式が<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\mathrm{const}.</math>であることが導ける。
:円錐頂点の位置ベクトルを<math>\boldsymbol{p}</math>、軸ベクトルを<math>\boldsymbol{a}</math>、<math>\boldsymbol{a}</math>と角度<math>\alpha</math>をなす単位ベクトルを<math>\boldsymbol{v}</math>とする。このとき直線<math>\{k\boldsymbol{v}\mid k>0\}</math>が円錐の母線であり、母線と交わる向きである軸の法線ベクトルを<math>\boldsymbol{b}</math>とおく。
:ロドリゲスの公式より<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}</math>の周りに<math>\theta</math>だけ回転させたベクトル<math>\boldsymbol{v}'</math>は
::<math>\boldsymbol{v}'=\boldsymbol{v}\cos\theta+(\boldsymbol{v}\cdot\boldsymbol{e}_a)\,\mathrm{versin}\,\theta\,\boldsymbol{e}_a-(\boldsymbol{v}\times\boldsymbol{e}_a)\sin\theta</math>
:ここで<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}, \boldsymbol{b}</math>方向に基底分解すると
::<math>\boldsymbol{v}=\cos\alpha\,\boldsymbol{e}_a+\sin\alpha\,\boldsymbol{e}_b</math>
:なので、
::<math>\boldsymbol{v}'=\cos\alpha\boldsymbol{e}_a+\sin\alpha\{\boldsymbol{e}_b\cos\theta+(\boldsymbol{e}_a\times\boldsymbol{e}_b)\sin\theta\}</math>
:円錐上の点<math>\boldsymbol{r}</math>の位置ベクトルは頂点から母線方向に<math>\rho</math>だけ進むので
::<math>\boldsymbol{r}=\boldsymbol{p}+\rho\boldsymbol{v}'</math>
:であり、
::<math>\boldsymbol{r}-\boldsymbol{p}=\rho\boldsymbol{v}'</math>
:ここで<math>\|\boldsymbol{v}'\|=\|\boldsymbol{v}\|=1</math>より
::<math>\rho=\|\boldsymbol{r}-\boldsymbol{p}\|</math>
:このベクトルと軸ベクトルの内積をとると
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\boldsymbol{v}'\cdot\boldsymbol{a}</math>
::<math>=\rho\{\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})+\sin\alpha\cos\theta(\boldsymbol{e}_b\cdot\boldsymbol{a})+\sin\alpha\sin\theta(\boldsymbol{e}_a\times\boldsymbol{e}_b)\cdot\boldsymbol{a}\}</math>
:<math>\boldsymbol{e}_b, \boldsymbol{e}_a\times\boldsymbol{e}_b</math>とも<math>\boldsymbol{a}</math>に直交するので後ろの二項は消えて
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})=\|\boldsymbol{r}-\boldsymbol{p}\|\|\boldsymbol{a}\|\cos\alpha</math>
:則ち
::<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\|\boldsymbol{a}\|\cos\alpha=\mathrm{const}.</math>//
円錐が先に与えられている場合は「<math>\boldsymbol{r}-\boldsymbol{p}</math>が母線の方向ベクトルなのは図より自明」とできるが、ここでは「母線が先に与えられて回転によって円錐が構成される」という立場を採ったのでロドリゲスの公式が効くのである。
ロドリゲスの公式で微小回転<math>d\phi</math>の場合を考える。
正弦関数・余弦関数の部分を1項目までテイラー展開して<math>\cos(d\phi)=1+O(d\phi^2), \sin(d\phi)= d\phi+O(d\phi^3)</math>なので<math>\mathrm{versin}(d\phi)=O(d\phi^2)</math>であり、
:<math>\boldsymbol{r}' = \boldsymbol{r}-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
ここで<math>d\boldsymbol{r}=\boldsymbol{r}'-\boldsymbol{r}</math>なので
:<math>d\boldsymbol{r}=-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
則ち、ベクトル関数の全微分は微小回転で近似される。
オーダー記法の項を無視して<math>\boldsymbol{\omega}=\frac{d\phi}{dt}\boldsymbol{e}</math>と置くと
:<math>d\boldsymbol{r}=(d\phi\boldsymbol{e})\times\boldsymbol{r}</math>
これの両辺を<math>dt</math>で割って
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{\omega}\times\boldsymbol{r}</math>
これは剛体の速度公式である。
ロドリゲスの公式の一次変換表記を考える。
<math>\boldsymbol{r}=\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}, \boldsymbol{r}'=\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}, \boldsymbol{e}=\begin{pmatrix} a \\ b \\ c \end{pmatrix}</math>とすると、
:<math>\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}=\cos\phi\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}+(ar_1+br_2+cr_3)\mathrm{versin}\,\phi\begin{pmatrix} a \\ b \\ c \end{pmatrix} - \sin\phi \begin{pmatrix} cr_2-br_3 \\ ar_3-cr_1 \\ br_1-ar_2 \end{pmatrix}</math>
:<math>=\begin{pmatrix} (\cos\phi + a^2\,\mathrm{versin}\,\phi) r_1 + (ab\,\mathrm{versin}\,\phi -c\sin\phi) r_2 + (ca\,\mathrm{versin}\,\phi + b\sin\phi) r_3 \\ (ab\,\mathrm{versin}\,\phi + c\sin\phi) r_1 + (\cos\phi + b^2\,\mathrm{versin}\,\phi) r_2 + (bc\,\mathrm{versin}\,\phi -a\sin\phi) r_3 \\ (ca\,\mathrm{versin}\,\phi - b\sin\phi) r_1 + (bc\,\mathrm{versin}\,\phi+ a\sin\phi) r_2 + (\cos\phi + c^2\,\mathrm{versin}\,\phi) r_3 \end{pmatrix}</math>
:<math>=\begin{pmatrix} \cos\phi + a^2\,\mathrm{versin}\,\phi & ab\,\mathrm{versin}\,\phi -c\sin\phi & ca\,\mathrm{versin}\,\phi + b\sin\phi \\ ab\,\mathrm{versin}\,\phi + c\sin\phi & \cos\phi + b^2\,\mathrm{versin}\,\phi & bc\,\mathrm{versin}\,\phi -a\sin\phi \\ ca\,\mathrm{versin}\,\phi - b\sin\phi & bc\,\mathrm{versin}\,\phi+ a\sin\phi & \cos\phi + c^2\,\mathrm{versin}\,\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\mathrm{versin}\,\phi</math>を<math>1-\cos\phi</math>に戻して係数行列を<math>1, \cos\phi, \sin\phi</math>の項に分解してみると
:<math>=\begin{pmatrix} a^2+(1-a^2)\cos\phi & ab-ab\cos\phi -c\sin\phi & ca-ca\cos\phi + b\sin\phi \\ ab-ab\cos\phi + c\sin\phi & b^2+(1-b^2)\cos\phi & bc-bc\cos\phi -a\sin\phi \\ ca-ca\cos\phi - b\sin\phi & bc-bc\cos\phi+ a\sin\phi & c^2+(1-c^2)\cos\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left\{ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi\begin{pmatrix} 1-a^2 & -ab & -ca \\ -ab & 1-b^2 & -bc \\ -ca & -bc & 1-c^2 \end{pmatrix} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right\} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left[ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi \left\{ \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}-\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} \right\} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right] \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix}</math>は<math>\boldsymbol{e}</math>の第<math>i</math>成分と第<math>j</math>成分を掛けたものが<math>(i, j)</math>成分となる行列になっていることがわかる。これを<math>\boldsymbol{e}\otimes\boldsymbol{e}</math>と書くことにする。<math>\sin\phi</math>に係る行列を<math>\mathbf{N}</math>と置くと、
:<math>\boldsymbol{r}'=\{\boldsymbol{e}\otimes\boldsymbol{e}+\cos\phi(\mathbf{E}_3-\boldsymbol{e}\otimes\boldsymbol{e})+\sin\phi\mathbf{N}\}\boldsymbol{r}</math>
という表示を得る。
更に、<math>\mathbf{N}^2=\begin{pmatrix} -b^2-c^2 & ab & ca \\ ab & -c^2-a^2 & bc \\ ca & bc & -a^2-b^2 \end{pmatrix}</math>と<math>\|\boldsymbol{e}\|=\sqrt{a^2+b^2+c^2}=1</math>より
:<math>\boldsymbol{e}\otimes\boldsymbol{e}=\mathbf{N}^2+(a^2+b^2+c^2)\mathbf{E}_3=\mathbf{N}^2+\mathbf{E}_3</math>
が成り立つので、最終的に
:<math>\boldsymbol{r}'=(\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2)\boldsymbol{r}</math>
と二次の行列多項式で表示される。
なお、<math>\otimes</math>は発展節で紹介する'''テンソル積'''を表している。
ここで、行列<math>\mathbf{N}</math>についてより具体的に考えてみる。
先ず、<math>{}^t\!\mathbf{N}=-\mathbf{N}</math>が成り立つので<math>\mathbf{N}</math>は反対称行列(歪対称行列・交代行列)である。
<math>\mathbf{N}\boldsymbol{r}</math>を計算すると
:<math>\mathbf{N}\boldsymbol{r}=\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}=\begin{pmatrix} br_3-cr_2 \\ cr_1-ar_3 \\ ar_2-br_1 \end{pmatrix}=\boldsymbol{e}\times\boldsymbol{r}</math>
則ち、<math>\mathbf{N}</math>は<math>\boldsymbol{e}</math>に関する外積(形式的には<math>\boldsymbol{e}\times</math>という左演算)を一次変換とみて表現行列に直したものである。
更に、成分計算により<math>\mathbf{N}^3=-\mathbf{N}</math>という性質が成り立つことも判る。外積を「ベクトルを90°回転させる演算」とみると、二回の演算によって180°回転するということなのでこの結果は妥当である。
ここで行列自然指数関数<math>\exp(\phi\mathbf{N})=\sum_{i=0}^\infty \frac{(\phi\mathbf{N})^i}{i!}</math>を考えてみると上の性質より三次以上の項は<math>\mathbf{N}^4=-\mathbf{N}^2, \mathbf{N}^5=\mathbf{N},\cdots</math>のように全て二次以下に帰着できる。<br>
また、自然指数関数のテイラー展開は絶対収束級数なので各項は可換であり、<math>\mathbf{N}</math>の二次式として纏め直すと
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3 + (\phi-\frac{\phi^3}{3!}+\frac{\phi^5}{5!}-\frac{\phi^7}{7!}+\cdots) \mathbf{N}+(\frac{\phi^2}{2!}-\frac{\phi^4}{4!}+\frac{\phi^6}{6!}-\frac{\phi^8}{8!}+\cdots)\mathbf{N}^2</math>
ここで一次・二次の係数はそれぞれ正弦関数・正矢関数のテイラー展開になっているので結局は
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2</math>
ここから、<math>\exp(\phi\mathbf{N})</math>は角度<math>\phi</math>に関する有限回転に対応することが判った。
このことは以下の考え方でも求まる。<br>
<math>\mathbf{N}</math>の最小方程式は<math>\mathbf{N}^3+\mathbf{N}=\mathbf{O}_3</math>より<math>x(x^2+1)=0</math>であり固有値は<math>0, \pm{i}</math>と求まるので、<math>\exp(\phi\mathbf{N})</math>の対角化行列は
:<math>\begin{pmatrix} e^{0\phi} & 0 & 0 \\ 0 & e^{i\phi} & 0 \\ 0 & 0 & e^{-i\phi} \end{pmatrix}</math>
ここで任意の解析関数<math>f</math>について<math>f(\mathbf{N})</math>のテイラー展開は二次以下の多項式になるので
:<math>\exp(\phi\mathbf{N})=\alpha\mathbf{E}_3+\beta\mathbf{N}+\gamma\mathbf{N}^2</math>
これを実多項式に戻した<math>\alpha+\beta{x}+\gamma{x^2}</math>が<math>e^{\phi{x}}</math>と任意の固有値で一致すればよい(二次補間)ので、
:<math>\begin{cases} e^0 = \alpha \\ e^{i\phi} = i\beta -\gamma \\ e^{-i\phi} = -i\beta-\gamma \end{cases}</math>
:<math>\iff \begin{cases} 1 = \alpha \\ \cos\phi+i\sin\phi = (\alpha -\gamma) + i\beta \end{cases}</math>
:<math>\therefore \begin{cases} \alpha=1 \\ \beta=\sin\phi \\ \gamma=1-\cos\phi=\mathrm{versin}\,\phi \end{cases}</math>
則ち、<math>\mathbf{N}^3=-\mathbf{N}</math>という構造は<math>\Psi_\mathbf{N}(x)=x(x^2+1)</math>という最小多項式に起因するということである。
更に[[表現論]]の観点から見ると、三次直交行列全体である回転群<math>SO(3)</math>に対し、<math>\mathbf{N}</math>は<math>SO(3)</math>の単位元に於ける接空間(三次反対称行列全体・則ちリー代数<math>\mathfrak{so}(3)</math>)の元であり、<math>\exp(\phi\mathbf{N})</math>はリー群<math>SO(3)</math>の元である。ここで行列自然指数関数は「リー代数からリー群へ引き戻す写像」なので'''指数写像'''と呼ばれる。
これが[[#フレネ標搆]]で述べた「直交変換の一次近似が反対称変換」という事実のより正確な表現である。
補足だが、力学で扱う[[w:オイラー角]]というものを導入するとロドリゲスの公式を各座標軸に関する回転の合成で表すこともできる。
===種々の曲率===
ここでは三次元空間内の正則曲面について考える。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>上で定義され弧長パラメータ表示された正則曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t(s), u(s))</math>を考える。
<math>C</math>の接ベクトルは合成関数微分公式より
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}}{ds}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}</math>
と表示される。
ここで両辺の<math>ds</math>を形式的に払うと
:<math>\boldsymbol{t}ds=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
これの自分自身との内積をとると
:<math>\|\boldsymbol{t}\|^2(ds)^2=\left\|\frac{d\boldsymbol{r}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2(du)^2</math>
弧長パラメトライズされた接ベクトルは単位ベクトルであり、右辺のベクトル演算の部分を第一基本量で置き換えると
:<math>ds^2=E(dt)^2+2Fdtdu+G(du)^2</math>
と、第一基本形式を別の方法で得られた。
<math>C</math>の主法線ベクトルは合成関数微分を繰り返し適用することで
:<math>\boldsymbol{n}_C=\frac{d\boldsymbol{t}}{ds}=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d}{ds}\left(\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d}{ds}\left(\frac{du}{ds}\right)</math>
:<math>=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\frac{du}{ds}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\frac{du}{ds}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
:<math>=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\left(\frac{dt}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+2\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}\frac{du}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\left(\frac{du}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
ここで、<math>S</math>の法線ベクトル<math>\boldsymbol{n}_S=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>は一般に<math>\boldsymbol{n}_C</math>と一次従属とは限らない。
後の話を単純にするため<math>\boldsymbol{n}_S</math>を正規化したベクトルを<math>\boldsymbol{e}_S</math>と置いて<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S</math>を計算してみる。
:<math>\boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>より
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{dt}{ds}\right)^2+2\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S\right)\frac{dt}{ds}\frac{du}{ds}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{du}{ds}\right)^2</math>
ここで各内積<math>L=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S,\quad M=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S,\quad N=\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S</math>を<math>S</math>の'''第二基本量'''と呼ぶ。
<math>\boldsymbol{n}_C, \boldsymbol{e}_S</math>のなす角を<math>\psi</math>とすると<math>C</math>の曲率を<math>\kappa_C</math>として
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\kappa_C \cos\psi</math>
なので<math>ds</math>に関して形式的に通分して
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
右辺の分子<math>I\!I:=L(dt)^2+2Mdtdu+N(du)^2</math>を<math>S</math>の'''第二基本形式'''という。
<math>\begin{cases}\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\boldsymbol{e}_S=0 \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\boldsymbol{e}_S=0 \end{cases}</math>を<math>t</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \end{cases}</math>
また、<math>u</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \end{cases}</math>
ここから第二基本量は
:<math>L=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}},\quad M=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad N=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}</math>
とも表示され、第二基本形式の別表示
:<math>I\!I=-\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
を得る。
これは更に全微分から微小ベクトル同士の内積として
:<math>I\!I=-d\boldsymbol{r}\cdot{d}\boldsymbol{e}_S</math>
とも書ける。
第一基本形式は曲面上の微小変位の自身との内積だったが、第二基本形式は曲面上の微小変位と法線方向の微小変位の内積である。則ち、第一基本形式は曲面の内在的な量、第二基本形式は曲面の外在的な量である。
第一基本形式と同様に第二基本形式は二次形式なので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{H}=\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>と置くと
:<math>I\!I={}^t\!\boldsymbol{v}\mathbf{H}\boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{H}</math>を'''第二基本行列'''という。
ここで、モンジュ表示された曲面<math>z=f(x, y)</math>に対して第二基本行列を考えてみる。
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} t \\ u \\ f(t, u)\end{pmatrix}</math>なので[[解析学基礎/多変数関数の微積分#全微分]]の結果を参照すると直ちに
:<math>L=\frac{\frac{\partial^2{f}}{\partial{t}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad M=\frac{\frac{\partial^2{f}}{\partial{t}\partial{u}}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad N=\frac{\frac{\partial^2{f}}{\partial{u}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}</math>
:が判るので、
:<math>\mathbf{H}=\frac{1}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}\begin{pmatrix} \frac{\partial^2{f}}{\partial{t}^2} & \frac{\partial^2{f}}{\partial{tu}} \\ \frac{\partial^2{f}}{\partial{tu}} & \frac{\partial^2{f}}{\partial{u^2}} \end{pmatrix}</math>
これはヘッシアンを法線の長さで割った行列である。
則ち、任意の正則曲面に対して第二基本行列はヘッセ行列と同じ役割をすると考えられる。
実際、点<math>\mathrm{P}</math>の開近傍で<math>\det\mathbf{H}</math>が正である曲面は<math>\mathrm{P}</math>の開近傍で上下どちらかに凸であり、負である曲面は<math>\mathrm{P}</math>で鞍点となることが知られている。
このように第二基本形式は曲面の「曲がり方」を表す量と考えられるので、曲面に対する曲率も考えられる。
ここで第二基本形式を定義した式
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
に立ち戻ると、右辺の分母は<math>s</math>に依存しない第一基本形式なので第一基本量を用いて
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>
右辺を形式的に<math>dt^2</math>で割ると
:<math>\kappa_C\cos\psi=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
この右辺は<math>\boldsymbol{n}_C</math>に依存しない量なので<math>\boldsymbol{n}_S, \boldsymbol{n}_C</math>のなす角度である<math>\psi</math>にも依存しない。
そこで、この値を曲面<math>S</math>の'''法曲率'''と定義する。
:<math>\varkappa:=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
法曲率の幾何学的意味を考える。
<math>\varkappa=\kappa_C\cos\psi</math>より、<math>\cos\psi=1</math>のとき<math>S</math>の法曲率と<math>C</math>の曲率が一致する。このとき<math>\boldsymbol{n}_S /\!\!/ \boldsymbol{n}_C</math>であり、<math>C</math>は曲面上の点<math>\mathrm{P}</math>とそこでの曲面の法線<math>\boldsymbol{n}_S(\mathrm{P})</math>を含む平面で曲面を切断した切り口('''法切り口''')に対応する曲線('''法曲線''')である。
則ち、法曲率は法曲線の曲率に対応する。
なお、法曲線<math>C</math>は切断に用いる平面に拘束されるので接ベクトル<math>\boldsymbol{t}_C</math>も平面に拘束される。則ち、拘束平面は<math>\{\boldsymbol{t}_C, \boldsymbol{n}_C\}</math>の張る接触平面である。
法切り口を齎す平面は法線を軸にして回転することができ、その回転角によって法曲率の値が異なることになる。この回転は具体的にはロドリゲスの公式によって記述されるが、法曲率の極大値・極小値は<math>\varkappa</math>を<math>k=\frac{du}{dt}</math>の関数とみることで以下のように考えることができる。
:法曲率の定義式より
::<math>\varkappa(E+2Fk+Gk^2)=L+2Mk+Nk^2</math>・・・(*)
:これが<math>k</math>の恒等式なので微分しても等号が成り立ち、
::<math>\frac{d\varkappa}{dk}(E+2Fk+Gk^2)+\varkappa(2F+2Gk)=2M+2Nk</math>
:フェルマーの定理より<math>\frac{d\varkappa}{dk}=0</math>を満たす<math>(k, \varkappa)</math>が極値点の候補なので
::<math>\varkappa(2F+2Gk)=2M+2Nk</math>・・・(@)
:が成り立つ必要がある。
:これを<math>k</math>倍して(*)を引くと
::<math>\varkappa(E+Fk)=L+Mk</math>・・・(#)
:これと(@)を連立して
::<math>k=-\frac{\varkappa{F}-M}{\varkappa{G}-N}</math>
:これを(#)に代入して
::<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)=0</math>・・・($)
:という二次方程式を得る。
:($)が相異なる二つの実根<math>\kappa_1, \kappa_2</math>を持てばそれらは極小値・極大値である。
:逆に、極小値・極大値を持てばフェルマーの定理より($)を満たす。//
この<math>\kappa_1, \kappa_2</math>を<math>S</math>の'''主曲率'''という。
($)の左辺を変形してみると、
:<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)</math>
:<math>=\{EG\varkappa^2-(GL+EN)\varkappa+LN\}-\{F^2\varkappa^2-2FM\varkappa+M^2\}</math>
:<math>=(L-\varkappa{E})(N-\varkappa{G})-(M-\varkappa{F})^2</math>
:<math>=\det\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}</math>
:<math>=\det(\mathbf{H}-\varkappa\mathbf{K})</math>
という、第一基本行列と第二基本行列を用いた形が出てきた。
ここで<math>\varkappa=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>を変形して
:<math>(L-\varkappa{E})dt^2+2(M-\varkappa{F})dtdu+(N-\varkappa{G})du^2=0</math>
これを二次形式表示すると
:<math>\begin{pmatrix} dt & du \end{pmatrix}\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}\begin{pmatrix} dt \\ du \end{pmatrix}=0</math>
と、同じ<math>\mathbf{H}-\varkappa\mathbf{K}</math>がここでも登場する。
この行列は法曲率を持つ方向を二次形式で判定しているが、主曲率を持つ場合はラグランジュの未定乗数法より<math>(\mathbf{H}-\varkappa\mathbf{K})\begin{pmatrix} dt \\ du \end{pmatrix}=\boldsymbol{0}</math>が成り立ち、これが<math>\det(\mathbf{H}-\varkappa\mathbf{K})=0</math>という式の正体である。更に言うと、<math>\mathbf{H}\boldsymbol{x}=\varkappa\mathbf{K}\boldsymbol{x}</math>という一般化固有値問題の解が主曲率<math>\kappa_1, \kappa_2</math>に対応している。このときの一般化固有ベクトル<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>を主曲率に対する'''主方向'''という。
二つの主方向の関係を調べる。
:主方向の定義より
::<math>\begin{cases} (\mathbf{H}-\kappa_1\mathbf{K}) \boldsymbol{x}_1=\boldsymbol{0} \\ (\mathbf{H}-\kappa_2\mathbf{K}) \boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
:なので
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2(\mathbf{H}-\kappa_1\mathbf{K})\boldsymbol{x}_1=\boldsymbol{0} \\ {}^t\!\boldsymbol{x}_1(\mathbf{H}-\kappa_2\mathbf{K})\boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
:第一基本行列・第二基本行列とも対称行列なので第二式の転置をとって
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_2{}^t\!\boldsymbol{x}_2 \mathbf{K}\boldsymbol{x}_1 \end{cases}</math>
:上下の式の差をとって
::<math>(\kappa_1-\kappa_2){}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\boldsymbol{0}</math>
:<math>\kappa_1=\kappa_2</math>のときは<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>に関する恒等式であるので、<math>\kappa_1\neq\kappa_2</math>のときを考える。
::<math>{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_2\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_1+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_1\right)=0</math>
:この二つのベクトルは主方向を向くので2つの主方向は直交する。
<math>\kappa_1=\kappa_2</math>(法曲率<math>\varkappa(t, u)=\mathrm{const}.</math>)の場合、<math>S</math>の接平面内の任意の方向が主方向となるので「どの方向にも一様な曲がり方をする」と考えられる。このような主曲率を与える点を'''臍点'''という。任意の点が臍点である曲面は球面である。
上の結果から、'''臍点でない各点で2つの主方向は直交する'''。
主曲率に対して解と係数の関係から得る値
:<math>H=\frac{\kappa_1+\kappa_2}{2}=\frac{GL+ENN-2FM}{2EG-F^2},\quad K=\kappa_1\kappa_2=\frac{LN-M^2}{EG-F^2}</math>
をそれぞれ<math>S</math>の'''平均曲率'''・'''全曲率'''('''ガウス曲率''')という。
全曲率の式を見ると<math>K=\frac{LN-M^2}{EG-F^2}=\frac{\det\mathbf{H}}{\det\mathbf{K}}=\det(\mathbf{K}^{-1}\mathbf{H})</math>である。
そこで、<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>と定義してみると行列式の性質より<math>K</math>は<math>\mathbf{S}</math>の固有値の積である。
ここで<math>\mathbf{S}</math>の固有方程式は
:<math>\det(\mathbf{S}-\lambda\mathbf{E})=\det(\mathbf{K}^{-1}\mathbf{H}-\lambda\mathbf{E})=\det\mathbf{K}^{-1}\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
<math>\det\mathbf{K}^{-1}\neq0</math>より
:<math>\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
これは主曲率を定義した二次方程式($)のことだったので、この方程式の解である固有値は<math>\lambda=\kappa_1, \kappa_2</math>である。
則ち、<math>K=\det\mathbf{S},\quad H=\frac{1}{2}\mathrm{tr}\,\mathbf{S}</math>が成り立つ。
更に、第一基本行列から第二基本行列への一次変換を考えると以下が成り立つことも判る。但し、こちらもフレネ=セレーと同様に厳密にはベクトルを列ではなく行に並べるのが正しいことに注意。
{{定理|(ヴァインガルテンの式)}}
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=-\mathbf{S}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
{{定理終わり}}
*証明
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>と置く。
:両辺に<math>{}^t\!\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>を右から掛けると行列積であることに注意して
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{t}} & \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{u}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
:<math>\therefore -\mathbf{H}=\mathbf{A}\mathbf{K}</math>
:<math>\therefore \mathbf{A}=-\mathbf{H}\mathbf{K}^{-1}=-\mathbf{K}^{-1}\mathbf{H}=-\mathbf{S}</math>//
臍点で行列<math>\mathbf{H}-\varkappa\mathbf{K}</math>を考えると<math>\varkappa=\kappa_1=\kappa_2</math>及び「主方向が任意」から
:<math>\mathbf{H}-\varkappa\mathbf{K}=\mathbf{O}</math>
であり、これを成分で書き下せばヴァインガルテンの式より法曲率に関して
:<math>\begin{cases} \varkappa=\frac{L}{E}=\frac{M}{F}=\frac{N}{G} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{cases}</math>
を得る。
<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>に於いて<math>\mathbf{K}</math>は正定値対称行列なので正則対称な主平方根<math>\mathbf{K}^{1/2}</math>が存在して
:<math>\mathbf{S}=\mathbf{K}^{-1/2}\mathbf{K}^{-1/2}\mathbf{H}</math>
ここで<math>\mathbf{T}=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>という相似変換で表された行列を考えてみると
:<math>\mathbf{K}^{1/2}\mathbf{S}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{1/2}\mathbf{K}^{-1}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{T}</math>
であり、<math>\mathbf{S}\sim\mathbf{T}</math>なのでこれらの2つの固有値の組は一致する。
:<math>\mathbf{H}={}^t\!\mathbf{H}</math>
より
:<math>{}^t\!\mathbf{T}=\mathbf{T}</math>
が成り立つので、<math>\mathbf{T}</math>は対称行列であり2つの固有値は実数である。
よって<math>\mathbf{S}</math>の二つの固有値はともに実数であるが、この固有値は($)の解<math>\kappa_1, \kappa_2</math>のことだったので($)は虚根を持たず、'''主曲率は必ず実数'''である。
モンジュ表示された曲面では先程求めた第二基本量の表式から直ちに
:<math>H=\frac{\left\{1+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}\frac{\partial^2{f}}{\partial{x}^2}+\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2\right\}\frac{\partial^2{f}}{\partial{y}^2}-2\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}\frac{\partial^2{f}}{\partial{x}\partial{y}}}{{2\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^\frac{3}{2}}},\quad K=\frac{\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}-\left(\frac{\partial^2{f}}{\partial{x}\partial{y}}\right)^2}{\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^2}</math>
を得る。
等温座標系では<math>\mathbf{K}^{-1}=\frac{1}{\lambda^2}\mathbf{E}_3</math>より<math>\mathbf{S}=\frac{1}{\lambda^2}\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>なので、平均曲率・ガウス曲率はそれぞれ<math>H=\frac{L+N}{2\lambda^2},\quad K=\frac{LN-M^2}{\lambda^4}</math>と簡単に求まる。
ある点に於ける2つの主曲率はそれぞれその点に於ける極大方向・極小方向の曲がり方を与えるので、<math>\kappa_1, \kappa_2</math>の符号の組み合わせがその点近傍に於ける曲面の曲がり方を与えることになる。
具体的には、両方とも正なら上に凸、負なら下に凸、異符号なら鞍点となる。主曲率が0ならばその主方向に対して曲がっていないということである。
主曲率の積である全曲率の符号を見ても良い。全曲率が正ならば上下どちらかに凸、負ならば鞍点である。第一基本行列が正定値行列であることから主曲率の符号は第二基本行列の行列式と一致するので先程の「第二基本行列がヘッセ行列の一般化」という話に繫がる。
任意点で<math>H=0</math>を満たす曲面を'''極小曲面'''という。極小曲面は曲面を連続変形させたときに曲面積の最小値を与える曲面であることが知られている。
平面は自明な極小曲面である。他にも<math>z=\ln\left(\frac{\cos y}{\cos x}\right)(-\frac{\pi}{2}<x, y<\frac{\pi}{2})</math>(シェルクの第一曲面)などが知られている。
極小曲面は表面張力の理論に応用されている。
例えば石鹼膜のつくる曲面について、膜上点での表裏の圧力差<math>P</math>・その点での表面張力<math>T</math>及び平均曲率<math>H</math>に対し<math>P=2TH</math>が成立する(ヤング=ラプラスの公式)ことが知られているが、閉曲線である枠に張った膜が割れずに安定して存在する条件は全ての点で<math>P=H=0</math>、則ち極小曲面のときである。
曲面<math>S</math>上の微小変位<math>d\boldsymbol{r}</math>、法線方向の微小変位<math>d\boldsymbol{e}_S</math>に対して第一基本形式は<math>I=d\boldsymbol{r}\cdot d\boldsymbol{r}</math>、第二基本形式は<math>I\!I=-d\boldsymbol{r}\cdot d\boldsymbol{e}_S</math>であった。
最後の組み合わせである<math>d\boldsymbol{e}_S\cdot d\boldsymbol{e}_S</math>を<math>S</math>の'''第三基本形式'''と定義する。
:<math>I\!I\!I:=\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
:<math>=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2(du)^2</math>
これを同様に二次形式の行列表示に直すと<math>\mathbf{W}:=\begin{pmatrix} \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2 & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} & \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2 \end{pmatrix}</math>として
:<math>I\!I\!I={}^t\!\boldsymbol{v}\mathbf{W}\boldsymbol{v}</math>
この<math>\mathbf{W}</math>を'''第三基本行列'''という。
見て判る通り、'''第三基本量'''は<math>P=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2,\quad Q=\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad R=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2</math>である。
臍点でないとき2つの主方向は直交するので、臍点を持たない曲面に対して主方向を直交基底としたパラメータ表示<math>\boldsymbol{r}=\boldsymbol{r}(p, q)</math>を考えられる。
このとき、各基本形式は
:<math>I=dp^2+dq^2</math>
:<math>I\!I=\kappa_1dp^2+\kappa_2dq^2</math>
:<math>I\!I\!I=\kappa^2_1dp^2+\kappa^2_2dq^2</math>
と表示されることが知られている。
第三基本形式は第一基本形式と第二基本形式の線型結合で表示される。
:<math>I\!I\!I=2HI\!I-KI</math>
このことはヴァインガルテンの式と平均曲率・全曲率の定義を用いて確かめられる。
これに関連し、第二基本量で定義された全曲率は第一基本量のみで表されることが知られている。つまり、曲率という外在的な量を第一基本形式という内在的な量のみで記述でき、言い換えると「曲面を考えるときに'''曲面の外側の空間を考える必要が無い'''」ということである。
この定理は発見者自身も驚愕したことから'''ガウスの驚異の定理'''と呼ばれている。詳しくは発展節で扱う。
なお、平均曲率を考えるときは外側の空間の情報が必要である。
==直交曲線座標系==
{{節stub}}
===円筒座標系===
平面の座標系として直交座標の他に斜交座標、極座標(円座標)、重心座標などがあったように、空間の座標系も複数通り考えられる。
空間座標を3つの実数の組<math>(r, \theta, z)</math>で表した座標系を'''円筒座標系'''('''円柱座標系'''、cylindrical coordinate system)という。ただし、<math>r</math>は原点からの(符号付き)距離、<math>\theta</math>は基準面に於ける始線からの正の回転角、<math>z</math>は基準面からの高さである。
円筒座標系は、円座標系の<math>r\theta</math>平面に<math>z</math>軸方向の次元を加えた3次元空間の座標と考えられる。
そのため、円筒座標系と直交座標系の対応は以下のようになる。
:<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \\ z=z \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2} \\ \theta = \arctan\frac{y}{x} \\ z=z \end{cases}</math>
但し、<math>r</math>は基準面の裏側では負とする。
直交座標の<math>z</math>軸を基に円筒座標系の座標軸を決定する。一般に座標軸は直線とは限らないので、「軸」ではなく「曲線」と呼ぶことにする('''座標線''')。なお、「曲線」という語は一般に「直線」を包含する。
:<math>r</math>曲線:<math>z</math>軸上の点を通り<math>z</math>軸に垂直な半直線。
:<math>\theta</math>曲線:<math>z</math>軸を法線とする平面内にあり、中心が<math>z</math>軸上にある円周。
:<math>z</math>曲線:<math>z</math>軸に平行な直線。
ここで、各曲線に沿った微小変化がどのように表されるか見ていく。
<math>\boldsymbol{f}: (r,\theta,z)\to(x,y,z)</math>とする。
<math>\boldsymbol{f}</math>全体の微小変化は全微分<math>d\boldsymbol{f}=\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}</math>で表される。
上で求めた関係式より
:<math>\boldsymbol{f}\begin{pmatrix} r \\ \theta \\ z\end{pmatrix}=\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} r\cos\theta \\ r\sin\theta \\ z \end{pmatrix}</math>
なので、
:<math>\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} = \begin{pmatrix} \frac{\partial}{\partial{r}}r\cos\theta & \frac{\partial}{\partial{\theta}}r\cos\theta & \frac{\partial}{\partial{z}}r\cos\theta \\ \frac{\partial}{\partial{r}}r\sin\theta & \frac{\partial}{\partial{\theta}}r\sin\theta & \frac{\partial}{\partial{z}}r\sin\theta \\ \frac{\partial}{\partial{r}}z & \frac{\partial}{\partial{\theta}}z & \frac{\partial}{\partial{z}}z \end{pmatrix} = \begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}</math>
よって
:<math>d\boldsymbol{f}=\begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}=\begin{pmatrix} \cos\theta \\ \sin \theta \\ 0 \end{pmatrix}dr + \begin{pmatrix} -\sin\theta \\ \cos\theta \\ 0 \end{pmatrix}rd\theta + \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}dz </math>
再右辺の各項を<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>と書くことにすると、<math>|d\vec{r}|, |d\vec{\theta}|, |d\vec{z}|</math>はそれぞれ<math>dr, rd\theta, dz</math>とわかる。<math>r, \theta, z</math>を物理量として捉えたとき<math>d\theta</math>の単位はラジアン(無次元量)であり、<math>rd\theta</math>の単位はメートル(長さの次元1)なので、次元の整合性が取れる。
纏めると以下のようになる。
{| class="wikitable"
| ||style="text-align:center;"| <math>\boldsymbol{e}_x</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_y</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_z</math>成分 ||style="text-align:center;"| ノルム
|-
|style="text-align:center;"| <math>d\vec{r}</math> ||style="text-align:center;"| <math>\cos\theta dr</math> ||style="text-align:center;"| <math>\sin\theta dr</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>dr</math>
|-
|style="text-align:center;"| <math>d\vec{\theta}</math> ||style="text-align:center;"| <math>-r\sin\theta d\theta</math> ||style="text-align:center;"| <math>r\cos\theta d\theta</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>rd\theta</math>
|-
|style="text-align:center;"| <math>d\vec{z}</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>1</math> ||style="text-align:center;"| <math>dz</math>
|}
ここで<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>は内積を取ればどの組も互いに直交することが容易にわかるので、この3つのベクトルは3次元ユークリッド空間の直交基底である。
そこで、それぞれのベクトルを正規化することで各軸曲線方向の基本ベクトルを得る。
:<math>\boldsymbol{e}_r = \frac{d\vec{r}}{dr} = \cos\theta \boldsymbol{e}_x + \sin\theta \boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_\theta = \frac{d\vec{\theta}}{rd\theta} = -\sin\theta\boldsymbol{e}_x+\cos\theta\boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_z=\frac{d\vec{z}}{dz}=\boldsymbol{e}_z</math>
これを一次変換の形式で表すと
:<math>\begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix}</math>
となる。
このときの表現行列を、座標系または基底ベクトルを変換することから'''座標変換行列'''又は'''基底変換行列'''という。場合によっては'''変換テンソル'''とも呼ぶ。
なお、この直交座標⇒円筒座標の座標変換行列は、<math>xyz</math>空間に於ける<math>z</math>軸まわりの回転行列に等しい。
逆基底変換はこの座標変換行列の逆行列を求めれば定式化できる。
回転行列は直交行列なので
:<math>\begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} ^{-1}= {}^t \! \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} </math>
であり、
:<math>\begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix}</math>
円筒座標系は、[[電磁気学]]の解析でよく使用される。
例えば、高校物理の公式<math>B(r)=\frac{\mu_0I}{\tau r}</math>は、円筒座標系を知っていれば「電流が<math>z</math>軸に平行であることから磁場は<math>z</math>方向に一葉且つ<math>\theta</math>方向に回転対称なので、<math>r</math>方向の項のみが寄与する」と理解される。
===極座標系===
高等学校までの地理で習ったように、球面上の位置は緯度<math>\theta</math>と経度<math>\phi</math>で定めることができる。
一般に三次元空間で球面上のある点の座標を定めるには、更に球の中心からの距離<math>r</math>が必要である。
このようにして定められる座標系を'''三次元極座標系'''(polar coordinate system in 3D)または'''球(面)座標系'''(spherical coordinate system)という。
xyz座標空間の点<math>\mathrm{P}(x, y, z)</math>の極座標表示を考える。
<math>r=|\overrightarrow{\mathrm{OP}}|=\sqrt{x^2+y^2+z^2}</math>は容易にわかる。
<math>\theta</math>は<math>z</math>軸からの'''天頂角'''(zenith angle)であり、<math>\overrightarrow{\mathrm{OP}}</math>の<math>z</math>軸への正射影ベクトルを<math>\overrightarrow{\mathrm{OH}}=\vec{h}</math>とすると<math>\tan\theta = \frac{|\vec{h}|}{z}</math>が成り立つ。<math>|\vec{h}|=\sqrt{x^2+y^2}</math>より、<math>\theta=\arctan \frac{\sqrt{x^2+y^2}}{z}</math>である。
<math>\phi</math>は<math>x</math>軸からの'''方位角'''(azimuth angle)であり、<math>\mathrm{P}</math>から<math>xy</math>平面に降ろした垂足<math>\mathrm{Q}</math>を考えると<math>\tan\phi=\frac{y}{x}</math>とわかる。よって、<math>\phi=\arctan\frac{y}{x}</math>である。
逆に、これを<math>\mathrm{P}(x, y, z)</math>に復元することを考える。
<math>\triangle\mathrm{OHP}</math>について<math>\angle\mathrm{HOP}=\theta</math>なので、<math>z=\overline{\mathrm{OH}}=r\cos\theta</math>。
また、<math>\triangle\mathrm{OPQ}</math>について<math>\angle\mathrm{OPQ}=\theta</math>なので、<math>\overline{\mathrm{OQ}}=r\sin\theta</math>。
よって<math>x=\overline{\mathrm{OQ}}\cos\phi=r\sin\theta\cos\phi, y=\overline{\mathrm{OQ}}\sin\phi=r\sin\theta\sin\phi</math>。
以上を纏めると、直交座標と球面座標の対応関係は
:<math>\begin{cases} x=r\sin\theta\cos\phi \\ y=r\sin\theta\sin\phi \\ z=r\cos\theta \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2+z^2} \\ \theta=\arctan\frac{\sqrt{x^2+y^2}}{z} \\ \phi=\arctan\frac{y}{x} \end{cases}</math>
一般に緯度は<math>-90^\circ \leqq \theta \leqq 90^\circ</math>、経度は<math>-180^\circ \leqq \phi \leqq 180^\circ</math>の範囲で表される(但し、符号の違いは東⇔西、南⇔北の違いである)。同様に、球面座標の天頂角<math>\theta</math>、方位角<math>\phi</math>は<math>\theta \in [-\frac{\pi}{4}, \frac{\tau}{4}], \phi \in [-\frac{\tau}{2}, \frac{\tau}{2}]</math>で考える。赤道面より下側(すなわち南半球)では<math>\theta<0</math>とする。
直交座標の<math>z</math>軸を基に極座標系の座標線を決定する。
:<math>r</math>曲線:原点を通る半直線。
:<math>\theta</math>曲線:原点中心で<math>z</math>軸上の一点から出る半円弧。
:<math>\phi</math>曲線:<math>z</math>軸を法線とする平面内で<math>z</math>軸上に中心を持つ円周。
各曲線に沿った微小変化は円柱座標系の場合と同様、ベクトル場の全微分を用いて
:<math>\begin{cases} d\vec{r}= \begin{pmatrix} \sin\theta\cos\phi \\ \sin\theta\sin\phi \\ \cos\theta \end{pmatrix} dr \\ d\vec{\theta}= \begin{pmatrix} \cos\theta\cos\phi \\ \cos\theta\sin\phi \\ -\sin\theta \end{pmatrix}rd\theta \\ d\vec{\phi} = \begin{pmatrix} -\sin\phi \\ \cos\phi \\ 0 \end{pmatrix} r\sin\theta d\phi \end{cases}</math>
と求まる。
これらは(内積の結果から)互いに直交するので、円柱座標の場合と同様の議論により
:<math>\begin{pmatrix} \sin\theta\cos\phi & \sin\theta\sin\phi & \cos\theta \\ \cos\theta\cos\phi & \cos\theta\sin\phi & -\sin\theta \\ -\sin\phi & \cos\phi & 0 \end{pmatrix}</math>
と変換テンソルが求まる。
これも直交行列であるので、逆変換テンソルは
:<math>\begin{pmatrix} \sin\theta\cos\phi & \cos\theta\cos\phi & \cos\phi \\ \sin\theta\sin\phi & \cos\theta\sin\phi & -\sin\phi \\ -\sin\theta & \cos\theta & 0 \end{pmatrix}</math>
と求まる。
球面座標系は、[[古典力学]]の解析でよく使用される。
例えば、赤道平面における角運動量保存則は<math>mr^2\frac{d\phi}{dt}=\mathrm{const}.</math>と表示されるが、これは<math>z</math>軸方向の角運動量を球面座標系の演算により取り出したものである。
球面座標系は特に機械制御に応用されている。
円柱座標系・球面座標系ともに各基底ベクトルが互いに直交しているので、そのことを明示して(且つ通常の直交座標系と区別して)'''直交曲線座標系'''(orthogonal curvilinear coordinate system)と呼ぶ場合がある。以下で扱う座標系たちも直交曲線座標系である。
===円環座標系===
===双極座標系===
===回転放物面座標系===
===放物柱座標系===
===回転楕円面座標系===
===楕円柱座標系===
===楕円体座標系===
==空間微分==
ここでは三次元ユークリッド空間で考える。
===勾配===
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\varphi\in C^1</math>のとき、
:<math>\mathrm{grad}\,\varphi := \begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}</math>
を<math>\varphi</math>の'''勾配'''(gradient)と定義する。
勾配の結果として得るベクトルを<math>\varphi</math>の'''勾配ベクトル'''ともいう。
勾配で定義される概念としては、電場が有名である。
:電位<math>\phi</math>に対する電場<math>\boldsymbol{E}</math>は
:<math>\boldsymbol{E}:=-\mathrm{grad}\,\phi</math>
勾配はベクトル量であるため、そのことを明示するため新たな演算子を導入する。
'''空間偏微分演算子'''(ハミルトン演算子)を
<math>\nabla:=\begin{pmatrix} \frac{\partial}{\partial{x}} \\ \frac{\partial}{\partial{y}} \\ \frac{\partial}{\partial{z}} \end{pmatrix}</math>
と定義する。
この演算子自体は偏微分作用素の対象を後接しないと意味を成さない。しかし、便宜的にベクトル量と考えてベクトルと同様の演算則が成り立つと見做す。そのため、この演算子に関する演算は[[w:記号の濫用]](symbol abuse)であることを註しておく。
<math>\nabla</math>の正式な読み方は'''ナブラ'''(nabla)であるが、<math>\Delta</math>(delta)を反転した形であることから'''エイトレッド'''(atled)とも読まれる。なお、ナブラの由来は「竪琴」を意味する古代ギリシャ語「νάβλα」である。
この演算子を用いれば勾配の表式は
:<math>\mathrm{grad}\,\varphi=\nabla\varphi</math>
となる。
<math>\varphi</math>はスカラー場なのでスカラー量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その積<math>\nabla\varphi</math>はベクトル量のスカラー倍、すなわちベクトル量であることが見て取れる。
勾配はスカラー場に対する偏微分の結果を並べたベクトルであるため、偏微分の性質とベクトルの性質を組み合わせて以下が成り立つと判る。
#<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>(線型性)
#<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(積の微分・ライプニッツ則)
#<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>(商の微分)
#<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>(合成関数微分)
任意点に対して勾配ベクトルが非零であるスカラー場を'''正則'''なスカラー場という。
以下、正則なスカラー場に限って扱う。
等位面<math>\varphi(x, y, z)=k(\mathrm{const}.)</math>上の点<math>\mathrm{P}(x_0, y_0, z_0)</math>を考える。
:<math>\mathrm{P}</math>を通り等位面に拘束される曲線のベクトル表示を<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>とする。
:等位面の方程式を<math>t</math>で両辺微分して
::<math>\frac{\partial{\varphi}}{\partial{x}}\frac{dx}{dt}+\frac{\partial{\varphi}}{\partial{y}}\frac{dy}{dt}+\frac{\partial{\varphi}}{\partial{z}}\frac{dz}{dt}=0</math>
:<math>t=t_0</math>のとき
::<math>\frac{\partial{\varphi}}{\partial{x}}x'(t_0)+\frac{\partial{\varphi}}{\partial{y}}y'(t_0)+\frac{\partial{\varphi}}{\partial{z}}z'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\cdot\boldsymbol{r}'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\perp\boldsymbol{r}'(t_0)</math>
ここで<math>\mathrm{P}</math>に於ける等位面の接平面は接ベクトル<math>\boldsymbol{r}'(t_0)</math>を含むため、<math>\nabla\varphi(\mathrm{P})</math>は点<math>\mathrm{P}</math>に於ける等位面の法線ベクトルである。
よって等位面の接平面の方程式は
:<math>\nabla\varphi(\mathrm{P})\cdot(\boldsymbol{x}-\overrightarrow{\mathrm{OP}})=0</math>
である。
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>の全微分は
:<math>d\varphi=\frac{\partial{\varphi}}{\partial{x}}dx+\frac{\partial{\varphi}}{\partial{y}}dy+\frac{\partial{\varphi}}{\partial{z}}dz</math>
これをベクトルの内積とみると
:<math>=\begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}\cdot\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
:<math>=\nabla\varphi\cdot d\boldsymbol{x}</math>
ここで変位ベクトル<math>d\boldsymbol{x}</math>を任意の方向を向いた単位ベクトル<math>\boldsymbol{e}</math>に拡張することを考えたい。
<math>\varphi(\mathrm{P})</math>に対して<math>\mathrm{P}</math>を始点とする<math>\boldsymbol{e}</math>方向の直線を考え、その上の点を<math>\mathrm{Q}</math>とする。
このとき、ベクトル変数<math>\boldsymbol{e}</math>による微分係数
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{\mathrm{Q\to P}}\frac{\varphi(\mathrm{Q})-\varphi(\mathrm{P})}{\overline{\mathrm{QP}}}</math>
を、<math>\varphi</math>の<math>\mathrm{P}</math>に於ける<math>\boldsymbol{e}</math>方向の'''方向微分係数'''と定義する。
方向微分係数はスカラー場に対し<math>\boldsymbol{e}</math>方向の変化率を与えるものと考えられる。そこで、方向微分係数が最大となる方向を考える。
:<math>\overrightarrow{\mathrm{PQ}}=t\boldsymbol{e}</math>と置く。
::<math>\overrightarrow{\mathrm{OQ}}=\begin{pmatrix} x_0+te_1 \\ y_0+te_2 \\ z_0+te_3 \end{pmatrix}</math>
::<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{t\to0}\frac{\varphi(x_0+te_1, y_0+te_2, z_0+te_3)-\varphi(x_0, y_0, z_0)}{t}</math>
:ここで<math>\Phi(t):=\varphi(x_0+te_1, y_0+te_2, z_0+te_3)</math>とすれば
::<math>=\lim_{t\to0}\frac{\Phi(t)-\Phi(0)}{t}</math>
::<math>=\frac{d\Phi(t)}{dt}</math>
::<math>=\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{x}}\frac{d(x_0+te_1)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{y}}\frac{d(y_0+te_2)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{z}}\frac{d(z_0+te_3)}{dt}</math>
::<math>=\frac{\partial{\varphi}(\mathrm{P})}{\partial{x}}e_1+\frac{\partial{\varphi}(\mathrm{P})}{\partial{y}}e_2+\frac{\partial{\varphi}(\mathrm{P})}{\partial{z}}e_3</math>
::<math>=\nabla\varphi(\mathrm{P})\cdot\boldsymbol{e}</math>
よって、全微分の式の<math>d\boldsymbol{x}</math>をそのまま<math>\boldsymbol{e}</math>に取り替えたものが方向微分係数の表式である。
内積を書き下すと<math>\|\boldsymbol{e}\|=1</math>より
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\|\nabla\varphi(\mathrm{P})\|\cos\theta</math>
よって最大値をとるのは<math>\cos\theta=1</math>則ち'''<math>\boldsymbol{e}</math>が勾配方向のとき'''である。また、方向微分係数の最大値は'''勾配のノルム'''である。
このように、勾配はスカラー場の各点に於ける傾きを表す。これは最右辺の式が「各軸方向の傾きを表すベクトルの和」になっていることからも直観的にわかる。ここから、「gradient」の和訳として「勾配」が充当されたのは妥当である。
方向微分係数を'''方向導関数'''に拡張することを考える。
形式的には方向微分係数の定点<math>\mathrm{P}</math>を変数<math>\boldsymbol{x}</math>に置き換えればいいだけである。
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\nabla\varphi(\boldsymbol{x})\cdot\boldsymbol{e}</math>
正式には極限を用いて
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\lim_{t\to0}\frac{\varphi(\boldsymbol{x}+t\boldsymbol{e})-\varphi(\boldsymbol{x})}{t}</math>
と定義する。
内積を書き下すと
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{x}}e_1+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{y}}e_2+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{z}}e_3</math>
これを[[解析学基礎/多変数関数の微積分#極値]]で扱った方向偏微分作用素として書き直すと
:<math>\left(e_1\frac{\partial}{\partial{x}}+e_2\frac{\partial}{\partial{y}}+e_3\frac{\partial}{\partial{z}}\right)\varphi(\boldsymbol{x})</math>
:<math>=(\boldsymbol{e}\cdot\nabla)\varphi(\boldsymbol{x})</math>
となる。
則ち、形式的には空間偏微分演算子の微分方向ベクトルとの右内積が方向偏微分作用素である。
更に、多変数関数のテイラー二次近似は
:<math>f(\boldsymbol{x})\fallingdotseq f(\boldsymbol{a})+\nabla{f}(\boldsymbol{a})\cdot(\boldsymbol{x}-\boldsymbol{a})+\frac{1}{2}{}^t\!(\boldsymbol{x}-\boldsymbol{a})\mathbf{D}(\boldsymbol{x}-\boldsymbol{a})</math>
と書けることが判る。但し、<math>\mathbf{D}</math>はヘッセ行列である。
多変数解析で扱った停留点(臨界点)は<math>\nabla\varphi(\mathrm{P})=\boldsymbol{0}</math>なる点<math>\mathrm{P}</math>として正式に定義される。また、ラグランジュの未定乗数法に於ける連立方程式も勾配を用いれば<math>\nabla\varphi(\mathrm{P})=\lambda\nabla\psi(\mathrm{P})</math>と書き表される。
スカラー場の全微分は勾配で表せたが、同様にベクトル場の全微分をナブラを用いて表すことを考える。
ベクトル場の全微分は
:<math>d\boldsymbol{a}=\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}} d\boldsymbol{x}</math>
で定義された。
ここで<math>n</math>次行列 <math>\mathbf{A}</math>と<math>n</math>項列ベクトル <math>\boldsymbol{a}</math>に対し、<math>(\mathbf{A} \circledast \boldsymbol{a})_{ij} = (\mathbf{A}_{ij}) a_i</math>となるような可換二項演算子 <math>\circledast</math>を定義する。これは本項独自の記法である。但し、<math>(\mathbf{P})_{ij}</math>は行列 <math>\mathbf{P}</math>の第ij成分を表す。
この記法を用いると、ヤコビ行列<math>\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}}</math>は<math>\nabla \circledast \boldsymbol{a}</math>と表すことができる。
則ち、ベクトル場の全微分は
:<math>d\boldsymbol{a} = (\nabla \circledast \boldsymbol{a}) d\boldsymbol{x}</math>
と表される。
これを形式的に
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}=\nabla \circledast \boldsymbol{a}</math>
と書き表すことができる。
則ち、ヤコビ行列はベクトル場のベクトル変数による導関数と見做せる。
ヤコビ行列はベクトル場の成分スカラー場に対する勾配ベクトルを行に並べたものという解釈もできるので、この考え方は自然である。
ここでベクトル場に対してスカラー場と同様に方向微分係数・方向導関数を考えると、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}\boldsymbol{v}</math>
が成り立つことが判る。
これもベクトル場の成分スカラー場に対する方向微分係数・方向導関数を列に並べたベクトルと解釈できる。
則ち、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
である。
===発散===
ベクトル場<math>\boldsymbol{a}=\boldsymbol{a}(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\boldsymbol{a}\in C^1</math>のとき、
:<math>\mathrm{div}\,\boldsymbol{a} := \frac{\partial{a_x}}{\partial{x}} + \frac{\partial{a_y}}{\partial{y}} + \frac{\partial{a_z}}{\partial{z}}</math>
を<math>\boldsymbol{a}</math>の'''発散'''(divergence)と定義する。
発散が用いられる概念としては、'''ガウスの法則'''が有名である。
:電荷密度<math>\rho</math>、電場<math>\boldsymbol{E}</math>、真空の誘電率<math>\varepsilon_0</math>として
:<math>\mathrm{div}\,\boldsymbol{E}=\frac{\rho}{\varepsilon_0}</math>
球面座標で考えることにより、この式の重要な性質「荷電粒子の座標を原点にとると原点以外では
<math>\mathrm{div}\,\boldsymbol{E}=0</math>」を証明することができる。
勾配と同様に発散をナブラで表すことを考えると、
:<math>\mathrm{div}\,\boldsymbol{a}=\nabla\cdot\boldsymbol{a}</math>
という表式を得る。
<math>\boldsymbol{a}</math>はベクトル場なのでベクトル量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その内積<math>\nabla\cdot\boldsymbol{a}</math>はスカラー量であることが見て取れる。
発散に対しては以下が成り立つ。
#<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>(線型性)
#<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は内積の線型性より、後者は成分演算と勾配の定義より示される。
ヤコビ行列<math>\nabla\circledast\boldsymbol{a}</math>との関係を考える。
:<math>\nabla\circledast\boldsymbol{a}=\begin{pmatrix} \frac{\partial{\boldsymbol{a}}}{\partial{x}} & \frac{\partial{\boldsymbol{a}}}{\partial{y}} & \frac{\partial{\boldsymbol{a}}}{\partial{z}} \end{pmatrix}=\begin{pmatrix} \frac{\partial{a}_x}{\partial{x}} & \frac{\partial{a}_x}{\partial{y}} & \frac{\partial{a}_x}{\partial{z}} \\ \frac{\partial{a}_y}{\partial{x}} & \frac{\partial{a}_y}{\partial{y}} & \frac{\partial{a}_y}{\partial{z}} \\ \frac{\partial{a}_z}{\partial{x}} & \frac{\partial{a}_z}{\partial{y}} & \frac{\partial{a}_z}{\partial{z}} \end{pmatrix}</math>
ここで跡が発散そのものになっているので
:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
が成り立つ。
発散の物理的意味を考える。
:密度<math>\rho</math>が一定である流体の速度場<math>\boldsymbol{v}\in\mathbb{R}^3</math>に対し、微小直方体に出入りする流体の質量収支を考える。
:点<math>(x,y,z)</math>に於ける流速<math>\boldsymbol{v}(x,y,z)=(v_x,v_y,v_z)</math>、直方体の各辺の長さを<math>\delta x, \delta y, \delta z</math>とする。
:単位時間あたりに<math>yz</math>平面に平行な面を通過する流体の質量収支は流出量<math>-\rho v_x(x,y,z)\delta y\delta z</math>、流入量<math>\rho v_x(x+\delta x,y,z)\delta y\delta z</math>より
::<math>\rho(v_x(x+\delta x,y,z)-v_x(x,y,z))\delta y\delta z=\rho\frac{v_x(x+\delta x,y,z)-v_x(x,y,z)}{\delta x}\delta x\delta y\delta z</math>
:<math>\delta x\to0</math>の極限で
::<math>=\rho\frac{\partial{v_x}}{\partial{x}}dxdydz</math>
:他の面で考えると対称性から輪環の順に入れ替えた結果を得るので直方体全体では
::<math>\rho\left(\frac{\partial{v_x}}{\partial{x}}+\frac{\partial{v_y}}{\partial{y}}+\frac{\partial{v_z}}{\partial{z}}\right)dxdydz</math>
:よって単位体積当たりでは
::<math>\rho\nabla\cdot\boldsymbol{v}</math>
:を得る。
ここで質量を密度で割ると体積なので、<math>\nabla\cdot\boldsymbol{v}</math>は単位時間あたりの流体の体積の正味の流出率を表す。
この微小直方体の単位体積あたりで観測すると、発散が正であれば流体は膨脹して密度が下がり、負であれば圧縮されて密度が上がる。0であれば流体は膨脹も圧縮もしない。
発散が零であるベクトル場を'''非圧縮/湧出無し/管状/ソレノイダル ベクトル場'''(incompressible/solenoidal vector field)などと呼ぶ。
また、ベクトル場の発散を'''湧き出し'''(「沸き出し」とも書く)と呼ぶ場合もある。
ベクトル場の流線に沿う流れが流体の体積を保存する条件はベクトル場が非圧縮であることである。これを'''リウヴィルの定理'''という。これは多くの場合、[[解析力学]]のハミルトン形式で表示される。
位置ベクトル場<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>に対して<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}</math>を考える。
:<math>\frac{\partial}{\partial{x}}\frac{1}{\|\boldsymbol{r}\|^n}=\frac{\partial{\left(\frac{1}{\|\boldsymbol{r}\|^n}\right)}}{\partial{\|\boldsymbol{r}\|}}\frac{\partial{\|\boldsymbol{r}\|}}{\partial{x}}=-\frac{n}{\|\boldsymbol{r}\|^n+1}\frac{x}{\sqrt{x^2+y^2+z^2}}=-\frac{nx}{\|\boldsymbol{r}\|^{n+2}}</math>
<math>y, z</math>も同様なので
:<math>\nabla\frac{1}{\|\boldsymbol{r}\|^n}=-\frac{n\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+1}}</math>
よって発散のライプニッツ則から
:<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}=\left(\nabla\frac{1}{\|\boldsymbol{r}\|^n}\right)\cdot\boldsymbol{r}+\frac{1}{\|\boldsymbol{r}\|^n}\nabla\cdot\boldsymbol{r}=-\frac{n\boldsymbol{r}\cdot\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+2}}+\frac{1+1+1}{\|\boldsymbol{r}\|^n}=\frac{3-n}{\|\boldsymbol{r}\|^n}</math>
この結果から、<math>\boldsymbol{a}/\!\!/\boldsymbol{r}\land\|\boldsymbol{a}\|\propto \frac{1}{\|\boldsymbol{r}\|^2}\implies\nabla\cdot\boldsymbol{a}=0</math>(逆二乗則に従う場は非圧縮ベクトル場)が成り立つ。
ベクトル解析の黎明期では発散の逆符号で表される
:<math>\mathrm{conv}\,\boldsymbol{a}:=-\frac{\partial{a_x}}{\partial{x}} - \frac{\partial{a_y}}{\partial{y}} - \frac{\partial{a_z}}{\partial{z}}</math>
という量が用いられていた。これは'''吸い込み'''(convergence)と呼ばれる量である。
ベクトルが発明される以前、ベクトル演算に相当するものは[[多元数/四元数|四元数]]で記述されていた。純虚四元数同士の積をとると実部が現在で言う内積の-1倍、虚部が現在で言う外積に対応する。このことから、内積そのものである湧き出しではなく内積の-1倍である吸い込みが自然に出現する量として頻繁に扱われていたのである。
===回転===
回転運動は、以下の3つにより一意に定まる。
*回転軸の方向
*回転の速さ
*回転方向(軸に対して右回転か左回転か)
「回転方向」は暗黙の諒解として右手系の正の回転角で考える。すると、回転運動を表すのに必要な情報は「方向」と「速さ(=スカラー量)」のみとなる。
従って、'''任意の回転運動はベクトルで表示される'''(ベクトルの大きさは「回転の速さ」で定める)。このようなベクトルを'''角速度ベクトル'''という。
ベクトル場の'''回転'''(curl/rotation/rotor)を以下のように定義する。
:<math>\mathrm{curl} \, \boldsymbol{a} = \mathrm{rot} \, \boldsymbol{a} = \begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
<math>\mathrm{curl}</math>は理学系、<math>\mathrm{rot}</math>は工学系が好んで使用する。
<math>z</math>軸方向の成分について考える。
<math>z</math>軸方向の回転はフレミングの左手の法則から<math>xy</math>平面内の成分のみが寄与すると考えられる。<math>z</math>軸の正方向の回転を生むには、<math>x</math>軸方向の変化率を大きくして<math>y</math>軸方向の変化率を小さくすればよい。
ある軸方向の変化率とはその軸の変数に関する偏導関数のことであったので、回転のz成分を<math>\frac{\partial{X_y}}{\partial{x}}-\frac{\partial{X_x}}{\partial{y}}</math>とすれば満足する。
対称性より輪環の順で入れ替えても同様であるので、回転は上の式で表されるとわかる。
これはより厳密には後述の線積分を用いて説明することになるので、ここでは定性的な説明に留めた。
回転を用いた概念として、ファラデーの電磁誘導の法則が有名である。
:電場<math>\boldsymbol{E}</math>、磁束密度<math>\boldsymbol{B}</math>として
:<math>\mathrm{rot} \, \boldsymbol{E} = -\frac{\partial{\boldsymbol{B}}}{\partial{t}}</math>
流体の渦の記述にも応用されており、回転を'''渦度ベクトル'''とも呼ぶ。流体力学的な渦の定義は「速度場の回転」である。
回転が零ベクトルであるベクトル場を'''非回転的/渦無し/層状/ラメラー ベクトル場'''(irrotational/lamella vector field)などと呼ぶ。
勾配・発散と同様に空間偏微分演算子による表記を考える。
成分に着目すると外積の形式なので、
:<math>\mathrm{curl} \, \boldsymbol{a}= \nabla \times \boldsymbol{a}</math>
と表されることが判る。
ベクトル場はベクトル量であり、ナブラは便宜的にベクトル量と見做すことから、その外積である回転はベクトル量であることが見て取れる。
外積の性質から、回転は行列式
:<math>\det \begin{pmatrix} \boldsymbol{e}_x & \boldsymbol{e}_y & \boldsymbol{e}_z \\ \frac{\partial}{\partial{x}} & \frac{\partial}{\partial{y}} & \frac{\partial}{\partial{z}} \\ a_x & a_y & a_z \end{pmatrix}</math>
でも表示される。
回転に対しては以下が成り立つ。
#<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>(線型性)
#<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は外積の線型性より、後者は成分演算と勾配の定義より示される。
回転は常に角速度ベクトルと一致するとは限らない。そのため、必ずしも回転運動そのものを記述しない。
回転は、ヤコビ行列を用いると以下のように表される。
:<math>\mathrm{rot} \, \boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
:ここで<math>\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})</math>は反対称行列であり、<math>\mathrm{axl}</math>は反対称行列を軸ベクトルに移す写像である。
===ラプラシアン===
上で見てきた勾配・発散・回転はいずれも一階の偏微分作用素であった。
二階偏微分作用素のうち最もよく使われているのがスカラー場に対して勾配の発散をとる演算である。
:<math>\nabla\cdot(\nabla\varphi) = \mathrm{div}(\mathrm{grad}\,\varphi)</math>
ここで<math>(\nabla\cdot\nabla)\varphi</math>を計算してみると成分計算から上の<math>\nabla\cdot(\nabla\varphi)</math>に等しいことが容易に判る。則ち、発散作用素<math>\nabla\cdot\,\,</math>、勾配作用素<math>\nabla</math>、スカラー場<math>\varphi</math>の間に結合法則が成り立ってると見做せる。
そこで、<math>\nabla\cdot\nabla</math>を独立した演算子として考えることにする。
以下のように定義される演算子を'''ラプラス演算子'''(ラプラス作用素)という。
:<math>\text{∆}:=\nabla\cdot\nabla=\frac{\partial^2}{\partial{x}^2}+\frac{\partial^2}{\partial{y}^2}+\frac{\partial^2}{\partial{z}^2}</math>
二項目は[[w:記号の濫用]]により<math>\nabla^2</math>と書かれることもある。
但し、<math>\text{∆}</math>は通常のデルタ(Unicode文字名: GREEK CAPITAL LETTER DELTA, U+394)ではなく'''増分記号'''(Unicode文字名:INCREMENT, U+2206)である(が通常のデルタで書かれることが多い)。
ラプラス演算子を<math>C^2</math>級スカラー場に作用させる操作(及びその結果として得るスカラー場)を'''ラプラシアン'''(Laplacian)という。
:<math>\text{∆}\varphi=\frac{\partial^2{\varphi}}{\partial{x}^2}+\frac{\partial^2{\varphi}}{\partial{y}^2}+\frac{\partial^2{\varphi}}{\partial{z}^2}</math>
スカラー場のラプラシアンは各成分方向の曲率の和、すなわちスカラー場の各点に於ける突出・沈み込みの度合いを表す。
勾配・発散・回転・ラプラシアンを総称して'''空間微分'''と呼ぶ。
ラプラシアンは[[解析学基礎/偏微分方程式|偏微分方程式]]の記述に用いられている。
:'''ラプラス方程式'''・'''ポテンシャル方程式''':<math>\text{∆}\varphi=0</math>
:'''ポアソン方程式''':<math>\text{∆}\varphi=f</math>
:'''熱伝導方程式'''・'''拡散方程式''':<math>\text{∆}\psi=k\frac{\partial{\psi}}{\partial{t}}+g</math>
:'''波動方程式''':<math>\text{∆}\psi=\frac{1}{\nu^2}\frac{\partial^2{\psi}}{\partial{t}^2}</math>
:'''ヘルツホルム方程式''':<math>\text{∆}\varphi=-l^2\varphi</math>
ここで<math>\varphi=\varphi(x,y,z),\,f=f(x,y,z),\,\psi=\psi(x,y,z,t),\,k>0,\,g=g(x,y,z,t),\,\nu>0,\,l\in\mathbb{R}</math>である。
なお、ラプラス方程式の解を'''調和関数'''という。
<math>C^2</math>級ベクトル場のラプラシアンは以下のように定義される。
:<math>\text{∆}\boldsymbol{a}=\begin{pmatrix} \text{∆}a_x \\ \text{∆}a_y \\ \text{∆}a_z \end{pmatrix}</math>
ここでスカラー場と同様に考えて<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})</math>としたいところではあるが、これは一般には成り立たない。
実際には以下のように表示される。
:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})=\mathrm{grad}(\mathrm{div}\,\varphi)-\mathrm{rot}(\mathrm{rot}\,\varphi)</math>
*証明
:対称性より<math>x</math>成分のみ考えても輪環の順に入れ替えれば他の成分を得る。
::<math>\nabla\cdot\boldsymbol{a}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}</math>
:より
::<math>\{\nabla(\nabla\cdot\boldsymbol{a})\}_x=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}</math>
:また、
::<math>\nabla\times\boldsymbol{a}=\begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
:より
::<math>\{\nabla\times(\nabla\times\boldsymbol{a})\}_x=\frac{\partial}{\partial{y}}\left(\frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}\right)-\frac{\partial}{\partial{z}}\left(\frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}\right)</math>
::<math>=\frac{\partial^2{a_y}}{\partial{y}\partial{x}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{z}\partial{x}}-\frac{\partial^2{a_x}}{\partial{z}^2}</math>
:<math>\boldsymbol{a}\in{C^2}</math>より偏微分は可換(シュワルツの定理)なので、<math>\{\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})\}_x</math>を計算すると
::<math>\left(\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}\right)-\left(\frac{\partial^2{a_y}}{\partial{x}\partial{y}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}-\frac{\partial^2{a_x}}{\partial{z}^2}\right)</math>
::<math>=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_x}}{\partial
{y}^2}+\frac{\partial^2{a_x}}{\partial{z}^2}</math>
::<math>=\text{∆}a_x</math>//
ここから判るように、ベクトル場<math>\boldsymbol{a}</math>に対して<math>\text{∆}=\nabla(\nabla\cdot)</math>が成り立つ条件は<math>\nabla\times(\nabla\times\boldsymbol{a})=\boldsymbol{0}</math>である。<math>\boldsymbol{a}</math>が非回転ベクトル場であれば回転が零ベクトルなのでこの形を必ず満足する。但し、この形を満たすベクトル場が全て非回転的ベクトル場であるとは限らない。
則ち、外積の反復と同様に回転演算子<math>\nabla\times\,\,</math>の反復に対して結合法則は不成立である。
歴史的な四元数表記では発散の代わりに吸い込みが用いられていたことからラプラシアンも現在とは反対の符号で計算されていた。ラプラシアンはユークリッド空間に限らず定義可能であるが、その中でも特に重要なのは[[特殊相対論#マクスウェルの方程式|相対性理論]]で用いられる'''ダランベール演算子'''(ダランベルシアン、クアブラ、波動演算子)である。
:<math>\text{⧠}:=\frac{1}{\nu^2}\frac{\partial^2}{\partial{t^2}}-\text{∆}</math>
これは標準座標系で表されるミンコフスキー空間上のラプラシアンに相当する。<math>\text{∆}</math>は上で扱ってきた通常のラプラシアンのことである。
これを用いると波動方程式は<math>\text{⧠}\psi=0</math>というミンコフスキー空間上のラプラス方程式と解釈される。つまり、波動関数はミンコフスキー空間で見れば調和関数なのである。
また、[[w:クライン=ゴルドン方程式]]と呼ばれる偏微分方程式は
:<math>\text{⧠}\psi=-\mu^2\psi</math>
というミンコフスキー空間上のヘルツホルム方程式と解釈される。
===微分定理===
ここでは、ナブラに関する公式を見ていく。以下、シュワルツの定理が成り立っているものとする。また、成分計算をすればいいだけなので証明は省略する。
既に紹介したものを以下に並べる。
#勾配
#:<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>
#:<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(
#:<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>
#:<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>
#:<math>\frac{\partial{\varphi}}{\partial{\boldsymbol{e}}}=(\boldsymbol{e}\cdot\nabla)\varphi</math>
#:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
#発散
#:<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>
#:<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>
#:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
#回転
#:<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>
#:<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>
#:<math>\nabla\times\boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
#ラプラシアン
#:<math>\text{∆}\varphi=\nabla\cdot(\nabla\varphi)</math>
#:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})</math>
二つのベクトル場<math>\boldsymbol{a}, \boldsymbol{b}</math>の内積・外積に対してそれぞれ一階の空間微分を考えてみる。
<math>\boldsymbol{a}\cdot\boldsymbol{b}</math>はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\boldsymbol{a}\cdot\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}+(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}\times(\nabla\times\boldsymbol{b})+\boldsymbol{b}\times(\nabla\times\boldsymbol{a})</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\boldsymbol{a}\times\boldsymbol{b})=\boldsymbol{b}\cdot(\nabla\times\boldsymbol{a})-\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\nabla\times(\boldsymbol{a}\times\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}-(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}(\nabla\cdot\boldsymbol{b})-\boldsymbol{b}(\nabla\cdot\boldsymbol{a})</math>
次に、一階の空間微分の結果に対して更なる一階の空間微分を考えてみる。
スカラー場の勾配はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\varphi)=\text{∆}\varphi</math>
:<math>\nabla\times(\nabla\varphi)=\boldsymbol{0}</math>
ベクトル場の発散はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\nabla\cdot\boldsymbol{a})=\text{∆}\boldsymbol{a}+\nabla\times(\nabla\times\boldsymbol{a})</math>
ベクトル場の回転はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\times\boldsymbol{a})=0</math>
:<math>\nabla\times(\nabla\times\boldsymbol{a})=\nabla(\nabla\cdot\boldsymbol{a})-\text{∆}\boldsymbol{a}</math>
則ち、勾配・発散・回転はどの組み合わせでも交換法則が成り立たない。
一階の空間微分の結果に対してラプラシアンを考えてみる。
:<math>\text{∆}(\nabla\varphi)=\nabla(\text{∆}\varphi)</math>
:<math>\text{∆}(\nabla\cdot\boldsymbol{a})=\nabla\cdot(\text{∆}\boldsymbol{a})</math>
:<math>\text{∆}(\nabla\times\boldsymbol{a})=\nabla\times(\text{∆}\boldsymbol{a})</math>
ラプラシアンはスカラー性・ベクトル性を保存するので、演算が破綻する箇所はない。
則ち、ラプラシアンは勾配・発散・回転との組み合わせに対して交換法則が成り立つ。
:<math>\text{∆}\nabla=\nabla\text{∆},\quad\text{∆}(\nabla\cdot)=(\nabla\cdot)\text{∆},\quad\text{∆}(\nabla\times)=(\nabla\times)\text{∆}</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>及び<math>\nabla\times\boldsymbol{a}</math>の発散・回転は三重積の形であった。
スカラー三重積・ベクトル三重積にナブラを様々な組み合わせで入れてその結果がどうなるか見ていく。
:<math>\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\boldsymbol{a}\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すればいいので公式化する必要が無い。
:<math>\boldsymbol{a}\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>\boldsymbol{a}\times(\boldsymbol{b}\times\nabla)</math>
:<math>\nabla\cdot(\boldsymbol{a}\times\nabla)</math>
:<math>\nabla\times(\boldsymbol{a}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>\boldsymbol{a}\cdot(\nabla\times\nabla)</math>
:<math>\boldsymbol{a}\times(\nabla\times\nabla)</math>
:<math>\nabla\cdot(\nabla\times\nabla)</math>
:<math>\nabla\times(\nabla\times\nabla)</math>
は同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。<br>
また、三重積の公式はナブラを代入した時点で破綻する。
次に、スカラー四重積・ベクトル四重積に対しても同様のことを考える。
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\nabla\times\boldsymbol{a})\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すれば良いので公式化する必要が無い。
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\boldsymbol{c}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\boldsymbol{c}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\times(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>(\nabla\times\nabla)\cdot(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\nabla\times\nabla)\times(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\nabla)</math>
及びナブラを三個以上含むものは同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。
故に、ここで問題になるのは
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})</math>
の扱いである。
これらには以下の公式が成り立つ。
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})=\boldsymbol{a}\cdot\{\nabla\times(\boldsymbol{b}\times\boldsymbol{c})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})=[\{\boldsymbol{b}\cdot(\nabla\times\boldsymbol{c})\}-\{\boldsymbol{c}\cdot(\nabla\times\boldsymbol{b})\}]\boldsymbol{a}+{}^t\!\{\nabla\circledast(\boldsymbol{b}\times\boldsymbol{c})\}\boldsymbol{a}</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})=\boldsymbol{a}\cdot\{\nabla\times(\nabla\times\boldsymbol{b})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})={}^t\!\{\nabla\circledast(\nabla\times\boldsymbol{b})\}\boldsymbol{a}</math>
===ポテンシャル論===
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすスカラー場<math>\varphi\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0}</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を満たすならば<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>となるスカラー場<math>\varphi\in C^2</math>はどのようなときに存在するのであろうか?
ここで<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>は成分表示すれば
:<math>\begin{cases} \frac{\partial{a}_z}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}}=0 \\ \frac{\partial{a}_x}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}=0 \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}=0 \end{cases}</math>
という一階線型連立偏微分方程式となる。
この連立偏微分方程式は領域<math>D=\mathrm{dom}\,\boldsymbol{a}</math>上で解くことになるので、解が<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすかは領域<math>D</math>がどのような形状をしているかに依存する。
そして、その形状を具体的に与えるのが次の定理である。
{{定理|(ポアンカレの補題1)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0} \iff \exist \varphi\in C^2(D),\quad \mathrm{grad}\,\varphi=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が単連結であることである。
{{定理終わり}}
証明は後述する。
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''スカラーポテンシャル'''(scalar potential)といい、スカラーポテンシャルを有するベクトル場を'''保存的ベクトル場'''(保存場、conservative vector field)という。
保存的ベクトル場に対して実際にスカラーポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{grad}\,\varphi=\boldsymbol{a},\quad\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{\varphi}}{\partial{x}}=a_x \\ \frac{\partial{\varphi}}{\partial{y}}=a_y \\ \frac{\partial{\varphi}}{\partial{z}}=a_z \end{cases},\quad\begin{cases} \frac{\partial{a}_z}{\partial{y}}=\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a}_x}{\partial{z}}=\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}=\frac{\partial{a_x}}{\partial{y}} \end{cases}</math>
:<math>\frac{\partial{\varphi}}{\partial{x}}=a_x(x,y,z)</math>は直接積分形偏微分方程式なので両辺を<math>x</math>で偏積分して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z) dx+g(y,z)</math>・・・(1)
:これを<math>y</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{y}}=\frac{\partial}{\partial{y}}\int_m^x a_x(x,y,z)dx+\frac{\partial{g}}{\partial{y}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\int_m^x \frac{\partial{a_x}}{\partial{y}}dx+\frac{\partial{g}}{\partial{y}}</math>
:更に回転の条件から
::<math>=\int_m^x \frac{\partial{a_y}}{\partial{x}}dx+\frac{\partial{g}}{\partial{y}}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_y(x,y,z)-a_y(m,y,z)+\frac{\partial{g}}{\partial{y}}</math>
:これが<math>a_y(x,y,z)</math>に等しいので
::<math>\frac{\partial{g}}{\partial{y}}=a_y(m,y,z)</math>
:これは<math>g(y, z)</math>が<math>x</math>の関数でないことに適する。
:両辺を<math>y</math>で偏積分して
::<math>g(y, z)=\int_n^y a_y(m,y,z)dy+h(z)</math>
:これを(1)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+h(z)</math>・・・(2)
:これを<math>z</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{z}}=\frac{\partial}{\partial{z}}\left(\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy\right)+\frac{\partial{h}}{\partial{z}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\left(\int_m^x\frac{\partial{a_x(x,y,z)}}{\partial{z}}dx+\int_n^y\frac{\partial{a_y(m,y,z)}}{\partial{z}}dy\right)+\frac{dh}{dz}</math>
:更に回転の条件から
::<math>=\left(\int_m^x\frac{\partial{a_z(x,y,z)}}{\partial{x}}dx+\int_n^y\frac{\partial{a_z(m,y,z)}}{\partial{y}}dy\right)+\frac{dh}{dz}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_z(x,y,z)-a_z(m,y,z)+a_z(m,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
::<math>=a_z(x,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
:これが<math>a_z(x,y,z)</math>に等しいので
::<math>\frac{dh}{dz}=a_z(m,n,z)</math>
:これは<math>h(z)</math>が<math>x, y</math>の関数でないことに適する。
:両辺を<math>z</math>で常積分して
::<math>h(z)=\int_l^z a_z(m,n,z)dz+C</math>
:これを(2)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>//
ここで最後の積分定数<math>C</math>は勾配をとるときに消える。更に言うと、単連結領域では偏微分方程式の解の一意性よりスカラーポテンシャルは積分定数の違いを除いて一意に定まる。よって、スカラーポテンシャルは平行移動を同一視する同値類として与えられることになる。
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>を満たすベクトル場<math>\boldsymbol{A}\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{div}\,\boldsymbol{a}=0</math>を満たすならば<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>となるスカラー場<math>\boldsymbol{A}\in C^2</math>はどのようなときに存在するのであろうか?
これも同様に以下の定理で与えられる。
{{定理|(ポアンカレの補題2)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{div}\,\boldsymbol{a}=0 \iff \exist \boldsymbol{A}\in C^2(D),\quad \mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が'''可縮'''であることである。
{{定理終わり}}
証明は後述する。
ここで、集合が可縮とは「全体を1点に退化するような連続変形が可能である」ことを言う。可縮な集合は単連結である。可縮条件はより弱めることができるが、ホモトピーやコホモロジーの概念が必要である
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''ベクトルポテンシャル'''(vector potential)という。スカラーポテンシャルと異なり、「ベクトルポテンシャルを有するベクトル場」を指す特別な呼称は(数学界一般に認知されたものとしては)存在しない。「ソレノイダル場」などを用いる派閥もあるが、単に「発散が0であるベクトル場」を指す用法が強いのであまり広まっていない。
ベクトルポテンシャルを有するベクトル場に対して実際にベクトルポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a},\quad\mathrm{div}\,\boldsymbol{a}=0</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{A}_z}{\partial{y}}-\frac{\partial{A_y}}{\partial{z}}=a_x \\ \frac{\partial{A}_x}{\partial{z}}-\frac{\partial{A_z}}{\partial{x}}=a_y \\ \frac{\partial{A_y}}{\partial{x}}-\frac{\partial{A_x}}{\partial{y}}=a_z \end{cases},\quad \frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}} =0</math>
:第一式より
::<math>\frac{\partial{A_z}}{\partial{y}}=a_x+\frac{\partial{A_y}}{\partial{z}}</math>
:<math>y</math>で偏積分して
::<math>A_z = \int_n^y \left(a_x+\frac{\partial{A_y}}{\partial{z}}\right)dy+f(x,z)</math>
:ライプニッツの積分法則より
::<math>=\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)</math>・・・(3)
:第三式より
::<math>\frac{\partial{A_x}}{\partial{y}}=\frac{\partial{A_y}}{\partial{x}}-a_z</math>
:<math>y</math>で偏積分して
::<math>A_x=\int_n^y \left(\frac{\partial{A_y}}{\partial{x}}-a_z\right)dy+g(x, z)</math>
:ライプニッツの積分法則より
::<math>=\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)</math>
:これと(3)を第二式に代入して
::<math>a_y=\frac{\partial}{\partial{z}}\left(\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)\right)-\frac{\partial}{\partial{x}}\left(\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)\right)</math>
::<math>=\frac{\partial^2}{\partial{z}\partial{x}}\int_n^yA_ydy-\frac{\partial}{\partial{z}}\int_n^y a_z dy+\frac{\partial{g}}{\partial{z}}-\frac{\partial}{\partial{x}}\int_n^y a_x dy-\frac{\partial^2}{\partial{x}\partial{z}}\int_n^y A_y dy-\frac{\partial{f}}{\partial{x}}</math>
::<math>=\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}-\int_n^y \left(\frac{\partial{a_z}}{\partial{z}}+\frac{\partial{a_x}}{\partial{x}}\right)dy</math>
:よって
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=a_y+\int_n^y \left(\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_z}}{\partial{z}}\right) dy</math>・・・(4)
:この右辺を<math>h(x, y, z)</math>とおくと
::<math>\frac{\partial{h}}{\partial{y}}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}=0</math>
:なので<math>h(x,y,z)</math>は<math>y</math>に依存しない<math>h(x,z)</math>である。
:これは(4)の左辺が<math>y</math>に依存しないことと整合する。
:故に(4)は
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=h(x,z)</math>
:という二変数の偏微分方程式に落ちる。
:この偏微分方程式は例えば<math>f(x,z)=0, g(x,z)=\int_l^z h(x,z)dz</math>のような特殊解を持つ。
:このような特殊解によって構成された元の方程式の解を<math>\boldsymbol{A}_0</math>とする。
:一般解<math>\boldsymbol{A}</math>と特殊解との差を<math>\boldsymbol{B}</math>と置くとその回転は回転の線型性より<math>\boldsymbol{0}</math>なので
::<math>\begin{cases} \frac{\partial{B}_z}{\partial{y}}=\frac{\partial{B_y}}{\partial{z}} \\ \frac{\partial{B}_x}{\partial{z}}=\frac{\partial{B_z}}{\partial{x}} \\ \frac{\partial{B_y}}{\partial{x}}=\frac{\partial{B_x}}{\partial{y}} \end{cases}</math>
:同様にして第一式・第三式を<math>y</math>で偏積分して第二式に代入すると積分定数に関して
::<math>\frac{\partial{F(x,z)}}{\partial{x}}=\frac{\partial{G(x,z)}}{\partial{z}}</math>
:を得る。
:これは全微分方程式が完全微分方程式である条件なので、
::<math>\mathrm{grad}\,\Phi=\begin{pmatrix} F(x,z) \\ G(x,z) \end{pmatrix}</math>
:なるスカラー場<math>\Phi</math>が存在する。
:則ち、求めるベクトルポテンシャルは<math>\boldsymbol{A}=\boldsymbol{A}_0+\nabla\Phi</math>//
ここで勾配の項は回転をとるときに<math>\mathrm{rot}(\mathrm{grad}\,\Phi)=\boldsymbol{0}</math>より消える。スカラーポテンシャルと同様に自由度が残るので、ベクトルポテンシャルはその自由度を無視した同値類で与えられる。
ポアンカレの補題1, 2に於ける領域<math>D</math>は互いに素ではない複数の領域の和集合<math>\bigcup_i D_i</math>であっても良い。但しポテンシャル場<math>\mathrm{p}</math>は各領域<math>D_i</math>に対して区分的に定義され、このとき互いに重なった領域<math>D_i\cap D_j</math>では任意の点<math>\boldsymbol{x}\in D_i\cap D_j</math>に対して<math>\mathrm{p}_i(\boldsymbol{x})=\mathrm{p}_j(\boldsymbol{x})</math>であることが導かれる。
ポアンカレの補題が成り立たない状況を考えると、この「重なった領域での単射性」が崩れる。則ち、ポテンシャル場は多価関数として振舞うのである。
ポテンシャルに関連した定理として、以下が成り立つ。
{{定理|(ヘルツホルムの定理)}}
ポアンカレの補題が成り立つ状況下に於いて、<math>C^1</math>級ベクトル場<math>\boldsymbol{a}</math>は<math>C^2</math>級スカラー場の勾配と<math>C^2</math>級ベクトル場の回転に[[w:直和分解]]('''ヘルツホルム分解''')できる。
則ち、任意の<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\boldsymbol{a}=\mathrm{grad}\,\varphi-\mathrm{rot}\,\boldsymbol{A}</math>
を満たす<math>\varphi, \boldsymbol{A}\in C^2(D)</math>が存在する。
{{定理終わり}}
*証明
:ポアソン方程式<math>\text{∆}\varphi=f</math>に対してラプラシアンの定義から
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=f</math>
:ここで右辺のスカラー関数<math>f</math>が<math>\boldsymbol{a}</math>の発散で与えられている場合を考えると
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=\mathrm{div}\,\boldsymbol{a}</math>
:発散の線型性より
::<math>\mathrm{div}(\mathrm{grad}\,\varphi-\boldsymbol{a})=0</math>
:ここでポアンカレの補題2を用いて
::<math>\mathrm{grad}\,\varphi-\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>//
この<math>\varphi, \boldsymbol{A}</math>をそれぞれ広義のスカラーポテンシャル・ベクトルポテンシャルと呼ぶ場合がある。
広義ポテンシャルに対して
:<math>\begin{cases} \mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0} \\ \mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0 \\ \mathrm{div}\,\boldsymbol{a}=\text{∆}\varphi \\ \mathrm{rot}\,\boldsymbol{a}=\mathrm{grad}(\mathrm{div}\,\boldsymbol{A})-\text{∆}\boldsymbol{A} \end{cases}</math>
が成立する。
広義ポテンシャルの組み合わせは一つには定まらない。成分毎で考えるとヘルツホルムの定理は三元連立偏微分方程式を与えるが、勾配で消える定数項と回転で消える勾配項を補正すると右辺の自由度は広義ポテンシャル2つ+補正項2つで4である。そこで、応用上は<math>\mathrm{div}\,\boldsymbol{A}=0</math>という条件('''クーロンゲージ条件''')を追加で課して一意に定めることが多い(これにより<math>\mathrm{rot}\,\boldsymbol{a}=-\text{∆}\boldsymbol{A}</math>が成り立つので)。
例えば、[[連続体力学]]に於ける弾性体の運動方程式(ナビエ-コーシー方程式)
:<math>\rho\frac{\partial^2{\boldsymbol{u}}}{\partial{t}^2}=(\lambda+\mu)\mathrm{grad}(\mathrm{div}\,\boldsymbol{u})+\mu\text{∆}\boldsymbol{u}</math>
をヘルツホルム分解とクーロンゲージ条件により解析すると
:<math>\begin{cases} \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\varphi=(\lambda+2\mu)\text{∆}^2\varphi \\ \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\boldsymbol{A}=\mu\text{∆}^2\boldsymbol{A} \end{cases}</math>
を得る。
更に<math>e=\text{∆}\varphi,\quad\boldsymbol{\omega}=-\text{∆}\boldsymbol{A}</math>と置くとこの2つの式は波動方程式である。ここから導かれる波は前者が縦波で後者が横波であるが、<math>\lambda+2\mu>\mu</math>より前者の方が伝播速度が大きい。則ち、中学理科のP波・S波の性質を導くことができた。
ナビエ-コーシー方程式に於いて定常状態を考えると<math>t</math>-微分の項が0になるので、<math>\text{∆}^2\boldsymbol{u}=0</math>を得る。このような形の偏微分方程式を'''重調和偏微分方程式'''という。
*応用問題
*:真空のマクスウェル方程式<math> \begin{cases}
\nabla\times\boldsymbol{E}&=-\frac{\partial{\boldsymbol{B}}}{\partial{t}}\\
\nabla\times\boldsymbol{H}&=\frac{\partial{\boldsymbol{D}}}{\partial{t}}\\
\nabla\cdot\boldsymbol{D}&=0\\
\nabla\cdot\boldsymbol{B}&=0\\
\end{cases}</math>と構成方程式<math>\begin{cases} \boldsymbol{D}=\varepsilon_0\boldsymbol{E} \\ \boldsymbol{B}=\mu_0\boldsymbol{H}\end{cases}</math>から電磁波の波動方程式<math>\begin{cases} \text{∆}\boldsymbol{E}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{E}}}{\partial{t}^2} \\ \text{∆}\boldsymbol{H}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{H}}}{\partial{t}^2} \end{cases}</math>及び光速<math>c=\frac{1}{\sqrt{\varepsilon_0\mu_0}}</math>を導け。
==空間積分==
ここでは三次元ユークリッド空間で考える。
===線積分===
偏積分
:<math>\int_a^b f(x,y) dx := \lim_{n \to \infty} \sum_{k=1}^{n} f(x_k,y) \Delta x</math>(<math>\Delta x = \frac{b-a}{n}, x_k = a + k\Delta x</math>)
は<math>xyz</math>空間を<math>y</math>を固定した平面で切った断面に於ける曲線<math>z=f(x, y)</math>と<math>x</math>軸、直線<math>x=a, x=b</math>の囲む符号付き面積であった。
このとき積分変数を各点で見ると<math>x</math>軸という直線上を<math>a\to b</math>と単調に進むことになるが、これを<math>xyz</math>空間の任意の曲線<math>C</math>に拡張することを考える。
三次元空間の曲線をベクトル表示すると
:<math>\boldsymbol{r}(t)=\begin{pmatrix} x(t) \\ y(t) \\ z(t) \end{pmatrix}\quad t\in [\alpha, \beta]</math>
であり、被積分関数はこの曲線上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
偏積分の<math>dx</math>は「<math>x</math>軸上の微小変位」であったが、<math>t</math>が単調なとき曲線に沿った微小変位は曲線上の移動距離、則ち弧長の微小量と考えられるので線素を用いて
:<math>dl=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
これらを総合すると、<math>C</math>に沿った積分というものは曲線のパラメータを用いて
:<math>\int_\alpha^\beta \varphi(\boldsymbol{r}(t))\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>C</math>に沿った'''線積分'''<sup>※</sup>(line integral)という。また、<math>C</math>を'''積分経路'''(積分路、path)という。
<small>※量子力学の[[量子力学#経路積分法|経路積分]](path integral)とは異なる概念である。</small>
スカラー場の線積分は
:<math>\int_C \varphi dl</math>
のように略記される。
特に積分経路が閉曲線('''閉経路''')である場合は
:<math>\oint_C \varphi dl</math>
のように書き、これを<math>C</math>に沿った'''周回/閉路 積分'''(closed line integral)という。
1の線積分<math>\int_C dl</math>は弧長に等しい。
<math>\varphi(\boldsymbol{r})</math>の<math>C</math>の端点に於ける値の差を考える。
<math>t\in[\alpha,\beta]</math>を各<math>t_i</math>に等分割したとき、スカラー関数のテイラー展開より
:<math>\varphi(\boldsymbol{r}(t_i))-\varphi(\boldsymbol{r}(t_{i-1}))=\nabla\varphi(\boldsymbol{r}_{t_i-1})\cdot d\boldsymbol{r}\big|_{t=t_i}+O\left(\left\|d\boldsymbol{r}\big|_{t=t_i}\right\|\right)</math>
なので
:<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))\fallingdotseq \sum_{i=1}^n \nabla\varphi(\boldsymbol{r}(t_{i-1}))\cdot d\boldsymbol{r}\big|_{t=t_i}</math>
右辺で分割数<math>n</math>を無限大に飛ばした極限は区分求積法より
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r}</math>
則ち、曲線<math>C</math>に沿った微分積分学の基本定理
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r} = \varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>
を得る。
これは一変数積分の<math>\int_a^b \frac{df}{dx}dx=f(b)-f(a)</math>に対応し、これは常積分に関する微分積分学の基本定理の別表現である。
左辺をスカラー場の線積分と同様に<math>\int_C \nabla\varphi\cdot d\boldsymbol{r}</math>と書くことにする。
ここで<math>\nabla\varphi</math>を一般のベクトル場<math>\boldsymbol{a}</math>に拡張して同様に
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}</math>
を考えてみたい。
ここで<math>d\boldsymbol{r}</math>は<math>\boldsymbol{r}</math>の全微分と解釈され、一変数関数なので
:<math>d\boldsymbol{r}=\frac{d\boldsymbol{r}}{dt}dt</math>
則ち、
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}=\int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\cdot\frac{d\boldsymbol{r}}{dt}dt</math>
という曲線のパラメータに関する積分に帰着された。
これをベクトル場<math>\boldsymbol{a}</math>の<math>C</math>に沿った'''線積分'''という。
<math>\frac{d\boldsymbol{r}}{dt}</math>は<math>C</math>の接線なので<math>\boldsymbol{a}(\boldsymbol{r})\cdot\frac{d\boldsymbol{r}}{dt}</math>は<math>\boldsymbol{a}</math>から<math>C</math>の接線に沿う沿流成分を取り出していることになる。
このことから、ベクトル場の線積分を特に'''接線積分'''(integral of tangential component)ということがある。
また、<math>d\boldsymbol{r}</math>のノルムを考えてみると
:<math>\|d\boldsymbol{r}\|=\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt=dl</math>
より線素に一致する。
このことから、<math>d\boldsymbol{r}</math>を'''線素ベクトル'''と呼び、<math>d\boldsymbol{l}</math>とも書く。
線素ベクトルは曲線上の微小変位を表すので座標軸上の微小変位の重ね合わせと考えれば
:<math>d\boldsymbol{l}=\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
よって接線積分は形式的に
:<math>\int_C (a_xdx+a_ydy+a_zdz)</math>
とも書かれる。
更に、弧長パラメトライズされている場合は接ベクトルを用いて
:<math>d\boldsymbol{l}=\boldsymbol{t}ds</math>
とも表せる。
接線積分で定義される概念としては、仕事が有名である。
:物体を経路<math>C</math>に沿って力<math>\boldsymbol{F}</math>で運んだときの仕事は摩擦や空気抵抗を無視すると
::<math>W=\int_C \boldsymbol{F}\cdot d\boldsymbol{r}</math>
また、アンペールの法則も線積分で示される。
:閉経路<math>C</math>で囲まれた領域を貫く電流の大きさ<math>I</math>とその電流が生む磁場<math>\boldsymbol{H}</math>に対して
::<math>\oint_C \boldsymbol{H}\cdot d\boldsymbol{l}=I</math>
更に、以下のような概念も定義されている。
:流体の速度場<math>\boldsymbol{v}</math>の循環は
::<math>\Gamma(C)=\oint_C \boldsymbol{v}\cdot d\boldsymbol{l}</math>
*応用問題
**運ばれる物体の質量を<math>m</math>としたとき、仕事の定義とニュートンの運動方程式<math>m\frac{d^2\boldsymbol{r}}{dt^2}=\boldsymbol{F}</math>を用いて運動エネルギーに関するエネルギーの原理<math>W=\frac{1}{2}mv^2-\frac{1}{2}mv_0^2</math>を証明せよ。
<math>C</math>が正の向きにパラメトライズされたとき、負の向きにパラメトライズされた曲線を<math>-C</math>と表した。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の始点が一致するとき、これを一つの曲線と見做して曲線の和
:<math>C_1+C_2</math>
が定義される。
これを'''区分的に定義された曲線'''という。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の終点が一致するとき、<math>C_1</math>を始点とすると曲線の差は
:<math>C_1-C_2=C_1+(-C_2)</math>
で定義される。
<math>C</math>が'''区分的に滑らか'''であるとは、<math>C</math>が有限個の滑らかな曲線の和であることである。
これらを踏まえると、線積分には以下の性質が成り立つ。
#スカラー場
#:<math>\int_C (k\varphi+l\psi) dl=k\int_C \varphi dl + l \int_C \psi dl</math>
#:<math>\int_{-C}\varphi dl = -\int_C \varphi dl</math>
#:<math>\int_{C_1+C_2}\varphi dl = \int_{C_1}\varphi dl + \int_{C_2}\varphi dl</math>
#ベクトル場
#:<math>\int_C (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{l}=k\int_C \boldsymbol{a}\cdot d\boldsymbol{l}+l\int_C \boldsymbol{b}\cdot d\boldsymbol{l}</math>
#:<math>\int_{-C}\boldsymbol{a}\cdot d\boldsymbol{l} = -\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>
#:<math>\int_{C_1+C_2}\boldsymbol{a}\cdot d\boldsymbol{l} = \int_{C_1}\boldsymbol{a}\cdot d\boldsymbol{l} + \int_{C_2}\boldsymbol{a}\cdot d\boldsymbol{l}</math>
1番目の性質は線型性である。2番目の性質から、パラメータの変数変換('''再パラメトライズ''')が向き付けを保つときに線積分の値が保存されることが判る。
保存的ベクトル場に対する線積分<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>はスカラーポテンシャル<math>\varphi</math>を用いて<math>\int_C \nabla\varphi\cdot d\boldsymbol{l}</math>と書けるので微分積分学の基本定理より<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>に等しい。
ここで<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>は曲線の端点にのみ依存し形状には依存しない。
そのため、'''線積分の値が積分経路に依存しない必要十分条件はベクトル場が保存的であること'''である。
ここで閉曲線である場合を考えると
:<math>\boldsymbol{r}(\alpha)=\boldsymbol{r}(\beta)</math>
より
:<math>\varphi(\boldsymbol{r}(\alpha))=\varphi(\boldsymbol{r}(\beta))</math>
なので
:<math>\oint_C \nabla\varphi\cdot d\boldsymbol{l}=0</math>
である。
逆に言うと、'''周回積分が0でない閉経路をとれるとき<math>\varphi</math>は<math>\boldsymbol{a}</math>のスカラーポテンシャルではない'''。
この事実は偏微分方程式を解いて求めたスカラーポテンシャルが実際にポテンシャルであるかどうかの確認に用いられる。
なお、先程求めたスカラーポテンシャルの一般式
:<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>
は線積分で表される。
具体的には、積分経路を<math>\gamma:(m,n,l)\to(m,n,z)\to(m,y,z)\to(x,y,z)</math>という3つの線分の和としてとれば
:<math>\varphi=\int_\gamma \boldsymbol{a}\cdot d\boldsymbol{l}+C</math>
である。
ここでスカラーポテンシャルとは勾配方程式
:<math>\nabla\varphi=\boldsymbol{a}</math>
の解だったので、'''線積分と勾配は逆演算'''である。
<math>\nabla\varphi\cdot d\boldsymbol{l}=d\varphi</math>より、スカラーポテンシャルの存在と完全微分方程式の対応がここからも得られる。また、完全微分方程式<math>d\varphi=0</math>の解は曲線を与えることも容易に判る。
仕事が線積分で定義されるという話をしたが、エネルギーの原理より力場がスカラーポテンシャルを有する(保存場)場合はエネルギー変化が移動経路に依存しないので力学的エネルギー保存法則が成り立つ。これが高校物理で扱った「保存力なら力学エネルギーが保存する」ことの正式な表現である。
ベクトル場の線積分はベクトル場と線素ベクトルの内積をとって積分していたが、外積をとって積分することもできる。
具体的には、
:<math>\boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} a_ydz-a_zdy \\ a_zdx-a_xdz \\ a_xdy-a_ydx \end{pmatrix}</math>
より
:<math>\int_C \boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} \int_C (a_ydz-a_zdy) \\ \int_C (a_zdx-a_xdz) \\ \int_C (a_xdy-a_ydx) \end{pmatrix}</math>
:<math>=\begin{pmatrix} \int_\alpha^\beta \left\{ a_y(\boldsymbol{r}(t))\frac{dz}{dt}-a_z(\boldsymbol{r}(t))\frac{dy}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_z(\boldsymbol{r}(t))\frac{dx}{dt}-a_x(\boldsymbol{r}(t))\frac{dz}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_x(\boldsymbol{r}(t))\frac{dy}{dt}-a_y(\boldsymbol{r}(t))\frac{dx}{dt} \right\}dt \end{pmatrix}</math>
これは物理学的にはビオ・サヴァールの法則の記述に用いられている。
:真空中で経路<math>C</math>を正の向きに流れる強さ<math>I</math>の定常電流・<math>C</math>上にない点<math>\mathrm{P}</math>・<math>C</math>上の点<math>\mathrm{Q}</math>に対し、<math>C</math>全体で生じる磁束密度<math>\boldsymbol{B}</math>の<math>\mathrm{P}</math>での値は真空の透磁率<math>\mu_0</math>として
::<math>\boldsymbol{B}(\mathrm{P})=\frac{\mu_0 I}{4\pi}\int_C \frac{\overrightarrow{\mathrm{PQ}}\times d\boldsymbol{l}}{\|\overrightarrow{\mathrm{PQ}}\|^3}</math>
応用例は乏しいが、スカラー場の線素ベクトルに関する積分、ベクトル場の線素に関する積分も同様に定義される。
:<math>\int_C \varphi d\boldsymbol{l} = \int_\alpha^\beta \varphi(\boldsymbol{r}(t))\frac{d\boldsymbol{r}}{dt}dt</math>
:<math>\int_C \boldsymbol{a} dl = \int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt</math>
これらはベクトル値である。
積分経路を流線上にとると、流線の定義から<math>d\boldsymbol{r}/\!\!/\boldsymbol{a}(\boldsymbol{r})</math>則ち一次従属なので、<math>d\boldsymbol{r}=k\boldsymbol{a}(\boldsymbol{r})</math>と書ける。
よって線積分の被積分関数は<math>\boldsymbol{a} \cdot d\boldsymbol{r} = k\|\boldsymbol{a}\|^2</math>となり、積分値が最大化される他、ベクトル場の沿流方向成分を抽出できる。実際に計算する際は、<math>\int_{\mathrm{streamline}} k\|\boldsymbol{a}\|^2</math>とは書かず、<math>\int_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>と書くのが望ましい(積分記号と積分微小要素はセットのため)。
流線が閉曲線である場合を考えると、<math>\oint_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>は閉曲線の正の向きで正、負の向きで負となるので0にはならない。そのため、流線が閉曲線であるベクトル場はスカラーポテンシャルを持たない。
===面積分===
===体積分===
===積分定理===
==発展事項==
{{節stub}}
{{Advanced|多様体論}}
{{Advanced|微分幾何学}}
{{Advanced|積分幾何学}}
ここではベクトル解析の発展編及び微分幾何学の基礎編として、「ユークリッド空間の部分多様体上の微分幾何学」を扱う。言うなれば「<math>n</math>次元版のベクトル解析学」である。
===体積分再考===
体積分は先程「<math>\mathbb{R}^3</math>上の閉立体<math>V</math>」上で考えたが、実はここには線積分・面積分との大きな非対称性がある。
線積分は「曲線」、面積分は「曲面」を積分領域としたが、先程定義した体積分の積分領域は「平坦な立体」なのである(二次元で例えば楕円領域<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}\leq1</math>は境界こそ"曲線"だが空間そのものは<math>\mathbb{R}^2</math>という"平面"であることと同じ)。
1次元の曲がった空間である曲線<math>M^1:\boldsymbol{r}=\boldsymbol{r}(s)</math>が<math>\mathbb{R}^2</math>内、2次元の曲がった空間である曲面<math>M^2:\boldsymbol{r}=\boldsymbol{r}(s, t)</math>が<math>\mathbb{R}^3</math>内に存在するように、3次元の曲がった空間である曲立体<math>M^3:\boldsymbol{r}=\boldsymbol{r}(s, t, u)</math>は<math>\mathbb{R}^4</math>内に存在すると考えるのが自然である。ここで一般に<math>M^n\subset\mathbb{R}^{n+1}</math>が成り立つと予想され、この関係を「<math>M^n</math>の<math>\mathbb{R}^{n+1}</math>への'''埋め込み'''」と呼ぶことにする。
線積分を<math>C=M^1</math>、面積分を<math>S=M^2</math>で定義したように、体積分を<math>M^3</math>で定義することを考える。
媒介変数空間<math>\begin{pmatrix} s \\ t \\ u \end{pmatrix} \in V \subset\mathbb{R^3}</math>上の微小変化を考えると全微分を用いて
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds+\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
よって<math>V</math>上の微小立方体<math>dsdtdu</math>は3ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds,\quad\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt,\quad\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行六面体へ移される。
体素はこの微小平行六面体の体積と考えられるが、<math>\boldsymbol{r}\in\mathbb{R}^4</math>より当然この3ベクトルは4項ベクトルなので、'''外積を含んでいるスカラー三重積は使えない'''。
全微分を一次変換表記すると
:<math>d\boldsymbol{r}=\begin{pmatrix} \frac{\partial{\boldsymbol{r}}}{\partial{s}} & \frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\begin{pmatrix} \frac{\partial{x}}{\partial{s}} & \frac{\partial{x}}{\partial{t}} & \frac{\partial{x}}{\partial{u}} \\ \frac{\partial{y}}{\partial{s}} & \frac{\partial{y}}{\partial{t}} & \frac{\partial{y}}{\partial{u}} \\ \frac{\partial{z}}{\partial{s}} & \frac{\partial{z}}{\partial{t}} & \frac{\partial{z}}{\partial{u}} \\ \frac{\partial{w}}{\partial{s}} & \frac{\partial{w}}{\partial{t}} & \frac{\partial{w}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
ここでヤコビ行列は<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\in\mathbb{R}^{4\times3}</math>であって'''正方行列でないので行列式も求まらない'''。
そこで、[[線型代数学続論/種々の行列#随伴行列|グラム行列]]を利用することを考える。
'''グラム行列は必ず半正定値行列'''なので行列式は非負であり、平方根をとれる。
そのため、<math>\mathbf{G}:=\left(\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\right)^*\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>として<math>\sqrt{\det\mathbf{G}}</math>を体積拡大率とする。
これは正方行列ならヤコビアンの絶対値に一致する。
{{NavTop|title=補足:体積拡大率に一致する証明}}
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>の列ベクトルにグラム=シュミットの直交化法を適用すると[[線型代数学続論/行列分解|QR分解]]によって
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}=\mathbf{QR}\quad (\mathbf{Q}\in\mathbb{R}^{4\times3}, \mathbf{R}\in\mathbb{R}^{3\times3})</math>
よって
:<math>\mathbf{G}=(\mathbf{QR})^*\mathbf{QR}</math>
:<math>=\mathbf{R}^*\mathbf{Q}^*\mathbf{Q}\mathbf{R}</math>
:<math>=\mathbf{R}^*\mathbf{E}_3\mathbf{R}</math>(<math>\because\mathbf{Q}</math>は列ユニタリ行列)
:<math>=\mathbf{R}^*\mathbf{R}</math>
:<math>\therefore \sqrt{\det\mathbf{G}}=\sqrt{\det\left( \mathbf{R}^*\mathbf{R} \right)}=\sqrt{\left(\det\mathbf{R}\right)^2}=|\det\mathbf{R}|</math>
<math>\mathbf{Q}</math>は列ユニタリ行列なのでその一次変換は等長変換であり、全微分による拡大率は<math>\mathbf{R}</math>による拡大率と一致する。<br/>
則ち、<math>\sqrt{\det\mathbf{G}}</math>を拡大率としてとれる。//
{{NavBottom}}
よって体積分は
:<math>\iiint_{M^3} f(\boldsymbol{r})dM^3 = \iiint_{V} f(\boldsymbol{r}(s, t, u))\sqrt{\det\mathbf{G}}\,dsdtdu</math>
ここから、適切な媒介変数表示が存在するならば<math>M^n</math>上での体積分の計算に<math>\mathbb{R}^{n+1}\setminus M^n</math>の情報は入ってこず、<math>M^n</math>の情報のみで計算されると予想される。
実際、<math>M^n</math>に適切な媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})\quad(\boldsymbol{p}\in\mathbb{R}^n)</math>が存在するとき、全微分による一次変換の拡大率は同様にグラム行列式の平方根で与えられるので体積素は<math>dM^n = \sqrt{\det\mathbf{G}} \prod_{k=1}^{n}d\boldsymbol{p}_k</math>と書け、これは正しい。
なお、二次元の場合を考えると<math>\mathbf{G}=\mathbf{K}</math>より<math>dM^2=dS</math>であり、面素に一致する。一次元の場合を考えると<math>\mathbf{G}=\|d\boldsymbol{r}\|^2</math>より<math>dM^1=dl</math>であり、線素に一致する。
実は、体素だけでなく一般に角度や長さといった幾何学的な量は埋め込み先である<math>\mathbb{R}^{n+1}</math>の情報を全く必要とせず、<math>M^n</math>の情報だけで構成できることが知られている。このことは微分幾何学のうち[[w:リーマン幾何学|リーマン幾何学]]と呼ばれる分野で詳しく扱われる。
ここまで<math>M^n</math>を適切な媒介変数<math>\boldsymbol{p}\in\mathbb{R}^n</math>で表すことを強調してきたが、媒介変数表示を考えるということは<math>M^n</math>から媒介変数空間<math>U\subset\mathbb{R}^n</math>への射影<math>\pi:M^n\to U</math>を考えるということである。
ここで、この<math>\pi</math>が全単射ならば逆向きの射影<math>\pi^{-1}:U\to M^n</math>が存在してそれが媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})</math>となるわけであるが、これは以下のようにも捉えられる。
:<math>\pi</math>によって射影した平坦な空間で座標を設定すると、'''適切な逆変換<sup>※</sup>によって曲がった空間<math>M^n</math>上に(局所)座標系を与えることができる'''。
つまり、体積分を媒介変数空間に置換積分するということは、逆に体積分の元の表示が「<math>M^n</math>上の局所座標系に於ける積分」であることを示している。
※この適切な逆変換が存在する条件は'''陰関数定理そのもの'''である。
ここで、適切な媒介変数表示が存在するよう<math>M^n</math>に制限を課したものが、以下で扱う'''多様体'''である。
===多様体===
===微分形式===
[[線型代数学続論/外積代数]]も参照。
===リーマン計量===
===テンソル解析===
[[線型代数学続論/テンソル代数]]も参照。
===複素ベクトル解析===
[[複素解析学]]も参照。
{{DEFAULTSORT:へくとるかいせき}}
[[Category:解析学]]
[[Category:微分積分学]]
[[Category:ベクトル解析|かいせきかくきそ]]
s0lmhwy0c4e32x9h7uq4sb47zt89s5z
304818
304817
2026-10-17T15:38:25Z
~2026-55692-88
92812
/* 面積分 */
304818
wikitext
text/x-wiki
{{Pathnav|数学|解析学|解析学基礎|frame=1}}
{{wikipedia|ベクトル解析}}
ここでは、ベクトル解析について解説する。[[物理数学I ベクトル解析]]も参照。
==前提知識==
ここでは、実数のみで考える。
===ベクトル===
[[高等学校数学C/ベクトル]]、[[線型代数学/ベクトル]]、[[解析学基礎/ベクトル]]などを参照。本項では、矢印を付した表記(<math>\vec{a}</math>など)と太字斜体による表記(<math>\boldsymbol{x}</math>など)を混用する。
===行列===
[[高等学校数学C/数学的な表現の工夫]]及び[[線形代数学]]・[[線型代数学続論]]の各ページを参照。本項では大文字の太字立体(<math>\mathbf{A}</math>など)で表記する。
===多変数解析===
[[解析学基礎/多変数関数の微積分]]を参照。
===領域===
<math>D\subset\mathbb{R}^n</math>と点<math>\boldsymbol{a}\in D</math>(位置ベクトル表記なので太文字斜体)に対し、集合<math>B_\varepsilon(\boldsymbol{a}) := \{ \boldsymbol{x} \in D \mid \| \boldsymbol{x} - \boldsymbol{a} \|<\varepsilon \}</math>を点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開球'''という。不等号を<math>\leqq</math>に変えたときは開区間↔閉区間と同様に'''閉球'''と呼ぶ。このとき、<math>D</math>のように<math>\mathbb{R}^n</math>の部分集合であって<math>\varepsilon</math>-開球を含むものを点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開近傍'''と呼ぶ。閉球を含むときは同様に'''閉近傍'''と呼ぶ。
<math>\forall \boldsymbol{a} \in U, \exist \varepsilon>0, B_\varepsilon(\boldsymbol{a})\subset U</math>を満たす<math>U\subset\mathbb{R}^n</math>を'''開集合'''と呼び、<math>V=\mathbb{R}^n\setminus U</math>を'''閉集合'''と呼ぶ。
注意点として、開集合と閉集合は排反ではない。則ち「開集合且つ閉集合」である集合が存在し(例えば<math>\mathbb{R}, \varnothing</math>)、「開集合でも閉集合でもない」集合も存在する(例えば<math>[0, 1)</math>)。
<math>M\subset\mathbb{R}^n</math>を含む最小の閉集合を<math>M</math>の'''閉包'''と呼び、<math>M^-, \bar{M}, \mathrm{Cl}(M)</math>などと表す。例えば有理数の稠密性より<math>\mathbb{Q}^-=\mathbb{R}</math>である。
閉包の性質として「閉包=集合の内部と境界の和集合(<math>M^- = \mathrm{Int}(M) \cup \partial{M}</math>)」がある。
集合<math>S\subset\mathbb{R}^n</math>に対して以下を満たす<math>\mathbb{R}^n</math>上開集合の組<math>(G_1, G_2)</math>が'''とれない'''とき、
#<math>G_1 \cap S = \varnothing \land G_2 \cap S = \varnothing</math>
#<math>S = (G_1 \cap S) \sqcup (G_2 \cap S)</math>
「<math>S</math>は'''連結'''である」または「<math>S</math>は'''連結集合'''」という(但し、<math>\sqcup</math>は[[w:非交和|非交和]])。
空でない開連結集合を'''領域'''という。
実は、高校数学や1年次の解析学で扱ってきた「領域」はこの定義を満たしていないことが多かった。これは、「領域」の歴史的な用法では「条件の解集合」という意味であって開性や連結性を要求しなかったためである。しかし、本項を含めた以降に登場する数学ではこの定義を満たしていることが前提条件となる。なお、ややこしいことに「積分領域」は従来通り「その上で積分を行う集合」という緩い意味で使われることが多いので、区別が必要である。
===右手系===
三次元空間の正規直交基底を<math>(\boldsymbol{e}_1, \boldsymbol{e}_2, \boldsymbol{e}_3)</math>と置く。螺子を<math>\boldsymbol{e}_1\to\boldsymbol{e}_2</math>の向きに回すと<math>\boldsymbol{e}_3</math>の正方向に進むように3つの軸をとった系を'''右手系'''という。負方向に進むようにとったものを'''左手系'''という。数学・物理に限らず理数系の約束事として、'''三次元空間は必ず右手系で考える'''という暗黙の了解が存在するので覚えておこう。
右手系・左手系は基底の一部または全ての符号を反転することで変換することができる。一つだけを反転する場合は'''鏡像変換'''、二つだけを反転する場合は'''半回転'''、全てを反転する場合は'''空間反転'''と呼ぶ。
外積の結果として得るベクトルは右手系・左手系のどちらを考えるかで向きが変わる。このように、右手系↔左手系の変換で向きが変わるベクトルを'''軸性ベクトル'''という。
系の取り方で向きが変わるということは基底の係数である'''成分は不変量'''である。つまり、観測者の動きにベクトルが追従し、このベクトルは「物理的な実体を有しているのではなく計算の都合上向きが定められた便宜的な(=観測者が勝手に決めた)ベクトル」ということである。そのため、軸性ベクトルは'''擬ベクトル'''(シュードベクトル)とも呼ばれる。
位置や速度、加速度のような右手系・左手系のどちらを考えても同じ向きを向くベクトルを'''極性ベクトル'''という。座標系を取り換えても向きが維持されるため'''成分は座標変換に応じて変化する'''。これは、「観測の仕方によって起こる現象は変わらない」ということである。つまり擬ベクトルに対し、極性ベクトルは'''物理的実体を有するベクトル'''である。
偶奇と同じように軸性・極性にも外積を通じた相互関係が存在する。
:(軸性)×(軸性)=(軸性)
:(軸性)×(極性)=(極性)
:(極性)×(極性)=(軸性)
==基礎事項==
===ベクトル関数===
関数<math>\boldsymbol{f} (x) = \sum_{i} f_i(x) \boldsymbol{e}_i</math>を'''ベクトル(値)関数'''(vector-valued function, vector function)という。
ただし、各<math>\boldsymbol{e}_i</math>は各座標軸方向の単位ベクトルであり、<math>\boldsymbol{f}(x)</math>の定義域は各<math>f_i(x)</math>の定義域の積集合である。
ベクトルの演算が成分ごとの演算結果を並べたベクトルで定義されたように、ベクトル関数の演算は(結果となる値が存在するならば)各成分の演算結果を並べたベクトルに等しい。これはベクトルの線型性による。
例えば、<math>\boldsymbol{f}(x) = \begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>の極限は、
:<math>\lim_{x\to0} \boldsymbol{f}(x) = \begin{pmatrix} \lim_{x\to0} \cos x \\ \lim_{x\to0} \sin x \end{pmatrix}</math> (<math>\because</math>線型性)
:<math>=\begin{pmatrix} 1 \\ 0 \end{pmatrix}</math>
:<math>=\boldsymbol{e}_x</math>
と求まる。
このとき、<math>\boldsymbol{e}_x</math>を<math>\begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>に於ける'''極限ベクトル'''という。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で連続であるとは<math>\lim_{x\to\alpha}\boldsymbol{f}(x)=\boldsymbol{f}(\alpha)</math>が成立することであり、区間<math>I</math>で連続であるとは<math>\forall \alpha \in I</math>で連続であることである。
また、ベクトル関数の導関数<math>\boldsymbol{f}'(x)</math>は
:<math>\frac{d}{dx} \boldsymbol{f} (x) = \frac{d}{dx} \left( \sum_i f_i(x) \boldsymbol{e}_i \right)</math>
:<math>= \sum_i \left( \frac{d}{dx} f_i (x) \boldsymbol{e}_i \right)</math>(<math>\because</math>線型性)
:<math>= \begin{pmatrix} f'_1(x) \\ f'_2(x) \\ \vdots \\ f'_i(x) \\ \vdots \end{pmatrix}</math>
である。
この結果は、ベクトル関数に於ける導関数の正式な定義 <math>\lim_{h\to0} \frac{\boldsymbol{f}(x+h) - \boldsymbol{f}(x)}{h}</math>からも導かれる。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で微分可能であるとは極限値<math>\boldsymbol{f}'(\alpha)=\lim_{x\to\alpha}\frac{\boldsymbol{f}(x)-\boldsymbol{f}(\alpha)}{x-\alpha}</math>が存在することであり、区間<math>I</math>で微分可能であるとは<math>\forall \alpha \in I</math>で微分可能であることである。
高階導関数・高階微分可能も同様にして定義される。
<math>\boldsymbol{f}(x)</math>が区間<math>I</math>で連続ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^0</math>級であるといい、<math>\boldsymbol{f}\in C^0(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で微分可能で<math>\boldsymbol{f}'(x)\in C^0(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^1</math>級である(一階連続微分可能)といい、<math>\boldsymbol{f}\in C^1(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で二階微分可能で<math>\boldsymbol{f}'\in C^1(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^2</math>級である(二階連続微分可能)といい、<math>\boldsymbol{f}\in C^2(I)</math>と書く。同様にして順々に<math>C^k</math>級が定義され、<math>\forall k \in \mathbb{N}, \boldsymbol{f}\in C^k(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>で<math>C^\infty</math>級(無限階連続微分可能)であるといい、<math>\boldsymbol{f}\in C^\infty(I)</math>と書く。<math>C^\infty</math>級である関数を'''滑らかな'''関数ともいう。
高校数学や高校物理で扱った平面(<math>\mathbb{R}^2</math>)上の運動は、実は2項ベクトル関数の理論に他ならない。
例えば、平面上の運動に於ける加速度・速度・変位の関係は<math>\boldsymbol{x}(t)= \begin{pmatrix} f(t) \\ g(t) \end{pmatrix}</math>として<math>\boldsymbol{a}(t) = \frac{d}{dt}\boldsymbol{v}(t) = \frac{d^2}{dt^2} \boldsymbol{x}(t)</math>と表すことができる。
曲線の媒介変数表示は、パラメータを変数とするベクトル関数とみることができる。
例えば、円の媒介変数表示<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \end{cases}</math>は、<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>という2次元ベクトル関数とみることができる。更に<math>\theta=\omega t</math>とすると、これは等速円運動の式である。
1変数ベクトル関数の微分に関して、以下の公式が成り立つ。
#定数倍の導関数:<math>\{k\boldsymbol{a}(x)\}'=k\boldsymbol{a}'(x)</math>
#和・差の導関数:<math>\{ \boldsymbol{a}(x)\pm\boldsymbol{b}(x) \}' = \boldsymbol{a}'(x)\pm\boldsymbol{b}'(x)</math>
#積の導関数:<math>\{ f(x)\boldsymbol{a}(x) \}' = f'(x)\boldsymbol{a}(x)+f(x)\boldsymbol{a}'(x)</math>
#商の導関数:<math>\left\{ \frac{\boldsymbol{a}(x)}{f(x)} \right\}' = \frac{f(x)\boldsymbol{a}'(x)-f'(x)\boldsymbol{a}(x)}{\{f(x)\}^2} \quad (f(x)\neq0)</math>
#内積の導関数:<math>\{\boldsymbol{a}(x)\cdot\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)+\boldsymbol{a}(x)\cdot\boldsymbol{b}'(x)</math>
#外積の導関数:<math>\{\boldsymbol{a}(x)\times\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\times\boldsymbol{b}(x)+\boldsymbol{a}(x)\times\boldsymbol{b}'(x)</math>
#スカラー三重積の導関数:<math>[\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#ベクトル三重積の導関数:<math>[\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#連鎖律(チェイン・ルール):<math>[\boldsymbol{a}\{f(x)\}]'=\boldsymbol{a}'\{f(x)\}f'(x)</math>
ベクトル関数の'''ノルム'''(大きさ、長さ)は、通常のベクトルと同様に
:<math>\| \boldsymbol{f}(x) \| = \sqrt{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)} = \sqrt{\sum_{i} \{f_i (x)\}^2}</math>
で与えられる。
つまり、ノルムは元のベクトル関数と同一変数のスカラー関数である。
ここで、このスカラー関数が定数関数である条件に就て見てみよう。
:<math>\| \boldsymbol{f}(x) \|= c \quad (c\in\mathbb{R}_{>0})</math>の両辺を2乗して
:<math>\| \boldsymbol{f}(x) \|^2 = \boldsymbol{f}(x)\cdot\boldsymbol{f}(x) = c^2</math>
:両辺微分すると内積の微分より
:<math>\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:<math>\therefore \boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:逆に、
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0 \iff 2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=0</math>
:<math>\int \{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'dx= \int 0 dx</math>
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)=C_1</math>(<math>C_1\geq0</math>は積分定数)
:<math>\| \boldsymbol{f}(x) \|^2=C_1</math>より
:<math>\| \boldsymbol{f}(x) \| = \sqrt{C_1} = \mathrm{const}.</math>
よって、以下が成り立つ。
{{定理|(直交条件の定理)}}
:<math>\| \boldsymbol{f}(x) \|= \mathrm{const}. \iff \boldsymbol{f}(x) \cdot \boldsymbol{f}'(x) = 0</math>
{{定理終わり}}
これは、物理的には「位置ベクトルと速度ベクトルが直交する」ことを表す。則ち、<math>\boldsymbol{f}(x)</math>の終点が始点を中心とする円運動(球面運動)をするということである。
また、ベクトル関数が変数に依らず常に同一方向を向く条件も見てみよう(但し<math>\boldsymbol{f}(x)\neq\boldsymbol{0}</math>)。
:所与の条件は零ベクトルでない定ベクトル<math>\boldsymbol{c}</math>を用いて<math>\boldsymbol{f}(x) = f(x)\boldsymbol{c}</math>と表される。
:両辺微分して<math>\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}=f'(x)\boldsymbol{c}</math>
:ここで元のベクトル関数との外積をとると
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}\times\{f'(x)\boldsymbol{c}\}=f(x)f'(x) (\boldsymbol{c}\times\boldsymbol{c})=f(x)f'(x)\boldsymbol{0}=\boldsymbol{0}</math>
:逆に、
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\boldsymbol{0}</math>とすると一次従属なので
:<math>\boldsymbol{f}'(x)=g(x)\boldsymbol{f}(x)</math>という微分方程式が成り立つ。
:各成分ごとに微分方程式を解くと、
::これは変数分離型微分方程式なので第i成分は
::<math>\frac{df_i}{dx}=g(x)f_i(x)</math>
::<math>\int \frac{df_i}{f_i(x)}=\int g(x)dx</math>
::<math>G'(x)=g(x), C_i</math>を積分定数として<math>\log|f_i(x)|=G(x)+C_i</math>
::<math>C_i=\pm e^{C_i}</math>と改めておくと<math>f_i(x)=C_i e^{G(x)}</math>
:よって
:<math>\boldsymbol{f}(x)=\sum_i f_i(x) \boldsymbol{e}_i = \sum_i C_i e^{G(x)} \boldsymbol{e}_i = e^{G(x)} \sum_i C_i \boldsymbol{e}_i</math>
:ここで<math>f(x)=e^{G(x)}, \boldsymbol{c}=\sum_i C_i \boldsymbol{e}_i</math>と置くと
:<math>\boldsymbol{f}(x) = f(x) \boldsymbol{c}</math>となり、方向は変数に依らず一定であることが判る//
よって、以下が成り立つ。
{{定理|(平行条件の定理)}}
<math>\boldsymbol{c},\boldsymbol{f}(x)\neq\boldsymbol{0}</math>として
:<math>\boldsymbol{f}(x)=f(x)\boldsymbol{c} \iff \boldsymbol{f}(x) \times \boldsymbol{f}'(x) = \boldsymbol{0}</math>
{{定理終わり}}
ベクトル解析では三次元空間の場合を考えることが多いため上では外積を用いて証明したが、外積は3項ベクトル(または7項ベクトル)にしか定義されないのであった。
一般次元では外積に代わって次の関係式を用いる。
:<math>|\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)|=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|</math>
これはCS不等式の等号成立の場合である。
実際、<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|\cos\{\theta(x)\}</math>より等号成立の必要十分条件は
:<math>\cos\{\theta(x)\}=\pm1\iff\theta(x) \equiv 0 \,(\mathrm{mod}\pi)</math>
であり、2ベクトル<math>\boldsymbol{f}(x), \boldsymbol{f}'(x)</math>は平行とわかる。<br/>
平行ということは一次従属ということなので先程のように変数分離形微分方程式を解くことで3次元と同じ結果を得る。//
補足として、力学への応用を考える。
:速さの二乗<math>\|\boldsymbol{v}(t)\|^2</math>を時間微分すると
:<math>\frac{d}{dt}\|\boldsymbol{v}(t)\|^2=\frac{d}{dt}(\boldsymbol{v}(t)\cdot\boldsymbol{v}(t))=\frac{d\boldsymbol{v}(t)}{dt}\cdot\boldsymbol{v}(t)+\boldsymbol{v}(t)\cdot\frac{d\boldsymbol{v}(t)}{dt}=2(\boldsymbol{v}(t)\cdot\boldsymbol{a}(t))</math>
:よって等速運動の条件<math>\|\boldsymbol{v}(t)\|=\mathrm{const}.</math>は直交条件の定理から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>に同値である。
:これを力学的に解釈すると、「加速度ベクトルは速度ベクトル方向に仕事をしないから速度ベクトルの大きさを変えずに向きだけを変える」となる。
:平面上で等速円運動を考えると円運動条件から<math>\boldsymbol{r}(t)\perp\boldsymbol{v}(t)</math>、等速条件から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>なので<math>\boldsymbol{r}(t) /\!/ \boldsymbol{a}(t)</math>が出てくる。
:円運動条件<math>\|\boldsymbol{r}(t)\|^2=r^2</math>を一階微分すると
::<math>2\boldsymbol{r}(t)\cdot\boldsymbol{r}'(t)=0</math>
:もう一度微分して
::<math>2(\boldsymbol{r}(t)\cdot\boldsymbol{r}''(t)+\boldsymbol{r}'(t)\cdot\boldsymbol{r}'(t))=0</math>
:則ち
::<math>\boldsymbol{r}(t)\cdot\boldsymbol{a}(t)+\boldsymbol{v}(t)\cdot\boldsymbol{v}(t)=0</math>
:位置ベクトルと加速度ベクトルが一次従属なので<math>\boldsymbol{a}(t)=\lambda\boldsymbol{r}(t)</math>であり、等速条件より<math>\|\boldsymbol{v}(t)\|=v</math>なので
::<math>\lambda r^2 + v^2 = 0</math>
::<math>\therefore \lambda = -\frac{v^2}{r^2}<0</math>
:則ち<math>\boldsymbol{r}(t)</math>と<math>\boldsymbol{a}(t)</math>は逆向きであり、円運動の中心は<math>\boldsymbol{r}(t)</math>の始点なので<math>\boldsymbol{a}(t)</math>は常に円運動の中心を向く'''向心加速度'''であることが証明された。//
なお、3次元以上では「<math>\boldsymbol{a}\perp\boldsymbol{b}\land\boldsymbol{b}\perp\boldsymbol{c}\implies\boldsymbol{a}/\!/\boldsymbol{c}</math>」が一般には成り立たないのでこの議論を成立させるには追加の条件が必要である。
<math>\boldsymbol{f}(x)</math>の不定積分は、各<math>f_i(x)</math>の原始関数を並べたベクトルを<math>\boldsymbol{F}(x)</math>として
:<math>\int \boldsymbol{f}(x) dx = \boldsymbol{F}(x)+\boldsymbol{C}</math>(<math>\boldsymbol{C}</math>は各積分定数を並べたベクトル)
と表される。
また、定積分は
:<math>\int^b_a \boldsymbol{f}(x) dx=\boldsymbol{F}(b)-\boldsymbol{F}(a)</math>
と表される。
1変数ベクトル関数の積分について、以下が成り立つ(不定積分表記だが定積分に就ても同様)。
#定数倍の原始関数:<math>\int \{k\boldsymbol{a}(x)\} dx = k\int\boldsymbol{a}(x)dx</math>
#和・差の原始関数:<math>\int \{\boldsymbol{a}(x)\pm\boldsymbol{b}(x)\}dx=\int\boldsymbol{a}(x)dx\pm\int\boldsymbol{b}(x)dx</math>
#内積の原始関数<math>\int \{\boldsymbol{k}\cdot\boldsymbol{a}(x)\}dx=\boldsymbol{k} \cdot \left( \int \boldsymbol{a}(x) dx \right)</math>
#外積の原始関数<math>\int \{\boldsymbol{k}\times\boldsymbol{a}(x)\}dx=\boldsymbol{k} \times \left( \int \boldsymbol{a}(x) dx \right)</math>
#スカラー倍の部分積分:<math>\int f(x)\boldsymbol{a}'(x)dx= f(x)\boldsymbol{a}(x)-\int f'(x)\boldsymbol{a}(x) dx \iff \int f'(x)\boldsymbol{a}(x)dx= f(x)\boldsymbol{a}(x)-\int f(x)\boldsymbol{a}'(x) dx</math>
#内積の部分積分:<math>\int \{ \boldsymbol{a}(x)\cdot\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\cdot\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)\}dx</math>
#外積の部分積分:<math>\int \{ \boldsymbol{a}(x)\times\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\times\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\times\boldsymbol{b}(x)\}dx</math>
#置換積分:<math>u=f(x)</math>として<math>\int \boldsymbol{a}'\{f(x)\}f'(x) dx = \int \boldsymbol{a}(u)du</math>
平行条件の定理の証明でベクトル関数の微分方程式を解いたように、成分毎に考えることで解空間ベクトルを求められる。
:1階線型常微分方程式<math>\boldsymbol{f}'(x)+a(x)\boldsymbol{f}(x)=\boldsymbol{b}(x)</math>の解に就て考える。
:第<math>i</math>成分を考えると<math>f'_i(x)+a(x)f_i(x)=b_i(x)</math>という1階線型常微分方程式を得るので、
:両辺に積分因子<math>\mu(x)=\exp\left(\int a(x) dx\right)</math>を掛けることで
:<math>f_i(x)=\frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\}</math>を得る。
:よって一般解は
:<math>\boldsymbol{f}(x) = \sum_i \frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\} \boldsymbol{e}_i=\frac{1}{\mu(x)}\left\{ \int \mu(x) \boldsymbol{b}(x) dx + \boldsymbol{C} \right\}</math>
ベクトル関数は必ずしもここで扱った<math>\boldsymbol{f}: \mathbb{R}\to\mathbb{R}^n</math>のみを指さない。
例えば、ベクトル変数 <math>\boldsymbol{x}= \sum_i g_i (x) \boldsymbol{e}_i</math>に対して
:<math>\boldsymbol{h}(\boldsymbol{x})=\sum_i (h_i \circ g_i) (x) \boldsymbol{e}_i</math>
と定義されるような関数<math>\boldsymbol{h}:\mathbb{R}^m \to \mathbb{R}^m</math>もベクトル関数である。
また、始域と終域の次元が異なる<math>\boldsymbol{i}: \mathbb{R}^m \to \mathbb{R}^n \, (m, n\neq1)</math>のようなベクトル関数も考えられる。
一般に、始域が<math>\mathbb{R}^n (n\neq1)</math>であっても終域が<math>\mathbb{R}</math>である関数はベクトル関数に対して'''スカラー関数'''(scalar function)と呼ばれる。スカラー関数は入力ベクトルを「変数の組」と見れば通常の多変数関数に一致する。
この節で述べた理論は、多くは一般のベクトル関数に対しても成り立つ。但し、後述のヤコビ行列のような拡張を必要とするものもある。
また、多変数ベクトル関数<math>\boldsymbol{f}(x_1, x_2,\cdots,x_n)</math>を考えたとき、多変数微積分の理論は一変数微積分と同様にしてベクトル関数にもそのまま拡張される。
===ベクトル場・スカラー場===
写像<math>\boldsymbol{a}: \mathbb{R}^m \to \mathbb{R}^n</math>を'''ベクトル場'''(vector field)という。
実際には<math>m=n</math>の場合を考えることが多い。
写像<math>\varphi: \mathbb{R}^n \to \mathbb{R}</math>を'''スカラー場'''(scalar field)という。
それぞれ上で述べたベクトル関数・スカラー関数に対応する。
もう少し具体的に述べると、空間の領域<math>V</math>が与えられたときその各点にスカラーまたはベクトルを割り当てたものが場である。要するに、<math>p\in V</math>とすると
:スカラー場:<math>\varphi=\varphi(p)</math>
:ベクトル場:<math>\boldsymbol{a}=\boldsymbol{a}(p)</math>
のように場は「点を入力とする<sup>※</sup>関数」である。
<small>※なお、ベクトル場を図示するときは「出力されたベクトルの'''始点は原点でなく入力された点'''」であることに注意が必要である。出力ベクトルの成分表示は「入力点を基準に据えたときの位置ベクトル」なので原点から目盛を数えることに意味はない。</small>
ここで<math>V</math>に何かしらの座標が設定されていれば、その座標系の変数の組をベクトルと見做すことで場を「通常のスカラー関数・ベクトル関数」として扱えるのである。
則ち、「滑らかな場」という概念は「滑らかな関数」として定義することができる。より具体的に言うと、スカラー場・ベクトル場が'''滑らか'''であるとは対応するスカラー関数・ベクトル関数が<math>C^\infty</math>級であることである。但し、滑らかさは任意の座標変換で保たれるわけではないことに注意が必要である(後述の座標変換テンソル及びその逆行列の全ての成分関数が滑らかである必要がある)。
ここで、二変数関数の極値を思い返してみる。
<math>z=f(x, y)</math>が<math>(a, b)</math>で極大であるとは<math>\begin{pmatrix} x \\ y \end{pmatrix}\neq\begin{pmatrix} a \\ b \end{pmatrix}</math>として
:<math>\exist \delta>0, \forall {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in \mathbb{R}^2, {\scriptstyle\left\| \left(\begin{array}{c} x \\[-6pt] y \end{array}\right) - \left(\begin{array}{c} a \\[-6pt] b \end{array}\right) \right\|} < \delta \implies f(x, y) \leq f(a, b)</math>
という定義だった。
<math>z=f(x, y)</math>は曲面を表すが、これを<math>z</math>軸正方向から<math>xy</math>平面に射影するとその陰が<math>(x, y)</math>の動く範囲となるのであった。
ここで<math>\boldsymbol{x}:=\begin{pmatrix} x \\ y \end{pmatrix}, \boldsymbol{\alpha}:=\begin{pmatrix} a \\ b \end{pmatrix}</math>とすると<math>z=f(x, y)</math>はスカラー場<math>z=\phi(\boldsymbol{x})</math>と解釈することができ、更に条件法の前件は<math>\boldsymbol{\alpha}</math>の<math>\delta</math>-開球(二次元なので開円板)である。
なので、極大値の定義式をベクトル解析的に解釈すると「<math>xy</math>平面の各点に<math>z</math>の値を割り当てた数分布に於いて、開円板<math>B_\delta(\boldsymbol{\alpha})</math>内部に於ける<math>z</math>の最大値が<math>\phi(\boldsymbol{\alpha})</math>となるような正数<math>\delta</math>が存在する」ということである。
ベクトル場の例としては、電場・磁場・重力場などが挙げられる。
スカラー場の例としては、電位分布・温度分布・圧力分布などが挙げられる。
例えば、ベクトル場<math>\boldsymbol{f}=(x, 0, 0)</math>は、<math>\mathbb{R}^3</math>内の平面<math>x=k</math>上の任意点に、その点を始点とするベクトル<math>\begin{pmatrix} k \\ 0 \\ 0 \end{pmatrix}</math>が存在する状態を表す。
ベクトル場の和は、出力ベクトルの型が同じならばベクトル場の成分の和をとったものに等しい。
例えば、<math>\boldsymbol{f}(x, y, z)=(y, z, x), \boldsymbol{g}(x, y, z)=(z, x, y)</math>について
:<math>(\boldsymbol{f}+\boldsymbol{g})(x, y, z)=(y, z, x)+(z, x, y)=(y+z, z+x, x+y)</math>である。
これは、ベクトル場の加法の定義が
:<math>\forall p \in V, (\boldsymbol{f}+\boldsymbol{g})(p):=\boldsymbol{f}(p)+\boldsymbol{g}(p)</math>
となっていて且つ<math>V</math>に座標を入れればベクトル関数の加法則をそのまま適用できるためである(入力点が異なるとき、場同士は足すことができない)。
曲線<math>\{\boldsymbol{x}\in\mathbb{R}^2 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等高線'''(等高曲線)、曲面<math>\{\boldsymbol{x}\in\mathbb{R}^3 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等位面'''(等位曲面)という。これらの詳細は後述する。
==曲線論・曲面論==
===曲線===
<math>xy</math>平面上の曲線は<math>y=f(x) (x\in[a, b])</math>という陽関数表示で扱うことが多かった。しかし、これだと自分自身と交わる('''自己交叉'''する)曲線や<math>x=x_0</math>に対して<math>f(x_0)</math>の値が複数存在する(<math>f</math>が'''多価関数''')場合に不都合が生じる。
例えば円を陽関数表示しようとすると
:<math>x^2+y^2=r^2</math>を<math>y</math>に就いて解いて
:<math>y=\pm\sqrt{r^2-x^2}</math>
則ち
:<math>y=\begin{cases} \sqrt{r^2-x^2} & (y\geq0) \\ -\sqrt{r^2-x^2} & (y<0) \end{cases}</math>
という多価関数が必要になる。
これだと端点の振舞を一々調べる必要があって曲線の連続性や接線の議論が煩雑になってしまう。
しかし、先程も述べたように曲線の媒介変数表示はベクトル関数として見れるのであった。
:<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>(再掲)
こうすると一変数連続ベクトル関数によって曲線を表すことが可能である。物理的に捉えると「質点の運動の軌跡を原点からの位置ベクトルの時間変化で表す」ということである。
一般に、<math>\boldsymbol{r}\in\mathbb{R}^n, t \in I</math>としてベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>の解集合<math>\{\boldsymbol{r}(t) \mid t \in I \}</math>は<math>n</math>次元空間内の曲線<math>C</math>を表す。これを<math>C</math>の'''ベクトル表示'''という。
ベクトル表示は成分表示に直せば<math>\boldsymbol{r}(t)=\sum_i r_i(t)\boldsymbol{e}_i</math>となる。これは媒介変数表示<math>\begin{cases} x_1&=&r_1(t) \\ x_2&=&r_2(t) \\ &\,\,\vdots& \\ x_n&=&r_n(t) \end{cases}</math>をベクトル表記したものに一致する。
例えば、<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ bt \end{pmatrix}</math>は'''常螺旋'''(弦巻線)のベクトル表示である。
パラメータが増加するときの点の移動方向を曲線の'''正の向き'''と定める。曲線の'''負の向き'''はパラメータが減少するときの点の移動方向である。このとき、パラメータで'''向き付け'''された曲線という表現もなされる。曲線<math>C</math>に対し、同じパラメータを用いた逆向きの曲線を<math>-C</math>と表す。ベクトル表示では<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>-C:\boldsymbol{r}=\boldsymbol{r}(-t)</math>ということである。
パラメータに関する変数変換<math>u=\phi(t)</math>を考える。但し、<math>\phi</math>は広義単調関数とする<sup>※</sup>。このとき、<math>\frac{du}{dt}</math>が非負ならば曲線の向き付けが保たれ、非正ならば向き付けが反転する。<math>\frac{du}{dt}=0</math>となる領域では点の運動が停止する。
<small>※<math>\phi</math>が非単調関数のときは曲線上の点が行ったり来たりすることになるため曲線のパラメータ表示としては扱いづらい。</small>
<math>\boldsymbol{r}(t) \in C^1</math>且つ<math>\boldsymbol{r}'(t)\neq\boldsymbol{0}</math>であるとき、曲線<math>C</math>は'''滑らか'''であるという。
滑らかな曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>\boldsymbol{r}'(t)</math>を<math>C</math>の'''速度ベクトル'''という。
<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}</math>として点<math>\mathrm{P}(t)</math>に於ける速度ベクトルは<math>\lim_{\Delta t\to0}\frac{\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)}{\Delta t}</math>の極限ベクトルであるが、<math>\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)</math>を図示することで速度ベクトルが曲線<math>C</math>の点<math>\mathrm{P}(t)</math>に於ける接線の方向ベクトルになっていることがわかる。よって、速度ベクトルを'''接線ベクトル'''(接ベクトル)ともいう。
速度ベクトルが非零である曲線を'''正則'''な曲線と呼ぶ。滑らかな曲線は正則曲線である。
なお、一般には陽関数表示が区分的であることとベクトル表示の成分関数が区分的であることに対応はないほか、パラメータの取り方で速度ベクトルが変わるので「曲線の幾何学的滑らかさ」と「ベクトル表示した関数の解析学的滑らかさ」は一致するとは限らない。
正則な曲線に対して曲線長('''弧長''')を考える。
二次元曲線の場合は数学Ⅲで既に扱った。
:<math>L=\int_a^b \sqrt{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2}dt</math>
実は、これを一般の<math>n</math>次元にそのまま拡張することができる。
{{定理|(弧長公式)}}
曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ(<math>a<b</math>)は
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
で与えられる。
{{定理終わり}}
*証明
:<math>a=t_0, b=t_m</math>として閉区間<math>[a, b]</math>を各<math>t_i</math>で等分割する。このとき小区間<math>[t_{k-1}, t_k]</math>の長さは<math>\Delta t=\frac{b-a}{m}</math>。
:<math>C</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ<math>L</math>は折れ線の長さ<math>\overline{\mathrm{P}(t_{k-1})\mathrm{P}(t_k)}</math>の総和で近似される。
:ここで<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}(t)</math>より
::<math>L_m=\sum_{k=1}^m \| \boldsymbol{r}(t_k)-\boldsymbol{r}(t_{k-1}) \| = \sum_{k=1}^m \left\| \frac{\boldsymbol{r}(t_{k-1}+\Delta t)-\boldsymbol{r}(t_{k-1})}{\Delta t-0} \right\|(\Delta t-0)</math>
:分割を限りなく細かくする極限をとると<math>m\to\infty</math>より<math>\Delta t\to0</math>なので
::<math>\lim_{m\to\infty} L_m = \sum_{k=1}^\infty \left\| \frac{d\boldsymbol{r}}{dt}(t_{k-1}) \right\|dt</math>
:区分求積法より最後の無限級数は収束して
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>//
ここで、<math>dl:=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>という微小量を'''線素'''と呼ぶ。
1を線素に関して積分したパラメータ<math>s:=\int_0^t dl</math>を'''弧長パラメータ'''(標準パラメータ)という。弧長パラメータは曲線上で「基準点からの符号付き距離」を表す。
曲線の弧長パラメータによるベクトル表示('''弧長パラメータ表示''')を考える。<math>s=\int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>で正則よりノルムは正。則ち<math>\frac{ds}{dt}>0</math>より<math>s=\phi(t)</math>は狭義単調増加なので、逆関数<math>t=\phi^{-1}(s)</math>を考えることができる。よって、<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>に<math>t=\phi^{-1}(s)</math>を代入した<math>\boldsymbol{r}=\boldsymbol{r}(\phi^{-1}(s))</math>が弧長パラメータ表示である。これを<math>\boldsymbol{r}=\boldsymbol{r}(s)</math>と略記してしまうことも多いが、'''一般には元の<math>\boldsymbol{r}(t)</math>と成分関数が異なる'''ことに注意。
通常の媒介変数によるベクトル表示は「座標系が予め与えられた状況」での表示であるが、弧長パラメータは座標系を取り替えたとしても表す曲線そのものが変わらなければ不変である。よって、「座標系に依存しない表記」として弧長パラメータ表示は多く利用されている。
また、弧長パラメータ表示で連鎖律を適用すると
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{dt}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{1}{\frac{ds}{dt}}</math>
ここで微分積分学の基本定理より
:<math>\frac{ds}{dt}=\frac{d}{dt} \int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt = \left\| \frac{d\boldsymbol{r}}{dt} \right\|</math>
なので
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{\frac{d\boldsymbol{r}(t)}{dt}}{\left\| \frac{d\boldsymbol{r}}{dt} \right\|}</math>
であり、自身のノルムで割ってるので恒等的に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>である。
よって、弧長パラメータ表示された曲線の接ベクトルは常に単位ベクトルである。
弧長パラメータ表示された曲線で線素を考えると<math>s=\int_0^s \left\| \frac{d\boldsymbol{r}(s)}{ds} \right\| ds = \int_0^s dl</math>だが、常に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>なので<math>ds=dl</math>であり、弧長パラメータの微小量は線素に等しい(弧長パラメータそのものが1の線素に関する積分なので当たり前ではある)。
<math>\boldsymbol{e}_\dagger(s)=\frac{d\boldsymbol{r}}{ds}</math>と置くと、点<math>\mathrm{P}(s_0)</math>に於ける接線の方程式は
:<math>\boldsymbol{p}-\boldsymbol{r}(s_0)=\boldsymbol{e}_\dagger(s_0) (s-s_0)</math>
と表される。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>
であり、「接線が一次近似に対応する」という構造はベクトル関数でも維持されることが判った。
領域<math>\boldsymbol{D}</math>上の滑らかなベクトル場<math>\boldsymbol{a}</math>について、微分方程式<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t)) (\boldsymbol{r} \in \boldsymbol{D})</math>で与えられる曲線<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>を<math>\boldsymbol{a}</math>の'''流線'''(streamline)という(入力点を位置ベクトルと同一視していることに注意)。流線の接線ベクトルは元のベクトル場そのものになるので、ベクトルの相等から得る方程式<math>\frac{dx_1}{a_1}=\frac{dx_2}{a_2}=\cdots=\frac{dx_n}{a_n}</math>を'''流線方程式'''という。
例えば、<math>\boldsymbol{f}(x, y)=(y, x)</math>の流線は、
:定義から<math>\frac{dx}{dt}=y, \frac{dy}{dt}=x</math>
:合成関数の微分公式から<math>\frac{dy}{dx}=\frac{\frac{dy}{dt}}{\frac{dx}{dt}}=\frac{x}{y}</math>
:<math>\int y dy=\int xdx</math>
:<math>\frac{1}{2}y^2=\frac{1}{2}x^2+C</math>
:よって双曲線<math>y^2-x^2=2C</math>//
この場合、<math>t</math>に関する2つの微分方程式を組み合わせることで
:<math>\frac{d^2x}{dt^2}=x, \frac{d^2y}{dt^2}=y</math>という二階線型常微分方程式となり、一般解が双曲線関数を用いて<math>\begin{cases} x=C_1\cosh t+C_2\sinh t \\ y=C_1\sinh t+C_2\cosh t \end{cases}</math>であることが容易に判る。<br>なお、流線方程式を用いても<math>\frac{dx}{y}=\frac{dy}{x}</math>から<math>\frac{dy}{dx}=\frac{x}{y}</math>が出てくる。
「流線の接線ベクトルが元のベクトル場になる」とはつまり、「接線が常にベクトル場と平行になるような曲線」を考えているということである。滑らかなベクトル場を考えているためそのような曲線は常に存在する。流線は「ベクトル場の流れを繋げていった曲線」と考えることができるので、「流れを簡潔に図示」するのにちょうどよい。
有名な例として、電気力線・磁力線はそれぞれ電場<math>\boldsymbol{E}</math>・磁束密度<math>\boldsymbol{B}</math>の流線である。
流線の微分方程式を弧長パラメータ表示を用いて変形する。
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t))</math>の左辺に就いて
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\frac{ds}{dt}=\frac{d\boldsymbol{r}}{ds}\cdot \|\boldsymbol{r}'(\phi^{-1}(s))\|</math>
元の方程式の両辺でノルムをとると
:<math>\left\|\frac{d\boldsymbol{r}}{dt}\right\|=\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
代入して
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{r}'(\phi^{-1}(s))\|=\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
:<math>\therefore \frac{d\boldsymbol{r}}{ds} = \boldsymbol{e}_{\boldsymbol{a}(\boldsymbol{r}(\phi^{-1}(s)))}</math>
ここから、流線の形状はノルムには関係なく方向場のみで決まることがわかる。
===フレネ標搆===
ここでは、三次元空間に於ける正則曲線について考える。
<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>上の点<math>\mathrm{P}(s)</math>に於ける単位接線ベクトルを<math>\boldsymbol{t}</math>とおく。
先程の議論より<math>\boldsymbol{t}(s)=\frac{d\boldsymbol{r}(s)}{ds}</math>であり、<math>\left\| \frac{d\boldsymbol{r}(s)}{ds} \right\|=1 (=\mathrm{const}.)</math>なので直交条件の定理から<math>\boldsymbol{t}\cdot\frac{d\boldsymbol{t}}{ds}=0</math>、則ち<math>\boldsymbol{t} \perp \frac{d\boldsymbol{t}(s)}{ds}</math>である。この<math>\frac{d\boldsymbol{t}(s)}{ds}</math>を'''主法線ベクトル'''という。
主法線ベクトルを<math>\boldsymbol{n}</math>とおくとき、<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n}</math>を'''従法線ベクトル'''(陪法線ベクトル)という。ここで先程の結果より<math>\boldsymbol{t}\perp\boldsymbol{n}</math>であって<math>\boldsymbol{b}</math>の定義より<math>\boldsymbol{t}\perp\boldsymbol{b}, \boldsymbol{n}\perp\boldsymbol{b}</math>なので、この3ベクトルの組を正規化した<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b \}</math>は<math>\mathbb{R}^3</math>の正規直交基底である。これを<math>\mathbb{R}^3</math>の'''フレネ標搆'''という。外積の結果よりフレネ標搆は<math>\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b</math>の順に右手系をなす。なお、接線ベクトル・主法線ベクトル・従法線ベクトルは全て曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>を入力したベクトル場として捉えることができる。
<math>\{\boldsymbol{e}_n, \boldsymbol{e}_b \}</math>の張る平面を'''法平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_b \}</math>の張る平面を'''展直平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n \}</math>の張る平面を'''接触平面'''という。
即ち、法平面・展直平面・接触平面は<math>tnb</math>空間の点<math>\mathrm{P}(s)</math>を原点とした基準面である。
平面の方程式の法線ベクトルに接ベクトル・主法線ベクトル・従法線ベクトルをそれぞれ代入することで
:法平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{t}(s)=0</math>
:展直平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{n}(s)=0</math>
:接触平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{b}(s)=0</math>
とわかる。
<math>\|\boldsymbol{t}\|=1</math>は常に成り立つが<math>\|\boldsymbol{n}\|, \|\boldsymbol{b}\|</math>は<math>1</math>とは限らない。そこで、主法線ベクトルの大きさ<math>\kappa(s)=\|\boldsymbol{n}(s)\|</math>を曲線<math>C</math>の'''曲率'''と呼ぶことにする。なお、<math>\|\boldsymbol{b}\|=\| \boldsymbol{t} \| \|\boldsymbol{n}\|\sin\frac{\pi}{2}</math>より<math>\|\boldsymbol{b}\|=\|\boldsymbol{n}\|=\kappa</math>が成り立つ。
主法線ベクトルの定義に立ち戻ると<math>\boldsymbol{n}(s)=\frac{d\boldsymbol{t}(s)}{ds}</math>であった。つまり、主法線ベクトルは接ベクトルの速度ベクトルなので「弧長パラメータを変化させたときに接ベクトルがどのくらい変化するか」という指標である。接ベクトルの変化の大小と<math>\kappa</math>の大小は対応し、接ベクトルの大小はカーブの緩急に対応することから<math>\kappa</math>の大小とカーブの緩急も対応する。これが「曲率」という名前の由来である。
なお、<math>\kappa(s)=0</math>の場合は<math>\boldsymbol{n}(s)=\boldsymbol{0}</math>なので<math>\boldsymbol{t}(s)=\boldsymbol{k}</math>(定ベクトル)であり、<math>\boldsymbol{r}(s)=s\boldsymbol{k}</math>という直線の場合に対応することがわかる。
単位接ベクトルの<math>s</math>を微分変数とする導関数(<math>s</math>-導関数)は主法線ベクトルだったが、単位主法線ベクトル・単位従法線ベクトルの<math>s</math>-導関数がどのように表されるか見ていく。
ここで、フレネ標搆が<math>\mathbb{R}^3</math>の正規直交基底であることから、<math>\frac{d\boldsymbol{e}_n}{ds}, \frac{d\boldsymbol{e}_b}{ds}</math>ともにフレネ標搆の一次結合で表現できると予想される。
単位従法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_b}{ds}=\frac{d}{ds}(\boldsymbol{e}_t\times\boldsymbol{e}_n)=\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n+\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\boldsymbol{t}=\boldsymbol{e}_t</math>より<math>\frac{d\boldsymbol{e}_t}{ds}=\boldsymbol{n}=\kappa\boldsymbol{e}_n</math>則ち<math>\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n=\kappa\boldsymbol{e}_n\times\boldsymbol{e}_n=\boldsymbol{0}</math>なので
:<math>\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\|\boldsymbol{e}_n\|=1</math>から直交条件の定理より<math>\boldsymbol{e}_n\perp\frac{d\boldsymbol{e}_n}{ds}</math>なので
:<math>\boldsymbol{e}_n\times\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_n\times(\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds})=\left(\boldsymbol{e}_n\cdot\frac{d\boldsymbol{e}_n}{ds}\right)-(\boldsymbol{e}_n\cdot\boldsymbol{e}_t)\frac{d\boldsymbol{e}_n}{ds}=\boldsymbol{0}</math>
外積が零ベクトルなので<math>\frac{d\boldsymbol{e}_b}{ds} /\!\!/ \boldsymbol{e}_n</math>であり、一次従属より
:<math>\frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>
となるスカラー関数<math>\tau(s)</math>が存在する。
この<math>\tau(s)</math>を曲線<math>C</math>の'''捩率'''と呼ぶ。捩率は接触平面の回転(捩れ)の率を表す。
<math>\tau=0</math>ならば<math>\frac{d\boldsymbol{e}_b}{ds}=0</math>より<math>\boldsymbol{e}_b</math>方向は変化しないので曲線は接触平面と平行な平面上に拘束される。即ち、<math>C</math>は平面曲線である。
単位主法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{d}{ds}(\boldsymbol{e}_b\times\boldsymbol{e}_t)=\frac{d\boldsymbol{e}_b}{ds}\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\frac{d\boldsymbol{e}_t}{ds}</math>
ここで<math>\frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n, \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>を代入して
:<math>\frac{d\boldsymbol{e}_n}{ds}=-\tau\boldsymbol{e}_n\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\kappa\boldsymbol{e}_n=\tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t</math>
よって、フレネ標搆の弧長パラメータを微分変数とする導関数を以下のようにフレネ標搆の一次結合で表すことができた。
:<math>\begin{cases} \frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n \\ \frac{d\boldsymbol{e}_n}{ds} = \tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t \\ \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n \end{cases}</math>
これを一次変換で表記すると以下のようになる。但し、厳密にはベクトルを成分としている部分は列ではなく行に配置するのが正しいことに注意。
{{定理|(フレネ=セレーの公式)}}
:<math>\frac{d}{ds}\begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix} = \begin{pmatrix} 0 & \kappa & 0 \\ -\kappa & 0 & \tau \\ 0 & -\tau & 0 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix}</math>
{{定理終わり}}
表現行列が反対称行列(歪対称行列)になっているが、これは「直交変換を一次近似すると反対称変換になる」という無限小回転の理論に対応する。
捩率を求めるときは「基底分解の係数は対応する基底ベクトルとの内積に等しい」という性質を利用すれば<math>\boldsymbol{e}_b\cdot\frac{d\boldsymbol{e}_n}{ds}=\tau</math>となるので左辺を計算すればよい。
例えば、円<math>\begin{cases} x^2+y^2=a^2 \\ z=b \end{cases}</math>の曲率と捩率は以下のように求まる。
:媒介変数表示して<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ b \end{pmatrix}</math>
:接線ベクトルは<math>\frac{d\boldsymbol{r}(t)}{dt}=\begin{pmatrix} -a\sin t \\ a\cos t \\ 0 \end{pmatrix}</math>
:弧長パラメータ<math>s</math>は<math>s=\int^t_0 \left\|\frac{d\boldsymbol{r}(t)}{dt}\right\|dt = \int_0^t a dt = at</math>
:<math>\therefore t=\frac{s}{a}</math>
:<math>\boldsymbol{r}(s)=\begin{pmatrix} a\cos\frac{s}{a} \\ a\sin\frac{s}{a} \\ b \end{pmatrix}</math>
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}(s)}{ds}=\begin{pmatrix} -\sin\frac{s}{a} \\ \cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{n}=\frac{d\boldsymbol{t}(s)}{ds}=\frac{1}{a}\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\kappa=\|\boldsymbol{n}\|=\frac{1}{a}</math>
:<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n} = \begin{pmatrix} 0 \\ 0 \\ \frac{1}{a} \end{pmatrix}</math>
:<math>\boldsymbol{e}_n=\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{e}_b = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}</math>
:<math>\tau = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}\cdot\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}=0</math>//
フレネ・セレーの公式は[[線型代数学続論/行列値関数|行列関数]]に関する一階常微分方程式である。そのため、微分方程式の基本定理(ピカール=リンデレーエフの定理)により初期条件(<math>s=0</math>に於けるフレネ標搆)を与えれば、滑らかな曲率関数・捩率関数の組<math>(\kappa, \tau)</math>を定めることで微分方程式の解として一般の<math>s</math>に対するフレネ標搆を一意に得る。このとき、曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>は接ベクトルを出発点を選んで積分することで決定される。
従って、次の定理が成り立つ<!-- 厳密証明はhttps://sshmathgeom.private.coocan.jp/diffgeom/curvetheorem.htmlを参照 -->。
{{定理|(曲線の基本定理)}}
開区間<math>(a,b)</math>上の実数<math>s</math>を変数とする2つの滑らかな関数<math>\kappa(s),\tau(s)</math>を与える。但し、<math>\kappa(s)</math>は正とする。<br/>
このとき、<math>\kappa(s)</math>を曲率、<math>\tau(s)</math>を捩率、<math>s</math>を弧長パラメータとする三次元空間上の曲線<math>C</math>が剛体運動を除いて一意に定まる。
{{定理終わり}}
剛体運動とは「曲線の形を変えない」運動のことである(平行移動・回転など)。
<math>\kappa(s), \tau(s)</math>の定める曲線族を一般に<math>\mathcal{C}[\kappa, \tau]</math>と書く。
例えば、円を含む螺旋は<math>c_1, c_2=\mathrm{const}.</math>として<math>\mathcal{C}[c_1, c_2]</math>と書ける。
<math>R=\frac{1}{\kappa}</math>を'''曲率半径'''という。曲率半径は曲線の特定のカーブにおける曲がり具合の急さを表す指標であり、カーブを近似する真円('''密着円''')の半径でもある。高速道路の標識で<math>R=\circ\circ \mathrm{m}</math>は、そのカーブの曲率半径を示している。道路設計では、快適なドライブの為曲率半径がなるべく大きくなるように工夫を凝らしている。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>(再掲)
だったが、二次近似式(三次以降を切り捨てた式)を考えると
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\frac{d\boldsymbol{r}(s_0)}{ds}(s-s_0) + \frac{1}{2}\frac{d^2\boldsymbol{r}(s_0)}{ds^2}(s-s_0)^2 </math>
フレネ標搆を用いて書き直すと
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\boldsymbol{e}_t(s-s_0) + \frac{1}{2}\kappa(s_0)\boldsymbol{e}_n(s-s_0)^2 </math>
二次近似とは「曲線を円弧で近似する」ことだったので曲率<math>\kappa(s_0)</math>が近似に用いる円弧と関係ある量であることが予想される。<br/>
接触平面で密着円<math> \| \boldsymbol{r} - (\boldsymbol{r}(s_0)+R\boldsymbol{e}_n) \| = R </math>を考える。接触平面を<math>xy</math>平面と考えると円の方程式は
:<math>x^2+(y-R)^2=R^2</math>
:<math>y=R-\sqrt{R^2-x^2}</math>
テイラー展開して
:<math>y=\frac{x^2}{2R}+O(x^4)</math>
二次の項を比較すると
:<math>\frac{x^2}{2R}=\frac{(s-s_0)^2}{2}\kappa</math>
よって
:<math>R=\frac{1}{\kappa}</math>
と定義するのは妥当である。
なお、先ほど求めた円の曲率から、真円に関して「曲率半径=半径」であることが判る。
フレネ・セレーの公式で最初の二行二列のみを考えると<math>\mathbb{R}^2</math>内の曲線に対するフレネ・セレーの公式を得る。一般に<math>\mathbb{R}^n</math>上の曲線に対し、今回の議論と同様にして接ベクトル・主法線ベクトル・曲率を定義することができる。但し、三次元空間と異なって同じ曲率に対して異なる曲線を与えることができる(主法線ベクトルが接触平面内で接ベクトルに対して左右どちらを向くかがそのままでは定まらないため)。なお、4次元以上であっても平面拘束曲線ならば捩率は0であって従法線ベクトルは零ベクトルに定まる。
===単純閉曲線===
パラメータ区間を<math>I=[a, b]</math>とする。
このとき、曲線の端点はそれぞれ<math>\mathrm{P}(a), \mathrm{P}(b)</math>である。
端点が一致する、つまり<math>\mathrm{P}(a)=\mathrm{P}(b)</math>である連続曲線を'''閉曲線'''という。
自己交叉しない、つまり<math>\forall t_1, t_2 \in (a, b), t_1 \neq t_2 \iff \mathrm{P}(t_1)\neq\mathrm{P}(t_2)</math>となる閉曲線を'''単純閉曲線'''(ジョルダン曲線)という。閉曲線でない曲線に就いて「自己交叉しない」という条件は「曲線を表すベクトル関数が単射」と同値であるので、端点のみ単射性を外してやれば単純閉曲線の定義を得る。
幾何学的直観から、平面に拘束された単純閉曲線はその平面を単純閉曲線で囲まれた'''内部'''とそうでない'''外部'''の二つの領域に分割することが予想できる。
このことは以下の定理によって保証される。
{{定理|(ジョルダンの曲線定理)}}
平面<math>\Pi\subset\mathbb{R}^n</math>内の任意の単純閉曲線<math>\gamma</math>に対し、有界領域<math>I</math>・非有界領域<math>O</math>の組であって<math>\Pi\setminus\gamma=I \sqcup O</math>且つ<math>\partial{I}=\partial{O}=\gamma</math>であるものが唯一つに定まる。
{{定理終わり}}
この<math>I, O</math>をそれぞれ内部・外部と定義する。証明は[[位相幾何学]]で行う。なお、「<math>\partial{I}=\partial{O}=\gamma</math>」を態々明示しているのは、滑らかでない単純閉曲線に対しては「<math>\Pi\setminus\gamma=I \sqcup O \implies \partial{I}=\partial{O}=\gamma</math>」が自明でないためである。
正則単純閉曲線に対して「曲線の向き」の幾何学的意味を考える。
ジョルダンの曲線定理より単純閉曲線<math>\gamma:\boldsymbol{r}=\boldsymbol{r}(s) \quad(\boldsymbol{r}\in \Pi)</math>は平面<math>\Pi</math>を内部<math>I</math>と外部<math>O</math>に分割する。平面拘束曲線なので<math>\forall{s}, \tau(s)=0</math>であり、従法線ベクトルは零ベクトル且つ接触平面が常に<math>\Pi</math>に一致する。
主法線ベクトル<math>\boldsymbol{n}(s)</math>が接ベクトル<math>\boldsymbol{t}(s)</math>に対して左側を向いているとすると、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0) \quad(\varepsilon>0)</math>が点<math>\mathrm{P}(s_0)</math>に於ける<math>\gamma</math>の進行方向左側にある点である。
ここで、<math>\mathrm{P}(s_0)</math>に於ける<math>\varepsilon</math>-開球<math>B_\varepsilon(s_0)</math>を考えると、平面<math>\Pi</math>上では<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が左側の領域、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が右側の領域に入る。
<math>s=s_0</math>を動かすと各点で進行方向左は<math>I, O</math>のいずれかであり、<math>\gamma</math>の正則性と<math>I, O</math>の連結性から「<math>I, O</math>のどちらが左側であるかは曲線全体で変わらない」ことが言える。
ここで円の場合を考える。<math>\Pi</math>に直交座標<math>u, v</math>を入れると向心加速度の議論から「加速度ベクトル=主法線ベクトルは円の中心を向く」ので、「円の正の向きは円の内部を左手に見る進行方向」である。
任意の正則単純閉曲線<math>\gamma</math>に対して自己交叉を起こさないまま円へ連続変形する可逆写像が存在し、その変形に於いて「左側」と「<math>I, O</math>」の対応は変化しない。則ち、円で確認された「正の向きは囲まれた内部を左手に見る向き」は任意の正則単純閉曲線で成り立つ。
つまり、単純閉曲線の正の向きは点を動かしたときに'''自身の囲む領域の内部を左手に見る向き'''である。負の向きは左手に外部を見る向きである。
集合<math>A</math>に含まれる任意の2点に対してそれらを端点とする滑らかな曲線<math>C</math>をとれるとき、<math>A</math>は'''弧状連結'''であるという。
弧状連結集合<math>S</math>内の任意の閉曲線<math>\gamma</math>に対して1点に退化するような連続変形が可能なとき、<math>S</math>は'''単連結'''であるという。単連結でない集合は'''多重連結'''であるという。
平面<math>\Pi\subset\mathbb{R}^n</math>に含まれる単連結集合<math>S</math>に対し、<math>\hat{\Pi}:=\Pi\cup\{\infty\}</math>とすると集合<math>\hat{\Pi}\setminus{S}</math>は連結である。逆も成り立つ。
なお、「<math>A</math>が連結集合である」ことは「補集合<math>\overline{A}</math>が非連結集合である」ことを意味しない。そのため「単連結な連結集合」も考えられ、特に「単連結な領域」はこの先頻繁に登場する。
集合<math>A</math>に含まれる任意の2点を結んだ線分が<math>A</math>に包含されるとき、<math>A</math>は'''凸型'''であるという。凸型集合でない集合は'''凹型'''であるという。
集合<math>A</math>内の1点を固定してそこから<math>A</math>内任意点へ引いた線分が<math>A</math>に包含されるとき、<math>A</math>は'''星状'''(星型)であるという。このとき固定した点を'''星の中心'''という。凸型集合は全て星状集合である。
単純閉曲線<math>\gamma</math>を境界とする内部<math>I</math>に関して<math>I\cup\gamma</math>が凸型集合であるとき、<math>\gamma</math>を'''卵形線'''(凸単純閉曲線・オーヴァル)という。
曲線<math>C</math>の曲率関数<math>\kappa(s)</math>が<math>C^3</math>級であるとき、<math>\kappa'(s_0)=0</math>を満たす点<math>\mathrm{P}(s_0)</math>を<math>C</math>の'''頂点'''という。
例えば、標準楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>の頂点は4点<math>(\pm{a},0),(0,\pm{b})</math>である。このことは、<math>\mathbb{R}^2</math>上曲線<math>C:\boldsymbol{r}=x(t)\boldsymbol{e}_x(t)+y(t)\boldsymbol{e}_y(t)</math>に対する曲率の公式<math>\kappa(t)=\frac{\left|\frac{dx}{dt}\frac{d^2y}{dt^2}-\frac{dy}{dt}\frac{d^2x}{dt^2}\right|}{\left\{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2\right\}^\frac{3}{2}}</math>と<math>\frac{ds}{dt}>0</math>を用いて確かめられる。
実は、この事実は楕円に限らないことが以下の定理で示される。
{{定理|(ムコパディヤーヤの定理・四頂点定理)}}
<math>\mathbb{R}^2</math>上の滑らかな卵形線は少なくとも4つの頂点を持つ。
{{定理終わり}}
*証明
:滑らかな卵形線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)\quad(s\in[a, b])</math>に対して曲率関数<math>\kappa(s)</math>は滑らかであり、<math>\kappa\in C^3</math>を満たす。
:卵形線は単純閉曲線なので<math>\mathrm{P}(a)=\mathrm{P(b)}</math>であり、<math>\kappa(a)=\kappa(b)</math>。
:曲率関数が定数関数のときは<math>\kappa\in C^\infty</math>且つ常に<math>\kappa'(s)=0</math>なので曲線を構成するすべての点が頂点であり、明らかに定理を満たす。
:曲率関数が定数関数でないとする。
:ワイエルシュトラスの極値定理より<math>\kappa(s)</math>は<math>s\in[a, b]</math>のどこかで最大値・最小値をとり、その点で<math>\kappa'(s)=0</math>を満たす。
:従って少なくとも2つの頂点を持つ。
:ここで、頂点がこの2つのみと仮定する。
:曲率が最大値・最小値をとる点をそれぞれ<math>\mathrm{M, N}</math>と置く。
:線分<math>\mathrm{MN}</math>を含む直線を<math>x</math>軸とし、その垂直方向に<math>y</math>軸をとる。
:<math>s</math>が増加すると曲線上の点が<math>\mathrm{N}\to\mathrm{M}</math>のように動くとき、
:<math>\kappa(s)</math>は最小値から最大値に向かって増大し、他に頂点がないので狭義単調増加である。
:同様に、<math>\mathrm{M}\to\mathrm{N}</math>の向きでは<math>\kappa(s)</math>は狭義単調減少である。
:従って、<math>\kappa'(s)y(s)\neq0</math>の正の側だけ考えれば良い。
:<math>y(a)=y(b)=0</math>に注意すると部分積分して
:<math>0<\int_a^b \kappa'(s)y(s)ds=-\int_a^b \kappa(s)y'(s)ds</math>
:主法線ベクトル<math>\boldsymbol{n}(s)= \begin{pmatrix} \xi_1(s) \\ \xi_2(s) \end{pmatrix}</math>を考えると二次元版フレネ=セレーの公式から<math>\frac{d\boldsymbol{n}}{ds}=-\kappa\frac{d\boldsymbol{r}}{ds}</math>なので
:<math>\xi'_2(s)=-\kappa(s)y'(s)</math>
:よって
:<math>-\int_a^b \kappa(s)y'(s)ds=\int_a^b \xi_2(s)ds = \left[\xi_2(s)\right]_a^b=0</math>
:なので矛盾した不等式<math>0<0</math>を得る。
:則ち、<math>\mathrm{M, N}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在する。
:そのような点を<math>\mathrm{L}</math>と置く。
:<math>\mathrm{L}</math>が<math>\mathrm{N}\to\mathrm{M}</math>という経路の途中にあるとする。
:このとき、<math>\mathrm{L}</math>以外に<math>\kappa'(s)=0</math>を満たす点が存在すると「<math>\mathrm{M}\to\mathrm{N}</math>という経路の途中にそのような点が無い」という最初の仮定に反するので
:<math>\mathrm{M, N, L}</math>以外では<math>\kappa'(s)y(s)>0</math>である。
:同様に部分積分を行うことで矛盾した不等式を得、<math>\mathrm{M, N, L}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在することが判る。
:この時点で「<math>\mathrm{M, N}</math>間の二つの経路のいずれにも<math>\kappa'(s)=0</math>を満たす点が存在しない」という仮定が否定されたのでこれ以上背理法を適用することはできない。
:よって、頂点個数の最小値は<math>4</math>である。//
最小値4をとる卵形線が実際に存在することは楕円の例で確かめた。
この定理は「卵形線」を「(正則)単純閉曲線」に取り換えてもそのまま成り立つことが知られている。一般の閉曲線でこの定理を成り立たせるには追加の条件が必要となる。
先程も述べたように、接ベクトルと単位主法線ベクトルは2次元以上の空間内部にある曲線ならば定義することができる。そして、<math>\boldsymbol{t}\cdot\boldsymbol{n}=0</math>も必ず成り立つ。よって、<math>\boldsymbol{e}_t\cdot\boldsymbol{e}_n=0</math>の両辺を<math>s</math>で微分して
:<math>\frac{d\boldsymbol{e}_t}{ds}\cdot\boldsymbol{e}_n+\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=0</math>
:<math>\therefore \boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\boldsymbol{n}\cdot\boldsymbol{e}_n=-\kappa</math>
ここで「基底分解に於ける成分はその基底との内積に等しい」という性質から、<br/>
一般次元に於いても「<math>\frac{d\boldsymbol{e}_n}{ds}</math>の接線方向成分は<math>-\kappa(s)</math>」であることが判る。
ここで<math>C^2</math>級曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>に対して単位主法線<math>\boldsymbol{e}_n(s)</math>を対応させることを考える。この対応を'''ガウス表示'''という。
<math>\boldsymbol{e}_n(s)</math>を二次までテイラー展開すると<math>\Delta s>0</math>を微小量として
:<math>\boldsymbol{e}_n(s+\Delta s)=\boldsymbol{e}_n(s)+\frac{d\boldsymbol{e}_n(s)}{ds}\Delta s + O(\Delta s^2)</math>
ここで<math>\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\kappa</math>より、<math>s</math>を<math>\Delta s</math>だけ動かしたときの接線方向の速さは<math>|\kappa(s)|\Delta s</math>である(<math>\kappa(s)</math>が正で正の向き、負で負の向きに動くとする)。
閉曲線に対してはガウス表示によって法線方向の変化を完全に捉えられるので、<math>\kappa(s)</math>を微小量<math>\Delta s</math>に関して積分した<math>\int_a^b \kappa(s)ds</math>を考えてみる。
ガウス表示では曲線を単位主法線ベクトルの描く単位円として考えることができる。閉曲線では<math>\mathrm{P}(a)=\mathrm{P}(b)</math>より明らかに<math>\boldsymbol{e}_n(a)=\boldsymbol{e}_n(b)</math>であり、閉曲線が一周する間にベクトル<math>\boldsymbol{e}_n(s)</math>はこの単位円を<math>m(\in\mathbb{Z})</math>周する<sup>※</sup>。
<small>※物理的には「円そのものが動いても円周上の質点は『この円をどっちの方向に何周したか』という情報しか持たない」ので、単位円が動くことは議論にあまり関係ない</small>
弧度法より単位円を<math>m</math>周する符号付き道のりは<math>2\pi{m}</math>であり、ガウス表示より<math>\int_a^b \kappa(s)ds=2\pi{m}</math>。
従って、<math>m=\frac{1}{2\pi}\int_a^b \kappa(s)ds</math>
この<math>m</math>を閉曲線の'''回転数'''と呼ぶことにする。
曲率が負の場合には積分値が途中で相殺されてしまうので、絶対値を付けて積分した
:<math>\mu:=\int_a^b |\kappa(s)|ds</math>
という量を考えることにする。
これを閉曲線の'''全曲率'''と呼ぶ。
全曲率に対して以下の定理が成り立つ。
{{定理|(フェンヒェルの定理)}}
滑らかな閉曲線の全曲率は<math>\mu\geq2\pi</math>を満たす。等号成立の場合は卵形線である。
{{定理終わり}}
証明は省略する。
===曲面===
多変数解析で既に扱った、三次元空間に於ける曲面の陽関数表示<math>z=f(x, y)</math>を'''モンジュ表示'''という。<math>f(x, y, z)=\mathrm{const}.</math>と陰関数表示された曲面は陰関数定理が成り立つ範囲でモンジュ表示に直すことができる。
一次式で陰関数表示される曲面を'''一次曲面'''という。平面の方程式より、一次曲面は全て平面である。
二次式で陰関数表示される曲面を'''二次曲面'''という。
以下、三次元空間に於ける二次曲面の例を挙げる。各係数は非退化条件を満たすとする。なお、「直線に平行な平面」は「直線を法線とする平面に垂直な平面」を意味することに注意。
*'''球面'''(sphere)
:高校数学で扱ったように、点<math>(a, b, c)</math>を中心とする半径<math>r</math>の球面の方程式は<math>(x-a)^2+(y-b)^2+(z-c)^2=r^2</math>である。この球面上の点の位置ベクトルは<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>なので、球面が満たすベクトル方程式は一般に<math>\|\boldsymbol{r}-\boldsymbol{a}\|=\mathrm{const}.</math>である。これは円のベクトル方程式の次元を上げたものである。
*'''楕円面'''(ellipsoid)
:楕円の方程式を拡張した方程式<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1</math>が表す曲面である。<math>xyz</math>空間の基本面で切った断面は全て楕円となる。
*'''楕円拋物面'''(elliptic paraboloid)
:楕円の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は拋物線となる。
*'''双曲拋物面'''(hyperbolic paraboloid)
:双曲線の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}-\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は双曲線、平行な平面で切った断面は拋物線となる。また、原点は鞍点である。
*'''一葉双曲面'''(hyperboloid of one sheet)
:楕円面の方程式の一つの項の符号を変えた<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は双曲線となる。
*'''二葉双曲面'''(hyperboloid of two sheet)
:楕円面の方程式の二つの項の符号を変えた<math>\frac{x^2}{a^2}-\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。断面の分類は一葉双曲面と同じだが、<math>m^2<c^2</math>のときは平面<math>z=m</math>と交わらないため「二葉」と名付けられている。
*'''錐面'''(conical surface)
:方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>の表す曲面。<math>xy</math>平面との交点は原点のみであり、<math>yz</math>平面・<math>zx</math>平面で切った断面は直線である。
閉区間<math>I\subset\mathbb{R}</math>上の一変数ベクトル関数<math>\boldsymbol{r}(t)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t) \quad(t\in I)</math>の解集合は次元に依らず曲線を表した。
同様に、領域<sup>※</sup><math>D\subset\mathbb{R}^2</math>上の二変数ベクトル関数<math>\boldsymbol{r}(t, u)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t, u) \quad({\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)}\in D)</math>の解集合は次元に依らず曲面を表すと考えられる。
厳密には[[線型代数学/基底と次元|階数・退化次数の定理]]<!-- 次元定理・線型写像の基本定理 -->などを用いてこのことを確かめられる。
<small>※ここでいう「領域」は冒頭で厳密に定義した「領域」であることに注意。</small>
曲線と同様に、曲面の'''パラメータ表示'''と'''ベクトル表示'''は次のように定義される。
:パラメータ表示:<math>\begin{cases} x_1&=&r_1(t, u) \\ x_2&=&r_2(t, u) \\ &\,\,\vdots& \\ x_n&=&r_n(t, u) \end{cases}</math>
:ベクトル表示:<math>\left\{\boldsymbol{r}(t, u) \,\bigg|\, {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D \right\}</math>
また、<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>のようにも表す。
例えば、<math>k>l>0</math>として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (k+l\cos u)\cos t \\ (k+l\cos u)\sin t \\ l\sin u \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq 2\pi \\ 0 \leq u \leq 2\pi \end{array} \right\})</math>は'''トーラス'''のベクトル表示である。
<math>\mathbb{R}^3</math>上の平面の方程式は高校数学に於いて<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>として一次式<math>ax+by+cz+d=0</math>と表せることを学んだ。
これのベクトル方程式を求めてみよう。
:①<math>c=0</math>のとき
::平面の方程式は<math>\begin{cases} ax+by+d=0 \\ z=\mathrm{const}. \end{cases}</math>
::[1]<math>b=0</math>のとき
:::平面の方程式は<math>\begin{cases} ax+d=0 \\ y=\mathrm{const}. \\ z=\mathrm{const}. \end{cases}</math>
:::<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>より<math>a\neq0</math>
:::<math>y=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} -\frac{d}{a} \\ t \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} -\frac{d}{a} \\ 0 \\ 0 \end{pmatrix}</math>
::[2]<math>b\neq0</math>のとき
:::<math>x=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} t \\ -\frac{a}{b}t-\frac{d}{b} \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 1 \\ -\frac{a}{b} \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} 0 \\ -\frac{d}{b} \\ 0 \end{pmatrix}</math>
:②<math>c\neq0</math>のとき
::<math>x=t, y=u</math>と置換すると
::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} t \\ u \\ -\frac{a}{c}t-\frac{b}{c}u-\frac{d}{c} \end{pmatrix}</math>
::<math>\boldsymbol{r}=t\begin{pmatrix} 1 \\ 0 \\ -\frac{a}{c} \end{pmatrix}+u\begin{pmatrix} 0 \\ 1 \\ -\frac{b}{c} \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ -\frac{d}{c} \end{pmatrix}</math>
なお、ここから平面のベクトル方程式が一般に<math>\boldsymbol{r}=\boldsymbol{a}+t\boldsymbol{b}+u\boldsymbol{c}</math>という「直線のベクトル方程式を拡張した形」であることがわかる。
<math>\boldsymbol{r}(t, u)\in C^1</math>且つ<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}\neq\boldsymbol{0}</math>である曲面を'''滑らか'''な曲面という。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>とその上の点<math>\mathrm{P}_0=(a, b)</math>に対し、曲線<math>\boldsymbol{r}=\boldsymbol{r}(a, u), \boldsymbol{r}=\boldsymbol{r}(t, b)</math>をそれぞれ点<math>\mathrm{P}_0</math>に於ける'''<math>t</math>曲線'''・'''<math>u</math>曲線'''という。
<math>\boldsymbol{r}(t, u)\in C^1</math>であるとき、偏導関数の定義から
:<math>\frac{\partial}{\partial{u}}\boldsymbol{r}(a, u)=\frac{d}{du}\boldsymbol{r}(a, u)</math>
:<math>\frac{\partial}{\partial{t}}\boldsymbol{r}(t, b)=\frac{d}{dt}\boldsymbol{r}(t, b)</math>
ここで<math>a, b</math>をそれぞれ<math>t</math>軸・<math>u</math>軸上で動かすことで<math>t</math>曲線・<math>u</math>曲線の接ベクトルがそれぞれ<math>\frac{\partial{\boldsymbol{r}}}{\partial{u}}, \frac{\partial{\boldsymbol{r}}}{\partial{t}}</math>であると判る。これらを曲面のパラメータ方向の'''接ベクトル'''という。
これらの接ベクトルが平行でないとき、曲面<math>S</math>上の任意の点<math>\mathrm{P}</math>に対して<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>の張る平面が定まる。これを曲面<math>S</math>の点<math>\mathrm{P}</math>に於ける'''接平面'''という。曲線の接線は一次元ベクトル空間<math>\left\{ \xi\frac{d\boldsymbol{r}}{dt} \bigg| \xi \in\mathbb{R} \right\}</math>で表されたが、曲面の接平面は二次元ベクトル空間<math>\left\{ \xi\frac{\partial{\boldsymbol{r}}}{\partial{t}}+\eta\frac{\partial{\boldsymbol{r}}}{\partial{u}} \bigg| \xi, \eta \in \mathbb{R} \right\}</math>で表される。このような接ベクトル全体が張るベクトル空間を一般に'''接空間'''と呼ぶ。
接ベクトルの組が一次独立である曲面を'''正則'''な曲面という。滑らかな曲面は正則曲面である。
曲面<math>S</math>の接平面に垂直なベクトルを<math>S</math>の'''法線ベクトル'''という。
三次元空間ならば接平面を張る2ベクトルの外積<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}} \times \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>で求められる。
モンジュ表示された曲面<math>S:z=f(x, y)</math>に対して接平面の存在性(つまり曲面の正則性)は「二変数関数<math>f</math>の全微分可能」に対応した。ベクトル表示された曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>に対しては「ベクトル関数<math>\boldsymbol{r}</math>の全微分可能性」だけでは足りず、「ヤコビ行列<math>\frac{\partial{(\boldsymbol{r})}}{\partial{(t, u)}}</math>の階数が2」も要求される。
以下、正則曲面のみ扱う。
<math>\boldsymbol{r}(t, u)</math>の微小変化は全微分で与えられる。
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
則ち、各パラメータを同時に<math>\begin{pmatrix} t \\ u \end{pmatrix}\to\begin{pmatrix} t+dt \\ u+du \end{pmatrix}</math>と単調に動かしたとき、対応する曲面上の点が描く領域は2ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt, \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行四辺形として近似できる。その微小面積は線型代数の内容から
:<math>\sqrt{ \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}}dt \right\|^2 \left\| \frac{\partial{\boldsymbol{r}}}{\partial{u}}du \right\|^2 - \left\{ \left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right) \right\}^2 }=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
である。
これを領域<math>D=\mathrm{dom}\,S</math>で重積分してやれば曲面の表面積('''曲面積''')が求まると考えられる。
{{定理|(曲面積)}}
<math>E := \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2,\quad F := \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}},\quad G := \left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2</math>とすると、<br>
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>の領域<math>D</math>に於ける曲面積は
:<math>S=\iint_D \sqrt{EG-F^2}dtdu</math>
{{定理終わり}}
この<math>E, F, G</math>を<math>S</math>の'''第一基本量'''と呼ぶ。また、<math>dS:=\sqrt{EG-F^2}dtdu</math>を'''面素'''(面積素・面積要素)と呼ぶ。
<math>t, u</math>が共通のパラメータ<math>\theta</math>で媒介変数表示されるとき、曲面は曲線に退化するので線素を考えられる。
具体的には、
:<math>dl=\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|d\theta</math>
より
:<math>\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|^2=\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}</math>
ここで合成関数の常微分公式より
:<math>\frac{d\boldsymbol{r}}{d\theta}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{d\theta}+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{d\theta}</math>
なので
:<math>\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}=\left\|\frac{d\boldsymbol{r}}{dt}\right\|^2\left(\frac{dt}{d\theta}\right)^2+2\left(\frac{d\boldsymbol{r}}{dt}\cdot\frac{d\boldsymbol{r}}{du}\right)\frac{dt}{d\theta}\frac{du}{d\theta}+\left\|\frac{d\boldsymbol{r}}{du}\right\|^2\left(\frac{du}{d\theta}\right)^2</math>
:<math>=E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2</math>
よって
:<math>dl=\sqrt{E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2}d\theta=\sqrt{E(dt)^2+2Fdtdu+G(du)^2}</math>
このように、線素は<math>\theta</math>のとり方に依存しない。
そこで、最後の式で右辺を二乗した
:<math>I:=E(dt)^2+2Fdtdu+G(du)^2</math>
を<math>S</math>の'''第一基本形式'''と定める。
第一基本形式は二次形式になっていることが見て取れるので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{K}:=\begin{pmatrix} E & F \\ F & G \end{pmatrix}</math>とおくと
:<math>I={}^t\!\boldsymbol{v} \mathbf{K} \boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{K}</math>を'''第一基本行列'''という。
ここで<math>I=dl^2>0</math>なので<math>\mathbf{K}</math>は正定値行列である。
また、<math>\boldsymbol{x}_i=\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{x}_j=\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>と置いて第一基本量の定義を思い返してみると<math>\mathbf{K}_{ij}=\boldsymbol{x}_i \cdot \boldsymbol{x}_j</math>なのでこの行列は接ベクトルに関するグラム行列である。この意味でも、<math>\mathbf{K}</math>は正定値行列である。
また、面素の式で根号の中身が<math>\det\mathbf{K}</math>に等しいことも判る。
則ち、第一基本量が曲面の本質であると予想される。
<math>F=0 \land E=G=\lambda</math>であるとき、<math>\mathbf{K}=\lambda\mathbf{E}_2</math>である。このときのパラメータの組<math>(u, v)</math>を曲面の'''等温座標系'''という。
等温座標系で表示された曲面<math>S</math>に対し、第一基本形式は<math>I=\lambda(dt^2+du^2)</math>と二次形式の標準形となっている。則ち、等温座標系へのパラメータ変換は主軸変換である。
面素を考えると<math>dS=\lambda^2dtdu</math>と非常に単純な形となるほか、曲面上の角度計算が平面の場合と全く同じ式で与えられることも等温座標系の利点である。
曲面<math>S</math>上の各点<math>\mathrm{P}</math>に対して単位法線ベクトル<math>\boldsymbol{n}(\mathrm{P})</math>を考える。ベクトル表示の定義域<math>D</math>でベクトル場<math>\boldsymbol{n}(\mathrm{P})</math>が連続であるとき、<math>S</math>は'''向き付け可能'''であるという。
向き付け不能な曲面の例として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (u\cos t+2)\sin 2t \\ (u\cos t+2)\cos 2t \\ u\sin t \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq \pi \\ -1 \leq u \leq 1 \end{array} \right\})</math>と表される'''メビウスの帯'''が挙げられる。
メビウスの帯が向き付け不能である証明を概説する。
:接ベクトルをそれぞれ求める。簡単のため<math>u=0</math>として考える。単位法線ベクトルは外積を正規化して得るが、向きの取り方で正負の符号が付く。どちらの符号を採用するにしろ<math>\boldsymbol{n}(\boldsymbol{r}(0, 0))\neq\boldsymbol{n}(\boldsymbol{r}(\pi, 0))</math>を得、<math>\boldsymbol{r}(0, 0)=\boldsymbol{r}(\pi, 0)</math>より同じ点に対して異なる法線ベクトルを出力するので<math>\boldsymbol{n}(\mathrm{P})</math>はwell-definedではなく、向き付け可能性の定義を満たさない。//
四次元以上の空間では法線ベクトルの方向を複数とれるため法線ベクトル場は扱いにくい。そこで、法線ベクトルに依らない定義を考えたい。
2つの滑らかな曲面<math>S_1, S_2</math>が以下を満たすとき、
#パラメータ<math>(t_1, u_1), (t_2, u_2)</math>の間に滑らかな全単射<math>\begin{cases}t_2 =\phi(t_1, u_1) \\ u_2=\psi(t_1, u_1) \end{cases}</math>が存在する。
#この変数変換のヤコビ行列<math>\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}</math>が正則。
#<math>\boldsymbol{r}_1(t_1, u_1)=\boldsymbol{r}_2(t_2, u_2)</math>
この2つは'''パラメータ変換で同値'''という。
このとき、ヤコビアンが正であるパラメータの組は'''同じ向き'''、負であるパラメータの組は'''逆向き'''であるという。
任意の<math>(t_1, u_1)</math>に対して開近傍<math>U \subset \mathrm{dom}\,S_1</math>をとったとき、どの<math>U</math>上でも<math>\det\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}>0</math>を満足するならば<math>S_1</math>は'''向き付け可能'''という。
向き付け可能な曲面の接空間に対して右手系を成すような向きの法線ベクトルを'''外向き法線ベクトル'''と呼ぶ。
外向き法線の向く側を曲面の'''表'''、その反対側を曲面の'''裏'''と定義する。
<math>\partial{S}=\varnothing</math>を満たす正則曲面<math>S</math>を'''閉曲面'''という。ジョルダンの曲線定理を拡張した定理('''ジョルダン・ブラウワーの分離定理''')によって閉曲面が空間を内部・外部に分割することが保証される。内部に面する向きを閉曲面の裏、外部に面する向きを閉曲面の表と定義する。
パラメータ空間の座標軸の向きの組み合わせが<math>xy</math>平面と同じとき、外向き法線で定義される閉曲面の表裏は内部・外部から定義される表裏に一致する。
===回転面===
ここでは三次元空間内の曲面について考える。
高校数学で回転体を扱ったが、領域の回転体の表面である曲面は元の領域の疆界である単純閉曲線を軸に関して回転したものである。そこで、平面上の任意の曲線を回転すると曲面('''回転面''')を得ると考えられる。
簡単な場合として、<math>x\geq0</math>で定義された<math>zx</math>平面上の曲線<math>z=f(x)</math>を<math>y</math>軸に関して回転させた回転面を考える。
:任意の<math>k\in[0,\infty)</math>に関して曲線上の点は<math>\begin{pmatrix} x \\ z \end{pmatrix}=\begin{pmatrix} k \\ f(k)\end{pmatrix}</math>と与えられる。
:領域<math>\left\{ {\scriptstyle\left(\begin{array}{c} x \\[-6pt] z \end{array}\right)} \big| x \leq k \right\}</math>を<math>y</math>軸に関して回転した回転体を平面<math>z=f(k)</math>で切った断面は半径<math>k</math>の閉円盤であり、疆界円周上の点を<math>\begin{pmatrix} x \\ y \\ f(k) \end{pmatrix}</math>とすると<math>k=\sqrt{x^2+y^2}</math>である。
:則ち回転体の疆界である回転面上の点<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は方程式<math>z=f(\sqrt{x^2+y^2})</math>を満たし、逆にこの方程式を満たす<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は回転面上にある。
纏めると以下のようになる。
{{定理|(回転面の方程式)}}
<math>zx</math>平面上の曲線<math>z=f(x)\quad(x\geq0)</math>を<math>y</math>軸に関して回転させた回転面の方程式は
:<math>z=f(\sqrt{x^2+y^2})</math>
{{定理終わり}}
<math>z</math>軸・<math>x</math>軸に関する回転面の方程式は変数を輪環の順に入れ替えることで得られる。
回転面に対し、元の曲線を'''母線'''という。
母線が直線である回転面は'''円錐'''である。
:<math>z=mx+n\quad(m\neq0,x\geq0)</math>とすれば<math>y</math>軸に関して回転した曲面の方程式は
:<math>z=m\sqrt{x^2+y^2}+n</math>
:<math>z-n = m\sqrt{x^2+y^2}</math>
これを両辺二乗すると
:<math>(z-n)^2=m^2x^2+m^2y^2</math>
であり、錐面の方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>を満たしていることがわかる。
回転軸が傾いている場合、<math>xyz</math>空間の回転行列<math>\mathbf{R}</math>を利用することで各軸に関する回転に帰着することもできるが、ここでは曲面のベクトル表示を扱ったのでベクトル方程式で回転を記述することを考えたい。
点<math>\mathrm{O}</math>から<math>\boldsymbol{r}</math>とそれに平行でない単位ベクトル<math>\boldsymbol{e}</math>が伸びており、そのなす角が<math>\theta</math>であるとする。<math>\boldsymbol{r}</math>の終点<math>\mathrm{P}</math>を含み<math>\boldsymbol{e}</math>を法線とする平面を<math>\Pi</math>、<math>\Pi</math>と直線<math>\{k\boldsymbol{e} \mid k>0\}</math>の交点を<math>\mathrm{N}</math>、<math>\mathrm{P}</math>を<math>\Pi</math>内で<math>\mathrm{N}</math>を中心として<math>\phi</math>回転した点を<math>\mathrm{Q}</math>、<math>\mathrm{NQ}</math>から<math>\mathrm{NP}</math>へ降ろした垂足を<math>\mathrm{R}</math>と置く。但し、回転角<math>\phi</math>の正の向きは<math>\boldsymbol{e}</math>を右螺子の進む向きとする方向に定める。
このとき、<math>\boldsymbol{r}</math>を<math>\boldsymbol{e}</math>に関して<math>\phi</math>だけ回転させたベクトル<math>\boldsymbol{r}'</math>は以下のように表される。
{{定理|(ロドリゲスの公式)}}
:<math>\boldsymbol{r}'=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
{{定理終わり}}
*証明
:<math>\boldsymbol{r}'=\overrightarrow{\mathrm{OQ}}=\overrightarrow{\mathrm{ON}}+\overrightarrow{\mathrm{NR}}+\overrightarrow{\mathrm{RQ}}</math>
:<math>\overrightarrow{\mathrm{ON}}</math>は<math>\boldsymbol{r}</math>の<math>\boldsymbol{e}</math>への正射影ベクトルなので
::<math>\overrightarrow{\mathrm{ON}}=\frac{\boldsymbol{r}\cdot\boldsymbol{e}}{\boldsymbol{e}\cdot\boldsymbol{e}}\boldsymbol{e}=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}</math>
:<math>\triangle\mathrm{NQR}</math>を考えると<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>と<math>\|\overrightarrow{\mathrm{NR}}\|=\|\overrightarrow{\mathrm{NQ}}\|\cos\phi</math>及び<math>\overrightarrow{\mathrm{NR}}/\!\!/\overrightarrow{\mathrm{NP}}</math>より
::<math>\overrightarrow{\mathrm{NR}}=\overrightarrow{\mathrm{NP}}\cos\phi=(\overrightarrow{\mathrm{OP}}-\overrightarrow{\mathrm{ON}})\cos\phi=\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi</math>
:<math>\boldsymbol{r}\times\boldsymbol{e}</math>は外積の定義から<math>\overrightarrow{\mathrm{NP}}</math>を<math>\Pi</math>上で<math>-\phi</math>方向に<math>\frac{\pi}{2}</math>だけ回転させたベクトルになるので、
:<math>\boldsymbol{r}\times\boldsymbol{e}/\!\!/\overrightarrow{\mathrm{RQ}}</math>と<math>\|\overrightarrow{\mathrm{RQ}}\|=\|\overrightarrow{\mathrm{NQ}}\|\sin\phi</math>及び<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>から
::<math>\overrightarrow{\mathrm{RQ}}=-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
:これらを足して
::<math>\boldsymbol{r}'=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}+\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})(1-\cos\phi)\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>//
この証明ではベクトルの平行移動を用いているのでアフィン空間を前提とするが、この式そのものはアフィン構造に依存してないので一般のベクトル空間で成り立つ。
また、回転後のベクトルは母線のパラメータ<math>t</math>に加えて回転角<math>\phi</math>もパラメータとして有するので、<math>\boldsymbol{r}'(t, \phi)</math>という二変数ベクトル関数となって曲面を表すことになる。則ち、「曲線を回転すれば曲面を得る」という直感は正しい。
ロドリゲスの公式の応用として、例えば円錐のベクトル方程式が<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\mathrm{const}.</math>であることが導ける。
:円錐頂点の位置ベクトルを<math>\boldsymbol{p}</math>、軸ベクトルを<math>\boldsymbol{a}</math>、<math>\boldsymbol{a}</math>と角度<math>\alpha</math>をなす単位ベクトルを<math>\boldsymbol{v}</math>とする。このとき直線<math>\{k\boldsymbol{v}\mid k>0\}</math>が円錐の母線であり、母線と交わる向きである軸の法線ベクトルを<math>\boldsymbol{b}</math>とおく。
:ロドリゲスの公式より<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}</math>の周りに<math>\theta</math>だけ回転させたベクトル<math>\boldsymbol{v}'</math>は
::<math>\boldsymbol{v}'=\boldsymbol{v}\cos\theta+(\boldsymbol{v}\cdot\boldsymbol{e}_a)\,\mathrm{versin}\,\theta\,\boldsymbol{e}_a-(\boldsymbol{v}\times\boldsymbol{e}_a)\sin\theta</math>
:ここで<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}, \boldsymbol{b}</math>方向に基底分解すると
::<math>\boldsymbol{v}=\cos\alpha\,\boldsymbol{e}_a+\sin\alpha\,\boldsymbol{e}_b</math>
:なので、
::<math>\boldsymbol{v}'=\cos\alpha\boldsymbol{e}_a+\sin\alpha\{\boldsymbol{e}_b\cos\theta+(\boldsymbol{e}_a\times\boldsymbol{e}_b)\sin\theta\}</math>
:円錐上の点<math>\boldsymbol{r}</math>の位置ベクトルは頂点から母線方向に<math>\rho</math>だけ進むので
::<math>\boldsymbol{r}=\boldsymbol{p}+\rho\boldsymbol{v}'</math>
:であり、
::<math>\boldsymbol{r}-\boldsymbol{p}=\rho\boldsymbol{v}'</math>
:ここで<math>\|\boldsymbol{v}'\|=\|\boldsymbol{v}\|=1</math>より
::<math>\rho=\|\boldsymbol{r}-\boldsymbol{p}\|</math>
:このベクトルと軸ベクトルの内積をとると
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\boldsymbol{v}'\cdot\boldsymbol{a}</math>
::<math>=\rho\{\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})+\sin\alpha\cos\theta(\boldsymbol{e}_b\cdot\boldsymbol{a})+\sin\alpha\sin\theta(\boldsymbol{e}_a\times\boldsymbol{e}_b)\cdot\boldsymbol{a}\}</math>
:<math>\boldsymbol{e}_b, \boldsymbol{e}_a\times\boldsymbol{e}_b</math>とも<math>\boldsymbol{a}</math>に直交するので後ろの二項は消えて
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})=\|\boldsymbol{r}-\boldsymbol{p}\|\|\boldsymbol{a}\|\cos\alpha</math>
:則ち
::<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\|\boldsymbol{a}\|\cos\alpha=\mathrm{const}.</math>//
円錐が先に与えられている場合は「<math>\boldsymbol{r}-\boldsymbol{p}</math>が母線の方向ベクトルなのは図より自明」とできるが、ここでは「母線が先に与えられて回転によって円錐が構成される」という立場を採ったのでロドリゲスの公式が効くのである。
ロドリゲスの公式で微小回転<math>d\phi</math>の場合を考える。
正弦関数・余弦関数の部分を1項目までテイラー展開して<math>\cos(d\phi)=1+O(d\phi^2), \sin(d\phi)= d\phi+O(d\phi^3)</math>なので<math>\mathrm{versin}(d\phi)=O(d\phi^2)</math>であり、
:<math>\boldsymbol{r}' = \boldsymbol{r}-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
ここで<math>d\boldsymbol{r}=\boldsymbol{r}'-\boldsymbol{r}</math>なので
:<math>d\boldsymbol{r}=-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
則ち、ベクトル関数の全微分は微小回転で近似される。
オーダー記法の項を無視して<math>\boldsymbol{\omega}=\frac{d\phi}{dt}\boldsymbol{e}</math>と置くと
:<math>d\boldsymbol{r}=(d\phi\boldsymbol{e})\times\boldsymbol{r}</math>
これの両辺を<math>dt</math>で割って
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{\omega}\times\boldsymbol{r}</math>
これは剛体の速度公式である。
ロドリゲスの公式の一次変換表記を考える。
<math>\boldsymbol{r}=\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}, \boldsymbol{r}'=\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}, \boldsymbol{e}=\begin{pmatrix} a \\ b \\ c \end{pmatrix}</math>とすると、
:<math>\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}=\cos\phi\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}+(ar_1+br_2+cr_3)\mathrm{versin}\,\phi\begin{pmatrix} a \\ b \\ c \end{pmatrix} - \sin\phi \begin{pmatrix} cr_2-br_3 \\ ar_3-cr_1 \\ br_1-ar_2 \end{pmatrix}</math>
:<math>=\begin{pmatrix} (\cos\phi + a^2\,\mathrm{versin}\,\phi) r_1 + (ab\,\mathrm{versin}\,\phi -c\sin\phi) r_2 + (ca\,\mathrm{versin}\,\phi + b\sin\phi) r_3 \\ (ab\,\mathrm{versin}\,\phi + c\sin\phi) r_1 + (\cos\phi + b^2\,\mathrm{versin}\,\phi) r_2 + (bc\,\mathrm{versin}\,\phi -a\sin\phi) r_3 \\ (ca\,\mathrm{versin}\,\phi - b\sin\phi) r_1 + (bc\,\mathrm{versin}\,\phi+ a\sin\phi) r_2 + (\cos\phi + c^2\,\mathrm{versin}\,\phi) r_3 \end{pmatrix}</math>
:<math>=\begin{pmatrix} \cos\phi + a^2\,\mathrm{versin}\,\phi & ab\,\mathrm{versin}\,\phi -c\sin\phi & ca\,\mathrm{versin}\,\phi + b\sin\phi \\ ab\,\mathrm{versin}\,\phi + c\sin\phi & \cos\phi + b^2\,\mathrm{versin}\,\phi & bc\,\mathrm{versin}\,\phi -a\sin\phi \\ ca\,\mathrm{versin}\,\phi - b\sin\phi & bc\,\mathrm{versin}\,\phi+ a\sin\phi & \cos\phi + c^2\,\mathrm{versin}\,\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\mathrm{versin}\,\phi</math>を<math>1-\cos\phi</math>に戻して係数行列を<math>1, \cos\phi, \sin\phi</math>の項に分解してみると
:<math>=\begin{pmatrix} a^2+(1-a^2)\cos\phi & ab-ab\cos\phi -c\sin\phi & ca-ca\cos\phi + b\sin\phi \\ ab-ab\cos\phi + c\sin\phi & b^2+(1-b^2)\cos\phi & bc-bc\cos\phi -a\sin\phi \\ ca-ca\cos\phi - b\sin\phi & bc-bc\cos\phi+ a\sin\phi & c^2+(1-c^2)\cos\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left\{ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi\begin{pmatrix} 1-a^2 & -ab & -ca \\ -ab & 1-b^2 & -bc \\ -ca & -bc & 1-c^2 \end{pmatrix} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right\} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left[ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi \left\{ \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}-\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} \right\} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right] \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix}</math>は<math>\boldsymbol{e}</math>の第<math>i</math>成分と第<math>j</math>成分を掛けたものが<math>(i, j)</math>成分となる行列になっていることがわかる。これを<math>\boldsymbol{e}\otimes\boldsymbol{e}</math>と書くことにする。<math>\sin\phi</math>に係る行列を<math>\mathbf{N}</math>と置くと、
:<math>\boldsymbol{r}'=\{\boldsymbol{e}\otimes\boldsymbol{e}+\cos\phi(\mathbf{E}_3-\boldsymbol{e}\otimes\boldsymbol{e})+\sin\phi\mathbf{N}\}\boldsymbol{r}</math>
という表示を得る。
更に、<math>\mathbf{N}^2=\begin{pmatrix} -b^2-c^2 & ab & ca \\ ab & -c^2-a^2 & bc \\ ca & bc & -a^2-b^2 \end{pmatrix}</math>と<math>\|\boldsymbol{e}\|=\sqrt{a^2+b^2+c^2}=1</math>より
:<math>\boldsymbol{e}\otimes\boldsymbol{e}=\mathbf{N}^2+(a^2+b^2+c^2)\mathbf{E}_3=\mathbf{N}^2+\mathbf{E}_3</math>
が成り立つので、最終的に
:<math>\boldsymbol{r}'=(\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2)\boldsymbol{r}</math>
と二次の行列多項式で表示される。
なお、<math>\otimes</math>は発展節で紹介する'''テンソル積'''を表している。
ここで、行列<math>\mathbf{N}</math>についてより具体的に考えてみる。
先ず、<math>{}^t\!\mathbf{N}=-\mathbf{N}</math>が成り立つので<math>\mathbf{N}</math>は反対称行列(歪対称行列・交代行列)である。
<math>\mathbf{N}\boldsymbol{r}</math>を計算すると
:<math>\mathbf{N}\boldsymbol{r}=\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}=\begin{pmatrix} br_3-cr_2 \\ cr_1-ar_3 \\ ar_2-br_1 \end{pmatrix}=\boldsymbol{e}\times\boldsymbol{r}</math>
則ち、<math>\mathbf{N}</math>は<math>\boldsymbol{e}</math>に関する外積(形式的には<math>\boldsymbol{e}\times</math>という左演算)を一次変換とみて表現行列に直したものである。
更に、成分計算により<math>\mathbf{N}^3=-\mathbf{N}</math>という性質が成り立つことも判る。外積を「ベクトルを90°回転させる演算」とみると、二回の演算によって180°回転するということなのでこの結果は妥当である。
ここで行列自然指数関数<math>\exp(\phi\mathbf{N})=\sum_{i=0}^\infty \frac{(\phi\mathbf{N})^i}{i!}</math>を考えてみると上の性質より三次以上の項は<math>\mathbf{N}^4=-\mathbf{N}^2, \mathbf{N}^5=\mathbf{N},\cdots</math>のように全て二次以下に帰着できる。<br>
また、自然指数関数のテイラー展開は絶対収束級数なので各項は可換であり、<math>\mathbf{N}</math>の二次式として纏め直すと
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3 + (\phi-\frac{\phi^3}{3!}+\frac{\phi^5}{5!}-\frac{\phi^7}{7!}+\cdots) \mathbf{N}+(\frac{\phi^2}{2!}-\frac{\phi^4}{4!}+\frac{\phi^6}{6!}-\frac{\phi^8}{8!}+\cdots)\mathbf{N}^2</math>
ここで一次・二次の係数はそれぞれ正弦関数・正矢関数のテイラー展開になっているので結局は
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2</math>
ここから、<math>\exp(\phi\mathbf{N})</math>は角度<math>\phi</math>に関する有限回転に対応することが判った。
このことは以下の考え方でも求まる。<br>
<math>\mathbf{N}</math>の最小方程式は<math>\mathbf{N}^3+\mathbf{N}=\mathbf{O}_3</math>より<math>x(x^2+1)=0</math>であり固有値は<math>0, \pm{i}</math>と求まるので、<math>\exp(\phi\mathbf{N})</math>の対角化行列は
:<math>\begin{pmatrix} e^{0\phi} & 0 & 0 \\ 0 & e^{i\phi} & 0 \\ 0 & 0 & e^{-i\phi} \end{pmatrix}</math>
ここで任意の解析関数<math>f</math>について<math>f(\mathbf{N})</math>のテイラー展開は二次以下の多項式になるので
:<math>\exp(\phi\mathbf{N})=\alpha\mathbf{E}_3+\beta\mathbf{N}+\gamma\mathbf{N}^2</math>
これを実多項式に戻した<math>\alpha+\beta{x}+\gamma{x^2}</math>が<math>e^{\phi{x}}</math>と任意の固有値で一致すればよい(二次補間)ので、
:<math>\begin{cases} e^0 = \alpha \\ e^{i\phi} = i\beta -\gamma \\ e^{-i\phi} = -i\beta-\gamma \end{cases}</math>
:<math>\iff \begin{cases} 1 = \alpha \\ \cos\phi+i\sin\phi = (\alpha -\gamma) + i\beta \end{cases}</math>
:<math>\therefore \begin{cases} \alpha=1 \\ \beta=\sin\phi \\ \gamma=1-\cos\phi=\mathrm{versin}\,\phi \end{cases}</math>
則ち、<math>\mathbf{N}^3=-\mathbf{N}</math>という構造は<math>\Psi_\mathbf{N}(x)=x(x^2+1)</math>という最小多項式に起因するということである。
更に[[表現論]]の観点から見ると、三次直交行列全体である回転群<math>SO(3)</math>に対し、<math>\mathbf{N}</math>は<math>SO(3)</math>の単位元に於ける接空間(三次反対称行列全体・則ちリー代数<math>\mathfrak{so}(3)</math>)の元であり、<math>\exp(\phi\mathbf{N})</math>はリー群<math>SO(3)</math>の元である。ここで行列自然指数関数は「リー代数からリー群へ引き戻す写像」なので'''指数写像'''と呼ばれる。
これが[[#フレネ標搆]]で述べた「直交変換の一次近似が反対称変換」という事実のより正確な表現である。
補足だが、力学で扱う[[w:オイラー角]]というものを導入するとロドリゲスの公式を各座標軸に関する回転の合成で表すこともできる。
===種々の曲率===
ここでは三次元空間内の正則曲面について考える。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>上で定義され弧長パラメータ表示された正則曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t(s), u(s))</math>を考える。
<math>C</math>の接ベクトルは合成関数微分公式より
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}}{ds}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}</math>
と表示される。
ここで両辺の<math>ds</math>を形式的に払うと
:<math>\boldsymbol{t}ds=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
これの自分自身との内積をとると
:<math>\|\boldsymbol{t}\|^2(ds)^2=\left\|\frac{d\boldsymbol{r}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2(du)^2</math>
弧長パラメトライズされた接ベクトルは単位ベクトルであり、右辺のベクトル演算の部分を第一基本量で置き換えると
:<math>ds^2=E(dt)^2+2Fdtdu+G(du)^2</math>
と、第一基本形式を別の方法で得られた。
<math>C</math>の主法線ベクトルは合成関数微分を繰り返し適用することで
:<math>\boldsymbol{n}_C=\frac{d\boldsymbol{t}}{ds}=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d}{ds}\left(\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d}{ds}\left(\frac{du}{ds}\right)</math>
:<math>=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\frac{du}{ds}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\frac{du}{ds}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
:<math>=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\left(\frac{dt}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+2\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}\frac{du}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\left(\frac{du}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
ここで、<math>S</math>の法線ベクトル<math>\boldsymbol{n}_S=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>は一般に<math>\boldsymbol{n}_C</math>と一次従属とは限らない。
後の話を単純にするため<math>\boldsymbol{n}_S</math>を正規化したベクトルを<math>\boldsymbol{e}_S</math>と置いて<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S</math>を計算してみる。
:<math>\boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>より
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{dt}{ds}\right)^2+2\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S\right)\frac{dt}{ds}\frac{du}{ds}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{du}{ds}\right)^2</math>
ここで各内積<math>L=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S,\quad M=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S,\quad N=\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S</math>を<math>S</math>の'''第二基本量'''と呼ぶ。
<math>\boldsymbol{n}_C, \boldsymbol{e}_S</math>のなす角を<math>\psi</math>とすると<math>C</math>の曲率を<math>\kappa_C</math>として
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\kappa_C \cos\psi</math>
なので<math>ds</math>に関して形式的に通分して
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
右辺の分子<math>I\!I:=L(dt)^2+2Mdtdu+N(du)^2</math>を<math>S</math>の'''第二基本形式'''という。
<math>\begin{cases}\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\boldsymbol{e}_S=0 \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\boldsymbol{e}_S=0 \end{cases}</math>を<math>t</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \end{cases}</math>
また、<math>u</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \end{cases}</math>
ここから第二基本量は
:<math>L=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}},\quad M=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad N=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}</math>
とも表示され、第二基本形式の別表示
:<math>I\!I=-\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
を得る。
これは更に全微分から微小ベクトル同士の内積として
:<math>I\!I=-d\boldsymbol{r}\cdot{d}\boldsymbol{e}_S</math>
とも書ける。
第一基本形式は曲面上の微小変位の自身との内積だったが、第二基本形式は曲面上の微小変位と法線方向の微小変位の内積である。則ち、第一基本形式は曲面の内在的な量、第二基本形式は曲面の外在的な量である。
第一基本形式と同様に第二基本形式は二次形式なので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{H}=\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>と置くと
:<math>I\!I={}^t\!\boldsymbol{v}\mathbf{H}\boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{H}</math>を'''第二基本行列'''という。
ここで、モンジュ表示された曲面<math>z=f(x, y)</math>に対して第二基本行列を考えてみる。
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} t \\ u \\ f(t, u)\end{pmatrix}</math>なので[[解析学基礎/多変数関数の微積分#全微分]]の結果を参照すると直ちに
:<math>L=\frac{\frac{\partial^2{f}}{\partial{t}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad M=\frac{\frac{\partial^2{f}}{\partial{t}\partial{u}}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad N=\frac{\frac{\partial^2{f}}{\partial{u}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}</math>
:が判るので、
:<math>\mathbf{H}=\frac{1}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}\begin{pmatrix} \frac{\partial^2{f}}{\partial{t}^2} & \frac{\partial^2{f}}{\partial{tu}} \\ \frac{\partial^2{f}}{\partial{tu}} & \frac{\partial^2{f}}{\partial{u^2}} \end{pmatrix}</math>
これはヘッシアンを法線の長さで割った行列である。
則ち、任意の正則曲面に対して第二基本行列はヘッセ行列と同じ役割をすると考えられる。
実際、点<math>\mathrm{P}</math>の開近傍で<math>\det\mathbf{H}</math>が正である曲面は<math>\mathrm{P}</math>の開近傍で上下どちらかに凸であり、負である曲面は<math>\mathrm{P}</math>で鞍点となることが知られている。
このように第二基本形式は曲面の「曲がり方」を表す量と考えられるので、曲面に対する曲率も考えられる。
ここで第二基本形式を定義した式
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
に立ち戻ると、右辺の分母は<math>s</math>に依存しない第一基本形式なので第一基本量を用いて
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>
右辺を形式的に<math>dt^2</math>で割ると
:<math>\kappa_C\cos\psi=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
この右辺は<math>\boldsymbol{n}_C</math>に依存しない量なので<math>\boldsymbol{n}_S, \boldsymbol{n}_C</math>のなす角度である<math>\psi</math>にも依存しない。
そこで、この値を曲面<math>S</math>の'''法曲率'''と定義する。
:<math>\varkappa:=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
法曲率の幾何学的意味を考える。
<math>\varkappa=\kappa_C\cos\psi</math>より、<math>\cos\psi=1</math>のとき<math>S</math>の法曲率と<math>C</math>の曲率が一致する。このとき<math>\boldsymbol{n}_S /\!\!/ \boldsymbol{n}_C</math>であり、<math>C</math>は曲面上の点<math>\mathrm{P}</math>とそこでの曲面の法線<math>\boldsymbol{n}_S(\mathrm{P})</math>を含む平面で曲面を切断した切り口('''法切り口''')に対応する曲線('''法曲線''')である。
則ち、法曲率は法曲線の曲率に対応する。
なお、法曲線<math>C</math>は切断に用いる平面に拘束されるので接ベクトル<math>\boldsymbol{t}_C</math>も平面に拘束される。則ち、拘束平面は<math>\{\boldsymbol{t}_C, \boldsymbol{n}_C\}</math>の張る接触平面である。
法切り口を齎す平面は法線を軸にして回転することができ、その回転角によって法曲率の値が異なることになる。この回転は具体的にはロドリゲスの公式によって記述されるが、法曲率の極大値・極小値は<math>\varkappa</math>を<math>k=\frac{du}{dt}</math>の関数とみることで以下のように考えることができる。
:法曲率の定義式より
::<math>\varkappa(E+2Fk+Gk^2)=L+2Mk+Nk^2</math>・・・(*)
:これが<math>k</math>の恒等式なので微分しても等号が成り立ち、
::<math>\frac{d\varkappa}{dk}(E+2Fk+Gk^2)+\varkappa(2F+2Gk)=2M+2Nk</math>
:フェルマーの定理より<math>\frac{d\varkappa}{dk}=0</math>を満たす<math>(k, \varkappa)</math>が極値点の候補なので
::<math>\varkappa(2F+2Gk)=2M+2Nk</math>・・・(@)
:が成り立つ必要がある。
:これを<math>k</math>倍して(*)を引くと
::<math>\varkappa(E+Fk)=L+Mk</math>・・・(#)
:これと(@)を連立して
::<math>k=-\frac{\varkappa{F}-M}{\varkappa{G}-N}</math>
:これを(#)に代入して
::<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)=0</math>・・・($)
:という二次方程式を得る。
:($)が相異なる二つの実根<math>\kappa_1, \kappa_2</math>を持てばそれらは極小値・極大値である。
:逆に、極小値・極大値を持てばフェルマーの定理より($)を満たす。//
この<math>\kappa_1, \kappa_2</math>を<math>S</math>の'''主曲率'''という。
($)の左辺を変形してみると、
:<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)</math>
:<math>=\{EG\varkappa^2-(GL+EN)\varkappa+LN\}-\{F^2\varkappa^2-2FM\varkappa+M^2\}</math>
:<math>=(L-\varkappa{E})(N-\varkappa{G})-(M-\varkappa{F})^2</math>
:<math>=\det\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}</math>
:<math>=\det(\mathbf{H}-\varkappa\mathbf{K})</math>
という、第一基本行列と第二基本行列を用いた形が出てきた。
ここで<math>\varkappa=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>を変形して
:<math>(L-\varkappa{E})dt^2+2(M-\varkappa{F})dtdu+(N-\varkappa{G})du^2=0</math>
これを二次形式表示すると
:<math>\begin{pmatrix} dt & du \end{pmatrix}\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}\begin{pmatrix} dt \\ du \end{pmatrix}=0</math>
と、同じ<math>\mathbf{H}-\varkappa\mathbf{K}</math>がここでも登場する。
この行列は法曲率を持つ方向を二次形式で判定しているが、主曲率を持つ場合はラグランジュの未定乗数法より<math>(\mathbf{H}-\varkappa\mathbf{K})\begin{pmatrix} dt \\ du \end{pmatrix}=\boldsymbol{0}</math>が成り立ち、これが<math>\det(\mathbf{H}-\varkappa\mathbf{K})=0</math>という式の正体である。更に言うと、<math>\mathbf{H}\boldsymbol{x}=\varkappa\mathbf{K}\boldsymbol{x}</math>という一般化固有値問題の解が主曲率<math>\kappa_1, \kappa_2</math>に対応している。このときの一般化固有ベクトル<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>を主曲率に対する'''主方向'''という。
二つの主方向の関係を調べる。
:主方向の定義より
::<math>\begin{cases} (\mathbf{H}-\kappa_1\mathbf{K}) \boldsymbol{x}_1=\boldsymbol{0} \\ (\mathbf{H}-\kappa_2\mathbf{K}) \boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
:なので
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2(\mathbf{H}-\kappa_1\mathbf{K})\boldsymbol{x}_1=\boldsymbol{0} \\ {}^t\!\boldsymbol{x}_1(\mathbf{H}-\kappa_2\mathbf{K})\boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
:第一基本行列・第二基本行列とも対称行列なので第二式の転置をとって
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_2{}^t\!\boldsymbol{x}_2 \mathbf{K}\boldsymbol{x}_1 \end{cases}</math>
:上下の式の差をとって
::<math>(\kappa_1-\kappa_2){}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\boldsymbol{0}</math>
:<math>\kappa_1=\kappa_2</math>のときは<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>に関する恒等式であるので、<math>\kappa_1\neq\kappa_2</math>のときを考える。
::<math>{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_2\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_1+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_1\right)=0</math>
:この二つのベクトルは主方向を向くので2つの主方向は直交する。
<math>\kappa_1=\kappa_2</math>(法曲率<math>\varkappa(t, u)=\mathrm{const}.</math>)の場合、<math>S</math>の接平面内の任意の方向が主方向となるので「どの方向にも一様な曲がり方をする」と考えられる。このような主曲率を与える点を'''臍点'''という。任意の点が臍点である曲面は球面である。
上の結果から、'''臍点でない各点で2つの主方向は直交する'''。
主曲率に対して解と係数の関係から得る値
:<math>H=\frac{\kappa_1+\kappa_2}{2}=\frac{GL+ENN-2FM}{2EG-F^2},\quad K=\kappa_1\kappa_2=\frac{LN-M^2}{EG-F^2}</math>
をそれぞれ<math>S</math>の'''平均曲率'''・'''全曲率'''('''ガウス曲率''')という。
全曲率の式を見ると<math>K=\frac{LN-M^2}{EG-F^2}=\frac{\det\mathbf{H}}{\det\mathbf{K}}=\det(\mathbf{K}^{-1}\mathbf{H})</math>である。
そこで、<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>と定義してみると行列式の性質より<math>K</math>は<math>\mathbf{S}</math>の固有値の積である。
ここで<math>\mathbf{S}</math>の固有方程式は
:<math>\det(\mathbf{S}-\lambda\mathbf{E})=\det(\mathbf{K}^{-1}\mathbf{H}-\lambda\mathbf{E})=\det\mathbf{K}^{-1}\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
<math>\det\mathbf{K}^{-1}\neq0</math>より
:<math>\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
これは主曲率を定義した二次方程式($)のことだったので、この方程式の解である固有値は<math>\lambda=\kappa_1, \kappa_2</math>である。
則ち、<math>K=\det\mathbf{S},\quad H=\frac{1}{2}\mathrm{tr}\,\mathbf{S}</math>が成り立つ。
更に、第一基本行列から第二基本行列への一次変換を考えると以下が成り立つことも判る。但し、こちらもフレネ=セレーと同様に厳密にはベクトルを列ではなく行に並べるのが正しいことに注意。
{{定理|(ヴァインガルテンの式)}}
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=-\mathbf{S}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
{{定理終わり}}
*証明
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>と置く。
:両辺に<math>{}^t\!\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>を右から掛けると行列積であることに注意して
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{t}} & \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{u}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
:<math>\therefore -\mathbf{H}=\mathbf{A}\mathbf{K}</math>
:<math>\therefore \mathbf{A}=-\mathbf{H}\mathbf{K}^{-1}=-\mathbf{K}^{-1}\mathbf{H}=-\mathbf{S}</math>//
臍点で行列<math>\mathbf{H}-\varkappa\mathbf{K}</math>を考えると<math>\varkappa=\kappa_1=\kappa_2</math>及び「主方向が任意」から
:<math>\mathbf{H}-\varkappa\mathbf{K}=\mathbf{O}</math>
であり、これを成分で書き下せばヴァインガルテンの式より法曲率に関して
:<math>\begin{cases} \varkappa=\frac{L}{E}=\frac{M}{F}=\frac{N}{G} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{cases}</math>
を得る。
<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>に於いて<math>\mathbf{K}</math>は正定値対称行列なので正則対称な主平方根<math>\mathbf{K}^{1/2}</math>が存在して
:<math>\mathbf{S}=\mathbf{K}^{-1/2}\mathbf{K}^{-1/2}\mathbf{H}</math>
ここで<math>\mathbf{T}=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>という相似変換で表された行列を考えてみると
:<math>\mathbf{K}^{1/2}\mathbf{S}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{1/2}\mathbf{K}^{-1}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{T}</math>
であり、<math>\mathbf{S}\sim\mathbf{T}</math>なのでこれらの2つの固有値の組は一致する。
:<math>\mathbf{H}={}^t\!\mathbf{H}</math>
より
:<math>{}^t\!\mathbf{T}=\mathbf{T}</math>
が成り立つので、<math>\mathbf{T}</math>は対称行列であり2つの固有値は実数である。
よって<math>\mathbf{S}</math>の二つの固有値はともに実数であるが、この固有値は($)の解<math>\kappa_1, \kappa_2</math>のことだったので($)は虚根を持たず、'''主曲率は必ず実数'''である。
モンジュ表示された曲面では先程求めた第二基本量の表式から直ちに
:<math>H=\frac{\left\{1+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}\frac{\partial^2{f}}{\partial{x}^2}+\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2\right\}\frac{\partial^2{f}}{\partial{y}^2}-2\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}\frac{\partial^2{f}}{\partial{x}\partial{y}}}{{2\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^\frac{3}{2}}},\quad K=\frac{\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}-\left(\frac{\partial^2{f}}{\partial{x}\partial{y}}\right)^2}{\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^2}</math>
を得る。
等温座標系では<math>\mathbf{K}^{-1}=\frac{1}{\lambda^2}\mathbf{E}_3</math>より<math>\mathbf{S}=\frac{1}{\lambda^2}\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>なので、平均曲率・ガウス曲率はそれぞれ<math>H=\frac{L+N}{2\lambda^2},\quad K=\frac{LN-M^2}{\lambda^4}</math>と簡単に求まる。
ある点に於ける2つの主曲率はそれぞれその点に於ける極大方向・極小方向の曲がり方を与えるので、<math>\kappa_1, \kappa_2</math>の符号の組み合わせがその点近傍に於ける曲面の曲がり方を与えることになる。
具体的には、両方とも正なら上に凸、負なら下に凸、異符号なら鞍点となる。主曲率が0ならばその主方向に対して曲がっていないということである。
主曲率の積である全曲率の符号を見ても良い。全曲率が正ならば上下どちらかに凸、負ならば鞍点である。第一基本行列が正定値行列であることから主曲率の符号は第二基本行列の行列式と一致するので先程の「第二基本行列がヘッセ行列の一般化」という話に繫がる。
任意点で<math>H=0</math>を満たす曲面を'''極小曲面'''という。極小曲面は曲面を連続変形させたときに曲面積の最小値を与える曲面であることが知られている。
平面は自明な極小曲面である。他にも<math>z=\ln\left(\frac{\cos y}{\cos x}\right)(-\frac{\pi}{2}<x, y<\frac{\pi}{2})</math>(シェルクの第一曲面)などが知られている。
極小曲面は表面張力の理論に応用されている。
例えば石鹼膜のつくる曲面について、膜上点での表裏の圧力差<math>P</math>・その点での表面張力<math>T</math>及び平均曲率<math>H</math>に対し<math>P=2TH</math>が成立する(ヤング=ラプラスの公式)ことが知られているが、閉曲線である枠に張った膜が割れずに安定して存在する条件は全ての点で<math>P=H=0</math>、則ち極小曲面のときである。
曲面<math>S</math>上の微小変位<math>d\boldsymbol{r}</math>、法線方向の微小変位<math>d\boldsymbol{e}_S</math>に対して第一基本形式は<math>I=d\boldsymbol{r}\cdot d\boldsymbol{r}</math>、第二基本形式は<math>I\!I=-d\boldsymbol{r}\cdot d\boldsymbol{e}_S</math>であった。
最後の組み合わせである<math>d\boldsymbol{e}_S\cdot d\boldsymbol{e}_S</math>を<math>S</math>の'''第三基本形式'''と定義する。
:<math>I\!I\!I:=\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
:<math>=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2(du)^2</math>
これを同様に二次形式の行列表示に直すと<math>\mathbf{W}:=\begin{pmatrix} \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2 & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} & \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2 \end{pmatrix}</math>として
:<math>I\!I\!I={}^t\!\boldsymbol{v}\mathbf{W}\boldsymbol{v}</math>
この<math>\mathbf{W}</math>を'''第三基本行列'''という。
見て判る通り、'''第三基本量'''は<math>P=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2,\quad Q=\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad R=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2</math>である。
臍点でないとき2つの主方向は直交するので、臍点を持たない曲面に対して主方向を直交基底としたパラメータ表示<math>\boldsymbol{r}=\boldsymbol{r}(p, q)</math>を考えられる。
このとき、各基本形式は
:<math>I=dp^2+dq^2</math>
:<math>I\!I=\kappa_1dp^2+\kappa_2dq^2</math>
:<math>I\!I\!I=\kappa^2_1dp^2+\kappa^2_2dq^2</math>
と表示されることが知られている。
第三基本形式は第一基本形式と第二基本形式の線型結合で表示される。
:<math>I\!I\!I=2HI\!I-KI</math>
このことはヴァインガルテンの式と平均曲率・全曲率の定義を用いて確かめられる。
これに関連し、第二基本量で定義された全曲率は第一基本量のみで表されることが知られている。つまり、曲率という外在的な量を第一基本形式という内在的な量のみで記述でき、言い換えると「曲面を考えるときに'''曲面の外側の空間を考える必要が無い'''」ということである。
この定理は発見者自身も驚愕したことから'''ガウスの驚異の定理'''と呼ばれている。詳しくは発展節で扱う。
なお、平均曲率を考えるときは外側の空間の情報が必要である。
==直交曲線座標系==
{{節stub}}
===円筒座標系===
平面の座標系として直交座標の他に斜交座標、極座標(円座標)、重心座標などがあったように、空間の座標系も複数通り考えられる。
空間座標を3つの実数の組<math>(r, \theta, z)</math>で表した座標系を'''円筒座標系'''('''円柱座標系'''、cylindrical coordinate system)という。ただし、<math>r</math>は原点からの(符号付き)距離、<math>\theta</math>は基準面に於ける始線からの正の回転角、<math>z</math>は基準面からの高さである。
円筒座標系は、円座標系の<math>r\theta</math>平面に<math>z</math>軸方向の次元を加えた3次元空間の座標と考えられる。
そのため、円筒座標系と直交座標系の対応は以下のようになる。
:<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \\ z=z \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2} \\ \theta = \arctan\frac{y}{x} \\ z=z \end{cases}</math>
但し、<math>r</math>は基準面の裏側では負とする。
直交座標の<math>z</math>軸を基に円筒座標系の座標軸を決定する。一般に座標軸は直線とは限らないので、「軸」ではなく「曲線」と呼ぶことにする('''座標線''')。なお、「曲線」という語は一般に「直線」を包含する。
:<math>r</math>曲線:<math>z</math>軸上の点を通り<math>z</math>軸に垂直な半直線。
:<math>\theta</math>曲線:<math>z</math>軸を法線とする平面内にあり、中心が<math>z</math>軸上にある円周。
:<math>z</math>曲線:<math>z</math>軸に平行な直線。
ここで、各曲線に沿った微小変化がどのように表されるか見ていく。
<math>\boldsymbol{f}: (r,\theta,z)\to(x,y,z)</math>とする。
<math>\boldsymbol{f}</math>全体の微小変化は全微分<math>d\boldsymbol{f}=\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}</math>で表される。
上で求めた関係式より
:<math>\boldsymbol{f}\begin{pmatrix} r \\ \theta \\ z\end{pmatrix}=\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} r\cos\theta \\ r\sin\theta \\ z \end{pmatrix}</math>
なので、
:<math>\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} = \begin{pmatrix} \frac{\partial}{\partial{r}}r\cos\theta & \frac{\partial}{\partial{\theta}}r\cos\theta & \frac{\partial}{\partial{z}}r\cos\theta \\ \frac{\partial}{\partial{r}}r\sin\theta & \frac{\partial}{\partial{\theta}}r\sin\theta & \frac{\partial}{\partial{z}}r\sin\theta \\ \frac{\partial}{\partial{r}}z & \frac{\partial}{\partial{\theta}}z & \frac{\partial}{\partial{z}}z \end{pmatrix} = \begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}</math>
よって
:<math>d\boldsymbol{f}=\begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}=\begin{pmatrix} \cos\theta \\ \sin \theta \\ 0 \end{pmatrix}dr + \begin{pmatrix} -\sin\theta \\ \cos\theta \\ 0 \end{pmatrix}rd\theta + \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}dz </math>
再右辺の各項を<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>と書くことにすると、<math>|d\vec{r}|, |d\vec{\theta}|, |d\vec{z}|</math>はそれぞれ<math>dr, rd\theta, dz</math>とわかる。<math>r, \theta, z</math>を物理量として捉えたとき<math>d\theta</math>の単位はラジアン(無次元量)であり、<math>rd\theta</math>の単位はメートル(長さの次元1)なので、次元の整合性が取れる。
纏めると以下のようになる。
{| class="wikitable"
| ||style="text-align:center;"| <math>\boldsymbol{e}_x</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_y</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_z</math>成分 ||style="text-align:center;"| ノルム
|-
|style="text-align:center;"| <math>d\vec{r}</math> ||style="text-align:center;"| <math>\cos\theta dr</math> ||style="text-align:center;"| <math>\sin\theta dr</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>dr</math>
|-
|style="text-align:center;"| <math>d\vec{\theta}</math> ||style="text-align:center;"| <math>-r\sin\theta d\theta</math> ||style="text-align:center;"| <math>r\cos\theta d\theta</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>rd\theta</math>
|-
|style="text-align:center;"| <math>d\vec{z}</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>1</math> ||style="text-align:center;"| <math>dz</math>
|}
ここで<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>は内積を取ればどの組も互いに直交することが容易にわかるので、この3つのベクトルは3次元ユークリッド空間の直交基底である。
そこで、それぞれのベクトルを正規化することで各軸曲線方向の基本ベクトルを得る。
:<math>\boldsymbol{e}_r = \frac{d\vec{r}}{dr} = \cos\theta \boldsymbol{e}_x + \sin\theta \boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_\theta = \frac{d\vec{\theta}}{rd\theta} = -\sin\theta\boldsymbol{e}_x+\cos\theta\boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_z=\frac{d\vec{z}}{dz}=\boldsymbol{e}_z</math>
これを一次変換の形式で表すと
:<math>\begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix}</math>
となる。
このときの表現行列を、座標系または基底ベクトルを変換することから'''座標変換行列'''又は'''基底変換行列'''という。場合によっては'''変換テンソル'''とも呼ぶ。
なお、この直交座標⇒円筒座標の座標変換行列は、<math>xyz</math>空間に於ける<math>z</math>軸まわりの回転行列に等しい。
逆基底変換はこの座標変換行列の逆行列を求めれば定式化できる。
回転行列は直交行列なので
:<math>\begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} ^{-1}= {}^t \! \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} </math>
であり、
:<math>\begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix}</math>
円筒座標系は、[[電磁気学]]の解析でよく使用される。
例えば、高校物理の公式<math>B(r)=\frac{\mu_0I}{\tau r}</math>は、円筒座標系を知っていれば「電流が<math>z</math>軸に平行であることから磁場は<math>z</math>方向に一葉且つ<math>\theta</math>方向に回転対称なので、<math>r</math>方向の項のみが寄与する」と理解される。
===極座標系===
高等学校までの地理で習ったように、球面上の位置は緯度<math>\theta</math>と経度<math>\phi</math>で定めることができる。
一般に三次元空間で球面上のある点の座標を定めるには、更に球の中心からの距離<math>r</math>が必要である。
このようにして定められる座標系を'''三次元極座標系'''(polar coordinate system in 3D)または'''球(面)座標系'''(spherical coordinate system)という。
xyz座標空間の点<math>\mathrm{P}(x, y, z)</math>の極座標表示を考える。
<math>r=|\overrightarrow{\mathrm{OP}}|=\sqrt{x^2+y^2+z^2}</math>は容易にわかる。
<math>\theta</math>は<math>z</math>軸からの'''天頂角'''(zenith angle)であり、<math>\overrightarrow{\mathrm{OP}}</math>の<math>z</math>軸への正射影ベクトルを<math>\overrightarrow{\mathrm{OH}}=\vec{h}</math>とすると<math>\tan\theta = \frac{|\vec{h}|}{z}</math>が成り立つ。<math>|\vec{h}|=\sqrt{x^2+y^2}</math>より、<math>\theta=\arctan \frac{\sqrt{x^2+y^2}}{z}</math>である。
<math>\phi</math>は<math>x</math>軸からの'''方位角'''(azimuth angle)であり、<math>\mathrm{P}</math>から<math>xy</math>平面に降ろした垂足<math>\mathrm{Q}</math>を考えると<math>\tan\phi=\frac{y}{x}</math>とわかる。よって、<math>\phi=\arctan\frac{y}{x}</math>である。
逆に、これを<math>\mathrm{P}(x, y, z)</math>に復元することを考える。
<math>\triangle\mathrm{OHP}</math>について<math>\angle\mathrm{HOP}=\theta</math>なので、<math>z=\overline{\mathrm{OH}}=r\cos\theta</math>。
また、<math>\triangle\mathrm{OPQ}</math>について<math>\angle\mathrm{OPQ}=\theta</math>なので、<math>\overline{\mathrm{OQ}}=r\sin\theta</math>。
よって<math>x=\overline{\mathrm{OQ}}\cos\phi=r\sin\theta\cos\phi, y=\overline{\mathrm{OQ}}\sin\phi=r\sin\theta\sin\phi</math>。
以上を纏めると、直交座標と球面座標の対応関係は
:<math>\begin{cases} x=r\sin\theta\cos\phi \\ y=r\sin\theta\sin\phi \\ z=r\cos\theta \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2+z^2} \\ \theta=\arctan\frac{\sqrt{x^2+y^2}}{z} \\ \phi=\arctan\frac{y}{x} \end{cases}</math>
一般に緯度は<math>-90^\circ \leqq \theta \leqq 90^\circ</math>、経度は<math>-180^\circ \leqq \phi \leqq 180^\circ</math>の範囲で表される(但し、符号の違いは東⇔西、南⇔北の違いである)。同様に、球面座標の天頂角<math>\theta</math>、方位角<math>\phi</math>は<math>\theta \in [-\frac{\pi}{4}, \frac{\tau}{4}], \phi \in [-\frac{\tau}{2}, \frac{\tau}{2}]</math>で考える。赤道面より下側(すなわち南半球)では<math>\theta<0</math>とする。
直交座標の<math>z</math>軸を基に極座標系の座標線を決定する。
:<math>r</math>曲線:原点を通る半直線。
:<math>\theta</math>曲線:原点中心で<math>z</math>軸上の一点から出る半円弧。
:<math>\phi</math>曲線:<math>z</math>軸を法線とする平面内で<math>z</math>軸上に中心を持つ円周。
各曲線に沿った微小変化は円柱座標系の場合と同様、ベクトル場の全微分を用いて
:<math>\begin{cases} d\vec{r}= \begin{pmatrix} \sin\theta\cos\phi \\ \sin\theta\sin\phi \\ \cos\theta \end{pmatrix} dr \\ d\vec{\theta}= \begin{pmatrix} \cos\theta\cos\phi \\ \cos\theta\sin\phi \\ -\sin\theta \end{pmatrix}rd\theta \\ d\vec{\phi} = \begin{pmatrix} -\sin\phi \\ \cos\phi \\ 0 \end{pmatrix} r\sin\theta d\phi \end{cases}</math>
と求まる。
これらは(内積の結果から)互いに直交するので、円柱座標の場合と同様の議論により
:<math>\begin{pmatrix} \sin\theta\cos\phi & \sin\theta\sin\phi & \cos\theta \\ \cos\theta\cos\phi & \cos\theta\sin\phi & -\sin\theta \\ -\sin\phi & \cos\phi & 0 \end{pmatrix}</math>
と変換テンソルが求まる。
これも直交行列であるので、逆変換テンソルは
:<math>\begin{pmatrix} \sin\theta\cos\phi & \cos\theta\cos\phi & \cos\phi \\ \sin\theta\sin\phi & \cos\theta\sin\phi & -\sin\phi \\ -\sin\theta & \cos\theta & 0 \end{pmatrix}</math>
と求まる。
球面座標系は、[[古典力学]]の解析でよく使用される。
例えば、赤道平面における角運動量保存則は<math>mr^2\frac{d\phi}{dt}=\mathrm{const}.</math>と表示されるが、これは<math>z</math>軸方向の角運動量を球面座標系の演算により取り出したものである。
球面座標系は特に機械制御に応用されている。
円柱座標系・球面座標系ともに各基底ベクトルが互いに直交しているので、そのことを明示して(且つ通常の直交座標系と区別して)'''直交曲線座標系'''(orthogonal curvilinear coordinate system)と呼ぶ場合がある。以下で扱う座標系たちも直交曲線座標系である。
===円環座標系===
===双極座標系===
===回転放物面座標系===
===放物柱座標系===
===回転楕円面座標系===
===楕円柱座標系===
===楕円体座標系===
==空間微分==
ここでは三次元ユークリッド空間で考える。
===勾配===
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\varphi\in C^1</math>のとき、
:<math>\mathrm{grad}\,\varphi := \begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}</math>
を<math>\varphi</math>の'''勾配'''(gradient)と定義する。
勾配の結果として得るベクトルを<math>\varphi</math>の'''勾配ベクトル'''ともいう。
勾配で定義される概念としては、電場が有名である。
:電位<math>\phi</math>に対する電場<math>\boldsymbol{E}</math>は
:<math>\boldsymbol{E}:=-\mathrm{grad}\,\phi</math>
勾配はベクトル量であるため、そのことを明示するため新たな演算子を導入する。
'''空間偏微分演算子'''(ハミルトン演算子)を
<math>\nabla:=\begin{pmatrix} \frac{\partial}{\partial{x}} \\ \frac{\partial}{\partial{y}} \\ \frac{\partial}{\partial{z}} \end{pmatrix}</math>
と定義する。
この演算子自体は偏微分作用素の対象を後接しないと意味を成さない。しかし、便宜的にベクトル量と考えてベクトルと同様の演算則が成り立つと見做す。そのため、この演算子に関する演算は[[w:記号の濫用]](symbol abuse)であることを註しておく。
<math>\nabla</math>の正式な読み方は'''ナブラ'''(nabla)であるが、<math>\Delta</math>(delta)を反転した形であることから'''エイトレッド'''(atled)とも読まれる。なお、ナブラの由来は「竪琴」を意味する古代ギリシャ語「νάβλα」である。
この演算子を用いれば勾配の表式は
:<math>\mathrm{grad}\,\varphi=\nabla\varphi</math>
となる。
<math>\varphi</math>はスカラー場なのでスカラー量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その積<math>\nabla\varphi</math>はベクトル量のスカラー倍、すなわちベクトル量であることが見て取れる。
勾配はスカラー場に対する偏微分の結果を並べたベクトルであるため、偏微分の性質とベクトルの性質を組み合わせて以下が成り立つと判る。
#<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>(線型性)
#<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(積の微分・ライプニッツ則)
#<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>(商の微分)
#<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>(合成関数微分)
任意点に対して勾配ベクトルが非零であるスカラー場を'''正則'''なスカラー場という。
以下、正則なスカラー場に限って扱う。
等位面<math>\varphi(x, y, z)=k(\mathrm{const}.)</math>上の点<math>\mathrm{P}(x_0, y_0, z_0)</math>を考える。
:<math>\mathrm{P}</math>を通り等位面に拘束される曲線のベクトル表示を<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>とする。
:等位面の方程式を<math>t</math>で両辺微分して
::<math>\frac{\partial{\varphi}}{\partial{x}}\frac{dx}{dt}+\frac{\partial{\varphi}}{\partial{y}}\frac{dy}{dt}+\frac{\partial{\varphi}}{\partial{z}}\frac{dz}{dt}=0</math>
:<math>t=t_0</math>のとき
::<math>\frac{\partial{\varphi}}{\partial{x}}x'(t_0)+\frac{\partial{\varphi}}{\partial{y}}y'(t_0)+\frac{\partial{\varphi}}{\partial{z}}z'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\cdot\boldsymbol{r}'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\perp\boldsymbol{r}'(t_0)</math>
ここで<math>\mathrm{P}</math>に於ける等位面の接平面は接ベクトル<math>\boldsymbol{r}'(t_0)</math>を含むため、<math>\nabla\varphi(\mathrm{P})</math>は点<math>\mathrm{P}</math>に於ける等位面の法線ベクトルである。
よって等位面の接平面の方程式は
:<math>\nabla\varphi(\mathrm{P})\cdot(\boldsymbol{x}-\overrightarrow{\mathrm{OP}})=0</math>
である。
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>の全微分は
:<math>d\varphi=\frac{\partial{\varphi}}{\partial{x}}dx+\frac{\partial{\varphi}}{\partial{y}}dy+\frac{\partial{\varphi}}{\partial{z}}dz</math>
これをベクトルの内積とみると
:<math>=\begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}\cdot\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
:<math>=\nabla\varphi\cdot d\boldsymbol{x}</math>
ここで変位ベクトル<math>d\boldsymbol{x}</math>を任意の方向を向いた単位ベクトル<math>\boldsymbol{e}</math>に拡張することを考えたい。
<math>\varphi(\mathrm{P})</math>に対して<math>\mathrm{P}</math>を始点とする<math>\boldsymbol{e}</math>方向の直線を考え、その上の点を<math>\mathrm{Q}</math>とする。
このとき、ベクトル変数<math>\boldsymbol{e}</math>による微分係数
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{\mathrm{Q\to P}}\frac{\varphi(\mathrm{Q})-\varphi(\mathrm{P})}{\overline{\mathrm{QP}}}</math>
を、<math>\varphi</math>の<math>\mathrm{P}</math>に於ける<math>\boldsymbol{e}</math>方向の'''方向微分係数'''と定義する。
方向微分係数はスカラー場に対し<math>\boldsymbol{e}</math>方向の変化率を与えるものと考えられる。そこで、方向微分係数が最大となる方向を考える。
:<math>\overrightarrow{\mathrm{PQ}}=t\boldsymbol{e}</math>と置く。
::<math>\overrightarrow{\mathrm{OQ}}=\begin{pmatrix} x_0+te_1 \\ y_0+te_2 \\ z_0+te_3 \end{pmatrix}</math>
::<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{t\to0}\frac{\varphi(x_0+te_1, y_0+te_2, z_0+te_3)-\varphi(x_0, y_0, z_0)}{t}</math>
:ここで<math>\Phi(t):=\varphi(x_0+te_1, y_0+te_2, z_0+te_3)</math>とすれば
::<math>=\lim_{t\to0}\frac{\Phi(t)-\Phi(0)}{t}</math>
::<math>=\frac{d\Phi(t)}{dt}</math>
::<math>=\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{x}}\frac{d(x_0+te_1)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{y}}\frac{d(y_0+te_2)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{z}}\frac{d(z_0+te_3)}{dt}</math>
::<math>=\frac{\partial{\varphi}(\mathrm{P})}{\partial{x}}e_1+\frac{\partial{\varphi}(\mathrm{P})}{\partial{y}}e_2+\frac{\partial{\varphi}(\mathrm{P})}{\partial{z}}e_3</math>
::<math>=\nabla\varphi(\mathrm{P})\cdot\boldsymbol{e}</math>
よって、全微分の式の<math>d\boldsymbol{x}</math>をそのまま<math>\boldsymbol{e}</math>に取り替えたものが方向微分係数の表式である。
内積を書き下すと<math>\|\boldsymbol{e}\|=1</math>より
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\|\nabla\varphi(\mathrm{P})\|\cos\theta</math>
よって最大値をとるのは<math>\cos\theta=1</math>則ち'''<math>\boldsymbol{e}</math>が勾配方向のとき'''である。また、方向微分係数の最大値は'''勾配のノルム'''である。
このように、勾配はスカラー場の各点に於ける傾きを表す。これは最右辺の式が「各軸方向の傾きを表すベクトルの和」になっていることからも直観的にわかる。ここから、「gradient」の和訳として「勾配」が充当されたのは妥当である。
方向微分係数を'''方向導関数'''に拡張することを考える。
形式的には方向微分係数の定点<math>\mathrm{P}</math>を変数<math>\boldsymbol{x}</math>に置き換えればいいだけである。
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\nabla\varphi(\boldsymbol{x})\cdot\boldsymbol{e}</math>
正式には極限を用いて
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\lim_{t\to0}\frac{\varphi(\boldsymbol{x}+t\boldsymbol{e})-\varphi(\boldsymbol{x})}{t}</math>
と定義する。
内積を書き下すと
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{x}}e_1+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{y}}e_2+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{z}}e_3</math>
これを[[解析学基礎/多変数関数の微積分#極値]]で扱った方向偏微分作用素として書き直すと
:<math>\left(e_1\frac{\partial}{\partial{x}}+e_2\frac{\partial}{\partial{y}}+e_3\frac{\partial}{\partial{z}}\right)\varphi(\boldsymbol{x})</math>
:<math>=(\boldsymbol{e}\cdot\nabla)\varphi(\boldsymbol{x})</math>
となる。
則ち、形式的には空間偏微分演算子の微分方向ベクトルとの右内積が方向偏微分作用素である。
更に、多変数関数のテイラー二次近似は
:<math>f(\boldsymbol{x})\fallingdotseq f(\boldsymbol{a})+\nabla{f}(\boldsymbol{a})\cdot(\boldsymbol{x}-\boldsymbol{a})+\frac{1}{2}{}^t\!(\boldsymbol{x}-\boldsymbol{a})\mathbf{D}(\boldsymbol{x}-\boldsymbol{a})</math>
と書けることが判る。但し、<math>\mathbf{D}</math>はヘッセ行列である。
多変数解析で扱った停留点(臨界点)は<math>\nabla\varphi(\mathrm{P})=\boldsymbol{0}</math>なる点<math>\mathrm{P}</math>として正式に定義される。また、ラグランジュの未定乗数法に於ける連立方程式も勾配を用いれば<math>\nabla\varphi(\mathrm{P})=\lambda\nabla\psi(\mathrm{P})</math>と書き表される。
スカラー場の全微分は勾配で表せたが、同様にベクトル場の全微分をナブラを用いて表すことを考える。
ベクトル場の全微分は
:<math>d\boldsymbol{a}=\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}} d\boldsymbol{x}</math>
で定義された。
ここで<math>n</math>次行列 <math>\mathbf{A}</math>と<math>n</math>項列ベクトル <math>\boldsymbol{a}</math>に対し、<math>(\mathbf{A} \circledast \boldsymbol{a})_{ij} = (\mathbf{A}_{ij}) a_i</math>となるような可換二項演算子 <math>\circledast</math>を定義する。これは本項独自の記法である。但し、<math>(\mathbf{P})_{ij}</math>は行列 <math>\mathbf{P}</math>の第ij成分を表す。
この記法を用いると、ヤコビ行列<math>\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}}</math>は<math>\nabla \circledast \boldsymbol{a}</math>と表すことができる。
則ち、ベクトル場の全微分は
:<math>d\boldsymbol{a} = (\nabla \circledast \boldsymbol{a}) d\boldsymbol{x}</math>
と表される。
これを形式的に
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}=\nabla \circledast \boldsymbol{a}</math>
と書き表すことができる。
則ち、ヤコビ行列はベクトル場のベクトル変数による導関数と見做せる。
ヤコビ行列はベクトル場の成分スカラー場に対する勾配ベクトルを行に並べたものという解釈もできるので、この考え方は自然である。
ここでベクトル場に対してスカラー場と同様に方向微分係数・方向導関数を考えると、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}\boldsymbol{v}</math>
が成り立つことが判る。
これもベクトル場の成分スカラー場に対する方向微分係数・方向導関数を列に並べたベクトルと解釈できる。
則ち、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
である。
===発散===
ベクトル場<math>\boldsymbol{a}=\boldsymbol{a}(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\boldsymbol{a}\in C^1</math>のとき、
:<math>\mathrm{div}\,\boldsymbol{a} := \frac{\partial{a_x}}{\partial{x}} + \frac{\partial{a_y}}{\partial{y}} + \frac{\partial{a_z}}{\partial{z}}</math>
を<math>\boldsymbol{a}</math>の'''発散'''(divergence)と定義する。
発散が用いられる概念としては、'''ガウスの法則'''が有名である。
:電荷密度<math>\rho</math>、電場<math>\boldsymbol{E}</math>、真空の誘電率<math>\varepsilon_0</math>として
:<math>\mathrm{div}\,\boldsymbol{E}=\frac{\rho}{\varepsilon_0}</math>
球面座標で考えることにより、この式の重要な性質「荷電粒子の座標を原点にとると原点以外では
<math>\mathrm{div}\,\boldsymbol{E}=0</math>」を証明することができる。
勾配と同様に発散をナブラで表すことを考えると、
:<math>\mathrm{div}\,\boldsymbol{a}=\nabla\cdot\boldsymbol{a}</math>
という表式を得る。
<math>\boldsymbol{a}</math>はベクトル場なのでベクトル量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その内積<math>\nabla\cdot\boldsymbol{a}</math>はスカラー量であることが見て取れる。
発散に対しては以下が成り立つ。
#<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>(線型性)
#<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は内積の線型性より、後者は成分演算と勾配の定義より示される。
ヤコビ行列<math>\nabla\circledast\boldsymbol{a}</math>との関係を考える。
:<math>\nabla\circledast\boldsymbol{a}=\begin{pmatrix} \frac{\partial{\boldsymbol{a}}}{\partial{x}} & \frac{\partial{\boldsymbol{a}}}{\partial{y}} & \frac{\partial{\boldsymbol{a}}}{\partial{z}} \end{pmatrix}=\begin{pmatrix} \frac{\partial{a}_x}{\partial{x}} & \frac{\partial{a}_x}{\partial{y}} & \frac{\partial{a}_x}{\partial{z}} \\ \frac{\partial{a}_y}{\partial{x}} & \frac{\partial{a}_y}{\partial{y}} & \frac{\partial{a}_y}{\partial{z}} \\ \frac{\partial{a}_z}{\partial{x}} & \frac{\partial{a}_z}{\partial{y}} & \frac{\partial{a}_z}{\partial{z}} \end{pmatrix}</math>
ここで跡が発散そのものになっているので
:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
が成り立つ。
発散の物理的意味を考える。
:密度<math>\rho</math>が一定である流体の速度場<math>\boldsymbol{v}\in\mathbb{R}^3</math>に対し、微小直方体に出入りする流体の質量収支を考える。
:点<math>(x,y,z)</math>に於ける流速<math>\boldsymbol{v}(x,y,z)=(v_x,v_y,v_z)</math>、直方体の各辺の長さを<math>\delta x, \delta y, \delta z</math>とする。
:単位時間あたりに<math>yz</math>平面に平行な面を通過する流体の質量収支は流出量<math>-\rho v_x(x,y,z)\delta y\delta z</math>、流入量<math>\rho v_x(x+\delta x,y,z)\delta y\delta z</math>より
::<math>\rho(v_x(x+\delta x,y,z)-v_x(x,y,z))\delta y\delta z=\rho\frac{v_x(x+\delta x,y,z)-v_x(x,y,z)}{\delta x}\delta x\delta y\delta z</math>
:<math>\delta x\to0</math>の極限で
::<math>=\rho\frac{\partial{v_x}}{\partial{x}}dxdydz</math>
:他の面で考えると対称性から輪環の順に入れ替えた結果を得るので直方体全体では
::<math>\rho\left(\frac{\partial{v_x}}{\partial{x}}+\frac{\partial{v_y}}{\partial{y}}+\frac{\partial{v_z}}{\partial{z}}\right)dxdydz</math>
:よって単位体積当たりでは
::<math>\rho\nabla\cdot\boldsymbol{v}</math>
:を得る。
ここで質量を密度で割ると体積なので、<math>\nabla\cdot\boldsymbol{v}</math>は単位時間あたりの流体の体積の正味の流出率を表す。
この微小直方体の単位体積あたりで観測すると、発散が正であれば流体は膨脹して密度が下がり、負であれば圧縮されて密度が上がる。0であれば流体は膨脹も圧縮もしない。
発散が零であるベクトル場を'''非圧縮/湧出無し/管状/ソレノイダル ベクトル場'''(incompressible/solenoidal vector field)などと呼ぶ。
また、ベクトル場の発散を'''湧き出し'''(「沸き出し」とも書く)と呼ぶ場合もある。
ベクトル場の流線に沿う流れが流体の体積を保存する条件はベクトル場が非圧縮であることである。これを'''リウヴィルの定理'''という。これは多くの場合、[[解析力学]]のハミルトン形式で表示される。
位置ベクトル場<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>に対して<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}</math>を考える。
:<math>\frac{\partial}{\partial{x}}\frac{1}{\|\boldsymbol{r}\|^n}=\frac{\partial{\left(\frac{1}{\|\boldsymbol{r}\|^n}\right)}}{\partial{\|\boldsymbol{r}\|}}\frac{\partial{\|\boldsymbol{r}\|}}{\partial{x}}=-\frac{n}{\|\boldsymbol{r}\|^n+1}\frac{x}{\sqrt{x^2+y^2+z^2}}=-\frac{nx}{\|\boldsymbol{r}\|^{n+2}}</math>
<math>y, z</math>も同様なので
:<math>\nabla\frac{1}{\|\boldsymbol{r}\|^n}=-\frac{n\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+1}}</math>
よって発散のライプニッツ則から
:<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}=\left(\nabla\frac{1}{\|\boldsymbol{r}\|^n}\right)\cdot\boldsymbol{r}+\frac{1}{\|\boldsymbol{r}\|^n}\nabla\cdot\boldsymbol{r}=-\frac{n\boldsymbol{r}\cdot\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+2}}+\frac{1+1+1}{\|\boldsymbol{r}\|^n}=\frac{3-n}{\|\boldsymbol{r}\|^n}</math>
この結果から、<math>\boldsymbol{a}/\!\!/\boldsymbol{r}\land\|\boldsymbol{a}\|\propto \frac{1}{\|\boldsymbol{r}\|^2}\implies\nabla\cdot\boldsymbol{a}=0</math>(逆二乗則に従う場は非圧縮ベクトル場)が成り立つ。
ベクトル解析の黎明期では発散の逆符号で表される
:<math>\mathrm{conv}\,\boldsymbol{a}:=-\frac{\partial{a_x}}{\partial{x}} - \frac{\partial{a_y}}{\partial{y}} - \frac{\partial{a_z}}{\partial{z}}</math>
という量が用いられていた。これは'''吸い込み'''(convergence)と呼ばれる量である。
ベクトルが発明される以前、ベクトル演算に相当するものは[[多元数/四元数|四元数]]で記述されていた。純虚四元数同士の積をとると実部が現在で言う内積の-1倍、虚部が現在で言う外積に対応する。このことから、内積そのものである湧き出しではなく内積の-1倍である吸い込みが自然に出現する量として頻繁に扱われていたのである。
===回転===
回転運動は、以下の3つにより一意に定まる。
*回転軸の方向
*回転の速さ
*回転方向(軸に対して右回転か左回転か)
「回転方向」は暗黙の諒解として右手系の正の回転角で考える。すると、回転運動を表すのに必要な情報は「方向」と「速さ(=スカラー量)」のみとなる。
従って、'''任意の回転運動はベクトルで表示される'''(ベクトルの大きさは「回転の速さ」で定める)。このようなベクトルを'''角速度ベクトル'''という。
ベクトル場の'''回転'''(curl/rotation/rotor)を以下のように定義する。
:<math>\mathrm{curl} \, \boldsymbol{a} = \mathrm{rot} \, \boldsymbol{a} = \begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
<math>\mathrm{curl}</math>は理学系、<math>\mathrm{rot}</math>は工学系が好んで使用する。
<math>z</math>軸方向の成分について考える。
<math>z</math>軸方向の回転はフレミングの左手の法則から<math>xy</math>平面内の成分のみが寄与すると考えられる。<math>z</math>軸の正方向の回転を生むには、<math>x</math>軸方向の変化率を大きくして<math>y</math>軸方向の変化率を小さくすればよい。
ある軸方向の変化率とはその軸の変数に関する偏導関数のことであったので、回転のz成分を<math>\frac{\partial{X_y}}{\partial{x}}-\frac{\partial{X_x}}{\partial{y}}</math>とすれば満足する。
対称性より輪環の順で入れ替えても同様であるので、回転は上の式で表されるとわかる。
これはより厳密には後述の線積分を用いて説明することになるので、ここでは定性的な説明に留めた。
回転を用いた概念として、ファラデーの電磁誘導の法則が有名である。
:電場<math>\boldsymbol{E}</math>、磁束密度<math>\boldsymbol{B}</math>として
:<math>\mathrm{rot} \, \boldsymbol{E} = -\frac{\partial{\boldsymbol{B}}}{\partial{t}}</math>
流体の渦の記述にも応用されており、回転を'''渦度ベクトル'''とも呼ぶ。流体力学的な渦の定義は「速度場の回転」である。
回転が零ベクトルであるベクトル場を'''非回転的/渦無し/層状/ラメラー ベクトル場'''(irrotational/lamella vector field)などと呼ぶ。
勾配・発散と同様に空間偏微分演算子による表記を考える。
成分に着目すると外積の形式なので、
:<math>\mathrm{curl} \, \boldsymbol{a}= \nabla \times \boldsymbol{a}</math>
と表されることが判る。
ベクトル場はベクトル量であり、ナブラは便宜的にベクトル量と見做すことから、その外積である回転はベクトル量であることが見て取れる。
外積の性質から、回転は行列式
:<math>\det \begin{pmatrix} \boldsymbol{e}_x & \boldsymbol{e}_y & \boldsymbol{e}_z \\ \frac{\partial}{\partial{x}} & \frac{\partial}{\partial{y}} & \frac{\partial}{\partial{z}} \\ a_x & a_y & a_z \end{pmatrix}</math>
でも表示される。
回転に対しては以下が成り立つ。
#<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>(線型性)
#<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は外積の線型性より、後者は成分演算と勾配の定義より示される。
回転は常に角速度ベクトルと一致するとは限らない。そのため、必ずしも回転運動そのものを記述しない。
回転は、ヤコビ行列を用いると以下のように表される。
:<math>\mathrm{rot} \, \boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
:ここで<math>\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})</math>は反対称行列であり、<math>\mathrm{axl}</math>は反対称行列を軸ベクトルに移す写像である。
===ラプラシアン===
上で見てきた勾配・発散・回転はいずれも一階の偏微分作用素であった。
二階偏微分作用素のうち最もよく使われているのがスカラー場に対して勾配の発散をとる演算である。
:<math>\nabla\cdot(\nabla\varphi) = \mathrm{div}(\mathrm{grad}\,\varphi)</math>
ここで<math>(\nabla\cdot\nabla)\varphi</math>を計算してみると成分計算から上の<math>\nabla\cdot(\nabla\varphi)</math>に等しいことが容易に判る。則ち、発散作用素<math>\nabla\cdot\,\,</math>、勾配作用素<math>\nabla</math>、スカラー場<math>\varphi</math>の間に結合法則が成り立ってると見做せる。
そこで、<math>\nabla\cdot\nabla</math>を独立した演算子として考えることにする。
以下のように定義される演算子を'''ラプラス演算子'''(ラプラス作用素)という。
:<math>\text{∆}:=\nabla\cdot\nabla=\frac{\partial^2}{\partial{x}^2}+\frac{\partial^2}{\partial{y}^2}+\frac{\partial^2}{\partial{z}^2}</math>
二項目は[[w:記号の濫用]]により<math>\nabla^2</math>と書かれることもある。
但し、<math>\text{∆}</math>は通常のデルタ(Unicode文字名: GREEK CAPITAL LETTER DELTA, U+394)ではなく'''増分記号'''(Unicode文字名:INCREMENT, U+2206)である(が通常のデルタで書かれることが多い)。
ラプラス演算子を<math>C^2</math>級スカラー場に作用させる操作(及びその結果として得るスカラー場)を'''ラプラシアン'''(Laplacian)という。
:<math>\text{∆}\varphi=\frac{\partial^2{\varphi}}{\partial{x}^2}+\frac{\partial^2{\varphi}}{\partial{y}^2}+\frac{\partial^2{\varphi}}{\partial{z}^2}</math>
スカラー場のラプラシアンは各成分方向の曲率の和、すなわちスカラー場の各点に於ける突出・沈み込みの度合いを表す。
勾配・発散・回転・ラプラシアンを総称して'''空間微分'''と呼ぶ。
ラプラシアンは[[解析学基礎/偏微分方程式|偏微分方程式]]の記述に用いられている。
:'''ラプラス方程式'''・'''ポテンシャル方程式''':<math>\text{∆}\varphi=0</math>
:'''ポアソン方程式''':<math>\text{∆}\varphi=f</math>
:'''熱伝導方程式'''・'''拡散方程式''':<math>\text{∆}\psi=k\frac{\partial{\psi}}{\partial{t}}+g</math>
:'''波動方程式''':<math>\text{∆}\psi=\frac{1}{\nu^2}\frac{\partial^2{\psi}}{\partial{t}^2}</math>
:'''ヘルツホルム方程式''':<math>\text{∆}\varphi=-l^2\varphi</math>
ここで<math>\varphi=\varphi(x,y,z),\,f=f(x,y,z),\,\psi=\psi(x,y,z,t),\,k>0,\,g=g(x,y,z,t),\,\nu>0,\,l\in\mathbb{R}</math>である。
なお、ラプラス方程式の解を'''調和関数'''という。
<math>C^2</math>級ベクトル場のラプラシアンは以下のように定義される。
:<math>\text{∆}\boldsymbol{a}=\begin{pmatrix} \text{∆}a_x \\ \text{∆}a_y \\ \text{∆}a_z \end{pmatrix}</math>
ここでスカラー場と同様に考えて<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})</math>としたいところではあるが、これは一般には成り立たない。
実際には以下のように表示される。
:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})=\mathrm{grad}(\mathrm{div}\,\varphi)-\mathrm{rot}(\mathrm{rot}\,\varphi)</math>
*証明
:対称性より<math>x</math>成分のみ考えても輪環の順に入れ替えれば他の成分を得る。
::<math>\nabla\cdot\boldsymbol{a}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}</math>
:より
::<math>\{\nabla(\nabla\cdot\boldsymbol{a})\}_x=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}</math>
:また、
::<math>\nabla\times\boldsymbol{a}=\begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
:より
::<math>\{\nabla\times(\nabla\times\boldsymbol{a})\}_x=\frac{\partial}{\partial{y}}\left(\frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}\right)-\frac{\partial}{\partial{z}}\left(\frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}\right)</math>
::<math>=\frac{\partial^2{a_y}}{\partial{y}\partial{x}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{z}\partial{x}}-\frac{\partial^2{a_x}}{\partial{z}^2}</math>
:<math>\boldsymbol{a}\in{C^2}</math>より偏微分は可換(シュワルツの定理)なので、<math>\{\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})\}_x</math>を計算すると
::<math>\left(\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}\right)-\left(\frac{\partial^2{a_y}}{\partial{x}\partial{y}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}-\frac{\partial^2{a_x}}{\partial{z}^2}\right)</math>
::<math>=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_x}}{\partial
{y}^2}+\frac{\partial^2{a_x}}{\partial{z}^2}</math>
::<math>=\text{∆}a_x</math>//
ここから判るように、ベクトル場<math>\boldsymbol{a}</math>に対して<math>\text{∆}=\nabla(\nabla\cdot)</math>が成り立つ条件は<math>\nabla\times(\nabla\times\boldsymbol{a})=\boldsymbol{0}</math>である。<math>\boldsymbol{a}</math>が非回転ベクトル場であれば回転が零ベクトルなのでこの形を必ず満足する。但し、この形を満たすベクトル場が全て非回転的ベクトル場であるとは限らない。
則ち、外積の反復と同様に回転演算子<math>\nabla\times\,\,</math>の反復に対して結合法則は不成立である。
歴史的な四元数表記では発散の代わりに吸い込みが用いられていたことからラプラシアンも現在とは反対の符号で計算されていた。ラプラシアンはユークリッド空間に限らず定義可能であるが、その中でも特に重要なのは[[特殊相対論#マクスウェルの方程式|相対性理論]]で用いられる'''ダランベール演算子'''(ダランベルシアン、クアブラ、波動演算子)である。
:<math>\text{⧠}:=\frac{1}{\nu^2}\frac{\partial^2}{\partial{t^2}}-\text{∆}</math>
これは標準座標系で表されるミンコフスキー空間上のラプラシアンに相当する。<math>\text{∆}</math>は上で扱ってきた通常のラプラシアンのことである。
これを用いると波動方程式は<math>\text{⧠}\psi=0</math>というミンコフスキー空間上のラプラス方程式と解釈される。つまり、波動関数はミンコフスキー空間で見れば調和関数なのである。
また、[[w:クライン=ゴルドン方程式]]と呼ばれる偏微分方程式は
:<math>\text{⧠}\psi=-\mu^2\psi</math>
というミンコフスキー空間上のヘルツホルム方程式と解釈される。
===微分定理===
ここでは、ナブラに関する公式を見ていく。以下、シュワルツの定理が成り立っているものとする。また、成分計算をすればいいだけなので証明は省略する。
既に紹介したものを以下に並べる。
#勾配
#:<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>
#:<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(
#:<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>
#:<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>
#:<math>\frac{\partial{\varphi}}{\partial{\boldsymbol{e}}}=(\boldsymbol{e}\cdot\nabla)\varphi</math>
#:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
#発散
#:<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>
#:<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>
#:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
#回転
#:<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>
#:<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>
#:<math>\nabla\times\boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
#ラプラシアン
#:<math>\text{∆}\varphi=\nabla\cdot(\nabla\varphi)</math>
#:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})</math>
二つのベクトル場<math>\boldsymbol{a}, \boldsymbol{b}</math>の内積・外積に対してそれぞれ一階の空間微分を考えてみる。
<math>\boldsymbol{a}\cdot\boldsymbol{b}</math>はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\boldsymbol{a}\cdot\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}+(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}\times(\nabla\times\boldsymbol{b})+\boldsymbol{b}\times(\nabla\times\boldsymbol{a})</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\boldsymbol{a}\times\boldsymbol{b})=\boldsymbol{b}\cdot(\nabla\times\boldsymbol{a})-\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\nabla\times(\boldsymbol{a}\times\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}-(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}(\nabla\cdot\boldsymbol{b})-\boldsymbol{b}(\nabla\cdot\boldsymbol{a})</math>
次に、一階の空間微分の結果に対して更なる一階の空間微分を考えてみる。
スカラー場の勾配はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\varphi)=\text{∆}\varphi</math>
:<math>\nabla\times(\nabla\varphi)=\boldsymbol{0}</math>
ベクトル場の発散はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\nabla\cdot\boldsymbol{a})=\text{∆}\boldsymbol{a}+\nabla\times(\nabla\times\boldsymbol{a})</math>
ベクトル場の回転はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\times\boldsymbol{a})=0</math>
:<math>\nabla\times(\nabla\times\boldsymbol{a})=\nabla(\nabla\cdot\boldsymbol{a})-\text{∆}\boldsymbol{a}</math>
則ち、勾配・発散・回転はどの組み合わせでも交換法則が成り立たない。
一階の空間微分の結果に対してラプラシアンを考えてみる。
:<math>\text{∆}(\nabla\varphi)=\nabla(\text{∆}\varphi)</math>
:<math>\text{∆}(\nabla\cdot\boldsymbol{a})=\nabla\cdot(\text{∆}\boldsymbol{a})</math>
:<math>\text{∆}(\nabla\times\boldsymbol{a})=\nabla\times(\text{∆}\boldsymbol{a})</math>
ラプラシアンはスカラー性・ベクトル性を保存するので、演算が破綻する箇所はない。
則ち、ラプラシアンは勾配・発散・回転との組み合わせに対して交換法則が成り立つ。
:<math>\text{∆}\nabla=\nabla\text{∆},\quad\text{∆}(\nabla\cdot)=(\nabla\cdot)\text{∆},\quad\text{∆}(\nabla\times)=(\nabla\times)\text{∆}</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>及び<math>\nabla\times\boldsymbol{a}</math>の発散・回転は三重積の形であった。
スカラー三重積・ベクトル三重積にナブラを様々な組み合わせで入れてその結果がどうなるか見ていく。
:<math>\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\boldsymbol{a}\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すればいいので公式化する必要が無い。
:<math>\boldsymbol{a}\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>\boldsymbol{a}\times(\boldsymbol{b}\times\nabla)</math>
:<math>\nabla\cdot(\boldsymbol{a}\times\nabla)</math>
:<math>\nabla\times(\boldsymbol{a}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>\boldsymbol{a}\cdot(\nabla\times\nabla)</math>
:<math>\boldsymbol{a}\times(\nabla\times\nabla)</math>
:<math>\nabla\cdot(\nabla\times\nabla)</math>
:<math>\nabla\times(\nabla\times\nabla)</math>
は同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。<br>
また、三重積の公式はナブラを代入した時点で破綻する。
次に、スカラー四重積・ベクトル四重積に対しても同様のことを考える。
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\nabla\times\boldsymbol{a})\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すれば良いので公式化する必要が無い。
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\boldsymbol{c}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\boldsymbol{c}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\times(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>(\nabla\times\nabla)\cdot(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\nabla\times\nabla)\times(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\nabla)</math>
及びナブラを三個以上含むものは同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。
故に、ここで問題になるのは
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})</math>
の扱いである。
これらには以下の公式が成り立つ。
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})=\boldsymbol{a}\cdot\{\nabla\times(\boldsymbol{b}\times\boldsymbol{c})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})=[\{\boldsymbol{b}\cdot(\nabla\times\boldsymbol{c})\}-\{\boldsymbol{c}\cdot(\nabla\times\boldsymbol{b})\}]\boldsymbol{a}+{}^t\!\{\nabla\circledast(\boldsymbol{b}\times\boldsymbol{c})\}\boldsymbol{a}</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})=\boldsymbol{a}\cdot\{\nabla\times(\nabla\times\boldsymbol{b})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})={}^t\!\{\nabla\circledast(\nabla\times\boldsymbol{b})\}\boldsymbol{a}</math>
===ポテンシャル論===
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすスカラー場<math>\varphi\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0}</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を満たすならば<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>となるスカラー場<math>\varphi\in C^2</math>はどのようなときに存在するのであろうか?
ここで<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>は成分表示すれば
:<math>\begin{cases} \frac{\partial{a}_z}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}}=0 \\ \frac{\partial{a}_x}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}=0 \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}=0 \end{cases}</math>
という一階線型連立偏微分方程式となる。
この連立偏微分方程式は領域<math>D=\mathrm{dom}\,\boldsymbol{a}</math>上で解くことになるので、解が<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすかは領域<math>D</math>がどのような形状をしているかに依存する。
そして、その形状を具体的に与えるのが次の定理である。
{{定理|(ポアンカレの補題1)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0} \iff \exist \varphi\in C^2(D),\quad \mathrm{grad}\,\varphi=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が単連結であることである。
{{定理終わり}}
証明は後述する。
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''スカラーポテンシャル'''(scalar potential)といい、スカラーポテンシャルを有するベクトル場を'''保存的ベクトル場'''(保存場、conservative vector field)という。
保存的ベクトル場に対して実際にスカラーポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{grad}\,\varphi=\boldsymbol{a},\quad\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{\varphi}}{\partial{x}}=a_x \\ \frac{\partial{\varphi}}{\partial{y}}=a_y \\ \frac{\partial{\varphi}}{\partial{z}}=a_z \end{cases},\quad\begin{cases} \frac{\partial{a}_z}{\partial{y}}=\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a}_x}{\partial{z}}=\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}=\frac{\partial{a_x}}{\partial{y}} \end{cases}</math>
:<math>\frac{\partial{\varphi}}{\partial{x}}=a_x(x,y,z)</math>は直接積分形偏微分方程式なので両辺を<math>x</math>で偏積分して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z) dx+g(y,z)</math>・・・(1)
:これを<math>y</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{y}}=\frac{\partial}{\partial{y}}\int_m^x a_x(x,y,z)dx+\frac{\partial{g}}{\partial{y}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\int_m^x \frac{\partial{a_x}}{\partial{y}}dx+\frac{\partial{g}}{\partial{y}}</math>
:更に回転の条件から
::<math>=\int_m^x \frac{\partial{a_y}}{\partial{x}}dx+\frac{\partial{g}}{\partial{y}}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_y(x,y,z)-a_y(m,y,z)+\frac{\partial{g}}{\partial{y}}</math>
:これが<math>a_y(x,y,z)</math>に等しいので
::<math>\frac{\partial{g}}{\partial{y}}=a_y(m,y,z)</math>
:これは<math>g(y, z)</math>が<math>x</math>の関数でないことに適する。
:両辺を<math>y</math>で偏積分して
::<math>g(y, z)=\int_n^y a_y(m,y,z)dy+h(z)</math>
:これを(1)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+h(z)</math>・・・(2)
:これを<math>z</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{z}}=\frac{\partial}{\partial{z}}\left(\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy\right)+\frac{\partial{h}}{\partial{z}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\left(\int_m^x\frac{\partial{a_x(x,y,z)}}{\partial{z}}dx+\int_n^y\frac{\partial{a_y(m,y,z)}}{\partial{z}}dy\right)+\frac{dh}{dz}</math>
:更に回転の条件から
::<math>=\left(\int_m^x\frac{\partial{a_z(x,y,z)}}{\partial{x}}dx+\int_n^y\frac{\partial{a_z(m,y,z)}}{\partial{y}}dy\right)+\frac{dh}{dz}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_z(x,y,z)-a_z(m,y,z)+a_z(m,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
::<math>=a_z(x,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
:これが<math>a_z(x,y,z)</math>に等しいので
::<math>\frac{dh}{dz}=a_z(m,n,z)</math>
:これは<math>h(z)</math>が<math>x, y</math>の関数でないことに適する。
:両辺を<math>z</math>で常積分して
::<math>h(z)=\int_l^z a_z(m,n,z)dz+C</math>
:これを(2)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>//
ここで最後の積分定数<math>C</math>は勾配をとるときに消える。更に言うと、単連結領域では偏微分方程式の解の一意性よりスカラーポテンシャルは積分定数の違いを除いて一意に定まる。よって、スカラーポテンシャルは平行移動を同一視する同値類として与えられることになる。
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>を満たすベクトル場<math>\boldsymbol{A}\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{div}\,\boldsymbol{a}=0</math>を満たすならば<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>となるスカラー場<math>\boldsymbol{A}\in C^2</math>はどのようなときに存在するのであろうか?
これも同様に以下の定理で与えられる。
{{定理|(ポアンカレの補題2)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{div}\,\boldsymbol{a}=0 \iff \exist \boldsymbol{A}\in C^2(D),\quad \mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が'''可縮'''であることである。
{{定理終わり}}
証明は後述する。
ここで、集合が可縮とは「全体を1点に退化するような連続変形が可能である」ことを言う。可縮な集合は単連結である。可縮条件はより弱めることができるが、ホモトピーやコホモロジーの概念が必要である
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''ベクトルポテンシャル'''(vector potential)という。スカラーポテンシャルと異なり、「ベクトルポテンシャルを有するベクトル場」を指す特別な呼称は(数学界一般に認知されたものとしては)存在しない。「ソレノイダル場」などを用いる派閥もあるが、単に「発散が0であるベクトル場」を指す用法が強いのであまり広まっていない。
ベクトルポテンシャルを有するベクトル場に対して実際にベクトルポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a},\quad\mathrm{div}\,\boldsymbol{a}=0</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{A}_z}{\partial{y}}-\frac{\partial{A_y}}{\partial{z}}=a_x \\ \frac{\partial{A}_x}{\partial{z}}-\frac{\partial{A_z}}{\partial{x}}=a_y \\ \frac{\partial{A_y}}{\partial{x}}-\frac{\partial{A_x}}{\partial{y}}=a_z \end{cases},\quad \frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}} =0</math>
:第一式より
::<math>\frac{\partial{A_z}}{\partial{y}}=a_x+\frac{\partial{A_y}}{\partial{z}}</math>
:<math>y</math>で偏積分して
::<math>A_z = \int_n^y \left(a_x+\frac{\partial{A_y}}{\partial{z}}\right)dy+f(x,z)</math>
:ライプニッツの積分法則より
::<math>=\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)</math>・・・(3)
:第三式より
::<math>\frac{\partial{A_x}}{\partial{y}}=\frac{\partial{A_y}}{\partial{x}}-a_z</math>
:<math>y</math>で偏積分して
::<math>A_x=\int_n^y \left(\frac{\partial{A_y}}{\partial{x}}-a_z\right)dy+g(x, z)</math>
:ライプニッツの積分法則より
::<math>=\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)</math>
:これと(3)を第二式に代入して
::<math>a_y=\frac{\partial}{\partial{z}}\left(\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)\right)-\frac{\partial}{\partial{x}}\left(\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)\right)</math>
::<math>=\frac{\partial^2}{\partial{z}\partial{x}}\int_n^yA_ydy-\frac{\partial}{\partial{z}}\int_n^y a_z dy+\frac{\partial{g}}{\partial{z}}-\frac{\partial}{\partial{x}}\int_n^y a_x dy-\frac{\partial^2}{\partial{x}\partial{z}}\int_n^y A_y dy-\frac{\partial{f}}{\partial{x}}</math>
::<math>=\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}-\int_n^y \left(\frac{\partial{a_z}}{\partial{z}}+\frac{\partial{a_x}}{\partial{x}}\right)dy</math>
:よって
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=a_y+\int_n^y \left(\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_z}}{\partial{z}}\right) dy</math>・・・(4)
:この右辺を<math>h(x, y, z)</math>とおくと
::<math>\frac{\partial{h}}{\partial{y}}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}=0</math>
:なので<math>h(x,y,z)</math>は<math>y</math>に依存しない<math>h(x,z)</math>である。
:これは(4)の左辺が<math>y</math>に依存しないことと整合する。
:故に(4)は
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=h(x,z)</math>
:という二変数の偏微分方程式に落ちる。
:この偏微分方程式は例えば<math>f(x,z)=0, g(x,z)=\int_l^z h(x,z)dz</math>のような特殊解を持つ。
:このような特殊解によって構成された元の方程式の解を<math>\boldsymbol{A}_0</math>とする。
:一般解<math>\boldsymbol{A}</math>と特殊解との差を<math>\boldsymbol{B}</math>と置くとその回転は回転の線型性より<math>\boldsymbol{0}</math>なので
::<math>\begin{cases} \frac{\partial{B}_z}{\partial{y}}=\frac{\partial{B_y}}{\partial{z}} \\ \frac{\partial{B}_x}{\partial{z}}=\frac{\partial{B_z}}{\partial{x}} \\ \frac{\partial{B_y}}{\partial{x}}=\frac{\partial{B_x}}{\partial{y}} \end{cases}</math>
:同様にして第一式・第三式を<math>y</math>で偏積分して第二式に代入すると積分定数に関して
::<math>\frac{\partial{F(x,z)}}{\partial{x}}=\frac{\partial{G(x,z)}}{\partial{z}}</math>
:を得る。
:これは全微分方程式が完全微分方程式である条件なので、
::<math>\mathrm{grad}\,\Phi=\begin{pmatrix} F(x,z) \\ G(x,z) \end{pmatrix}</math>
:なるスカラー場<math>\Phi</math>が存在する。
:則ち、求めるベクトルポテンシャルは<math>\boldsymbol{A}=\boldsymbol{A}_0+\nabla\Phi</math>//
ここで勾配の項は回転をとるときに<math>\mathrm{rot}(\mathrm{grad}\,\Phi)=\boldsymbol{0}</math>より消える。スカラーポテンシャルと同様に自由度が残るので、ベクトルポテンシャルはその自由度を無視した同値類で与えられる。
ポアンカレの補題1, 2に於ける領域<math>D</math>は互いに素ではない複数の領域の和集合<math>\bigcup_i D_i</math>であっても良い。但しポテンシャル場<math>\mathrm{p}</math>は各領域<math>D_i</math>に対して区分的に定義され、このとき互いに重なった領域<math>D_i\cap D_j</math>では任意の点<math>\boldsymbol{x}\in D_i\cap D_j</math>に対して<math>\mathrm{p}_i(\boldsymbol{x})=\mathrm{p}_j(\boldsymbol{x})</math>であることが導かれる。
ポアンカレの補題が成り立たない状況を考えると、この「重なった領域での単射性」が崩れる。則ち、ポテンシャル場は多価関数として振舞うのである。
ポテンシャルに関連した定理として、以下が成り立つ。
{{定理|(ヘルツホルムの定理)}}
ポアンカレの補題が成り立つ状況下に於いて、<math>C^1</math>級ベクトル場<math>\boldsymbol{a}</math>は<math>C^2</math>級スカラー場の勾配と<math>C^2</math>級ベクトル場の回転に[[w:直和分解]]('''ヘルツホルム分解''')できる。
則ち、任意の<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\boldsymbol{a}=\mathrm{grad}\,\varphi-\mathrm{rot}\,\boldsymbol{A}</math>
を満たす<math>\varphi, \boldsymbol{A}\in C^2(D)</math>が存在する。
{{定理終わり}}
*証明
:ポアソン方程式<math>\text{∆}\varphi=f</math>に対してラプラシアンの定義から
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=f</math>
:ここで右辺のスカラー関数<math>f</math>が<math>\boldsymbol{a}</math>の発散で与えられている場合を考えると
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=\mathrm{div}\,\boldsymbol{a}</math>
:発散の線型性より
::<math>\mathrm{div}(\mathrm{grad}\,\varphi-\boldsymbol{a})=0</math>
:ここでポアンカレの補題2を用いて
::<math>\mathrm{grad}\,\varphi-\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>//
この<math>\varphi, \boldsymbol{A}</math>をそれぞれ広義のスカラーポテンシャル・ベクトルポテンシャルと呼ぶ場合がある。
広義ポテンシャルに対して
:<math>\begin{cases} \mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0} \\ \mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0 \\ \mathrm{div}\,\boldsymbol{a}=\text{∆}\varphi \\ \mathrm{rot}\,\boldsymbol{a}=\mathrm{grad}(\mathrm{div}\,\boldsymbol{A})-\text{∆}\boldsymbol{A} \end{cases}</math>
が成立する。
広義ポテンシャルの組み合わせは一つには定まらない。成分毎で考えるとヘルツホルムの定理は三元連立偏微分方程式を与えるが、勾配で消える定数項と回転で消える勾配項を補正すると右辺の自由度は広義ポテンシャル2つ+補正項2つで4である。そこで、応用上は<math>\mathrm{div}\,\boldsymbol{A}=0</math>という条件('''クーロンゲージ条件''')を追加で課して一意に定めることが多い(これにより<math>\mathrm{rot}\,\boldsymbol{a}=-\text{∆}\boldsymbol{A}</math>が成り立つので)。
例えば、[[連続体力学]]に於ける弾性体の運動方程式(ナビエ-コーシー方程式)
:<math>\rho\frac{\partial^2{\boldsymbol{u}}}{\partial{t}^2}=(\lambda+\mu)\mathrm{grad}(\mathrm{div}\,\boldsymbol{u})+\mu\text{∆}\boldsymbol{u}</math>
をヘルツホルム分解とクーロンゲージ条件により解析すると
:<math>\begin{cases} \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\varphi=(\lambda+2\mu)\text{∆}^2\varphi \\ \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\boldsymbol{A}=\mu\text{∆}^2\boldsymbol{A} \end{cases}</math>
を得る。
更に<math>e=\text{∆}\varphi,\quad\boldsymbol{\omega}=-\text{∆}\boldsymbol{A}</math>と置くとこの2つの式は波動方程式である。ここから導かれる波は前者が縦波で後者が横波であるが、<math>\lambda+2\mu>\mu</math>より前者の方が伝播速度が大きい。則ち、中学理科のP波・S波の性質を導くことができた。
ナビエ-コーシー方程式に於いて定常状態を考えると<math>t</math>-微分の項が0になるので、<math>\text{∆}^2\boldsymbol{u}=0</math>を得る。このような形の偏微分方程式を'''重調和偏微分方程式'''という。
*応用問題
*:真空のマクスウェル方程式<math> \begin{cases}
\nabla\times\boldsymbol{E}&=-\frac{\partial{\boldsymbol{B}}}{\partial{t}}\\
\nabla\times\boldsymbol{H}&=\frac{\partial{\boldsymbol{D}}}{\partial{t}}\\
\nabla\cdot\boldsymbol{D}&=0\\
\nabla\cdot\boldsymbol{B}&=0\\
\end{cases}</math>と構成方程式<math>\begin{cases} \boldsymbol{D}=\varepsilon_0\boldsymbol{E} \\ \boldsymbol{B}=\mu_0\boldsymbol{H}\end{cases}</math>から電磁波の波動方程式<math>\begin{cases} \text{∆}\boldsymbol{E}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{E}}}{\partial{t}^2} \\ \text{∆}\boldsymbol{H}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{H}}}{\partial{t}^2} \end{cases}</math>及び光速<math>c=\frac{1}{\sqrt{\varepsilon_0\mu_0}}</math>を導け。
==空間積分==
ここでは三次元ユークリッド空間で考える。
===線積分===
偏積分
:<math>\int_a^b f(x,y) dx := \lim_{n \to \infty} \sum_{k=1}^{n} f(x_k,y) \Delta x</math>(<math>\Delta x = \frac{b-a}{n}, x_k = a + k\Delta x</math>)
は<math>xyz</math>空間を<math>y</math>を固定した平面で切った断面に於ける曲線<math>z=f(x, y)</math>と<math>x</math>軸、直線<math>x=a, x=b</math>の囲む符号付き面積であった。
このとき積分変数を各点で見ると<math>x</math>軸という直線上を<math>a\to b</math>と単調に進むことになるが、これを<math>xyz</math>空間の任意の曲線<math>C</math>に拡張することを考える。
三次元空間の曲線をベクトル表示すると
:<math>\boldsymbol{r}(t)=\begin{pmatrix} x(t) \\ y(t) \\ z(t) \end{pmatrix}\quad t\in [\alpha, \beta]</math>
であり、被積分関数はこの曲線上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
偏積分の<math>dx</math>は「<math>x</math>軸上の微小変位」であったが、<math>t</math>が単調なとき曲線に沿った微小変位は曲線上の移動距離、則ち弧長の微小量と考えられるので線素を用いて
:<math>dl=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
これらを総合すると、<math>C</math>に沿った積分というものは曲線のパラメータを用いて
:<math>\int_\alpha^\beta \varphi(\boldsymbol{r}(t))\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>C</math>に沿った'''線積分'''<sup>※</sup>(line integral)という。また、<math>C</math>を'''積分経路'''(積分路、path)という。
<small>※量子力学の[[量子力学#経路積分法|経路積分]](path integral)とは異なる概念である。</small>
スカラー場の線積分は
:<math>\int_C \varphi dl</math>
のように略記される。
特に積分経路が閉曲線('''閉経路''')である場合は
:<math>\oint_C \varphi dl</math>
のように書き、これを<math>C</math>に沿った'''周回/閉路 積分'''(closed line integral)という。
1の線積分<math>\int_C dl</math>は弧長に等しい。
<math>\varphi(\boldsymbol{r})</math>の<math>C</math>の端点に於ける値の差を考える。
<math>t\in[\alpha,\beta]</math>を各<math>t_i</math>に等分割したとき、スカラー関数のテイラー展開より
:<math>\varphi(\boldsymbol{r}(t_i))-\varphi(\boldsymbol{r}(t_{i-1}))=\nabla\varphi(\boldsymbol{r}_{t_i-1})\cdot d\boldsymbol{r}\big|_{t=t_i}+O\left(\left\|d\boldsymbol{r}\big|_{t=t_i}\right\|\right)</math>
なので
:<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))\fallingdotseq \sum_{i=1}^n \nabla\varphi(\boldsymbol{r}(t_{i-1}))\cdot d\boldsymbol{r}\big|_{t=t_i}</math>
右辺で分割数<math>n</math>を無限大に飛ばした極限は区分求積法より
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r}</math>
則ち、曲線<math>C</math>に沿った微分積分学の基本定理
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r} = \varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>
を得る。
これは一変数積分の<math>\int_a^b \frac{df}{dx}dx=f(b)-f(a)</math>に対応し、これは常積分に関する微分積分学の基本定理の別表現である。
左辺をスカラー場の線積分と同様に<math>\int_C \nabla\varphi\cdot d\boldsymbol{r}</math>と書くことにする。
ここで<math>\nabla\varphi</math>を一般のベクトル場<math>\boldsymbol{a}</math>に拡張して同様に
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}</math>
を考えてみたい。
ここで<math>d\boldsymbol{r}</math>は<math>\boldsymbol{r}</math>の全微分と解釈され、一変数関数なので
:<math>d\boldsymbol{r}=\frac{d\boldsymbol{r}}{dt}dt</math>
則ち、
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}=\int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\cdot\frac{d\boldsymbol{r}}{dt}dt</math>
という曲線のパラメータに関する積分に帰着された。
これをベクトル場<math>\boldsymbol{a}</math>の<math>C</math>に沿った'''線積分'''という。
<math>\frac{d\boldsymbol{r}}{dt}</math>は<math>C</math>の接線なので<math>\boldsymbol{a}(\boldsymbol{r})\cdot\frac{d\boldsymbol{r}}{dt}</math>は<math>\boldsymbol{a}</math>から<math>C</math>の接線に沿う沿流成分を取り出していることになる。
このことから、ベクトル場の線積分を特に'''接線積分'''(integral of tangential component)ということがある。
また、<math>d\boldsymbol{r}</math>のノルムを考えてみると
:<math>\|d\boldsymbol{r}\|=\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt=dl</math>
より線素に一致する。
このことから、<math>d\boldsymbol{r}</math>を'''線素ベクトル'''と呼び、<math>d\boldsymbol{l}</math>とも書く。
線素ベクトルは曲線上の微小変位を表すので座標軸上の微小変位の重ね合わせと考えれば
:<math>d\boldsymbol{l}=\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
よって接線積分は形式的に
:<math>\int_C (a_xdx+a_ydy+a_zdz)</math>
とも書かれる。
更に、弧長パラメトライズされている場合は接ベクトルを用いて
:<math>d\boldsymbol{l}=\boldsymbol{t}ds</math>
とも表せる。
接線積分で定義される概念としては、仕事が有名である。
:物体を経路<math>C</math>に沿って力<math>\boldsymbol{F}</math>で運んだときの仕事は摩擦や空気抵抗を無視すると
::<math>W=\int_C \boldsymbol{F}\cdot d\boldsymbol{r}</math>
また、アンペールの法則も線積分で示される。
:閉経路<math>C</math>で囲まれた領域を貫く電流の大きさ<math>I</math>とその電流が生む磁場<math>\boldsymbol{H}</math>に対して
::<math>\oint_C \boldsymbol{H}\cdot d\boldsymbol{l}=I</math>
更に、以下のような概念も定義されている。
:流体の速度場<math>\boldsymbol{v}</math>の循環は
::<math>\Gamma(C)=\oint_C \boldsymbol{v}\cdot d\boldsymbol{l}</math>
*応用問題
**運ばれる物体の質量を<math>m</math>としたとき、仕事の定義とニュートンの運動方程式<math>m\frac{d^2\boldsymbol{r}}{dt^2}=\boldsymbol{F}</math>を用いて運動エネルギーに関するエネルギーの原理<math>W=\frac{1}{2}mv^2-\frac{1}{2}mv_0^2</math>を証明せよ。
<math>C</math>が正の向きにパラメトライズされたとき、負の向きにパラメトライズされた曲線を<math>-C</math>と表した。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の始点が一致するとき、これを一つの曲線と見做して曲線の和
:<math>C_1+C_2</math>
が定義される。
これを'''区分的に定義された曲線'''という。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の終点が一致するとき、<math>C_1</math>を始点とすると曲線の差は
:<math>C_1-C_2=C_1+(-C_2)</math>
で定義される。
<math>C</math>が'''区分的に滑らか'''であるとは、<math>C</math>が有限個の滑らかな曲線の和であることである。
これらを踏まえると、線積分には以下の性質が成り立つ。
#スカラー場
#:<math>\int_C (k\varphi+l\psi) dl=k\int_C \varphi dl + l \int_C \psi dl</math>
#:<math>\int_{-C}\varphi dl = -\int_C \varphi dl</math>
#:<math>\int_{C_1+C_2}\varphi dl = \int_{C_1}\varphi dl + \int_{C_2}\varphi dl</math>
#ベクトル場
#:<math>\int_C (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{l}=k\int_C \boldsymbol{a}\cdot d\boldsymbol{l}+l\int_C \boldsymbol{b}\cdot d\boldsymbol{l}</math>
#:<math>\int_{-C}\boldsymbol{a}\cdot d\boldsymbol{l} = -\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>
#:<math>\int_{C_1+C_2}\boldsymbol{a}\cdot d\boldsymbol{l} = \int_{C_1}\boldsymbol{a}\cdot d\boldsymbol{l} + \int_{C_2}\boldsymbol{a}\cdot d\boldsymbol{l}</math>
1番目の性質は線型性である。2番目の性質から、パラメータの変数変換('''再パラメトライズ''')が向き付けを保つときに線積分の値が保存されることが判る。
保存的ベクトル場に対する線積分<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>はスカラーポテンシャル<math>\varphi</math>を用いて<math>\int_C \nabla\varphi\cdot d\boldsymbol{l}</math>と書けるので微分積分学の基本定理より<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>に等しい。
ここで<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>は曲線の端点にのみ依存し形状には依存しない。
そのため、'''線積分の値が積分経路に依存しない必要十分条件はベクトル場が保存的であること'''である。
ここで閉曲線である場合を考えると
:<math>\boldsymbol{r}(\alpha)=\boldsymbol{r}(\beta)</math>
より
:<math>\varphi(\boldsymbol{r}(\alpha))=\varphi(\boldsymbol{r}(\beta))</math>
なので
:<math>\oint_C \nabla\varphi\cdot d\boldsymbol{l}=0</math>
である。
逆に言うと、'''周回積分が0でない閉経路をとれるとき<math>\varphi</math>は<math>\boldsymbol{a}</math>のスカラーポテンシャルではない'''。
この事実は偏微分方程式を解いて求めたスカラーポテンシャルが実際にポテンシャルであるかどうかの確認に用いられる。
なお、先程求めたスカラーポテンシャルの一般式
:<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>
は線積分で表される。
具体的には、積分経路を<math>\gamma:(m,n,l)\to(m,n,z)\to(m,y,z)\to(x,y,z)</math>という3つの線分の和としてとれば
:<math>\varphi=\int_\gamma \boldsymbol{a}\cdot d\boldsymbol{l}+C</math>
である。
ここでスカラーポテンシャルとは勾配方程式
:<math>\nabla\varphi=\boldsymbol{a}</math>
の解だったので、'''線積分と勾配は逆演算'''である。
<math>\nabla\varphi\cdot d\boldsymbol{l}=d\varphi</math>より、スカラーポテンシャルの存在と完全微分方程式の対応がここからも得られる。また、完全微分方程式<math>d\varphi=0</math>の解は曲線を与えることも容易に判る。
仕事が線積分で定義されるという話をしたが、エネルギーの原理より力場がスカラーポテンシャルを有する(保存場)場合はエネルギー変化が移動経路に依存しないので力学的エネルギー保存法則が成り立つ。これが高校物理で扱った「保存力なら力学エネルギーが保存する」ことの正式な表現である。
ベクトル場の線積分はベクトル場と線素ベクトルの内積をとって積分していたが、外積をとって積分することもできる。
具体的には、
:<math>\boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} a_ydz-a_zdy \\ a_zdx-a_xdz \\ a_xdy-a_ydx \end{pmatrix}</math>
より
:<math>\int_C \boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} \int_C (a_ydz-a_zdy) \\ \int_C (a_zdx-a_xdz) \\ \int_C (a_xdy-a_ydx) \end{pmatrix}</math>
:<math>=\begin{pmatrix} \int_\alpha^\beta \left\{ a_y(\boldsymbol{r}(t))\frac{dz}{dt}-a_z(\boldsymbol{r}(t))\frac{dy}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_z(\boldsymbol{r}(t))\frac{dx}{dt}-a_x(\boldsymbol{r}(t))\frac{dz}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_x(\boldsymbol{r}(t))\frac{dy}{dt}-a_y(\boldsymbol{r}(t))\frac{dx}{dt} \right\}dt \end{pmatrix}</math>
これは物理学的にはビオ・サヴァールの法則の記述に用いられている。
:真空中で経路<math>C</math>を正の向きに流れる強さ<math>I</math>の定常電流・<math>C</math>上にない点<math>\mathrm{P}</math>・<math>C</math>上の点<math>\mathrm{Q}</math>に対し、<math>C</math>全体で生じる磁束密度<math>\boldsymbol{B}</math>の<math>\mathrm{P}</math>での値は真空の透磁率<math>\mu_0</math>として
::<math>\boldsymbol{B}(\mathrm{P})=\frac{\mu_0 I}{4\pi}\int_C \frac{\overrightarrow{\mathrm{PQ}}\times d\boldsymbol{l}}{\|\overrightarrow{\mathrm{PQ}}\|^3}</math>
応用例は乏しいが、スカラー場の線素ベクトルに関する積分、ベクトル場の線素に関する積分も同様に定義される。
:<math>\int_C \varphi d\boldsymbol{l} = \int_\alpha^\beta \varphi(\boldsymbol{r}(t))\frac{d\boldsymbol{r}}{dt}dt</math>
:<math>\int_C \boldsymbol{a} dl = \int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt</math>
これらはベクトル値である。
積分経路を流線上にとると、流線の定義から<math>d\boldsymbol{r}/\!\!/\boldsymbol{a}(\boldsymbol{r})</math>則ち一次従属なので、<math>d\boldsymbol{r}=k\boldsymbol{a}(\boldsymbol{r})</math>と書ける。
よって線積分の被積分関数は<math>\boldsymbol{a} \cdot d\boldsymbol{r} = k\|\boldsymbol{a}\|^2</math>となり、積分値が最大化される他、ベクトル場の沿流方向成分を抽出できる。実際に計算する際は、<math>\int_{\mathrm{streamline}} k\|\boldsymbol{a}\|^2</math>とは書かず、<math>\int_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>と書くのが望ましい(積分記号と積分微小要素はセットのため)。
流線が閉曲線である場合を考えると、<math>\oint_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>は閉曲線の正の向きで正、負の向きで負となるので0にはならない。そのため、流線が閉曲線であるベクトル場はスカラーポテンシャルを持たない。
===面積分===
線積分は常積分に於ける積分経路を任意の正則な<math>C^1</math>級曲線に拡張したものであった。同様に、二重積分に於ける積分領域を'''向き付けされた'''任意の<math>C^1</math>級曲面に拡張することを考える。
曲線に沿った微小量が線素で与えられたように、曲面に沿った微小量は面素で与えられる。故に、直観的には「面素に関して積分」すれば良いことが分かる。
三次元空間の曲面をベクトル表示すると
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} x(t, u) \\ y(t, u) \\ z(t, u) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D</math>
であり、被積分関数はこの曲面上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
面素は
:<math>dS=\sqrt{EG-F^2}dtdu=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
総合すると、<math>S</math>に沿った積分というものは曲面のパラメータを用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>S</math>に沿った'''面積分'''(曲面積分、surface integral)という。
今は三次元空間の場合を考えているので、外積を用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\left\|\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\| dtdu</math>
と表示しても良い。
スカラー場の面積分は
:<math>\iint_S \varphi dS</math>
のように略記される。
特に積分領域が閉曲面である場合は
:<math>\oiint_S \varphi dS</math>
のように書く。
1の面積分<math>\iint_S dS</math>は曲面積に等しい。
ベクトル場の線積分と同様にしてベクトル場の面積分
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
を考えたい。
線素ベクトルが「位置ベクトルの接線方向」で「ノルムが通常の線素と一致する」ように定義されたことを鑑みると、面素ベクトルは「位置ベクトルの法線方向」で「ノルムが通常の面素に一致する」ように定義するのが良いと考えられる。要するに、
:<math>d\boldsymbol{S}:=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>
としてみる。
ここで単位法線ベクトルを<math>\boldsymbol{n}</math>と置くと面素ベクトルは<math>\boldsymbol{n}dS</math>と表され、
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}=\iint_S (\boldsymbol{a}\cdot\boldsymbol{n})dS</math>
のようにスカラー場の面積分に帰着されることが判る。
これをベクトル場<math>\boldsymbol{a}</math>の<math>S</math>に沿った'''面積分'''という。
<math>\boldsymbol{a}\cdot\boldsymbol{n}</math>は<math>\boldsymbol{a}</math>から<math>S</math>の法線を横切る沿流成分を取り出していることになる。
このことから、ベクトル場の面積分を特に'''法線面積分'''(surface integral of the normal component)ということがある。
単位法線ベクトル<math>\boldsymbol{n}</math>は有向曲面に対して右手系を成し、各座標軸となす角度をそれぞれ<math>\alpha, \beta, \gamma</math>とすると通常の余弦関数で表されるベクトル<math>\begin{pmatrix} \cos \alpha \\ \cos \beta \\ \cos \gamma \end{pmatrix}</math>に等しい。これを'''方向余弦'''という。
方向余弦に関して、正射影を用いると以下が成り立つと判る。
:<math>\begin{cases} \cos\alpha dS = dydz \\ \cos\beta dS = dzdx \\ \cos\gamma dS = dxdy \end{cases}</math>
これを用いることで、面素ベクトルは
:<math>d\boldsymbol{S} = \boldsymbol{e}_x dydz + \boldsymbol{e}_y dzdx + \boldsymbol{e}_z dxdy = \begin{pmatrix} dydz \\ dzdx \\ dxdy \end{pmatrix}</math>
とも表される。
故に、法線面積分は形式的に
:<math>\iint_S(a_xdydz+a_ydzdx+a_zdxdy)</math>
とも書ける。
線積分と同様にベクトル場と面素ベクトルの外積、面素ベクトルのスカラー場倍、ベクトル場の面素倍をとって積分することも考えられるが、応用例に乏しい。
:<math>\iint_S \boldsymbol{a}\times d\boldsymbol{S}</math>
:<math>\iint_S \varphi d\boldsymbol{S}</math>
:<math>\iint_S \boldsymbol{a} dS</math>
これらはベクトル値である。
面素ベクトルは以下のように考えることもできる。
:平面<math>\Pi</math>上面積<math>A</math>の有界領域と<math>\Pi</math>の表向き法線<math>\boldsymbol{n}_\Pi</math>に対し、<math>\boldsymbol{A}=A\boldsymbol{n}_\Pi</math>を'''面積ベクトル'''と定義する。
:曲面<math>S</math>上の微小領域をとると曲面をその接平面で近似できるので平面上と同様にして面積ベクトルを定義できる。
:このとき、<math>A=dS</math>となるように定義した面積ベクトルが面素ベクトルである。
この考え方を用いると、
:<math>\oint_C d\boldsymbol{l}=\boldsymbol{0}</math>
及び
:<math>\oiint_S d\boldsymbol{S}=\boldsymbol{0}</math>
が示される。
面積分で定義される概念としては'''束'''<sup>※</sup>(flux)が有名である。
:流体の速度場<math>\boldsymbol{v}</math>に対し、<math>\iint_S \boldsymbol{v}\cdot d\boldsymbol{S}</math>は流束(単位時間当たりに<math>S</math>を通過する流体の流出量)である。
:磁束密度<math>\boldsymbol{B}</math>に対し、<math>\Phi_B=\iint_S \boldsymbol{B}\cdot d\boldsymbol{S}</math>は磁束である。
また、ガウスの法則も面積分で示される。
:ガウス面<math>S</math>が囲む電荷の総量を<math>q_\mathrm{inc}</math>とすると電束密度<math>\boldsymbol{D}</math>に対して
::<math>\oiint_S \boldsymbol{D}\cdot d\boldsymbol{S}=q_\mathrm{inc}</math>
<small>※数学界・物理界で「束」と呼ばれる対象は複数存在する。和訳されるときに「束」が充当されたものはここで扱う「flux」の他に「bundle(ファイバー束など)」「lattice([[束論]]の束)」「pencil(円束など)」「packet(波束など)」がある。</small>
<math>S</math>が表向きにパラメトライズされたとき、裏向きにパラメトライズされた曲面を<math>-S</math>と表した。
同じ向きを向く2つの曲面<math>S_1</math>と<math>S_2</math>の境界が一致するとき、これを一つの曲面と見做して曲面の和
:<math>S_1+S_2</math>
が定義される。
これを'''区分的に定義された曲面'''という。
<math>S</math>が'''区分的に滑らか'''であるとは、<math>S</math>が有限個の滑らかな曲面の和であることである。
これらを踏まえると、面積分には以下の性質が成り立つ。
#スカラー場
#:<math>\iint_S (k\varphi+l\psi) dS=k\iint_S \varphi dS + l \iint_S \psi dS</math>
#:<math>\iint_{-S}\varphi dS = -\iint_S \varphi dS</math>
#:<math>\iint_{S_1+S_2}\varphi dS = \iint_{S_1}\varphi dS + \iint_{S_2}\varphi dS</math>
#ベクトル場
#:<math>\iint_S (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{S}=k\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}+l\iint_S \boldsymbol{b}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{-S}\boldsymbol{a}\cdot d\boldsymbol{S} = -\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{S_1+S_2}\boldsymbol{a}\cdot d\boldsymbol{S} = \iint_{S_1}\boldsymbol{a}\cdot d\boldsymbol{S} + \int_{S_2}\boldsymbol{a}\cdot d\boldsymbol{S}</math>
1番目の性質は線型性である。2番目の性質から、パラメータの変数変換('''再パラメトライズ''')が向き付けを保つときに面積分の値が保存されることが判る。
等位面に対する面積分を考える。曲面<math>S</math>がスカラー場<math>\omega</math>の等位面であるとき、その単位法線ベクトルは勾配を用いて
:<math>\boldsymbol{n}=\pm\frac{\nabla\omega}{\|\nabla\omega\|}</math>
と表される。右手系で考えるので正符号を採る。
等位面の方程式<math>\omega(x,y,z)=c</math>に対して陰関数定理が成り立つとすると陰関数<math>z=\psi(x,y)</math>を用いて<math>S:\boldsymbol{r}(x,y)=\begin{pmatrix} x \\ y \\ \psi(x,y) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in D</math>というモンジュ表示に落ちる。
よって
:<math>dS=\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
と
:<math>\boldsymbol{n}=\frac{\nabla\omega}{\|\nabla\omega\|}</math>
を用いて
:<math>\int_S \varphi dS = \int_D \varphi(x,y,\psi(x,y))\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
:<math>\int_S \boldsymbol{a}\cdot d\boldsymbol{S} = \int_D \boldsymbol{a}(x,y,\psi(x,y))\cdot\frac{\nabla\omega(x,y,\psi(x,y))}{\|\nabla\omega(x,y,\psi(x,y))\|}\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
を得る。
===体積分===
===積分定理===
==発展事項==
{{節stub}}
{{Advanced|多様体論}}
{{Advanced|微分幾何学}}
{{Advanced|積分幾何学}}
ここではベクトル解析の発展編及び微分幾何学の基礎編として、「ユークリッド空間の部分多様体上の微分幾何学」を扱う。言うなれば「<math>n</math>次元版のベクトル解析学」である。
===体積分再考===
体積分は先程「<math>\mathbb{R}^3</math>上の閉立体<math>V</math>」上で考えたが、実はここには線積分・面積分との大きな非対称性がある。
線積分は「曲線」、面積分は「曲面」を積分領域としたが、先程定義した体積分の積分領域は「平坦な立体」なのである(二次元で例えば楕円領域<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}\leq1</math>は境界こそ"曲線"だが空間そのものは<math>\mathbb{R}^2</math>という"平面"であることと同じ)。
1次元の曲がった空間である曲線<math>M^1:\boldsymbol{r}=\boldsymbol{r}(s)</math>が<math>\mathbb{R}^2</math>内、2次元の曲がった空間である曲面<math>M^2:\boldsymbol{r}=\boldsymbol{r}(s, t)</math>が<math>\mathbb{R}^3</math>内に存在するように、3次元の曲がった空間である曲立体<math>M^3:\boldsymbol{r}=\boldsymbol{r}(s, t, u)</math>は<math>\mathbb{R}^4</math>内に存在すると考えるのが自然である。ここで一般に<math>M^n\subset\mathbb{R}^{n+1}</math>が成り立つと予想され、この関係を「<math>M^n</math>の<math>\mathbb{R}^{n+1}</math>への'''埋め込み'''」と呼ぶことにする。
線積分を<math>C=M^1</math>、面積分を<math>S=M^2</math>で定義したように、体積分を<math>M^3</math>で定義することを考える。
媒介変数空間<math>\begin{pmatrix} s \\ t \\ u \end{pmatrix} \in V \subset\mathbb{R^3}</math>上の微小変化を考えると全微分を用いて
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds+\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
よって<math>V</math>上の微小立方体<math>dsdtdu</math>は3ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds,\quad\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt,\quad\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行六面体へ移される。
体素はこの微小平行六面体の体積と考えられるが、<math>\boldsymbol{r}\in\mathbb{R}^4</math>より当然この3ベクトルは4項ベクトルなので、'''外積を含んでいるスカラー三重積は使えない'''。
全微分を一次変換表記すると
:<math>d\boldsymbol{r}=\begin{pmatrix} \frac{\partial{\boldsymbol{r}}}{\partial{s}} & \frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\begin{pmatrix} \frac{\partial{x}}{\partial{s}} & \frac{\partial{x}}{\partial{t}} & \frac{\partial{x}}{\partial{u}} \\ \frac{\partial{y}}{\partial{s}} & \frac{\partial{y}}{\partial{t}} & \frac{\partial{y}}{\partial{u}} \\ \frac{\partial{z}}{\partial{s}} & \frac{\partial{z}}{\partial{t}} & \frac{\partial{z}}{\partial{u}} \\ \frac{\partial{w}}{\partial{s}} & \frac{\partial{w}}{\partial{t}} & \frac{\partial{w}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
ここでヤコビ行列は<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\in\mathbb{R}^{4\times3}</math>であって'''正方行列でないので行列式も求まらない'''。
そこで、[[線型代数学続論/種々の行列#随伴行列|グラム行列]]を利用することを考える。
'''グラム行列は必ず半正定値行列'''なので行列式は非負であり、平方根をとれる。
そのため、<math>\mathbf{G}:=\left(\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\right)^*\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>として<math>\sqrt{\det\mathbf{G}}</math>を体積拡大率とする。
これは正方行列ならヤコビアンの絶対値に一致する。
{{NavTop|title=補足:体積拡大率に一致する証明}}
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>の列ベクトルにグラム=シュミットの直交化法を適用すると[[線型代数学続論/行列分解|QR分解]]によって
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}=\mathbf{QR}\quad (\mathbf{Q}\in\mathbb{R}^{4\times3}, \mathbf{R}\in\mathbb{R}^{3\times3})</math>
よって
:<math>\mathbf{G}=(\mathbf{QR})^*\mathbf{QR}</math>
:<math>=\mathbf{R}^*\mathbf{Q}^*\mathbf{Q}\mathbf{R}</math>
:<math>=\mathbf{R}^*\mathbf{E}_3\mathbf{R}</math>(<math>\because\mathbf{Q}</math>は列ユニタリ行列)
:<math>=\mathbf{R}^*\mathbf{R}</math>
:<math>\therefore \sqrt{\det\mathbf{G}}=\sqrt{\det\left( \mathbf{R}^*\mathbf{R} \right)}=\sqrt{\left(\det\mathbf{R}\right)^2}=|\det\mathbf{R}|</math>
<math>\mathbf{Q}</math>は列ユニタリ行列なのでその一次変換は等長変換であり、全微分による拡大率は<math>\mathbf{R}</math>による拡大率と一致する。<br/>
則ち、<math>\sqrt{\det\mathbf{G}}</math>を拡大率としてとれる。//
{{NavBottom}}
よって体積分は
:<math>\iiint_{M^3} f(\boldsymbol{r})dM^3 = \iiint_{V} f(\boldsymbol{r}(s, t, u))\sqrt{\det\mathbf{G}}\,dsdtdu</math>
ここから、適切な媒介変数表示が存在するならば<math>M^n</math>上での体積分の計算に<math>\mathbb{R}^{n+1}\setminus M^n</math>の情報は入ってこず、<math>M^n</math>の情報のみで計算されると予想される。
実際、<math>M^n</math>に適切な媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})\quad(\boldsymbol{p}\in\mathbb{R}^n)</math>が存在するとき、全微分による一次変換の拡大率は同様にグラム行列式の平方根で与えられるので体積素は<math>dM^n = \sqrt{\det\mathbf{G}} \prod_{k=1}^{n}d\boldsymbol{p}_k</math>と書け、これは正しい。
なお、二次元の場合を考えると<math>\mathbf{G}=\mathbf{K}</math>より<math>dM^2=dS</math>であり、面素に一致する。一次元の場合を考えると<math>\mathbf{G}=\|d\boldsymbol{r}\|^2</math>より<math>dM^1=dl</math>であり、線素に一致する。
実は、体素だけでなく一般に角度や長さといった幾何学的な量は埋め込み先である<math>\mathbb{R}^{n+1}</math>の情報を全く必要とせず、<math>M^n</math>の情報だけで構成できることが知られている。このことは微分幾何学のうち[[w:リーマン幾何学|リーマン幾何学]]と呼ばれる分野で詳しく扱われる。
ここまで<math>M^n</math>を適切な媒介変数<math>\boldsymbol{p}\in\mathbb{R}^n</math>で表すことを強調してきたが、媒介変数表示を考えるということは<math>M^n</math>から媒介変数空間<math>U\subset\mathbb{R}^n</math>への射影<math>\pi:M^n\to U</math>を考えるということである。
ここで、この<math>\pi</math>が全単射ならば逆向きの射影<math>\pi^{-1}:U\to M^n</math>が存在してそれが媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})</math>となるわけであるが、これは以下のようにも捉えられる。
:<math>\pi</math>によって射影した平坦な空間で座標を設定すると、'''適切な逆変換<sup>※</sup>によって曲がった空間<math>M^n</math>上に(局所)座標系を与えることができる'''。
つまり、体積分を媒介変数空間に置換積分するということは、逆に体積分の元の表示が「<math>M^n</math>上の局所座標系に於ける積分」であることを示している。
※この適切な逆変換が存在する条件は'''陰関数定理そのもの'''である。
ここで、適切な媒介変数表示が存在するよう<math>M^n</math>に制限を課したものが、以下で扱う'''多様体'''である。
===多様体===
===微分形式===
[[線型代数学続論/外積代数]]も参照。
===リーマン計量===
===テンソル解析===
[[線型代数学続論/テンソル代数]]も参照。
===複素ベクトル解析===
[[複素解析学]]も参照。
{{DEFAULTSORT:へくとるかいせき}}
[[Category:解析学]]
[[Category:微分積分学]]
[[Category:ベクトル解析|かいせきかくきそ]]
14qha7fnxq56vd111c7obgm834txstc
304827
304818
2026-10-17T22:46:37Z
~2026-55692-88
92812
/* 空間積分 */
304827
wikitext
text/x-wiki
{{Pathnav|数学|解析学|解析学基礎|frame=1}}
{{wikipedia|ベクトル解析}}
ここでは、ベクトル解析について解説する。[[物理数学I ベクトル解析]]も参照。
==前提知識==
ここでは、実数のみで考える。
===ベクトル===
[[高等学校数学C/ベクトル]]、[[線型代数学/ベクトル]]、[[解析学基礎/ベクトル]]などを参照。本項では、矢印を付した表記(<math>\vec{a}</math>など)と太字斜体による表記(<math>\boldsymbol{x}</math>など)を混用する。
===行列===
[[高等学校数学C/数学的な表現の工夫]]及び[[線形代数学]]・[[線型代数学続論]]の各ページを参照。本項では大文字の太字立体(<math>\mathbf{A}</math>など)で表記する。
===多変数解析===
[[解析学基礎/多変数関数の微積分]]を参照。
===領域===
<math>D\subset\mathbb{R}^n</math>と点<math>\boldsymbol{a}\in D</math>(位置ベクトル表記なので太文字斜体)に対し、集合<math>B_\varepsilon(\boldsymbol{a}) := \{ \boldsymbol{x} \in D \mid \| \boldsymbol{x} - \boldsymbol{a} \|<\varepsilon \}</math>を点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開球'''という。不等号を<math>\leqq</math>に変えたときは開区間↔閉区間と同様に'''閉球'''と呼ぶ。このとき、<math>D</math>のように<math>\mathbb{R}^n</math>の部分集合であって<math>\varepsilon</math>-開球を含むものを点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開近傍'''と呼ぶ。閉球を含むときは同様に'''閉近傍'''と呼ぶ。
<math>\forall \boldsymbol{a} \in U, \exist \varepsilon>0, B_\varepsilon(\boldsymbol{a})\subset U</math>を満たす<math>U\subset\mathbb{R}^n</math>を'''開集合'''と呼び、<math>V=\mathbb{R}^n\setminus U</math>を'''閉集合'''と呼ぶ。
注意点として、開集合と閉集合は排反ではない。則ち「開集合且つ閉集合」である集合が存在し(例えば<math>\mathbb{R}, \varnothing</math>)、「開集合でも閉集合でもない」集合も存在する(例えば<math>[0, 1)</math>)。
<math>M\subset\mathbb{R}^n</math>を含む最小の閉集合を<math>M</math>の'''閉包'''と呼び、<math>M^-, \bar{M}, \mathrm{Cl}(M)</math>などと表す。例えば有理数の稠密性より<math>\mathbb{Q}^-=\mathbb{R}</math>である。
閉包の性質として「閉包=集合の内部と境界の和集合(<math>M^- = \mathrm{Int}(M) \cup \partial{M}</math>)」がある。
集合<math>S\subset\mathbb{R}^n</math>に対して以下を満たす<math>\mathbb{R}^n</math>上開集合の組<math>(G_1, G_2)</math>が'''とれない'''とき、
#<math>G_1 \cap S = \varnothing \land G_2 \cap S = \varnothing</math>
#<math>S = (G_1 \cap S) \sqcup (G_2 \cap S)</math>
「<math>S</math>は'''連結'''である」または「<math>S</math>は'''連結集合'''」という(但し、<math>\sqcup</math>は[[w:非交和|非交和]])。
空でない開連結集合を'''領域'''という。
実は、高校数学や1年次の解析学で扱ってきた「領域」はこの定義を満たしていないことが多かった。これは、「領域」の歴史的な用法では「条件の解集合」という意味であって開性や連結性を要求しなかったためである。しかし、本項を含めた以降に登場する数学ではこの定義を満たしていることが前提条件となる。なお、ややこしいことに「積分領域」は従来通り「その上で積分を行う集合」という緩い意味で使われることが多いので、区別が必要である。
===右手系===
三次元空間の正規直交基底を<math>(\boldsymbol{e}_1, \boldsymbol{e}_2, \boldsymbol{e}_3)</math>と置く。螺子を<math>\boldsymbol{e}_1\to\boldsymbol{e}_2</math>の向きに回すと<math>\boldsymbol{e}_3</math>の正方向に進むように3つの軸をとった系を'''右手系'''という。負方向に進むようにとったものを'''左手系'''という。数学・物理に限らず理数系の約束事として、'''三次元空間は必ず右手系で考える'''という暗黙の了解が存在するので覚えておこう。
右手系・左手系は基底の一部または全ての符号を反転することで変換することができる。一つだけを反転する場合は'''鏡像変換'''、二つだけを反転する場合は'''半回転'''、全てを反転する場合は'''空間反転'''と呼ぶ。
外積の結果として得るベクトルは右手系・左手系のどちらを考えるかで向きが変わる。このように、右手系↔左手系の変換で向きが変わるベクトルを'''軸性ベクトル'''という。
系の取り方で向きが変わるということは基底の係数である'''成分は不変量'''である。つまり、観測者の動きにベクトルが追従し、このベクトルは「物理的な実体を有しているのではなく計算の都合上向きが定められた便宜的な(=観測者が勝手に決めた)ベクトル」ということである。そのため、軸性ベクトルは'''擬ベクトル'''(シュードベクトル)とも呼ばれる。
位置や速度、加速度のような右手系・左手系のどちらを考えても同じ向きを向くベクトルを'''極性ベクトル'''という。座標系を取り換えても向きが維持されるため'''成分は座標変換に応じて変化する'''。これは、「観測の仕方によって起こる現象は変わらない」ということである。つまり擬ベクトルに対し、極性ベクトルは'''物理的実体を有するベクトル'''である。
偶奇と同じように軸性・極性にも外積を通じた相互関係が存在する。
:(軸性)×(軸性)=(軸性)
:(軸性)×(極性)=(極性)
:(極性)×(極性)=(軸性)
==基礎事項==
===ベクトル関数===
関数<math>\boldsymbol{f} (x) = \sum_{i} f_i(x) \boldsymbol{e}_i</math>を'''ベクトル(値)関数'''(vector-valued function, vector function)という。
ただし、各<math>\boldsymbol{e}_i</math>は各座標軸方向の単位ベクトルであり、<math>\boldsymbol{f}(x)</math>の定義域は各<math>f_i(x)</math>の定義域の積集合である。
ベクトルの演算が成分ごとの演算結果を並べたベクトルで定義されたように、ベクトル関数の演算は(結果となる値が存在するならば)各成分の演算結果を並べたベクトルに等しい。これはベクトルの線型性による。
例えば、<math>\boldsymbol{f}(x) = \begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>の極限は、
:<math>\lim_{x\to0} \boldsymbol{f}(x) = \begin{pmatrix} \lim_{x\to0} \cos x \\ \lim_{x\to0} \sin x \end{pmatrix}</math> (<math>\because</math>線型性)
:<math>=\begin{pmatrix} 1 \\ 0 \end{pmatrix}</math>
:<math>=\boldsymbol{e}_x</math>
と求まる。
このとき、<math>\boldsymbol{e}_x</math>を<math>\begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>に於ける'''極限ベクトル'''という。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で連続であるとは<math>\lim_{x\to\alpha}\boldsymbol{f}(x)=\boldsymbol{f}(\alpha)</math>が成立することであり、区間<math>I</math>で連続であるとは<math>\forall \alpha \in I</math>で連続であることである。
また、ベクトル関数の導関数<math>\boldsymbol{f}'(x)</math>は
:<math>\frac{d}{dx} \boldsymbol{f} (x) = \frac{d}{dx} \left( \sum_i f_i(x) \boldsymbol{e}_i \right)</math>
:<math>= \sum_i \left( \frac{d}{dx} f_i (x) \boldsymbol{e}_i \right)</math>(<math>\because</math>線型性)
:<math>= \begin{pmatrix} f'_1(x) \\ f'_2(x) \\ \vdots \\ f'_i(x) \\ \vdots \end{pmatrix}</math>
である。
この結果は、ベクトル関数に於ける導関数の正式な定義 <math>\lim_{h\to0} \frac{\boldsymbol{f}(x+h) - \boldsymbol{f}(x)}{h}</math>からも導かれる。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で微分可能であるとは極限値<math>\boldsymbol{f}'(\alpha)=\lim_{x\to\alpha}\frac{\boldsymbol{f}(x)-\boldsymbol{f}(\alpha)}{x-\alpha}</math>が存在することであり、区間<math>I</math>で微分可能であるとは<math>\forall \alpha \in I</math>で微分可能であることである。
高階導関数・高階微分可能も同様にして定義される。
<math>\boldsymbol{f}(x)</math>が区間<math>I</math>で連続ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^0</math>級であるといい、<math>\boldsymbol{f}\in C^0(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で微分可能で<math>\boldsymbol{f}'(x)\in C^0(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^1</math>級である(一階連続微分可能)といい、<math>\boldsymbol{f}\in C^1(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で二階微分可能で<math>\boldsymbol{f}'\in C^1(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^2</math>級である(二階連続微分可能)といい、<math>\boldsymbol{f}\in C^2(I)</math>と書く。同様にして順々に<math>C^k</math>級が定義され、<math>\forall k \in \mathbb{N}, \boldsymbol{f}\in C^k(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>で<math>C^\infty</math>級(無限階連続微分可能)であるといい、<math>\boldsymbol{f}\in C^\infty(I)</math>と書く。<math>C^\infty</math>級である関数を'''滑らかな'''関数ともいう。
高校数学や高校物理で扱った平面(<math>\mathbb{R}^2</math>)上の運動は、実は2項ベクトル関数の理論に他ならない。
例えば、平面上の運動に於ける加速度・速度・変位の関係は<math>\boldsymbol{x}(t)= \begin{pmatrix} f(t) \\ g(t) \end{pmatrix}</math>として<math>\boldsymbol{a}(t) = \frac{d}{dt}\boldsymbol{v}(t) = \frac{d^2}{dt^2} \boldsymbol{x}(t)</math>と表すことができる。
曲線の媒介変数表示は、パラメータを変数とするベクトル関数とみることができる。
例えば、円の媒介変数表示<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \end{cases}</math>は、<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>という2次元ベクトル関数とみることができる。更に<math>\theta=\omega t</math>とすると、これは等速円運動の式である。
1変数ベクトル関数の微分に関して、以下の公式が成り立つ。
#定数倍の導関数:<math>\{k\boldsymbol{a}(x)\}'=k\boldsymbol{a}'(x)</math>
#和・差の導関数:<math>\{ \boldsymbol{a}(x)\pm\boldsymbol{b}(x) \}' = \boldsymbol{a}'(x)\pm\boldsymbol{b}'(x)</math>
#積の導関数:<math>\{ f(x)\boldsymbol{a}(x) \}' = f'(x)\boldsymbol{a}(x)+f(x)\boldsymbol{a}'(x)</math>
#商の導関数:<math>\left\{ \frac{\boldsymbol{a}(x)}{f(x)} \right\}' = \frac{f(x)\boldsymbol{a}'(x)-f'(x)\boldsymbol{a}(x)}{\{f(x)\}^2} \quad (f(x)\neq0)</math>
#内積の導関数:<math>\{\boldsymbol{a}(x)\cdot\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)+\boldsymbol{a}(x)\cdot\boldsymbol{b}'(x)</math>
#外積の導関数:<math>\{\boldsymbol{a}(x)\times\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\times\boldsymbol{b}(x)+\boldsymbol{a}(x)\times\boldsymbol{b}'(x)</math>
#スカラー三重積の導関数:<math>[\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#ベクトル三重積の導関数:<math>[\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#連鎖律(チェイン・ルール):<math>[\boldsymbol{a}\{f(x)\}]'=\boldsymbol{a}'\{f(x)\}f'(x)</math>
ベクトル関数の'''ノルム'''(大きさ、長さ)は、通常のベクトルと同様に
:<math>\| \boldsymbol{f}(x) \| = \sqrt{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)} = \sqrt{\sum_{i} \{f_i (x)\}^2}</math>
で与えられる。
つまり、ノルムは元のベクトル関数と同一変数のスカラー関数である。
ここで、このスカラー関数が定数関数である条件に就て見てみよう。
:<math>\| \boldsymbol{f}(x) \|= c \quad (c\in\mathbb{R}_{>0})</math>の両辺を2乗して
:<math>\| \boldsymbol{f}(x) \|^2 = \boldsymbol{f}(x)\cdot\boldsymbol{f}(x) = c^2</math>
:両辺微分すると内積の微分より
:<math>\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:<math>\therefore \boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:逆に、
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0 \iff 2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=0</math>
:<math>\int \{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'dx= \int 0 dx</math>
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)=C_1</math>(<math>C_1\geq0</math>は積分定数)
:<math>\| \boldsymbol{f}(x) \|^2=C_1</math>より
:<math>\| \boldsymbol{f}(x) \| = \sqrt{C_1} = \mathrm{const}.</math>
よって、以下が成り立つ。
{{定理|(直交条件の定理)}}
:<math>\| \boldsymbol{f}(x) \|= \mathrm{const}. \iff \boldsymbol{f}(x) \cdot \boldsymbol{f}'(x) = 0</math>
{{定理終わり}}
これは、物理的には「位置ベクトルと速度ベクトルが直交する」ことを表す。則ち、<math>\boldsymbol{f}(x)</math>の終点が始点を中心とする円運動(球面運動)をするということである。
また、ベクトル関数が変数に依らず常に同一方向を向く条件も見てみよう(但し<math>\boldsymbol{f}(x)\neq\boldsymbol{0}</math>)。
:所与の条件は零ベクトルでない定ベクトル<math>\boldsymbol{c}</math>を用いて<math>\boldsymbol{f}(x) = f(x)\boldsymbol{c}</math>と表される。
:両辺微分して<math>\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}=f'(x)\boldsymbol{c}</math>
:ここで元のベクトル関数との外積をとると
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}\times\{f'(x)\boldsymbol{c}\}=f(x)f'(x) (\boldsymbol{c}\times\boldsymbol{c})=f(x)f'(x)\boldsymbol{0}=\boldsymbol{0}</math>
:逆に、
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\boldsymbol{0}</math>とすると一次従属なので
:<math>\boldsymbol{f}'(x)=g(x)\boldsymbol{f}(x)</math>という微分方程式が成り立つ。
:各成分ごとに微分方程式を解くと、
::これは変数分離型微分方程式なので第i成分は
::<math>\frac{df_i}{dx}=g(x)f_i(x)</math>
::<math>\int \frac{df_i}{f_i(x)}=\int g(x)dx</math>
::<math>G'(x)=g(x), C_i</math>を積分定数として<math>\log|f_i(x)|=G(x)+C_i</math>
::<math>C_i=\pm e^{C_i}</math>と改めておくと<math>f_i(x)=C_i e^{G(x)}</math>
:よって
:<math>\boldsymbol{f}(x)=\sum_i f_i(x) \boldsymbol{e}_i = \sum_i C_i e^{G(x)} \boldsymbol{e}_i = e^{G(x)} \sum_i C_i \boldsymbol{e}_i</math>
:ここで<math>f(x)=e^{G(x)}, \boldsymbol{c}=\sum_i C_i \boldsymbol{e}_i</math>と置くと
:<math>\boldsymbol{f}(x) = f(x) \boldsymbol{c}</math>となり、方向は変数に依らず一定であることが判る//
よって、以下が成り立つ。
{{定理|(平行条件の定理)}}
<math>\boldsymbol{c},\boldsymbol{f}(x)\neq\boldsymbol{0}</math>として
:<math>\boldsymbol{f}(x)=f(x)\boldsymbol{c} \iff \boldsymbol{f}(x) \times \boldsymbol{f}'(x) = \boldsymbol{0}</math>
{{定理終わり}}
ベクトル解析では三次元空間の場合を考えることが多いため上では外積を用いて証明したが、外積は3項ベクトル(または7項ベクトル)にしか定義されないのであった。
一般次元では外積に代わって次の関係式を用いる。
:<math>|\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)|=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|</math>
これはCS不等式の等号成立の場合である。
実際、<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|\cos\{\theta(x)\}</math>より等号成立の必要十分条件は
:<math>\cos\{\theta(x)\}=\pm1\iff\theta(x) \equiv 0 \,(\mathrm{mod}\pi)</math>
であり、2ベクトル<math>\boldsymbol{f}(x), \boldsymbol{f}'(x)</math>は平行とわかる。<br/>
平行ということは一次従属ということなので先程のように変数分離形微分方程式を解くことで3次元と同じ結果を得る。//
補足として、力学への応用を考える。
:速さの二乗<math>\|\boldsymbol{v}(t)\|^2</math>を時間微分すると
:<math>\frac{d}{dt}\|\boldsymbol{v}(t)\|^2=\frac{d}{dt}(\boldsymbol{v}(t)\cdot\boldsymbol{v}(t))=\frac{d\boldsymbol{v}(t)}{dt}\cdot\boldsymbol{v}(t)+\boldsymbol{v}(t)\cdot\frac{d\boldsymbol{v}(t)}{dt}=2(\boldsymbol{v}(t)\cdot\boldsymbol{a}(t))</math>
:よって等速運動の条件<math>\|\boldsymbol{v}(t)\|=\mathrm{const}.</math>は直交条件の定理から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>に同値である。
:これを力学的に解釈すると、「加速度ベクトルは速度ベクトル方向に仕事をしないから速度ベクトルの大きさを変えずに向きだけを変える」となる。
:平面上で等速円運動を考えると円運動条件から<math>\boldsymbol{r}(t)\perp\boldsymbol{v}(t)</math>、等速条件から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>なので<math>\boldsymbol{r}(t) /\!/ \boldsymbol{a}(t)</math>が出てくる。
:円運動条件<math>\|\boldsymbol{r}(t)\|^2=r^2</math>を一階微分すると
::<math>2\boldsymbol{r}(t)\cdot\boldsymbol{r}'(t)=0</math>
:もう一度微分して
::<math>2(\boldsymbol{r}(t)\cdot\boldsymbol{r}''(t)+\boldsymbol{r}'(t)\cdot\boldsymbol{r}'(t))=0</math>
:則ち
::<math>\boldsymbol{r}(t)\cdot\boldsymbol{a}(t)+\boldsymbol{v}(t)\cdot\boldsymbol{v}(t)=0</math>
:位置ベクトルと加速度ベクトルが一次従属なので<math>\boldsymbol{a}(t)=\lambda\boldsymbol{r}(t)</math>であり、等速条件より<math>\|\boldsymbol{v}(t)\|=v</math>なので
::<math>\lambda r^2 + v^2 = 0</math>
::<math>\therefore \lambda = -\frac{v^2}{r^2}<0</math>
:則ち<math>\boldsymbol{r}(t)</math>と<math>\boldsymbol{a}(t)</math>は逆向きであり、円運動の中心は<math>\boldsymbol{r}(t)</math>の始点なので<math>\boldsymbol{a}(t)</math>は常に円運動の中心を向く'''向心加速度'''であることが証明された。//
なお、3次元以上では「<math>\boldsymbol{a}\perp\boldsymbol{b}\land\boldsymbol{b}\perp\boldsymbol{c}\implies\boldsymbol{a}/\!/\boldsymbol{c}</math>」が一般には成り立たないのでこの議論を成立させるには追加の条件が必要である。
<math>\boldsymbol{f}(x)</math>の不定積分は、各<math>f_i(x)</math>の原始関数を並べたベクトルを<math>\boldsymbol{F}(x)</math>として
:<math>\int \boldsymbol{f}(x) dx = \boldsymbol{F}(x)+\boldsymbol{C}</math>(<math>\boldsymbol{C}</math>は各積分定数を並べたベクトル)
と表される。
また、定積分は
:<math>\int^b_a \boldsymbol{f}(x) dx=\boldsymbol{F}(b)-\boldsymbol{F}(a)</math>
と表される。
1変数ベクトル関数の積分について、以下が成り立つ(不定積分表記だが定積分に就ても同様)。
#定数倍の原始関数:<math>\int \{k\boldsymbol{a}(x)\} dx = k\int\boldsymbol{a}(x)dx</math>
#和・差の原始関数:<math>\int \{\boldsymbol{a}(x)\pm\boldsymbol{b}(x)\}dx=\int\boldsymbol{a}(x)dx\pm\int\boldsymbol{b}(x)dx</math>
#内積の原始関数<math>\int \{\boldsymbol{k}\cdot\boldsymbol{a}(x)\}dx=\boldsymbol{k} \cdot \left( \int \boldsymbol{a}(x) dx \right)</math>
#外積の原始関数<math>\int \{\boldsymbol{k}\times\boldsymbol{a}(x)\}dx=\boldsymbol{k} \times \left( \int \boldsymbol{a}(x) dx \right)</math>
#スカラー倍の部分積分:<math>\int f(x)\boldsymbol{a}'(x)dx= f(x)\boldsymbol{a}(x)-\int f'(x)\boldsymbol{a}(x) dx \iff \int f'(x)\boldsymbol{a}(x)dx= f(x)\boldsymbol{a}(x)-\int f(x)\boldsymbol{a}'(x) dx</math>
#内積の部分積分:<math>\int \{ \boldsymbol{a}(x)\cdot\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\cdot\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)\}dx</math>
#外積の部分積分:<math>\int \{ \boldsymbol{a}(x)\times\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\times\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\times\boldsymbol{b}(x)\}dx</math>
#置換積分:<math>u=f(x)</math>として<math>\int \boldsymbol{a}'\{f(x)\}f'(x) dx = \int \boldsymbol{a}(u)du</math>
平行条件の定理の証明でベクトル関数の微分方程式を解いたように、成分毎に考えることで解空間ベクトルを求められる。
:1階線型常微分方程式<math>\boldsymbol{f}'(x)+a(x)\boldsymbol{f}(x)=\boldsymbol{b}(x)</math>の解に就て考える。
:第<math>i</math>成分を考えると<math>f'_i(x)+a(x)f_i(x)=b_i(x)</math>という1階線型常微分方程式を得るので、
:両辺に積分因子<math>\mu(x)=\exp\left(\int a(x) dx\right)</math>を掛けることで
:<math>f_i(x)=\frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\}</math>を得る。
:よって一般解は
:<math>\boldsymbol{f}(x) = \sum_i \frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\} \boldsymbol{e}_i=\frac{1}{\mu(x)}\left\{ \int \mu(x) \boldsymbol{b}(x) dx + \boldsymbol{C} \right\}</math>
ベクトル関数は必ずしもここで扱った<math>\boldsymbol{f}: \mathbb{R}\to\mathbb{R}^n</math>のみを指さない。
例えば、ベクトル変数 <math>\boldsymbol{x}= \sum_i g_i (x) \boldsymbol{e}_i</math>に対して
:<math>\boldsymbol{h}(\boldsymbol{x})=\sum_i (h_i \circ g_i) (x) \boldsymbol{e}_i</math>
と定義されるような関数<math>\boldsymbol{h}:\mathbb{R}^m \to \mathbb{R}^m</math>もベクトル関数である。
また、始域と終域の次元が異なる<math>\boldsymbol{i}: \mathbb{R}^m \to \mathbb{R}^n \, (m, n\neq1)</math>のようなベクトル関数も考えられる。
一般に、始域が<math>\mathbb{R}^n (n\neq1)</math>であっても終域が<math>\mathbb{R}</math>である関数はベクトル関数に対して'''スカラー関数'''(scalar function)と呼ばれる。スカラー関数は入力ベクトルを「変数の組」と見れば通常の多変数関数に一致する。
この節で述べた理論は、多くは一般のベクトル関数に対しても成り立つ。但し、後述のヤコビ行列のような拡張を必要とするものもある。
また、多変数ベクトル関数<math>\boldsymbol{f}(x_1, x_2,\cdots,x_n)</math>を考えたとき、多変数微積分の理論は一変数微積分と同様にしてベクトル関数にもそのまま拡張される。
===ベクトル場・スカラー場===
写像<math>\boldsymbol{a}: \mathbb{R}^m \to \mathbb{R}^n</math>を'''ベクトル場'''(vector field)という。
実際には<math>m=n</math>の場合を考えることが多い。
写像<math>\varphi: \mathbb{R}^n \to \mathbb{R}</math>を'''スカラー場'''(scalar field)という。
それぞれ上で述べたベクトル関数・スカラー関数に対応する。
もう少し具体的に述べると、空間の領域<math>V</math>が与えられたときその各点にスカラーまたはベクトルを割り当てたものが場である。要するに、<math>p\in V</math>とすると
:スカラー場:<math>\varphi=\varphi(p)</math>
:ベクトル場:<math>\boldsymbol{a}=\boldsymbol{a}(p)</math>
のように場は「点を入力とする<sup>※</sup>関数」である。
<small>※なお、ベクトル場を図示するときは「出力されたベクトルの'''始点は原点でなく入力された点'''」であることに注意が必要である。出力ベクトルの成分表示は「入力点を基準に据えたときの位置ベクトル」なので原点から目盛を数えることに意味はない。</small>
ここで<math>V</math>に何かしらの座標が設定されていれば、その座標系の変数の組をベクトルと見做すことで場を「通常のスカラー関数・ベクトル関数」として扱えるのである。
則ち、「滑らかな場」という概念は「滑らかな関数」として定義することができる。より具体的に言うと、スカラー場・ベクトル場が'''滑らか'''であるとは対応するスカラー関数・ベクトル関数が<math>C^\infty</math>級であることである。但し、滑らかさは任意の座標変換で保たれるわけではないことに注意が必要である(後述の座標変換テンソル及びその逆行列の全ての成分関数が滑らかである必要がある)。
ここで、二変数関数の極値を思い返してみる。
<math>z=f(x, y)</math>が<math>(a, b)</math>で極大であるとは<math>\begin{pmatrix} x \\ y \end{pmatrix}\neq\begin{pmatrix} a \\ b \end{pmatrix}</math>として
:<math>\exist \delta>0, \forall {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in \mathbb{R}^2, {\scriptstyle\left\| \left(\begin{array}{c} x \\[-6pt] y \end{array}\right) - \left(\begin{array}{c} a \\[-6pt] b \end{array}\right) \right\|} < \delta \implies f(x, y) \leq f(a, b)</math>
という定義だった。
<math>z=f(x, y)</math>は曲面を表すが、これを<math>z</math>軸正方向から<math>xy</math>平面に射影するとその陰が<math>(x, y)</math>の動く範囲となるのであった。
ここで<math>\boldsymbol{x}:=\begin{pmatrix} x \\ y \end{pmatrix}, \boldsymbol{\alpha}:=\begin{pmatrix} a \\ b \end{pmatrix}</math>とすると<math>z=f(x, y)</math>はスカラー場<math>z=\phi(\boldsymbol{x})</math>と解釈することができ、更に条件法の前件は<math>\boldsymbol{\alpha}</math>の<math>\delta</math>-開球(二次元なので開円板)である。
なので、極大値の定義式をベクトル解析的に解釈すると「<math>xy</math>平面の各点に<math>z</math>の値を割り当てた数分布に於いて、開円板<math>B_\delta(\boldsymbol{\alpha})</math>内部に於ける<math>z</math>の最大値が<math>\phi(\boldsymbol{\alpha})</math>となるような正数<math>\delta</math>が存在する」ということである。
ベクトル場の例としては、電場・磁場・重力場などが挙げられる。
スカラー場の例としては、電位分布・温度分布・圧力分布などが挙げられる。
例えば、ベクトル場<math>\boldsymbol{f}=(x, 0, 0)</math>は、<math>\mathbb{R}^3</math>内の平面<math>x=k</math>上の任意点に、その点を始点とするベクトル<math>\begin{pmatrix} k \\ 0 \\ 0 \end{pmatrix}</math>が存在する状態を表す。
ベクトル場の和は、出力ベクトルの型が同じならばベクトル場の成分の和をとったものに等しい。
例えば、<math>\boldsymbol{f}(x, y, z)=(y, z, x), \boldsymbol{g}(x, y, z)=(z, x, y)</math>について
:<math>(\boldsymbol{f}+\boldsymbol{g})(x, y, z)=(y, z, x)+(z, x, y)=(y+z, z+x, x+y)</math>である。
これは、ベクトル場の加法の定義が
:<math>\forall p \in V, (\boldsymbol{f}+\boldsymbol{g})(p):=\boldsymbol{f}(p)+\boldsymbol{g}(p)</math>
となっていて且つ<math>V</math>に座標を入れればベクトル関数の加法則をそのまま適用できるためである(入力点が異なるとき、場同士は足すことができない)。
曲線<math>\{\boldsymbol{x}\in\mathbb{R}^2 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等高線'''(等高曲線)、曲面<math>\{\boldsymbol{x}\in\mathbb{R}^3 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等位面'''(等位曲面)という。これらの詳細は後述する。
==曲線論・曲面論==
===曲線===
<math>xy</math>平面上の曲線は<math>y=f(x) (x\in[a, b])</math>という陽関数表示で扱うことが多かった。しかし、これだと自分自身と交わる('''自己交叉'''する)曲線や<math>x=x_0</math>に対して<math>f(x_0)</math>の値が複数存在する(<math>f</math>が'''多価関数''')場合に不都合が生じる。
例えば円を陽関数表示しようとすると
:<math>x^2+y^2=r^2</math>を<math>y</math>に就いて解いて
:<math>y=\pm\sqrt{r^2-x^2}</math>
則ち
:<math>y=\begin{cases} \sqrt{r^2-x^2} & (y\geq0) \\ -\sqrt{r^2-x^2} & (y<0) \end{cases}</math>
という多価関数が必要になる。
これだと端点の振舞を一々調べる必要があって曲線の連続性や接線の議論が煩雑になってしまう。
しかし、先程も述べたように曲線の媒介変数表示はベクトル関数として見れるのであった。
:<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>(再掲)
こうすると一変数連続ベクトル関数によって曲線を表すことが可能である。物理的に捉えると「質点の運動の軌跡を原点からの位置ベクトルの時間変化で表す」ということである。
一般に、<math>\boldsymbol{r}\in\mathbb{R}^n, t \in I</math>としてベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>の解集合<math>\{\boldsymbol{r}(t) \mid t \in I \}</math>は<math>n</math>次元空間内の曲線<math>C</math>を表す。これを<math>C</math>の'''ベクトル表示'''という。
ベクトル表示は成分表示に直せば<math>\boldsymbol{r}(t)=\sum_i r_i(t)\boldsymbol{e}_i</math>となる。これは媒介変数表示<math>\begin{cases} x_1&=&r_1(t) \\ x_2&=&r_2(t) \\ &\,\,\vdots& \\ x_n&=&r_n(t) \end{cases}</math>をベクトル表記したものに一致する。
例えば、<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ bt \end{pmatrix}</math>は'''常螺旋'''(弦巻線)のベクトル表示である。
パラメータが増加するときの点の移動方向を曲線の'''正の向き'''と定める。曲線の'''負の向き'''はパラメータが減少するときの点の移動方向である。このとき、パラメータで'''向き付け'''された曲線という表現もなされる。曲線<math>C</math>に対し、同じパラメータを用いた逆向きの曲線を<math>-C</math>と表す。ベクトル表示では<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>-C:\boldsymbol{r}=\boldsymbol{r}(-t)</math>ということである。
パラメータに関する変数変換<math>u=\phi(t)</math>を考える。但し、<math>\phi</math>は広義単調関数とする<sup>※</sup>。このとき、<math>\frac{du}{dt}</math>が非負ならば曲線の向き付けが保たれ、非正ならば向き付けが反転する。<math>\frac{du}{dt}=0</math>となる領域では点の運動が停止する。
<small>※<math>\phi</math>が非単調関数のときは曲線上の点が行ったり来たりすることになるため曲線のパラメータ表示としては扱いづらい。</small>
<math>\boldsymbol{r}(t) \in C^1</math>且つ<math>\boldsymbol{r}'(t)\neq\boldsymbol{0}</math>であるとき、曲線<math>C</math>は'''滑らか'''であるという。
滑らかな曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>\boldsymbol{r}'(t)</math>を<math>C</math>の'''速度ベクトル'''という。
<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}</math>として点<math>\mathrm{P}(t)</math>に於ける速度ベクトルは<math>\lim_{\Delta t\to0}\frac{\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)}{\Delta t}</math>の極限ベクトルであるが、<math>\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)</math>を図示することで速度ベクトルが曲線<math>C</math>の点<math>\mathrm{P}(t)</math>に於ける接線の方向ベクトルになっていることがわかる。よって、速度ベクトルを'''接線ベクトル'''(接ベクトル)ともいう。
速度ベクトルが非零である曲線を'''正則'''な曲線と呼ぶ。滑らかな曲線は正則曲線である。
なお、一般には陽関数表示が区分的であることとベクトル表示の成分関数が区分的であることに対応はないほか、パラメータの取り方で速度ベクトルが変わるので「曲線の幾何学的滑らかさ」と「ベクトル表示した関数の解析学的滑らかさ」は一致するとは限らない。
正則な曲線に対して曲線長('''弧長''')を考える。
二次元曲線の場合は数学Ⅲで既に扱った。
:<math>L=\int_a^b \sqrt{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2}dt</math>
実は、これを一般の<math>n</math>次元にそのまま拡張することができる。
{{定理|(弧長公式)}}
曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ(<math>a<b</math>)は
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
で与えられる。
{{定理終わり}}
*証明
:<math>a=t_0, b=t_m</math>として閉区間<math>[a, b]</math>を各<math>t_i</math>で等分割する。このとき小区間<math>[t_{k-1}, t_k]</math>の長さは<math>\Delta t=\frac{b-a}{m}</math>。
:<math>C</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ<math>L</math>は折れ線の長さ<math>\overline{\mathrm{P}(t_{k-1})\mathrm{P}(t_k)}</math>の総和で近似される。
:ここで<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}(t)</math>より
::<math>L_m=\sum_{k=1}^m \| \boldsymbol{r}(t_k)-\boldsymbol{r}(t_{k-1}) \| = \sum_{k=1}^m \left\| \frac{\boldsymbol{r}(t_{k-1}+\Delta t)-\boldsymbol{r}(t_{k-1})}{\Delta t-0} \right\|(\Delta t-0)</math>
:分割を限りなく細かくする極限をとると<math>m\to\infty</math>より<math>\Delta t\to0</math>なので
::<math>\lim_{m\to\infty} L_m = \sum_{k=1}^\infty \left\| \frac{d\boldsymbol{r}}{dt}(t_{k-1}) \right\|dt</math>
:区分求積法より最後の無限級数は収束して
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>//
ここで、<math>dl:=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>という微小量を'''線素'''と呼ぶ。
1を線素に関して積分したパラメータ<math>s:=\int_0^t dl</math>を'''弧長パラメータ'''(標準パラメータ)という。弧長パラメータは曲線上で「基準点からの符号付き距離」を表す。
曲線の弧長パラメータによるベクトル表示('''弧長パラメータ表示''')を考える。<math>s=\int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>で正則よりノルムは正。則ち<math>\frac{ds}{dt}>0</math>より<math>s=\phi(t)</math>は狭義単調増加なので、逆関数<math>t=\phi^{-1}(s)</math>を考えることができる。よって、<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>に<math>t=\phi^{-1}(s)</math>を代入した<math>\boldsymbol{r}=\boldsymbol{r}(\phi^{-1}(s))</math>が弧長パラメータ表示である。これを<math>\boldsymbol{r}=\boldsymbol{r}(s)</math>と略記してしまうことも多いが、'''一般には元の<math>\boldsymbol{r}(t)</math>と成分関数が異なる'''ことに注意。
通常の媒介変数によるベクトル表示は「座標系が予め与えられた状況」での表示であるが、弧長パラメータは座標系を取り替えたとしても表す曲線そのものが変わらなければ不変である。よって、「座標系に依存しない表記」として弧長パラメータ表示は多く利用されている。
また、弧長パラメータ表示で連鎖律を適用すると
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{dt}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{1}{\frac{ds}{dt}}</math>
ここで微分積分学の基本定理より
:<math>\frac{ds}{dt}=\frac{d}{dt} \int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt = \left\| \frac{d\boldsymbol{r}}{dt} \right\|</math>
なので
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{\frac{d\boldsymbol{r}(t)}{dt}}{\left\| \frac{d\boldsymbol{r}}{dt} \right\|}</math>
であり、自身のノルムで割ってるので恒等的に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>である。
よって、弧長パラメータ表示された曲線の接ベクトルは常に単位ベクトルである。
弧長パラメータ表示された曲線で線素を考えると<math>s=\int_0^s \left\| \frac{d\boldsymbol{r}(s)}{ds} \right\| ds = \int_0^s dl</math>だが、常に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>なので<math>ds=dl</math>であり、弧長パラメータの微小量は線素に等しい(弧長パラメータそのものが1の線素に関する積分なので当たり前ではある)。
<math>\boldsymbol{e}_\dagger(s)=\frac{d\boldsymbol{r}}{ds}</math>と置くと、点<math>\mathrm{P}(s_0)</math>に於ける接線の方程式は
:<math>\boldsymbol{p}-\boldsymbol{r}(s_0)=\boldsymbol{e}_\dagger(s_0) (s-s_0)</math>
と表される。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>
であり、「接線が一次近似に対応する」という構造はベクトル関数でも維持されることが判った。
領域<math>\boldsymbol{D}</math>上の滑らかなベクトル場<math>\boldsymbol{a}</math>について、微分方程式<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t)) (\boldsymbol{r} \in \boldsymbol{D})</math>で与えられる曲線<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>を<math>\boldsymbol{a}</math>の'''流線'''(streamline)という(入力点を位置ベクトルと同一視していることに注意)。流線の接線ベクトルは元のベクトル場そのものになるので、ベクトルの相等から得る方程式<math>\frac{dx_1}{a_1}=\frac{dx_2}{a_2}=\cdots=\frac{dx_n}{a_n}</math>を'''流線方程式'''という。
例えば、<math>\boldsymbol{f}(x, y)=(y, x)</math>の流線は、
:定義から<math>\frac{dx}{dt}=y, \frac{dy}{dt}=x</math>
:合成関数の微分公式から<math>\frac{dy}{dx}=\frac{\frac{dy}{dt}}{\frac{dx}{dt}}=\frac{x}{y}</math>
:<math>\int y dy=\int xdx</math>
:<math>\frac{1}{2}y^2=\frac{1}{2}x^2+C</math>
:よって双曲線<math>y^2-x^2=2C</math>//
この場合、<math>t</math>に関する2つの微分方程式を組み合わせることで
:<math>\frac{d^2x}{dt^2}=x, \frac{d^2y}{dt^2}=y</math>という二階線型常微分方程式となり、一般解が双曲線関数を用いて<math>\begin{cases} x=C_1\cosh t+C_2\sinh t \\ y=C_1\sinh t+C_2\cosh t \end{cases}</math>であることが容易に判る。<br>なお、流線方程式を用いても<math>\frac{dx}{y}=\frac{dy}{x}</math>から<math>\frac{dy}{dx}=\frac{x}{y}</math>が出てくる。
「流線の接線ベクトルが元のベクトル場になる」とはつまり、「接線が常にベクトル場と平行になるような曲線」を考えているということである。滑らかなベクトル場を考えているためそのような曲線は常に存在する。流線は「ベクトル場の流れを繋げていった曲線」と考えることができるので、「流れを簡潔に図示」するのにちょうどよい。
有名な例として、電気力線・磁力線はそれぞれ電場<math>\boldsymbol{E}</math>・磁束密度<math>\boldsymbol{B}</math>の流線である。
流線の微分方程式を弧長パラメータ表示を用いて変形する。
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t))</math>の左辺に就いて
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\frac{ds}{dt}=\frac{d\boldsymbol{r}}{ds}\cdot \|\boldsymbol{r}'(\phi^{-1}(s))\|</math>
元の方程式の両辺でノルムをとると
:<math>\left\|\frac{d\boldsymbol{r}}{dt}\right\|=\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
代入して
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{r}'(\phi^{-1}(s))\|=\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
:<math>\therefore \frac{d\boldsymbol{r}}{ds} = \boldsymbol{e}_{\boldsymbol{a}(\boldsymbol{r}(\phi^{-1}(s)))}</math>
ここから、流線の形状はノルムには関係なく方向場のみで決まることがわかる。
===フレネ標搆===
ここでは、三次元空間に於ける正則曲線について考える。
<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>上の点<math>\mathrm{P}(s)</math>に於ける単位接線ベクトルを<math>\boldsymbol{t}</math>とおく。
先程の議論より<math>\boldsymbol{t}(s)=\frac{d\boldsymbol{r}(s)}{ds}</math>であり、<math>\left\| \frac{d\boldsymbol{r}(s)}{ds} \right\|=1 (=\mathrm{const}.)</math>なので直交条件の定理から<math>\boldsymbol{t}\cdot\frac{d\boldsymbol{t}}{ds}=0</math>、則ち<math>\boldsymbol{t} \perp \frac{d\boldsymbol{t}(s)}{ds}</math>である。この<math>\frac{d\boldsymbol{t}(s)}{ds}</math>を'''主法線ベクトル'''という。
主法線ベクトルを<math>\boldsymbol{n}</math>とおくとき、<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n}</math>を'''従法線ベクトル'''(陪法線ベクトル)という。ここで先程の結果より<math>\boldsymbol{t}\perp\boldsymbol{n}</math>であって<math>\boldsymbol{b}</math>の定義より<math>\boldsymbol{t}\perp\boldsymbol{b}, \boldsymbol{n}\perp\boldsymbol{b}</math>なので、この3ベクトルの組を正規化した<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b \}</math>は<math>\mathbb{R}^3</math>の正規直交基底である。これを<math>\mathbb{R}^3</math>の'''フレネ標搆'''という。外積の結果よりフレネ標搆は<math>\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b</math>の順に右手系をなす。なお、接線ベクトル・主法線ベクトル・従法線ベクトルは全て曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>を入力したベクトル場として捉えることができる。
<math>\{\boldsymbol{e}_n, \boldsymbol{e}_b \}</math>の張る平面を'''法平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_b \}</math>の張る平面を'''展直平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n \}</math>の張る平面を'''接触平面'''という。
即ち、法平面・展直平面・接触平面は<math>tnb</math>空間の点<math>\mathrm{P}(s)</math>を原点とした基準面である。
平面の方程式の法線ベクトルに接ベクトル・主法線ベクトル・従法線ベクトルをそれぞれ代入することで
:法平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{t}(s)=0</math>
:展直平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{n}(s)=0</math>
:接触平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{b}(s)=0</math>
とわかる。
<math>\|\boldsymbol{t}\|=1</math>は常に成り立つが<math>\|\boldsymbol{n}\|, \|\boldsymbol{b}\|</math>は<math>1</math>とは限らない。そこで、主法線ベクトルの大きさ<math>\kappa(s)=\|\boldsymbol{n}(s)\|</math>を曲線<math>C</math>の'''曲率'''と呼ぶことにする。なお、<math>\|\boldsymbol{b}\|=\| \boldsymbol{t} \| \|\boldsymbol{n}\|\sin\frac{\pi}{2}</math>より<math>\|\boldsymbol{b}\|=\|\boldsymbol{n}\|=\kappa</math>が成り立つ。
主法線ベクトルの定義に立ち戻ると<math>\boldsymbol{n}(s)=\frac{d\boldsymbol{t}(s)}{ds}</math>であった。つまり、主法線ベクトルは接ベクトルの速度ベクトルなので「弧長パラメータを変化させたときに接ベクトルがどのくらい変化するか」という指標である。接ベクトルの変化の大小と<math>\kappa</math>の大小は対応し、接ベクトルの大小はカーブの緩急に対応することから<math>\kappa</math>の大小とカーブの緩急も対応する。これが「曲率」という名前の由来である。
なお、<math>\kappa(s)=0</math>の場合は<math>\boldsymbol{n}(s)=\boldsymbol{0}</math>なので<math>\boldsymbol{t}(s)=\boldsymbol{k}</math>(定ベクトル)であり、<math>\boldsymbol{r}(s)=s\boldsymbol{k}</math>という直線の場合に対応することがわかる。
単位接ベクトルの<math>s</math>を微分変数とする導関数(<math>s</math>-導関数)は主法線ベクトルだったが、単位主法線ベクトル・単位従法線ベクトルの<math>s</math>-導関数がどのように表されるか見ていく。
ここで、フレネ標搆が<math>\mathbb{R}^3</math>の正規直交基底であることから、<math>\frac{d\boldsymbol{e}_n}{ds}, \frac{d\boldsymbol{e}_b}{ds}</math>ともにフレネ標搆の一次結合で表現できると予想される。
単位従法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_b}{ds}=\frac{d}{ds}(\boldsymbol{e}_t\times\boldsymbol{e}_n)=\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n+\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\boldsymbol{t}=\boldsymbol{e}_t</math>より<math>\frac{d\boldsymbol{e}_t}{ds}=\boldsymbol{n}=\kappa\boldsymbol{e}_n</math>則ち<math>\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n=\kappa\boldsymbol{e}_n\times\boldsymbol{e}_n=\boldsymbol{0}</math>なので
:<math>\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\|\boldsymbol{e}_n\|=1</math>から直交条件の定理より<math>\boldsymbol{e}_n\perp\frac{d\boldsymbol{e}_n}{ds}</math>なので
:<math>\boldsymbol{e}_n\times\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_n\times(\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds})=\left(\boldsymbol{e}_n\cdot\frac{d\boldsymbol{e}_n}{ds}\right)-(\boldsymbol{e}_n\cdot\boldsymbol{e}_t)\frac{d\boldsymbol{e}_n}{ds}=\boldsymbol{0}</math>
外積が零ベクトルなので<math>\frac{d\boldsymbol{e}_b}{ds} /\!\!/ \boldsymbol{e}_n</math>であり、一次従属より
:<math>\frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>
となるスカラー関数<math>\tau(s)</math>が存在する。
この<math>\tau(s)</math>を曲線<math>C</math>の'''捩率'''と呼ぶ。捩率は接触平面の回転(捩れ)の率を表す。
<math>\tau=0</math>ならば<math>\frac{d\boldsymbol{e}_b}{ds}=0</math>より<math>\boldsymbol{e}_b</math>方向は変化しないので曲線は接触平面と平行な平面上に拘束される。即ち、<math>C</math>は平面曲線である。
単位主法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{d}{ds}(\boldsymbol{e}_b\times\boldsymbol{e}_t)=\frac{d\boldsymbol{e}_b}{ds}\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\frac{d\boldsymbol{e}_t}{ds}</math>
ここで<math>\frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n, \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>を代入して
:<math>\frac{d\boldsymbol{e}_n}{ds}=-\tau\boldsymbol{e}_n\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\kappa\boldsymbol{e}_n=\tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t</math>
よって、フレネ標搆の弧長パラメータを微分変数とする導関数を以下のようにフレネ標搆の一次結合で表すことができた。
:<math>\begin{cases} \frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n \\ \frac{d\boldsymbol{e}_n}{ds} = \tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t \\ \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n \end{cases}</math>
これを一次変換で表記すると以下のようになる。但し、厳密にはベクトルを成分としている部分は列ではなく行に配置するのが正しいことに注意。
{{定理|(フレネ=セレーの公式)}}
:<math>\frac{d}{ds}\begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix} = \begin{pmatrix} 0 & \kappa & 0 \\ -\kappa & 0 & \tau \\ 0 & -\tau & 0 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix}</math>
{{定理終わり}}
表現行列が反対称行列(歪対称行列)になっているが、これは「直交変換を一次近似すると反対称変換になる」という無限小回転の理論に対応する。
捩率を求めるときは「基底分解の係数は対応する基底ベクトルとの内積に等しい」という性質を利用すれば<math>\boldsymbol{e}_b\cdot\frac{d\boldsymbol{e}_n}{ds}=\tau</math>となるので左辺を計算すればよい。
例えば、円<math>\begin{cases} x^2+y^2=a^2 \\ z=b \end{cases}</math>の曲率と捩率は以下のように求まる。
:媒介変数表示して<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ b \end{pmatrix}</math>
:接線ベクトルは<math>\frac{d\boldsymbol{r}(t)}{dt}=\begin{pmatrix} -a\sin t \\ a\cos t \\ 0 \end{pmatrix}</math>
:弧長パラメータ<math>s</math>は<math>s=\int^t_0 \left\|\frac{d\boldsymbol{r}(t)}{dt}\right\|dt = \int_0^t a dt = at</math>
:<math>\therefore t=\frac{s}{a}</math>
:<math>\boldsymbol{r}(s)=\begin{pmatrix} a\cos\frac{s}{a} \\ a\sin\frac{s}{a} \\ b \end{pmatrix}</math>
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}(s)}{ds}=\begin{pmatrix} -\sin\frac{s}{a} \\ \cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{n}=\frac{d\boldsymbol{t}(s)}{ds}=\frac{1}{a}\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\kappa=\|\boldsymbol{n}\|=\frac{1}{a}</math>
:<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n} = \begin{pmatrix} 0 \\ 0 \\ \frac{1}{a} \end{pmatrix}</math>
:<math>\boldsymbol{e}_n=\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{e}_b = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}</math>
:<math>\tau = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}\cdot\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}=0</math>//
フレネ・セレーの公式は[[線型代数学続論/行列値関数|行列関数]]に関する一階常微分方程式である。そのため、微分方程式の基本定理(ピカール=リンデレーエフの定理)により初期条件(<math>s=0</math>に於けるフレネ標搆)を与えれば、滑らかな曲率関数・捩率関数の組<math>(\kappa, \tau)</math>を定めることで微分方程式の解として一般の<math>s</math>に対するフレネ標搆を一意に得る。このとき、曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>は接ベクトルを出発点を選んで積分することで決定される。
従って、次の定理が成り立つ<!-- 厳密証明はhttps://sshmathgeom.private.coocan.jp/diffgeom/curvetheorem.htmlを参照 -->。
{{定理|(曲線の基本定理)}}
開区間<math>(a,b)</math>上の実数<math>s</math>を変数とする2つの滑らかな関数<math>\kappa(s),\tau(s)</math>を与える。但し、<math>\kappa(s)</math>は正とする。<br/>
このとき、<math>\kappa(s)</math>を曲率、<math>\tau(s)</math>を捩率、<math>s</math>を弧長パラメータとする三次元空間上の曲線<math>C</math>が剛体運動を除いて一意に定まる。
{{定理終わり}}
剛体運動とは「曲線の形を変えない」運動のことである(平行移動・回転など)。
<math>\kappa(s), \tau(s)</math>の定める曲線族を一般に<math>\mathcal{C}[\kappa, \tau]</math>と書く。
例えば、円を含む螺旋は<math>c_1, c_2=\mathrm{const}.</math>として<math>\mathcal{C}[c_1, c_2]</math>と書ける。
<math>R=\frac{1}{\kappa}</math>を'''曲率半径'''という。曲率半径は曲線の特定のカーブにおける曲がり具合の急さを表す指標であり、カーブを近似する真円('''密着円''')の半径でもある。高速道路の標識で<math>R=\circ\circ \mathrm{m}</math>は、そのカーブの曲率半径を示している。道路設計では、快適なドライブの為曲率半径がなるべく大きくなるように工夫を凝らしている。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>(再掲)
だったが、二次近似式(三次以降を切り捨てた式)を考えると
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\frac{d\boldsymbol{r}(s_0)}{ds}(s-s_0) + \frac{1}{2}\frac{d^2\boldsymbol{r}(s_0)}{ds^2}(s-s_0)^2 </math>
フレネ標搆を用いて書き直すと
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\boldsymbol{e}_t(s-s_0) + \frac{1}{2}\kappa(s_0)\boldsymbol{e}_n(s-s_0)^2 </math>
二次近似とは「曲線を円弧で近似する」ことだったので曲率<math>\kappa(s_0)</math>が近似に用いる円弧と関係ある量であることが予想される。<br/>
接触平面で密着円<math> \| \boldsymbol{r} - (\boldsymbol{r}(s_0)+R\boldsymbol{e}_n) \| = R </math>を考える。接触平面を<math>xy</math>平面と考えると円の方程式は
:<math>x^2+(y-R)^2=R^2</math>
:<math>y=R-\sqrt{R^2-x^2}</math>
テイラー展開して
:<math>y=\frac{x^2}{2R}+O(x^4)</math>
二次の項を比較すると
:<math>\frac{x^2}{2R}=\frac{(s-s_0)^2}{2}\kappa</math>
よって
:<math>R=\frac{1}{\kappa}</math>
と定義するのは妥当である。
なお、先ほど求めた円の曲率から、真円に関して「曲率半径=半径」であることが判る。
フレネ・セレーの公式で最初の二行二列のみを考えると<math>\mathbb{R}^2</math>内の曲線に対するフレネ・セレーの公式を得る。一般に<math>\mathbb{R}^n</math>上の曲線に対し、今回の議論と同様にして接ベクトル・主法線ベクトル・曲率を定義することができる。但し、三次元空間と異なって同じ曲率に対して異なる曲線を与えることができる(主法線ベクトルが接触平面内で接ベクトルに対して左右どちらを向くかがそのままでは定まらないため)。なお、4次元以上であっても平面拘束曲線ならば捩率は0であって従法線ベクトルは零ベクトルに定まる。
===単純閉曲線===
パラメータ区間を<math>I=[a, b]</math>とする。
このとき、曲線の端点はそれぞれ<math>\mathrm{P}(a), \mathrm{P}(b)</math>である。
端点が一致する、つまり<math>\mathrm{P}(a)=\mathrm{P}(b)</math>である連続曲線を'''閉曲線'''という。
自己交叉しない、つまり<math>\forall t_1, t_2 \in (a, b), t_1 \neq t_2 \iff \mathrm{P}(t_1)\neq\mathrm{P}(t_2)</math>となる閉曲線を'''単純閉曲線'''(ジョルダン曲線)という。閉曲線でない曲線に就いて「自己交叉しない」という条件は「曲線を表すベクトル関数が単射」と同値であるので、端点のみ単射性を外してやれば単純閉曲線の定義を得る。
幾何学的直観から、平面に拘束された単純閉曲線はその平面を単純閉曲線で囲まれた'''内部'''とそうでない'''外部'''の二つの領域に分割することが予想できる。
このことは以下の定理によって保証される。
{{定理|(ジョルダンの曲線定理)}}
平面<math>\Pi\subset\mathbb{R}^n</math>内の任意の単純閉曲線<math>\gamma</math>に対し、有界領域<math>I</math>・非有界領域<math>O</math>の組であって<math>\Pi\setminus\gamma=I \sqcup O</math>且つ<math>\partial{I}=\partial{O}=\gamma</math>であるものが唯一つに定まる。
{{定理終わり}}
この<math>I, O</math>をそれぞれ内部・外部と定義する。証明は[[位相幾何学]]で行う。なお、「<math>\partial{I}=\partial{O}=\gamma</math>」を態々明示しているのは、滑らかでない単純閉曲線に対しては「<math>\Pi\setminus\gamma=I \sqcup O \implies \partial{I}=\partial{O}=\gamma</math>」が自明でないためである。
正則単純閉曲線に対して「曲線の向き」の幾何学的意味を考える。
ジョルダンの曲線定理より単純閉曲線<math>\gamma:\boldsymbol{r}=\boldsymbol{r}(s) \quad(\boldsymbol{r}\in \Pi)</math>は平面<math>\Pi</math>を内部<math>I</math>と外部<math>O</math>に分割する。平面拘束曲線なので<math>\forall{s}, \tau(s)=0</math>であり、従法線ベクトルは零ベクトル且つ接触平面が常に<math>\Pi</math>に一致する。
主法線ベクトル<math>\boldsymbol{n}(s)</math>が接ベクトル<math>\boldsymbol{t}(s)</math>に対して左側を向いているとすると、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0) \quad(\varepsilon>0)</math>が点<math>\mathrm{P}(s_0)</math>に於ける<math>\gamma</math>の進行方向左側にある点である。
ここで、<math>\mathrm{P}(s_0)</math>に於ける<math>\varepsilon</math>-開球<math>B_\varepsilon(s_0)</math>を考えると、平面<math>\Pi</math>上では<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が左側の領域、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が右側の領域に入る。
<math>s=s_0</math>を動かすと各点で進行方向左は<math>I, O</math>のいずれかであり、<math>\gamma</math>の正則性と<math>I, O</math>の連結性から「<math>I, O</math>のどちらが左側であるかは曲線全体で変わらない」ことが言える。
ここで円の場合を考える。<math>\Pi</math>に直交座標<math>u, v</math>を入れると向心加速度の議論から「加速度ベクトル=主法線ベクトルは円の中心を向く」ので、「円の正の向きは円の内部を左手に見る進行方向」である。
任意の正則単純閉曲線<math>\gamma</math>に対して自己交叉を起こさないまま円へ連続変形する可逆写像が存在し、その変形に於いて「左側」と「<math>I, O</math>」の対応は変化しない。則ち、円で確認された「正の向きは囲まれた内部を左手に見る向き」は任意の正則単純閉曲線で成り立つ。
つまり、単純閉曲線の正の向きは点を動かしたときに'''自身の囲む領域の内部を左手に見る向き'''である。負の向きは左手に外部を見る向きである。
集合<math>A</math>に含まれる任意の2点に対してそれらを端点とする滑らかな曲線<math>C</math>をとれるとき、<math>A</math>は'''弧状連結'''であるという。
弧状連結集合<math>S</math>内の任意の閉曲線<math>\gamma</math>に対して1点に退化するような連続変形が可能なとき、<math>S</math>は'''単連結'''であるという。単連結でない集合は'''多重連結'''であるという。
平面<math>\Pi\subset\mathbb{R}^n</math>に含まれる単連結集合<math>S</math>に対し、<math>\hat{\Pi}:=\Pi\cup\{\infty\}</math>とすると集合<math>\hat{\Pi}\setminus{S}</math>は連結である。逆も成り立つ。
なお、「<math>A</math>が連結集合である」ことは「補集合<math>\overline{A}</math>が非連結集合である」ことを意味しない。そのため「単連結な連結集合」も考えられ、特に「単連結な領域」はこの先頻繁に登場する。
集合<math>A</math>に含まれる任意の2点を結んだ線分が<math>A</math>に包含されるとき、<math>A</math>は'''凸型'''であるという。凸型集合でない集合は'''凹型'''であるという。
集合<math>A</math>内の1点を固定してそこから<math>A</math>内任意点へ引いた線分が<math>A</math>に包含されるとき、<math>A</math>は'''星状'''(星型)であるという。このとき固定した点を'''星の中心'''という。凸型集合は全て星状集合である。
単純閉曲線<math>\gamma</math>を境界とする内部<math>I</math>に関して<math>I\cup\gamma</math>が凸型集合であるとき、<math>\gamma</math>を'''卵形線'''(凸単純閉曲線・オーヴァル)という。
曲線<math>C</math>の曲率関数<math>\kappa(s)</math>が<math>C^3</math>級であるとき、<math>\kappa'(s_0)=0</math>を満たす点<math>\mathrm{P}(s_0)</math>を<math>C</math>の'''頂点'''という。
例えば、標準楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>の頂点は4点<math>(\pm{a},0),(0,\pm{b})</math>である。このことは、<math>\mathbb{R}^2</math>上曲線<math>C:\boldsymbol{r}=x(t)\boldsymbol{e}_x(t)+y(t)\boldsymbol{e}_y(t)</math>に対する曲率の公式<math>\kappa(t)=\frac{\left|\frac{dx}{dt}\frac{d^2y}{dt^2}-\frac{dy}{dt}\frac{d^2x}{dt^2}\right|}{\left\{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2\right\}^\frac{3}{2}}</math>と<math>\frac{ds}{dt}>0</math>を用いて確かめられる。
実は、この事実は楕円に限らないことが以下の定理で示される。
{{定理|(ムコパディヤーヤの定理・四頂点定理)}}
<math>\mathbb{R}^2</math>上の滑らかな卵形線は少なくとも4つの頂点を持つ。
{{定理終わり}}
*証明
:滑らかな卵形線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)\quad(s\in[a, b])</math>に対して曲率関数<math>\kappa(s)</math>は滑らかであり、<math>\kappa\in C^3</math>を満たす。
:卵形線は単純閉曲線なので<math>\mathrm{P}(a)=\mathrm{P(b)}</math>であり、<math>\kappa(a)=\kappa(b)</math>。
:曲率関数が定数関数のときは<math>\kappa\in C^\infty</math>且つ常に<math>\kappa'(s)=0</math>なので曲線を構成するすべての点が頂点であり、明らかに定理を満たす。
:曲率関数が定数関数でないとする。
:ワイエルシュトラスの極値定理より<math>\kappa(s)</math>は<math>s\in[a, b]</math>のどこかで最大値・最小値をとり、その点で<math>\kappa'(s)=0</math>を満たす。
:従って少なくとも2つの頂点を持つ。
:ここで、頂点がこの2つのみと仮定する。
:曲率が最大値・最小値をとる点をそれぞれ<math>\mathrm{M, N}</math>と置く。
:線分<math>\mathrm{MN}</math>を含む直線を<math>x</math>軸とし、その垂直方向に<math>y</math>軸をとる。
:<math>s</math>が増加すると曲線上の点が<math>\mathrm{N}\to\mathrm{M}</math>のように動くとき、
:<math>\kappa(s)</math>は最小値から最大値に向かって増大し、他に頂点がないので狭義単調増加である。
:同様に、<math>\mathrm{M}\to\mathrm{N}</math>の向きでは<math>\kappa(s)</math>は狭義単調減少である。
:従って、<math>\kappa'(s)y(s)\neq0</math>の正の側だけ考えれば良い。
:<math>y(a)=y(b)=0</math>に注意すると部分積分して
:<math>0<\int_a^b \kappa'(s)y(s)ds=-\int_a^b \kappa(s)y'(s)ds</math>
:主法線ベクトル<math>\boldsymbol{n}(s)= \begin{pmatrix} \xi_1(s) \\ \xi_2(s) \end{pmatrix}</math>を考えると二次元版フレネ=セレーの公式から<math>\frac{d\boldsymbol{n}}{ds}=-\kappa\frac{d\boldsymbol{r}}{ds}</math>なので
:<math>\xi'_2(s)=-\kappa(s)y'(s)</math>
:よって
:<math>-\int_a^b \kappa(s)y'(s)ds=\int_a^b \xi_2(s)ds = \left[\xi_2(s)\right]_a^b=0</math>
:なので矛盾した不等式<math>0<0</math>を得る。
:則ち、<math>\mathrm{M, N}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在する。
:そのような点を<math>\mathrm{L}</math>と置く。
:<math>\mathrm{L}</math>が<math>\mathrm{N}\to\mathrm{M}</math>という経路の途中にあるとする。
:このとき、<math>\mathrm{L}</math>以外に<math>\kappa'(s)=0</math>を満たす点が存在すると「<math>\mathrm{M}\to\mathrm{N}</math>という経路の途中にそのような点が無い」という最初の仮定に反するので
:<math>\mathrm{M, N, L}</math>以外では<math>\kappa'(s)y(s)>0</math>である。
:同様に部分積分を行うことで矛盾した不等式を得、<math>\mathrm{M, N, L}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在することが判る。
:この時点で「<math>\mathrm{M, N}</math>間の二つの経路のいずれにも<math>\kappa'(s)=0</math>を満たす点が存在しない」という仮定が否定されたのでこれ以上背理法を適用することはできない。
:よって、頂点個数の最小値は<math>4</math>である。//
最小値4をとる卵形線が実際に存在することは楕円の例で確かめた。
この定理は「卵形線」を「(正則)単純閉曲線」に取り換えてもそのまま成り立つことが知られている。一般の閉曲線でこの定理を成り立たせるには追加の条件が必要となる。
先程も述べたように、接ベクトルと単位主法線ベクトルは2次元以上の空間内部にある曲線ならば定義することができる。そして、<math>\boldsymbol{t}\cdot\boldsymbol{n}=0</math>も必ず成り立つ。よって、<math>\boldsymbol{e}_t\cdot\boldsymbol{e}_n=0</math>の両辺を<math>s</math>で微分して
:<math>\frac{d\boldsymbol{e}_t}{ds}\cdot\boldsymbol{e}_n+\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=0</math>
:<math>\therefore \boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\boldsymbol{n}\cdot\boldsymbol{e}_n=-\kappa</math>
ここで「基底分解に於ける成分はその基底との内積に等しい」という性質から、<br/>
一般次元に於いても「<math>\frac{d\boldsymbol{e}_n}{ds}</math>の接線方向成分は<math>-\kappa(s)</math>」であることが判る。
ここで<math>C^2</math>級曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>に対して単位主法線<math>\boldsymbol{e}_n(s)</math>を対応させることを考える。この対応を'''ガウス表示'''という。
<math>\boldsymbol{e}_n(s)</math>を二次までテイラー展開すると<math>\Delta s>0</math>を微小量として
:<math>\boldsymbol{e}_n(s+\Delta s)=\boldsymbol{e}_n(s)+\frac{d\boldsymbol{e}_n(s)}{ds}\Delta s + O(\Delta s^2)</math>
ここで<math>\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\kappa</math>より、<math>s</math>を<math>\Delta s</math>だけ動かしたときの接線方向の速さは<math>|\kappa(s)|\Delta s</math>である(<math>\kappa(s)</math>が正で正の向き、負で負の向きに動くとする)。
閉曲線に対してはガウス表示によって法線方向の変化を完全に捉えられるので、<math>\kappa(s)</math>を微小量<math>\Delta s</math>に関して積分した<math>\int_a^b \kappa(s)ds</math>を考えてみる。
ガウス表示では曲線を単位主法線ベクトルの描く単位円として考えることができる。閉曲線では<math>\mathrm{P}(a)=\mathrm{P}(b)</math>より明らかに<math>\boldsymbol{e}_n(a)=\boldsymbol{e}_n(b)</math>であり、閉曲線が一周する間にベクトル<math>\boldsymbol{e}_n(s)</math>はこの単位円を<math>m(\in\mathbb{Z})</math>周する<sup>※</sup>。
<small>※物理的には「円そのものが動いても円周上の質点は『この円をどっちの方向に何周したか』という情報しか持たない」ので、単位円が動くことは議論にあまり関係ない</small>
弧度法より単位円を<math>m</math>周する符号付き道のりは<math>2\pi{m}</math>であり、ガウス表示より<math>\int_a^b \kappa(s)ds=2\pi{m}</math>。
従って、<math>m=\frac{1}{2\pi}\int_a^b \kappa(s)ds</math>
この<math>m</math>を閉曲線の'''回転数'''と呼ぶことにする。
曲率が負の場合には積分値が途中で相殺されてしまうので、絶対値を付けて積分した
:<math>\mu:=\int_a^b |\kappa(s)|ds</math>
という量を考えることにする。
これを閉曲線の'''全曲率'''と呼ぶ。
全曲率に対して以下の定理が成り立つ。
{{定理|(フェンヒェルの定理)}}
滑らかな閉曲線の全曲率は<math>\mu\geq2\pi</math>を満たす。等号成立の場合は卵形線である。
{{定理終わり}}
証明は省略する。
===曲面===
多変数解析で既に扱った、三次元空間に於ける曲面の陽関数表示<math>z=f(x, y)</math>を'''モンジュ表示'''という。<math>f(x, y, z)=\mathrm{const}.</math>と陰関数表示された曲面は陰関数定理が成り立つ範囲でモンジュ表示に直すことができる。
一次式で陰関数表示される曲面を'''一次曲面'''という。平面の方程式より、一次曲面は全て平面である。
二次式で陰関数表示される曲面を'''二次曲面'''という。
以下、三次元空間に於ける二次曲面の例を挙げる。各係数は非退化条件を満たすとする。なお、「直線に平行な平面」は「直線を法線とする平面に垂直な平面」を意味することに注意。
*'''球面'''(sphere)
:高校数学で扱ったように、点<math>(a, b, c)</math>を中心とする半径<math>r</math>の球面の方程式は<math>(x-a)^2+(y-b)^2+(z-c)^2=r^2</math>である。この球面上の点の位置ベクトルは<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>なので、球面が満たすベクトル方程式は一般に<math>\|\boldsymbol{r}-\boldsymbol{a}\|=\mathrm{const}.</math>である。これは円のベクトル方程式の次元を上げたものである。
*'''楕円面'''(ellipsoid)
:楕円の方程式を拡張した方程式<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1</math>が表す曲面である。<math>xyz</math>空間の基本面で切った断面は全て楕円となる。
*'''楕円拋物面'''(elliptic paraboloid)
:楕円の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は拋物線となる。
*'''双曲拋物面'''(hyperbolic paraboloid)
:双曲線の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}-\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は双曲線、平行な平面で切った断面は拋物線となる。また、原点は鞍点である。
*'''一葉双曲面'''(hyperboloid of one sheet)
:楕円面の方程式の一つの項の符号を変えた<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は双曲線となる。
*'''二葉双曲面'''(hyperboloid of two sheet)
:楕円面の方程式の二つの項の符号を変えた<math>\frac{x^2}{a^2}-\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。断面の分類は一葉双曲面と同じだが、<math>m^2<c^2</math>のときは平面<math>z=m</math>と交わらないため「二葉」と名付けられている。
*'''錐面'''(conical surface)
:方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>の表す曲面。<math>xy</math>平面との交点は原点のみであり、<math>yz</math>平面・<math>zx</math>平面で切った断面は直線である。
閉区間<math>I\subset\mathbb{R}</math>上の一変数ベクトル関数<math>\boldsymbol{r}(t)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t) \quad(t\in I)</math>の解集合は次元に依らず曲線を表した。
同様に、領域<sup>※</sup><math>D\subset\mathbb{R}^2</math>上の二変数ベクトル関数<math>\boldsymbol{r}(t, u)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t, u) \quad({\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)}\in D)</math>の解集合は次元に依らず曲面を表すと考えられる。
厳密には[[線型代数学/基底と次元|階数・退化次数の定理]]<!-- 次元定理・線型写像の基本定理 -->などを用いてこのことを確かめられる。
<small>※ここでいう「領域」は冒頭で厳密に定義した「領域」であることに注意。</small>
曲線と同様に、曲面の'''パラメータ表示'''と'''ベクトル表示'''は次のように定義される。
:パラメータ表示:<math>\begin{cases} x_1&=&r_1(t, u) \\ x_2&=&r_2(t, u) \\ &\,\,\vdots& \\ x_n&=&r_n(t, u) \end{cases}</math>
:ベクトル表示:<math>\left\{\boldsymbol{r}(t, u) \,\bigg|\, {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D \right\}</math>
また、<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>のようにも表す。
例えば、<math>k>l>0</math>として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (k+l\cos u)\cos t \\ (k+l\cos u)\sin t \\ l\sin u \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq 2\pi \\ 0 \leq u \leq 2\pi \end{array} \right\})</math>は'''トーラス'''のベクトル表示である。
<math>\mathbb{R}^3</math>上の平面の方程式は高校数学に於いて<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>として一次式<math>ax+by+cz+d=0</math>と表せることを学んだ。
これのベクトル方程式を求めてみよう。
:①<math>c=0</math>のとき
::平面の方程式は<math>\begin{cases} ax+by+d=0 \\ z=\mathrm{const}. \end{cases}</math>
::[1]<math>b=0</math>のとき
:::平面の方程式は<math>\begin{cases} ax+d=0 \\ y=\mathrm{const}. \\ z=\mathrm{const}. \end{cases}</math>
:::<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>より<math>a\neq0</math>
:::<math>y=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} -\frac{d}{a} \\ t \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} -\frac{d}{a} \\ 0 \\ 0 \end{pmatrix}</math>
::[2]<math>b\neq0</math>のとき
:::<math>x=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} t \\ -\frac{a}{b}t-\frac{d}{b} \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 1 \\ -\frac{a}{b} \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} 0 \\ -\frac{d}{b} \\ 0 \end{pmatrix}</math>
:②<math>c\neq0</math>のとき
::<math>x=t, y=u</math>と置換すると
::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} t \\ u \\ -\frac{a}{c}t-\frac{b}{c}u-\frac{d}{c} \end{pmatrix}</math>
::<math>\boldsymbol{r}=t\begin{pmatrix} 1 \\ 0 \\ -\frac{a}{c} \end{pmatrix}+u\begin{pmatrix} 0 \\ 1 \\ -\frac{b}{c} \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ -\frac{d}{c} \end{pmatrix}</math>
なお、ここから平面のベクトル方程式が一般に<math>\boldsymbol{r}=\boldsymbol{a}+t\boldsymbol{b}+u\boldsymbol{c}</math>という「直線のベクトル方程式を拡張した形」であることがわかる。
<math>\boldsymbol{r}(t, u)\in C^1</math>且つ<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}\neq\boldsymbol{0}</math>である曲面を'''滑らか'''な曲面という。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>とその上の点<math>\mathrm{P}_0=(a, b)</math>に対し、曲線<math>\boldsymbol{r}=\boldsymbol{r}(a, u), \boldsymbol{r}=\boldsymbol{r}(t, b)</math>をそれぞれ点<math>\mathrm{P}_0</math>に於ける'''<math>t</math>曲線'''・'''<math>u</math>曲線'''という。
<math>\boldsymbol{r}(t, u)\in C^1</math>であるとき、偏導関数の定義から
:<math>\frac{\partial}{\partial{u}}\boldsymbol{r}(a, u)=\frac{d}{du}\boldsymbol{r}(a, u)</math>
:<math>\frac{\partial}{\partial{t}}\boldsymbol{r}(t, b)=\frac{d}{dt}\boldsymbol{r}(t, b)</math>
ここで<math>a, b</math>をそれぞれ<math>t</math>軸・<math>u</math>軸上で動かすことで<math>t</math>曲線・<math>u</math>曲線の接ベクトルがそれぞれ<math>\frac{\partial{\boldsymbol{r}}}{\partial{u}}, \frac{\partial{\boldsymbol{r}}}{\partial{t}}</math>であると判る。これらを曲面のパラメータ方向の'''接ベクトル'''という。
これらの接ベクトルが平行でないとき、曲面<math>S</math>上の任意の点<math>\mathrm{P}</math>に対して<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>の張る平面が定まる。これを曲面<math>S</math>の点<math>\mathrm{P}</math>に於ける'''接平面'''という。曲線の接線は一次元ベクトル空間<math>\left\{ \xi\frac{d\boldsymbol{r}}{dt} \bigg| \xi \in\mathbb{R} \right\}</math>で表されたが、曲面の接平面は二次元ベクトル空間<math>\left\{ \xi\frac{\partial{\boldsymbol{r}}}{\partial{t}}+\eta\frac{\partial{\boldsymbol{r}}}{\partial{u}} \bigg| \xi, \eta \in \mathbb{R} \right\}</math>で表される。このような接ベクトル全体が張るベクトル空間を一般に'''接空間'''と呼ぶ。
接ベクトルの組が一次独立である曲面を'''正則'''な曲面という。滑らかな曲面は正則曲面である。
曲面<math>S</math>の接平面に垂直なベクトルを<math>S</math>の'''法線ベクトル'''という。
三次元空間ならば接平面を張る2ベクトルの外積<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}} \times \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>で求められる。
モンジュ表示された曲面<math>S:z=f(x, y)</math>に対して接平面の存在性(つまり曲面の正則性)は「二変数関数<math>f</math>の全微分可能」に対応した。ベクトル表示された曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>に対しては「ベクトル関数<math>\boldsymbol{r}</math>の全微分可能性」だけでは足りず、「ヤコビ行列<math>\frac{\partial{(\boldsymbol{r})}}{\partial{(t, u)}}</math>の階数が2」も要求される。
以下、正則曲面のみ扱う。
<math>\boldsymbol{r}(t, u)</math>の微小変化は全微分で与えられる。
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
則ち、各パラメータを同時に<math>\begin{pmatrix} t \\ u \end{pmatrix}\to\begin{pmatrix} t+dt \\ u+du \end{pmatrix}</math>と単調に動かしたとき、対応する曲面上の点が描く領域は2ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt, \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行四辺形として近似できる。その微小面積は線型代数の内容から
:<math>\sqrt{ \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}}dt \right\|^2 \left\| \frac{\partial{\boldsymbol{r}}}{\partial{u}}du \right\|^2 - \left\{ \left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right) \right\}^2 }=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
である。
これを領域<math>D=\mathrm{dom}\,S</math>で重積分してやれば曲面の表面積('''曲面積''')が求まると考えられる。
{{定理|(曲面積)}}
<math>E := \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2,\quad F := \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}},\quad G := \left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2</math>とすると、<br>
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>の領域<math>D</math>に於ける曲面積は
:<math>S=\iint_D \sqrt{EG-F^2}dtdu</math>
{{定理終わり}}
この<math>E, F, G</math>を<math>S</math>の'''第一基本量'''と呼ぶ。また、<math>dS:=\sqrt{EG-F^2}dtdu</math>を'''面素'''(面積素・面積要素)と呼ぶ。
<math>t, u</math>が共通のパラメータ<math>\theta</math>で媒介変数表示されるとき、曲面は曲線に退化するので線素を考えられる。
具体的には、
:<math>dl=\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|d\theta</math>
より
:<math>\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|^2=\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}</math>
ここで合成関数の常微分公式より
:<math>\frac{d\boldsymbol{r}}{d\theta}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{d\theta}+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{d\theta}</math>
なので
:<math>\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}=\left\|\frac{d\boldsymbol{r}}{dt}\right\|^2\left(\frac{dt}{d\theta}\right)^2+2\left(\frac{d\boldsymbol{r}}{dt}\cdot\frac{d\boldsymbol{r}}{du}\right)\frac{dt}{d\theta}\frac{du}{d\theta}+\left\|\frac{d\boldsymbol{r}}{du}\right\|^2\left(\frac{du}{d\theta}\right)^2</math>
:<math>=E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2</math>
よって
:<math>dl=\sqrt{E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2}d\theta=\sqrt{E(dt)^2+2Fdtdu+G(du)^2}</math>
このように、線素は<math>\theta</math>のとり方に依存しない。
そこで、最後の式で右辺を二乗した
:<math>I:=E(dt)^2+2Fdtdu+G(du)^2</math>
を<math>S</math>の'''第一基本形式'''と定める。
第一基本形式は二次形式になっていることが見て取れるので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{K}:=\begin{pmatrix} E & F \\ F & G \end{pmatrix}</math>とおくと
:<math>I={}^t\!\boldsymbol{v} \mathbf{K} \boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{K}</math>を'''第一基本行列'''という。
ここで<math>I=dl^2>0</math>なので<math>\mathbf{K}</math>は正定値行列である。
また、<math>\boldsymbol{x}_i=\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{x}_j=\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>と置いて第一基本量の定義を思い返してみると<math>\mathbf{K}_{ij}=\boldsymbol{x}_i \cdot \boldsymbol{x}_j</math>なのでこの行列は接ベクトルに関するグラム行列である。この意味でも、<math>\mathbf{K}</math>は正定値行列である。
また、面素の式で根号の中身が<math>\det\mathbf{K}</math>に等しいことも判る。
則ち、第一基本量が曲面の本質であると予想される。
<math>F=0 \land E=G=\lambda</math>であるとき、<math>\mathbf{K}=\lambda\mathbf{E}_2</math>である。このときのパラメータの組<math>(u, v)</math>を曲面の'''等温座標系'''という。
等温座標系で表示された曲面<math>S</math>に対し、第一基本形式は<math>I=\lambda(dt^2+du^2)</math>と二次形式の標準形となっている。則ち、等温座標系へのパラメータ変換は主軸変換である。
面素を考えると<math>dS=\lambda^2dtdu</math>と非常に単純な形となるほか、曲面上の角度計算が平面の場合と全く同じ式で与えられることも等温座標系の利点である。
曲面<math>S</math>上の各点<math>\mathrm{P}</math>に対して単位法線ベクトル<math>\boldsymbol{n}(\mathrm{P})</math>を考える。ベクトル表示の定義域<math>D</math>でベクトル場<math>\boldsymbol{n}(\mathrm{P})</math>が連続であるとき、<math>S</math>は'''向き付け可能'''であるという。
向き付け不能な曲面の例として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (u\cos t+2)\sin 2t \\ (u\cos t+2)\cos 2t \\ u\sin t \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq \pi \\ -1 \leq u \leq 1 \end{array} \right\})</math>と表される'''メビウスの帯'''が挙げられる。
メビウスの帯が向き付け不能である証明を概説する。
:接ベクトルをそれぞれ求める。簡単のため<math>u=0</math>として考える。単位法線ベクトルは外積を正規化して得るが、向きの取り方で正負の符号が付く。どちらの符号を採用するにしろ<math>\boldsymbol{n}(\boldsymbol{r}(0, 0))\neq\boldsymbol{n}(\boldsymbol{r}(\pi, 0))</math>を得、<math>\boldsymbol{r}(0, 0)=\boldsymbol{r}(\pi, 0)</math>より同じ点に対して異なる法線ベクトルを出力するので<math>\boldsymbol{n}(\mathrm{P})</math>はwell-definedではなく、向き付け可能性の定義を満たさない。//
四次元以上の空間では法線ベクトルの方向を複数とれるため法線ベクトル場は扱いにくい。そこで、法線ベクトルに依らない定義を考えたい。
2つの滑らかな曲面<math>S_1, S_2</math>が以下を満たすとき、
#パラメータ<math>(t_1, u_1), (t_2, u_2)</math>の間に滑らかな全単射<math>\begin{cases}t_2 =\phi(t_1, u_1) \\ u_2=\psi(t_1, u_1) \end{cases}</math>が存在する。
#この変数変換のヤコビ行列<math>\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}</math>が正則。
#<math>\boldsymbol{r}_1(t_1, u_1)=\boldsymbol{r}_2(t_2, u_2)</math>
この2つは'''パラメータ変換で同値'''という。
このとき、ヤコビアンが正であるパラメータの組は'''同じ向き'''、負であるパラメータの組は'''逆向き'''であるという。
任意の<math>(t_1, u_1)</math>に対して開近傍<math>U \subset \mathrm{dom}\,S_1</math>をとったとき、どの<math>U</math>上でも<math>\det\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}>0</math>を満足するならば<math>S_1</math>は'''向き付け可能'''という。
向き付け可能な曲面の接空間に対して右手系を成すような向きの法線ベクトルを'''外向き法線ベクトル'''と呼ぶ。
外向き法線の向く側を曲面の'''表'''、その反対側を曲面の'''裏'''と定義する。
<math>\partial{S}=\varnothing</math>を満たす正則曲面<math>S</math>を'''閉曲面'''という。ジョルダンの曲線定理を拡張した定理('''ジョルダン・ブラウワーの分離定理''')によって閉曲面が空間を内部・外部に分割することが保証される。内部に面する向きを閉曲面の裏、外部に面する向きを閉曲面の表と定義する。
パラメータ空間の座標軸の向きの組み合わせが<math>xy</math>平面と同じとき、外向き法線で定義される閉曲面の表裏は内部・外部から定義される表裏に一致する。
===回転面===
ここでは三次元空間内の曲面について考える。
高校数学で回転体を扱ったが、領域の回転体の表面である曲面は元の領域の疆界である単純閉曲線を軸に関して回転したものである。そこで、平面上の任意の曲線を回転すると曲面('''回転面''')を得ると考えられる。
簡単な場合として、<math>x\geq0</math>で定義された<math>zx</math>平面上の曲線<math>z=f(x)</math>を<math>y</math>軸に関して回転させた回転面を考える。
:任意の<math>k\in[0,\infty)</math>に関して曲線上の点は<math>\begin{pmatrix} x \\ z \end{pmatrix}=\begin{pmatrix} k \\ f(k)\end{pmatrix}</math>と与えられる。
:領域<math>\left\{ {\scriptstyle\left(\begin{array}{c} x \\[-6pt] z \end{array}\right)} \big| x \leq k \right\}</math>を<math>y</math>軸に関して回転した回転体を平面<math>z=f(k)</math>で切った断面は半径<math>k</math>の閉円盤であり、疆界円周上の点を<math>\begin{pmatrix} x \\ y \\ f(k) \end{pmatrix}</math>とすると<math>k=\sqrt{x^2+y^2}</math>である。
:則ち回転体の疆界である回転面上の点<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は方程式<math>z=f(\sqrt{x^2+y^2})</math>を満たし、逆にこの方程式を満たす<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は回転面上にある。
纏めると以下のようになる。
{{定理|(回転面の方程式)}}
<math>zx</math>平面上の曲線<math>z=f(x)\quad(x\geq0)</math>を<math>y</math>軸に関して回転させた回転面の方程式は
:<math>z=f(\sqrt{x^2+y^2})</math>
{{定理終わり}}
<math>z</math>軸・<math>x</math>軸に関する回転面の方程式は変数を輪環の順に入れ替えることで得られる。
回転面に対し、元の曲線を'''母線'''という。
母線が直線である回転面は'''円錐'''である。
:<math>z=mx+n\quad(m\neq0,x\geq0)</math>とすれば<math>y</math>軸に関して回転した曲面の方程式は
:<math>z=m\sqrt{x^2+y^2}+n</math>
:<math>z-n = m\sqrt{x^2+y^2}</math>
これを両辺二乗すると
:<math>(z-n)^2=m^2x^2+m^2y^2</math>
であり、錐面の方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>を満たしていることがわかる。
回転軸が傾いている場合、<math>xyz</math>空間の回転行列<math>\mathbf{R}</math>を利用することで各軸に関する回転に帰着することもできるが、ここでは曲面のベクトル表示を扱ったのでベクトル方程式で回転を記述することを考えたい。
点<math>\mathrm{O}</math>から<math>\boldsymbol{r}</math>とそれに平行でない単位ベクトル<math>\boldsymbol{e}</math>が伸びており、そのなす角が<math>\theta</math>であるとする。<math>\boldsymbol{r}</math>の終点<math>\mathrm{P}</math>を含み<math>\boldsymbol{e}</math>を法線とする平面を<math>\Pi</math>、<math>\Pi</math>と直線<math>\{k\boldsymbol{e} \mid k>0\}</math>の交点を<math>\mathrm{N}</math>、<math>\mathrm{P}</math>を<math>\Pi</math>内で<math>\mathrm{N}</math>を中心として<math>\phi</math>回転した点を<math>\mathrm{Q}</math>、<math>\mathrm{NQ}</math>から<math>\mathrm{NP}</math>へ降ろした垂足を<math>\mathrm{R}</math>と置く。但し、回転角<math>\phi</math>の正の向きは<math>\boldsymbol{e}</math>を右螺子の進む向きとする方向に定める。
このとき、<math>\boldsymbol{r}</math>を<math>\boldsymbol{e}</math>に関して<math>\phi</math>だけ回転させたベクトル<math>\boldsymbol{r}'</math>は以下のように表される。
{{定理|(ロドリゲスの公式)}}
:<math>\boldsymbol{r}'=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
{{定理終わり}}
*証明
:<math>\boldsymbol{r}'=\overrightarrow{\mathrm{OQ}}=\overrightarrow{\mathrm{ON}}+\overrightarrow{\mathrm{NR}}+\overrightarrow{\mathrm{RQ}}</math>
:<math>\overrightarrow{\mathrm{ON}}</math>は<math>\boldsymbol{r}</math>の<math>\boldsymbol{e}</math>への正射影ベクトルなので
::<math>\overrightarrow{\mathrm{ON}}=\frac{\boldsymbol{r}\cdot\boldsymbol{e}}{\boldsymbol{e}\cdot\boldsymbol{e}}\boldsymbol{e}=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}</math>
:<math>\triangle\mathrm{NQR}</math>を考えると<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>と<math>\|\overrightarrow{\mathrm{NR}}\|=\|\overrightarrow{\mathrm{NQ}}\|\cos\phi</math>及び<math>\overrightarrow{\mathrm{NR}}/\!\!/\overrightarrow{\mathrm{NP}}</math>より
::<math>\overrightarrow{\mathrm{NR}}=\overrightarrow{\mathrm{NP}}\cos\phi=(\overrightarrow{\mathrm{OP}}-\overrightarrow{\mathrm{ON}})\cos\phi=\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi</math>
:<math>\boldsymbol{r}\times\boldsymbol{e}</math>は外積の定義から<math>\overrightarrow{\mathrm{NP}}</math>を<math>\Pi</math>上で<math>-\phi</math>方向に<math>\frac{\pi}{2}</math>だけ回転させたベクトルになるので、
:<math>\boldsymbol{r}\times\boldsymbol{e}/\!\!/\overrightarrow{\mathrm{RQ}}</math>と<math>\|\overrightarrow{\mathrm{RQ}}\|=\|\overrightarrow{\mathrm{NQ}}\|\sin\phi</math>及び<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>から
::<math>\overrightarrow{\mathrm{RQ}}=-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
:これらを足して
::<math>\boldsymbol{r}'=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}+\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})(1-\cos\phi)\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>//
この証明ではベクトルの平行移動を用いているのでアフィン空間を前提とするが、この式そのものはアフィン構造に依存してないので一般のベクトル空間で成り立つ。
また、回転後のベクトルは母線のパラメータ<math>t</math>に加えて回転角<math>\phi</math>もパラメータとして有するので、<math>\boldsymbol{r}'(t, \phi)</math>という二変数ベクトル関数となって曲面を表すことになる。則ち、「曲線を回転すれば曲面を得る」という直感は正しい。
ロドリゲスの公式の応用として、例えば円錐のベクトル方程式が<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\mathrm{const}.</math>であることが導ける。
:円錐頂点の位置ベクトルを<math>\boldsymbol{p}</math>、軸ベクトルを<math>\boldsymbol{a}</math>、<math>\boldsymbol{a}</math>と角度<math>\alpha</math>をなす単位ベクトルを<math>\boldsymbol{v}</math>とする。このとき直線<math>\{k\boldsymbol{v}\mid k>0\}</math>が円錐の母線であり、母線と交わる向きである軸の法線ベクトルを<math>\boldsymbol{b}</math>とおく。
:ロドリゲスの公式より<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}</math>の周りに<math>\theta</math>だけ回転させたベクトル<math>\boldsymbol{v}'</math>は
::<math>\boldsymbol{v}'=\boldsymbol{v}\cos\theta+(\boldsymbol{v}\cdot\boldsymbol{e}_a)\,\mathrm{versin}\,\theta\,\boldsymbol{e}_a-(\boldsymbol{v}\times\boldsymbol{e}_a)\sin\theta</math>
:ここで<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}, \boldsymbol{b}</math>方向に基底分解すると
::<math>\boldsymbol{v}=\cos\alpha\,\boldsymbol{e}_a+\sin\alpha\,\boldsymbol{e}_b</math>
:なので、
::<math>\boldsymbol{v}'=\cos\alpha\boldsymbol{e}_a+\sin\alpha\{\boldsymbol{e}_b\cos\theta+(\boldsymbol{e}_a\times\boldsymbol{e}_b)\sin\theta\}</math>
:円錐上の点<math>\boldsymbol{r}</math>の位置ベクトルは頂点から母線方向に<math>\rho</math>だけ進むので
::<math>\boldsymbol{r}=\boldsymbol{p}+\rho\boldsymbol{v}'</math>
:であり、
::<math>\boldsymbol{r}-\boldsymbol{p}=\rho\boldsymbol{v}'</math>
:ここで<math>\|\boldsymbol{v}'\|=\|\boldsymbol{v}\|=1</math>より
::<math>\rho=\|\boldsymbol{r}-\boldsymbol{p}\|</math>
:このベクトルと軸ベクトルの内積をとると
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\boldsymbol{v}'\cdot\boldsymbol{a}</math>
::<math>=\rho\{\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})+\sin\alpha\cos\theta(\boldsymbol{e}_b\cdot\boldsymbol{a})+\sin\alpha\sin\theta(\boldsymbol{e}_a\times\boldsymbol{e}_b)\cdot\boldsymbol{a}\}</math>
:<math>\boldsymbol{e}_b, \boldsymbol{e}_a\times\boldsymbol{e}_b</math>とも<math>\boldsymbol{a}</math>に直交するので後ろの二項は消えて
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})=\|\boldsymbol{r}-\boldsymbol{p}\|\|\boldsymbol{a}\|\cos\alpha</math>
:則ち
::<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\|\boldsymbol{a}\|\cos\alpha=\mathrm{const}.</math>//
円錐が先に与えられている場合は「<math>\boldsymbol{r}-\boldsymbol{p}</math>が母線の方向ベクトルなのは図より自明」とできるが、ここでは「母線が先に与えられて回転によって円錐が構成される」という立場を採ったのでロドリゲスの公式が効くのである。
ロドリゲスの公式で微小回転<math>d\phi</math>の場合を考える。
正弦関数・余弦関数の部分を1項目までテイラー展開して<math>\cos(d\phi)=1+O(d\phi^2), \sin(d\phi)= d\phi+O(d\phi^3)</math>なので<math>\mathrm{versin}(d\phi)=O(d\phi^2)</math>であり、
:<math>\boldsymbol{r}' = \boldsymbol{r}-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
ここで<math>d\boldsymbol{r}=\boldsymbol{r}'-\boldsymbol{r}</math>なので
:<math>d\boldsymbol{r}=-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
則ち、ベクトル関数の全微分は微小回転で近似される。
オーダー記法の項を無視して<math>\boldsymbol{\omega}=\frac{d\phi}{dt}\boldsymbol{e}</math>と置くと
:<math>d\boldsymbol{r}=(d\phi\boldsymbol{e})\times\boldsymbol{r}</math>
これの両辺を<math>dt</math>で割って
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{\omega}\times\boldsymbol{r}</math>
これは剛体の速度公式である。
ロドリゲスの公式の一次変換表記を考える。
<math>\boldsymbol{r}=\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}, \boldsymbol{r}'=\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}, \boldsymbol{e}=\begin{pmatrix} a \\ b \\ c \end{pmatrix}</math>とすると、
:<math>\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}=\cos\phi\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}+(ar_1+br_2+cr_3)\mathrm{versin}\,\phi\begin{pmatrix} a \\ b \\ c \end{pmatrix} - \sin\phi \begin{pmatrix} cr_2-br_3 \\ ar_3-cr_1 \\ br_1-ar_2 \end{pmatrix}</math>
:<math>=\begin{pmatrix} (\cos\phi + a^2\,\mathrm{versin}\,\phi) r_1 + (ab\,\mathrm{versin}\,\phi -c\sin\phi) r_2 + (ca\,\mathrm{versin}\,\phi + b\sin\phi) r_3 \\ (ab\,\mathrm{versin}\,\phi + c\sin\phi) r_1 + (\cos\phi + b^2\,\mathrm{versin}\,\phi) r_2 + (bc\,\mathrm{versin}\,\phi -a\sin\phi) r_3 \\ (ca\,\mathrm{versin}\,\phi - b\sin\phi) r_1 + (bc\,\mathrm{versin}\,\phi+ a\sin\phi) r_2 + (\cos\phi + c^2\,\mathrm{versin}\,\phi) r_3 \end{pmatrix}</math>
:<math>=\begin{pmatrix} \cos\phi + a^2\,\mathrm{versin}\,\phi & ab\,\mathrm{versin}\,\phi -c\sin\phi & ca\,\mathrm{versin}\,\phi + b\sin\phi \\ ab\,\mathrm{versin}\,\phi + c\sin\phi & \cos\phi + b^2\,\mathrm{versin}\,\phi & bc\,\mathrm{versin}\,\phi -a\sin\phi \\ ca\,\mathrm{versin}\,\phi - b\sin\phi & bc\,\mathrm{versin}\,\phi+ a\sin\phi & \cos\phi + c^2\,\mathrm{versin}\,\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\mathrm{versin}\,\phi</math>を<math>1-\cos\phi</math>に戻して係数行列を<math>1, \cos\phi, \sin\phi</math>の項に分解してみると
:<math>=\begin{pmatrix} a^2+(1-a^2)\cos\phi & ab-ab\cos\phi -c\sin\phi & ca-ca\cos\phi + b\sin\phi \\ ab-ab\cos\phi + c\sin\phi & b^2+(1-b^2)\cos\phi & bc-bc\cos\phi -a\sin\phi \\ ca-ca\cos\phi - b\sin\phi & bc-bc\cos\phi+ a\sin\phi & c^2+(1-c^2)\cos\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left\{ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi\begin{pmatrix} 1-a^2 & -ab & -ca \\ -ab & 1-b^2 & -bc \\ -ca & -bc & 1-c^2 \end{pmatrix} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right\} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left[ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi \left\{ \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}-\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} \right\} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right] \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix}</math>は<math>\boldsymbol{e}</math>の第<math>i</math>成分と第<math>j</math>成分を掛けたものが<math>(i, j)</math>成分となる行列になっていることがわかる。これを<math>\boldsymbol{e}\otimes\boldsymbol{e}</math>と書くことにする。<math>\sin\phi</math>に係る行列を<math>\mathbf{N}</math>と置くと、
:<math>\boldsymbol{r}'=\{\boldsymbol{e}\otimes\boldsymbol{e}+\cos\phi(\mathbf{E}_3-\boldsymbol{e}\otimes\boldsymbol{e})+\sin\phi\mathbf{N}\}\boldsymbol{r}</math>
という表示を得る。
更に、<math>\mathbf{N}^2=\begin{pmatrix} -b^2-c^2 & ab & ca \\ ab & -c^2-a^2 & bc \\ ca & bc & -a^2-b^2 \end{pmatrix}</math>と<math>\|\boldsymbol{e}\|=\sqrt{a^2+b^2+c^2}=1</math>より
:<math>\boldsymbol{e}\otimes\boldsymbol{e}=\mathbf{N}^2+(a^2+b^2+c^2)\mathbf{E}_3=\mathbf{N}^2+\mathbf{E}_3</math>
が成り立つので、最終的に
:<math>\boldsymbol{r}'=(\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2)\boldsymbol{r}</math>
と二次の行列多項式で表示される。
なお、<math>\otimes</math>は発展節で紹介する'''テンソル積'''を表している。
ここで、行列<math>\mathbf{N}</math>についてより具体的に考えてみる。
先ず、<math>{}^t\!\mathbf{N}=-\mathbf{N}</math>が成り立つので<math>\mathbf{N}</math>は反対称行列(歪対称行列・交代行列)である。
<math>\mathbf{N}\boldsymbol{r}</math>を計算すると
:<math>\mathbf{N}\boldsymbol{r}=\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}=\begin{pmatrix} br_3-cr_2 \\ cr_1-ar_3 \\ ar_2-br_1 \end{pmatrix}=\boldsymbol{e}\times\boldsymbol{r}</math>
則ち、<math>\mathbf{N}</math>は<math>\boldsymbol{e}</math>に関する外積(形式的には<math>\boldsymbol{e}\times</math>という左演算)を一次変換とみて表現行列に直したものである。
更に、成分計算により<math>\mathbf{N}^3=-\mathbf{N}</math>という性質が成り立つことも判る。外積を「ベクトルを90°回転させる演算」とみると、二回の演算によって180°回転するということなのでこの結果は妥当である。
ここで行列自然指数関数<math>\exp(\phi\mathbf{N})=\sum_{i=0}^\infty \frac{(\phi\mathbf{N})^i}{i!}</math>を考えてみると上の性質より三次以上の項は<math>\mathbf{N}^4=-\mathbf{N}^2, \mathbf{N}^5=\mathbf{N},\cdots</math>のように全て二次以下に帰着できる。<br>
また、自然指数関数のテイラー展開は絶対収束級数なので各項は可換であり、<math>\mathbf{N}</math>の二次式として纏め直すと
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3 + (\phi-\frac{\phi^3}{3!}+\frac{\phi^5}{5!}-\frac{\phi^7}{7!}+\cdots) \mathbf{N}+(\frac{\phi^2}{2!}-\frac{\phi^4}{4!}+\frac{\phi^6}{6!}-\frac{\phi^8}{8!}+\cdots)\mathbf{N}^2</math>
ここで一次・二次の係数はそれぞれ正弦関数・正矢関数のテイラー展開になっているので結局は
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2</math>
ここから、<math>\exp(\phi\mathbf{N})</math>は角度<math>\phi</math>に関する有限回転に対応することが判った。
このことは以下の考え方でも求まる。<br>
<math>\mathbf{N}</math>の最小方程式は<math>\mathbf{N}^3+\mathbf{N}=\mathbf{O}_3</math>より<math>x(x^2+1)=0</math>であり固有値は<math>0, \pm{i}</math>と求まるので、<math>\exp(\phi\mathbf{N})</math>の対角化行列は
:<math>\begin{pmatrix} e^{0\phi} & 0 & 0 \\ 0 & e^{i\phi} & 0 \\ 0 & 0 & e^{-i\phi} \end{pmatrix}</math>
ここで任意の解析関数<math>f</math>について<math>f(\mathbf{N})</math>のテイラー展開は二次以下の多項式になるので
:<math>\exp(\phi\mathbf{N})=\alpha\mathbf{E}_3+\beta\mathbf{N}+\gamma\mathbf{N}^2</math>
これを実多項式に戻した<math>\alpha+\beta{x}+\gamma{x^2}</math>が<math>e^{\phi{x}}</math>と任意の固有値で一致すればよい(二次補間)ので、
:<math>\begin{cases} e^0 = \alpha \\ e^{i\phi} = i\beta -\gamma \\ e^{-i\phi} = -i\beta-\gamma \end{cases}</math>
:<math>\iff \begin{cases} 1 = \alpha \\ \cos\phi+i\sin\phi = (\alpha -\gamma) + i\beta \end{cases}</math>
:<math>\therefore \begin{cases} \alpha=1 \\ \beta=\sin\phi \\ \gamma=1-\cos\phi=\mathrm{versin}\,\phi \end{cases}</math>
則ち、<math>\mathbf{N}^3=-\mathbf{N}</math>という構造は<math>\Psi_\mathbf{N}(x)=x(x^2+1)</math>という最小多項式に起因するということである。
更に[[表現論]]の観点から見ると、三次直交行列全体である回転群<math>SO(3)</math>に対し、<math>\mathbf{N}</math>は<math>SO(3)</math>の単位元に於ける接空間(三次反対称行列全体・則ちリー代数<math>\mathfrak{so}(3)</math>)の元であり、<math>\exp(\phi\mathbf{N})</math>はリー群<math>SO(3)</math>の元である。ここで行列自然指数関数は「リー代数からリー群へ引き戻す写像」なので'''指数写像'''と呼ばれる。
これが[[#フレネ標搆]]で述べた「直交変換の一次近似が反対称変換」という事実のより正確な表現である。
補足だが、力学で扱う[[w:オイラー角]]というものを導入するとロドリゲスの公式を各座標軸に関する回転の合成で表すこともできる。
===種々の曲率===
ここでは三次元空間内の正則曲面について考える。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>上で定義され弧長パラメータ表示された正則曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t(s), u(s))</math>を考える。
<math>C</math>の接ベクトルは合成関数微分公式より
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}}{ds}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}</math>
と表示される。
ここで両辺の<math>ds</math>を形式的に払うと
:<math>\boldsymbol{t}ds=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
これの自分自身との内積をとると
:<math>\|\boldsymbol{t}\|^2(ds)^2=\left\|\frac{d\boldsymbol{r}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2(du)^2</math>
弧長パラメトライズされた接ベクトルは単位ベクトルであり、右辺のベクトル演算の部分を第一基本量で置き換えると
:<math>ds^2=E(dt)^2+2Fdtdu+G(du)^2</math>
と、第一基本形式を別の方法で得られた。
<math>C</math>の主法線ベクトルは合成関数微分を繰り返し適用することで
:<math>\boldsymbol{n}_C=\frac{d\boldsymbol{t}}{ds}=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d}{ds}\left(\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d}{ds}\left(\frac{du}{ds}\right)</math>
:<math>=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\frac{du}{ds}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\frac{du}{ds}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
:<math>=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\left(\frac{dt}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+2\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}\frac{du}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\left(\frac{du}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
ここで、<math>S</math>の法線ベクトル<math>\boldsymbol{n}_S=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>は一般に<math>\boldsymbol{n}_C</math>と一次従属とは限らない。
後の話を単純にするため<math>\boldsymbol{n}_S</math>を正規化したベクトルを<math>\boldsymbol{e}_S</math>と置いて<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S</math>を計算してみる。
:<math>\boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>より
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{dt}{ds}\right)^2+2\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S\right)\frac{dt}{ds}\frac{du}{ds}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{du}{ds}\right)^2</math>
ここで各内積<math>L=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S,\quad M=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S,\quad N=\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S</math>を<math>S</math>の'''第二基本量'''と呼ぶ。
<math>\boldsymbol{n}_C, \boldsymbol{e}_S</math>のなす角を<math>\psi</math>とすると<math>C</math>の曲率を<math>\kappa_C</math>として
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\kappa_C \cos\psi</math>
なので<math>ds</math>に関して形式的に通分して
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
右辺の分子<math>I\!I:=L(dt)^2+2Mdtdu+N(du)^2</math>を<math>S</math>の'''第二基本形式'''という。
<math>\begin{cases}\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\boldsymbol{e}_S=0 \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\boldsymbol{e}_S=0 \end{cases}</math>を<math>t</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \end{cases}</math>
また、<math>u</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \end{cases}</math>
ここから第二基本量は
:<math>L=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}},\quad M=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad N=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}</math>
とも表示され、第二基本形式の別表示
:<math>I\!I=-\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
を得る。
これは更に全微分から微小ベクトル同士の内積として
:<math>I\!I=-d\boldsymbol{r}\cdot{d}\boldsymbol{e}_S</math>
とも書ける。
第一基本形式は曲面上の微小変位の自身との内積だったが、第二基本形式は曲面上の微小変位と法線方向の微小変位の内積である。則ち、第一基本形式は曲面の内在的な量、第二基本形式は曲面の外在的な量である。
第一基本形式と同様に第二基本形式は二次形式なので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{H}=\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>と置くと
:<math>I\!I={}^t\!\boldsymbol{v}\mathbf{H}\boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{H}</math>を'''第二基本行列'''という。
ここで、モンジュ表示された曲面<math>z=f(x, y)</math>に対して第二基本行列を考えてみる。
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} t \\ u \\ f(t, u)\end{pmatrix}</math>なので[[解析学基礎/多変数関数の微積分#全微分]]の結果を参照すると直ちに
:<math>L=\frac{\frac{\partial^2{f}}{\partial{t}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad M=\frac{\frac{\partial^2{f}}{\partial{t}\partial{u}}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad N=\frac{\frac{\partial^2{f}}{\partial{u}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}</math>
:が判るので、
:<math>\mathbf{H}=\frac{1}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}\begin{pmatrix} \frac{\partial^2{f}}{\partial{t}^2} & \frac{\partial^2{f}}{\partial{tu}} \\ \frac{\partial^2{f}}{\partial{tu}} & \frac{\partial^2{f}}{\partial{u^2}} \end{pmatrix}</math>
これはヘッシアンを法線の長さで割った行列である。
則ち、任意の正則曲面に対して第二基本行列はヘッセ行列と同じ役割をすると考えられる。
実際、点<math>\mathrm{P}</math>の開近傍で<math>\det\mathbf{H}</math>が正である曲面は<math>\mathrm{P}</math>の開近傍で上下どちらかに凸であり、負である曲面は<math>\mathrm{P}</math>で鞍点となることが知られている。
このように第二基本形式は曲面の「曲がり方」を表す量と考えられるので、曲面に対する曲率も考えられる。
ここで第二基本形式を定義した式
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
に立ち戻ると、右辺の分母は<math>s</math>に依存しない第一基本形式なので第一基本量を用いて
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>
右辺を形式的に<math>dt^2</math>で割ると
:<math>\kappa_C\cos\psi=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
この右辺は<math>\boldsymbol{n}_C</math>に依存しない量なので<math>\boldsymbol{n}_S, \boldsymbol{n}_C</math>のなす角度である<math>\psi</math>にも依存しない。
そこで、この値を曲面<math>S</math>の'''法曲率'''と定義する。
:<math>\varkappa:=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
法曲率の幾何学的意味を考える。
<math>\varkappa=\kappa_C\cos\psi</math>より、<math>\cos\psi=1</math>のとき<math>S</math>の法曲率と<math>C</math>の曲率が一致する。このとき<math>\boldsymbol{n}_S /\!\!/ \boldsymbol{n}_C</math>であり、<math>C</math>は曲面上の点<math>\mathrm{P}</math>とそこでの曲面の法線<math>\boldsymbol{n}_S(\mathrm{P})</math>を含む平面で曲面を切断した切り口('''法切り口''')に対応する曲線('''法曲線''')である。
則ち、法曲率は法曲線の曲率に対応する。
なお、法曲線<math>C</math>は切断に用いる平面に拘束されるので接ベクトル<math>\boldsymbol{t}_C</math>も平面に拘束される。則ち、拘束平面は<math>\{\boldsymbol{t}_C, \boldsymbol{n}_C\}</math>の張る接触平面である。
法切り口を齎す平面は法線を軸にして回転することができ、その回転角によって法曲率の値が異なることになる。この回転は具体的にはロドリゲスの公式によって記述されるが、法曲率の極大値・極小値は<math>\varkappa</math>を<math>k=\frac{du}{dt}</math>の関数とみることで以下のように考えることができる。
:法曲率の定義式より
::<math>\varkappa(E+2Fk+Gk^2)=L+2Mk+Nk^2</math>・・・(*)
:これが<math>k</math>の恒等式なので微分しても等号が成り立ち、
::<math>\frac{d\varkappa}{dk}(E+2Fk+Gk^2)+\varkappa(2F+2Gk)=2M+2Nk</math>
:フェルマーの定理より<math>\frac{d\varkappa}{dk}=0</math>を満たす<math>(k, \varkappa)</math>が極値点の候補なので
::<math>\varkappa(2F+2Gk)=2M+2Nk</math>・・・(@)
:が成り立つ必要がある。
:これを<math>k</math>倍して(*)を引くと
::<math>\varkappa(E+Fk)=L+Mk</math>・・・(#)
:これと(@)を連立して
::<math>k=-\frac{\varkappa{F}-M}{\varkappa{G}-N}</math>
:これを(#)に代入して
::<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)=0</math>・・・($)
:という二次方程式を得る。
:($)が相異なる二つの実根<math>\kappa_1, \kappa_2</math>を持てばそれらは極小値・極大値である。
:逆に、極小値・極大値を持てばフェルマーの定理より($)を満たす。//
この<math>\kappa_1, \kappa_2</math>を<math>S</math>の'''主曲率'''という。
($)の左辺を変形してみると、
:<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)</math>
:<math>=\{EG\varkappa^2-(GL+EN)\varkappa+LN\}-\{F^2\varkappa^2-2FM\varkappa+M^2\}</math>
:<math>=(L-\varkappa{E})(N-\varkappa{G})-(M-\varkappa{F})^2</math>
:<math>=\det\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}</math>
:<math>=\det(\mathbf{H}-\varkappa\mathbf{K})</math>
という、第一基本行列と第二基本行列を用いた形が出てきた。
ここで<math>\varkappa=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>を変形して
:<math>(L-\varkappa{E})dt^2+2(M-\varkappa{F})dtdu+(N-\varkappa{G})du^2=0</math>
これを二次形式表示すると
:<math>\begin{pmatrix} dt & du \end{pmatrix}\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}\begin{pmatrix} dt \\ du \end{pmatrix}=0</math>
と、同じ<math>\mathbf{H}-\varkappa\mathbf{K}</math>がここでも登場する。
この行列は法曲率を持つ方向を二次形式で判定しているが、主曲率を持つ場合はラグランジュの未定乗数法より<math>(\mathbf{H}-\varkappa\mathbf{K})\begin{pmatrix} dt \\ du \end{pmatrix}=\boldsymbol{0}</math>が成り立ち、これが<math>\det(\mathbf{H}-\varkappa\mathbf{K})=0</math>という式の正体である。更に言うと、<math>\mathbf{H}\boldsymbol{x}=\varkappa\mathbf{K}\boldsymbol{x}</math>という一般化固有値問題の解が主曲率<math>\kappa_1, \kappa_2</math>に対応している。このときの一般化固有ベクトル<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>を主曲率に対する'''主方向'''という。
二つの主方向の関係を調べる。
:主方向の定義より
::<math>\begin{cases} (\mathbf{H}-\kappa_1\mathbf{K}) \boldsymbol{x}_1=\boldsymbol{0} \\ (\mathbf{H}-\kappa_2\mathbf{K}) \boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
:なので
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2(\mathbf{H}-\kappa_1\mathbf{K})\boldsymbol{x}_1=\boldsymbol{0} \\ {}^t\!\boldsymbol{x}_1(\mathbf{H}-\kappa_2\mathbf{K})\boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
:第一基本行列・第二基本行列とも対称行列なので第二式の転置をとって
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_2{}^t\!\boldsymbol{x}_2 \mathbf{K}\boldsymbol{x}_1 \end{cases}</math>
:上下の式の差をとって
::<math>(\kappa_1-\kappa_2){}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\boldsymbol{0}</math>
:<math>\kappa_1=\kappa_2</math>のときは<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>に関する恒等式であるので、<math>\kappa_1\neq\kappa_2</math>のときを考える。
::<math>{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_2\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_1+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_1\right)=0</math>
:この二つのベクトルは主方向を向くので2つの主方向は直交する。
<math>\kappa_1=\kappa_2</math>(法曲率<math>\varkappa(t, u)=\mathrm{const}.</math>)の場合、<math>S</math>の接平面内の任意の方向が主方向となるので「どの方向にも一様な曲がり方をする」と考えられる。このような主曲率を与える点を'''臍点'''という。任意の点が臍点である曲面は球面である。
上の結果から、'''臍点でない各点で2つの主方向は直交する'''。
主曲率に対して解と係数の関係から得る値
:<math>H=\frac{\kappa_1+\kappa_2}{2}=\frac{GL+ENN-2FM}{2EG-F^2},\quad K=\kappa_1\kappa_2=\frac{LN-M^2}{EG-F^2}</math>
をそれぞれ<math>S</math>の'''平均曲率'''・'''全曲率'''('''ガウス曲率''')という。
全曲率の式を見ると<math>K=\frac{LN-M^2}{EG-F^2}=\frac{\det\mathbf{H}}{\det\mathbf{K}}=\det(\mathbf{K}^{-1}\mathbf{H})</math>である。
そこで、<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>と定義してみると行列式の性質より<math>K</math>は<math>\mathbf{S}</math>の固有値の積である。
ここで<math>\mathbf{S}</math>の固有方程式は
:<math>\det(\mathbf{S}-\lambda\mathbf{E})=\det(\mathbf{K}^{-1}\mathbf{H}-\lambda\mathbf{E})=\det\mathbf{K}^{-1}\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
<math>\det\mathbf{K}^{-1}\neq0</math>より
:<math>\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
これは主曲率を定義した二次方程式($)のことだったので、この方程式の解である固有値は<math>\lambda=\kappa_1, \kappa_2</math>である。
則ち、<math>K=\det\mathbf{S},\quad H=\frac{1}{2}\mathrm{tr}\,\mathbf{S}</math>が成り立つ。
更に、第一基本行列から第二基本行列への一次変換を考えると以下が成り立つことも判る。但し、こちらもフレネ=セレーと同様に厳密にはベクトルを列ではなく行に並べるのが正しいことに注意。
{{定理|(ヴァインガルテンの式)}}
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=-\mathbf{S}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
{{定理終わり}}
*証明
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>と置く。
:両辺に<math>{}^t\!\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>を右から掛けると行列積であることに注意して
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{t}} & \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{u}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
:<math>\therefore -\mathbf{H}=\mathbf{A}\mathbf{K}</math>
:<math>\therefore \mathbf{A}=-\mathbf{H}\mathbf{K}^{-1}=-\mathbf{K}^{-1}\mathbf{H}=-\mathbf{S}</math>//
臍点で行列<math>\mathbf{H}-\varkappa\mathbf{K}</math>を考えると<math>\varkappa=\kappa_1=\kappa_2</math>及び「主方向が任意」から
:<math>\mathbf{H}-\varkappa\mathbf{K}=\mathbf{O}</math>
であり、これを成分で書き下せばヴァインガルテンの式より法曲率に関して
:<math>\begin{cases} \varkappa=\frac{L}{E}=\frac{M}{F}=\frac{N}{G} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{cases}</math>
を得る。
<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>に於いて<math>\mathbf{K}</math>は正定値対称行列なので正則対称な主平方根<math>\mathbf{K}^{1/2}</math>が存在して
:<math>\mathbf{S}=\mathbf{K}^{-1/2}\mathbf{K}^{-1/2}\mathbf{H}</math>
ここで<math>\mathbf{T}=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>という相似変換で表された行列を考えてみると
:<math>\mathbf{K}^{1/2}\mathbf{S}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{1/2}\mathbf{K}^{-1}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{T}</math>
であり、<math>\mathbf{S}\sim\mathbf{T}</math>なのでこれらの2つの固有値の組は一致する。
:<math>\mathbf{H}={}^t\!\mathbf{H}</math>
より
:<math>{}^t\!\mathbf{T}=\mathbf{T}</math>
が成り立つので、<math>\mathbf{T}</math>は対称行列であり2つの固有値は実数である。
よって<math>\mathbf{S}</math>の二つの固有値はともに実数であるが、この固有値は($)の解<math>\kappa_1, \kappa_2</math>のことだったので($)は虚根を持たず、'''主曲率は必ず実数'''である。
モンジュ表示された曲面では先程求めた第二基本量の表式から直ちに
:<math>H=\frac{\left\{1+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}\frac{\partial^2{f}}{\partial{x}^2}+\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2\right\}\frac{\partial^2{f}}{\partial{y}^2}-2\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}\frac{\partial^2{f}}{\partial{x}\partial{y}}}{{2\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^\frac{3}{2}}},\quad K=\frac{\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}-\left(\frac{\partial^2{f}}{\partial{x}\partial{y}}\right)^2}{\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^2}</math>
を得る。
等温座標系では<math>\mathbf{K}^{-1}=\frac{1}{\lambda^2}\mathbf{E}_3</math>より<math>\mathbf{S}=\frac{1}{\lambda^2}\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>なので、平均曲率・ガウス曲率はそれぞれ<math>H=\frac{L+N}{2\lambda^2},\quad K=\frac{LN-M^2}{\lambda^4}</math>と簡単に求まる。
ある点に於ける2つの主曲率はそれぞれその点に於ける極大方向・極小方向の曲がり方を与えるので、<math>\kappa_1, \kappa_2</math>の符号の組み合わせがその点近傍に於ける曲面の曲がり方を与えることになる。
具体的には、両方とも正なら上に凸、負なら下に凸、異符号なら鞍点となる。主曲率が0ならばその主方向に対して曲がっていないということである。
主曲率の積である全曲率の符号を見ても良い。全曲率が正ならば上下どちらかに凸、負ならば鞍点である。第一基本行列が正定値行列であることから主曲率の符号は第二基本行列の行列式と一致するので先程の「第二基本行列がヘッセ行列の一般化」という話に繫がる。
任意点で<math>H=0</math>を満たす曲面を'''極小曲面'''という。極小曲面は曲面を連続変形させたときに曲面積の最小値を与える曲面であることが知られている。
平面は自明な極小曲面である。他にも<math>z=\ln\left(\frac{\cos y}{\cos x}\right)(-\frac{\pi}{2}<x, y<\frac{\pi}{2})</math>(シェルクの第一曲面)などが知られている。
極小曲面は表面張力の理論に応用されている。
例えば石鹼膜のつくる曲面について、膜上点での表裏の圧力差<math>P</math>・その点での表面張力<math>T</math>及び平均曲率<math>H</math>に対し<math>P=2TH</math>が成立する(ヤング=ラプラスの公式)ことが知られているが、閉曲線である枠に張った膜が割れずに安定して存在する条件は全ての点で<math>P=H=0</math>、則ち極小曲面のときである。
曲面<math>S</math>上の微小変位<math>d\boldsymbol{r}</math>、法線方向の微小変位<math>d\boldsymbol{e}_S</math>に対して第一基本形式は<math>I=d\boldsymbol{r}\cdot d\boldsymbol{r}</math>、第二基本形式は<math>I\!I=-d\boldsymbol{r}\cdot d\boldsymbol{e}_S</math>であった。
最後の組み合わせである<math>d\boldsymbol{e}_S\cdot d\boldsymbol{e}_S</math>を<math>S</math>の'''第三基本形式'''と定義する。
:<math>I\!I\!I:=\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
:<math>=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2(du)^2</math>
これを同様に二次形式の行列表示に直すと<math>\mathbf{W}:=\begin{pmatrix} \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2 & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} & \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2 \end{pmatrix}</math>として
:<math>I\!I\!I={}^t\!\boldsymbol{v}\mathbf{W}\boldsymbol{v}</math>
この<math>\mathbf{W}</math>を'''第三基本行列'''という。
見て判る通り、'''第三基本量'''は<math>P=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2,\quad Q=\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad R=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2</math>である。
臍点でないとき2つの主方向は直交するので、臍点を持たない曲面に対して主方向を直交基底としたパラメータ表示<math>\boldsymbol{r}=\boldsymbol{r}(p, q)</math>を考えられる。
このとき、各基本形式は
:<math>I=dp^2+dq^2</math>
:<math>I\!I=\kappa_1dp^2+\kappa_2dq^2</math>
:<math>I\!I\!I=\kappa^2_1dp^2+\kappa^2_2dq^2</math>
と表示されることが知られている。
第三基本形式は第一基本形式と第二基本形式の線型結合で表示される。
:<math>I\!I\!I=2HI\!I-KI</math>
このことはヴァインガルテンの式と平均曲率・全曲率の定義を用いて確かめられる。
これに関連し、第二基本量で定義された全曲率は第一基本量のみで表されることが知られている。つまり、曲率という外在的な量を第一基本形式という内在的な量のみで記述でき、言い換えると「曲面を考えるときに'''曲面の外側の空間を考える必要が無い'''」ということである。
この定理は発見者自身も驚愕したことから'''ガウスの驚異の定理'''と呼ばれている。詳しくは発展節で扱う。
なお、平均曲率を考えるときは外側の空間の情報が必要である。
==直交曲線座標系==
{{節stub}}
===円筒座標系===
平面の座標系として直交座標の他に斜交座標、極座標(円座標)、重心座標などがあったように、空間の座標系も複数通り考えられる。
空間座標を3つの実数の組<math>(r, \theta, z)</math>で表した座標系を'''円筒座標系'''('''円柱座標系'''、cylindrical coordinate system)という。ただし、<math>r</math>は原点からの(符号付き)距離、<math>\theta</math>は基準面に於ける始線からの正の回転角、<math>z</math>は基準面からの高さである。
円筒座標系は、円座標系の<math>r\theta</math>平面に<math>z</math>軸方向の次元を加えた3次元空間の座標と考えられる。
そのため、円筒座標系と直交座標系の対応は以下のようになる。
:<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \\ z=z \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2} \\ \theta = \arctan\frac{y}{x} \\ z=z \end{cases}</math>
但し、<math>r</math>は基準面の裏側では負とする。
直交座標の<math>z</math>軸を基に円筒座標系の座標軸を決定する。一般に座標軸は直線とは限らないので、「軸」ではなく「曲線」と呼ぶことにする('''座標線''')。なお、「曲線」という語は一般に「直線」を包含する。
:<math>r</math>曲線:<math>z</math>軸上の点を通り<math>z</math>軸に垂直な半直線。
:<math>\theta</math>曲線:<math>z</math>軸を法線とする平面内にあり、中心が<math>z</math>軸上にある円周。
:<math>z</math>曲線:<math>z</math>軸に平行な直線。
ここで、各曲線に沿った微小変化がどのように表されるか見ていく。
<math>\boldsymbol{f}: (r,\theta,z)\to(x,y,z)</math>とする。
<math>\boldsymbol{f}</math>全体の微小変化は全微分<math>d\boldsymbol{f}=\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}</math>で表される。
上で求めた関係式より
:<math>\boldsymbol{f}\begin{pmatrix} r \\ \theta \\ z\end{pmatrix}=\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} r\cos\theta \\ r\sin\theta \\ z \end{pmatrix}</math>
なので、
:<math>\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} = \begin{pmatrix} \frac{\partial}{\partial{r}}r\cos\theta & \frac{\partial}{\partial{\theta}}r\cos\theta & \frac{\partial}{\partial{z}}r\cos\theta \\ \frac{\partial}{\partial{r}}r\sin\theta & \frac{\partial}{\partial{\theta}}r\sin\theta & \frac{\partial}{\partial{z}}r\sin\theta \\ \frac{\partial}{\partial{r}}z & \frac{\partial}{\partial{\theta}}z & \frac{\partial}{\partial{z}}z \end{pmatrix} = \begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}</math>
よって
:<math>d\boldsymbol{f}=\begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}=\begin{pmatrix} \cos\theta \\ \sin \theta \\ 0 \end{pmatrix}dr + \begin{pmatrix} -\sin\theta \\ \cos\theta \\ 0 \end{pmatrix}rd\theta + \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}dz </math>
再右辺の各項を<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>と書くことにすると、<math>|d\vec{r}|, |d\vec{\theta}|, |d\vec{z}|</math>はそれぞれ<math>dr, rd\theta, dz</math>とわかる。<math>r, \theta, z</math>を物理量として捉えたとき<math>d\theta</math>の単位はラジアン(無次元量)であり、<math>rd\theta</math>の単位はメートル(長さの次元1)なので、次元の整合性が取れる。
纏めると以下のようになる。
{| class="wikitable"
| ||style="text-align:center;"| <math>\boldsymbol{e}_x</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_y</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_z</math>成分 ||style="text-align:center;"| ノルム
|-
|style="text-align:center;"| <math>d\vec{r}</math> ||style="text-align:center;"| <math>\cos\theta dr</math> ||style="text-align:center;"| <math>\sin\theta dr</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>dr</math>
|-
|style="text-align:center;"| <math>d\vec{\theta}</math> ||style="text-align:center;"| <math>-r\sin\theta d\theta</math> ||style="text-align:center;"| <math>r\cos\theta d\theta</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>rd\theta</math>
|-
|style="text-align:center;"| <math>d\vec{z}</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>1</math> ||style="text-align:center;"| <math>dz</math>
|}
ここで<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>は内積を取ればどの組も互いに直交することが容易にわかるので、この3つのベクトルは3次元ユークリッド空間の直交基底である。
そこで、それぞれのベクトルを正規化することで各軸曲線方向の基本ベクトルを得る。
:<math>\boldsymbol{e}_r = \frac{d\vec{r}}{dr} = \cos\theta \boldsymbol{e}_x + \sin\theta \boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_\theta = \frac{d\vec{\theta}}{rd\theta} = -\sin\theta\boldsymbol{e}_x+\cos\theta\boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_z=\frac{d\vec{z}}{dz}=\boldsymbol{e}_z</math>
これを一次変換の形式で表すと
:<math>\begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix}</math>
となる。
このときの表現行列を、座標系または基底ベクトルを変換することから'''座標変換行列'''又は'''基底変換行列'''という。場合によっては'''変換テンソル'''とも呼ぶ。
なお、この直交座標⇒円筒座標の座標変換行列は、<math>xyz</math>空間に於ける<math>z</math>軸まわりの回転行列に等しい。
逆基底変換はこの座標変換行列の逆行列を求めれば定式化できる。
回転行列は直交行列なので
:<math>\begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} ^{-1}= {}^t \! \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} </math>
であり、
:<math>\begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix}</math>
円筒座標系は、[[電磁気学]]の解析でよく使用される。
例えば、高校物理の公式<math>B(r)=\frac{\mu_0I}{\tau r}</math>は、円筒座標系を知っていれば「電流が<math>z</math>軸に平行であることから磁場は<math>z</math>方向に一葉且つ<math>\theta</math>方向に回転対称なので、<math>r</math>方向の項のみが寄与する」と理解される。
===極座標系===
高等学校までの地理で習ったように、球面上の位置は緯度<math>\theta</math>と経度<math>\phi</math>で定めることができる。
一般に三次元空間で球面上のある点の座標を定めるには、更に球の中心からの距離<math>r</math>が必要である。
このようにして定められる座標系を'''三次元極座標系'''(polar coordinate system in 3D)または'''球(面)座標系'''(spherical coordinate system)という。
xyz座標空間の点<math>\mathrm{P}(x, y, z)</math>の極座標表示を考える。
<math>r=|\overrightarrow{\mathrm{OP}}|=\sqrt{x^2+y^2+z^2}</math>は容易にわかる。
<math>\theta</math>は<math>z</math>軸からの'''天頂角'''(zenith angle)であり、<math>\overrightarrow{\mathrm{OP}}</math>の<math>z</math>軸への正射影ベクトルを<math>\overrightarrow{\mathrm{OH}}=\vec{h}</math>とすると<math>\tan\theta = \frac{|\vec{h}|}{z}</math>が成り立つ。<math>|\vec{h}|=\sqrt{x^2+y^2}</math>より、<math>\theta=\arctan \frac{\sqrt{x^2+y^2}}{z}</math>である。
<math>\phi</math>は<math>x</math>軸からの'''方位角'''(azimuth angle)であり、<math>\mathrm{P}</math>から<math>xy</math>平面に降ろした垂足<math>\mathrm{Q}</math>を考えると<math>\tan\phi=\frac{y}{x}</math>とわかる。よって、<math>\phi=\arctan\frac{y}{x}</math>である。
逆に、これを<math>\mathrm{P}(x, y, z)</math>に復元することを考える。
<math>\triangle\mathrm{OHP}</math>について<math>\angle\mathrm{HOP}=\theta</math>なので、<math>z=\overline{\mathrm{OH}}=r\cos\theta</math>。
また、<math>\triangle\mathrm{OPQ}</math>について<math>\angle\mathrm{OPQ}=\theta</math>なので、<math>\overline{\mathrm{OQ}}=r\sin\theta</math>。
よって<math>x=\overline{\mathrm{OQ}}\cos\phi=r\sin\theta\cos\phi, y=\overline{\mathrm{OQ}}\sin\phi=r\sin\theta\sin\phi</math>。
以上を纏めると、直交座標と球面座標の対応関係は
:<math>\begin{cases} x=r\sin\theta\cos\phi \\ y=r\sin\theta\sin\phi \\ z=r\cos\theta \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2+z^2} \\ \theta=\arctan\frac{\sqrt{x^2+y^2}}{z} \\ \phi=\arctan\frac{y}{x} \end{cases}</math>
一般に緯度は<math>-90^\circ \leqq \theta \leqq 90^\circ</math>、経度は<math>-180^\circ \leqq \phi \leqq 180^\circ</math>の範囲で表される(但し、符号の違いは東⇔西、南⇔北の違いである)。同様に、球面座標の天頂角<math>\theta</math>、方位角<math>\phi</math>は<math>\theta \in [-\frac{\pi}{4}, \frac{\tau}{4}], \phi \in [-\frac{\tau}{2}, \frac{\tau}{2}]</math>で考える。赤道面より下側(すなわち南半球)では<math>\theta<0</math>とする。
直交座標の<math>z</math>軸を基に極座標系の座標線を決定する。
:<math>r</math>曲線:原点を通る半直線。
:<math>\theta</math>曲線:原点中心で<math>z</math>軸上の一点から出る半円弧。
:<math>\phi</math>曲線:<math>z</math>軸を法線とする平面内で<math>z</math>軸上に中心を持つ円周。
各曲線に沿った微小変化は円柱座標系の場合と同様、ベクトル場の全微分を用いて
:<math>\begin{cases} d\vec{r}= \begin{pmatrix} \sin\theta\cos\phi \\ \sin\theta\sin\phi \\ \cos\theta \end{pmatrix} dr \\ d\vec{\theta}= \begin{pmatrix} \cos\theta\cos\phi \\ \cos\theta\sin\phi \\ -\sin\theta \end{pmatrix}rd\theta \\ d\vec{\phi} = \begin{pmatrix} -\sin\phi \\ \cos\phi \\ 0 \end{pmatrix} r\sin\theta d\phi \end{cases}</math>
と求まる。
これらは(内積の結果から)互いに直交するので、円柱座標の場合と同様の議論により
:<math>\begin{pmatrix} \sin\theta\cos\phi & \sin\theta\sin\phi & \cos\theta \\ \cos\theta\cos\phi & \cos\theta\sin\phi & -\sin\theta \\ -\sin\phi & \cos\phi & 0 \end{pmatrix}</math>
と変換テンソルが求まる。
これも直交行列であるので、逆変換テンソルは
:<math>\begin{pmatrix} \sin\theta\cos\phi & \cos\theta\cos\phi & \cos\phi \\ \sin\theta\sin\phi & \cos\theta\sin\phi & -\sin\phi \\ -\sin\theta & \cos\theta & 0 \end{pmatrix}</math>
と求まる。
球面座標系は、[[古典力学]]の解析でよく使用される。
例えば、赤道平面における角運動量保存則は<math>mr^2\frac{d\phi}{dt}=\mathrm{const}.</math>と表示されるが、これは<math>z</math>軸方向の角運動量を球面座標系の演算により取り出したものである。
球面座標系は特に機械制御に応用されている。
円柱座標系・球面座標系ともに各基底ベクトルが互いに直交しているので、そのことを明示して(且つ通常の直交座標系と区別して)'''直交曲線座標系'''(orthogonal curvilinear coordinate system)と呼ぶ場合がある。以下で扱う座標系たちも直交曲線座標系である。
===円環座標系===
===双極座標系===
===回転放物面座標系===
===放物柱座標系===
===回転楕円面座標系===
===楕円柱座標系===
===楕円体座標系===
==空間微分==
ここでは三次元ユークリッド空間で考える。
===勾配===
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\varphi\in C^1</math>のとき、
:<math>\mathrm{grad}\,\varphi := \begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}</math>
を<math>\varphi</math>の'''勾配'''(gradient)と定義する。
勾配の結果として得るベクトルを<math>\varphi</math>の'''勾配ベクトル'''ともいう。
勾配で定義される概念としては、電場が有名である。
:電位<math>\phi</math>に対する電場<math>\boldsymbol{E}</math>は
:<math>\boldsymbol{E}:=-\mathrm{grad}\,\phi</math>
勾配はベクトル量であるため、そのことを明示するため新たな演算子を導入する。
'''空間偏微分演算子'''(ハミルトン演算子)を
<math>\nabla:=\begin{pmatrix} \frac{\partial}{\partial{x}} \\ \frac{\partial}{\partial{y}} \\ \frac{\partial}{\partial{z}} \end{pmatrix}</math>
と定義する。
この演算子自体は偏微分作用素の対象を後接しないと意味を成さない。しかし、便宜的にベクトル量と考えてベクトルと同様の演算則が成り立つと見做す。そのため、この演算子に関する演算は[[w:記号の濫用]](symbol abuse)であることを註しておく。
<math>\nabla</math>の正式な読み方は'''ナブラ'''(nabla)であるが、<math>\Delta</math>(delta)を反転した形であることから'''エイトレッド'''(atled)とも読まれる。なお、ナブラの由来は「竪琴」を意味する古代ギリシャ語「νάβλα」である。
この演算子を用いれば勾配の表式は
:<math>\mathrm{grad}\,\varphi=\nabla\varphi</math>
となる。
<math>\varphi</math>はスカラー場なのでスカラー量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その積<math>\nabla\varphi</math>はベクトル量のスカラー倍、すなわちベクトル量であることが見て取れる。
勾配はスカラー場に対する偏微分の結果を並べたベクトルであるため、偏微分の性質とベクトルの性質を組み合わせて以下が成り立つと判る。
#<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>(線型性)
#<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(積の微分・ライプニッツ則)
#<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>(商の微分)
#<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>(合成関数微分)
任意点に対して勾配ベクトルが非零であるスカラー場を'''正則'''なスカラー場という。
以下、正則なスカラー場に限って扱う。
等位面<math>\varphi(x, y, z)=k(\mathrm{const}.)</math>上の点<math>\mathrm{P}(x_0, y_0, z_0)</math>を考える。
:<math>\mathrm{P}</math>を通り等位面に拘束される曲線のベクトル表示を<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>とする。
:等位面の方程式を<math>t</math>で両辺微分して
::<math>\frac{\partial{\varphi}}{\partial{x}}\frac{dx}{dt}+\frac{\partial{\varphi}}{\partial{y}}\frac{dy}{dt}+\frac{\partial{\varphi}}{\partial{z}}\frac{dz}{dt}=0</math>
:<math>t=t_0</math>のとき
::<math>\frac{\partial{\varphi}}{\partial{x}}x'(t_0)+\frac{\partial{\varphi}}{\partial{y}}y'(t_0)+\frac{\partial{\varphi}}{\partial{z}}z'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\cdot\boldsymbol{r}'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\perp\boldsymbol{r}'(t_0)</math>
ここで<math>\mathrm{P}</math>に於ける等位面の接平面は接ベクトル<math>\boldsymbol{r}'(t_0)</math>を含むため、<math>\nabla\varphi(\mathrm{P})</math>は点<math>\mathrm{P}</math>に於ける等位面の法線ベクトルである。
よって等位面の接平面の方程式は
:<math>\nabla\varphi(\mathrm{P})\cdot(\boldsymbol{x}-\overrightarrow{\mathrm{OP}})=0</math>
である。
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>の全微分は
:<math>d\varphi=\frac{\partial{\varphi}}{\partial{x}}dx+\frac{\partial{\varphi}}{\partial{y}}dy+\frac{\partial{\varphi}}{\partial{z}}dz</math>
これをベクトルの内積とみると
:<math>=\begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}\cdot\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
:<math>=\nabla\varphi\cdot d\boldsymbol{x}</math>
ここで変位ベクトル<math>d\boldsymbol{x}</math>を任意の方向を向いた単位ベクトル<math>\boldsymbol{e}</math>に拡張することを考えたい。
<math>\varphi(\mathrm{P})</math>に対して<math>\mathrm{P}</math>を始点とする<math>\boldsymbol{e}</math>方向の直線を考え、その上の点を<math>\mathrm{Q}</math>とする。
このとき、ベクトル変数<math>\boldsymbol{e}</math>による微分係数
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{\mathrm{Q\to P}}\frac{\varphi(\mathrm{Q})-\varphi(\mathrm{P})}{\overline{\mathrm{QP}}}</math>
を、<math>\varphi</math>の<math>\mathrm{P}</math>に於ける<math>\boldsymbol{e}</math>方向の'''方向微分係数'''と定義する。
方向微分係数はスカラー場に対し<math>\boldsymbol{e}</math>方向の変化率を与えるものと考えられる。そこで、方向微分係数が最大となる方向を考える。
:<math>\overrightarrow{\mathrm{PQ}}=t\boldsymbol{e}</math>と置く。
::<math>\overrightarrow{\mathrm{OQ}}=\begin{pmatrix} x_0+te_1 \\ y_0+te_2 \\ z_0+te_3 \end{pmatrix}</math>
::<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{t\to0}\frac{\varphi(x_0+te_1, y_0+te_2, z_0+te_3)-\varphi(x_0, y_0, z_0)}{t}</math>
:ここで<math>\Phi(t):=\varphi(x_0+te_1, y_0+te_2, z_0+te_3)</math>とすれば
::<math>=\lim_{t\to0}\frac{\Phi(t)-\Phi(0)}{t}</math>
::<math>=\frac{d\Phi(t)}{dt}</math>
::<math>=\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{x}}\frac{d(x_0+te_1)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{y}}\frac{d(y_0+te_2)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{z}}\frac{d(z_0+te_3)}{dt}</math>
::<math>=\frac{\partial{\varphi}(\mathrm{P})}{\partial{x}}e_1+\frac{\partial{\varphi}(\mathrm{P})}{\partial{y}}e_2+\frac{\partial{\varphi}(\mathrm{P})}{\partial{z}}e_3</math>
::<math>=\nabla\varphi(\mathrm{P})\cdot\boldsymbol{e}</math>
よって、全微分の式の<math>d\boldsymbol{x}</math>をそのまま<math>\boldsymbol{e}</math>に取り替えたものが方向微分係数の表式である。
内積を書き下すと<math>\|\boldsymbol{e}\|=1</math>より
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\|\nabla\varphi(\mathrm{P})\|\cos\theta</math>
よって最大値をとるのは<math>\cos\theta=1</math>則ち'''<math>\boldsymbol{e}</math>が勾配方向のとき'''である。また、方向微分係数の最大値は'''勾配のノルム'''である。
このように、勾配はスカラー場の各点に於ける傾きを表す。これは最右辺の式が「各軸方向の傾きを表すベクトルの和」になっていることからも直観的にわかる。ここから、「gradient」の和訳として「勾配」が充当されたのは妥当である。
方向微分係数を'''方向導関数'''に拡張することを考える。
形式的には方向微分係数の定点<math>\mathrm{P}</math>を変数<math>\boldsymbol{x}</math>に置き換えればいいだけである。
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\nabla\varphi(\boldsymbol{x})\cdot\boldsymbol{e}</math>
正式には極限を用いて
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\lim_{t\to0}\frac{\varphi(\boldsymbol{x}+t\boldsymbol{e})-\varphi(\boldsymbol{x})}{t}</math>
と定義する。
内積を書き下すと
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{x}}e_1+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{y}}e_2+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{z}}e_3</math>
これを[[解析学基礎/多変数関数の微積分#極値]]で扱った方向偏微分作用素として書き直すと
:<math>\left(e_1\frac{\partial}{\partial{x}}+e_2\frac{\partial}{\partial{y}}+e_3\frac{\partial}{\partial{z}}\right)\varphi(\boldsymbol{x})</math>
:<math>=(\boldsymbol{e}\cdot\nabla)\varphi(\boldsymbol{x})</math>
となる。
則ち、形式的には空間偏微分演算子の微分方向ベクトルとの右内積が方向偏微分作用素である。
更に、多変数関数のテイラー二次近似は
:<math>f(\boldsymbol{x})\fallingdotseq f(\boldsymbol{a})+\nabla{f}(\boldsymbol{a})\cdot(\boldsymbol{x}-\boldsymbol{a})+\frac{1}{2}{}^t\!(\boldsymbol{x}-\boldsymbol{a})\mathbf{D}(\boldsymbol{x}-\boldsymbol{a})</math>
と書けることが判る。但し、<math>\mathbf{D}</math>はヘッセ行列である。
多変数解析で扱った停留点(臨界点)は<math>\nabla\varphi(\mathrm{P})=\boldsymbol{0}</math>なる点<math>\mathrm{P}</math>として正式に定義される。また、ラグランジュの未定乗数法に於ける連立方程式も勾配を用いれば<math>\nabla\varphi(\mathrm{P})=\lambda\nabla\psi(\mathrm{P})</math>と書き表される。
スカラー場の全微分は勾配で表せたが、同様にベクトル場の全微分をナブラを用いて表すことを考える。
ベクトル場の全微分は
:<math>d\boldsymbol{a}=\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}} d\boldsymbol{x}</math>
で定義された。
ここで<math>n</math>次行列 <math>\mathbf{A}</math>と<math>n</math>項列ベクトル <math>\boldsymbol{a}</math>に対し、<math>(\mathbf{A} \circledast \boldsymbol{a})_{ij} = (\mathbf{A}_{ij}) a_i</math>となるような可換二項演算子 <math>\circledast</math>を定義する。これは本項独自の記法である。但し、<math>(\mathbf{P})_{ij}</math>は行列 <math>\mathbf{P}</math>の第ij成分を表す。
この記法を用いると、ヤコビ行列<math>\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}}</math>は<math>\nabla \circledast \boldsymbol{a}</math>と表すことができる。
則ち、ベクトル場の全微分は
:<math>d\boldsymbol{a} = (\nabla \circledast \boldsymbol{a}) d\boldsymbol{x}</math>
と表される。
これを形式的に
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}=\nabla \circledast \boldsymbol{a}</math>
と書き表すことができる。
則ち、ヤコビ行列はベクトル場のベクトル変数による導関数と見做せる。
ヤコビ行列はベクトル場の成分スカラー場に対する勾配ベクトルを行に並べたものという解釈もできるので、この考え方は自然である。
ここでベクトル場に対してスカラー場と同様に方向微分係数・方向導関数を考えると、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}\boldsymbol{v}</math>
が成り立つことが判る。
これもベクトル場の成分スカラー場に対する方向微分係数・方向導関数を列に並べたベクトルと解釈できる。
則ち、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
である。
===発散===
ベクトル場<math>\boldsymbol{a}=\boldsymbol{a}(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\boldsymbol{a}\in C^1</math>のとき、
:<math>\mathrm{div}\,\boldsymbol{a} := \frac{\partial{a_x}}{\partial{x}} + \frac{\partial{a_y}}{\partial{y}} + \frac{\partial{a_z}}{\partial{z}}</math>
を<math>\boldsymbol{a}</math>の'''発散'''(divergence)と定義する。
発散が用いられる概念としては、'''ガウスの法則'''が有名である。
:電荷密度<math>\rho</math>、電場<math>\boldsymbol{E}</math>、真空の誘電率<math>\varepsilon_0</math>として
:<math>\mathrm{div}\,\boldsymbol{E}=\frac{\rho}{\varepsilon_0}</math>
球面座標で考えることにより、この式の重要な性質「荷電粒子の座標を原点にとると原点以外では
<math>\mathrm{div}\,\boldsymbol{E}=0</math>」を証明することができる。
勾配と同様に発散をナブラで表すことを考えると、
:<math>\mathrm{div}\,\boldsymbol{a}=\nabla\cdot\boldsymbol{a}</math>
という表式を得る。
<math>\boldsymbol{a}</math>はベクトル場なのでベクトル量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その内積<math>\nabla\cdot\boldsymbol{a}</math>はスカラー量であることが見て取れる。
発散に対しては以下が成り立つ。
#<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>(線型性)
#<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は内積の線型性より、後者は成分演算と勾配の定義より示される。
ヤコビ行列<math>\nabla\circledast\boldsymbol{a}</math>との関係を考える。
:<math>\nabla\circledast\boldsymbol{a}=\begin{pmatrix} \frac{\partial{\boldsymbol{a}}}{\partial{x}} & \frac{\partial{\boldsymbol{a}}}{\partial{y}} & \frac{\partial{\boldsymbol{a}}}{\partial{z}} \end{pmatrix}=\begin{pmatrix} \frac{\partial{a}_x}{\partial{x}} & \frac{\partial{a}_x}{\partial{y}} & \frac{\partial{a}_x}{\partial{z}} \\ \frac{\partial{a}_y}{\partial{x}} & \frac{\partial{a}_y}{\partial{y}} & \frac{\partial{a}_y}{\partial{z}} \\ \frac{\partial{a}_z}{\partial{x}} & \frac{\partial{a}_z}{\partial{y}} & \frac{\partial{a}_z}{\partial{z}} \end{pmatrix}</math>
ここで跡が発散そのものになっているので
:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
が成り立つ。
発散の物理的意味を考える。
:密度<math>\rho</math>が一定である流体の速度場<math>\boldsymbol{v}\in\mathbb{R}^3</math>に対し、微小直方体に出入りする流体の質量収支を考える。
:点<math>(x,y,z)</math>に於ける流速<math>\boldsymbol{v}(x,y,z)=(v_x,v_y,v_z)</math>、直方体の各辺の長さを<math>\delta x, \delta y, \delta z</math>とする。
:単位時間あたりに<math>yz</math>平面に平行な面を通過する流体の質量収支は流出量<math>-\rho v_x(x,y,z)\delta y\delta z</math>、流入量<math>\rho v_x(x+\delta x,y,z)\delta y\delta z</math>より
::<math>\rho(v_x(x+\delta x,y,z)-v_x(x,y,z))\delta y\delta z=\rho\frac{v_x(x+\delta x,y,z)-v_x(x,y,z)}{\delta x}\delta x\delta y\delta z</math>
:<math>\delta x\to0</math>の極限で
::<math>=\rho\frac{\partial{v_x}}{\partial{x}}dxdydz</math>
:他の面で考えると対称性から輪環の順に入れ替えた結果を得るので直方体全体では
::<math>\rho\left(\frac{\partial{v_x}}{\partial{x}}+\frac{\partial{v_y}}{\partial{y}}+\frac{\partial{v_z}}{\partial{z}}\right)dxdydz</math>
:よって単位体積当たりでは
::<math>\rho\nabla\cdot\boldsymbol{v}</math>
:を得る。
ここで質量を密度で割ると体積なので、<math>\nabla\cdot\boldsymbol{v}</math>は単位時間あたりの流体の体積の正味の流出率を表す。
この微小直方体の単位体積あたりで観測すると、発散が正であれば流体は膨脹して密度が下がり、負であれば圧縮されて密度が上がる。0であれば流体は膨脹も圧縮もしない。
発散が零であるベクトル場を'''非圧縮/湧出無し/管状/ソレノイダル ベクトル場'''(incompressible/solenoidal vector field)などと呼ぶ。
また、ベクトル場の発散を'''湧き出し'''(「沸き出し」とも書く)と呼ぶ場合もある。
ベクトル場の流線に沿う流れが流体の体積を保存する条件はベクトル場が非圧縮であることである。これを'''リウヴィルの定理'''という。これは多くの場合、[[解析力学]]のハミルトン形式で表示される。
位置ベクトル場<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>に対して<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}</math>を考える。
:<math>\frac{\partial}{\partial{x}}\frac{1}{\|\boldsymbol{r}\|^n}=\frac{\partial{\left(\frac{1}{\|\boldsymbol{r}\|^n}\right)}}{\partial{\|\boldsymbol{r}\|}}\frac{\partial{\|\boldsymbol{r}\|}}{\partial{x}}=-\frac{n}{\|\boldsymbol{r}\|^n+1}\frac{x}{\sqrt{x^2+y^2+z^2}}=-\frac{nx}{\|\boldsymbol{r}\|^{n+2}}</math>
<math>y, z</math>も同様なので
:<math>\nabla\frac{1}{\|\boldsymbol{r}\|^n}=-\frac{n\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+1}}</math>
よって発散のライプニッツ則から
:<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}=\left(\nabla\frac{1}{\|\boldsymbol{r}\|^n}\right)\cdot\boldsymbol{r}+\frac{1}{\|\boldsymbol{r}\|^n}\nabla\cdot\boldsymbol{r}=-\frac{n\boldsymbol{r}\cdot\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+2}}+\frac{1+1+1}{\|\boldsymbol{r}\|^n}=\frac{3-n}{\|\boldsymbol{r}\|^n}</math>
この結果から、<math>\boldsymbol{a}/\!\!/\boldsymbol{r}\land\|\boldsymbol{a}\|\propto \frac{1}{\|\boldsymbol{r}\|^2}\implies\nabla\cdot\boldsymbol{a}=0</math>(逆二乗則に従う場は非圧縮ベクトル場)が成り立つ。
ベクトル解析の黎明期では発散の逆符号で表される
:<math>\mathrm{conv}\,\boldsymbol{a}:=-\frac{\partial{a_x}}{\partial{x}} - \frac{\partial{a_y}}{\partial{y}} - \frac{\partial{a_z}}{\partial{z}}</math>
という量が用いられていた。これは'''吸い込み'''(convergence)と呼ばれる量である。
ベクトルが発明される以前、ベクトル演算に相当するものは[[多元数/四元数|四元数]]で記述されていた。純虚四元数同士の積をとると実部が現在で言う内積の-1倍、虚部が現在で言う外積に対応する。このことから、内積そのものである湧き出しではなく内積の-1倍である吸い込みが自然に出現する量として頻繁に扱われていたのである。
===回転===
回転運動は、以下の3つにより一意に定まる。
*回転軸の方向
*回転の速さ
*回転方向(軸に対して右回転か左回転か)
「回転方向」は暗黙の諒解として右手系の正の回転角で考える。すると、回転運動を表すのに必要な情報は「方向」と「速さ(=スカラー量)」のみとなる。
従って、'''任意の回転運動はベクトルで表示される'''(ベクトルの大きさは「回転の速さ」で定める)。このようなベクトルを'''角速度ベクトル'''という。
ベクトル場の'''回転'''(curl/rotation/rotor)を以下のように定義する。
:<math>\mathrm{curl} \, \boldsymbol{a} = \mathrm{rot} \, \boldsymbol{a} = \begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
<math>\mathrm{curl}</math>は理学系、<math>\mathrm{rot}</math>は工学系が好んで使用する。
<math>z</math>軸方向の成分について考える。
<math>z</math>軸方向の回転はフレミングの左手の法則から<math>xy</math>平面内の成分のみが寄与すると考えられる。<math>z</math>軸の正方向の回転を生むには、<math>x</math>軸方向の変化率を大きくして<math>y</math>軸方向の変化率を小さくすればよい。
ある軸方向の変化率とはその軸の変数に関する偏導関数のことであったので、回転のz成分を<math>\frac{\partial{X_y}}{\partial{x}}-\frac{\partial{X_x}}{\partial{y}}</math>とすれば満足する。
対称性より輪環の順で入れ替えても同様であるので、回転は上の式で表されるとわかる。
これはより厳密には後述の線積分を用いて説明することになるので、ここでは定性的な説明に留めた。
回転を用いた概念として、ファラデーの電磁誘導の法則が有名である。
:電場<math>\boldsymbol{E}</math>、磁束密度<math>\boldsymbol{B}</math>として
:<math>\mathrm{rot} \, \boldsymbol{E} = -\frac{\partial{\boldsymbol{B}}}{\partial{t}}</math>
流体の渦の記述にも応用されており、回転を'''渦度ベクトル'''とも呼ぶ。流体力学的な渦の定義は「速度場の回転」である。
回転が零ベクトルであるベクトル場を'''非回転的/渦無し/層状/ラメラー ベクトル場'''(irrotational/lamella vector field)などと呼ぶ。
勾配・発散と同様に空間偏微分演算子による表記を考える。
成分に着目すると外積の形式なので、
:<math>\mathrm{curl} \, \boldsymbol{a}= \nabla \times \boldsymbol{a}</math>
と表されることが判る。
ベクトル場はベクトル量であり、ナブラは便宜的にベクトル量と見做すことから、その外積である回転はベクトル量であることが見て取れる。
外積の性質から、回転は行列式
:<math>\det \begin{pmatrix} \boldsymbol{e}_x & \boldsymbol{e}_y & \boldsymbol{e}_z \\ \frac{\partial}{\partial{x}} & \frac{\partial}{\partial{y}} & \frac{\partial}{\partial{z}} \\ a_x & a_y & a_z \end{pmatrix}</math>
でも表示される。
回転に対しては以下が成り立つ。
#<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>(線型性)
#<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は外積の線型性より、後者は成分演算と勾配の定義より示される。
回転は常に角速度ベクトルと一致するとは限らない。そのため、必ずしも回転運動そのものを記述しない。
回転は、ヤコビ行列を用いると以下のように表される。
:<math>\mathrm{rot} \, \boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
:ここで<math>\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})</math>は反対称行列であり、<math>\mathrm{axl}</math>は反対称行列を軸ベクトルに移す写像である。
===ラプラシアン===
上で見てきた勾配・発散・回転はいずれも一階の偏微分作用素であった。
二階偏微分作用素のうち最もよく使われているのがスカラー場に対して勾配の発散をとる演算である。
:<math>\nabla\cdot(\nabla\varphi) = \mathrm{div}(\mathrm{grad}\,\varphi)</math>
ここで<math>(\nabla\cdot\nabla)\varphi</math>を計算してみると成分計算から上の<math>\nabla\cdot(\nabla\varphi)</math>に等しいことが容易に判る。則ち、発散作用素<math>\nabla\cdot\,\,</math>、勾配作用素<math>\nabla</math>、スカラー場<math>\varphi</math>の間に結合法則が成り立ってると見做せる。
そこで、<math>\nabla\cdot\nabla</math>を独立した演算子として考えることにする。
以下のように定義される演算子を'''ラプラス演算子'''(ラプラス作用素)という。
:<math>\text{∆}:=\nabla\cdot\nabla=\frac{\partial^2}{\partial{x}^2}+\frac{\partial^2}{\partial{y}^2}+\frac{\partial^2}{\partial{z}^2}</math>
二項目は[[w:記号の濫用]]により<math>\nabla^2</math>と書かれることもある。
但し、<math>\text{∆}</math>は通常のデルタ(Unicode文字名: GREEK CAPITAL LETTER DELTA, U+394)ではなく'''増分記号'''(Unicode文字名:INCREMENT, U+2206)である(が通常のデルタで書かれることが多い)。
ラプラス演算子を<math>C^2</math>級スカラー場に作用させる操作(及びその結果として得るスカラー場)を'''ラプラシアン'''(Laplacian)という。
:<math>\text{∆}\varphi=\frac{\partial^2{\varphi}}{\partial{x}^2}+\frac{\partial^2{\varphi}}{\partial{y}^2}+\frac{\partial^2{\varphi}}{\partial{z}^2}</math>
スカラー場のラプラシアンは各成分方向の曲率の和、すなわちスカラー場の各点に於ける突出・沈み込みの度合いを表す。
勾配・発散・回転・ラプラシアンを総称して'''空間微分'''と呼ぶ。
ラプラシアンは[[解析学基礎/偏微分方程式|偏微分方程式]]の記述に用いられている。
:'''ラプラス方程式'''・'''ポテンシャル方程式''':<math>\text{∆}\varphi=0</math>
:'''ポアソン方程式''':<math>\text{∆}\varphi=f</math>
:'''熱伝導方程式'''・'''拡散方程式''':<math>\text{∆}\psi=k\frac{\partial{\psi}}{\partial{t}}+g</math>
:'''波動方程式''':<math>\text{∆}\psi=\frac{1}{\nu^2}\frac{\partial^2{\psi}}{\partial{t}^2}</math>
:'''ヘルツホルム方程式''':<math>\text{∆}\varphi=-l^2\varphi</math>
ここで<math>\varphi=\varphi(x,y,z),\,f=f(x,y,z),\,\psi=\psi(x,y,z,t),\,k>0,\,g=g(x,y,z,t),\,\nu>0,\,l\in\mathbb{R}</math>である。
なお、ラプラス方程式の解を'''調和関数'''という。
<math>C^2</math>級ベクトル場のラプラシアンは以下のように定義される。
:<math>\text{∆}\boldsymbol{a}=\begin{pmatrix} \text{∆}a_x \\ \text{∆}a_y \\ \text{∆}a_z \end{pmatrix}</math>
ここでスカラー場と同様に考えて<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})</math>としたいところではあるが、これは一般には成り立たない。
実際には以下のように表示される。
:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})=\mathrm{grad}(\mathrm{div}\,\varphi)-\mathrm{rot}(\mathrm{rot}\,\varphi)</math>
*証明
:対称性より<math>x</math>成分のみ考えても輪環の順に入れ替えれば他の成分を得る。
::<math>\nabla\cdot\boldsymbol{a}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}</math>
:より
::<math>\{\nabla(\nabla\cdot\boldsymbol{a})\}_x=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}</math>
:また、
::<math>\nabla\times\boldsymbol{a}=\begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
:より
::<math>\{\nabla\times(\nabla\times\boldsymbol{a})\}_x=\frac{\partial}{\partial{y}}\left(\frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}\right)-\frac{\partial}{\partial{z}}\left(\frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}\right)</math>
::<math>=\frac{\partial^2{a_y}}{\partial{y}\partial{x}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{z}\partial{x}}-\frac{\partial^2{a_x}}{\partial{z}^2}</math>
:<math>\boldsymbol{a}\in{C^2}</math>より偏微分は可換(シュワルツの定理)なので、<math>\{\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})\}_x</math>を計算すると
::<math>\left(\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}\right)-\left(\frac{\partial^2{a_y}}{\partial{x}\partial{y}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}-\frac{\partial^2{a_x}}{\partial{z}^2}\right)</math>
::<math>=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_x}}{\partial
{y}^2}+\frac{\partial^2{a_x}}{\partial{z}^2}</math>
::<math>=\text{∆}a_x</math>//
ここから判るように、ベクトル場<math>\boldsymbol{a}</math>に対して<math>\text{∆}=\nabla(\nabla\cdot)</math>が成り立つ条件は<math>\nabla\times(\nabla\times\boldsymbol{a})=\boldsymbol{0}</math>である。<math>\boldsymbol{a}</math>が非回転ベクトル場であれば回転が零ベクトルなのでこの形を必ず満足する。但し、この形を満たすベクトル場が全て非回転的ベクトル場であるとは限らない。
則ち、外積の反復と同様に回転演算子<math>\nabla\times\,\,</math>の反復に対して結合法則は不成立である。
歴史的な四元数表記では発散の代わりに吸い込みが用いられていたことからラプラシアンも現在とは反対の符号で計算されていた。ラプラシアンはユークリッド空間に限らず定義可能であるが、その中でも特に重要なのは[[特殊相対論#マクスウェルの方程式|相対性理論]]で用いられる'''ダランベール演算子'''(ダランベルシアン、クアブラ、波動演算子)である。
:<math>\text{⧠}:=\frac{1}{\nu^2}\frac{\partial^2}{\partial{t^2}}-\text{∆}</math>
これは標準座標系で表されるミンコフスキー空間上のラプラシアンに相当する。<math>\text{∆}</math>は上で扱ってきた通常のラプラシアンのことである。
これを用いると波動方程式は<math>\text{⧠}\psi=0</math>というミンコフスキー空間上のラプラス方程式と解釈される。つまり、波動関数はミンコフスキー空間で見れば調和関数なのである。
また、[[w:クライン=ゴルドン方程式]]と呼ばれる偏微分方程式は
:<math>\text{⧠}\psi=-\mu^2\psi</math>
というミンコフスキー空間上のヘルツホルム方程式と解釈される。
===微分定理===
ここでは、ナブラに関する公式を見ていく。以下、シュワルツの定理が成り立っているものとする。また、成分計算をすればいいだけなので証明は省略する。
既に紹介したものを以下に並べる。
#勾配
#:<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>
#:<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(
#:<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>
#:<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>
#:<math>\frac{\partial{\varphi}}{\partial{\boldsymbol{e}}}=(\boldsymbol{e}\cdot\nabla)\varphi</math>
#:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
#発散
#:<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>
#:<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>
#:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
#回転
#:<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>
#:<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>
#:<math>\nabla\times\boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
#ラプラシアン
#:<math>\text{∆}\varphi=\nabla\cdot(\nabla\varphi)</math>
#:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})</math>
二つのベクトル場<math>\boldsymbol{a}, \boldsymbol{b}</math>の内積・外積に対してそれぞれ一階の空間微分を考えてみる。
<math>\boldsymbol{a}\cdot\boldsymbol{b}</math>はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\boldsymbol{a}\cdot\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}+(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}\times(\nabla\times\boldsymbol{b})+\boldsymbol{b}\times(\nabla\times\boldsymbol{a})</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\boldsymbol{a}\times\boldsymbol{b})=\boldsymbol{b}\cdot(\nabla\times\boldsymbol{a})-\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\nabla\times(\boldsymbol{a}\times\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}-(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}(\nabla\cdot\boldsymbol{b})-\boldsymbol{b}(\nabla\cdot\boldsymbol{a})</math>
次に、一階の空間微分の結果に対して更なる一階の空間微分を考えてみる。
スカラー場の勾配はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\varphi)=\text{∆}\varphi</math>
:<math>\nabla\times(\nabla\varphi)=\boldsymbol{0}</math>
ベクトル場の発散はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\nabla\cdot\boldsymbol{a})=\text{∆}\boldsymbol{a}+\nabla\times(\nabla\times\boldsymbol{a})</math>
ベクトル場の回転はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\times\boldsymbol{a})=0</math>
:<math>\nabla\times(\nabla\times\boldsymbol{a})=\nabla(\nabla\cdot\boldsymbol{a})-\text{∆}\boldsymbol{a}</math>
則ち、勾配・発散・回転はどの組み合わせでも交換法則が成り立たない。
一階の空間微分の結果に対してラプラシアンを考えてみる。
:<math>\text{∆}(\nabla\varphi)=\nabla(\text{∆}\varphi)</math>
:<math>\text{∆}(\nabla\cdot\boldsymbol{a})=\nabla\cdot(\text{∆}\boldsymbol{a})</math>
:<math>\text{∆}(\nabla\times\boldsymbol{a})=\nabla\times(\text{∆}\boldsymbol{a})</math>
ラプラシアンはスカラー性・ベクトル性を保存するので、演算が破綻する箇所はない。
則ち、ラプラシアンは勾配・発散・回転との組み合わせに対して交換法則が成り立つ。
:<math>\text{∆}\nabla=\nabla\text{∆},\quad\text{∆}(\nabla\cdot)=(\nabla\cdot)\text{∆},\quad\text{∆}(\nabla\times)=(\nabla\times)\text{∆}</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>及び<math>\nabla\times\boldsymbol{a}</math>の発散・回転は三重積の形であった。
スカラー三重積・ベクトル三重積にナブラを様々な組み合わせで入れてその結果がどうなるか見ていく。
:<math>\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\boldsymbol{a}\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すればいいので公式化する必要が無い。
:<math>\boldsymbol{a}\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>\boldsymbol{a}\times(\boldsymbol{b}\times\nabla)</math>
:<math>\nabla\cdot(\boldsymbol{a}\times\nabla)</math>
:<math>\nabla\times(\boldsymbol{a}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>\boldsymbol{a}\cdot(\nabla\times\nabla)</math>
:<math>\boldsymbol{a}\times(\nabla\times\nabla)</math>
:<math>\nabla\cdot(\nabla\times\nabla)</math>
:<math>\nabla\times(\nabla\times\nabla)</math>
は同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。<br>
また、三重積の公式はナブラを代入した時点で破綻する。
次に、スカラー四重積・ベクトル四重積に対しても同様のことを考える。
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\nabla\times\boldsymbol{a})\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すれば良いので公式化する必要が無い。
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\boldsymbol{c}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\boldsymbol{c}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\times(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>(\nabla\times\nabla)\cdot(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\nabla\times\nabla)\times(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\nabla)</math>
及びナブラを三個以上含むものは同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。
故に、ここで問題になるのは
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})</math>
の扱いである。
これらには以下の公式が成り立つ。
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})=\boldsymbol{a}\cdot\{\nabla\times(\boldsymbol{b}\times\boldsymbol{c})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})=[\{\boldsymbol{b}\cdot(\nabla\times\boldsymbol{c})\}-\{\boldsymbol{c}\cdot(\nabla\times\boldsymbol{b})\}]\boldsymbol{a}+{}^t\!\{\nabla\circledast(\boldsymbol{b}\times\boldsymbol{c})\}\boldsymbol{a}</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})=\boldsymbol{a}\cdot\{\nabla\times(\nabla\times\boldsymbol{b})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})={}^t\!\{\nabla\circledast(\nabla\times\boldsymbol{b})\}\boldsymbol{a}</math>
===ポテンシャル論===
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすスカラー場<math>\varphi\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0}</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を満たすならば<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>となるスカラー場<math>\varphi\in C^2</math>はどのようなときに存在するのであろうか?
ここで<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>は成分表示すれば
:<math>\begin{cases} \frac{\partial{a}_z}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}}=0 \\ \frac{\partial{a}_x}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}=0 \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}=0 \end{cases}</math>
という一階線型連立偏微分方程式となる。
この連立偏微分方程式は領域<math>D=\mathrm{dom}\,\boldsymbol{a}</math>上で解くことになるので、解が<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすかは領域<math>D</math>がどのような形状をしているかに依存する。
そして、その形状を具体的に与えるのが次の定理である。
{{定理|(ポアンカレの補題1)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0} \iff \exist \varphi\in C^2(D),\quad \mathrm{grad}\,\varphi=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が単連結であることである。
{{定理終わり}}
証明は後述する。
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''スカラーポテンシャル'''(scalar potential)といい、スカラーポテンシャルを有するベクトル場を'''保存的ベクトル場'''(保存場、conservative vector field)という。
保存的ベクトル場に対して実際にスカラーポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{grad}\,\varphi=\boldsymbol{a},\quad\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{\varphi}}{\partial{x}}=a_x \\ \frac{\partial{\varphi}}{\partial{y}}=a_y \\ \frac{\partial{\varphi}}{\partial{z}}=a_z \end{cases},\quad\begin{cases} \frac{\partial{a}_z}{\partial{y}}=\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a}_x}{\partial{z}}=\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}=\frac{\partial{a_x}}{\partial{y}} \end{cases}</math>
:<math>\frac{\partial{\varphi}}{\partial{x}}=a_x(x,y,z)</math>は直接積分形偏微分方程式なので両辺を<math>x</math>で偏積分して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z) dx+g(y,z)</math>・・・(1)
:これを<math>y</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{y}}=\frac{\partial}{\partial{y}}\int_m^x a_x(x,y,z)dx+\frac{\partial{g}}{\partial{y}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\int_m^x \frac{\partial{a_x}}{\partial{y}}dx+\frac{\partial{g}}{\partial{y}}</math>
:更に回転の条件から
::<math>=\int_m^x \frac{\partial{a_y}}{\partial{x}}dx+\frac{\partial{g}}{\partial{y}}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_y(x,y,z)-a_y(m,y,z)+\frac{\partial{g}}{\partial{y}}</math>
:これが<math>a_y(x,y,z)</math>に等しいので
::<math>\frac{\partial{g}}{\partial{y}}=a_y(m,y,z)</math>
:これは<math>g(y, z)</math>が<math>x</math>の関数でないことに適する。
:両辺を<math>y</math>で偏積分して
::<math>g(y, z)=\int_n^y a_y(m,y,z)dy+h(z)</math>
:これを(1)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+h(z)</math>・・・(2)
:これを<math>z</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{z}}=\frac{\partial}{\partial{z}}\left(\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy\right)+\frac{\partial{h}}{\partial{z}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\left(\int_m^x\frac{\partial{a_x(x,y,z)}}{\partial{z}}dx+\int_n^y\frac{\partial{a_y(m,y,z)}}{\partial{z}}dy\right)+\frac{dh}{dz}</math>
:更に回転の条件から
::<math>=\left(\int_m^x\frac{\partial{a_z(x,y,z)}}{\partial{x}}dx+\int_n^y\frac{\partial{a_z(m,y,z)}}{\partial{y}}dy\right)+\frac{dh}{dz}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_z(x,y,z)-a_z(m,y,z)+a_z(m,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
::<math>=a_z(x,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
:これが<math>a_z(x,y,z)</math>に等しいので
::<math>\frac{dh}{dz}=a_z(m,n,z)</math>
:これは<math>h(z)</math>が<math>x, y</math>の関数でないことに適する。
:両辺を<math>z</math>で常積分して
::<math>h(z)=\int_l^z a_z(m,n,z)dz+C</math>
:これを(2)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>//
ここで最後の積分定数<math>C</math>は勾配をとるときに消える。更に言うと、単連結領域では偏微分方程式の解の一意性よりスカラーポテンシャルは積分定数の違いを除いて一意に定まる。よって、スカラーポテンシャルは平行移動を同一視する同値類として与えられることになる。
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>を満たすベクトル場<math>\boldsymbol{A}\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{div}\,\boldsymbol{a}=0</math>を満たすならば<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>となるスカラー場<math>\boldsymbol{A}\in C^2</math>はどのようなときに存在するのであろうか?
これも同様に以下の定理で与えられる。
{{定理|(ポアンカレの補題2)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{div}\,\boldsymbol{a}=0 \iff \exist \boldsymbol{A}\in C^2(D),\quad \mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が'''可縮'''であることである。
{{定理終わり}}
証明は後述する。
ここで、集合が可縮とは「全体を1点に退化するような連続変形が可能である」ことを言う。可縮な集合は単連結である。可縮条件はより弱めることができるが、ホモトピーやコホモロジーの概念が必要である
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''ベクトルポテンシャル'''(vector potential)という。スカラーポテンシャルと異なり、「ベクトルポテンシャルを有するベクトル場」を指す特別な呼称は(数学界一般に認知されたものとしては)存在しない。「ソレノイダル場」などを用いる派閥もあるが、単に「発散が0であるベクトル場」を指す用法が強いのであまり広まっていない。
ベクトルポテンシャルを有するベクトル場に対して実際にベクトルポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a},\quad\mathrm{div}\,\boldsymbol{a}=0</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{A}_z}{\partial{y}}-\frac{\partial{A_y}}{\partial{z}}=a_x \\ \frac{\partial{A}_x}{\partial{z}}-\frac{\partial{A_z}}{\partial{x}}=a_y \\ \frac{\partial{A_y}}{\partial{x}}-\frac{\partial{A_x}}{\partial{y}}=a_z \end{cases},\quad \frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}} =0</math>
:第一式より
::<math>\frac{\partial{A_z}}{\partial{y}}=a_x+\frac{\partial{A_y}}{\partial{z}}</math>
:<math>y</math>で偏積分して
::<math>A_z = \int_n^y \left(a_x+\frac{\partial{A_y}}{\partial{z}}\right)dy+f(x,z)</math>
:ライプニッツの積分法則より
::<math>=\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)</math>・・・(3)
:第三式より
::<math>\frac{\partial{A_x}}{\partial{y}}=\frac{\partial{A_y}}{\partial{x}}-a_z</math>
:<math>y</math>で偏積分して
::<math>A_x=\int_n^y \left(\frac{\partial{A_y}}{\partial{x}}-a_z\right)dy+g(x, z)</math>
:ライプニッツの積分法則より
::<math>=\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)</math>
:これと(3)を第二式に代入して
::<math>a_y=\frac{\partial}{\partial{z}}\left(\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)\right)-\frac{\partial}{\partial{x}}\left(\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)\right)</math>
::<math>=\frac{\partial^2}{\partial{z}\partial{x}}\int_n^yA_ydy-\frac{\partial}{\partial{z}}\int_n^y a_z dy+\frac{\partial{g}}{\partial{z}}-\frac{\partial}{\partial{x}}\int_n^y a_x dy-\frac{\partial^2}{\partial{x}\partial{z}}\int_n^y A_y dy-\frac{\partial{f}}{\partial{x}}</math>
::<math>=\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}-\int_n^y \left(\frac{\partial{a_z}}{\partial{z}}+\frac{\partial{a_x}}{\partial{x}}\right)dy</math>
:よって
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=a_y+\int_n^y \left(\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_z}}{\partial{z}}\right) dy</math>・・・(4)
:この右辺を<math>h(x, y, z)</math>とおくと
::<math>\frac{\partial{h}}{\partial{y}}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}=0</math>
:なので<math>h(x,y,z)</math>は<math>y</math>に依存しない<math>h(x,z)</math>である。
:これは(4)の左辺が<math>y</math>に依存しないことと整合する。
:故に(4)は
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=h(x,z)</math>
:という二変数の偏微分方程式に落ちる。
:この偏微分方程式は例えば<math>f(x,z)=0, g(x,z)=\int_l^z h(x,z)dz</math>のような特殊解を持つ。
:このような特殊解によって構成された元の方程式の解を<math>\boldsymbol{A}_0</math>とする。
:一般解<math>\boldsymbol{A}</math>と特殊解との差を<math>\boldsymbol{B}</math>と置くとその回転は回転の線型性より<math>\boldsymbol{0}</math>なので
::<math>\begin{cases} \frac{\partial{B}_z}{\partial{y}}=\frac{\partial{B_y}}{\partial{z}} \\ \frac{\partial{B}_x}{\partial{z}}=\frac{\partial{B_z}}{\partial{x}} \\ \frac{\partial{B_y}}{\partial{x}}=\frac{\partial{B_x}}{\partial{y}} \end{cases}</math>
:同様にして第一式・第三式を<math>y</math>で偏積分して第二式に代入すると積分定数に関して
::<math>\frac{\partial{F(x,z)}}{\partial{x}}=\frac{\partial{G(x,z)}}{\partial{z}}</math>
:を得る。
:これは全微分方程式が完全微分方程式である条件なので、
::<math>\mathrm{grad}\,\Phi=\begin{pmatrix} F(x,z) \\ G(x,z) \end{pmatrix}</math>
:なるスカラー場<math>\Phi</math>が存在する。
:則ち、求めるベクトルポテンシャルは<math>\boldsymbol{A}=\boldsymbol{A}_0+\nabla\Phi</math>//
ここで勾配の項は回転をとるときに<math>\mathrm{rot}(\mathrm{grad}\,\Phi)=\boldsymbol{0}</math>より消える。スカラーポテンシャルと同様に自由度が残るので、ベクトルポテンシャルはその自由度を無視した同値類で与えられる。
ポアンカレの補題1, 2に於ける領域<math>D</math>は互いに素ではない複数の領域の和集合<math>\bigcup_i D_i</math>であっても良い。但しポテンシャル場<math>\mathrm{p}</math>は各領域<math>D_i</math>に対して区分的に定義され、このとき互いに重なった領域<math>D_i\cap D_j</math>では任意の点<math>\boldsymbol{x}\in D_i\cap D_j</math>に対して<math>\mathrm{p}_i(\boldsymbol{x})=\mathrm{p}_j(\boldsymbol{x})</math>であることが導かれる。
ポアンカレの補題が成り立たない状況を考えると、この「重なった領域での単射性」が崩れる。則ち、ポテンシャル場は多価関数として振舞うのである。
ポテンシャルに関連した定理として、以下が成り立つ。
{{定理|(ヘルツホルムの定理)}}
ポアンカレの補題が成り立つ状況下に於いて、<math>C^1</math>級ベクトル場<math>\boldsymbol{a}</math>は<math>C^2</math>級スカラー場の勾配と<math>C^2</math>級ベクトル場の回転に[[w:直和分解]]('''ヘルツホルム分解''')できる。
則ち、任意の<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\boldsymbol{a}=\mathrm{grad}\,\varphi-\mathrm{rot}\,\boldsymbol{A}</math>
を満たす<math>\varphi, \boldsymbol{A}\in C^2(D)</math>が存在する。
{{定理終わり}}
*証明
:ポアソン方程式<math>\text{∆}\varphi=f</math>に対してラプラシアンの定義から
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=f</math>
:ここで右辺のスカラー関数<math>f</math>が<math>\boldsymbol{a}</math>の発散で与えられている場合を考えると
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=\mathrm{div}\,\boldsymbol{a}</math>
:発散の線型性より
::<math>\mathrm{div}(\mathrm{grad}\,\varphi-\boldsymbol{a})=0</math>
:ここでポアンカレの補題2を用いて
::<math>\mathrm{grad}\,\varphi-\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>//
この<math>\varphi, \boldsymbol{A}</math>をそれぞれ広義のスカラーポテンシャル・ベクトルポテンシャルと呼ぶ場合がある。
広義ポテンシャルに対して
:<math>\begin{cases} \mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0} \\ \mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0 \\ \mathrm{div}\,\boldsymbol{a}=\text{∆}\varphi \\ \mathrm{rot}\,\boldsymbol{a}=\mathrm{grad}(\mathrm{div}\,\boldsymbol{A})-\text{∆}\boldsymbol{A} \end{cases}</math>
が成立する。
広義ポテンシャルの組み合わせは一つには定まらない。成分毎で考えるとヘルツホルムの定理は三元連立偏微分方程式を与えるが、勾配で消える定数項と回転で消える勾配項を補正すると右辺の自由度は広義ポテンシャル2つ+補正項2つで4である。そこで、応用上は<math>\mathrm{div}\,\boldsymbol{A}=0</math>という条件('''クーロンゲージ条件''')を追加で課して一意に定めることが多い(これにより<math>\mathrm{rot}\,\boldsymbol{a}=-\text{∆}\boldsymbol{A}</math>が成り立つので)。
例えば、[[連続体力学]]に於ける弾性体の運動方程式(ナビエ-コーシー方程式)
:<math>\rho\frac{\partial^2{\boldsymbol{u}}}{\partial{t}^2}=(\lambda+\mu)\mathrm{grad}(\mathrm{div}\,\boldsymbol{u})+\mu\text{∆}\boldsymbol{u}</math>
をヘルツホルム分解とクーロンゲージ条件により解析すると
:<math>\begin{cases} \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\varphi=(\lambda+2\mu)\text{∆}^2\varphi \\ \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\boldsymbol{A}=\mu\text{∆}^2\boldsymbol{A} \end{cases}</math>
を得る。
更に<math>e=\text{∆}\varphi,\quad\boldsymbol{\omega}=-\text{∆}\boldsymbol{A}</math>と置くとこの2つの式は波動方程式である。ここから導かれる波は前者が縦波で後者が横波であるが、<math>\lambda+2\mu>\mu</math>より前者の方が伝播速度が大きい。則ち、中学理科のP波・S波の性質を導くことができた。
ナビエ-コーシー方程式に於いて定常状態を考えると<math>t</math>-微分の項が0になるので、<math>\text{∆}^2\boldsymbol{u}=0</math>を得る。このような形の偏微分方程式を'''重調和偏微分方程式'''という。
*応用問題
*:真空のマクスウェル方程式<math> \begin{cases}
\nabla\times\boldsymbol{E}&=-\frac{\partial{\boldsymbol{B}}}{\partial{t}}\\
\nabla\times\boldsymbol{H}&=\frac{\partial{\boldsymbol{D}}}{\partial{t}}\\
\nabla\cdot\boldsymbol{D}&=0\\
\nabla\cdot\boldsymbol{B}&=0\\
\end{cases}</math>と構成方程式<math>\begin{cases} \boldsymbol{D}=\varepsilon_0\boldsymbol{E} \\ \boldsymbol{B}=\mu_0\boldsymbol{H}\end{cases}</math>から電磁波の波動方程式<math>\begin{cases} \text{∆}\boldsymbol{E}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{E}}}{\partial{t}^2} \\ \text{∆}\boldsymbol{H}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{H}}}{\partial{t}^2} \end{cases}</math>及び光速<math>c=\frac{1}{\sqrt{\varepsilon_0\mu_0}}</math>を導け。
==空間積分==
ここでは三次元ユークリッド空間で考える。
===線積分===
偏積分
:<math>\int_a^b f(x,y) dx := \lim_{n \to \infty} \sum_{k=1}^{n} f(x_k,y) \Delta x</math>(<math>\Delta x = \frac{b-a}{n}, x_k = a + k\Delta x</math>)
は<math>xyz</math>空間を<math>y</math>を固定した平面で切った断面に於ける曲線<math>z=f(x, y)</math>と<math>x</math>軸、直線<math>x=a, x=b</math>の囲む符号付き面積であった。
このとき積分変数を各点で見ると<math>x</math>軸という直線上を<math>a\to b</math>と単調に進むことになるが、これを<math>xyz</math>空間の任意の曲線<math>C</math>に拡張することを考える。
三次元空間の曲線をベクトル表示すると
:<math>\boldsymbol{r}(t)=\begin{pmatrix} x(t) \\ y(t) \\ z(t) \end{pmatrix}\quad t\in [\alpha, \beta]</math>
であり、被積分関数はこの曲線上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
偏積分の<math>dx</math>は「<math>x</math>軸上の微小変位」であったが、<math>t</math>が単調なとき曲線に沿った微小変位は曲線上の移動距離、則ち弧長の微小量と考えられるので線素を用いて
:<math>dl=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
これらを総合すると、<math>C</math>に沿った積分というものは曲線のパラメータを用いて
:<math>\int_\alpha^\beta \varphi(\boldsymbol{r}(t))\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>C</math>に沿った'''線積分'''<sup>※</sup>(line integral)という。また、<math>C</math>を'''積分経路'''(積分路、path)という。
<small>※量子力学の[[量子力学#経路積分法|経路積分]](path integral)とは異なる概念である。</small>
スカラー場の線積分は
:<math>\int_C \varphi dl</math>
のように略記される。
特に積分経路が閉曲線('''閉経路''')である場合は
:<math>\oint_C \varphi dl</math>
のように書き、これを<math>C</math>に沿った'''周回/閉路 積分'''(closed line integral)という。
1の線積分<math>\int_C dl</math>は弧長に等しい。
<math>\varphi(\boldsymbol{r})</math>の<math>C</math>の端点に於ける値の差を考える。
<math>t\in[\alpha,\beta]</math>を各<math>t_i</math>に等分割したとき、スカラー関数のテイラー展開より
:<math>\varphi(\boldsymbol{r}(t_i))-\varphi(\boldsymbol{r}(t_{i-1}))=\nabla\varphi(\boldsymbol{r}_{t_i-1})\cdot d\boldsymbol{r}\big|_{t=t_i}+O\left(\left\|d\boldsymbol{r}\big|_{t=t_i}\right\|\right)</math>
なので
:<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))\fallingdotseq \sum_{i=1}^n \nabla\varphi(\boldsymbol{r}(t_{i-1}))\cdot d\boldsymbol{r}\big|_{t=t_i}</math>
右辺で分割数<math>n</math>を無限大に飛ばした極限は区分求積法より
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r}</math>
則ち、曲線<math>C</math>に沿った微分積分学の基本定理
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r} = \varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>
を得る。
これは一変数積分の<math>\int_a^b \frac{df}{dx}dx=f(b)-f(a)</math>に対応し、これは常積分に関する微分積分学の基本定理の別表現である。
左辺をスカラー場の線積分と同様に<math>\int_C \nabla\varphi\cdot d\boldsymbol{r}</math>と書くことにする。
ここで<math>\nabla\varphi</math>を一般のベクトル場<math>\boldsymbol{a}</math>に拡張して同様に
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}</math>
を考えてみたい。
ここで<math>d\boldsymbol{r}</math>は<math>\boldsymbol{r}</math>の全微分と解釈され、一変数関数なので
:<math>d\boldsymbol{r}=\frac{d\boldsymbol{r}}{dt}dt</math>
則ち、
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}=\int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\cdot\frac{d\boldsymbol{r}}{dt}dt</math>
という曲線のパラメータに関する積分に帰着された。
これをベクトル場<math>\boldsymbol{a}</math>の<math>C</math>に沿った'''線積分'''という。
<math>\frac{d\boldsymbol{r}}{dt}</math>は<math>C</math>の接線なので<math>\boldsymbol{a}(\boldsymbol{r})\cdot\frac{d\boldsymbol{r}}{dt}</math>は<math>\boldsymbol{a}</math>から<math>C</math>の接線に沿う沿流成分を取り出していることになる。
このことから、ベクトル場の線積分を特に'''接線積分'''(integral of tangential component)ということがある。
また、<math>d\boldsymbol{r}</math>のノルムを考えてみると
:<math>\|d\boldsymbol{r}\|=\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt=dl</math>
より線素に一致する。
このことから、<math>d\boldsymbol{r}</math>を'''線素ベクトル'''と呼び、<math>d\boldsymbol{l}</math>とも書く。
線素ベクトルは曲線上の微小変位を表すので座標軸上の微小変位の重ね合わせと考えれば
:<math>d\boldsymbol{l}=\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
よって接線積分は形式的に
:<math>\int_C (a_xdx+a_ydy+a_zdz)</math>
とも書かれる。
更に、弧長パラメトライズされている場合は接ベクトルを用いて
:<math>d\boldsymbol{l}=\boldsymbol{t}ds</math>
とも表せる。
接線積分で定義される概念としては、仕事が有名である。
:物体を経路<math>C</math>に沿って力<math>\boldsymbol{F}</math>で運んだときの仕事は摩擦や空気抵抗を無視すると
::<math>W=\int_C \boldsymbol{F}\cdot d\boldsymbol{r}</math>
また、アンペールの法則も線積分で示される。
:閉経路<math>C</math>で囲まれた領域を貫く電流の大きさ<math>I</math>とその電流が生む磁場<math>\boldsymbol{H}</math>に対して
::<math>\oint_C \boldsymbol{H}\cdot d\boldsymbol{l}=I</math>
更に、以下のような概念も定義されている。
:流体の速度場<math>\boldsymbol{v}</math>の循環は
::<math>\Gamma(C)=\oint_C \boldsymbol{v}\cdot d\boldsymbol{l}</math>
*応用問題
**運ばれる物体の質量を<math>m</math>としたとき、仕事の定義とニュートンの運動方程式<math>m\frac{d^2\boldsymbol{r}}{dt^2}=\boldsymbol{F}</math>を用いて運動エネルギーに関するエネルギーの原理<math>W=\frac{1}{2}mv^2-\frac{1}{2}mv_0^2</math>を証明せよ。
<math>C</math>が正の向きにパラメトライズされたとき、負の向きにパラメトライズされた曲線を<math>-C</math>と表した。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の始点が一致するとき、これを一つの曲線と見做して曲線の和
:<math>C_1+C_2</math>
が定義される。
これを'''区分的に定義された曲線'''という。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の終点が一致するとき、<math>C_1</math>を始点とすると曲線の差は
:<math>C_1-C_2=C_1+(-C_2)</math>
で定義される。
<math>C</math>が'''区分的に滑らか'''であるとは、<math>C</math>が有限個の滑らかな曲線の和であることである。
これらを踏まえると、線積分には以下の性質が成り立つ。
#スカラー場
#:<math>\int_C (k\varphi+l\psi) dl=k\int_C \varphi dl + l \int_C \psi dl</math>
#:<math>\int_{-C}\varphi dl = \int_C \varphi dl</math>
#:<math>\int_{C_1+C_2}\varphi dl = \int_{C_1}\varphi dl + \int_{C_2}\varphi dl</math>
#ベクトル場
#:<math>\int_C (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{l}=k\int_C \boldsymbol{a}\cdot d\boldsymbol{l}+l\int_C \boldsymbol{b}\cdot d\boldsymbol{l}</math>
#:<math>\int_{-C}\boldsymbol{a}\cdot d\boldsymbol{l} = -\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>
#:<math>\int_{C_1+C_2}\boldsymbol{a}\cdot d\boldsymbol{l} = \int_{C_1}\boldsymbol{a}\cdot d\boldsymbol{l} + \int_{C_2}\boldsymbol{a}\cdot d\boldsymbol{l}</math>
1番目の性質は線型性である。2番目の性質から、スカラー場の線積分に関しては任意の'''再パラメトライズ'''(パラメータの可逆な変数変換)、ベクトル場の線積分に関しては向き付けを保つ再パラメトライズに対して線積分の値が保存されることが判る。
保存的ベクトル場に対する線積分<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>はスカラーポテンシャル<math>\varphi</math>を用いて<math>\int_C \nabla\varphi\cdot d\boldsymbol{l}</math>と書けるので微分積分学の基本定理より<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>に等しい。
ここで<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>は曲線の端点にのみ依存し形状には依存しない。
そのため、'''線積分の値が積分経路に依存しない必要十分条件はベクトル場が保存的であること'''である。
ここで閉曲線である場合を考えると
:<math>\boldsymbol{r}(\alpha)=\boldsymbol{r}(\beta)</math>
より
:<math>\varphi(\boldsymbol{r}(\alpha))=\varphi(\boldsymbol{r}(\beta))</math>
なので
:<math>\oint_C \nabla\varphi\cdot d\boldsymbol{l}=0</math>
である。
逆に言うと、'''周回積分が0でない閉経路をとれるとき<math>\varphi</math>は<math>\boldsymbol{a}</math>のスカラーポテンシャルではない'''。
この事実は偏微分方程式を解いて求めたスカラーポテンシャルが実際にポテンシャルであるかどうかの確認に用いられる。
なお、先程求めたスカラーポテンシャルの一般式
:<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>
は線積分で表される。
具体的には、積分経路を<math>\gamma:(m,n,l)\to(m,n,z)\to(m,y,z)\to(x,y,z)</math>という3つの線分の和としてとれば
:<math>\varphi=\int_\gamma \boldsymbol{a}\cdot d\boldsymbol{l}+C</math>
である。
ここでスカラーポテンシャルとは勾配方程式
:<math>\nabla\varphi=\boldsymbol{a}</math>
の解だったので、'''線積分と勾配は逆演算'''である。
<math>\nabla\varphi\cdot d\boldsymbol{l}=d\varphi</math>より、スカラーポテンシャルの存在と完全微分方程式の対応がここからも得られる。また、完全微分方程式<math>d\varphi=0</math>の解は曲線を与えることも容易に判る。
仕事が線積分で定義されるという話をしたが、エネルギーの原理より力場がスカラーポテンシャルを有する(保存場)場合はエネルギー変化が移動経路に依存しないので力学的エネルギー保存法則が成り立つ。これが高校物理で扱った「保存力なら力学エネルギーが保存する」ことの正式な表現である。
ベクトル場の線積分はベクトル場と線素ベクトルの内積をとって積分していたが、外積をとって積分することもできる。
具体的には、
:<math>\boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} a_ydz-a_zdy \\ a_zdx-a_xdz \\ a_xdy-a_ydx \end{pmatrix}</math>
より
:<math>\int_C \boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} \int_C (a_ydz-a_zdy) \\ \int_C (a_zdx-a_xdz) \\ \int_C (a_xdy-a_ydx) \end{pmatrix}</math>
:<math>=\begin{pmatrix} \int_\alpha^\beta \left\{ a_y(\boldsymbol{r}(t))\frac{dz}{dt}-a_z(\boldsymbol{r}(t))\frac{dy}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_z(\boldsymbol{r}(t))\frac{dx}{dt}-a_x(\boldsymbol{r}(t))\frac{dz}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_x(\boldsymbol{r}(t))\frac{dy}{dt}-a_y(\boldsymbol{r}(t))\frac{dx}{dt} \right\}dt \end{pmatrix}</math>
これは物理学的にはビオ・サヴァールの法則の記述に用いられている。
:真空中で経路<math>C</math>を正の向きに流れる強さ<math>I</math>の定常電流・<math>C</math>上にない点<math>\mathrm{P}</math>・<math>C</math>上の点<math>\mathrm{Q}</math>に対し、<math>C</math>全体で生じる磁束密度<math>\boldsymbol{B}</math>の<math>\mathrm{P}</math>での値は真空の透磁率<math>\mu_0</math>として
::<math>\boldsymbol{B}(\mathrm{P})=\frac{\mu_0 I}{4\pi}\int_C \frac{\overrightarrow{\mathrm{PQ}}\times d\boldsymbol{l}}{\|\overrightarrow{\mathrm{PQ}}\|^3}</math>
応用例は乏しいが、スカラー場の線素ベクトルに関する積分、ベクトル場の線素に関する積分も同様に定義される。
:<math>\int_C \varphi d\boldsymbol{l} = \int_\alpha^\beta \varphi(\boldsymbol{r}(t))\frac{d\boldsymbol{r}}{dt}dt</math>
:<math>\int_C \boldsymbol{a} dl = \int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt</math>
これらはベクトル値である。
積分経路を流線上にとると、流線の定義から<math>d\boldsymbol{r}/\!\!/\boldsymbol{a}(\boldsymbol{r})</math>則ち一次従属なので、<math>d\boldsymbol{r}=k\boldsymbol{a}(\boldsymbol{r})</math>と書ける。
よって線積分の被積分関数は<math>\boldsymbol{a} \cdot d\boldsymbol{r} = k\|\boldsymbol{a}\|^2</math>となり、積分値が最大化される他、ベクトル場の沿流方向成分を抽出できる。実際に計算する際は、<math>\int_{\mathrm{streamline}} k\|\boldsymbol{a}\|^2</math>とは書かず、<math>\int_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>と書くのが望ましい(積分記号と積分微小要素はセットのため)。
流線が閉曲線である場合を考えると、<math>\oint_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>は閉曲線の正の向きで正、負の向きで負となるので0にはならない。そのため、流線が閉曲線であるベクトル場はスカラーポテンシャルを持たない。
===面積分===
線積分は常積分に於ける積分経路を任意の正則な<math>C^1</math>級曲線に拡張したものであった。同様に、二重積分に於ける積分領域を'''向き付けされた'''任意の<math>C^1</math>級曲面に拡張することを考える。
曲線に沿った微小量が線素で与えられたように、曲面に沿った微小量は面素で与えられる。故に、直観的には「面素に関して積分」すれば良いことが分かる。
三次元空間の曲面をベクトル表示すると
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} x(t, u) \\ y(t, u) \\ z(t, u) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D</math>
であり、被積分関数はこの曲面上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
面素は
:<math>dS=\sqrt{EG-F^2}dtdu=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
総合すると、<math>S</math>に沿った積分というものは曲面のパラメータを用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>S</math>に沿った'''面積分'''(曲面積分、surface integral)という。
今は三次元空間の場合を考えているので、外積を用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\left\|\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\| dtdu</math>
と表示しても良い。
スカラー場の面積分は
:<math>\iint_S \varphi dS</math>
のように略記される。
特に積分領域が閉曲面である場合は
:<math>\oiint_S \varphi dS</math>
のように書く。
1の面積分<math>\iint_S dS</math>は曲面積に等しい。
ベクトル場の線積分と同様にしてベクトル場の面積分
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
を考えたい。
線素ベクトルが「位置ベクトルの接線方向」で「ノルムが通常の線素と一致する」ように定義されたことを鑑みると、面素ベクトルは「位置ベクトルの法線方向」で「ノルムが通常の面素に一致する」ように定義するのが良いと考えられる。要するに、
:<math>d\boldsymbol{S}:=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>
としてみる。
ここで単位法線ベクトルを<math>\boldsymbol{n}</math>と置くと面素ベクトルは<math>\boldsymbol{n}dS</math>と表され、
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}=\iint_S (\boldsymbol{a}\cdot\boldsymbol{n})dS</math>
のようにスカラー場の面積分に帰着されることが判る。
これをベクトル場<math>\boldsymbol{a}</math>の<math>S</math>に沿った'''面積分'''という。
<math>\boldsymbol{a}\cdot\boldsymbol{n}</math>は<math>\boldsymbol{a}</math>から<math>S</math>の法線を横切る沿流成分を取り出していることになる。
このことから、ベクトル場の面積分を特に'''法線面積分'''(surface integral of the normal component)ということがある。
単位法線ベクトル<math>\boldsymbol{n}</math>は有向曲面に対して右手系を成し、各座標軸となす角度をそれぞれ<math>\alpha, \beta, \gamma</math>とすると通常の余弦関数で表されるベクトル<math>\begin{pmatrix} \cos \alpha \\ \cos \beta \\ \cos \gamma \end{pmatrix}</math>に等しい。これを'''方向余弦'''という。
方向余弦に関して、正射影を用いると以下が成り立つと判る。
:<math>\begin{cases} \cos\alpha dS = dydz \\ \cos\beta dS = dzdx \\ \cos\gamma dS = dxdy \end{cases}</math>
これを用いることで、面素ベクトルは
:<math>d\boldsymbol{S} = \boldsymbol{e}_x dydz + \boldsymbol{e}_y dzdx + \boldsymbol{e}_z dxdy = \begin{pmatrix} dydz \\ dzdx \\ dxdy \end{pmatrix}</math>
とも表される。
故に、法線面積分は形式的に
:<math>\iint_S(a_xdydz+a_ydzdx+a_zdxdy)</math>
とも書ける。
線積分と同様にベクトル場と面素ベクトルの外積、面素ベクトルのスカラー場倍、ベクトル場の面素倍をとって積分することも考えられるが、応用例に乏しい。
:<math>\iint_S \boldsymbol{a}\times d\boldsymbol{S}</math>
:<math>\iint_S \varphi d\boldsymbol{S}</math>
:<math>\iint_S \boldsymbol{a} dS</math>
これらはベクトル値である。
面素ベクトルは以下のように考えることもできる。
:平面<math>\Pi</math>上面積<math>A</math>の有界領域と<math>\Pi</math>の表向き法線<math>\boldsymbol{n}_\Pi</math>に対し、<math>\boldsymbol{A}=A\boldsymbol{n}_\Pi</math>を'''面積ベクトル'''と定義する。
:曲面<math>S</math>上の微小領域をとると曲面をその接平面で近似できるので平面上と同様にして面積ベクトルを定義できる。
:このとき、<math>A=dS</math>となるように定義した面積ベクトルが面素ベクトルである。
この考え方を用いると、
:<math>\oint_C d\boldsymbol{l}=\boldsymbol{0}</math>
及び
:<math>\oiint_S d\boldsymbol{S}=\boldsymbol{0}</math>
が示される。
面積分で定義される概念としては'''束'''<sup>※</sup>(flux)が有名である。
:流体の速度場<math>\boldsymbol{v}</math>に対し、<math>\iint_S \boldsymbol{v}\cdot d\boldsymbol{S}</math>は流束(単位時間当たりに<math>S</math>を通過する流体の流出量)である。
:磁束密度<math>\boldsymbol{B}</math>に対し、<math>\Phi_B=\iint_S \boldsymbol{B}\cdot d\boldsymbol{S}</math>は磁束である。
また、ガウスの法則も面積分で示される。
:ガウス面<math>S</math>が囲む電荷の総量を<math>q_\mathrm{inc}</math>とすると電束密度<math>\boldsymbol{D}</math>に対して
::<math>\oiint_S \boldsymbol{D}\cdot d\boldsymbol{S}=q_\mathrm{inc}</math>
<small>※数学界・物理界で「束」と呼ばれる対象は複数存在する。和訳されるときに「束」が充当されたものはここで扱う「flux」の他に「bundle(ファイバー束など)」「lattice([[束論]]の束)」「pencil(円束など)」「packet(波束など)」がある。</small>
<math>S</math>が表向きにパラメトライズされたとき、裏向きにパラメトライズされた曲面を<math>-S</math>と表した。
同じ向きを向く2つの曲面<math>S_1</math>と<math>S_2</math>の境界が一致するとき、これを一つの曲面と見做して曲面の和
:<math>S_1+S_2</math>
が定義される。
これを'''区分的に定義された曲面'''という。
<math>S</math>が'''区分的に滑らか'''であるとは、<math>S</math>が有限個の滑らかな曲面の和であることである。
これらを踏まえると、面積分には以下の性質が成り立つ。
#スカラー場
#:<math>\iint_S (k\varphi+l\psi) dS=k\iint_S \varphi dS + l \iint_S \psi dS</math>
#:<math>\iint_{-S}\varphi dS = \iint_S \varphi dS</math>
#:<math>\iint_{S_1+S_2}\varphi dS = \iint_{S_1}\varphi dS + \iint_{S_2}\varphi dS</math>
#ベクトル場
#:<math>\iint_S (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{S}=k\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}+l\iint_S \boldsymbol{b}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{-S}\boldsymbol{a}\cdot d\boldsymbol{S} = -\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{S_1+S_2}\boldsymbol{a}\cdot d\boldsymbol{S} = \iint_{S_1}\boldsymbol{a}\cdot d\boldsymbol{S} + \int_{S_2}\boldsymbol{a}\cdot d\boldsymbol{S}</math>
1番目の性質は線型性である。2番目の性質から、スカラー場の面積分に関しては任意の再パラメトライズ、ベクトル場の面積分に関しては向き付けを保つ再パラメトライズに対して面積分の値が保存されることが判る。
等位面に対する面積分を考える。曲面<math>S</math>がスカラー場<math>\omega</math>の等位面であるとき、その単位法線ベクトルは勾配を用いて
:<math>\boldsymbol{n}=\pm\frac{\nabla\omega}{\|\nabla\omega\|}</math>
と表される。右手系で考えるので正符号を採る。
等位面の方程式<math>\omega(x,y,z)=c</math>に対して陰関数定理が成り立つとすると陰関数<math>z=\psi(x,y)</math>を用いて<math>S:\boldsymbol{r}(x,y)=\begin{pmatrix} x \\ y \\ \psi(x,y) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in D</math>というモンジュ表示に落ちる。
よって
:<math>dS=\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
と
:<math>\boldsymbol{n}=\frac{\nabla\omega}{\|\nabla\omega\|}</math>
を用いて
:<math>\int_S \varphi dS = \int_D \varphi(x,y,\psi(x,y))\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
:<math>\int_S \boldsymbol{a}\cdot d\boldsymbol{S} = \int_D \boldsymbol{a}(x,y,\psi(x,y))\cdot\frac{\nabla\omega(x,y,\psi(x,y))}{\|\nabla\omega(x,y,\psi(x,y))\|}\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
を得る。
===体積分===
===積分定理===
==発展事項==
{{節stub}}
{{Advanced|多様体論}}
{{Advanced|微分幾何学}}
{{Advanced|積分幾何学}}
ここではベクトル解析の発展編及び微分幾何学の基礎編として、「ユークリッド空間の部分多様体上の微分幾何学」を扱う。言うなれば「<math>n</math>次元版のベクトル解析学」である。
===体積分再考===
体積分は先程「<math>\mathbb{R}^3</math>上の閉立体<math>V</math>」上で考えたが、実はここには線積分・面積分との大きな非対称性がある。
線積分は「曲線」、面積分は「曲面」を積分領域としたが、先程定義した体積分の積分領域は「平坦な立体」なのである(二次元で例えば楕円領域<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}\leq1</math>は境界こそ"曲線"だが空間そのものは<math>\mathbb{R}^2</math>という"平面"であることと同じ)。
1次元の曲がった空間である曲線<math>M^1:\boldsymbol{r}=\boldsymbol{r}(s)</math>が<math>\mathbb{R}^2</math>内、2次元の曲がった空間である曲面<math>M^2:\boldsymbol{r}=\boldsymbol{r}(s, t)</math>が<math>\mathbb{R}^3</math>内に存在するように、3次元の曲がった空間である曲立体<math>M^3:\boldsymbol{r}=\boldsymbol{r}(s, t, u)</math>は<math>\mathbb{R}^4</math>内に存在すると考えるのが自然である。ここで一般に<math>M^n\subset\mathbb{R}^{n+1}</math>が成り立つと予想され、この関係を「<math>M^n</math>の<math>\mathbb{R}^{n+1}</math>への'''埋め込み'''」と呼ぶことにする。
線積分を<math>C=M^1</math>、面積分を<math>S=M^2</math>で定義したように、体積分を<math>M^3</math>で定義することを考える。
媒介変数空間<math>\begin{pmatrix} s \\ t \\ u \end{pmatrix} \in V \subset\mathbb{R^3}</math>上の微小変化を考えると全微分を用いて
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds+\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
よって<math>V</math>上の微小立方体<math>dsdtdu</math>は3ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds,\quad\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt,\quad\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行六面体へ移される。
体素はこの微小平行六面体の体積と考えられるが、<math>\boldsymbol{r}\in\mathbb{R}^4</math>より当然この3ベクトルは4項ベクトルなので、'''外積を含んでいるスカラー三重積は使えない'''。
全微分を一次変換表記すると
:<math>d\boldsymbol{r}=\begin{pmatrix} \frac{\partial{\boldsymbol{r}}}{\partial{s}} & \frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\begin{pmatrix} \frac{\partial{x}}{\partial{s}} & \frac{\partial{x}}{\partial{t}} & \frac{\partial{x}}{\partial{u}} \\ \frac{\partial{y}}{\partial{s}} & \frac{\partial{y}}{\partial{t}} & \frac{\partial{y}}{\partial{u}} \\ \frac{\partial{z}}{\partial{s}} & \frac{\partial{z}}{\partial{t}} & \frac{\partial{z}}{\partial{u}} \\ \frac{\partial{w}}{\partial{s}} & \frac{\partial{w}}{\partial{t}} & \frac{\partial{w}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
ここでヤコビ行列は<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\in\mathbb{R}^{4\times3}</math>であって'''正方行列でないので行列式も求まらない'''。
そこで、[[線型代数学続論/種々の行列#随伴行列|グラム行列]]を利用することを考える。
'''グラム行列は必ず半正定値行列'''なので行列式は非負であり、平方根をとれる。
そのため、<math>\mathbf{G}:=\left(\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\right)^*\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>として<math>\sqrt{\det\mathbf{G}}</math>を体積拡大率とする。
これは正方行列ならヤコビアンの絶対値に一致する。
{{NavTop|title=補足:体積拡大率に一致する証明}}
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>の列ベクトルにグラム=シュミットの直交化法を適用すると[[線型代数学続論/行列分解|QR分解]]によって
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}=\mathbf{QR}\quad (\mathbf{Q}\in\mathbb{R}^{4\times3}, \mathbf{R}\in\mathbb{R}^{3\times3})</math>
よって
:<math>\mathbf{G}=(\mathbf{QR})^*\mathbf{QR}</math>
:<math>=\mathbf{R}^*\mathbf{Q}^*\mathbf{Q}\mathbf{R}</math>
:<math>=\mathbf{R}^*\mathbf{E}_3\mathbf{R}</math>(<math>\because\mathbf{Q}</math>は列ユニタリ行列)
:<math>=\mathbf{R}^*\mathbf{R}</math>
:<math>\therefore \sqrt{\det\mathbf{G}}=\sqrt{\det\left( \mathbf{R}^*\mathbf{R} \right)}=\sqrt{\left(\det\mathbf{R}\right)^2}=|\det\mathbf{R}|</math>
<math>\mathbf{Q}</math>は列ユニタリ行列なのでその一次変換は等長変換であり、全微分による拡大率は<math>\mathbf{R}</math>による拡大率と一致する。<br/>
則ち、<math>\sqrt{\det\mathbf{G}}</math>を拡大率としてとれる。//
{{NavBottom}}
よって体積分は
:<math>\iiint_{M^3} f(\boldsymbol{r})dM^3 = \iiint_{V} f(\boldsymbol{r}(s, t, u))\sqrt{\det\mathbf{G}}\,dsdtdu</math>
ここから、適切な媒介変数表示が存在するならば<math>M^n</math>上での体積分の計算に<math>\mathbb{R}^{n+1}\setminus M^n</math>の情報は入ってこず、<math>M^n</math>の情報のみで計算されると予想される。
実際、<math>M^n</math>に適切な媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})\quad(\boldsymbol{p}\in\mathbb{R}^n)</math>が存在するとき、全微分による一次変換の拡大率は同様にグラム行列式の平方根で与えられるので体積素は<math>dM^n = \sqrt{\det\mathbf{G}} \prod_{k=1}^{n}d\boldsymbol{p}_k</math>と書け、これは正しい。
なお、二次元の場合を考えると<math>\mathbf{G}=\mathbf{K}</math>より<math>dM^2=dS</math>であり、面素に一致する。一次元の場合を考えると<math>\mathbf{G}=\|d\boldsymbol{r}\|^2</math>より<math>dM^1=dl</math>であり、線素に一致する。
実は、体素だけでなく一般に角度や長さといった幾何学的な量は埋め込み先である<math>\mathbb{R}^{n+1}</math>の情報を全く必要とせず、<math>M^n</math>の情報だけで構成できることが知られている。このことは微分幾何学のうち[[w:リーマン幾何学|リーマン幾何学]]と呼ばれる分野で詳しく扱われる。
ここまで<math>M^n</math>を適切な媒介変数<math>\boldsymbol{p}\in\mathbb{R}^n</math>で表すことを強調してきたが、媒介変数表示を考えるということは<math>M^n</math>から媒介変数空間<math>U\subset\mathbb{R}^n</math>への射影<math>\pi:M^n\to U</math>を考えるということである。
ここで、この<math>\pi</math>が全単射ならば逆向きの射影<math>\pi^{-1}:U\to M^n</math>が存在してそれが媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})</math>となるわけであるが、これは以下のようにも捉えられる。
:<math>\pi</math>によって射影した平坦な空間で座標を設定すると、'''適切な逆変換<sup>※</sup>によって曲がった空間<math>M^n</math>上に(局所)座標系を与えることができる'''。
つまり、体積分を媒介変数空間に置換積分するということは、逆に体積分の元の表示が「<math>M^n</math>上の局所座標系に於ける積分」であることを示している。
※この適切な逆変換が存在する条件は'''陰関数定理そのもの'''である。
ここで、適切な媒介変数表示が存在するよう<math>M^n</math>に制限を課したものが、以下で扱う'''多様体'''である。
===多様体===
===微分形式===
[[線型代数学続論/外積代数]]も参照。
===リーマン計量===
===テンソル解析===
[[線型代数学続論/テンソル代数]]も参照。
===複素ベクトル解析===
[[複素解析学]]も参照。
{{DEFAULTSORT:へくとるかいせき}}
[[Category:解析学]]
[[Category:微分積分学]]
[[Category:ベクトル解析|かいせきかくきそ]]
e0dvmv33daiv7be93zrm9dpw8gmvxp8
304835
304827
2026-10-18T00:17:55Z
~2026-55692-88
92812
/* 体積分 */
304835
wikitext
text/x-wiki
{{Pathnav|数学|解析学|解析学基礎|frame=1}}
{{wikipedia|ベクトル解析}}
ここでは、ベクトル解析について解説する。[[物理数学I ベクトル解析]]も参照。
==前提知識==
ここでは、実数のみで考える。
===ベクトル===
[[高等学校数学C/ベクトル]]、[[線型代数学/ベクトル]]、[[解析学基礎/ベクトル]]などを参照。本項では、矢印を付した表記(<math>\vec{a}</math>など)と太字斜体による表記(<math>\boldsymbol{x}</math>など)を混用する。
===行列===
[[高等学校数学C/数学的な表現の工夫]]及び[[線形代数学]]・[[線型代数学続論]]の各ページを参照。本項では大文字の太字立体(<math>\mathbf{A}</math>など)で表記する。
===多変数解析===
[[解析学基礎/多変数関数の微積分]]を参照。
===領域===
<math>D\subset\mathbb{R}^n</math>と点<math>\boldsymbol{a}\in D</math>(位置ベクトル表記なので太文字斜体)に対し、集合<math>B_\varepsilon(\boldsymbol{a}) := \{ \boldsymbol{x} \in D \mid \| \boldsymbol{x} - \boldsymbol{a} \|<\varepsilon \}</math>を点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開球'''という。不等号を<math>\leqq</math>に変えたときは開区間↔閉区間と同様に'''閉球'''と呼ぶ。このとき、<math>D</math>のように<math>\mathbb{R}^n</math>の部分集合であって<math>\varepsilon</math>-開球を含むものを点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開近傍'''と呼ぶ。閉球を含むときは同様に'''閉近傍'''と呼ぶ。
<math>\forall \boldsymbol{a} \in U, \exist \varepsilon>0, B_\varepsilon(\boldsymbol{a})\subset U</math>を満たす<math>U\subset\mathbb{R}^n</math>を'''開集合'''と呼び、<math>V=\mathbb{R}^n\setminus U</math>を'''閉集合'''と呼ぶ。
注意点として、開集合と閉集合は排反ではない。則ち「開集合且つ閉集合」である集合が存在し(例えば<math>\mathbb{R}, \varnothing</math>)、「開集合でも閉集合でもない」集合も存在する(例えば<math>[0, 1)</math>)。
<math>M\subset\mathbb{R}^n</math>を含む最小の閉集合を<math>M</math>の'''閉包'''と呼び、<math>M^-, \bar{M}, \mathrm{Cl}(M)</math>などと表す。例えば有理数の稠密性より<math>\mathbb{Q}^-=\mathbb{R}</math>である。
閉包の性質として「閉包=集合の内部と境界の和集合(<math>M^- = \mathrm{Int}(M) \cup \partial{M}</math>)」がある。
集合<math>S\subset\mathbb{R}^n</math>に対して以下を満たす<math>\mathbb{R}^n</math>上開集合の組<math>(G_1, G_2)</math>が'''とれない'''とき、
#<math>G_1 \cap S = \varnothing \land G_2 \cap S = \varnothing</math>
#<math>S = (G_1 \cap S) \sqcup (G_2 \cap S)</math>
「<math>S</math>は'''連結'''である」または「<math>S</math>は'''連結集合'''」という(但し、<math>\sqcup</math>は[[w:非交和|非交和]])。
空でない開連結集合を'''領域'''という。
実は、高校数学や1年次の解析学で扱ってきた「領域」はこの定義を満たしていないことが多かった。これは、「領域」の歴史的な用法では「条件の解集合」という意味であって開性や連結性を要求しなかったためである。しかし、本項を含めた以降に登場する数学ではこの定義を満たしていることが前提条件となる。なお、ややこしいことに「積分領域」は従来通り「その上で積分を行う集合」という緩い意味で使われることが多いので、区別が必要である。
===右手系===
三次元空間の正規直交基底を<math>(\boldsymbol{e}_1, \boldsymbol{e}_2, \boldsymbol{e}_3)</math>と置く。螺子を<math>\boldsymbol{e}_1\to\boldsymbol{e}_2</math>の向きに回すと<math>\boldsymbol{e}_3</math>の正方向に進むように3つの軸をとった系を'''右手系'''という。負方向に進むようにとったものを'''左手系'''という。数学・物理に限らず理数系の約束事として、'''三次元空間は必ず右手系で考える'''という暗黙の了解が存在するので覚えておこう。
右手系・左手系は基底の一部または全ての符号を反転することで変換することができる。一つだけを反転する場合は'''鏡像変換'''、二つだけを反転する場合は'''半回転'''、全てを反転する場合は'''空間反転'''と呼ぶ。
外積の結果として得るベクトルは右手系・左手系のどちらを考えるかで向きが変わる。このように、右手系↔左手系の変換で向きが変わるベクトルを'''軸性ベクトル'''という。
系の取り方で向きが変わるということは基底の係数である'''成分は不変量'''である。つまり、観測者の動きにベクトルが追従し、このベクトルは「物理的な実体を有しているのではなく計算の都合上向きが定められた便宜的な(=観測者が勝手に決めた)ベクトル」ということである。そのため、軸性ベクトルは'''擬ベクトル'''(シュードベクトル)とも呼ばれる。
位置や速度、加速度のような右手系・左手系のどちらを考えても同じ向きを向くベクトルを'''極性ベクトル'''という。座標系を取り換えても向きが維持されるため'''成分は座標変換に応じて変化する'''。これは、「観測の仕方によって起こる現象は変わらない」ということである。つまり擬ベクトルに対し、極性ベクトルは'''物理的実体を有するベクトル'''である。
偶奇と同じように軸性・極性にも外積を通じた相互関係が存在する。
:(軸性)×(軸性)=(軸性)
:(軸性)×(極性)=(極性)
:(極性)×(極性)=(軸性)
==基礎事項==
===ベクトル関数===
関数<math>\boldsymbol{f} (x) = \sum_{i} f_i(x) \boldsymbol{e}_i</math>を'''ベクトル(値)関数'''(vector-valued function, vector function)という。
ただし、各<math>\boldsymbol{e}_i</math>は各座標軸方向の単位ベクトルであり、<math>\boldsymbol{f}(x)</math>の定義域は各<math>f_i(x)</math>の定義域の積集合である。
ベクトルの演算が成分ごとの演算結果を並べたベクトルで定義されたように、ベクトル関数の演算は(結果となる値が存在するならば)各成分の演算結果を並べたベクトルに等しい。これはベクトルの線型性による。
例えば、<math>\boldsymbol{f}(x) = \begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>の極限は、
:<math>\lim_{x\to0} \boldsymbol{f}(x) = \begin{pmatrix} \lim_{x\to0} \cos x \\ \lim_{x\to0} \sin x \end{pmatrix}</math> (<math>\because</math>線型性)
:<math>=\begin{pmatrix} 1 \\ 0 \end{pmatrix}</math>
:<math>=\boldsymbol{e}_x</math>
と求まる。
このとき、<math>\boldsymbol{e}_x</math>を<math>\begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>に於ける'''極限ベクトル'''という。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で連続であるとは<math>\lim_{x\to\alpha}\boldsymbol{f}(x)=\boldsymbol{f}(\alpha)</math>が成立することであり、区間<math>I</math>で連続であるとは<math>\forall \alpha \in I</math>で連続であることである。
また、ベクトル関数の導関数<math>\boldsymbol{f}'(x)</math>は
:<math>\frac{d}{dx} \boldsymbol{f} (x) = \frac{d}{dx} \left( \sum_i f_i(x) \boldsymbol{e}_i \right)</math>
:<math>= \sum_i \left( \frac{d}{dx} f_i (x) \boldsymbol{e}_i \right)</math>(<math>\because</math>線型性)
:<math>= \begin{pmatrix} f'_1(x) \\ f'_2(x) \\ \vdots \\ f'_i(x) \\ \vdots \end{pmatrix}</math>
である。
この結果は、ベクトル関数に於ける導関数の正式な定義 <math>\lim_{h\to0} \frac{\boldsymbol{f}(x+h) - \boldsymbol{f}(x)}{h}</math>からも導かれる。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で微分可能であるとは極限値<math>\boldsymbol{f}'(\alpha)=\lim_{x\to\alpha}\frac{\boldsymbol{f}(x)-\boldsymbol{f}(\alpha)}{x-\alpha}</math>が存在することであり、区間<math>I</math>で微分可能であるとは<math>\forall \alpha \in I</math>で微分可能であることである。
高階導関数・高階微分可能も同様にして定義される。
<math>\boldsymbol{f}(x)</math>が区間<math>I</math>で連続ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^0</math>級であるといい、<math>\boldsymbol{f}\in C^0(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で微分可能で<math>\boldsymbol{f}'(x)\in C^0(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^1</math>級である(一階連続微分可能)といい、<math>\boldsymbol{f}\in C^1(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で二階微分可能で<math>\boldsymbol{f}'\in C^1(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^2</math>級である(二階連続微分可能)といい、<math>\boldsymbol{f}\in C^2(I)</math>と書く。同様にして順々に<math>C^k</math>級が定義され、<math>\forall k \in \mathbb{N}, \boldsymbol{f}\in C^k(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>で<math>C^\infty</math>級(無限階連続微分可能)であるといい、<math>\boldsymbol{f}\in C^\infty(I)</math>と書く。<math>C^\infty</math>級である関数を'''滑らかな'''関数ともいう。
高校数学や高校物理で扱った平面(<math>\mathbb{R}^2</math>)上の運動は、実は2項ベクトル関数の理論に他ならない。
例えば、平面上の運動に於ける加速度・速度・変位の関係は<math>\boldsymbol{x}(t)= \begin{pmatrix} f(t) \\ g(t) \end{pmatrix}</math>として<math>\boldsymbol{a}(t) = \frac{d}{dt}\boldsymbol{v}(t) = \frac{d^2}{dt^2} \boldsymbol{x}(t)</math>と表すことができる。
曲線の媒介変数表示は、パラメータを変数とするベクトル関数とみることができる。
例えば、円の媒介変数表示<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \end{cases}</math>は、<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>という2次元ベクトル関数とみることができる。更に<math>\theta=\omega t</math>とすると、これは等速円運動の式である。
1変数ベクトル関数の微分に関して、以下の公式が成り立つ。
#定数倍の導関数:<math>\{k\boldsymbol{a}(x)\}'=k\boldsymbol{a}'(x)</math>
#和・差の導関数:<math>\{ \boldsymbol{a}(x)\pm\boldsymbol{b}(x) \}' = \boldsymbol{a}'(x)\pm\boldsymbol{b}'(x)</math>
#積の導関数:<math>\{ f(x)\boldsymbol{a}(x) \}' = f'(x)\boldsymbol{a}(x)+f(x)\boldsymbol{a}'(x)</math>
#商の導関数:<math>\left\{ \frac{\boldsymbol{a}(x)}{f(x)} \right\}' = \frac{f(x)\boldsymbol{a}'(x)-f'(x)\boldsymbol{a}(x)}{\{f(x)\}^2} \quad (f(x)\neq0)</math>
#内積の導関数:<math>\{\boldsymbol{a}(x)\cdot\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)+\boldsymbol{a}(x)\cdot\boldsymbol{b}'(x)</math>
#外積の導関数:<math>\{\boldsymbol{a}(x)\times\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\times\boldsymbol{b}(x)+\boldsymbol{a}(x)\times\boldsymbol{b}'(x)</math>
#スカラー三重積の導関数:<math>[\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#ベクトル三重積の導関数:<math>[\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#連鎖律(チェイン・ルール):<math>[\boldsymbol{a}\{f(x)\}]'=\boldsymbol{a}'\{f(x)\}f'(x)</math>
ベクトル関数の'''ノルム'''(大きさ、長さ)は、通常のベクトルと同様に
:<math>\| \boldsymbol{f}(x) \| = \sqrt{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)} = \sqrt{\sum_{i} \{f_i (x)\}^2}</math>
で与えられる。
つまり、ノルムは元のベクトル関数と同一変数のスカラー関数である。
ここで、このスカラー関数が定数関数である条件に就て見てみよう。
:<math>\| \boldsymbol{f}(x) \|= c \quad (c\in\mathbb{R}_{>0})</math>の両辺を2乗して
:<math>\| \boldsymbol{f}(x) \|^2 = \boldsymbol{f}(x)\cdot\boldsymbol{f}(x) = c^2</math>
:両辺微分すると内積の微分より
:<math>\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:<math>\therefore \boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:逆に、
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0 \iff 2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=0</math>
:<math>\int \{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'dx= \int 0 dx</math>
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)=C_1</math>(<math>C_1\geq0</math>は積分定数)
:<math>\| \boldsymbol{f}(x) \|^2=C_1</math>より
:<math>\| \boldsymbol{f}(x) \| = \sqrt{C_1} = \mathrm{const}.</math>
よって、以下が成り立つ。
{{定理|(直交条件の定理)}}
:<math>\| \boldsymbol{f}(x) \|= \mathrm{const}. \iff \boldsymbol{f}(x) \cdot \boldsymbol{f}'(x) = 0</math>
{{定理終わり}}
これは、物理的には「位置ベクトルと速度ベクトルが直交する」ことを表す。則ち、<math>\boldsymbol{f}(x)</math>の終点が始点を中心とする円運動(球面運動)をするということである。
また、ベクトル関数が変数に依らず常に同一方向を向く条件も見てみよう(但し<math>\boldsymbol{f}(x)\neq\boldsymbol{0}</math>)。
:所与の条件は零ベクトルでない定ベクトル<math>\boldsymbol{c}</math>を用いて<math>\boldsymbol{f}(x) = f(x)\boldsymbol{c}</math>と表される。
:両辺微分して<math>\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}=f'(x)\boldsymbol{c}</math>
:ここで元のベクトル関数との外積をとると
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}\times\{f'(x)\boldsymbol{c}\}=f(x)f'(x) (\boldsymbol{c}\times\boldsymbol{c})=f(x)f'(x)\boldsymbol{0}=\boldsymbol{0}</math>
:逆に、
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\boldsymbol{0}</math>とすると一次従属なので
:<math>\boldsymbol{f}'(x)=g(x)\boldsymbol{f}(x)</math>という微分方程式が成り立つ。
:各成分ごとに微分方程式を解くと、
::これは変数分離型微分方程式なので第i成分は
::<math>\frac{df_i}{dx}=g(x)f_i(x)</math>
::<math>\int \frac{df_i}{f_i(x)}=\int g(x)dx</math>
::<math>G'(x)=g(x), C_i</math>を積分定数として<math>\log|f_i(x)|=G(x)+C_i</math>
::<math>C_i=\pm e^{C_i}</math>と改めておくと<math>f_i(x)=C_i e^{G(x)}</math>
:よって
:<math>\boldsymbol{f}(x)=\sum_i f_i(x) \boldsymbol{e}_i = \sum_i C_i e^{G(x)} \boldsymbol{e}_i = e^{G(x)} \sum_i C_i \boldsymbol{e}_i</math>
:ここで<math>f(x)=e^{G(x)}, \boldsymbol{c}=\sum_i C_i \boldsymbol{e}_i</math>と置くと
:<math>\boldsymbol{f}(x) = f(x) \boldsymbol{c}</math>となり、方向は変数に依らず一定であることが判る//
よって、以下が成り立つ。
{{定理|(平行条件の定理)}}
<math>\boldsymbol{c},\boldsymbol{f}(x)\neq\boldsymbol{0}</math>として
:<math>\boldsymbol{f}(x)=f(x)\boldsymbol{c} \iff \boldsymbol{f}(x) \times \boldsymbol{f}'(x) = \boldsymbol{0}</math>
{{定理終わり}}
ベクトル解析では三次元空間の場合を考えることが多いため上では外積を用いて証明したが、外積は3項ベクトル(または7項ベクトル)にしか定義されないのであった。
一般次元では外積に代わって次の関係式を用いる。
:<math>|\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)|=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|</math>
これはCS不等式の等号成立の場合である。
実際、<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|\cos\{\theta(x)\}</math>より等号成立の必要十分条件は
:<math>\cos\{\theta(x)\}=\pm1\iff\theta(x) \equiv 0 \,(\mathrm{mod}\pi)</math>
であり、2ベクトル<math>\boldsymbol{f}(x), \boldsymbol{f}'(x)</math>は平行とわかる。<br/>
平行ということは一次従属ということなので先程のように変数分離形微分方程式を解くことで3次元と同じ結果を得る。//
補足として、力学への応用を考える。
:速さの二乗<math>\|\boldsymbol{v}(t)\|^2</math>を時間微分すると
:<math>\frac{d}{dt}\|\boldsymbol{v}(t)\|^2=\frac{d}{dt}(\boldsymbol{v}(t)\cdot\boldsymbol{v}(t))=\frac{d\boldsymbol{v}(t)}{dt}\cdot\boldsymbol{v}(t)+\boldsymbol{v}(t)\cdot\frac{d\boldsymbol{v}(t)}{dt}=2(\boldsymbol{v}(t)\cdot\boldsymbol{a}(t))</math>
:よって等速運動の条件<math>\|\boldsymbol{v}(t)\|=\mathrm{const}.</math>は直交条件の定理から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>に同値である。
:これを力学的に解釈すると、「加速度ベクトルは速度ベクトル方向に仕事をしないから速度ベクトルの大きさを変えずに向きだけを変える」となる。
:平面上で等速円運動を考えると円運動条件から<math>\boldsymbol{r}(t)\perp\boldsymbol{v}(t)</math>、等速条件から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>なので<math>\boldsymbol{r}(t) /\!/ \boldsymbol{a}(t)</math>が出てくる。
:円運動条件<math>\|\boldsymbol{r}(t)\|^2=r^2</math>を一階微分すると
::<math>2\boldsymbol{r}(t)\cdot\boldsymbol{r}'(t)=0</math>
:もう一度微分して
::<math>2(\boldsymbol{r}(t)\cdot\boldsymbol{r}''(t)+\boldsymbol{r}'(t)\cdot\boldsymbol{r}'(t))=0</math>
:則ち
::<math>\boldsymbol{r}(t)\cdot\boldsymbol{a}(t)+\boldsymbol{v}(t)\cdot\boldsymbol{v}(t)=0</math>
:位置ベクトルと加速度ベクトルが一次従属なので<math>\boldsymbol{a}(t)=\lambda\boldsymbol{r}(t)</math>であり、等速条件より<math>\|\boldsymbol{v}(t)\|=v</math>なので
::<math>\lambda r^2 + v^2 = 0</math>
::<math>\therefore \lambda = -\frac{v^2}{r^2}<0</math>
:則ち<math>\boldsymbol{r}(t)</math>と<math>\boldsymbol{a}(t)</math>は逆向きであり、円運動の中心は<math>\boldsymbol{r}(t)</math>の始点なので<math>\boldsymbol{a}(t)</math>は常に円運動の中心を向く'''向心加速度'''であることが証明された。//
なお、3次元以上では「<math>\boldsymbol{a}\perp\boldsymbol{b}\land\boldsymbol{b}\perp\boldsymbol{c}\implies\boldsymbol{a}/\!/\boldsymbol{c}</math>」が一般には成り立たないのでこの議論を成立させるには追加の条件が必要である。
<math>\boldsymbol{f}(x)</math>の不定積分は、各<math>f_i(x)</math>の原始関数を並べたベクトルを<math>\boldsymbol{F}(x)</math>として
:<math>\int \boldsymbol{f}(x) dx = \boldsymbol{F}(x)+\boldsymbol{C}</math>(<math>\boldsymbol{C}</math>は各積分定数を並べたベクトル)
と表される。
また、定積分は
:<math>\int^b_a \boldsymbol{f}(x) dx=\boldsymbol{F}(b)-\boldsymbol{F}(a)</math>
と表される。
1変数ベクトル関数の積分について、以下が成り立つ(不定積分表記だが定積分に就ても同様)。
#定数倍の原始関数:<math>\int \{k\boldsymbol{a}(x)\} dx = k\int\boldsymbol{a}(x)dx</math>
#和・差の原始関数:<math>\int \{\boldsymbol{a}(x)\pm\boldsymbol{b}(x)\}dx=\int\boldsymbol{a}(x)dx\pm\int\boldsymbol{b}(x)dx</math>
#内積の原始関数<math>\int \{\boldsymbol{k}\cdot\boldsymbol{a}(x)\}dx=\boldsymbol{k} \cdot \left( \int \boldsymbol{a}(x) dx \right)</math>
#外積の原始関数<math>\int \{\boldsymbol{k}\times\boldsymbol{a}(x)\}dx=\boldsymbol{k} \times \left( \int \boldsymbol{a}(x) dx \right)</math>
#スカラー倍の部分積分:<math>\int f(x)\boldsymbol{a}'(x)dx= f(x)\boldsymbol{a}(x)-\int f'(x)\boldsymbol{a}(x) dx \iff \int f'(x)\boldsymbol{a}(x)dx= f(x)\boldsymbol{a}(x)-\int f(x)\boldsymbol{a}'(x) dx</math>
#内積の部分積分:<math>\int \{ \boldsymbol{a}(x)\cdot\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\cdot\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)\}dx</math>
#外積の部分積分:<math>\int \{ \boldsymbol{a}(x)\times\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\times\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\times\boldsymbol{b}(x)\}dx</math>
#置換積分:<math>u=f(x)</math>として<math>\int \boldsymbol{a}'\{f(x)\}f'(x) dx = \int \boldsymbol{a}(u)du</math>
平行条件の定理の証明でベクトル関数の微分方程式を解いたように、成分毎に考えることで解空間ベクトルを求められる。
:1階線型常微分方程式<math>\boldsymbol{f}'(x)+a(x)\boldsymbol{f}(x)=\boldsymbol{b}(x)</math>の解に就て考える。
:第<math>i</math>成分を考えると<math>f'_i(x)+a(x)f_i(x)=b_i(x)</math>という1階線型常微分方程式を得るので、
:両辺に積分因子<math>\mu(x)=\exp\left(\int a(x) dx\right)</math>を掛けることで
:<math>f_i(x)=\frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\}</math>を得る。
:よって一般解は
:<math>\boldsymbol{f}(x) = \sum_i \frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\} \boldsymbol{e}_i=\frac{1}{\mu(x)}\left\{ \int \mu(x) \boldsymbol{b}(x) dx + \boldsymbol{C} \right\}</math>
ベクトル関数は必ずしもここで扱った<math>\boldsymbol{f}: \mathbb{R}\to\mathbb{R}^n</math>のみを指さない。
例えば、ベクトル変数 <math>\boldsymbol{x}= \sum_i g_i (x) \boldsymbol{e}_i</math>に対して
:<math>\boldsymbol{h}(\boldsymbol{x})=\sum_i (h_i \circ g_i) (x) \boldsymbol{e}_i</math>
と定義されるような関数<math>\boldsymbol{h}:\mathbb{R}^m \to \mathbb{R}^m</math>もベクトル関数である。
また、始域と終域の次元が異なる<math>\boldsymbol{i}: \mathbb{R}^m \to \mathbb{R}^n \, (m, n\neq1)</math>のようなベクトル関数も考えられる。
一般に、始域が<math>\mathbb{R}^n (n\neq1)</math>であっても終域が<math>\mathbb{R}</math>である関数はベクトル関数に対して'''スカラー関数'''(scalar function)と呼ばれる。スカラー関数は入力ベクトルを「変数の組」と見れば通常の多変数関数に一致する。
この節で述べた理論は、多くは一般のベクトル関数に対しても成り立つ。但し、後述のヤコビ行列のような拡張を必要とするものもある。
また、多変数ベクトル関数<math>\boldsymbol{f}(x_1, x_2,\cdots,x_n)</math>を考えたとき、多変数微積分の理論は一変数微積分と同様にしてベクトル関数にもそのまま拡張される。
===ベクトル場・スカラー場===
写像<math>\boldsymbol{a}: \mathbb{R}^m \to \mathbb{R}^n</math>を'''ベクトル場'''(vector field)という。
実際には<math>m=n</math>の場合を考えることが多い。
写像<math>\varphi: \mathbb{R}^n \to \mathbb{R}</math>を'''スカラー場'''(scalar field)という。
それぞれ上で述べたベクトル関数・スカラー関数に対応する。
もう少し具体的に述べると、空間の領域<math>V</math>が与えられたときその各点にスカラーまたはベクトルを割り当てたものが場である。要するに、<math>p\in V</math>とすると
:スカラー場:<math>\varphi=\varphi(p)</math>
:ベクトル場:<math>\boldsymbol{a}=\boldsymbol{a}(p)</math>
のように場は「点を入力とする<sup>※</sup>関数」である。
<small>※なお、ベクトル場を図示するときは「出力されたベクトルの'''始点は原点でなく入力された点'''」であることに注意が必要である。出力ベクトルの成分表示は「入力点を基準に据えたときの位置ベクトル」なので原点から目盛を数えることに意味はない。</small>
ここで<math>V</math>に何かしらの座標が設定されていれば、その座標系の変数の組をベクトルと見做すことで場を「通常のスカラー関数・ベクトル関数」として扱えるのである。
則ち、「滑らかな場」という概念は「滑らかな関数」として定義することができる。より具体的に言うと、スカラー場・ベクトル場が'''滑らか'''であるとは対応するスカラー関数・ベクトル関数が<math>C^\infty</math>級であることである。但し、滑らかさは任意の座標変換で保たれるわけではないことに注意が必要である(後述の座標変換テンソル及びその逆行列の全ての成分関数が滑らかである必要がある)。
ここで、二変数関数の極値を思い返してみる。
<math>z=f(x, y)</math>が<math>(a, b)</math>で極大であるとは<math>\begin{pmatrix} x \\ y \end{pmatrix}\neq\begin{pmatrix} a \\ b \end{pmatrix}</math>として
:<math>\exist \delta>0, \forall {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in \mathbb{R}^2, {\scriptstyle\left\| \left(\begin{array}{c} x \\[-6pt] y \end{array}\right) - \left(\begin{array}{c} a \\[-6pt] b \end{array}\right) \right\|} < \delta \implies f(x, y) \leq f(a, b)</math>
という定義だった。
<math>z=f(x, y)</math>は曲面を表すが、これを<math>z</math>軸正方向から<math>xy</math>平面に射影するとその陰が<math>(x, y)</math>の動く範囲となるのであった。
ここで<math>\boldsymbol{x}:=\begin{pmatrix} x \\ y \end{pmatrix}, \boldsymbol{\alpha}:=\begin{pmatrix} a \\ b \end{pmatrix}</math>とすると<math>z=f(x, y)</math>はスカラー場<math>z=\phi(\boldsymbol{x})</math>と解釈することができ、更に条件法の前件は<math>\boldsymbol{\alpha}</math>の<math>\delta</math>-開球(二次元なので開円板)である。
なので、極大値の定義式をベクトル解析的に解釈すると「<math>xy</math>平面の各点に<math>z</math>の値を割り当てた数分布に於いて、開円板<math>B_\delta(\boldsymbol{\alpha})</math>内部に於ける<math>z</math>の最大値が<math>\phi(\boldsymbol{\alpha})</math>となるような正数<math>\delta</math>が存在する」ということである。
ベクトル場の例としては、電場・磁場・重力場などが挙げられる。
スカラー場の例としては、電位分布・温度分布・圧力分布などが挙げられる。
例えば、ベクトル場<math>\boldsymbol{f}=(x, 0, 0)</math>は、<math>\mathbb{R}^3</math>内の平面<math>x=k</math>上の任意点に、その点を始点とするベクトル<math>\begin{pmatrix} k \\ 0 \\ 0 \end{pmatrix}</math>が存在する状態を表す。
ベクトル場の和は、出力ベクトルの型が同じならばベクトル場の成分の和をとったものに等しい。
例えば、<math>\boldsymbol{f}(x, y, z)=(y, z, x), \boldsymbol{g}(x, y, z)=(z, x, y)</math>について
:<math>(\boldsymbol{f}+\boldsymbol{g})(x, y, z)=(y, z, x)+(z, x, y)=(y+z, z+x, x+y)</math>である。
これは、ベクトル場の加法の定義が
:<math>\forall p \in V, (\boldsymbol{f}+\boldsymbol{g})(p):=\boldsymbol{f}(p)+\boldsymbol{g}(p)</math>
となっていて且つ<math>V</math>に座標を入れればベクトル関数の加法則をそのまま適用できるためである(入力点が異なるとき、場同士は足すことができない)。
曲線<math>\{\boldsymbol{x}\in\mathbb{R}^2 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等高線'''(等高曲線)、曲面<math>\{\boldsymbol{x}\in\mathbb{R}^3 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等位面'''(等位曲面)という。これらの詳細は後述する。
==曲線論・曲面論==
===曲線===
<math>xy</math>平面上の曲線は<math>y=f(x) (x\in[a, b])</math>という陽関数表示で扱うことが多かった。しかし、これだと自分自身と交わる('''自己交叉'''する)曲線や<math>x=x_0</math>に対して<math>f(x_0)</math>の値が複数存在する(<math>f</math>が'''多価関数''')場合に不都合が生じる。
例えば円を陽関数表示しようとすると
:<math>x^2+y^2=r^2</math>を<math>y</math>に就いて解いて
:<math>y=\pm\sqrt{r^2-x^2}</math>
則ち
:<math>y=\begin{cases} \sqrt{r^2-x^2} & (y\geq0) \\ -\sqrt{r^2-x^2} & (y<0) \end{cases}</math>
という多価関数が必要になる。
これだと端点の振舞を一々調べる必要があって曲線の連続性や接線の議論が煩雑になってしまう。
しかし、先程も述べたように曲線の媒介変数表示はベクトル関数として見れるのであった。
:<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>(再掲)
こうすると一変数連続ベクトル関数によって曲線を表すことが可能である。物理的に捉えると「質点の運動の軌跡を原点からの位置ベクトルの時間変化で表す」ということである。
一般に、<math>\boldsymbol{r}\in\mathbb{R}^n, t \in I</math>としてベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>の解集合<math>\{\boldsymbol{r}(t) \mid t \in I \}</math>は<math>n</math>次元空間内の曲線<math>C</math>を表す。これを<math>C</math>の'''ベクトル表示'''という。
ベクトル表示は成分表示に直せば<math>\boldsymbol{r}(t)=\sum_i r_i(t)\boldsymbol{e}_i</math>となる。これは媒介変数表示<math>\begin{cases} x_1&=&r_1(t) \\ x_2&=&r_2(t) \\ &\,\,\vdots& \\ x_n&=&r_n(t) \end{cases}</math>をベクトル表記したものに一致する。
例えば、<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ bt \end{pmatrix}</math>は'''常螺旋'''(弦巻線)のベクトル表示である。
パラメータが増加するときの点の移動方向を曲線の'''正の向き'''と定める。曲線の'''負の向き'''はパラメータが減少するときの点の移動方向である。このとき、パラメータで'''向き付け'''された曲線という表現もなされる。曲線<math>C</math>に対し、同じパラメータを用いた逆向きの曲線を<math>-C</math>と表す。ベクトル表示では<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>-C:\boldsymbol{r}=\boldsymbol{r}(-t)</math>ということである。
パラメータに関する変数変換<math>u=\phi(t)</math>を考える。但し、<math>\phi</math>は広義単調関数とする<sup>※</sup>。このとき、<math>\frac{du}{dt}</math>が非負ならば曲線の向き付けが保たれ、非正ならば向き付けが反転する。<math>\frac{du}{dt}=0</math>となる領域では点の運動が停止する。
<small>※<math>\phi</math>が非単調関数のときは曲線上の点が行ったり来たりすることになるため曲線のパラメータ表示としては扱いづらい。</small>
<math>\boldsymbol{r}(t) \in C^1</math>且つ<math>\boldsymbol{r}'(t)\neq\boldsymbol{0}</math>であるとき、曲線<math>C</math>は'''滑らか'''であるという。
滑らかな曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>\boldsymbol{r}'(t)</math>を<math>C</math>の'''速度ベクトル'''という。
<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}</math>として点<math>\mathrm{P}(t)</math>に於ける速度ベクトルは<math>\lim_{\Delta t\to0}\frac{\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)}{\Delta t}</math>の極限ベクトルであるが、<math>\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)</math>を図示することで速度ベクトルが曲線<math>C</math>の点<math>\mathrm{P}(t)</math>に於ける接線の方向ベクトルになっていることがわかる。よって、速度ベクトルを'''接線ベクトル'''(接ベクトル)ともいう。
速度ベクトルが非零である曲線を'''正則'''な曲線と呼ぶ。滑らかな曲線は正則曲線である。
なお、一般には陽関数表示が区分的であることとベクトル表示の成分関数が区分的であることに対応はないほか、パラメータの取り方で速度ベクトルが変わるので「曲線の幾何学的滑らかさ」と「ベクトル表示した関数の解析学的滑らかさ」は一致するとは限らない。
正則な曲線に対して曲線長('''弧長''')を考える。
二次元曲線の場合は数学Ⅲで既に扱った。
:<math>L=\int_a^b \sqrt{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2}dt</math>
実は、これを一般の<math>n</math>次元にそのまま拡張することができる。
{{定理|(弧長公式)}}
曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ(<math>a<b</math>)は
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
で与えられる。
{{定理終わり}}
*証明
:<math>a=t_0, b=t_m</math>として閉区間<math>[a, b]</math>を各<math>t_i</math>で等分割する。このとき小区間<math>[t_{k-1}, t_k]</math>の長さは<math>\Delta t=\frac{b-a}{m}</math>。
:<math>C</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ<math>L</math>は折れ線の長さ<math>\overline{\mathrm{P}(t_{k-1})\mathrm{P}(t_k)}</math>の総和で近似される。
:ここで<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}(t)</math>より
::<math>L_m=\sum_{k=1}^m \| \boldsymbol{r}(t_k)-\boldsymbol{r}(t_{k-1}) \| = \sum_{k=1}^m \left\| \frac{\boldsymbol{r}(t_{k-1}+\Delta t)-\boldsymbol{r}(t_{k-1})}{\Delta t-0} \right\|(\Delta t-0)</math>
:分割を限りなく細かくする極限をとると<math>m\to\infty</math>より<math>\Delta t\to0</math>なので
::<math>\lim_{m\to\infty} L_m = \sum_{k=1}^\infty \left\| \frac{d\boldsymbol{r}}{dt}(t_{k-1}) \right\|dt</math>
:区分求積法より最後の無限級数は収束して
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>//
ここで、<math>dl:=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>という微小量を'''線素'''と呼ぶ。
1を線素に関して積分したパラメータ<math>s:=\int_0^t dl</math>を'''弧長パラメータ'''(標準パラメータ)という。弧長パラメータは曲線上で「基準点からの符号付き距離」を表す。
曲線の弧長パラメータによるベクトル表示('''弧長パラメータ表示''')を考える。<math>s=\int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>で正則よりノルムは正。則ち<math>\frac{ds}{dt}>0</math>より<math>s=\phi(t)</math>は狭義単調増加なので、逆関数<math>t=\phi^{-1}(s)</math>を考えることができる。よって、<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>に<math>t=\phi^{-1}(s)</math>を代入した<math>\boldsymbol{r}=\boldsymbol{r}(\phi^{-1}(s))</math>が弧長パラメータ表示である。これを<math>\boldsymbol{r}=\boldsymbol{r}(s)</math>と略記してしまうことも多いが、'''一般には元の<math>\boldsymbol{r}(t)</math>と成分関数が異なる'''ことに注意。
通常の媒介変数によるベクトル表示は「座標系が予め与えられた状況」での表示であるが、弧長パラメータは座標系を取り替えたとしても表す曲線そのものが変わらなければ不変である。よって、「座標系に依存しない表記」として弧長パラメータ表示は多く利用されている。
また、弧長パラメータ表示で連鎖律を適用すると
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{dt}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{1}{\frac{ds}{dt}}</math>
ここで微分積分学の基本定理より
:<math>\frac{ds}{dt}=\frac{d}{dt} \int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt = \left\| \frac{d\boldsymbol{r}}{dt} \right\|</math>
なので
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{\frac{d\boldsymbol{r}(t)}{dt}}{\left\| \frac{d\boldsymbol{r}}{dt} \right\|}</math>
であり、自身のノルムで割ってるので恒等的に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>である。
よって、弧長パラメータ表示された曲線の接ベクトルは常に単位ベクトルである。
弧長パラメータ表示された曲線で線素を考えると<math>s=\int_0^s \left\| \frac{d\boldsymbol{r}(s)}{ds} \right\| ds = \int_0^s dl</math>だが、常に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>なので<math>ds=dl</math>であり、弧長パラメータの微小量は線素に等しい(弧長パラメータそのものが1の線素に関する積分なので当たり前ではある)。
<math>\boldsymbol{e}_\dagger(s)=\frac{d\boldsymbol{r}}{ds}</math>と置くと、点<math>\mathrm{P}(s_0)</math>に於ける接線の方程式は
:<math>\boldsymbol{p}-\boldsymbol{r}(s_0)=\boldsymbol{e}_\dagger(s_0) (s-s_0)</math>
と表される。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>
であり、「接線が一次近似に対応する」という構造はベクトル関数でも維持されることが判った。
領域<math>\boldsymbol{D}</math>上の滑らかなベクトル場<math>\boldsymbol{a}</math>について、微分方程式<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t)) (\boldsymbol{r} \in \boldsymbol{D})</math>で与えられる曲線<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>を<math>\boldsymbol{a}</math>の'''流線'''(streamline)という(入力点を位置ベクトルと同一視していることに注意)。流線の接線ベクトルは元のベクトル場そのものになるので、ベクトルの相等から得る方程式<math>\frac{dx_1}{a_1}=\frac{dx_2}{a_2}=\cdots=\frac{dx_n}{a_n}</math>を'''流線方程式'''という。
例えば、<math>\boldsymbol{f}(x, y)=(y, x)</math>の流線は、
:定義から<math>\frac{dx}{dt}=y, \frac{dy}{dt}=x</math>
:合成関数の微分公式から<math>\frac{dy}{dx}=\frac{\frac{dy}{dt}}{\frac{dx}{dt}}=\frac{x}{y}</math>
:<math>\int y dy=\int xdx</math>
:<math>\frac{1}{2}y^2=\frac{1}{2}x^2+C</math>
:よって双曲線<math>y^2-x^2=2C</math>//
この場合、<math>t</math>に関する2つの微分方程式を組み合わせることで
:<math>\frac{d^2x}{dt^2}=x, \frac{d^2y}{dt^2}=y</math>という二階線型常微分方程式となり、一般解が双曲線関数を用いて<math>\begin{cases} x=C_1\cosh t+C_2\sinh t \\ y=C_1\sinh t+C_2\cosh t \end{cases}</math>であることが容易に判る。<br>なお、流線方程式を用いても<math>\frac{dx}{y}=\frac{dy}{x}</math>から<math>\frac{dy}{dx}=\frac{x}{y}</math>が出てくる。
「流線の接線ベクトルが元のベクトル場になる」とはつまり、「接線が常にベクトル場と平行になるような曲線」を考えているということである。滑らかなベクトル場を考えているためそのような曲線は常に存在する。流線は「ベクトル場の流れを繋げていった曲線」と考えることができるので、「流れを簡潔に図示」するのにちょうどよい。
有名な例として、電気力線・磁力線はそれぞれ電場<math>\boldsymbol{E}</math>・磁束密度<math>\boldsymbol{B}</math>の流線である。
流線の微分方程式を弧長パラメータ表示を用いて変形する。
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t))</math>の左辺に就いて
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\frac{ds}{dt}=\frac{d\boldsymbol{r}}{ds}\cdot \|\boldsymbol{r}'(\phi^{-1}(s))\|</math>
元の方程式の両辺でノルムをとると
:<math>\left\|\frac{d\boldsymbol{r}}{dt}\right\|=\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
代入して
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{r}'(\phi^{-1}(s))\|=\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
:<math>\therefore \frac{d\boldsymbol{r}}{ds} = \boldsymbol{e}_{\boldsymbol{a}(\boldsymbol{r}(\phi^{-1}(s)))}</math>
ここから、流線の形状はノルムには関係なく方向場のみで決まることがわかる。
===フレネ標搆===
ここでは、三次元空間に於ける正則曲線について考える。
<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>上の点<math>\mathrm{P}(s)</math>に於ける単位接線ベクトルを<math>\boldsymbol{t}</math>とおく。
先程の議論より<math>\boldsymbol{t}(s)=\frac{d\boldsymbol{r}(s)}{ds}</math>であり、<math>\left\| \frac{d\boldsymbol{r}(s)}{ds} \right\|=1 (=\mathrm{const}.)</math>なので直交条件の定理から<math>\boldsymbol{t}\cdot\frac{d\boldsymbol{t}}{ds}=0</math>、則ち<math>\boldsymbol{t} \perp \frac{d\boldsymbol{t}(s)}{ds}</math>である。この<math>\frac{d\boldsymbol{t}(s)}{ds}</math>を'''主法線ベクトル'''という。
主法線ベクトルを<math>\boldsymbol{n}</math>とおくとき、<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n}</math>を'''従法線ベクトル'''(陪法線ベクトル)という。ここで先程の結果より<math>\boldsymbol{t}\perp\boldsymbol{n}</math>であって<math>\boldsymbol{b}</math>の定義より<math>\boldsymbol{t}\perp\boldsymbol{b}, \boldsymbol{n}\perp\boldsymbol{b}</math>なので、この3ベクトルの組を正規化した<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b \}</math>は<math>\mathbb{R}^3</math>の正規直交基底である。これを<math>\mathbb{R}^3</math>の'''フレネ標搆'''という。外積の結果よりフレネ標搆は<math>\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b</math>の順に右手系をなす。なお、接線ベクトル・主法線ベクトル・従法線ベクトルは全て曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>を入力したベクトル場として捉えることができる。
<math>\{\boldsymbol{e}_n, \boldsymbol{e}_b \}</math>の張る平面を'''法平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_b \}</math>の張る平面を'''展直平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n \}</math>の張る平面を'''接触平面'''という。
即ち、法平面・展直平面・接触平面は<math>tnb</math>空間の点<math>\mathrm{P}(s)</math>を原点とした基準面である。
平面の方程式の法線ベクトルに接ベクトル・主法線ベクトル・従法線ベクトルをそれぞれ代入することで
:法平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{t}(s)=0</math>
:展直平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{n}(s)=0</math>
:接触平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{b}(s)=0</math>
とわかる。
<math>\|\boldsymbol{t}\|=1</math>は常に成り立つが<math>\|\boldsymbol{n}\|, \|\boldsymbol{b}\|</math>は<math>1</math>とは限らない。そこで、主法線ベクトルの大きさ<math>\kappa(s)=\|\boldsymbol{n}(s)\|</math>を曲線<math>C</math>の'''曲率'''と呼ぶことにする。なお、<math>\|\boldsymbol{b}\|=\| \boldsymbol{t} \| \|\boldsymbol{n}\|\sin\frac{\pi}{2}</math>より<math>\|\boldsymbol{b}\|=\|\boldsymbol{n}\|=\kappa</math>が成り立つ。
主法線ベクトルの定義に立ち戻ると<math>\boldsymbol{n}(s)=\frac{d\boldsymbol{t}(s)}{ds}</math>であった。つまり、主法線ベクトルは接ベクトルの速度ベクトルなので「弧長パラメータを変化させたときに接ベクトルがどのくらい変化するか」という指標である。接ベクトルの変化の大小と<math>\kappa</math>の大小は対応し、接ベクトルの大小はカーブの緩急に対応することから<math>\kappa</math>の大小とカーブの緩急も対応する。これが「曲率」という名前の由来である。
なお、<math>\kappa(s)=0</math>の場合は<math>\boldsymbol{n}(s)=\boldsymbol{0}</math>なので<math>\boldsymbol{t}(s)=\boldsymbol{k}</math>(定ベクトル)であり、<math>\boldsymbol{r}(s)=s\boldsymbol{k}</math>という直線の場合に対応することがわかる。
単位接ベクトルの<math>s</math>を微分変数とする導関数(<math>s</math>-導関数)は主法線ベクトルだったが、単位主法線ベクトル・単位従法線ベクトルの<math>s</math>-導関数がどのように表されるか見ていく。
ここで、フレネ標搆が<math>\mathbb{R}^3</math>の正規直交基底であることから、<math>\frac{d\boldsymbol{e}_n}{ds}, \frac{d\boldsymbol{e}_b}{ds}</math>ともにフレネ標搆の一次結合で表現できると予想される。
単位従法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_b}{ds}=\frac{d}{ds}(\boldsymbol{e}_t\times\boldsymbol{e}_n)=\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n+\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\boldsymbol{t}=\boldsymbol{e}_t</math>より<math>\frac{d\boldsymbol{e}_t}{ds}=\boldsymbol{n}=\kappa\boldsymbol{e}_n</math>則ち<math>\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n=\kappa\boldsymbol{e}_n\times\boldsymbol{e}_n=\boldsymbol{0}</math>なので
:<math>\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\|\boldsymbol{e}_n\|=1</math>から直交条件の定理より<math>\boldsymbol{e}_n\perp\frac{d\boldsymbol{e}_n}{ds}</math>なので
:<math>\boldsymbol{e}_n\times\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_n\times(\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds})=\left(\boldsymbol{e}_n\cdot\frac{d\boldsymbol{e}_n}{ds}\right)-(\boldsymbol{e}_n\cdot\boldsymbol{e}_t)\frac{d\boldsymbol{e}_n}{ds}=\boldsymbol{0}</math>
外積が零ベクトルなので<math>\frac{d\boldsymbol{e}_b}{ds} /\!\!/ \boldsymbol{e}_n</math>であり、一次従属より
:<math>\frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>
となるスカラー関数<math>\tau(s)</math>が存在する。
この<math>\tau(s)</math>を曲線<math>C</math>の'''捩率'''と呼ぶ。捩率は接触平面の回転(捩れ)の率を表す。
<math>\tau=0</math>ならば<math>\frac{d\boldsymbol{e}_b}{ds}=0</math>より<math>\boldsymbol{e}_b</math>方向は変化しないので曲線は接触平面と平行な平面上に拘束される。即ち、<math>C</math>は平面曲線である。
単位主法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{d}{ds}(\boldsymbol{e}_b\times\boldsymbol{e}_t)=\frac{d\boldsymbol{e}_b}{ds}\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\frac{d\boldsymbol{e}_t}{ds}</math>
ここで<math>\frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n, \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>を代入して
:<math>\frac{d\boldsymbol{e}_n}{ds}=-\tau\boldsymbol{e}_n\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\kappa\boldsymbol{e}_n=\tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t</math>
よって、フレネ標搆の弧長パラメータを微分変数とする導関数を以下のようにフレネ標搆の一次結合で表すことができた。
:<math>\begin{cases} \frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n \\ \frac{d\boldsymbol{e}_n}{ds} = \tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t \\ \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n \end{cases}</math>
これを一次変換で表記すると以下のようになる。但し、厳密にはベクトルを成分としている部分は列ではなく行に配置するのが正しいことに注意。
{{定理|(フレネ=セレーの公式)}}
:<math>\frac{d}{ds}\begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix} = \begin{pmatrix} 0 & \kappa & 0 \\ -\kappa & 0 & \tau \\ 0 & -\tau & 0 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix}</math>
{{定理終わり}}
表現行列が反対称行列(歪対称行列)になっているが、これは「直交変換を一次近似すると反対称変換になる」という無限小回転の理論に対応する。
捩率を求めるときは「基底分解の係数は対応する基底ベクトルとの内積に等しい」という性質を利用すれば<math>\boldsymbol{e}_b\cdot\frac{d\boldsymbol{e}_n}{ds}=\tau</math>となるので左辺を計算すればよい。
例えば、円<math>\begin{cases} x^2+y^2=a^2 \\ z=b \end{cases}</math>の曲率と捩率は以下のように求まる。
:媒介変数表示して<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ b \end{pmatrix}</math>
:接線ベクトルは<math>\frac{d\boldsymbol{r}(t)}{dt}=\begin{pmatrix} -a\sin t \\ a\cos t \\ 0 \end{pmatrix}</math>
:弧長パラメータ<math>s</math>は<math>s=\int^t_0 \left\|\frac{d\boldsymbol{r}(t)}{dt}\right\|dt = \int_0^t a dt = at</math>
:<math>\therefore t=\frac{s}{a}</math>
:<math>\boldsymbol{r}(s)=\begin{pmatrix} a\cos\frac{s}{a} \\ a\sin\frac{s}{a} \\ b \end{pmatrix}</math>
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}(s)}{ds}=\begin{pmatrix} -\sin\frac{s}{a} \\ \cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{n}=\frac{d\boldsymbol{t}(s)}{ds}=\frac{1}{a}\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\kappa=\|\boldsymbol{n}\|=\frac{1}{a}</math>
:<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n} = \begin{pmatrix} 0 \\ 0 \\ \frac{1}{a} \end{pmatrix}</math>
:<math>\boldsymbol{e}_n=\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{e}_b = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}</math>
:<math>\tau = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}\cdot\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}=0</math>//
フレネ・セレーの公式は[[線型代数学続論/行列値関数|行列関数]]に関する一階常微分方程式である。そのため、微分方程式の基本定理(ピカール=リンデレーエフの定理)により初期条件(<math>s=0</math>に於けるフレネ標搆)を与えれば、滑らかな曲率関数・捩率関数の組<math>(\kappa, \tau)</math>を定めることで微分方程式の解として一般の<math>s</math>に対するフレネ標搆を一意に得る。このとき、曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>は接ベクトルを出発点を選んで積分することで決定される。
従って、次の定理が成り立つ<!-- 厳密証明はhttps://sshmathgeom.private.coocan.jp/diffgeom/curvetheorem.htmlを参照 -->。
{{定理|(曲線の基本定理)}}
開区間<math>(a,b)</math>上の実数<math>s</math>を変数とする2つの滑らかな関数<math>\kappa(s),\tau(s)</math>を与える。但し、<math>\kappa(s)</math>は正とする。<br/>
このとき、<math>\kappa(s)</math>を曲率、<math>\tau(s)</math>を捩率、<math>s</math>を弧長パラメータとする三次元空間上の曲線<math>C</math>が剛体運動を除いて一意に定まる。
{{定理終わり}}
剛体運動とは「曲線の形を変えない」運動のことである(平行移動・回転など)。
<math>\kappa(s), \tau(s)</math>の定める曲線族を一般に<math>\mathcal{C}[\kappa, \tau]</math>と書く。
例えば、円を含む螺旋は<math>c_1, c_2=\mathrm{const}.</math>として<math>\mathcal{C}[c_1, c_2]</math>と書ける。
<math>R=\frac{1}{\kappa}</math>を'''曲率半径'''という。曲率半径は曲線の特定のカーブにおける曲がり具合の急さを表す指標であり、カーブを近似する真円('''密着円''')の半径でもある。高速道路の標識で<math>R=\circ\circ \mathrm{m}</math>は、そのカーブの曲率半径を示している。道路設計では、快適なドライブの為曲率半径がなるべく大きくなるように工夫を凝らしている。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>(再掲)
だったが、二次近似式(三次以降を切り捨てた式)を考えると
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\frac{d\boldsymbol{r}(s_0)}{ds}(s-s_0) + \frac{1}{2}\frac{d^2\boldsymbol{r}(s_0)}{ds^2}(s-s_0)^2 </math>
フレネ標搆を用いて書き直すと
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\boldsymbol{e}_t(s-s_0) + \frac{1}{2}\kappa(s_0)\boldsymbol{e}_n(s-s_0)^2 </math>
二次近似とは「曲線を円弧で近似する」ことだったので曲率<math>\kappa(s_0)</math>が近似に用いる円弧と関係ある量であることが予想される。<br/>
接触平面で密着円<math> \| \boldsymbol{r} - (\boldsymbol{r}(s_0)+R\boldsymbol{e}_n) \| = R </math>を考える。接触平面を<math>xy</math>平面と考えると円の方程式は
:<math>x^2+(y-R)^2=R^2</math>
:<math>y=R-\sqrt{R^2-x^2}</math>
テイラー展開して
:<math>y=\frac{x^2}{2R}+O(x^4)</math>
二次の項を比較すると
:<math>\frac{x^2}{2R}=\frac{(s-s_0)^2}{2}\kappa</math>
よって
:<math>R=\frac{1}{\kappa}</math>
と定義するのは妥当である。
なお、先ほど求めた円の曲率から、真円に関して「曲率半径=半径」であることが判る。
フレネ・セレーの公式で最初の二行二列のみを考えると<math>\mathbb{R}^2</math>内の曲線に対するフレネ・セレーの公式を得る。一般に<math>\mathbb{R}^n</math>上の曲線に対し、今回の議論と同様にして接ベクトル・主法線ベクトル・曲率を定義することができる。但し、三次元空間と異なって同じ曲率に対して異なる曲線を与えることができる(主法線ベクトルが接触平面内で接ベクトルに対して左右どちらを向くかがそのままでは定まらないため)。なお、4次元以上であっても平面拘束曲線ならば捩率は0であって従法線ベクトルは零ベクトルに定まる。
===単純閉曲線===
パラメータ区間を<math>I=[a, b]</math>とする。
このとき、曲線の端点はそれぞれ<math>\mathrm{P}(a), \mathrm{P}(b)</math>である。
端点が一致する、つまり<math>\mathrm{P}(a)=\mathrm{P}(b)</math>である連続曲線を'''閉曲線'''という。
自己交叉しない、つまり<math>\forall t_1, t_2 \in (a, b), t_1 \neq t_2 \iff \mathrm{P}(t_1)\neq\mathrm{P}(t_2)</math>となる閉曲線を'''単純閉曲線'''(ジョルダン曲線)という。閉曲線でない曲線に就いて「自己交叉しない」という条件は「曲線を表すベクトル関数が単射」と同値であるので、端点のみ単射性を外してやれば単純閉曲線の定義を得る。
幾何学的直観から、平面に拘束された単純閉曲線はその平面を単純閉曲線で囲まれた'''内部'''とそうでない'''外部'''の二つの領域に分割することが予想できる。
このことは以下の定理によって保証される。
{{定理|(ジョルダンの曲線定理)}}
平面<math>\Pi\subset\mathbb{R}^n</math>内の任意の単純閉曲線<math>\gamma</math>に対し、有界領域<math>I</math>・非有界領域<math>O</math>の組であって<math>\Pi\setminus\gamma=I \sqcup O</math>且つ<math>\partial{I}=\partial{O}=\gamma</math>であるものが唯一つに定まる。
{{定理終わり}}
この<math>I, O</math>をそれぞれ内部・外部と定義する。証明は[[位相幾何学]]で行う。なお、「<math>\partial{I}=\partial{O}=\gamma</math>」を態々明示しているのは、滑らかでない単純閉曲線に対しては「<math>\Pi\setminus\gamma=I \sqcup O \implies \partial{I}=\partial{O}=\gamma</math>」が自明でないためである。
正則単純閉曲線に対して「曲線の向き」の幾何学的意味を考える。
ジョルダンの曲線定理より単純閉曲線<math>\gamma:\boldsymbol{r}=\boldsymbol{r}(s) \quad(\boldsymbol{r}\in \Pi)</math>は平面<math>\Pi</math>を内部<math>I</math>と外部<math>O</math>に分割する。平面拘束曲線なので<math>\forall{s}, \tau(s)=0</math>であり、従法線ベクトルは零ベクトル且つ接触平面が常に<math>\Pi</math>に一致する。
主法線ベクトル<math>\boldsymbol{n}(s)</math>が接ベクトル<math>\boldsymbol{t}(s)</math>に対して左側を向いているとすると、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0) \quad(\varepsilon>0)</math>が点<math>\mathrm{P}(s_0)</math>に於ける<math>\gamma</math>の進行方向左側にある点である。
ここで、<math>\mathrm{P}(s_0)</math>に於ける<math>\varepsilon</math>-開球<math>B_\varepsilon(s_0)</math>を考えると、平面<math>\Pi</math>上では<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が左側の領域、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が右側の領域に入る。
<math>s=s_0</math>を動かすと各点で進行方向左は<math>I, O</math>のいずれかであり、<math>\gamma</math>の正則性と<math>I, O</math>の連結性から「<math>I, O</math>のどちらが左側であるかは曲線全体で変わらない」ことが言える。
ここで円の場合を考える。<math>\Pi</math>に直交座標<math>u, v</math>を入れると向心加速度の議論から「加速度ベクトル=主法線ベクトルは円の中心を向く」ので、「円の正の向きは円の内部を左手に見る進行方向」である。
任意の正則単純閉曲線<math>\gamma</math>に対して自己交叉を起こさないまま円へ連続変形する可逆写像が存在し、その変形に於いて「左側」と「<math>I, O</math>」の対応は変化しない。則ち、円で確認された「正の向きは囲まれた内部を左手に見る向き」は任意の正則単純閉曲線で成り立つ。
つまり、単純閉曲線の正の向きは点を動かしたときに'''自身の囲む領域の内部を左手に見る向き'''である。負の向きは左手に外部を見る向きである。
集合<math>A</math>に含まれる任意の2点に対してそれらを端点とする滑らかな曲線<math>C</math>をとれるとき、<math>A</math>は'''弧状連結'''であるという。
弧状連結集合<math>S</math>内の任意の閉曲線<math>\gamma</math>に対して1点に退化するような連続変形が可能なとき、<math>S</math>は'''単連結'''であるという。単連結でない集合は'''多重連結'''であるという。
平面<math>\Pi\subset\mathbb{R}^n</math>に含まれる単連結集合<math>S</math>に対し、<math>\hat{\Pi}:=\Pi\cup\{\infty\}</math>とすると集合<math>\hat{\Pi}\setminus{S}</math>は連結である。逆も成り立つ。
なお、「<math>A</math>が連結集合である」ことは「補集合<math>\overline{A}</math>が非連結集合である」ことを意味しない。そのため「単連結な連結集合」も考えられ、特に「単連結な領域」はこの先頻繁に登場する。
集合<math>A</math>に含まれる任意の2点を結んだ線分が<math>A</math>に包含されるとき、<math>A</math>は'''凸型'''であるという。凸型集合でない集合は'''凹型'''であるという。
集合<math>A</math>内の1点を固定してそこから<math>A</math>内任意点へ引いた線分が<math>A</math>に包含されるとき、<math>A</math>は'''星状'''(星型)であるという。このとき固定した点を'''星の中心'''という。凸型集合は全て星状集合である。
単純閉曲線<math>\gamma</math>を境界とする内部<math>I</math>に関して<math>I\cup\gamma</math>が凸型集合であるとき、<math>\gamma</math>を'''卵形線'''(凸単純閉曲線・オーヴァル)という。
曲線<math>C</math>の曲率関数<math>\kappa(s)</math>が<math>C^3</math>級であるとき、<math>\kappa'(s_0)=0</math>を満たす点<math>\mathrm{P}(s_0)</math>を<math>C</math>の'''頂点'''という。
例えば、標準楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>の頂点は4点<math>(\pm{a},0),(0,\pm{b})</math>である。このことは、<math>\mathbb{R}^2</math>上曲線<math>C:\boldsymbol{r}=x(t)\boldsymbol{e}_x(t)+y(t)\boldsymbol{e}_y(t)</math>に対する曲率の公式<math>\kappa(t)=\frac{\left|\frac{dx}{dt}\frac{d^2y}{dt^2}-\frac{dy}{dt}\frac{d^2x}{dt^2}\right|}{\left\{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2\right\}^\frac{3}{2}}</math>と<math>\frac{ds}{dt}>0</math>を用いて確かめられる。
実は、この事実は楕円に限らないことが以下の定理で示される。
{{定理|(ムコパディヤーヤの定理・四頂点定理)}}
<math>\mathbb{R}^2</math>上の滑らかな卵形線は少なくとも4つの頂点を持つ。
{{定理終わり}}
*証明
:滑らかな卵形線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)\quad(s\in[a, b])</math>に対して曲率関数<math>\kappa(s)</math>は滑らかであり、<math>\kappa\in C^3</math>を満たす。
:卵形線は単純閉曲線なので<math>\mathrm{P}(a)=\mathrm{P(b)}</math>であり、<math>\kappa(a)=\kappa(b)</math>。
:曲率関数が定数関数のときは<math>\kappa\in C^\infty</math>且つ常に<math>\kappa'(s)=0</math>なので曲線を構成するすべての点が頂点であり、明らかに定理を満たす。
:曲率関数が定数関数でないとする。
:ワイエルシュトラスの極値定理より<math>\kappa(s)</math>は<math>s\in[a, b]</math>のどこかで最大値・最小値をとり、その点で<math>\kappa'(s)=0</math>を満たす。
:従って少なくとも2つの頂点を持つ。
:ここで、頂点がこの2つのみと仮定する。
:曲率が最大値・最小値をとる点をそれぞれ<math>\mathrm{M, N}</math>と置く。
:線分<math>\mathrm{MN}</math>を含む直線を<math>x</math>軸とし、その垂直方向に<math>y</math>軸をとる。
:<math>s</math>が増加すると曲線上の点が<math>\mathrm{N}\to\mathrm{M}</math>のように動くとき、
:<math>\kappa(s)</math>は最小値から最大値に向かって増大し、他に頂点がないので狭義単調増加である。
:同様に、<math>\mathrm{M}\to\mathrm{N}</math>の向きでは<math>\kappa(s)</math>は狭義単調減少である。
:従って、<math>\kappa'(s)y(s)\neq0</math>の正の側だけ考えれば良い。
:<math>y(a)=y(b)=0</math>に注意すると部分積分して
:<math>0<\int_a^b \kappa'(s)y(s)ds=-\int_a^b \kappa(s)y'(s)ds</math>
:主法線ベクトル<math>\boldsymbol{n}(s)= \begin{pmatrix} \xi_1(s) \\ \xi_2(s) \end{pmatrix}</math>を考えると二次元版フレネ=セレーの公式から<math>\frac{d\boldsymbol{n}}{ds}=-\kappa\frac{d\boldsymbol{r}}{ds}</math>なので
:<math>\xi'_2(s)=-\kappa(s)y'(s)</math>
:よって
:<math>-\int_a^b \kappa(s)y'(s)ds=\int_a^b \xi_2(s)ds = \left[\xi_2(s)\right]_a^b=0</math>
:なので矛盾した不等式<math>0<0</math>を得る。
:則ち、<math>\mathrm{M, N}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在する。
:そのような点を<math>\mathrm{L}</math>と置く。
:<math>\mathrm{L}</math>が<math>\mathrm{N}\to\mathrm{M}</math>という経路の途中にあるとする。
:このとき、<math>\mathrm{L}</math>以外に<math>\kappa'(s)=0</math>を満たす点が存在すると「<math>\mathrm{M}\to\mathrm{N}</math>という経路の途中にそのような点が無い」という最初の仮定に反するので
:<math>\mathrm{M, N, L}</math>以外では<math>\kappa'(s)y(s)>0</math>である。
:同様に部分積分を行うことで矛盾した不等式を得、<math>\mathrm{M, N, L}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在することが判る。
:この時点で「<math>\mathrm{M, N}</math>間の二つの経路のいずれにも<math>\kappa'(s)=0</math>を満たす点が存在しない」という仮定が否定されたのでこれ以上背理法を適用することはできない。
:よって、頂点個数の最小値は<math>4</math>である。//
最小値4をとる卵形線が実際に存在することは楕円の例で確かめた。
この定理は「卵形線」を「(正則)単純閉曲線」に取り換えてもそのまま成り立つことが知られている。一般の閉曲線でこの定理を成り立たせるには追加の条件が必要となる。
先程も述べたように、接ベクトルと単位主法線ベクトルは2次元以上の空間内部にある曲線ならば定義することができる。そして、<math>\boldsymbol{t}\cdot\boldsymbol{n}=0</math>も必ず成り立つ。よって、<math>\boldsymbol{e}_t\cdot\boldsymbol{e}_n=0</math>の両辺を<math>s</math>で微分して
:<math>\frac{d\boldsymbol{e}_t}{ds}\cdot\boldsymbol{e}_n+\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=0</math>
:<math>\therefore \boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\boldsymbol{n}\cdot\boldsymbol{e}_n=-\kappa</math>
ここで「基底分解に於ける成分はその基底との内積に等しい」という性質から、<br/>
一般次元に於いても「<math>\frac{d\boldsymbol{e}_n}{ds}</math>の接線方向成分は<math>-\kappa(s)</math>」であることが判る。
ここで<math>C^2</math>級曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>に対して単位主法線<math>\boldsymbol{e}_n(s)</math>を対応させることを考える。この対応を'''ガウス表示'''という。
<math>\boldsymbol{e}_n(s)</math>を二次までテイラー展開すると<math>\Delta s>0</math>を微小量として
:<math>\boldsymbol{e}_n(s+\Delta s)=\boldsymbol{e}_n(s)+\frac{d\boldsymbol{e}_n(s)}{ds}\Delta s + O(\Delta s^2)</math>
ここで<math>\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\kappa</math>より、<math>s</math>を<math>\Delta s</math>だけ動かしたときの接線方向の速さは<math>|\kappa(s)|\Delta s</math>である(<math>\kappa(s)</math>が正で正の向き、負で負の向きに動くとする)。
閉曲線に対してはガウス表示によって法線方向の変化を完全に捉えられるので、<math>\kappa(s)</math>を微小量<math>\Delta s</math>に関して積分した<math>\int_a^b \kappa(s)ds</math>を考えてみる。
ガウス表示では曲線を単位主法線ベクトルの描く単位円として考えることができる。閉曲線では<math>\mathrm{P}(a)=\mathrm{P}(b)</math>より明らかに<math>\boldsymbol{e}_n(a)=\boldsymbol{e}_n(b)</math>であり、閉曲線が一周する間にベクトル<math>\boldsymbol{e}_n(s)</math>はこの単位円を<math>m(\in\mathbb{Z})</math>周する<sup>※</sup>。
<small>※物理的には「円そのものが動いても円周上の質点は『この円をどっちの方向に何周したか』という情報しか持たない」ので、単位円が動くことは議論にあまり関係ない</small>
弧度法より単位円を<math>m</math>周する符号付き道のりは<math>2\pi{m}</math>であり、ガウス表示より<math>\int_a^b \kappa(s)ds=2\pi{m}</math>。
従って、<math>m=\frac{1}{2\pi}\int_a^b \kappa(s)ds</math>
この<math>m</math>を閉曲線の'''回転数'''と呼ぶことにする。
曲率が負の場合には積分値が途中で相殺されてしまうので、絶対値を付けて積分した
:<math>\mu:=\int_a^b |\kappa(s)|ds</math>
という量を考えることにする。
これを閉曲線の'''全曲率'''と呼ぶ。
全曲率に対して以下の定理が成り立つ。
{{定理|(フェンヒェルの定理)}}
滑らかな閉曲線の全曲率は<math>\mu\geq2\pi</math>を満たす。等号成立の場合は卵形線である。
{{定理終わり}}
証明は省略する。
===曲面===
多変数解析で既に扱った、三次元空間に於ける曲面の陽関数表示<math>z=f(x, y)</math>を'''モンジュ表示'''という。<math>f(x, y, z)=\mathrm{const}.</math>と陰関数表示された曲面は陰関数定理が成り立つ範囲でモンジュ表示に直すことができる。
一次式で陰関数表示される曲面を'''一次曲面'''という。平面の方程式より、一次曲面は全て平面である。
二次式で陰関数表示される曲面を'''二次曲面'''という。
以下、三次元空間に於ける二次曲面の例を挙げる。各係数は非退化条件を満たすとする。なお、「直線に平行な平面」は「直線を法線とする平面に垂直な平面」を意味することに注意。
*'''球面'''(sphere)
:高校数学で扱ったように、点<math>(a, b, c)</math>を中心とする半径<math>r</math>の球面の方程式は<math>(x-a)^2+(y-b)^2+(z-c)^2=r^2</math>である。この球面上の点の位置ベクトルは<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>なので、球面が満たすベクトル方程式は一般に<math>\|\boldsymbol{r}-\boldsymbol{a}\|=\mathrm{const}.</math>である。これは円のベクトル方程式の次元を上げたものである。
*'''楕円面'''(ellipsoid)
:楕円の方程式を拡張した方程式<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1</math>が表す曲面である。<math>xyz</math>空間の基本面で切った断面は全て楕円となる。
*'''楕円拋物面'''(elliptic paraboloid)
:楕円の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は拋物線となる。
*'''双曲拋物面'''(hyperbolic paraboloid)
:双曲線の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}-\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は双曲線、平行な平面で切った断面は拋物線となる。また、原点は鞍点である。
*'''一葉双曲面'''(hyperboloid of one sheet)
:楕円面の方程式の一つの項の符号を変えた<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は双曲線となる。
*'''二葉双曲面'''(hyperboloid of two sheet)
:楕円面の方程式の二つの項の符号を変えた<math>\frac{x^2}{a^2}-\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。断面の分類は一葉双曲面と同じだが、<math>m^2<c^2</math>のときは平面<math>z=m</math>と交わらないため「二葉」と名付けられている。
*'''錐面'''(conical surface)
:方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>の表す曲面。<math>xy</math>平面との交点は原点のみであり、<math>yz</math>平面・<math>zx</math>平面で切った断面は直線である。
閉区間<math>I\subset\mathbb{R}</math>上の一変数ベクトル関数<math>\boldsymbol{r}(t)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t) \quad(t\in I)</math>の解集合は次元に依らず曲線を表した。
同様に、領域<sup>※</sup><math>D\subset\mathbb{R}^2</math>上の二変数ベクトル関数<math>\boldsymbol{r}(t, u)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t, u) \quad({\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)}\in D)</math>の解集合は次元に依らず曲面を表すと考えられる。
厳密には[[線型代数学/基底と次元|階数・退化次数の定理]]<!-- 次元定理・線型写像の基本定理 -->などを用いてこのことを確かめられる。
<small>※ここでいう「領域」は冒頭で厳密に定義した「領域」であることに注意。</small>
曲線と同様に、曲面の'''パラメータ表示'''と'''ベクトル表示'''は次のように定義される。
:パラメータ表示:<math>\begin{cases} x_1&=&r_1(t, u) \\ x_2&=&r_2(t, u) \\ &\,\,\vdots& \\ x_n&=&r_n(t, u) \end{cases}</math>
:ベクトル表示:<math>\left\{\boldsymbol{r}(t, u) \,\bigg|\, {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D \right\}</math>
また、<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>のようにも表す。
例えば、<math>k>l>0</math>として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (k+l\cos u)\cos t \\ (k+l\cos u)\sin t \\ l\sin u \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq 2\pi \\ 0 \leq u \leq 2\pi \end{array} \right\})</math>は'''トーラス'''のベクトル表示である。
<math>\mathbb{R}^3</math>上の平面の方程式は高校数学に於いて<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>として一次式<math>ax+by+cz+d=0</math>と表せることを学んだ。
これのベクトル方程式を求めてみよう。
:①<math>c=0</math>のとき
::平面の方程式は<math>\begin{cases} ax+by+d=0 \\ z=\mathrm{const}. \end{cases}</math>
::[1]<math>b=0</math>のとき
:::平面の方程式は<math>\begin{cases} ax+d=0 \\ y=\mathrm{const}. \\ z=\mathrm{const}. \end{cases}</math>
:::<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>より<math>a\neq0</math>
:::<math>y=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} -\frac{d}{a} \\ t \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} -\frac{d}{a} \\ 0 \\ 0 \end{pmatrix}</math>
::[2]<math>b\neq0</math>のとき
:::<math>x=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} t \\ -\frac{a}{b}t-\frac{d}{b} \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 1 \\ -\frac{a}{b} \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} 0 \\ -\frac{d}{b} \\ 0 \end{pmatrix}</math>
:②<math>c\neq0</math>のとき
::<math>x=t, y=u</math>と置換すると
::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} t \\ u \\ -\frac{a}{c}t-\frac{b}{c}u-\frac{d}{c} \end{pmatrix}</math>
::<math>\boldsymbol{r}=t\begin{pmatrix} 1 \\ 0 \\ -\frac{a}{c} \end{pmatrix}+u\begin{pmatrix} 0 \\ 1 \\ -\frac{b}{c} \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ -\frac{d}{c} \end{pmatrix}</math>
なお、ここから平面のベクトル方程式が一般に<math>\boldsymbol{r}=\boldsymbol{a}+t\boldsymbol{b}+u\boldsymbol{c}</math>という「直線のベクトル方程式を拡張した形」であることがわかる。
<math>\boldsymbol{r}(t, u)\in C^1</math>且つ<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}\neq\boldsymbol{0}</math>である曲面を'''滑らか'''な曲面という。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>とその上の点<math>\mathrm{P}_0=(a, b)</math>に対し、曲線<math>\boldsymbol{r}=\boldsymbol{r}(a, u), \boldsymbol{r}=\boldsymbol{r}(t, b)</math>をそれぞれ点<math>\mathrm{P}_0</math>に於ける'''<math>t</math>曲線'''・'''<math>u</math>曲線'''という。
<math>\boldsymbol{r}(t, u)\in C^1</math>であるとき、偏導関数の定義から
:<math>\frac{\partial}{\partial{u}}\boldsymbol{r}(a, u)=\frac{d}{du}\boldsymbol{r}(a, u)</math>
:<math>\frac{\partial}{\partial{t}}\boldsymbol{r}(t, b)=\frac{d}{dt}\boldsymbol{r}(t, b)</math>
ここで<math>a, b</math>をそれぞれ<math>t</math>軸・<math>u</math>軸上で動かすことで<math>t</math>曲線・<math>u</math>曲線の接ベクトルがそれぞれ<math>\frac{\partial{\boldsymbol{r}}}{\partial{u}}, \frac{\partial{\boldsymbol{r}}}{\partial{t}}</math>であると判る。これらを曲面のパラメータ方向の'''接ベクトル'''という。
これらの接ベクトルが平行でないとき、曲面<math>S</math>上の任意の点<math>\mathrm{P}</math>に対して<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>の張る平面が定まる。これを曲面<math>S</math>の点<math>\mathrm{P}</math>に於ける'''接平面'''という。曲線の接線は一次元ベクトル空間<math>\left\{ \xi\frac{d\boldsymbol{r}}{dt} \bigg| \xi \in\mathbb{R} \right\}</math>で表されたが、曲面の接平面は二次元ベクトル空間<math>\left\{ \xi\frac{\partial{\boldsymbol{r}}}{\partial{t}}+\eta\frac{\partial{\boldsymbol{r}}}{\partial{u}} \bigg| \xi, \eta \in \mathbb{R} \right\}</math>で表される。このような接ベクトル全体が張るベクトル空間を一般に'''接空間'''と呼ぶ。
接ベクトルの組が一次独立である曲面を'''正則'''な曲面という。滑らかな曲面は正則曲面である。
曲面<math>S</math>の接平面に垂直なベクトルを<math>S</math>の'''法線ベクトル'''という。
三次元空間ならば接平面を張る2ベクトルの外積<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}} \times \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>で求められる。
モンジュ表示された曲面<math>S:z=f(x, y)</math>に対して接平面の存在性(つまり曲面の正則性)は「二変数関数<math>f</math>の全微分可能」に対応した。ベクトル表示された曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>に対しては「ベクトル関数<math>\boldsymbol{r}</math>の全微分可能性」だけでは足りず、「ヤコビ行列<math>\frac{\partial{(\boldsymbol{r})}}{\partial{(t, u)}}</math>の階数が2」も要求される。
以下、正則曲面のみ扱う。
<math>\boldsymbol{r}(t, u)</math>の微小変化は全微分で与えられる。
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
則ち、各パラメータを同時に<math>\begin{pmatrix} t \\ u \end{pmatrix}\to\begin{pmatrix} t+dt \\ u+du \end{pmatrix}</math>と単調に動かしたとき、対応する曲面上の点が描く領域は2ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt, \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行四辺形として近似できる。その微小面積は線型代数の内容から
:<math>\sqrt{ \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}}dt \right\|^2 \left\| \frac{\partial{\boldsymbol{r}}}{\partial{u}}du \right\|^2 - \left\{ \left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right) \right\}^2 }=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
である。
これを領域<math>D=\mathrm{dom}\,S</math>で重積分してやれば曲面の表面積('''曲面積''')が求まると考えられる。
{{定理|(曲面積)}}
<math>E := \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2,\quad F := \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}},\quad G := \left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2</math>とすると、<br>
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>の領域<math>D</math>に於ける曲面積は
:<math>S=\iint_D \sqrt{EG-F^2}dtdu</math>
{{定理終わり}}
この<math>E, F, G</math>を<math>S</math>の'''第一基本量'''と呼ぶ。また、<math>dS:=\sqrt{EG-F^2}dtdu</math>を'''面素'''(面積素・面積要素)と呼ぶ。
<math>t, u</math>が共通のパラメータ<math>\theta</math>で媒介変数表示されるとき、曲面は曲線に退化するので線素を考えられる。
具体的には、
:<math>dl=\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|d\theta</math>
より
:<math>\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|^2=\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}</math>
ここで合成関数の常微分公式より
:<math>\frac{d\boldsymbol{r}}{d\theta}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{d\theta}+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{d\theta}</math>
なので
:<math>\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}=\left\|\frac{d\boldsymbol{r}}{dt}\right\|^2\left(\frac{dt}{d\theta}\right)^2+2\left(\frac{d\boldsymbol{r}}{dt}\cdot\frac{d\boldsymbol{r}}{du}\right)\frac{dt}{d\theta}\frac{du}{d\theta}+\left\|\frac{d\boldsymbol{r}}{du}\right\|^2\left(\frac{du}{d\theta}\right)^2</math>
:<math>=E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2</math>
よって
:<math>dl=\sqrt{E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2}d\theta=\sqrt{E(dt)^2+2Fdtdu+G(du)^2}</math>
このように、線素は<math>\theta</math>のとり方に依存しない。
そこで、最後の式で右辺を二乗した
:<math>I:=E(dt)^2+2Fdtdu+G(du)^2</math>
を<math>S</math>の'''第一基本形式'''と定める。
第一基本形式は二次形式になっていることが見て取れるので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{K}:=\begin{pmatrix} E & F \\ F & G \end{pmatrix}</math>とおくと
:<math>I={}^t\!\boldsymbol{v} \mathbf{K} \boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{K}</math>を'''第一基本行列'''という。
ここで<math>I=dl^2>0</math>なので<math>\mathbf{K}</math>は正定値行列である。
また、<math>\boldsymbol{x}_i=\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{x}_j=\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>と置いて第一基本量の定義を思い返してみると<math>\mathbf{K}_{ij}=\boldsymbol{x}_i \cdot \boldsymbol{x}_j</math>なのでこの行列は接ベクトルに関するグラム行列である。この意味でも、<math>\mathbf{K}</math>は正定値行列である。
また、面素の式で根号の中身が<math>\det\mathbf{K}</math>に等しいことも判る。
則ち、第一基本量が曲面の本質であると予想される。
<math>F=0 \land E=G=\lambda</math>であるとき、<math>\mathbf{K}=\lambda\mathbf{E}_2</math>である。このときのパラメータの組<math>(u, v)</math>を曲面の'''等温座標系'''という。
等温座標系で表示された曲面<math>S</math>に対し、第一基本形式は<math>I=\lambda(dt^2+du^2)</math>と二次形式の標準形となっている。則ち、等温座標系へのパラメータ変換は主軸変換である。
面素を考えると<math>dS=\lambda^2dtdu</math>と非常に単純な形となるほか、曲面上の角度計算が平面の場合と全く同じ式で与えられることも等温座標系の利点である。
曲面<math>S</math>上の各点<math>\mathrm{P}</math>に対して単位法線ベクトル<math>\boldsymbol{n}(\mathrm{P})</math>を考える。ベクトル表示の定義域<math>D</math>でベクトル場<math>\boldsymbol{n}(\mathrm{P})</math>が連続であるとき、<math>S</math>は'''向き付け可能'''であるという。
向き付け不能な曲面の例として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (u\cos t+2)\sin 2t \\ (u\cos t+2)\cos 2t \\ u\sin t \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq \pi \\ -1 \leq u \leq 1 \end{array} \right\})</math>と表される'''メビウスの帯'''が挙げられる。
メビウスの帯が向き付け不能である証明を概説する。
:接ベクトルをそれぞれ求める。簡単のため<math>u=0</math>として考える。単位法線ベクトルは外積を正規化して得るが、向きの取り方で正負の符号が付く。どちらの符号を採用するにしろ<math>\boldsymbol{n}(\boldsymbol{r}(0, 0))\neq\boldsymbol{n}(\boldsymbol{r}(\pi, 0))</math>を得、<math>\boldsymbol{r}(0, 0)=\boldsymbol{r}(\pi, 0)</math>より同じ点に対して異なる法線ベクトルを出力するので<math>\boldsymbol{n}(\mathrm{P})</math>はwell-definedではなく、向き付け可能性の定義を満たさない。//
四次元以上の空間では法線ベクトルの方向を複数とれるため法線ベクトル場は扱いにくい。そこで、法線ベクトルに依らない定義を考えたい。
2つの滑らかな曲面<math>S_1, S_2</math>が以下を満たすとき、
#パラメータ<math>(t_1, u_1), (t_2, u_2)</math>の間に滑らかな全単射<math>\begin{cases}t_2 =\phi(t_1, u_1) \\ u_2=\psi(t_1, u_1) \end{cases}</math>が存在する。
#この変数変換のヤコビ行列<math>\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}</math>が正則。
#<math>\boldsymbol{r}_1(t_1, u_1)=\boldsymbol{r}_2(t_2, u_2)</math>
この2つは'''パラメータ変換で同値'''という。
このとき、ヤコビアンが正であるパラメータの組は'''同じ向き'''、負であるパラメータの組は'''逆向き'''であるという。
任意の<math>(t_1, u_1)</math>に対して開近傍<math>U \subset \mathrm{dom}\,S_1</math>をとったとき、どの<math>U</math>上でも<math>\det\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}>0</math>を満足するならば<math>S_1</math>は'''向き付け可能'''という。
向き付け可能な曲面の接空間に対して右手系を成すような向きの法線ベクトルを'''外向き法線ベクトル'''と呼ぶ。
外向き法線の向く側を曲面の'''表'''、その反対側を曲面の'''裏'''と定義する。
<math>\partial{S}=\varnothing</math>を満たす正則曲面<math>S</math>を'''閉曲面'''という。ジョルダンの曲線定理を拡張した定理('''ジョルダン・ブラウワーの分離定理''')によって閉曲面が空間を内部・外部に分割することが保証される。内部に面する向きを閉曲面の裏、外部に面する向きを閉曲面の表と定義する。
パラメータ空間の座標軸の向きの組み合わせが<math>xy</math>平面と同じとき、外向き法線で定義される閉曲面の表裏は内部・外部から定義される表裏に一致する。
===回転面===
ここでは三次元空間内の曲面について考える。
高校数学で回転体を扱ったが、領域の回転体の表面である曲面は元の領域の疆界である単純閉曲線を軸に関して回転したものである。そこで、平面上の任意の曲線を回転すると曲面('''回転面''')を得ると考えられる。
簡単な場合として、<math>x\geq0</math>で定義された<math>zx</math>平面上の曲線<math>z=f(x)</math>を<math>y</math>軸に関して回転させた回転面を考える。
:任意の<math>k\in[0,\infty)</math>に関して曲線上の点は<math>\begin{pmatrix} x \\ z \end{pmatrix}=\begin{pmatrix} k \\ f(k)\end{pmatrix}</math>と与えられる。
:領域<math>\left\{ {\scriptstyle\left(\begin{array}{c} x \\[-6pt] z \end{array}\right)} \big| x \leq k \right\}</math>を<math>y</math>軸に関して回転した回転体を平面<math>z=f(k)</math>で切った断面は半径<math>k</math>の閉円盤であり、疆界円周上の点を<math>\begin{pmatrix} x \\ y \\ f(k) \end{pmatrix}</math>とすると<math>k=\sqrt{x^2+y^2}</math>である。
:則ち回転体の疆界である回転面上の点<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は方程式<math>z=f(\sqrt{x^2+y^2})</math>を満たし、逆にこの方程式を満たす<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は回転面上にある。
纏めると以下のようになる。
{{定理|(回転面の方程式)}}
<math>zx</math>平面上の曲線<math>z=f(x)\quad(x\geq0)</math>を<math>y</math>軸に関して回転させた回転面の方程式は
:<math>z=f(\sqrt{x^2+y^2})</math>
{{定理終わり}}
<math>z</math>軸・<math>x</math>軸に関する回転面の方程式は変数を輪環の順に入れ替えることで得られる。
回転面に対し、元の曲線を'''母線'''という。
母線が直線である回転面は'''円錐'''である。
:<math>z=mx+n\quad(m\neq0,x\geq0)</math>とすれば<math>y</math>軸に関して回転した曲面の方程式は
:<math>z=m\sqrt{x^2+y^2}+n</math>
:<math>z-n = m\sqrt{x^2+y^2}</math>
これを両辺二乗すると
:<math>(z-n)^2=m^2x^2+m^2y^2</math>
であり、錐面の方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>を満たしていることがわかる。
回転軸が傾いている場合、<math>xyz</math>空間の回転行列<math>\mathbf{R}</math>を利用することで各軸に関する回転に帰着することもできるが、ここでは曲面のベクトル表示を扱ったのでベクトル方程式で回転を記述することを考えたい。
点<math>\mathrm{O}</math>から<math>\boldsymbol{r}</math>とそれに平行でない単位ベクトル<math>\boldsymbol{e}</math>が伸びており、そのなす角が<math>\theta</math>であるとする。<math>\boldsymbol{r}</math>の終点<math>\mathrm{P}</math>を含み<math>\boldsymbol{e}</math>を法線とする平面を<math>\Pi</math>、<math>\Pi</math>と直線<math>\{k\boldsymbol{e} \mid k>0\}</math>の交点を<math>\mathrm{N}</math>、<math>\mathrm{P}</math>を<math>\Pi</math>内で<math>\mathrm{N}</math>を中心として<math>\phi</math>回転した点を<math>\mathrm{Q}</math>、<math>\mathrm{NQ}</math>から<math>\mathrm{NP}</math>へ降ろした垂足を<math>\mathrm{R}</math>と置く。但し、回転角<math>\phi</math>の正の向きは<math>\boldsymbol{e}</math>を右螺子の進む向きとする方向に定める。
このとき、<math>\boldsymbol{r}</math>を<math>\boldsymbol{e}</math>に関して<math>\phi</math>だけ回転させたベクトル<math>\boldsymbol{r}'</math>は以下のように表される。
{{定理|(ロドリゲスの公式)}}
:<math>\boldsymbol{r}'=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
{{定理終わり}}
*証明
:<math>\boldsymbol{r}'=\overrightarrow{\mathrm{OQ}}=\overrightarrow{\mathrm{ON}}+\overrightarrow{\mathrm{NR}}+\overrightarrow{\mathrm{RQ}}</math>
:<math>\overrightarrow{\mathrm{ON}}</math>は<math>\boldsymbol{r}</math>の<math>\boldsymbol{e}</math>への正射影ベクトルなので
::<math>\overrightarrow{\mathrm{ON}}=\frac{\boldsymbol{r}\cdot\boldsymbol{e}}{\boldsymbol{e}\cdot\boldsymbol{e}}\boldsymbol{e}=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}</math>
:<math>\triangle\mathrm{NQR}</math>を考えると<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>と<math>\|\overrightarrow{\mathrm{NR}}\|=\|\overrightarrow{\mathrm{NQ}}\|\cos\phi</math>及び<math>\overrightarrow{\mathrm{NR}}/\!\!/\overrightarrow{\mathrm{NP}}</math>より
::<math>\overrightarrow{\mathrm{NR}}=\overrightarrow{\mathrm{NP}}\cos\phi=(\overrightarrow{\mathrm{OP}}-\overrightarrow{\mathrm{ON}})\cos\phi=\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi</math>
:<math>\boldsymbol{r}\times\boldsymbol{e}</math>は外積の定義から<math>\overrightarrow{\mathrm{NP}}</math>を<math>\Pi</math>上で<math>-\phi</math>方向に<math>\frac{\pi}{2}</math>だけ回転させたベクトルになるので、
:<math>\boldsymbol{r}\times\boldsymbol{e}/\!\!/\overrightarrow{\mathrm{RQ}}</math>と<math>\|\overrightarrow{\mathrm{RQ}}\|=\|\overrightarrow{\mathrm{NQ}}\|\sin\phi</math>及び<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>から
::<math>\overrightarrow{\mathrm{RQ}}=-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
:これらを足して
::<math>\boldsymbol{r}'=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}+\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})(1-\cos\phi)\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>//
この証明ではベクトルの平行移動を用いているのでアフィン空間を前提とするが、この式そのものはアフィン構造に依存してないので一般のベクトル空間で成り立つ。
また、回転後のベクトルは母線のパラメータ<math>t</math>に加えて回転角<math>\phi</math>もパラメータとして有するので、<math>\boldsymbol{r}'(t, \phi)</math>という二変数ベクトル関数となって曲面を表すことになる。則ち、「曲線を回転すれば曲面を得る」という直感は正しい。
ロドリゲスの公式の応用として、例えば円錐のベクトル方程式が<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\mathrm{const}.</math>であることが導ける。
:円錐頂点の位置ベクトルを<math>\boldsymbol{p}</math>、軸ベクトルを<math>\boldsymbol{a}</math>、<math>\boldsymbol{a}</math>と角度<math>\alpha</math>をなす単位ベクトルを<math>\boldsymbol{v}</math>とする。このとき直線<math>\{k\boldsymbol{v}\mid k>0\}</math>が円錐の母線であり、母線と交わる向きである軸の法線ベクトルを<math>\boldsymbol{b}</math>とおく。
:ロドリゲスの公式より<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}</math>の周りに<math>\theta</math>だけ回転させたベクトル<math>\boldsymbol{v}'</math>は
::<math>\boldsymbol{v}'=\boldsymbol{v}\cos\theta+(\boldsymbol{v}\cdot\boldsymbol{e}_a)\,\mathrm{versin}\,\theta\,\boldsymbol{e}_a-(\boldsymbol{v}\times\boldsymbol{e}_a)\sin\theta</math>
:ここで<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}, \boldsymbol{b}</math>方向に基底分解すると
::<math>\boldsymbol{v}=\cos\alpha\,\boldsymbol{e}_a+\sin\alpha\,\boldsymbol{e}_b</math>
:なので、
::<math>\boldsymbol{v}'=\cos\alpha\boldsymbol{e}_a+\sin\alpha\{\boldsymbol{e}_b\cos\theta+(\boldsymbol{e}_a\times\boldsymbol{e}_b)\sin\theta\}</math>
:円錐上の点<math>\boldsymbol{r}</math>の位置ベクトルは頂点から母線方向に<math>\rho</math>だけ進むので
::<math>\boldsymbol{r}=\boldsymbol{p}+\rho\boldsymbol{v}'</math>
:であり、
::<math>\boldsymbol{r}-\boldsymbol{p}=\rho\boldsymbol{v}'</math>
:ここで<math>\|\boldsymbol{v}'\|=\|\boldsymbol{v}\|=1</math>より
::<math>\rho=\|\boldsymbol{r}-\boldsymbol{p}\|</math>
:このベクトルと軸ベクトルの内積をとると
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\boldsymbol{v}'\cdot\boldsymbol{a}</math>
::<math>=\rho\{\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})+\sin\alpha\cos\theta(\boldsymbol{e}_b\cdot\boldsymbol{a})+\sin\alpha\sin\theta(\boldsymbol{e}_a\times\boldsymbol{e}_b)\cdot\boldsymbol{a}\}</math>
:<math>\boldsymbol{e}_b, \boldsymbol{e}_a\times\boldsymbol{e}_b</math>とも<math>\boldsymbol{a}</math>に直交するので後ろの二項は消えて
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})=\|\boldsymbol{r}-\boldsymbol{p}\|\|\boldsymbol{a}\|\cos\alpha</math>
:則ち
::<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\|\boldsymbol{a}\|\cos\alpha=\mathrm{const}.</math>//
円錐が先に与えられている場合は「<math>\boldsymbol{r}-\boldsymbol{p}</math>が母線の方向ベクトルなのは図より自明」とできるが、ここでは「母線が先に与えられて回転によって円錐が構成される」という立場を採ったのでロドリゲスの公式が効くのである。
ロドリゲスの公式で微小回転<math>d\phi</math>の場合を考える。
正弦関数・余弦関数の部分を1項目までテイラー展開して<math>\cos(d\phi)=1+O(d\phi^2), \sin(d\phi)= d\phi+O(d\phi^3)</math>なので<math>\mathrm{versin}(d\phi)=O(d\phi^2)</math>であり、
:<math>\boldsymbol{r}' = \boldsymbol{r}-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
ここで<math>d\boldsymbol{r}=\boldsymbol{r}'-\boldsymbol{r}</math>なので
:<math>d\boldsymbol{r}=-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
則ち、ベクトル関数の全微分は微小回転で近似される。
オーダー記法の項を無視して<math>\boldsymbol{\omega}=\frac{d\phi}{dt}\boldsymbol{e}</math>と置くと
:<math>d\boldsymbol{r}=(d\phi\boldsymbol{e})\times\boldsymbol{r}</math>
これの両辺を<math>dt</math>で割って
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{\omega}\times\boldsymbol{r}</math>
これは剛体の速度公式である。
ロドリゲスの公式の一次変換表記を考える。
<math>\boldsymbol{r}=\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}, \boldsymbol{r}'=\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}, \boldsymbol{e}=\begin{pmatrix} a \\ b \\ c \end{pmatrix}</math>とすると、
:<math>\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}=\cos\phi\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}+(ar_1+br_2+cr_3)\mathrm{versin}\,\phi\begin{pmatrix} a \\ b \\ c \end{pmatrix} - \sin\phi \begin{pmatrix} cr_2-br_3 \\ ar_3-cr_1 \\ br_1-ar_2 \end{pmatrix}</math>
:<math>=\begin{pmatrix} (\cos\phi + a^2\,\mathrm{versin}\,\phi) r_1 + (ab\,\mathrm{versin}\,\phi -c\sin\phi) r_2 + (ca\,\mathrm{versin}\,\phi + b\sin\phi) r_3 \\ (ab\,\mathrm{versin}\,\phi + c\sin\phi) r_1 + (\cos\phi + b^2\,\mathrm{versin}\,\phi) r_2 + (bc\,\mathrm{versin}\,\phi -a\sin\phi) r_3 \\ (ca\,\mathrm{versin}\,\phi - b\sin\phi) r_1 + (bc\,\mathrm{versin}\,\phi+ a\sin\phi) r_2 + (\cos\phi + c^2\,\mathrm{versin}\,\phi) r_3 \end{pmatrix}</math>
:<math>=\begin{pmatrix} \cos\phi + a^2\,\mathrm{versin}\,\phi & ab\,\mathrm{versin}\,\phi -c\sin\phi & ca\,\mathrm{versin}\,\phi + b\sin\phi \\ ab\,\mathrm{versin}\,\phi + c\sin\phi & \cos\phi + b^2\,\mathrm{versin}\,\phi & bc\,\mathrm{versin}\,\phi -a\sin\phi \\ ca\,\mathrm{versin}\,\phi - b\sin\phi & bc\,\mathrm{versin}\,\phi+ a\sin\phi & \cos\phi + c^2\,\mathrm{versin}\,\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\mathrm{versin}\,\phi</math>を<math>1-\cos\phi</math>に戻して係数行列を<math>1, \cos\phi, \sin\phi</math>の項に分解してみると
:<math>=\begin{pmatrix} a^2+(1-a^2)\cos\phi & ab-ab\cos\phi -c\sin\phi & ca-ca\cos\phi + b\sin\phi \\ ab-ab\cos\phi + c\sin\phi & b^2+(1-b^2)\cos\phi & bc-bc\cos\phi -a\sin\phi \\ ca-ca\cos\phi - b\sin\phi & bc-bc\cos\phi+ a\sin\phi & c^2+(1-c^2)\cos\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left\{ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi\begin{pmatrix} 1-a^2 & -ab & -ca \\ -ab & 1-b^2 & -bc \\ -ca & -bc & 1-c^2 \end{pmatrix} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right\} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left[ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi \left\{ \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}-\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} \right\} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right] \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix}</math>は<math>\boldsymbol{e}</math>の第<math>i</math>成分と第<math>j</math>成分を掛けたものが<math>(i, j)</math>成分となる行列になっていることがわかる。これを<math>\boldsymbol{e}\otimes\boldsymbol{e}</math>と書くことにする。<math>\sin\phi</math>に係る行列を<math>\mathbf{N}</math>と置くと、
:<math>\boldsymbol{r}'=\{\boldsymbol{e}\otimes\boldsymbol{e}+\cos\phi(\mathbf{E}_3-\boldsymbol{e}\otimes\boldsymbol{e})+\sin\phi\mathbf{N}\}\boldsymbol{r}</math>
という表示を得る。
更に、<math>\mathbf{N}^2=\begin{pmatrix} -b^2-c^2 & ab & ca \\ ab & -c^2-a^2 & bc \\ ca & bc & -a^2-b^2 \end{pmatrix}</math>と<math>\|\boldsymbol{e}\|=\sqrt{a^2+b^2+c^2}=1</math>より
:<math>\boldsymbol{e}\otimes\boldsymbol{e}=\mathbf{N}^2+(a^2+b^2+c^2)\mathbf{E}_3=\mathbf{N}^2+\mathbf{E}_3</math>
が成り立つので、最終的に
:<math>\boldsymbol{r}'=(\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2)\boldsymbol{r}</math>
と二次の行列多項式で表示される。
なお、<math>\otimes</math>は発展節で紹介する'''テンソル積'''を表している。
ここで、行列<math>\mathbf{N}</math>についてより具体的に考えてみる。
先ず、<math>{}^t\!\mathbf{N}=-\mathbf{N}</math>が成り立つので<math>\mathbf{N}</math>は反対称行列(歪対称行列・交代行列)である。
<math>\mathbf{N}\boldsymbol{r}</math>を計算すると
:<math>\mathbf{N}\boldsymbol{r}=\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}=\begin{pmatrix} br_3-cr_2 \\ cr_1-ar_3 \\ ar_2-br_1 \end{pmatrix}=\boldsymbol{e}\times\boldsymbol{r}</math>
則ち、<math>\mathbf{N}</math>は<math>\boldsymbol{e}</math>に関する外積(形式的には<math>\boldsymbol{e}\times</math>という左演算)を一次変換とみて表現行列に直したものである。
更に、成分計算により<math>\mathbf{N}^3=-\mathbf{N}</math>という性質が成り立つことも判る。外積を「ベクトルを90°回転させる演算」とみると、二回の演算によって180°回転するということなのでこの結果は妥当である。
ここで行列自然指数関数<math>\exp(\phi\mathbf{N})=\sum_{i=0}^\infty \frac{(\phi\mathbf{N})^i}{i!}</math>を考えてみると上の性質より三次以上の項は<math>\mathbf{N}^4=-\mathbf{N}^2, \mathbf{N}^5=\mathbf{N},\cdots</math>のように全て二次以下に帰着できる。<br>
また、自然指数関数のテイラー展開は絶対収束級数なので各項は可換であり、<math>\mathbf{N}</math>の二次式として纏め直すと
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3 + (\phi-\frac{\phi^3}{3!}+\frac{\phi^5}{5!}-\frac{\phi^7}{7!}+\cdots) \mathbf{N}+(\frac{\phi^2}{2!}-\frac{\phi^4}{4!}+\frac{\phi^6}{6!}-\frac{\phi^8}{8!}+\cdots)\mathbf{N}^2</math>
ここで一次・二次の係数はそれぞれ正弦関数・正矢関数のテイラー展開になっているので結局は
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2</math>
ここから、<math>\exp(\phi\mathbf{N})</math>は角度<math>\phi</math>に関する有限回転に対応することが判った。
このことは以下の考え方でも求まる。<br>
<math>\mathbf{N}</math>の最小方程式は<math>\mathbf{N}^3+\mathbf{N}=\mathbf{O}_3</math>より<math>x(x^2+1)=0</math>であり固有値は<math>0, \pm{i}</math>と求まるので、<math>\exp(\phi\mathbf{N})</math>の対角化行列は
:<math>\begin{pmatrix} e^{0\phi} & 0 & 0 \\ 0 & e^{i\phi} & 0 \\ 0 & 0 & e^{-i\phi} \end{pmatrix}</math>
ここで任意の解析関数<math>f</math>について<math>f(\mathbf{N})</math>のテイラー展開は二次以下の多項式になるので
:<math>\exp(\phi\mathbf{N})=\alpha\mathbf{E}_3+\beta\mathbf{N}+\gamma\mathbf{N}^2</math>
これを実多項式に戻した<math>\alpha+\beta{x}+\gamma{x^2}</math>が<math>e^{\phi{x}}</math>と任意の固有値で一致すればよい(二次補間)ので、
:<math>\begin{cases} e^0 = \alpha \\ e^{i\phi} = i\beta -\gamma \\ e^{-i\phi} = -i\beta-\gamma \end{cases}</math>
:<math>\iff \begin{cases} 1 = \alpha \\ \cos\phi+i\sin\phi = (\alpha -\gamma) + i\beta \end{cases}</math>
:<math>\therefore \begin{cases} \alpha=1 \\ \beta=\sin\phi \\ \gamma=1-\cos\phi=\mathrm{versin}\,\phi \end{cases}</math>
則ち、<math>\mathbf{N}^3=-\mathbf{N}</math>という構造は<math>\Psi_\mathbf{N}(x)=x(x^2+1)</math>という最小多項式に起因するということである。
更に[[表現論]]の観点から見ると、三次直交行列全体である回転群<math>SO(3)</math>に対し、<math>\mathbf{N}</math>は<math>SO(3)</math>の単位元に於ける接空間(三次反対称行列全体・則ちリー代数<math>\mathfrak{so}(3)</math>)の元であり、<math>\exp(\phi\mathbf{N})</math>はリー群<math>SO(3)</math>の元である。ここで行列自然指数関数は「リー代数からリー群へ引き戻す写像」なので'''指数写像'''と呼ばれる。
これが[[#フレネ標搆]]で述べた「直交変換の一次近似が反対称変換」という事実のより正確な表現である。
補足だが、力学で扱う[[w:オイラー角]]というものを導入するとロドリゲスの公式を各座標軸に関する回転の合成で表すこともできる。
===種々の曲率===
ここでは三次元空間内の正則曲面について考える。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>上で定義され弧長パラメータ表示された正則曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t(s), u(s))</math>を考える。
<math>C</math>の接ベクトルは合成関数微分公式より
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}}{ds}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}</math>
と表示される。
ここで両辺の<math>ds</math>を形式的に払うと
:<math>\boldsymbol{t}ds=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
これの自分自身との内積をとると
:<math>\|\boldsymbol{t}\|^2(ds)^2=\left\|\frac{d\boldsymbol{r}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2(du)^2</math>
弧長パラメトライズされた接ベクトルは単位ベクトルであり、右辺のベクトル演算の部分を第一基本量で置き換えると
:<math>ds^2=E(dt)^2+2Fdtdu+G(du)^2</math>
と、第一基本形式を別の方法で得られた。
<math>C</math>の主法線ベクトルは合成関数微分を繰り返し適用することで
:<math>\boldsymbol{n}_C=\frac{d\boldsymbol{t}}{ds}=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d}{ds}\left(\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d}{ds}\left(\frac{du}{ds}\right)</math>
:<math>=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\frac{du}{ds}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\frac{du}{ds}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
:<math>=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\left(\frac{dt}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+2\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}\frac{du}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\left(\frac{du}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
ここで、<math>S</math>の法線ベクトル<math>\boldsymbol{n}_S=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>は一般に<math>\boldsymbol{n}_C</math>と一次従属とは限らない。
後の話を単純にするため<math>\boldsymbol{n}_S</math>を正規化したベクトルを<math>\boldsymbol{e}_S</math>と置いて<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S</math>を計算してみる。
:<math>\boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>より
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{dt}{ds}\right)^2+2\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S\right)\frac{dt}{ds}\frac{du}{ds}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{du}{ds}\right)^2</math>
ここで各内積<math>L=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S,\quad M=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S,\quad N=\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S</math>を<math>S</math>の'''第二基本量'''と呼ぶ。
<math>\boldsymbol{n}_C, \boldsymbol{e}_S</math>のなす角を<math>\psi</math>とすると<math>C</math>の曲率を<math>\kappa_C</math>として
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\kappa_C \cos\psi</math>
なので<math>ds</math>に関して形式的に通分して
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
右辺の分子<math>I\!I:=L(dt)^2+2Mdtdu+N(du)^2</math>を<math>S</math>の'''第二基本形式'''という。
<math>\begin{cases}\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\boldsymbol{e}_S=0 \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\boldsymbol{e}_S=0 \end{cases}</math>を<math>t</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \end{cases}</math>
また、<math>u</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \end{cases}</math>
ここから第二基本量は
:<math>L=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}},\quad M=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad N=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}</math>
とも表示され、第二基本形式の別表示
:<math>I\!I=-\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
を得る。
これは更に全微分から微小ベクトル同士の内積として
:<math>I\!I=-d\boldsymbol{r}\cdot{d}\boldsymbol{e}_S</math>
とも書ける。
第一基本形式は曲面上の微小変位の自身との内積だったが、第二基本形式は曲面上の微小変位と法線方向の微小変位の内積である。則ち、第一基本形式は曲面の内在的な量、第二基本形式は曲面の外在的な量である。
第一基本形式と同様に第二基本形式は二次形式なので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{H}=\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>と置くと
:<math>I\!I={}^t\!\boldsymbol{v}\mathbf{H}\boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{H}</math>を'''第二基本行列'''という。
ここで、モンジュ表示された曲面<math>z=f(x, y)</math>に対して第二基本行列を考えてみる。
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} t \\ u \\ f(t, u)\end{pmatrix}</math>なので[[解析学基礎/多変数関数の微積分#全微分]]の結果を参照すると直ちに
:<math>L=\frac{\frac{\partial^2{f}}{\partial{t}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad M=\frac{\frac{\partial^2{f}}{\partial{t}\partial{u}}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad N=\frac{\frac{\partial^2{f}}{\partial{u}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}</math>
:が判るので、
:<math>\mathbf{H}=\frac{1}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}\begin{pmatrix} \frac{\partial^2{f}}{\partial{t}^2} & \frac{\partial^2{f}}{\partial{tu}} \\ \frac{\partial^2{f}}{\partial{tu}} & \frac{\partial^2{f}}{\partial{u^2}} \end{pmatrix}</math>
これはヘッシアンを法線の長さで割った行列である。
則ち、任意の正則曲面に対して第二基本行列はヘッセ行列と同じ役割をすると考えられる。
実際、点<math>\mathrm{P}</math>の開近傍で<math>\det\mathbf{H}</math>が正である曲面は<math>\mathrm{P}</math>の開近傍で上下どちらかに凸であり、負である曲面は<math>\mathrm{P}</math>で鞍点となることが知られている。
このように第二基本形式は曲面の「曲がり方」を表す量と考えられるので、曲面に対する曲率も考えられる。
ここで第二基本形式を定義した式
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
に立ち戻ると、右辺の分母は<math>s</math>に依存しない第一基本形式なので第一基本量を用いて
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>
右辺を形式的に<math>dt^2</math>で割ると
:<math>\kappa_C\cos\psi=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
この右辺は<math>\boldsymbol{n}_C</math>に依存しない量なので<math>\boldsymbol{n}_S, \boldsymbol{n}_C</math>のなす角度である<math>\psi</math>にも依存しない。
そこで、この値を曲面<math>S</math>の'''法曲率'''と定義する。
:<math>\varkappa:=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
法曲率の幾何学的意味を考える。
<math>\varkappa=\kappa_C\cos\psi</math>より、<math>\cos\psi=1</math>のとき<math>S</math>の法曲率と<math>C</math>の曲率が一致する。このとき<math>\boldsymbol{n}_S /\!\!/ \boldsymbol{n}_C</math>であり、<math>C</math>は曲面上の点<math>\mathrm{P}</math>とそこでの曲面の法線<math>\boldsymbol{n}_S(\mathrm{P})</math>を含む平面で曲面を切断した切り口('''法切り口''')に対応する曲線('''法曲線''')である。
則ち、法曲率は法曲線の曲率に対応する。
なお、法曲線<math>C</math>は切断に用いる平面に拘束されるので接ベクトル<math>\boldsymbol{t}_C</math>も平面に拘束される。則ち、拘束平面は<math>\{\boldsymbol{t}_C, \boldsymbol{n}_C\}</math>の張る接触平面である。
法切り口を齎す平面は法線を軸にして回転することができ、その回転角によって法曲率の値が異なることになる。この回転は具体的にはロドリゲスの公式によって記述されるが、法曲率の極大値・極小値は<math>\varkappa</math>を<math>k=\frac{du}{dt}</math>の関数とみることで以下のように考えることができる。
:法曲率の定義式より
::<math>\varkappa(E+2Fk+Gk^2)=L+2Mk+Nk^2</math>・・・(*)
:これが<math>k</math>の恒等式なので微分しても等号が成り立ち、
::<math>\frac{d\varkappa}{dk}(E+2Fk+Gk^2)+\varkappa(2F+2Gk)=2M+2Nk</math>
:フェルマーの定理より<math>\frac{d\varkappa}{dk}=0</math>を満たす<math>(k, \varkappa)</math>が極値点の候補なので
::<math>\varkappa(2F+2Gk)=2M+2Nk</math>・・・(@)
:が成り立つ必要がある。
:これを<math>k</math>倍して(*)を引くと
::<math>\varkappa(E+Fk)=L+Mk</math>・・・(#)
:これと(@)を連立して
::<math>k=-\frac{\varkappa{F}-M}{\varkappa{G}-N}</math>
:これを(#)に代入して
::<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)=0</math>・・・($)
:という二次方程式を得る。
:($)が相異なる二つの実根<math>\kappa_1, \kappa_2</math>を持てばそれらは極小値・極大値である。
:逆に、極小値・極大値を持てばフェルマーの定理より($)を満たす。//
この<math>\kappa_1, \kappa_2</math>を<math>S</math>の'''主曲率'''という。
($)の左辺を変形してみると、
:<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)</math>
:<math>=\{EG\varkappa^2-(GL+EN)\varkappa+LN\}-\{F^2\varkappa^2-2FM\varkappa+M^2\}</math>
:<math>=(L-\varkappa{E})(N-\varkappa{G})-(M-\varkappa{F})^2</math>
:<math>=\det\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}</math>
:<math>=\det(\mathbf{H}-\varkappa\mathbf{K})</math>
という、第一基本行列と第二基本行列を用いた形が出てきた。
ここで<math>\varkappa=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>を変形して
:<math>(L-\varkappa{E})dt^2+2(M-\varkappa{F})dtdu+(N-\varkappa{G})du^2=0</math>
これを二次形式表示すると
:<math>\begin{pmatrix} dt & du \end{pmatrix}\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}\begin{pmatrix} dt \\ du \end{pmatrix}=0</math>
と、同じ<math>\mathbf{H}-\varkappa\mathbf{K}</math>がここでも登場する。
この行列は法曲率を持つ方向を二次形式で判定しているが、主曲率を持つ場合はラグランジュの未定乗数法より<math>(\mathbf{H}-\varkappa\mathbf{K})\begin{pmatrix} dt \\ du \end{pmatrix}=\boldsymbol{0}</math>が成り立ち、これが<math>\det(\mathbf{H}-\varkappa\mathbf{K})=0</math>という式の正体である。更に言うと、<math>\mathbf{H}\boldsymbol{x}=\varkappa\mathbf{K}\boldsymbol{x}</math>という一般化固有値問題の解が主曲率<math>\kappa_1, \kappa_2</math>に対応している。このときの一般化固有ベクトル<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>を主曲率に対する'''主方向'''という。
二つの主方向の関係を調べる。
:主方向の定義より
::<math>\begin{cases} (\mathbf{H}-\kappa_1\mathbf{K}) \boldsymbol{x}_1=\boldsymbol{0} \\ (\mathbf{H}-\kappa_2\mathbf{K}) \boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
:なので
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2(\mathbf{H}-\kappa_1\mathbf{K})\boldsymbol{x}_1=\boldsymbol{0} \\ {}^t\!\boldsymbol{x}_1(\mathbf{H}-\kappa_2\mathbf{K})\boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
:第一基本行列・第二基本行列とも対称行列なので第二式の転置をとって
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_2{}^t\!\boldsymbol{x}_2 \mathbf{K}\boldsymbol{x}_1 \end{cases}</math>
:上下の式の差をとって
::<math>(\kappa_1-\kappa_2){}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\boldsymbol{0}</math>
:<math>\kappa_1=\kappa_2</math>のときは<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>に関する恒等式であるので、<math>\kappa_1\neq\kappa_2</math>のときを考える。
::<math>{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_2\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_1+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_1\right)=0</math>
:この二つのベクトルは主方向を向くので2つの主方向は直交する。
<math>\kappa_1=\kappa_2</math>(法曲率<math>\varkappa(t, u)=\mathrm{const}.</math>)の場合、<math>S</math>の接平面内の任意の方向が主方向となるので「どの方向にも一様な曲がり方をする」と考えられる。このような主曲率を与える点を'''臍点'''という。任意の点が臍点である曲面は球面である。
上の結果から、'''臍点でない各点で2つの主方向は直交する'''。
主曲率に対して解と係数の関係から得る値
:<math>H=\frac{\kappa_1+\kappa_2}{2}=\frac{GL+ENN-2FM}{2EG-F^2},\quad K=\kappa_1\kappa_2=\frac{LN-M^2}{EG-F^2}</math>
をそれぞれ<math>S</math>の'''平均曲率'''・'''全曲率'''('''ガウス曲率''')という。
全曲率の式を見ると<math>K=\frac{LN-M^2}{EG-F^2}=\frac{\det\mathbf{H}}{\det\mathbf{K}}=\det(\mathbf{K}^{-1}\mathbf{H})</math>である。
そこで、<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>と定義してみると行列式の性質より<math>K</math>は<math>\mathbf{S}</math>の固有値の積である。
ここで<math>\mathbf{S}</math>の固有方程式は
:<math>\det(\mathbf{S}-\lambda\mathbf{E})=\det(\mathbf{K}^{-1}\mathbf{H}-\lambda\mathbf{E})=\det\mathbf{K}^{-1}\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
<math>\det\mathbf{K}^{-1}\neq0</math>より
:<math>\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
これは主曲率を定義した二次方程式($)のことだったので、この方程式の解である固有値は<math>\lambda=\kappa_1, \kappa_2</math>である。
則ち、<math>K=\det\mathbf{S},\quad H=\frac{1}{2}\mathrm{tr}\,\mathbf{S}</math>が成り立つ。
更に、第一基本行列から第二基本行列への一次変換を考えると以下が成り立つことも判る。但し、こちらもフレネ=セレーと同様に厳密にはベクトルを列ではなく行に並べるのが正しいことに注意。
{{定理|(ヴァインガルテンの式)}}
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=-\mathbf{S}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
{{定理終わり}}
*証明
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>と置く。
:両辺に<math>{}^t\!\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>を右から掛けると行列積であることに注意して
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{t}} & \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{u}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
:<math>\therefore -\mathbf{H}=\mathbf{A}\mathbf{K}</math>
:<math>\therefore \mathbf{A}=-\mathbf{H}\mathbf{K}^{-1}=-\mathbf{K}^{-1}\mathbf{H}=-\mathbf{S}</math>//
臍点で行列<math>\mathbf{H}-\varkappa\mathbf{K}</math>を考えると<math>\varkappa=\kappa_1=\kappa_2</math>及び「主方向が任意」から
:<math>\mathbf{H}-\varkappa\mathbf{K}=\mathbf{O}</math>
であり、これを成分で書き下せばヴァインガルテンの式より法曲率に関して
:<math>\begin{cases} \varkappa=\frac{L}{E}=\frac{M}{F}=\frac{N}{G} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{cases}</math>
を得る。
<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>に於いて<math>\mathbf{K}</math>は正定値対称行列なので正則対称な主平方根<math>\mathbf{K}^{1/2}</math>が存在して
:<math>\mathbf{S}=\mathbf{K}^{-1/2}\mathbf{K}^{-1/2}\mathbf{H}</math>
ここで<math>\mathbf{T}=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>という相似変換で表された行列を考えてみると
:<math>\mathbf{K}^{1/2}\mathbf{S}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{1/2}\mathbf{K}^{-1}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{T}</math>
であり、<math>\mathbf{S}\sim\mathbf{T}</math>なのでこれらの2つの固有値の組は一致する。
:<math>\mathbf{H}={}^t\!\mathbf{H}</math>
より
:<math>{}^t\!\mathbf{T}=\mathbf{T}</math>
が成り立つので、<math>\mathbf{T}</math>は対称行列であり2つの固有値は実数である。
よって<math>\mathbf{S}</math>の二つの固有値はともに実数であるが、この固有値は($)の解<math>\kappa_1, \kappa_2</math>のことだったので($)は虚根を持たず、'''主曲率は必ず実数'''である。
モンジュ表示された曲面では先程求めた第二基本量の表式から直ちに
:<math>H=\frac{\left\{1+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}\frac{\partial^2{f}}{\partial{x}^2}+\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2\right\}\frac{\partial^2{f}}{\partial{y}^2}-2\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}\frac{\partial^2{f}}{\partial{x}\partial{y}}}{{2\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^\frac{3}{2}}},\quad K=\frac{\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}-\left(\frac{\partial^2{f}}{\partial{x}\partial{y}}\right)^2}{\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^2}</math>
を得る。
等温座標系では<math>\mathbf{K}^{-1}=\frac{1}{\lambda^2}\mathbf{E}_3</math>より<math>\mathbf{S}=\frac{1}{\lambda^2}\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>なので、平均曲率・ガウス曲率はそれぞれ<math>H=\frac{L+N}{2\lambda^2},\quad K=\frac{LN-M^2}{\lambda^4}</math>と簡単に求まる。
ある点に於ける2つの主曲率はそれぞれその点に於ける極大方向・極小方向の曲がり方を与えるので、<math>\kappa_1, \kappa_2</math>の符号の組み合わせがその点近傍に於ける曲面の曲がり方を与えることになる。
具体的には、両方とも正なら上に凸、負なら下に凸、異符号なら鞍点となる。主曲率が0ならばその主方向に対して曲がっていないということである。
主曲率の積である全曲率の符号を見ても良い。全曲率が正ならば上下どちらかに凸、負ならば鞍点である。第一基本行列が正定値行列であることから主曲率の符号は第二基本行列の行列式と一致するので先程の「第二基本行列がヘッセ行列の一般化」という話に繫がる。
任意点で<math>H=0</math>を満たす曲面を'''極小曲面'''という。極小曲面は曲面を連続変形させたときに曲面積の最小値を与える曲面であることが知られている。
平面は自明な極小曲面である。他にも<math>z=\ln\left(\frac{\cos y}{\cos x}\right)(-\frac{\pi}{2}<x, y<\frac{\pi}{2})</math>(シェルクの第一曲面)などが知られている。
極小曲面は表面張力の理論に応用されている。
例えば石鹼膜のつくる曲面について、膜上点での表裏の圧力差<math>P</math>・その点での表面張力<math>T</math>及び平均曲率<math>H</math>に対し<math>P=2TH</math>が成立する(ヤング=ラプラスの公式)ことが知られているが、閉曲線である枠に張った膜が割れずに安定して存在する条件は全ての点で<math>P=H=0</math>、則ち極小曲面のときである。
曲面<math>S</math>上の微小変位<math>d\boldsymbol{r}</math>、法線方向の微小変位<math>d\boldsymbol{e}_S</math>に対して第一基本形式は<math>I=d\boldsymbol{r}\cdot d\boldsymbol{r}</math>、第二基本形式は<math>I\!I=-d\boldsymbol{r}\cdot d\boldsymbol{e}_S</math>であった。
最後の組み合わせである<math>d\boldsymbol{e}_S\cdot d\boldsymbol{e}_S</math>を<math>S</math>の'''第三基本形式'''と定義する。
:<math>I\!I\!I:=\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
:<math>=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2(du)^2</math>
これを同様に二次形式の行列表示に直すと<math>\mathbf{W}:=\begin{pmatrix} \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2 & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} & \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2 \end{pmatrix}</math>として
:<math>I\!I\!I={}^t\!\boldsymbol{v}\mathbf{W}\boldsymbol{v}</math>
この<math>\mathbf{W}</math>を'''第三基本行列'''という。
見て判る通り、'''第三基本量'''は<math>P=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2,\quad Q=\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad R=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2</math>である。
臍点でないとき2つの主方向は直交するので、臍点を持たない曲面に対して主方向を直交基底としたパラメータ表示<math>\boldsymbol{r}=\boldsymbol{r}(p, q)</math>を考えられる。
このとき、各基本形式は
:<math>I=dp^2+dq^2</math>
:<math>I\!I=\kappa_1dp^2+\kappa_2dq^2</math>
:<math>I\!I\!I=\kappa^2_1dp^2+\kappa^2_2dq^2</math>
と表示されることが知られている。
第三基本形式は第一基本形式と第二基本形式の線型結合で表示される。
:<math>I\!I\!I=2HI\!I-KI</math>
このことはヴァインガルテンの式と平均曲率・全曲率の定義を用いて確かめられる。
これに関連し、第二基本量で定義された全曲率は第一基本量のみで表されることが知られている。つまり、曲率という外在的な量を第一基本形式という内在的な量のみで記述でき、言い換えると「曲面を考えるときに'''曲面の外側の空間を考える必要が無い'''」ということである。
この定理は発見者自身も驚愕したことから'''ガウスの驚異の定理'''と呼ばれている。詳しくは発展節で扱う。
なお、平均曲率を考えるときは外側の空間の情報が必要である。
==直交曲線座標系==
{{節stub}}
===円筒座標系===
平面の座標系として直交座標の他に斜交座標、極座標(円座標)、重心座標などがあったように、空間の座標系も複数通り考えられる。
空間座標を3つの実数の組<math>(r, \theta, z)</math>で表した座標系を'''円筒座標系'''('''円柱座標系'''、cylindrical coordinate system)という。ただし、<math>r</math>は原点からの(符号付き)距離、<math>\theta</math>は基準面に於ける始線からの正の回転角、<math>z</math>は基準面からの高さである。
円筒座標系は、円座標系の<math>r\theta</math>平面に<math>z</math>軸方向の次元を加えた3次元空間の座標と考えられる。
そのため、円筒座標系と直交座標系の対応は以下のようになる。
:<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \\ z=z \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2} \\ \theta = \arctan\frac{y}{x} \\ z=z \end{cases}</math>
但し、<math>r</math>は基準面の裏側では負とする。
直交座標の<math>z</math>軸を基に円筒座標系の座標軸を決定する。一般に座標軸は直線とは限らないので、「軸」ではなく「曲線」と呼ぶことにする('''座標線''')。なお、「曲線」という語は一般に「直線」を包含する。
:<math>r</math>曲線:<math>z</math>軸上の点を通り<math>z</math>軸に垂直な半直線。
:<math>\theta</math>曲線:<math>z</math>軸を法線とする平面内にあり、中心が<math>z</math>軸上にある円周。
:<math>z</math>曲線:<math>z</math>軸に平行な直線。
ここで、各曲線に沿った微小変化がどのように表されるか見ていく。
<math>\boldsymbol{f}: (r,\theta,z)\to(x,y,z)</math>とする。
<math>\boldsymbol{f}</math>全体の微小変化は全微分<math>d\boldsymbol{f}=\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}</math>で表される。
上で求めた関係式より
:<math>\boldsymbol{f}\begin{pmatrix} r \\ \theta \\ z\end{pmatrix}=\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} r\cos\theta \\ r\sin\theta \\ z \end{pmatrix}</math>
なので、
:<math>\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} = \begin{pmatrix} \frac{\partial}{\partial{r}}r\cos\theta & \frac{\partial}{\partial{\theta}}r\cos\theta & \frac{\partial}{\partial{z}}r\cos\theta \\ \frac{\partial}{\partial{r}}r\sin\theta & \frac{\partial}{\partial{\theta}}r\sin\theta & \frac{\partial}{\partial{z}}r\sin\theta \\ \frac{\partial}{\partial{r}}z & \frac{\partial}{\partial{\theta}}z & \frac{\partial}{\partial{z}}z \end{pmatrix} = \begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}</math>
よって
:<math>d\boldsymbol{f}=\begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}=\begin{pmatrix} \cos\theta \\ \sin \theta \\ 0 \end{pmatrix}dr + \begin{pmatrix} -\sin\theta \\ \cos\theta \\ 0 \end{pmatrix}rd\theta + \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}dz </math>
再右辺の各項を<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>と書くことにすると、<math>|d\vec{r}|, |d\vec{\theta}|, |d\vec{z}|</math>はそれぞれ<math>dr, rd\theta, dz</math>とわかる。<math>r, \theta, z</math>を物理量として捉えたとき<math>d\theta</math>の単位はラジアン(無次元量)であり、<math>rd\theta</math>の単位はメートル(長さの次元1)なので、次元の整合性が取れる。
纏めると以下のようになる。
{| class="wikitable"
| ||style="text-align:center;"| <math>\boldsymbol{e}_x</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_y</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_z</math>成分 ||style="text-align:center;"| ノルム
|-
|style="text-align:center;"| <math>d\vec{r}</math> ||style="text-align:center;"| <math>\cos\theta dr</math> ||style="text-align:center;"| <math>\sin\theta dr</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>dr</math>
|-
|style="text-align:center;"| <math>d\vec{\theta}</math> ||style="text-align:center;"| <math>-r\sin\theta d\theta</math> ||style="text-align:center;"| <math>r\cos\theta d\theta</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>rd\theta</math>
|-
|style="text-align:center;"| <math>d\vec{z}</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>1</math> ||style="text-align:center;"| <math>dz</math>
|}
ここで<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>は内積を取ればどの組も互いに直交することが容易にわかるので、この3つのベクトルは3次元ユークリッド空間の直交基底である。
そこで、それぞれのベクトルを正規化することで各軸曲線方向の基本ベクトルを得る。
:<math>\boldsymbol{e}_r = \frac{d\vec{r}}{dr} = \cos\theta \boldsymbol{e}_x + \sin\theta \boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_\theta = \frac{d\vec{\theta}}{rd\theta} = -\sin\theta\boldsymbol{e}_x+\cos\theta\boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_z=\frac{d\vec{z}}{dz}=\boldsymbol{e}_z</math>
これを一次変換の形式で表すと
:<math>\begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix}</math>
となる。
このときの表現行列を、座標系または基底ベクトルを変換することから'''座標変換行列'''又は'''基底変換行列'''という。場合によっては'''変換テンソル'''とも呼ぶ。
なお、この直交座標⇒円筒座標の座標変換行列は、<math>xyz</math>空間に於ける<math>z</math>軸まわりの回転行列に等しい。
逆基底変換はこの座標変換行列の逆行列を求めれば定式化できる。
回転行列は直交行列なので
:<math>\begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} ^{-1}= {}^t \! \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} </math>
であり、
:<math>\begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix}</math>
円筒座標系は、[[電磁気学]]の解析でよく使用される。
例えば、高校物理の公式<math>B(r)=\frac{\mu_0I}{\tau r}</math>は、円筒座標系を知っていれば「電流が<math>z</math>軸に平行であることから磁場は<math>z</math>方向に一葉且つ<math>\theta</math>方向に回転対称なので、<math>r</math>方向の項のみが寄与する」と理解される。
===極座標系===
高等学校までの地理で習ったように、球面上の位置は緯度<math>\theta</math>と経度<math>\phi</math>で定めることができる。
一般に三次元空間で球面上のある点の座標を定めるには、更に球の中心からの距離<math>r</math>が必要である。
このようにして定められる座標系を'''三次元極座標系'''(polar coordinate system in 3D)または'''球(面)座標系'''(spherical coordinate system)という。
xyz座標空間の点<math>\mathrm{P}(x, y, z)</math>の極座標表示を考える。
<math>r=|\overrightarrow{\mathrm{OP}}|=\sqrt{x^2+y^2+z^2}</math>は容易にわかる。
<math>\theta</math>は<math>z</math>軸からの'''天頂角'''(zenith angle)であり、<math>\overrightarrow{\mathrm{OP}}</math>の<math>z</math>軸への正射影ベクトルを<math>\overrightarrow{\mathrm{OH}}=\vec{h}</math>とすると<math>\tan\theta = \frac{|\vec{h}|}{z}</math>が成り立つ。<math>|\vec{h}|=\sqrt{x^2+y^2}</math>より、<math>\theta=\arctan \frac{\sqrt{x^2+y^2}}{z}</math>である。
<math>\phi</math>は<math>x</math>軸からの'''方位角'''(azimuth angle)であり、<math>\mathrm{P}</math>から<math>xy</math>平面に降ろした垂足<math>\mathrm{Q}</math>を考えると<math>\tan\phi=\frac{y}{x}</math>とわかる。よって、<math>\phi=\arctan\frac{y}{x}</math>である。
逆に、これを<math>\mathrm{P}(x, y, z)</math>に復元することを考える。
<math>\triangle\mathrm{OHP}</math>について<math>\angle\mathrm{HOP}=\theta</math>なので、<math>z=\overline{\mathrm{OH}}=r\cos\theta</math>。
また、<math>\triangle\mathrm{OPQ}</math>について<math>\angle\mathrm{OPQ}=\theta</math>なので、<math>\overline{\mathrm{OQ}}=r\sin\theta</math>。
よって<math>x=\overline{\mathrm{OQ}}\cos\phi=r\sin\theta\cos\phi, y=\overline{\mathrm{OQ}}\sin\phi=r\sin\theta\sin\phi</math>。
以上を纏めると、直交座標と球面座標の対応関係は
:<math>\begin{cases} x=r\sin\theta\cos\phi \\ y=r\sin\theta\sin\phi \\ z=r\cos\theta \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2+z^2} \\ \theta=\arctan\frac{\sqrt{x^2+y^2}}{z} \\ \phi=\arctan\frac{y}{x} \end{cases}</math>
一般に緯度は<math>-90^\circ \leqq \theta \leqq 90^\circ</math>、経度は<math>-180^\circ \leqq \phi \leqq 180^\circ</math>の範囲で表される(但し、符号の違いは東⇔西、南⇔北の違いである)。同様に、球面座標の天頂角<math>\theta</math>、方位角<math>\phi</math>は<math>\theta \in [-\frac{\pi}{4}, \frac{\tau}{4}], \phi \in [-\frac{\tau}{2}, \frac{\tau}{2}]</math>で考える。赤道面より下側(すなわち南半球)では<math>\theta<0</math>とする。
直交座標の<math>z</math>軸を基に極座標系の座標線を決定する。
:<math>r</math>曲線:原点を通る半直線。
:<math>\theta</math>曲線:原点中心で<math>z</math>軸上の一点から出る半円弧。
:<math>\phi</math>曲線:<math>z</math>軸を法線とする平面内で<math>z</math>軸上に中心を持つ円周。
各曲線に沿った微小変化は円柱座標系の場合と同様、ベクトル場の全微分を用いて
:<math>\begin{cases} d\vec{r}= \begin{pmatrix} \sin\theta\cos\phi \\ \sin\theta\sin\phi \\ \cos\theta \end{pmatrix} dr \\ d\vec{\theta}= \begin{pmatrix} \cos\theta\cos\phi \\ \cos\theta\sin\phi \\ -\sin\theta \end{pmatrix}rd\theta \\ d\vec{\phi} = \begin{pmatrix} -\sin\phi \\ \cos\phi \\ 0 \end{pmatrix} r\sin\theta d\phi \end{cases}</math>
と求まる。
これらは(内積の結果から)互いに直交するので、円柱座標の場合と同様の議論により
:<math>\begin{pmatrix} \sin\theta\cos\phi & \sin\theta\sin\phi & \cos\theta \\ \cos\theta\cos\phi & \cos\theta\sin\phi & -\sin\theta \\ -\sin\phi & \cos\phi & 0 \end{pmatrix}</math>
と変換テンソルが求まる。
これも直交行列であるので、逆変換テンソルは
:<math>\begin{pmatrix} \sin\theta\cos\phi & \cos\theta\cos\phi & \cos\phi \\ \sin\theta\sin\phi & \cos\theta\sin\phi & -\sin\phi \\ -\sin\theta & \cos\theta & 0 \end{pmatrix}</math>
と求まる。
球面座標系は、[[古典力学]]の解析でよく使用される。
例えば、赤道平面における角運動量保存則は<math>mr^2\frac{d\phi}{dt}=\mathrm{const}.</math>と表示されるが、これは<math>z</math>軸方向の角運動量を球面座標系の演算により取り出したものである。
球面座標系は特に機械制御に応用されている。
円柱座標系・球面座標系ともに各基底ベクトルが互いに直交しているので、そのことを明示して(且つ通常の直交座標系と区別して)'''直交曲線座標系'''(orthogonal curvilinear coordinate system)と呼ぶ場合がある。以下で扱う座標系たちも直交曲線座標系である。
===円環座標系===
===双極座標系===
===回転放物面座標系===
===放物柱座標系===
===回転楕円面座標系===
===楕円柱座標系===
===楕円体座標系===
==空間微分==
ここでは三次元ユークリッド空間で考える。
===勾配===
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\varphi\in C^1</math>のとき、
:<math>\mathrm{grad}\,\varphi := \begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}</math>
を<math>\varphi</math>の'''勾配'''(gradient)と定義する。
勾配の結果として得るベクトルを<math>\varphi</math>の'''勾配ベクトル'''ともいう。
勾配で定義される概念としては、電場が有名である。
:電位<math>\phi</math>に対する電場<math>\boldsymbol{E}</math>は
:<math>\boldsymbol{E}:=-\mathrm{grad}\,\phi</math>
勾配はベクトル量であるため、そのことを明示するため新たな演算子を導入する。
'''空間偏微分演算子'''(ハミルトン演算子)を
<math>\nabla:=\begin{pmatrix} \frac{\partial}{\partial{x}} \\ \frac{\partial}{\partial{y}} \\ \frac{\partial}{\partial{z}} \end{pmatrix}</math>
と定義する。
この演算子自体は偏微分作用素の対象を後接しないと意味を成さない。しかし、便宜的にベクトル量と考えてベクトルと同様の演算則が成り立つと見做す。そのため、この演算子に関する演算は[[w:記号の濫用]](symbol abuse)であることを註しておく。
<math>\nabla</math>の正式な読み方は'''ナブラ'''(nabla)であるが、<math>\Delta</math>(delta)を反転した形であることから'''エイトレッド'''(atled)とも読まれる。なお、ナブラの由来は「竪琴」を意味する古代ギリシャ語「νάβλα」である。
この演算子を用いれば勾配の表式は
:<math>\mathrm{grad}\,\varphi=\nabla\varphi</math>
となる。
<math>\varphi</math>はスカラー場なのでスカラー量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その積<math>\nabla\varphi</math>はベクトル量のスカラー倍、すなわちベクトル量であることが見て取れる。
勾配はスカラー場に対する偏微分の結果を並べたベクトルであるため、偏微分の性質とベクトルの性質を組み合わせて以下が成り立つと判る。
#<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>(線型性)
#<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(積の微分・ライプニッツ則)
#<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>(商の微分)
#<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>(合成関数微分)
任意点に対して勾配ベクトルが非零であるスカラー場を'''正則'''なスカラー場という。
以下、正則なスカラー場に限って扱う。
等位面<math>\varphi(x, y, z)=k(\mathrm{const}.)</math>上の点<math>\mathrm{P}(x_0, y_0, z_0)</math>を考える。
:<math>\mathrm{P}</math>を通り等位面に拘束される曲線のベクトル表示を<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>とする。
:等位面の方程式を<math>t</math>で両辺微分して
::<math>\frac{\partial{\varphi}}{\partial{x}}\frac{dx}{dt}+\frac{\partial{\varphi}}{\partial{y}}\frac{dy}{dt}+\frac{\partial{\varphi}}{\partial{z}}\frac{dz}{dt}=0</math>
:<math>t=t_0</math>のとき
::<math>\frac{\partial{\varphi}}{\partial{x}}x'(t_0)+\frac{\partial{\varphi}}{\partial{y}}y'(t_0)+\frac{\partial{\varphi}}{\partial{z}}z'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\cdot\boldsymbol{r}'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\perp\boldsymbol{r}'(t_0)</math>
ここで<math>\mathrm{P}</math>に於ける等位面の接平面は接ベクトル<math>\boldsymbol{r}'(t_0)</math>を含むため、<math>\nabla\varphi(\mathrm{P})</math>は点<math>\mathrm{P}</math>に於ける等位面の法線ベクトルである。
よって等位面の接平面の方程式は
:<math>\nabla\varphi(\mathrm{P})\cdot(\boldsymbol{x}-\overrightarrow{\mathrm{OP}})=0</math>
である。
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>の全微分は
:<math>d\varphi=\frac{\partial{\varphi}}{\partial{x}}dx+\frac{\partial{\varphi}}{\partial{y}}dy+\frac{\partial{\varphi}}{\partial{z}}dz</math>
これをベクトルの内積とみると
:<math>=\begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}\cdot\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
:<math>=\nabla\varphi\cdot d\boldsymbol{x}</math>
ここで変位ベクトル<math>d\boldsymbol{x}</math>を任意の方向を向いた単位ベクトル<math>\boldsymbol{e}</math>に拡張することを考えたい。
<math>\varphi(\mathrm{P})</math>に対して<math>\mathrm{P}</math>を始点とする<math>\boldsymbol{e}</math>方向の直線を考え、その上の点を<math>\mathrm{Q}</math>とする。
このとき、ベクトル変数<math>\boldsymbol{e}</math>による微分係数
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{\mathrm{Q\to P}}\frac{\varphi(\mathrm{Q})-\varphi(\mathrm{P})}{\overline{\mathrm{QP}}}</math>
を、<math>\varphi</math>の<math>\mathrm{P}</math>に於ける<math>\boldsymbol{e}</math>方向の'''方向微分係数'''と定義する。
方向微分係数はスカラー場に対し<math>\boldsymbol{e}</math>方向の変化率を与えるものと考えられる。そこで、方向微分係数が最大となる方向を考える。
:<math>\overrightarrow{\mathrm{PQ}}=t\boldsymbol{e}</math>と置く。
::<math>\overrightarrow{\mathrm{OQ}}=\begin{pmatrix} x_0+te_1 \\ y_0+te_2 \\ z_0+te_3 \end{pmatrix}</math>
::<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{t\to0}\frac{\varphi(x_0+te_1, y_0+te_2, z_0+te_3)-\varphi(x_0, y_0, z_0)}{t}</math>
:ここで<math>\Phi(t):=\varphi(x_0+te_1, y_0+te_2, z_0+te_3)</math>とすれば
::<math>=\lim_{t\to0}\frac{\Phi(t)-\Phi(0)}{t}</math>
::<math>=\frac{d\Phi(t)}{dt}</math>
::<math>=\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{x}}\frac{d(x_0+te_1)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{y}}\frac{d(y_0+te_2)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{z}}\frac{d(z_0+te_3)}{dt}</math>
::<math>=\frac{\partial{\varphi}(\mathrm{P})}{\partial{x}}e_1+\frac{\partial{\varphi}(\mathrm{P})}{\partial{y}}e_2+\frac{\partial{\varphi}(\mathrm{P})}{\partial{z}}e_3</math>
::<math>=\nabla\varphi(\mathrm{P})\cdot\boldsymbol{e}</math>
よって、全微分の式の<math>d\boldsymbol{x}</math>をそのまま<math>\boldsymbol{e}</math>に取り替えたものが方向微分係数の表式である。
内積を書き下すと<math>\|\boldsymbol{e}\|=1</math>より
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\|\nabla\varphi(\mathrm{P})\|\cos\theta</math>
よって最大値をとるのは<math>\cos\theta=1</math>則ち'''<math>\boldsymbol{e}</math>が勾配方向のとき'''である。また、方向微分係数の最大値は'''勾配のノルム'''である。
このように、勾配はスカラー場の各点に於ける傾きを表す。これは最右辺の式が「各軸方向の傾きを表すベクトルの和」になっていることからも直観的にわかる。ここから、「gradient」の和訳として「勾配」が充当されたのは妥当である。
方向微分係数を'''方向導関数'''に拡張することを考える。
形式的には方向微分係数の定点<math>\mathrm{P}</math>を変数<math>\boldsymbol{x}</math>に置き換えればいいだけである。
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\nabla\varphi(\boldsymbol{x})\cdot\boldsymbol{e}</math>
正式には極限を用いて
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\lim_{t\to0}\frac{\varphi(\boldsymbol{x}+t\boldsymbol{e})-\varphi(\boldsymbol{x})}{t}</math>
と定義する。
内積を書き下すと
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{x}}e_1+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{y}}e_2+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{z}}e_3</math>
これを[[解析学基礎/多変数関数の微積分#極値]]で扱った方向偏微分作用素として書き直すと
:<math>\left(e_1\frac{\partial}{\partial{x}}+e_2\frac{\partial}{\partial{y}}+e_3\frac{\partial}{\partial{z}}\right)\varphi(\boldsymbol{x})</math>
:<math>=(\boldsymbol{e}\cdot\nabla)\varphi(\boldsymbol{x})</math>
となる。
則ち、形式的には空間偏微分演算子の微分方向ベクトルとの右内積が方向偏微分作用素である。
更に、多変数関数のテイラー二次近似は
:<math>f(\boldsymbol{x})\fallingdotseq f(\boldsymbol{a})+\nabla{f}(\boldsymbol{a})\cdot(\boldsymbol{x}-\boldsymbol{a})+\frac{1}{2}{}^t\!(\boldsymbol{x}-\boldsymbol{a})\mathbf{D}(\boldsymbol{x}-\boldsymbol{a})</math>
と書けることが判る。但し、<math>\mathbf{D}</math>はヘッセ行列である。
多変数解析で扱った停留点(臨界点)は<math>\nabla\varphi(\mathrm{P})=\boldsymbol{0}</math>なる点<math>\mathrm{P}</math>として正式に定義される。また、ラグランジュの未定乗数法に於ける連立方程式も勾配を用いれば<math>\nabla\varphi(\mathrm{P})=\lambda\nabla\psi(\mathrm{P})</math>と書き表される。
スカラー場の全微分は勾配で表せたが、同様にベクトル場の全微分をナブラを用いて表すことを考える。
ベクトル場の全微分は
:<math>d\boldsymbol{a}=\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}} d\boldsymbol{x}</math>
で定義された。
ここで<math>n</math>次行列 <math>\mathbf{A}</math>と<math>n</math>項列ベクトル <math>\boldsymbol{a}</math>に対し、<math>(\mathbf{A} \circledast \boldsymbol{a})_{ij} = (\mathbf{A}_{ij}) a_i</math>となるような可換二項演算子 <math>\circledast</math>を定義する。これは本項独自の記法である。但し、<math>(\mathbf{P})_{ij}</math>は行列 <math>\mathbf{P}</math>の第ij成分を表す。
この記法を用いると、ヤコビ行列<math>\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}}</math>は<math>\nabla \circledast \boldsymbol{a}</math>と表すことができる。
則ち、ベクトル場の全微分は
:<math>d\boldsymbol{a} = (\nabla \circledast \boldsymbol{a}) d\boldsymbol{x}</math>
と表される。
これを形式的に
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}=\nabla \circledast \boldsymbol{a}</math>
と書き表すことができる。
則ち、ヤコビ行列はベクトル場のベクトル変数による導関数と見做せる。
ヤコビ行列はベクトル場の成分スカラー場に対する勾配ベクトルを行に並べたものという解釈もできるので、この考え方は自然である。
ここでベクトル場に対してスカラー場と同様に方向微分係数・方向導関数を考えると、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}\boldsymbol{v}</math>
が成り立つことが判る。
これもベクトル場の成分スカラー場に対する方向微分係数・方向導関数を列に並べたベクトルと解釈できる。
則ち、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
である。
===発散===
ベクトル場<math>\boldsymbol{a}=\boldsymbol{a}(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\boldsymbol{a}\in C^1</math>のとき、
:<math>\mathrm{div}\,\boldsymbol{a} := \frac{\partial{a_x}}{\partial{x}} + \frac{\partial{a_y}}{\partial{y}} + \frac{\partial{a_z}}{\partial{z}}</math>
を<math>\boldsymbol{a}</math>の'''発散'''(divergence)と定義する。
発散が用いられる概念としては、'''ガウスの法則'''が有名である。
:電荷密度<math>\rho</math>、電場<math>\boldsymbol{E}</math>、真空の誘電率<math>\varepsilon_0</math>として
:<math>\mathrm{div}\,\boldsymbol{E}=\frac{\rho}{\varepsilon_0}</math>
球面座標で考えることにより、この式の重要な性質「荷電粒子の座標を原点にとると原点以外では
<math>\mathrm{div}\,\boldsymbol{E}=0</math>」を証明することができる。
勾配と同様に発散をナブラで表すことを考えると、
:<math>\mathrm{div}\,\boldsymbol{a}=\nabla\cdot\boldsymbol{a}</math>
という表式を得る。
<math>\boldsymbol{a}</math>はベクトル場なのでベクトル量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その内積<math>\nabla\cdot\boldsymbol{a}</math>はスカラー量であることが見て取れる。
発散に対しては以下が成り立つ。
#<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>(線型性)
#<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は内積の線型性より、後者は成分演算と勾配の定義より示される。
ヤコビ行列<math>\nabla\circledast\boldsymbol{a}</math>との関係を考える。
:<math>\nabla\circledast\boldsymbol{a}=\begin{pmatrix} \frac{\partial{\boldsymbol{a}}}{\partial{x}} & \frac{\partial{\boldsymbol{a}}}{\partial{y}} & \frac{\partial{\boldsymbol{a}}}{\partial{z}} \end{pmatrix}=\begin{pmatrix} \frac{\partial{a}_x}{\partial{x}} & \frac{\partial{a}_x}{\partial{y}} & \frac{\partial{a}_x}{\partial{z}} \\ \frac{\partial{a}_y}{\partial{x}} & \frac{\partial{a}_y}{\partial{y}} & \frac{\partial{a}_y}{\partial{z}} \\ \frac{\partial{a}_z}{\partial{x}} & \frac{\partial{a}_z}{\partial{y}} & \frac{\partial{a}_z}{\partial{z}} \end{pmatrix}</math>
ここで跡が発散そのものになっているので
:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
が成り立つ。
発散の物理的意味を考える。
:密度<math>\rho</math>が一定である流体の速度場<math>\boldsymbol{v}\in\mathbb{R}^3</math>に対し、微小直方体に出入りする流体の質量収支を考える。
:点<math>(x,y,z)</math>に於ける流速<math>\boldsymbol{v}(x,y,z)=(v_x,v_y,v_z)</math>、直方体の各辺の長さを<math>\delta x, \delta y, \delta z</math>とする。
:単位時間あたりに<math>yz</math>平面に平行な面を通過する流体の質量収支は流出量<math>-\rho v_x(x,y,z)\delta y\delta z</math>、流入量<math>\rho v_x(x+\delta x,y,z)\delta y\delta z</math>より
::<math>\rho(v_x(x+\delta x,y,z)-v_x(x,y,z))\delta y\delta z=\rho\frac{v_x(x+\delta x,y,z)-v_x(x,y,z)}{\delta x}\delta x\delta y\delta z</math>
:<math>\delta x\to0</math>の極限で
::<math>=\rho\frac{\partial{v_x}}{\partial{x}}dxdydz</math>
:他の面で考えると対称性から輪環の順に入れ替えた結果を得るので直方体全体では
::<math>\rho\left(\frac{\partial{v_x}}{\partial{x}}+\frac{\partial{v_y}}{\partial{y}}+\frac{\partial{v_z}}{\partial{z}}\right)dxdydz</math>
:よって単位体積当たりでは
::<math>\rho\nabla\cdot\boldsymbol{v}</math>
:を得る。
ここで質量を密度で割ると体積なので、<math>\nabla\cdot\boldsymbol{v}</math>は単位時間あたりの流体の体積の正味の流出率を表す。
この微小直方体の単位体積あたりで観測すると、発散が正であれば流体は膨脹して密度が下がり、負であれば圧縮されて密度が上がる。0であれば流体は膨脹も圧縮もしない。
発散が零であるベクトル場を'''非圧縮/湧出無し/管状/ソレノイダル ベクトル場'''(incompressible/solenoidal vector field)などと呼ぶ。
また、ベクトル場の発散を'''湧き出し'''(「沸き出し」とも書く)と呼ぶ場合もある。
ベクトル場の流線に沿う流れが流体の体積を保存する条件はベクトル場が非圧縮であることである。これを'''リウヴィルの定理'''という。これは多くの場合、[[解析力学]]のハミルトン形式で表示される。
位置ベクトル場<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>に対して<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}</math>を考える。
:<math>\frac{\partial}{\partial{x}}\frac{1}{\|\boldsymbol{r}\|^n}=\frac{\partial{\left(\frac{1}{\|\boldsymbol{r}\|^n}\right)}}{\partial{\|\boldsymbol{r}\|}}\frac{\partial{\|\boldsymbol{r}\|}}{\partial{x}}=-\frac{n}{\|\boldsymbol{r}\|^n+1}\frac{x}{\sqrt{x^2+y^2+z^2}}=-\frac{nx}{\|\boldsymbol{r}\|^{n+2}}</math>
<math>y, z</math>も同様なので
:<math>\nabla\frac{1}{\|\boldsymbol{r}\|^n}=-\frac{n\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+1}}</math>
よって発散のライプニッツ則から
:<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}=\left(\nabla\frac{1}{\|\boldsymbol{r}\|^n}\right)\cdot\boldsymbol{r}+\frac{1}{\|\boldsymbol{r}\|^n}\nabla\cdot\boldsymbol{r}=-\frac{n\boldsymbol{r}\cdot\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+2}}+\frac{1+1+1}{\|\boldsymbol{r}\|^n}=\frac{3-n}{\|\boldsymbol{r}\|^n}</math>
この結果から、<math>\boldsymbol{a}/\!\!/\boldsymbol{r}\land\|\boldsymbol{a}\|\propto \frac{1}{\|\boldsymbol{r}\|^2}\implies\nabla\cdot\boldsymbol{a}=0</math>(逆二乗則に従う場は非圧縮ベクトル場)が成り立つ。
ベクトル解析の黎明期では発散の逆符号で表される
:<math>\mathrm{conv}\,\boldsymbol{a}:=-\frac{\partial{a_x}}{\partial{x}} - \frac{\partial{a_y}}{\partial{y}} - \frac{\partial{a_z}}{\partial{z}}</math>
という量が用いられていた。これは'''吸い込み'''(convergence)と呼ばれる量である。
ベクトルが発明される以前、ベクトル演算に相当するものは[[多元数/四元数|四元数]]で記述されていた。純虚四元数同士の積をとると実部が現在で言う内積の-1倍、虚部が現在で言う外積に対応する。このことから、内積そのものである湧き出しではなく内積の-1倍である吸い込みが自然に出現する量として頻繁に扱われていたのである。
===回転===
回転運動は、以下の3つにより一意に定まる。
*回転軸の方向
*回転の速さ
*回転方向(軸に対して右回転か左回転か)
「回転方向」は暗黙の諒解として右手系の正の回転角で考える。すると、回転運動を表すのに必要な情報は「方向」と「速さ(=スカラー量)」のみとなる。
従って、'''任意の回転運動はベクトルで表示される'''(ベクトルの大きさは「回転の速さ」で定める)。このようなベクトルを'''角速度ベクトル'''という。
ベクトル場の'''回転'''(curl/rotation/rotor)を以下のように定義する。
:<math>\mathrm{curl} \, \boldsymbol{a} = \mathrm{rot} \, \boldsymbol{a} = \begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
<math>\mathrm{curl}</math>は理学系、<math>\mathrm{rot}</math>は工学系が好んで使用する。
<math>z</math>軸方向の成分について考える。
<math>z</math>軸方向の回転はフレミングの左手の法則から<math>xy</math>平面内の成分のみが寄与すると考えられる。<math>z</math>軸の正方向の回転を生むには、<math>x</math>軸方向の変化率を大きくして<math>y</math>軸方向の変化率を小さくすればよい。
ある軸方向の変化率とはその軸の変数に関する偏導関数のことであったので、回転のz成分を<math>\frac{\partial{X_y}}{\partial{x}}-\frac{\partial{X_x}}{\partial{y}}</math>とすれば満足する。
対称性より輪環の順で入れ替えても同様であるので、回転は上の式で表されるとわかる。
これはより厳密には後述の線積分を用いて説明することになるので、ここでは定性的な説明に留めた。
回転を用いた概念として、ファラデーの電磁誘導の法則が有名である。
:電場<math>\boldsymbol{E}</math>、磁束密度<math>\boldsymbol{B}</math>として
:<math>\mathrm{rot} \, \boldsymbol{E} = -\frac{\partial{\boldsymbol{B}}}{\partial{t}}</math>
流体の渦の記述にも応用されており、回転を'''渦度ベクトル'''とも呼ぶ。流体力学的な渦の定義は「速度場の回転」である。
回転が零ベクトルであるベクトル場を'''非回転的/渦無し/層状/ラメラー ベクトル場'''(irrotational/lamella vector field)などと呼ぶ。
勾配・発散と同様に空間偏微分演算子による表記を考える。
成分に着目すると外積の形式なので、
:<math>\mathrm{curl} \, \boldsymbol{a}= \nabla \times \boldsymbol{a}</math>
と表されることが判る。
ベクトル場はベクトル量であり、ナブラは便宜的にベクトル量と見做すことから、その外積である回転はベクトル量であることが見て取れる。
外積の性質から、回転は行列式
:<math>\det \begin{pmatrix} \boldsymbol{e}_x & \boldsymbol{e}_y & \boldsymbol{e}_z \\ \frac{\partial}{\partial{x}} & \frac{\partial}{\partial{y}} & \frac{\partial}{\partial{z}} \\ a_x & a_y & a_z \end{pmatrix}</math>
でも表示される。
回転に対しては以下が成り立つ。
#<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>(線型性)
#<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は外積の線型性より、後者は成分演算と勾配の定義より示される。
回転は常に角速度ベクトルと一致するとは限らない。そのため、必ずしも回転運動そのものを記述しない。
回転は、ヤコビ行列を用いると以下のように表される。
:<math>\mathrm{rot} \, \boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
:ここで<math>\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})</math>は反対称行列であり、<math>\mathrm{axl}</math>は反対称行列を軸ベクトルに移す写像である。
===ラプラシアン===
上で見てきた勾配・発散・回転はいずれも一階の偏微分作用素であった。
二階偏微分作用素のうち最もよく使われているのがスカラー場に対して勾配の発散をとる演算である。
:<math>\nabla\cdot(\nabla\varphi) = \mathrm{div}(\mathrm{grad}\,\varphi)</math>
ここで<math>(\nabla\cdot\nabla)\varphi</math>を計算してみると成分計算から上の<math>\nabla\cdot(\nabla\varphi)</math>に等しいことが容易に判る。則ち、発散作用素<math>\nabla\cdot\,\,</math>、勾配作用素<math>\nabla</math>、スカラー場<math>\varphi</math>の間に結合法則が成り立ってると見做せる。
そこで、<math>\nabla\cdot\nabla</math>を独立した演算子として考えることにする。
以下のように定義される演算子を'''ラプラス演算子'''(ラプラス作用素)という。
:<math>\text{∆}:=\nabla\cdot\nabla=\frac{\partial^2}{\partial{x}^2}+\frac{\partial^2}{\partial{y}^2}+\frac{\partial^2}{\partial{z}^2}</math>
二項目は[[w:記号の濫用]]により<math>\nabla^2</math>と書かれることもある。
但し、<math>\text{∆}</math>は通常のデルタ(Unicode文字名: GREEK CAPITAL LETTER DELTA, U+394)ではなく'''増分記号'''(Unicode文字名:INCREMENT, U+2206)である(が通常のデルタで書かれることが多い)。
ラプラス演算子を<math>C^2</math>級スカラー場に作用させる操作(及びその結果として得るスカラー場)を'''ラプラシアン'''(Laplacian)という。
:<math>\text{∆}\varphi=\frac{\partial^2{\varphi}}{\partial{x}^2}+\frac{\partial^2{\varphi}}{\partial{y}^2}+\frac{\partial^2{\varphi}}{\partial{z}^2}</math>
スカラー場のラプラシアンは各成分方向の曲率の和、すなわちスカラー場の各点に於ける突出・沈み込みの度合いを表す。
勾配・発散・回転・ラプラシアンを総称して'''空間微分'''と呼ぶ。
ラプラシアンは[[解析学基礎/偏微分方程式|偏微分方程式]]の記述に用いられている。
:'''ラプラス方程式'''・'''ポテンシャル方程式''':<math>\text{∆}\varphi=0</math>
:'''ポアソン方程式''':<math>\text{∆}\varphi=f</math>
:'''熱伝導方程式'''・'''拡散方程式''':<math>\text{∆}\psi=k\frac{\partial{\psi}}{\partial{t}}+g</math>
:'''波動方程式''':<math>\text{∆}\psi=\frac{1}{\nu^2}\frac{\partial^2{\psi}}{\partial{t}^2}</math>
:'''ヘルツホルム方程式''':<math>\text{∆}\varphi=-l^2\varphi</math>
ここで<math>\varphi=\varphi(x,y,z),\,f=f(x,y,z),\,\psi=\psi(x,y,z,t),\,k>0,\,g=g(x,y,z,t),\,\nu>0,\,l\in\mathbb{R}</math>である。
なお、ラプラス方程式の解を'''調和関数'''という。
<math>C^2</math>級ベクトル場のラプラシアンは以下のように定義される。
:<math>\text{∆}\boldsymbol{a}=\begin{pmatrix} \text{∆}a_x \\ \text{∆}a_y \\ \text{∆}a_z \end{pmatrix}</math>
ここでスカラー場と同様に考えて<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})</math>としたいところではあるが、これは一般には成り立たない。
実際には以下のように表示される。
:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})=\mathrm{grad}(\mathrm{div}\,\varphi)-\mathrm{rot}(\mathrm{rot}\,\varphi)</math>
*証明
:対称性より<math>x</math>成分のみ考えても輪環の順に入れ替えれば他の成分を得る。
::<math>\nabla\cdot\boldsymbol{a}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}</math>
:より
::<math>\{\nabla(\nabla\cdot\boldsymbol{a})\}_x=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}</math>
:また、
::<math>\nabla\times\boldsymbol{a}=\begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
:より
::<math>\{\nabla\times(\nabla\times\boldsymbol{a})\}_x=\frac{\partial}{\partial{y}}\left(\frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}\right)-\frac{\partial}{\partial{z}}\left(\frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}\right)</math>
::<math>=\frac{\partial^2{a_y}}{\partial{y}\partial{x}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{z}\partial{x}}-\frac{\partial^2{a_x}}{\partial{z}^2}</math>
:<math>\boldsymbol{a}\in{C^2}</math>より偏微分は可換(シュワルツの定理)なので、<math>\{\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})\}_x</math>を計算すると
::<math>\left(\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}\right)-\left(\frac{\partial^2{a_y}}{\partial{x}\partial{y}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}-\frac{\partial^2{a_x}}{\partial{z}^2}\right)</math>
::<math>=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_x}}{\partial
{y}^2}+\frac{\partial^2{a_x}}{\partial{z}^2}</math>
::<math>=\text{∆}a_x</math>//
ここから判るように、ベクトル場<math>\boldsymbol{a}</math>に対して<math>\text{∆}=\nabla(\nabla\cdot)</math>が成り立つ条件は<math>\nabla\times(\nabla\times\boldsymbol{a})=\boldsymbol{0}</math>である。<math>\boldsymbol{a}</math>が非回転ベクトル場であれば回転が零ベクトルなのでこの形を必ず満足する。但し、この形を満たすベクトル場が全て非回転的ベクトル場であるとは限らない。
則ち、外積の反復と同様に回転演算子<math>\nabla\times\,\,</math>の反復に対して結合法則は不成立である。
歴史的な四元数表記では発散の代わりに吸い込みが用いられていたことからラプラシアンも現在とは反対の符号で計算されていた。ラプラシアンはユークリッド空間に限らず定義可能であるが、その中でも特に重要なのは[[特殊相対論#マクスウェルの方程式|相対性理論]]で用いられる'''ダランベール演算子'''(ダランベルシアン、クアブラ、波動演算子)である。
:<math>\text{⧠}:=\frac{1}{\nu^2}\frac{\partial^2}{\partial{t^2}}-\text{∆}</math>
これは標準座標系で表されるミンコフスキー空間上のラプラシアンに相当する。<math>\text{∆}</math>は上で扱ってきた通常のラプラシアンのことである。
これを用いると波動方程式は<math>\text{⧠}\psi=0</math>というミンコフスキー空間上のラプラス方程式と解釈される。つまり、波動関数はミンコフスキー空間で見れば調和関数なのである。
また、[[w:クライン=ゴルドン方程式]]と呼ばれる偏微分方程式は
:<math>\text{⧠}\psi=-\mu^2\psi</math>
というミンコフスキー空間上のヘルツホルム方程式と解釈される。
===微分定理===
ここでは、ナブラに関する公式を見ていく。以下、シュワルツの定理が成り立っているものとする。また、成分計算をすればいいだけなので証明は省略する。
既に紹介したものを以下に並べる。
#勾配
#:<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>
#:<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(
#:<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>
#:<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>
#:<math>\frac{\partial{\varphi}}{\partial{\boldsymbol{e}}}=(\boldsymbol{e}\cdot\nabla)\varphi</math>
#:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
#発散
#:<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>
#:<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>
#:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
#回転
#:<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>
#:<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>
#:<math>\nabla\times\boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
#ラプラシアン
#:<math>\text{∆}\varphi=\nabla\cdot(\nabla\varphi)</math>
#:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})</math>
二つのベクトル場<math>\boldsymbol{a}, \boldsymbol{b}</math>の内積・外積に対してそれぞれ一階の空間微分を考えてみる。
<math>\boldsymbol{a}\cdot\boldsymbol{b}</math>はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\boldsymbol{a}\cdot\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}+(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}\times(\nabla\times\boldsymbol{b})+\boldsymbol{b}\times(\nabla\times\boldsymbol{a})</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\boldsymbol{a}\times\boldsymbol{b})=\boldsymbol{b}\cdot(\nabla\times\boldsymbol{a})-\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\nabla\times(\boldsymbol{a}\times\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}-(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}(\nabla\cdot\boldsymbol{b})-\boldsymbol{b}(\nabla\cdot\boldsymbol{a})</math>
次に、一階の空間微分の結果に対して更なる一階の空間微分を考えてみる。
スカラー場の勾配はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\varphi)=\text{∆}\varphi</math>
:<math>\nabla\times(\nabla\varphi)=\boldsymbol{0}</math>
ベクトル場の発散はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\nabla\cdot\boldsymbol{a})=\text{∆}\boldsymbol{a}+\nabla\times(\nabla\times\boldsymbol{a})</math>
ベクトル場の回転はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\times\boldsymbol{a})=0</math>
:<math>\nabla\times(\nabla\times\boldsymbol{a})=\nabla(\nabla\cdot\boldsymbol{a})-\text{∆}\boldsymbol{a}</math>
則ち、勾配・発散・回転はどの組み合わせでも交換法則が成り立たない。
一階の空間微分の結果に対してラプラシアンを考えてみる。
:<math>\text{∆}(\nabla\varphi)=\nabla(\text{∆}\varphi)</math>
:<math>\text{∆}(\nabla\cdot\boldsymbol{a})=\nabla\cdot(\text{∆}\boldsymbol{a})</math>
:<math>\text{∆}(\nabla\times\boldsymbol{a})=\nabla\times(\text{∆}\boldsymbol{a})</math>
ラプラシアンはスカラー性・ベクトル性を保存するので、演算が破綻する箇所はない。
則ち、ラプラシアンは勾配・発散・回転との組み合わせに対して交換法則が成り立つ。
:<math>\text{∆}\nabla=\nabla\text{∆},\quad\text{∆}(\nabla\cdot)=(\nabla\cdot)\text{∆},\quad\text{∆}(\nabla\times)=(\nabla\times)\text{∆}</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>及び<math>\nabla\times\boldsymbol{a}</math>の発散・回転は三重積の形であった。
スカラー三重積・ベクトル三重積にナブラを様々な組み合わせで入れてその結果がどうなるか見ていく。
:<math>\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\boldsymbol{a}\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すればいいので公式化する必要が無い。
:<math>\boldsymbol{a}\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>\boldsymbol{a}\times(\boldsymbol{b}\times\nabla)</math>
:<math>\nabla\cdot(\boldsymbol{a}\times\nabla)</math>
:<math>\nabla\times(\boldsymbol{a}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>\boldsymbol{a}\cdot(\nabla\times\nabla)</math>
:<math>\boldsymbol{a}\times(\nabla\times\nabla)</math>
:<math>\nabla\cdot(\nabla\times\nabla)</math>
:<math>\nabla\times(\nabla\times\nabla)</math>
は同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。<br>
また、三重積の公式はナブラを代入した時点で破綻する。
次に、スカラー四重積・ベクトル四重積に対しても同様のことを考える。
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\nabla\times\boldsymbol{a})\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すれば良いので公式化する必要が無い。
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\boldsymbol{c}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\boldsymbol{c}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\times(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>(\nabla\times\nabla)\cdot(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\nabla\times\nabla)\times(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\nabla)</math>
及びナブラを三個以上含むものは同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。
故に、ここで問題になるのは
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})</math>
の扱いである。
これらには以下の公式が成り立つ。
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})=\boldsymbol{a}\cdot\{\nabla\times(\boldsymbol{b}\times\boldsymbol{c})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})=[\{\boldsymbol{b}\cdot(\nabla\times\boldsymbol{c})\}-\{\boldsymbol{c}\cdot(\nabla\times\boldsymbol{b})\}]\boldsymbol{a}+{}^t\!\{\nabla\circledast(\boldsymbol{b}\times\boldsymbol{c})\}\boldsymbol{a}</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})=\boldsymbol{a}\cdot\{\nabla\times(\nabla\times\boldsymbol{b})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})={}^t\!\{\nabla\circledast(\nabla\times\boldsymbol{b})\}\boldsymbol{a}</math>
===ポテンシャル論===
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすスカラー場<math>\varphi\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0}</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を満たすならば<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>となるスカラー場<math>\varphi\in C^2</math>はどのようなときに存在するのであろうか?
ここで<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>は成分表示すれば
:<math>\begin{cases} \frac{\partial{a}_z}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}}=0 \\ \frac{\partial{a}_x}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}=0 \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}=0 \end{cases}</math>
という一階線型連立偏微分方程式となる。
この連立偏微分方程式は領域<math>D=\mathrm{dom}\,\boldsymbol{a}</math>上で解くことになるので、解が<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすかは領域<math>D</math>がどのような形状をしているかに依存する。
そして、その形状を具体的に与えるのが次の定理である。
{{定理|(ポアンカレの補題1)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0} \iff \exist \varphi\in C^2(D),\quad \mathrm{grad}\,\varphi=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が単連結であることである。
{{定理終わり}}
証明は後述する。
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''スカラーポテンシャル'''(scalar potential)といい、スカラーポテンシャルを有するベクトル場を'''保存的ベクトル場'''(保存場、conservative vector field)という。
保存的ベクトル場に対して実際にスカラーポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{grad}\,\varphi=\boldsymbol{a},\quad\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{\varphi}}{\partial{x}}=a_x \\ \frac{\partial{\varphi}}{\partial{y}}=a_y \\ \frac{\partial{\varphi}}{\partial{z}}=a_z \end{cases},\quad\begin{cases} \frac{\partial{a}_z}{\partial{y}}=\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a}_x}{\partial{z}}=\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}=\frac{\partial{a_x}}{\partial{y}} \end{cases}</math>
:<math>\frac{\partial{\varphi}}{\partial{x}}=a_x(x,y,z)</math>は直接積分形偏微分方程式なので両辺を<math>x</math>で偏積分して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z) dx+g(y,z)</math>・・・(1)
:これを<math>y</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{y}}=\frac{\partial}{\partial{y}}\int_m^x a_x(x,y,z)dx+\frac{\partial{g}}{\partial{y}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\int_m^x \frac{\partial{a_x}}{\partial{y}}dx+\frac{\partial{g}}{\partial{y}}</math>
:更に回転の条件から
::<math>=\int_m^x \frac{\partial{a_y}}{\partial{x}}dx+\frac{\partial{g}}{\partial{y}}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_y(x,y,z)-a_y(m,y,z)+\frac{\partial{g}}{\partial{y}}</math>
:これが<math>a_y(x,y,z)</math>に等しいので
::<math>\frac{\partial{g}}{\partial{y}}=a_y(m,y,z)</math>
:これは<math>g(y, z)</math>が<math>x</math>の関数でないことに適する。
:両辺を<math>y</math>で偏積分して
::<math>g(y, z)=\int_n^y a_y(m,y,z)dy+h(z)</math>
:これを(1)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+h(z)</math>・・・(2)
:これを<math>z</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{z}}=\frac{\partial}{\partial{z}}\left(\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy\right)+\frac{\partial{h}}{\partial{z}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\left(\int_m^x\frac{\partial{a_x(x,y,z)}}{\partial{z}}dx+\int_n^y\frac{\partial{a_y(m,y,z)}}{\partial{z}}dy\right)+\frac{dh}{dz}</math>
:更に回転の条件から
::<math>=\left(\int_m^x\frac{\partial{a_z(x,y,z)}}{\partial{x}}dx+\int_n^y\frac{\partial{a_z(m,y,z)}}{\partial{y}}dy\right)+\frac{dh}{dz}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_z(x,y,z)-a_z(m,y,z)+a_z(m,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
::<math>=a_z(x,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
:これが<math>a_z(x,y,z)</math>に等しいので
::<math>\frac{dh}{dz}=a_z(m,n,z)</math>
:これは<math>h(z)</math>が<math>x, y</math>の関数でないことに適する。
:両辺を<math>z</math>で常積分して
::<math>h(z)=\int_l^z a_z(m,n,z)dz+C</math>
:これを(2)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>//
ここで最後の積分定数<math>C</math>は勾配をとるときに消える。更に言うと、単連結領域では偏微分方程式の解の一意性よりスカラーポテンシャルは積分定数の違いを除いて一意に定まる。よって、スカラーポテンシャルは平行移動を同一視する同値類として与えられることになる。
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>を満たすベクトル場<math>\boldsymbol{A}\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{div}\,\boldsymbol{a}=0</math>を満たすならば<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>となるスカラー場<math>\boldsymbol{A}\in C^2</math>はどのようなときに存在するのであろうか?
これも同様に以下の定理で与えられる。
{{定理|(ポアンカレの補題2)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{div}\,\boldsymbol{a}=0 \iff \exist \boldsymbol{A}\in C^2(D),\quad \mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が'''可縮'''であることである。
{{定理終わり}}
証明は後述する。
ここで、集合が可縮とは「全体を1点に退化するような連続変形が可能である」ことを言う。可縮な集合は単連結である。可縮条件はより弱めることができるが、ホモトピーやコホモロジーの概念が必要である
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''ベクトルポテンシャル'''(vector potential)という。スカラーポテンシャルと異なり、「ベクトルポテンシャルを有するベクトル場」を指す特別な呼称は(数学界一般に認知されたものとしては)存在しない。「ソレノイダル場」などを用いる派閥もあるが、単に「発散が0であるベクトル場」を指す用法が強いのであまり広まっていない。
ベクトルポテンシャルを有するベクトル場に対して実際にベクトルポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a},\quad\mathrm{div}\,\boldsymbol{a}=0</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{A}_z}{\partial{y}}-\frac{\partial{A_y}}{\partial{z}}=a_x \\ \frac{\partial{A}_x}{\partial{z}}-\frac{\partial{A_z}}{\partial{x}}=a_y \\ \frac{\partial{A_y}}{\partial{x}}-\frac{\partial{A_x}}{\partial{y}}=a_z \end{cases},\quad \frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}} =0</math>
:第一式より
::<math>\frac{\partial{A_z}}{\partial{y}}=a_x+\frac{\partial{A_y}}{\partial{z}}</math>
:<math>y</math>で偏積分して
::<math>A_z = \int_n^y \left(a_x+\frac{\partial{A_y}}{\partial{z}}\right)dy+f(x,z)</math>
:ライプニッツの積分法則より
::<math>=\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)</math>・・・(3)
:第三式より
::<math>\frac{\partial{A_x}}{\partial{y}}=\frac{\partial{A_y}}{\partial{x}}-a_z</math>
:<math>y</math>で偏積分して
::<math>A_x=\int_n^y \left(\frac{\partial{A_y}}{\partial{x}}-a_z\right)dy+g(x, z)</math>
:ライプニッツの積分法則より
::<math>=\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)</math>
:これと(3)を第二式に代入して
::<math>a_y=\frac{\partial}{\partial{z}}\left(\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)\right)-\frac{\partial}{\partial{x}}\left(\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)\right)</math>
::<math>=\frac{\partial^2}{\partial{z}\partial{x}}\int_n^yA_ydy-\frac{\partial}{\partial{z}}\int_n^y a_z dy+\frac{\partial{g}}{\partial{z}}-\frac{\partial}{\partial{x}}\int_n^y a_x dy-\frac{\partial^2}{\partial{x}\partial{z}}\int_n^y A_y dy-\frac{\partial{f}}{\partial{x}}</math>
::<math>=\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}-\int_n^y \left(\frac{\partial{a_z}}{\partial{z}}+\frac{\partial{a_x}}{\partial{x}}\right)dy</math>
:よって
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=a_y+\int_n^y \left(\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_z}}{\partial{z}}\right) dy</math>・・・(4)
:この右辺を<math>h(x, y, z)</math>とおくと
::<math>\frac{\partial{h}}{\partial{y}}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}=0</math>
:なので<math>h(x,y,z)</math>は<math>y</math>に依存しない<math>h(x,z)</math>である。
:これは(4)の左辺が<math>y</math>に依存しないことと整合する。
:故に(4)は
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=h(x,z)</math>
:という二変数の偏微分方程式に落ちる。
:この偏微分方程式は例えば<math>f(x,z)=0, g(x,z)=\int_l^z h(x,z)dz</math>のような特殊解を持つ。
:このような特殊解によって構成された元の方程式の解を<math>\boldsymbol{A}_0</math>とする。
:一般解<math>\boldsymbol{A}</math>と特殊解との差を<math>\boldsymbol{B}</math>と置くとその回転は回転の線型性より<math>\boldsymbol{0}</math>なので
::<math>\begin{cases} \frac{\partial{B}_z}{\partial{y}}=\frac{\partial{B_y}}{\partial{z}} \\ \frac{\partial{B}_x}{\partial{z}}=\frac{\partial{B_z}}{\partial{x}} \\ \frac{\partial{B_y}}{\partial{x}}=\frac{\partial{B_x}}{\partial{y}} \end{cases}</math>
:同様にして第一式・第三式を<math>y</math>で偏積分して第二式に代入すると積分定数に関して
::<math>\frac{\partial{F(x,z)}}{\partial{x}}=\frac{\partial{G(x,z)}}{\partial{z}}</math>
:を得る。
:これは全微分方程式が完全微分方程式である条件なので、
::<math>\mathrm{grad}\,\Phi=\begin{pmatrix} F(x,z) \\ G(x,z) \end{pmatrix}</math>
:なるスカラー場<math>\Phi</math>が存在する。
:則ち、求めるベクトルポテンシャルは<math>\boldsymbol{A}=\boldsymbol{A}_0+\nabla\Phi</math>//
ここで勾配の項は回転をとるときに<math>\mathrm{rot}(\mathrm{grad}\,\Phi)=\boldsymbol{0}</math>より消える。スカラーポテンシャルと同様に自由度が残るので、ベクトルポテンシャルはその自由度を無視した同値類で与えられる。
ポアンカレの補題1, 2に於ける領域<math>D</math>は互いに素ではない複数の領域の和集合<math>\bigcup_i D_i</math>であっても良い。但しポテンシャル場<math>\mathrm{p}</math>は各領域<math>D_i</math>に対して区分的に定義され、このとき互いに重なった領域<math>D_i\cap D_j</math>では任意の点<math>\boldsymbol{x}\in D_i\cap D_j</math>に対して<math>\mathrm{p}_i(\boldsymbol{x})=\mathrm{p}_j(\boldsymbol{x})</math>であることが導かれる。
ポアンカレの補題が成り立たない状況を考えると、この「重なった領域での単射性」が崩れる。則ち、ポテンシャル場は多価関数として振舞うのである。
ポテンシャルに関連した定理として、以下が成り立つ。
{{定理|(ヘルツホルムの定理)}}
ポアンカレの補題が成り立つ状況下に於いて、<math>C^1</math>級ベクトル場<math>\boldsymbol{a}</math>は<math>C^2</math>級スカラー場の勾配と<math>C^2</math>級ベクトル場の回転に[[w:直和分解]]('''ヘルツホルム分解''')できる。
則ち、任意の<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\boldsymbol{a}=\mathrm{grad}\,\varphi-\mathrm{rot}\,\boldsymbol{A}</math>
を満たす<math>\varphi, \boldsymbol{A}\in C^2(D)</math>が存在する。
{{定理終わり}}
*証明
:ポアソン方程式<math>\text{∆}\varphi=f</math>に対してラプラシアンの定義から
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=f</math>
:ここで右辺のスカラー関数<math>f</math>が<math>\boldsymbol{a}</math>の発散で与えられている場合を考えると
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=\mathrm{div}\,\boldsymbol{a}</math>
:発散の線型性より
::<math>\mathrm{div}(\mathrm{grad}\,\varphi-\boldsymbol{a})=0</math>
:ここでポアンカレの補題2を用いて
::<math>\mathrm{grad}\,\varphi-\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>//
この<math>\varphi, \boldsymbol{A}</math>をそれぞれ広義のスカラーポテンシャル・ベクトルポテンシャルと呼ぶ場合がある。
広義ポテンシャルに対して
:<math>\begin{cases} \mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0} \\ \mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0 \\ \mathrm{div}\,\boldsymbol{a}=\text{∆}\varphi \\ \mathrm{rot}\,\boldsymbol{a}=\mathrm{grad}(\mathrm{div}\,\boldsymbol{A})-\text{∆}\boldsymbol{A} \end{cases}</math>
が成立する。
広義ポテンシャルの組み合わせは一つには定まらない。成分毎で考えるとヘルツホルムの定理は三元連立偏微分方程式を与えるが、勾配で消える定数項と回転で消える勾配項を補正すると右辺の自由度は広義ポテンシャル2つ+補正項2つで4である。そこで、応用上は<math>\mathrm{div}\,\boldsymbol{A}=0</math>という条件('''クーロンゲージ条件''')を追加で課して一意に定めることが多い(これにより<math>\mathrm{rot}\,\boldsymbol{a}=-\text{∆}\boldsymbol{A}</math>が成り立つので)。
例えば、[[連続体力学]]に於ける弾性体の運動方程式(ナビエ-コーシー方程式)
:<math>\rho\frac{\partial^2{\boldsymbol{u}}}{\partial{t}^2}=(\lambda+\mu)\mathrm{grad}(\mathrm{div}\,\boldsymbol{u})+\mu\text{∆}\boldsymbol{u}</math>
をヘルツホルム分解とクーロンゲージ条件により解析すると
:<math>\begin{cases} \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\varphi=(\lambda+2\mu)\text{∆}^2\varphi \\ \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\boldsymbol{A}=\mu\text{∆}^2\boldsymbol{A} \end{cases}</math>
を得る。
更に<math>e=\text{∆}\varphi,\quad\boldsymbol{\omega}=-\text{∆}\boldsymbol{A}</math>と置くとこの2つの式は波動方程式である。ここから導かれる波は前者が縦波で後者が横波であるが、<math>\lambda+2\mu>\mu</math>より前者の方が伝播速度が大きい。則ち、中学理科のP波・S波の性質を導くことができた。
ナビエ-コーシー方程式に於いて定常状態を考えると<math>t</math>-微分の項が0になるので、<math>\text{∆}^2\boldsymbol{u}=0</math>を得る。このような形の偏微分方程式を'''重調和偏微分方程式'''という。
*応用問題
*:真空のマクスウェル方程式<math> \begin{cases}
\nabla\times\boldsymbol{E}&=-\frac{\partial{\boldsymbol{B}}}{\partial{t}}\\
\nabla\times\boldsymbol{H}&=\frac{\partial{\boldsymbol{D}}}{\partial{t}}\\
\nabla\cdot\boldsymbol{D}&=0\\
\nabla\cdot\boldsymbol{B}&=0\\
\end{cases}</math>と構成方程式<math>\begin{cases} \boldsymbol{D}=\varepsilon_0\boldsymbol{E} \\ \boldsymbol{B}=\mu_0\boldsymbol{H}\end{cases}</math>から電磁波の波動方程式<math>\begin{cases} \text{∆}\boldsymbol{E}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{E}}}{\partial{t}^2} \\ \text{∆}\boldsymbol{H}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{H}}}{\partial{t}^2} \end{cases}</math>及び光速<math>c=\frac{1}{\sqrt{\varepsilon_0\mu_0}}</math>を導け。
==空間積分==
ここでは三次元ユークリッド空間で考える。
===線積分===
偏積分
:<math>\int_a^b f(x,y) dx := \lim_{n \to \infty} \sum_{k=1}^{n} f(x_k,y) \Delta x</math>(<math>\Delta x = \frac{b-a}{n}, x_k = a + k\Delta x</math>)
は<math>xyz</math>空間を<math>y</math>を固定した平面で切った断面に於ける曲線<math>z=f(x, y)</math>と<math>x</math>軸、直線<math>x=a, x=b</math>の囲む符号付き面積であった。
このとき積分変数を各点で見ると<math>x</math>軸という直線上を<math>a\to b</math>と単調に進むことになるが、これを<math>xyz</math>空間の任意の曲線<math>C</math>に拡張することを考える。
三次元空間の曲線をベクトル表示すると
:<math>\boldsymbol{r}(t)=\begin{pmatrix} x(t) \\ y(t) \\ z(t) \end{pmatrix}\quad t\in [\alpha, \beta]</math>
であり、被積分関数はこの曲線上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
偏積分の<math>dx</math>は「<math>x</math>軸上の微小変位」であったが、<math>t</math>が単調なとき曲線に沿った微小変位は曲線上の移動距離、則ち弧長の微小量と考えられるので線素を用いて
:<math>dl=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
これらを総合すると、<math>C</math>に沿った積分というものは曲線のパラメータを用いて
:<math>\int_\alpha^\beta \varphi(\boldsymbol{r}(t))\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>C</math>に沿った'''線積分'''<sup>※</sup>(line integral)という。また、<math>C</math>を'''積分経路'''(積分路、path)という。
<small>※量子力学の[[量子力学#経路積分法|経路積分]](path integral)とは異なる概念である。</small>
スカラー場の線積分は
:<math>\int_C \varphi dl</math>
のように略記される。
特に積分経路が閉曲線('''閉経路''')である場合は
:<math>\oint_C \varphi dl</math>
のように書き、これを<math>C</math>に沿った'''周回/閉路 積分'''(closed line integral)という。
1の線積分<math>\int_C dl</math>は弧長に等しい。
<math>\varphi(\boldsymbol{r})</math>の<math>C</math>の端点に於ける値の差を考える。
<math>t\in[\alpha,\beta]</math>を各<math>t_i</math>に等分割したとき、スカラー関数のテイラー展開より
:<math>\varphi(\boldsymbol{r}(t_i))-\varphi(\boldsymbol{r}(t_{i-1}))=\nabla\varphi(\boldsymbol{r}_{t_i-1})\cdot d\boldsymbol{r}\big|_{t=t_i}+O\left(\left\|d\boldsymbol{r}\big|_{t=t_i}\right\|\right)</math>
なので
:<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))\fallingdotseq \sum_{i=1}^n \nabla\varphi(\boldsymbol{r}(t_{i-1}))\cdot d\boldsymbol{r}\big|_{t=t_i}</math>
右辺で分割数<math>n</math>を無限大に飛ばした極限は区分求積法より
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r}</math>
則ち、曲線<math>C</math>に沿った微分積分学の基本定理
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r} = \varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>
を得る。
これは一変数積分の<math>\int_a^b \frac{df}{dx}dx=f(b)-f(a)</math>に対応し、これは常積分に関する微分積分学の基本定理の別表現である。
左辺をスカラー場の線積分と同様に<math>\int_C \nabla\varphi\cdot d\boldsymbol{r}</math>と書くことにする。
ここで<math>\nabla\varphi</math>を一般のベクトル場<math>\boldsymbol{a}</math>に拡張して同様に
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}</math>
を考えてみたい。
ここで<math>d\boldsymbol{r}</math>は<math>\boldsymbol{r}</math>の全微分と解釈され、一変数関数なので
:<math>d\boldsymbol{r}=\frac{d\boldsymbol{r}}{dt}dt</math>
則ち、
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}=\int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\cdot\frac{d\boldsymbol{r}}{dt}dt</math>
という曲線のパラメータに関する積分に帰着された。
これをベクトル場<math>\boldsymbol{a}</math>の<math>C</math>に沿った'''線積分'''という。
<math>\frac{d\boldsymbol{r}}{dt}</math>は<math>C</math>の接線なので<math>\boldsymbol{a}(\boldsymbol{r})\cdot\frac{d\boldsymbol{r}}{dt}</math>は<math>\boldsymbol{a}</math>から<math>C</math>の接線に沿う沿流成分を取り出していることになる。
このことから、ベクトル場の線積分を特に'''接線積分'''(integral of tangential component)ということがある。
また、<math>d\boldsymbol{r}</math>のノルムを考えてみると
:<math>\|d\boldsymbol{r}\|=\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt=dl</math>
より線素に一致する。
このことから、<math>d\boldsymbol{r}</math>を'''線素ベクトル'''と呼び、<math>d\boldsymbol{l}</math>とも書く。
線素ベクトルは曲線上の微小変位を表すので座標軸上の微小変位の重ね合わせと考えれば
:<math>d\boldsymbol{l}=\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
よって接線積分は形式的に
:<math>\int_C (a_xdx+a_ydy+a_zdz)</math>
とも書かれる。
更に、弧長パラメトライズされている場合は接ベクトルを用いて
:<math>d\boldsymbol{l}=\boldsymbol{t}ds</math>
とも表せる。
接線積分で定義される概念としては、仕事が有名である。
:物体を経路<math>C</math>に沿って力<math>\boldsymbol{F}</math>で運んだときの仕事は摩擦や空気抵抗を無視すると
::<math>W=\int_C \boldsymbol{F}\cdot d\boldsymbol{r}</math>
また、アンペールの法則も線積分で示される。
:閉経路<math>C</math>で囲まれた領域を貫く電流の大きさ<math>I</math>とその電流が生む磁場<math>\boldsymbol{H}</math>に対して
::<math>\oint_C \boldsymbol{H}\cdot d\boldsymbol{l}=I</math>
更に、以下のような概念も定義されている。
:流体の速度場<math>\boldsymbol{v}</math>の循環は
::<math>\Gamma(C)=\oint_C \boldsymbol{v}\cdot d\boldsymbol{l}</math>
*応用問題
**運ばれる物体の質量を<math>m</math>としたとき、仕事の定義とニュートンの運動方程式<math>m\frac{d^2\boldsymbol{r}}{dt^2}=\boldsymbol{F}</math>を用いて運動エネルギーに関するエネルギーの原理<math>W=\frac{1}{2}mv^2-\frac{1}{2}mv_0^2</math>を証明せよ。
<math>C</math>が正の向きにパラメトライズされたとき、負の向きにパラメトライズされた曲線を<math>-C</math>と表した。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の始点が一致するとき、これを一つの曲線と見做して曲線の和
:<math>C_1+C_2</math>
が定義される。
これを'''区分的に定義された曲線'''という。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の終点が一致するとき、<math>C_1</math>を始点とすると曲線の差は
:<math>C_1-C_2=C_1+(-C_2)</math>
で定義される。
<math>C</math>が'''区分的に滑らか'''であるとは、<math>C</math>が有限個の滑らかな曲線の和であることである。
これらを踏まえると、線積分には以下の性質が成り立つ。
#スカラー場
#:<math>\int_C (k\varphi+l\psi) dl=k\int_C \varphi dl + l \int_C \psi dl</math>
#:<math>\int_{-C}\varphi dl = \int_C \varphi dl</math>
#:<math>\int_{C_1+C_2}\varphi dl = \int_{C_1}\varphi dl + \int_{C_2}\varphi dl</math>
#ベクトル場
#:<math>\int_C (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{l}=k\int_C \boldsymbol{a}\cdot d\boldsymbol{l}+l\int_C \boldsymbol{b}\cdot d\boldsymbol{l}</math>
#:<math>\int_{-C}\boldsymbol{a}\cdot d\boldsymbol{l} = -\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>
#:<math>\int_{C_1+C_2}\boldsymbol{a}\cdot d\boldsymbol{l} = \int_{C_1}\boldsymbol{a}\cdot d\boldsymbol{l} + \int_{C_2}\boldsymbol{a}\cdot d\boldsymbol{l}</math>
1番目の性質は線型性である。2番目の性質から、スカラー場の線積分に関しては任意の'''再パラメトライズ'''(パラメータの可逆な変数変換)、ベクトル場の線積分に関しては向き付けを保つ再パラメトライズに対して線積分の値が保存されることが判る。
保存的ベクトル場に対する線積分<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>はスカラーポテンシャル<math>\varphi</math>を用いて<math>\int_C \nabla\varphi\cdot d\boldsymbol{l}</math>と書けるので微分積分学の基本定理より<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>に等しい。
ここで<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>は曲線の端点にのみ依存し形状には依存しない。
そのため、'''線積分の値が積分経路に依存しない必要十分条件はベクトル場が保存的であること'''である。
ここで閉曲線である場合を考えると
:<math>\boldsymbol{r}(\alpha)=\boldsymbol{r}(\beta)</math>
より
:<math>\varphi(\boldsymbol{r}(\alpha))=\varphi(\boldsymbol{r}(\beta))</math>
なので
:<math>\oint_C \nabla\varphi\cdot d\boldsymbol{l}=0</math>
である。
逆に言うと、'''周回積分が0でない閉経路をとれるとき<math>\varphi</math>は<math>\boldsymbol{a}</math>のスカラーポテンシャルではない'''。
この事実は偏微分方程式を解いて求めたスカラーポテンシャルが実際にポテンシャルであるかどうかの確認に用いられる。
なお、先程求めたスカラーポテンシャルの一般式
:<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>
は線積分で表される。
具体的には、積分経路を<math>\gamma:(m,n,l)\to(m,n,z)\to(m,y,z)\to(x,y,z)</math>という3つの線分の和としてとれば
:<math>\varphi=\int_\gamma \boldsymbol{a}\cdot d\boldsymbol{l}+C</math>
である。
ここでスカラーポテンシャルとは勾配方程式
:<math>\nabla\varphi=\boldsymbol{a}</math>
の解だったので、'''線積分と勾配は逆演算'''である。
<math>\nabla\varphi\cdot d\boldsymbol{l}=d\varphi</math>より、スカラーポテンシャルの存在と完全微分方程式の対応がここからも得られる。また、完全微分方程式<math>d\varphi=0</math>の解は曲線を与えることも容易に判る。
仕事が線積分で定義されるという話をしたが、エネルギーの原理より力場がスカラーポテンシャルを有する(保存場)場合はエネルギー変化が移動経路に依存しないので力学的エネルギー保存法則が成り立つ。これが高校物理で扱った「保存力なら力学エネルギーが保存する」ことの正式な表現である。
ベクトル場の線積分はベクトル場と線素ベクトルの内積をとって積分していたが、外積をとって積分することもできる。
具体的には、
:<math>\boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} a_ydz-a_zdy \\ a_zdx-a_xdz \\ a_xdy-a_ydx \end{pmatrix}</math>
より
:<math>\int_C \boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} \int_C (a_ydz-a_zdy) \\ \int_C (a_zdx-a_xdz) \\ \int_C (a_xdy-a_ydx) \end{pmatrix}</math>
:<math>=\begin{pmatrix} \int_\alpha^\beta \left\{ a_y(\boldsymbol{r}(t))\frac{dz}{dt}-a_z(\boldsymbol{r}(t))\frac{dy}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_z(\boldsymbol{r}(t))\frac{dx}{dt}-a_x(\boldsymbol{r}(t))\frac{dz}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_x(\boldsymbol{r}(t))\frac{dy}{dt}-a_y(\boldsymbol{r}(t))\frac{dx}{dt} \right\}dt \end{pmatrix}</math>
これは物理学的にはビオ・サヴァールの法則の記述に用いられている。
:真空中で経路<math>C</math>を正の向きに流れる強さ<math>I</math>の定常電流・<math>C</math>上にない点<math>\mathrm{P}</math>・<math>C</math>上の点<math>\mathrm{Q}</math>に対し、<math>C</math>全体で生じる磁束密度<math>\boldsymbol{B}</math>の<math>\mathrm{P}</math>での値は真空の透磁率<math>\mu_0</math>として
::<math>\boldsymbol{B}(\mathrm{P})=\frac{\mu_0 I}{4\pi}\int_C \frac{\overrightarrow{\mathrm{PQ}}\times d\boldsymbol{l}}{\|\overrightarrow{\mathrm{PQ}}\|^3}</math>
応用例は乏しいが、スカラー場の線素ベクトルに関する積分、ベクトル場の線素に関する積分も同様に定義される。
:<math>\int_C \varphi d\boldsymbol{l} = \int_\alpha^\beta \varphi(\boldsymbol{r}(t))\frac{d\boldsymbol{r}}{dt}dt</math>
:<math>\int_C \boldsymbol{a} dl = \int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt</math>
これらはベクトル値である。
積分経路を流線上にとると、流線の定義から<math>d\boldsymbol{r}/\!\!/\boldsymbol{a}(\boldsymbol{r})</math>則ち一次従属なので、<math>d\boldsymbol{r}=k\boldsymbol{a}(\boldsymbol{r})</math>と書ける。
よって線積分の被積分関数は<math>\boldsymbol{a} \cdot d\boldsymbol{r} = k\|\boldsymbol{a}\|^2</math>となり、積分値が最大化される他、ベクトル場の沿流方向成分を抽出できる。実際に計算する際は、<math>\int_{\mathrm{streamline}} k\|\boldsymbol{a}\|^2</math>とは書かず、<math>\int_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>と書くのが望ましい(積分記号と積分微小要素はセットのため)。
流線が閉曲線である場合を考えると、<math>\oint_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>は閉曲線の正の向きで正、負の向きで負となるので0にはならない。そのため、流線が閉曲線であるベクトル場はスカラーポテンシャルを持たない。
===面積分===
線積分は常積分に於ける積分経路を任意の正則な<math>C^1</math>級曲線に拡張したものであった。同様に、二重積分に於ける積分領域を'''向き付けされた'''任意の<math>C^1</math>級曲面に拡張することを考える。
曲線に沿った微小量が線素で与えられたように、曲面に沿った微小量は面素で与えられる。故に、直観的には「面素に関して積分」すれば良いことが分かる。
三次元空間の曲面をベクトル表示すると
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} x(t, u) \\ y(t, u) \\ z(t, u) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D</math>
であり、被積分関数はこの曲面上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
面素は
:<math>dS=\sqrt{EG-F^2}dtdu=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
総合すると、<math>S</math>に沿った積分というものは曲面のパラメータを用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>S</math>に沿った'''面積分'''(曲面積分、surface integral)という。
今は三次元空間の場合を考えているので、外積を用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\left\|\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\| dtdu</math>
と表示しても良い。
スカラー場の面積分は
:<math>\iint_S \varphi dS</math>
のように略記される。
特に積分領域が閉曲面である場合は
:<math>\oiint_S \varphi dS</math>
のように書く。
1の面積分<math>\iint_S dS</math>は曲面積に等しい。
ベクトル場の線積分と同様にしてベクトル場の面積分
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
を考えたい。
線素ベクトルが「位置ベクトルの接線方向」で「ノルムが通常の線素と一致する」ように定義されたことを鑑みると、面素ベクトルは「位置ベクトルの法線方向」で「ノルムが通常の面素に一致する」ように定義するのが良いと考えられる。要するに、
:<math>d\boldsymbol{S}:=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>
としてみる。
ここで単位法線ベクトルを<math>\boldsymbol{n}</math>と置くと面素ベクトルは<math>\boldsymbol{n}dS</math>と表され、
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}=\iint_S (\boldsymbol{a}\cdot\boldsymbol{n})dS</math>
のようにスカラー場の面積分に帰着されることが判る。
これをベクトル場<math>\boldsymbol{a}</math>の<math>S</math>に沿った'''面積分'''という。
<math>\boldsymbol{a}\cdot\boldsymbol{n}</math>は<math>\boldsymbol{a}</math>から<math>S</math>の法線を横切る沿流成分を取り出していることになる。
このことから、ベクトル場の面積分を特に'''法線面積分'''(surface integral of the normal component)ということがある。
単位法線ベクトル<math>\boldsymbol{n}</math>は有向曲面に対して右手系を成し、各座標軸となす角度をそれぞれ<math>\alpha, \beta, \gamma</math>とすると通常の余弦関数で表されるベクトル<math>\begin{pmatrix} \cos \alpha \\ \cos \beta \\ \cos \gamma \end{pmatrix}</math>に等しい。これを'''方向余弦'''という。
方向余弦に関して、正射影を用いると以下が成り立つと判る。
:<math>\begin{cases} \cos\alpha dS = dydz \\ \cos\beta dS = dzdx \\ \cos\gamma dS = dxdy \end{cases}</math>
これを用いることで、面素ベクトルは
:<math>d\boldsymbol{S} = \boldsymbol{e}_x dydz + \boldsymbol{e}_y dzdx + \boldsymbol{e}_z dxdy = \begin{pmatrix} dydz \\ dzdx \\ dxdy \end{pmatrix}</math>
とも表される。
故に、法線面積分は形式的に
:<math>\iint_S(a_xdydz+a_ydzdx+a_zdxdy)</math>
とも書ける。
線積分と同様にベクトル場と面素ベクトルの外積、面素ベクトルのスカラー場倍、ベクトル場の面素倍をとって積分することも考えられるが、応用例に乏しい。
:<math>\iint_S \boldsymbol{a}\times d\boldsymbol{S}</math>
:<math>\iint_S \varphi d\boldsymbol{S}</math>
:<math>\iint_S \boldsymbol{a} dS</math>
これらはベクトル値である。
面素ベクトルは以下のように考えることもできる。
:平面<math>\Pi</math>上面積<math>A</math>の有界領域と<math>\Pi</math>の表向き法線<math>\boldsymbol{n}_\Pi</math>に対し、<math>\boldsymbol{A}=A\boldsymbol{n}_\Pi</math>を'''面積ベクトル'''と定義する。
:曲面<math>S</math>上の微小領域をとると曲面をその接平面で近似できるので平面上と同様にして面積ベクトルを定義できる。
:このとき、<math>A=dS</math>となるように定義した面積ベクトルが面素ベクトルである。
この考え方を用いると、
:<math>\oint_C d\boldsymbol{l}=\boldsymbol{0}</math>
及び
:<math>\oiint_S d\boldsymbol{S}=\boldsymbol{0}</math>
が示される。
面積分で定義される概念としては'''束'''<sup>※</sup>(flux)が有名である。
:流体の速度場<math>\boldsymbol{v}</math>に対し、<math>\iint_S \boldsymbol{v}\cdot d\boldsymbol{S}</math>は流束(単位時間当たりに<math>S</math>を通過する流体の流出量)である。
:磁束密度<math>\boldsymbol{B}</math>に対し、<math>\Phi_B=\iint_S \boldsymbol{B}\cdot d\boldsymbol{S}</math>は磁束である。
また、ガウスの法則も面積分で示される。
:ガウス面<math>S</math>が囲む電荷の総量を<math>q_\mathrm{inc}</math>とすると電束密度<math>\boldsymbol{D}</math>に対して
::<math>\oiint_S \boldsymbol{D}\cdot d\boldsymbol{S}=q_\mathrm{inc}</math>
<small>※数学界・物理界で「束」と呼ばれる対象は複数存在する。和訳されるときに「束」が充当されたものはここで扱う「flux」の他に「bundle(ファイバー束など)」「lattice([[束論]]の束)」「pencil(円束など)」「packet(波束など)」がある。</small>
<math>S</math>が表向きにパラメトライズされたとき、裏向きにパラメトライズされた曲面を<math>-S</math>と表した。
同じ向きを向く2つの曲面<math>S_1</math>と<math>S_2</math>の境界が一致するとき、これを一つの曲面と見做して曲面の和
:<math>S_1+S_2</math>
が定義される。
これを'''区分的に定義された曲面'''という。
<math>S</math>が'''区分的に滑らか'''であるとは、<math>S</math>が有限個の滑らかな曲面の和であることである。
これらを踏まえると、面積分には以下の性質が成り立つ。
#スカラー場
#:<math>\iint_S (k\varphi+l\psi) dS=k\iint_S \varphi dS + l \iint_S \psi dS</math>
#:<math>\iint_{-S}\varphi dS = \iint_S \varphi dS</math>
#:<math>\iint_{S_1+S_2}\varphi dS = \iint_{S_1}\varphi dS + \iint_{S_2}\varphi dS</math>
#ベクトル場
#:<math>\iint_S (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{S}=k\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}+l\iint_S \boldsymbol{b}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{-S}\boldsymbol{a}\cdot d\boldsymbol{S} = -\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{S_1+S_2}\boldsymbol{a}\cdot d\boldsymbol{S} = \iint_{S_1}\boldsymbol{a}\cdot d\boldsymbol{S} + \int_{S_2}\boldsymbol{a}\cdot d\boldsymbol{S}</math>
1番目の性質は線型性である。2番目の性質から、スカラー場の面積分に関しては任意の再パラメトライズ、ベクトル場の面積分に関しては向き付けを保つ再パラメトライズに対して面積分の値が保存されることが判る。
等位面に対する面積分を考える。曲面<math>S</math>がスカラー場<math>\omega</math>の等位面であるとき、その単位法線ベクトルは勾配を用いて
:<math>\boldsymbol{n}=\pm\frac{\nabla\omega}{\|\nabla\omega\|}</math>
と表される。右手系で考えるので正符号を採る。
等位面の方程式<math>\omega(x,y,z)=c</math>に対して陰関数定理が成り立つとすると陰関数<math>z=\psi(x,y)</math>を用いて<math>S:\boldsymbol{r}(x,y)=\begin{pmatrix} x \\ y \\ \psi(x,y) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in D</math>というモンジュ表示に落ちる。
よって
:<math>dS=\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
と
:<math>\boldsymbol{n}=\frac{\nabla\omega}{\|\nabla\omega\|}</math>
を用いて
:<math>\int_S \varphi dS = \int_D \varphi(x,y,\psi(x,y))\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
:<math>\int_S \boldsymbol{a}\cdot d\boldsymbol{S} = \int_D \boldsymbol{a}(x,y,\psi(x,y))\cdot\frac{\nabla\omega(x,y,\psi(x,y))}{\|\nabla\omega(x,y,\psi(x,y))\|}\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
を得る。
===体積分===
三次元空間の中では曲がった三次元空間を考えることはできない。そのため、以下の議論は平坦な三次元空間での話になる。
曲線長の微小量であった線素・曲面積の微小量であった面素と同様にして立体積の微小量について考えてみる。
立体<math>V</math>を微小立体に分割した体積を<math>\Delta V_i</math>としたとき、線積分・面積分が正式には区分求積法で定義されたようにリーマン和の極限
:<math>\lim_{\Delta V_i\to0}\sum_i \varphi(x_i, y_i, z_i)\Delta V_i</math>
で与えられる積分を考えたい。
これは多変数解析で行った議論と同様にして三変数関数の三重極限へと帰着されるが、三重極限は飛ばす順番を入れ替えられるとは限らないためこの極限値を求めることは困難である。
そこで、以下のように考える。
微小立体はどのような分割の仕方であっても直方体で近似できる(曲面上微小領域を平面上平行四辺形で近似したことからの類推)。このとき、微小体積<math>dV</math>は各辺の長さが<math>dx, dy, dz</math>であると考えることができる。故に、直方体の体積公式を用いて
:<math>dV=dxdydz</math>
これを'''体素'''(体積素・体積要素)という。
故に、求める積分は
:<math>\lim_{\Delta V_i\to0}\sum_i \varphi(x_i, y_i, z_i)\Delta V_i=\iiint_V \varphi(x,y,z) dxdydz</math>
という三重積分に帰着される。
これをスカラー場の<math>V</math>に沿った'''体積分'''(volume integral)という。
スカラー場の体積分は
:<math>\iiint_V \varphi dV</math>
のように略記される。
特に、積分領域が閉集合('''閉立体''')である場合は
:<math>\oiiint_V \varphi dV</math>
のように書く。
1の体積分<math>\iiint_V dV</math>は立体積に等しい。
<math>V</math>のベクトル表示が<math>\boldsymbol{r}(s,t,u)=\begin{pmatrix} x(s,t,u) \\ y(s,t,u) \\ z(s,t,u) \end{pmatrix} \quad {\scriptstyle\left(\begin{array}{c} s \\[-6pt] t \\[-6pt] u\end{array}\right)} \in D</math>である場合は、多変数解析の議論により
:<math>\iiint_V \varphi dV = \iiint_D \varphi(\boldsymbol{r}(s,t,u)) \left|\det \frac{\partial{(x,y,z)}}{\partial{(s,t,u)}}\right| dsdtdu</math>
であると容易に判る。
立体に対しては曲線に於ける接線、曲面に於ける法線のような「ベクトル表示から求められる、積分領域の向きを指定するための方向」が一意には存在しない。そのため、体素ベクトルというものは考えない。
故に、ベクトル場の体積分は
:<math>\iiint_V \boldsymbol{a}dV</math>
の一種類のみである。
体積分を用いて表される概念としては、電荷が有名である。
:電荷密度<math>\rho(x,y,z)</math>に対し、領域<math>V</math>内にある電荷の総量は
::<math>q=\iiint_V \rho(x,y,z)dV</math>
また、電荷分布に於ける電気双極子モーメントは
::<math>\boldsymbol{p}=\iiint_V \rho\boldsymbol{r} dV</math>
というベクトル場の体積分で定義される。
更に、以下のような概念も定義されている。
:物体の質量<math>m</math>、密度<math>\rho</math>とすると質量中心ベクトルは
::<math>\boldsymbol{r}_G=\frac{1}{m}\iiint_V \rho\boldsymbol{r}dV</math>
:電磁場の真空での運動量は
::<math>\boldsymbol{P}=\frac{1}{c^2}\iiint_V \boldsymbol{E}\times\boldsymbol{H}dV</math>
2つの立体<math>V_1</math>と<math>V_2</math>の境界が一致するとき、これを一つの立体と見做して立体の和
:<math>V_1+V_2</math>
が定義される。
これを'''区分的に定義された立体'''という。
<math>V</math>が'''区分的に滑らか'''であるとは、<math>V</math>が有限個の滑らかな立体の和であることである。
これらを踏まえると、体積分には以下の性質が成り立つ。
#スカラー場
#:<math>\iiint_V (k\varphi+l\psi) dV=k\iiint_V \varphi dV + l \iiint_S \psi dV</math>
#:<math>\iiint_{V_1+V_2}\varphi dV = \iiint_{V_1}\varphi dV + \iiint_{V_2}\varphi dV</math>
#ベクトル場
#:<math>\iint_V (k\boldsymbol{a}+l\boldsymbol{b})dV=k\iiint_V \boldsymbol{a}dV+l\iiint_V \boldsymbol{b}dV</math>
#:<math>\iiint_{V_1+V_2}\boldsymbol{a}dV = \iiint_{V_1}\boldsymbol{a} dV + \iiint_{V_2}\boldsymbol{a}dV</math>
===積分定理===
==発展事項==
{{節stub}}
{{Advanced|多様体論}}
{{Advanced|微分幾何学}}
{{Advanced|積分幾何学}}
ここではベクトル解析の発展編及び微分幾何学の基礎編として、「ユークリッド空間の部分多様体上の微分幾何学」を扱う。言うなれば「<math>n</math>次元版のベクトル解析学」である。
===体積分再考===
体積分は先程「<math>\mathbb{R}^3</math>上の閉立体<math>V</math>」上で考えたが、実はここには線積分・面積分との大きな非対称性がある。
線積分は「曲線」、面積分は「曲面」を積分領域としたが、先程定義した体積分の積分領域は「平坦な立体」なのである(二次元で例えば楕円領域<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}\leq1</math>は境界こそ"曲線"だが空間そのものは<math>\mathbb{R}^2</math>という"平面"であることと同じ)。
1次元の曲がった空間である曲線<math>M^1:\boldsymbol{r}=\boldsymbol{r}(s)</math>が<math>\mathbb{R}^2</math>内、2次元の曲がった空間である曲面<math>M^2:\boldsymbol{r}=\boldsymbol{r}(s, t)</math>が<math>\mathbb{R}^3</math>内に存在するように、3次元の曲がった空間である曲立体<math>M^3:\boldsymbol{r}=\boldsymbol{r}(s, t, u)</math>は<math>\mathbb{R}^4</math>内に存在すると考えるのが自然である。ここで一般に<math>M^n\subset\mathbb{R}^{n+1}</math>が成り立つと予想され、この関係を「<math>M^n</math>の<math>\mathbb{R}^{n+1}</math>への'''埋め込み'''」と呼ぶことにする。
線積分を<math>C=M^1</math>、面積分を<math>S=M^2</math>で定義したように、体積分を<math>M^3</math>で定義することを考える。
媒介変数空間<math>\begin{pmatrix} s \\ t \\ u \end{pmatrix} \in V \subset\mathbb{R^3}</math>上の微小変化を考えると全微分を用いて
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds+\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
よって<math>V</math>上の微小立方体<math>dsdtdu</math>は3ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds,\quad\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt,\quad\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行六面体へ移される。
体素はこの微小平行六面体の体積と考えられるが、<math>\boldsymbol{r}\in\mathbb{R}^4</math>より当然この3ベクトルは4項ベクトルなので、'''外積を含んでいるスカラー三重積は使えない'''。
全微分を一次変換表記すると
:<math>d\boldsymbol{r}=\begin{pmatrix} \frac{\partial{\boldsymbol{r}}}{\partial{s}} & \frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\begin{pmatrix} \frac{\partial{x}}{\partial{s}} & \frac{\partial{x}}{\partial{t}} & \frac{\partial{x}}{\partial{u}} \\ \frac{\partial{y}}{\partial{s}} & \frac{\partial{y}}{\partial{t}} & \frac{\partial{y}}{\partial{u}} \\ \frac{\partial{z}}{\partial{s}} & \frac{\partial{z}}{\partial{t}} & \frac{\partial{z}}{\partial{u}} \\ \frac{\partial{w}}{\partial{s}} & \frac{\partial{w}}{\partial{t}} & \frac{\partial{w}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
ここでヤコビ行列は<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\in\mathbb{R}^{4\times3}</math>であって'''正方行列でないので行列式も求まらない'''。
そこで、[[線型代数学続論/種々の行列#随伴行列|グラム行列]]を利用することを考える。
'''グラム行列は必ず半正定値行列'''なので行列式は非負であり、平方根をとれる。
そのため、<math>\mathbf{G}:=\left(\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\right)^*\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>として<math>\sqrt{\det\mathbf{G}}</math>を体積拡大率とする。
これは正方行列ならヤコビアンの絶対値に一致する。
{{NavTop|title=補足:体積拡大率に一致する証明}}
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>の列ベクトルにグラム=シュミットの直交化法を適用すると[[線型代数学続論/行列分解|QR分解]]によって
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}=\mathbf{QR}\quad (\mathbf{Q}\in\mathbb{R}^{4\times3}, \mathbf{R}\in\mathbb{R}^{3\times3})</math>
よって
:<math>\mathbf{G}=(\mathbf{QR})^*\mathbf{QR}</math>
:<math>=\mathbf{R}^*\mathbf{Q}^*\mathbf{Q}\mathbf{R}</math>
:<math>=\mathbf{R}^*\mathbf{E}_3\mathbf{R}</math>(<math>\because\mathbf{Q}</math>は列ユニタリ行列)
:<math>=\mathbf{R}^*\mathbf{R}</math>
:<math>\therefore \sqrt{\det\mathbf{G}}=\sqrt{\det\left( \mathbf{R}^*\mathbf{R} \right)}=\sqrt{\left(\det\mathbf{R}\right)^2}=|\det\mathbf{R}|</math>
<math>\mathbf{Q}</math>は列ユニタリ行列なのでその一次変換は等長変換であり、全微分による拡大率は<math>\mathbf{R}</math>による拡大率と一致する。<br/>
則ち、<math>\sqrt{\det\mathbf{G}}</math>を拡大率としてとれる。//
{{NavBottom}}
よって体積分は
:<math>\iiint_{M^3} f(\boldsymbol{r})dM^3 = \iiint_{V} f(\boldsymbol{r}(s, t, u))\sqrt{\det\mathbf{G}}\,dsdtdu</math>
ここから、適切な媒介変数表示が存在するならば<math>M^n</math>上での体積分の計算に<math>\mathbb{R}^{n+1}\setminus M^n</math>の情報は入ってこず、<math>M^n</math>の情報のみで計算されると予想される。
実際、<math>M^n</math>に適切な媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})\quad(\boldsymbol{p}\in\mathbb{R}^n)</math>が存在するとき、全微分による一次変換の拡大率は同様にグラム行列式の平方根で与えられるので体積素は<math>dM^n = \sqrt{\det\mathbf{G}} \prod_{k=1}^{n}d\boldsymbol{p}_k</math>と書け、これは正しい。
なお、二次元の場合を考えると<math>\mathbf{G}=\mathbf{K}</math>より<math>dM^2=dS</math>であり、面素に一致する。一次元の場合を考えると<math>\mathbf{G}=\|d\boldsymbol{r}\|^2</math>より<math>dM^1=dl</math>であり、線素に一致する。
実は、体素だけでなく一般に角度や長さといった幾何学的な量は埋め込み先である<math>\mathbb{R}^{n+1}</math>の情報を全く必要とせず、<math>M^n</math>の情報だけで構成できることが知られている。このことは微分幾何学のうち[[w:リーマン幾何学|リーマン幾何学]]と呼ばれる分野で詳しく扱われる。
ここまで<math>M^n</math>を適切な媒介変数<math>\boldsymbol{p}\in\mathbb{R}^n</math>で表すことを強調してきたが、媒介変数表示を考えるということは<math>M^n</math>から媒介変数空間<math>U\subset\mathbb{R}^n</math>への射影<math>\pi:M^n\to U</math>を考えるということである。
ここで、この<math>\pi</math>が全単射ならば逆向きの射影<math>\pi^{-1}:U\to M^n</math>が存在してそれが媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})</math>となるわけであるが、これは以下のようにも捉えられる。
:<math>\pi</math>によって射影した平坦な空間で座標を設定すると、'''適切な逆変換<sup>※</sup>によって曲がった空間<math>M^n</math>上に(局所)座標系を与えることができる'''。
つまり、体積分を媒介変数空間に置換積分するということは、逆に体積分の元の表示が「<math>M^n</math>上の局所座標系に於ける積分」であることを示している。
※この適切な逆変換が存在する条件は'''陰関数定理そのもの'''である。
ここで、適切な媒介変数表示が存在するよう<math>M^n</math>に制限を課したものが、以下で扱う'''多様体'''である。
===多様体===
===微分形式===
[[線型代数学続論/外積代数]]も参照。
===リーマン計量===
===テンソル解析===
[[線型代数学続論/テンソル代数]]も参照。
===複素ベクトル解析===
[[複素解析学]]も参照。
{{DEFAULTSORT:へくとるかいせき}}
[[Category:解析学]]
[[Category:微分積分学]]
[[Category:ベクトル解析|かいせきかくきそ]]
q3y18f30rr772t4owrc1j6hyroupfo9
304836
304835
2026-10-18T00:18:47Z
~2026-55692-88
92812
/* 面積分 */
304836
wikitext
text/x-wiki
{{Pathnav|数学|解析学|解析学基礎|frame=1}}
{{wikipedia|ベクトル解析}}
ここでは、ベクトル解析について解説する。[[物理数学I ベクトル解析]]も参照。
==前提知識==
ここでは、実数のみで考える。
===ベクトル===
[[高等学校数学C/ベクトル]]、[[線型代数学/ベクトル]]、[[解析学基礎/ベクトル]]などを参照。本項では、矢印を付した表記(<math>\vec{a}</math>など)と太字斜体による表記(<math>\boldsymbol{x}</math>など)を混用する。
===行列===
[[高等学校数学C/数学的な表現の工夫]]及び[[線形代数学]]・[[線型代数学続論]]の各ページを参照。本項では大文字の太字立体(<math>\mathbf{A}</math>など)で表記する。
===多変数解析===
[[解析学基礎/多変数関数の微積分]]を参照。
===領域===
<math>D\subset\mathbb{R}^n</math>と点<math>\boldsymbol{a}\in D</math>(位置ベクトル表記なので太文字斜体)に対し、集合<math>B_\varepsilon(\boldsymbol{a}) := \{ \boldsymbol{x} \in D \mid \| \boldsymbol{x} - \boldsymbol{a} \|<\varepsilon \}</math>を点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開球'''という。不等号を<math>\leqq</math>に変えたときは開区間↔閉区間と同様に'''閉球'''と呼ぶ。このとき、<math>D</math>のように<math>\mathbb{R}^n</math>の部分集合であって<math>\varepsilon</math>-開球を含むものを点<math>\boldsymbol{a}</math>の'''<math>\varepsilon</math>-開近傍'''と呼ぶ。閉球を含むときは同様に'''閉近傍'''と呼ぶ。
<math>\forall \boldsymbol{a} \in U, \exist \varepsilon>0, B_\varepsilon(\boldsymbol{a})\subset U</math>を満たす<math>U\subset\mathbb{R}^n</math>を'''開集合'''と呼び、<math>V=\mathbb{R}^n\setminus U</math>を'''閉集合'''と呼ぶ。
注意点として、開集合と閉集合は排反ではない。則ち「開集合且つ閉集合」である集合が存在し(例えば<math>\mathbb{R}, \varnothing</math>)、「開集合でも閉集合でもない」集合も存在する(例えば<math>[0, 1)</math>)。
<math>M\subset\mathbb{R}^n</math>を含む最小の閉集合を<math>M</math>の'''閉包'''と呼び、<math>M^-, \bar{M}, \mathrm{Cl}(M)</math>などと表す。例えば有理数の稠密性より<math>\mathbb{Q}^-=\mathbb{R}</math>である。
閉包の性質として「閉包=集合の内部と境界の和集合(<math>M^- = \mathrm{Int}(M) \cup \partial{M}</math>)」がある。
集合<math>S\subset\mathbb{R}^n</math>に対して以下を満たす<math>\mathbb{R}^n</math>上開集合の組<math>(G_1, G_2)</math>が'''とれない'''とき、
#<math>G_1 \cap S = \varnothing \land G_2 \cap S = \varnothing</math>
#<math>S = (G_1 \cap S) \sqcup (G_2 \cap S)</math>
「<math>S</math>は'''連結'''である」または「<math>S</math>は'''連結集合'''」という(但し、<math>\sqcup</math>は[[w:非交和|非交和]])。
空でない開連結集合を'''領域'''という。
実は、高校数学や1年次の解析学で扱ってきた「領域」はこの定義を満たしていないことが多かった。これは、「領域」の歴史的な用法では「条件の解集合」という意味であって開性や連結性を要求しなかったためである。しかし、本項を含めた以降に登場する数学ではこの定義を満たしていることが前提条件となる。なお、ややこしいことに「積分領域」は従来通り「その上で積分を行う集合」という緩い意味で使われることが多いので、区別が必要である。
===右手系===
三次元空間の正規直交基底を<math>(\boldsymbol{e}_1, \boldsymbol{e}_2, \boldsymbol{e}_3)</math>と置く。螺子を<math>\boldsymbol{e}_1\to\boldsymbol{e}_2</math>の向きに回すと<math>\boldsymbol{e}_3</math>の正方向に進むように3つの軸をとった系を'''右手系'''という。負方向に進むようにとったものを'''左手系'''という。数学・物理に限らず理数系の約束事として、'''三次元空間は必ず右手系で考える'''という暗黙の了解が存在するので覚えておこう。
右手系・左手系は基底の一部または全ての符号を反転することで変換することができる。一つだけを反転する場合は'''鏡像変換'''、二つだけを反転する場合は'''半回転'''、全てを反転する場合は'''空間反転'''と呼ぶ。
外積の結果として得るベクトルは右手系・左手系のどちらを考えるかで向きが変わる。このように、右手系↔左手系の変換で向きが変わるベクトルを'''軸性ベクトル'''という。
系の取り方で向きが変わるということは基底の係数である'''成分は不変量'''である。つまり、観測者の動きにベクトルが追従し、このベクトルは「物理的な実体を有しているのではなく計算の都合上向きが定められた便宜的な(=観測者が勝手に決めた)ベクトル」ということである。そのため、軸性ベクトルは'''擬ベクトル'''(シュードベクトル)とも呼ばれる。
位置や速度、加速度のような右手系・左手系のどちらを考えても同じ向きを向くベクトルを'''極性ベクトル'''という。座標系を取り換えても向きが維持されるため'''成分は座標変換に応じて変化する'''。これは、「観測の仕方によって起こる現象は変わらない」ということである。つまり擬ベクトルに対し、極性ベクトルは'''物理的実体を有するベクトル'''である。
偶奇と同じように軸性・極性にも外積を通じた相互関係が存在する。
:(軸性)×(軸性)=(軸性)
:(軸性)×(極性)=(極性)
:(極性)×(極性)=(軸性)
==基礎事項==
===ベクトル関数===
関数<math>\boldsymbol{f} (x) = \sum_{i} f_i(x) \boldsymbol{e}_i</math>を'''ベクトル(値)関数'''(vector-valued function, vector function)という。
ただし、各<math>\boldsymbol{e}_i</math>は各座標軸方向の単位ベクトルであり、<math>\boldsymbol{f}(x)</math>の定義域は各<math>f_i(x)</math>の定義域の積集合である。
ベクトルの演算が成分ごとの演算結果を並べたベクトルで定義されたように、ベクトル関数の演算は(結果となる値が存在するならば)各成分の演算結果を並べたベクトルに等しい。これはベクトルの線型性による。
例えば、<math>\boldsymbol{f}(x) = \begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>の極限は、
:<math>\lim_{x\to0} \boldsymbol{f}(x) = \begin{pmatrix} \lim_{x\to0} \cos x \\ \lim_{x\to0} \sin x \end{pmatrix}</math> (<math>\because</math>線型性)
:<math>=\begin{pmatrix} 1 \\ 0 \end{pmatrix}</math>
:<math>=\boldsymbol{e}_x</math>
と求まる。
このとき、<math>\boldsymbol{e}_x</math>を<math>\begin{pmatrix} \cos x \\ \sin x \end{pmatrix}</math>の<math>x\to0</math>に於ける'''極限ベクトル'''という。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で連続であるとは<math>\lim_{x\to\alpha}\boldsymbol{f}(x)=\boldsymbol{f}(\alpha)</math>が成立することであり、区間<math>I</math>で連続であるとは<math>\forall \alpha \in I</math>で連続であることである。
また、ベクトル関数の導関数<math>\boldsymbol{f}'(x)</math>は
:<math>\frac{d}{dx} \boldsymbol{f} (x) = \frac{d}{dx} \left( \sum_i f_i(x) \boldsymbol{e}_i \right)</math>
:<math>= \sum_i \left( \frac{d}{dx} f_i (x) \boldsymbol{e}_i \right)</math>(<math>\because</math>線型性)
:<math>= \begin{pmatrix} f'_1(x) \\ f'_2(x) \\ \vdots \\ f'_i(x) \\ \vdots \end{pmatrix}</math>
である。
この結果は、ベクトル関数に於ける導関数の正式な定義 <math>\lim_{h\to0} \frac{\boldsymbol{f}(x+h) - \boldsymbol{f}(x)}{h}</math>からも導かれる。
<math>\boldsymbol{f}(x)</math>が<math>x=\alpha</math>で微分可能であるとは極限値<math>\boldsymbol{f}'(\alpha)=\lim_{x\to\alpha}\frac{\boldsymbol{f}(x)-\boldsymbol{f}(\alpha)}{x-\alpha}</math>が存在することであり、区間<math>I</math>で微分可能であるとは<math>\forall \alpha \in I</math>で微分可能であることである。
高階導関数・高階微分可能も同様にして定義される。
<math>\boldsymbol{f}(x)</math>が区間<math>I</math>で連続ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^0</math>級であるといい、<math>\boldsymbol{f}\in C^0(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で微分可能で<math>\boldsymbol{f}'(x)\in C^0(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^1</math>級である(一階連続微分可能)といい、<math>\boldsymbol{f}\in C^1(I)</math>と書く。<math>\boldsymbol{f}(x)</math>が<math>I</math>で二階微分可能で<math>\boldsymbol{f}'\in C^1(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>上で<math>C^2</math>級である(二階連続微分可能)といい、<math>\boldsymbol{f}\in C^2(I)</math>と書く。同様にして順々に<math>C^k</math>級が定義され、<math>\forall k \in \mathbb{N}, \boldsymbol{f}\in C^k(I)</math>ならば<math>\boldsymbol{f}(x)</math>は<math>I</math>で<math>C^\infty</math>級(無限階連続微分可能)であるといい、<math>\boldsymbol{f}\in C^\infty(I)</math>と書く。<math>C^\infty</math>級である関数を'''滑らかな'''関数ともいう。
高校数学や高校物理で扱った平面(<math>\mathbb{R}^2</math>)上の運動は、実は2項ベクトル関数の理論に他ならない。
例えば、平面上の運動に於ける加速度・速度・変位の関係は<math>\boldsymbol{x}(t)= \begin{pmatrix} f(t) \\ g(t) \end{pmatrix}</math>として<math>\boldsymbol{a}(t) = \frac{d}{dt}\boldsymbol{v}(t) = \frac{d^2}{dt^2} \boldsymbol{x}(t)</math>と表すことができる。
曲線の媒介変数表示は、パラメータを変数とするベクトル関数とみることができる。
例えば、円の媒介変数表示<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \end{cases}</math>は、<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>という2次元ベクトル関数とみることができる。更に<math>\theta=\omega t</math>とすると、これは等速円運動の式である。
1変数ベクトル関数の微分に関して、以下の公式が成り立つ。
#定数倍の導関数:<math>\{k\boldsymbol{a}(x)\}'=k\boldsymbol{a}'(x)</math>
#和・差の導関数:<math>\{ \boldsymbol{a}(x)\pm\boldsymbol{b}(x) \}' = \boldsymbol{a}'(x)\pm\boldsymbol{b}'(x)</math>
#積の導関数:<math>\{ f(x)\boldsymbol{a}(x) \}' = f'(x)\boldsymbol{a}(x)+f(x)\boldsymbol{a}'(x)</math>
#商の導関数:<math>\left\{ \frac{\boldsymbol{a}(x)}{f(x)} \right\}' = \frac{f(x)\boldsymbol{a}'(x)-f'(x)\boldsymbol{a}(x)}{\{f(x)\}^2} \quad (f(x)\neq0)</math>
#内積の導関数:<math>\{\boldsymbol{a}(x)\cdot\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)+\boldsymbol{a}(x)\cdot\boldsymbol{b}'(x)</math>
#外積の導関数:<math>\{\boldsymbol{a}(x)\times\boldsymbol{b}(x)\}' = \boldsymbol{a}'(x)\times\boldsymbol{b}(x)+\boldsymbol{a}(x)\times\boldsymbol{b}'(x)</math>
#スカラー三重積の導関数:<math>[\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\cdot\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#ベクトル三重積の導関数:<math>[\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}]' = \boldsymbol{a}'(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}'(x)\times\boldsymbol{c}(x)\}+\boldsymbol{a}(x)\times\{\boldsymbol{b}(x)\times\boldsymbol{c}'(x)\}</math>
#連鎖律(チェイン・ルール):<math>[\boldsymbol{a}\{f(x)\}]'=\boldsymbol{a}'\{f(x)\}f'(x)</math>
ベクトル関数の'''ノルム'''(大きさ、長さ)は、通常のベクトルと同様に
:<math>\| \boldsymbol{f}(x) \| = \sqrt{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)} = \sqrt{\sum_{i} \{f_i (x)\}^2}</math>
で与えられる。
つまり、ノルムは元のベクトル関数と同一変数のスカラー関数である。
ここで、このスカラー関数が定数関数である条件に就て見てみよう。
:<math>\| \boldsymbol{f}(x) \|= c \quad (c\in\mathbb{R}_{>0})</math>の両辺を2乗して
:<math>\| \boldsymbol{f}(x) \|^2 = \boldsymbol{f}(x)\cdot\boldsymbol{f}(x) = c^2</math>
:両辺微分すると内積の微分より
:<math>\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:<math>\therefore \boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0</math>
:逆に、
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=0 \iff 2\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\boldsymbol{f}'(x)\cdot\boldsymbol{f}(x)+\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'=0</math>
:<math>\int \{\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)\}'dx= \int 0 dx</math>
:<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}(x)=C_1</math>(<math>C_1\geq0</math>は積分定数)
:<math>\| \boldsymbol{f}(x) \|^2=C_1</math>より
:<math>\| \boldsymbol{f}(x) \| = \sqrt{C_1} = \mathrm{const}.</math>
よって、以下が成り立つ。
{{定理|(直交条件の定理)}}
:<math>\| \boldsymbol{f}(x) \|= \mathrm{const}. \iff \boldsymbol{f}(x) \cdot \boldsymbol{f}'(x) = 0</math>
{{定理終わり}}
これは、物理的には「位置ベクトルと速度ベクトルが直交する」ことを表す。則ち、<math>\boldsymbol{f}(x)</math>の終点が始点を中心とする円運動(球面運動)をするということである。
また、ベクトル関数が変数に依らず常に同一方向を向く条件も見てみよう(但し<math>\boldsymbol{f}(x)\neq\boldsymbol{0}</math>)。
:所与の条件は零ベクトルでない定ベクトル<math>\boldsymbol{c}</math>を用いて<math>\boldsymbol{f}(x) = f(x)\boldsymbol{c}</math>と表される。
:両辺微分して<math>\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}=f'(x)\boldsymbol{c}</math>
:ここで元のベクトル関数との外積をとると
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\{f(x)\boldsymbol{c}\}\times\{f'(x)\boldsymbol{c}\}=f(x)f'(x) (\boldsymbol{c}\times\boldsymbol{c})=f(x)f'(x)\boldsymbol{0}=\boldsymbol{0}</math>
:逆に、
:<math>\boldsymbol{f}(x)\times\boldsymbol{f}'(x)=\boldsymbol{0}</math>とすると一次従属なので
:<math>\boldsymbol{f}'(x)=g(x)\boldsymbol{f}(x)</math>という微分方程式が成り立つ。
:各成分ごとに微分方程式を解くと、
::これは変数分離型微分方程式なので第i成分は
::<math>\frac{df_i}{dx}=g(x)f_i(x)</math>
::<math>\int \frac{df_i}{f_i(x)}=\int g(x)dx</math>
::<math>G'(x)=g(x), C_i</math>を積分定数として<math>\log|f_i(x)|=G(x)+C_i</math>
::<math>C_i=\pm e^{C_i}</math>と改めておくと<math>f_i(x)=C_i e^{G(x)}</math>
:よって
:<math>\boldsymbol{f}(x)=\sum_i f_i(x) \boldsymbol{e}_i = \sum_i C_i e^{G(x)} \boldsymbol{e}_i = e^{G(x)} \sum_i C_i \boldsymbol{e}_i</math>
:ここで<math>f(x)=e^{G(x)}, \boldsymbol{c}=\sum_i C_i \boldsymbol{e}_i</math>と置くと
:<math>\boldsymbol{f}(x) = f(x) \boldsymbol{c}</math>となり、方向は変数に依らず一定であることが判る//
よって、以下が成り立つ。
{{定理|(平行条件の定理)}}
<math>\boldsymbol{c},\boldsymbol{f}(x)\neq\boldsymbol{0}</math>として
:<math>\boldsymbol{f}(x)=f(x)\boldsymbol{c} \iff \boldsymbol{f}(x) \times \boldsymbol{f}'(x) = \boldsymbol{0}</math>
{{定理終わり}}
ベクトル解析では三次元空間の場合を考えることが多いため上では外積を用いて証明したが、外積は3項ベクトル(または7項ベクトル)にしか定義されないのであった。
一般次元では外積に代わって次の関係式を用いる。
:<math>|\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)|=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|</math>
これはCS不等式の等号成立の場合である。
実際、<math>\boldsymbol{f}(x)\cdot\boldsymbol{f}'(x)=\|\boldsymbol{f}(x)\|\|\boldsymbol{f}'(x)\|\cos\{\theta(x)\}</math>より等号成立の必要十分条件は
:<math>\cos\{\theta(x)\}=\pm1\iff\theta(x) \equiv 0 \,(\mathrm{mod}\pi)</math>
であり、2ベクトル<math>\boldsymbol{f}(x), \boldsymbol{f}'(x)</math>は平行とわかる。<br/>
平行ということは一次従属ということなので先程のように変数分離形微分方程式を解くことで3次元と同じ結果を得る。//
補足として、力学への応用を考える。
:速さの二乗<math>\|\boldsymbol{v}(t)\|^2</math>を時間微分すると
:<math>\frac{d}{dt}\|\boldsymbol{v}(t)\|^2=\frac{d}{dt}(\boldsymbol{v}(t)\cdot\boldsymbol{v}(t))=\frac{d\boldsymbol{v}(t)}{dt}\cdot\boldsymbol{v}(t)+\boldsymbol{v}(t)\cdot\frac{d\boldsymbol{v}(t)}{dt}=2(\boldsymbol{v}(t)\cdot\boldsymbol{a}(t))</math>
:よって等速運動の条件<math>\|\boldsymbol{v}(t)\|=\mathrm{const}.</math>は直交条件の定理から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>に同値である。
:これを力学的に解釈すると、「加速度ベクトルは速度ベクトル方向に仕事をしないから速度ベクトルの大きさを変えずに向きだけを変える」となる。
:平面上で等速円運動を考えると円運動条件から<math>\boldsymbol{r}(t)\perp\boldsymbol{v}(t)</math>、等速条件から<math>\boldsymbol{v}(t)\perp\boldsymbol{a}(t)</math>なので<math>\boldsymbol{r}(t) /\!/ \boldsymbol{a}(t)</math>が出てくる。
:円運動条件<math>\|\boldsymbol{r}(t)\|^2=r^2</math>を一階微分すると
::<math>2\boldsymbol{r}(t)\cdot\boldsymbol{r}'(t)=0</math>
:もう一度微分して
::<math>2(\boldsymbol{r}(t)\cdot\boldsymbol{r}''(t)+\boldsymbol{r}'(t)\cdot\boldsymbol{r}'(t))=0</math>
:則ち
::<math>\boldsymbol{r}(t)\cdot\boldsymbol{a}(t)+\boldsymbol{v}(t)\cdot\boldsymbol{v}(t)=0</math>
:位置ベクトルと加速度ベクトルが一次従属なので<math>\boldsymbol{a}(t)=\lambda\boldsymbol{r}(t)</math>であり、等速条件より<math>\|\boldsymbol{v}(t)\|=v</math>なので
::<math>\lambda r^2 + v^2 = 0</math>
::<math>\therefore \lambda = -\frac{v^2}{r^2}<0</math>
:則ち<math>\boldsymbol{r}(t)</math>と<math>\boldsymbol{a}(t)</math>は逆向きであり、円運動の中心は<math>\boldsymbol{r}(t)</math>の始点なので<math>\boldsymbol{a}(t)</math>は常に円運動の中心を向く'''向心加速度'''であることが証明された。//
なお、3次元以上では「<math>\boldsymbol{a}\perp\boldsymbol{b}\land\boldsymbol{b}\perp\boldsymbol{c}\implies\boldsymbol{a}/\!/\boldsymbol{c}</math>」が一般には成り立たないのでこの議論を成立させるには追加の条件が必要である。
<math>\boldsymbol{f}(x)</math>の不定積分は、各<math>f_i(x)</math>の原始関数を並べたベクトルを<math>\boldsymbol{F}(x)</math>として
:<math>\int \boldsymbol{f}(x) dx = \boldsymbol{F}(x)+\boldsymbol{C}</math>(<math>\boldsymbol{C}</math>は各積分定数を並べたベクトル)
と表される。
また、定積分は
:<math>\int^b_a \boldsymbol{f}(x) dx=\boldsymbol{F}(b)-\boldsymbol{F}(a)</math>
と表される。
1変数ベクトル関数の積分について、以下が成り立つ(不定積分表記だが定積分に就ても同様)。
#定数倍の原始関数:<math>\int \{k\boldsymbol{a}(x)\} dx = k\int\boldsymbol{a}(x)dx</math>
#和・差の原始関数:<math>\int \{\boldsymbol{a}(x)\pm\boldsymbol{b}(x)\}dx=\int\boldsymbol{a}(x)dx\pm\int\boldsymbol{b}(x)dx</math>
#内積の原始関数<math>\int \{\boldsymbol{k}\cdot\boldsymbol{a}(x)\}dx=\boldsymbol{k} \cdot \left( \int \boldsymbol{a}(x) dx \right)</math>
#外積の原始関数<math>\int \{\boldsymbol{k}\times\boldsymbol{a}(x)\}dx=\boldsymbol{k} \times \left( \int \boldsymbol{a}(x) dx \right)</math>
#スカラー倍の部分積分:<math>\int f(x)\boldsymbol{a}'(x)dx= f(x)\boldsymbol{a}(x)-\int f'(x)\boldsymbol{a}(x) dx \iff \int f'(x)\boldsymbol{a}(x)dx= f(x)\boldsymbol{a}(x)-\int f(x)\boldsymbol{a}'(x) dx</math>
#内積の部分積分:<math>\int \{ \boldsymbol{a}(x)\cdot\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\cdot\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\cdot\boldsymbol{b}(x)\}dx</math>
#外積の部分積分:<math>\int \{ \boldsymbol{a}(x)\times\boldsymbol{b}'(x) \}dx = \boldsymbol{a}(x)\times\boldsymbol{b}(x) - \int \{\boldsymbol{a}'(x)\times\boldsymbol{b}(x)\}dx</math>
#置換積分:<math>u=f(x)</math>として<math>\int \boldsymbol{a}'\{f(x)\}f'(x) dx = \int \boldsymbol{a}(u)du</math>
平行条件の定理の証明でベクトル関数の微分方程式を解いたように、成分毎に考えることで解空間ベクトルを求められる。
:1階線型常微分方程式<math>\boldsymbol{f}'(x)+a(x)\boldsymbol{f}(x)=\boldsymbol{b}(x)</math>の解に就て考える。
:第<math>i</math>成分を考えると<math>f'_i(x)+a(x)f_i(x)=b_i(x)</math>という1階線型常微分方程式を得るので、
:両辺に積分因子<math>\mu(x)=\exp\left(\int a(x) dx\right)</math>を掛けることで
:<math>f_i(x)=\frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\}</math>を得る。
:よって一般解は
:<math>\boldsymbol{f}(x) = \sum_i \frac{1}{\mu(x)} \left\{ \int \mu(x) b_i(x) dx + C_i \right\} \boldsymbol{e}_i=\frac{1}{\mu(x)}\left\{ \int \mu(x) \boldsymbol{b}(x) dx + \boldsymbol{C} \right\}</math>
ベクトル関数は必ずしもここで扱った<math>\boldsymbol{f}: \mathbb{R}\to\mathbb{R}^n</math>のみを指さない。
例えば、ベクトル変数 <math>\boldsymbol{x}= \sum_i g_i (x) \boldsymbol{e}_i</math>に対して
:<math>\boldsymbol{h}(\boldsymbol{x})=\sum_i (h_i \circ g_i) (x) \boldsymbol{e}_i</math>
と定義されるような関数<math>\boldsymbol{h}:\mathbb{R}^m \to \mathbb{R}^m</math>もベクトル関数である。
また、始域と終域の次元が異なる<math>\boldsymbol{i}: \mathbb{R}^m \to \mathbb{R}^n \, (m, n\neq1)</math>のようなベクトル関数も考えられる。
一般に、始域が<math>\mathbb{R}^n (n\neq1)</math>であっても終域が<math>\mathbb{R}</math>である関数はベクトル関数に対して'''スカラー関数'''(scalar function)と呼ばれる。スカラー関数は入力ベクトルを「変数の組」と見れば通常の多変数関数に一致する。
この節で述べた理論は、多くは一般のベクトル関数に対しても成り立つ。但し、後述のヤコビ行列のような拡張を必要とするものもある。
また、多変数ベクトル関数<math>\boldsymbol{f}(x_1, x_2,\cdots,x_n)</math>を考えたとき、多変数微積分の理論は一変数微積分と同様にしてベクトル関数にもそのまま拡張される。
===ベクトル場・スカラー場===
写像<math>\boldsymbol{a}: \mathbb{R}^m \to \mathbb{R}^n</math>を'''ベクトル場'''(vector field)という。
実際には<math>m=n</math>の場合を考えることが多い。
写像<math>\varphi: \mathbb{R}^n \to \mathbb{R}</math>を'''スカラー場'''(scalar field)という。
それぞれ上で述べたベクトル関数・スカラー関数に対応する。
もう少し具体的に述べると、空間の領域<math>V</math>が与えられたときその各点にスカラーまたはベクトルを割り当てたものが場である。要するに、<math>p\in V</math>とすると
:スカラー場:<math>\varphi=\varphi(p)</math>
:ベクトル場:<math>\boldsymbol{a}=\boldsymbol{a}(p)</math>
のように場は「点を入力とする<sup>※</sup>関数」である。
<small>※なお、ベクトル場を図示するときは「出力されたベクトルの'''始点は原点でなく入力された点'''」であることに注意が必要である。出力ベクトルの成分表示は「入力点を基準に据えたときの位置ベクトル」なので原点から目盛を数えることに意味はない。</small>
ここで<math>V</math>に何かしらの座標が設定されていれば、その座標系の変数の組をベクトルと見做すことで場を「通常のスカラー関数・ベクトル関数」として扱えるのである。
則ち、「滑らかな場」という概念は「滑らかな関数」として定義することができる。より具体的に言うと、スカラー場・ベクトル場が'''滑らか'''であるとは対応するスカラー関数・ベクトル関数が<math>C^\infty</math>級であることである。但し、滑らかさは任意の座標変換で保たれるわけではないことに注意が必要である(後述の座標変換テンソル及びその逆行列の全ての成分関数が滑らかである必要がある)。
ここで、二変数関数の極値を思い返してみる。
<math>z=f(x, y)</math>が<math>(a, b)</math>で極大であるとは<math>\begin{pmatrix} x \\ y \end{pmatrix}\neq\begin{pmatrix} a \\ b \end{pmatrix}</math>として
:<math>\exist \delta>0, \forall {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in \mathbb{R}^2, {\scriptstyle\left\| \left(\begin{array}{c} x \\[-6pt] y \end{array}\right) - \left(\begin{array}{c} a \\[-6pt] b \end{array}\right) \right\|} < \delta \implies f(x, y) \leq f(a, b)</math>
という定義だった。
<math>z=f(x, y)</math>は曲面を表すが、これを<math>z</math>軸正方向から<math>xy</math>平面に射影するとその陰が<math>(x, y)</math>の動く範囲となるのであった。
ここで<math>\boldsymbol{x}:=\begin{pmatrix} x \\ y \end{pmatrix}, \boldsymbol{\alpha}:=\begin{pmatrix} a \\ b \end{pmatrix}</math>とすると<math>z=f(x, y)</math>はスカラー場<math>z=\phi(\boldsymbol{x})</math>と解釈することができ、更に条件法の前件は<math>\boldsymbol{\alpha}</math>の<math>\delta</math>-開球(二次元なので開円板)である。
なので、極大値の定義式をベクトル解析的に解釈すると「<math>xy</math>平面の各点に<math>z</math>の値を割り当てた数分布に於いて、開円板<math>B_\delta(\boldsymbol{\alpha})</math>内部に於ける<math>z</math>の最大値が<math>\phi(\boldsymbol{\alpha})</math>となるような正数<math>\delta</math>が存在する」ということである。
ベクトル場の例としては、電場・磁場・重力場などが挙げられる。
スカラー場の例としては、電位分布・温度分布・圧力分布などが挙げられる。
例えば、ベクトル場<math>\boldsymbol{f}=(x, 0, 0)</math>は、<math>\mathbb{R}^3</math>内の平面<math>x=k</math>上の任意点に、その点を始点とするベクトル<math>\begin{pmatrix} k \\ 0 \\ 0 \end{pmatrix}</math>が存在する状態を表す。
ベクトル場の和は、出力ベクトルの型が同じならばベクトル場の成分の和をとったものに等しい。
例えば、<math>\boldsymbol{f}(x, y, z)=(y, z, x), \boldsymbol{g}(x, y, z)=(z, x, y)</math>について
:<math>(\boldsymbol{f}+\boldsymbol{g})(x, y, z)=(y, z, x)+(z, x, y)=(y+z, z+x, x+y)</math>である。
これは、ベクトル場の加法の定義が
:<math>\forall p \in V, (\boldsymbol{f}+\boldsymbol{g})(p):=\boldsymbol{f}(p)+\boldsymbol{g}(p)</math>
となっていて且つ<math>V</math>に座標を入れればベクトル関数の加法則をそのまま適用できるためである(入力点が異なるとき、場同士は足すことができない)。
曲線<math>\{\boldsymbol{x}\in\mathbb{R}^2 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等高線'''(等高曲線)、曲面<math>\{\boldsymbol{x}\in\mathbb{R}^3 \mid \varphi(\boldsymbol{x})=\mathrm{const}.\}</math>を'''等位面'''(等位曲面)という。これらの詳細は後述する。
==曲線論・曲面論==
===曲線===
<math>xy</math>平面上の曲線は<math>y=f(x) (x\in[a, b])</math>という陽関数表示で扱うことが多かった。しかし、これだと自分自身と交わる('''自己交叉'''する)曲線や<math>x=x_0</math>に対して<math>f(x_0)</math>の値が複数存在する(<math>f</math>が'''多価関数''')場合に不都合が生じる。
例えば円を陽関数表示しようとすると
:<math>x^2+y^2=r^2</math>を<math>y</math>に就いて解いて
:<math>y=\pm\sqrt{r^2-x^2}</math>
則ち
:<math>y=\begin{cases} \sqrt{r^2-x^2} & (y\geq0) \\ -\sqrt{r^2-x^2} & (y<0) \end{cases}</math>
という多価関数が必要になる。
これだと端点の振舞を一々調べる必要があって曲線の連続性や接線の議論が煩雑になってしまう。
しかし、先程も述べたように曲線の媒介変数表示はベクトル関数として見れるのであった。
:<math>\boldsymbol{r}(\theta) = r\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}</math>(再掲)
こうすると一変数連続ベクトル関数によって曲線を表すことが可能である。物理的に捉えると「質点の運動の軌跡を原点からの位置ベクトルの時間変化で表す」ということである。
一般に、<math>\boldsymbol{r}\in\mathbb{R}^n, t \in I</math>としてベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>の解集合<math>\{\boldsymbol{r}(t) \mid t \in I \}</math>は<math>n</math>次元空間内の曲線<math>C</math>を表す。これを<math>C</math>の'''ベクトル表示'''という。
ベクトル表示は成分表示に直せば<math>\boldsymbol{r}(t)=\sum_i r_i(t)\boldsymbol{e}_i</math>となる。これは媒介変数表示<math>\begin{cases} x_1&=&r_1(t) \\ x_2&=&r_2(t) \\ &\,\,\vdots& \\ x_n&=&r_n(t) \end{cases}</math>をベクトル表記したものに一致する。
例えば、<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ bt \end{pmatrix}</math>は'''常螺旋'''(弦巻線)のベクトル表示である。
パラメータが増加するときの点の移動方向を曲線の'''正の向き'''と定める。曲線の'''負の向き'''はパラメータが減少するときの点の移動方向である。このとき、パラメータで'''向き付け'''された曲線という表現もなされる。曲線<math>C</math>に対し、同じパラメータを用いた逆向きの曲線を<math>-C</math>と表す。ベクトル表示では<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>-C:\boldsymbol{r}=\boldsymbol{r}(-t)</math>ということである。
パラメータに関する変数変換<math>u=\phi(t)</math>を考える。但し、<math>\phi</math>は広義単調関数とする<sup>※</sup>。このとき、<math>\frac{du}{dt}</math>が非負ならば曲線の向き付けが保たれ、非正ならば向き付けが反転する。<math>\frac{du}{dt}=0</math>となる領域では点の運動が停止する。
<small>※<math>\phi</math>が非単調関数のときは曲線上の点が行ったり来たりすることになるため曲線のパラメータ表示としては扱いづらい。</small>
<math>\boldsymbol{r}(t) \in C^1</math>且つ<math>\boldsymbol{r}'(t)\neq\boldsymbol{0}</math>であるとき、曲線<math>C</math>は'''滑らか'''であるという。
滑らかな曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>に対して<math>\boldsymbol{r}'(t)</math>を<math>C</math>の'''速度ベクトル'''という。
<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}</math>として点<math>\mathrm{P}(t)</math>に於ける速度ベクトルは<math>\lim_{\Delta t\to0}\frac{\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)}{\Delta t}</math>の極限ベクトルであるが、<math>\boldsymbol{r}(t+\Delta t)-\boldsymbol{r}(t)</math>を図示することで速度ベクトルが曲線<math>C</math>の点<math>\mathrm{P}(t)</math>に於ける接線の方向ベクトルになっていることがわかる。よって、速度ベクトルを'''接線ベクトル'''(接ベクトル)ともいう。
速度ベクトルが非零である曲線を'''正則'''な曲線と呼ぶ。滑らかな曲線は正則曲線である。
なお、一般には陽関数表示が区分的であることとベクトル表示の成分関数が区分的であることに対応はないほか、パラメータの取り方で速度ベクトルが変わるので「曲線の幾何学的滑らかさ」と「ベクトル表示した関数の解析学的滑らかさ」は一致するとは限らない。
正則な曲線に対して曲線長('''弧長''')を考える。
二次元曲線の場合は数学Ⅲで既に扱った。
:<math>L=\int_a^b \sqrt{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2}dt</math>
実は、これを一般の<math>n</math>次元にそのまま拡張することができる。
{{定理|(弧長公式)}}
曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t)</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ(<math>a<b</math>)は
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
で与えられる。
{{定理終わり}}
*証明
:<math>a=t_0, b=t_m</math>として閉区間<math>[a, b]</math>を各<math>t_i</math>で等分割する。このとき小区間<math>[t_{k-1}, t_k]</math>の長さは<math>\Delta t=\frac{b-a}{m}</math>。
:<math>C</math>の点<math>\mathrm{P}(a)</math>から点<math>\mathrm{P}(b)</math>までの長さ<math>L</math>は折れ線の長さ<math>\overline{\mathrm{P}(t_{k-1})\mathrm{P}(t_k)}</math>の総和で近似される。
:ここで<math>\overrightarrow{\mathrm{OP}}=\boldsymbol{r}(t)</math>より
::<math>L_m=\sum_{k=1}^m \| \boldsymbol{r}(t_k)-\boldsymbol{r}(t_{k-1}) \| = \sum_{k=1}^m \left\| \frac{\boldsymbol{r}(t_{k-1}+\Delta t)-\boldsymbol{r}(t_{k-1})}{\Delta t-0} \right\|(\Delta t-0)</math>
:分割を限りなく細かくする極限をとると<math>m\to\infty</math>より<math>\Delta t\to0</math>なので
::<math>\lim_{m\to\infty} L_m = \sum_{k=1}^\infty \left\| \frac{d\boldsymbol{r}}{dt}(t_{k-1}) \right\|dt</math>
:区分求積法より最後の無限級数は収束して
:<math>L=\int_a^b \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>//
ここで、<math>dl:=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>という微小量を'''線素'''と呼ぶ。
1を線素に関して積分したパラメータ<math>s:=\int_0^t dl</math>を'''弧長パラメータ'''(標準パラメータ)という。弧長パラメータは曲線上で「基準点からの符号付き距離」を表す。
曲線の弧長パラメータによるベクトル表示('''弧長パラメータ表示''')を考える。<math>s=\int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>で正則よりノルムは正。則ち<math>\frac{ds}{dt}>0</math>より<math>s=\phi(t)</math>は狭義単調増加なので、逆関数<math>t=\phi^{-1}(s)</math>を考えることができる。よって、<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>に<math>t=\phi^{-1}(s)</math>を代入した<math>\boldsymbol{r}=\boldsymbol{r}(\phi^{-1}(s))</math>が弧長パラメータ表示である。これを<math>\boldsymbol{r}=\boldsymbol{r}(s)</math>と略記してしまうことも多いが、'''一般には元の<math>\boldsymbol{r}(t)</math>と成分関数が異なる'''ことに注意。
通常の媒介変数によるベクトル表示は「座標系が予め与えられた状況」での表示であるが、弧長パラメータは座標系を取り替えたとしても表す曲線そのものが変わらなければ不変である。よって、「座標系に依存しない表記」として弧長パラメータ表示は多く利用されている。
また、弧長パラメータ表示で連鎖律を適用すると
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{dt}{ds}=\frac{d\boldsymbol{r}(t)}{dt}\cdot\frac{1}{\frac{ds}{dt}}</math>
ここで微分積分学の基本定理より
:<math>\frac{ds}{dt}=\frac{d}{dt} \int_0^t \left\| \frac{d\boldsymbol{r}}{dt} \right\|dt = \left\| \frac{d\boldsymbol{r}}{dt} \right\|</math>
なので
:<math>\frac{d\boldsymbol{r}(s)}{ds}=\frac{\frac{d\boldsymbol{r}(t)}{dt}}{\left\| \frac{d\boldsymbol{r}}{dt} \right\|}</math>
であり、自身のノルムで割ってるので恒等的に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>である。
よって、弧長パラメータ表示された曲線の接ベクトルは常に単位ベクトルである。
弧長パラメータ表示された曲線で線素を考えると<math>s=\int_0^s \left\| \frac{d\boldsymbol{r}(s)}{ds} \right\| ds = \int_0^s dl</math>だが、常に<math>\left\| \frac{d\boldsymbol{r}}{ds} \right\|=1</math>なので<math>ds=dl</math>であり、弧長パラメータの微小量は線素に等しい(弧長パラメータそのものが1の線素に関する積分なので当たり前ではある)。
<math>\boldsymbol{e}_\dagger(s)=\frac{d\boldsymbol{r}}{ds}</math>と置くと、点<math>\mathrm{P}(s_0)</math>に於ける接線の方程式は
:<math>\boldsymbol{p}-\boldsymbol{r}(s_0)=\boldsymbol{e}_\dagger(s_0) (s-s_0)</math>
と表される。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>
であり、「接線が一次近似に対応する」という構造はベクトル関数でも維持されることが判った。
領域<math>\boldsymbol{D}</math>上の滑らかなベクトル場<math>\boldsymbol{a}</math>について、微分方程式<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t)) (\boldsymbol{r} \in \boldsymbol{D})</math>で与えられる曲線<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>を<math>\boldsymbol{a}</math>の'''流線'''(streamline)という(入力点を位置ベクトルと同一視していることに注意)。流線の接線ベクトルは元のベクトル場そのものになるので、ベクトルの相等から得る方程式<math>\frac{dx_1}{a_1}=\frac{dx_2}{a_2}=\cdots=\frac{dx_n}{a_n}</math>を'''流線方程式'''という。
例えば、<math>\boldsymbol{f}(x, y)=(y, x)</math>の流線は、
:定義から<math>\frac{dx}{dt}=y, \frac{dy}{dt}=x</math>
:合成関数の微分公式から<math>\frac{dy}{dx}=\frac{\frac{dy}{dt}}{\frac{dx}{dt}}=\frac{x}{y}</math>
:<math>\int y dy=\int xdx</math>
:<math>\frac{1}{2}y^2=\frac{1}{2}x^2+C</math>
:よって双曲線<math>y^2-x^2=2C</math>//
この場合、<math>t</math>に関する2つの微分方程式を組み合わせることで
:<math>\frac{d^2x}{dt^2}=x, \frac{d^2y}{dt^2}=y</math>という二階線型常微分方程式となり、一般解が双曲線関数を用いて<math>\begin{cases} x=C_1\cosh t+C_2\sinh t \\ y=C_1\sinh t+C_2\cosh t \end{cases}</math>であることが容易に判る。<br>なお、流線方程式を用いても<math>\frac{dx}{y}=\frac{dy}{x}</math>から<math>\frac{dy}{dx}=\frac{x}{y}</math>が出てくる。
「流線の接線ベクトルが元のベクトル場になる」とはつまり、「接線が常にベクトル場と平行になるような曲線」を考えているということである。滑らかなベクトル場を考えているためそのような曲線は常に存在する。流線は「ベクトル場の流れを繋げていった曲線」と考えることができるので、「流れを簡潔に図示」するのにちょうどよい。
有名な例として、電気力線・磁力線はそれぞれ電場<math>\boldsymbol{E}</math>・磁束密度<math>\boldsymbol{B}</math>の流線である。
流線の微分方程式を弧長パラメータ表示を用いて変形する。
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{a}(\boldsymbol{r}(t))</math>の左辺に就いて
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\frac{ds}{dt}=\frac{d\boldsymbol{r}}{ds}\cdot \|\boldsymbol{r}'(\phi^{-1}(s))\|</math>
元の方程式の両辺でノルムをとると
:<math>\left\|\frac{d\boldsymbol{r}}{dt}\right\|=\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
代入して
:<math>\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{r}'(\phi^{-1}(s))\|=\frac{d\boldsymbol{r}}{ds}\cdot\|\boldsymbol{a}(\boldsymbol{r}(t))\|</math>
:<math>\therefore \frac{d\boldsymbol{r}}{ds} = \boldsymbol{e}_{\boldsymbol{a}(\boldsymbol{r}(\phi^{-1}(s)))}</math>
ここから、流線の形状はノルムには関係なく方向場のみで決まることがわかる。
===フレネ標搆===
ここでは、三次元空間に於ける正則曲線について考える。
<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>上の点<math>\mathrm{P}(s)</math>に於ける単位接線ベクトルを<math>\boldsymbol{t}</math>とおく。
先程の議論より<math>\boldsymbol{t}(s)=\frac{d\boldsymbol{r}(s)}{ds}</math>であり、<math>\left\| \frac{d\boldsymbol{r}(s)}{ds} \right\|=1 (=\mathrm{const}.)</math>なので直交条件の定理から<math>\boldsymbol{t}\cdot\frac{d\boldsymbol{t}}{ds}=0</math>、則ち<math>\boldsymbol{t} \perp \frac{d\boldsymbol{t}(s)}{ds}</math>である。この<math>\frac{d\boldsymbol{t}(s)}{ds}</math>を'''主法線ベクトル'''という。
主法線ベクトルを<math>\boldsymbol{n}</math>とおくとき、<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n}</math>を'''従法線ベクトル'''(陪法線ベクトル)という。ここで先程の結果より<math>\boldsymbol{t}\perp\boldsymbol{n}</math>であって<math>\boldsymbol{b}</math>の定義より<math>\boldsymbol{t}\perp\boldsymbol{b}, \boldsymbol{n}\perp\boldsymbol{b}</math>なので、この3ベクトルの組を正規化した<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b \}</math>は<math>\mathbb{R}^3</math>の正規直交基底である。これを<math>\mathbb{R}^3</math>の'''フレネ標搆'''という。外積の結果よりフレネ標搆は<math>\boldsymbol{e}_t, \boldsymbol{e}_n, \boldsymbol{e}_b</math>の順に右手系をなす。なお、接線ベクトル・主法線ベクトル・従法線ベクトルは全て曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>を入力したベクトル場として捉えることができる。
<math>\{\boldsymbol{e}_n, \boldsymbol{e}_b \}</math>の張る平面を'''法平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_b \}</math>の張る平面を'''展直平面'''、<math>\{\boldsymbol{e}_t, \boldsymbol{e}_n \}</math>の張る平面を'''接触平面'''という。
即ち、法平面・展直平面・接触平面は<math>tnb</math>空間の点<math>\mathrm{P}(s)</math>を原点とした基準面である。
平面の方程式の法線ベクトルに接ベクトル・主法線ベクトル・従法線ベクトルをそれぞれ代入することで
:法平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{t}(s)=0</math>
:展直平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{n}(s)=0</math>
:接触平面の方程式:<math>(\boldsymbol{p}-\boldsymbol{r}(s))\cdot\boldsymbol{b}(s)=0</math>
とわかる。
<math>\|\boldsymbol{t}\|=1</math>は常に成り立つが<math>\|\boldsymbol{n}\|, \|\boldsymbol{b}\|</math>は<math>1</math>とは限らない。そこで、主法線ベクトルの大きさ<math>\kappa(s)=\|\boldsymbol{n}(s)\|</math>を曲線<math>C</math>の'''曲率'''と呼ぶことにする。なお、<math>\|\boldsymbol{b}\|=\| \boldsymbol{t} \| \|\boldsymbol{n}\|\sin\frac{\pi}{2}</math>より<math>\|\boldsymbol{b}\|=\|\boldsymbol{n}\|=\kappa</math>が成り立つ。
主法線ベクトルの定義に立ち戻ると<math>\boldsymbol{n}(s)=\frac{d\boldsymbol{t}(s)}{ds}</math>であった。つまり、主法線ベクトルは接ベクトルの速度ベクトルなので「弧長パラメータを変化させたときに接ベクトルがどのくらい変化するか」という指標である。接ベクトルの変化の大小と<math>\kappa</math>の大小は対応し、接ベクトルの大小はカーブの緩急に対応することから<math>\kappa</math>の大小とカーブの緩急も対応する。これが「曲率」という名前の由来である。
なお、<math>\kappa(s)=0</math>の場合は<math>\boldsymbol{n}(s)=\boldsymbol{0}</math>なので<math>\boldsymbol{t}(s)=\boldsymbol{k}</math>(定ベクトル)であり、<math>\boldsymbol{r}(s)=s\boldsymbol{k}</math>という直線の場合に対応することがわかる。
単位接ベクトルの<math>s</math>を微分変数とする導関数(<math>s</math>-導関数)は主法線ベクトルだったが、単位主法線ベクトル・単位従法線ベクトルの<math>s</math>-導関数がどのように表されるか見ていく。
ここで、フレネ標搆が<math>\mathbb{R}^3</math>の正規直交基底であることから、<math>\frac{d\boldsymbol{e}_n}{ds}, \frac{d\boldsymbol{e}_b}{ds}</math>ともにフレネ標搆の一次結合で表現できると予想される。
単位従法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_b}{ds}=\frac{d}{ds}(\boldsymbol{e}_t\times\boldsymbol{e}_n)=\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n+\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\boldsymbol{t}=\boldsymbol{e}_t</math>より<math>\frac{d\boldsymbol{e}_t}{ds}=\boldsymbol{n}=\kappa\boldsymbol{e}_n</math>則ち<math>\frac{d\boldsymbol{e}_t}{ds}\times\boldsymbol{e}_n=\kappa\boldsymbol{e}_n\times\boldsymbol{e}_n=\boldsymbol{0}</math>なので
:<math>\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds}</math>
<math>\|\boldsymbol{e}_n\|=1</math>から直交条件の定理より<math>\boldsymbol{e}_n\perp\frac{d\boldsymbol{e}_n}{ds}</math>なので
:<math>\boldsymbol{e}_n\times\frac{d\boldsymbol{e}_b}{ds}=\boldsymbol{e}_n\times(\boldsymbol{e}_t\times\frac{d\boldsymbol{e}_n}{ds})=\left(\boldsymbol{e}_n\cdot\frac{d\boldsymbol{e}_n}{ds}\right)-(\boldsymbol{e}_n\cdot\boldsymbol{e}_t)\frac{d\boldsymbol{e}_n}{ds}=\boldsymbol{0}</math>
外積が零ベクトルなので<math>\frac{d\boldsymbol{e}_b}{ds} /\!\!/ \boldsymbol{e}_n</math>であり、一次従属より
:<math>\frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>
となるスカラー関数<math>\tau(s)</math>が存在する。
この<math>\tau(s)</math>を曲線<math>C</math>の'''捩率'''と呼ぶ。捩率は接触平面の回転(捩れ)の率を表す。
<math>\tau=0</math>ならば<math>\frac{d\boldsymbol{e}_b}{ds}=0</math>より<math>\boldsymbol{e}_b</math>方向は変化しないので曲線は接触平面と平行な平面上に拘束される。即ち、<math>C</math>は平面曲線である。
単位主法線ベクトルに就いて
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{d}{ds}(\boldsymbol{e}_b\times\boldsymbol{e}_t)=\frac{d\boldsymbol{e}_b}{ds}\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\frac{d\boldsymbol{e}_t}{ds}</math>
ここで<math>\frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n, \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n</math>を代入して
:<math>\frac{d\boldsymbol{e}_n}{ds}=-\tau\boldsymbol{e}_n\times\boldsymbol{e}_t+\boldsymbol{e}_b\times\kappa\boldsymbol{e}_n=\tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t</math>
よって、フレネ標搆の弧長パラメータを微分変数とする導関数を以下のようにフレネ標搆の一次結合で表すことができた。
:<math>\begin{cases} \frac{d\boldsymbol{e}_t}{ds}=\kappa\boldsymbol{e}_n \\ \frac{d\boldsymbol{e}_n}{ds} = \tau\boldsymbol{e}_b-\kappa\boldsymbol{e}_t \\ \frac{d\boldsymbol{e}_b}{ds}=-\tau\boldsymbol{e}_n \end{cases}</math>
これを一次変換で表記すると以下のようになる。但し、厳密にはベクトルを成分としている部分は列ではなく行に配置するのが正しいことに注意。
{{定理|(フレネ=セレーの公式)}}
:<math>\frac{d}{ds}\begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix} = \begin{pmatrix} 0 & \kappa & 0 \\ -\kappa & 0 & \tau \\ 0 & -\tau & 0 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_t \\ \boldsymbol{e}_n \\ \boldsymbol{e}_b \end{pmatrix}</math>
{{定理終わり}}
表現行列が反対称行列(歪対称行列)になっているが、これは「直交変換を一次近似すると反対称変換になる」という無限小回転の理論に対応する。
捩率を求めるときは「基底分解の係数は対応する基底ベクトルとの内積に等しい」という性質を利用すれば<math>\boldsymbol{e}_b\cdot\frac{d\boldsymbol{e}_n}{ds}=\tau</math>となるので左辺を計算すればよい。
例えば、円<math>\begin{cases} x^2+y^2=a^2 \\ z=b \end{cases}</math>の曲率と捩率は以下のように求まる。
:媒介変数表示して<math>\boldsymbol{r}(t)=\begin{pmatrix} a\cos t \\ a\sin t \\ b \end{pmatrix}</math>
:接線ベクトルは<math>\frac{d\boldsymbol{r}(t)}{dt}=\begin{pmatrix} -a\sin t \\ a\cos t \\ 0 \end{pmatrix}</math>
:弧長パラメータ<math>s</math>は<math>s=\int^t_0 \left\|\frac{d\boldsymbol{r}(t)}{dt}\right\|dt = \int_0^t a dt = at</math>
:<math>\therefore t=\frac{s}{a}</math>
:<math>\boldsymbol{r}(s)=\begin{pmatrix} a\cos\frac{s}{a} \\ a\sin\frac{s}{a} \\ b \end{pmatrix}</math>
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}(s)}{ds}=\begin{pmatrix} -\sin\frac{s}{a} \\ \cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{n}=\frac{d\boldsymbol{t}(s)}{ds}=\frac{1}{a}\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\kappa=\|\boldsymbol{n}\|=\frac{1}{a}</math>
:<math>\boldsymbol{b}=\boldsymbol{t}\times\boldsymbol{n} = \begin{pmatrix} 0 \\ 0 \\ \frac{1}{a} \end{pmatrix}</math>
:<math>\boldsymbol{e}_n=\begin{pmatrix} -\cos\frac{s}{a} \\ -\sin\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\frac{d\boldsymbol{e}_n}{ds}=\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}</math>
:<math>\boldsymbol{e}_b = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}</math>
:<math>\tau = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}\cdot\frac{1}{a}\begin{pmatrix} \sin\frac{s}{a} \\ -\cos\frac{s}{a} \\ 0 \end{pmatrix}=0</math>//
フレネ・セレーの公式は[[線型代数学続論/行列値関数|行列関数]]に関する一階常微分方程式である。そのため、微分方程式の基本定理(ピカール=リンデレーエフの定理)により初期条件(<math>s=0</math>に於けるフレネ標搆)を与えれば、滑らかな曲率関数・捩率関数の組<math>(\kappa, \tau)</math>を定めることで微分方程式の解として一般の<math>s</math>に対するフレネ標搆を一意に得る。このとき、曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)</math>は接ベクトルを出発点を選んで積分することで決定される。
従って、次の定理が成り立つ<!-- 厳密証明はhttps://sshmathgeom.private.coocan.jp/diffgeom/curvetheorem.htmlを参照 -->。
{{定理|(曲線の基本定理)}}
開区間<math>(a,b)</math>上の実数<math>s</math>を変数とする2つの滑らかな関数<math>\kappa(s),\tau(s)</math>を与える。但し、<math>\kappa(s)</math>は正とする。<br/>
このとき、<math>\kappa(s)</math>を曲率、<math>\tau(s)</math>を捩率、<math>s</math>を弧長パラメータとする三次元空間上の曲線<math>C</math>が剛体運動を除いて一意に定まる。
{{定理終わり}}
剛体運動とは「曲線の形を変えない」運動のことである(平行移動・回転など)。
<math>\kappa(s), \tau(s)</math>の定める曲線族を一般に<math>\mathcal{C}[\kappa, \tau]</math>と書く。
例えば、円を含む螺旋は<math>c_1, c_2=\mathrm{const}.</math>として<math>\mathcal{C}[c_1, c_2]</math>と書ける。
<math>R=\frac{1}{\kappa}</math>を'''曲率半径'''という。曲率半径は曲線の特定のカーブにおける曲がり具合の急さを表す指標であり、カーブを近似する真円('''密着円''')の半径でもある。高速道路の標識で<math>R=\circ\circ \mathrm{m}</math>は、そのカーブの曲率半径を示している。道路設計では、快適なドライブの為曲率半径がなるべく大きくなるように工夫を凝らしている。
ここで<math>\boldsymbol{r}(s)</math>の中心<math>s_0</math>に於けるテイラー展開は
:<math>\boldsymbol{r}(s)=\sum_{i=0}^\infty \frac{(s-s_0)^i}{i!} \frac{d^i}{ds^i}\boldsymbol{r}(s_0) </math>(再掲)
だったが、二次近似式(三次以降を切り捨てた式)を考えると
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\frac{d\boldsymbol{r}(s_0)}{ds}(s-s_0) + \frac{1}{2}\frac{d^2\boldsymbol{r}(s_0)}{ds^2}(s-s_0)^2 </math>
フレネ標搆を用いて書き直すと
:<math>\boldsymbol{r}(s) \fallingdotseq \boldsymbol{r}(s_0)+\boldsymbol{e}_t(s-s_0) + \frac{1}{2}\kappa(s_0)\boldsymbol{e}_n(s-s_0)^2 </math>
二次近似とは「曲線を円弧で近似する」ことだったので曲率<math>\kappa(s_0)</math>が近似に用いる円弧と関係ある量であることが予想される。<br/>
接触平面で密着円<math> \| \boldsymbol{r} - (\boldsymbol{r}(s_0)+R\boldsymbol{e}_n) \| = R </math>を考える。接触平面を<math>xy</math>平面と考えると円の方程式は
:<math>x^2+(y-R)^2=R^2</math>
:<math>y=R-\sqrt{R^2-x^2}</math>
テイラー展開して
:<math>y=\frac{x^2}{2R}+O(x^4)</math>
二次の項を比較すると
:<math>\frac{x^2}{2R}=\frac{(s-s_0)^2}{2}\kappa</math>
よって
:<math>R=\frac{1}{\kappa}</math>
と定義するのは妥当である。
なお、先ほど求めた円の曲率から、真円に関して「曲率半径=半径」であることが判る。
フレネ・セレーの公式で最初の二行二列のみを考えると<math>\mathbb{R}^2</math>内の曲線に対するフレネ・セレーの公式を得る。一般に<math>\mathbb{R}^n</math>上の曲線に対し、今回の議論と同様にして接ベクトル・主法線ベクトル・曲率を定義することができる。但し、三次元空間と異なって同じ曲率に対して異なる曲線を与えることができる(主法線ベクトルが接触平面内で接ベクトルに対して左右どちらを向くかがそのままでは定まらないため)。なお、4次元以上であっても平面拘束曲線ならば捩率は0であって従法線ベクトルは零ベクトルに定まる。
===単純閉曲線===
パラメータ区間を<math>I=[a, b]</math>とする。
このとき、曲線の端点はそれぞれ<math>\mathrm{P}(a), \mathrm{P}(b)</math>である。
端点が一致する、つまり<math>\mathrm{P}(a)=\mathrm{P}(b)</math>である連続曲線を'''閉曲線'''という。
自己交叉しない、つまり<math>\forall t_1, t_2 \in (a, b), t_1 \neq t_2 \iff \mathrm{P}(t_1)\neq\mathrm{P}(t_2)</math>となる閉曲線を'''単純閉曲線'''(ジョルダン曲線)という。閉曲線でない曲線に就いて「自己交叉しない」という条件は「曲線を表すベクトル関数が単射」と同値であるので、端点のみ単射性を外してやれば単純閉曲線の定義を得る。
幾何学的直観から、平面に拘束された単純閉曲線はその平面を単純閉曲線で囲まれた'''内部'''とそうでない'''外部'''の二つの領域に分割することが予想できる。
このことは以下の定理によって保証される。
{{定理|(ジョルダンの曲線定理)}}
平面<math>\Pi\subset\mathbb{R}^n</math>内の任意の単純閉曲線<math>\gamma</math>に対し、有界領域<math>I</math>・非有界領域<math>O</math>の組であって<math>\Pi\setminus\gamma=I \sqcup O</math>且つ<math>\partial{I}=\partial{O}=\gamma</math>であるものが唯一つに定まる。
{{定理終わり}}
この<math>I, O</math>をそれぞれ内部・外部と定義する。証明は[[位相幾何学]]で行う。なお、「<math>\partial{I}=\partial{O}=\gamma</math>」を態々明示しているのは、滑らかでない単純閉曲線に対しては「<math>\Pi\setminus\gamma=I \sqcup O \implies \partial{I}=\partial{O}=\gamma</math>」が自明でないためである。
正則単純閉曲線に対して「曲線の向き」の幾何学的意味を考える。
ジョルダンの曲線定理より単純閉曲線<math>\gamma:\boldsymbol{r}=\boldsymbol{r}(s) \quad(\boldsymbol{r}\in \Pi)</math>は平面<math>\Pi</math>を内部<math>I</math>と外部<math>O</math>に分割する。平面拘束曲線なので<math>\forall{s}, \tau(s)=0</math>であり、従法線ベクトルは零ベクトル且つ接触平面が常に<math>\Pi</math>に一致する。
主法線ベクトル<math>\boldsymbol{n}(s)</math>が接ベクトル<math>\boldsymbol{t}(s)</math>に対して左側を向いているとすると、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0) \quad(\varepsilon>0)</math>が点<math>\mathrm{P}(s_0)</math>に於ける<math>\gamma</math>の進行方向左側にある点である。
ここで、<math>\mathrm{P}(s_0)</math>に於ける<math>\varepsilon</math>-開球<math>B_\varepsilon(s_0)</math>を考えると、平面<math>\Pi</math>上では<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が左側の領域、<math>\boldsymbol{r}(s_0)+\varepsilon\boldsymbol{n}(s_0)</math>が右側の領域に入る。
<math>s=s_0</math>を動かすと各点で進行方向左は<math>I, O</math>のいずれかであり、<math>\gamma</math>の正則性と<math>I, O</math>の連結性から「<math>I, O</math>のどちらが左側であるかは曲線全体で変わらない」ことが言える。
ここで円の場合を考える。<math>\Pi</math>に直交座標<math>u, v</math>を入れると向心加速度の議論から「加速度ベクトル=主法線ベクトルは円の中心を向く」ので、「円の正の向きは円の内部を左手に見る進行方向」である。
任意の正則単純閉曲線<math>\gamma</math>に対して自己交叉を起こさないまま円へ連続変形する可逆写像が存在し、その変形に於いて「左側」と「<math>I, O</math>」の対応は変化しない。則ち、円で確認された「正の向きは囲まれた内部を左手に見る向き」は任意の正則単純閉曲線で成り立つ。
つまり、単純閉曲線の正の向きは点を動かしたときに'''自身の囲む領域の内部を左手に見る向き'''である。負の向きは左手に外部を見る向きである。
集合<math>A</math>に含まれる任意の2点に対してそれらを端点とする滑らかな曲線<math>C</math>をとれるとき、<math>A</math>は'''弧状連結'''であるという。
弧状連結集合<math>S</math>内の任意の閉曲線<math>\gamma</math>に対して1点に退化するような連続変形が可能なとき、<math>S</math>は'''単連結'''であるという。単連結でない集合は'''多重連結'''であるという。
平面<math>\Pi\subset\mathbb{R}^n</math>に含まれる単連結集合<math>S</math>に対し、<math>\hat{\Pi}:=\Pi\cup\{\infty\}</math>とすると集合<math>\hat{\Pi}\setminus{S}</math>は連結である。逆も成り立つ。
なお、「<math>A</math>が連結集合である」ことは「補集合<math>\overline{A}</math>が非連結集合である」ことを意味しない。そのため「単連結な連結集合」も考えられ、特に「単連結な領域」はこの先頻繁に登場する。
集合<math>A</math>に含まれる任意の2点を結んだ線分が<math>A</math>に包含されるとき、<math>A</math>は'''凸型'''であるという。凸型集合でない集合は'''凹型'''であるという。
集合<math>A</math>内の1点を固定してそこから<math>A</math>内任意点へ引いた線分が<math>A</math>に包含されるとき、<math>A</math>は'''星状'''(星型)であるという。このとき固定した点を'''星の中心'''という。凸型集合は全て星状集合である。
単純閉曲線<math>\gamma</math>を境界とする内部<math>I</math>に関して<math>I\cup\gamma</math>が凸型集合であるとき、<math>\gamma</math>を'''卵形線'''(凸単純閉曲線・オーヴァル)という。
曲線<math>C</math>の曲率関数<math>\kappa(s)</math>が<math>C^3</math>級であるとき、<math>\kappa'(s_0)=0</math>を満たす点<math>\mathrm{P}(s_0)</math>を<math>C</math>の'''頂点'''という。
例えば、標準楕円<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}=1</math>の頂点は4点<math>(\pm{a},0),(0,\pm{b})</math>である。このことは、<math>\mathbb{R}^2</math>上曲線<math>C:\boldsymbol{r}=x(t)\boldsymbol{e}_x(t)+y(t)\boldsymbol{e}_y(t)</math>に対する曲率の公式<math>\kappa(t)=\frac{\left|\frac{dx}{dt}\frac{d^2y}{dt^2}-\frac{dy}{dt}\frac{d^2x}{dt^2}\right|}{\left\{\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2\right\}^\frac{3}{2}}</math>と<math>\frac{ds}{dt}>0</math>を用いて確かめられる。
実は、この事実は楕円に限らないことが以下の定理で示される。
{{定理|(ムコパディヤーヤの定理・四頂点定理)}}
<math>\mathbb{R}^2</math>上の滑らかな卵形線は少なくとも4つの頂点を持つ。
{{定理終わり}}
*証明
:滑らかな卵形線<math>C:\boldsymbol{r}=\boldsymbol{r}(s)\quad(s\in[a, b])</math>に対して曲率関数<math>\kappa(s)</math>は滑らかであり、<math>\kappa\in C^3</math>を満たす。
:卵形線は単純閉曲線なので<math>\mathrm{P}(a)=\mathrm{P(b)}</math>であり、<math>\kappa(a)=\kappa(b)</math>。
:曲率関数が定数関数のときは<math>\kappa\in C^\infty</math>且つ常に<math>\kappa'(s)=0</math>なので曲線を構成するすべての点が頂点であり、明らかに定理を満たす。
:曲率関数が定数関数でないとする。
:ワイエルシュトラスの極値定理より<math>\kappa(s)</math>は<math>s\in[a, b]</math>のどこかで最大値・最小値をとり、その点で<math>\kappa'(s)=0</math>を満たす。
:従って少なくとも2つの頂点を持つ。
:ここで、頂点がこの2つのみと仮定する。
:曲率が最大値・最小値をとる点をそれぞれ<math>\mathrm{M, N}</math>と置く。
:線分<math>\mathrm{MN}</math>を含む直線を<math>x</math>軸とし、その垂直方向に<math>y</math>軸をとる。
:<math>s</math>が増加すると曲線上の点が<math>\mathrm{N}\to\mathrm{M}</math>のように動くとき、
:<math>\kappa(s)</math>は最小値から最大値に向かって増大し、他に頂点がないので狭義単調増加である。
:同様に、<math>\mathrm{M}\to\mathrm{N}</math>の向きでは<math>\kappa(s)</math>は狭義単調減少である。
:従って、<math>\kappa'(s)y(s)\neq0</math>の正の側だけ考えれば良い。
:<math>y(a)=y(b)=0</math>に注意すると部分積分して
:<math>0<\int_a^b \kappa'(s)y(s)ds=-\int_a^b \kappa(s)y'(s)ds</math>
:主法線ベクトル<math>\boldsymbol{n}(s)= \begin{pmatrix} \xi_1(s) \\ \xi_2(s) \end{pmatrix}</math>を考えると二次元版フレネ=セレーの公式から<math>\frac{d\boldsymbol{n}}{ds}=-\kappa\frac{d\boldsymbol{r}}{ds}</math>なので
:<math>\xi'_2(s)=-\kappa(s)y'(s)</math>
:よって
:<math>-\int_a^b \kappa(s)y'(s)ds=\int_a^b \xi_2(s)ds = \left[\xi_2(s)\right]_a^b=0</math>
:なので矛盾した不等式<math>0<0</math>を得る。
:則ち、<math>\mathrm{M, N}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在する。
:そのような点を<math>\mathrm{L}</math>と置く。
:<math>\mathrm{L}</math>が<math>\mathrm{N}\to\mathrm{M}</math>という経路の途中にあるとする。
:このとき、<math>\mathrm{L}</math>以外に<math>\kappa'(s)=0</math>を満たす点が存在すると「<math>\mathrm{M}\to\mathrm{N}</math>という経路の途中にそのような点が無い」という最初の仮定に反するので
:<math>\mathrm{M, N, L}</math>以外では<math>\kappa'(s)y(s)>0</math>である。
:同様に部分積分を行うことで矛盾した不等式を得、<math>\mathrm{M, N, L}</math>と異なる点で<math>\kappa'(s)=0</math>を満たす点が少なくとも一つ存在することが判る。
:この時点で「<math>\mathrm{M, N}</math>間の二つの経路のいずれにも<math>\kappa'(s)=0</math>を満たす点が存在しない」という仮定が否定されたのでこれ以上背理法を適用することはできない。
:よって、頂点個数の最小値は<math>4</math>である。//
最小値4をとる卵形線が実際に存在することは楕円の例で確かめた。
この定理は「卵形線」を「(正則)単純閉曲線」に取り換えてもそのまま成り立つことが知られている。一般の閉曲線でこの定理を成り立たせるには追加の条件が必要となる。
先程も述べたように、接ベクトルと単位主法線ベクトルは2次元以上の空間内部にある曲線ならば定義することができる。そして、<math>\boldsymbol{t}\cdot\boldsymbol{n}=0</math>も必ず成り立つ。よって、<math>\boldsymbol{e}_t\cdot\boldsymbol{e}_n=0</math>の両辺を<math>s</math>で微分して
:<math>\frac{d\boldsymbol{e}_t}{ds}\cdot\boldsymbol{e}_n+\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=0</math>
:<math>\therefore \boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\boldsymbol{n}\cdot\boldsymbol{e}_n=-\kappa</math>
ここで「基底分解に於ける成分はその基底との内積に等しい」という性質から、<br/>
一般次元に於いても「<math>\frac{d\boldsymbol{e}_n}{ds}</math>の接線方向成分は<math>-\kappa(s)</math>」であることが判る。
ここで<math>C^2</math>級曲線の位置ベクトル<math>\boldsymbol{r}(s)</math>に対して単位主法線<math>\boldsymbol{e}_n(s)</math>を対応させることを考える。この対応を'''ガウス表示'''という。
<math>\boldsymbol{e}_n(s)</math>を二次までテイラー展開すると<math>\Delta s>0</math>を微小量として
:<math>\boldsymbol{e}_n(s+\Delta s)=\boldsymbol{e}_n(s)+\frac{d\boldsymbol{e}_n(s)}{ds}\Delta s + O(\Delta s^2)</math>
ここで<math>\boldsymbol{e}_t\cdot\frac{d\boldsymbol{e}_n}{ds}=-\kappa</math>より、<math>s</math>を<math>\Delta s</math>だけ動かしたときの接線方向の速さは<math>|\kappa(s)|\Delta s</math>である(<math>\kappa(s)</math>が正で正の向き、負で負の向きに動くとする)。
閉曲線に対してはガウス表示によって法線方向の変化を完全に捉えられるので、<math>\kappa(s)</math>を微小量<math>\Delta s</math>に関して積分した<math>\int_a^b \kappa(s)ds</math>を考えてみる。
ガウス表示では曲線を単位主法線ベクトルの描く単位円として考えることができる。閉曲線では<math>\mathrm{P}(a)=\mathrm{P}(b)</math>より明らかに<math>\boldsymbol{e}_n(a)=\boldsymbol{e}_n(b)</math>であり、閉曲線が一周する間にベクトル<math>\boldsymbol{e}_n(s)</math>はこの単位円を<math>m(\in\mathbb{Z})</math>周する<sup>※</sup>。
<small>※物理的には「円そのものが動いても円周上の質点は『この円をどっちの方向に何周したか』という情報しか持たない」ので、単位円が動くことは議論にあまり関係ない</small>
弧度法より単位円を<math>m</math>周する符号付き道のりは<math>2\pi{m}</math>であり、ガウス表示より<math>\int_a^b \kappa(s)ds=2\pi{m}</math>。
従って、<math>m=\frac{1}{2\pi}\int_a^b \kappa(s)ds</math>
この<math>m</math>を閉曲線の'''回転数'''と呼ぶことにする。
曲率が負の場合には積分値が途中で相殺されてしまうので、絶対値を付けて積分した
:<math>\mu:=\int_a^b |\kappa(s)|ds</math>
という量を考えることにする。
これを閉曲線の'''全曲率'''と呼ぶ。
全曲率に対して以下の定理が成り立つ。
{{定理|(フェンヒェルの定理)}}
滑らかな閉曲線の全曲率は<math>\mu\geq2\pi</math>を満たす。等号成立の場合は卵形線である。
{{定理終わり}}
証明は省略する。
===曲面===
多変数解析で既に扱った、三次元空間に於ける曲面の陽関数表示<math>z=f(x, y)</math>を'''モンジュ表示'''という。<math>f(x, y, z)=\mathrm{const}.</math>と陰関数表示された曲面は陰関数定理が成り立つ範囲でモンジュ表示に直すことができる。
一次式で陰関数表示される曲面を'''一次曲面'''という。平面の方程式より、一次曲面は全て平面である。
二次式で陰関数表示される曲面を'''二次曲面'''という。
以下、三次元空間に於ける二次曲面の例を挙げる。各係数は非退化条件を満たすとする。なお、「直線に平行な平面」は「直線を法線とする平面に垂直な平面」を意味することに注意。
*'''球面'''(sphere)
:高校数学で扱ったように、点<math>(a, b, c)</math>を中心とする半径<math>r</math>の球面の方程式は<math>(x-a)^2+(y-b)^2+(z-c)^2=r^2</math>である。この球面上の点の位置ベクトルは<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>なので、球面が満たすベクトル方程式は一般に<math>\|\boldsymbol{r}-\boldsymbol{a}\|=\mathrm{const}.</math>である。これは円のベクトル方程式の次元を上げたものである。
*'''楕円面'''(ellipsoid)
:楕円の方程式を拡張した方程式<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1</math>が表す曲面である。<math>xyz</math>空間の基本面で切った断面は全て楕円となる。
*'''楕円拋物面'''(elliptic paraboloid)
:楕円の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は拋物線となる。
*'''双曲拋物面'''(hyperbolic paraboloid)
:双曲線の平面拘束条件を外した方程式<math>z=\frac{x^2}{a^2}-\frac{y^2}{b^2}</math>が表す曲面である。<math>z</math>軸に垂直な平面で切った断面は双曲線、平行な平面で切った断面は拋物線となる。また、原点は鞍点である。
*'''一葉双曲面'''(hyperboloid of one sheet)
:楕円面の方程式の一つの項の符号を変えた<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。<math>z</math>軸に垂直な平面で切った断面は楕円、平行な平面で切った断面は双曲線となる。
*'''二葉双曲面'''(hyperboloid of two sheet)
:楕円面の方程式の二つの項の符号を変えた<math>\frac{x^2}{a^2}-\frac{y^2}{b^2}-\frac{z^2}{c^2}=1</math>の表す曲面。断面の分類は一葉双曲面と同じだが、<math>m^2<c^2</math>のときは平面<math>z=m</math>と交わらないため「二葉」と名付けられている。
*'''錐面'''(conical surface)
:方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>の表す曲面。<math>xy</math>平面との交点は原点のみであり、<math>yz</math>平面・<math>zx</math>平面で切った断面は直線である。
閉区間<math>I\subset\mathbb{R}</math>上の一変数ベクトル関数<math>\boldsymbol{r}(t)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t) \quad(t\in I)</math>の解集合は次元に依らず曲線を表した。
同様に、領域<sup>※</sup><math>D\subset\mathbb{R}^2</math>上の二変数ベクトル関数<math>\boldsymbol{r}(t, u)</math>を用いたベクトル方程式<math>\boldsymbol{r}=\boldsymbol{r}(t, u) \quad({\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)}\in D)</math>の解集合は次元に依らず曲面を表すと考えられる。
厳密には[[線型代数学/基底と次元|階数・退化次数の定理]]<!-- 次元定理・線型写像の基本定理 -->などを用いてこのことを確かめられる。
<small>※ここでいう「領域」は冒頭で厳密に定義した「領域」であることに注意。</small>
曲線と同様に、曲面の'''パラメータ表示'''と'''ベクトル表示'''は次のように定義される。
:パラメータ表示:<math>\begin{cases} x_1&=&r_1(t, u) \\ x_2&=&r_2(t, u) \\ &\,\,\vdots& \\ x_n&=&r_n(t, u) \end{cases}</math>
:ベクトル表示:<math>\left\{\boldsymbol{r}(t, u) \,\bigg|\, {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D \right\}</math>
また、<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>のようにも表す。
例えば、<math>k>l>0</math>として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (k+l\cos u)\cos t \\ (k+l\cos u)\sin t \\ l\sin u \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq 2\pi \\ 0 \leq u \leq 2\pi \end{array} \right\})</math>は'''トーラス'''のベクトル表示である。
<math>\mathbb{R}^3</math>上の平面の方程式は高校数学に於いて<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>として一次式<math>ax+by+cz+d=0</math>と表せることを学んだ。
これのベクトル方程式を求めてみよう。
:①<math>c=0</math>のとき
::平面の方程式は<math>\begin{cases} ax+by+d=0 \\ z=\mathrm{const}. \end{cases}</math>
::[1]<math>b=0</math>のとき
:::平面の方程式は<math>\begin{cases} ax+d=0 \\ y=\mathrm{const}. \\ z=\mathrm{const}. \end{cases}</math>
:::<math>\begin{pmatrix} a \\ b \\ c \end{pmatrix}\neq\boldsymbol{0}</math>より<math>a\neq0</math>
:::<math>y=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} -\frac{d}{a} \\ t \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} -\frac{d}{a} \\ 0 \\ 0 \end{pmatrix}</math>
::[2]<math>b\neq0</math>のとき
:::<math>x=t, z=u</math>と置換すると
:::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}=\begin{pmatrix} t \\ -\frac{a}{b}t-\frac{d}{b} \\ u \end{pmatrix}</math>
:::<math>\boldsymbol{r} = t\begin{pmatrix} 1 \\ -\frac{a}{b} \\ 0 \end{pmatrix}+u\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}+\begin{pmatrix} 0 \\ -\frac{d}{b} \\ 0 \end{pmatrix}</math>
:②<math>c\neq0</math>のとき
::<math>x=t, y=u</math>と置換すると
::<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} t \\ u \\ -\frac{a}{c}t-\frac{b}{c}u-\frac{d}{c} \end{pmatrix}</math>
::<math>\boldsymbol{r}=t\begin{pmatrix} 1 \\ 0 \\ -\frac{a}{c} \end{pmatrix}+u\begin{pmatrix} 0 \\ 1 \\ -\frac{b}{c} \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ -\frac{d}{c} \end{pmatrix}</math>
なお、ここから平面のベクトル方程式が一般に<math>\boldsymbol{r}=\boldsymbol{a}+t\boldsymbol{b}+u\boldsymbol{c}</math>という「直線のベクトル方程式を拡張した形」であることがわかる。
<math>\boldsymbol{r}(t, u)\in C^1</math>且つ<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}\neq\boldsymbol{0}</math>である曲面を'''滑らか'''な曲面という。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>とその上の点<math>\mathrm{P}_0=(a, b)</math>に対し、曲線<math>\boldsymbol{r}=\boldsymbol{r}(a, u), \boldsymbol{r}=\boldsymbol{r}(t, b)</math>をそれぞれ点<math>\mathrm{P}_0</math>に於ける'''<math>t</math>曲線'''・'''<math>u</math>曲線'''という。
<math>\boldsymbol{r}(t, u)\in C^1</math>であるとき、偏導関数の定義から
:<math>\frac{\partial}{\partial{u}}\boldsymbol{r}(a, u)=\frac{d}{du}\boldsymbol{r}(a, u)</math>
:<math>\frac{\partial}{\partial{t}}\boldsymbol{r}(t, b)=\frac{d}{dt}\boldsymbol{r}(t, b)</math>
ここで<math>a, b</math>をそれぞれ<math>t</math>軸・<math>u</math>軸上で動かすことで<math>t</math>曲線・<math>u</math>曲線の接ベクトルがそれぞれ<math>\frac{\partial{\boldsymbol{r}}}{\partial{u}}, \frac{\partial{\boldsymbol{r}}}{\partial{t}}</math>であると判る。これらを曲面のパラメータ方向の'''接ベクトル'''という。
これらの接ベクトルが平行でないとき、曲面<math>S</math>上の任意の点<math>\mathrm{P}</math>に対して<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>の張る平面が定まる。これを曲面<math>S</math>の点<math>\mathrm{P}</math>に於ける'''接平面'''という。曲線の接線は一次元ベクトル空間<math>\left\{ \xi\frac{d\boldsymbol{r}}{dt} \bigg| \xi \in\mathbb{R} \right\}</math>で表されたが、曲面の接平面は二次元ベクトル空間<math>\left\{ \xi\frac{\partial{\boldsymbol{r}}}{\partial{t}}+\eta\frac{\partial{\boldsymbol{r}}}{\partial{u}} \bigg| \xi, \eta \in \mathbb{R} \right\}</math>で表される。このような接ベクトル全体が張るベクトル空間を一般に'''接空間'''と呼ぶ。
接ベクトルの組が一次独立である曲面を'''正則'''な曲面という。滑らかな曲面は正則曲面である。
曲面<math>S</math>の接平面に垂直なベクトルを<math>S</math>の'''法線ベクトル'''という。
三次元空間ならば接平面を張る2ベクトルの外積<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}} \times \frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>で求められる。
モンジュ表示された曲面<math>S:z=f(x, y)</math>に対して接平面の存在性(つまり曲面の正則性)は「二変数関数<math>f</math>の全微分可能」に対応した。ベクトル表示された曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>に対しては「ベクトル関数<math>\boldsymbol{r}</math>の全微分可能性」だけでは足りず、「ヤコビ行列<math>\frac{\partial{(\boldsymbol{r})}}{\partial{(t, u)}}</math>の階数が2」も要求される。
以下、正則曲面のみ扱う。
<math>\boldsymbol{r}(t, u)</math>の微小変化は全微分で与えられる。
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
則ち、各パラメータを同時に<math>\begin{pmatrix} t \\ u \end{pmatrix}\to\begin{pmatrix} t+dt \\ u+du \end{pmatrix}</math>と単調に動かしたとき、対応する曲面上の点が描く領域は2ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt, \frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行四辺形として近似できる。その微小面積は線型代数の内容から
:<math>\sqrt{ \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}}dt \right\|^2 \left\| \frac{\partial{\boldsymbol{r}}}{\partial{u}}du \right\|^2 - \left\{ \left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right) \right\}^2 }=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
である。
これを領域<math>D=\mathrm{dom}\,S</math>で重積分してやれば曲面の表面積('''曲面積''')が求まると考えられる。
{{定理|(曲面積)}}
<math>E := \left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2,\quad F := \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}},\quad G := \left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2</math>とすると、<br>
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>の領域<math>D</math>に於ける曲面積は
:<math>S=\iint_D \sqrt{EG-F^2}dtdu</math>
{{定理終わり}}
この<math>E, F, G</math>を<math>S</math>の'''第一基本量'''と呼ぶ。また、<math>dS:=\sqrt{EG-F^2}dtdu</math>を'''面素'''(面積素・面積要素)と呼ぶ。
<math>t, u</math>が共通のパラメータ<math>\theta</math>で媒介変数表示されるとき、曲面は曲線に退化するので線素を考えられる。
具体的には、
:<math>dl=\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|d\theta</math>
より
:<math>\left\|\frac{d\boldsymbol{r}}{d\theta}\right\|^2=\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}</math>
ここで合成関数の常微分公式より
:<math>\frac{d\boldsymbol{r}}{d\theta}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{d\theta}+ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{d\theta}</math>
なので
:<math>\frac{d\boldsymbol{r}}{d\theta}\cdot\frac{d\boldsymbol{r}}{d\theta}=\left\|\frac{d\boldsymbol{r}}{dt}\right\|^2\left(\frac{dt}{d\theta}\right)^2+2\left(\frac{d\boldsymbol{r}}{dt}\cdot\frac{d\boldsymbol{r}}{du}\right)\frac{dt}{d\theta}\frac{du}{d\theta}+\left\|\frac{d\boldsymbol{r}}{du}\right\|^2\left(\frac{du}{d\theta}\right)^2</math>
:<math>=E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2</math>
よって
:<math>dl=\sqrt{E\left(\frac{dt}{d\theta}\right)^2+2F\frac{dt}{d\theta}\frac{du}{d\theta}+G\left(\frac{du}{d\theta}\right)^2}d\theta=\sqrt{E(dt)^2+2Fdtdu+G(du)^2}</math>
このように、線素は<math>\theta</math>のとり方に依存しない。
そこで、最後の式で右辺を二乗した
:<math>I:=E(dt)^2+2Fdtdu+G(du)^2</math>
を<math>S</math>の'''第一基本形式'''と定める。
第一基本形式は二次形式になっていることが見て取れるので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{K}:=\begin{pmatrix} E & F \\ F & G \end{pmatrix}</math>とおくと
:<math>I={}^t\!\boldsymbol{v} \mathbf{K} \boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{K}</math>を'''第一基本行列'''という。
ここで<math>I=dl^2>0</math>なので<math>\mathbf{K}</math>は正定値行列である。
また、<math>\boldsymbol{x}_i=\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{x}_j=\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>と置いて第一基本量の定義を思い返してみると<math>\mathbf{K}_{ij}=\boldsymbol{x}_i \cdot \boldsymbol{x}_j</math>なのでこの行列は接ベクトルに関するグラム行列である。この意味でも、<math>\mathbf{K}</math>は正定値行列である。
また、面素の式で根号の中身が<math>\det\mathbf{K}</math>に等しいことも判る。
則ち、第一基本量が曲面の本質であると予想される。
<math>F=0 \land E=G=\lambda</math>であるとき、<math>\mathbf{K}=\lambda\mathbf{E}_2</math>である。このときのパラメータの組<math>(u, v)</math>を曲面の'''等温座標系'''という。
等温座標系で表示された曲面<math>S</math>に対し、第一基本形式は<math>I=\lambda(dt^2+du^2)</math>と二次形式の標準形となっている。則ち、等温座標系へのパラメータ変換は主軸変換である。
面素を考えると<math>dS=\lambda^2dtdu</math>と非常に単純な形となるほか、曲面上の角度計算が平面の場合と全く同じ式で与えられることも等温座標系の利点である。
曲面<math>S</math>上の各点<math>\mathrm{P}</math>に対して単位法線ベクトル<math>\boldsymbol{n}(\mathrm{P})</math>を考える。ベクトル表示の定義域<math>D</math>でベクトル場<math>\boldsymbol{n}(\mathrm{P})</math>が連続であるとき、<math>S</math>は'''向き付け可能'''であるという。
向き付け不能な曲面の例として<math>\boldsymbol{r}(t, u)=\begin{pmatrix} (u\cos t+2)\sin 2t \\ (u\cos t+2)\cos 2t \\ u\sin t \end{pmatrix} \quad(D=\left\{ \begin{pmatrix} t \\ u \end{pmatrix} \bigg| \begin{array}{c} 0 \leq t \leq \pi \\ -1 \leq u \leq 1 \end{array} \right\})</math>と表される'''メビウスの帯'''が挙げられる。
メビウスの帯が向き付け不能である証明を概説する。
:接ベクトルをそれぞれ求める。簡単のため<math>u=0</math>として考える。単位法線ベクトルは外積を正規化して得るが、向きの取り方で正負の符号が付く。どちらの符号を採用するにしろ<math>\boldsymbol{n}(\boldsymbol{r}(0, 0))\neq\boldsymbol{n}(\boldsymbol{r}(\pi, 0))</math>を得、<math>\boldsymbol{r}(0, 0)=\boldsymbol{r}(\pi, 0)</math>より同じ点に対して異なる法線ベクトルを出力するので<math>\boldsymbol{n}(\mathrm{P})</math>はwell-definedではなく、向き付け可能性の定義を満たさない。//
四次元以上の空間では法線ベクトルの方向を複数とれるため法線ベクトル場は扱いにくい。そこで、法線ベクトルに依らない定義を考えたい。
2つの滑らかな曲面<math>S_1, S_2</math>が以下を満たすとき、
#パラメータ<math>(t_1, u_1), (t_2, u_2)</math>の間に滑らかな全単射<math>\begin{cases}t_2 =\phi(t_1, u_1) \\ u_2=\psi(t_1, u_1) \end{cases}</math>が存在する。
#この変数変換のヤコビ行列<math>\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}</math>が正則。
#<math>\boldsymbol{r}_1(t_1, u_1)=\boldsymbol{r}_2(t_2, u_2)</math>
この2つは'''パラメータ変換で同値'''という。
このとき、ヤコビアンが正であるパラメータの組は'''同じ向き'''、負であるパラメータの組は'''逆向き'''であるという。
任意の<math>(t_1, u_1)</math>に対して開近傍<math>U \subset \mathrm{dom}\,S_1</math>をとったとき、どの<math>U</math>上でも<math>\det\frac{\partial{(\phi, \psi)}}{\partial{(t_1, u_1)}}>0</math>を満足するならば<math>S_1</math>は'''向き付け可能'''という。
向き付け可能な曲面の接空間に対して右手系を成すような向きの法線ベクトルを'''外向き法線ベクトル'''と呼ぶ。
外向き法線の向く側を曲面の'''表'''、その反対側を曲面の'''裏'''と定義する。
<math>\partial{S}=\varnothing</math>を満たす正則曲面<math>S</math>を'''閉曲面'''という。ジョルダンの曲線定理を拡張した定理('''ジョルダン・ブラウワーの分離定理''')によって閉曲面が空間を内部・外部に分割することが保証される。内部に面する向きを閉曲面の裏、外部に面する向きを閉曲面の表と定義する。
パラメータ空間の座標軸の向きの組み合わせが<math>xy</math>平面と同じとき、外向き法線で定義される閉曲面の表裏は内部・外部から定義される表裏に一致する。
===回転面===
ここでは三次元空間内の曲面について考える。
高校数学で回転体を扱ったが、領域の回転体の表面である曲面は元の領域の疆界である単純閉曲線を軸に関して回転したものである。そこで、平面上の任意の曲線を回転すると曲面('''回転面''')を得ると考えられる。
簡単な場合として、<math>x\geq0</math>で定義された<math>zx</math>平面上の曲線<math>z=f(x)</math>を<math>y</math>軸に関して回転させた回転面を考える。
:任意の<math>k\in[0,\infty)</math>に関して曲線上の点は<math>\begin{pmatrix} x \\ z \end{pmatrix}=\begin{pmatrix} k \\ f(k)\end{pmatrix}</math>と与えられる。
:領域<math>\left\{ {\scriptstyle\left(\begin{array}{c} x \\[-6pt] z \end{array}\right)} \big| x \leq k \right\}</math>を<math>y</math>軸に関して回転した回転体を平面<math>z=f(k)</math>で切った断面は半径<math>k</math>の閉円盤であり、疆界円周上の点を<math>\begin{pmatrix} x \\ y \\ f(k) \end{pmatrix}</math>とすると<math>k=\sqrt{x^2+y^2}</math>である。
:則ち回転体の疆界である回転面上の点<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は方程式<math>z=f(\sqrt{x^2+y^2})</math>を満たし、逆にこの方程式を満たす<math>\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>は回転面上にある。
纏めると以下のようになる。
{{定理|(回転面の方程式)}}
<math>zx</math>平面上の曲線<math>z=f(x)\quad(x\geq0)</math>を<math>y</math>軸に関して回転させた回転面の方程式は
:<math>z=f(\sqrt{x^2+y^2})</math>
{{定理終わり}}
<math>z</math>軸・<math>x</math>軸に関する回転面の方程式は変数を輪環の順に入れ替えることで得られる。
回転面に対し、元の曲線を'''母線'''という。
母線が直線である回転面は'''円錐'''である。
:<math>z=mx+n\quad(m\neq0,x\geq0)</math>とすれば<math>y</math>軸に関して回転した曲面の方程式は
:<math>z=m\sqrt{x^2+y^2}+n</math>
:<math>z-n = m\sqrt{x^2+y^2}</math>
これを両辺二乗すると
:<math>(z-n)^2=m^2x^2+m^2y^2</math>
であり、錐面の方程式<math>\frac{z^2}{c^2}=\frac{x^2}{a^2}+\frac{y^2}{b^2}</math>を満たしていることがわかる。
回転軸が傾いている場合、<math>xyz</math>空間の回転行列<math>\mathbf{R}</math>を利用することで各軸に関する回転に帰着することもできるが、ここでは曲面のベクトル表示を扱ったのでベクトル方程式で回転を記述することを考えたい。
点<math>\mathrm{O}</math>から<math>\boldsymbol{r}</math>とそれに平行でない単位ベクトル<math>\boldsymbol{e}</math>が伸びており、そのなす角が<math>\theta</math>であるとする。<math>\boldsymbol{r}</math>の終点<math>\mathrm{P}</math>を含み<math>\boldsymbol{e}</math>を法線とする平面を<math>\Pi</math>、<math>\Pi</math>と直線<math>\{k\boldsymbol{e} \mid k>0\}</math>の交点を<math>\mathrm{N}</math>、<math>\mathrm{P}</math>を<math>\Pi</math>内で<math>\mathrm{N}</math>を中心として<math>\phi</math>回転した点を<math>\mathrm{Q}</math>、<math>\mathrm{NQ}</math>から<math>\mathrm{NP}</math>へ降ろした垂足を<math>\mathrm{R}</math>と置く。但し、回転角<math>\phi</math>の正の向きは<math>\boldsymbol{e}</math>を右螺子の進む向きとする方向に定める。
このとき、<math>\boldsymbol{r}</math>を<math>\boldsymbol{e}</math>に関して<math>\phi</math>だけ回転させたベクトル<math>\boldsymbol{r}'</math>は以下のように表される。
{{定理|(ロドリゲスの公式)}}
:<math>\boldsymbol{r}'=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
{{定理終わり}}
*証明
:<math>\boldsymbol{r}'=\overrightarrow{\mathrm{OQ}}=\overrightarrow{\mathrm{ON}}+\overrightarrow{\mathrm{NR}}+\overrightarrow{\mathrm{RQ}}</math>
:<math>\overrightarrow{\mathrm{ON}}</math>は<math>\boldsymbol{r}</math>の<math>\boldsymbol{e}</math>への正射影ベクトルなので
::<math>\overrightarrow{\mathrm{ON}}=\frac{\boldsymbol{r}\cdot\boldsymbol{e}}{\boldsymbol{e}\cdot\boldsymbol{e}}\boldsymbol{e}=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}</math>
:<math>\triangle\mathrm{NQR}</math>を考えると<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>と<math>\|\overrightarrow{\mathrm{NR}}\|=\|\overrightarrow{\mathrm{NQ}}\|\cos\phi</math>及び<math>\overrightarrow{\mathrm{NR}}/\!\!/\overrightarrow{\mathrm{NP}}</math>より
::<math>\overrightarrow{\mathrm{NR}}=\overrightarrow{\mathrm{NP}}\cos\phi=(\overrightarrow{\mathrm{OP}}-\overrightarrow{\mathrm{ON}})\cos\phi=\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi</math>
:<math>\boldsymbol{r}\times\boldsymbol{e}</math>は外積の定義から<math>\overrightarrow{\mathrm{NP}}</math>を<math>\Pi</math>上で<math>-\phi</math>方向に<math>\frac{\pi}{2}</math>だけ回転させたベクトルになるので、
:<math>\boldsymbol{r}\times\boldsymbol{e}/\!\!/\overrightarrow{\mathrm{RQ}}</math>と<math>\|\overrightarrow{\mathrm{RQ}}\|=\|\overrightarrow{\mathrm{NQ}}\|\sin\phi</math>及び<math>\|\overrightarrow{\mathrm{NQ}}\|=\|\overrightarrow{\mathrm{NP}}\|</math>から
::<math>\overrightarrow{\mathrm{RQ}}=-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
:これらを足して
::<math>\boldsymbol{r}'=(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}+\{\boldsymbol{r}-(\boldsymbol{r}\cdot\boldsymbol{e})\boldsymbol{e}\}\cos\phi-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})(1-\cos\phi)\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>
::<math>=\boldsymbol{r}\cos\phi+(\boldsymbol{r}\cdot\boldsymbol{e})\,\mathrm{versin}\,\phi\,\boldsymbol{e}-(\boldsymbol{r}\times\boldsymbol{e})\sin\phi</math>//
この証明ではベクトルの平行移動を用いているのでアフィン空間を前提とするが、この式そのものはアフィン構造に依存してないので一般のベクトル空間で成り立つ。
また、回転後のベクトルは母線のパラメータ<math>t</math>に加えて回転角<math>\phi</math>もパラメータとして有するので、<math>\boldsymbol{r}'(t, \phi)</math>という二変数ベクトル関数となって曲面を表すことになる。則ち、「曲線を回転すれば曲面を得る」という直感は正しい。
ロドリゲスの公式の応用として、例えば円錐のベクトル方程式が<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\mathrm{const}.</math>であることが導ける。
:円錐頂点の位置ベクトルを<math>\boldsymbol{p}</math>、軸ベクトルを<math>\boldsymbol{a}</math>、<math>\boldsymbol{a}</math>と角度<math>\alpha</math>をなす単位ベクトルを<math>\boldsymbol{v}</math>とする。このとき直線<math>\{k\boldsymbol{v}\mid k>0\}</math>が円錐の母線であり、母線と交わる向きである軸の法線ベクトルを<math>\boldsymbol{b}</math>とおく。
:ロドリゲスの公式より<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}</math>の周りに<math>\theta</math>だけ回転させたベクトル<math>\boldsymbol{v}'</math>は
::<math>\boldsymbol{v}'=\boldsymbol{v}\cos\theta+(\boldsymbol{v}\cdot\boldsymbol{e}_a)\,\mathrm{versin}\,\theta\,\boldsymbol{e}_a-(\boldsymbol{v}\times\boldsymbol{e}_a)\sin\theta</math>
:ここで<math>\boldsymbol{v}</math>を<math>\boldsymbol{a}, \boldsymbol{b}</math>方向に基底分解すると
::<math>\boldsymbol{v}=\cos\alpha\,\boldsymbol{e}_a+\sin\alpha\,\boldsymbol{e}_b</math>
:なので、
::<math>\boldsymbol{v}'=\cos\alpha\boldsymbol{e}_a+\sin\alpha\{\boldsymbol{e}_b\cos\theta+(\boldsymbol{e}_a\times\boldsymbol{e}_b)\sin\theta\}</math>
:円錐上の点<math>\boldsymbol{r}</math>の位置ベクトルは頂点から母線方向に<math>\rho</math>だけ進むので
::<math>\boldsymbol{r}=\boldsymbol{p}+\rho\boldsymbol{v}'</math>
:であり、
::<math>\boldsymbol{r}-\boldsymbol{p}=\rho\boldsymbol{v}'</math>
:ここで<math>\|\boldsymbol{v}'\|=\|\boldsymbol{v}\|=1</math>より
::<math>\rho=\|\boldsymbol{r}-\boldsymbol{p}\|</math>
:このベクトルと軸ベクトルの内積をとると
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\boldsymbol{v}'\cdot\boldsymbol{a}</math>
::<math>=\rho\{\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})+\sin\alpha\cos\theta(\boldsymbol{e}_b\cdot\boldsymbol{a})+\sin\alpha\sin\theta(\boldsymbol{e}_a\times\boldsymbol{e}_b)\cdot\boldsymbol{a}\}</math>
:<math>\boldsymbol{e}_b, \boldsymbol{e}_a\times\boldsymbol{e}_b</math>とも<math>\boldsymbol{a}</math>に直交するので後ろの二項は消えて
::<math>(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}=\rho\cos\alpha(\boldsymbol{e}_a\cdot\boldsymbol{a})=\|\boldsymbol{r}-\boldsymbol{p}\|\|\boldsymbol{a}\|\cos\alpha</math>
:則ち
::<math>\frac{(\boldsymbol{r}-\boldsymbol{p})\cdot\boldsymbol{a}}{\|\boldsymbol{r}-\boldsymbol{p}\|}=\|\boldsymbol{a}\|\cos\alpha=\mathrm{const}.</math>//
円錐が先に与えられている場合は「<math>\boldsymbol{r}-\boldsymbol{p}</math>が母線の方向ベクトルなのは図より自明」とできるが、ここでは「母線が先に与えられて回転によって円錐が構成される」という立場を採ったのでロドリゲスの公式が効くのである。
ロドリゲスの公式で微小回転<math>d\phi</math>の場合を考える。
正弦関数・余弦関数の部分を1項目までテイラー展開して<math>\cos(d\phi)=1+O(d\phi^2), \sin(d\phi)= d\phi+O(d\phi^3)</math>なので<math>\mathrm{versin}(d\phi)=O(d\phi^2)</math>であり、
:<math>\boldsymbol{r}' = \boldsymbol{r}-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
ここで<math>d\boldsymbol{r}=\boldsymbol{r}'-\boldsymbol{r}</math>なので
:<math>d\boldsymbol{r}=-(\boldsymbol{r}\times\boldsymbol{e})d\phi+O(d\phi^2)</math>
則ち、ベクトル関数の全微分は微小回転で近似される。
オーダー記法の項を無視して<math>\boldsymbol{\omega}=\frac{d\phi}{dt}\boldsymbol{e}</math>と置くと
:<math>d\boldsymbol{r}=(d\phi\boldsymbol{e})\times\boldsymbol{r}</math>
これの両辺を<math>dt</math>で割って
:<math>\frac{d\boldsymbol{r}}{dt}=\boldsymbol{\omega}\times\boldsymbol{r}</math>
これは剛体の速度公式である。
ロドリゲスの公式の一次変換表記を考える。
<math>\boldsymbol{r}=\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}, \boldsymbol{r}'=\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}, \boldsymbol{e}=\begin{pmatrix} a \\ b \\ c \end{pmatrix}</math>とすると、
:<math>\begin{pmatrix} r'_1 \\ r'_2 \\ r'_3 \end{pmatrix}=\cos\phi\begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}+(ar_1+br_2+cr_3)\mathrm{versin}\,\phi\begin{pmatrix} a \\ b \\ c \end{pmatrix} - \sin\phi \begin{pmatrix} cr_2-br_3 \\ ar_3-cr_1 \\ br_1-ar_2 \end{pmatrix}</math>
:<math>=\begin{pmatrix} (\cos\phi + a^2\,\mathrm{versin}\,\phi) r_1 + (ab\,\mathrm{versin}\,\phi -c\sin\phi) r_2 + (ca\,\mathrm{versin}\,\phi + b\sin\phi) r_3 \\ (ab\,\mathrm{versin}\,\phi + c\sin\phi) r_1 + (\cos\phi + b^2\,\mathrm{versin}\,\phi) r_2 + (bc\,\mathrm{versin}\,\phi -a\sin\phi) r_3 \\ (ca\,\mathrm{versin}\,\phi - b\sin\phi) r_1 + (bc\,\mathrm{versin}\,\phi+ a\sin\phi) r_2 + (\cos\phi + c^2\,\mathrm{versin}\,\phi) r_3 \end{pmatrix}</math>
:<math>=\begin{pmatrix} \cos\phi + a^2\,\mathrm{versin}\,\phi & ab\,\mathrm{versin}\,\phi -c\sin\phi & ca\,\mathrm{versin}\,\phi + b\sin\phi \\ ab\,\mathrm{versin}\,\phi + c\sin\phi & \cos\phi + b^2\,\mathrm{versin}\,\phi & bc\,\mathrm{versin}\,\phi -a\sin\phi \\ ca\,\mathrm{versin}\,\phi - b\sin\phi & bc\,\mathrm{versin}\,\phi+ a\sin\phi & \cos\phi + c^2\,\mathrm{versin}\,\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\mathrm{versin}\,\phi</math>を<math>1-\cos\phi</math>に戻して係数行列を<math>1, \cos\phi, \sin\phi</math>の項に分解してみると
:<math>=\begin{pmatrix} a^2+(1-a^2)\cos\phi & ab-ab\cos\phi -c\sin\phi & ca-ca\cos\phi + b\sin\phi \\ ab-ab\cos\phi + c\sin\phi & b^2+(1-b^2)\cos\phi & bc-bc\cos\phi -a\sin\phi \\ ca-ca\cos\phi - b\sin\phi & bc-bc\cos\phi+ a\sin\phi & c^2+(1-c^2)\cos\phi \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left\{ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi\begin{pmatrix} 1-a^2 & -ab & -ca \\ -ab & 1-b^2 & -bc \\ -ca & -bc & 1-c^2 \end{pmatrix} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right\} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
:<math>=\left[ \begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} + \cos\phi \left\{ \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}-\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix} \right\} +\sin\phi\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \right] \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}</math>
ここで<math>\begin{pmatrix} a^2 & ab & ca \\ ab & b^2 & bc \\ ca & bc & c^2 \end{pmatrix}</math>は<math>\boldsymbol{e}</math>の第<math>i</math>成分と第<math>j</math>成分を掛けたものが<math>(i, j)</math>成分となる行列になっていることがわかる。これを<math>\boldsymbol{e}\otimes\boldsymbol{e}</math>と書くことにする。<math>\sin\phi</math>に係る行列を<math>\mathbf{N}</math>と置くと、
:<math>\boldsymbol{r}'=\{\boldsymbol{e}\otimes\boldsymbol{e}+\cos\phi(\mathbf{E}_3-\boldsymbol{e}\otimes\boldsymbol{e})+\sin\phi\mathbf{N}\}\boldsymbol{r}</math>
という表示を得る。
更に、<math>\mathbf{N}^2=\begin{pmatrix} -b^2-c^2 & ab & ca \\ ab & -c^2-a^2 & bc \\ ca & bc & -a^2-b^2 \end{pmatrix}</math>と<math>\|\boldsymbol{e}\|=\sqrt{a^2+b^2+c^2}=1</math>より
:<math>\boldsymbol{e}\otimes\boldsymbol{e}=\mathbf{N}^2+(a^2+b^2+c^2)\mathbf{E}_3=\mathbf{N}^2+\mathbf{E}_3</math>
が成り立つので、最終的に
:<math>\boldsymbol{r}'=(\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2)\boldsymbol{r}</math>
と二次の行列多項式で表示される。
なお、<math>\otimes</math>は発展節で紹介する'''テンソル積'''を表している。
ここで、行列<math>\mathbf{N}</math>についてより具体的に考えてみる。
先ず、<math>{}^t\!\mathbf{N}=-\mathbf{N}</math>が成り立つので<math>\mathbf{N}</math>は反対称行列(歪対称行列・交代行列)である。
<math>\mathbf{N}\boldsymbol{r}</math>を計算すると
:<math>\mathbf{N}\boldsymbol{r}=\begin{pmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0 \end{pmatrix} \begin{pmatrix} r_1 \\ r_2 \\ r_3 \end{pmatrix}=\begin{pmatrix} br_3-cr_2 \\ cr_1-ar_3 \\ ar_2-br_1 \end{pmatrix}=\boldsymbol{e}\times\boldsymbol{r}</math>
則ち、<math>\mathbf{N}</math>は<math>\boldsymbol{e}</math>に関する外積(形式的には<math>\boldsymbol{e}\times</math>という左演算)を一次変換とみて表現行列に直したものである。
更に、成分計算により<math>\mathbf{N}^3=-\mathbf{N}</math>という性質が成り立つことも判る。外積を「ベクトルを90°回転させる演算」とみると、二回の演算によって180°回転するということなのでこの結果は妥当である。
ここで行列自然指数関数<math>\exp(\phi\mathbf{N})=\sum_{i=0}^\infty \frac{(\phi\mathbf{N})^i}{i!}</math>を考えてみると上の性質より三次以上の項は<math>\mathbf{N}^4=-\mathbf{N}^2, \mathbf{N}^5=\mathbf{N},\cdots</math>のように全て二次以下に帰着できる。<br>
また、自然指数関数のテイラー展開は絶対収束級数なので各項は可換であり、<math>\mathbf{N}</math>の二次式として纏め直すと
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3 + (\phi-\frac{\phi^3}{3!}+\frac{\phi^5}{5!}-\frac{\phi^7}{7!}+\cdots) \mathbf{N}+(\frac{\phi^2}{2!}-\frac{\phi^4}{4!}+\frac{\phi^6}{6!}-\frac{\phi^8}{8!}+\cdots)\mathbf{N}^2</math>
ここで一次・二次の係数はそれぞれ正弦関数・正矢関数のテイラー展開になっているので結局は
:<math>\exp(\phi\mathbf{N})=\mathbf{E}_3+\sin\phi\mathbf{N}+\mathrm{versin}\,\phi\mathbf{N}^2</math>
ここから、<math>\exp(\phi\mathbf{N})</math>は角度<math>\phi</math>に関する有限回転に対応することが判った。
このことは以下の考え方でも求まる。<br>
<math>\mathbf{N}</math>の最小方程式は<math>\mathbf{N}^3+\mathbf{N}=\mathbf{O}_3</math>より<math>x(x^2+1)=0</math>であり固有値は<math>0, \pm{i}</math>と求まるので、<math>\exp(\phi\mathbf{N})</math>の対角化行列は
:<math>\begin{pmatrix} e^{0\phi} & 0 & 0 \\ 0 & e^{i\phi} & 0 \\ 0 & 0 & e^{-i\phi} \end{pmatrix}</math>
ここで任意の解析関数<math>f</math>について<math>f(\mathbf{N})</math>のテイラー展開は二次以下の多項式になるので
:<math>\exp(\phi\mathbf{N})=\alpha\mathbf{E}_3+\beta\mathbf{N}+\gamma\mathbf{N}^2</math>
これを実多項式に戻した<math>\alpha+\beta{x}+\gamma{x^2}</math>が<math>e^{\phi{x}}</math>と任意の固有値で一致すればよい(二次補間)ので、
:<math>\begin{cases} e^0 = \alpha \\ e^{i\phi} = i\beta -\gamma \\ e^{-i\phi} = -i\beta-\gamma \end{cases}</math>
:<math>\iff \begin{cases} 1 = \alpha \\ \cos\phi+i\sin\phi = (\alpha -\gamma) + i\beta \end{cases}</math>
:<math>\therefore \begin{cases} \alpha=1 \\ \beta=\sin\phi \\ \gamma=1-\cos\phi=\mathrm{versin}\,\phi \end{cases}</math>
則ち、<math>\mathbf{N}^3=-\mathbf{N}</math>という構造は<math>\Psi_\mathbf{N}(x)=x(x^2+1)</math>という最小多項式に起因するということである。
更に[[表現論]]の観点から見ると、三次直交行列全体である回転群<math>SO(3)</math>に対し、<math>\mathbf{N}</math>は<math>SO(3)</math>の単位元に於ける接空間(三次反対称行列全体・則ちリー代数<math>\mathfrak{so}(3)</math>)の元であり、<math>\exp(\phi\mathbf{N})</math>はリー群<math>SO(3)</math>の元である。ここで行列自然指数関数は「リー代数からリー群へ引き戻す写像」なので'''指数写像'''と呼ばれる。
これが[[#フレネ標搆]]で述べた「直交変換の一次近似が反対称変換」という事実のより正確な表現である。
補足だが、力学で扱う[[w:オイラー角]]というものを導入するとロドリゲスの公式を各座標軸に関する回転の合成で表すこともできる。
===種々の曲率===
ここでは三次元空間内の正則曲面について考える。
曲面<math>S:\boldsymbol{r}=\boldsymbol{r}(t, u)</math>上で定義され弧長パラメータ表示された正則曲線<math>C:\boldsymbol{r}=\boldsymbol{r}(t(s), u(s))</math>を考える。
<math>C</math>の接ベクトルは合成関数微分公式より
:<math>\boldsymbol{t}=\frac{d\boldsymbol{r}}{ds}=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}</math>
と表示される。
ここで両辺の<math>ds</math>を形式的に払うと
:<math>\boldsymbol{t}ds=\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
これの自分自身との内積をとると
:<math>\|\boldsymbol{t}\|^2(ds)^2=\left\|\frac{d\boldsymbol{r}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2(du)^2</math>
弧長パラメトライズされた接ベクトルは単位ベクトルであり、右辺のベクトル演算の部分を第一基本量で置き換えると
:<math>ds^2=E(dt)^2+2Fdtdu+G(du)^2</math>
と、第一基本形式を別の方法で得られた。
<math>C</math>の主法線ベクトルは合成関数微分を繰り返し適用することで
:<math>\boldsymbol{n}_C=\frac{d\boldsymbol{t}}{ds}=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{du}{ds}\right)</math>
:<math>=\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d}{ds}\left(\frac{dt}{ds}\right)+\frac{d}{ds}\left(\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d}{ds}\left(\frac{du}{ds}\right)</math>
:<math>=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\frac{du}{ds}\right)\frac{dt}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\frac{du}{ds}\right)\frac{du}{ds}+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
:<math>=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\left(\frac{dt}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\frac{d^2t}{ds^2}+2\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\frac{dt}{ds}\frac{du}{ds}+\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\left(\frac{du}{ds}\right)^2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\frac{d^2u}{ds^2}</math>
ここで、<math>S</math>の法線ベクトル<math>\boldsymbol{n}_S=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>は一般に<math>\boldsymbol{n}_C</math>と一次従属とは限らない。
後の話を単純にするため<math>\boldsymbol{n}_S</math>を正規化したベクトルを<math>\boldsymbol{e}_S</math>と置いて<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S</math>を計算してみる。
:<math>\boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{t}}, \boldsymbol{e}_S\perp\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>より
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{dt}{ds}\right)^2+2\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S\right)\frac{dt}{ds}\frac{du}{ds}+\left(\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S\right)\left(\frac{du}{ds}\right)^2</math>
ここで各内積<math>L=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S,\quad M=\frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S,\quad N=\frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S</math>を<math>S</math>の'''第二基本量'''と呼ぶ。
<math>\boldsymbol{n}_C, \boldsymbol{e}_S</math>のなす角を<math>\psi</math>とすると<math>C</math>の曲率を<math>\kappa_C</math>として
:<math>\boldsymbol{n}_C\cdot\boldsymbol{e}_S=\kappa_C \cos\psi</math>
なので<math>ds</math>に関して形式的に通分して
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
右辺の分子<math>I\!I:=L(dt)^2+2Mdtdu+N(du)^2</math>を<math>S</math>の'''第二基本形式'''という。
<math>\begin{cases}\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\boldsymbol{e}_S=0 \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\boldsymbol{e}_S=0 \end{cases}</math>を<math>t</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{t}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{t}\partial{u}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=0 \end{cases}</math>
また、<math>u</math>で偏微分すると
:<math>\begin{cases} \frac{\partial^2{\boldsymbol{r}}}{\partial{u}\partial{t}}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \\ \frac{\partial^2{\boldsymbol{r}}}{\partial{u}^2}\cdot\boldsymbol{e}_S+\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}=0 \end{cases}</math>
ここから第二基本量は
:<math>L=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}},\quad M=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}=-\frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad N=-\frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}</math>
とも表示され、第二基本形式の別表示
:<math>I\!I=-\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
を得る。
これは更に全微分から微小ベクトル同士の内積として
:<math>I\!I=-d\boldsymbol{r}\cdot{d}\boldsymbol{e}_S</math>
とも書ける。
第一基本形式は曲面上の微小変位の自身との内積だったが、第二基本形式は曲面上の微小変位と法線方向の微小変位の内積である。則ち、第一基本形式は曲面の内在的な量、第二基本形式は曲面の外在的な量である。
第一基本形式と同様に第二基本形式は二次形式なので、<math>\boldsymbol{v}:=\begin{pmatrix} dt \\ du \end{pmatrix}, \mathbf{H}=\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>と置くと
:<math>I\!I={}^t\!\boldsymbol{v}\mathbf{H}\boldsymbol{v}</math>
と行列表示できる。この<math>\mathbf{H}</math>を'''第二基本行列'''という。
ここで、モンジュ表示された曲面<math>z=f(x, y)</math>に対して第二基本行列を考えてみる。
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} t \\ u \\ f(t, u)\end{pmatrix}</math>なので[[解析学基礎/多変数関数の微積分#全微分]]の結果を参照すると直ちに
:<math>L=\frac{\frac{\partial^2{f}}{\partial{t}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad M=\frac{\frac{\partial^2{f}}{\partial{t}\partial{u}}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2},\quad N=\frac{\frac{\partial^2{f}}{\partial{u}^2}}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}</math>
:が判るので、
:<math>\mathbf{H}=\frac{1}{\sqrt{1+\left(\frac{\partial{f}}{\partial{t}}\right)^2+\left(\frac{\partial{f}}{\partial{u}}\right)}^2}\begin{pmatrix} \frac{\partial^2{f}}{\partial{t}^2} & \frac{\partial^2{f}}{\partial{tu}} \\ \frac{\partial^2{f}}{\partial{tu}} & \frac{\partial^2{f}}{\partial{u^2}} \end{pmatrix}</math>
これはヘッシアンを法線の長さで割った行列である。
則ち、任意の正則曲面に対して第二基本行列はヘッセ行列と同じ役割をすると考えられる。
実際、点<math>\mathrm{P}</math>の開近傍で<math>\det\mathbf{H}</math>が正である曲面は<math>\mathrm{P}</math>の開近傍で上下どちらかに凸であり、負である曲面は<math>\mathrm{P}</math>で鞍点となることが知られている。
このように第二基本形式は曲面の「曲がり方」を表す量と考えられるので、曲面に対する曲率も考えられる。
ここで第二基本形式を定義した式
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{ds^2}</math>
に立ち戻ると、右辺の分母は<math>s</math>に依存しない第一基本形式なので第一基本量を用いて
:<math>\kappa_C\cos\psi=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>
右辺を形式的に<math>dt^2</math>で割ると
:<math>\kappa_C\cos\psi=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
この右辺は<math>\boldsymbol{n}_C</math>に依存しない量なので<math>\boldsymbol{n}_S, \boldsymbol{n}_C</math>のなす角度である<math>\psi</math>にも依存しない。
そこで、この値を曲面<math>S</math>の'''法曲率'''と定義する。
:<math>\varkappa:=\frac{L+2M\frac{du}{dt}+N\left(\frac{du}{dt}\right)^2}{E+2F\frac{du}{dt}+G\left(\frac{du}{dt}\right)^2}</math>
法曲率の幾何学的意味を考える。
<math>\varkappa=\kappa_C\cos\psi</math>より、<math>\cos\psi=1</math>のとき<math>S</math>の法曲率と<math>C</math>の曲率が一致する。このとき<math>\boldsymbol{n}_S /\!\!/ \boldsymbol{n}_C</math>であり、<math>C</math>は曲面上の点<math>\mathrm{P}</math>とそこでの曲面の法線<math>\boldsymbol{n}_S(\mathrm{P})</math>を含む平面で曲面を切断した切り口('''法切り口''')に対応する曲線('''法曲線''')である。
則ち、法曲率は法曲線の曲率に対応する。
なお、法曲線<math>C</math>は切断に用いる平面に拘束されるので接ベクトル<math>\boldsymbol{t}_C</math>も平面に拘束される。則ち、拘束平面は<math>\{\boldsymbol{t}_C, \boldsymbol{n}_C\}</math>の張る接触平面である。
法切り口を齎す平面は法線を軸にして回転することができ、その回転角によって法曲率の値が異なることになる。この回転は具体的にはロドリゲスの公式によって記述されるが、法曲率の極大値・極小値は<math>\varkappa</math>を<math>k=\frac{du}{dt}</math>の関数とみることで以下のように考えることができる。
:法曲率の定義式より
::<math>\varkappa(E+2Fk+Gk^2)=L+2Mk+Nk^2</math>・・・(*)
:これが<math>k</math>の恒等式なので微分しても等号が成り立ち、
::<math>\frac{d\varkappa}{dk}(E+2Fk+Gk^2)+\varkappa(2F+2Gk)=2M+2Nk</math>
:フェルマーの定理より<math>\frac{d\varkappa}{dk}=0</math>を満たす<math>(k, \varkappa)</math>が極値点の候補なので
::<math>\varkappa(2F+2Gk)=2M+2Nk</math>・・・(@)
:が成り立つ必要がある。
:これを<math>k</math>倍して(*)を引くと
::<math>\varkappa(E+Fk)=L+Mk</math>・・・(#)
:これと(@)を連立して
::<math>k=-\frac{\varkappa{F}-M}{\varkappa{G}-N}</math>
:これを(#)に代入して
::<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)=0</math>・・・($)
:という二次方程式を得る。
:($)が相異なる二つの実根<math>\kappa_1, \kappa_2</math>を持てばそれらは極小値・極大値である。
:逆に、極小値・極大値を持てばフェルマーの定理より($)を満たす。//
この<math>\kappa_1, \kappa_2</math>を<math>S</math>の'''主曲率'''という。
($)の左辺を変形してみると、
:<math>(EG-F^2)\varkappa^2-(GL+EN-2FM)\varkappa+(LN-M^2)</math>
:<math>=\{EG\varkappa^2-(GL+EN)\varkappa+LN\}-\{F^2\varkappa^2-2FM\varkappa+M^2\}</math>
:<math>=(L-\varkappa{E})(N-\varkappa{G})-(M-\varkappa{F})^2</math>
:<math>=\det\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}</math>
:<math>=\det(\mathbf{H}-\varkappa\mathbf{K})</math>
という、第一基本行列と第二基本行列を用いた形が出てきた。
ここで<math>\varkappa=\frac{L(dt)^2+2Mdtdu+N(du)^2}{E(dt)^2+2Fdtdu+G(du)^2}</math>を変形して
:<math>(L-\varkappa{E})dt^2+2(M-\varkappa{F})dtdu+(N-\varkappa{G})du^2=0</math>
これを二次形式表示すると
:<math>\begin{pmatrix} dt & du \end{pmatrix}\begin{pmatrix} L-\varkappa E & M - \varkappa F \\ M - \varkappa F & N - \varkappa G \end{pmatrix}\begin{pmatrix} dt \\ du \end{pmatrix}=0</math>
と、同じ<math>\mathbf{H}-\varkappa\mathbf{K}</math>がここでも登場する。
この行列は法曲率を持つ方向を二次形式で判定しているが、主曲率を持つ場合はラグランジュの未定乗数法より<math>(\mathbf{H}-\varkappa\mathbf{K})\begin{pmatrix} dt \\ du \end{pmatrix}=\boldsymbol{0}</math>が成り立ち、これが<math>\det(\mathbf{H}-\varkappa\mathbf{K})=0</math>という式の正体である。更に言うと、<math>\mathbf{H}\boldsymbol{x}=\varkappa\mathbf{K}\boldsymbol{x}</math>という一般化固有値問題の解が主曲率<math>\kappa_1, \kappa_2</math>に対応している。このときの一般化固有ベクトル<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>を主曲率に対する'''主方向'''という。
二つの主方向の関係を調べる。
:主方向の定義より
::<math>\begin{cases} (\mathbf{H}-\kappa_1\mathbf{K}) \boldsymbol{x}_1=\boldsymbol{0} \\ (\mathbf{H}-\kappa_2\mathbf{K}) \boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
:なので
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2(\mathbf{H}-\kappa_1\mathbf{K})\boldsymbol{x}_1=\boldsymbol{0} \\ {}^t\!\boldsymbol{x}_1(\mathbf{H}-\kappa_2\mathbf{K})\boldsymbol{x}_2=\boldsymbol{0} \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_1\mathbf{H}\boldsymbol{x}_2=\kappa_2{}^t\!\boldsymbol{x}_1 \mathbf{K}\boldsymbol{x}_2 \end{cases}</math>
:第一基本行列・第二基本行列とも対称行列なので第二式の転置をとって
::<math>\begin{cases} {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_1{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1 \\ {}^t\!\boldsymbol{x}_2\mathbf{H}\boldsymbol{x}_1=\kappa_2{}^t\!\boldsymbol{x}_2 \mathbf{K}\boldsymbol{x}_1 \end{cases}</math>
:上下の式の差をとって
::<math>(\kappa_1-\kappa_2){}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\boldsymbol{0}</math>
:<math>\kappa_1=\kappa_2</math>のときは<math>\boldsymbol{x}_1, \boldsymbol{x}_2</math>に関する恒等式であるので、<math>\kappa_1\neq\kappa_2</math>のときを考える。
::<math>{}^t\!\boldsymbol{x}_2\mathbf{K}\boldsymbol{x}_1=\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_2+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_2\right)\cdot\left(\frac{\partial{\boldsymbol{r}}}{\partial{t}}t_1+\frac{\partial{\boldsymbol{r}}}{\partial{u}}u_1\right)=0</math>
:この二つのベクトルは主方向を向くので2つの主方向は直交する。
<math>\kappa_1=\kappa_2</math>(法曲率<math>\varkappa(t, u)=\mathrm{const}.</math>)の場合、<math>S</math>の接平面内の任意の方向が主方向となるので「どの方向にも一様な曲がり方をする」と考えられる。このような主曲率を与える点を'''臍点'''という。任意の点が臍点である曲面は球面である。
上の結果から、'''臍点でない各点で2つの主方向は直交する'''。
主曲率に対して解と係数の関係から得る値
:<math>H=\frac{\kappa_1+\kappa_2}{2}=\frac{GL+ENN-2FM}{2EG-F^2},\quad K=\kappa_1\kappa_2=\frac{LN-M^2}{EG-F^2}</math>
をそれぞれ<math>S</math>の'''平均曲率'''・'''全曲率'''('''ガウス曲率''')という。
全曲率の式を見ると<math>K=\frac{LN-M^2}{EG-F^2}=\frac{\det\mathbf{H}}{\det\mathbf{K}}=\det(\mathbf{K}^{-1}\mathbf{H})</math>である。
そこで、<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>と定義してみると行列式の性質より<math>K</math>は<math>\mathbf{S}</math>の固有値の積である。
ここで<math>\mathbf{S}</math>の固有方程式は
:<math>\det(\mathbf{S}-\lambda\mathbf{E})=\det(\mathbf{K}^{-1}\mathbf{H}-\lambda\mathbf{E})=\det\mathbf{K}^{-1}\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
<math>\det\mathbf{K}^{-1}\neq0</math>より
:<math>\det(\mathbf{H}-\lambda\mathbf{K})=0</math>
これは主曲率を定義した二次方程式($)のことだったので、この方程式の解である固有値は<math>\lambda=\kappa_1, \kappa_2</math>である。
則ち、<math>K=\det\mathbf{S},\quad H=\frac{1}{2}\mathrm{tr}\,\mathbf{S}</math>が成り立つ。
更に、第一基本行列から第二基本行列への一次変換を考えると以下が成り立つことも判る。但し、こちらもフレネ=セレーと同様に厳密にはベクトルを列ではなく行に並べるのが正しいことに注意。
{{定理|(ヴァインガルテンの式)}}
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=-\mathbf{S}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
{{定理終わり}}
*証明
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>と置く。
:両辺に<math>{}^t\!\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>を右から掛けると行列積であることに注意して
:<math>\begin{pmatrix} \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}=\mathbf{A}\begin{pmatrix} \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{t}} & \frac{\partial\boldsymbol{r}}{\partial{t}}\cdot\frac{\partial\boldsymbol{r}}{\partial{u}} \\ \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix}</math>
:<math>\therefore -\mathbf{H}=\mathbf{A}\mathbf{K}</math>
:<math>\therefore \mathbf{A}=-\mathbf{H}\mathbf{K}^{-1}=-\mathbf{K}^{-1}\mathbf{H}=-\mathbf{S}</math>//
臍点で行列<math>\mathbf{H}-\varkappa\mathbf{K}</math>を考えると<math>\varkappa=\kappa_1=\kappa_2</math>及び「主方向が任意」から
:<math>\mathbf{H}-\varkappa\mathbf{K}=\mathbf{O}</math>
であり、これを成分で書き下せばヴァインガルテンの式より法曲率に関して
:<math>\begin{cases} \varkappa=\frac{L}{E}=\frac{M}{F}=\frac{N}{G} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{t}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{u}} = \varkappa \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{cases}</math>
を得る。
<math>\mathbf{S}=\mathbf{K}^{-1}\mathbf{H}</math>に於いて<math>\mathbf{K}</math>は正定値対称行列なので正則対称な主平方根<math>\mathbf{K}^{1/2}</math>が存在して
:<math>\mathbf{S}=\mathbf{K}^{-1/2}\mathbf{K}^{-1/2}\mathbf{H}</math>
ここで<math>\mathbf{T}=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>という相似変換で表された行列を考えてみると
:<math>\mathbf{K}^{1/2}\mathbf{S}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{1/2}\mathbf{K}^{-1}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{K}^{-1/2}\mathbf{H}\mathbf{K}^{-1/2}</math>
:<math>=\mathbf{T}</math>
であり、<math>\mathbf{S}\sim\mathbf{T}</math>なのでこれらの2つの固有値の組は一致する。
:<math>\mathbf{H}={}^t\!\mathbf{H}</math>
より
:<math>{}^t\!\mathbf{T}=\mathbf{T}</math>
が成り立つので、<math>\mathbf{T}</math>は対称行列であり2つの固有値は実数である。
よって<math>\mathbf{S}</math>の二つの固有値はともに実数であるが、この固有値は($)の解<math>\kappa_1, \kappa_2</math>のことだったので($)は虚根を持たず、'''主曲率は必ず実数'''である。
モンジュ表示された曲面では先程求めた第二基本量の表式から直ちに
:<math>H=\frac{\left\{1+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}\frac{\partial^2{f}}{\partial{x}^2}+\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2\right\}\frac{\partial^2{f}}{\partial{y}^2}-2\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}\frac{\partial^2{f}}{\partial{x}\partial{y}}}{{2\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^\frac{3}{2}}},\quad K=\frac{\frac{\partial{f}}{\partial{x}}\frac{\partial{f}}{\partial{y}}-\left(\frac{\partial^2{f}}{\partial{x}\partial{y}}\right)^2}{\left\{1+\left(\frac{\partial{f}}{\partial{x}}\right)^2+\left(\frac{\partial{f}}{\partial{y}}\right)^2\right\}^2}</math>
を得る。
等温座標系では<math>\mathbf{K}^{-1}=\frac{1}{\lambda^2}\mathbf{E}_3</math>より<math>\mathbf{S}=\frac{1}{\lambda^2}\begin{pmatrix} L & M \\ M & N \end{pmatrix}</math>なので、平均曲率・ガウス曲率はそれぞれ<math>H=\frac{L+N}{2\lambda^2},\quad K=\frac{LN-M^2}{\lambda^4}</math>と簡単に求まる。
ある点に於ける2つの主曲率はそれぞれその点に於ける極大方向・極小方向の曲がり方を与えるので、<math>\kappa_1, \kappa_2</math>の符号の組み合わせがその点近傍に於ける曲面の曲がり方を与えることになる。
具体的には、両方とも正なら上に凸、負なら下に凸、異符号なら鞍点となる。主曲率が0ならばその主方向に対して曲がっていないということである。
主曲率の積である全曲率の符号を見ても良い。全曲率が正ならば上下どちらかに凸、負ならば鞍点である。第一基本行列が正定値行列であることから主曲率の符号は第二基本行列の行列式と一致するので先程の「第二基本行列がヘッセ行列の一般化」という話に繫がる。
任意点で<math>H=0</math>を満たす曲面を'''極小曲面'''という。極小曲面は曲面を連続変形させたときに曲面積の最小値を与える曲面であることが知られている。
平面は自明な極小曲面である。他にも<math>z=\ln\left(\frac{\cos y}{\cos x}\right)(-\frac{\pi}{2}<x, y<\frac{\pi}{2})</math>(シェルクの第一曲面)などが知られている。
極小曲面は表面張力の理論に応用されている。
例えば石鹼膜のつくる曲面について、膜上点での表裏の圧力差<math>P</math>・その点での表面張力<math>T</math>及び平均曲率<math>H</math>に対し<math>P=2TH</math>が成立する(ヤング=ラプラスの公式)ことが知られているが、閉曲線である枠に張った膜が割れずに安定して存在する条件は全ての点で<math>P=H=0</math>、則ち極小曲面のときである。
曲面<math>S</math>上の微小変位<math>d\boldsymbol{r}</math>、法線方向の微小変位<math>d\boldsymbol{e}_S</math>に対して第一基本形式は<math>I=d\boldsymbol{r}\cdot d\boldsymbol{r}</math>、第二基本形式は<math>I\!I=-d\boldsymbol{r}\cdot d\boldsymbol{e}_S</math>であった。
最後の組み合わせである<math>d\boldsymbol{e}_S\cdot d\boldsymbol{e}_S</math>を<math>S</math>の'''第三基本形式'''と定義する。
:<math>I\!I\!I:=\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)\cdot\left(\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}dt+\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}du\right)</math>
:<math>=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2(dt)^2+2\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}dtdu+\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2(du)^2</math>
これを同様に二次形式の行列表示に直すと<math>\mathbf{W}:=\begin{pmatrix} \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2 & \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} \\ \frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}} & \left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2 \end{pmatrix}</math>として
:<math>I\!I\!I={}^t\!\boldsymbol{v}\mathbf{W}\boldsymbol{v}</math>
この<math>\mathbf{W}</math>を'''第三基本行列'''という。
見て判る通り、'''第三基本量'''は<math>P=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\right\|^2,\quad Q=\frac{\partial{\boldsymbol{e}_S}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{e}_S}}{\partial{u}},\quad R=\left\|\frac{\partial{\boldsymbol{e}_S}}{\partial{u}}\right\|^2</math>である。
臍点でないとき2つの主方向は直交するので、臍点を持たない曲面に対して主方向を直交基底としたパラメータ表示<math>\boldsymbol{r}=\boldsymbol{r}(p, q)</math>を考えられる。
このとき、各基本形式は
:<math>I=dp^2+dq^2</math>
:<math>I\!I=\kappa_1dp^2+\kappa_2dq^2</math>
:<math>I\!I\!I=\kappa^2_1dp^2+\kappa^2_2dq^2</math>
と表示されることが知られている。
第三基本形式は第一基本形式と第二基本形式の線型結合で表示される。
:<math>I\!I\!I=2HI\!I-KI</math>
このことはヴァインガルテンの式と平均曲率・全曲率の定義を用いて確かめられる。
これに関連し、第二基本量で定義された全曲率は第一基本量のみで表されることが知られている。つまり、曲率という外在的な量を第一基本形式という内在的な量のみで記述でき、言い換えると「曲面を考えるときに'''曲面の外側の空間を考える必要が無い'''」ということである。
この定理は発見者自身も驚愕したことから'''ガウスの驚異の定理'''と呼ばれている。詳しくは発展節で扱う。
なお、平均曲率を考えるときは外側の空間の情報が必要である。
==直交曲線座標系==
{{節stub}}
===円筒座標系===
平面の座標系として直交座標の他に斜交座標、極座標(円座標)、重心座標などがあったように、空間の座標系も複数通り考えられる。
空間座標を3つの実数の組<math>(r, \theta, z)</math>で表した座標系を'''円筒座標系'''('''円柱座標系'''、cylindrical coordinate system)という。ただし、<math>r</math>は原点からの(符号付き)距離、<math>\theta</math>は基準面に於ける始線からの正の回転角、<math>z</math>は基準面からの高さである。
円筒座標系は、円座標系の<math>r\theta</math>平面に<math>z</math>軸方向の次元を加えた3次元空間の座標と考えられる。
そのため、円筒座標系と直交座標系の対応は以下のようになる。
:<math>\begin{cases} x=r\cos\theta \\ y=r\sin\theta \\ z=z \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2} \\ \theta = \arctan\frac{y}{x} \\ z=z \end{cases}</math>
但し、<math>r</math>は基準面の裏側では負とする。
直交座標の<math>z</math>軸を基に円筒座標系の座標軸を決定する。一般に座標軸は直線とは限らないので、「軸」ではなく「曲線」と呼ぶことにする('''座標線''')。なお、「曲線」という語は一般に「直線」を包含する。
:<math>r</math>曲線:<math>z</math>軸上の点を通り<math>z</math>軸に垂直な半直線。
:<math>\theta</math>曲線:<math>z</math>軸を法線とする平面内にあり、中心が<math>z</math>軸上にある円周。
:<math>z</math>曲線:<math>z</math>軸に平行な直線。
ここで、各曲線に沿った微小変化がどのように表されるか見ていく。
<math>\boldsymbol{f}: (r,\theta,z)\to(x,y,z)</math>とする。
<math>\boldsymbol{f}</math>全体の微小変化は全微分<math>d\boldsymbol{f}=\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}</math>で表される。
上で求めた関係式より
:<math>\boldsymbol{f}\begin{pmatrix} r \\ \theta \\ z\end{pmatrix}=\begin{pmatrix} x \\ y \\ z \end{pmatrix} = \begin{pmatrix} r\cos\theta \\ r\sin\theta \\ z \end{pmatrix}</math>
なので、
:<math>\frac{\partial{(x,y,z)}}{\partial{(r,\theta,z)}} = \begin{pmatrix} \frac{\partial}{\partial{r}}r\cos\theta & \frac{\partial}{\partial{\theta}}r\cos\theta & \frac{\partial}{\partial{z}}r\cos\theta \\ \frac{\partial}{\partial{r}}r\sin\theta & \frac{\partial}{\partial{\theta}}r\sin\theta & \frac{\partial}{\partial{z}}r\sin\theta \\ \frac{\partial}{\partial{r}}z & \frac{\partial}{\partial{\theta}}z & \frac{\partial}{\partial{z}}z \end{pmatrix} = \begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}</math>
よって
:<math>d\boldsymbol{f}=\begin{pmatrix} \cos\theta & -r\sin\theta & 0 \\ \sin\theta & r\cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} dr \\ d\theta \\ dz \end{pmatrix}=\begin{pmatrix} \cos\theta \\ \sin \theta \\ 0 \end{pmatrix}dr + \begin{pmatrix} -\sin\theta \\ \cos\theta \\ 0 \end{pmatrix}rd\theta + \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}dz </math>
再右辺の各項を<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>と書くことにすると、<math>|d\vec{r}|, |d\vec{\theta}|, |d\vec{z}|</math>はそれぞれ<math>dr, rd\theta, dz</math>とわかる。<math>r, \theta, z</math>を物理量として捉えたとき<math>d\theta</math>の単位はラジアン(無次元量)であり、<math>rd\theta</math>の単位はメートル(長さの次元1)なので、次元の整合性が取れる。
纏めると以下のようになる。
{| class="wikitable"
| ||style="text-align:center;"| <math>\boldsymbol{e}_x</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_y</math>成分 ||style="text-align:center;"| <math>\boldsymbol{e}_z</math>成分 ||style="text-align:center;"| ノルム
|-
|style="text-align:center;"| <math>d\vec{r}</math> ||style="text-align:center;"| <math>\cos\theta dr</math> ||style="text-align:center;"| <math>\sin\theta dr</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>dr</math>
|-
|style="text-align:center;"| <math>d\vec{\theta}</math> ||style="text-align:center;"| <math>-r\sin\theta d\theta</math> ||style="text-align:center;"| <math>r\cos\theta d\theta</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>rd\theta</math>
|-
|style="text-align:center;"| <math>d\vec{z}</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>0</math> ||style="text-align:center;"| <math>1</math> ||style="text-align:center;"| <math>dz</math>
|}
ここで<math>d\vec{r}, d\vec{\theta}, d\vec{z}</math>は内積を取ればどの組も互いに直交することが容易にわかるので、この3つのベクトルは3次元ユークリッド空間の直交基底である。
そこで、それぞれのベクトルを正規化することで各軸曲線方向の基本ベクトルを得る。
:<math>\boldsymbol{e}_r = \frac{d\vec{r}}{dr} = \cos\theta \boldsymbol{e}_x + \sin\theta \boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_\theta = \frac{d\vec{\theta}}{rd\theta} = -\sin\theta\boldsymbol{e}_x+\cos\theta\boldsymbol{e}_y</math>
:<math>\boldsymbol{e}_z=\frac{d\vec{z}}{dz}=\boldsymbol{e}_z</math>
これを一次変換の形式で表すと
:<math>\begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix}</math>
となる。
このときの表現行列を、座標系または基底ベクトルを変換することから'''座標変換行列'''又は'''基底変換行列'''という。場合によっては'''変換テンソル'''とも呼ぶ。
なお、この直交座標⇒円筒座標の座標変換行列は、<math>xyz</math>空間に於ける<math>z</math>軸まわりの回転行列に等しい。
逆基底変換はこの座標変換行列の逆行列を求めれば定式化できる。
回転行列は直交行列なので
:<math>\begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} ^{-1}= {}^t \! \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} </math>
であり、
:<math>\begin{pmatrix} \boldsymbol{e}_x \\ \boldsymbol{e}_y \\ \boldsymbol{e}_z \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{e}_r \\ \boldsymbol{e}_\theta \\ \boldsymbol{e}_z \end{pmatrix}</math>
円筒座標系は、[[電磁気学]]の解析でよく使用される。
例えば、高校物理の公式<math>B(r)=\frac{\mu_0I}{\tau r}</math>は、円筒座標系を知っていれば「電流が<math>z</math>軸に平行であることから磁場は<math>z</math>方向に一葉且つ<math>\theta</math>方向に回転対称なので、<math>r</math>方向の項のみが寄与する」と理解される。
===極座標系===
高等学校までの地理で習ったように、球面上の位置は緯度<math>\theta</math>と経度<math>\phi</math>で定めることができる。
一般に三次元空間で球面上のある点の座標を定めるには、更に球の中心からの距離<math>r</math>が必要である。
このようにして定められる座標系を'''三次元極座標系'''(polar coordinate system in 3D)または'''球(面)座標系'''(spherical coordinate system)という。
xyz座標空間の点<math>\mathrm{P}(x, y, z)</math>の極座標表示を考える。
<math>r=|\overrightarrow{\mathrm{OP}}|=\sqrt{x^2+y^2+z^2}</math>は容易にわかる。
<math>\theta</math>は<math>z</math>軸からの'''天頂角'''(zenith angle)であり、<math>\overrightarrow{\mathrm{OP}}</math>の<math>z</math>軸への正射影ベクトルを<math>\overrightarrow{\mathrm{OH}}=\vec{h}</math>とすると<math>\tan\theta = \frac{|\vec{h}|}{z}</math>が成り立つ。<math>|\vec{h}|=\sqrt{x^2+y^2}</math>より、<math>\theta=\arctan \frac{\sqrt{x^2+y^2}}{z}</math>である。
<math>\phi</math>は<math>x</math>軸からの'''方位角'''(azimuth angle)であり、<math>\mathrm{P}</math>から<math>xy</math>平面に降ろした垂足<math>\mathrm{Q}</math>を考えると<math>\tan\phi=\frac{y}{x}</math>とわかる。よって、<math>\phi=\arctan\frac{y}{x}</math>である。
逆に、これを<math>\mathrm{P}(x, y, z)</math>に復元することを考える。
<math>\triangle\mathrm{OHP}</math>について<math>\angle\mathrm{HOP}=\theta</math>なので、<math>z=\overline{\mathrm{OH}}=r\cos\theta</math>。
また、<math>\triangle\mathrm{OPQ}</math>について<math>\angle\mathrm{OPQ}=\theta</math>なので、<math>\overline{\mathrm{OQ}}=r\sin\theta</math>。
よって<math>x=\overline{\mathrm{OQ}}\cos\phi=r\sin\theta\cos\phi, y=\overline{\mathrm{OQ}}\sin\phi=r\sin\theta\sin\phi</math>。
以上を纏めると、直交座標と球面座標の対応関係は
:<math>\begin{cases} x=r\sin\theta\cos\phi \\ y=r\sin\theta\sin\phi \\ z=r\cos\theta \end{cases} \iff \begin{cases} r=\sqrt{x^2+y^2+z^2} \\ \theta=\arctan\frac{\sqrt{x^2+y^2}}{z} \\ \phi=\arctan\frac{y}{x} \end{cases}</math>
一般に緯度は<math>-90^\circ \leqq \theta \leqq 90^\circ</math>、経度は<math>-180^\circ \leqq \phi \leqq 180^\circ</math>の範囲で表される(但し、符号の違いは東⇔西、南⇔北の違いである)。同様に、球面座標の天頂角<math>\theta</math>、方位角<math>\phi</math>は<math>\theta \in [-\frac{\pi}{4}, \frac{\tau}{4}], \phi \in [-\frac{\tau}{2}, \frac{\tau}{2}]</math>で考える。赤道面より下側(すなわち南半球)では<math>\theta<0</math>とする。
直交座標の<math>z</math>軸を基に極座標系の座標線を決定する。
:<math>r</math>曲線:原点を通る半直線。
:<math>\theta</math>曲線:原点中心で<math>z</math>軸上の一点から出る半円弧。
:<math>\phi</math>曲線:<math>z</math>軸を法線とする平面内で<math>z</math>軸上に中心を持つ円周。
各曲線に沿った微小変化は円柱座標系の場合と同様、ベクトル場の全微分を用いて
:<math>\begin{cases} d\vec{r}= \begin{pmatrix} \sin\theta\cos\phi \\ \sin\theta\sin\phi \\ \cos\theta \end{pmatrix} dr \\ d\vec{\theta}= \begin{pmatrix} \cos\theta\cos\phi \\ \cos\theta\sin\phi \\ -\sin\theta \end{pmatrix}rd\theta \\ d\vec{\phi} = \begin{pmatrix} -\sin\phi \\ \cos\phi \\ 0 \end{pmatrix} r\sin\theta d\phi \end{cases}</math>
と求まる。
これらは(内積の結果から)互いに直交するので、円柱座標の場合と同様の議論により
:<math>\begin{pmatrix} \sin\theta\cos\phi & \sin\theta\sin\phi & \cos\theta \\ \cos\theta\cos\phi & \cos\theta\sin\phi & -\sin\theta \\ -\sin\phi & \cos\phi & 0 \end{pmatrix}</math>
と変換テンソルが求まる。
これも直交行列であるので、逆変換テンソルは
:<math>\begin{pmatrix} \sin\theta\cos\phi & \cos\theta\cos\phi & \cos\phi \\ \sin\theta\sin\phi & \cos\theta\sin\phi & -\sin\phi \\ -\sin\theta & \cos\theta & 0 \end{pmatrix}</math>
と求まる。
球面座標系は、[[古典力学]]の解析でよく使用される。
例えば、赤道平面における角運動量保存則は<math>mr^2\frac{d\phi}{dt}=\mathrm{const}.</math>と表示されるが、これは<math>z</math>軸方向の角運動量を球面座標系の演算により取り出したものである。
球面座標系は特に機械制御に応用されている。
円柱座標系・球面座標系ともに各基底ベクトルが互いに直交しているので、そのことを明示して(且つ通常の直交座標系と区別して)'''直交曲線座標系'''(orthogonal curvilinear coordinate system)と呼ぶ場合がある。以下で扱う座標系たちも直交曲線座標系である。
===円環座標系===
===双極座標系===
===回転放物面座標系===
===放物柱座標系===
===回転楕円面座標系===
===楕円柱座標系===
===楕円体座標系===
==空間微分==
ここでは三次元ユークリッド空間で考える。
===勾配===
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\varphi\in C^1</math>のとき、
:<math>\mathrm{grad}\,\varphi := \begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}</math>
を<math>\varphi</math>の'''勾配'''(gradient)と定義する。
勾配の結果として得るベクトルを<math>\varphi</math>の'''勾配ベクトル'''ともいう。
勾配で定義される概念としては、電場が有名である。
:電位<math>\phi</math>に対する電場<math>\boldsymbol{E}</math>は
:<math>\boldsymbol{E}:=-\mathrm{grad}\,\phi</math>
勾配はベクトル量であるため、そのことを明示するため新たな演算子を導入する。
'''空間偏微分演算子'''(ハミルトン演算子)を
<math>\nabla:=\begin{pmatrix} \frac{\partial}{\partial{x}} \\ \frac{\partial}{\partial{y}} \\ \frac{\partial}{\partial{z}} \end{pmatrix}</math>
と定義する。
この演算子自体は偏微分作用素の対象を後接しないと意味を成さない。しかし、便宜的にベクトル量と考えてベクトルと同様の演算則が成り立つと見做す。そのため、この演算子に関する演算は[[w:記号の濫用]](symbol abuse)であることを註しておく。
<math>\nabla</math>の正式な読み方は'''ナブラ'''(nabla)であるが、<math>\Delta</math>(delta)を反転した形であることから'''エイトレッド'''(atled)とも読まれる。なお、ナブラの由来は「竪琴」を意味する古代ギリシャ語「νάβλα」である。
この演算子を用いれば勾配の表式は
:<math>\mathrm{grad}\,\varphi=\nabla\varphi</math>
となる。
<math>\varphi</math>はスカラー場なのでスカラー量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その積<math>\nabla\varphi</math>はベクトル量のスカラー倍、すなわちベクトル量であることが見て取れる。
勾配はスカラー場に対する偏微分の結果を並べたベクトルであるため、偏微分の性質とベクトルの性質を組み合わせて以下が成り立つと判る。
#<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>(線型性)
#<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(積の微分・ライプニッツ則)
#<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>(商の微分)
#<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>(合成関数微分)
任意点に対して勾配ベクトルが非零であるスカラー場を'''正則'''なスカラー場という。
以下、正則なスカラー場に限って扱う。
等位面<math>\varphi(x, y, z)=k(\mathrm{const}.)</math>上の点<math>\mathrm{P}(x_0, y_0, z_0)</math>を考える。
:<math>\mathrm{P}</math>を通り等位面に拘束される曲線のベクトル表示を<math>\boldsymbol{r}=\boldsymbol{r}(t)</math>とする。
:等位面の方程式を<math>t</math>で両辺微分して
::<math>\frac{\partial{\varphi}}{\partial{x}}\frac{dx}{dt}+\frac{\partial{\varphi}}{\partial{y}}\frac{dy}{dt}+\frac{\partial{\varphi}}{\partial{z}}\frac{dz}{dt}=0</math>
:<math>t=t_0</math>のとき
::<math>\frac{\partial{\varphi}}{\partial{x}}x'(t_0)+\frac{\partial{\varphi}}{\partial{y}}y'(t_0)+\frac{\partial{\varphi}}{\partial{z}}z'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\cdot\boldsymbol{r}'(t_0)=0</math>
::<math>\nabla\varphi(\mathrm{P})\perp\boldsymbol{r}'(t_0)</math>
ここで<math>\mathrm{P}</math>に於ける等位面の接平面は接ベクトル<math>\boldsymbol{r}'(t_0)</math>を含むため、<math>\nabla\varphi(\mathrm{P})</math>は点<math>\mathrm{P}</math>に於ける等位面の法線ベクトルである。
よって等位面の接平面の方程式は
:<math>\nabla\varphi(\mathrm{P})\cdot(\boldsymbol{x}-\overrightarrow{\mathrm{OP}})=0</math>
である。
スカラー場<math>\varphi=\varphi(\boldsymbol{x})</math>の全微分は
:<math>d\varphi=\frac{\partial{\varphi}}{\partial{x}}dx+\frac{\partial{\varphi}}{\partial{y}}dy+\frac{\partial{\varphi}}{\partial{z}}dz</math>
これをベクトルの内積とみると
:<math>=\begin{pmatrix} \frac{\partial{\varphi}}{\partial{x}} \\ \frac{\partial{\varphi}}{\partial{y}} \\ \frac{\partial{\varphi}}{\partial{z}} \end{pmatrix}\cdot\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
:<math>=\nabla\varphi\cdot d\boldsymbol{x}</math>
ここで変位ベクトル<math>d\boldsymbol{x}</math>を任意の方向を向いた単位ベクトル<math>\boldsymbol{e}</math>に拡張することを考えたい。
<math>\varphi(\mathrm{P})</math>に対して<math>\mathrm{P}</math>を始点とする<math>\boldsymbol{e}</math>方向の直線を考え、その上の点を<math>\mathrm{Q}</math>とする。
このとき、ベクトル変数<math>\boldsymbol{e}</math>による微分係数
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{\mathrm{Q\to P}}\frac{\varphi(\mathrm{Q})-\varphi(\mathrm{P})}{\overline{\mathrm{QP}}}</math>
を、<math>\varphi</math>の<math>\mathrm{P}</math>に於ける<math>\boldsymbol{e}</math>方向の'''方向微分係数'''と定義する。
方向微分係数はスカラー場に対し<math>\boldsymbol{e}</math>方向の変化率を与えるものと考えられる。そこで、方向微分係数が最大となる方向を考える。
:<math>\overrightarrow{\mathrm{PQ}}=t\boldsymbol{e}</math>と置く。
::<math>\overrightarrow{\mathrm{OQ}}=\begin{pmatrix} x_0+te_1 \\ y_0+te_2 \\ z_0+te_3 \end{pmatrix}</math>
::<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\lim_{t\to0}\frac{\varphi(x_0+te_1, y_0+te_2, z_0+te_3)-\varphi(x_0, y_0, z_0)}{t}</math>
:ここで<math>\Phi(t):=\varphi(x_0+te_1, y_0+te_2, z_0+te_3)</math>とすれば
::<math>=\lim_{t\to0}\frac{\Phi(t)-\Phi(0)}{t}</math>
::<math>=\frac{d\Phi(t)}{dt}</math>
::<math>=\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{x}}\frac{d(x_0+te_1)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{y}}\frac{d(y_0+te_2)}{dt}+\frac{\partial{\varphi}(x_0, y_0, z_0)}{\partial{z}}\frac{d(z_0+te_3)}{dt}</math>
::<math>=\frac{\partial{\varphi}(\mathrm{P})}{\partial{x}}e_1+\frac{\partial{\varphi}(\mathrm{P})}{\partial{y}}e_2+\frac{\partial{\varphi}(\mathrm{P})}{\partial{z}}e_3</math>
::<math>=\nabla\varphi(\mathrm{P})\cdot\boldsymbol{e}</math>
よって、全微分の式の<math>d\boldsymbol{x}</math>をそのまま<math>\boldsymbol{e}</math>に取り替えたものが方向微分係数の表式である。
内積を書き下すと<math>\|\boldsymbol{e}\|=1</math>より
:<math>\frac{\partial{\varphi}(\mathrm{P})}{\partial{\boldsymbol{e}}}=\|\nabla\varphi(\mathrm{P})\|\cos\theta</math>
よって最大値をとるのは<math>\cos\theta=1</math>則ち'''<math>\boldsymbol{e}</math>が勾配方向のとき'''である。また、方向微分係数の最大値は'''勾配のノルム'''である。
このように、勾配はスカラー場の各点に於ける傾きを表す。これは最右辺の式が「各軸方向の傾きを表すベクトルの和」になっていることからも直観的にわかる。ここから、「gradient」の和訳として「勾配」が充当されたのは妥当である。
方向微分係数を'''方向導関数'''に拡張することを考える。
形式的には方向微分係数の定点<math>\mathrm{P}</math>を変数<math>\boldsymbol{x}</math>に置き換えればいいだけである。
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\nabla\varphi(\boldsymbol{x})\cdot\boldsymbol{e}</math>
正式には極限を用いて
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{\boldsymbol{e}}}:=\lim_{t\to0}\frac{\varphi(\boldsymbol{x}+t\boldsymbol{e})-\varphi(\boldsymbol{x})}{t}</math>
と定義する。
内積を書き下すと
:<math>\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{x}}e_1+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{y}}e_2+\frac{\partial{\varphi}(\boldsymbol{x})}{\partial{z}}e_3</math>
これを[[解析学基礎/多変数関数の微積分#極値]]で扱った方向偏微分作用素として書き直すと
:<math>\left(e_1\frac{\partial}{\partial{x}}+e_2\frac{\partial}{\partial{y}}+e_3\frac{\partial}{\partial{z}}\right)\varphi(\boldsymbol{x})</math>
:<math>=(\boldsymbol{e}\cdot\nabla)\varphi(\boldsymbol{x})</math>
となる。
則ち、形式的には空間偏微分演算子の微分方向ベクトルとの右内積が方向偏微分作用素である。
更に、多変数関数のテイラー二次近似は
:<math>f(\boldsymbol{x})\fallingdotseq f(\boldsymbol{a})+\nabla{f}(\boldsymbol{a})\cdot(\boldsymbol{x}-\boldsymbol{a})+\frac{1}{2}{}^t\!(\boldsymbol{x}-\boldsymbol{a})\mathbf{D}(\boldsymbol{x}-\boldsymbol{a})</math>
と書けることが判る。但し、<math>\mathbf{D}</math>はヘッセ行列である。
多変数解析で扱った停留点(臨界点)は<math>\nabla\varphi(\mathrm{P})=\boldsymbol{0}</math>なる点<math>\mathrm{P}</math>として正式に定義される。また、ラグランジュの未定乗数法に於ける連立方程式も勾配を用いれば<math>\nabla\varphi(\mathrm{P})=\lambda\nabla\psi(\mathrm{P})</math>と書き表される。
スカラー場の全微分は勾配で表せたが、同様にベクトル場の全微分をナブラを用いて表すことを考える。
ベクトル場の全微分は
:<math>d\boldsymbol{a}=\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}} d\boldsymbol{x}</math>
で定義された。
ここで<math>n</math>次行列 <math>\mathbf{A}</math>と<math>n</math>項列ベクトル <math>\boldsymbol{a}</math>に対し、<math>(\mathbf{A} \circledast \boldsymbol{a})_{ij} = (\mathbf{A}_{ij}) a_i</math>となるような可換二項演算子 <math>\circledast</math>を定義する。これは本項独自の記法である。但し、<math>(\mathbf{P})_{ij}</math>は行列 <math>\mathbf{P}</math>の第ij成分を表す。
この記法を用いると、ヤコビ行列<math>\frac{\partial{(a_x,a_y,a_z)}}{\partial{(x,y,z)}}</math>は<math>\nabla \circledast \boldsymbol{a}</math>と表すことができる。
則ち、ベクトル場の全微分は
:<math>d\boldsymbol{a} = (\nabla \circledast \boldsymbol{a}) d\boldsymbol{x}</math>
と表される。
これを形式的に
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}=\nabla \circledast \boldsymbol{a}</math>
と書き表すことができる。
則ち、ヤコビ行列はベクトル場のベクトル変数による導関数と見做せる。
ヤコビ行列はベクトル場の成分スカラー場に対する勾配ベクトルを行に並べたものという解釈もできるので、この考え方は自然である。
ここでベクトル場に対してスカラー場と同様に方向微分係数・方向導関数を考えると、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{x}}}\boldsymbol{v}</math>
が成り立つことが判る。
これもベクトル場の成分スカラー場に対する方向微分係数・方向導関数を列に並べたベクトルと解釈できる。
則ち、
:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
である。
===発散===
ベクトル場<math>\boldsymbol{a}=\boldsymbol{a}(\boldsymbol{x})</math>が<math>x, y, z</math>の三変数関数であって<math>\boldsymbol{a}\in C^1</math>のとき、
:<math>\mathrm{div}\,\boldsymbol{a} := \frac{\partial{a_x}}{\partial{x}} + \frac{\partial{a_y}}{\partial{y}} + \frac{\partial{a_z}}{\partial{z}}</math>
を<math>\boldsymbol{a}</math>の'''発散'''(divergence)と定義する。
発散が用いられる概念としては、'''ガウスの法則'''が有名である。
:電荷密度<math>\rho</math>、電場<math>\boldsymbol{E}</math>、真空の誘電率<math>\varepsilon_0</math>として
:<math>\mathrm{div}\,\boldsymbol{E}=\frac{\rho}{\varepsilon_0}</math>
球面座標で考えることにより、この式の重要な性質「荷電粒子の座標を原点にとると原点以外では
<math>\mathrm{div}\,\boldsymbol{E}=0</math>」を証明することができる。
勾配と同様に発散をナブラで表すことを考えると、
:<math>\mathrm{div}\,\boldsymbol{a}=\nabla\cdot\boldsymbol{a}</math>
という表式を得る。
<math>\boldsymbol{a}</math>はベクトル場なのでベクトル量であり、<math>\nabla</math>は便宜的にベクトル量と考えることから、その内積<math>\nabla\cdot\boldsymbol{a}</math>はスカラー量であることが見て取れる。
発散に対しては以下が成り立つ。
#<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>(線型性)
#<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は内積の線型性より、後者は成分演算と勾配の定義より示される。
ヤコビ行列<math>\nabla\circledast\boldsymbol{a}</math>との関係を考える。
:<math>\nabla\circledast\boldsymbol{a}=\begin{pmatrix} \frac{\partial{\boldsymbol{a}}}{\partial{x}} & \frac{\partial{\boldsymbol{a}}}{\partial{y}} & \frac{\partial{\boldsymbol{a}}}{\partial{z}} \end{pmatrix}=\begin{pmatrix} \frac{\partial{a}_x}{\partial{x}} & \frac{\partial{a}_x}{\partial{y}} & \frac{\partial{a}_x}{\partial{z}} \\ \frac{\partial{a}_y}{\partial{x}} & \frac{\partial{a}_y}{\partial{y}} & \frac{\partial{a}_y}{\partial{z}} \\ \frac{\partial{a}_z}{\partial{x}} & \frac{\partial{a}_z}{\partial{y}} & \frac{\partial{a}_z}{\partial{z}} \end{pmatrix}</math>
ここで跡が発散そのものになっているので
:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
が成り立つ。
発散の物理的意味を考える。
:密度<math>\rho</math>が一定である流体の速度場<math>\boldsymbol{v}\in\mathbb{R}^3</math>に対し、微小直方体に出入りする流体の質量収支を考える。
:点<math>(x,y,z)</math>に於ける流速<math>\boldsymbol{v}(x,y,z)=(v_x,v_y,v_z)</math>、直方体の各辺の長さを<math>\delta x, \delta y, \delta z</math>とする。
:単位時間あたりに<math>yz</math>平面に平行な面を通過する流体の質量収支は流出量<math>-\rho v_x(x,y,z)\delta y\delta z</math>、流入量<math>\rho v_x(x+\delta x,y,z)\delta y\delta z</math>より
::<math>\rho(v_x(x+\delta x,y,z)-v_x(x,y,z))\delta y\delta z=\rho\frac{v_x(x+\delta x,y,z)-v_x(x,y,z)}{\delta x}\delta x\delta y\delta z</math>
:<math>\delta x\to0</math>の極限で
::<math>=\rho\frac{\partial{v_x}}{\partial{x}}dxdydz</math>
:他の面で考えると対称性から輪環の順に入れ替えた結果を得るので直方体全体では
::<math>\rho\left(\frac{\partial{v_x}}{\partial{x}}+\frac{\partial{v_y}}{\partial{y}}+\frac{\partial{v_z}}{\partial{z}}\right)dxdydz</math>
:よって単位体積当たりでは
::<math>\rho\nabla\cdot\boldsymbol{v}</math>
:を得る。
ここで質量を密度で割ると体積なので、<math>\nabla\cdot\boldsymbol{v}</math>は単位時間あたりの流体の体積の正味の流出率を表す。
この微小直方体の単位体積あたりで観測すると、発散が正であれば流体は膨脹して密度が下がり、負であれば圧縮されて密度が上がる。0であれば流体は膨脹も圧縮もしない。
発散が零であるベクトル場を'''非圧縮/湧出無し/管状/ソレノイダル ベクトル場'''(incompressible/solenoidal vector field)などと呼ぶ。
また、ベクトル場の発散を'''湧き出し'''(「沸き出し」とも書く)と呼ぶ場合もある。
ベクトル場の流線に沿う流れが流体の体積を保存する条件はベクトル場が非圧縮であることである。これを'''リウヴィルの定理'''という。これは多くの場合、[[解析力学]]のハミルトン形式で表示される。
位置ベクトル場<math>\boldsymbol{r}=\begin{pmatrix} x \\ y \\ z \end{pmatrix}</math>に対して<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}</math>を考える。
:<math>\frac{\partial}{\partial{x}}\frac{1}{\|\boldsymbol{r}\|^n}=\frac{\partial{\left(\frac{1}{\|\boldsymbol{r}\|^n}\right)}}{\partial{\|\boldsymbol{r}\|}}\frac{\partial{\|\boldsymbol{r}\|}}{\partial{x}}=-\frac{n}{\|\boldsymbol{r}\|^n+1}\frac{x}{\sqrt{x^2+y^2+z^2}}=-\frac{nx}{\|\boldsymbol{r}\|^{n+2}}</math>
<math>y, z</math>も同様なので
:<math>\nabla\frac{1}{\|\boldsymbol{r}\|^n}=-\frac{n\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+1}}</math>
よって発散のライプニッツ則から
:<math>\nabla\cdot\frac{\boldsymbol{r}}{\|\boldsymbol{r}\|^n}=\left(\nabla\frac{1}{\|\boldsymbol{r}\|^n}\right)\cdot\boldsymbol{r}+\frac{1}{\|\boldsymbol{r}\|^n}\nabla\cdot\boldsymbol{r}=-\frac{n\boldsymbol{r}\cdot\boldsymbol{r}}{\|\boldsymbol{r}\|^{n+2}}+\frac{1+1+1}{\|\boldsymbol{r}\|^n}=\frac{3-n}{\|\boldsymbol{r}\|^n}</math>
この結果から、<math>\boldsymbol{a}/\!\!/\boldsymbol{r}\land\|\boldsymbol{a}\|\propto \frac{1}{\|\boldsymbol{r}\|^2}\implies\nabla\cdot\boldsymbol{a}=0</math>(逆二乗則に従う場は非圧縮ベクトル場)が成り立つ。
ベクトル解析の黎明期では発散の逆符号で表される
:<math>\mathrm{conv}\,\boldsymbol{a}:=-\frac{\partial{a_x}}{\partial{x}} - \frac{\partial{a_y}}{\partial{y}} - \frac{\partial{a_z}}{\partial{z}}</math>
という量が用いられていた。これは'''吸い込み'''(convergence)と呼ばれる量である。
ベクトルが発明される以前、ベクトル演算に相当するものは[[多元数/四元数|四元数]]で記述されていた。純虚四元数同士の積をとると実部が現在で言う内積の-1倍、虚部が現在で言う外積に対応する。このことから、内積そのものである湧き出しではなく内積の-1倍である吸い込みが自然に出現する量として頻繁に扱われていたのである。
===回転===
回転運動は、以下の3つにより一意に定まる。
*回転軸の方向
*回転の速さ
*回転方向(軸に対して右回転か左回転か)
「回転方向」は暗黙の諒解として右手系の正の回転角で考える。すると、回転運動を表すのに必要な情報は「方向」と「速さ(=スカラー量)」のみとなる。
従って、'''任意の回転運動はベクトルで表示される'''(ベクトルの大きさは「回転の速さ」で定める)。このようなベクトルを'''角速度ベクトル'''という。
ベクトル場の'''回転'''(curl/rotation/rotor)を以下のように定義する。
:<math>\mathrm{curl} \, \boldsymbol{a} = \mathrm{rot} \, \boldsymbol{a} = \begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
<math>\mathrm{curl}</math>は理学系、<math>\mathrm{rot}</math>は工学系が好んで使用する。
<math>z</math>軸方向の成分について考える。
<math>z</math>軸方向の回転はフレミングの左手の法則から<math>xy</math>平面内の成分のみが寄与すると考えられる。<math>z</math>軸の正方向の回転を生むには、<math>x</math>軸方向の変化率を大きくして<math>y</math>軸方向の変化率を小さくすればよい。
ある軸方向の変化率とはその軸の変数に関する偏導関数のことであったので、回転のz成分を<math>\frac{\partial{X_y}}{\partial{x}}-\frac{\partial{X_x}}{\partial{y}}</math>とすれば満足する。
対称性より輪環の順で入れ替えても同様であるので、回転は上の式で表されるとわかる。
これはより厳密には後述の線積分を用いて説明することになるので、ここでは定性的な説明に留めた。
回転を用いた概念として、ファラデーの電磁誘導の法則が有名である。
:電場<math>\boldsymbol{E}</math>、磁束密度<math>\boldsymbol{B}</math>として
:<math>\mathrm{rot} \, \boldsymbol{E} = -\frac{\partial{\boldsymbol{B}}}{\partial{t}}</math>
流体の渦の記述にも応用されており、回転を'''渦度ベクトル'''とも呼ぶ。流体力学的な渦の定義は「速度場の回転」である。
回転が零ベクトルであるベクトル場を'''非回転的/渦無し/層状/ラメラー ベクトル場'''(irrotational/lamella vector field)などと呼ぶ。
勾配・発散と同様に空間偏微分演算子による表記を考える。
成分に着目すると外積の形式なので、
:<math>\mathrm{curl} \, \boldsymbol{a}= \nabla \times \boldsymbol{a}</math>
と表されることが判る。
ベクトル場はベクトル量であり、ナブラは便宜的にベクトル量と見做すことから、その外積である回転はベクトル量であることが見て取れる。
外積の性質から、回転は行列式
:<math>\det \begin{pmatrix} \boldsymbol{e}_x & \boldsymbol{e}_y & \boldsymbol{e}_z \\ \frac{\partial}{\partial{x}} & \frac{\partial}{\partial{y}} & \frac{\partial}{\partial{z}} \\ a_x & a_y & a_z \end{pmatrix}</math>
でも表示される。
回転に対しては以下が成り立つ。
#<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>(線型性)
#<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>(積の微分・ライプニッツ則)
前者は外積の線型性より、後者は成分演算と勾配の定義より示される。
回転は常に角速度ベクトルと一致するとは限らない。そのため、必ずしも回転運動そのものを記述しない。
回転は、ヤコビ行列を用いると以下のように表される。
:<math>\mathrm{rot} \, \boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
:ここで<math>\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})</math>は反対称行列であり、<math>\mathrm{axl}</math>は反対称行列を軸ベクトルに移す写像である。
===ラプラシアン===
上で見てきた勾配・発散・回転はいずれも一階の偏微分作用素であった。
二階偏微分作用素のうち最もよく使われているのがスカラー場に対して勾配の発散をとる演算である。
:<math>\nabla\cdot(\nabla\varphi) = \mathrm{div}(\mathrm{grad}\,\varphi)</math>
ここで<math>(\nabla\cdot\nabla)\varphi</math>を計算してみると成分計算から上の<math>\nabla\cdot(\nabla\varphi)</math>に等しいことが容易に判る。則ち、発散作用素<math>\nabla\cdot\,\,</math>、勾配作用素<math>\nabla</math>、スカラー場<math>\varphi</math>の間に結合法則が成り立ってると見做せる。
そこで、<math>\nabla\cdot\nabla</math>を独立した演算子として考えることにする。
以下のように定義される演算子を'''ラプラス演算子'''(ラプラス作用素)という。
:<math>\text{∆}:=\nabla\cdot\nabla=\frac{\partial^2}{\partial{x}^2}+\frac{\partial^2}{\partial{y}^2}+\frac{\partial^2}{\partial{z}^2}</math>
二項目は[[w:記号の濫用]]により<math>\nabla^2</math>と書かれることもある。
但し、<math>\text{∆}</math>は通常のデルタ(Unicode文字名: GREEK CAPITAL LETTER DELTA, U+394)ではなく'''増分記号'''(Unicode文字名:INCREMENT, U+2206)である(が通常のデルタで書かれることが多い)。
ラプラス演算子を<math>C^2</math>級スカラー場に作用させる操作(及びその結果として得るスカラー場)を'''ラプラシアン'''(Laplacian)という。
:<math>\text{∆}\varphi=\frac{\partial^2{\varphi}}{\partial{x}^2}+\frac{\partial^2{\varphi}}{\partial{y}^2}+\frac{\partial^2{\varphi}}{\partial{z}^2}</math>
スカラー場のラプラシアンは各成分方向の曲率の和、すなわちスカラー場の各点に於ける突出・沈み込みの度合いを表す。
勾配・発散・回転・ラプラシアンを総称して'''空間微分'''と呼ぶ。
ラプラシアンは[[解析学基礎/偏微分方程式|偏微分方程式]]の記述に用いられている。
:'''ラプラス方程式'''・'''ポテンシャル方程式''':<math>\text{∆}\varphi=0</math>
:'''ポアソン方程式''':<math>\text{∆}\varphi=f</math>
:'''熱伝導方程式'''・'''拡散方程式''':<math>\text{∆}\psi=k\frac{\partial{\psi}}{\partial{t}}+g</math>
:'''波動方程式''':<math>\text{∆}\psi=\frac{1}{\nu^2}\frac{\partial^2{\psi}}{\partial{t}^2}</math>
:'''ヘルツホルム方程式''':<math>\text{∆}\varphi=-l^2\varphi</math>
ここで<math>\varphi=\varphi(x,y,z),\,f=f(x,y,z),\,\psi=\psi(x,y,z,t),\,k>0,\,g=g(x,y,z,t),\,\nu>0,\,l\in\mathbb{R}</math>である。
なお、ラプラス方程式の解を'''調和関数'''という。
<math>C^2</math>級ベクトル場のラプラシアンは以下のように定義される。
:<math>\text{∆}\boldsymbol{a}=\begin{pmatrix} \text{∆}a_x \\ \text{∆}a_y \\ \text{∆}a_z \end{pmatrix}</math>
ここでスカラー場と同様に考えて<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})</math>としたいところではあるが、これは一般には成り立たない。
実際には以下のように表示される。
:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})=\mathrm{grad}(\mathrm{div}\,\varphi)-\mathrm{rot}(\mathrm{rot}\,\varphi)</math>
*証明
:対称性より<math>x</math>成分のみ考えても輪環の順に入れ替えれば他の成分を得る。
::<math>\nabla\cdot\boldsymbol{a}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}</math>
:より
::<math>\{\nabla(\nabla\cdot\boldsymbol{a})\}_x=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}</math>
:また、
::<math>\nabla\times\boldsymbol{a}=\begin{pmatrix} \frac{\partial{a_z}}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}} \end{pmatrix}</math>
:より
::<math>\{\nabla\times(\nabla\times\boldsymbol{a})\}_x=\frac{\partial}{\partial{y}}\left(\frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}\right)-\frac{\partial}{\partial{z}}\left(\frac{\partial{a_x}}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}\right)</math>
::<math>=\frac{\partial^2{a_y}}{\partial{y}\partial{x}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{z}\partial{x}}-\frac{\partial^2{a_x}}{\partial{z}^2}</math>
:<math>\boldsymbol{a}\in{C^2}</math>より偏微分は可換(シュワルツの定理)なので、<math>\{\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})\}_x</math>を計算すると
::<math>\left(\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_y}}{\partial{x}\partial{y}}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}\right)-\left(\frac{\partial^2{a_y}}{\partial{x}\partial{y}}-\frac{\partial^2{a_x}}{\partial{y}^2}+\frac{\partial^2{a_z}}{\partial{x}\partial{z}}-\frac{\partial^2{a_x}}{\partial{z}^2}\right)</math>
::<math>=\frac{\partial^2{a_x}}{\partial{x}^2}+\frac{\partial^2{a_x}}{\partial
{y}^2}+\frac{\partial^2{a_x}}{\partial{z}^2}</math>
::<math>=\text{∆}a_x</math>//
ここから判るように、ベクトル場<math>\boldsymbol{a}</math>に対して<math>\text{∆}=\nabla(\nabla\cdot)</math>が成り立つ条件は<math>\nabla\times(\nabla\times\boldsymbol{a})=\boldsymbol{0}</math>である。<math>\boldsymbol{a}</math>が非回転ベクトル場であれば回転が零ベクトルなのでこの形を必ず満足する。但し、この形を満たすベクトル場が全て非回転的ベクトル場であるとは限らない。
則ち、外積の反復と同様に回転演算子<math>\nabla\times\,\,</math>の反復に対して結合法則は不成立である。
歴史的な四元数表記では発散の代わりに吸い込みが用いられていたことからラプラシアンも現在とは反対の符号で計算されていた。ラプラシアンはユークリッド空間に限らず定義可能であるが、その中でも特に重要なのは[[特殊相対論#マクスウェルの方程式|相対性理論]]で用いられる'''ダランベール演算子'''(ダランベルシアン、クアブラ、波動演算子)である。
:<math>\text{⧠}:=\frac{1}{\nu^2}\frac{\partial^2}{\partial{t^2}}-\text{∆}</math>
これは標準座標系で表されるミンコフスキー空間上のラプラシアンに相当する。<math>\text{∆}</math>は上で扱ってきた通常のラプラシアンのことである。
これを用いると波動方程式は<math>\text{⧠}\psi=0</math>というミンコフスキー空間上のラプラス方程式と解釈される。つまり、波動関数はミンコフスキー空間で見れば調和関数なのである。
また、[[w:クライン=ゴルドン方程式]]と呼ばれる偏微分方程式は
:<math>\text{⧠}\psi=-\mu^2\psi</math>
というミンコフスキー空間上のヘルツホルム方程式と解釈される。
===微分定理===
ここでは、ナブラに関する公式を見ていく。以下、シュワルツの定理が成り立っているものとする。また、成分計算をすればいいだけなので証明は省略する。
既に紹介したものを以下に並べる。
#勾配
#:<math>\nabla(k\varphi+l\psi)=k\nabla\varphi+l\nabla\psi</math>
#:<math>\nabla(\varphi\psi)=(\nabla\varphi)\psi+\varphi(\nabla\psi)</math>(
#:<math>\nabla\left(\frac{\varphi}{\psi}\right)=\frac{(\nabla\varphi)\psi-\varphi(\nabla\psi)}{\psi^2}</math>
#:<math>\nabla(\varphi(\psi))=\frac{d\varphi(\psi)}{d\psi}\nabla\psi</math>
#:<math>\frac{\partial{\varphi}}{\partial{\boldsymbol{e}}}=(\boldsymbol{e}\cdot\nabla)\varphi</math>
#:<math>\frac{\partial{\boldsymbol{a}}}{\partial{\boldsymbol{v}}}=(\nabla\circledast\boldsymbol{a})\boldsymbol{v}=(\boldsymbol{v}\cdot\nabla)\boldsymbol{a}</math>
#発散
#:<math>\nabla\cdot(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\cdot\boldsymbol{a}+l\nabla\cdot\boldsymbol{b}</math>
#:<math>\nabla\cdot(\varphi\boldsymbol{a})=(\nabla\varphi)\cdot\boldsymbol{a}+\varphi\nabla\cdot\boldsymbol{a}</math>
#:<math>\nabla\cdot\boldsymbol{a}=\mathrm{tr}(\nabla\circledast\boldsymbol{a})</math>
#回転
#:<math>\nabla\times(k\boldsymbol{a}+l\boldsymbol{b})=k\nabla\times\boldsymbol{a}+l\nabla\times\boldsymbol{b}</math>
#:<math>\nabla\times(\varphi\boldsymbol{a})=(\nabla\varphi)\times\boldsymbol{a}+\varphi\nabla\times\boldsymbol{a}</math>
#:<math>\nabla\times\boldsymbol{a} = 2 \,\mathrm{axl} \left( \frac{\nabla \circledast \boldsymbol{a} - {}^t \! (\nabla \circledast \boldsymbol{a})}{2} \right)</math>
#ラプラシアン
#:<math>\text{∆}\varphi=\nabla\cdot(\nabla\varphi)</math>
#:<math>\text{∆}\boldsymbol{a}=\nabla(\nabla\cdot\boldsymbol{a})-\nabla\times(\nabla\times\boldsymbol{a})</math>
二つのベクトル場<math>\boldsymbol{a}, \boldsymbol{b}</math>の内積・外積に対してそれぞれ一階の空間微分を考えてみる。
<math>\boldsymbol{a}\cdot\boldsymbol{b}</math>はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\boldsymbol{a}\cdot\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}+(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}\times(\nabla\times\boldsymbol{b})+\boldsymbol{b}\times(\nabla\times\boldsymbol{a})</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\boldsymbol{a}\times\boldsymbol{b})=\boldsymbol{b}\cdot(\nabla\times\boldsymbol{a})-\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\nabla\times(\boldsymbol{a}\times\boldsymbol{b})=(\nabla\circledast\boldsymbol{a})\boldsymbol{b}-(\nabla\circledast\boldsymbol{b})\boldsymbol{a}+\boldsymbol{a}(\nabla\cdot\boldsymbol{b})-\boldsymbol{b}(\nabla\cdot\boldsymbol{a})</math>
次に、一階の空間微分の結果に対して更なる一階の空間微分を考えてみる。
スカラー場の勾配はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\varphi)=\text{∆}\varphi</math>
:<math>\nabla\times(\nabla\varphi)=\boldsymbol{0}</math>
ベクトル場の発散はスカラー量なので勾配のみ考えられる。
:<math>\nabla(\nabla\cdot\boldsymbol{a})=\text{∆}\boldsymbol{a}+\nabla\times(\nabla\times\boldsymbol{a})</math>
ベクトル場の回転はベクトル量なので発散・回転のみ考えられる。
:<math>\nabla\cdot(\nabla\times\boldsymbol{a})=0</math>
:<math>\nabla\times(\nabla\times\boldsymbol{a})=\nabla(\nabla\cdot\boldsymbol{a})-\text{∆}\boldsymbol{a}</math>
則ち、勾配・発散・回転はどの組み合わせでも交換法則が成り立たない。
一階の空間微分の結果に対してラプラシアンを考えてみる。
:<math>\text{∆}(\nabla\varphi)=\nabla(\text{∆}\varphi)</math>
:<math>\text{∆}(\nabla\cdot\boldsymbol{a})=\nabla\cdot(\text{∆}\boldsymbol{a})</math>
:<math>\text{∆}(\nabla\times\boldsymbol{a})=\nabla\times(\text{∆}\boldsymbol{a})</math>
ラプラシアンはスカラー性・ベクトル性を保存するので、演算が破綻する箇所はない。
則ち、ラプラシアンは勾配・発散・回転との組み合わせに対して交換法則が成り立つ。
:<math>\text{∆}\nabla=\nabla\text{∆},\quad\text{∆}(\nabla\cdot)=(\nabla\cdot)\text{∆},\quad\text{∆}(\nabla\times)=(\nabla\times)\text{∆}</math>
<math>\boldsymbol{a}\times\boldsymbol{b}</math>及び<math>\nabla\times\boldsymbol{a}</math>の発散・回転は三重積の形であった。
スカラー三重積・ベクトル三重積にナブラを様々な組み合わせで入れてその結果がどうなるか見ていく。
:<math>\boldsymbol{a}\cdot(\nabla\times\boldsymbol{b})</math>
:<math>\boldsymbol{a}\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すればいいので公式化する必要が無い。
:<math>\boldsymbol{a}\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>\boldsymbol{a}\times(\boldsymbol{b}\times\nabla)</math>
:<math>\nabla\cdot(\boldsymbol{a}\times\nabla)</math>
:<math>\nabla\times(\boldsymbol{a}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>\boldsymbol{a}\cdot(\nabla\times\nabla)</math>
:<math>\boldsymbol{a}\times(\nabla\times\nabla)</math>
:<math>\nabla\cdot(\nabla\times\nabla)</math>
:<math>\nabla\times(\nabla\times\nabla)</math>
は同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。<br>
また、三重積の公式はナブラを代入した時点で破綻する。
次に、スカラー四重積・ベクトル四重積に対しても同様のことを考える。
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\boldsymbol{c})</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\nabla\times\boldsymbol{a})\times(\nabla\times\boldsymbol{b})</math>
はそのまま計算すれば良いので公式化する必要が無い。
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\boldsymbol{c}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\boldsymbol{c}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\nabla\times\boldsymbol{a})\times(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\nabla)</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\nabla)</math>
は偏微分作用素の対象を後接してないので通常の演算としては扱えない。
:<math>(\nabla\times\nabla)\cdot(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\nabla\times\nabla)\times(\boldsymbol{a}\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\cdot(\nabla\times\nabla)</math>
:<math>(\boldsymbol{a}\times\boldsymbol{b})\times(\nabla\times\nabla)</math>
及びナブラを三個以上含むものは同じものの外積をとってるので当然<math>0, \boldsymbol{0}</math>である。
故に、ここで問題になるのは
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})</math>
の扱いである。
これらには以下の公式が成り立つ。
:<math>(\boldsymbol{a}\times\nabla)\cdot(\boldsymbol{b}\times\boldsymbol{c})=\boldsymbol{a}\cdot\{\nabla\times(\boldsymbol{b}\times\boldsymbol{c})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\boldsymbol{b}\times\boldsymbol{c})=[\{\boldsymbol{b}\cdot(\nabla\times\boldsymbol{c})\}-\{\boldsymbol{c}\cdot(\nabla\times\boldsymbol{b})\}]\boldsymbol{a}+{}^t\!\{\nabla\circledast(\boldsymbol{b}\times\boldsymbol{c})\}\boldsymbol{a}</math>
:<math>(\boldsymbol{a}\times\nabla)\cdot(\nabla\times\boldsymbol{b})=\boldsymbol{a}\cdot\{\nabla\times(\nabla\times\boldsymbol{b})\}</math>
:<math>(\boldsymbol{a}\times\nabla)\times(\nabla\times\boldsymbol{b})={}^t\!\{\nabla\circledast(\nabla\times\boldsymbol{b})\}\boldsymbol{a}</math>
===ポテンシャル論===
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすスカラー場<math>\varphi\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0}</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を満たすならば<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>となるスカラー場<math>\varphi\in C^2</math>はどのようなときに存在するのであろうか?
ここで<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>は成分表示すれば
:<math>\begin{cases} \frac{\partial{a}_z}{\partial{y}}-\frac{\partial{a_y}}{\partial{z}}=0 \\ \frac{\partial{a}_x}{\partial{z}}-\frac{\partial{a_z}}{\partial{x}}=0 \\ \frac{\partial{a_y}}{\partial{x}}-\frac{\partial{a_x}}{\partial{y}}=0 \end{cases}</math>
という一階線型連立偏微分方程式となる。
この連立偏微分方程式は領域<math>D=\mathrm{dom}\,\boldsymbol{a}</math>上で解くことになるので、解が<math>\boldsymbol{a}=\mathrm{grad}\,\varphi</math>を満たすかは領域<math>D</math>がどのような形状をしているかに依存する。
そして、その形状を具体的に与えるのが次の定理である。
{{定理|(ポアンカレの補題1)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0} \iff \exist \varphi\in C^2(D),\quad \mathrm{grad}\,\varphi=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が単連結であることである。
{{定理終わり}}
証明は後述する。
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''スカラーポテンシャル'''(scalar potential)といい、スカラーポテンシャルを有するベクトル場を'''保存的ベクトル場'''(保存場、conservative vector field)という。
保存的ベクトル場に対して実際にスカラーポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{grad}\,\varphi=\boldsymbol{a},\quad\mathrm{rot}\,\boldsymbol{a}=\boldsymbol{0}</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{\varphi}}{\partial{x}}=a_x \\ \frac{\partial{\varphi}}{\partial{y}}=a_y \\ \frac{\partial{\varphi}}{\partial{z}}=a_z \end{cases},\quad\begin{cases} \frac{\partial{a}_z}{\partial{y}}=\frac{\partial{a_y}}{\partial{z}} \\ \frac{\partial{a}_x}{\partial{z}}=\frac{\partial{a_z}}{\partial{x}} \\ \frac{\partial{a_y}}{\partial{x}}=\frac{\partial{a_x}}{\partial{y}} \end{cases}</math>
:<math>\frac{\partial{\varphi}}{\partial{x}}=a_x(x,y,z)</math>は直接積分形偏微分方程式なので両辺を<math>x</math>で偏積分して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z) dx+g(y,z)</math>・・・(1)
:これを<math>y</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{y}}=\frac{\partial}{\partial{y}}\int_m^x a_x(x,y,z)dx+\frac{\partial{g}}{\partial{y}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\int_m^x \frac{\partial{a_x}}{\partial{y}}dx+\frac{\partial{g}}{\partial{y}}</math>
:更に回転の条件から
::<math>=\int_m^x \frac{\partial{a_y}}{\partial{x}}dx+\frac{\partial{g}}{\partial{y}}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_y(x,y,z)-a_y(m,y,z)+\frac{\partial{g}}{\partial{y}}</math>
:これが<math>a_y(x,y,z)</math>に等しいので
::<math>\frac{\partial{g}}{\partial{y}}=a_y(m,y,z)</math>
:これは<math>g(y, z)</math>が<math>x</math>の関数でないことに適する。
:両辺を<math>y</math>で偏積分して
::<math>g(y, z)=\int_n^y a_y(m,y,z)dy+h(z)</math>
:これを(1)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+h(z)</math>・・・(2)
:これを<math>z</math>で偏微分すると
::<math>\frac{\partial{\varphi}}{\partial{z}}=\frac{\partial}{\partial{z}}\left(\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy\right)+\frac{\partial{h}}{\partial{z}}</math>
:ここでライプニッツの積分法則を適用して
::<math>=\left(\int_m^x\frac{\partial{a_x(x,y,z)}}{\partial{z}}dx+\int_n^y\frac{\partial{a_y(m,y,z)}}{\partial{z}}dy\right)+\frac{dh}{dz}</math>
:更に回転の条件から
::<math>=\left(\int_m^x\frac{\partial{a_z(x,y,z)}}{\partial{x}}dx+\int_n^y\frac{\partial{a_z(m,y,z)}}{\partial{y}}dy\right)+\frac{dh}{dz}</math>
:よって偏微分に関する微分積分学の基本定理より
::<math>=a_z(x,y,z)-a_z(m,y,z)+a_z(m,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
::<math>=a_z(x,y,z)-a_z(m,n,z)+\frac{dh}{dz}</math>
:これが<math>a_z(x,y,z)</math>に等しいので
::<math>\frac{dh}{dz}=a_z(m,n,z)</math>
:これは<math>h(z)</math>が<math>x, y</math>の関数でないことに適する。
:両辺を<math>z</math>で常積分して
::<math>h(z)=\int_l^z a_z(m,n,z)dz+C</math>
:これを(2)に代入して
::<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>//
ここで最後の積分定数<math>C</math>は勾配をとるときに消える。更に言うと、単連結領域では偏微分方程式の解の一意性よりスカラーポテンシャルは積分定数の違いを除いて一意に定まる。よって、スカラーポテンシャルは平行移動を同一視する同値類として与えられることになる。
ベクトル場<math>\boldsymbol{a}\in C^1</math>に対して<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>を満たすベクトル場<math>\boldsymbol{A}\in C^2</math>が存在するならば、上で扱った公式より<math>\mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0</math>である。
逆に、ベクトル場<math>\boldsymbol{a}\in C^1</math>が<math>\mathrm{div}\,\boldsymbol{a}=0</math>を満たすならば<math>\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>となるスカラー場<math>\boldsymbol{A}\in C^2</math>はどのようなときに存在するのであろうか?
これも同様に以下の定理で与えられる。
{{定理|(ポアンカレの補題2)}}
領域<math>D\subset\mathbb{R}^3</math>とベクトル場<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\mathrm{div}\,\boldsymbol{a}=0 \iff \exist \boldsymbol{A}\in C^2(D),\quad \mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a} </math>
となるための十分条件は<math>D</math>が'''可縮'''であることである。
{{定理終わり}}
証明は後述する。
ここで、集合が可縮とは「全体を1点に退化するような連続変形が可能である」ことを言う。可縮な集合は単連結である。可縮条件はより弱めることができるが、ホモトピーやコホモロジーの概念が必要である
この<math>\varphi</math>を<math>\boldsymbol{a}</math>の'''ベクトルポテンシャル'''(vector potential)という。スカラーポテンシャルと異なり、「ベクトルポテンシャルを有するベクトル場」を指す特別な呼称は(数学界一般に認知されたものとしては)存在しない。「ソレノイダル場」などを用いる派閥もあるが、単に「発散が0であるベクトル場」を指す用法が強いのであまり広まっていない。
ベクトルポテンシャルを有するベクトル場に対して実際にベクトルポテンシャルを構成することを考える。簡単の為に、定義域は直方体領域(あるいは三次元ユークリッド空間全体)とする。
:<math>\mathrm{rot}\,\boldsymbol{A}=\boldsymbol{a},\quad\mathrm{div}\,\boldsymbol{a}=0</math>を連立偏微分方程式に書き下して
::<math>\begin{cases} \frac{\partial{A}_z}{\partial{y}}-\frac{\partial{A_y}}{\partial{z}}=a_x \\ \frac{\partial{A}_x}{\partial{z}}-\frac{\partial{A_z}}{\partial{x}}=a_y \\ \frac{\partial{A_y}}{\partial{x}}-\frac{\partial{A_x}}{\partial{y}}=a_z \end{cases},\quad \frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}} =0</math>
:第一式より
::<math>\frac{\partial{A_z}}{\partial{y}}=a_x+\frac{\partial{A_y}}{\partial{z}}</math>
:<math>y</math>で偏積分して
::<math>A_z = \int_n^y \left(a_x+\frac{\partial{A_y}}{\partial{z}}\right)dy+f(x,z)</math>
:ライプニッツの積分法則より
::<math>=\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)</math>・・・(3)
:第三式より
::<math>\frac{\partial{A_x}}{\partial{y}}=\frac{\partial{A_y}}{\partial{x}}-a_z</math>
:<math>y</math>で偏積分して
::<math>A_x=\int_n^y \left(\frac{\partial{A_y}}{\partial{x}}-a_z\right)dy+g(x, z)</math>
:ライプニッツの積分法則より
::<math>=\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)</math>
:これと(3)を第二式に代入して
::<math>a_y=\frac{\partial}{\partial{z}}\left(\frac{\partial{}}{\partial{x}}\int_n^y A_y dy - \int_n^y a_zdy+g(x,z)\right)-\frac{\partial}{\partial{x}}\left(\int_n^y a_xdy + \frac{\partial}{\partial{z}}\int_n^y A_y dy+f(x,z)\right)</math>
::<math>=\frac{\partial^2}{\partial{z}\partial{x}}\int_n^yA_ydy-\frac{\partial}{\partial{z}}\int_n^y a_z dy+\frac{\partial{g}}{\partial{z}}-\frac{\partial}{\partial{x}}\int_n^y a_x dy-\frac{\partial^2}{\partial{x}\partial{z}}\int_n^y A_y dy-\frac{\partial{f}}{\partial{x}}</math>
::<math>=\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}-\int_n^y \left(\frac{\partial{a_z}}{\partial{z}}+\frac{\partial{a_x}}{\partial{x}}\right)dy</math>
:よって
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=a_y+\int_n^y \left(\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_z}}{\partial{z}}\right) dy</math>・・・(4)
:この右辺を<math>h(x, y, z)</math>とおくと
::<math>\frac{\partial{h}}{\partial{y}}=\frac{\partial{a_x}}{\partial{x}}+\frac{\partial{a_y}}{\partial{y}}+\frac{\partial{a_z}}{\partial{z}}=0</math>
:なので<math>h(x,y,z)</math>は<math>y</math>に依存しない<math>h(x,z)</math>である。
:これは(4)の左辺が<math>y</math>に依存しないことと整合する。
:故に(4)は
::<math>\frac{\partial{g}}{\partial{z}}-\frac{\partial{f}}{\partial{x}}=h(x,z)</math>
:という二変数の偏微分方程式に落ちる。
:この偏微分方程式は例えば<math>f(x,z)=0, g(x,z)=\int_l^z h(x,z)dz</math>のような特殊解を持つ。
:このような特殊解によって構成された元の方程式の解を<math>\boldsymbol{A}_0</math>とする。
:一般解<math>\boldsymbol{A}</math>と特殊解との差を<math>\boldsymbol{B}</math>と置くとその回転は回転の線型性より<math>\boldsymbol{0}</math>なので
::<math>\begin{cases} \frac{\partial{B}_z}{\partial{y}}=\frac{\partial{B_y}}{\partial{z}} \\ \frac{\partial{B}_x}{\partial{z}}=\frac{\partial{B_z}}{\partial{x}} \\ \frac{\partial{B_y}}{\partial{x}}=\frac{\partial{B_x}}{\partial{y}} \end{cases}</math>
:同様にして第一式・第三式を<math>y</math>で偏積分して第二式に代入すると積分定数に関して
::<math>\frac{\partial{F(x,z)}}{\partial{x}}=\frac{\partial{G(x,z)}}{\partial{z}}</math>
:を得る。
:これは全微分方程式が完全微分方程式である条件なので、
::<math>\mathrm{grad}\,\Phi=\begin{pmatrix} F(x,z) \\ G(x,z) \end{pmatrix}</math>
:なるスカラー場<math>\Phi</math>が存在する。
:則ち、求めるベクトルポテンシャルは<math>\boldsymbol{A}=\boldsymbol{A}_0+\nabla\Phi</math>//
ここで勾配の項は回転をとるときに<math>\mathrm{rot}(\mathrm{grad}\,\Phi)=\boldsymbol{0}</math>より消える。スカラーポテンシャルと同様に自由度が残るので、ベクトルポテンシャルはその自由度を無視した同値類で与えられる。
ポアンカレの補題1, 2に於ける領域<math>D</math>は互いに素ではない複数の領域の和集合<math>\bigcup_i D_i</math>であっても良い。但しポテンシャル場<math>\mathrm{p}</math>は各領域<math>D_i</math>に対して区分的に定義され、このとき互いに重なった領域<math>D_i\cap D_j</math>では任意の点<math>\boldsymbol{x}\in D_i\cap D_j</math>に対して<math>\mathrm{p}_i(\boldsymbol{x})=\mathrm{p}_j(\boldsymbol{x})</math>であることが導かれる。
ポアンカレの補題が成り立たない状況を考えると、この「重なった領域での単射性」が崩れる。則ち、ポテンシャル場は多価関数として振舞うのである。
ポテンシャルに関連した定理として、以下が成り立つ。
{{定理|(ヘルツホルムの定理)}}
ポアンカレの補題が成り立つ状況下に於いて、<math>C^1</math>級ベクトル場<math>\boldsymbol{a}</math>は<math>C^2</math>級スカラー場の勾配と<math>C^2</math>級ベクトル場の回転に[[w:直和分解]]('''ヘルツホルム分解''')できる。
則ち、任意の<math>\boldsymbol{a}\in C^1(D)</math>に対して
:<math>\boldsymbol{a}=\mathrm{grad}\,\varphi-\mathrm{rot}\,\boldsymbol{A}</math>
を満たす<math>\varphi, \boldsymbol{A}\in C^2(D)</math>が存在する。
{{定理終わり}}
*証明
:ポアソン方程式<math>\text{∆}\varphi=f</math>に対してラプラシアンの定義から
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=f</math>
:ここで右辺のスカラー関数<math>f</math>が<math>\boldsymbol{a}</math>の発散で与えられている場合を考えると
::<math>\mathrm{div}(\mathrm{grad}\,\varphi)=\mathrm{div}\,\boldsymbol{a}</math>
:発散の線型性より
::<math>\mathrm{div}(\mathrm{grad}\,\varphi-\boldsymbol{a})=0</math>
:ここでポアンカレの補題2を用いて
::<math>\mathrm{grad}\,\varphi-\boldsymbol{a}=\mathrm{rot}\,\boldsymbol{A}</math>//
この<math>\varphi, \boldsymbol{A}</math>をそれぞれ広義のスカラーポテンシャル・ベクトルポテンシャルと呼ぶ場合がある。
広義ポテンシャルに対して
:<math>\begin{cases} \mathrm{rot}(\mathrm{grad}\,\varphi)=\boldsymbol{0} \\ \mathrm{div}(\mathrm{rot}\,\boldsymbol{A})=0 \\ \mathrm{div}\,\boldsymbol{a}=\text{∆}\varphi \\ \mathrm{rot}\,\boldsymbol{a}=\mathrm{grad}(\mathrm{div}\,\boldsymbol{A})-\text{∆}\boldsymbol{A} \end{cases}</math>
が成立する。
広義ポテンシャルの組み合わせは一つには定まらない。成分毎で考えるとヘルツホルムの定理は三元連立偏微分方程式を与えるが、勾配で消える定数項と回転で消える勾配項を補正すると右辺の自由度は広義ポテンシャル2つ+補正項2つで4である。そこで、応用上は<math>\mathrm{div}\,\boldsymbol{A}=0</math>という条件('''クーロンゲージ条件''')を追加で課して一意に定めることが多い(これにより<math>\mathrm{rot}\,\boldsymbol{a}=-\text{∆}\boldsymbol{A}</math>が成り立つので)。
例えば、[[連続体力学]]に於ける弾性体の運動方程式(ナビエ-コーシー方程式)
:<math>\rho\frac{\partial^2{\boldsymbol{u}}}{\partial{t}^2}=(\lambda+\mu)\mathrm{grad}(\mathrm{div}\,\boldsymbol{u})+\mu\text{∆}\boldsymbol{u}</math>
をヘルツホルム分解とクーロンゲージ条件により解析すると
:<math>\begin{cases} \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\varphi=(\lambda+2\mu)\text{∆}^2\varphi \\ \rho\frac{\partial^2}{\partial{t}^2}\text{∆}\boldsymbol{A}=\mu\text{∆}^2\boldsymbol{A} \end{cases}</math>
を得る。
更に<math>e=\text{∆}\varphi,\quad\boldsymbol{\omega}=-\text{∆}\boldsymbol{A}</math>と置くとこの2つの式は波動方程式である。ここから導かれる波は前者が縦波で後者が横波であるが、<math>\lambda+2\mu>\mu</math>より前者の方が伝播速度が大きい。則ち、中学理科のP波・S波の性質を導くことができた。
ナビエ-コーシー方程式に於いて定常状態を考えると<math>t</math>-微分の項が0になるので、<math>\text{∆}^2\boldsymbol{u}=0</math>を得る。このような形の偏微分方程式を'''重調和偏微分方程式'''という。
*応用問題
*:真空のマクスウェル方程式<math> \begin{cases}
\nabla\times\boldsymbol{E}&=-\frac{\partial{\boldsymbol{B}}}{\partial{t}}\\
\nabla\times\boldsymbol{H}&=\frac{\partial{\boldsymbol{D}}}{\partial{t}}\\
\nabla\cdot\boldsymbol{D}&=0\\
\nabla\cdot\boldsymbol{B}&=0\\
\end{cases}</math>と構成方程式<math>\begin{cases} \boldsymbol{D}=\varepsilon_0\boldsymbol{E} \\ \boldsymbol{B}=\mu_0\boldsymbol{H}\end{cases}</math>から電磁波の波動方程式<math>\begin{cases} \text{∆}\boldsymbol{E}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{E}}}{\partial{t}^2} \\ \text{∆}\boldsymbol{H}=\frac{1}{c^2}\frac{\partial^2{\boldsymbol{H}}}{\partial{t}^2} \end{cases}</math>及び光速<math>c=\frac{1}{\sqrt{\varepsilon_0\mu_0}}</math>を導け。
==空間積分==
ここでは三次元ユークリッド空間で考える。
===線積分===
偏積分
:<math>\int_a^b f(x,y) dx := \lim_{n \to \infty} \sum_{k=1}^{n} f(x_k,y) \Delta x</math>(<math>\Delta x = \frac{b-a}{n}, x_k = a + k\Delta x</math>)
は<math>xyz</math>空間を<math>y</math>を固定した平面で切った断面に於ける曲線<math>z=f(x, y)</math>と<math>x</math>軸、直線<math>x=a, x=b</math>の囲む符号付き面積であった。
このとき積分変数を各点で見ると<math>x</math>軸という直線上を<math>a\to b</math>と単調に進むことになるが、これを<math>xyz</math>空間の任意の曲線<math>C</math>に拡張することを考える。
三次元空間の曲線をベクトル表示すると
:<math>\boldsymbol{r}(t)=\begin{pmatrix} x(t) \\ y(t) \\ z(t) \end{pmatrix}\quad t\in [\alpha, \beta]</math>
であり、被積分関数はこの曲線上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
偏積分の<math>dx</math>は「<math>x</math>軸上の微小変位」であったが、<math>t</math>が単調なとき曲線に沿った微小変位は曲線上の移動距離、則ち弧長の微小量と考えられるので線素を用いて
:<math>dl=\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
これらを総合すると、<math>C</math>に沿った積分というものは曲線のパラメータを用いて
:<math>\int_\alpha^\beta \varphi(\boldsymbol{r}(t))\left\| \frac{d\boldsymbol{r}}{dt} \right\|dt</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>C</math>に沿った'''線積分'''<sup>※</sup>(line integral)という。また、<math>C</math>を'''積分経路'''(積分路、path)という。
<small>※量子力学の[[量子力学#経路積分法|経路積分]](path integral)とは異なる概念である。</small>
スカラー場の線積分は
:<math>\int_C \varphi dl</math>
のように略記される。
特に積分経路が閉曲線('''閉経路''')である場合は
:<math>\oint_C \varphi dl</math>
のように書き、これを<math>C</math>に沿った'''周回/閉路 積分'''(closed line integral)という。
1の線積分<math>\int_C dl</math>は弧長に等しい。
<math>\varphi(\boldsymbol{r})</math>の<math>C</math>の端点に於ける値の差を考える。
<math>t\in[\alpha,\beta]</math>を各<math>t_i</math>に等分割したとき、スカラー関数のテイラー展開より
:<math>\varphi(\boldsymbol{r}(t_i))-\varphi(\boldsymbol{r}(t_{i-1}))=\nabla\varphi(\boldsymbol{r}_{t_i-1})\cdot d\boldsymbol{r}\big|_{t=t_i}+O\left(\left\|d\boldsymbol{r}\big|_{t=t_i}\right\|\right)</math>
なので
:<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))\fallingdotseq \sum_{i=1}^n \nabla\varphi(\boldsymbol{r}(t_{i-1}))\cdot d\boldsymbol{r}\big|_{t=t_i}</math>
右辺で分割数<math>n</math>を無限大に飛ばした極限は区分求積法より
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r}</math>
則ち、曲線<math>C</math>に沿った微分積分学の基本定理
:<math>\int_{\boldsymbol{r}(\alpha)}^{\boldsymbol{r}(\beta)}\nabla\varphi(\boldsymbol{r})\cdot d\boldsymbol{r} = \varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>
を得る。
これは一変数積分の<math>\int_a^b \frac{df}{dx}dx=f(b)-f(a)</math>に対応し、これは常積分に関する微分積分学の基本定理の別表現である。
左辺をスカラー場の線積分と同様に<math>\int_C \nabla\varphi\cdot d\boldsymbol{r}</math>と書くことにする。
ここで<math>\nabla\varphi</math>を一般のベクトル場<math>\boldsymbol{a}</math>に拡張して同様に
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}</math>
を考えてみたい。
ここで<math>d\boldsymbol{r}</math>は<math>\boldsymbol{r}</math>の全微分と解釈され、一変数関数なので
:<math>d\boldsymbol{r}=\frac{d\boldsymbol{r}}{dt}dt</math>
則ち、
:<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{r}=\int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\cdot\frac{d\boldsymbol{r}}{dt}dt</math>
という曲線のパラメータに関する積分に帰着された。
これをベクトル場<math>\boldsymbol{a}</math>の<math>C</math>に沿った'''線積分'''という。
<math>\frac{d\boldsymbol{r}}{dt}</math>は<math>C</math>の接線なので<math>\boldsymbol{a}(\boldsymbol{r})\cdot\frac{d\boldsymbol{r}}{dt}</math>は<math>\boldsymbol{a}</math>から<math>C</math>の接線に沿う沿流成分を取り出していることになる。
このことから、ベクトル場の線積分を特に'''接線積分'''(integral of tangential component)ということがある。
また、<math>d\boldsymbol{r}</math>のノルムを考えてみると
:<math>\|d\boldsymbol{r}\|=\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt=dl</math>
より線素に一致する。
このことから、<math>d\boldsymbol{r}</math>を'''線素ベクトル'''と呼び、<math>d\boldsymbol{l}</math>とも書く。
線素ベクトルは曲線上の微小変位を表すので座標軸上の微小変位の重ね合わせと考えれば
:<math>d\boldsymbol{l}=\begin{pmatrix} dx \\ dy \\ dz \end{pmatrix}</math>
よって接線積分は形式的に
:<math>\int_C (a_xdx+a_ydy+a_zdz)</math>
とも書かれる。
更に、弧長パラメトライズされている場合は接ベクトルを用いて
:<math>d\boldsymbol{l}=\boldsymbol{t}ds</math>
とも表せる。
接線積分で定義される概念としては、仕事が有名である。
:物体を経路<math>C</math>に沿って力<math>\boldsymbol{F}</math>で運んだときの仕事は摩擦や空気抵抗を無視すると
::<math>W=\int_C \boldsymbol{F}\cdot d\boldsymbol{r}</math>
また、アンペールの法則も線積分で示される。
:閉経路<math>C</math>で囲まれた領域を貫く電流の大きさ<math>I</math>とその電流が生む磁場<math>\boldsymbol{H}</math>に対して
::<math>\oint_C \boldsymbol{H}\cdot d\boldsymbol{l}=I</math>
更に、以下のような概念も定義されている。
:流体の速度場<math>\boldsymbol{v}</math>の循環は
::<math>\Gamma(C)=\oint_C \boldsymbol{v}\cdot d\boldsymbol{l}</math>
*応用問題
**運ばれる物体の質量を<math>m</math>としたとき、仕事の定義とニュートンの運動方程式<math>m\frac{d^2\boldsymbol{r}}{dt^2}=\boldsymbol{F}</math>を用いて運動エネルギーに関するエネルギーの原理<math>W=\frac{1}{2}mv^2-\frac{1}{2}mv_0^2</math>を証明せよ。
<math>C</math>が正の向きにパラメトライズされたとき、負の向きにパラメトライズされた曲線を<math>-C</math>と表した。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の始点が一致するとき、これを一つの曲線と見做して曲線の和
:<math>C_1+C_2</math>
が定義される。
これを'''区分的に定義された曲線'''という。
2つの閉曲線<math>C_1</math>の終点と<math>C_2</math>の終点が一致するとき、<math>C_1</math>を始点とすると曲線の差は
:<math>C_1-C_2=C_1+(-C_2)</math>
で定義される。
<math>C</math>が'''区分的に滑らか'''であるとは、<math>C</math>が有限個の滑らかな曲線の和であることである。
これらを踏まえると、線積分には以下の性質が成り立つ。
#スカラー場
#:<math>\int_C (k\varphi+l\psi) dl=k\int_C \varphi dl + l \int_C \psi dl</math>
#:<math>\int_{-C}\varphi dl = \int_C \varphi dl</math>
#:<math>\int_{C_1+C_2}\varphi dl = \int_{C_1}\varphi dl + \int_{C_2}\varphi dl</math>
#ベクトル場
#:<math>\int_C (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{l}=k\int_C \boldsymbol{a}\cdot d\boldsymbol{l}+l\int_C \boldsymbol{b}\cdot d\boldsymbol{l}</math>
#:<math>\int_{-C}\boldsymbol{a}\cdot d\boldsymbol{l} = -\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>
#:<math>\int_{C_1+C_2}\boldsymbol{a}\cdot d\boldsymbol{l} = \int_{C_1}\boldsymbol{a}\cdot d\boldsymbol{l} + \int_{C_2}\boldsymbol{a}\cdot d\boldsymbol{l}</math>
1番目の性質は線型性である。2番目の性質から、スカラー場の線積分に関しては任意の'''再パラメトライズ'''(パラメータの可逆な変数変換)、ベクトル場の線積分に関しては向き付けを保つ再パラメトライズに対して線積分の値が保存されることが判る。
保存的ベクトル場に対する線積分<math>\int_C \boldsymbol{a}\cdot d\boldsymbol{l}</math>はスカラーポテンシャル<math>\varphi</math>を用いて<math>\int_C \nabla\varphi\cdot d\boldsymbol{l}</math>と書けるので微分積分学の基本定理より<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>に等しい。
ここで<math>\varphi(\boldsymbol{r}(\beta))-\varphi(\boldsymbol{r}(\alpha))</math>は曲線の端点にのみ依存し形状には依存しない。
そのため、'''線積分の値が積分経路に依存しない必要十分条件はベクトル場が保存的であること'''である。
ここで閉曲線である場合を考えると
:<math>\boldsymbol{r}(\alpha)=\boldsymbol{r}(\beta)</math>
より
:<math>\varphi(\boldsymbol{r}(\alpha))=\varphi(\boldsymbol{r}(\beta))</math>
なので
:<math>\oint_C \nabla\varphi\cdot d\boldsymbol{l}=0</math>
である。
逆に言うと、'''周回積分が0でない閉経路をとれるとき<math>\varphi</math>は<math>\boldsymbol{a}</math>のスカラーポテンシャルではない'''。
この事実は偏微分方程式を解いて求めたスカラーポテンシャルが実際にポテンシャルであるかどうかの確認に用いられる。
なお、先程求めたスカラーポテンシャルの一般式
:<math>\varphi(x,y,z)=\int_m^x a_x(x,y,z)dx+\int_n^y a_y(m,y,z)dy+\int_l^z a_z(m,n,z)dz+C</math>
は線積分で表される。
具体的には、積分経路を<math>\gamma:(m,n,l)\to(m,n,z)\to(m,y,z)\to(x,y,z)</math>という3つの線分の和としてとれば
:<math>\varphi=\int_\gamma \boldsymbol{a}\cdot d\boldsymbol{l}+C</math>
である。
ここでスカラーポテンシャルとは勾配方程式
:<math>\nabla\varphi=\boldsymbol{a}</math>
の解だったので、'''線積分と勾配は逆演算'''である。
<math>\nabla\varphi\cdot d\boldsymbol{l}=d\varphi</math>より、スカラーポテンシャルの存在と完全微分方程式の対応がここからも得られる。また、完全微分方程式<math>d\varphi=0</math>の解は曲線を与えることも容易に判る。
仕事が線積分で定義されるという話をしたが、エネルギーの原理より力場がスカラーポテンシャルを有する(保存場)場合はエネルギー変化が移動経路に依存しないので力学的エネルギー保存法則が成り立つ。これが高校物理で扱った「保存力なら力学エネルギーが保存する」ことの正式な表現である。
ベクトル場の線積分はベクトル場と線素ベクトルの内積をとって積分していたが、外積をとって積分することもできる。
具体的には、
:<math>\boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} a_ydz-a_zdy \\ a_zdx-a_xdz \\ a_xdy-a_ydx \end{pmatrix}</math>
より
:<math>\int_C \boldsymbol{a}\times d\boldsymbol{l}=\begin{pmatrix} \int_C (a_ydz-a_zdy) \\ \int_C (a_zdx-a_xdz) \\ \int_C (a_xdy-a_ydx) \end{pmatrix}</math>
:<math>=\begin{pmatrix} \int_\alpha^\beta \left\{ a_y(\boldsymbol{r}(t))\frac{dz}{dt}-a_z(\boldsymbol{r}(t))\frac{dy}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_z(\boldsymbol{r}(t))\frac{dx}{dt}-a_x(\boldsymbol{r}(t))\frac{dz}{dt} \right\}dt \\ \int_\alpha^\beta \left\{ a_x(\boldsymbol{r}(t))\frac{dy}{dt}-a_y(\boldsymbol{r}(t))\frac{dx}{dt} \right\}dt \end{pmatrix}</math>
これは物理学的にはビオ・サヴァールの法則の記述に用いられている。
:真空中で経路<math>C</math>を正の向きに流れる強さ<math>I</math>の定常電流・<math>C</math>上にない点<math>\mathrm{P}</math>・<math>C</math>上の点<math>\mathrm{Q}</math>に対し、<math>C</math>全体で生じる磁束密度<math>\boldsymbol{B}</math>の<math>\mathrm{P}</math>での値は真空の透磁率<math>\mu_0</math>として
::<math>\boldsymbol{B}(\mathrm{P})=\frac{\mu_0 I}{4\pi}\int_C \frac{\overrightarrow{\mathrm{PQ}}\times d\boldsymbol{l}}{\|\overrightarrow{\mathrm{PQ}}\|^3}</math>
応用例は乏しいが、スカラー場の線素ベクトルに関する積分、ベクトル場の線素に関する積分も同様に定義される。
:<math>\int_C \varphi d\boldsymbol{l} = \int_\alpha^\beta \varphi(\boldsymbol{r}(t))\frac{d\boldsymbol{r}}{dt}dt</math>
:<math>\int_C \boldsymbol{a} dl = \int_\alpha^\beta \boldsymbol{a}(\boldsymbol{r}(t))\left\|\frac{d\boldsymbol{r}}{dt}\right\|dt</math>
これらはベクトル値である。
積分経路を流線上にとると、流線の定義から<math>d\boldsymbol{r}/\!\!/\boldsymbol{a}(\boldsymbol{r})</math>則ち一次従属なので、<math>d\boldsymbol{r}=k\boldsymbol{a}(\boldsymbol{r})</math>と書ける。
よって線積分の被積分関数は<math>\boldsymbol{a} \cdot d\boldsymbol{r} = k\|\boldsymbol{a}\|^2</math>となり、積分値が最大化される他、ベクトル場の沿流方向成分を抽出できる。実際に計算する際は、<math>\int_{\mathrm{streamline}} k\|\boldsymbol{a}\|^2</math>とは書かず、<math>\int_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>と書くのが望ましい(積分記号と積分微小要素はセットのため)。
流線が閉曲線である場合を考えると、<math>\oint_{\mathrm{streamline}} \boldsymbol{a} \cdot \frac{d\boldsymbol{r}}{dt}dt</math>は閉曲線の正の向きで正、負の向きで負となるので0にはならない。そのため、流線が閉曲線であるベクトル場はスカラーポテンシャルを持たない。
===面積分===
線積分は常積分に於ける積分経路を任意の正則な<math>C^1</math>級曲線に拡張したものであった。同様に、二重積分に於ける積分領域を'''向き付けされた'''任意の<math>C^1</math>級曲面に拡張することを考える。
曲線に沿った微小量が線素で与えられたように、曲面に沿った微小量は面素で与えられる。故に、直観的には「面素に関して積分」すれば良いことが分かる。
三次元空間の曲面をベクトル表示すると
:<math>\boldsymbol{r}(t, u)=\begin{pmatrix} x(t, u) \\ y(t, u) \\ z(t, u) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} t \\[-6pt] u \end{array}\right)} \in D</math>
であり、被積分関数はこの曲面上の点を入力とするスカラー場と考えられるので
:<math>\varphi=\varphi(\boldsymbol{r})</math>
面素は
:<math>dS=\sqrt{EG-F^2}dtdu=\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
総合すると、<math>S</math>に沿った積分というものは曲面のパラメータを用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\sqrt{\left\| \frac{\partial{\boldsymbol{r}}}{\partial{t}} \right\|^2\left\|\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\|^2 - \left( \frac{\partial{\boldsymbol{r}}}{\partial{t}}\cdot\frac{\partial{\boldsymbol{r}}}{\partial{u}} \right)^2 } dtdu</math>
と表示されることになる。
これをスカラー場<math>\varphi</math>の<math>S</math>に沿った'''面積分'''(曲面積分、surface integral)という。
今は三次元空間の場合を考えているので、外積を用いて
:<math>\iint_D \varphi(\boldsymbol{r}(t,u))\left\|\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}\right\| dtdu</math>
と表示しても良い。
スカラー場の面積分は
:<math>\iint_S \varphi dS</math>
のように略記される。
特に積分領域が閉曲面である場合は
:<math>\oiint_S \varphi dS</math>
のように書く。
1の面積分<math>\iint_S dS</math>は曲面積に等しい。
ベクトル場の線積分と同様にしてベクトル場の面積分
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
を考えたい。
線素ベクトルが「位置ベクトルの接線方向」で「ノルムが通常の線素と一致する」ように定義されたことを鑑みると、面素ベクトルは「位置ベクトルの法線方向」で「ノルムが通常の面素に一致する」ように定義するのが良いと考えられる。要するに、
:<math>d\boldsymbol{S}:=\frac{\partial{\boldsymbol{r}}}{\partial{t}}\times\frac{\partial{\boldsymbol{r}}}{\partial{u}}</math>
としてみる。
ここで単位法線ベクトルを<math>\boldsymbol{n}</math>と置くと面素ベクトルは<math>\boldsymbol{n}dS</math>と表され、
:<math>\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}=\iint_S (\boldsymbol{a}\cdot\boldsymbol{n})dS</math>
のようにスカラー場の面積分に帰着されることが判る。
これをベクトル場<math>\boldsymbol{a}</math>の<math>S</math>に沿った'''面積分'''という。
<math>\boldsymbol{a}\cdot\boldsymbol{n}</math>は<math>\boldsymbol{a}</math>から<math>S</math>の法線を横切る沿流成分を取り出していることになる。
このことから、ベクトル場の面積分を特に'''法線面積分'''(surface integral of the normal component)ということがある。
単位法線ベクトル<math>\boldsymbol{n}</math>は有向曲面に対して右手系を成し、各座標軸となす角度をそれぞれ<math>\alpha, \beta, \gamma</math>とすると通常の余弦関数で表されるベクトル<math>\begin{pmatrix} \cos \alpha \\ \cos \beta \\ \cos \gamma \end{pmatrix}</math>に等しい。これを'''方向余弦'''という。
方向余弦に関して、正射影を用いると以下が成り立つと判る。
:<math>\begin{cases} \cos\alpha dS = dydz \\ \cos\beta dS = dzdx \\ \cos\gamma dS = dxdy \end{cases}</math>
これを用いることで、面素ベクトルは
:<math>d\boldsymbol{S} = \boldsymbol{e}_x dydz + \boldsymbol{e}_y dzdx + \boldsymbol{e}_z dxdy = \begin{pmatrix} dydz \\ dzdx \\ dxdy \end{pmatrix}</math>
とも表される。
故に、法線面積分は形式的に
:<math>\iint_S(a_xdydz+a_ydzdx+a_zdxdy)</math>
とも書ける。
線積分と同様にベクトル場と面素ベクトルの外積、面素ベクトルのスカラー場倍、ベクトル場の面素倍をとって積分することも考えられるが、応用例に乏しい。
:<math>\iint_S \boldsymbol{a}\times d\boldsymbol{S}</math>
:<math>\iint_S \varphi d\boldsymbol{S}</math>
:<math>\iint_S \boldsymbol{a} dS</math>
これらはベクトル値である。
面素ベクトルは以下のように考えることもできる。
:平面<math>\Pi</math>上面積<math>A</math>の有界領域と<math>\Pi</math>の表向き法線<math>\boldsymbol{n}_\Pi</math>に対し、<math>\boldsymbol{A}=A\boldsymbol{n}_\Pi</math>を'''面積ベクトル'''と定義する。
:曲面<math>S</math>上の微小領域をとると曲面をその接平面で近似できるので平面上と同様にして面積ベクトルを定義できる。
:このとき、<math>A=dS</math>となるように定義した面積ベクトルが面素ベクトルである。
この考え方を用いると、
:<math>\oint_C d\boldsymbol{l}=\boldsymbol{0}</math>
及び
:<math>\oiint_S d\boldsymbol{S}=\boldsymbol{0}</math>
が示される。
面積分で定義される概念としては'''束'''<sup>※</sup>(flux)が有名である。
:流体の速度場<math>\boldsymbol{v}</math>に対し、<math>\iint_S \boldsymbol{v}\cdot d\boldsymbol{S}</math>は流束(単位時間当たりに<math>S</math>を通過する流体の流出量)である。
:磁束密度<math>\boldsymbol{B}</math>に対し、<math>\Phi_B=\iint_S \boldsymbol{B}\cdot d\boldsymbol{S}</math>は磁束である。
また、ガウスの法則も面積分で示される。
:ガウス面<math>S</math>が囲む電荷の総量を<math>q_\mathrm{inc}</math>とすると電束密度<math>\boldsymbol{D}</math>に対して
::<math>\oiint_S \boldsymbol{D}\cdot d\boldsymbol{S}=q_\mathrm{inc}</math>
<small>※数学界・物理界で「束」と呼ばれる対象は複数存在する。和訳されるときに「束」が充当されたものはここで扱う「flux」の他に「bundle(ファイバー束など)」「lattice([[束論]]の束)」「pencil(円束など)」「packet(波束など)」がある。</small>
<math>S</math>が表向きにパラメトライズされたとき、裏向きにパラメトライズされた曲面を<math>-S</math>と表した。
同じ向きを向く2つの曲面<math>S_1</math>と<math>S_2</math>の境界が一致するとき、これを一つの曲面と見做して曲面の和
:<math>S_1+S_2</math>
が定義される。
これを'''区分的に定義された曲面'''という。
<math>S</math>が'''区分的に滑らか'''であるとは、<math>S</math>が有限個の滑らかな曲面の和であることである。
これらを踏まえると、面積分には以下の性質が成り立つ。
#スカラー場
#:<math>\iint_S (k\varphi+l\psi) dS=k\iint_S \varphi dS + l \iint_S \psi dS</math>
#:<math>\iint_{-S}\varphi dS = \iint_S \varphi dS</math>
#:<math>\iint_{S_1+S_2}\varphi dS = \iint_{S_1}\varphi dS + \iint_{S_2}\varphi dS</math>
#ベクトル場
#:<math>\iint_S (k\boldsymbol{a}+l\boldsymbol{b})\cdot d\boldsymbol{S}=k\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}+l\iint_S \boldsymbol{b}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{-S}\boldsymbol{a}\cdot d\boldsymbol{S} = -\iint_S \boldsymbol{a}\cdot d\boldsymbol{S}</math>
#:<math>\iint_{S_1+S_2}\boldsymbol{a}\cdot d\boldsymbol{S} = \iint_{S_1}\boldsymbol{a}\cdot d\boldsymbol{S} + \iint_{S_2}\boldsymbol{a}\cdot d\boldsymbol{S}</math>
1番目の性質は線型性である。2番目の性質から、スカラー場の面積分に関しては任意の再パラメトライズ、ベクトル場の面積分に関しては向き付けを保つ再パラメトライズに対して面積分の値が保存されることが判る。
等位面に対する面積分を考える。曲面<math>S</math>がスカラー場<math>\omega</math>の等位面であるとき、その単位法線ベクトルは勾配を用いて
:<math>\boldsymbol{n}=\pm\frac{\nabla\omega}{\|\nabla\omega\|}</math>
と表される。右手系で考えるので正符号を採る。
等位面の方程式<math>\omega(x,y,z)=c</math>に対して陰関数定理が成り立つとすると陰関数<math>z=\psi(x,y)</math>を用いて<math>S:\boldsymbol{r}(x,y)=\begin{pmatrix} x \\ y \\ \psi(x,y) \end{pmatrix}\quad {\scriptstyle\left(\begin{array}{c} x \\[-6pt] y \end{array}\right)} \in D</math>というモンジュ表示に落ちる。
よって
:<math>dS=\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
と
:<math>\boldsymbol{n}=\frac{\nabla\omega}{\|\nabla\omega\|}</math>
を用いて
:<math>\int_S \varphi dS = \int_D \varphi(x,y,\psi(x,y))\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
:<math>\int_S \boldsymbol{a}\cdot d\boldsymbol{S} = \int_D \boldsymbol{a}(x,y,\psi(x,y))\cdot\frac{\nabla\omega(x,y,\psi(x,y))}{\|\nabla\omega(x,y,\psi(x,y))\|}\sqrt{1+\left(\frac{\partial{\psi}}{\partial{x}}\right)^2+\left(\frac{\partial{\psi}}{\partial{y}}\right)^2}dxdy</math>
を得る。
===体積分===
三次元空間の中では曲がった三次元空間を考えることはできない。そのため、以下の議論は平坦な三次元空間での話になる。
曲線長の微小量であった線素・曲面積の微小量であった面素と同様にして立体積の微小量について考えてみる。
立体<math>V</math>を微小立体に分割した体積を<math>\Delta V_i</math>としたとき、線積分・面積分が正式には区分求積法で定義されたようにリーマン和の極限
:<math>\lim_{\Delta V_i\to0}\sum_i \varphi(x_i, y_i, z_i)\Delta V_i</math>
で与えられる積分を考えたい。
これは多変数解析で行った議論と同様にして三変数関数の三重極限へと帰着されるが、三重極限は飛ばす順番を入れ替えられるとは限らないためこの極限値を求めることは困難である。
そこで、以下のように考える。
微小立体はどのような分割の仕方であっても直方体で近似できる(曲面上微小領域を平面上平行四辺形で近似したことからの類推)。このとき、微小体積<math>dV</math>は各辺の長さが<math>dx, dy, dz</math>であると考えることができる。故に、直方体の体積公式を用いて
:<math>dV=dxdydz</math>
これを'''体素'''(体積素・体積要素)という。
故に、求める積分は
:<math>\lim_{\Delta V_i\to0}\sum_i \varphi(x_i, y_i, z_i)\Delta V_i=\iiint_V \varphi(x,y,z) dxdydz</math>
という三重積分に帰着される。
これをスカラー場の<math>V</math>に沿った'''体積分'''(volume integral)という。
スカラー場の体積分は
:<math>\iiint_V \varphi dV</math>
のように略記される。
特に、積分領域が閉集合('''閉立体''')である場合は
:<math>\oiiint_V \varphi dV</math>
のように書く。
1の体積分<math>\iiint_V dV</math>は立体積に等しい。
<math>V</math>のベクトル表示が<math>\boldsymbol{r}(s,t,u)=\begin{pmatrix} x(s,t,u) \\ y(s,t,u) \\ z(s,t,u) \end{pmatrix} \quad {\scriptstyle\left(\begin{array}{c} s \\[-6pt] t \\[-6pt] u\end{array}\right)} \in D</math>である場合は、多変数解析の議論により
:<math>\iiint_V \varphi dV = \iiint_D \varphi(\boldsymbol{r}(s,t,u)) \left|\det \frac{\partial{(x,y,z)}}{\partial{(s,t,u)}}\right| dsdtdu</math>
であると容易に判る。
立体に対しては曲線に於ける接線、曲面に於ける法線のような「ベクトル表示から求められる、積分領域の向きを指定するための方向」が一意には存在しない。そのため、体素ベクトルというものは考えない。
故に、ベクトル場の体積分は
:<math>\iiint_V \boldsymbol{a}dV</math>
の一種類のみである。
体積分を用いて表される概念としては、電荷が有名である。
:電荷密度<math>\rho(x,y,z)</math>に対し、領域<math>V</math>内にある電荷の総量は
::<math>q=\iiint_V \rho(x,y,z)dV</math>
また、電荷分布に於ける電気双極子モーメントは
::<math>\boldsymbol{p}=\iiint_V \rho\boldsymbol{r} dV</math>
というベクトル場の体積分で定義される。
更に、以下のような概念も定義されている。
:物体の質量<math>m</math>、密度<math>\rho</math>とすると質量中心ベクトルは
::<math>\boldsymbol{r}_G=\frac{1}{m}\iiint_V \rho\boldsymbol{r}dV</math>
:電磁場の真空での運動量は
::<math>\boldsymbol{P}=\frac{1}{c^2}\iiint_V \boldsymbol{E}\times\boldsymbol{H}dV</math>
2つの立体<math>V_1</math>と<math>V_2</math>の境界が一致するとき、これを一つの立体と見做して立体の和
:<math>V_1+V_2</math>
が定義される。
これを'''区分的に定義された立体'''という。
<math>V</math>が'''区分的に滑らか'''であるとは、<math>V</math>が有限個の滑らかな立体の和であることである。
これらを踏まえると、体積分には以下の性質が成り立つ。
#スカラー場
#:<math>\iiint_V (k\varphi+l\psi) dV=k\iiint_V \varphi dV + l \iiint_S \psi dV</math>
#:<math>\iiint_{V_1+V_2}\varphi dV = \iiint_{V_1}\varphi dV + \iiint_{V_2}\varphi dV</math>
#ベクトル場
#:<math>\iint_V (k\boldsymbol{a}+l\boldsymbol{b})dV=k\iiint_V \boldsymbol{a}dV+l\iiint_V \boldsymbol{b}dV</math>
#:<math>\iiint_{V_1+V_2}\boldsymbol{a}dV = \iiint_{V_1}\boldsymbol{a} dV + \iiint_{V_2}\boldsymbol{a}dV</math>
===積分定理===
==発展事項==
{{節stub}}
{{Advanced|多様体論}}
{{Advanced|微分幾何学}}
{{Advanced|積分幾何学}}
ここではベクトル解析の発展編及び微分幾何学の基礎編として、「ユークリッド空間の部分多様体上の微分幾何学」を扱う。言うなれば「<math>n</math>次元版のベクトル解析学」である。
===体積分再考===
体積分は先程「<math>\mathbb{R}^3</math>上の閉立体<math>V</math>」上で考えたが、実はここには線積分・面積分との大きな非対称性がある。
線積分は「曲線」、面積分は「曲面」を積分領域としたが、先程定義した体積分の積分領域は「平坦な立体」なのである(二次元で例えば楕円領域<math>\frac{x^2}{a^2}+\frac{y^2}{b^2}\leq1</math>は境界こそ"曲線"だが空間そのものは<math>\mathbb{R}^2</math>という"平面"であることと同じ)。
1次元の曲がった空間である曲線<math>M^1:\boldsymbol{r}=\boldsymbol{r}(s)</math>が<math>\mathbb{R}^2</math>内、2次元の曲がった空間である曲面<math>M^2:\boldsymbol{r}=\boldsymbol{r}(s, t)</math>が<math>\mathbb{R}^3</math>内に存在するように、3次元の曲がった空間である曲立体<math>M^3:\boldsymbol{r}=\boldsymbol{r}(s, t, u)</math>は<math>\mathbb{R}^4</math>内に存在すると考えるのが自然である。ここで一般に<math>M^n\subset\mathbb{R}^{n+1}</math>が成り立つと予想され、この関係を「<math>M^n</math>の<math>\mathbb{R}^{n+1}</math>への'''埋め込み'''」と呼ぶことにする。
線積分を<math>C=M^1</math>、面積分を<math>S=M^2</math>で定義したように、体積分を<math>M^3</math>で定義することを考える。
媒介変数空間<math>\begin{pmatrix} s \\ t \\ u \end{pmatrix} \in V \subset\mathbb{R^3}</math>上の微小変化を考えると全微分を用いて
:<math>d\boldsymbol{r}=\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds+\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt+\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>
よって<math>V</math>上の微小立方体<math>dsdtdu</math>は3ベクトル<math>\frac{\partial{\boldsymbol{r}}}{\partial{s}}ds,\quad\frac{\partial{\boldsymbol{r}}}{\partial{t}}dt,\quad\frac{\partial{\boldsymbol{r}}}{\partial{u}}du</math>の張る微小平行六面体へ移される。
体素はこの微小平行六面体の体積と考えられるが、<math>\boldsymbol{r}\in\mathbb{R}^4</math>より当然この3ベクトルは4項ベクトルなので、'''外積を含んでいるスカラー三重積は使えない'''。
全微分を一次変換表記すると
:<math>d\boldsymbol{r}=\begin{pmatrix} \frac{\partial{\boldsymbol{r}}}{\partial{s}} & \frac{\partial{\boldsymbol{r}}}{\partial{t}} & \frac{\partial{\boldsymbol{r}}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\begin{pmatrix} \frac{\partial{x}}{\partial{s}} & \frac{\partial{x}}{\partial{t}} & \frac{\partial{x}}{\partial{u}} \\ \frac{\partial{y}}{\partial{s}} & \frac{\partial{y}}{\partial{t}} & \frac{\partial{y}}{\partial{u}} \\ \frac{\partial{z}}{\partial{s}} & \frac{\partial{z}}{\partial{t}} & \frac{\partial{z}}{\partial{u}} \\ \frac{\partial{w}}{\partial{s}} & \frac{\partial{w}}{\partial{t}} & \frac{\partial{w}}{\partial{u}} \end{pmatrix} \begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
:<math>=\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\begin{pmatrix} ds \\ dt \\ du \end{pmatrix}</math>
ここでヤコビ行列は<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\in\mathbb{R}^{4\times3}</math>であって'''正方行列でないので行列式も求まらない'''。
そこで、[[線型代数学続論/種々の行列#随伴行列|グラム行列]]を利用することを考える。
'''グラム行列は必ず半正定値行列'''なので行列式は非負であり、平方根をとれる。
そのため、<math>\mathbf{G}:=\left(\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}\right)^*\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>として<math>\sqrt{\det\mathbf{G}}</math>を体積拡大率とする。
これは正方行列ならヤコビアンの絶対値に一致する。
{{NavTop|title=補足:体積拡大率に一致する証明}}
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}</math>の列ベクトルにグラム=シュミットの直交化法を適用すると[[線型代数学続論/行列分解|QR分解]]によって
:<math>\frac{\partial{(x, y, z, w)}}{\partial{(s, t, u)}}=\mathbf{QR}\quad (\mathbf{Q}\in\mathbb{R}^{4\times3}, \mathbf{R}\in\mathbb{R}^{3\times3})</math>
よって
:<math>\mathbf{G}=(\mathbf{QR})^*\mathbf{QR}</math>
:<math>=\mathbf{R}^*\mathbf{Q}^*\mathbf{Q}\mathbf{R}</math>
:<math>=\mathbf{R}^*\mathbf{E}_3\mathbf{R}</math>(<math>\because\mathbf{Q}</math>は列ユニタリ行列)
:<math>=\mathbf{R}^*\mathbf{R}</math>
:<math>\therefore \sqrt{\det\mathbf{G}}=\sqrt{\det\left( \mathbf{R}^*\mathbf{R} \right)}=\sqrt{\left(\det\mathbf{R}\right)^2}=|\det\mathbf{R}|</math>
<math>\mathbf{Q}</math>は列ユニタリ行列なのでその一次変換は等長変換であり、全微分による拡大率は<math>\mathbf{R}</math>による拡大率と一致する。<br/>
則ち、<math>\sqrt{\det\mathbf{G}}</math>を拡大率としてとれる。//
{{NavBottom}}
よって体積分は
:<math>\iiint_{M^3} f(\boldsymbol{r})dM^3 = \iiint_{V} f(\boldsymbol{r}(s, t, u))\sqrt{\det\mathbf{G}}\,dsdtdu</math>
ここから、適切な媒介変数表示が存在するならば<math>M^n</math>上での体積分の計算に<math>\mathbb{R}^{n+1}\setminus M^n</math>の情報は入ってこず、<math>M^n</math>の情報のみで計算されると予想される。
実際、<math>M^n</math>に適切な媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})\quad(\boldsymbol{p}\in\mathbb{R}^n)</math>が存在するとき、全微分による一次変換の拡大率は同様にグラム行列式の平方根で与えられるので体積素は<math>dM^n = \sqrt{\det\mathbf{G}} \prod_{k=1}^{n}d\boldsymbol{p}_k</math>と書け、これは正しい。
なお、二次元の場合を考えると<math>\mathbf{G}=\mathbf{K}</math>より<math>dM^2=dS</math>であり、面素に一致する。一次元の場合を考えると<math>\mathbf{G}=\|d\boldsymbol{r}\|^2</math>より<math>dM^1=dl</math>であり、線素に一致する。
実は、体素だけでなく一般に角度や長さといった幾何学的な量は埋め込み先である<math>\mathbb{R}^{n+1}</math>の情報を全く必要とせず、<math>M^n</math>の情報だけで構成できることが知られている。このことは微分幾何学のうち[[w:リーマン幾何学|リーマン幾何学]]と呼ばれる分野で詳しく扱われる。
ここまで<math>M^n</math>を適切な媒介変数<math>\boldsymbol{p}\in\mathbb{R}^n</math>で表すことを強調してきたが、媒介変数表示を考えるということは<math>M^n</math>から媒介変数空間<math>U\subset\mathbb{R}^n</math>への射影<math>\pi:M^n\to U</math>を考えるということである。
ここで、この<math>\pi</math>が全単射ならば逆向きの射影<math>\pi^{-1}:U\to M^n</math>が存在してそれが媒介変数表示<math>\boldsymbol{r}=\boldsymbol{r}(\boldsymbol{p})</math>となるわけであるが、これは以下のようにも捉えられる。
:<math>\pi</math>によって射影した平坦な空間で座標を設定すると、'''適切な逆変換<sup>※</sup>によって曲がった空間<math>M^n</math>上に(局所)座標系を与えることができる'''。
つまり、体積分を媒介変数空間に置換積分するということは、逆に体積分の元の表示が「<math>M^n</math>上の局所座標系に於ける積分」であることを示している。
※この適切な逆変換が存在する条件は'''陰関数定理そのもの'''である。
ここで、適切な媒介変数表示が存在するよう<math>M^n</math>に制限を課したものが、以下で扱う'''多様体'''である。
===多様体===
===微分形式===
[[線型代数学続論/外積代数]]も参照。
===リーマン計量===
===テンソル解析===
[[線型代数学続論/テンソル代数]]も参照。
===複素ベクトル解析===
[[複素解析学]]も参照。
{{DEFAULTSORT:へくとるかいせき}}
[[Category:解析学]]
[[Category:微分積分学]]
[[Category:ベクトル解析|かいせきかくきそ]]
5tlwogpl51mmqmhw01bt7suvaemui3d
ガリア戦記 第7巻/注解
0
46580
304848
304270
2026-10-18T09:35:07Z
Linguae
449
/* 各節注解 */ 進捗
304848
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;background-color:#fff0ff;">C · IVLII · CAESARIS · COMMENTARIORVM · BELLI · GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;background-color:#fff0ff;">LIBER · SEPTIMVS</div>
<span style="font-size:13pt;">『<span style="background-color:#ffc;">[[ガリア戦記 第7巻]]</span>』の単語や構文を詳しく読み解く <span style="background-color:#fc8;font-size:15pt;">'''[[ガリア戦記/注解編|注解編]]'''</span> の目次。</span>
{| id="toc" style="border:0px #ddf; align:left;clear:all;" align="center" cellpadding="5"
|-
! style="background:#ccf; text-align:center;" colspan="10"| ガリア戦記 第7巻 注解
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/1節|1節]]
|[[/2節|2節]]
|[[/3節|3節]]
|[[/4節|4節]]
|[[/5節|5節]]
|[[/6節|6節]]
|[[/7節|7節]]
|[[/8節|8節]]
|[[/9節|9節]]
|[[/10節|10節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/11節|11節]]
|[[/12節|12節]]
|[[/13節|13節]]
|[[/14節|14節]]
|[[/15節|15節]]
|[[/16節|16節]]
|[[/17節|17節]]
|[[/18節|18節]]
|[[/19節|19節]]
|[[/20節|20節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/21節|21節]]
|[[/22節|22節]]
|[[/23節|23節]]
|[[/24節|24節]]
|[[/25節|25節]]
|[[/26節|26節]]
|[[/27節|27節]]
|[[/28節|28節]]
|[[/29節|29節]]
|[[/30節|30節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/31節|31節]]
|[[/32節|32節]]
|[[/33節|33節]]
|[[/34節|34節]]
|[[/35節|35節]]
|[[/36節|36節]]
|[[/37節|37節]]
|[[/38節|38節]]
|[[/39節|39節]]
|[[/40節|40節]]<!--
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/41節|41節]]
|[[/42節|42節]]
|[[/43節|43節]]
|[[/44節|44節]]
|[[/45節|45節]]
|[[/46節|46節]]
|[[/47節|47節]]
|[[/48節|48節]]
|[[/49節|49節]]
|[[/50節|50節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/51節|51節]]
|[[/52節|52節]]
|[[/53節|53節]]
|[[/54節|54節]]
|[[/55節|55節]]
|[[/56節|56節]]
|[[/57節|57節]]
|[[/58節|58節]]
|[[/59節|59節]]
|[[/60節|60節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/61節|61節]]
|[[/62節|62節]]
|[[/63節|63節]]
|[[/64節|64節]]
|[[/65節|65節]]
|[[/66節|66節]]
|[[/67節|67節]]
|[[/68節|68節]]
|[[/69節|69節]]
|[[/70節|70節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/71節|71節]]
|[[/72節|72節]]
|[[/73節|73節]]
|[[/74節|74節]]
|[[/75節|75節]]
|[[/76節|76節]]
|[[/77節|77節]]
|[[/78節|78節]]
|[[/79節|79節]]
|[[/80節|80節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/81節|81節]]
|[[/82節|82節]]
|[[/83節|83節]]
|[[/84節|84節]]
|[[/85節|85節]]
|[[/86節|86節]]
|[[/87節|87節]]
|[[/88節|88節]]
|[[/89節|89節]]
|[[/90節|90節]]
| colspan="6" |
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/1節|1節]]
|[[/2節|2節]]
|[[/3節|3節]]
|[[/4節|4節]]
|[[/5節|5節]]
|[[/6節|6節]]
|[[/7節|7節]]
|[[/8節|8節]]
|[[/9節|9節]]
|[[/0節|0節]]
-->
|-
| style="background:#f5fefe; text-align:left; font-size: 0.8em;" colspan="10"|
[[ガリア戦記 第1巻/注解|'''注解''' 第1巻]] |
[[ガリア戦記 第2巻/注解|第2巻]] |
[[ガリア戦記 第3巻/注解|第3巻]] |
[[ガリア戦記 第4巻/注解|第4巻]] |
[[ガリア戦記 第5巻/注解|第5巻]] |
[[ガリア戦記 第6巻/注解|第6巻]] |
[[ガリア戦記 第7巻/注解|第7巻]] |<!--
[[ガリア戦記 第8巻/注解|第8巻]]-->
|}
<br style="clear:both;" />
__notoc__
== 各節注解 ==
[[画像:Gaule_-52.png|thumb|right|150px|ガリア戦記 第7巻の情勢図(BC52年)。<br>黄色の領域がローマ領。桃色が同盟部族領。]]
===カルヌーテース族の蜂起===
*<span style="background-color:#fff;">[[/1節]] {{進捗|25%|2025-11-03}}</span> (175語)
*<span style="background-color:#fff;">[[/2節]] {{進捗|25%|2025-11-05}}</span> (71語) 短い節
*<span style="background-color:#fff;">[[/3節]] {{進捗|25%|2025-11-17}}</span> (93語) 短い節
===ウェルキンゲトリークスとガッリア同盟軍の蜂起===
*<span style="background-color:#fff;">[[/4節]] {{進捗|25%|2025-12-05}}</span> (202語) 長い節
*<span style="background-color:#fff;">[[/5節]] {{進捗|25%|2025-12-14}}</span> (128語)
*<span style="background-color:#fff;">[[/6節]] {{進捗|25%|2025-12-15}}</span> (67語) 短い節
*<span style="background-color:#fff;">[[/7節]] {{進捗|25%|2025-12-16}}</span> (78語) 短い節
*<span style="background-color:#fff;">[[/8節]] {{進捗|25%|2026-01-03}}</span> (126語)
*<span style="background-color:#fff;">[[/9節]] {{進捗|25%|2026-01-15}}</span> (143語)
*<span style="background-color:#fff;">[[/10節]] {{進捗|25%|2026-01-16}}</span> (96語) 短い節
*<span style="background-color:#fff;">[[/11節]] {{進捗|25%|2026-02-02}}</span> (181語)
*<span style="background-color:#fff;">[[/12節]] {{進捗|25%|2026-02-25}}</span> (118語)
*<span style="background-color:#fff;">[[/13節]] {{進捗|25%|2026-02-25}}</span> (88語) 短い節
===アウァーリクム攻略戦===
*<span style="background-color:#fff;">[[/14節]] {{進捗|25%|2026-03-08}}</span> (177語)
*<span style="background-color:#fff;">[[/15節]] {{進捗|25%|2026-03-08}}</span> (114語)
*<span style="background-color:#fff;">[[/16節]] {{進捗|25%|2026-03-26}}</span> (64語) 短い節
*<span style="background-color:#fff;">[[/17節]] {{進捗|25%|2026-03-29}}</span> (183語)
*<span style="background-color:#fff;">[[/18節]] {{進捗|25%|2026-04-21}}</span> (81語) 短い節
*<span style="background-color:#fff;">[[/19節]] {{進捗|25%|2026-04-21}}</span> (145-147語)
*<span style="background-color:#fff;">[[/20節]] {{進捗|25%|2026-05-05}}</span> (307-310語) かなり長い節
*<span style="background-color:#fff;">[[/21節]] {{進捗|25%|2026-05-17}}</span> (61語) 短い節
*<span style="background-color:#fff;">[[/22節]] {{進捗|25%|2026-06-08}}</span> (115語)
*<span style="background-color:#fff;">[[/23節]] {{進捗|25%|2026-06-21}}</span> (129語)
*<span style="background-color:#fff;">[[/24節]] {{進捗|25%|2026-06-21}}</span> (147語)
*<span style="background-color:#fff;">[[/25節]] {{進捗|25%|2026-07-08}}</span> (121語)
*<span style="background-color:#fff;">[[/26節]] {{進捗|25%|2026-07-19}}</span> (119語)
*<span style="background-color:#fff;">[[/27節]] {{進捗|25%|2026-08-01}}</span> (79語) 短い節
*<span style="background-color:#fff;">[[/28節]] {{進捗|25%|2026-08-12}}</span> (162語)
*<span style="background-color:#fff;">[[/29節]] {{進捗|25%|2026-08-12}}</span> (122語)
*<span style="background-color:#fff;">[[/30節]] {{進捗|25%|2026-08-29}}</span> (90語) 短い節
*<span style="background-color:#fff;">[[/31節]] {{進捗|25%|2026-08-29}}</span> (107語)
===ゲルゴウィア攻略戦、ハエドゥイー族の離反===
*<span style="background-color:#fff;">[[/32節]] {{進捗|25%|2026-09-23}}</span> (150語)
*<span style="background-color:#fff;">[[/33節]] {{進捗|25%|2026-10-04}}</span> (150語)
*<span style="background-color:#fff;">[[/34節]] {{進捗|00%|2026-10-18}}</span> (90語) 短い節
*<span style="background-color:#fff;">[[/35節]] {{進捗|00%|2026-10-18}}</span>
== 関連項目 ==
*<span style="background-color:#ffd;">[[ガリア戦記]]</span><!--【2006年4月23日起稿】-->
**<span style="background-color:#ffd;">[[ガリア戦記/注解編]]</span><!--(2020-03-27)-->
***<span style="background-color:#ffd;">[[ガリア戦記/注解編/写本と校訂版]] {{進捗|00%|2020-04-17}}</span><!--(2020-04-17)-->
***<span style="background-color:#ffd;">[[ガリア戦記/注解編/表記のゆれ]] {{進捗|00%|2026-03-29}}</span><!--(2026-03-29)-->
**<span style="background-color:#ffd;">[[ガリア戦記/用例集]] {{進捗|00%|2020-03-29}}</span><!--(2020-03-29)-->
**[[ガリア戦記/内容目次]]:巻・章・節の内容を記した目次 {{進捗|75%|2011-04-02}}
**[[ガリア戦記/参照画像一覧]]:本文で参照した画像一覧 {{進捗|75%|2011-04-16}}
*<span style="background-color:#ffd;font-size:15px;">[[古典ラテン語]] {{進捗|00%|2018-04-18}} </span>
<br><div style="font-size:30pt;">ĀĒĪŌŪ _āēīōū_āēīōū_ Ă Ĕ Ĭ Ŏ Ŭ ă ĕ ĭ ŏ ŭ </div>
<div style="font-size:13pt;">
<math>\overline{\mbox{VIIII}} </math>
</div><!-- [[w:Help:数式の表示]] -->
<!--▲三点-->⋯ <!--◀左括弧-->‘ <!--▶右括弧-->’
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;"></span>
<!--
*<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">† : </span>校訂者が、テクストが壊れていると判断した部分をこの記号で囲んでいる。
-->
<!--
<ruby><rb>●漢字●</rb><rp>(</rp><rt>●ルビ●</rt><rp>)</rp></ruby>
-->
<!--
*<span style="background-color:#ffd;">[[/注解/1節]] {{進捗|00%|2026-10-04}}</span>
-->
<!--
: <!-- [[wikt:en:| -->
-->
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
<!--❶--><!--❷--><!--❸--><!--❹--><!--❺--><!--❻--><!--❼--><!--❽--><!--❾--><!--❿--><!--⓫--><!--⓬--><!----><!----><!----><!---->
<!--<sup>()</sup> -->
<!--❶❷❸❹❺❻❼❽❾❿⓫⓬--><!---->
== 関連記事 ==
{{Wikisource|la:Commentarii de bello Gallico/Liber VII|ガリア戦記 第7巻(ラテン語)}}
*ウィキソース
**<span style="font-family:Times New Roman;">[[s:la:Commentarii de bello Gallico/Liber VII]] (第7巻 ラテン語)</span>
**<span style="font-family:Times New Roman;background-color:#ffffcc;">[https://scaife.perseus.org/reader/urn:cts:latinLit:phi0448.phi001.perseus-lat2:7 Scaife Viewer | De Bello Gallico] (第7巻 ラテン語)</span>
**<span style="font-family:Times New Roman;background-color:#ffffcc;">[https://scaife.perseus.org/reader/urn:cts:latinLit:phi0448.phi001.perseus-eng2:7/ Scaife Viewer | Gallic War] (第7巻 英訳)</span>
**<span style="font-family:Times New Roman;">[[s:fr:La Guerre des Gaules/Livre VII]] (第7巻 仏訳)</span>
----
{{Commons|Category:Battles of Caesar's Gallic Wars|Battles of Caesar's Gallic Warsのカテゴリ}}
{{Commons|Category:Murus gallicus|Category:Murus gallicus ガリア壁のカテゴリ}}
*<span style="font-family:Times New Roman;font-size:13pt;">[[wikt:fr:Catégorie:Mots en latin issus d’un mot en gaulois]]</span>
----
*[[wikt:en:Vercingetorix#Latin|Vercingetorīx]] ウェルキンゲトリークス
*[[wikt:en:Arverni#Latin|Arvernī]] アルウェルニー族
:
*[[wikt:en:agri_cultura#Latin|agrī cultūra]]
*[[wikt:en:bellum#Latin|bellum]]
*[[wikt:en:hiberna#Noun|hīberna]]
:
===地名===
*[[wikt:en:Gallia#Latin|Gallia]]
**Gallia [[wikt:en:cisalpinus#Latin|cisalpīna]] ガッリア・キサルピーナ
**[[wikt:en:Gallia_transalpina#Latin|Gallia trānsalpīna]] ガッリア・トラーンサルピーナ < [[wikt:en:transalpinus#Latin|trānsalpīna]]
**Gallia [[wikt:en:comatus#Latin|comāta]]
*[[wikt:en:Germania#Latin|Germānia]]
:
*[[wikt:en:Aquitania#Latin|Aquītānia]] ア
*[[wikt:en:Avaricum#Latin|Avāricum]] アウ
*[[wikt:en:Gergovia#Latin|Gergovia]]
*[[wikt:en:Arduenna#Latin|Arduenna]]
*[[wikt:en:Genabum#Latin|Genabum]]
*[[wikt:en:Hercynia|Hercynia]]
*[[wikt:en:Narbo#Latin|Narbō]] ナルボー
*[[wikt:en:Noviodunum#Latin|Noviodūnum]] ノウィオ
*[[wikt:en:Vellaunodunum#Latin|Vellaunodūnum]] ウェッラ
===部族名===
*[[wikt:en:Galli#Latin|Gallī]]
*[[wikt:en:Aedui#Latin|(H)aeduī]] ➡ [[wikt:en:Haedui#Latin|Haeduī]]
*[[wikt:en:Arverni#Latin|Arvernī]] アルウェルニー族
*[[wikt:en:Bituriges#Latin|Biturigēs]] ビトゥリゲース族
*[[wikt:en:Boii#Latin|Boiī]] ボ
*[[wikt:en:Cadurci#Latin|Cadurcī]] カドゥルキー族 > [[wikt:en:Cadurcus#Latin|Cadurcus]]
**[[wikt:en:Lucterius#Latin|Lucterius]] ルクテリウス
*[[wikt:en:Carnutes#Latin|Carnūtēs]] カルヌーテース族
*[[wikt:en:Cherusci#Latin|Chēruscī]]
*[[wikt:en:Condrusi#Latin|Condrūsī]]
*
*[[wikt:en:Eburones#Latin|Eburōnēs]] (エブローネース)
*[[wikt:en:Gabali#Latin|Gabalī]] ガバリー族
*[[wikt:en:Germani#Latin|Germānī]]
*[[wikt:en:Graecus#Noun|Graecī]]
*[[wikt:en:Haedui#Latin|Haeduī]] ハエドゥイー族
*[[wikt:en:Helvetii#Latin|Helvētiī]] ヘルウェーティイー族
*[[wikt:en:Helvii#Latin|Helviī]] ヘルウィイー族
*[[wikt:en:Menapii#Latin|Menapiī]]
*[[wikt:en:Nervii#Latin|Nerviī]]
*[[wikt:en:Nitiobriges#Latin|Nitiobrigēs]] ニティオブリゲース族
*[[wikt:en:Rauraci#Latin|Rauracī]]
*[[wikt:en:Remi#Latin|Rēmī]] レーミー族
*[[wikt:en:Romani#Latin|Rōmānī]]
*[[wikt:en:Ruteni#Latin|Rutēnī]] ルテーニー族
*[[wikt:en:Segni#Latin|Segnī]] (セグニー)
*[[wikt:en:Senones#Latin|Senonēs]] セノネース族
*[[wikt:en:Sequani#Latin|Sēquanī]] (セークァニー)
*[[wikt:en:Suebi#Latin|Suēbī]]
*[[wikt:en:Sugambri#Latin|Sugambrī]]
*[[wikt:en:Tectosages#Latin|Tectosagēs]] (テクトサゲース)
*[[wikt:en:Tencteri#Latin|Tenctērī]]
*[[wikt:en:Tolosates#Latin|Tolōsātēs]] トローサーテース族
*[[wikt:en:Treveri#Latin|Trēverī]]
*[[wikt:en:Ubii#Latin|Ubiī]]
*[[wikt:en:Usipetes#Latin|Usipetēs]]
*[[wikt:en:Volcae#Latin|Volcae]] ウォルカエ族
**[[wikt:en:Arecomici#Latin|Arecomicī]] ア
:[[wikt:fr:Nemetes]] (ネメテース)
===登場人物===
*[[wikt:en:Caesar#Latin|Caesar]]
:
[[w:fr:Catégorie:Personnalité de la guerre des Gaules]]
:
*[[wikt:en:Commius|Commius]]
**[[w:コンミウス]]
**[[w:la:Commius]]
**[[w:en:Commius]]
**[[w:fr:Commios]]
*[[wikt:en:Cicero#Latin|Cicerō]]
**[[w:クィントゥス・トゥッリウス・キケロ|クイーントゥス・トゥッリウス・キケロー]]
**[[w:la:Quintus Tullius Cicero]]
**[[w:en:Quintus Tullius Cicero]]
**[[w:fr:Quintus Tullius Cicero]]
*[[wikt:en:Crassus#Latin|Crassus]]
*[[wikt:en:Labienus#Latin|Labiēnus]]
**[[w:ティトゥス・ラビエヌス|ティトゥス・ラビエーヌス]]
<!--
*?
**Crassus
***[[w:プブリウス・リキニウス・クラッスス]]
***[[w:la:Publius Licinius Crassus]]
***[[w:en:Publius Licinius Crassus (son of triumvir)]]
***[[w:fr:Publius Crassus]]
**Labienus (副官)
***[[w:la:Titus Labienus]]
***[[w:en:Titus Labienus]]
***[[w:fr:Titus Labienus]]
**Brutus
***[[w:デキムス・ユニウス・ブルトゥス・アルビヌス]]
***[[w:la:Decimus Iunius Brutus Albinus]]
***[[w:en:Decimus Junius Brutus Albinus]]
***[[w:fr:Decimus Junius Brutus Albinus]]
-->
<br>
===第7巻の関連記事===
<div style="font-family:Times New Roman;font-size:13pt;">
</span>
<span style="font-family:Times New Roman;font-size:13pt;"></span>
== 外部リンク ==
*[[ガリア戦記/注解編#外部リンク]] を参照。
*[[ガリア戦記/注解編/写本と校訂版#オンライン注釈書等]] 等を参照。
===オンライン注釈書===
<div style="background-color:#eeeeee;">
====Caesar's Gallic war : notes by F. W. Kelsey (1897)====
:C. Iuli Caesaris De bello gallico libri VII :
::Caesar's Gallic war : with an introduction, notes, and vocabulary
::: by [[w:en:Francis Kelsey|Francis Willey Kelsey (1858-1927)]], Fifteenth Edition (1897)
:::: (HathiTrust Digital Library [[w:ハーティトラスト|ハーティトラスト・デジタルライブラリ]]で電子化)
:: [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=19 Contents] (#19)
;:─TEXT─
:: '''Book 7''' : [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=243 Commentarius Septimus] (#243)
;:─NOTES─
:: '''Book 7'''
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=460 BOOK VII., I.-II.] (#460), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=461 III.-V.] (#461), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=462 VI.-IX.] (#462),
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=463 X.-XII.] (#463), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=464 XIII.-XV.] (#464), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=465 XVI.-XVIII.] (#465), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=466 XIX.-XXI.] (#466),
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=467 XXII.-XXIII.] (#467), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=468 XXIV.- ] (#468), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=469 XXV.-XXVIII.] (#469),
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=470 XXIX.-XXXII.] (#470),
:: '''Book 6'''
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=441 I.] (#441), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=442 II.-III.] (#442), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=443 IV.-VII.] (#443), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=444 VIII.-IX.] (#444),
</div>
====English translation by W. A. McDevitte & W. S. Bohn (1869)====
# [http://www.forumromanum.org/literature/caesar/gallic.html (www.forumromanum.org)]
# (www.perseus.tufts.edu)
## [https://www.perseus.tufts.edu/hopper/text?doc=Caes.+Gal.+7.1 C. Julius Caesar, Gallic War, Book 7, chapter 1]
<!--
====Eastman, Frederick Carlos., D'Ooge, Benjamin L. 1860-1940.(1917)====
<span style="font-family:Times New Roman;font-style:normal;font-size:13pt;">
*[https://catalog.hathitrust.org/Record/001058370 Catalog Record: Caesar in Gaul and selections from the third... | HathiTrust Digital Library] (catalog.hathitrust.org)
:[https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=7&skin=2021 #7 - Caesar in Gaul and selections from the third book of the Civil ... - Full View | HathiTrust Digital Library] (babel.hathitrust.org)
:BOOK IV. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=393&skin=2021 #393 ]
:IV.34,-38. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=403&skin=2021 #403 ]
</span>
-->
====Harkness, Albert (1889)====
<span style="font-family:Times New Roman;font-style:normal;"><span style="font-size:15pt;">Caesar's Commentaries on the Gallic War, </span><span style="font-size:13pt;">with notes, dictionary, and a map of Gaul.</span><br> <span style="font-size:15pt;">
edited by <u>[[w:en:Albert Harkness|Albert Harkness (1822-1907)]]</u> <ref>[http://onlinebooks.library.upenn.edu/webbin/book/lookupname?key=Harkness%2C%20Albert%2C%201822%2D1907 Harkness, Albert, 1822-1907 | The Online Books Page]</ref>, New York, [[w:en:D. Appleton & Company|D. Appleton and Company]], 1889 (Rivised Edition)</span></span>
::Caesar's commentaries on the Gallic war; with notes, dictionary, ... (Full View | HathiTrust Digital Library)
; BOOK SEVENTH
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn3hve&view=1up&seq=373 #373]
; DICTIONARY
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn3hve&view=1up&seq=387 #387]
===Humanitext Reader===
<div style="background-color:#ffffdd;">
* Humanitext Reader|ギリシア語・ラテン語古典の原文と日本語訳 - https://reader.humanitext.ai/
* Humanitext Reader — Greek & Latin Classics with English Translation - https://reader.humanitext.ai/en
*:※日本語・英語・中国語・韓国語の4言語により、ギリシア語・ラテン語作品との対訳テキストを読むことができる。
** [https://reader.humanitext.ai/library/phi0448.phi001.humanitext-lat2 ガリア戦記(ユリウス・カエサル)原文・日本語訳・あらすじ — Gallic War · Humanitext Reader]
*** [https://reader.humanitext.ai/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:1.1.1-1.1.7 ガリアの三分とそこに住む諸部族|『ガリア戦記』§1.1.1-1.1.7(ユリウス・カエサル)ラテン語原文・日本語訳 · Humanitext Reader]
** [https://reader.humanitext.ai/en/library/phi0448.phi001.humanitext-lat2 Gallic War (Julius Caesar) — Original Latin Text, English Translation & Summary · Humanitext Reader]
*** [https://reader.humanitext.ai/en/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:1.1.1-1.1.7 The Three Divisions of Gaul and Their Inhabitants — Gallic War §1.1.1-1.1.7 (Julius Caesar) | Latin text & English translation · Humanitext Reader]
</div>
===IntraText CT===
* <span style="background-color:#ffffcc;">[https://www.intratext.com/IXT/LAT0044/_INDEX.HTM De bello Gallico - Table of Contents - IntraText CT]</span>
*: (ハイパーテキスト化されたテキストと、単語リストおよびコンコーダンスを組み合わせたもの)
** [https://www.intratext.com/IXT/LAT0044/_STAT.HTM De bello Gallico - Statistics - IntraText CT] (頻度ごと単語リストのデータ集)
====Incerti auctoris(編者不詳)====
; [https://books.google.co.jp/books?id=uLA8AAAAIAAJ&lpg=PA98&dq=Caesar+to+Cicero.+Be+of+good+courage.+Expect+aid&pg=PP1&redir_esc=y#v=onepage&q&f=false Caesar Gallic War V with vocabulary](第5巻)-Google ブックス(プレビュー)
;[https://www.latein.me/ Latein-Wörterbuch - Latein.me]
# [https://www.latein.me/text/3/Caesar/37/De+Bello+Gallico+%28V%29/p/0 De Bello Gallico (V) - Caesar - Latein.me]
<span style="font-family:Times New Roman;font-style:normal;font-size:13pt;"></span>
;nodictionaries.com
<!-- :[https://nodictionaries.com/caesar/de-bello-gallico-1/1 '''Caesar De Bello Gallico 1''' 1 in Latin, with adjustable running vocabulary]
:[https://nodictionaries.com/caesar/de-bello-gallico-2/1 '''Caesar De Bello Gallico 2''' 1 in Latin, with adjustable running vocabulary]
:[https://nodictionaries.com/caesar/de-bello-gallico-3/1 '''Caesar De Bello Gallico 3''' 1 in Latin, with adjustable running vocabulary]
:[https://nodictionaries.com/caesar/de-bello-gallico-4/1 '''Caesar De Bello Gallico 4''' 1 in Latin, with adjustable running vocabulary] -->
:[https://nodictionaries.com/caesar/de-bello-gallico-5/1 Caesar De Bello Gallico 5 1 in Latin, with adjustable running vocabulary]
==脚注==
<references />
[[Category:ガリア戦記 第7巻|*#]]
j89a09d63rb2voa6dr4ydqr2gca7pqd
304852
304848
2026-10-18T10:29:15Z
Linguae
449
/* 関連項目 */
304852
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;background-color:#fff0ff;">C · IVLII · CAESARIS · COMMENTARIORVM · BELLI · GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;background-color:#fff0ff;">LIBER · SEPTIMVS</div>
<span style="font-size:13pt;">『<span style="background-color:#ffc;">[[ガリア戦記 第7巻]]</span>』の単語や構文を詳しく読み解く <span style="background-color:#fc8;font-size:15pt;">'''[[ガリア戦記/注解編|注解編]]'''</span> の目次。</span>
{| id="toc" style="border:0px #ddf; align:left;clear:all;" align="center" cellpadding="5"
|-
! style="background:#ccf; text-align:center;" colspan="10"| ガリア戦記 第7巻 注解
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/1節|1節]]
|[[/2節|2節]]
|[[/3節|3節]]
|[[/4節|4節]]
|[[/5節|5節]]
|[[/6節|6節]]
|[[/7節|7節]]
|[[/8節|8節]]
|[[/9節|9節]]
|[[/10節|10節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/11節|11節]]
|[[/12節|12節]]
|[[/13節|13節]]
|[[/14節|14節]]
|[[/15節|15節]]
|[[/16節|16節]]
|[[/17節|17節]]
|[[/18節|18節]]
|[[/19節|19節]]
|[[/20節|20節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/21節|21節]]
|[[/22節|22節]]
|[[/23節|23節]]
|[[/24節|24節]]
|[[/25節|25節]]
|[[/26節|26節]]
|[[/27節|27節]]
|[[/28節|28節]]
|[[/29節|29節]]
|[[/30節|30節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/31節|31節]]
|[[/32節|32節]]
|[[/33節|33節]]
|[[/34節|34節]]
|[[/35節|35節]]
|[[/36節|36節]]
|[[/37節|37節]]
|[[/38節|38節]]
|[[/39節|39節]]
|[[/40節|40節]]<!--
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/41節|41節]]
|[[/42節|42節]]
|[[/43節|43節]]
|[[/44節|44節]]
|[[/45節|45節]]
|[[/46節|46節]]
|[[/47節|47節]]
|[[/48節|48節]]
|[[/49節|49節]]
|[[/50節|50節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/51節|51節]]
|[[/52節|52節]]
|[[/53節|53節]]
|[[/54節|54節]]
|[[/55節|55節]]
|[[/56節|56節]]
|[[/57節|57節]]
|[[/58節|58節]]
|[[/59節|59節]]
|[[/60節|60節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/61節|61節]]
|[[/62節|62節]]
|[[/63節|63節]]
|[[/64節|64節]]
|[[/65節|65節]]
|[[/66節|66節]]
|[[/67節|67節]]
|[[/68節|68節]]
|[[/69節|69節]]
|[[/70節|70節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/71節|71節]]
|[[/72節|72節]]
|[[/73節|73節]]
|[[/74節|74節]]
|[[/75節|75節]]
|[[/76節|76節]]
|[[/77節|77節]]
|[[/78節|78節]]
|[[/79節|79節]]
|[[/80節|80節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/81節|81節]]
|[[/82節|82節]]
|[[/83節|83節]]
|[[/84節|84節]]
|[[/85節|85節]]
|[[/86節|86節]]
|[[/87節|87節]]
|[[/88節|88節]]
|[[/89節|89節]]
|[[/90節|90節]]
| colspan="6" |
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/1節|1節]]
|[[/2節|2節]]
|[[/3節|3節]]
|[[/4節|4節]]
|[[/5節|5節]]
|[[/6節|6節]]
|[[/7節|7節]]
|[[/8節|8節]]
|[[/9節|9節]]
|[[/0節|0節]]
-->
|-
| style="background:#f5fefe; text-align:left; font-size: 0.8em;" colspan="10"|
[[ガリア戦記 第1巻/注解|'''注解''' 第1巻]] |
[[ガリア戦記 第2巻/注解|第2巻]] |
[[ガリア戦記 第3巻/注解|第3巻]] |
[[ガリア戦記 第4巻/注解|第4巻]] |
[[ガリア戦記 第5巻/注解|第5巻]] |
[[ガリア戦記 第6巻/注解|第6巻]] |
[[ガリア戦記 第7巻/注解|第7巻]] |<!--
[[ガリア戦記 第8巻/注解|第8巻]]-->
|}
<br style="clear:both;" />
__notoc__
== 各節注解 ==
[[画像:Gaule_-52.png|thumb|right|150px|ガリア戦記 第7巻の情勢図(BC52年)。<br>黄色の領域がローマ領。桃色が同盟部族領。]]
===カルヌーテース族の蜂起===
*<span style="background-color:#fff;">[[/1節]] {{進捗|25%|2025-11-03}}</span> (175語)
*<span style="background-color:#fff;">[[/2節]] {{進捗|25%|2025-11-05}}</span> (71語) 短い節
*<span style="background-color:#fff;">[[/3節]] {{進捗|25%|2025-11-17}}</span> (93語) 短い節
===ウェルキンゲトリークスとガッリア同盟軍の蜂起===
*<span style="background-color:#fff;">[[/4節]] {{進捗|25%|2025-12-05}}</span> (202語) 長い節
*<span style="background-color:#fff;">[[/5節]] {{進捗|25%|2025-12-14}}</span> (128語)
*<span style="background-color:#fff;">[[/6節]] {{進捗|25%|2025-12-15}}</span> (67語) 短い節
*<span style="background-color:#fff;">[[/7節]] {{進捗|25%|2025-12-16}}</span> (78語) 短い節
*<span style="background-color:#fff;">[[/8節]] {{進捗|25%|2026-01-03}}</span> (126語)
*<span style="background-color:#fff;">[[/9節]] {{進捗|25%|2026-01-15}}</span> (143語)
*<span style="background-color:#fff;">[[/10節]] {{進捗|25%|2026-01-16}}</span> (96語) 短い節
*<span style="background-color:#fff;">[[/11節]] {{進捗|25%|2026-02-02}}</span> (181語)
*<span style="background-color:#fff;">[[/12節]] {{進捗|25%|2026-02-25}}</span> (118語)
*<span style="background-color:#fff;">[[/13節]] {{進捗|25%|2026-02-25}}</span> (88語) 短い節
===アウァーリクム攻略戦===
*<span style="background-color:#fff;">[[/14節]] {{進捗|25%|2026-03-08}}</span> (177語)
*<span style="background-color:#fff;">[[/15節]] {{進捗|25%|2026-03-08}}</span> (114語)
*<span style="background-color:#fff;">[[/16節]] {{進捗|25%|2026-03-26}}</span> (64語) 短い節
*<span style="background-color:#fff;">[[/17節]] {{進捗|25%|2026-03-29}}</span> (183語)
*<span style="background-color:#fff;">[[/18節]] {{進捗|25%|2026-04-21}}</span> (81語) 短い節
*<span style="background-color:#fff;">[[/19節]] {{進捗|25%|2026-04-21}}</span> (145-147語)
*<span style="background-color:#fff;">[[/20節]] {{進捗|25%|2026-05-05}}</span> (307-310語) かなり長い節
*<span style="background-color:#fff;">[[/21節]] {{進捗|25%|2026-05-17}}</span> (61語) 短い節
*<span style="background-color:#fff;">[[/22節]] {{進捗|25%|2026-06-08}}</span> (115語)
*<span style="background-color:#fff;">[[/23節]] {{進捗|25%|2026-06-21}}</span> (129語)
*<span style="background-color:#fff;">[[/24節]] {{進捗|25%|2026-06-21}}</span> (147語)
*<span style="background-color:#fff;">[[/25節]] {{進捗|25%|2026-07-08}}</span> (121語)
*<span style="background-color:#fff;">[[/26節]] {{進捗|25%|2026-07-19}}</span> (119語)
*<span style="background-color:#fff;">[[/27節]] {{進捗|25%|2026-08-01}}</span> (79語) 短い節
*<span style="background-color:#fff;">[[/28節]] {{進捗|25%|2026-08-12}}</span> (162語)
*<span style="background-color:#fff;">[[/29節]] {{進捗|25%|2026-08-12}}</span> (122語)
*<span style="background-color:#fff;">[[/30節]] {{進捗|25%|2026-08-29}}</span> (90語) 短い節
*<span style="background-color:#fff;">[[/31節]] {{進捗|25%|2026-08-29}}</span> (107語)
===ゲルゴウィア攻略戦、ハエドゥイー族の離反===
*<span style="background-color:#fff;">[[/32節]] {{進捗|25%|2026-09-23}}</span> (150語)
*<span style="background-color:#fff;">[[/33節]] {{進捗|25%|2026-10-04}}</span> (150語)
*<span style="background-color:#fff;">[[/34節]] {{進捗|00%|2026-10-18}}</span> (90語) 短い節
*<span style="background-color:#fff;">[[/35節]] {{進捗|00%|2026-10-18}}</span>
== 関連項目 ==
*<span style="background-color:#ffd;">[[ガリア戦記]]</span><!--【2006年4月23日起稿】-->
**<span style="background-color:#ffd;">[[ガリア戦記/注解編]]</span><!--(2020-03-27)-->
***<span style="background-color:#ffd;">[[ガリア戦記/注解編/写本と校訂版]] {{進捗|00%|2020-04-17}}</span><!--(2020-04-17)-->
***<span style="background-color:#ffd;">[[ガリア戦記/注解編/表記のゆれ]] {{進捗|00%|2026-03-29}}</span><!--(2026-03-29)-->
**<span style="background-color:#ffd;">[[ガリア戦記/用例集]] {{進捗|00%|2020-03-29}}</span><!--(2020-03-29)-->
**[[ガリア戦記/内容目次]]:巻・章・節の内容を記した目次 {{進捗|75%|2011-04-02}}
**[[ガリア戦記/参照画像一覧]]:本文で参照した画像一覧 {{進捗|75%|2011-04-16}}
*<span style="background-color:#ffd;font-size:15px;">[[古典ラテン語]] {{進捗|00%|2018-04-18}} </span>
<br><div style="font-size:30pt;">ĀĒĪŌŪ _āēīōū_āēīōū_ Ă Ĕ Ĭ Ŏ Ŭ ă ĕ ĭ ŏ ŭ </div>
<div style="font-size:13pt;">
<math>\overline{\mbox{VIIII}} </math>
</div><!-- [[w:Help:数式の表示]] -->
<!--▲三点-->⋯ <!--◀左括弧-->‘ <!--▶右括弧-->’
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;"></span>
<!--
*<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">† : </span>校訂者が、テクストが壊れていると判断した部分をこの記号で囲んでいる。
-->
<!--
<ruby><rb>●漢字●</rb><rp>(</rp><rt>●ルビ●</rt><rp>)</rp></ruby>
-->
<!--
*<span style="background-color:#ffd;">[[/注解/1節]] {{進捗|00%|2026-10-18}}</span>
-->
<!--
: <!-- [[wikt:en:| -->
-->
<!--
<span style="color:#009900;"></span>
<small></small>
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
<!--❶--><!--❷--><!--❸--><!--❹--><!--❺--><!--❻--><!--❼--><!--❽--><!--❾--><!--❿--><!--⓫--><!--⓬--><!----><!----><!----><!---->
<!--<sup>()</sup> -->
<!--❶❷❸❹❺❻❼❽❾❿⓫⓬--><!---->
== 関連記事 ==
{{Wikisource|la:Commentarii de bello Gallico/Liber VII|ガリア戦記 第7巻(ラテン語)}}
*ウィキソース
**<span style="font-family:Times New Roman;">[[s:la:Commentarii de bello Gallico/Liber VII]] (第7巻 ラテン語)</span>
**<span style="font-family:Times New Roman;background-color:#ffffcc;">[https://scaife.perseus.org/reader/urn:cts:latinLit:phi0448.phi001.perseus-lat2:7 Scaife Viewer | De Bello Gallico] (第7巻 ラテン語)</span>
**<span style="font-family:Times New Roman;background-color:#ffffcc;">[https://scaife.perseus.org/reader/urn:cts:latinLit:phi0448.phi001.perseus-eng2:7/ Scaife Viewer | Gallic War] (第7巻 英訳)</span>
**<span style="font-family:Times New Roman;">[[s:fr:La Guerre des Gaules/Livre VII]] (第7巻 仏訳)</span>
----
{{Commons|Category:Battles of Caesar's Gallic Wars|Battles of Caesar's Gallic Warsのカテゴリ}}
{{Commons|Category:Murus gallicus|Category:Murus gallicus ガリア壁のカテゴリ}}
*<span style="font-family:Times New Roman;font-size:13pt;">[[wikt:fr:Catégorie:Mots en latin issus d’un mot en gaulois]]</span>
----
*[[wikt:en:Vercingetorix#Latin|Vercingetorīx]] ウェルキンゲトリークス
*[[wikt:en:Arverni#Latin|Arvernī]] アルウェルニー族
:
*[[wikt:en:agri_cultura#Latin|agrī cultūra]]
*[[wikt:en:bellum#Latin|bellum]]
*[[wikt:en:hiberna#Noun|hīberna]]
:
===地名===
*[[wikt:en:Gallia#Latin|Gallia]]
**Gallia [[wikt:en:cisalpinus#Latin|cisalpīna]] ガッリア・キサルピーナ
**[[wikt:en:Gallia_transalpina#Latin|Gallia trānsalpīna]] ガッリア・トラーンサルピーナ < [[wikt:en:transalpinus#Latin|trānsalpīna]]
**Gallia [[wikt:en:comatus#Latin|comāta]]
*[[wikt:en:Germania#Latin|Germānia]]
:
*[[wikt:en:Aquitania#Latin|Aquītānia]] ア
*[[wikt:en:Avaricum#Latin|Avāricum]] アウ
*[[wikt:en:Gergovia#Latin|Gergovia]]
*[[wikt:en:Arduenna#Latin|Arduenna]]
*[[wikt:en:Genabum#Latin|Genabum]]
*[[wikt:en:Hercynia|Hercynia]]
*[[wikt:en:Narbo#Latin|Narbō]] ナルボー
*[[wikt:en:Noviodunum#Latin|Noviodūnum]] ノウィオ
*[[wikt:en:Vellaunodunum#Latin|Vellaunodūnum]] ウェッラ
===部族名===
*[[wikt:en:Galli#Latin|Gallī]]
*[[wikt:en:Aedui#Latin|(H)aeduī]] ➡ [[wikt:en:Haedui#Latin|Haeduī]]
*[[wikt:en:Arverni#Latin|Arvernī]] アルウェルニー族
*[[wikt:en:Bituriges#Latin|Biturigēs]] ビトゥリゲース族
*[[wikt:en:Boii#Latin|Boiī]] ボ
*[[wikt:en:Cadurci#Latin|Cadurcī]] カドゥルキー族 > [[wikt:en:Cadurcus#Latin|Cadurcus]]
**[[wikt:en:Lucterius#Latin|Lucterius]] ルクテリウス
*[[wikt:en:Carnutes#Latin|Carnūtēs]] カルヌーテース族
*[[wikt:en:Cherusci#Latin|Chēruscī]]
*[[wikt:en:Condrusi#Latin|Condrūsī]]
*
*[[wikt:en:Eburones#Latin|Eburōnēs]] (エブローネース)
*[[wikt:en:Gabali#Latin|Gabalī]] ガバリー族
*[[wikt:en:Germani#Latin|Germānī]]
*[[wikt:en:Graecus#Noun|Graecī]]
*[[wikt:en:Haedui#Latin|Haeduī]] ハエドゥイー族
*[[wikt:en:Helvetii#Latin|Helvētiī]] ヘルウェーティイー族
*[[wikt:en:Helvii#Latin|Helviī]] ヘルウィイー族
*[[wikt:en:Menapii#Latin|Menapiī]]
*[[wikt:en:Nervii#Latin|Nerviī]]
*[[wikt:en:Nitiobriges#Latin|Nitiobrigēs]] ニティオブリゲース族
*[[wikt:en:Rauraci#Latin|Rauracī]]
*[[wikt:en:Remi#Latin|Rēmī]] レーミー族
*[[wikt:en:Romani#Latin|Rōmānī]]
*[[wikt:en:Ruteni#Latin|Rutēnī]] ルテーニー族
*[[wikt:en:Segni#Latin|Segnī]] (セグニー)
*[[wikt:en:Senones#Latin|Senonēs]] セノネース族
*[[wikt:en:Sequani#Latin|Sēquanī]] (セークァニー)
*[[wikt:en:Suebi#Latin|Suēbī]]
*[[wikt:en:Sugambri#Latin|Sugambrī]]
*[[wikt:en:Tectosages#Latin|Tectosagēs]] (テクトサゲース)
*[[wikt:en:Tencteri#Latin|Tenctērī]]
*[[wikt:en:Tolosates#Latin|Tolōsātēs]] トローサーテース族
*[[wikt:en:Treveri#Latin|Trēverī]]
*[[wikt:en:Ubii#Latin|Ubiī]]
*[[wikt:en:Usipetes#Latin|Usipetēs]]
*[[wikt:en:Volcae#Latin|Volcae]] ウォルカエ族
**[[wikt:en:Arecomici#Latin|Arecomicī]] ア
:[[wikt:fr:Nemetes]] (ネメテース)
===登場人物===
*[[wikt:en:Caesar#Latin|Caesar]]
:
[[w:fr:Catégorie:Personnalité de la guerre des Gaules]]
:
*[[wikt:en:Commius|Commius]]
**[[w:コンミウス]]
**[[w:la:Commius]]
**[[w:en:Commius]]
**[[w:fr:Commios]]
*[[wikt:en:Cicero#Latin|Cicerō]]
**[[w:クィントゥス・トゥッリウス・キケロ|クイーントゥス・トゥッリウス・キケロー]]
**[[w:la:Quintus Tullius Cicero]]
**[[w:en:Quintus Tullius Cicero]]
**[[w:fr:Quintus Tullius Cicero]]
*[[wikt:en:Crassus#Latin|Crassus]]
*[[wikt:en:Labienus#Latin|Labiēnus]]
**[[w:ティトゥス・ラビエヌス|ティトゥス・ラビエーヌス]]
<!--
*?
**Crassus
***[[w:プブリウス・リキニウス・クラッスス]]
***[[w:la:Publius Licinius Crassus]]
***[[w:en:Publius Licinius Crassus (son of triumvir)]]
***[[w:fr:Publius Crassus]]
**Labienus (副官)
***[[w:la:Titus Labienus]]
***[[w:en:Titus Labienus]]
***[[w:fr:Titus Labienus]]
**Brutus
***[[w:デキムス・ユニウス・ブルトゥス・アルビヌス]]
***[[w:la:Decimus Iunius Brutus Albinus]]
***[[w:en:Decimus Junius Brutus Albinus]]
***[[w:fr:Decimus Junius Brutus Albinus]]
-->
<br>
===第7巻の関連記事===
<div style="font-family:Times New Roman;font-size:13pt;">
</span>
<span style="font-family:Times New Roman;font-size:13pt;"></span>
== 外部リンク ==
*[[ガリア戦記/注解編#外部リンク]] を参照。
*[[ガリア戦記/注解編/写本と校訂版#オンライン注釈書等]] 等を参照。
===オンライン注釈書===
<div style="background-color:#eeeeee;">
====Caesar's Gallic war : notes by F. W. Kelsey (1897)====
:C. Iuli Caesaris De bello gallico libri VII :
::Caesar's Gallic war : with an introduction, notes, and vocabulary
::: by [[w:en:Francis Kelsey|Francis Willey Kelsey (1858-1927)]], Fifteenth Edition (1897)
:::: (HathiTrust Digital Library [[w:ハーティトラスト|ハーティトラスト・デジタルライブラリ]]で電子化)
:: [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=19 Contents] (#19)
;:─TEXT─
:: '''Book 7''' : [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=243 Commentarius Septimus] (#243)
;:─NOTES─
:: '''Book 7'''
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=460 BOOK VII., I.-II.] (#460), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=461 III.-V.] (#461), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=462 VI.-IX.] (#462),
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=463 X.-XII.] (#463), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=464 XIII.-XV.] (#464), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=465 XVI.-XVIII.] (#465), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=466 XIX.-XXI.] (#466),
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=467 XXII.-XXIII.] (#467), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=468 XXIV.- ] (#468), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=469 XXV.-XXVIII.] (#469),
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=470 XXIX.-XXXII.] (#470),
:: '''Book 6'''
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=441 I.] (#441), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=442 II.-III.] (#442), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=443 IV.-VII.] (#443), [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=444 VIII.-IX.] (#444),
</div>
====English translation by W. A. McDevitte & W. S. Bohn (1869)====
# [http://www.forumromanum.org/literature/caesar/gallic.html (www.forumromanum.org)]
# (www.perseus.tufts.edu)
## [https://www.perseus.tufts.edu/hopper/text?doc=Caes.+Gal.+7.1 C. Julius Caesar, Gallic War, Book 7, chapter 1]
<!--
====Eastman, Frederick Carlos., D'Ooge, Benjamin L. 1860-1940.(1917)====
<span style="font-family:Times New Roman;font-style:normal;font-size:13pt;">
*[https://catalog.hathitrust.org/Record/001058370 Catalog Record: Caesar in Gaul and selections from the third... | HathiTrust Digital Library] (catalog.hathitrust.org)
:[https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=7&skin=2021 #7 - Caesar in Gaul and selections from the third book of the Civil ... - Full View | HathiTrust Digital Library] (babel.hathitrust.org)
:BOOK IV. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=393&skin=2021 #393 ]
:IV.34,-38. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=403&skin=2021 #403 ]
</span>
-->
====Harkness, Albert (1889)====
<span style="font-family:Times New Roman;font-style:normal;"><span style="font-size:15pt;">Caesar's Commentaries on the Gallic War, </span><span style="font-size:13pt;">with notes, dictionary, and a map of Gaul.</span><br> <span style="font-size:15pt;">
edited by <u>[[w:en:Albert Harkness|Albert Harkness (1822-1907)]]</u> <ref>[http://onlinebooks.library.upenn.edu/webbin/book/lookupname?key=Harkness%2C%20Albert%2C%201822%2D1907 Harkness, Albert, 1822-1907 | The Online Books Page]</ref>, New York, [[w:en:D. Appleton & Company|D. Appleton and Company]], 1889 (Rivised Edition)</span></span>
::Caesar's commentaries on the Gallic war; with notes, dictionary, ... (Full View | HathiTrust Digital Library)
; BOOK SEVENTH
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn3hve&view=1up&seq=373 #373]
; DICTIONARY
# [https://babel.hathitrust.org/cgi/pt?id=hvd.hn3hve&view=1up&seq=387 #387]
===Humanitext Reader===
<div style="background-color:#ffffdd;">
* Humanitext Reader|ギリシア語・ラテン語古典の原文と日本語訳 - https://reader.humanitext.ai/
* Humanitext Reader — Greek & Latin Classics with English Translation - https://reader.humanitext.ai/en
*:※日本語・英語・中国語・韓国語の4言語により、ギリシア語・ラテン語作品との対訳テキストを読むことができる。
** [https://reader.humanitext.ai/library/phi0448.phi001.humanitext-lat2 ガリア戦記(ユリウス・カエサル)原文・日本語訳・あらすじ — Gallic War · Humanitext Reader]
*** [https://reader.humanitext.ai/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:1.1.1-1.1.7 ガリアの三分とそこに住む諸部族|『ガリア戦記』§1.1.1-1.1.7(ユリウス・カエサル)ラテン語原文・日本語訳 · Humanitext Reader]
** [https://reader.humanitext.ai/en/library/phi0448.phi001.humanitext-lat2 Gallic War (Julius Caesar) — Original Latin Text, English Translation & Summary · Humanitext Reader]
*** [https://reader.humanitext.ai/en/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:1.1.1-1.1.7 The Three Divisions of Gaul and Their Inhabitants — Gallic War §1.1.1-1.1.7 (Julius Caesar) | Latin text & English translation · Humanitext Reader]
</div>
===IntraText CT===
* <span style="background-color:#ffffcc;">[https://www.intratext.com/IXT/LAT0044/_INDEX.HTM De bello Gallico - Table of Contents - IntraText CT]</span>
*: (ハイパーテキスト化されたテキストと、単語リストおよびコンコーダンスを組み合わせたもの)
** [https://www.intratext.com/IXT/LAT0044/_STAT.HTM De bello Gallico - Statistics - IntraText CT] (頻度ごと単語リストのデータ集)
====Incerti auctoris(編者不詳)====
; [https://books.google.co.jp/books?id=uLA8AAAAIAAJ&lpg=PA98&dq=Caesar+to+Cicero.+Be+of+good+courage.+Expect+aid&pg=PP1&redir_esc=y#v=onepage&q&f=false Caesar Gallic War V with vocabulary](第5巻)-Google ブックス(プレビュー)
;[https://www.latein.me/ Latein-Wörterbuch - Latein.me]
# [https://www.latein.me/text/3/Caesar/37/De+Bello+Gallico+%28V%29/p/0 De Bello Gallico (V) - Caesar - Latein.me]
<span style="font-family:Times New Roman;font-style:normal;font-size:13pt;"></span>
;nodictionaries.com
<!-- :[https://nodictionaries.com/caesar/de-bello-gallico-1/1 '''Caesar De Bello Gallico 1''' 1 in Latin, with adjustable running vocabulary]
:[https://nodictionaries.com/caesar/de-bello-gallico-2/1 '''Caesar De Bello Gallico 2''' 1 in Latin, with adjustable running vocabulary]
:[https://nodictionaries.com/caesar/de-bello-gallico-3/1 '''Caesar De Bello Gallico 3''' 1 in Latin, with adjustable running vocabulary]
:[https://nodictionaries.com/caesar/de-bello-gallico-4/1 '''Caesar De Bello Gallico 4''' 1 in Latin, with adjustable running vocabulary] -->
:[https://nodictionaries.com/caesar/de-bello-gallico-5/1 Caesar De Bello Gallico 5 1 in Latin, with adjustable running vocabulary]
==脚注==
<references />
[[Category:ガリア戦記 第7巻|*#]]
ip0rizp4g4gglzcgjnw03ncznt9pgir
高等学校日本史探究/縄文時代の社会と文化
0
47886
304822
304099
2026-10-17T18:16:44Z
PacmanD
92813
([[c:GR|GR]]) [[c:COM:FR|File renamed]]: [[File:御所野遺跡竪穴式住居内部.JPG]] → [[File:御所野遺跡の復元竪穴建物の内部.jpg]] [[c:COM:FR#FR2|Criterion 2]] (meaningless or ambiguous name) · 「竪穴式住居」の表記は完全な誤っているわけではないが、現代の日本考古学界ではほぼ使われていない。現代的な表記(竪穴建物)を提案。
304822
wikitext
text/x-wiki
[[小学校・中学校・高等学校の学習]]>[[高等学校の学習]]>[[高等学校地理歴史]]>[[高等学校日本史探究]]>縄文時代の社会と文化
※本節では縄文時代を扱います。最新の歴史研究結果をもとに叙述しています。
== 縄文文化の成立 ==
気候の温暖化は更新世末期から<span style="color:#f29100">'''完新世'''</span>初期にかけて進みました。氷河が気候の温暖化から溶け始めると、海面も次第に上昇しました。その結果、日本列島は約1万年前までにユーラシア大陸から切り離されて現在の形になりました。約7000年前、日本列島の海面は現在より平均2~3メートル高くなりました。約6000年前、陸地部分が海面上昇で一時的に海になりました(縄文海進)。浅くて砂泥質の環境が日本列島各地に広がり、魚介類もそこへ住み着きました。気候の温暖化から亜寒帯性・冷温帯性の針葉樹林が東日本で減少しました。東日本の樹木は落葉広葉樹林[ブナ・ナラなど]に変わりました。一方、照葉樹林[シイ・カシなど]は西日本で広がりました。
ナウマンゾウ・ヘラジカは更新世末期までに日本列島から絶滅しました。また、オオツノジカも縄文時代草創期までに日本列島から絶滅しました。その後、中型動物と小型動物[ニホンシカ・イノシシ・ウサギ・鳥類など]が日本列島に残りました。この変化に合わせて、日本人の生活も大きく変えました。中型動物と小型動物を狩るために<span style="color:#f29100">'''弓矢'''</span>を作ったり、<span style="color:#f29100">'''土器'''</span>を作って食料を煮たり、石を川辺で拾って全体を綺麗に磨いて<span style="color:#f29100">'''磨製石器'''</span>を作ったりしました(<span style="color:#f29100">'''縄文文化'''</span>)。<gallery mode="nolines" widths="200" heights="150">
ファイル:Cervus_nippon_002.jpg|ニホンジカ
ファイル:Sus_scrofa_leucomystax.jpg|イノシシ
ファイル:Lepus_brachyurus.JPG|ウサギ
ファイル:Néolithique_0001.jpg|磨製石器
</gallery>縄文文化は最新のAMS法[加速器質量分析法]と年輪補正から約1万6500年前より開始と考えられています。当時、青森県大平山元遺跡の無文土器などが作られていました。なお、無文土器は日本最古の土器になります。ユーラシア大陸北東部のアムール川中流でも中国湖南省・中国江西省の洞穴遺跡でも無文土器より古い土器が見つかっています。こうして、人間は土器を使って食料を煮炊き出来るようになりました。木の実を土器に入れてアク抜きまで出来るようになりました。[[ファイル:Periodo jomon medio, vasellame, 02.JPG|サムネイル|188x188ピクセル|縄文土器]]縄文人は粘土をこねて縄文土器を作りました。土器の表面に縄を転がして目立つ文様を数多く付けました。縄文土器は低温の野焼きで仕上げました。縄文土器はその仕上がりから耐久性ほとんどなく厚くて黒褐色の土器でした。その中でも煮炊きをするため深鉢形の土器は縄文土器の中心でした。縄文時代早期から晩期まで深鉢形の土器を大量に作り続けました。縄文時代前期から盛り付け用の浅鉢も新しく作られるようになりました。縄文時代後期から注口土器・皿壺なども新しく作られるようになりました。こうして、縄文土器の種類が増えました。縄文土器は草創期・早期・前期・中期・後期・晩期とそれぞれ文様の付け方も変わりました。草創期の縄文土器は爪形文か隆起線文でした。早期と前期の縄文土器は縄文か貝殻・竹管文様を付けました。中期の縄文土器は立体的で複雑な装飾的文様でした。特に、火炎土器が中期の縄文土器として有名になりました。後期と晩期の縄文土器は磨消縄文を付けました。
縄文人は豊かな自然の恵みを上手く採り入れながら、食料を森・川・海で集めていました。この事実は土器の窪み・種実・脂質分析結果でも明らかになっており、縄文時代からクリ・アズキ・エゴマなどを集落の近くで大切に育てたり、自然の恵みを上手に活かしたりしました。縄文人は縄文土器を毎日使ったり、磨製石器を作ったり、弓矢の改良をしたりしました。同じ場所にずっと住み続けながら、食料を狩猟と採集で集めていました。磨製石器と土器の使用はユーラシア大陸の新石器時代で共通していても、動物飼育と農業は縄文文化で取り入れていません。なお、様々な学説が縄文時代の開始時期で挙げられています。竪穴住居と貝塚の出現〈約1万1500年前〉からなのか、土器の使用時期〈約1万5000年前〉からなのか、土器の出現時期〈約1万6500年前〉からなのかで現在でも争われています。
石鏃を弓矢に取り付けたり、地面を深く掘って落とし穴を作ったり、様々な罠を上手に使い分けていました。縄文時代早期の落とし穴が東京都・神奈川県の多摩丘陵に数多く見つかっています。また、イヌを狩猟仲間として一緒に連れていきました。
[[ファイル:Biwakomarukibune.jpg|サムネイル|205x205ピクセル|丸木舟]]
潮位が約6000年前に上がると、縄文人も'''丸木舟'''を沖に出して魚を取りました。縄文人の男達は鹿の角を削って釣針を作り、動物の骨を尖らせて銛・ヤスを作りました。石製・土製の丸い重り[網錘]を網につけて真鯛・鰹漁・鱸・黒鯛を捕まえました。また、九州西北部は組み合わせ式釣針も見つかっています。各地で丸木舟が見つかりました。伊豆諸島八丈島・沖縄小島の遺跡から九州産の土器と同じ土器が見つかりました。その理由として、島伝いの丸木舟移動が挙げられます。一方、縄文人の遺伝子を調べたら大陸の集団遺伝子からほとんど完全にかけ離れています。縄文時代草創期から早期にかけて東日本を中心に日本列島内の人口増加が最近のゲノム研究から明らかになっています。
植物性食料は狩猟採集生活で最も大切でした。その中でも栗・胡桃・栃・団栗(落葉性ナラ・常緑性カシ・シイの硬い実)などの木の実は炭水化物を賄うための貴重な主食になりました。木の実は貯蔵穴に入れて保存しました。木の実を取り出したら石皿・摩石・打製石斧で細かくしました。苦味の強い栃・団栗は土器で煮たり、水に長くつけたりして丁寧に苦味を抜きました。その痕跡は草創期の遺跡でも見つかっています。また、縄文時代後期から晩期にかけて、木組みの水さらし施設が東日本を中心に見つかっています。三内丸山遺跡などの栗林は栗の木を人間の手で大切に育てて栗の実を増やしていたと判断されています。ヤマイモなどの根茎類も石鍬を使って土を掘り起こして採っていたかもしれません。
縄文人は春・夏・秋・冬の季節に合わせて木の実を集め、魚を採り、動物を狩るなど食料の集め方を変えていました。そのため一年を通して食料を手に入れやすくなり、縄文人も同じ場所で暮らし続け、各地に集落が出来るようになりました。ただし最近の古い人骨から個人同士の争いの傷跡も残っています。したがって、縄文時代も争いはありました。また、産地限定の石が各地域の遺跡から見つかり、縄文人同士で各地の村と石・道具などを交換していました。縄文人は気候と季節の変化に合わせて、食料の集め方と暮らし方を変えていました。縄文文化は日本列島で約1万年続き、各地域で様々な形へ発展していきました。
== 縄文時代の生活と習俗 ==
[[ファイル:御所野遺跡の復元竪穴建物の内部.jpg|サムネイル|265x265ピクセル|竪穴住居内部]]
縄文時代は各地域の自然環境に合わせて、動物を狩り、魚貝類を採り、木の実を集めながら暮らしていました。森で木の実を集め、海・川で魚貝類を採っていました。こうして同じ場所で食料をずっと手に入れられるようになり、縄文人は同じ場所で暮らすようになりました。南九州は縄文時代草創期の遺跡から当時の生活風景が伺えます。この生活風景は縄文時代早期からさらに広がりました。集落は食料を手に入れやすく、大雨・洪水などの被害を受けにくく、高台から下りたら湧き水もあり、毎日の飲料水に困らないような場所[高台周辺]に作られました。また、雨降っても地面が乾きやすく、太陽光も入りやすい場所に作られました。
縄文時代は<span style="color:#f29100">'''竪穴住居'''</span>が広く建てられました。地面を掘って、その上に柱を立てて、屋根をかけました。囲炉裏が家の中央にあり、そこで食料を煮たり、寒い日に体を温めたりしました。4~6人ほどの家族が同じ屋根の下で暮らしていました。また、縄文時代は平地式の住居もありました。地面の上へそのまま柱を立てて、屋根をかけました。竪穴住居が数軒並ぶと小さな集落になりました。4~6軒程度の家族[20人から30人程度]が小さな集落内で暮らしていました。集落内は男女の行動も決まっていました。男性は主に動物を狩ったり、石器を作ったりしました。一方、女性は木の実を集めたり、土器を作ったりしました。
[[ファイル:Fujimi Mizukokaiduka Park 3.JPG|サムネイル|265x265ピクセル|環状集落の風景(水子貝塚公園)]]
同じ場所に長く住み続けたら、集落の並び方も次第に決まりました。各住居を中央の広場周辺に丸く並べたり、馬の蹄のような形に並べたりしました('''環状集落''')。環状集落は縄文時代前期から中期にかけて各地に広がり、縄文時代中期・後期から数十軒の住居も並ぶようになりました。集落内の住居以外にも貯蔵穴・合葬墓(共同墓地)・ごみ捨て場・神社(祭祀施設)もありました。大きな集落は長さ15m以上の大きな竪穴建物も作られました。もしかしたらこの大きな竪穴建物は集会所・共同作業場・共同住宅なのかもしれません。中央の広場を墓地として使う集落も多く、縄文人は故人のお墓を集落付近に造っていました。定住生活年数の長さから各地域の土器の形と模様の違いがはっきり表れるようになりました。その結果、各地域の土器と暮らし方に違いが日本列島各地で見られるようになりました。
縄文人は青森県の'''三内丸山遺跡'''でかなり長く暮らしていました。縄文時代の前期中頃から中期末までの約1500年間[5500年前から4000年前]も縄文人が住んでいました。580棟以上の住居址が三内丸山遺跡で見つかっています。この集落の作り方は台地の中央を削って、低い谷を土で埋め立てながら平らにして造りました。道路が村の中央に通り、大人の墓[道路の東側]・高床建物[道路の西側]などを並べました。子供の遺骨・赤ちゃんの遺骨は土器の中に入れて、その土器を地面に埋めていました。この土葬墓は集落の北側にありました。また谷の泥炭層から縄文時代前期と中期のごみがまとまって見つかりました。三内丸山遺跡の住民は建築残土・焼土・灰・土器の破片などを集落の北側と南側にずっと同じ場所へ捨て続けていました。こうして大きな山になり、盛土遺構になりました。[[ファイル:140913 Sannai-Maruyama site Aomori Japan01bs6bs6.jpg|サムネイル|三内丸山遺跡|300x300ピクセル]]大きな竪穴建物・掘立柱建物が三内丸山遺跡で数多く見つかっています。巨大な掘立柱建物跡の土台部分が腐らないでそのまま残っていました。その太さは80~90cm以上あり、当時の柱は直径約1m程度と思われます。大きな栗の木材6本が建物の大黒柱に使われていました。おそらくこの建物は高さ20m以上なので、展望台[物見櫓]なのかもしれません。大型土木工事を行い、住宅地・墓地・倉庫のように場所も分かれ、遠い地域の縄文人と品物をやり取りしつつ、数百人程度がこの三内丸山集落へ短い期間暮らしていました。ここから縄文人は家族だけでひっそり暮らしていません。集落の人全員で大きな建物を建て、道路・墓・倉庫を作っていました。
土器・土偶・石器・骨角器・木製品・漆器・編み物などが三内丸山遺跡から数多く見つかっています。堅果植物[クリなど]・栽培植物[リョクトウ・ヒョウタンなど]・魚類の骨・獣の骨なども大量に見つかっています。さらに、'''翡翠'''なども三内丸山遺跡で見つかっています。ここから縄文人は遠い地域の人とも物と物でやりとりしていました。花粉を調べると、集落周辺に栗の木がまとまって生えていました。縄文人はその場所で栗の木を残したり育てたりしながら、食用の栗を手に入れやすいようにしました。食料を作り、道具をつくり、家族で暮らし、祭りや祈りを行い、遠い地域の人と品物をやり取りしながら、ずっと三内丸山集落が続きました。2021年7月、「北海道・北東北の縄文遺跡群」の1つとして、ユネスコ世界文化遺産に登録されました。
縄文人の'''定住生活'''は<span style="color:#f29100">'''貝塚'''</span>からも分かります。海岸付近・川付近・湖付近の集落は縄文時代早期から生ごみ[貝殻・魚の骨・動物の骨・木の実の皮]・土器・石器・骨角器の破片などを集落周辺の指定場所へ何度も捨てていました。同じ場所へ何年も捨てられ、これらが積み重なって貝塚になりました。大きな貝塚は直径100~200m程度の形[環状・馬蹄形]になりました。一部地域の貝層は厚さ数m程度にもなっていました。また、石灰分が貝殻に多く含まれています。この石灰分が遺骨・動物の骨・魚の骨・歯・骨角器などを守りました。貝塚を調べると、縄文人が何を食べていたのか、どのような自然環境で暮らしていたか、日常生活で何をしていたのかまで分かります。
ただし、貝塚はごみ捨て場以外にも故人の遺体まで埋めていました。縄文人はこの場所を特別な思いで使っていたのかもしれません。神奈川県の夏島貝塚は最も古い貝塚となっており、約8500年前の釣針を見つけました。宮城県の里浜貝塚は厚い貝層を上から順番に調べました。ここから貝・魚・渡り鳥の種類を調べて、どの季節に捨てられたか分かるようになりました。その結果、縄文人が各季節に何をして、一年を通して何を捨てていたかまで分かりました。
[[ファイル:Edward Sylvester Morse - Frank Benson (PEM M4311) - crop 1.jpg|サムネイル|184x184ピクセル|エドワード・モース]]
1877年(明治10年)、'''エドワード・モース'''[アメリカの動物学者]が東京都の大森貝塚を掘って調べました。これ以降、日本の考古学者は縄文時代の遺跡を実際に掘って確かめながら調べています。縄を転がして模様を付けたような土器が大森貝塚から見つかっています。エドワード・モースは、このような土器を英語で“cord marked pottery”と書きました。日本の考古学者はこれを「縄文」と名付けられました。その後、日本の考古学は大きく広がりました。日本の考古学者は日本各地の貝塚を同じように掘りました。東京都の大森貝塚・千葉県の加曽利貝塚・福井県の鳥浜貝塚・岡山県の津雲貝塚などが有名な貝塚になります。
縄文人は狩猟・漁労・採集で食料を手に入れていました。ただし、植物の一部を育てたり、いつでも収穫しやすいように手入れしたりしていました。瓢箪・荏胡麻・牛蒡・紫蘇などの植物が福井県の鳥浜貝塚などで見つかっています。三内丸山遺跡でも栗を収穫しやすいように、三内丸山集落周辺で栗の木をずっと育てていました。このように、縄文時代は狩猟採集生活でした。ただし植物を育てつつ、植物の手入れはある程度やっていました。
土器表面の種・果実から何を食べ、どんな植物を栽培していたのかも見えてきます。土器に種・果実が土器表面にくっ付くと、土器表面に形も残ります。その部分にシリコンを流し込んで同じ形をつくり、顕微鏡で詳しく調べます(圧痕レプリカ法)。この方法で土器を調べました。その結果、縄文時代中期以降から小豆の種子・大豆の種子が以前と比べてかなり大きくなっており、縄文人も小豆・大豆を選び畑に撒いて育てていました。なお、考古学の調べ方は花粉分析・プラントオパール分析・DNA分析・残留脂肪酸分析・地中レーダー法・放射性炭素年代測定法・'''年輪年代測定法'''なども一緒に使います。考古学者は木材の年輪幅を一本ずつ測って、何年に育ったかを1年単位で数字に出します(年輪年代測定法)。縄文人は森林の栗を切らないまま育てて栗の果実を収穫していたらしく、一部の考古学者は「縄文文化は、森林の資源に頼る新石器文化」と考えました。
縄文人は同じ集落にずっと住み続けていても各集落の縄文人と仲良くしていました。集落の人数は20~30人程度なので、結婚相手も自分の集落で見つかりません。そのため、結婚相手は違う集落に行って探していました。結婚したら、結婚相手側の家族・結婚相手側の集落とも繋がりました。こうして物資を分け合ったり、情報を伝え合ったりしました。
縄文人は遠距離集落まで出向き、珍しい石材・装身具材料を手に入れました。'''黒曜石'''の産地は北海道[白滝・置戸・十勝岳]・長野県[和田峠]・神奈川県[箱根]・東京都[神津島]などに限られていました。縄文人は黒曜石を産地から遠距離集落まで運びました。黒曜石は各産地場所の元素違いから黒曜石製石器の原石産地も分かります。
サヌカイト(讃岐石)は奈良県と大阪府県境の二上山・香川県の金山・香川県の五色台などで採れました。サヌカイト製石器は四国地方・中国地方・九州地方などの遺跡から見つかっています。翡翠(硬玉)は新潟県の姫川流域などで採れました。翡翠(硬玉)は緑色の石で見た目も美しく、首飾りなどに使われました。翡翠(硬玉)は新潟県の姫川流域から遠い北海道の遺跡でも見つかっています。天然アスファルトは接着剤として使われ、日本海側[新潟県・秋田県など]から運ばれていました。琥珀・赤色顔料も各地域で使われていました。漆塗りの土器・漆塗りの櫛なども縄文晩期に作られました。このような物も貿易のために使われていました。他地域産の土器も遺跡から見つかっており、縄文時代でも人の移動・品物の移動が行われていました。土の中で腐りやすい物[食料・木製品・繊維製品など]も集落同士でやり取りしていました。<gallery mode="nolines" widths="200" heights="150">
ファイル:Lipari-Obsidienne (1).jpg|黒曜石
ファイル:Sanukite.JPG|サヌカイト
ファイル:歴史を変えたヒスイ.jpg|翡翠
ファイル:Amber Bernstein many stones.jpg|琥珀
</gallery>縄文人は大雨・強風で家が壊れたり、寒さで体を壊したりしないように、自然変化と向き合いながら暮らしていました。縄文人は動物・植物・山・川・石・風・雨などに透明な気持ち[霊魂・精霊・霊威]を感じていました(<span style="color:#f29100">'''アニミズム'''</span>)。縄文人は病気にならないように、災害・事件に巻き込まれないように祈りました。また、獲物・収穫・大量出産・集団生活などで困らない生活を送りたいから祈りました。<gallery mode="nolines" widths="200" heights="200">
ファイル:土偶.png|土偶
ファイル:馬高遺跡出土 石製品 石棒.JPG|石棒
</gallery>
[[ファイル:Oyu-kanjyouretuseki.JPG|サムネイル|273x273ピクセル|大湯環状列石]]
縄文人は家族と仲間も元気に暮らせるように、食料も豊富に取れるように願って、その思いを<span style="color:#f29100">'''土偶'''</span>・<span style="color:#f29100">'''石棒'''</span>に込めました。土偶は縄文時代草創期から作られ、妊娠中の女性から元気な赤ちゃんが生まれ、家族を増やしたい気持ちを込めています。縄文時代の土偶は1万個以上見つかっています。長野県棚畑遺跡の「縄文のヴィーナス」・遮光器土偶などが東日本で大量に見つかっています。このように、縄文人は様々な形の土偶をつくりました。子供が増えるように願って、男性生殖器を石棒で形にしました。縄文人は土偶・石棒以外にも石剣・土面・土製品を作りました。縄文人は健康で長生き出来るように願って土製品・土器の縁(口縁部)に猪の頭を立体で作りました。
縄文人は集落の広場・集落の広場周辺に祭場をつくり、そこで呪いの儀式をしました。石川県のチカモリ遺跡と真脇遺跡の施設は太い栗の木を輪の形に並べて作られました。縄文人は多数の石を指定範囲に並べました(配石遺構)。東日本の縄文人は後期から石を綺麗に円の形に並べました('''環状列石'''['''ストーンサークル'''])。秋田県の大湯環状列石は最も有名な遺跡になります。最近、お墓が環状列石の下から相次いで見つかっています。考古学者は「祭祀場所だけでなく、共同墓地として先祖を敬う場所」と伝えています。関東地方などの縄文人は縄文時代後期から晩期にかけて、直径100m程度の範囲へ土を輪の形に盛っていました(環状盛土遺構)。祭祀道具と神社(祭祀施設)は縄文時代の後半に増え、集団役割も少しずつ複雑になりました。
== 縄文社会と縄文人 ==
[[ファイル:津雲貝塚出土 抜歯人骨.JPG|サムネイル|184x184ピクセル|抜歯人骨]]
縄文人は成人したり、結婚したり、身内の死を迎えたら、健康な歯をわざと抜いていました。発掘人骨を調べると、この習慣は縄文時代の中期から始まり、晩期までに各地域で行われました。また、十代半ばの若者も歯を抜かれていました。どの歯を抜くのかにも決まりがありました。成人したら上顎の犬歯を抜き、結婚したら下顎の前歯を抜くなど、迎える節目によって抜く歯が違っていました。このような歯の形を見たらその人がどの仲間に入っているのか、その人自身の人生はどのように歩んできたのか見分けられるかもしれません。特に縄文時代の晩期の人骨から、抜歯が日本各地で数多く見つかっています。当時、抜歯が人と人の繋がりを表しており、以前より大きな役割を持つようになっていました。[[ファイル:伊川津貝塚出土 叉状研歯のある縄文時代人の頭骨.JPG|サムネイル|161x161ピクセル|叉状研歯人骨]]縄文人は、'''抜歯'''だけでなく、前歯の表面に細い切り込みを入れて歯の形を変えていました(叉状研歯)。叉状研歯は集落の指導者・呪術者などのようにその人と判断しやすい目印となっていました。成人後と結婚後に歯を抜いて、叉状研歯込みの女性頭蓋骨も見つかっています。この女性は集団の指導者として、特別な立場なのかもしれません。
このような習慣は日本以外にもありました。アフリカ・南アジア・オセアニアなどでも同じような習慣で成人後と結婚後にどの家族に入っているのか、どんな仲間に入っているのか分かるようにしました。
縄文時代は森で木の実を集めたり、動物を狩ったりしながら、ずっと同じ土地で暮らしていました。特にクリ・トチなどの大きな木の実が東日本で豊富に採れ、動物も数多くいました。そのため、西日本よりも集落が多く、かなりの縄文人もそこで暮らしていました。しかし縄文人が増えると、以前より大量の食料も必要になりました。さらに上手に木の実を集めつつ上手に動物を狩れるようになり、同じ場所から食料を取り続けると木の実・動物が少なくなってしまいます。約4500年前の気温低下から食料を手に入れにくくなり、一部の集落が小さくなったり、縄文人がいなくなったりしました。
一般の縄文人は竪穴住居で暮らしていました。竪穴住居の広さと間取りに大きな違いは見られません。縄文人の遺骨は合葬墓(共同墓地)に入れられました。墓の大きさと副葬品の量にも大きな違いは見られません。このため支配者も豊富な食料と大切な品物を持たないまま他の人と同じように暮らしていました。一方、縄文時代後期の東日本は特別な飾り(翡翠の玉・漆塗りの櫛など)を身につけたまま葬られていました。東日本の支配者は他の人より重要な立場だったのかもしれません。[[ファイル:Oguruwa shell mounds-Flexed burial.jpg|サムネイル|164x164px|屈葬]]耳飾り・首飾り・貝製の腕輪・漆塗りの櫛などのような装身具が縄文時代の遺跡から数多く見つかっています。縄文人の入れ墨の文様が土偶の顔と胴体に刻まれていたのかもしれません。縄文人は文字を使わないで歯と体に手を加えたり、装身具を身につけたりして、自分の立場とどの集団の仲間なのかを相手に伝えていました。
縄文人は地面に楕円形の穴を掘って1人ずつ故人を埋めました(単葬土坑墓)。故人の手足を折り曲げて身体を小さく丸めたまま土の中へ埋めました(<span style="color:#f29100">'''屈葬'''</span>)。故人の霊が静かに眠れるように、再び生まれ変われるように、生存者を幸せにするために屈葬を各地で行っていました。縄文時代中期以降、故人の骨を取り出して、違う場所に再び埋め直しました(再葬)。北海道の縄文人は数名の故人をまとめて合葬墓に埋めました(環状土籬)。故人の耳飾り・首飾りなどもそのまま一緒に埋めました。縄文時代後期・晩期からそれ以外の副葬品[石器・土器・弓矢など]も一緒に埋めました。
== 資料出所 ==
* 平雅行、横田冬彦ほか編著『日本史探究』実教出版株式会社 2023年
* 佐藤信、五味文彦ほか編著『詳説日本史探究』株式会社山川出版社 2023年
* 渡邊晃宏ほか編著『日本史探究』東京書籍株式会社 2023年
* 伊藤純郎ほか編著『高等学校日本史探究』株式会社清水書院 2023年
* 大橋幸泰ほか編著『高等学校日本史探究』株式会社第一学習社 2023年
* 山中裕典著'''『'''改訂版 大学入学共通テスト 歴史総合、日本史探究の点数が面白いほどとれる本'''』'''株式会社KADOKAWA 2024年
* 佐藤信、五味文彦ほか編著『詳説日本史研究』株式会社山川出版社 2017年
* 河合敦著『世界一わかりやすい河合敦の日本史B[原始~鎌倉]の特別講座』株式会社KADOKAWA 2014年(絶版本)
[[カテゴリ:高等学校日本史探究]]
ttadts4qdzmpihh18vps48wzi5450ls
利用者:Linguae/sandbox
2
48941
304853
304533
2026-10-18T10:33:33Z
Linguae
449
/* 大アンティル */
304853
wikitext
text/x-wiki
*[[w:fr:Portail:Quiz]]
==アフリカ==
*[[w:fr:Portail:Quiz/Afrique localisation des pays]]
'''Connaissez-vous les pays d'Afrique ? '''
<div style="float: left; width: 600px">
<div style="position: relative; text-align: left;">[[Image:Africa location map without rivers.svg|500px]]
<div style="position:absolute; font-size:15px; border:none; left:120px; top:25px">''[[w:モロッコ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:157px; top:55px">''[[w:アルジェリア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:215px; top:18px">''[[w:チュニジア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:250px; top:55px">''[[w:リビア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:310px; top:55px">''[[w:エジプト|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:75px; top:75px">''[[w:西サハラ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:75px; top:110px">''[[w:モーリタニア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:130px; top:120px">''[[w:マリ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:195px; top:120px">''[[w:ニジェール|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:255px; top:135px">''[[w:チャド|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:315px; top:145px">''[[w:スーダン|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:325px; top:185px">''[[w:南スーダン|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:378px; top:130px">''[[w:エリトリア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:375px; top:175px">''[[w:エチオピア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:408px; top:160px">''[[w:ジブチ|?]]''</div>
<div style="position:absolute; font-size:18px; border:none; left:20px; top:127px">''[[w:カーボベルデ|?]]''</div>
<div style="position:absolute; font-size:18px; border:none; left:62px; top:132px">''[[w:セネガル|?]]''</div>
<div style="position:absolute; font-size:13px; border:none; left:53px; top:143px">''[[w:ガンビア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:55px; top:157px">''[[w:ギニアビサウ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:70px; top:162px">''[[w:ギニア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:135px; top:153px">''[[w:ブルキナファソ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:75px; top:180px">''[[w:シエラレオネ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:87px; top:191px">''[[w:リベリア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:115px; top:190px">''[[w:コートジボワール|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:135px; top:190px">''[[w:ガーナ|?]]''</div>
<div style="position:absolute; font-size:11px; border:none; left:154px; top:182px">''[[w:トーゴ|?]]''</div>
<div style="position:absolute; font-size:11px; border:none; left:161px; top:169px">''[[w:ベニン|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:185px; top:180px">''[[w:ナイジェリア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:196px; top:213px">''[[w:サントメ・プリンシペ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:220px; top:200px">''[[w:カメルーン|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:270px; top:190px">''[[w:中央アフリカ共和国|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:425px; top:200px">''[[w:ソマリア|?]]''</div>
<div style="position:absolute; font-size:13px; border:none; left:210px; top:225px">''[[w:赤道ギニア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:210px; top:239px">''[[w:ガボン|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:240px; top:235px">''[[w:コンゴ共和国|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:285px; top:250px">''[[w:コンゴ民主共和国|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:343px; top:220px">''[[w:ウガンダ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:373px; top:230px">''[[w:ケニア|?]]''</div>
<div style="position:absolute; font-size:12px; border:none; left:330px; top:250px">''[[w:ルワンダ|?]]''</div>
<div style="position:absolute; font-size:12px; border:none; left:330px; top:261px">''[[w:ブルンジ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:360px; top:274px">''[[w:タンザニア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:245px; top:315px">''[[w:アンゴラ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:308px; top:320px">''[[w:ザンビア|?]]''</div>
<div style="position:absolute; font-size:17px; border:none; left:355px; top:318px">''[[w:マラウイ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:249px; top:370px">''[[w:ナミビア|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:290px; top:370px">''[[w:ボツワナ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:325px; top:354px">''[[w:ジンバブエ|?]]''</div>
<div style="position:absolute; font-size:18px; border:none; left:348px; top:355px">''[[w:モザンビーク|?]]''</div>
<div style="position:absolute; font-size:18px; border:none; left:410px; top:317px">''[[w:コモロ|?]]''</div>
<div style="position:absolute; font-size:18px; border:none; left:460px; top:300px">''[[w:セーシェル|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:420px; top:360px">''[[w:マダガスカル|?]]''</div>
<div style="position:absolute; font-size:18px; border:none; left:477px; top:375px">''[[w:モーリシャス|?]]''</div>
<div style="position:absolute; font-size:18px; border:none; left:467px; top:380px">''[[w:レユニオン|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:285px; top:430px">''[[w:南アフリカ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:333px; top:397px">''[[w:エスワティニ|?]]''</div>
<div style="position:absolute; font-size:15px; border:none; left:314px; top:414px">''[[w:レソト|?]]''</div>
</div>
</div>
----
<div>
==アジア==
*[[w:fr:Portail:Quiz/Asie localisation des pays]]
----
==アメリカ==
*[[w:fr:Portail:Quiz/États-Unis localisation des États]]
----
==南アメリカ==
*[[w:fr:Portail:Quiz/Amérique du Sud localisation des pays]]
----
==ヨーロッパ==
*[[w:fr:Portail:Quiz/Europe localisation des pays]]
----
;ヨーロッパの国旗
*[[w:fr:Portail:Quiz/Drapeaux d'Europe 01]]
----
</div>
----
: [[:en:Category:Subject:Wikijunior Geography]]
* [[:en:Wikijunior:Countries_A-Z]]
** [[:en:Category:Book:Wikijunior:Countries_A-Z]]
**:; [[:en:Category:Book:Wikijunior:Countries A-Z/Continent map templates]]
**:: [[:en:Template:Wikijunior:Countries A-Z/North America Labelled Map]]
**:: [[:en:Template:Wikijunior:Countries A-Z/Lesser Antilles Labelled Map]]
**:: [[:en:Template:Wikijunior:Countries A-Z/World Labelled Map]]
==中央アメリカ・西インド諸島==
<div style="float: left; width: 600px">
<div style="position: relative; text-align: left;">[[Image:Central America blank map.png|500px]]
<div style="position:absolute; font-size:15px; border:none; left:1px; top:65px">メキシコ</div>
<div style="position:absolute; font-size:15px; border:none; left:120px; top:55px">ベリーズ</div>
<div style="position:absolute; font-size:15px; border:none; left:30px; top:100px">グアテマラ</div>
<div style="position:absolute; font-size:15px; border:none; left:150px; top:105px">ホンジュラス</div>
<div style="position:absolute; font-size:15px; border:none; left:40px; top:160px">エルサルバドル</div>
<div style="position:absolute; font-size:15px; border:none; left:190px; top:180px">ニカラグア</div>
<div style="position:absolute; font-size:15px; border:none; left:250px; top:260px">コスタリカ</div>
<div style="position:absolute; font-size:15px; border:none; left:330px; top:307px">パナマ</div>
<div style="position:absolute; font-size:15px; border:none; left:405px; top:350px">(コロンビア)</div>
</div>
*[[:c:Category:SVG blank maps of the Americas]]
**[[:c:Category:Blank maps of Central America]]
***[[:c:Category:SVG blank maps of Central America]]
***:[[:c:File:Caribbean location map.svg]]
***: [[:c:File:West Indies - Island Groups (lb).svg]]
***:[[:c:File:Outline map of Central America with borders.svg]]
***: [[:File:Map of Central America.svg]]
*[[:c:File:Middle America location map.svg]](中部)
*:[[:c:File:Middle America relief location map.png]](中部の地形)
===西インド諸島・アンティル諸島===
*[[:c:Category:SVG maps of the Caribbean]]
*:[[:c:Category:Location maps of Caribbean]]
:
*[[:c:File:Caribbean in its region.svg]](詳細)
*[[:c:File:Caribbean location map.svg]]
*[[:c:File:Caribe-Político.svg]](着色区分)
:
*[[:c:File:Relief Map of Caribbean.png]]
*[[:c:File:Eastern Caribbean.png]]
:
*[[:c:File:Caribe en blanco.PNG]](着色区分)
===大アンティル===
*[[:c:File:Caribbean - Greater Antilles.PNG]]
[[w:大アンティル諸島|大アンティル諸島]]
<div style="float: left; width: 703px">
<div style="position: relative; text-align: left;">[[Image:Caribbean - Greater Antilles.PNG]]
<div style="position:absolute; font-size:15px; border:none; left:100px; top:2px">(アメリカ合衆国)</div>
<div style="position:absolute; font-size:15px; border:none; left:110px; top:20px">([[w:フロリダ半島|フロリダ半島]])</div>
<div style="position:absolute; font-size:40px; border:none; left:470px; top:30px"><!--◆-->([[w:大西洋|大 西 洋]])</div>
<div style="position:absolute; font-size:15px; border:none; left:260px; top:30px">([[w:バハマ|バハマ]])</div>
<div style="position:absolute; font-size:25px; border:none; left:280px; top:70px">([[w:バハマ諸島|バハマ諸島]])</div>
<div style="position:absolute; font-size:12px; border:none; left:400px; top:115px">([[w:タークス・カイコス諸島|英領タークス・カイコス諸島]])</div>
<div style="position:absolute; font-size:12px; border:none; left:365px; top:130px">([[w:イナグア島|大・小イナグア島]])</div>
<div style="position:absolute; font-size:16px; border:none; left:320px; top:200px">[[w:イスパニョーラ島|イスパニョーラ島]]</div>
<div style="position:absolute; font-size:18px; border:none; left:330px; top:165px">[[w:ハイチ|ハイチ]]|[[w:ドミニカ共和国|ドミニカ共和国]]</div>
<div style="position:absolute; font-size:11px; border:none; left:170px; top:185px">[[w:ケイマン諸島|英領ケイマン諸島]]</div>
<div style="position:absolute; font-size:17px; border:none; left:528px; top:240px"><!--◆-->([[w:小アンティル諸島|小アンティル諸島]])</div>
<div style="position:absolute; font-size:11px; border:none; left:580px; top:210px">([[w:リーワード諸島 (西インド諸島)|リーワード諸島]])</div>
<div style="position:absolute; font-size:11px; border:none; left:580px; top:290px">([[w:ウィンドワード諸島 (西インド諸島)|ウィンドワード諸島]])</div>
<div style="position:absolute; font-size:11px; border:none; left:450px; top:320px">([[w:リーワード・アンティル諸島|リーワード・アンティル諸島]])</div>
<div style="position:absolute; font-size:28px; border:none; left:220px; top:250px"><!--◆-->([[w:カリブ海|カリブ海]])</div>
<div style="position:absolute; font-size:15px; border:none; left:5px; top:40px">([[w:メキシコ湾|メキシコ湾]])</div>
<div style="position:absolute; font-size:14px; border:none; left:0px; top:115px">([[w:ユカタン半島|ユカタン半島]])</div>
<div style="position:absolute; font-size:15px; border:none; left:1px; top:155px">([[w:メキシコ|メキシコ]])</div>
<div style="position:absolute; font-size:15px; border:none; left:30px; top:205px">([[w:ベリーズ|ベリーズ]])</div>
<div style="position:absolute; font-size:15px; border:none; left:0px; top:240px">([[w:グアテマラ|グアテマラ]])</div>
<div style="position:absolute; font-size:15px; border:none; left:30px; top:265px">([[w:ホンジュラス|ホンジュラス]])</div>
<div style="position:absolute; font-size:12px; border:none; left:0px; top:300px">([[w:エルサルバドル|エルサルバドル]])</div>
<div style="position:absolute; font-size:15px; border:none; left:100px; top:320px">([[w:ニカラグア|ニカラグア]])</div>
<div style="position:absolute; font-size:15px; border:none; left:100px; top:380px">([[w:コスタリカ|コスタリカ]])</div>
<div style="position:absolute; font-size:15px; border:none; left:200px; top:400px">([[w:パナマ|パナマ]])</div>
<div style="position:absolute; font-size:25px; border:none; left:380px; top:450px"><!--◆-->([[w:南アメリカ|南アメリカ]])</div>
<div style="position:absolute; font-size:15px; border:none; left:450px; top:400px">([[w:ベネズエラ|ベネズエラ]])</div>
<div style="position:absolute; font-size:15px; border:none; left:300px; top:430px">([[w:コロンビア|コロンビア]])</div>
<div style="position:absolute; font-size:30px; border:none; left:25px; top:420px"><!--◆-->([[w:太平洋|太平洋]])</div>
</div>
:
*[[:c:File:Greater Antilles location map.svg]](大アンティル・バハマ)
*:[[:c:File:Greater Antilles.png]]
===小アンティル===
*[[:c:File:Lesser Antilles locator map.svg]](詳細)
*:[[:c:File:Caribbean - Lesser Antilles.PNG]]
*:[[:c:File:Lesser Antilles location map.svg]]
*:[[:c:File:Lesser Antilles regional proximity.svg]]
*:[[:c:File:Islas de las Antillas menores.svg]] [[:c:File:Dólar del Caribe Oriental.svg]]
**:[[:File:Lesser Antilles named.svg]]
:
*[[:c:File:South america.jpg]]
===バハマ諸島===
*[[:c:Category:Maps of the Bahamas]]
*:[[:c:File:Bahamas regions map-es.svg]]
93g872j3gei1eywz236bookbkdx2xfl
ガリア戦記 第7巻/注解/34節
0
48945
304847
304259
2026-10-18T09:33:10Z
Linguae
449
/* 外部リンク */
304847
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;">C · IVLII · CAESARIS · COMMENTARIORVM · BELLI · GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;">LIBER · SEPTIMVS</div>
<br>
{| id="toc" style="align:center;clear:all;" align="center" cellpadding="5"
|-
! style="background:#bbf; text-align:center;" | [[ガリア戦記/注解編|ガリア戦記 注解編]]
| style="background:#ccf; text-align:center;" | [[ガリア戦記 第7巻/注解|第7巻]]
| style="background:#eef; text-align:center;"|
[[ガリア戦記 第7巻/注解/33節|33節]] |
[[ガリア戦記 第7巻/注解/34節|34節]] |
[[ガリア戦記 第7巻/注解/35節|35節]]
|}
__notoc__
== 原文テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>原文テキストについては[[ガリア戦記/注解編#原文テキスト]]を参照。</ref>
</div>
<span style="background-color:#ffc;"></span>
<!--❶--><!--❷--><!--❸--><!--❹--><!--❺--><!--❻--><!--❼--><!--❽--><!--❾--><!--❿--><!--⓫--><!--⓬--><sup></sup>
<!-- <!--◆--> -->
----
;テキスト引用についての注記
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:bold;font-size:15pt;"></span>
== 整形テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>整形テキストについては[[ガリア戦記/注解編#凡例]]を参照。</ref>
</div>
<span style="color:#800;"></span>
<!--❶--><!--❷--><!--❸--><!--❹--><!--❺--><!--❻--><!--❼--><!--❽--><!--❾--><!--❿--><!--⓫--><!--⓬--><sup></sup>
<!-- <!--◆--> -->
----
;注記
<!--
*原文の <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:acclivis#Latin|acclīvis]], [[wikt:en:accommodatae|accommodātae]], [[wikt:en:allatis|allātīs]], [[wikt:en:Aduatuca#Latin|Aduātucam]], [[wikt:en:Aduatuci|Aduatucī]], [[wikt:en:Aduatucis|Aduatucīs]], [[wikt:en:Aduatucos|Aduatucōs]], [[wikt:en:Aeduae|Aeduae]], [[wikt:en:Aedui#Latin|Aeduī]], [[wikt:en:Aeduis|Aeduīs]], [[wikt:en:Aeduorum|Aeduōrum]], [[wikt:en:Aeduos|Aeduōs]], [[wikt:en:Aeduus#Latin|Aeduus]], [[wikt:en:aequinocti|aequinoctī]], [[wikt:en:affecti|affectī]], [[wikt:en:affectus#Participle|affectus]], [[wikt:en:afferat|afferat]], [[wikt:en:afferebat|afferēbat]], [[wikt:en:afferret|afferret]], [[wikt:en:afferretur|afferrētur]], [[wikt:en:afflictae|afflīctae]], [[wikt:en:affligunt|afflīgunt]], [[wikt:en:aggregabat|aggregābat]], [[wikt:en:aggregaverant|aggregāverant]] ([[wikt:en:aggregarant|aggregārant]]), [[wikt:en:allato|allātō]], [[wikt:en:alliciebat#Latin|alliciēbat]], [[wikt:en:Alpis#Latin|Alpīs]], [[wikt:en:appelluntur|appelluntur]], [[wikt:en:appetebat|appetēbat]], [[wikt:en:apportari|apportārī]], [[wikt:en:applicant#Latin|applicant]], [[wikt:en:approbant#Latin|approbant]], [[wikt:en:appropinquabat|appropinquābat]], [[wikt:en:appropinquare#Latin|appropinquāre]], [[wikt:en:appropinquarent|appropinquārent]], [[wikt:en:appropinquassent|appropinquāssent]], [[wikt:en:appropinquaverunt|appropinquāvērunt]] ([[wikt:en:appropinquarunt|appropinquārunt]]), [[wikt:en:appropinquavit|appropinquāvit]], [[wikt:en:appulso#Latin|appulsō]], [[wikt:en:arripere|arripere]], [[wikt:en:articlis|articlīs]], [[wikt:en:ascendissent#Latin|ascendissent]], [[wikt:en:ascensu#Noun|ascēnsū]], [[wikt:en:assidua#Latin|assiduā]], [[wikt:en:assiduis#Latin|assiduīs]], [[wikt:en:assuefacti|assuēfactī]], [[wikt:en:assuescere#Latin|assuēscere]], [[wikt:en:attingit|attingit]], [[wikt:en:attingunt|attingunt]], [[wikt:en:attribuerat#Latin|attribuerat]], [[wikt:en:attribuit|attribuit]], [[wikt:en:attribuunt|attribuunt]], [[wikt:en:auris#Latin|aurīs]], [[wikt:en:auxili#Latin|auxilī]], [[wikt:en:cedentis|cēdentīs]], [[wikt:en:civis#Latin|cīvīs]], [[wikt:en:clientis|clientīs]], [[wikt:en:cohortis|cohortīs]], [[wikt:en:coicere|coicere]], [[wikt:en:coicerent|coicerent]], [[wikt:en:coici|coicī]], [[wikt:en:coiciant|coiciant]], [[wikt:en:coiciebant|coiciēbant]], [[wikt:en:coiciunt|coiciunt]], [[wikt:en:coiecerant|coiēcerant]], [[wikt:en:coiecerunt|coiēcērunt]], [[wikt:en:coiecisse|coiēcisse]], [[wikt:en:coiecta|coiecta]], [[wikt:en:coiecti|coiectī]], [[wikt:en:coiectis|coiectīs]], [[wikt:en:collatis|collātīs]], [[wikt:en:collaudantur|collaudantur]], [[wikt:en:collaudat|collaudat]], [[wikt:en:collaudatis#Participle|collaudātīs]], [[wikt:en:collis#Latin|collīs]], [[wikt:en:collocabant|collocābant]], [[wikt:en:collocabat|collocābat]], [[wikt:en:collocandis|collocandīs]], [[wikt:en:collocant#Latin|collocant]], [[wikt:en:collocantur#Latin|collocantur]], [[wikt:en:collocarat|collocārat]], [[wikt:en:collocare#Latin|collocāre]], [[wikt:en:collocaret|collocāret]], [[wikt:en:collocari|collocārī]], [[wikt:en:collocatas|collocātās]], [[wikt:en:collocati#Latin|collocātī]], [[wikt:en:collocatis#Participle|collocātīs]], [[wikt:en:collocaverat#Latin|collocāverat]], [[wikt:en:collocavit|collocāvit]], [[wikt:en:collocuti|collocūtī]], [[wikt:en:colloquantur|colloquantur]], [[wikt:en:colloquendi|colloquendī]], [[wikt:en:colloqui#Latin|colloquī]], [[wikt:en:colloquium#Latin|colloquium]], [[wikt:en:communis#Latin|commūnīs]], [[wikt:en:compluribus|complūribus]], [[wikt:en:compluris|complūrīs]], [[wikt:en:comprehensis|comprehēnsīs]], [[wikt:en:comprehensos|comprehēnsōs]], [[wikt:en:conantis|cōnantīs]], [[wikt:en:consili|cōnsilī]], [[wikt:en:directus#Latin|dīrēctus]], [[wikt:en:dubitantis#Participle_2|dubitantīs]], [[wikt:en:effarciuntur#Latin|effarciuntur]], [[wikt:en:egredientis#Etymology_2|ēgredientīs]], [[wikt:en:ei#Latin|eī]], [[wikt:en:eis#Latin|eīs]], [[wikt:en:existit#Latin|existit]], [[wikt:en:expectent#Latin|expectent]], [[wikt:en:exposcentis#Participle_2|exposcentīs]], [[wikt:en:exstruxerunt#Latin|exstruxerunt]], [[wikt:en:ferventis#Latin|ferventīs]], [[wikt:en:finis#Latin|fīnīs]], [[wikt:en:glandis#Latin|glandīs]], [[wikt:en:haesitantis#Participle_2|haesitantīs]], [[wikt:en:hostis#Latin|hostīs]], [[wikt:en:ignis#Latin|ignīs]], [[wikt:en:illatas|illātās]], [[wikt:en:illustrem#Latin:_adjective|illūstrem]], [[wikt:en:immittit|immittit]], [[wikt:en:immittunt|immittunt]], [[wikt:en:imparatum|imparātum]], [[wikt:en:impedita#Latin|impedīta]], [[wikt:en:imperi#Latin|imperī]], [[wikt:en:imprudentia#Noun|imprūdentia]], [[wikt:en:incolumis#Latin|incolumīs]], [[wikt:en:indignantis#Participle_2|indignantīs]], [[wikt:en:inopinantis#Adjective_2|inopīnantīs]], [[wikt:en:irridere#Latin|irrīdēre]], [[wikt:en:irrumpere|irrumpere]], [[wikt:en:irrumpit|irrumpit]], [[wikt:en:irruperunt|irrūpērunt]], [[wikt:en:laborantis#Etymology_2|labōrantīs]], [[wikt:en:montis|montīs]], [[wikt:en:natalis#Latin|nātālīs]], [[wikt:en:navis#Latin|nāvīs]], [[wikt:en:negoti|negōtī]], nōn nūllae, nōn nūllōs, [[wikt:en:offici#Noun_2|officī]], [[wikt:en:omnis#Latin|omnīs]], [[wikt:en:partis#Latin|partīs]], [[wikt:en:periclum#Latin|perīclum]], plūrīs, [[wikt:en:praesidi|praesidī]], [[wikt:en:proeli|proelī]], proficīscentīs, [[wikt:en:resistentis|resistentīs]], [[wikt:en:singularis#Latin|singulārīs]], [[wikt:en:solaci|sōlācī]], [[wikt:en:spati#Latin|spatī]], [[wikt:en:subeuntis|subeuntīs]], [[wikt:en:suffossis|suffossīs]], [[wikt:en:sumministrata|sumministrāta]], [[wikt:en:summissis|summissīs]], [[wikt:en:summittantur#Latin|summittantur]], [[wikt:en:summittebat|summittēbat]], [[wikt:en:summittit|summittit]], [[wikt:en:summotis|summōtīs]], [[wikt:en:summoveri|summovērī]], [[wikt:en:supplici#Noun|supplicī]], [[wikt:en:testis#Latin|testīs]], [[wikt:en:timentis#Participle_2|timentīs]], [[wikt:en:Tituri|Titūrī]], [[wikt:en:Trinobantes#Latin|Trinobantēs]], trīs, [[wikt:en:turris#Latin|turrīs]], [[wikt:en:utilis#Latin|ūtilīs]], [[wikt:en:vectigalis#Latin|vectīgālīs]] </span> などは、<br>それぞれ <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:adclivis#Latin|adclīvis]], [[wikt:en:adcommodatae|adcommodātae]], [[wikt:en:adlatis|adlātīs]], Atuātucam, [[wikt:de:Atuatuci|Atuatucī]], Atuatucīs, Atuatucōs, Haeduae, [[wikt:en:Haedui|Haeduī]], [[wikt:en:Haeduis|Haeduīs]], [[wikt:en:Haeduorum|Haeduōrum]], [[wikt:en:Haeduos|Haeduōs]], Haeduus, [[wikt:en:aequinoctii|aequinoctiī]], [[wikt:en:adfecti|adfectī]], [[wikt:en:adfectus#Adjective|adfectus]], [[wikt:en:adferat|adferat]], [[wikt:en:adferebat|adferēbat]], [[wikt:en:adferret|adferret]], [[wikt:en:adferretur|adferrētur]], [[wikt:en:adflictae|adflīctae]], [[wikt:en:adfligunt|adflīgunt]], [[wikt:en:adgregabat|adgregābat]], [[wikt:en:adgregaverant|adgregāverant]] ([[wikt:en:adgregarant|adgregārant]]), [[wikt:en:adlato|adlātō]], [[wikt:en:adliciebat#Latin|adliciēbat]], [[wikt:en:Alpes#Latin|Alpēs]], [[wikt:en:adpelluntur|adpelluntur]], [[wikt:en:adpetebat|adpetēbat]], [[wikt:en:adportari|adportārī]], [[wikt:en:adplicant|adplicant]], [[wikt:en:adprobant#Latin|adprobant]], [[wikt:en:adpropinquabat|adpropinquābat]], [[wikt:en:adpropinquare|adpropinquāre]], [[wikt:en:adpropinquarent|adpropinquārent]], [[wikt:en:adpropinquassent|adpropinquāssent]], [[wikt:en:adpropinquaverunt|adpropinquāvērunt]] ([[wikt:en:adpropinquarunt|adpropinquārunt]]), [[wikt:en:adpropinquavit|adpropinquāvit]], [[wikt:en:adpulso|adpulsō]], [[wikt:en:adripere|adripere]], [[wikt:en:articulis|articulīs]], [[wikt:en:adscendissent|adscendissent]], [[wikt:en:adscensu#Noun|adscēnsū]], [[wikt:en:adsidua|adsiduā]], [[wikt:en:adsiduis#Latin|adsiduīs]], [[wikt:en:adsuefacti|adsuēfactī]], [[wikt:en:adsuescere#Latin|adsuēscere]], [[wikt:en:adtingit|adtingit]], [[wikt:en:adtingunt|adtingunt]], [[wikt:en:adtribuerat#Latin|adtribuerat]], [[wikt:en:adtribuit|adtribuit]], [[wikt:en:adtribuunt|adtribuunt]], [[wikt:en:aures#Noun|aurēs]], [[wikt:en:auxilii|auxiliī]], [[wikt:en:cedentes#Latin|cēdentēs]], [[wikt:en:cives#Latin|cīvēs]], [[wikt:en:clientes#Latin|clientēs]], [[wikt:en:cohortes#Latin|cohortēs]], [[wikt:en:conicere|conicere]], [[wikt:en:conicerent|conicerent]], [[wikt:en:conici#Latin|conicī]], [[wikt:en:coniciant|coniciant]], [[wikt:en:coniciebant|coniciēbant]], [[wikt:en:coniciunt|coniciunt]], [[wikt:en:coniecerant|coniēcerant]], [[wikt:en:coniecerunt|coniēcērunt]], [[wikt:en:coniecisse|coniēcisse]], [[wikt:en:coniecta|coniecta]], [[wikt:en:coniecti|coniectī]], [[wikt:en:coniectis|coniectīs]], [[wikt:en:conlatis|conlātīs]], [[wikt:en:conlaudantur|conlaudantur]], [[wikt:en:conlaudat|conlaudat]], [[wikt:en:conlaudatis#Participle|conlaudātīs]], [[wikt:en:colles#Latin|collēs]], [[wikt:en:conlocabant|conlocābant]], [[wikt:en:conlocabat|conlocābat]], [[wikt:en:conlocandis|conlocandīs]], [[wikt:en:conlocant|conlocant]], [[wikt:en:conlocantur#Latin|conlocantur]], [[wikt:en:conlocarat|conlocārat]], [[wikt:en:conlocare|conlocāre]], [[wikt:en:conlocaret|conlocāret]], [[wikt:en:conlocari|conlocārī]], [[wikt:en:conlocatas|conlocātās]], [[wikt:en:conlocati|conlocātī]], [[wikt:en:conlocatis#Participle|conlocātīs]], [[wikt:en:conlocaverat#Latin|conlocāverat]], [[wikt:en:conlocavit|conlocāvit]], [[wikt:en:conlocuti|conlocūtī]], [[wikt:en:conloquantur|conloquantur]], [[wikt:en:conloquendi|conloquendī]], [[wikt:en:conloqui#Latin|conloquī]], [[wikt:en:conloquium#Latin|conloquium]], [[wikt:en:communes#Latin|commūnēs]], [[wikt:en:conpluribus|conplūribus]], [[wikt:en:complures#Latin|complūrēs]], [[wikt:en:conprehensis|conprehēnsīs]], [[wikt:en:conprehensos|conprehēnsōs]], [[wikt:en:conantes|cōnantēs]], [[wikt:en:consilii|cōnsiliī]], [[wikt:en:derectus#Latin|dērēctus]], [[wikt:en:dubitantes|dubitantēs]], [[wikt:en:efferciuntur#Latin|efferciuntur]], [[wikt:en:egredientes|ēgredientēs]], [[wikt:en:ii#Latin|iī]], [[wikt:en:iis#Latin|iīs]], [[wikt:en:exsistit|exsistit]], [[wikt:en:exspectent#Latin|exspectent]], [[wikt:en:exposcentes#Latin|exposcentēs]], [[wikt:en:extruxerunt#Latin|extruxerunt]], [[wikt:en:ferventes#Latin|ferventēs]], [[wikt:en:fines#Latin|fīnēs]], [[wikt:en:glandes#Latin|glandēs]], [[wikt:en:haesitantes#Latin|haesitantēs]], [[wikt:en:hostes#Latin|hostēs]], [[wikt:en:ignes|ignēs]], [[wikt:en:inlatas|inlātās]], [[wikt:en:inlustrem#Latin:_adjective|inlūstrem]], [[wikt:en:inmittit|inmittit]], [[wikt:en:inmittunt|inmittunt]], [[wikt:en:inparatum|inparātum]], [[wikt:en:inpedita#Latin|inpedīta]], [[wikt:en:imperii#Latin|imperiī]], [[wikt:en:inprudentia#Noun|inprūdentia]], [[wikt:en:incolumes|incolumēs]], [[wikt:en:indignantes#Latin|indignantēs]], [[wikt:en:inopinantes|inopīnantēs]], [[wikt:en:inridere|inrīdēre]], [[wikt:en:inrumpere|inrumpere]], [[wikt:en:inrumpit|inrumpit]], [[wikt:en:inruperunt|inrūpērunt]], [[wikt:en:laborantes#Latin|labōrantēs]], [[wikt:en:montes#Latin|montēs]], [[wikt:en:natales#Latin|nātālēs]], [[wikt:en:naves#Latin|nāvēs]], [[wikt:en:negotii|negōtiī]], [[wikt:en:nonnullae|nōnnūllae]], [[wikt:en:nonnullos|nōnnūllōs]], [[wikt:en:officii#Latin|officiī]], [[wikt:en:omnes#Latin|omnēs]], [[wikt:en:partes#Latin|partēs]], [[wikt:en:periculum#Latin|perīculum]], [[wikt:en:plures|plūrēs]], [[wikt:en:praesidii|praesidiī]], [[wikt:en:proelii|proeliī]], [[wikt:en:proficiscentes|proficīscentēs]], [[wikt:en:resistentes#Latin|resistentēs]], [[wikt:en:singulares#Latin|singulārēs]], [[wikt:en:solacii|sōlāciī]], [[wikt:en:spatii#Latin|spatiī]], [[wikt:en:subeuntes|subeuntēs]], [[wikt:en:subfossis|subfossīs]], [[wikt:en:subministrata|subministrāta]], [[wikt:en:submissis|submissīs]], [[wikt:en:submittantur#Latin|submittantur]], [[wikt:en:submittebat|submittēbat]], [[wikt:en:submittit|submittit]], [[wikt:en:submotis|submōtīs]], [[wikt:en:submoveri|submovērī]], [[wikt:en:supplicii|suppliciī]], [[wikt:en:testes#Latin|testēs]], [[wikt:en:timentes|timentēs]], [[wikt:en:Titurii|Titūriī]], [[wikt:en:Trinovantes#Latin|Trinovantēs]], [[wikt:en:tres#Latin|trēs]], [[wikt:en:turres#Latin|turrēs]], [[wikt:en:utiles#Latin|ūtilēs]], [[wikt:en:vectigales|vectīgālēs]] </span> などとした。
-->
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="color:#b00;"></span>
<span style="color:#800;"></span>
<span style="font-size:10pt;"></span>
<span style="background-color:#ff0;"></span>
== 注解 ==
=== 1項 ===
<span style="font-family:Times New Roman;font-size:20pt;"></span>
;語釈
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="background-color:#ccffcc;"></span>
<!--
;対訳
《 》 内は、訳者が説明のために補った語。<span style="font-family:Times New Roman;font-size:30pt;">{</span> <span style="font-family:Times New Roman;font-size:30pt;">}</span> 内は関係文。
<span style="font-family:Times New Roman;font-size:15pt;"></span>
-->
== 訳文 ==
*<span style="background-color:#dff;">訳文は、[[ガリア戦記_第7巻#34節]]</span>
== 脚注 ==
{{Reflist}}
== 解説 ==
<!--
{| class="wikitable" style="text-align:center"
|- style="height:23em;"
|
|
|}
-->
== 関連項目 ==
*[[ガリア戦記]]
**[[ガリア戦記/注解編]]
***[[ガリア戦記 第7巻/注解]]
**[[ガリア戦記/用例集]]
== 関連記事 ==
== 外部リンク ==
* [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=263 #263 - C. Iuli Caesaris De bello gallico libri VII : Caesar's Gallic ... - Full View | HathiTrust Digital Library]
* [https://scaife.perseus.org/reader/urn:cts:latinLit:phi0448.phi001.perseus-lat2:7.34 Scaife Viewer | De Bello Gallico]
* [https://reader.humanitext.ai/en/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:7.34.1-7.34.3 Division of the Army and the March on Gergovia — Julius Caesar, Gallic War Book 7 (7.34.1–7.34.3), Latin & English · Humanitext Reader]
* [https://reader.humanitext.ai/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:7.34.1-7.34.3 カエサルによる軍の分割とゲルゴウィア進軍|『ガリア戦記』§7.34.1-7.34.3(ユリウス・カエサル)ラテン語原文・日本語訳 · Humanitext Reader]
[[Category:ガリア戦記 第7巻|34節]]
bfqvh6arskjckuhtxjsbhyhe359q7br
304849
304847
2026-10-18T09:53:51Z
Linguae
449
/* 原文テキスト */
304849
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;">C · IVLII · CAESARIS · COMMENTARIORVM · BELLI · GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;">LIBER · SEPTIMVS</div>
<br>
{| id="toc" style="align:center;clear:all;" align="center" cellpadding="5"
|-
! style="background:#bbf; text-align:center;" | [[ガリア戦記/注解編|ガリア戦記 注解編]]
| style="background:#ccf; text-align:center;" | [[ガリア戦記 第7巻/注解|第7巻]]
| style="background:#eef; text-align:center;"|
[[ガリア戦記 第7巻/注解/33節|33節]] |
[[ガリア戦記 第7巻/注解/34節|34節]] |
[[ガリア戦記 第7巻/注解/35節|35節]]
|}
__notoc__
== 原文テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>原文テキストについては[[ガリア戦記/注解編#原文テキスト]]を参照。</ref> 34.
<!--❶--><sup>1</sup>Hoc decreto interposito, cohortatus Aeduos<!--Haeduos--><!--,--> ut controversiarum ac dissensionis obliviscerentur atque omnibus omissis his rebus huic bello servirent, eaque<!--,--> quae meruissent<!--,--> praemia ab se devicta Gallia exspectarent<!--,--> equitatumque omnem et peditum milia <span style="background-color:#ffc;">X</span><!--decem--> sibi celeriter mitterent<!--,--> quae in praesidiis rei frumentariae causa disponeret, exercitum in duas partis<!--partes--> divisit: <!--◆--> <!--❷--><sup>2</sup>quattuor legiones in Senones Parisiosque Labieno ducendas dedit, sex ipse in Arvernos ad oppidum Gergoviam secundum flumen Elaver duxit<!--:-->; <!--◆--> equitatus partem illi <span style="background-color:#ffc;">attribuit</span><!--adtribuit-->, partem sibi reliquit. <!--◆--> <!--❸--><sup>3</sup>Qua re cognita Vercingetorix omnibus interruptis eius fluminis pontibus ab altera fluminis parte iter facere coepit. </div>
<span style="background-color:#ffc;"></span>
----
;テキスト引用についての注記
*<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:X#Latin|X]] : [[wikt:en:decem#Latin|decem]]</span> と表記する校訂版もある。
*<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:attribuit#Latin|attribuit]] : [[wikt:en:adtribuit#Latin|adtribuit]]</span> と表記している校訂版もある。
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:bold;font-size:15pt;"></span>
== 整形テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>整形テキストについては[[ガリア戦記/注解編#凡例]]を参照。</ref>
</div>
<span style="color:#800;"></span>
<!--❶--><!--❷--><!--❸--><!--❹--><!--❺--><!--❻--><!--❼--><!--❽--><!--❾--><!--❿--><!--⓫--><!--⓬--><sup></sup>
<!-- <!--◆--> -->
----
;注記
<!--
*原文の <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:acclivis#Latin|acclīvis]], [[wikt:en:accommodatae|accommodātae]], [[wikt:en:allatis|allātīs]], [[wikt:en:Aduatuca#Latin|Aduātucam]], [[wikt:en:Aduatuci|Aduatucī]], [[wikt:en:Aduatucis|Aduatucīs]], [[wikt:en:Aduatucos|Aduatucōs]], [[wikt:en:Aeduae|Aeduae]], [[wikt:en:Aedui#Latin|Aeduī]], [[wikt:en:Aeduis|Aeduīs]], [[wikt:en:Aeduorum|Aeduōrum]], [[wikt:en:Aeduos|Aeduōs]], [[wikt:en:Aeduus#Latin|Aeduus]], [[wikt:en:aequinocti|aequinoctī]], [[wikt:en:affecti|affectī]], [[wikt:en:affectus#Participle|affectus]], [[wikt:en:afferat|afferat]], [[wikt:en:afferebat|afferēbat]], [[wikt:en:afferret|afferret]], [[wikt:en:afferretur|afferrētur]], [[wikt:en:afflictae|afflīctae]], [[wikt:en:affligunt|afflīgunt]], [[wikt:en:aggregabat|aggregābat]], [[wikt:en:aggregaverant|aggregāverant]] ([[wikt:en:aggregarant|aggregārant]]), [[wikt:en:allato|allātō]], [[wikt:en:alliciebat#Latin|alliciēbat]], [[wikt:en:Alpis#Latin|Alpīs]], [[wikt:en:appelluntur|appelluntur]], [[wikt:en:appetebat|appetēbat]], [[wikt:en:apportari|apportārī]], [[wikt:en:applicant#Latin|applicant]], [[wikt:en:approbant#Latin|approbant]], [[wikt:en:appropinquabat|appropinquābat]], [[wikt:en:appropinquare#Latin|appropinquāre]], [[wikt:en:appropinquarent|appropinquārent]], [[wikt:en:appropinquassent|appropinquāssent]], [[wikt:en:appropinquaverunt|appropinquāvērunt]] ([[wikt:en:appropinquarunt|appropinquārunt]]), [[wikt:en:appropinquavit|appropinquāvit]], [[wikt:en:appulso#Latin|appulsō]], [[wikt:en:arripere|arripere]], [[wikt:en:articlis|articlīs]], [[wikt:en:ascendissent#Latin|ascendissent]], [[wikt:en:ascensu#Noun|ascēnsū]], [[wikt:en:assidua#Latin|assiduā]], [[wikt:en:assiduis#Latin|assiduīs]], [[wikt:en:assuefacti|assuēfactī]], [[wikt:en:assuescere#Latin|assuēscere]], [[wikt:en:attingit|attingit]], [[wikt:en:attingunt|attingunt]], [[wikt:en:attribuerat#Latin|attribuerat]], [[wikt:en:attribuit|attribuit]], [[wikt:en:attribuunt|attribuunt]], [[wikt:en:auris#Latin|aurīs]], [[wikt:en:auxili#Latin|auxilī]], [[wikt:en:cedentis|cēdentīs]], [[wikt:en:civis#Latin|cīvīs]], [[wikt:en:clientis|clientīs]], [[wikt:en:cohortis|cohortīs]], [[wikt:en:coicere|coicere]], [[wikt:en:coicerent|coicerent]], [[wikt:en:coici|coicī]], [[wikt:en:coiciant|coiciant]], [[wikt:en:coiciebant|coiciēbant]], [[wikt:en:coiciunt|coiciunt]], [[wikt:en:coiecerant|coiēcerant]], [[wikt:en:coiecerunt|coiēcērunt]], [[wikt:en:coiecisse|coiēcisse]], [[wikt:en:coiecta|coiecta]], [[wikt:en:coiecti|coiectī]], [[wikt:en:coiectis|coiectīs]], [[wikt:en:collatis|collātīs]], [[wikt:en:collaudantur|collaudantur]], [[wikt:en:collaudat|collaudat]], [[wikt:en:collaudatis#Participle|collaudātīs]], [[wikt:en:collis#Latin|collīs]], [[wikt:en:collocabant|collocābant]], [[wikt:en:collocabat|collocābat]], [[wikt:en:collocandis|collocandīs]], [[wikt:en:collocant#Latin|collocant]], [[wikt:en:collocantur#Latin|collocantur]], [[wikt:en:collocarat|collocārat]], [[wikt:en:collocare#Latin|collocāre]], [[wikt:en:collocaret|collocāret]], [[wikt:en:collocari|collocārī]], [[wikt:en:collocatas|collocātās]], [[wikt:en:collocati#Latin|collocātī]], [[wikt:en:collocatis#Participle|collocātīs]], [[wikt:en:collocaverat#Latin|collocāverat]], [[wikt:en:collocavit|collocāvit]], [[wikt:en:collocuti|collocūtī]], [[wikt:en:colloquantur|colloquantur]], [[wikt:en:colloquendi|colloquendī]], [[wikt:en:colloqui#Latin|colloquī]], [[wikt:en:colloquium#Latin|colloquium]], [[wikt:en:communis#Latin|commūnīs]], [[wikt:en:compluribus|complūribus]], [[wikt:en:compluris|complūrīs]], [[wikt:en:comprehensis|comprehēnsīs]], [[wikt:en:comprehensos|comprehēnsōs]], [[wikt:en:conantis|cōnantīs]], [[wikt:en:consili|cōnsilī]], [[wikt:en:directus#Latin|dīrēctus]], [[wikt:en:dubitantis#Participle_2|dubitantīs]], [[wikt:en:effarciuntur#Latin|effarciuntur]], [[wikt:en:egredientis#Etymology_2|ēgredientīs]], [[wikt:en:ei#Latin|eī]], [[wikt:en:eis#Latin|eīs]], [[wikt:en:existit#Latin|existit]], [[wikt:en:expectent#Latin|expectent]], [[wikt:en:exposcentis#Participle_2|exposcentīs]], [[wikt:en:exstruxerunt#Latin|exstruxerunt]], [[wikt:en:ferventis#Latin|ferventīs]], [[wikt:en:finis#Latin|fīnīs]], [[wikt:en:glandis#Latin|glandīs]], [[wikt:en:haesitantis#Participle_2|haesitantīs]], [[wikt:en:hostis#Latin|hostīs]], [[wikt:en:ignis#Latin|ignīs]], [[wikt:en:illatas|illātās]], [[wikt:en:illustrem#Latin:_adjective|illūstrem]], [[wikt:en:immittit|immittit]], [[wikt:en:immittunt|immittunt]], [[wikt:en:imparatum|imparātum]], [[wikt:en:impedita#Latin|impedīta]], [[wikt:en:imperi#Latin|imperī]], [[wikt:en:imprudentia#Noun|imprūdentia]], [[wikt:en:incolumis#Latin|incolumīs]], [[wikt:en:indignantis#Participle_2|indignantīs]], [[wikt:en:inopinantis#Adjective_2|inopīnantīs]], [[wikt:en:irridere#Latin|irrīdēre]], [[wikt:en:irrumpere|irrumpere]], [[wikt:en:irrumpit|irrumpit]], [[wikt:en:irruperunt|irrūpērunt]], [[wikt:en:laborantis#Etymology_2|labōrantīs]], [[wikt:en:montis|montīs]], [[wikt:en:natalis#Latin|nātālīs]], [[wikt:en:navis#Latin|nāvīs]], [[wikt:en:negoti|negōtī]], nōn nūllae, nōn nūllōs, [[wikt:en:offici#Noun_2|officī]], [[wikt:en:omnis#Latin|omnīs]], [[wikt:en:partis#Latin|partīs]], [[wikt:en:periclum#Latin|perīclum]], plūrīs, [[wikt:en:praesidi|praesidī]], [[wikt:en:proeli|proelī]], proficīscentīs, [[wikt:en:resistentis|resistentīs]], [[wikt:en:singularis#Latin|singulārīs]], [[wikt:en:solaci|sōlācī]], [[wikt:en:spati#Latin|spatī]], [[wikt:en:subeuntis|subeuntīs]], [[wikt:en:suffossis|suffossīs]], [[wikt:en:sumministrata|sumministrāta]], [[wikt:en:summissis|summissīs]], [[wikt:en:summittantur#Latin|summittantur]], [[wikt:en:summittebat|summittēbat]], [[wikt:en:summittit|summittit]], [[wikt:en:summotis|summōtīs]], [[wikt:en:summoveri|summovērī]], [[wikt:en:supplici#Noun|supplicī]], [[wikt:en:testis#Latin|testīs]], [[wikt:en:timentis#Participle_2|timentīs]], [[wikt:en:Tituri|Titūrī]], [[wikt:en:Trinobantes#Latin|Trinobantēs]], trīs, [[wikt:en:turris#Latin|turrīs]], [[wikt:en:utilis#Latin|ūtilīs]], [[wikt:en:vectigalis#Latin|vectīgālīs]] </span> などは、<br>それぞれ <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:adclivis#Latin|adclīvis]], [[wikt:en:adcommodatae|adcommodātae]], [[wikt:en:adlatis|adlātīs]], Atuātucam, [[wikt:de:Atuatuci|Atuatucī]], Atuatucīs, Atuatucōs, Haeduae, [[wikt:en:Haedui|Haeduī]], [[wikt:en:Haeduis|Haeduīs]], [[wikt:en:Haeduorum|Haeduōrum]], [[wikt:en:Haeduos|Haeduōs]], Haeduus, [[wikt:en:aequinoctii|aequinoctiī]], [[wikt:en:adfecti|adfectī]], [[wikt:en:adfectus#Adjective|adfectus]], [[wikt:en:adferat|adferat]], [[wikt:en:adferebat|adferēbat]], [[wikt:en:adferret|adferret]], [[wikt:en:adferretur|adferrētur]], [[wikt:en:adflictae|adflīctae]], [[wikt:en:adfligunt|adflīgunt]], [[wikt:en:adgregabat|adgregābat]], [[wikt:en:adgregaverant|adgregāverant]] ([[wikt:en:adgregarant|adgregārant]]), [[wikt:en:adlato|adlātō]], [[wikt:en:adliciebat#Latin|adliciēbat]], [[wikt:en:Alpes#Latin|Alpēs]], [[wikt:en:adpelluntur|adpelluntur]], [[wikt:en:adpetebat|adpetēbat]], [[wikt:en:adportari|adportārī]], [[wikt:en:adplicant|adplicant]], [[wikt:en:adprobant#Latin|adprobant]], [[wikt:en:adpropinquabat|adpropinquābat]], [[wikt:en:adpropinquare|adpropinquāre]], [[wikt:en:adpropinquarent|adpropinquārent]], [[wikt:en:adpropinquassent|adpropinquāssent]], [[wikt:en:adpropinquaverunt|adpropinquāvērunt]] ([[wikt:en:adpropinquarunt|adpropinquārunt]]), [[wikt:en:adpropinquavit|adpropinquāvit]], [[wikt:en:adpulso|adpulsō]], [[wikt:en:adripere|adripere]], [[wikt:en:articulis|articulīs]], [[wikt:en:adscendissent|adscendissent]], [[wikt:en:adscensu#Noun|adscēnsū]], [[wikt:en:adsidua|adsiduā]], [[wikt:en:adsiduis#Latin|adsiduīs]], [[wikt:en:adsuefacti|adsuēfactī]], [[wikt:en:adsuescere#Latin|adsuēscere]], [[wikt:en:adtingit|adtingit]], [[wikt:en:adtingunt|adtingunt]], [[wikt:en:adtribuerat#Latin|adtribuerat]], [[wikt:en:adtribuit|adtribuit]], [[wikt:en:adtribuunt|adtribuunt]], [[wikt:en:aures#Noun|aurēs]], [[wikt:en:auxilii|auxiliī]], [[wikt:en:cedentes#Latin|cēdentēs]], [[wikt:en:cives#Latin|cīvēs]], [[wikt:en:clientes#Latin|clientēs]], [[wikt:en:cohortes#Latin|cohortēs]], [[wikt:en:conicere|conicere]], [[wikt:en:conicerent|conicerent]], [[wikt:en:conici#Latin|conicī]], [[wikt:en:coniciant|coniciant]], [[wikt:en:coniciebant|coniciēbant]], [[wikt:en:coniciunt|coniciunt]], [[wikt:en:coniecerant|coniēcerant]], [[wikt:en:coniecerunt|coniēcērunt]], [[wikt:en:coniecisse|coniēcisse]], [[wikt:en:coniecta|coniecta]], [[wikt:en:coniecti|coniectī]], [[wikt:en:coniectis|coniectīs]], [[wikt:en:conlatis|conlātīs]], [[wikt:en:conlaudantur|conlaudantur]], [[wikt:en:conlaudat|conlaudat]], [[wikt:en:conlaudatis#Participle|conlaudātīs]], [[wikt:en:colles#Latin|collēs]], [[wikt:en:conlocabant|conlocābant]], [[wikt:en:conlocabat|conlocābat]], [[wikt:en:conlocandis|conlocandīs]], [[wikt:en:conlocant|conlocant]], [[wikt:en:conlocantur#Latin|conlocantur]], [[wikt:en:conlocarat|conlocārat]], [[wikt:en:conlocare|conlocāre]], [[wikt:en:conlocaret|conlocāret]], [[wikt:en:conlocari|conlocārī]], [[wikt:en:conlocatas|conlocātās]], [[wikt:en:conlocati|conlocātī]], [[wikt:en:conlocatis#Participle|conlocātīs]], [[wikt:en:conlocaverat#Latin|conlocāverat]], [[wikt:en:conlocavit|conlocāvit]], [[wikt:en:conlocuti|conlocūtī]], [[wikt:en:conloquantur|conloquantur]], [[wikt:en:conloquendi|conloquendī]], [[wikt:en:conloqui#Latin|conloquī]], [[wikt:en:conloquium#Latin|conloquium]], [[wikt:en:communes#Latin|commūnēs]], [[wikt:en:conpluribus|conplūribus]], [[wikt:en:complures#Latin|complūrēs]], [[wikt:en:conprehensis|conprehēnsīs]], [[wikt:en:conprehensos|conprehēnsōs]], [[wikt:en:conantes|cōnantēs]], [[wikt:en:consilii|cōnsiliī]], [[wikt:en:derectus#Latin|dērēctus]], [[wikt:en:dubitantes|dubitantēs]], [[wikt:en:efferciuntur#Latin|efferciuntur]], [[wikt:en:egredientes|ēgredientēs]], [[wikt:en:ii#Latin|iī]], [[wikt:en:iis#Latin|iīs]], [[wikt:en:exsistit|exsistit]], [[wikt:en:exspectent#Latin|exspectent]], [[wikt:en:exposcentes#Latin|exposcentēs]], [[wikt:en:extruxerunt#Latin|extruxerunt]], [[wikt:en:ferventes#Latin|ferventēs]], [[wikt:en:fines#Latin|fīnēs]], [[wikt:en:glandes#Latin|glandēs]], [[wikt:en:haesitantes#Latin|haesitantēs]], [[wikt:en:hostes#Latin|hostēs]], [[wikt:en:ignes|ignēs]], [[wikt:en:inlatas|inlātās]], [[wikt:en:inlustrem#Latin:_adjective|inlūstrem]], [[wikt:en:inmittit|inmittit]], [[wikt:en:inmittunt|inmittunt]], [[wikt:en:inparatum|inparātum]], [[wikt:en:inpedita#Latin|inpedīta]], [[wikt:en:imperii#Latin|imperiī]], [[wikt:en:inprudentia#Noun|inprūdentia]], [[wikt:en:incolumes|incolumēs]], [[wikt:en:indignantes#Latin|indignantēs]], [[wikt:en:inopinantes|inopīnantēs]], [[wikt:en:inridere|inrīdēre]], [[wikt:en:inrumpere|inrumpere]], [[wikt:en:inrumpit|inrumpit]], [[wikt:en:inruperunt|inrūpērunt]], [[wikt:en:laborantes#Latin|labōrantēs]], [[wikt:en:montes#Latin|montēs]], [[wikt:en:natales#Latin|nātālēs]], [[wikt:en:naves#Latin|nāvēs]], [[wikt:en:negotii|negōtiī]], [[wikt:en:nonnullae|nōnnūllae]], [[wikt:en:nonnullos|nōnnūllōs]], [[wikt:en:officii#Latin|officiī]], [[wikt:en:omnes#Latin|omnēs]], [[wikt:en:partes#Latin|partēs]], [[wikt:en:periculum#Latin|perīculum]], [[wikt:en:plures|plūrēs]], [[wikt:en:praesidii|praesidiī]], [[wikt:en:proelii|proeliī]], [[wikt:en:proficiscentes|proficīscentēs]], [[wikt:en:resistentes#Latin|resistentēs]], [[wikt:en:singulares#Latin|singulārēs]], [[wikt:en:solacii|sōlāciī]], [[wikt:en:spatii#Latin|spatiī]], [[wikt:en:subeuntes|subeuntēs]], [[wikt:en:subfossis|subfossīs]], [[wikt:en:subministrata|subministrāta]], [[wikt:en:submissis|submissīs]], [[wikt:en:submittantur#Latin|submittantur]], [[wikt:en:submittebat|submittēbat]], [[wikt:en:submittit|submittit]], [[wikt:en:submotis|submōtīs]], [[wikt:en:submoveri|submovērī]], [[wikt:en:supplicii|suppliciī]], [[wikt:en:testes#Latin|testēs]], [[wikt:en:timentes|timentēs]], [[wikt:en:Titurii|Titūriī]], [[wikt:en:Trinovantes#Latin|Trinovantēs]], [[wikt:en:tres#Latin|trēs]], [[wikt:en:turres#Latin|turrēs]], [[wikt:en:utiles#Latin|ūtilēs]], [[wikt:en:vectigales|vectīgālēs]] </span> などとした。
-->
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="color:#b00;"></span>
<span style="color:#800;"></span>
<span style="font-size:10pt;"></span>
<span style="background-color:#ff0;"></span>
== 注解 ==
=== 1項 ===
<span style="font-family:Times New Roman;font-size:20pt;"></span>
;語釈
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="background-color:#ccffcc;"></span>
<!--
;対訳
《 》 内は、訳者が説明のために補った語。<span style="font-family:Times New Roman;font-size:30pt;">{</span> <span style="font-family:Times New Roman;font-size:30pt;">}</span> 内は関係文。
<span style="font-family:Times New Roman;font-size:15pt;"></span>
-->
== 訳文 ==
*<span style="background-color:#dff;">訳文は、[[ガリア戦記_第7巻#34節]]</span>
== 脚注 ==
{{Reflist}}
== 解説 ==
<!--
{| class="wikitable" style="text-align:center"
|- style="height:23em;"
|
|
|}
-->
== 関連項目 ==
*[[ガリア戦記]]
**[[ガリア戦記/注解編]]
***[[ガリア戦記 第7巻/注解]]
**[[ガリア戦記/用例集]]
== 関連記事 ==
== 外部リンク ==
* [https://babel.hathitrust.org/cgi/pt?id=hvd.hn1tp9&seq=263 #263 - C. Iuli Caesaris De bello gallico libri VII : Caesar's Gallic ... - Full View | HathiTrust Digital Library]
* [https://scaife.perseus.org/reader/urn:cts:latinLit:phi0448.phi001.perseus-lat2:7.34 Scaife Viewer | De Bello Gallico]
* [https://reader.humanitext.ai/en/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:7.34.1-7.34.3 Division of the Army and the March on Gergovia — Julius Caesar, Gallic War Book 7 (7.34.1–7.34.3), Latin & English · Humanitext Reader]
* [https://reader.humanitext.ai/read/urn:cts:latinLit:phi0448.phi001.humanitext-lat2:7.34.1-7.34.3 カエサルによる軍の分割とゲルゴウィア進軍|『ガリア戦記』§7.34.1-7.34.3(ユリウス・カエサル)ラテン語原文・日本語訳 · Humanitext Reader]
[[Category:ガリア戦記 第7巻|34節]]
srri82b1zxq7fb1s2s2uc02cfm56hkx
コンピュータセキュリティ
0
48948
304801
304800
2026-10-17T12:06:50Z
~2026-54076-02
92740
/* 解析耐性のあるハッシュアルゴリズムを使う */
304801
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
<!--
=== パスワードの複雑性をチェックする ===
-->
=== 流出パスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
Linuxでは新規アカウントで使われるパスワードのハッシュ関数が以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これにはいくつかの方法があります。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
現在のLinuxカーネルが ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も Retbleed や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した eIBRS(拡張IBRS)などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_RWX' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG=</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG= # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
ej5ngbo03v3h64svhaj71d40j0zlpro
304802
304801
2026-10-17T12:21:51Z
~2026-54076-02
92740
304802
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
<!--
=== パスワードの複雑性をチェックする ===
-->
=== 流出パスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これにはいくつかの方法があります。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
現在のLinuxカーネルが ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した eIBRS(拡張IBRS)などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_RWX' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG=</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG= # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
ir2i9ggxzrw3fieuxvldxtq72ddr0hs
304807
304802
2026-10-17T13:59:40Z
~2026-54076-02
92740
304807
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立コードが ET_DYN、非位置独立コードが ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立コードの実行ファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" && echo ::File: {}'
::File: /usr/lib/default.sfx
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/mkfifo
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/zcat
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/poweroff
Type: EXEC (Executable file)
[...]
</syntaxhighlight>
現在のLinuxカーネルが ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_RWX' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG=</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG= # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
0gfq19yz1w7yyciimm22cs33jxhvhkl
304808
304807
2026-10-17T14:04:17Z
~2026-54076-02
92740
304808
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立コードが ET_DYN、非位置独立コードが ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立コードの実行ファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" && echo ::File: {}'
::File: /usr/lib/default.sfx
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/mkfifo
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/zcat
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/poweroff
Type: EXEC (Executable file)
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
現在のLinuxカーネルがカーネル ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_RWX' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG=</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ cat /boot/config-$(uname -r) | grep CONFIG_MODULE_SIG= # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
0xwkesap4art9jk36umm2en4q0d5uc4
304809
304808
2026-10-17T14:06:37Z
~2026-54076-02
92740
304809
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立コードが ET_DYN、非位置独立コードが ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立コードの実行ファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" && echo ::File: {}'
::File: /usr/lib/default.sfx
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/mkfifo
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/zcat
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/poweroff
Type: EXEC (Executable file)
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
現在のLinuxカーネルがカーネル ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, #..is not set=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
rpssxd0kc2kg77bs79xtp8f2ycv9moj
304810
304809
2026-10-17T14:07:28Z
~2026-54076-02
92740
304810
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立コードが ET_DYN、非位置独立コードが ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立コードの実行ファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" && echo ::File: {}'
::File: /usr/lib/default.sfx
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/mkfifo
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/zcat
Type: EXEC (Executable file)
::File: /usr/lib/klibc/bin/poweroff
Type: EXEC (Executable file)
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
現在のLinuxカーネルがカーネル ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
irqtgaimjrvnzl0bjlmjk3nrt2jecuj
304811
304810
2026-10-17T14:09:34Z
~2026-54076-02
92740
/* メモリアドレスの推測困難化 */
304811
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立コードが ET_DYN、非位置独立コードが ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立コードの実行ファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
現在のLinuxカーネルがカーネル ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
s2bpaqa04o7t6see591wmcve7eqkaik
304812
304811
2026-10-17T14:12:10Z
~2026-54076-02
92740
304812
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式の実行ファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
現在のLinuxカーネルがカーネル ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
しかしながら間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]]の応用として、投機的探査によるコード位置情報の取得 (BlindSide) も登場しています。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
o87bo007tr2ktl4ap47fhmn0e51ufwz
304813
304812
2026-10-17T14:18:23Z
~2026-54076-02
92740
304813
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f -exec sh -c 'for f do readelf -h "$f" >/dev/null 2>&1 || continue; p=$(readelf -n "$f" 2>/dev/null); { printf "%s" "$p" | grep -q "x86 feature:.*IBT" && printf "%s" "$p" | grep -q "x86 feature:.*SHSTK"; } || echo "$f"; done' sh {} +
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
proaasggnl07l4nyhe0ymj5o4xz2ewb
304814
304813
2026-10-17T14:31:44Z
~2026-54076-02
92740
/* 制御フローの操作を防ぐ (CET) */
304814
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる ELF 形式では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo {})'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
dtex4d3na8uutfjc7wxgwgvs4ht47w0
304815
304814
2026-10-17T14:38:06Z
~2026-54076-02
92740
304815
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo {})'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
7wxj3yzlu0rhie9g8bu8a4kp31vtz8n
304816
304815
2026-10-17T14:58:39Z
~2026-54076-02
92740
304816
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) を検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) を含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo {})'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
/usr/lib/klibc/bin/resume
/usr/lib/klibc/bin/dd
/usr/lib/klibc/bin/pivot_root
/usr/lib/klibc/bin/chroot
/usr/lib/klibc/bin/false
/usr/lib/klibc/bin/gzip
/usr/lib/klibc/bin/ls
/usr/lib/klibc/bin/nfsmount
/usr/lib/klibc/bin/kinit
/usr/lib/klibc/bin/sh
/usr/lib/klibc/bin/dmesg
/usr/lib/klibc/bin/uname
/usr/lib/klibc/bin/minips
/usr/lib/klibc/bin/fstype
/usr/lib/klibc/bin/mknod
/usr/lib/unrar
/usr/lib/jvm/java-25-openjdk-amd64/lib/libjsvml.so
/usr/lib/jvm/java-25-openjdk-amd64/lib/server/libjvm.so
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
gcgevr830497gpc5qh9nruguig1jnkq
304821
304816
2026-10-17T17:23:27Z
~2026-54076-02
92740
304821
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
1mv87ydl4eyt4blurc5e6hu3qxha3l1
304838
304821
2026-10-18T05:06:47Z
~2026-54076-02
92740
/* 設定データベースを検証する */
304838
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定してください。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Security Account Manager|Security Account Manager]] || || HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>*\<wbr>V{{efn|'HKEY_LOCAL_MACHINE\SAM\SAM\' 以下はレジストリエディタの右クリックの「アクセス許可」で Administrators にアクセス許可を与えないと読めない。Vはバイナリであり、0x60 に指定されてたオフセットからユーザーログオンスクリプトパスを指定する<ref>Sebastián R. Castro et al. [https://dl.acm.org/doi/pdf/10.1145/3689934.3690839 Ghost in the SAM: Stealthy, Robust, and Privileged Persistence through Invisible Accounts] ACM 2024年</ref>。}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
tp36l3dhonc497gbwrj7xwd49rg9cho
304839
304838
2026-10-18T05:23:59Z
~2026-54076-02
92740
304839
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定して使用するハッシュ関数を更新してください。
一方、Windows では以下のパスワードハッシュがレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>(ユーザーID)\<wbr>V</code>{{efn|name="sam"}}に存在します:
* LMハッシュ: 0xCC + (0x9C に指定されたオフセット)
* NTLMハッシュ: 0xCC + (0xA8 に指定されたオフセット)
LMハッシュは[[:w:LAN Manager|LAN Manager]]に使われていた古いハッシュであり、NTLMハッシュは[[:w:NT LAN Manager|NT LAN Manager]]に使われていた古いハッシュです。
<!--
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Security Account Manager|Security Account Manager]] || || HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>*\<wbr>V{{efn|name="sam"|'HKEY_LOCAL_MACHINE\SAM\SAM\' 以下はレジストリエディタの右クリックの「アクセス許可」で Administrators にアクセス許可を与えないと読めない。なおファイルパスは「C:\Windows\System32\config\SAM」。}}{{efn|Vはバイナリであり、0xCC + (0x60 に指定されたオフセット) からユーザーログオンスクリプトパスを指定する<ref name="sam-ghost">Sebastián R. Castro et al. [https://dl.acm.org/doi/pdf/10.1145/3689934.3690839 Ghost in the SAM: Stealthy, Robust, and Privileged Persistence through Invisible Accounts] ACM 2024年</ref>。}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
kda759clnvw1rdsf6i3y81n66na59ui
304840
304839
2026-10-18T05:37:24Z
~2026-54076-02
92740
304840
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低いbcryptなどの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定して使用するハッシュ関数を更新してください。
一方、Windows 10以前のローカルアカウントではパスワードハッシュがレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>(ユーザーID)\<wbr>V</code>{{efn|name="sam"}}のバイナリに存在します:
* [[:w:LMハッシュ|LMハッシュ]]: 0xCC + (0x9C に指定されたオフセット)<ref name="sam-ghost"/>
* NTLMハッシュ: 0xCC + (0xA8 に指定されたオフセット)<ref name="sam-ghost"/>
LMハッシュは [[:w:LAN Manager|LAN Manager]] に使われていた [[:w:Data Encryption Standard|DES]] ベースの古いハッシュ、NTLMハッシュは [[:w:NT LAN Manager|NT LAN Manager]] に使われている [[:w:MD4|MD4]] ベースの古いハッシュであり、どちらも弱いものとなっていました。
2021年にリリースされた Windows 11 以降は Microsoft アカウントが必須となっています。
<!--TODO:
Windows Hello
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Security Account Manager|Security Account Manager]] || || HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>*\<wbr>V{{efn|name="sam"|'HKEY_LOCAL_MACHINE\SAM\SAM\' 以下はレジストリエディタの右クリックの「アクセス許可」で Administrators にアクセス許可を与えないと読めない。なおファイルパスは「C:\Windows\System32\config\SAM」。}}{{efn|Vはバイナリであり、0xCC + (0x60 に指定されたオフセット) からユーザーログオンスクリプトパスを指定する<ref name="sam-ghost">Sebastián R. Castro et al. [https://dl.acm.org/doi/pdf/10.1145/3689934.3690839 Ghost in the SAM: Stealthy, Robust, and Privileged Persistence through Invisible Accounts] ACM 2024年</ref>。}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
ptscbehgt9s0xhh523o84ne5v8ubcob
304841
304840
2026-10-18T06:21:45Z
~2026-54076-02
92740
304841
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低い [[:w:PBKDF2|PBKDF2]] や bcrypt などの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定して使用するハッシュ関数を更新してください。
一方、Windows 10 以前のローカルアカウントではパスワードハッシュがレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>(ユーザーID)\<wbr>V</code>{{efn|name="sam"}}のバイナリに存在します:
* [[:w:LMハッシュ|LMハッシュ]]: 0xCC + (0x9C に指定されたオフセット)<ref name="sam-ghost"/>
* NTLMハッシュ: 0xCC + (0xA8 に指定されたオフセット)<ref name="sam-ghost"/>
LMハッシュは [[:w:LAN Manager|LAN Manager]] に使われていた [[:w:Data Encryption Standard|DES]] ベースの古いハッシュ、NTLMハッシュは [[:w:NT LAN Manager|NT LAN Manager]] に使われている [[:w:MD4|MD4]] ベースの古いハッシュであり、どちらも非常に弱いものとなっていました。
また Windows のドメインアカウントのオフライン認証向けキャッシュ済みドメイン資格情報はレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SECURITY\<wbr>Cache</code>に存在します:
* DCC1 ハッシュ (MSCache v1): 弱い MD4 ベース。Windows XP以前。
* DCC2 ハッシュ (MSCache v2) : 弱めの PBKDF2-HMAC-SHA1 ベース。Windows Vista以後<ref>[https://attack.mitre.org/techniques/T1003/005/ OS Credential Dumping: Cached Domain Credentials] MITRE 2025年10月24日</ref>。
2021年にリリースされた Windows 11 以降は Microsoft アカウントが必須となっています。
<!--TODO:
Windows Hello
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Security Account Manager|Security Account Manager]] || || HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>*\<wbr>V{{efn|name="sam"|'HKEY_LOCAL_MACHINE\SAM\SAM\' 以下はレジストリエディタの右クリックの「アクセス許可」で Administrators にアクセス許可を与えないと読めない。なおファイルパスは「C:\Windows\System32\config\SAM」。}}{{efn|Vはバイナリであり、0xCC + (0x60 に指定されたオフセット) からユーザーログオンスクリプトパスを指定する<ref name="sam-ghost">Sebastián R. Castro et al. [https://dl.acm.org/doi/pdf/10.1145/3689934.3690839 Ghost in the SAM: Stealthy, Robust, and Privileged Persistence through Invisible Accounts] ACM 2024年</ref>。}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
qj9i7g0oxd1riqi287n0rfjcvjjc20e
304842
304841
2026-10-18T06:31:16Z
~2026-54076-02
92740
304842
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低い [[:w:PBKDF2|PBKDF2]] や bcrypt などの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定して使用するハッシュ関数を更新してください。
一方、Windows 10 以前のローカルアカウントではパスワードハッシュがレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>(ユーザーID)\<wbr>V</code>{{efn|name="sam"}}のバイナリに存在します:
* [[:w:LMハッシュ|LMハッシュ]]: 0xCC + (0x9C に指定されたオフセット)<ref name="sam-ghost"/>
* NTLMハッシュ: 0xCC + (0xA8 に指定されたオフセット)<ref name="sam-ghost"/>
LMハッシュは [[:w:LAN Manager|LAN Manager]] に使われていた [[:w:Data Encryption Standard|DES]] ベースの古いハッシュ、NTLMハッシュは [[:w:NT LAN Manager|NT LAN Manager]] に使われている [[:w:MD4|MD4]] ベースの古いハッシュであり、どちらも非常に弱いものとなっていました。
また Windows の Active Directory ドメインアカウントのオフライン認証向けキャッシュ済みドメイン資格情報はレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SECURITY\<wbr>Cache</code>に存在します:
* DCC1 ハッシュ (MSCache v1): 弱い MD4 ベース。Windows XP以前。
* DCC2 ハッシュ (MSCache v2) : 弱めの PBKDF2-HMAC-SHA1 ベース。Windows Vista以後<ref>[https://attack.mitre.org/techniques/T1003/005/ OS Credential Dumping: Cached Domain Credentials] MITRE 2025年10月24日</ref>。
2021年にリリースされた Windows 11 以降は Microsoft アカウントが必須となっています。
<!--TODO:
Windows Hello、LSA Secrets
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Security Account Manager|Security Account Manager]] || || HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>*\<wbr>V{{efn|name="sam"|'HKEY_LOCAL_MACHINE\SAM\SAM\' 以下はレジストリエディタの右クリックの「アクセス許可」で Administrators にアクセス許可を与えないと読めない。なおファイルパスは「C:\Windows\System32\config\SAM」。}}{{efn|Vはバイナリであり、0xCC + (0x60 に指定されたオフセット) からユーザーログオンスクリプトパスを指定する<ref name="sam-ghost">Sebastián R. Castro et al. [https://dl.acm.org/doi/pdf/10.1145/3689934.3690839 Ghost in the SAM: Stealthy, Robust, and Privileged Persistence through Invisible Accounts] ACM 2024年</ref>。}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
4ydxjmbxeobh1joxiop8rwm9cvefo0j
304845
304842
2026-10-18T08:59:06Z
~2026-54076-02
92740
/* 流出したパスワードと被ってないかをチェックする */
304845
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。
このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
ハッシュの先頭5文字も渡したくない場合や、自社サービスでチェックを行いたい場合は上記のサービスが公式で提供するツール「haveibeenpwned-downloader」[https://github.com/HaveIBeenPwned/PwnedPasswordsDownloader]で全てのハッシュデータをダウンロードしましょう。
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低い [[:w:PBKDF2|PBKDF2]] や bcrypt などの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定して使用するハッシュ関数を更新してください。
一方、Windows 10 以前のローカルアカウントではパスワードハッシュがレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>(ユーザーID)\<wbr>V</code>{{efn|name="sam"}}のバイナリに存在します:
* [[:w:LMハッシュ|LMハッシュ]]: 0xCC + (0x9C に指定されたオフセット)<ref name="sam-ghost"/>
* NTLMハッシュ: 0xCC + (0xA8 に指定されたオフセット)<ref name="sam-ghost"/>
LMハッシュは [[:w:LAN Manager|LAN Manager]] に使われていた [[:w:Data Encryption Standard|DES]] ベースの古いハッシュ、NTLMハッシュは [[:w:NT LAN Manager|NT LAN Manager]] に使われている [[:w:MD4|MD4]] ベースの古いハッシュであり、どちらも非常に弱いものとなっていました。
また Windows の Active Directory ドメインアカウントのオフライン認証向けキャッシュ済みドメイン資格情報はレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SECURITY\<wbr>Cache</code>に存在します:
* DCC1 ハッシュ (MSCache v1): 弱い MD4 ベース。Windows XP以前。
* DCC2 ハッシュ (MSCache v2) : 弱めの PBKDF2-HMAC-SHA1 ベース。Windows Vista以後<ref>[https://attack.mitre.org/techniques/T1003/005/ OS Credential Dumping: Cached Domain Credentials] MITRE 2025年10月24日</ref>。
2021年にリリースされた Windows 11 以降は Microsoft アカウントが必須となっています。
<!--TODO:
Windows Hello、LSA Secrets
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反志向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Security Account Manager|Security Account Manager]] || || HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>*\<wbr>V{{efn|name="sam"|'HKEY_LOCAL_MACHINE\SAM\SAM\' 以下はレジストリエディタの右クリックの「アクセス許可」で Administrators にアクセス許可を与えないと読めない。なおファイルパスは「C:\Windows\System32\config\SAM」。}}{{efn|Vはバイナリであり、0xCC + (0x60 に指定されたオフセット) からユーザーログオンスクリプトパスを指定する<ref name="sam-ghost">Sebastián R. Castro et al. [https://dl.acm.org/doi/pdf/10.1145/3689934.3690839 Ghost in the SAM: Stealthy, Robust, and Privileged Persistence through Invisible Accounts] ACM 2024年</ref>。}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]].exe || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
duf0eupwrbpjkfvsc9q25umadfjmaqv
304854
304845
2026-10-18T11:41:29Z
~2026-54076-02
92740
304854
wikitext
text/x-wiki
'''コンピュータセキュリティ'''はコンピュータの安全のことです。ここではコンピュータの安全を確保することを学びます。
== コンピュータセキュリティの基本 ==
コンピュータは弱いところから狙われるため、弱いところを無くすのがセキュリティの基本となります。
具体例を挙げましょう。一般的な光回線に繋がれてるホームネットワークを考えます。ここには光回線の先に繋がる上位ネットワークと家内のホームネットワーク (家庭におけるLAN) とを区切るエッジルーター(一般的にはハードウェア・ゲートウェイがこれに該当)が存在します。このホームネットワークに数台の新しいWindows PCと一台の古い機器が繋がっていると仮定します。
新しいWindows PC同士ではホームネットワーク経由でファイルをやり取りするためにファイルの共有 (SMB{{efn|Server Message Block}}) を有効にしているとします。一方、古い機器の方を脆弱性のある古いテレビとしましょう。このテレビはインターネットから繋いで地上デジタル放送を見るための DCTP+ {{efn|Digital Transmission Content Protection +}}が搭載されており、UPnP{{efn|Universal Plug and Play}}で自動的にエッジルーター搭載のファイアーウォールに穴あけてインターネット側から DCTP+ に繋がるようになっているものとします。
この仮定によってハッカーは DCTP+ の脆弱性を使って古いテレビに悪意のあるプログラムを実行させてファイルの共有サーバーを立て{{efn|Windows 11時点でもゲスト認証による接続は許可されている<ref>[https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-interception-defense?tabs=group-policy Protect SMB traffic from interception] Microsoft</ref>。}}、そこからファイルの共有を通じて新しいWindows PCにマルウェア (例えば<code>PHOTO-<ランダムな数字>.png.lnk</code><ref>[https://www.microsoft.com/en-us/security/blog/2026/06/25/photo-zip-campaign-targeting-hospitality-industry-delivers-node-js-implant-persistent-access/ Photo ZIP campaign targeting hospitality industry delivers Node.js implant for persistent access] Microsoft 2026年6月25日</ref>) を送り込むことが可能となりました。
== 安全にパスワードを使う ==
=== 流出したパスワードと被ってないかをチェックする ===
あちこちのサイトで流出したパスワードは集められてデータベース化されダークネットに流通しています。この代表的なものには2019年に登場した [[:w:en:Collection No. 1|Collection #1]] が挙げられます。この Collection #1 などの流出パスワードデータベースは辞書攻撃に利用されており、これは「Credential Stuffing攻撃」と呼ばれています。
使うパスワードが流出パスワードデータベースに載っていないかを確認するためには上記のデータベースを手に入れるか、上記のデータベースからk-匿名性で検索を行うオンラインサービスを使うと良いでしょう。
このオンラインサービスの代表的なものにはWebサイト「Have I Been Pwned」の提供する「Pwned Passwords」サービスが存在しますが、このAPIではパスワードのSHA-1ハッシュ先頭5文字を渡すと、流出したパスワードのSHA1ハッシュ6文字以降と流出データベースに載っていた回数が返答されます。
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # パスワードを入力してSHA-1ハッシュへと変換する(ここでは'test'と入力)
$ sha1=$(read -sp "Password: " pass && echo -n $pass | sha1sum | cut -d' ' -f1)
Password:
$ # 変換後のハッシュを表示
$ echo $sha1
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ # ハッシュの先頭5文字を渡して6文字目以降を検索(':'の後ろは見つかった数)
$ curl -s https://api.pwnedpasswords.com/range/$(echo $sha1 | cut -c 1-5) | grep -i $(echo $sha1 | cut -c 6-)
FE5CCB19BA61C4C0873D391E987982FBBD3:1579235
</syntaxhighlight>
ハッシュの先頭5文字も渡したくない場合や、自社サービスでチェックを行いたい場合は上記のサービスが公式で提供するツール「haveibeenpwned-downloader」[https://github.com/HaveIBeenPwned/PwnedPasswordsDownloader]で全てのハッシュデータをダウンロードして自前で照合しましょう。
=== 解析耐性のある鍵導出関数を使う ===
パスワードでは計算負荷の低い SHA-256 や SHA-512 などの通常のハッシュ関数、メモリ負荷の低い [[:w:PBKDF2|PBKDF2]] や bcrypt などの古い[[:w:鍵導出関数|鍵導出関数]](パスワードハッシュ関数)を使わないようにしましょう。これらの弱いハッシュ関数は GPU や ASIC で高速に解かれてしまいます。
より強いパスワードハッシュ関数としては yescrypt や Argon2id が存在します。パスワードにはこちらを使いましょう。現代の Linux ではアカウントのパスワードハッシュ関数として yescrypt が標準となっています。
使っている Linux の新規アカウントで使われるパスワードハッシュ関数は以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ grep -n 'pam_unix.so' /etc/pam.d/common-password
26:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
</syntaxhighlight>
Linuxの現在のアカウントがどのハッシュ関数を使用しているかは以下で確認可能です:
<syntaxhighlight lang="shell-session">
$ sudo cat /etc/shadow | grep $USER # $(1|5|6|b)$=弱い、$y$=強い
user:$y$j9T$ST7oYwlQjFy7/8vnL/Ugt0$po4vW4qgGu8lpUNRtH0B3hDHGZACzcRhzIKhqlx.2Z5:20743:0:99999:7:::
</syntaxhighlight>
弱いハッシュ関数を使用している場合は<code>passwd $USER</code>でパスワードを再設定して使用するハッシュ関数を更新してください。
一方、Windows 10 以前のローカルアカウントではパスワードハッシュがレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>(ユーザーID)\<wbr>V</code>{{efn|name="sam"}}のバイナリに存在します:
* [[:w:LMハッシュ|LMハッシュ]]: 0xCC + (0x9C に指定されたオフセット)<ref name="sam-ghost"/>
* NTLMハッシュ: 0xCC + (0xA8 に指定されたオフセット)<ref name="sam-ghost"/>
LMハッシュは [[:w:LAN Manager|LAN Manager]] に使われていた [[:w:Data Encryption Standard|DES]] ベースの古いハッシュ、NTLMハッシュは [[:w:NT LAN Manager|NT LAN Manager]] に使われている [[:w:MD4|MD4]] ベースの古いハッシュであり、どちらも非常に弱いものとなっていました。
また Windows の Active Directory ドメインアカウントのオフライン認証向けキャッシュ済みドメイン資格情報はレジストリの<code>HKEY_LOCAL_MACHINE\<wbr>SECURITY\<wbr>Cache</code>に存在します:
* DCC1 ハッシュ (MSCache v1): 弱い MD4 ベース。Windows XP以前。
* DCC2 ハッシュ (MSCache v2) : 弱めの PBKDF2-HMAC-SHA1 ベース。Windows Vista以後<ref>[https://attack.mitre.org/techniques/T1003/005/ OS Credential Dumping: Cached Domain Credentials] MITRE 2025年10月24日</ref>。
2021年にリリースされた Windows 11 以降は Microsoft アカウントが必須となっています。
<!--TODO:
Windows Hello、LSA Secrets
=== パスワードの複雑性をチェックする ===
=== TPMで鍵を隔離する ===
-->
== 既製製品の脆弱性を塞ぐ ==
まずは弱いところを無くしましょう。
=== ソフトウェアアップデートをする ===
セキュリティの基本はソフトウェアアップデートです。
==== PCおよびモバイル ====
PC{{efn|PCサーバを含む}}やモバイルでは基本的に自動で通知が来るので忘れずにアップデートを選択しましょう。手動では以下のように行います:
; Windows
: システムのアップデートは基本的に [[:w:Microsoft Update|Microsoft Update]] (Windows Update) で、アプリケーションのアップデートは基本的に<code>winget upgrade --all</code>コマンドで行います。
: また Windows 11 Enterprise では再起動が不要なホットパッチにも対応しています。
; macOS / iOS
: 「ソフトウェアアップデート」
; Ubuntu / Debian
: [[:w:APT|APT]]パッケージ管理システムでは<code>apt upgrade</code>コマンドで更新を行います。
: Ubuntu では GUI による更新用として[[:w:Software Updater|Software Updater]] (<code>update-manager</code>コマンド)、[[:w:Snap (ソフトウェア)|Snap]]パッケージの更新コマンドとして<code>snap refresh</code>、メジャーバージョンの更新コマンドとして<code>do-release-upgrade</code>も存在します。
: また Ubuntu では Ubuntu Pro に登録することで再起動が不要なカーネル修正の「Livepatch」も可能となります(個人では5台まで無料)。SUSEではユーザー空間ライブパッチングまで提供されています(glibc と openssl のみ)<ref>[https://documentation.suse.com/ja-jp/sles/15-SP6/html/SLES-all/cha-ulp.html ユーザ空間ライブパッチ - 管理ガイド - SLES 15 SP6] SUSE</ref>。
; RedHat / Fedora
: <code>yum update</code>コマンド
; Android
: 「設定」アプリ→「システム」→「システムアップデート」または「ソフトウェアアップデート」
また個々のハードウェアのファームウェアアップデートは以下で行います:
; Linux
: Linuxにおけるファームウェアの更新は基本的に<code>fwupdmgr update</code>コマンドで行います。
: NVMe SSDのファームウェアの更新は<code>nvme fw-download</code>コマンドおよび<code>nvme fw-commit</code>コマンドで行うことができます。
一方、Windows ではファームウェアのアップデートも Windows Update 経由で<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/bringup/firmware-update ファームウェアの更新] Microsoft</ref>、macOS ではファームウェアのアップデートもmacOSアップデートで行うことができます<ref>[https://support.apple.com/ja-jp/guide/mac-help/mchlp2609/mac Macのファームウェアアップデートの入手方法] Apple</ref>。
<!--
また開発環境では以下も存在します:
; Python
: <code>pip -U install</code>
-->
==== ルーター ====
ルーターでは以下の設定を有効のままにしておきましょう:
; AirStationシリーズ(Buffalo 製ルーター)
: 「ファームウェア自動更新機能」
; Atermシリーズ(NEC 製ルーター)
: 「メンテナンスバージョンアップ機能」「時刻指定バージョンアップ機能」
==== テレビ ====
テレビでは放送波アップデートが行われるため、「放送波による自動更新」<!--TODO: メーカー別名-->を有効にしましょう。
=== 高速に再起動する ===
パッケージは更新しただけでは反映されません(一部デーモンの更新を除く)。Linuxでは高速に再起動する方法が存在し、これによってダウンタイムを減らすことができます。
; 更新で影響を受けるデーモンのみ再起動する
:* Ubuntu Server: 標準で <code>needrestart</code> が導入されており自動で影響を受けるデーモンの再起動が行われます{{efn|自動的なデーモン再起動を止めるには /etc/apt/apt.conf.d/99needrestart より<code>-m u</code>を削除する必要があります<ref>[https://discourse.ubuntu.com/t/needrestart-changes-in-ubuntu-24-04-service-restarts/44671 `needrestart` changes in Ubuntu 24.04: service restarts] Canonical 2024年</ref>。}}(Ubuntu Desktopでは別途導入が必要)。
:* RedHat / Fedora: <code>dnf needs-restarting</code>が導入されており、それによって再起動するべきデーモンを確認できます。
; ユーザー空間のみ再起動する(カーネルの更新がない、またはカーネルでlive patchingを行ってる場合)
: <code>sudo systemctl soft-reboot</code>
; 高速にカーネルを更新する(ファームウェアの更新がない場合)
: <code>sudo systemctl kexec</code>
また一部のソフトウェアではホットアップグレード(無停止アップグレード{{efn|Zero-Downtime Upgrade}})にも対応しています (nginx の USR2 シグナル<ref>[https://nginx.org/en/docs/control.html Controlling nginx] nginx</ref>など)。
=== 代替ソフトウェアを探す ===
更新が停止された古いソフトウェアの多くはそれ自身に脆弱性が存在したり、脆弱性のある古いライブラリに依存していたりします。そのため古いソフトウェアは速やかに代替ソフトウェアへと移行しましょう。
==== 開発終了したソフトウェアから現役のソフトウェアへ ====
古いソフトウェアには例えば以下があります:
* オフィススイート(代替候補: LibreOffice)
** [[:w:OpenOffice.org|OpenOffice.org]](〜2011年)
* 画像ビューア
** [[:w:Susie|Susie]] (〜2013年)
* メディアプレイヤー
** [[:w:QuickTime|QuickTime]] for Windows(〜2016年) - リモートコード実行の脆弱性 ([https://www.zerodayinitiative.com/advisories/ZDI-16-241/ ZDI-16-241]、[https://www.zerodayinitiative.com/advisories/ZDI-16-242/ ZDI-16-242]) を残したままサポート終了しました<ref>[https://internet.watch.impress.co.jp/docs/news/753400.html Apple、「QuickTime for Windows」のサポートを終了、アンインストールを推奨] Impress 2016年4月15日</ref>。
* メディアフィルター(代替候補: LAV Filters)
** [[:w:ffdshow|ffdshow]](〜2014年)
** [[:w:Haali Media Splitter|Haali Media Splitter]](〜2013年)
* メディアセンター(代替候補: Kodi)
** [[:w:en:Boxee|Boxee]](〜2011年)
** [[:w:Kodi|XBMC]](〜2014年) - Kodiの前身
* 圧縮ソフトウェア
** [[:w:+Lhaca|+Lhaca]](〜2007年)
** [[:w:Lhaplus|Lhaplus]](〜2017年)
またハードウェアに由来する古いソフトウェアには例えば以下があります:
* [[w:ウォークマン|ウォークマン]]関連(代替候補: [[:w:Music Center for PC|Music Center for PC]])
** [[:w:CONNECT Player|CONNECT Player]](〜2007年、Sony)
** [[:w:SonicStage|SonicStage]](〜2009年、Sony)
** [[:w:x-アプリ|x-アプリ]](〜2016年、Sony)
* DTCP-IP関連
** SmartVision/PLAYER powered by DiXiM(〜2019年、NEC)<ref>[https://support.nec-lavie.jp/navigate/support/info/2019/announce/svp/ SmartVision/PLAYER保守サービス終了のお知らせ] NECパーソナルコンピュータ 2019年1月28日</ref><ref>[https://apps.microsoft.com/detail/9wzdncrdkb4c?hl=ja-JP&gl=JP SmartVision/PLAYER powered by DiXiM] Microsoft</ref>
** DiXiM Digital TV plus for I-O DATA(〜2022年、I-O DATA)<ref>[https://www.iodata.jp/lib/product/d/3533.htm DiXiM Digital TV plus for I-O DATA] I-O DATA</ref>
なお仮想マシンを使って隔離しながら古いソフトウェアを動かすこともできますが、仮想マシンでも「VMエスケープ」の脆弱性を使用することでホスト環境への侵害が可能なため、仮想マシンの上で弱い環境や弱いソフトウェアを使うこともなるべく避けましょう。<!--TODO: Windows Sandbox-->
==== 古いバージョンのライブラリを避ける ====
多くのソフトウェアに使用されているライブラリとその過去の危険な脆弱性には例えば以下があります:<!--危険を認識させる。例はライブラリ内のメイン処理に存在し、任意コード実行であり、脆弱性の存在期間が長く、新しいものが好ましい。-->
* 画像ライブラリ
** libpng - [https://access.redhat.com/security/cve/cve-2010-1205 CVE-2010-1205](PNG画像で任意コード実行の可能性)
** libjpeg-turbo - [https://access.redhat.com/security/cve/cve-2012-2806 CVE-2012-2806](JPEG画像で任意コード実行の可能性)
** OpenJPEG - [https://access.redhat.com/security/cve/cve-2025-54874 CVE-2025-54874](JPEG2000画像で任意コード実行の可能性)
** libtiff - [https://access.redhat.com/security/cve/cve-2026-12912 CVE-2026-12912](PixarLog圧縮TIFF画像で任意コード実行の可能性)
** libwebp - [https://access.redhat.com/security/cve/cve-2023-4863 CVE-2023-4863](WebP画像で任意コード実行の可能性)
* 動画ライブラリ
** FFmpeg - [https://access.redhat.com/security/cve/cve-2024-22860 CVE-2024-22860](JPEG XLアニメーションで任意コード実行の可能性)
* 圧縮ライブラリ
** libarchive - [https://access.redhat.com/security/cve/cve-2026-15028 CVE-2026-15028](tarアーカイブ形式で任意コード実行の可能性)
** zlib - [https://access.redhat.com/security/cve/cve-2002-0059 CVE-2002-0059](Deflate圧縮形式で任意コード実行の可能性)
** bzip2 - [https://access.redhat.com/security/cve/cve-2010-0405 CVE-2010-0405](BZ2圧縮形式で任意コード実行の可能性)
これらのライブラリはABI(アプリケーションバイナリインターフェイス)が変更されて新しいバージョンの共有ライブラリにドロップイン置換できないものも多くなっています。
また国内で使われている古いソフトウェアでは開発中止になった以下のライブラリも問題となっています:
* UNLHA32.DLL<ref>[https://forest.watch.impress.co.jp/docs/news/372729.html 圧縮・解凍用DLL「UNLHA32.DLL」が開発中止、作者はLZHの利用中止を呼びかけ] Impress 2010年6月7日</ref>
Webフレームワークでは開発中止となった以下のフレームワークが問題となっています:
* [[:w:Model View Controller|Model View Controller]]フレームワーク(代替候補: [[:w:Apache Struts|Apache Struts]] 2、[[:w:Spring Framework#Model-View-Controller フレームワーク|Spring MVC]])
** [[:w:en:Apache Struts 1|Apache Struts 1]](〜2008年) - Java言語
* [[:w:アスペクト指向プログラミング|アスペクト指向フレームワーク]](代替候補: [[:w:Spring Framework|Spring Framework]]、[[:w:en:Micronaut (framework)|Micronaut]])
** [[:w:Seasar|Seasar]](〜2016年) - Java言語
* [[:w:シングルページアプリケーション|シングルページアプリケーション]]フレームワーク(代替候補: [[:w:Angular|Angular]]、[[:w:Vue.js|Vue.js]])
** [[:w:AngularJS|AngularJS]](〜2022年) - JavaScript
=== 古いハードウェアに対処する ===
サポート切れの OS を搭載したハードウェアはどうすれば良いでしょうか。これには使い続けるいくつかの方法がありますが、基本的にオススメしません。古い OS を搭載していたハードウェアはハードウェア仕様も古いからです。
==== スタンドアロン運用 ====
古いハードウェアはインターネットに繋がずに使用すること(スタンドアロン運用)も可能です。
しかしながらUSBメモリでデータをやり取りする場合はUSBメモリ経由での感染などのリスクは残ります。
==== 新しめのLinuxを導入 ====
新しめのLinuxを導入するという方法もあります。
これに適したものでは例えばWindows 11非対応のPC (Intel 第7世代以前、AMD Ryzen 1000シリーズ以前) が挙げられます。
またスマートフォンやタブレットであればカスタムROMが、ルーターであればDD-WRTやOpenWRTが存在します。
==== 手放す ====
手に負えなければデータだけバックアップして手放しましょう。情報が漏れないよう初期化も忘れずに。
== 潜在的な脆弱性を減らす ==
現代のプログラムでは以下のような保護が行われています。
=== メモリアドレスの推測困難化 ===
攻撃に必要なコード片(ガジェット)のメモリアドレスを推測しにくくするために、カーネル空間、ユーザー空間の両方で[[:w:アドレス空間配置のランダム化|アドレス空間配置のランダム化]](ASLR)が行われています。カーネル空間の ASLR は KASLR (Kernel ASLR) とも呼ばれています。
ユーザー空間のプログラムで ASLR を有効にするためには[[:w:位置独立コード|位置独立コード]] (PIC) / 位置独立実行形式 (PIE) である必要があります。Unix で使われる実行形式の ELF では位置独立実行形式が ET_DYN、非位置独立実行形式 (non-PIE) が ET_EXEC となります。
Linuxでは ASLR が無効となる非位置独立実行形式のファイルを以下で検索することができます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 非位置独立実行形式 (non-PIE) のバイナリを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}'
/usr/lib/default.sfx
/usr/lib/klibc/bin/mkfifo
/usr/lib/klibc/bin/zcat
/usr/lib/klibc/bin/poweroff
[...]
$ # 非位置独立実行形式 (non-PIE) のバイナリを含むDebianパッケージを検索
$ find / -type f -executable 2>/dev/null | xargs -I {} sh -c 'LANG=C readelf -h {} 2>/dev/null | grep -E "Type:.*EXEC" >/dev/null && echo {}' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
aidl
busybox-static
code
cpp-15-x86-64-linux-gnu
cuda-gdb-13-4
cuda-nvcc-13-4
cuda-sanitizer-13-4
cuda-tileiras-13-4
debugedit
g++-15-x86-64-linux-gnu
gcc-15-x86-64-linux-gnu
gcc-mingw-w64-i686-posix
gdc-15-x86-64-linux-gnu
gds-tools-13-4
gfortran-15-x86-64-linux-gnu
gh
git-lfs
gobjc-15-x86-64-linux-gnu
gocryptfs
golang-1.26-go
go-md2man
go-mtpfs
[...]
</syntaxhighlight>
現在のLinuxカーネルがユーザー空間 ASLR を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ sysctl kernel.randomize_va_space # 0=無し、1=部分的、2=完全
kernel.randomize_va_space = 2
</syntaxhighlight>
また現在のLinuxカーネルがカーネル ASLR (KASLR) を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_RANDOMIZE_BASE' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_RANDOMIZE_BASE=y
</syntaxhighlight>
なお ASLR は間接的な関数呼び出し( C++ の vtable を含む)があると、そのアドレスから ASLR のオフセットがバレてしまい突破されてしまいます。
また CPU の[[:w:投機的実行|投機的実行]]での情報漏れ (Spectre) による[[:w:キャッシュ攻撃|キャッシュサイドチャネル攻撃]](後述)の一つである「投機的探査」 (BlindSide) によってもコードの位置情報の取得がされ ASLR が突破されてしまいます。
=== 投機的実行の情報漏れ防止 ===
前述のとおり、投機的実行による情報漏れ (Spectre) は攻撃に繋がります。Spectre には境界チェックを迂回する Spectre V1 と間接分岐の分岐先アドレスのキャッシュ{{efn|分岐先バッファ (Branch Target Buffer、BTB)や分岐先アドレスキャッシュ (Branch Target Address Cache、BTAC) と呼ばれる。}}を汚染する Spectre V2 が存在します。<!--TODO: Spectre v3/v4、Zenbleed-->
Spectre V1 を防ぐ方法としては投機的実行を阻害するための命令(x86ではLFENCE)の挿入{{efn|Linuxカーネルでの投機的実行の防止は<code>barrier_nospec()</code>。}}やアクセスできるアドレス範囲を狭めることが行われています{{efn|GCCでの投機的実行での範囲外アクセス防止は<code>__builtin_speculation_safe_value(...)</code>、Linuxカーネルでの投機的実行での範囲外アクセス防止は<code>array_index_nospec(...)</code><ref>[https://lwn.net/Articles/759423/ Spectre V1 defense in GCC] LWN 2018年7月10日</ref>。}}。
また Spectre V2 では攻撃を防ぎながらも速度を落とさない方法として脆弱な分岐先アドレスキャッシュに依存する間接分岐の代わりにリターンアドレスのキャッシュ{{efn|リターンスタックバッファ (RSB) と呼ばれる。}}に依存するリターン命令を使う retpoline が登場しました。しかしながらこの retpoline でも速度の低下は起こるため、既知の間接呼び出しを条件分岐 + 直接呼び出しに変換して高速化する手法が模索されました。LLVM では retpoline を有効にする <code>-mretpoline</code>フラグの処理内に既知の仮想関数呼び出しを[[:w:二分木|二分木]]の直接分岐に置き換える「分岐ファネル」(Branch funnel) が導入されています<ref>[https://reviews.llvm.org/D42453 Use branch funnels for virtual calls when retpoline mitigation is enabled.] LLVM project</ref>。また Linux カーネルでも既知の間接呼び出しを条件分岐 + 直接呼び出しに変換する INDIRECT_CALL_* マクロが搭載されています<ref>[https://lwn.net/Articles/774743/ Relief for retpoline pain] LWN 2018年12月14日</ref>。<!--TODO: Intel CETのSHSTKとretpolineの衝突-->
一方、リターン命令の投機的実行も「Retbleed」や AMD CPU における「投機的リターンスタックオーバーフロー」 (SRSO){{efn|Speculative Return Stack Overflow。}}のような脆弱性が見つかっています。
なお低権限コードから高権限コードへの権限境界をまたいだ Spectre および Retbleed は Intel の「間接分岐制限付き投機」(IBRS){{efn|Indirect Branch Restricted Speculation。}}およびそれを高速化した「拡張IBRS」(eIBRS) などハードウェア側によって塞がれました<ref>[https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/hardware-behavior-related-to-speculative-execution.html Hardware Features and Behavior Related to Speculative Execution] Intel 2026年10月14日</ref>が、権限境界をまたがないものは今も可能となっています。
=== メモリにおける書き込みと実行の排他化 (W^X) ===
メモリでは書き込み可能領域の実行不可化 ([[:w:NXビット|NXビット]]) と実行可能領域の書き込み不可化による書き込みと実行の排他化([[:w:en:W^X|W^X]])が一般的となっています。NXビットは x86 では NXビットは AMD64 と共に搭載された古い機能であるため、今時の CPU と OS は基本的にこれに対応しています。
現在の CPU がNXビットを有効にしているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -o nx
nx
nx
[...]
</syntaxhighlight>
現在のLinuxカーネルが厳格な W^X を有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep '_RWX' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
</syntaxhighlight>
しかしながら書き込みと実行の排他の原則を破ってそれらを同時に行える場所というものも存在しています。読み込み・書き込み・実行が可能なことから「RWXセクション」と呼ばれています。Windows ではメモリページの PAGE_EXECUTE_READWRITE フラグがこれに相当します<ref>[https://learn.microsoft.com/ja-jp/windows/win32/memory/memory-protection-constants メモリ保護定数] メモリ保護定数 (WinNT.h) - Win32 apps | Microsoft Learn</ref>。
Windows のカーネルドライバでは NX フラグの使用が義務付けられています<ref>[https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/driver-compatibility-with-device-guard メモリ整合性と VBS とのドライバ互換性] Microsoft</ref>が、その Windows カーネルにおいても PatchGuard の領域がコード難読化のためにこの原則を破っています。<!--TODO: ホットパッチ-->
また Linux でも実行可能領域を書き込み可能ページとして割り当てて書き込む text_poke 関数が用意されています。
=== 制御フローの操作を防ぐ (CET) ===
現代では「[[:w:Return-oriented programming|リターン指向プログラミング]]」(ROP)、「呼び出し指向プログラミング」 (COP)、「ジャンプ指向プログラミング」(JOP) 、「[[:en:Sigreturn-oriented programming|Sigreturn指向プログラミング]]」(SROP) などの制御フロー操作による攻撃が一般化していますが、これを防ぐ技術として「[[:w:en:Control-flow integrity#Intel Control-flow Enforcement Technology|制御フロー強制テクノロジー]]」(CET) の「[[:w:en:Indirect branch tracking|間接分岐追跡]]」(IBT) と「[[:w:en:Shadow stack|シャドウスタック]]」(SHSTK) が存在します。
制御フロー強制は比較的新しい技術であるため、対応する CPU は以下に限られます:
* Intel Core (Tiger Lake) 第11世代以降
* AMD Zen 3 以降(シャドウスタックのみ)
現在の CPU が間接分岐追跡 (IBT) およびシャドウスタックに対応しているかはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ grep '^flags' /proc/cpuinfo | grep -oE '(ibt|shstk)'
shstk
ibt
shstk
ibt
[...]
</syntaxhighlight>
またユーザーランドのシャドウスタックの使用にはユーザーランドだけでなくカーネルの対応も必要となります。Linux カーネル では 6.6 以降対応でこれに対応しています(sigreturnにも対応<ref>[https://github.com/torvalds/linux/commit/05e36022c0543ba55a3de55af455b00cb3eb4fcc x86/shstk: Handle signals for shadow stack · torvalds/linux@05e3602] GitHub 2023年8月3日</ref>)。 Linuxディストリビューションでは Ubuntu 24.04以降、 Red Hat Enterprise Linux 9.7 以降<ref>[https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.7_release_notes/new-features-kernel 4.8. カーネル - 9.7 リリースノート - Red Hat Enterprise Linux - 9 - Red Hat Documentation] Red Hat</ref>が標準でシャドウスタックを有効としています。
現在のLinuxカーネルが間接分岐追跡およびシャドウスタックを有効にしているかは以下で確認できます (出力例はUbuntu 26.04):
<syntaxhighlight lang="shell-session">
$ grep -E '_(IBT|SHADOW_STACK)' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_CC_HAS_IBT=y
# CONFIG_X86_KERNEL_IBT is not set
CONFIG_X86_USER_SHADOW_STACK=y
CONFIG_X86_DISABLED_FEATURE_IBT=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
</syntaxhighlight>
現在のユーザーランドプログラムの中で間接分岐追跡またはシャドウスタックが無効化されているものはLinuxでは以下で確認できます:
<syntaxhighlight lang="shell-session">
$ # License: CC0 / Public Domain
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")'
/usr/lib/lv2/carla.lv2/carla.so
/usr/lib/7zip/7z
/usr/lib/7zip/7zCon.sfx
/usr/lib/7zip/7zr
/usr/lib/7zip/7z.so
/usr/lib/7zip/7za
/usr/lib/klibc/bin/ipconfig
/usr/lib/klibc/bin/umount
/usr/lib/klibc/bin/halt
[...]
$ # 間接分岐追跡またはシャドウスタックが無効化されているバイナリを含むDebianパッケージを検索
$ find / -type f 2>/dev/null | xargs -I {} sh -c 'readelf -h "{}" >/dev/null 2>&1 && (readelf -n "{}" 2>/dev/null | grep -E IBT,.*SHSTK > /dev/null || echo "{}")' | xargs -r -d '\n' -n1 dpkg-query -S | sed 's/: .*//' | sort -u
7zip
aidl
ardour
avr-libc
cargo-1.93
carla
carla-bridge-wine32:i386
carla-bridge-wine64
carla-lv2
carla-vst
cuda-ctadvisor-13-4
cuda-cudart-13-4
[...]
</syntaxhighlight>
なお、制御フロー強制テクノロジーの間接分岐追跡とシャドウスタックが有効であっても異なる関数の通常呼び出しは防げません。分かりやすい例では関数の間接呼び出しにおいて関数ポインタを<code>sigaction</code>へと変更して独自のシグナルハンドラを登録し、その後クラッシュさせてそのシグナルハンドラを呼び出すという「セグメンテーション違反指向プログラミング」(SFOP) が挙げられます。また攻撃に使える関数 (dop gadgets) {{efn|dop gadgetsの検索の公式実装は「DOP-StaticAssist」[https://github.com/melynx/DOP-StaticAssist]だが長らく更新されておらず古いLLVM 3.5に依存している状態となっている。}}の通常呼び出しだけで攻撃する「Data-Oriented Programming」(DOP) <ref>Hong Hu et al. [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7546545 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks] IEEE 2016年</ref>{{efn|セキュリティ以外の文脈におけるデータ指向プログラミング、データ指向設計、データ駆動型設計とは異なる。}}という手法も存在します。
C++向けでは仮想関数テーブル (vtable) を改ざんして攻撃に使える仮想関数(仮想関数ガジェット、vfgadget)を呼び出す「偽造オブジェクト指向プログラミング」(COOP) という攻撃手法も登場しています。
=== メモリ安全性の高いソフトウェアへ ===
既存のソフトウェアの脆弱性は7割がメモリ安全性の問題に起因すると言われています<ref>[https://www.cisa.gov/sites/default/files/2023-12/CSAC_TAC_Recommendations-Memory-Safety_Final_20231205_508.pdf REPORT TO THE CISA DIRECTOR Technical Advisory Council Memory Safety] サイバーセキュリティ諮問委員会 (CSAC) 2023年12月5日</ref>。しかしながら[[C言語]]や[[C++]]はメモリ安全性が低いため、メモリ安全性の確保できる[[Rust]]などで書かれた代替プログラムが登場しています:
{| class="wikitable"
|+ コマンドのRust版
|-
! コマンドの概要 !! 従来版 !! Rust版
|-
| Unix系の基本コマンド群 || GNU Core Utilities || '''uutils coreutils'''
|-
| ファイル検索コマンド群{{efn|<code>find</code>、<code>locate</code>、<code>updatedb</code>、<code>xargs</code>の4コマンド}} || GNU Findutils || '''uutils findutils'''
|-
| ファイル差分コマンド群{{efn|<code>diff</code>、<code>cmp</code>、<code>diff3</code>、<code>sdiff</code>の4コマンド}} || GNU Diffutils || '''uutils diffutils'''
|-
| ストリームエディタ (sed) || GNU sed / FreeBSD sed || '''uutils sed'''
|-
| AWKスクリプト || GNU AWK || '''uutils AWK'''
|-
| 文字列検索 || GNU Grep || '''uutils Grep'''
|-
| tarアーカイブ || GNU Tar || '''uutils tar'''
|-
| アカウント管理コマンド群 || shadow-utils || '''uutils shadow-utils'''
|-
| アクセス制御コマンド群{{efn|<code>chacl</code>、<code>getfacl</code>、<code>setfacl</code>の3コマンド}} || acl || '''uutils acl'''
|-
| procfs{{efn|プロセスファイルシステム}}表示コマンド群 || procps / procps-ng || '''uutils procps'''
|-
| ホスト名管理コマンド群{{efn|<code>hostname</code>、<code>dnsdomainname</code>、<code>domainname</code>、<code>nisdomainname</code>、<code>ypdomainname</code>の5コマンド。}} || hostname || '''uutils hostname'''
|-
| Linuxユーティリティ || util-linux || '''uutils util-linux'''
|-
| 権限昇格 || sudo || '''sudo-rs'''
|-
| 暗号・署名システム || GnuPG || '''Sequoia PGP'''
|-
| 時刻同期 || ntpd || '''ntpd-rs'''
|-
| セキュアシェル (SSH) || OpenSSH || '''russh'''
|}
これらのRustで書かれたコマンドのうちuutils coreutilsとsudo-rsはUbuntuに採用されています。
またライブラリでもRustだけ (Pure Rust) で実装されたものが登場しています:
* 画像ライブラリ - これらは例えばGNOMEデスクトップ環境の画像ローダーGlycinから使われています<ref>[https://gitlab.gnome.org/GNOME/glycin GNOME / glycin · GitLab] GNOME Project</ref>。
** libpng → pngクレート - PNG画像向け。
** libgif → gifクレート - GIF画像向け。
** libjpeg / libjpeg-turbo → zune-jpeg / libjpeg-turbo-rs - JPEG画像向け。
** OpenJPEG → hayro-jpeg2000 - JPEG 2000画像向け。
** libtiff → tiffクレート - Tiff画像向け
** libwebp → image-webpクレート - WebP画像向け。
** libraw → libopenraw - RAW画像向け。
** librsvg - SVG画像向け。C言語からRustに書き直しされました。
* 圧縮ライブラリ
** zlib / zlib-ng → zlib-rs - Deflate圧縮向け
** libbzip2 → bzip2-rs - BZ2圧縮向け
* 暗号化ライブラリ
** OpenSSL / GnuTLS → [[:w:en:Rustls|Rustls]]
* Unicode処理ライブラリ
** ICU4C → ICU4X
* テキスト整形ライブラリ
** HarfBuzz → HarfRust
* ブラウザエンジン
** Blink/Gecko → Servo
<!--
=== 整合性チェック ===
PatchGuard / HyperGuard
-->
== 不審な改変が行われていないかを調べる ==
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| Windows || %APPDATA%\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>* || C:\<wbr>ProgramData\<wbr>Microsoft\<wbr>Windows\<wbr>Start Menu\<wbr>Programs\<wbr>Startup\<wbr>*
|-
| [[:w:PowerShell|PowerShell]] プロファイル<ref>[https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.6 about_Profiles - PowerShell - Microsoft Learn] Microsoft</ref> || %USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Profile.ps1<br>%USERPROFILE%\<wbr>Documents\<wbr>PowerShell\<wbr>Microsoft.PowerShell_profile.ps1 || C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Profile.ps1<br>C:\<wbr>Windows\<wbr>System32\<wbr>WindowsPowerShell\<wbr>*\<wbr>Microsoft.PowerShell_profile.ps1
|}
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能な設定ファイル
|-
! 規格/アプリケーション !! ユーザー !! システム
|-
| POSIX標準 || ~/.profile || /etc/profile
|-
| XDG Base Directory<wbr>標準 || ~/.local/bin/* ||
|-
| FHS{{efn|Filesystem Hierarchy Standard}}<wbr>標準[https://refspecs.linuxfoundation.org/fhs.shtml] || || /bin/* /sbin/* /usr/bin/* /usr/local/bin/* /etc/inittab
|-
| LSB{{efn|Linux Standard Base}}<wbr>標準[https://refspecs.linuxfoundation.org/lsb.shtml] || || /etc/profile.d/* /etc/init.d/* /etc/cron.d/*
|-
| Desktop Application Autostart Specification<wbr>標準[https://specifications.freedesktop.org/autostart/latest/] || ~/.config/autostart/* /media/*/*/.autorun /media/*/*/autorun /media/*/*/autorun.sh /run/media/*/*/.autorun /run/media/*/*/autorun /run/media/*/*/autorun.sh || /etc/xdg/autostart/*
|-
| Bash || ~/.bash_profile ~/.bashrc || /etc/bash_profile /etc/bash.bashrc /etc/bash.bash_logout
|-
| Z shell (Zsh) || ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout || /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout<br/>(または /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin /etc/zsh/zlogout)
|-
| Systemd || ~/.config/systemd/user/* || /etc/systemd/system/* /etc/systemd/user/*
|-
| Xorg || ~/.xinitrc ~/.xserverrc ~/.xsession || /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc /etc/X11/Xsession /usr/share/xsessions/*
|-
| Wayland || || /usr/share/wayland-sessions/*
|-
| Python || ~/.local/lib/python*/site-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getusersitepackages())'</code>で確認可能。}} || /usr/lib/python*/dist-packages/*/** /usr/local/lib/python*/dist-packages/*/**{{efn|絶対パスは<code>python3 -c 'import site; print(site.getsitepackages())'</code>で確認可能。}}
|-
| Perl{{efn|Debian/UbuntuではDebianパッケージ設定システム (debconf) のためにPerlを使用している。}} || || /usr/share/perl*/** /usr/local/share/perl*/** /usr/lib/*/perl*/** /usr/local/lib/*/perl*/**{{efn|絶対パスは<code>perl -V:installsitearch -V:installsitelib -V:installvendorarch -V:installvendorlib -V:archlib -V:privlib -V:installarchlib -V:installprivlib</code>で確認可能。}}
|}
=== パッケージ管理ファイルを検証する ===
パッケージ管理システムが管理しているファイルではファイルハッシュが保存されているため簡単にその検証を行うことが可能です:
* Windows: <code>sfc /scannow</code>
* Debian/Ububntu(Debパッケージ): <code>debsums -s</code>
* RedHat/Fedora(RPMパッケージ): <code>rpm -Va</code>
ただしローカルハッシュが改ざんされている可能性もあるため過信はできません。<!--TODO: ローカルハッシュの検証法-->
自動的にシステムの検証を行うシステムも存在します:
* Android - ブロックデバイスレベルでのハッシュ検証 (dm-verityベース)<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref>
<!--
またUbuntuのSnapパッケージでもdm-verityの導入が進められています。
また特定言語のパッケージの検証は以下で可能です:
* PIP (Python): なし
-->
=== システム領域に不審なファイルが追加されていないかを調べる ===
システムの追加ファイルの検知にはパッケージシステムで管理されていないファイルの一覧を返す以下のようなツールが存在します:
* Debian / Ubuntu(Debパッケージ)向け: cruft-ngパッケージ(<code>cruft</code>コマンド)
上記の<code>cruft</code>コマンドでは設定ファイルだけ残っているパッケージのファイルも出てきてしまいます。そのため、これが邪魔な時は設定ファイルだけ残っているパッケージを<code>sudo apt purge '~c'</code>で削除しましょう。
=== ユーザー領域に不審なファイルが追加されていないかを調べる ===
ユーザースクリプトの書き換えや追加は検知が難しいです。<!--TODO: 良い方法を書く-->
共有ライブラリやスクリプトによるプラグイン追加も可能となっているため、こちらにも気をつけなければいけません。これには例えば以下があります:
{| class="wikitable"
|+ 代表的なユーザースクリプトや拡張機能のディレクトリパス
|-
! 種類 !! Windowsのパス !! macOSのパス !! Linuxのパス
|-
| Google Chrome 拡張機能 || %LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ || ~/Library/Application Support/Google/Chrome/*/Extensions/ || ~/.config/google-chrome/*/Extensions/
|-
| GIMPプラグイン<ref>[https://gimp.cc/faq/add-gimp-plugins.html How to Install GIMP Plugins - Detailed Guide with Troubleshooting] GIMP.cc</ref> || %APPDATA%\GIMP\*\plug-ins\ || ~/Library/Application Support/GIMP/*/plug-ins/ || ~/.config/GIMP/*/plug-ins/
|-
| Blenderスクリプト{{efn|起動スクリプト、アドオンを含む。}}<ref>[https://docs.blender.org/manual/ja/dev/advanced/blender_directory_layout.html Blender's Directory Layout] Blender Foundation</ref> || %APPDATA%\Blender Foundation\Blender\*\scripts\ || ~/Library/Application Support/Blender/*/scripts/ || ~/.config/blender/*/scripts/
|-
| Ardourスクリプト<ref>[https://manual.ardour.org/lua-scripting/ The Ardour Manual - Lua Scripting] Ardour</ref> || %LOCALAPPDATA%\ardour*\scripts\ || ~/Library/Preferences/Ardour*/scripts/ || ~/.config/ardour*/scripts/
|-
| LibreOfficeスクリプト || %APPDATA%\LibreOffice\*\user\Scripts\ || ~/Library/Application Support/LibreOffice/*/user/Scripts/ || ~/.config/libreoffice/*/user/Scripts/
|-
| Visual Studio Code 拡張機能<ref>[https://code.visualstudio.com/docs/configure/extensions/extension-marketplace Extension Marketplace] Microsoft</ref> || %USERPROFILE%\.vscode\extensions\ || ~/.vscode/extensions/ || ~/.vscode/extensions/
|}
=== 改変・追加されたファイルが危険かを調べる ===
実行ファイルやスクリプトはLinuxでは以下で検出できます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs file | grep -i -E ':.*(executable|shared object|relocatable|script)'
/etc/init.d/binfmt-support.dpkg-new: POSIX shell script, ASCII text executable
/etc/update-motd.d/99-livepatch-kernel-upgrade-required: POSIX shell script, ASCII text executable
/usr/lib/chromium-browser/plugins/libpepflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c421e89a5c062a2106a5a4381dc38e779a22795, stripped
</syntaxhighlight>
またClamAVを導入していれば以下でマルウェアデータベースとの照合を行うことができます:
<syntaxhighlight lang="shell-session">
# cat filelist.txt | xargs clamscan
Loading: 3s, ETA: 0s [========================>] 3.63M/3.63M sigs
Compiling: 1s, ETA: 0s [========================>] 41/41 tasks
/etc/apt/apt.conf.d/00trustcdrom: OK
/etc/apt/auth.conf.d/90ubuntu-advantage: OK
/etc/apt/keyrings/google.asc: OK
[...]
----------- SCAN SUMMARY -----------
Known viruses: 3628164
Engine version: 1.5.4
Scanned directories: 125
Scanned files: 1919
Infected files: 0
Total errors: 10
Data scanned: 247.72 MiB
Data read: 281.17 MiB (ratio 0.88:1)
Time: 17.939 sec (0 m 17 s)
Start Date: 2026:10:11 05:41:30
End Date: 2026:10:11 05:41:48
</syntaxhighlight>
=== 設定データベースを検証する ===
設定データベースは Windows ではレジストリ、Linuxでは GNOME / MATEの 使う [[:en:dconf|dconf]] が存在します。
Windows の設定データベースはレジストリと呼び「レジストリエディタ」 (<code>regedit</code>) で表示できます。
{| class="wikitable"
|+ Windows における代表的なユーザースクリプト、コマンド起動、DLL呼び出しが可能なレジストリ
|-
! 規格/アプリケーション !! 各ユーザー !! 全ユーザー
|-
| Windows || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"|RunOnceは一度のみ実行だが再登録することで何回でも実行可能。}} || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>Run\<wbr>*<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows\<wbr>CurrentVersion\<wbr>RunOnce\<wbr>*{{efn|name="runonce"}}
|-
| [[:w:en:Security Account Manager|Security Account Manager]] || || HKEY_LOCAL_MACHINE\<wbr>SAM\<wbr>SAM\<wbr>Domains\<wbr>Account\<wbr>Users\<wbr>*\<wbr>V{{efn|name="sam"|'HKEY_LOCAL_MACHINE\SAM\SAM\' 以下はレジストリエディタの右クリックの「アクセス許可」で Administrators にアクセス許可を与えないと読めない。なおファイルパスは「C:\Windows\System32\config\SAM」。}}{{efn|Vはバイナリであり、0xCC + (0x60 に指定されたオフセット) からユーザーログオンスクリプトパスを指定する<ref name="sam-ghost">Sebastián R. Castro et al. [https://dl.acm.org/doi/pdf/10.1145/3689934.3690839 Ghost in the SAM: Stealthy, Robust, and Privileged Persistence through Invisible Accounts] ACM 2024年</ref>。}}
|-
| [[:w:en:Active Setup|Active Setup]]<ref>[https://www.advancedinstaller.com/application-packaging-training/msi/ebook/active-setup.html Active-Setup Mechanism] Advanced Installer</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Active Setup\<wbr>Installed Components\<wbr>*\<wbr>StubPath<ref>[https://attack.mitre.org/techniques/T1547/014/ Boot or Logon Autostart Execution: Active Setup] MITRE Corporation</ref>
|-
| [[:w:Windowsサービス|Windowsサービス]]<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree HKLM\SYSTEM\CurrentControlSet\Services レジストリ ツリー - Windows drivers - Microsoft Learn] Microsoft</ref> || || HKEY_LOCAL_MACHINE\<wbr>SYSTEM\<wbr>CurrentControlSet\<wbr>services\<wbr>*
|-
| [[:w:Winlogon|Winlogon]] || || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Shell<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Userinit<br>HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Windows NT\<wbr>CurrentVersion\<wbr>Winlogon\<wbr>Notify<ref>[https://attack.mitre.org/techniques/T1547/004/ Boot or Logon Autostart Execution: Winlogon Helper DLL] MITRE Corporation</ref>
|-
| [[:w:cmd.exe|cmd.exe]]<ref>[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd cmd - Microsoft Learn] Microsoft</ref> || HKEY_USERS\<wbr>*\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\REG_EXPAND_SZ || HKEY_LOCAL_MACHINE\<wbr>Software\<wbr>Microsoft\<wbr>Command Processor\<wbr>AutoRun\<wbr>REG_SZ
|-
| [[Microsoft Edge]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Microsoft\<wbr>Edge\<wbr>ExtensionInstallForcelist<ref>[https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies/extensioninstallforcelist Microsoft Edge ブラウザー ポリシードキュメント ExtensionInstallForcelist - Microsoft Learn] Microsoft</ref>{{efn|name="silent-install"|自動的にサイレントインストールする}}
|-
| [[Google Chrome]] || || HKEY_LOCAL_MACHINE\<wbr>SOFTWARE\<wbr>Policies\<wbr>Google\<wbr>Chrome\<wbr>ExtensionInstallForcelist<ref>[https://chromeenterprise.google/intl/ja_jp/policies/extension-install-forcelist/ ExtensionInstallForcelist: 自動インストールするアプリと拡張機能のリストの設定 - Chrome Enterprise] Google</ref>{{efn|name="silent-install"}}
|}
Linux の GNOME / MATE 環境には「[[:w:en:Dconf#dconf database|dconf データベース]]」が存在し、それは<code>dconf dump</code>('/'区切り)で表示できます。また dconf データベースにスキーマ(規定値と解説)を被せた gsettings も存在し、こちらは<code>gsettings list-recursively</code>(dconfと異なり'.'区切り)で表示できます。
{| class="wikitable"
|+ Linux における代表的なユーザースクリプト又はコマンド起動が可能なdconf設定
|-
! 規格/アプリケーション !! ユーザー
|-
| GNOME Settings Daemon || /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom*/command
|-
| Marco ([[w:MATE (デスクトップ環境)|MATE]]) || /org/mate/Marco/keybinding-commands/command-*{{efn|変更した設定は<code>dconf dump /org/mate/Marco/keybinding-commands/</code>で、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.Marco.keybinding-commands</code>で表示可能。}}
|-
| MATE Screensaver || /org/mate/screensaver/embedded-keyboard-command<br>/org/mate/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/mate/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.mate.screensaver</code> で表示可能}}
|-
| mate-applets || /org/mate/panel/objects/object-*/prefs/command
|-
| mate-sensors-applet || /org/mate/panel/objects/object-*/prefs/*/high-alarm-command<br>/org/mate/panel/objects/object-*/prefs/*/low-alarm-command
|}
なお MATE Screensaver と同源の GNOME Screensaver にも /org/gnome/desktop/screensaver/embedded-keyboard-command と /org/gnome/desktop/screensaver/logout-command{{efn|変更した設定は<code>dconf dump /org/gnome/desktop/screensaver/</code>、デフォルトも含めた設定は<code>gsettings list-recursively org.gnome.desktop.screensaver</code> で表示可能。}} が存在しますが、こちらは既に廃止されており指定しても無視されます<ref>[https://github.com/GNOME/gsettings-desktop-schemas/blob/main/schemas/org.gnome.desktop.screensaver.gschema.xml.in gsettings-desktop-schemas/schemas/org.gnome.desktop.screensaver.gschema.xml.in at main · GNOME/gsettings-desktop-schemas] GNOME Project</ref>。
== 改変を防ぐ ==
改変を探すのは大変です。なので最初から改変をできないようにすれば管理はとても楽になります。
改ざんを防ぐには「[[:w:en:Chain of trust|信頼の連鎖]]」 (chain of trust) が重要となります。例えばカーネルだけで改ざんを防いでも、ハードウェアのファームウェアが不正であれば不正なカーネルを起動できてしまいます。
=== ファームウェア改ざんを防ぐ ===
ファームウェア改ざんによる「ファームウェアルートキット」を防ぐにはIntel Management Engine (Intel ME)で実装されているIntel BIOS Guardを使う必要があります。<!--TODO: マザーボードによってはBIOSで有効にする必要があります。→最近のマザーボード事情-->
なお2017年の第8世代Intel Coreプロセッサ (Coffee Lake) 以前はme_cleanerによってIntel Management Engineの無効化が可能<ref>[https://github.com/corna/me_cleaner/wiki/me_cleaner-status me_cleaner status] Nicola Corna 2018年</ref>なため非推奨です。
また2023年のIntel ME 16.1.30.2307未満では悪意あるロゴ画像を設定することによってroot権限からUEFI設定の変更が可能です([[:w:en:LogoFAIL|LogoFAIL]]の脆弱性)。そのため、古いIntel Management Engineが動作している場合はそのファームウェアをアップデートしましょう。Windowsでは MEUpdateTool.exe / FWUpdLcl.exe を使うことでこのアップデートが可能となっています。一方、Linuxでは一部機種が fwupdmgr 経由での Intel ME ファームウェアアップデートに対応しています。
Intel MEのバージョンはLinuxでは以下のような感じに調べることができます:
<syntaxhighlight lang="shell-session">
$ cat /sys/class/mei/mei0/fw_ver
0:16.1.32.2473
0:16.1.32.2473
0:16.1.27.2181
</syntaxhighlight>
=== ブートローダー改ざんを防ぐ ===
ブートローダーは起動に使われるファームウェア (BIOS) から呼ばれ、カーネルを読み込んで起動するために使われるプログラムです。古い BIOS (レガシーBIOS) には起動するブートローダーを検証する仕組みが存在しませんでしたが、新しい UEFI (統一拡張ファームウェアインターフェース) には署名されたブートローダーのみを起動する UEFI Secure Boot が追加され、安全なブートローダーの起動を許可するための「承認済み署名データベース」 (Authorized Signature Database、UEFI db) と、脆弱なブートローダーの起動を防ぐための「禁止署名データベース」 (Forbidden Signature Database、UEFI dbx) が用意されています。
UEFI Secure Boot が有効かどうかは以下で確認できます:
* Windows PowerShell: <code>Confirm-SecureBootUEFI</code>
* Linux: <code>mokutil --sb-state</code>
UEFI db と UEFI dbx の内容は以下で確認できます:
* Windows PowerShell: <code>Get-SecureBootUEFI -Name db -Decoded</code> / <code>Get-SecureBootUEFI -Name dbx -Decoded</code>
* Linux:
** mokutil{{efn|Ubuntu Desktop に標準で含まれている。}}: <code>mokutil --db</code> / <code>mokutil --dbx</code>
** efitools: <code>efi-readvar -v db</code> / <code>efi-readvar -v dbx</code>
ブートローダーの署名情報は以下で確認できます:
* Windows PowerShell: <code>Get-PfxCertificate</code>{{efn|<code>Get-AuthenticodeSignature</code>はカタログ署名が使われる場合があるため非推奨: https://github.com/PowerShell/PowerShell/issues/23820 。}}
* Linux: <code>sbverify --list</code>
例えば Windows PowerShell では以下のような感じです:
<syntaxhighlight lang="powershell">
PS C:\WINDOWS\system32> mountvol S: /S; if ($?) { Get-PfxCertificate 'S:\EFI\Microsoft\Boot\bootmgfw.efi'; mountvol S: /D }
Thumbprint Subject
---------- -------
FACDE3D80E99AFCC15E08AC5A69BD22785287F79 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
</syntaxhighlight>
また Ubuntu や Debian では署名されたブートローダー (grub-efi-*-signedパッケージ) と非署名のブートローダー (grub-efi-*-unsignedパッケージ) の両方が用意されており、ブートローダーの正体がどれか、また署名されたブートローダーの署名内容を確認するのは以下のような感じとなります:
<syntaxhighlight lang="shell-session">
$ dpkg -L grub-efi-amd64-signed | grep -i '\.efi' | xargs md5sum # インストールされている署名されたブートローダーのハッシュを表示(grub*は通常版、gcd*は光学ブートメディア向け、grubnet*はネットブート向け)
2bd267fb12bd3b0fe26a9dfb4290868d /usr/lib/grub/x86_64-efi-signed/gcdx64.efi.signed
f689e93336a015fa6eb93e1913b13482 /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed
b63c7618fb96d52520b42b8cc7b124f0 /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed
$ sudo sh -c "md5sum /boot/efi/EFI/BOOT/*" # 現在のbootloaderがどれを使っているかを確認(署名されたgrubを使用)
b63c7618fb96d52520b42b8cc7b124f0 /boot/efi/EFI/BOOT/BOOTX64.EFI
$ sudo sbverify --list /boot/efi/EFI/BOOT/BOOTX64.EFI
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/efi/EFI/BOOT/BOOTX64.EFI
Signature verification OK
</syntaxhighlight>
なお Linux では grub の代わりに使えるブートローダーとして systemd-boot もあります。systemd-boot の署名版は Debian が systemd-boot-efi-*-signed パッケージとして用意しているようです(Ubuntu未搭載)。
<!--TODO:
TPM (Trusted Platform Module) チップ
-->
=== カーネル本体の改ざんを防ぐ ===
カーネルはオペレーティングシステム (OS) の下層で動き続けるプログラムです。カーネル本体の実行ファイルもブートローダーと同様に署名が行われており、UEFI Secure Boot が有効であればその検証をブートローダーが行います。Linux では GRUB の UEFI Secure Boot と shim_lock の連携がそれに相当します<ref>[https://www.gnu.org/software/grub/manual/grub/grub.html#UEFI-secure-boot-and-shim GNU GRUB Manual 2.14 - 19.4 UEFI secure boot and shim support] フリーソフトウェア財団</ref>。
なお Ubuntu には署名されたカーネル (linux-image-*パッケージ) と非署名のカーネル (linux-image-unsigned-*パッケージ) の両方が用意されており、署名されているカーネルは以下のような感じでその署名が確認できます:
<syntaxhighlight lang="shell-session">
$ sudo sbverify --list /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を確認する
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
$ sudo sbverify --cert /usr/share/grub/canonical-uefi-ca.crt /boot/vmlinuz-$(uname -r) # Linuxカーネル本体の署名を検証する
Signature verification OK
</syntaxhighlight>
=== カーネルモジュールの改ざんを防ぐ ===
カーネルモジュールも署名されており、その検証をカーネルが行っています。Windowsカーネルでは ci.dll (Code Integrityモジュール)が、Linuxカーネルでは CONFIG_MODULE_SIG コンパイルオプションがその検証を行っています。
カーネルによるカーネルモジュールの検証が有効かどうかは以下で確認することができます:
* Linux: <code>grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r)</code>
カーネルによるカーネルモジュールの検証で読み込みを弾くかどうかは以下で確認することができます:
* Windows: 強制モードか評価モード (監査モード) かを確認する PowerShell スクリプトが Microsoft のサイトに存在します: https://support.microsoft.com/en-us/windows/hardware/drivers/the-windows-driver-policy#is-my-device-in-evaluation-mode-or-enforcement-mode
* Linux: <code>cat /sys/module/module/parameters/sig_enforce</code>
また Linux では検証で読み込みを弾かない場合でも検証外カーネルモジュールを読み込んだ場合はdmesgに警告が出て '''Tainted kernel''' 扱いとなります<ref>[https://docs.kernel.org/admin-guide/tainted-kernels.html Tainted kernels] Linux Foundation</ref>。以下はその例です:
<syntaxhighlight lang="shell-session">
$ grep 'CONFIG_MODULE_SIG=' /boot/config-$(uname -r) # y=Yes, n=No
CONFIG_MODULE_SIG=y
$ cat /sys/module/module/parameters/sig_enforce # Y=Yes, N=No
N
$ sudo dmesg | grep 'module verification'
[ 8.928361] nvidia: module verification failed: signature and/or required key missing - tainting kernel
$ wget http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint
[...]
$ sudo sh ./kernel-chktaint
Kernel is "tainted" for the following reasons:
* externally-built ('out-of-tree') module was loaded (#12)
* unsigned module was loaded (#13)
Raw taint value as int/string: 12288/'G OE '
Tainted modules:
* nvidia (OE)
* nvidia_drm (OE)
* nvidia_modeset (OE)
* nvidia_uvm (OE)
For a more detailed explanation of the various taint flags see
Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
</syntaxhighlight>
また Linux では以下のような感じで個々のモジュールの署名が確認できます:
<syntaxhighlight lang="shell-session">
$ modinfo /lib/modules/$(uname -r)/kernel/arch/x86/kernel/msr.ko.zst
filename: /lib/modules/7.0.0-38-generic/kernel/arch/x86/kernel/msr.ko.zst
license: GPL
description: x86 generic MSR driver
author: H. Peter Anvin <hpa@zytor.com>
srcversion: 639B995855A3528050FD532
depends:
intree: Y
name: msr
retpoline: Y
vermagic: 7.0.0-38-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 3B:E7:D3:BF:D3:2E:D9:CA:9C:17:D2:E9:5F:1A:1C:AE:67:D5:82:2F
sig_hashalgo: sha512
signature: 96:BC:2A:18:6E:4D:D8:E5:28:69:9D:E6:65:89:95:D4:BE:4C:5B:7C:
4A:23:11:75:F6:FE:63:79:FC:29:9B:F7:EA:24:B6:F1:EF:F3:80:17:
0B:C0:1E:46:61:29:BB:F9:E0:AC:81:69:85:73:7D:D4:77:82:A8:DB:
[...]
</syntaxhighlight>
=== システムファイル改ざんを防ぐ ===
システムファイル改ざんを防ぐ良い方法はシステム領域を読み取り専用にすることですが、仮にファイルシステムを読み取り専用のファイルシステム(SquashFSやEROFS)にしたとしても記録する場所がSSDであればブロック単位での上書きが可能となります。
1回だけ書き込めて上書きが不可能な媒体としてはCD-R、DVD-R、DVD+R、BD-Rなどの一部の光学メディアが存在しますが、これらをブートメディアとして使用するのは頻繁なアップデートが難しくなります。
そのほかの手法としては別のコンピュータからシステムファイルを取得する「ネットワークブート」を行うという手法もありますが、これはネットワーク経由でシステムファイルが盗まれる可能性と隣り合わせです。しかしながらプロトコルにUEFI HTTPSを、認証に相互認証のmTLSを用いて、その秘密鍵をTPMで管理してOSから読めなくすることでネットワークブートの安全性は何とか確保できるかもしれません(対応マザーボードは不明)。
一方、Android や ChromeOS ではブロックデバイス単位での改ざん検知 (dm-verify) によってシステムイメージの改ざんを防止しています<ref>[https://source.android.com/docs/security/features/verifiedboot/dm-verity?hl=ja dm-verity の実装] Google</ref><ref>[https://research.google/pubs/verified-boot-on-chrome-os-and-how-to-do-it-yourself/ Verified Boot on Chrome OS and How to do it yourself] Google</ref>。
=== カーネルメモリ改ざんを防ぐ ===
カーネルメモリのコード部分は MMU の書き込み禁止によって保護されています。iOS / macOS では Kernel Integrity Protection が<ref>[https://support.apple.com/ja-jp/guide/security/sec8b776536b/web オペレーティングシステムの整合性] Apple</ref> 、Linux では Kernel Strict RWX がこれに相当します<ref>[https://docs.kernel.org/security/self-protection.html Kernel Self-Protection] Linux Foundation</ref>。Windows でもカーネルモードに読み込み専用メモリセグメントが存在し、これに書き込もうとするとブルースクリーンで ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE) が発行されます<ref>[https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/bug-check-0xbe--attempted-write-to-readonly-memory バグ チェック 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY] Microsoft</ref>。しかしながら Linux Kernel では kprobes、Static Keys、Static calls などで自己書き換えが多用されているため、一時的にコード部分を書き込み可能なページに割り当てて書き換える text_poke(...) という抜け道が存在します。
また定期的に改ざんが行われていないかをチェックする仕組みも存在します。Windows では[[:w:Kernel Patch Protection|Kernel Patch Protection]] (PatchGuard) / HyperGuard が、Linux では Linux Kernel Runtime Guard(外部パッチ)がこれに該当します。Windows の PatchGuard では改ざんが検出されたらブルースクリーンで CRITICAL_STRUCTURE_CORRUPTION が発行されます。
<!--TODO: Windows の HVCI、macOS の Secure Page Table Monitor / Trusted Execution Monitor-->
<!--
=== アプリケーション改ざんを防ぐ ===
SELinux / AppArmor
-->
== 攻撃用AIを対策する ==
攻撃用AIでは基本的に賢いかつ制限の緩い大規模言語モデル (LLM) が使われています。この代表的な例として GLM 5.3 や Qwen3.8-27B-ABLITERATED が存在します。
=== コンテキスト爆弾を設置する ===
攻撃用AIの対策では相手のLLMを止めることが重要となります。そこで使えるのが'''コンテキスト爆弾''' (context bombs) という手法です<ref>[https://arstechnica.com/security/2026/07/now-defenders-are-embracing-the-prompt-injection-too/ Now, defenders are embracing the prompt injection, too] Ars Technica 2026年7月14日</ref>。
このコンテキスト爆弾は「相手のLLMに対し応答やツール呼び出しで禁止されていることを行わせようとする」というプロンプトインジェクションの一種であり、それによって相手のガードレールがLLMを止めることで相手からの攻撃を防ぎます。この手法は相手の読みそうなテキストにただプロンプトを書いておけば良いだけなので、お手軽に使えます。
コンテキスト爆弾のテキスト例は以下のリポジトリに存在します:
* https://github.com/tracebit-com/context-bombs
=== ハニーポット ===
ハニーポットは攻撃者を引きつける役目を担います。ハニーポットの評価フレームワークには「UHBS」(Universal Honeypot Benchmarking Standard) が、その品質基準には「UHQS」(Universal Honeypot Quality Score) が存在しますが、2026年現在多くのハニーポットがFランク〜Dランクと残念な状況になっています<ref>[https://uhbs.github.io/uhbs-standard/mkdocs/conformance/ Overview - UHBS — Honeypot Evaluation Framework]</ref>。
<!--
== 自作コードの脆弱性を塞ぐ ==
書きかけ
-->
== 脚注 ==
<references group="注釈"/>
== 参考文献 ==
<references/>
{{DEFAULTSORT:こんひゆうたせきゆりてい}}
[[Category:計算機科学]]
[[Category:情報技術]]
71glys59kb12zz39xtm5m6tvwihcw22
ガリア戦記 第7巻/注解/35節
0
48963
304846
2026-10-18T09:29:29Z
Linguae
449
35節
304846
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;">C · IVLII · CAESARIS · COMMENTARIORVM · BELLI · GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;">LIBER · SEPTIMVS</div>
<br>
{| id="toc" style="align:center;clear:all;" align="center" cellpadding="5"
|-
! style="background:#bbf; text-align:center;" | [[ガリア戦記/注解編|ガリア戦記 注解編]]
| style="background:#ccf; text-align:center;" | [[ガリア戦記 第7巻/注解|第7巻]]
| style="background:#eef; text-align:center;"|
[[ガリア戦記 第7巻/注解/34節|34節]] |
[[ガリア戦記 第7巻/注解/35節|35節]] |
[[ガリア戦記 第7巻/注解/36節|36節]]
|}
__notoc__
== 原文テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>原文テキストについては[[ガリア戦記/注解編#原文テキスト]]を参照。</ref>
</div>
<span style="background-color:#ffc;"></span>
<!--❶--><!--❷--><!--❸--><!--❹--><!--❺--><!--❻--><!--❼--><!--❽--><!--❾--><!--❿--><!--⓫--><!--⓬--><sup></sup>
<!-- <!--◆--> -->
----
;テキスト引用についての注記
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:bold;font-size:15pt;"></span>
== 整形テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>整形テキストについては[[ガリア戦記/注解編#凡例]]を参照。</ref>
</div>
<span style="color:#800;"></span>
<!--❶--><!--❷--><!--❸--><!--❹--><!--❺--><!--❻--><!--❼--><!--❽--><!--❾--><!--❿--><!--⓫--><!--⓬--><sup></sup>
<!-- <!--◆--> -->
----
;注記
<!--
*原文の <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:acclivis#Latin|acclīvis]], [[wikt:en:accommodatae|accommodātae]], [[wikt:en:allatis|allātīs]], [[wikt:en:Aduatuca#Latin|Aduātucam]], [[wikt:en:Aduatuci|Aduatucī]], [[wikt:en:Aduatucis|Aduatucīs]], [[wikt:en:Aduatucos|Aduatucōs]], [[wikt:en:Aeduae|Aeduae]], [[wikt:en:Aedui#Latin|Aeduī]], [[wikt:en:Aeduis|Aeduīs]], [[wikt:en:Aeduorum|Aeduōrum]], [[wikt:en:Aeduos|Aeduōs]], [[wikt:en:Aeduus#Latin|Aeduus]], [[wikt:en:aequinocti|aequinoctī]], [[wikt:en:affecti|affectī]], [[wikt:en:affectus#Participle|affectus]], [[wikt:en:afferat|afferat]], [[wikt:en:afferebat|afferēbat]], [[wikt:en:afferret|afferret]], [[wikt:en:afferretur|afferrētur]], [[wikt:en:afflictae|afflīctae]], [[wikt:en:affligunt|afflīgunt]], [[wikt:en:aggregabat|aggregābat]], [[wikt:en:aggregaverant|aggregāverant]] ([[wikt:en:aggregarant|aggregārant]]), [[wikt:en:allato|allātō]], [[wikt:en:alliciebat#Latin|alliciēbat]], [[wikt:en:Alpis#Latin|Alpīs]], [[wikt:en:appelluntur|appelluntur]], [[wikt:en:appetebat|appetēbat]], [[wikt:en:apportari|apportārī]], [[wikt:en:applicant#Latin|applicant]], [[wikt:en:approbant#Latin|approbant]], [[wikt:en:appropinquabat|appropinquābat]], [[wikt:en:appropinquare#Latin|appropinquāre]], [[wikt:en:appropinquarent|appropinquārent]], [[wikt:en:appropinquassent|appropinquāssent]], [[wikt:en:appropinquaverunt|appropinquāvērunt]] ([[wikt:en:appropinquarunt|appropinquārunt]]), [[wikt:en:appropinquavit|appropinquāvit]], [[wikt:en:appulso#Latin|appulsō]], [[wikt:en:arripere|arripere]], [[wikt:en:articlis|articlīs]], [[wikt:en:ascendissent#Latin|ascendissent]], [[wikt:en:ascensu#Noun|ascēnsū]], [[wikt:en:assidua#Latin|assiduā]], [[wikt:en:assiduis#Latin|assiduīs]], [[wikt:en:assuefacti|assuēfactī]], [[wikt:en:assuescere#Latin|assuēscere]], [[wikt:en:attingit|attingit]], [[wikt:en:attingunt|attingunt]], [[wikt:en:attribuerat#Latin|attribuerat]], [[wikt:en:attribuit|attribuit]], [[wikt:en:attribuunt|attribuunt]], [[wikt:en:auris#Latin|aurīs]], [[wikt:en:auxili#Latin|auxilī]], [[wikt:en:cedentis|cēdentīs]], [[wikt:en:civis#Latin|cīvīs]], [[wikt:en:clientis|clientīs]], [[wikt:en:cohortis|cohortīs]], [[wikt:en:coicere|coicere]], [[wikt:en:coicerent|coicerent]], [[wikt:en:coici|coicī]], [[wikt:en:coiciant|coiciant]], [[wikt:en:coiciebant|coiciēbant]], [[wikt:en:coiciunt|coiciunt]], [[wikt:en:coiecerant|coiēcerant]], [[wikt:en:coiecerunt|coiēcērunt]], [[wikt:en:coiecisse|coiēcisse]], [[wikt:en:coiecta|coiecta]], [[wikt:en:coiecti|coiectī]], [[wikt:en:coiectis|coiectīs]], [[wikt:en:collatis|collātīs]], [[wikt:en:collaudantur|collaudantur]], [[wikt:en:collaudat|collaudat]], [[wikt:en:collaudatis#Participle|collaudātīs]], [[wikt:en:collis#Latin|collīs]], [[wikt:en:collocabant|collocābant]], [[wikt:en:collocabat|collocābat]], [[wikt:en:collocandis|collocandīs]], [[wikt:en:collocant#Latin|collocant]], [[wikt:en:collocantur#Latin|collocantur]], [[wikt:en:collocarat|collocārat]], [[wikt:en:collocare#Latin|collocāre]], [[wikt:en:collocaret|collocāret]], [[wikt:en:collocari|collocārī]], [[wikt:en:collocatas|collocātās]], [[wikt:en:collocati#Latin|collocātī]], [[wikt:en:collocatis#Participle|collocātīs]], [[wikt:en:collocaverat#Latin|collocāverat]], [[wikt:en:collocavit|collocāvit]], [[wikt:en:collocuti|collocūtī]], [[wikt:en:colloquantur|colloquantur]], [[wikt:en:colloquendi|colloquendī]], [[wikt:en:colloqui#Latin|colloquī]], [[wikt:en:colloquium#Latin|colloquium]], [[wikt:en:communis#Latin|commūnīs]], [[wikt:en:compluribus|complūribus]], [[wikt:en:compluris|complūrīs]], [[wikt:en:comprehensis|comprehēnsīs]], [[wikt:en:comprehensos|comprehēnsōs]], [[wikt:en:conantis|cōnantīs]], [[wikt:en:consili|cōnsilī]], [[wikt:en:directus#Latin|dīrēctus]], [[wikt:en:dubitantis#Participle_2|dubitantīs]], [[wikt:en:effarciuntur#Latin|effarciuntur]], [[wikt:en:egredientis#Etymology_2|ēgredientīs]], [[wikt:en:ei#Latin|eī]], [[wikt:en:eis#Latin|eīs]], [[wikt:en:existit#Latin|existit]], [[wikt:en:expectent#Latin|expectent]], [[wikt:en:exposcentis#Participle_2|exposcentīs]], [[wikt:en:exstruxerunt#Latin|exstruxerunt]], [[wikt:en:ferventis#Latin|ferventīs]], [[wikt:en:finis#Latin|fīnīs]], [[wikt:en:glandis#Latin|glandīs]], [[wikt:en:haesitantis#Participle_2|haesitantīs]], [[wikt:en:hostis#Latin|hostīs]], [[wikt:en:ignis#Latin|ignīs]], [[wikt:en:illatas|illātās]], [[wikt:en:illustrem#Latin:_adjective|illūstrem]], [[wikt:en:immittit|immittit]], [[wikt:en:immittunt|immittunt]], [[wikt:en:imparatum|imparātum]], [[wikt:en:impedita#Latin|impedīta]], [[wikt:en:imperi#Latin|imperī]], [[wikt:en:imprudentia#Noun|imprūdentia]], [[wikt:en:incolumis#Latin|incolumīs]], [[wikt:en:indignantis#Participle_2|indignantīs]], [[wikt:en:inopinantis#Adjective_2|inopīnantīs]], [[wikt:en:irridere#Latin|irrīdēre]], [[wikt:en:irrumpere|irrumpere]], [[wikt:en:irrumpit|irrumpit]], [[wikt:en:irruperunt|irrūpērunt]], [[wikt:en:laborantis#Etymology_2|labōrantīs]], [[wikt:en:montis|montīs]], [[wikt:en:natalis#Latin|nātālīs]], [[wikt:en:navis#Latin|nāvīs]], [[wikt:en:negoti|negōtī]], nōn nūllae, nōn nūllōs, [[wikt:en:offici#Noun_2|officī]], [[wikt:en:omnis#Latin|omnīs]], [[wikt:en:partis#Latin|partīs]], [[wikt:en:periclum#Latin|perīclum]], plūrīs, [[wikt:en:praesidi|praesidī]], [[wikt:en:proeli|proelī]], proficīscentīs, [[wikt:en:resistentis|resistentīs]], [[wikt:en:singularis#Latin|singulārīs]], [[wikt:en:solaci|sōlācī]], [[wikt:en:spati#Latin|spatī]], [[wikt:en:subeuntis|subeuntīs]], [[wikt:en:suffossis|suffossīs]], [[wikt:en:sumministrata|sumministrāta]], [[wikt:en:summissis|summissīs]], [[wikt:en:summittantur#Latin|summittantur]], [[wikt:en:summittebat|summittēbat]], [[wikt:en:summittit|summittit]], [[wikt:en:summotis|summōtīs]], [[wikt:en:summoveri|summovērī]], [[wikt:en:supplici#Noun|supplicī]], [[wikt:en:testis#Latin|testīs]], [[wikt:en:timentis#Participle_2|timentīs]], [[wikt:en:Tituri|Titūrī]], [[wikt:en:Trinobantes#Latin|Trinobantēs]], trīs, [[wikt:en:turris#Latin|turrīs]], [[wikt:en:utilis#Latin|ūtilīs]], [[wikt:en:vectigalis#Latin|vectīgālīs]] </span> などは、<br>それぞれ <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:adclivis#Latin|adclīvis]], [[wikt:en:adcommodatae|adcommodātae]], [[wikt:en:adlatis|adlātīs]], Atuātucam, [[wikt:de:Atuatuci|Atuatucī]], Atuatucīs, Atuatucōs, Haeduae, [[wikt:en:Haedui|Haeduī]], [[wikt:en:Haeduis|Haeduīs]], [[wikt:en:Haeduorum|Haeduōrum]], [[wikt:en:Haeduos|Haeduōs]], Haeduus, [[wikt:en:aequinoctii|aequinoctiī]], [[wikt:en:adfecti|adfectī]], [[wikt:en:adfectus#Adjective|adfectus]], [[wikt:en:adferat|adferat]], [[wikt:en:adferebat|adferēbat]], [[wikt:en:adferret|adferret]], [[wikt:en:adferretur|adferrētur]], [[wikt:en:adflictae|adflīctae]], [[wikt:en:adfligunt|adflīgunt]], [[wikt:en:adgregabat|adgregābat]], [[wikt:en:adgregaverant|adgregāverant]] ([[wikt:en:adgregarant|adgregārant]]), [[wikt:en:adlato|adlātō]], [[wikt:en:adliciebat#Latin|adliciēbat]], [[wikt:en:Alpes#Latin|Alpēs]], [[wikt:en:adpelluntur|adpelluntur]], [[wikt:en:adpetebat|adpetēbat]], [[wikt:en:adportari|adportārī]], [[wikt:en:adplicant|adplicant]], [[wikt:en:adprobant#Latin|adprobant]], [[wikt:en:adpropinquabat|adpropinquābat]], [[wikt:en:adpropinquare|adpropinquāre]], [[wikt:en:adpropinquarent|adpropinquārent]], [[wikt:en:adpropinquassent|adpropinquāssent]], [[wikt:en:adpropinquaverunt|adpropinquāvērunt]] ([[wikt:en:adpropinquarunt|adpropinquārunt]]), [[wikt:en:adpropinquavit|adpropinquāvit]], [[wikt:en:adpulso|adpulsō]], [[wikt:en:adripere|adripere]], [[wikt:en:articulis|articulīs]], [[wikt:en:adscendissent|adscendissent]], [[wikt:en:adscensu#Noun|adscēnsū]], [[wikt:en:adsidua|adsiduā]], [[wikt:en:adsiduis#Latin|adsiduīs]], [[wikt:en:adsuefacti|adsuēfactī]], [[wikt:en:adsuescere#Latin|adsuēscere]], [[wikt:en:adtingit|adtingit]], [[wikt:en:adtingunt|adtingunt]], [[wikt:en:adtribuerat#Latin|adtribuerat]], [[wikt:en:adtribuit|adtribuit]], [[wikt:en:adtribuunt|adtribuunt]], [[wikt:en:aures#Noun|aurēs]], [[wikt:en:auxilii|auxiliī]], [[wikt:en:cedentes#Latin|cēdentēs]], [[wikt:en:cives#Latin|cīvēs]], [[wikt:en:clientes#Latin|clientēs]], [[wikt:en:cohortes#Latin|cohortēs]], [[wikt:en:conicere|conicere]], [[wikt:en:conicerent|conicerent]], [[wikt:en:conici#Latin|conicī]], [[wikt:en:coniciant|coniciant]], [[wikt:en:coniciebant|coniciēbant]], [[wikt:en:coniciunt|coniciunt]], [[wikt:en:coniecerant|coniēcerant]], [[wikt:en:coniecerunt|coniēcērunt]], [[wikt:en:coniecisse|coniēcisse]], [[wikt:en:coniecta|coniecta]], [[wikt:en:coniecti|coniectī]], [[wikt:en:coniectis|coniectīs]], [[wikt:en:conlatis|conlātīs]], [[wikt:en:conlaudantur|conlaudantur]], [[wikt:en:conlaudat|conlaudat]], [[wikt:en:conlaudatis#Participle|conlaudātīs]], [[wikt:en:colles#Latin|collēs]], [[wikt:en:conlocabant|conlocābant]], [[wikt:en:conlocabat|conlocābat]], [[wikt:en:conlocandis|conlocandīs]], [[wikt:en:conlocant|conlocant]], [[wikt:en:conlocantur#Latin|conlocantur]], [[wikt:en:conlocarat|conlocārat]], [[wikt:en:conlocare|conlocāre]], [[wikt:en:conlocaret|conlocāret]], [[wikt:en:conlocari|conlocārī]], [[wikt:en:conlocatas|conlocātās]], [[wikt:en:conlocati|conlocātī]], [[wikt:en:conlocatis#Participle|conlocātīs]], [[wikt:en:conlocaverat#Latin|conlocāverat]], [[wikt:en:conlocavit|conlocāvit]], [[wikt:en:conlocuti|conlocūtī]], [[wikt:en:conloquantur|conloquantur]], [[wikt:en:conloquendi|conloquendī]], [[wikt:en:conloqui#Latin|conloquī]], [[wikt:en:conloquium#Latin|conloquium]], [[wikt:en:communes#Latin|commūnēs]], [[wikt:en:conpluribus|conplūribus]], [[wikt:en:complures#Latin|complūrēs]], [[wikt:en:conprehensis|conprehēnsīs]], [[wikt:en:conprehensos|conprehēnsōs]], [[wikt:en:conantes|cōnantēs]], [[wikt:en:consilii|cōnsiliī]], [[wikt:en:derectus#Latin|dērēctus]], [[wikt:en:dubitantes|dubitantēs]], [[wikt:en:efferciuntur#Latin|efferciuntur]], [[wikt:en:egredientes|ēgredientēs]], [[wikt:en:ii#Latin|iī]], [[wikt:en:iis#Latin|iīs]], [[wikt:en:exsistit|exsistit]], [[wikt:en:exspectent#Latin|exspectent]], [[wikt:en:exposcentes#Latin|exposcentēs]], [[wikt:en:extruxerunt#Latin|extruxerunt]], [[wikt:en:ferventes#Latin|ferventēs]], [[wikt:en:fines#Latin|fīnēs]], [[wikt:en:glandes#Latin|glandēs]], [[wikt:en:haesitantes#Latin|haesitantēs]], [[wikt:en:hostes#Latin|hostēs]], [[wikt:en:ignes|ignēs]], [[wikt:en:inlatas|inlātās]], [[wikt:en:inlustrem#Latin:_adjective|inlūstrem]], [[wikt:en:inmittit|inmittit]], [[wikt:en:inmittunt|inmittunt]], [[wikt:en:inparatum|inparātum]], [[wikt:en:inpedita#Latin|inpedīta]], [[wikt:en:imperii#Latin|imperiī]], [[wikt:en:inprudentia#Noun|inprūdentia]], [[wikt:en:incolumes|incolumēs]], [[wikt:en:indignantes#Latin|indignantēs]], [[wikt:en:inopinantes|inopīnantēs]], [[wikt:en:inridere|inrīdēre]], [[wikt:en:inrumpere|inrumpere]], [[wikt:en:inrumpit|inrumpit]], [[wikt:en:inruperunt|inrūpērunt]], [[wikt:en:laborantes#Latin|labōrantēs]], [[wikt:en:montes#Latin|montēs]], [[wikt:en:natales#Latin|nātālēs]], [[wikt:en:naves#Latin|nāvēs]], [[wikt:en:negotii|negōtiī]], [[wikt:en:nonnullae|nōnnūllae]], [[wikt:en:nonnullos|nōnnūllōs]], [[wikt:en:officii#Latin|officiī]], [[wikt:en:omnes#Latin|omnēs]], [[wikt:en:partes#Latin|partēs]], [[wikt:en:periculum#Latin|perīculum]], [[wikt:en:plures|plūrēs]], [[wikt:en:praesidii|praesidiī]], [[wikt:en:proelii|proeliī]], [[wikt:en:proficiscentes|proficīscentēs]], [[wikt:en:resistentes#Latin|resistentēs]], [[wikt:en:singulares#Latin|singulārēs]], [[wikt:en:solacii|sōlāciī]], [[wikt:en:spatii#Latin|spatiī]], [[wikt:en:subeuntes|subeuntēs]], [[wikt:en:subfossis|subfossīs]], [[wikt:en:subministrata|subministrāta]], [[wikt:en:submissis|submissīs]], [[wikt:en:submittantur#Latin|submittantur]], [[wikt:en:submittebat|submittēbat]], [[wikt:en:submittit|submittit]], [[wikt:en:submotis|submōtīs]], [[wikt:en:submoveri|submovērī]], [[wikt:en:supplicii|suppliciī]], [[wikt:en:testes#Latin|testēs]], [[wikt:en:timentes|timentēs]], [[wikt:en:Titurii|Titūriī]], [[wikt:en:Trinovantes#Latin|Trinovantēs]], [[wikt:en:tres#Latin|trēs]], [[wikt:en:turres#Latin|turrēs]], [[wikt:en:utiles#Latin|ūtilēs]], [[wikt:en:vectigales|vectīgālēs]] </span> などとした。
-->
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="color:#b00;"></span>
<span style="color:#800;"></span>
<span style="font-size:10pt;"></span>
<span style="background-color:#ff0;"></span>
== 注解 ==
=== 1項 ===
<span style="font-family:Times New Roman;font-size:20pt;"></span>
;語釈
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="background-color:#ccffcc;"></span>
<!--
;対訳
《 》 内は、訳者が説明のために補った語。<span style="font-family:Times New Roman;font-size:30pt;">{</span> <span style="font-family:Times New Roman;font-size:30pt;">}</span> 内は関係文。
<span style="font-family:Times New Roman;font-size:15pt;"></span>
-->
== 訳文 ==
*<span style="background-color:#dff;">訳文は、[[ガリア戦記_第7巻#35節]]</span>
== 脚注 ==
{{Reflist}}
== 解説 ==
<!--
{| class="wikitable" style="text-align:center"
|- style="height:23em;"
|
|
|}
-->
== 関連項目 ==
*[[ガリア戦記]]
**[[ガリア戦記/注解編]]
***[[ガリア戦記 第7巻/注解]]
**[[ガリア戦記/用例集]]
== 関連記事 ==
== 外部リンク ==
[[Category:ガリア戦記 第7巻|35節]]
9heq7wbsr08ak7vkyqzw536l60tpepm