コンテンツにスキップ

勉強会の記録

私が主催・参加している/していた, 勉強会の記録・資料をまとめています.

勉強会

定期的に開催していた/している, 主にオンラインの勉強会です.

現在

  • 物理数学の個人指導: 毎週月曜 20:00-21:30
  • ベイズ統計・機械学習勉強会: 毎週水曜 20:00-21:00

過去

  • アインシュタインの原論文を多言語で読もうの会: 毎週金曜 20:00-21:00
  • 数学・科学の英語記事を読もうの会: 毎週金曜 21:00-22:00
  • 高校生・大人向け中高数学学習会
  • 成人女性向け数学カフェ: 月一, 東京のリアルカフェで開催, 2014年頃. 小数の計算など算数の基本から数学研究レベルの話まで参加者が思い思いの内容に取り組む.
  • IT基礎知識・プログラミング・数学勉強会, 2020/4-2021/4 毎週日曜13:00-15:00
  • 理論物理学者に市民が数学を教える会: 2020/9/28-2021/7/12: 本格的な個人指導に移行
  • ENERGEIA 算数とプログラミングを勉強する会

ベイズ統計・機械学習オンライン勉強会

黒木ノートなどの一部のまとめ

PDFが読み込まれない場合はリロードしてください.

2020-12-23 統計学の基礎

メモ

注意

  • 録画はじめた?

忘れる前に説明

  • 今日: 「統計学の基礎」と称して基礎の部分と用語を整理する
  • 今後: あとで説明する「純粋統計学」の部分を議論する
    • 特にプログラムによるいろいろな検証に興味がある

統計学の基礎

コメントまとめ+TODO
  • 【「確率で記述できるのか」問題】のところはもっと議論 (説明) が必要
    • 何を意図しているか具体例もつける
    • 議論している動画を見直して質問+応答の形で説明を追加する
  • 【理論統計学】の定義
    • 【純粋統計学】との区別はいいとして【応用統計学】との区別がそれほど明らかではない
    • よい分類・よい言葉は引き続き考える
はじめに

ここでは統計学の細々とした話の前に統計学の設定に関してまとめます. 私の観測範囲ではあまり見かけないものの, 統計学をきちんと理解し応用する上で大事だと思ったことを書いています.

基本文献

次の文献を基本に据えています.

まずは「渡辺澄夫, 統計学入門 「主義」 を心配するみなさまに」を読むといいでしょう. 短かさもあるので次に赤池の 2 論文を読んでみてください. 最後の教科書はそれほど簡単ではありません. この講座はこの本を読みこなすための私の基礎体力作りも兼ねて内容を整備しています.

上記文献に書いていないことからはじめる

私がこの講座を作ろうと思ったきっかけの 1 つでもあります. 私にとっての統計学の出発点で, それは統計学の前提と確率論との関係です. 実質的に確率論・統計学という言葉にはいくつかの使い分けがあり, それがおざなりなせいで余計な混乱を生んでいるように思います. これを私の視点で整理することからはじめます. まずは確率論と統計学の整理をしましょう.

確率論と統計学を無理やり分類する

期待値・平均・分散・エントロピーなど確率論と統計学に共通する概念があり, 少なくとも統計学では確率論の諸概念を使うため厳密にわけても大した意味はありません. しかし尤度のように確率論ではあまり出てこない一方で統計学で基本的な概念もありますし, 言葉を用意しておくと便利なように思います. この講座では次のような大まかな分類をした上で呼び方を決めます.

  • 確率論: 数学の 1 分野の確率論を指す. 現代的な公理的確率論と言ってもいい.
  • 純粋統計学: 尤度の数学的性質のように, 統計学の中で純粋に数学の問題として決着がつく・つけられる・つけるべきテーマを扱う分野を指す. 確率論と重なる部分もある.
    • 極限の議論は数学的な山場の 1 つ
    • プログラムを駆使した有限部分の議論がもう 1 つの山場
    • TODO 理論統計学ときちんと区別できるような特徴づけを探し, 対応する議論・説明をつけていく
  • 理論統計学: 応用に使うことを意識した統計学の理論研究を指す. 上述の赤池論文のような内容をイメージしている. 応用統計学に関わる理論といってもいいかもしれない.
    • TODO 必要に応じて細分する
  • 応用統計学: 実データの分析を指す. 「統計が使えるようになりたい」というときの統計.

この中で確率論と純粋統計学は純粋に数学なので「数学」という以上の説明・意味はありません. 純粋統計学は数理統計学と呼ぶ方がいいかもしれませんが, これは定義・守備範囲のはっきりしない既存の「数理統計学」とまぎらわしいので別の言葉をあてました. 応用統計学もそれほど守備範囲のイメージに問題はないでしょう. 問題は理論統計学です.

理論統計学は応用統計学に関わる議論と書いた以上, 応用統計学と重なる部分があります. 理論統計学でイメージしたのは理論物理です. 理論物理ではメインタスクとして, 例えば未知の現象を探るための理論を作ることや, 既存の実験事実を説明するための理論整備があります. 特に前者は実際の実験データを離れて理論物理学者同士が物理の理論を検討します. 「数学」ではなく統計学の議論をするという意味で, 純粋統計学とわけたかったのがここでの分類の意図です. そして「哲学」を含めてよく議論が紛糾しているのがこの理論統計学であろう, という気分を込めています.

確率論を大まかに

確率論は完全に数学です. 適当に確率と呼ばれる概念を設定したうえで, それが「正しい前提」で議論を進めます.

例えば「サイコロを振ったとき, 各目の出る確率は等しいとする」と仮定して批判的に吟味せずに進めます. 確率とは何か, といった問題も一切気にしません.

統計学を大まかに

統計学についてはいろいろな混乱があるようです. それを見ている限り, まずは次のような分類に注意するといいように思います.

  • 応用的な統計学: 実データの分析
    • 記述統計
    • 推測統計
  • 理論的な統計学
    • 思考実験を含む統計学の「理論」の議論, 理論統計学
    • 数学としての統計学, 純粋統計学

あくまでここでの分類で一般的な分類ではありません.

まず大雑把な話からはじめます. 前者の応用面が「本来の統計学」だろうと思います. 英語の statistics は国 state の状態を考えるところから来ていて, 特に記述統計が応用統計の原点でしょう. 推測統計, そして理論研究のモチベーションもあくまでここから来るはずです. 極端に言えば記述統計は全数調査がもとにあり, 統計学の適用対象の広がりに合わせて記述統計だけでは議論しきれない部分が出てきます. その部分を埋める適切な推論法が必要で, それが推測統計の理論と実践にあたります. 純粋に数学的な理論とそれを統計学としてどう解釈するかが重要で, この解釈に関わる理論整備が先の理論統計学の仕事の 1 つです.

統計学の暗黙の前提

図も入っていて明確なので渡辺さんの次のスライドを参考にしましょう.

このP.13やP.16を問題にします. 特にP.16では具体的に「統計数理とモデリング」というタイトルがついていて, 「統計学」は数理モデリングの 1 分野であるとされています. 特に次の図式に着目しましょう. \begin{align} \begin{tikzpicture}[auto] \node (a) at (0, 1.2) {未知の分布}; \node (x) at (2.5, 1.2) {データ}; \node (b) at (0, 0) {推測された分布}; \node (y) at (2.5, 0) {統計的諸量}; \draw[->] (a) to (x); \draw[->] (x) to node{モデルと事前分布} (y); \draw[<->] (a) to node[swap] {誤差の推定} (b); \draw[<-] (b) to (y); \end{tikzpicture} \end{align}

「統計学」はこの未知の分布をどう推測するかが課題とされています. そして次のような記述があります.

  • P.14: データを発生している真の分布は不明である
  • P.21: 正しい主義は存在しない
  • P.21: 正しい方法も存在しない
  • P.21: 好きな方法を使ってよいが結果は常に間違っている
  • P.21: どのくらい間違っているかを数学的に知ることができる

私がここで問題にしたいのはそもそも「統計学」は数理モデリングであること, そして未知の分布の仮定です. つまり「統計学」はあくまで\coloredtextbf{真の分布があると仮定}した上で, その真の分布を推測する理論なのです. そもそも真の分布があるかどうか, \coloredtextbf{調査対象を確率分布で記述するのが正しいか・適切かどうか}を問題にしていません. 確率論が確率とは何かを問わない数学であるように, 「統計学」は問題を確率で記述できることを疑わない数学の側面があるのです.

「確率で記述できるのか」問題

例えば天気予報を考えてみましょう.

  • 「明日の東京での降水確率は80\%です.」

自然現象を考える上では物理が基本なので物理から考えてみます. 降水確率の正確な定義はともかく, 物理としては明日の東京の天気は物理法則から完全に決まっているとみなすべき現象で, 確率的に決まる現象ではありません. 一方で現実的な問題として物理法則, 特に数学としての微分方程式の初期条件を厳密に・正確に特定しきれない問題があり, その不確定さを補うために確率論を援用しています. ここで確率論を援用していいかどうかは完全に非自明です. 天気予報の精度がいいか悪いかという以前の話です.

先程紹介した基礎文献によれば「統計学」はあくまで数理モデリングです. 「統計学」による推測結果が正しいかどうかという以前に, 「統計学」または確率論を使った記述が適切かどうかという問題があります. 自明な人には自明なのでしょう. しかしあまりにも言及がなさすぎるように思います. 「哲学」的な統計学の正しさの議論の前に, 数理モデリングとしての統計学の立ち位置を明確にすべきであり, 私は先程の図式は次のように書くべきだと考えています. \begin{align} \begin{tikzpicture}[auto] \node (z) at (-4.0, 1.2) {解析対象}; \node (a) at (0, 1.2) {未知の分布}; \node (x) at (2.5, 1.2) {データ}; \node (b) at (0, 0) {推測された分布}; \node (y) at (2.5, 0) {統計的諸量}; \draw[->] (z) to node{存在を仮定} (a); \draw[->] (a) to (x); \draw[->] (x) to node{モデルと事前分布} (y); \draw[<->] (a) to node[swap] {誤差の推定} (b); \draw[<-] (b) to (y); \end{tikzpicture} \end{align}

アンケート

毎回アンケートを取っています. 質問や要望がある場合もこちらにどうぞ.

アンケートは匿名なので気楽にコメントしてください. 直接返事してほしいことがあれば, メールなど適当な手段で連絡してください. 返事は確約できませんが, 適当な手段でコンテンツに反映させていきます.

進捗・対応メモ

2020-12-23

2021-01-06

2021-01-13

2021-01-20

2021-01-27

2021-02-03

2021-02-10

2021-02-17

  • 004_KL_information_and_descriptive_statistics.ipynb
  • 「カルバック-ライブラ情報量と記述統計」
  • 「0.23.3.12 最尤法で予測精度が下がる数値実験の案内」で引用されているLASSOの計算ノートブックのコードを一通り眺めた
  • グラフ・アニメーションもいくつか見た
  • 次回は同じく「カルバック-ライブラ情報量と記述統計」の「0.23.3.13 平均と分散の特徴づけ」の予定

2021-02-24

  • お休み

2021-03-03

2021-03-10

  • お休み

2021-03-17

  • 「0.23.4.13 平均と分散の特徴づけ」から
  • 「0.23.4.20 中央値の特徴づけ」まで

2021-03-24

  • お休み

2021-03-31

  • 録画を忘れずに
  • 予定: 0.23.4.21「中央値と中央値との差の絶対値の平均とラプラス分布モデルによる推定」から
  • 0.23.4.28 「ガンマ分布モデルの汎化誤差」
  • 次回: 0.23.4.29 「ガンマ分布モデルの最尤推定」から
  • メモ
    • 0.23.4.22 ラプラス分布モデルによる最尤推定 正規分布モデル?
    • log p(x|α, θ) 全体にマイナスがいる
    • ディガンマをお絵描きする

2021-04-07

  • お休み

2021-04-14

  • 録画を忘れずに
  • 0.23.4.29 「ガンマ分布モデルの最尤推定」から
  • 0.23.6.7「両側検定に対する注意」まで
  • 次回予定: 「0.23.6.6 正規分布モデルによる母集団平均に関する両側検定の作成」の復習から

2021-04-21

  • 予定: 「0.23.6.6 正規分布モデルによる母集団平均に関する両側検定の作成」の復習から
  • 「0.23.7.5 例」まで
  • 次回予定: 「0.23.7 最小二乗法の信頼区間と予測区間」の設定復習から
  • 限定公開の動画タイトル『2021-04-21 ベイズ統計勉強会 黒木ノートの勉強その11 正規分布モデルとt分布による母平均の仮説検定と区間推定, 最小二乗法の信頼区間と予測区間』

2021-04-28

  • 「0.23.7 最小二乗法の信頼区間と予測区間」終了
  • ipynb置き場
  • 限定公開の動画タイトル『2021-04-28 ベイズ統計勉強会 黒木ノートの勉強その12 最小二乗法の信頼区間と予測区間』
  • 次回予定: 「0.23.8 TODO 分割表でのピアソンの $\chi^2$ 統計量」
  • GW中に富谷昭夫・著『これならわかる機械学習入門』の準備する?

2021-05-05

  • GW でお休み

2021-05-12

  • 都合によりお休み

2021-05-19

  • 「0.23.8.7 周辺度数がすべて固定されている分割表の独立性を満たす確率分布の漸近挙動」まで
  • ipynb置き場
  • 限定公開の動画タイトル『2021-05-19 ベイズ統計勉強会 黒木ノートの勉強その13 分割表でのピアソンの $\chi^2$ 統計量 その 1』
  • 次回予定: 「0.23.8.8 ピアソンの $\chi^2$ 統計量と $G$ 統計量の定義」から
  • MISC 株×データサイエンスについて
    • 実データ分析事例として面白そう
    • けっこうなボリュームの資料がある
    • データは適当な定型データが得られるだろうから, 一度プログラムを整備しておけば, プログラムの使い回しで記述統計・機械学習がずっと回せる
    • プログラムを書くのも計算するのもいいが, 実際に自分達でデータ分析をするのもとても大事でこの題材に良さそう.

2021-05-19

  • 「0.23.8.7 周辺度数がすべて固定されている分割表の独立性を満たす確率分布の漸近挙動」まで
  • ipynb置き場
  • 限定公開の動画タイトル『2021-05-19 ベイズ統計勉強会 黒木ノートの勉強その13 分割表でのピアソンの $\chi^2$ 統計量 その 1』
  • 次回予定: 「0.23.8.8 ピアソンの $\chi^2$ 統計量と $G$ 統計量の定義」から
  • MISC 株×データサイエンスについて
    • 実データ分析事例として面白そう
    • けっこうなボリュームの資料がある
    • データは適当な定型データが得られるだろうから, 一度プログラムを整備しておけば, プログラムの使い回しで記述統計・機械学習がずっと回せる
    • プログラムを書くのも計算するのもいいが, 実際に自分達でデータ分析をするのもとても大事でこの題材に良さそう.

2021-05-26

  • 「0.23.8.8 ピアソンの $\chi^2$ 統計量と $G$ 統計量の定義」から「0.23.8.12 分割表での対数尤度比の計算: 分割表$A = \rbk{a_{ij}}$に制限がない場合」まで
    • ipynb も確認
  • ipynb置き場
  • 限定公開の動画タイトル『2021-05-26 ベイズ統計勉強会 黒木ノートの勉強その14 分割表でのピアソンの $\chi^2$ 統計量 その 2』
  • 次回予定: 「0.23.8.13 分割表での対数尤度比の計算: 分割表$A = \rbk{a_{ij}}$の総和$\sum_{i,j} a_{ij} = n$が一定の場合」

2021-06-02

  • 「0.23.8.13 分割表での対数尤度比の計算: 分割表$A = \rbk{a_{ij}}$の総和$\sum_{i,j} a_{ij} = n$が一定の場合」から0.23.8の終わりまで
  • ipynb置き場
  • 限定公開の動画タイトル『2021-06-02 ベイズ統計勉強会 黒木ノートの勉強その15 分割表でのピアソンの $\chi^2$ 統計量 その 3』
  • 次回予定: 「最尤法とカイ二乗検定の基礎」(ウィルクスの定理)

2021-06-09

  • 「「最尤法とカイ二乗検定の基礎」(ウィルクスの定理)」から「0.23.13.10.1最尤法の基礎」まで
  • 限定公開の動画タイトル『2021-06-09 ベイズ統計勉強会 黒木ノートの勉強その16 最尤法とカイ二乗検定の基礎 その 1』
  • 次回予定

2021-06-16

2021-06-23

2021-06-30

2021-07-07

2021-07-14

2021-07-21

2021-07-28

2021-08-04

2021-08-11

2021-08-18

2021-08-25

2021-09-01

2021-09-08

2021-09-15

  • 都合により中止

2021-09-22

2021-09-29

  • お休み

2021-10-06

2021-10-13

2021-10-20

諸事情によりお休み.

2021-10-27

2021-11-03

2021-11-10

2021-11-10, 2021-11-17, 2021-11-24,

  • お休み

2021-12-01

2021-12-08

  • お休み

2021-12-15

2021-12-22

2022-01-12

2022-01-19

2022-01-26

2022-02-02

2022-02-09

2022-02-16

  • お休み

2022-02-23

2022-03-02

2022-03-09

  • 都合によりお休み

2022-03-16

  • 都合によりお休み

2022-03-23

  • YouTube動画のタイトル(予定)「2022-03-23 ベイズ統計勉強会 JuliaのStatistics読解 第1回」
  • 今回: Juliaのソースコード読解, StatsBase
    • JuliaStats.orgの上の方から
    • JuliaStatsのStatsBase.jlを読みはじめた.
    • 実際のプログラムとしてのstc/StatsBase.jlを眺め, これのimport順に読む.
    • common.jl終了
    • weights.jl: Base.setindex!まで終わり.
  • 次回: StatsBase.jl, weights.jl のvarcorrectionから

2022-03-30

  • YouTube動画のタイトル「2022-03-30 ベイズ統計勉強会 JuliaのStatistics読解 第2回」
  • 今回: Juliaのソースコード読解, StatsBase
    • JuliaStats.orgの上の方から
    • StatsBase.jl, weights.jl のvarcorrectionから
    • StatsBase.jl, weights.jl のL.332, Base.getindexまで
  • 次回: StatsBase.jl, weights.jlのL.334から

2022-04-06

  • YouTube動画のタイトル(予定)「2022-04-06 ベイズ統計勉強会 JuliaのStatistics読解 第3回」
    • 録画忘れたので動画なし.
  • 今回: Juliaのソースコード読解, StatsBase
    • JuliaStats.orgの上の方から
    • StatsBase.jl, weights.jl のvarcorrectionから
    • StatsBase.jl, weights.jl のquantile, L.769まで
  • 次回:
    • StatsBase.jl, weights.jl のquantile, L.771, quantileから

2022-04-13

  • YouTube動画のタイトル(予定)「2022-04-13 ベイズ統計勉強会 JuliaのStatistics読解 第4回」
  • 今回: Juliaのソースコード読解, StatsBase
    • StatsBase.jl, weights.jl のquantile, L.771, quantileから
    • StatsBase.jl, weights.jl終了, scalarstats.jlのmodeまで
  • 次回:
    • StatsBase.jl, scalarstats.jlのL81, modesから

2022-04-20

  • 都合によりお休み

2022-04-27

  • 動画: 撮影忘れ
  • 今回: Juliaのソースコード読解, StatsBase
    • StatsBase.jl, scalarstats.jlのL81, modesから
    • 同ファイル, L625, genvarまで
  • 次回: StatsBase.jl, scalarstats.jlのL627, totalvarから

2022-05-04

  • GWでお休み

2022-05-11

  • YouTube動画のタイトル(予定)「2022-05-11 ベイズ統計勉強会 JuliaのStatistics読解 第5回」
  • 今回: StatsBase.jl, scalarstats.jlのL627, totalvarから robust.jlの最後まで
  • 次回: StatsBase.jl, deviation.jlの最初から

2022-05-18

  • YouTube動画のタイトル(予定)「2022-05-18 ベイズ統計勉強会 JuliaのStatistics読解 第6回」
  • ちょっとアナウンス
  • 今回: StatsBase.jl, deviation.jlの最初からcounts.jlのL.212, proportions()関数まで
  • 次回: counts.jlのL.215, _normalize_countmap()関数から

2022-05-25

  • YouTube動画のタイトル(予定)「2022-05-25 ベイズ統計勉強会 JuliaのStatistics読解 第7回」
  • 今回: counts.jlのL.215, _normalize_countmap()関数からtoeplitzsolvers.jlまで
  • 次回: rankcorr.jlから

2022-06-01

  • 都合により休止

2022-06-08

  • YouTube動画のタイトル(予定)「2022-06-08 ベイズ統計勉強会 JuliaのStatistics読解 第8回」
  • 今回: rankcorr.jl対応
  • 次回: signalcorr.jlから

2022-06-15

  • YouTube動画のタイトル(予定)「2022-06-15 ベイズ統計勉強会 JuliaのStatistics読解 第9回」
  • 今回: signalcorr.jl全体終了
  • 次回: partialcor.jlから
  • メモ
    • 勉強会で見つけた問題を直してもらえた模様: issue

2022-06-22

  • YouTube動画のタイトル(予定)「2022-06-22 ベイズ統計勉強会 JuliaのStatistics読解 第10回」
  • 今回: partialcor.jlから, hist.jlのL115, abstract type AbstractHistgramまで
  • 次回: hist.jlのL.118, Histgram <: AbstractHistgramの型のコメントから

2022-06-29

  • YouTube動画のタイトル(予定)「2022-06-29 ベイズ統計勉強会 JuliaのStatistics読解 第11回」
  • 今回: hist.jl, Histgram <: AbstractHistgramの型のコメントからL427 float関数まで
  • 次回: hist.jl, L430 normalize!関数から

2022-07-06

  • YouTube動画のタイトル(予定)「2022-07-06 ベイズ統計勉強会 JuliaのStatistics読解 第12回」
    • 録画忘れたので動画なし
  • 今回: hist.jl, L430 normalize!関数から
  • 次回: hist.jl終了, pairwise.jl L.153の_pairwise関数まで

2022-07-13

  • YouTube動画のタイトル(予定)「2022-07-13 ベイズ統計勉強会 JuliaのStatistics読解 第13回」
  • 今回: pairwise.jl, L.189のpairwise!関数からreliability.jl, misc.jl, sampling.jlのL.117、samplepair関数まで
  • 次回: L.122のknuths_sample!から

2022-07-20

  • YouTube動画のタイトル(予定)「2022-07-20 ベイズ統計勉強会 JuliaのStatistics読解 第14回」
  • 今回: sampling.jl, L.122のknuths_sample!からsampling.jl, L716のnaive_wsample_norep!まで
  • 次回: sampling.jl, L.721のefraimidis_a_wsample_norep!から

2022-07-27

  • YouTube動画のタイトル(予定)「2022-07-27 ベイズ統計勉強会 JuliaのStatistics読解 第15回」
  • 今回: sampling.jl, L.721のefraimidis_a_wsample_norep!からsampling.jl終了, statmodels.jlのL.148 showまで
  • 次回: statmodels.jlのL.150 showからか, SymPy

2022-08-03

  • YouTube動画のタイトル(予定)「2022-08-03 ベイズ統計勉強会 JuliaのStatistics読解 第16回」
  • 今回: statmodels.jlのL.150 showから StatsBase.jl終了
  • 次回: 永井佑紀, 『1週間で学べる!Julia数値計算プログラミング』5日目 具体例2:統計力学――乱数を使いこなす
    • 6日目 具体例3:固体物理学――自己無撞着計算と固有値問題もやる予定

2022-08-10

  • YouTube動画のタイトル(予定)「2022-08-10 ベイズ統計勉強会 JuliaのStatistics読解 第17回」
    • 録画忘れで動画なし
  • 今回: StatsModels.jl, traits.jl, contrasts.jlのL.600, HypothesisCoding()まで
    • 準備の時間取れず, 次回以降: 永井佑紀, 『1週間で学べる!Julia数値計算プログラミング』5日目 具体例2:統計力学――乱数を使いこなす
  • 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続きから

2022-08-17

  • (録画はじめた?)
  • YouTube動画のタイトル(予定)「2022-08-17 ベイズ統計勉強会 JuliaのStatistics読解 第18回」
  • 今回: StatsModels.jl, contrasts.jlのL.594から終了まで, terms.jlのL.382まで
  • 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続き(terms.jlのL.383)から

2022-08-24

  • YouTube動画のタイトル(予定)「2022-08-24 ベイズ統計勉強会 JuliaのStatistics読解 第19回」
  • 今回: StatsModels.jlの続き(terms.jlのL.383)からschema.jlのL.129まで
  • 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続き(schema.jlのL.131)から

2022-08-31

  • YouTube動画のタイトル(予定)(録画を忘れた)
  • 今回: StatsModels.jlの続き(schema.jlのL.131)からtemporal_terms.jlまで
  • 次回: 準備が終われば永井本, そうでなければformula.jlから

2022-09-07

  • YouTube動画のタイトル(予定)「2022-09-07 ベイズ統計勉強会 JuliaのStatistics読解 第20回」
  • 今回: 準備が終われば永井本, 終わらなければStatsModels.jlの続き(formula.jl)からmodelframe.jlのL.70まで
  • 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から

2022-09-14

  • YouTube動画のタイトル(予定)「2022-09-14 ベイズ統計勉強会 JuliaのStatistics読解 第20回」
    • 録画忘れ
  • 今回: 準備が終われば永井本, 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から
    • 5.1の理論的背景, 5.2のイジングの計算本体の理論の話, 特に5.2.2まで
  • 次回: 永井本5.1のプログラムとお絵描き, 5.2.2の理論の続き

2022-09-21

  • YouTube動画のタイトル(予定)「2022-09-21 ベイズ統計勉強会 JuliaのStatistics読解 第21回」
  • 今回: 準備が終われば永井本5.1のプログラムとお絵描き, 5.2.2の理論の続き
    • GitHub
    • 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から
    • 写経した5.1の結果を眺めつつコード確認, 5.2の物理の解説追加, P.168のcalc_Si関数あたりまでをフォロー
  • 次回: 永井本の残り, 次回は

2022-09-28

  • YouTube動画のタイトル(予定)「2022-09-28 ベイズ統計勉強会 JuliaのStatistics読解 第22回」
  • 今回: 永井本, calc_ΔEからと、MCMC解説・復習
    • GitHub
    • 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から
    • モンテカルロの理論から一通りの計算プログラムの解説まで
  • 次回: 永井本の残り, 高速化の解説から, 終わったらJuliaの統計に戻る
    • SymPyをちょっとやってみたい

2022-10-05

  • (録画はじめた?)
  • YouTube動画のタイトル(予定)「2022-10-05 ベイズ統計勉強会 JuliaのStatistics読解, sympy 第23回」
  • 今回: 永井本, 残り, 高速化の解説から, 永井本の残り, sympy
    • GitHub
    • sympy/abc.pyのあと, algebras/quartenion.pyをfrom_axis_angleまで
  • 次回: sympy, from_rotation_matrixから

2022-10-12

  • YouTube動画のタイトル(予定)「2022-10-12 ベイズ統計勉強会 sympy 第2回」
  • 今回: sympy, quarternion.pyのfrom_rotation_matrixから
  • 次回: sympy, quarternion.pyのarc_coplanarまで

2022-10-19

  • (録画はじめた?)
  • YouTube動画のタイトル(予定)「2022-10-19 ベイズ統計勉強会 sympy 第3回」
  • 今回: sympy, quarternion.pyvector_coplanarからcore/add.pyflatten()まで
  • 次回: sympy, core/add.pyclass_key()から

2022-10-26

  • 都合によりお休み

2022-11-02

  • 録画忘れ
  • 今回: sympy, core/add.pyclass_key()から_eval_is_meromorphic()まで
  • 次回: sympy, core/add.py_eval_is_algebraic_expr()から

2022-11-09

  • 録画忘れ
  • 今回: sympy, core/add.py_eval_is_algebraic_expr()から
  • 次回: sympy, core/add.pyas_real_imag()まで

2022-11-16

  • 都合により休み

2022-11-23

  • 祝日でお休み

2022-11-30

  • YouTube動画のタイトル(予定)「2022-11-30 ベイズ統計勉強会 sympy 第6回」
  • 今回: sympy, core/add.py_eval_as_leading_termからcore/add.py最後まで
  • 次回: F#/C#の何か, 探索中

2022-12-07

  • 都合によりお休み

2022-12-14

  • YouTube動画のタイトル(予定)「2022-12-14 ベイズ統計勉強会」
  • 今回: DiffSharp, Utils.fsflatArrayAndShape6Dまで
  • 次回: DiffSharp, Utils.fsflatArrayAndShape6Dから

2022-12-21

  • 都合により休み

2022-12-28

  • (録画はじめた?)
  • YouTube動画のタイトル(予定)「2022-12-28 ベイズ統計勉強会 DiffSharp 第2回」
  • 今回: DiffSharp, Utils.fsflatArrayAndShape6DからUtils.fsのL.457, indentNewLinesまで
  • 次回: DiffSharp, Utils.fsのL.458, stringPadから

2023-01-04

  • 年始でお休み

2023-01-11

  • 今回: DiffSharp, Utils.fsのL.458, stringPadから最後, Extension.fsのL.159, Array6Dまで
  • 次回: DiffSharp.Core, Extension.fsのL.162のスライシングに関するコメントから

2023-01-18

  • 今回: DiffSharp.Core, Extension.fsのL.162のスライシングに関するコメントからBackend.fsまで
  • 次回: Device.fsから

2023-01-25

  • 今回: DiffSharp.Core, Device.fsからShape.fsのL.438まで
  • 次回: Shape.fsのL.439以降, canExpandから

2023-02-01

  • お休み

2023-02-08

  • 今回: DiffSharp.Core, Shape.fsのL.439以降, canExpandからRawTensor.fsのL.536, SolveTTまで
  • 次回: DiffSharp.Core, RawTensor.fsのL.539, SqueezeTまで

2023-02-08

2023-02-15

  • 今回: DiffSharp.Core, Diffsharp.fsのメインの部分
  • 次回: SymPy

2023-02-22

  • SymPy documetation
  • 今回: SymPy, matrices/common.pyのはじめから, L.817, _eval_jordan_blockまで.
  • 次回: SymPy, matrices/common.pyのL.818, _eval_ones()から

2023-03-01

  • SymPy documetation
  • 今回: SymPy, matrices/common.pyのL.818, _eval_ones()からL.1920のvalues()まで
  • 次回: SymPy, matrices/common.pyのL.1925, class MatrixOperations(MatrixRequired)から

2023-03-08

  • SymPy documetation
  • 今回: SymPy, matrices/common.pyのL.1925, class MatrixOperations(MatrixRequired)からL.2945, class MatriCommonまで
  • 次回: SymPy, matrices/common.pyのL.2948, class _MinimalMatrixから

2023-03-15

  • お休み

2023-03-22

  • SymPy documetation
  • 今回: SymPy, matrices/common.pyのL.2948, class _MinimalMatrixからmatrices/decomposition.pyのL.400, _cholesky_sparse()まで
  • 次回: matrices/decomposition.pyのL.403, _LDLdecomposition()から

2023-03-29

  • SymPy documetation
  • 今回: matrices/decomposition.pyのL.403, _LDLdecomposition()からmatrices/decomposition.pyのL.1127, _singular_value_decomposition()まで
  • 次回: matrices/decomposition.pyのL.1127, _singular_value_decomposition()から

2023-04-05

  • 今回: matrices/decomposition.pyのL.1127, _singular_value_decomposition()からmatrices/decomposition.pyは終了, dense.pyL.698まで.
  • 次回: matrices/dense.pyL.699, casoratian()から

2023-04-12

  • SymPy documetation
  • Online LaTeX editor
  • 今回: matrices/dense.pyL.699, casoratian()からmatrices/determinant.pyL.118, _find_reasonable_pivot()まで
  • 次回: matrices/determinant.pyL.121, _find_reasonable_pivot_naive()から

2023-04-19

  • SymPy documetation
  • Online LaTeX editor
  • 今回: matrices/determinant.pyL.121, _find_reasonable_pivot_naive()から_detまで
  • 次回: matrices/determinant.pyL.676, _det_bareissから

2023-04-26

  • お休み

2023-05-03

  • お休み

2023-05-10

  • SymPy documetation
  • Online LaTeX editor
  • 今回: matrices/determinant.pyL.676, _det_bareissからmatrices/eigen.pyL.437, _eigenvectsまで
  • 次回: matrices/eigen.pyL.439, _is_diagonalizable_with_eigenから

2023-05-17

  • SymPy documetation
  • Online LaTeX editor
  • 今回: matrices/eigen.pyL.439, _is_diagonalizable_with_eigenからmatrices/eigen.pyL.1025, ドキュメント文字列設定まで
  • 次回: matrices/eigen.pyL.1027, _jordan_form()から

2023-05-17

  • SymPy documetation
  • Online LaTeX editor
  • 今回: matrices/eigen.pyL.439, _is_diagonalizable_with_eigenからmatrices/eigen.pyL.1025, ドキュメント文字列設定まで
  • 次回: matrices/eigen.pyL.1027, _jordan_form()から

2023-05-24

2023-05-31

  • 今回: optuna
  • 次回: sympy, matrices/graph.pyの先頭から

2023-06-07

  • 今回: sympymatrices/graph.pyの先頭から
    • matrices/inverse.py_pinvまで
  • 次回: optuna, Samplerのコード周り
    • 次々回: 量子情報科学入門を読む

2023-06-14

  • 今回: optuna, Samplerのコード周り
  • 次回: 量子情報科学入門を読む

2023-06-21

  • お休み

2023-06-28

  • 今回: 量子情報科学
    • PDF 2.3.6, さらに本のP.3(PDFの6.6.1.2)まで
  • 次回: optuna
    • 次々回: 量子情報科学, P.3周辺, PDF 6.6.1.3から

2023-07-05

  • 今回: 量子情報科学, P.3周辺, PDF1.15.3.4から, 第四章, P.87, PDF1.15.6.12の注意まで.
  • 次回: optuna

2023-07-12

  • お休み

2023-07-19

  • 今回: optuna
  • 次回: 量子情報科学, 第四章, P.87, PDF1.15.6.13から.

2023-07-26

  • 今回: 量子情報科学, 第四章, P.87, PDF1.15.6.13から, PDF1.15.6.28, 量子ビットの例まで
  • 次回: optuna
  • 次々回: PDF1.15.6.29, 三準位量子系

2023-08-02

  • お休み

2023-08-09

  • 今回: PDF1.15.6.29, 三準位量子系から1.15.6.43「補題:可換なエルミート作用素の表示」まで.
  • 次回: optuna
  • 次々回: 量子情報

2023-08-16

  • 今回: 量子情報, 1.15.6.47 命題: 可換な物理量は同時測定可能から1.15.6.60の定義: エンタングル量子状態とその例まで.
  • 次回: optuna
  • 次々回: 量子情報

2023-08-23

  • お休み

2023-08-30

  • 今回: 量子情報, 「1.15.6.62 補題: 積空間での個別の物理量の同時測定」から「1.15.6.81 補題: 純粋状態に対応する密度作用素は射影」まで
  • 次回: optuna
  • 次々回: 量子情報

2023-09-06

  • 今回: optuna
  • 次回: 量子情報

2023-09-13

  • 今回: 量子情報, 「1.15.6.84, 定義: 混合状態も含めたボルンの確率規則」から「1.15.6.99 命題: 純粋状態の特徴づけ」とその証明まで
    • 次: 「1.15.6.101 定義: 非自明な確率混合」から
  • 次回: optuna

2023-09-20

  • 今回: optuna
  • 次回: 量子情報, 「1.15.6.101 定義: 非自明な確率混合」から

2023-09-27

  • お休み

2023-10-04

  • 今回: 量子情報, 「1.15.6.101 定義: 非自明な確率混合」から, 「1.15.6.122 命題: 部分トレースの性質」の言明の紹介まで
  • 次回: optuna

2023-10-11

  • 今回optuna
  • 次回: 量子情報「1.15.6.122 命題: 部分トレースの性質」の言明の紹介から

2023-10-18

  • お休み

2023-10-25

  • お休み

2023-11-01 wed

  • 今回: 量子情報「1.15.6.122 命題: 部分トレースの性質」の言明の紹介から
    • 量子情報「1.15.6.140 定義: 密度作用素の時間発展」まで
    • 次回: 「1.15.6.141 補題: 密度作用素の時間発展の実現可能性」から
  • 次回: optuna
    • 以後は勉強会を隔週に変更, 次回は11/15

2023-11-15 wed

  • お休み

2023-11-29 wed

  • 今回: optuna

2023-12-13 wed

  • 今回: 「1.15.6.141 補題: 密度作用素の時間発展の実現可能性」から
    • 「1.15.6.158 補題: PVM の基本的な性質」まで
    • 次回: 「1.15.6.158 補題: PVM の基本的な性質」から

2023-12-27 wed

  • optuna

2024-01-10 wed

  • 今回: 「1.15.6.158 補題: PVM の基本的な性質」から「1.15.6.168次の定理に向けて」まで
  • 量子情報の次回: 「1.15.6.169定理: POVM測定は間接測定実現可能」

2024-01-24 wed

  • お休み

2024-02-21 wed

  • 今回: 「1.15.6.169定理: POVM測定は間接測定実現可能」から「1.15.6.179 (定理: 物理量の可換性と同時測定可能性の)証明」まで
  • 量子情報の次回: 「1.15.6.180 補題: 正値作用素の積のトレースが消える条件」から

2024-03-05 wed

  • 今回: 「1.15.6.180 補題: 正値作用素の積のトレースが消える条件」から「1.15.6.187 命題: 時間発展写像の線型拡張はトレース保存正 写像」の証明まで
  • 量子情報の次回: 「1.15.6.190 定義: 正写像・完全正写像・トレース保存完全正写 像と量子通信路」から

2024-03-20 wed

  • お休み

2024-04-17 wed

  • 今回: 「1.15.6.190 定義: 正写像・完全正写像・トレース保存完全正写 像と量子通信路」から
  • 量子情報の次回: 1.15.6.197「命題: トレース保存完全正写像の例」から.

2024-05-29 wed

  • 今回: 1.15.6.197「命題: トレース保存完全正写像の例」から「1.15.6.208 選択測定・非選択測定の注意」まで
  • 量子情報の次回: 1.15.6.209「定義: 継続測定」から.

今後の予定: Juliaを勉強する

SPINS CRE@TION勉強会

TODO

  • オブジェクト指向UI
  • https://ui-pocket.com/apps/

2024-05-28 tue

2024-05-21 tue

  • お休み

2024-05-14 tue

  • 生成AI

2024-05-07 tue

  • お休み

2024-04-30 tue

  • 情報I: 資料のページ
    • 今回: P.19「(3)情報の可視化と新たな情報の創出」からP.39まで
    • 次回: P.40, 学習4, 情報社会におけるコミュニケーションのメリット・デメリットから

2024-04-23 tue

  • お休み

2024-04-16 tue

  • 生成AI

2024-04-09 tue

2024-04-02 tue

  • 生成AI

2024-03-05 tue

  • 生成AI

2024-02-27 tue

  • お休み

2024-02-20 tue

  • お休み

2024-02-13 tue

  • web, ノンデザイナーズデザインブック
    • 今回: P.120からP.130まで
    • 次回: P.131から

2024-02-06 tue

  • AI

2024-01-09 tue

  • web, ノンデザイナーズデザインブック
    • P.109からP.119まで
    • 次回: P.120から

2023-12-26 tue

  • AI画像生成系

2023-12-05 tue

  • web, ノンデザイナーズデザインブック
    • P.102からP.108
    • 次回: P.109から

2023-11-28 tue

  • お休み

2023-11-21 tue

  • AI画像生成系

2023-11-14 tue

  • お休み

2023-11-07 tue

  • お休み

2023-10-31 tue

  • web, ノンデザイナーズデザインブック
    • P.93-P.100
    • 次回: P.102から

2023-10-24 tue

  • お休み

2023-10-17 tue

  • お休み

2023-10-10 tue

  • web
    • P.81, Part3からP.92まで
    • 次回: P.93から

2023-10-03 tue

  • AI画像生成系
  • 次回: web

2023-09-26 tue

  • お休み

2023-09-19 tue

  • お休み

2023-09-12 tue

  • お休み

2023-09-05 tue

  • ノンデザイナーズ・デザインブック
    • P.65からP.80まで
    • 次: P.81, Part3から
    • オブジェクト指向UI
  • 次回: AI画像生成系

2023-08-29 tue

2023-08-22 tue

  • ノンデザイナーズ・デザインブック
    • Part2からP.64まで
    • 次回P.65から

2023-08-15 tue

  • お休み

2023-08-08 tue

  • AI画像生成系の話

2023-07-18 tue

  • ノンデザイナーズ・デザインブックの25周年記念のPDFを読もう
    • P.44まで
    • 次はPart2から

2023-06-13 tue

Web・アプリ

  • ノンデザイナーズ・デザインブックの25周年記念のPDFを読もう
    • P.32まで
    • 次回は復習をかねてP.32から

2023-06-06 tue

  • 都合によりお休み

2023-05-30 tue

AI系

  • 実際に何かで遊んでみよう

Web・アプリ

2023-05-23 tue

AI系

  • 実際に何かで遊んでみよう
  • 仕事絡みの毎日の検索は基本的にChatGPT, phind.comになった
    • https://www.perplexity.ai/ も使ってみる予定
    • 間違っていることはあれど, 本当にピンポイントで答えが返ってくる
  • GitHub Copilotも便利

Web・アプリ

  • ノンデザイナーズ・デザインブックの25周年記念のPDFを読もう
    • P.20まで
    • 次回はP.21から

2023-05-09 tue

AI系

Web・アプリ

2023-04-11 tue

AI系

トーク

ChatGPT関係: 自然言語プログラミングそのままできる(ことがある). セルフコーチング応用もある. 問を一覧で作って, それを引用して順に聞くとか. シミュレーションゲームっぽくヒアリングするとか, 書いてみるとか. 実際にコードに落としてアプリにするとか, ChatGPT自体にいろいろやってもらうとか. マインドマップで形式を指定できる. PlantUML形式でいい感じにマインドマップを作ってくれる. プラグインもいろいろある.

動画の切り抜きだとか. 映像方面での応用を模索したい. AEだけでブライダルの写真を読み込んで選択的に動画を作る. AE内のJSでやっていた: ChatGPTにやらせてみてどうなるだろう? Premiere ProでもJSが使えるが情報があまり公開されていない. AEはエクスプレッション関係で情報が多い. 作業ベースの仕事は削ってまさしくクリエイティブな取り組みに集中したい. AEのテンプレート, 便利プラグインあたりはいろいろやれそう.

画像生成もプロンプトエンジニアリング.

LP制作の面倒な作業や, フローで決まりきった作業は自動化したい. そこにうまくはまらないか? マーケティングは機械的にできる部分は多かろう. 精度をどこまであげるか? LPの文章を作ってもらうのはもうあるにはあるが, いまの時点でターゲットに刺さるものができるか? 実務ではまだもう一歩人力が必要ではないか. LPを作る前のマインドマップを作るときにChatGPTといろいろやっている人はいる.

コンテンツを生成してもらう発想はわかるが, なかなか狙い通りにならない. 絵でまさにそう. 指示が難しい. アニメの背景で実験している会社もあるが, 視線誘導など絵・季節感・雲の状態がおかしい. それっぽいが, 専門家からすると「それはない」というのばかり. マーケッターでTwitter botを作ってもらった人がいた. 作業ベースか選択肢をいろいろ提示してもらうくらいか.

自然言語でプログラミング. そもそもプログラミングで何ができるかわかっていないと, 自然言語でプログラミングしようにも, プログラミング自体がうまくいかない. 小さなところから作っていくとか, 設計の手順とか.

2023-03-28 tue

  • お休み

2023-03-14 tue

AI系

  • 実際に何かで遊んでみよう
    • 引き続きアラビア語の勉強に使っている
  • Twitter
    • 研究内容を短めの文章にまとめて, 質問を挙げさせる.
    • これ、学会発表練習時に想定質問として使うとめちゃくちゃ便利だな。学生の発表の想定質問を考えるの結構大変なので。
  • プログラミング応用
    • ちょっとした作業・スクリプトなら割とさっと正確にやってくれる模様.
      • ボットを作ったり.
      • 「疲れ果てているときに代わりにちょっと試してみる」事例があった.
    • 作業用スクリプトの二つの側面
      • 息抜きにちょっとした気分転換も兼ねて
      • 本当に仕事用
    • 前者の「プログラミング」はまさに「趣味としてのお絵描きか仕事としてのお絵描きか」と同じっぽい
    • これにしても自分よりよいプログラムをコメントつきで書いてくれたり, 知らなかったライブラリを教えてくれることもある模様
    • さらなる検索・調査のためにとりあえず書かせてみるのもよさそう
  • Regular Expression Puzzles and AI Coding Assistants
    • プチ読書会もしよう
    • いま読んでいる
    • 正規表現自体が本当にめんどい
    • 書くのはよくても読めない
    • 正規表現を書かせるだけではなく読ませる方のChatGPT利用もありうる
    • 正規表現も言語の一種: 形式言語理論で正規言語を表すための手段
    • 言語の解読の視点をもっと広げるといろいろ応用が効くのではないか
  • 言語の解読
    • 最初の「学会用発表内容からの質問生成」: 文章を解読させた結果, 解読できない・よくわからない点を質問として練り上げてもらう
    • ChatGPTに文章を読ませて何かしてもらう視点を持つとよいのでは?
    • プログラムの生成ばかりではなく, プログラムを読んで解説してもらう方向性ももっと何かある?
    • いま本を読んでいたら「テストケースを作ってもらう」のにも使える?
    • 何にせよ「対話」を通じて話を膨らませる相手になってもらう発想は決定的に重要っぽい.
  • Bing: すでにいろいろ制限がかかっていて残念らしい
  • ChatGPT: APIが公開.

Web・アプリ

2023-02-28 tue

Web制作

  • 昨日の話がちょっと気になったので
  • サービス内容に対する議論を追いかけ切れていないためピント外れの可能性あり
    • クリエイションの各人のマインドセットというか目指す方向もあまりよくわかっていない
    • サービスはスタートアップ向けなのか? などもあまりよくわかっていない.
  • 各種見積もりの難しさが問題になっていたように思う
  • 見積もりが問題なら, 見積もりが楽な定型作業と, 事前見積りが難しい非定型作業のような分け方も考えるとよいのでは? 多分他にもいろいろな観点がある.
  • 映像はよくわからないためWeb制作に関して考える
  • いったん成果物・必要な作業・サービス提供対象の枠で考える
    • 内容と工数の観点
    • 見積もりのしやすさ・しにくさ
    • 作業の難しさ・簡単さ
    • 作業量の多さ・少なさ
  • 大枠の想定
    • 成果物: Webサイト・LP
    • 必要な作業: ヒアリング・設計・デザイン(スタイリング)・実装
      • 設計: Webサイト全体の構造, 導線
    • サービス提供対象: 企業・経験を積んだ個人・スタートアップの個人
  • 前提
    • Webサイト: 直接的な収益は生まない
    • LP: 商品販売用ページとして直接利益を生む
    • (スタートアップの個人はこの辺の区別もついていないのでは?)
  • 成果物
    • Webサイト
      • スタートアップ
        • 完全にパッケージでよいのでは?
        • もちろんヘッダー画像や全体の配色設定など多少のカスタマイズは許可
        • むしろ「収益を生むLPに時間と金を使おう」と提案する
        • 見積もりしやすい
        • パッケージ対応という意味で駆け出しでも対応可能
      • 企業・経験を積んだ個人
        • 個別対応前提
        • むしろはじめからドカっとお金と時間をもらって長期的に付き合う対象ではないか
        • 見積もりというより継続的なサービス(または別パッケージ)対応案件ではないか
    • LP
      • 基本的にお金を生む
      • ハードな作り込み前提
      • 一点物としてサイト全体の構造を考えたりする必要はない
      • ABテスト的な意味で育てる要素はあるが, サイトを育てる観点とは違う
      • たぶん見積もりしやすい
        • 特に賞味期限があるタイプの商品だとスピードが必要
        • スタートアップだと早く売上を作る意味でもスピードが必要
        • 期間の意味で作業量は見積もりやすいのではないか
  • 必要な作業
    • ヒアリング
      • まず内容が重い
        • ヒアリングシートを育てれば多少は軽くなる
      • 見積もりしにくい: むしろ明確にフェーズを切ったり「いまはこれでいこう」という決断が必要な作業
      • 特にWebサイトでは経験者が対応しなければならない
    • 設計
      • 設計が必要な時点でだいたい何もかも重い
    • デザイン(スタイリング)
      • 見積もりしにくい
      • 設計・作業量・差し戻し・調整が重い・多い
      • WebサイトとLPで重さ・多さは(たぶん)質的に違う
    • 実装
      • 設計ができれば見積もりはしやすい
  • サービス提供対象
    • 企業・経験を積んだ個人
      • ふつう要件はきっちりしている
      • ヒアリングはしやすい
      • (経験者なら)見積もりもしやすい
      • 作業量は重い
    • スタートアップの個人
      • たぶんヒアリングは大変
      • 「WebサイトよりLP作れ」といったタイプの「コンサル」が必要なのではないか
      • この「コンサル」込みのパッケージ(Webサイトは軽くする, その代わりLPは手厚く)で割り切ってサービス提供するのも考えられる

AI系

Web・アプリ

2023-02-14 tue

AI系

Web・アプリ

2023-01-17 tue

.NETエコシステム

  • 今年はこれの修行をしてみる予定: WASMも書ける
    • WASM: 「ワズム」
    • F#が好きでこれでいろいろやりたいのだが, 情報が少なすぎるため現在C#での.NET学習中
    • バックエンドがメインだが, 最近はWASM(Blazor)のおかげで一応フロントも書ける
    • C#でのWASMがどこまで流行るかは微妙
      • むしろあまり流行らないのではないかとさえ思う
      • そもそもC#もそこまで好きではない
    • そんなわけでお勧めはしないが自分の整理も兼ねて.NETの話を少しする
    • そこまで一般的に広く使われているとも思わないが, 確固たるファン層はいるイメージ
    • 少なくとも英語なら関連書籍もかなり積極的に出版されていて勉強しやすい
    • 処理系の進化も速い
  • 昔はWindowsオンリーだったがいまはMacとLinuxでも動く
    • もともとWindowsオンリー: 2002年登場
    • Mac/Linuxでも動くMonoという処理系が登場
    • XamarinやUnityがmonoの上で動いていてクロスプラットフォーム
    • Xamarin買収でmonoもWindows管轄下に入った
    • クロスプラットフォームを含めてmonoと.NET本家の統合
    • .NET Standard2.0: これは単に仕様, APIセットの定義
      • .NET Framework 4.7: Windowsオンリー
    • .NET Core 3.0
      • 2014/11誕生
      • .NET Coreの4はなし: .NET Framework 4との混同を避けるため
    • .NET CoreのCoreは.NET5から消えた
    • いまは.NET7
    • .NET5 以降: 奇数版が試験的, サポート期間短い, サポート1年間
    • 偶数版はLTS: 3年間, .NET6 LTS
  • Microsoft(技術の)トップが代わってから大分変わってかなり邪悪さは減った模様
  • 何がどこまでうまくいくかはともかく, .NETエコシステムの上でいろいろやれる
    • 一般的なプログラミング言語: C#, F#, Visual Basic
    • スマホアプリ開発: 昔はXamarin, 今は.NET MAUI
      • スマホアプリはKotlin, Swiftの他, Flutter(Dart言語)がマルチプラットフォームで有名で次にReact Nativeという印象
    • デスクトップアプリ: .NET MAUI (少なくともWindowsのデスクトップは作れる)
    • Unity: ゲーム
    • Blazor: WASMによるフロントエンド開発
      • WASMはともかくBlazorは微妙な気がする
    • PowerShell: 実は.NETエコシステムでMac, Linuxでも使える(使ったことなし)
  • WASM: C/C++, Rust, Golang, C# (.NET)
    • WASM
      • 仮想命令セットアーキテクチャまたはプログラミング言語
      • 直接書くよりは他の言語で書いてコンパイルする
    • 基本的なパフォーマンスを求めるところで使う.
    • はじめからJavaScriptの置き換えは意図していない.
    • 基本的には他の言語で書いてWASMにコンパイルする
      • まだまだ容量が大きく, ネットワーク負荷の点でJavaScriptに劣る
      • 容量問題(ネットワーク速度問題)が解決できる状況なら使える
    • 例: Figma: デスクトップでじっくり考えるような状況でしか使わない
      • Figmaは製品もさることながら技術的にもかなりエッジの尖った企業らしい
    • 技術に広く浅く触れてみる〜WASM編〜
      • C/C++で記述されたアプリケーションをWeb上に移植する
      • ロジック的な部分はWASMで全て実装し,UIといった部分はJavaScriptで実装する
    • https://ja.wikipedia.org/wiki/WebAssembly
      • 内部的には、wasmコンパイラシステムは中間コードを扱うためにS式を使用している。
      • 統合開発環境WebAssembly Studio - WebベースのWebAssembly向け開発環境。
      • C言語及びRustに対応している。

AI系

  • 和ゴスロリ https://twitter.com/tkaz2009/status/1601355025254866944
    • AIに「和ゴスロリ」の衣装設定を考えさせてみた結果が、予想の斜め上を行く凄さで驚愕。
    • 細部までの描き込みが凄い上に、可愛い。
    • バリエーション大量に出させて、服装決めるにはAIってとてつもなく便利そう。
  • https://twitter.com/Yamkaz/status/1601327530757136386
    • すごいのきた
    • DeepMindから演劇や映画の脚本を言語モデルで共同執筆できる作家さん用の新ツール「Dramatron」が公開! https://deepmind.github.io/dramatron/index.html
    • 題名、キャラ、場所の説明、セリフを含む新しい脚本をインタラクティブに共同作成することができる
  • ChatGPT
    • 「対話」に使うと面白い?
    • 人間がしない発想で回答してくる
    • ブレインストーミングとしてのAI対話みたいなのもあり?

セキュリティ

Androidセキュリティ

Androidテスト

Web・アプリ

2022-12までのメモ

Webデザイン

WebDev

2022-12-06 tue

2022-11-22 tue

  • 近況: 12月からAndroidアプリを書く仕事が入ったため猛勉強中
    • 次回からはAndroidまたはKotlinの公式ドキュメントを読む会になるかもしれない
    • Androidのセキュリティも気になる
      • https://www.jssec.org/dl/android_securecoding_20220829/index.html
      • 2021年8月以降に Google Play ストアから配信する新規リリースのアプリケーションは targetSdkVersion の API Level を30(Android 11)以上にしなければならない
      • 2021年11月以降に既存アプリをバージョンアップする場合も targetSdkVersion を30以上にしなければならない
  • Writing NES Emulator in Rustをやった
  • 【deno】deno1.28「npm完全に理解した」
    • いろいろなモジュールの読み込み:
      • 順番が大事
      • 人力では不可能
      • 「コンパイラ」にやってもらおう
        • トランスパイラ
      • バンドラーの登場
        • Gulp
        • バンドラーもよりよいツールが必要
        • 複雑になってくると時間もかかるので高速化
        • webpack: Node.jsのライブラリ
      • トランスパイラ
        • ブラウザごとの互換性
        • ES5, ES6, ES2018, ES2020, ES2021
        • JavaScriptのバージョンが上がる
        • babel: Node.jsのライブラリ
      • Node.js自体が時代を切り開いてきた側面がある
      • 古くてよくないものも一杯残っている.
      • いまとなっては明らかによくない
      • Node.jsの努力のおかげで「こうするといい」とわかったのがいっぱい. それによる標準化もある
      • Node.jsは全部取り込めているわけではない
      • 昔の資産もあって, これとの整合性をどう保つか.
      • webpack・babelはJavaScript製: 遅い
      • 歴史的な事情, 技術的な負債もたくさんある.
      • あと知恵: 設計もよくない
    • Deno: Node.jsの開発者がリード
      • Rust製: 高速化をきちんと意識
      • webpackなどは設定が面倒
        • Node.jsはバンドルやトランスパイラの面倒をみない
        • いまとなっては処理系で対応した方がいい
        • Denoはこれらを同梱, パフォーマンスも処理系で確保
      • リンター(linter)
        • C言語: 行儀が悪いコード, バグを生みやすいコードを検出して書き換えろというワーニングを出してくれるツール
        • JavaScriptもよくない部分がいっぱいあって, それを使わないようにしよう
        • 実際にチェッカーを作ろう -> jslint
        • もっと使いやすいツールがほしい: 実際いろいろある
        • eslint: golang製, node.jsのデファクトスタンダード
        • eslintも楽になったとはいえ, いろいろ設定が必要でめんどい
          • いろいろな人の趣味がある
          • 紛糾する: 「宗教戦争」
        • これを処理系で面倒をみよう
        • denoでは同梱: 処理系で決め打ちで諦めろ
        • golang: gofmt(フォーマッター)
          • インデントは4スペースか2スペース, スペースかタブか
          • 何でもいいが, 何か決めないとコードがグチャグチャで読みにくい
          • 誰がどう決めるか?
          • これを言語処理系が決めてしまおう, 無用な紛争をなくそう
          • Denoはこれを決める方向に持っていった
      • Denoはフォーマッターもある
        • 文字列をシングルクォートにするか, ダブルクオートにするか
        • こういうのもどちらでもいいが, どちらかにしないと気持ち悪い
        • node.js, prettier
          • prettierも多少設定が必要
  • 静的Webサイトでも設置できるフォームをノーコードで作成、管理できるOSS・「formify」
    • 結局別途稼働している別サービスにいろいろな処理を委任している
  • CSSで簡単に実装できるクールなアニメーションドロワーメニュー10選【上下左右・階層・スライドメニュー・ハンバーガーメニュー】
  • おまけ
    • スマホアプリ開発の言語: AndroidはKotlin, iOSはSwift
    • Android/iOS両方同時に開発できる言語・フレームワークもある
      • Flutter: Dart言語による, 同時にWeb開発もできる
      • React Native: JavaScript/TypeScriptで開発できる
      • .NET MAUI: Xamarinの新バージョン, C#
    • Flutterなどは9割程度はコードを共通化できるらしいが, OSネイティブの低いレイヤー部分はOSごとに書かないといけない部分がある模様
    • はじめからどちらかのスマホ対応しか考えない, または相当深いレベルの実装が必要なことがわかっている場合は, それぞれKotlin/Swiftで別に実装することもよくあるらしい

2022-11-08 tue

  • NovelAIのプロンプトを管理・調整するChrome拡張を作りました
  • リンク先忘れ: pixivあたりでAI絵販売
    • 例えばこれ: エロ同人CG販売サイトでAIアートが販売 10/12追記
    • 呪文学習でやはり一手間いるから, その労力・時間をお金で解決する.
    • 凝ったモノならどうしても手書きだがお手軽に・大量に, となると一定のアドバンテージがある.
    • いわゆる先行者利益の部分もある模様.
    • 数ヶ月さえ持たないかもしれないが, それでも瞬間最大風速としてはビジネスになった.
  • Stable Diffusionを使って「いらすとや風画像生成モデル」を作った話
    • 「ところで、いらすとやさんのようなイラストレーターがこういった機械学習技術を活用して作画を効率化することはもはや可能な域に達してしまったかもしれませんね。」
    • この間のspins cre@ationでのやりとり
      • https://spinscreation.slack.com/archives/CTC7PD3PH/p1666089251488249
      • 僕だったらイラレでこういうパーツ組み合わせて作ります^^
      • このパーツを自分で生成する, もしくは依頼主が生成してきたパーツをうまく組み合わせるとか?
    • 多少絵を描けて修正できる人の片手間仕事になるか?
  • Vercel、Webpack後継を目指す、Rustベースの「Turbopack」をリリース
    • 高速化はどこでも大事
    • マーケティングでもスピーディかつ大量の試行錯誤が大事と良く言われる
    • 学校の勉強でもそう
      • Twitterで塾講師の人が言っていた
      • 計算が速いとたくさん問題が解けてたくさん試行錯誤できる
      • 計算ミスにしてもどんな問題でどういうミスをしたか考える時間の余裕が生まれる
      • 計算も正確になり, それに合わせて速くもなっていく
    • 数値計算: スパコンで何日もかかるような計算での10倍高速化のインパクトは凄まじい
  • CSRF対策

2022-10-25 tue

  • 最近「フロントエンド」っぽい話をあまりしていない
    • ふだん話さない話をしていて楽しいので自分は気にしていないがどうなのかと思わないでもない.
    • 何かオープンソースのライブラリのプログラムでも読むか?
    • よさげなサイトのCSS眺めるとか?
  • UIからの解決
    • また凄いのがこれ操作するのが今でいう液晶タブレット&ペンなのね。当時の常識だと「これは画面を触るライトペン的な?画像もリアルタイムで拡大とか回転させて透過させるの?」と。当時のパソコン少年の視点だとこれは非常識な夢物語でしたよ。でもアプローチがUIからの方が未来の正解が見えるんだね
    • https://twitter.com/hisaketM/status/1584421773780877312
      • いずれは大抵の技術的制約は解決するので、技術的詳細を無視して最適なUIを考えれば自然それがガジェットの未来予測になるというのは確かにそうなんだよね
  • NovelAI Diffusionの研究書「元素法典」有志が日本語化 画像生成呪文の極意
    • コメント
      • 法典系の異様なほど長いプロンプトは、AIを道具として見た際、AIの能力がまだまだ低いことを示唆している。
      • なるべくシンプルな描写プロンプトを入れるだけで、できる限り余計なタグを入れずともいい絵を生み出したいのよ。
      • ただ、少しそのヒントは見えてきたと思う。
      • 重要なのは、より本質的で細部を描写する指示を書くことと、必要な場合は状況に整合する付帯情報を明記してやること。
      • セフィロスは水中に沈めてクロールと水を蹴ることの指示だけで、泳げと言わずとも泳ぎだしたし(質の調整はもう少し必要だったけど)、散らかった部屋の少女は、messyな条件や座り方を指示するだけで、一気にそれっぽくなった。ラーメンの口は、人間が描いた絵を元に表情指定するだけで解決した。ウルトラファインチューニングには法典系長文プロンプトが必要でも、エッセンシャルな絵はシンプルなプロンプトで描ける。
      • クリーンプロンプティングを目指そう。
      • 分量が減らせるので、必要であれば使えるタグの数を増やせる。
      • 何より呪文が見る気が失せるほど長いことを避けられる。
      • プログラミングと同じ。
      • 本質的にシンプルに出来るなら、呪文は複雑に描くべきではない。
      • そして、簡単なプロンプトが使えることは、AIの道具性を高めることでもある。
  • 画像生成AI
    • 触って感じたAIの強みは「全然関係のない別々の概念を合成できる」ということで、これによって「潜在的に存在した誰も見たことない表現」を生み出せる点だと思う。
    • これは卓越した芸術家が新しい表現を開拓するときに使う手法そのもので、コンピューターで超スピードに試せてしまうのはスゴイ。
    • これは楽しい
    • 所感
      • (数値)計算系でも何かを探索するときに高速かつ正確に試行錯誤するための道具としてのプログラミングの意義を感じたことがある.
      • 高速の試行錯誤のためのプログラミングとその応用と言えば理工系のプログラミング応用としては中心的な課題でさえある
  • 平野耕太ツイート
    • AI君は、今日はお前を完全な補正機・補助機として教育する。俺が描いたものをAIがおかしな所を補正して出力し、AIのなんか違うなという所を俺が書き直し、補正し、書き加え、補正する。人間の嗜好をAIが監視し、AIの思考を人間が監視する。
  • 新聞デザイナーの講演
    • How to save news papers
  • dalle2, outpaiting
  • 資料作成のFigma移行
    • 7月から資料作成をFigma移行してから喜びしかない。
    • Nue incは資料制作の全てをFigmaでやるようになった。メリットは添付。
    • 人によってバラける資料のクオリティ減ったし、過去レイアウトの引用もスムーズ。何よりバージョンごとに書き出していた無限pdfからの脱出が可能になった。まじおすすめ。
  • CSSでスクロールが連鎖するのを回避する古い方法とoverscroll-behaviorを使った新しいテクニック

2022-10-11 tue

  • jQueryの:has()と擬似クラスの:has()
    • Chromeに実装された疑似クラス「:has()」がjQueryの「:has()」に悪影響、一定の条件下でウェブサイトが壊れる可能性 (Publickey)
  • Core Web Vitals
  • 日本語からのプログラム生成
    • 日本語からAIが自動的にプログラムを書いてくれるサービス「AI Programmer」を公開した
    • https://aiprogrammer.hashlab.jp
    • 対応言語: #Python #SQL #javascript #html #cpp
  • 3D生成AI
  • NovelAI
    • マジで革命的だわ…
    • 全てNovel AIという最新の画像生成AIで生成したイラストなんだけど、キャラや背景、モンスターやイケメンに至るまで、あらゆる指示に対応できる上に全てクオリティが高い…今日から世界中の人間全員が「神絵師」になったという事なんだろうな
    • NovelAI
    • https://www.noble.ai/
    • サンプル
  • AI作画の恐ろしさ
    • 個人的にAI作画の一番恐ろしいところはAIの存在ではなく「非常に安価に大量の絵が指示通りに作れる」ということ。
    • 絵描きとしては理想の絵に近づこうと励むが、最大の障害は「感性」「才能」ではなく「時間」。
    • 良い絵を早く描けること自体がすごい事であり商売上非常に重要。
    • そこを突いてくるのがキツイ
  • テキストからの動画生成
    • 【未実行】
    • テキストから動画を生成するAI「Phenaki」が公開。
    • こちらは一連のテキスト、ストーリーを入力すると最大数分の長さの動画生成が可能。
    • すご...AIによる映画, アニメ, CM制作も現実になりそう..
    • https://phenaki.video
  • ネット上での画像収集
    • 【未実行】
    • pythonicrawler
    • 4行で画像が100枚さっと収集できる模様
    • PILで画像加工できる
  • いいなと思う UI はユーザの行動を承認している
    • ゴミUIの例: 退会しづらいサブスク
    • 「あの会社は本当に腐っている」という評判が立ってしまう
  • UI
    • このサイト知ってる人も多いだろうけど、BAD UIの最たるものが詰め込まれてて面白い。実際に体験するといかに使いやすいUIが大事かを実感できる。私は最後まで辿り着けなかった…笑
    • https://userinyerface.com

2022-09-27 tue

  • 技術書典でいくつか本を買った
    • FireStarter.Testable_Firebase-ebook-testable-firebase.pdf
    • シーホーちゃんとゆかいな仲間たち.Firebase_Authenticationなら多分これが一番早いと思います_ebook.pdf
    • りあクト!Firebaseで始めるサーバーレスReact開発riakuto-firebase-210214.pdf
    • りあクト!TypeScriptで始めるつらくないReact開発-第4版【①言語・環境編】riakuto4pt1-220908.pdf
    • りあクト!TypeScriptで始めるつらくないReact開発-第4版【②React基礎編】riakuto4pt2-220908.pdf
    • りあクト!TypeScriptで始めるつらくないReact開発-第4版【③React応用編】riakuto4pt3-220908.pdf
    • FirebaseやReactに興味ある人, どのくらいいる? 何かやる?
      • denoやらBunやら
  • アニメーションのプログラミングネタを拾おう
  • ウェブ制作で React(Next) や Vue(Nuxt)、jQuery が最近どれぐらい使われているのか調べてみた
  • 現代のフロントエンド事情
  • 新技術が業界を潰す事案
    • これに似た話ではDTP(Desktop Publishing)とCTP(Computer To Plate)という技術の登場・普及によって数年で産業丸ごと消滅した写植という業種があって…本物のディスラプションってマジでヤバいんですよ。
    • 写植全盛期の文字盤(DTPでいうフォント)で最大勢力を誇った写研は、DTPのトップランナーであるAdobeへのフォント提供を突っぱね、当時二番手のモリサワはその話に乗った。その結果、今やモリサワは圧倒的なフォントベンダーへ、写研は滅亡へ。イラストレーターにもそういう選択が求められるのかもね。
    • https://twitter.com/VoQn/status/1564783941651144704
      • 前も書いたけど、AIに仕事とられるんじゃなくて寧ろAI駆使しながらレタッチが出来る腕前が元々ある描き手が更に超画力を身に着けてく展開にしばらくは続くと予想してるんですよね。そういう意味では『格差が広がる』
      • ↑の予想通りというか、それ描いた3週間後にこんなデモが出ているし

2022-08-30 tue

2022-08-16 tue

絵画史から見るとAI絵画はカメラ

AI絵画が絵画という世界になぜショックを与えているのかというと、とにかくこれまで絵画では必須であった画材やテクニックも(アナログでもデジタルでもそこは同じ)が一切不要である点です。 AIにこんなことをされてしまっては、これまでつちかってきたテクニックが無駄になる、それを身につけるためにやってきた努力とはなんだったのか、絵描きの職業が奪われてしまうという嘆きの声がたくさん出てくるのもむべなるかなといったところです。 ただ、絵画の歴史的に考えると、これとほぼ同じことは過去にもありました。それはカメラ(と写真)の登場でした。

画像を生成するところの細かいところを端折って、最終的な完成品ができ上がるまでの手順を整理してみると、カメラとAI絵画というのは、ほぼ同じであることが分かります。 - カメラ - パラメーターが存在する - 機械が処理をする - 試行錯誤する - どれを表に出すか人が選ぶ - AI絵画 - パラメーターが存在する - AIが処理をする - 試行錯誤する - どれを表に出すか人が選ぶ

ノーコードは普通に使われると思うけどね。midjourneyは誰の記事だったかいらすとやとか素材集みたいなものって解説はすごく納得した。

APP FUEL

  • URL
  • アプリ開発のヒントになりそうなサイト
  • https://theappfuel.com
  • 他社のオンボーディング事例、検索機能、有料プランへアップグレード、友達招待など、機能別で色々なUIがまとまってる

Webサイトを作る際に超参考になったデザインのサイトまとめ

2022-08-02 tue

自己紹介 - 関根良紹 - Webエンジニア, バックエンド - フロントエンドはじめることになった

はじめに

  • PWA・LIFFアプリ・LINEミニアプリの比較
  • MidJourney https://twitter.com/8co28/status/1553611630252277760
    • 「クリエイティブ系は『正義』がなく怒られが発生しないからGoogleなども遊びやすいのでは」
  • Web Design in 4 minutes https://gigazine.net/news/20161004-web-design-in-4-minutes/
    • 本サイト https://jgthms.com/web-design-in-4-minutes/
  • 2022年のモダンCSS改
  • 時間が余ったらmy-diary.orgのメモから適当に引っ張ろう

PWA・LIFF・LINEミニアプリの比較

概要
  • PWA(Progressive Web Application)
    • アイコン用の画像と設定ファイルを2-3個追加するだけで作れる
    • 気分としては簡易アプリ作成
    • オフライン利用のためにHTML・CSS・JSをローカル保存(?)
    • 通知もできる
  • LIFFアプリ(LINE Frontend Framework)
    • LINEの認証が使える
    • LINEからユーザーのデータが取れる
    • 単なるHTML・CSS・JS
    • LINEのAPIと連携すればLINE Payによる決済もある
  • LINEミニアプリ
    • LINE内のアプリとして登録できる: 楽天とモールの例え
    • 決済などの強い機能と連携しやすくなる
  • PWAとLIFFアプリ・LINEミニアプリは共存できる
    • どちらもWebアプリが基礎
    • 設定ファイルを追加したりAPI連携したりするだけ
PWA
https://www.seohacks.net/blog/2809/
# 概要
  • 三行(四行)で
    • モバイル向けサイトをスマホアプリのように使えるようにする
      • ネイティブアプリのようにスマートフォンのホーム画面に導線を置ける
    • ユーザーエンゲージメント向上やUX改善の効果に期待
    • アプリストア経由で新規ユーザーに接触できない
    • 手間がかかるわけでもないので組み込んで損はない
  • オフライン利用・プッシュ通知対応のブラウザAPI(Service Worker)を使っているWebサイト
    • 実際「インストール」できる
      • 例: https://vocmem.vercel.app (そのうち移行するがいまはまだ触れる)
    • キャッシュ利用
    • URLバーがなくフルスクリーン
# メリット
  • 開発側
    • アプリの審査がない: ただのWebアプリ
    • OSごとの対応不要
    • 標準Web技術で十分
    • 本体はふつうのWebサイト: 検索からの流入あり
  • ユーザー側
    • 容量が少ない
    • 表示が速い
    • オフライン対応
# デメリット
  • ネイティブアプリの豊富な機能は使えない・使いにくい
    • 最近はカメラアクセスなどもできるようになったそうだが
    • ネイティブ特有の機能を使わないなら関係ない
  • アプリストア経由で新規ユーザーに接触出来ない
  • iOS対応が弱い(iOS自体のPWA対応が遅い)
  • プッシュ通知できない(2022秋に対応予定?)
  • インストールに一手間必要
    • 確かiOSだとSafariからメニューを開いて「ホーム画面に追加」させないといけない
# まとめ
  • 対応に対するコストはほぼ0
  • やっておいて損はない
  • インストールさせようと思うと一手間いるが, スマホのホーム画面に置ける強さがある
  • SEO上の効果はどう(?)調べておこう
  • 通知が使えないとしてもメルマガやLINEなど別の手段で連絡すればよい
LIFFアプリ
  • LIFF: LINE Front-end Framework
  • LIFFで作られたWebアプリをLIFFアプリと呼ぶ
    • LINEミニアプリはLIFFアプリの機能強化版
  • 誰でも開発できる: LINEミニアプリはリリース時にLINE社の審査が必要
  • LIFFアプリはLINEログインやチャットでのテキスト送信が主な機能
    • LINEPayAPIと連携すれば決済もできる
    • LINEミニアプリは予約・通知・決済などいろいろな機能がLINEの仕組みとして簡単に使える
  • LINEと簡単に連携できて, WebブラウザはもちろんのことLINE上でも動くアプリが作れる仕組み
  • 簡易版LINEミニアプリ
    • 決済などのクリティカルな機能は使えない
    • LINEの認証は使える
    • (確か)メールアドレスも取れる
      • ただしサーバー側実装が必要
LINEミニアプリ
  • 用語
    • スーパーアプリ: LINEやPayPay
    • ミニアプリ: LINEやPayPay内部にあるサードパーティ製のアプリ
    • 楽天をウェブ上のモールとみなす気分
  • 参考

ミニアプリの始まりは、WeChatのミニプログラムと言われます。 中国で圧倒的な人気で10億以上のアカウントを持つといわれるWeChatを運営するテンセントは、いち早くこのアプリ市場の流れを先読みし、2018年のはじめに、WeChatのアプリ内のアプリをミニプログラムとして提供し始めました。 これにより、WeChatのユーザーは、WeChat内での買い物や予約、友だち間の送金やゲームなど、他のアプリをダウンロードすることなく企業のサービスを利用できるようになりました。

ミニアプリのメリット
  • 最初に図を見よう: 参考
  • 実店舗との連携が一つのキモらしい: 予約や通知
  • 気軽に使える
    • 個別にアプリをインストールする必要なし
    • LINEやPayPayのようにユーザーが日常的に使っているアプリ上で起動する
    • ユーザーは用途別にアプリを起動しなくてよい
    • ユーザ情報・クレジットカード情報を個別に入力する必要もない
  • 気軽に開発できる
    • Web標準のスキルセットであるHTML/CSS/JavaScriptで開発できる
    • AppStore・GooglePlayなどのアプリケーションストアを通さなくてもよい
      • 現状ではLINE社の審査はある
      • うまく作れば(メインのGUIは据え置き, データはWebのDBアクセス)UIの変更がない限り再審査不要
    • ユーザの利用頻度の高いアプリから提供できる
    • ユーザ認証を0から実装せずにスーパーアプリでの認証情報を使える
    • Webアプリ: Web系開発者にとってはネイティブアプリの開発知識なしで開発できる
      • ネイティブアプリと違ってKotlin・Swiftなどを覚えなくてよい
    • インストールさせる手間もない
    • LINEとの連携がよい: LINEを主な連絡手段にしているならLINEから出ずにいろいろできる
ミニアプリのデメリット
  • LINEの審査が必要
  • ネイティブアプリ・インストールしたPWAと違ってホーム画面に出せない

数学・科学の英語記事を読もうの会

はじめに

アインシュタインの原論文を多言語で読もうの会を運営して気付いた点を補足すべく, 2021-06から二ヶ月の試験企画として立ち上げた. もともとは「Wikipedia の数学・物理系の英語記事を読んでみようの会」というタイトルにしていたが, もう少し広くした方がよさそうなので勉強会の暫定タイトルとしてつけてある.

もしあなたがこの企画にご興味があるなら, お問い合わせなどから連絡してほしい. Twitter (の DM) などでの他の手段でも構わない.

わかったことを簡潔に: 読むのが大変かつ長くて飽きる

半年以上勉強会を続けてきて気付いたことがいくつかある.

アインシュタインの原論文を読む勉強会はこれはこれで非常に勉強になり, 続ける意義も十二分あるのはよくわかった. 何より私が楽しく, 自身の勉強のモチベーションにさえなる.

しかしその一方で問題・課題もある. 一つは原論文は 31 ページとかなりボリュームがある. ちなみにいろいろな目的から多言語でやっていることもあり, 1 文 (1 ページではない) を読むのに少なくとも 3 時間はかかる. 1 文だけでも十分な情報量があり, それはそれでいいのだが, やはり短くても文章全体を読み切ったという達成感も大事にしたい. 端的に言えば飽きてきてしまう人もいるだろう. 語学と物理・数学を一緒にやるのも非常に大変だという話もあるにはある.

Wikipedia の英語記事を読んでみようの会

アインシュタインの原論文の勉強会はこれで続けるが, その一方で別の語学勉強会を次のような企画を試してみたい. タイトルの通り, 「Wikipedia の英語記事を読んでみようの会」だ. もちろん数学や物理などの記事を英語で読む. Wikipedia を選んだのはやはり多言語展開を念頭に置いている. 少なくとも日本語では英語のページを訳した記事もあり, 他の言語でも同じようなことがあるかもしれない. そして明らかに同じ言葉や概念に対して他の言語での説明がある, またはある可能性が高いため比較もしやすいからだ.

よくリスニングしろ・ペーパーバックを読んでみろといった指南がある. 興味がある続くモノとして映画もいいなどと書いてある. しかし理工系の人間は困るはずだ. そんなものに興味はないと. もちろん人の趣味は多様だからそうした題材でも楽しめる人は確実にいる. しかし一石二鳥で数学・物理・プログラミングと一緒に語学が勉強できればいいのに, そう思う人もまた一定数確実にいるはずだ. 何より私がそうだし, 私と同じ趣味を持つ人が一定数いることもはっきりとわかっている.

現代の英語学習環境を活かす

最近は英語での数学や物理の講義も YouTube に上がっている. 例えばフィールズ賞受賞者の Borcherds が自分のチャンネルに動画をあげていさえする. 以前よりは格段に手に取れる英語を含めたコンテンツが増えていてこんなに嬉しいことはない.

しかし語学の基礎知識に不安があり, 実際に何となくは読めるがきちんとは読めないという人も多いのではないかと思う. 本だと読み切りたくなってしまうだろうが, 量が多いといろいろな事情から読み切れずたいてい途中で終わってしまう. 程々の分量の文章が読みたい・読み切りたい, そう思うことはないだろうか.

提案

そこで実際に数学・物理をテーマにした Wikipedia の英語記事を読んでみてはどうか, そういう提案をしたい. Wikipedia はその性質からある単語や概念に関して程々のボリュームで解説がついている. 数学や物理のネタを筆頭に, 興味ある記事を読んでそれで語学も一緒に勉強できたらこんなお得なことはない. これを実現させようというのがこの企画である.

私は「大人の高校」または「理系のためのリベラルアーツ・総合語学」を目指したサービスを企画・立案・展開している. そのうち有料化して本格化しようと思っている. いまはこれを狙ってモニターを募集しつつ試験的に少人数で様子を探っている. 何か 1 テーマ, 具体的に Wikipedia の記事を読んでどんな感じになるか調べたい. そんなにたくさんいても仕方ないので 2-3 人集まれば実際にテストをする. 毎週 1 時間で 2 ヶ月くらい試験的にやってみたいので, 興味がある方はお問い合わせなどから連絡してほしい. 何を読むかは集まったメンバーと相談して決めたい.

今回の企画はあくまで語学に比重があるので, 数学や物理に関する話は深くは議論しない予定だ. 数学・物理もきちんとしたいという方は別途相談してほしい.

追記その1: メンバー募集のやり取り

いったん参加者を募集したところ次のようなコメントを頂いた.

理工系の英語の教材としては, 科学雑誌の読み物記事なども個人的には面白いと思います. 英文解釈の良いトレーニングになります. ご参考まで.

いろいろなところに書いているように, 理工系のためのリベラルアーツ・総合語学の裏テーマとして, 語学を軸にした文系人のための理工学入門も考えている. 実際, 私が所属している語学コミュニティの人で, 英語の読解・文法学習用にアインシュタインの原論文を多言語で読もうの会の動画・コンテンツを紹介したら次のようなコメントを頂いた.

あれ程理科や数学が苦手だった自分に, まさかあのアインシュタインの原論文を読める機会があるとは思わなかった. ほんの一部ではあっても本当に嬉しかったし, この喜びは誰かに共有したい.

語学講座の中では限界もあるとはいえ, 必要な範囲で数学・物理をはじめとした理系知識の話をするのは大事なことだ.

さらに次のような話も出た.

今まではそのまま「資産」にできるページを考えていましたが, 雑誌の候補紹介記事を見たら, 何というか文系の人向けには小学校・中学校レベルの理科的な話の方がよさそうだという霊感を感じました. 普通に英語自体を勉強したくて, そのネタとして数学・物理を使うか, 語学から数学・理科に迫るかで何を使うか変えるとよさそう, という気分です.

科学といってもいろいろで, 言語の発達に関するものだったり, 意外と身近なテーマがあり, また, 英語自体も定評があるので, 文理問わず, 英語を勉強したい人, 教養を得たい人に需要があるかと思います. 日経サイエンスには「英語で読む日経サイエンス」という日英対訳のページがあります.

理工系のリベラルアーツをうたう以上, 数学・物理・プログラミングだけでは羊頭狗肉である. 私自身, 興味関心の幅を広げていかなければ口だけ人間になってしまうという危惧もある. そこで上の記事で引用されているいろいろな記事まで射程距離に入れることにし, 試験的な会のタイトルも変えてみた.

追記その2: 勉強会の進め方

今回の試験企画に関する話と, 今後展開する勉強会の内容とがある.

基本: 2 ヶ月で進めるところまでしかやらない

これを基本にしたい. 1 つの記事が全て読み切れなくても気にせずそこで終える. 2 ヶ月 1 テーマと区切ってモチベーションを保つのが目的だからだ. もっと言えば, 途中までしか読めなかったからと言っても, そこまでは頑張って読んだわけで, それ自体が大きな成果だからだ. 2 ヶ月間 1 テーマをきっちりやりきった事実を大事にしてほしい. 逆に言えばそれでおさまる程度のコンテンツを選ぶのも大事だと思っている.

基本的には各参加者にはいわゆる生涯学習として自分自身で勉強を続けてほしいと思っている. この企画はあくまでその補助の一つで, 一人では大変なことを皆で乗り切ろうという部分に焦点がある. 残った部分は興味があれば自分で引き続きやってみてほしい.

もちろんテーマによって継続でやった方がいいこともあるだろう. それはそれとして適切に対処したい. ただし今回の試験企画のメインテーマはそこではない.

今回の試験企画: 単語の深掘り

「アインシュタインの原論文を多言語で読もうの会」で文法をゴリっとやっているため, どちらかと言えばそこで切り落とした単語の深掘りをやってみたい. 英語はいろいろな言語の要素をチャンポンにしためちゃくちゃな言語で, 少し掘るといろいろな言語の要素が顔を出す. 特に単語・語源調査の面からそこに迫りたい.

ただし文法的にきちんと追いかけるのも大事だと考えてはいる. これは実際に参加名乗りを挙げてくれた方からの次のコメントによる.

できれば文法解説も入れて「語彙と文法の両輪があってはじめてきちんと文が読めますよ」ということが伝えられるような講座だと嬉しいです.

雑誌の文章には, アインシュタインとはまた別の読解の難しさ (楽しさ) がありそうなので. 一見やさしそうなのに実は難解な構文が多々出てきて, 必要に応じてスラッシュや矢印などのマークを入れながら解析しています.

今回実際に読む文章がどこまで文法的にハードかにもよるが, 構文・文法解析が必要なところには適切に対処したい.

さらに追記: あくまで実験・検証的な企画

これは私自身が勉強を楽しむこと, 教育を通じて自分自身の理解も深めること, そして勉強会を気楽に開催するための工夫といった目的がある. さらにもう一つ, そもそもこの試験企画を立ち上げようと思った目的は, 相対性理論の原論文を読む会の文法処理が重過ぎてワンテーマが読み切れないことにある.

少し準備してみたところ一番最後のそもそも部分, つまりワンテーマ読み切り勉強会にするのが恐ろしく大変そうになることがわかった. これは単語の深掘りをやろうとしたときの問題だ. 多少は触れたいがこれとワンテーマ読み切るのをどう両立するかが課題になっていることがわかった. いま考えているのは一回さらっと全体を読んでから, 必要に応じて深掘りするのはどうかという部分. 特にせっかくだから各記事の科学的な内容自体も勉強したいという思いもある. 本格始動させてみてわかることもあるので, 2 ヶ月間いろいろな試行錯誤をしていく.

ENERGEIA

オンライン部活サイトENERGEIAで「数学和尚の数学かけこみ寺」をやっています.

趣旨

部活詳細ページ

まず読んでほしい文章があります

何はともあれ, まずは次の文章を読んでみてください. リンク先は6ページのPDFになっています.

この文章は山形大学の数学科が主催した数学エッセイコンテストで入賞していた作品です. 簡単にあらすじだけ書いておくと, ご家庭の事情もあって中卒で稼業を継いだ方が, お子さんの就学を機にお子さんと算数・数学の勉強をはじめた話です. 「数学とこんな付き合い方もできるのか」とはっとさせられる, 穏やかな筆致のとても素敵な文章です.

数学をしよう

さて, ここは特に算数から中学・高校程度の数学を勉強する部活です. お好みで好きな内容を好きなペースで勉強してください. 日常の中に数学を溶け込ませることを目標に, ガチガチにやるよりもダラダラとのんびりみんなで算数・数学しようと思っています.

必要に応じて部長によるオンライン授業をすることなども考えていますが, 基本的には「教え合い」を中心に考えています. 何故かというと, 人に教えるのが一番効果的な勉強法だからです. 頻度などは未定ですが, 定期的にオンラインのゆるい勉強会の開催も考えています. なかなか一人では勉強が進まないでしょう. そこを埋めるべく, みんなでのんびり数学に触れる時間を作るのが目的です.

簡単な自己紹介

私は学部は早稲田で物理を, 修士は東大の数理科学研究科で数学をしていました. 社会に出てからはIT系のエンジニア・プログラマーとしてはたらいています. そうした経験をもとに, プライベートでゴリゴリに専門的な数学・物理に関する情報発信やコンテンツ制作・販売をしています. 最近は理論物理学者に市民が数学を教えたり, アインシュタインの特殊相対性理論の原論文を読むことを通じて英語・ドイツ語を含む多言語の勉強をする勉強会や, プログラミングの勉強会を主催しています.

これらは概要からわかる通り, かなり専門的な内容ばかりです. 一方, 私の活動の原点は「昔ほしかったモノが今でもない. それならもう自分で作る」です. 私の周囲にもいわゆる理系人材はほぼおらず, 理工系の内容に関して誰にどう相談したらいいかわかりませんでした. 今思えば理系科目の教員は理系だったわけで, そうした人に相談すればよかったのですが, そうした発想さえ持てませんでした. そのくらい発想も情報もなかったのです. そして大学・大学院でいわゆる超進学校出身の学生の話を聞いて愕然としました. 彼ら・彼女らは親・知人・友人のネットワークから大量の情報をもらえています. 本当に, ごくごく単純に, これを「ずるい」と思ったのです. 私もそんな環境がほしかったと. そうした経緯があり, いま理工系を志す中高生向け教育に関して私の地元の区議に提案を出していさえいます. いまは新型コロナ対応で区役所の教育部門にも余裕がないようで, 話が止まっています.

しかし個人で動けることはいろいろあります. そんな活動の一環としてここでは特に, 最終的に本当に中高生向けに転用できるコンテンツやノウハウを整備したいと考えています. それが算数・中高数学を中心にしたこの部を立てた理由です.

もう少し詳しく部活の内容

もしかしたらあなたは大学レベルの数学や物理を勉強したいと思っているかもしれません. そうした方が参加してくださっても構いません. それはそれなりに対応します. ただ, あくまでもメインは中高数学までを想定しています. 文系プログラマーで最近の機械学習関係で数学を復習しないといけない, みたいな方も歓迎します.

私は重荷, コンテンツ制作の進捗がよろしくない中高数学とプログラミングに関わる話, 数学・物理のための英語といった部分で, 広い意味で数学に関わる内容で部活していこうと思っています. 毎日「これがわからん」と適当にのんびりやっていると思います. 何か要望があれば, それに関する小ネタや数学の応用の話などもしようと思っています.

他の人の勉強の様子を見ているだけでも楽しいでしょう. 「こんな分野や応用もあるのか」という新鮮な驚きもあるかもしれません. 私自身, 物理という形での数学の応用についてはいろいろな話ができます. 数学・物理に関する相談にも気軽に乗りますし, そういうプチ勉強会・座談会・雑談会があってもいいと思っています.

トップ固定投稿

はじめにやってほしいこと: どんな人がどんな意図・目的をもって参加しているのか知りたいので、ぜひ自己紹介シートに記入をお願いします。

意図的に他の人の内容も見られるようにしているので、興味が近い人がいれば、ぜひ誘い合って勉強してみてください。 他にも何か思いついたら随時追記します。

ぜひ、日々二秒でいいので「数学」をしてください。そしてその結果・成果をぜひ投稿してください。 いっぱい投稿が入るとごちゃごちゃしそうなので、まずは前日または当日の私の投稿のコメントに書くようにしてください。

ここでいう「数学」は、ENERGEIAとこの部活にアクセスして「数学」の文字を見るだけでも十分です。数学をやるなんていうのはふつう凄まじく精神的な負荷がかかると思うので、このくらいの軽いところから始めるので十分です。

最後に, 私が作ってきたコンテンツで適当な形でまとまったコンテンツを紹介しておきます.

では数学を始めましょう!

イベント(勉強会)の記録

2021-05-02

GWなので休み.

2021-04-25

予定

新入社員や学生がPython本を買い込む季節だけれど、この東大のPython入門は無料公開。scikit-learnについても説明されている Pythonプログラミング入門 東京大学 数理・情報教育研究センター

MOOCSはMITとStanfordの独壇場に見えて、東大も社会に対していいサポートと動きをしていると思う 東大が無料公開している超良質なPython/Data Science/Cloud教材まとめ (*随時更新)

実際

語学コンテンツの整理をした.

2021-04-18

最初だけ参加者一名. ただし途中で抜け. Project Eulerの解答に関して簡単に話をしてみたらいろいろ不備が見つかったので追記した.

2021-04-11

参加者がいなかったので適当にコンテンツ作成タイム.

2021-03-21

参加者一名. 適当に機械学習系の数理に関する話をした.

2021-03-14

部活の趣旨や私の活動に関して改めて説明.

  • 関根(部長)の最近の活動の概要を話してみた
  • どんなことをしたら面白そうか聞いてみた
  • 各人ごとの興味に合わせた応用の話とか
  • 実際に作っているコンテンツがあるのでそれの紹介
  • もっと中高数学をやろう:既存コンテンツもきちんと紹介しよう
  • スマホにも入っているGPS地図と一般相対論
  • プログラミングと絡めた話, AI・人工知能(機械学習)の話
  • 離散数学ネタ:計算幾何に関わる話とか

理論物理学者に市民が数学を教えようの会

コメント

これは理論物理学者でもある松尾衛さんとの公開勉強会の記録です. 松尾さんからのコメントのいくつかはこのページにまとめられているので, こちらも参考にしてください.

7/12 以降は有料での指導をすることになり, そちらはクローズドで進めることになりました. 公開前提で進めていた過去の動画・資料は公開したままにしておくので, ぜひ有効活用してください.

基本的な URL リスト

公開勉強会タイトル一覧

これは YouTube の動画のタイトルでもあります.

  • 2020-09-28 摂動論の謎 物理の摂動論と数学の摂動論 微妙な緊張関係と物理
  • 2020-10-05 物性の摂動論 自己共役性と摂動 その数理と物理
  • 2020-10-12 水素原子と場の量子論 量子力学の空間設定と代数学への誘い
  • 2020-10-19 赤外発散処理のための関数解析入門 位相に関わる諸相
  • 2020-10-26 線型代数・微分積分の復習 両者をミックスさせるとどうなる?
  • 2020-11-02 関数解析と物理 場の量子論の様々な数理と物理
  • 2020-11-09 ヒルベルト空間への道 モデルケースとしての実数論
  • 2021-01-18 モデルケースとしての実数論 解析学のための集合・位相入門の入門
  • 2021-03-15 超関数論入門 モデルケースとしての実数論
  • 2021-05-03 超関数論の気分 定義のあとの注意, 落穂拾い
  • 2021-05-17 不等式がなぜ大事か? 面積からの集合論入門のイントロ 理論物理学者に市民が数学を教えようの会
  • 2021-07-12 測度論に向けた準備 面積からの集合論入門のイントロ 理論物理学者に市民が数学を教えようの会

中高数学+物理+プログラミングのオンライン勉強会

概要

勉強会用に準備した資料をせっかくなので公開. Zoom でやっていて動画も撮っているが, それは私以外の参加者の声も入っているので非公開.

もともとは次のコンテンツのブラッシュアップのためなどいくつかの目的で, 必要なことを教えるので協力してくれないか, という感じではじめた勉強会.

周辺知識を揃えないとつらくなってきたので, IT 関係の基礎知識も紹介するようになった. あと課題もあると嬉しいという話があり, 実際に中高生に勉強してもらうときも参考になるだろうと思い, 課題も毎回作って適当に解説もしている.

ipynb to md

必要なら nbconver で markdown 化. ブログにあげるときは面倒なので画像はアップしていない.

1
2
$ jupyter nbconvert --to <output format> <input notebook>
$ jupyter nbconvert --to markdown 2020-.*.ipynb

企画趣旨

はじめに

いま, 1 年くらいの長期にわたって知人と少人数でゆるく統計学・機械学習系の勉強会をしている. そこからのスピンオフで Python と基本的な数学に関する勉強会をやろうと思っていて, その内容に関する事前説明資料として記事にする. 説明資料が長文になるのでその共有のためもあり, 他の人もそれぞれで同じようなことをやってほしいのもあり, この計画が参考になるだろうと思ったのもある. 私が持っているコンテンツを提供できるので, 必要なら連絡してほしい.

バリバリと進んだことがやりたい中高生向けの数学・物理・プログラミング教育を進めようと思っていて, いまちょうど新型コロナで話が潰れているが, 実際に地元の知り合いの政治家・自治体にも提案はしている. Jupyter notebook でコンテンツを作っていて, まだ完全にチェックできていないオンラインのプログラミング環境の検証も兼ねている. 経験上も慣れていない人がプログラミング環境をローカルに作るのは本当に大変なので, Google Colabolatory などプログラミング環境をオンラインで完結させたい. よくも悪くも時代がそうなっていくだろうというのもある.

言語として Python は好きではないが, 事実上の入門デファクトという感もあるので, とりあえずそこにした. 数学・物理系で入門レベルの情報がとても多く, それなりに質もあり, バリエーション豊かなところは最THE高とは思う

ちなみにさらなるコンテンツ作成のために次の GitHub リポジトリにコードをためていて, それで生成した動画は YouTube に上げている. 興味があればぜひ眺めてほしい.

さらに次のページに数学系の無料の通信講座をいくつか置いてある. 登録用のページだけでも数学・物理の勉強をする参考になると思うので, これも興味があれば眺めてほしい.

大方針

私の趣味・守備範囲もあるので, 数学・物理方面からプログラミングに入る. 基本的な方向性としては次の無料通信講座と, その続編として作ったコンテンツを基礎にして展開する.

次の大方針で進める.

  • まずは細かいことはさておき, プログラミングでできることをゴリゴリ紹介する
  • まずはお絵描き中心
  • 離散化すれば四則演算でしかないので微分・積分をダイレクトに数値計算する形で進める
    • まずは波動方程式・拡散方程式を見せる
    • 波と拡散というイメージと視覚がマッチした対象だから
    • まずは概要を掴むのが目的なので本質的な数学部分が難しくなるのは気にしない
    • 何をするにも慣れが必要なので, とにかく浴びて慣れてもらうのが目的
  • お絵描き+数値計算で Python プログラミングの気分を掴む
  • 少しずつプログラムの詳細を見ていく
    • 暴力的な量の四則演算を進めるだけなので「数学」の話は最低限に留めながら進める
  • ある程度慣れてきた段階でプログラムと並行して数学の話をする

概要・議論の順番

いま考えているのは次のような感じ.

  • ある意味での終着点, 波動方程式・拡散方程式の数値計算結果の動画を見る・作ってみる
  • 偏微分方程式はわけわからなくても最終的に計算させる離散化の式はそれはそう, という感じのはずなのでそれを紹介する
  • 他にも微分方程式でどんな現象が表せてどんなことができるか紹介する
    • 常微分方程式の紹介
      • ホジキン-ハクスレー方程式 (大雑把に言ってノーベル医学・生理学賞の対象 (らしい)
      • フィッツヒュー・南雲方程式
      • 放射性物質の崩壊の方程式
      • ロジスティック方程式
      • 単振動の方程式
    • 微分方程式の数値計算の観点から見た中高数学の復習とプログラムへの落とし込み
  • 中高数学の復習をしつつ Python プログラムへの落とし込み

いったん別のところで組み上げたコンテンツがあるので, それをブラッシュアップしつつ進める予定. その意味では目次もある: 中高数学の復習の部分が詳しいだけではある. 質疑応答しつつ, 適当にプログラミングについても補足説明を入れていく.

ちなみに波動方程式や拡散方程式の数値計算結果は次のような感じ.

とりあえずはこんなところか. 録画しておいて, YouTube にも公開する予定. 他の人が勉強会をする参考になるはずだから, 質問・コメントが来たらこちらにも回答を追加していこう.

2020-04-19課題

はじめに

  • コンテンツの案内ページ
  • GitHub へのリンク
  • 00-introduction_02_jupyter.ipynb を一通り読んで Jupyter notebook(大雑把には Google Colab も同じ)の概要を把握してください。特に次の点に注意して読んでください。
  • テキストセルを作ってください。
    • テキストセルに何か文章を書いてみてください。文章は「あ」だけでも構いません。
    • TeX 形式で次のような式を打ってみてください。「このセル」をダブルクリックで開くとどうすれば式が打てるかわかるので、そのコピペで構いません。他にも資料を漁ってどんな風に書くとどう表示されるか眺めてみるといいでしょう。

$$\int_0^1 f(x) \, dx$$

  • コードセルを作ってください。
    • 01-basic_01_fundamental.ipynb を参考に print("Hello, World!") を実行してみてください。「実行結果出力欄」に「Hello, World!」と出れば成功です。
  • もう 1 つコードセルを作ってください。
    • 01-basic_03_matplotlib.ipynb を参考に、グラフを 1 つ書いてみてください。コピペでグラフが出てくることを確認するだけで十分です。
    • お好みでの追加タスク:いろいろ推測しながらプログラムを少しいじってみて、直線以外のグラフを描いたり、グラフを描く範囲を変えてみてください。

プログラムを勉強するときの注意

  • プログラミング「言語」と言われるように、いわゆる語学を勉強するときのコツがある程度流用できます。
  • 「英作文は英借文」というように、既に動いている(通じる)「例文」をコピペしてみましょう。そこからパーツを少し変えてみてどうなるか試します。
  • プログラミング言語は機械が意味を判定するので、文法に厳格に沿っていないと「きちんと文法通りに話せ」と怒られます。
    • ある程度まで来たらこの文法もきちんと勉強する必要があります。
    • よほどの趣味を持っていない限り、文法の勉強は初学の段階であまり面白いものでもないので、まずは 01-basic_01_fundamental.ipynb に書いてあることを雑に眺めて気分を掴んでください。
    • 公式のチュートリアルも参考になります。
      • Web 上の資源の問題として、リンクがたくさん張られている関係でいろいろな所に飛ばされる(飛びたくなる)ことがあります。本だと自分でページを飛ばさない限り一直線の道を歩むしかないので、Web 上の資源で勉強すると気が散るなら本を買ってざっと眺めるのも一手です。
  • 一般の語学でも実際に読み書きしないと身につかないように、プログラムも実際に読み書きしないと身につきません。Jupyter notebook 配布のいいところはすぐにコード実行できるところにあります。パチパチ実行してみてください。

解答例

参考:TeX
  • $f(x)$ のように 1 つのドルマークで囲むと地の文に普通に埋め込まれる式として $\int f(x) dx$ が書けます。
  • $$\int f(x) dx, \left{a\in A \mid a>0, b>0 \text{かつ} c>0\right}$$ と 2 つのドルマークで囲むと別行立ての式 $$\int f(x) dx$$ が書けます。
  • \begin{align} \int f(x) dx \end{align} などと書くと、数式環境下での式が書けます。 \begin{align} \int f(x) dx \end{align}
  • 複数行ある複雑な式を書くときは数式環境下で式を書きます:参考リンク
  • 数式環境と $$\int f(x)dx$$ 型との違い・使い分けについては次のように考えましょう.
  • $$\int f(x) dx$$ はあくまで地の文に埋め込みたいが縦・横に長い式なので別行立ての方が見やすい場合に使う
  • \begin{align} \int f(x) dx \end{align} は複数行にわたるハードな式展開・計算を書くときに使う.

$\epsilon$ $\varepsilon$

$$A = (a_{ij}) = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \ a_{21} & a_{22} & \cdots & a_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} & a_{m2} & \cdots & a_{mn} \end{pmatrix}.$$

参考:Markdown
  • テキストセルは TeX の他, markdown という形式で書けます.
  • 参考リンク
  • 参考リンク
  • 参考リンク
  • 段落分けや文字の強調などはこの形式に沿っています.
  • 主に技術系の文書を書くために使われる書式なので, 過度な装飾はできません (そもそもそういう機能がない).
コード例
  • sympy のサンプルを紹介します。
  • Google Colab 上ではオリジナルの Jupyter より面倒で、追加処理が必要です。
    • オリジナルの Jupyter では動くのに Google Colab 上では動かない (らしい) プログラムもあります
    • 例:4 次方程式の解の公式の表示.
  • 実際に一通り眺めて sympy をできる限り Google Colab 上でも動くようにするのはこの勉強会の目的の 1 つです.

```python !pip install --upgrade sympy

import sympy as sp from sympy.plotting import plot from IPython.display import display

def custom_latex_printer(expr, options): from IPython.display import Math, HTML from google.colab.output._publish import javascript url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_CHTML" javascript(content="""window.MathJax = { tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true } };""") javascript(url=url) return sp.latex(expr, options)

sp.init_printing(use_latex="mathjax", latex_printer=custom_latex_printer)

x = sp.Symbol('x') expr = x*2-12x+8 display(expr) ```

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 Collecting sympy
 [?25l  Downloading https://files.pythonhosted.org/packages/ce/5b/acc12e3c0d0be685601fc2b2d20ed18dc0bf461380e763afc9d0a548deb0/sympy-1.5.1-py2.py3-none-any.whl (5.6MB)
      |████████████████████████████████| 5.6MB 8.4MB/s
 [?25hRequirement already satisfied, skipping upgrade: mpmath>=0.19 in /usr/local/lib/python3.6/dist-packages (from sympy) (1.1.0)
 Installing collected packages: sympy
   Found existing installation: sympy 1.1.1
     Uninstalling sympy-1.1.1:
       Successfully uninstalled sympy-1.1.1
 Successfully installed sympy-1.5.1



 <IPython.core.display.Javascript object>

$\displaystyle x^{2} - 12 x + 8$

python x = sp.Symbol('x') y = sp.Symbol('y') expr1 = 2*x + 3*y - 6 expr2 = 3*x + 2*y - 12 display(expr1) display(expr2) #display(sp.solve((expr1, expr2))) # Math Processing error になる

1
 <IPython.core.display.Javascript object>

$\displaystyle 2 x + 3 y - 6$

1
 <IPython.core.display.Javascript object>

$\displaystyle 3 x + 2 y - 12$

python display(sp.solve((expr1, expr2)))

1
 <IPython.core.display.Javascript object>

$\displaystyle \left{ x : \frac{24}{5}, \ y : - \frac{6}{5}\right}$

  • 上の方程式は厳密解として $x=4.8,y=-1.2$ を持つ。
  • これの近似解として例えば $x=4.78888888,y=-1.1999999$

python p = plot(-(2/3)*x - 2, - (3/2)*x - 6, legend=True, show=False) p[0].line_color = 'b' p[1].line_color = 'r' p.show()

1
2
3
4
5
6
 /usr/local/lib/python3.6/dist-packages/sympy/plotting/plot.py:1065: MatplotlibDeprecationWarning:
 The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
   self.ax[i].spines['left'].set_smart_bounds(True)
 /usr/local/lib/python3.6/dist-packages/sympy/plotting/plot.py:1066: MatplotlibDeprecationWarning:
 The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
   self.ax[i].spines['bottom'].set_smart_bounds(False)

```python eq1 = x2 + y2 - 1 eq2 = x - y

plot1 = sp.plot_implicit(eq1, line_color="blue", show=False) plot2 = sp.plot_implicit(eq2, line_color="green", show=False) plot1.extend(plot2) plot1.show() ```

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 /usr/local/lib/python3.6/dist-packages/sympy/plotting/plot.py:1065: MatplotlibDeprecationWarning:
 The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
   self.ax[i].spines['left'].set_smart_bounds(True)
 /usr/local/lib/python3.6/dist-packages/sympy/plotting/plot.py:1066: MatplotlibDeprecationWarning:
 The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
   self.ax[i].spines['bottom'].set_smart_bounds(False)
 /usr/local/lib/python3.6/dist-packages/sympy/plotting/plot.py:1096: MatplotlibDeprecationWarning:
 The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
   ax.spines['left'].set_smart_bounds(False)
 /usr/local/lib/python3.6/dist-packages/sympy/plotting/plot.py:1097: MatplotlibDeprecationWarning:
 The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
   ax.spines['bottom'].set_smart_bounds(False)

```python import sympy as sp from sympy.plotting import plot from IPython.display import display

def custom_latex_printer(expr, options): from IPython.display import Math, HTML from google.colab.output._publish import javascript url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_CHTML" javascript(content="""window.MathJax = { tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true } };""") javascript(url=url) return sp.latex(expr, options)

a,b,c,d,x = sp.symbols('a,b,c,d,x') expr = ax3 + bx*2 + cx + d

display(sp.solve(expr, x, dict=True)) ```

$\displaystyle \left[ \left{ x : - \frac{- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}}{3 \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}} - \frac{\sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}}{3} - \frac{b}{3 a}\right}, \ \left{ x : - \frac{- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}}{3 \left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}} - \frac{\left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}}{3} - \frac{b}{3 a}\right}, \ \left{ x : - \frac{- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}}{3 \left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}} - \frac{\left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}}{3} - \frac{b}{3 a}\right}\right]$

2020-04-19オンライン数学勉強会用イントロ

はじめに

まとめ
事前準備:sympy インストールとチェック
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
from sympy import *
from IPython.display import display

def custom_latex_printer(expr, **options):
    from IPython.display import Math, HTML
    from google.colab.output._publish import javascript
    url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_CHTML"
    javascript(content="""window.MathJax = {
        tex2jax: {
            inlineMath: [ ['$','$'] ],
            processEscapes: true
        }
        };""")
    javascript(url=url)
    return latex(expr, **options)

init_printing(use_latex="mathjax", latex_printer=custom_latex_printer)

x = Symbol('x')
expr = x**2-12*x+8
display(expr)
1
<IPython.core.display.Javascript object>

$$x^{2} - 12 x + 8$$

はじめの注意
  • 吃音があるので聞きにくいと思います。
  • 言いにくい場合は文字で書きます。
  • いろいろ試験的な取り組みです。
  • この資料はあとで配ります。
大方針
  • Python でプログラミング
  • 将来に向けたいろいろなテストを兼ねる
  • 中高生または中高数学復習用に作ったコンテンツのテスト・流用
  • 試験的に Google Colabolratory を利用
  • いま使っている「これ」
  • ローカルの環境構築がいらない
  • TeX の形式を使うと式もきれいに書ける:$$\int_\Omega f(x) \, dx$$
  • 何回くらい・どのくらいの期間になるかは不明
  • なるべくゆっくり・ゆるく進める
  • 日々いろいろなタスクがある大人向けの勉強会なのでゴリゴリにやると疲れ果てて続かない
  • その代わり長期戦でのんびりやる
  • 予習はやりたければやる
  • 無理がない範囲で、長続きさせることを第一に
  • 復習は勉強会の中でやる
    • その分ペースも遅くなる
    • その遅さが気になるなら予習をしよう
  • 復習を自力でやれるくらいならはじめから独学できていると思う
勉強のコツ
  • 「すぐに理解する・できる」という幻想を捨てる
  • 同じことを何度も繰り返して、少しずつ慣れる
  • 究極的には「独学」が必要
  • そのサポートをするのがこの勉強会の目的
  • 細部が詳しい本はたくさんあり、いろいろなレベルの本がたくさんある
  • この勉強会の当面の主目的は概要を掴むこと
  • 細かいことが気になったら都度調べるなり質問するなりしてもらう
  • そしてすぐにわからなくても気にしない
進め方の方針
  • 細かいことはさておき, プログラミングでできることをゴリゴリ紹介する
  • まずはお絵描き中心:微分方程式を解く
  • 後の内容も「中高数学のネタを視覚化する」方向で進める。
  • 微分方程式に関して
    • 高校数学の最終目的地の微分・積分に直結する
    • 微分・積分は統計学をはじめとしたその他いろいろな応用でも主力
    • 離散化すれば四則演算でしかないので微分・積分をダイレクトに数値計算する形で進める
    • 今回、イメージづくりで波動方程式・拡散方程式を見せる
    • 波と拡散というイメージと視覚がマッチした対象だから
    • まずは概要を掴むのが目的なので本質的な数学部分が難しくなるのは気にしない
    • 何をするにも慣れが必要なので, とにかく浴びて慣れてもらうのが目的
  • お絵描き+数値計算で Python プログラミングの気分を掴む
  • 少しずつプログラムの詳細を見ていく
    • 暴力的な量の四則演算を進めるだけなので「数学」の話は最低限に留めながら進める
  • ある程度慣れてきた段階でプログラムと並行して数学の話をする

基礎コンテンツの紹介

  • 中高数学をプログラミングを軸にまとめた。
  • この講座ではプログラミング、特に Python については深くは解説しない
  • 必要ならその時々の新しい本で勉強すること。
  • 古い本を選んでしまうと、最新の環境でその本に書かれたプログラムが動かない可能性がある。
講座の構成
  1. 数学に関わる Python の基礎
    • 重要なライブラリ numpy のまとめ
    • 重要なライブラリ matplotlib のまとめ
    • 重要なライブラリ sympy のまとめ
    • 上記ライブラリを使った数学プログラミングのまとめ
  2. 線型代数:ベクトルと行列
  3. 微分積分
  4. 確率
  5. 統計
  6. 常微分方程式
  7. 偏微分方程式
大まかな説明
  • 最初の第 1 章:Python を使ってどんなことができるかを説明
    • 特に Python 自体の基本的な機能とライブラリの使い方を説明
    • 必要なコードは各箇所に書かれているので、ここは飛ばしてすぐに本編に進んでも問題ない
  • 線型代数以降の各章から、数学・プログラミングが混然一体になった本編がはじまる。
  • 常微分方程式の章を先に読んでみるのもおすすめします。
  • 「大事なことは何度でも」の精神
注意・当面の進めるイメージ
  • 下の 2 つを先にざっと眺める
  • 既に無料講座として公開している常微分方程式の章を少しずつ詳しく進める
  • 微分積分をやる

環境構築

Google Colab
  • いわゆる gmail のアカウントがあれば使える。
  • 「google colaboratory」でググってトップに出てくるページを開けば開くはず
  • 公式のチュートリアルもあるので、それを見よう
Python のインストール
  • インストールのことを「環境構築」とも呼ぶことにする
  • 将来の対応を考えて、勉強会では Google Colaboratory で進めてみる
  • ローカル(自分の PC)にインストールしたいなら、適当にやる
  • 経験上、「素人」の状態で環境構築は本当に大変
  • プログラミング・環境構築に慣れていない状態で数学と絡めた環境構築がしたいなら、Anaconda でインストールするのが楽
  • Google Colab 前提なのでこれ以上詳しくは触れない
  • 本格的にプログラミングするならローカルに環境を作るのは必須

本題:数学とアニメーション

定積分のアニメーション
  • 定積分はグラフが囲む領域の面積
  • いわゆる区分求積法:次のように定義する

\begin{align} \int_0^1 f(x) dx &= \lim_{n \to \infty} \frac{1}{n} \sum_{k=0}^{n-1} f \left( \frac{k}{n} \right), \ n = 2 &\Rightarrow \frac{1}{2} \left(f\left(\frac02\right) + f\left(\frac12\right)\right) \ n = 3 &\Rightarrow \frac{1}{3} \left(f\left(\frac03\right) + f\left(\frac13\right) + f\left(\frac23\right)\right) \end{align}

  • 右辺に注目する
    • $\frac{1}{n}$ は単なる割り算
    • $\sum_{k=0}^{n-1}$ は $n$ 項足しているだけ
    • $\lim$ は $n$ をどんどん大きくしている
  • 数値計算でやること
    • 十分大きな $n$ で右辺を計算する
    • だいたい面積が近似できることを確認する
アニメーション用の基本関数
  • 次の関数でいろいろやっている:今回詳しくは触れない
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
import matplotlib.pyplot as plt

def scatter_integral_body(num_data, is_left, f, param):
    # 描画領域の指定
    fig = plt.figure(figsize=(param["figsize_x"], param["figsize_y"]))
    subplot = fig.add_subplot(1, 1, 1)
    subplot.set_xlim(param["x_min"], param["x_max"])
    subplot.set_ylim(param["y_min"], param["y_max"])

    # 参考: グラフを折れ線で描く. 折れ線近似の様子を見たい場合に使う.
    #linex = np.linspace(param["x_min"], param["x_max"], num_data)
    #subplot.plot(linex, f(linex), color='blue')

    # 長方形の描画と面積の近似値計算
    area = 0
    step = (param["x_max"] - param["x_min"]) / num_data
    for x0 in np.arange(param["x_min"], param["x_max"], step):
        x = x0 if is_left else x0 + step
        rect = plt.Rectangle((x0, 0), step, f(x), alpha=param["alpha"])
        subplot.add_patch(rect)
        area += step * f(x)

    subplot.text(param["text_x"], param["text_y"], ('area = %f' % area))

    # 関数と三角関数の描画:上の supplot の処理の後に置かないと上の長方形が描かれない
    vf = np.vectorize(f)

    x_for_square = np.linspace(param["x_min"], param["x_max"], param["num_max"])
    y0 = vf(x_for_square)
    plt.plot(x_for_square, y0, color="red")
底辺と高さ 1 の直角三角形の面積
  • 底辺×高さ / 2 = 1/2
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
from ipywidgets import interact

def scatter(num_data, is_left):
    def f(x):
        return x

    param = {
        "x_min": 0.0,
        "x_max": 1.0,
        "y_min": 0.0,
        "y_max": 1.0,
        "figsize_x": 4,
        "figsize_y": 4,
        "alpha": 0.5,
        "text_x": 0.2,
        "text_y": 0.7,
        "num_max": 50
    }
    scatter_integral_body(num_data, is_left, f, param)

num_max = 50
interact(scatter, num_data=(2, num_max, 1), is_left=True)
1
2
3
4
5
6
7
interactive(children=(IntSlider(value=26, description='num_data', max=50, min=2), Checkbox(value=True, descrip…





<function __main__.scatter>
参照用

\begin{align} \int_0^1 f(x) dx &= \lim_{n \to \infty} \frac{1}{n} \sum_{k=0}^{n-1} f \left( \frac{k}{n} \right), \ n = 2 &\Rightarrow \frac{1}{2} \left(f\left(\frac02\right) + f\left(\frac12\right)\right) \ n = 3 &\Rightarrow \frac{1}{3} \left(f\left(\frac03\right) + f\left(\frac13\right) + f\left(\frac23\right)\right) \end{align}

二次関数
  • $x^2$ を $[0,2]$ で積分
  • 面積は $\int_0^2 x^2 dx = 8/3 = 2.6666...$
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
from ipywidgets import interact

def scatter(num_data, is_left):
    def f(x):
        return x**2

    param = {
        "x_min": 0.0,
        "x_max": 2.0,
        "y_min": 0.0,
        "y_max": 4.0,
        "figsize_x": 4,
        "figsize_y": 4,
        "alpha": 0.5,
        "text_x": 0.2,
        "text_y": 3.0,
        "num_max": 50
    }
    scatter_integral_body(num_data, is_left, f, param)

num_max = 50
interact(scatter, num_data=(2, num_max, 1), is_left=True)
1
2
3
4
5
6
7
interactive(children=(IntSlider(value=26, description='num_data', max=50, min=2), Checkbox(value=True, descrip…





<function __main__.scatter>
定積分の大雑把なまとめ
  • どんどん細かくしていくと、細かさに応じて近似がよくなる。
  • 近似を上げていった最果てで厳密な値が得られるとみなす。
  • 視覚的に確認すると定義の意図が見えやすくなる
  • 定義の意図がわかっていないとプログラムを書くのも難しい
1 次元の波動方程式
  • ひもの左端を揺らしたときのひもの振動(波)の様子を見る
  • 波が右端まで行くと反射するところも見られる
偏微分方程式としての波動方程式

\begin{align} u_{tt} = c^2 u_{xx}, \quad \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2}. \end{align}

  • ここで $c$ は定数で物理的には波の速度。
  • 物理だとこれをどうやって導出するかも問われる。
  • ここではそうした議論はせず、とにかく数値的に解いてみて波を表している様子を眺める

\begin{align} \frac{\partial u}{\partial t} &= \lim_{\Delta t \to 0}\frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} \ &\simeq \frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} \end{align}

\begin{align} \frac{\partial^2 u}{\partial t^2} = \frac{\partial}{\partial t} \frac{\partial u}{\partial t}= \frac{u_t(t+\Delta t,x) - u_t(t,x)}{\Delta t} &\simeq \frac{\frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} - \frac{u(t , x) - u(t- \Delta t,x)}{\Delta t}}{\Delta t} \end{align}

最終的に計算する式

\begin{align} u(t + \Delta t, x ) = 2 u(t,x) - u(t - \Delta t, x) + \left(\frac{c \Delta t}{\Delta x}\right)^2 \left(u(t, x + \Delta x) - 2 u(t,x) + u(t, x - \Delta x) \right). \end{align}

  • 次の時刻 $t + \Delta t$ の値を計算するのに現在時刻 $t$ とひとつ前の時刻 $t - \Delta t$ の値を使っている。
  • 最終的には四則演算だけ
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from IPython.display import HTML
from matplotlib import animation
from tqdm import tqdm
import numpy as np
import matplotlib.pyplot as plt

lx = 1  # 計算領域の長さ
nx = 41 # 領域の分割数
xs = np.linspace(0, lx, nx)

def wave(nx):
    dx = lx / (nx - 1) # 空間方向の刻み
    nt = 500           # 計算回数
    dt = 0.01          # 時間刻み
    c = 1              # 波の速度
    f = 2.0            # 強制振動の周波数

    # 初期条件
    u0 = np.zeros(nx)

    # 結果の配列と nt, nx の次元を持つ配列で初期化
    us = np.zeros((nt, len(u0)))

    # 初期条件を結果の配列の各行にコピー
    us[:,:] = u0.copy()

    alpha = (c * dt / dx)**2

    for i in tqdm(range(1, nt-2)):
        t = i * dt
        # 左端を強制振動
        us[i, 0] = np.sin(2 * np.pi * f * t)
        us[i+1, 0] = np.sin(2 * np.pi * f * t)

        # 時間発展
        us[i+1, 1:-1] = 2 * us[i, 1:-1] - us[i-1, 1:-1] \
                        + alpha * (us[i, 2:] - 2 * us[i, 1:-1] + us[i, :-2])
        # 右端の境界値指定
        us[i+1, nx-1] = 0

    return us


#### 解
us = wave(nx)

fig = plt.figure();

#### グラフの軸の設定
ax = plt.axes(xlim=(0, lx), ylim=(-5, 5));
line, = ax.plot([], [], lw=2);

def animate(u):
    line.set_data(xs, u)
    return line

anim = animation.FuncAnimation(fig, animate, frames=us, interval=50)
#anim.save('07-pde_03_wave_ex01.tmp.mp4', writer="ffmpeg")
plt.close(anim._fig)
HTML(anim.to_jshtml(default_mode='reflect'))
1
100%|██████████| 497/497 [00:00<00:00, 34649.84it/s]
1 次元の拡散方程式
  • 真ん中に置いておいた物質が周囲に拡散していく様子を見る
偏微分方程式としての拡散方程式

\begin{align} \frac{\partial u}{\partial t}= \nu \frac{\partial^2 u}{\partial x^2}. \end{align}

最終的に計算する式

\begin{align} u(t+ \Delta t, x) = u(t, x) + \nu \frac{\Delta t}{(\Delta x)^2} (u(t, x + \Delta x) - 2u(t,x) + u(t, x - \Delta x)). \end{align}

  • これも四則演算だけ。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import HTML
from matplotlib import animation

lx = 2  # 計算領域の長さ
nx = 41 # 領域の分割数
xs = np.linspace(0, lx, nx)

def diffusion(nx):
    dx = lx / (nx - 1) # 空間方向の刻み
    dt = 0.001         # 時間刻み
    nt = 200           # 計算回数
    nu = 1.0           # 拡散係数

    # 初期条件:中央以外すべて 0
    u0 = np.zeros(nx)
    # 真ん中に物質を置く
    x_center = int((nx - 1) / 2)
    u0[x_center-2: x_center+2] = 1

    # 結果の配列と nt, nx の次元を持つ配列で初期化
    us = np.zeros((nt, len(u0)))

    # 初期条件を結果の配列の各行にコピー
    us[:,:] = u0.copy()

    for i in range(0, nt-1):
        us[i+1, 1:-1] = us[i, 1:-1] + nu * dt / dx**2 *  (us[i, 2:] - 2 * us[i, 1:-1] + us[i, :-2])

    return us

us = diffusion(nx)

fig = plt.figure();
#グラフの軸の設定
ax = plt.axes(xlim=(0, lx), ylim=(0, 1.2));
line, = ax.plot([], [], lw=2);

def animate(u):
    line.set_data(xs, u)
    return line

anim = animation.FuncAnimation(fig, animate, frames=us, interval=50)
#anim.save('07-pde_04_diffusion_ex01.tmp.mp4', writer="ffmpeg")
plt.close(anim._fig)
HTML(anim.to_jshtml(default_mode='reflect'))
2 次元の波動方程式
  • イメージとしては膜の振動
  • 真ん中を振動させてその波の伝播を見る
偏微分方程式としての波動方程式

\begin{align} u_{tt} = c^2 (u_{xx} + u_{yy}). \end{align}

  • ここで $c$ は定数で物理的には波の速度
  • 1 次元のときとの違いは $u_{yy}$ の追加
  • 物理的には次元に依存する議論もあってそれほど簡単ではない
最終的に計算する式

\begin{align} &u(t + \Delta t, x, y) \ &= 2 u(t,x,y) - u(t - \Delta t, x, y) \ \quad &+ \left(\frac{c \Delta t}{\Delta x}\right)^2 \left(u(t, x + \Delta x,y) - 2 u(t,x,y) + u(t, x - \Delta x,y) \right) \ \quad &+ \left(\frac{c \Delta t}{\Delta y}\right)^2 \left(u(t, x,y + \Delta y) - 2 u(t,x,y) + u(t, x,y - \Delta y) \right) \ \end{align}

  • 右辺の時刻は $t$ と $t - \Delta t$、つまり過去の時刻しか出てこない
  • 過去の時間での情報さえわかれば未来の挙動がわかる
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from IPython.display import HTML
from matplotlib import animation
from mpl_toolkits.mplot3d import Axes3D
from tqdm import tqdm
import numpy as np
import matplotlib.pyplot as plt

lx = 1  # 計算領域の長さ
ly = 1  # 計算領域の長さ
nx = 11 # 領域の分割数
ny = 11 # 領域の分割数
nx_center = int((nx - 1) / 2)
ny_center = int((ny - 1) / 2)
xs = np.linspace(0, lx, nx)
ys = np.linspace(0, ly, ny)

x1d = np.linspace(0, lx, nx)
y1d = np.linspace(0, ly, ny)
xs, ys = np.meshgrid(x1d, y1d)

def wave(nx, ny):
    dx = lx / (nx - 1)
    dy = ly / (ny - 1)
    nt = 300           # 計算回数
    dt = 0.5 * dx * dy # 時間刻み
    c = 1              # 波の速度
    f = 2.0            # 強制振動の周波数

    # 初期条件
    u0 = np.zeros((nx, ny))

    # 結果の配列と nt, nx, ny の次元を持つ配列で初期化
    us = np.zeros((nt, nx, ny))

    # 初期条件を結果の配列の各行にコピー
    us[:,:,:] = u0.copy()

    alpha_x = (c * dt / dx)**2
    alpha_y = (c * dt / dy)**2

    for i in tqdm(range(1, nt-2)):
        t = i * dt
        # 中心を強制振動
        us[i, nx_center, ny_center] = np.sin(2 * np.pi * f * t)
        us[i+1, nx_center, ny_center] = np.sin(2 * np.pi * f * t)

        # 時間発展
        us[i+1, 1:-1, 1:-1] = 2 * us[i, 1:-1, 1:-1] - us[i-1, 1:-1, 1:-1] \
                            + alpha_x * (us[i, 2:, 1:-1] - 2 * us[i, 1:-1, 1:-1] + us[i, :-2, 1:-1]) \
                            + alpha_y * (us[i, 1:-1, 2:] - 2 * us[i, 1:-1, 1:-1] + us[i, 1:-1, :-2])
        # 境界値指定
        us[i+1, 0, :] = 0
        us[i+1, nx-1, :] = 0
        us[i+1, :, 0] = 0
        us[i+1, :, ny-1] = 0

    return us


#### 解
us = wave(nx, ny)

fig = plt.figure();
ax = fig.add_subplot(111, projection='3d')
ax.set_xlim(0, lx)
ax.set_ylim(0, ly)
ax.set_zlim(-2, 2)
ax.set_xlabel('$x$')
ax.set_ylabel('$y$')
ax.set_zlabel('$u$')
surf = ax.plot_surface(xs, ys, us[0], rstride=1, cstride=1, linewidth=0, cmap='jet')

def animate(u):
    return ax.plot_surface(xs, ys, u, rstride=1, cstride=1, linewidth=0, cmap='jet')
    #surf.set_data(u)
    #return surf

anim = animation.FuncAnimation(fig, animate, frames=us, interval=50)
#anim.save('07-pde_06_wave_2dim_ex01.tmp.mp4', writer="ffmpeg")
plt.close(anim._fig)
HTML(anim.to_jshtml(default_mode='loop'))
微分方程式の大雑把なまとめ
  • (いろいろな都合によって)物理では無限に細かいところで方程式を立てている
  • そのままでは計算機に計算させられない
  • 微分係数・導関数を定義によって有限化:差と商にわける。
  • 有限に落とした部分は無限に細かくしていけば元の微分係数・導関数を近似できていると期待する

次回以降

  • 常微分方程式のところをのんびり進める
  • まずは微分方程式で何ができるのかをのんびり
  • 微分方程式で記述できる現象を説明したあと、近似計算の数理を追う
  • プログラムに落とし込む工夫を見る
  • 数値計算プログラムを大雑把に眺める
  • 講座・コンテンツ本体を眺める

質疑応答

  • 今の時点での目標が何かとか
  • こんな感じで進めてほしいとか
  • こんなネタを扱ってほしいとか
要望メモ
  • 小さな課題が欲しい。
  • 成功体験を積もう。
  • 予習の範囲を出す。
  • 式とグラフの対応。いろいろお絵描きしてみる。どうやってプログラムに落とすか確認する。

アンケート

毎回アンケートを取っています. 質問や要望がある場合もこちらにどうぞ.

アンケートは匿名なので気楽にコメントしてください. 直接返事してほしいことがあれば, メールなど適当な手段で連絡してください.

2020-04-26 課題

はじめに

  • コンテンツの案内ページ
  • GitHub へのリンク
  • 少なくとも英語・フランス語・ドイツ語・ウクライナ語・スペイン語では別行立ての式に句読点がついていました. 式に句読点がついている外国語, 特に英語の文献を探してみてください. 英語については arxiv が探しやすいでしょう. ドイツ語についてはアインシュタインの論文, フランス語では Serre の論文あたりが探しやすいだろうと思います.
  • 引き続き TeX でいろいろな式を書いてみましょう. arxiv を彷徨って格好よさそうな式を https://mathpix.com/ で TeX 化してみると楽しいかもしれません.
  • 引き続きプログラムをいろいろいじってみましょう. 例えば次のような方針があります. コンテンツからのコピペで構いません. 適切にコピペして動かすだけでも割と大変なので.
    • (numpy を使って) いろいろな関数のグラフを描いてみましょう.
    • (sympy を使って) いろいろな連立方程式を解いてみましょう.
    • いろいろな微分方程式を解いてみましょう. 実際にコンテンツでも紹介しているように, 分点を自分でも変えていじってみるとのが第一歩です.
  • (難しいのでやらなくても構いません) 近似について考えてみましょう. もとの関数 $f$ がほとんど 0 であるにも関わらず, 導関数が 0 とはかけ離れた関数を考えてみてください.
  • 近似の基準として差の絶対値の最大値, つまり $\max_x |f(x) - g(x)|$ を取ることにします. この量が小さくても, 導関数に対する $\max_x |f'(x) - g'(x)|$ が小さいとは限らない関数を具体例を作ることで示したことにあたります. エネルギーは適当な導関数によって定義されるので, 近似に関する微妙なさじ加減が少し体験できます. (エネルギーは積分が絡むので実はもう少し面倒です.)
  • 数値計算と微分方程式の近似解法についてはシンプレクティック積分法などの話題もあります.

$F(x)=0$ という関数があったとする。 これは導関数の $F'(x)$ も $F'(x)=0$ である。

自分用メモ

  • 遅延型方程式に対するコメント追加
  • 06 の introduction と overview の統合
  • 人口論の説明のブラッシュアップ
  • import に関する実演:めんどいのでローカルの Jupyter で。

解答例:忘れる前にメモしておく

句読点問題
TeX でいろいろな式を書こう

\begin{align} \int_0^\infty x^{2n} e^{-ax^2} \, dx &= \frac{(2n+1)!!}{2^{n+1}} \sqrt{\pi} a^{- n - 1/2}. \end{align}

\begin{align} \langle f, e^{-tH} g \rangle = \int_{\mathbb{R}^d} \mathbb{E}_W^x \left[ \overline{f(B_0)} g(B_t) e^{- \int_0^t V(B_s) ds} \right] dx. \end{align}

$\mathrm{R}$

いろいろなプログラムを書こう
numpy でのグラフ
1
2
3
4
5
6
7
import numpy as np
import math
x = np.linspace(0.01, 2)
print(np.linspace(0.01, 2))
print(np.log(x))

print(np.log(1))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[0.01       0.05061224 0.09122449 0.13183673 0.17244898 0.21306122
 0.25367347 0.29428571 0.33489796 0.3755102  0.41612245 0.45673469
 0.49734694 0.53795918 0.57857143 0.61918367 0.65979592 0.70040816
 0.74102041 0.78163265 0.8222449  0.86285714 0.90346939 0.94408163
 0.98469388 1.02530612 1.06591837 1.10653061 1.14714286 1.1877551
 1.22836735 1.26897959 1.30959184 1.35020408 1.39081633 1.43142857
 1.47204082 1.51265306 1.55326531 1.59387755 1.6344898  1.67510204
 1.71571429 1.75632653 1.79693878 1.83755102 1.87816327 1.91877551
 1.95938776 2.        ]
[-4.60517019 -2.98356174 -2.39443189 -2.02619098 -1.75765386 -1.54617572
 -1.37170739 -1.22320417 -1.09392939 -0.97946963 -0.87677571 -0.7836526
 -0.69846743 -0.61997259 -0.54719327 -0.47935332 -0.41582471 -0.35609202
 -0.29972711 -0.2463704  -0.195717   -0.14750614 -0.10151305 -0.05754264
 -0.01542447  0.02499122  0.06383674  0.10122955  0.13727438  0.17206506
  0.20568593  0.23821311  0.26971551  0.30025575  0.32989086  0.35867295
  0.38664975  0.4138651   0.44035936  0.46616976  0.4913307   0.51587408
  0.53982949  0.56322443  0.58608454  0.60843372  0.63029431  0.65168723
  0.67263205  0.69314718]
0.0
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.01, 2)  # x を 0 にできない
y = np.log(x)  # 自然対数

plt.plot(x, y)

plt.xlabel("x", size=20)
plt.ylabel("y", size=14)
plt.grid()

plt.show()
1
2
3
4
5
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2)  # 0 を含めるとエラー
y = np.log(x)  # 自然対数
1
2
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:5: RuntimeWarning: divide by zero encountered in log
  """
sympy での連立方程式

実際に解があるか目で見て確かめる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, 100)  # x を 0 にできない
y1 = x**2 - 1
y2 = x
plt.plot(x, y1, label="x^2 - 1")
plt.plot(x, y2, label="x")
plt.legend()
plt.show()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from sympy import *
#from sympy.plotting import plot
from IPython.display import display

def custom_latex_printer(expr, **options):
    from IPython.display import Math, HTML
    from google.colab.output._publish import javascript
    url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_CHTML"
    javascript(content="""window.MathJax = {
        tex2jax: {
            inlineMath: [ ['$','$'] ],
            processEscapes: true
        }
        };""")
    javascript(url=url)
    return latex(expr, **options)

init_printing(use_latex="mathjax", latex_printer=custom_latex_printer)

x = Symbol('x')
expr1 = x**2 - 1
expr2 = x
sol = solve(expr1 - expr2, x) # 「引き算 = 0」にすれば連立方程式を解いたことになる
display(sol)
1
<IPython.core.display.Javascript object>

$$\left [ \frac{1}{2} + \frac{\sqrt{5}}{2}, \quad - \frac{\sqrt{5}}{2} + \frac{1}{2}\right ]$$

微分方程式
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import HTML
from matplotlib import animation

lx = 2  # 計算領域の長さ
nx = 41 # 領域の分割数
xs = np.linspace(0, lx, nx)

def diffusion(nx):
    dx = lx / (nx - 1) # 空間方向の刻み
    dt = 0.001         # 時間刻み
    nt = 200           # 計算回数
    nu = 1.0           # 拡散係数

    # 初期条件:中央以外すべて 0
    u0 = np.zeros(nx)
    # 真ん中に物質を置く
    x_center = int((nx - 1) / 2)
    u0[x_center-2: x_center+2] = 1

    # 結果の配列と nt, nx の次元を持つ配列で初期化
    us = np.zeros((nt, len(u0)))

    # 初期条件を結果の配列の各行にコピー
    us[:,:] = u0.copy()

    for i in range(0, nt-1):
        us[i+1, 1:-1] = us[i, 1:-1] + nu * dt / dx**2 *  (us[i, 2:] - 2 * us[i, 1:-1] + us[i, :-2])

    return us

us = diffusion(nx)

fig = plt.figure()

ax = plt.axes(xlim=(0, lx), ylim=(0, 1.2));
line, = ax.plot([], [], lw=2)

def animate(u):
    line.set_data(xs, u)
    return line

anim = animation.FuncAnimation(fig, animate, frames=us, interval=50)
plt.close(anim._fig)
HTML(anim.to_jshtml(default_mode='reflect'))
関数の近似

十分大きな $n$ に対する次の関数があります。 \begin{align} f(x) &= \frac{1}{n} \sin (e^n x), \ f'(x) &= \frac{e^n}{n} \cos (e^n x). \end{align} グラフを描いてみましょう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import numpy as np
import matplotlib.pyplot as plt

n = 10
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(np.exp(n) * x) / n
y2 = np.exp(n) * np.cos(np.exp(n) * x) / n
plt.plot(x, y1, label="$f$")
plt.plot(x, y2, label="$df/dx$")
plt.legend()
plt.show()
コメント

これは次のように思ってください。

  • 関数 $f_n$ は元の関数 $f_0 = 0$ を(最大値ノルムで)よく近似できている。
  • 関数 $f'_n$ は元の関数の導関数 $f'_0 = 0$ をよく近似できていない.

関数の近似はいろいろ難しいところがあって, それだけで論文になるレベルです. 同じ事情はベクトルの近似にもあります. いま流行りの統計学の応用としての自然言語処理でも, 言語の近さを量的にどう判定するかという問題があり, これはまさに言葉をどうベクトルで表現するか, 表したベクトルの近さを何でどう判定するかが問われています. 例えば, よくある「変換候補」遊びは, ある単語を打ち込んだとき, その人の入力の癖という観点から次にどのような語が来るか (どのような語が近いか) を統計的に判定する自然言語処理の事情が絡んでいます. このあたり, 既に「身近」なテーマで, そして身近なことは本当に難しいのでちょっと考えた程度でわかるような話ではありません. 何せ十分な精度で使いやすくかつ役に立ってもらわないといけないので.

2020-05-03 課題

  • コンテンツの案内ページ
  • GitHub へのリンク
  • matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
    • 線の色を変えてみる。
    • 点にマーカーをつける。
    • 公式のサンプルやチュートリアルを試してみる。
  • 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。
  • 引き続きプログラムをいろいろいじってみましょう. 例えば次のような方針があります. コンテンツからのコピペで構いません. 適切にコピペして動かすだけでも割と大変なので.
    • (numpy を使って) いろいろな関数のグラフを描いてみましょう.
    • (sympy を使って) いろいろな連立方程式を解いてみましょう. グラフを描くのもおすすめです.
    • いろいろな微分方程式を解いてみましょう. 実際にコンテンツでも紹介しているように, 分点を自分でも変えていじってみるとのが第一歩です.

自分用メモ

  • 遅延型方程式に対するコメント追加
  • import に関する実演
  • Jupyter (IPython)でのはまりどころ解説を作ろう
    • いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
    • 「セルを上から順に読み込まないと動かない」問題の原因
    • カーネル再起動まで変数は残り続ける

解答例

プログラムのコピペの功罪
  • プログラムをコピペしているだけだと自力で組み上げる力がつかない
  • 私の作るコンテンツは基本的に「世のいろいろなコンテンツのギャップを埋める」ことを目的にする
    • 大きな展望を見えるようにする
    • 中規模の目標を作る
  • 初学の段階で小さいプログラムしか書けないのもつまらない
  • 世にある「まとも」なプログラム(numpy などのライブラリ)は規模が大きいので読む・勉強するのが大変
  • どのくらいの規模のプログラムでどのくらいのモノが作れるのかを見たい
  • コピペであってもプログラムが動けばそれだけで面白い(こともある)
  • ある程度先まで見通せないと面白さも見えず、やる気が続かない
  • 程々の規模のプログラムをコピペして動かしてみて様子を掴もう
matplotlib
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import numpy as np
import matplotlib.pyplot as plt

def koch_snowflake(order, scale=10):
    """
    Return two lists x, y of point coordinates of the Koch snowflake.

    Arguments
    ---------
    order : int
        The recursion depth.
    scale : float
        The extent of the snowflake (edge length of the base triangle).
    """
    def _koch_snowflake_complex(order):
        if order == 0:
            # initial triangle
            angles = np.array([0, 120, 240]) + 90
            return scale / np.sqrt(3) * np.exp(np.deg2rad(angles) * 1j)
        else:
            ZR = 0.5 - 0.5j * np.sqrt(3) / 3

            p1 = _koch_snowflake_complex(order - 1)  # start points
            p2 = np.roll(p1, shift=-1)  # end points
            dp = p2 - p1  # connection vectors

            new_points = np.empty(len(p1) * 4, dtype=np.complex128)
            new_points[::4] = p1
            new_points[1::4] = p1 + dp / 3
            new_points[2::4] = p1 + dp * ZR
            new_points[3::4] = p1 + dp / 3 * 2
            return new_points

    points = _koch_snowflake_complex(order)
    x, y = points.real, points.imag
    return x, y

x, y = koch_snowflake(order=5)

plt.figure(figsize=(8, 8))
plt.axis('equal')
plt.fill(x, y)
plt.show()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')


theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)

ax.plot(x, y, z, label='parametric curve')
ax.legend()

plt.show()
TeX でいろいろな式を書こう
Poisson 積分

\begin{align} u\left(z_{0}\right) &= \frac{1}{2 \pi} \int_{0}^{2 \pi} u\left(e^{i \psi}\right) \frac{1-\left|z_{0}\right|^{2}}{| z_{0}-e^{\left.j \phi\right|^{2}}} d \psi, \ u(x, y) &= \frac{1}{2 \pi} \int_{0}^{2 \pi} u(a \cos \phi, a \sin \phi) \frac{a^{2}-R^{2}}{a^{2}+R^{2}-2 a R \cos (\theta-\phi)} d \phi, \ u(x, y, z)&=\frac{1}{4 \pi a} \int_{S} u \frac{a^{2}-R^{2}}{\left(a^{2}+R^{2}-2 a R \cos \theta\right)^{3 / 2}} d S. \end{align}

いろいろなプログラムを書こう
numpy でのグラフ
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi / 4, np.pi / 4)
plt.plot(x, np.sin(4 * x), label="sin 4x")
plt.plot(x, np.cos(4 * x), label="cos 4x")
plt.plot(x, np.tan(x), label="tan x")

plt.xlabel("x", size=20)
plt.ylabel("y", size=14)
plt.grid()
plt.legend()

plt.show()
sympy
  • Colab 上でもローカルの Jupyter でも動くようにしたい。
  • $n=-1$ の場合分けも勝手にやってくれてすごい。
1
2
3
4
from IPython.display import Math, HTML
def load_mathjax_in_cell_output():
    display(HTML("<script src='https://www.gstatic.com/external_hosted/mathjax/latest/MathJax.js?config=default'></script>"))
get_ipython().events.register('pre_run_cell', load_mathjax_in_cell_output)
1
2
3
4
5
x,n = symbols('x,n')

int = Integral(x**n, (x, 0, x))
print("積分それ自体を表示できる")
display(int)
1
2
3
4
5
積分それ自体を表示できる



<IPython.core.display.Javascript object>

$$\int_{0}^{x} x^{n}\, dx$$

1
2
print("単純な計算結果:場合分けまでしてくれるし、0 での無限大もそう書いてくれる")
display(int.doit())
1
2
3
4
5
単純な計算結果:場合分けまでしてくれるし、0 での無限大もそう書いてくれる



<IPython.core.display.Javascript object>

$$\begin{cases} \log{\left (x \right )} + \infty & \text{for}\: n = -1 \- \frac{0^{n + 1}}{n + 1} + \frac{x^{n + 1}}{n + 1} & \text{otherwise} \end{cases}$$

1
2
print("simplify() で 0 を消せる")
display(simplify(int.doit()))
1
2
3
4
5
simplify()  0 を消せる



<IPython.core.display.Javascript object>

$$\begin{cases} \log{\left (x \right )} + \infty & \text{for}\: n = -1 \\frac{x^{n + 1}}{n + 1} & \text{otherwise} \end{cases}$$

1
2
3
4
from IPython.display import Math, HTML
def load_mathjax_in_cell_output():
    display(HTML("<script src='https://www.gstatic.com/external_hosted/mathjax/latest/MathJax.js?config=default'></script>"))
get_ipython().events.register('pre_run_cell', load_mathjax_in_cell_output)
微分方程式
  • フィッツヒュー・南雲方程式
    • ホジキン-ハクスレー理論で出てきたモデルの簡略化
    • ヤリイカの巨大神経細胞軸索を用いた研究をもとに定式化した神経興奮に関する基礎理論 (Journal of Physiology 117(1952)500-ほか)
    • この業績で 1963 年にノーベル賞(生理学医学賞)を受賞

\begin{align} y_{t}&=c\left(y-\frac{y^{3}}{3}-x+I(t)\right),\x_{t}&=y-bx+a. \end{align}

  • $I$ は時間の関数で構わないが、以下のシミュレーションでは定数にしている。
    • $I$ が 0.34 以上かどうかで解のふるまいが定性的に変わる。
    • 力学系の話。
  • Colab 上で動画を表示させるところまでできなかったので作った動画は YouTube で:Rust 版動画
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from IPython.display import HTML
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy.integrate as integrate

I = 0.34 #external stimulus
a = 0.7
b = 0.8
c = 10

def FHN(state, t):
    """
    FitzHugh-Nagumo Equations
    u : the membrane potential
    v : a recovery variable
    """
    u, v = state
    dot_u = c * (-v + u - pow(u,3)/3 + I)
    dot_v = u - b * v + a
    return dot_u, dot_v

#initial state
u0 = 2.0
v0 = 1.0

fig = plt.figure()
t = np.arange(0.0, 10, 0.01)
len_t = len(t)
dt = 5 #time steps

#animationの1step
def update(i):
    global y, y0

    #y0の初期値の設定
    if i ==0:
        y0 = [u0, v0]

    plt.cla() #現在描写されているグラフを消去

    #微分方程式を解く
    y = integrate.odeint(FHN, y0, t)

    #1Step(=dt)後のyの値を次のステップでのy0の値に更新する
    y0 = (y[dt,0], y[dt,1])

    #配列としてu,vを取得
    u = y[:,0]
    v = y[:,1]

    #描画
    plt.plot(t, u, label="u : membrane potential", color="#ff7f0e")
    plt.plot(t, v, label="v : recovery variable", color="#1f77b4")
    plt.plot(t[len_t-1], u[len_t-1],'o--', color="#ff7f0e") #uのmarker
    plt.plot(t[len_t-1], v[len_t-1],'o--', color="#1f77b4") #vのmarker
    plt.title("Membrane Potential / Volt")
    plt.grid()
    plt.legend(bbox_to_anchor=(0, 1),
               loc='upper left',
               borderaxespad=0)

    return (u, v)

anim = animation.FuncAnimation(fig, update, interval=100,
                              frames=300)
plt.close(anim._fig)
HTML(anim.to_jshtml(default_mode='reflect'))

質問メモ

  • numpy:モジュール名と関数名を「.」でつなぐ np.array() 関数
  • クラスとオブジェクトの話。

シューティングゲーム - 敵の弾(概念):クラス:弾がどこにあるか x,y - 具体的に画面に現れる弾: x=1, y=1

1
2
3
import numpy as np
print(type(np.array))
#print(type(np.array()))
1
<class 'builtin_function_or_method'>
1
2
from numpy import *
print(type(array))
1
<class 'builtin_function_or_method'>
1
2
a = [1,2]
print(len(a))

2020-05-10 課題

  • コンテンツの案内ページ
  • GitHub へのリンク
  • 曲線を線分で近似できる気分を自分なりに説明してみてください。
    • 手書きで絵を描くだけでも構いません。
    • 一定のルールにしたがって描かれた曲線を適当な近似的ルールで描くのがプログラミングで描く曲線です。
  • 「自分でお絵かきできるようになろう」講座なので、お絵描き用ライブラリに慣れ親しむのが大事です。そこで matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
    • 線の色を変えてみる。
    • 点にマーカーをつける。
    • 公式のサンプルやチュートリアルを試してみる。
    • 公式サンプル
    • これも公式:サンプルコードもある。
  • 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。
  • 引き続きプログラムをいろいろいじってみましょう. 例えば次のような方針があります. コンテンツからのコピペで構いません. 適切にコピペして動かすだけでも割と大変なので.
    • (numpy を使って) いろいろな関数のグラフを描いてみましょう.
    • (sympy を使って) いろいろな連立方程式を解いてみましょう. グラフを描くのもおすすめです.
    • いろいろな微分方程式を解いてみましょう. 実際にコンテンツでも紹介しているように, 分点を自分でも変えていじってみるとのが第一歩です.

自分用メモ

  • 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
  • 数値計算に関わるクラス・オブジェクトの説明
    • まずは辞書・構造体の拡大版として導入するか?
    • 変な誤解を生まないような書き方を考える
  • 遅延型方程式に対するコメント追加
  • import に関する実演
  • matplotlib 回では実際に matplotlib のチュートリアルを読もう
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
  • Jupyter (IPython)でのはまりどころ解説を作ろう
    • いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
    • 「セルを上から順に読み込まないと動かない」問題の原因
    • カーネル再起動まで変数は残り続ける

オブジェクトについて

今日は具体的なプログラムというより、今日のメインの話とも少し関係する形でオブジェクトについて少し眺める機会にする。

  • オブジェクト指向のオブジェクトの話ではない。
  • 必ずしもいつもかっちりした定義のもとに議論されているわけでもない。
  • 各プログラミング言語ごとの用語の事情もある。
# 第一級のオブジェクト

第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。

問題になる例:言語によっては関数が第一級のオブジェクトになる。(最近の言語は割とこの傾向があるように思う。) 関数が第一級のオブジェクトの言語では「関数の関数」みたいな概念が考えられる。 高階関数と呼ばれる。

「関数の関数」として python の map を紹介しておく。

python #リスト `lst1` の要素を二倍する lst1 = [1, 2, 3, 4] lst2 = [] for a in lst1: lst2.append(a*2) print(lst2)

1
  [2, 4, 6, 8]

```python #次のように map で書ける def prod2(a): return a*2

lst1 = [1, 2, 3, 4] lst2 = list(map(prod2, lst1)) #map はイテレーターを返すので list() でリスト化する print(lst2) ```

1
  [2, 4, 6, 8]

python #参考:ラムダ式 lst1 = [1,2,3,4] lst2 = list(map(lambda x: x*2, lst1)) print(lst2)

1
  [2, 4, 6, 8]

python #参考:リスト内法表記 lst1 = [1,2,3,4] lst2 = [a*2 for a in lst1] print(lst2)

1
  [2, 4, 6, 8]

```python lst1 = [1,2,3,4] lst2 = []

lst3 = [1,2,3,4] for a in lst3: lst2.append(a*2) print(lst2) ```

1
  [2, 4, 6, 8]

```python lst1 = [1,2,3,4] lst2 = []

lst3 = [1,2,3,4]

for a in lst3: lst2.append(a*2) print("") print("")

print(lst2) ```

1
2
3
4
    File "<ipython-input-9-2e52d339fe66>", line 6
      lst2.append(a*2)
         ^
  IndentationError: expected an indented block
なぜ(Python で)map の返り値がイテレーターか
  • 巨大なリストを処理する場合、リストが返るとメモリを大量に消費するから。
  • この手の話をきちんと考えるにはコンピューターアーキテクチャなり、データ構造なり、プログラミング言語に関する諸々の知識がいる(のでその辺のプログラミング言語入門みたいな本ではふつう出てこない)。
  • この手の「入門」は大学の情報科学系の入門書にはきちんと書いてある。
オブジェクトとインスタンス
# オブジェクト

だいたい次のような性質を持っています。 - 何らかの型がある。 - 変数に代入できる。 - 関数(メソッド)の引数にできる。 - 関数(メソッド)の戻り値にできる。 - それ自体が式であり、任意の式の一部になる。

# インスタンス

これはオブジェクト指向だけの概念です。クラス(プロトタイプベースの場合はプロトタイプとなるオブジェクトになりますが、以下クラスとまとめて考えます)はオブジェクトの雛形です。その雛形から実際のデータをもつオブジェクトにすることを実体化(インスタンス化)と言い、そのオブジェクトはそのクラスのインスタンスと言われます。

python import matplotlib.pyplot as plt fig = plt.figure() #a = A.new()

関数とメソッド

言語によっていろいろありはする。

  • サブルーチン
    • 関数、手続き
    • 何らかの処理をまとめたモノ
    • 数学の関数とは必ずしも関係ない
  • メソッド:メソッド (method) あるいは メンバー関数 (-かんすう, member function) とはオブジェクト指向プログラミング言語において、あるクラスないしインスタンスに所属するサブルーチンを指す。

第一級関数(だいいっきゅうかんすう、英: first-class function、ファーストクラスファンクション)とは、関数を第一級オブジェクトとして扱うことのできるプログラミング言語の性質、またはそのような関数のことである。

```python #値を返す「関数」 def f(): return 1

#値を返さない「関数」 def g(): print(1) g() ```

1
  1

```python class TestClass: x = "変数1"

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  def __init__(self, y):
      self.y = y

  def test_method1(self):
      print(self.x)

  def test_method2(self, arg1):
      print("引数1:" + arg1)

  def gety(self):
      return self.y

a = TestClass("y") print(a.gety())

b = TestClass("b") print(b.gety())

a.test_method1() b.test_method1() ```

1
2
3
4
  y
  b
  変数1
  変数1

解答例

matplotlib
TeX でいろいろな式を書こう

python def f(): return {"a": "a"} print(f().keys())

1
  dict_keys(['a'])
いろいろなプログラムを書こう
numpy でのグラフ
sympy

python #colab の場合 from IPython.display import Math, HTML def load_mathjax_in_cell_output(): display(HTML("<script src='https://www.gstatic.com/external_hosted/mathjax/latest/MathJax.js?config=default'></script>")) get_ipython().events.register('pre_run_cell', load_mathjax_in_cell_output)

微分方程式

2020-05-17 課題

はじめに

  • コンテンツの案内ページ
  • GitHub へのリンク
  • 前回使った ipynb のプログラムを実際に実行してみて、実数の数値計算上で起こる問題を実感してみてください。
  • 「自分でお絵かきできるようになろう」講座なので、お絵描き用ライブラリに慣れ親しむのが大事です。そこで matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
    • 線の色を変えてみる。
    • 点にマーカーをつける。
    • 公式のサンプルやチュートリアルを試してみる。
    • 公式サンプル
    • これも公式:サンプルコードもある。
  • 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。

自分用メモ

  • 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 数値計算に関わるクラス・オブジェクトの説明
    • まずは辞書・構造体の拡大版として導入するか?
    • 変な誤解を生まないような書き方を考える
  • 遅延型方程式に対するコメント追加
  • import に関する実演
  • matplotlib のチュートリアルを読もうの会
  • matplotlib 回では実際に matplotlib のチュートリアルを読もう
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
  • Jupyter (IPython)でのはまりどころ解説を作ろう
    • いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
    • 「セルを上から順に読み込まないと動かない」問題の原因
    • カーネル再起動まで変数は残り続ける

プログラミングの一般論

イテレーターとジェネレーター
  • 参考
  • この間イテレーターとジェネレーターを勘違いして話してしまったのでやり直し
基本
  • イテレータ: 要素を反復して取り出すことのできるインタフェース
    • 例:リスト、配列、タプル、辞書など
    • 「要素をたくさん持っているデータ構造」
  • ジェネレータ: イテレータの一種であり、1要素を取り出そうとする度に処理を行い、要素を生成する。Pythonではyield文を使った実装を指すことが多い
  • ジェネレーターが必要になる理由
    • とりあえずリストを想定する
    • 要素すべてをあらかじめ計算しておく/取得してくるのが大変
      • 例:何十GBもある巨大なイテレータはメモリにのせられない
    • HDD・SSD に載せるのも大変(速度なり何なりいろいろ)
    • ふつう 1 つ 1 つの要素自体は小さい
    • 要素を 1 つ 1 つ生成すればメモリをそんなに食わない
    • 1 つ 1 つ作ろう
1 つ 1 つ作る?
  • range がイメージしやすそうな気がする
  • 一度にドカッとリストを作る必要はなく、1 つ 1 つの整数を都度作ってくればいい
1
2
3
4
xs = range(0, 10)
print(type(xs))
for x in xs:
    print(x)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<class 'range'>
0
1
2
3
4
5
6
7
8
9
  • イテレータ(リスト)の要素数が $10^{1000000}$ くらいになるとそもそもリストが作れない
  • 一気に作らずに 1 つずつ要素を生成すれば問題なく処理は回る
    • $10^{1000000}$ 個の要素を処理しないといけない点で時間自体はどうしてもかかる
    • これは本質的な問題で、ジェネレーターを使う・使わないに関係ない
    • メモリに載るか載らないかではなく処理の所要時間の問題
Python のジェネレーターの簡単な例
  • yield を使ってみる
1
2
3
4
5
6
7
def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()
print(type(gen))
1
<class 'generator'>
1
2
3
4
5
6
7
8
9
def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()
print(gen.__next__())  # 1
print(gen.__next__())  # 2
print(gen.__next__())  # 3
1
2
3
1
2
3
  • 4 回呼ぶと怒られる
  • for で呼び出すと怒られるところでループを止めてくれる
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
"""4 回呼ぶと怒られる"""
def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()
gen.__next__()  # 1
gen.__next__()  # 2
gen.__next__()  # 3
gen.__next__()  # StopIteration
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
---------------------------------------------------------------------------

StopIteration                             Traceback (most recent call last)

<ipython-input-1-f379ec6e011a> in <module>()
      8 gen.__next__()  # 2
      9 gen.__next__()  # 3
---> 10 gen.__next__()  # StopIteration


StopIteration:
1
2
3
4
5
6
7
8
def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()
for a in gen:
    print(a)
1
2
3
1
2
3
クラス
  • 念頭に置くのは Python のクラス・オブジェクト(オブジェクト指向の意味のオブジェクト)
  • データとそれを処理する「関数」のペア
  • まずは「辞書」または「リスト」の拡張だと思おう
  • ある学生 s のテストの点に関していろいろ統計的な処理をしたい
  • 学生 s のテストの点を次のようにリストで持つ
    • 国語・数学・英・理科・社会の順に点数を並べるとする
    • 平均点を計算したい
1
2
3
4
5
s_scores = [10, 20, 30, 40, 50] # 国語・数学・英・理科・社会の順
def calc_mean(s_scores):
    return sum(s_scores) / len(s_scores)
s_mean = calc_mean(s_scores)
print(s_mean)
1
30.0
  • リストだと何も情報がなくて、何番目が何の科目だったか覚えていられない
  • コメントもあるが、何かの都合で仕様が変わったりしたらどうする?
  • 具体的に名前で持たせればいい:辞書を使おう
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
s_scores = {
    "ja": 10,
    "math": 20,
    "eng": 30,
    "science": 40,
    "society": 50
}

def calc_mean(s_scores):
    s_sum = sum([v for v in s_scores.values()])
    return s_sum / len(s_scores)

s_mean = calc_mean(s_scores)
print(s_mean)
1
30.0
  • 関数 calc_mean は(本質的には)成績の持たせ方と連動した関数である
  • 値と処理をバラバラにしないでワンセットにしたい:クラス化
    • いまは単なる平均だからご利益が何も感じられない
    • もっと複雑なことを考えると「ワンセット」にご利益が出てくる
    • それこそ「辞書のクラス・メソッド」などを考えてみよう
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class Score():
    def __init__(self, ja, math, eng, sci, soc):
        self.ja = ja
        self.math = math
        self.eng = eng
        self.sci = sci
        self.soc = soc

    def calc_mean(self):
        return (self.ja + self.math + self.eng + self.sci + self.soc) / 5

s = Score(10, 20, 30, 40, 50)
print(s.calc_mean())
1
30.0
  • ほかの生徒の成績も考えたいとき、簡単に各生徒用のオブジェクトが作れる
    • オブジェクトは s1s2
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
class Score():
    def __init__(self, ja, math, eng, sci, soc):
        self.ja = ja
        self.math = math
        self.eng = eng
        self.sci = sci
        self.soc = soc

    def calc_mean(self):
        return (self.ja + self.math + self.eng + self.sci + self.soc) / 5

s1 = Score(10, 20, 30, 40, 50)
print(s1.calc_mean())

s2 = Score(1, 2, 3, 4, 5)
print(s2.calc_mean())
1
2
30.0
3.0

アルゴリズムとデータ構造

アルゴリズムとデータ構造でプログラミングを勉強する
  • https://atcoder.jp/?lang=ja
    • プログラミングのコンテストサイト
    • 競技プログラミング
  • C++ の勉強も兼ねた勉強用ページ https://atcoder.jp/contests/APG4b
  • 初心者向け練習問題 https://atcoder.jp/contests/abs
    • 探せば他にも練習問題特集はある
いいところ
  • 簡単な問題なら 10 行もあれば書ききれる
  • 自分で何か作ったりしなくても問題演習という形でプログラミングに触れられる
  • 基本的には実際のプログラミングに即役立つタイプの問題
  • ランキング上位者は本当にプログラミングで食っていけるレベルの腕でもある
  • 良くも悪くも、コンピューターの基礎みたいな部分に触れざるを得ない面がある
    • リストと配列は何が違うのか?
    • どういうときにどちらを使えばいいのか?
    • メモリ上のデータの配置が違う
    • 「低レイヤー」の話とも向き合う必要が出る可能性
自分に合った勉強法・勉強内容を探そう
  • 最終的な目的・目標と勉強に対する最善のアプローチが一致するとは限らない
  • 私の場合は物理・数学系だと勉強しやすかったが、皆が皆そうというわけでもない
  • 課題を競プロから出してみて様子を見るか?

2020-05-31 課題

はじめに

  • コンテンツの案内ページ
  • GitHub へのリンク
  • 01-01 ipynb のプログラムを実際に実行してみて、実数の数値計算上で起こる問題を実感してみてください。
  • 「自分でお絵かきできるようになろう」講座なので、お絵描き用ライブラリに慣れ親しむのが大事です。そこで matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
    • 線の色を変えてみる。
    • 点にマーカーをつける。
    • 公式のサンプルやチュートリアルを試してみる。
    • 公式サンプル
    • これも公式:サンプルコードもある。
  • 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。
  • 実際に競プロの問題をいくつか解いてみましょう。例えばここのページを一通り眺めてみてください。Pythonで10問解いてみた記事もあるので参考にしてください。

自分用メモ

  • 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 文と式の説明
  • IT 基礎知識みたいなやつ
  • 数値計算に関わるクラス・オブジェクトの説明
    • まずは辞書・構造体の拡大版として導入するか?
    • 変な誤解を生まないような書き方を考える
  • 遅延型方程式に対するコメント追加
  • import に関する実演
  • matplotlib のチュートリアルを読もうの会
  • matplotlib 回では実際に matplotlib のチュートリアルを読もう
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
  • Jupyter (IPython)でのはまりどころ解説を作ろう
    • いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
    • 「セルを上から順に読み込まないと動かない」問題の原因
    • カーネル再起動まで変数は残り続ける

競プロを 2 題解いてみる

  • https://qiita.com/KoyanagiHitoshi/items/c5e82841b8d0f750851d の最初の2題
ABC 086 A - Product
  • 標準入力から取るのが本筋(input
  • 面倒なのでここでは入力部分をハードコードする

```python input_str = "1 3"

print("input_str") print(input_str)

print("======") print(input_str.split())

print("======") print(map(int, input_str.split()))

print("======") print(list(map(int, input_str.split())))

a, b = map(int, input_str.split()) print(a) print(b)

######################## a, b = map(int, input_str.split()) if a*b % 2 == 0: print("Even") else: print("Odd") ```

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  input_str
  1 3
  ======
  ['1', '3']
  ======
  <map object at 0x7f537ad30c88>
  ======
  [1, 3]
  1
  3
  Odd

python s = "1" print(s) print(type(s)) print(int(s)) print(type(int(s)))

1
2
3
4
  1
  <class 'str'>
  1
  <class 'int'>
map オブジェクトはイテレーター

python input_str = "1 3" a = map(int, input_str.split()) print(a.__next__()) print(a.__next__()) print(a.__next__())

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
  1
  3



  ---------------------------------------------------------------------------

  StopIteration                             Traceback (most recent call last)

  <ipython-input-3-c797e216c7f4> in <module>()
        3 print(a.__next__())
        4 print(a.__next__())
  ----> 5 print(a.__next__())


  StopIteration:
参考:標準入力
  • 果てしなくめんどい
    • 低レイヤーの話に突撃する:コンソール・ターミナル、リダイレクトなどなど
    • 「特殊 ( スペシャル ) ファイル」
    • 「ソケット」
      • http://e-words.jp/w/%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88.html
      • 特定の通信相手(IPネットワーク上の場合はIPアドレスとポートの組み合わせ)と紐付いた通信端点をプログラム上に生成し、これを通じてコネクションの確立やデータの送受信、切断などの処理を行う。具体的な通信方式や通信相手の指定方式が複数用意されており、同じコンピュータ上の他のプロセスとも、TCP/IPなどを利用して他のコンピュータ上のプログラムとも通信できる。
  • 標準入力について参考ページ
  • 低レイヤーとは何か
    • 参考
    • 「低レイヤーとは 「生の」コンピュータに近いことを意味します。」
    • OS やら CPU やらメモリやら何やら
    • 「ハードウェアに近い話」みたいにも言えるかもしれない
    • 簡単とか世間的な意味での「低レベル」とは関係ない
    • 参考:「高レイヤー」は Web アプリなど
  • この辺は基本情報技術者試験などで「基礎知識」として問われたりする
第二問 ABC 081 A - Placing Marbles
  • 文字列は文字からなるリスト(配列)とみなす
  • count() の説明は例えばここ
    • 解説が何を言っているかよくわからないこともよくある
    • サンプルをいくつか動かす方が早いこともよくある
    • 数学でもよくある:一般論・抽象論ばかりではなく例をいじろう

python input_str = "101" print(input_str.count("1"))

1
  2

python input_str = "abcabcab" print(input_str.count("a"))

1
  3

python input_str = "abcabcab" print(input_str.count("abc"))

1
  2

プログラミングの一般論

インポートまわりの話
  • 「お行儀」の問題もいろいろある。
    • コーディングルールとして言及されることはよくある。
  • たくさん読み書きしてはじめてわかることもある。
    • ある程度の量はこなさないと見えない世界がある
初心者にありがちな話:モジュールの内容を全部インポートする
  • 「いちいち必要なのだけ選ぶのはめんどい」
  • 「楽でいいじゃない」

python from sympy import * from numpy import * x,y,z = symbols("x,y,z")

問題点
  • 知らないモジュールのインポートがたくさんあると、どのクラス・関数がどのモジュールから来ているのかわからない
  • 似た名前の関数やクラスなどもたくさんある
  • 他人も読むコードではやめてほしい
  • 将来、詳細を忘れた自分が読むのも厳しい
  • 「わけがわからないので、使うクラスや関数だけインポートしてほしい」
    • 例:使うものだけインポート
      • https://github.com/django/django/blob/master/django/middleware/cache.py#L48-L50
  • 「使うクラス・メソッドだけインポートするか、as で呼ぶかする」といった規約をつけていることもよくある
    • sympy, numpy あたりはお行儀がよくて、必要なモノだけインポートするよう徹底されている模様

python import numpy as np import matplotlib.pyplot as plt

いろいろなインポートの指定
  • 状況に合わせて都合がいいからそうする
  • 状況に合わせた方法もいろいろ準備されている
    • 必要だったから体系化されて盛り込まれている

python from fractions import Fraction q = Fraction(3,4) print(q)

1
  3/4

python import fractions r = fractions.Fraction(3,4) print(r)

1
  3/4
  • 内容は同じだが後者は長い
    • 書くのが面倒
    • 読むときも余計なものまで読まされる
    • シンプルにしたい
  • ケースバイケースでいろいろやる
    • クラスだけ直接インポート:from fractions import Fraction
    • as で短くする:import fractions as f

python import fractions as f a = f.Fraction(3,4) print(a)

1
  3/4

python from numpy import * linspace(0, 10, 11)

1
  array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

python import numpy numpy.linspace(0, 10, 11)

1
  array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
全体像をつかもう
  • ある程度大きな姿を捕まえないと局所的に何をやっているかもわからないことはよくある
    • 料理でも下ごしらえとか
      • 「やらなくてもいいが、やらないと美味しくない」
    • フグの調理で毒を避けて処理する
      • 「死にたいならやればいい」
  • 知識や見えている範囲が狭い中で考えて判断しようとしても無駄なことはよくある
  • 意味がわかるかはさておき、ある程度たくさん知っておかないといけないことはよくある
    • 単純な知識問題もよくある
      • はまることや立ち止まることに意味がない
    • 何かを調べたいとき、対応する言葉を知らないと調べようがなければ聞きようもない
  • 本を読んでいるなら、とにかく四の五の言わずに 2-3 週読んでみるとかした方がいいこともよくある
  • プログラミングはちょっと突っ込むだけでいきなりコンピューター関係の基礎知識を大量に要求されるので、さっさと諦めてそれらを勉強する
    • 基礎からやったところですぐにわかるようになるわけもないが、それらを諦めるところまで込めて諦める
膨大な量の経験が大事
  • 経験を積むと「こうした方がいい」「これはやめてほしい」というのがいろいろたまってくる
  • コーディングルールとしてノウハウがまとまっていたりする
  • 数学でもε-δで「なぜこんなεを取るのか」みたいな話はよくあるし、「何でこんな概念を導入するのか」みたいな話はよくある。
    • 「便利だから」とか言われてもその便利なところを実感できるのはだいぶ慣れ親しんでから。
    • この苦労を経ないとその辺の意味やご利益もわからないことはよくある
    • プログラミングでも同じ
    • ある程度は量をこなそう
楽しく量をこなすには?
  • 楽しいと思えることを探すしかない
  • 何が楽しいかは自分しかわからない
  • はじめつまらなくてもやっているうちに楽しくなることもあれば、何かのきっかけで目覚めることもある
  • いい方向が見つかるまでは試行錯誤するしかない
  • この中で自然と頭を使いつつ(質を高めつつ)量もこなす必要が出てくる

2020-06-14 課題

自分用メモ

  • 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 文と式の説明
  • IT 基礎知識みたいなやつ
  • 数値計算に関わるクラス・オブジェクトの説明
    • まずは辞書・構造体の拡大版として導入するか?
    • 変な誤解を生まないような書き方を考える
  • 遅延型方程式に対するコメント追加
  • import に関する実演
  • matplotlib のチュートリアルを読もうの会
  • matplotlib 回では実際に matplotlib のチュートリアルを読もう
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
  • Jupyter (IPython)でのはまりどころ解説を作ろう
    • いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
    • 「セルを上から順に読み込まないと動かない」問題の原因
    • カーネル再起動まで変数は残り続ける

Matplotlib

  • とりあえず本当に簡単な図を描く
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-4, 4, 201)
y1 = - 0.5 * x + 1
y2 = np.sin(x)
y3 = np.cos(x)

plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)

plt.grid()
plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる
plt.show()
1
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:14: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.

勉強ネタ紹介

  • 前回も言ったように、自分に合った、楽しめるネタを探す必要がある
    • 勉強しなければいけないことと、やっていて楽しめること・長続きすることが一致しないこともよくある
  • 教材がある事案
  • 最近の私の趣味と実益を兼ねた対象がデータ構造とアルゴリズムなので、ここでもその辺を試してみている
  • 例えば上の中でも興味のあるネタがあればそれは取り上げるので、要望があれば挙げてほしい。
    • 自然言語処理の UNIX コマンドとか

競プロを 2 題解いてみる

  • https://qiita.com/KoyanagiHitoshi/items/c5e82841b8d0f750851d の 3 題目と最後の問題
  • AOJ も勉強用にお勧め
    • 素因数分解など数学ネタもある
    • これをもとにしたもある
    • 言語が C/C++ なのが難点といえば難点
    • C/C++ の方が低レイヤーを意識しやすくなる利点はある
  • 最近は Python によるデータ構造とアルゴリズムの本も出ているし、ネット上に資料もある
ABC081B、Shift only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#https://atcoder.jp/contests/abs/submissions/14323299
#input()
#A = list(map(int, input().split()))

def f(A):
    count = 0
    while all(a % 2 == 0 for a in A):
        A = [a/2 for a in A]
        count += 1
    print(count)

A = [8, 12, 40]
f(A)

A = [5, 6, 8, 10]
f(A)

A = [382253568, 723152896, 37802240, 379425024, 404894720, 471526144]
f(A)
1
2
3
2
0
8
Python の all

Pythonでリストやタプルなどのイテラブルオブジェクトの要素がすべてTrue(真)か、いずれか一つでもTrueか、あるいは、すべてFalse(偽)かを判定するには組み込み関数all(), any()を使う。

1
2
print(all([True, True, True]))
print(all([True, False]))
1
2
True
False
ABC086C、Traveling
  • 止まれない条件
    • 止まってよければ問題は簡単:時間に関する制約だけでいい
    • 非現実的な問題設定にしたおかげで難しくなっている
    • cf. たいていの場合は現実が難しすぎるから簡単にした問題を解く
  • 「距離」
    • 京都・札幌・マンハッタンのような碁盤目状に道が整備された街での 2 点間の距離をどう測るといいか?
      • 普通の2点間の距離(ユークリッド距離)$\sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$ では不適切。
      • $|x_1 - x_2| + |x_1 - x_2|$ で測る方が適切。
      • 機械学習でも $L^1$ 正則化などで出てくる。
      • 情報系(?)だとマンハッタン距離と呼ぶ。
      • 数学では $L^1$ ノルムと呼ぶ。
        • 一般には $L^p$ ノルムという概念がある
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#N = int(input())
def f(N, course):
    count = 0
    T, X, Y = 0, 0, 0
    for i in range(N):
        #t, x, y = map(int, input().split()) # 都度読み込み:駄目な経路があれば即終了
        t, x, y = course[i]
        if abs(x-X)+abs(y-Y) <= t-T and t % 2 == (x+y) % 2:
            count += 1
        T, X, Y = t, x, y
    print("Yes" if count == N else "No")

N = 2
course = [(3, 1, 2,), (6, 1, 1)]
f(N, courses)

N = 1
course = [(2, 100, 100)]
f(N, course)

N = 2
course = [(5, 1, 1), (100, 1, 1)]
f(N, course)
1
2
3
Yes
No
No
1
2
3
4
5
6
7
8
if count == N:
    s = "Yes"
    if a == B:
        s = "a"
    elif a == C:
        s = "b"
else:
    s = "No"
現実的なスケジューリングの問題
  • Google Map の経路探索
  • Yahoo 路線情報などの経路探索
  • 野球・サッカーなどの年間試合日程
  • PASMO などでの運賃清算
PASMO などの運賃計算
  • 論文が出るほどの問題
    • 解説記事
    • https://www.orsj.or.jp/~archive/pdf/j_mag/Vol.54_J_001.pdf
    • https://www.seikei.ac.jp/university/rikou/pdf/JFST440213.pdf
    • https://ci.nii.ac.jp/naid/110008913789
  • 何が難しいか:乗車情報を使って東京の複雑な路線図から「最安運賃」を即座に計算させる
    • 使える時間は 0.2 秒
    • 運賃が高く計算されたら怒られる
    • 安ければ文句がでない
    • いくらでも変な経路がありうる
    • 余計な枝をはじいて重要な部分だけ計算する
  • どうやって:これがアルゴリズム研究
    • ほぼ純粋なプログラムだけの問題
  • テストの視点
    • どんな始点・終点であっても問題なく動くか、プログラムを検証する問題もある
    • 検証すべきパターンは $10^{40}$ 程度あるとか:解説記事
プロスポーツのスケジュール決定
  • OR の研究課題
  • 多数のステークホルダーの利害調整問題
    • ドームなどはコンサートもある
      • 著名アイドル・歌手の結成何周年イベントなどは「この時期、できれば第何週」というレベルで細かい指定が入る
      • ドル箱はもちろん優先
    • 春夏の甲子園の時期は高校野球に占拠される
    • 各チームが過酷な移動スケジュールにならないような配慮
      • 「九州から北海道に順に移動していき、逆順に移動していく」みたいな形だと移動の負担は少ない
      • 必ずしもそううまくは組めない
      • 長時間移動だけでも体力消費があり選手パフォーマンスに影響する
      • 旅費もかさむ
  • どうするか?
    • これも組み合わせは膨大で、電車ほど激しくはないが短時間で計算させたい
    • 最終的には人間の目も入れる必要があるだろう
    • コンピューターにいくつか候補を計算させたい
    • 適当にイベントと時期に重みづけ(ペナルティ)をつけて「一定程度以上ペナルティが積まれたスケジュールはもう考えない」といった工夫がいる
    • いい感じのスケジュールにならなければパラメータ調整して再計算させたい
      • このサイクルはなるべく早く回したい
      • 高速計算の需要
      • この辺は最近はやりの機械学習でもまさに同じような事情がある

プログラミングの一般論

  • Web システムを例にした速度問題
  • データ構造とアルゴリズム
    • 連結リストと配列:どんな特性があるか?
    • スタックとキュー:いつどこで使うか?どう実装するか?
web システムの事例
  • 参考
  • システムが重いというときどこにどんな原因があるか?
    • ソシャゲでもよくある「障害発生」はどこでどう起こるか?
    • どこかのサーバーが物理的に壊れることもある
  • データ構造とアルゴリズム(いわゆる「プログラミング」)がかかわるのはどこか?
    • web サーバーでの処理(プログラム)
    • データベースの(インデックス)設計
    • ソフトによる問題なら基本的にはどこにでもありうる
データ構造とアルゴリズム
  • 鶏と卵で、同時に考えるべきテーマ:何かをするためにはどうデータを持ってどんな処理をすれば効率がいいか?
    • 効率にもいろいろある
    • 単純な処理速度・メモリ消費量・計算量
(連結)リストと配列
  • 何が違うのか?
  • メモリ上の配置やデータの「つなぎ方」
  • 状況によって使い分ける
リストの特徴
  • 要素数は変わることが前提
  • データを(先頭に)追加するのは簡単
  • データの削除も比較的簡単
  • 先頭から 1 つずつ順に処理するならそれなり
  • 検索やデータの書き換えが遅い:連結構造をたどる必要がある
配列の特徴
  • 要素数は固定
  • データの追加・削除が重め
  • データの参照・書き換えが速い:アドレスが連続なので先頭さえわかれば「そこから何番先」と直指定できる
  • 「リストで遅ければ配列で書き直す」みたいなことはよくある
ベクター(参考
  • 「要素数可変の配列」
  • リストのように要素追加・削除が比較的低コストで、要素の参照・書き換えも配列のように速い
  • 何が問題か:要素の追加が楽なように余計なメモリ領域を確保する
  • ハードウェア組み込みプログラムのように、メモリがカツカツの状況では使えない
    • 「メモリがカツカツ」という意味が理解できるか?

2020-06-20 課題

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

  • 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 文と式の説明
  • IT 基礎知識みたいなやつ
  • 数値計算に関わるクラス・オブジェクトの説明
    • まずは辞書・構造体の拡大版として導入するか?
    • 変な誤解を生まないような書き方を考える
  • 遅延型方程式に対するコメント追加
  • import に関する実演
  • matplotlib のチュートリアルを読もうの会
  • matplotlib 回では実際に matplotlib のチュートリアルを読もう
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
  • Jupyter (IPython)でのはまりどころ解説を作ろう
    • いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
    • 「セルを上から順に読み込まないと動かない」問題の原因
    • カーネル再起動まで変数は残り続ける

Matplotlib

  • とりあえず本当に簡単な図を描く
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-4, 4, 201)
y1 = x**2 - 2 * x + 1
y2 = x**3 + 2 * x + 3
y3 = x**4 - x**2 - 2 * x + 3

plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.plot(x, y3, label="y3")

plt.grid()
plt.legend()
#plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる
plt.show()

自然言語処理100本ノック

第1章: 準備運動 00. 文字列の逆順

文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.

1
2
print("".join(list(reversed("stressed"))))
print("stressed"[::-1])
1
2
desserts
desserts
1
reversed("stressed")
1
<reversed at 0x7fddcfffd5f8>
1
"".join(reversed("stressed"))
1
'desserts'
1
list(reversed("stressed"))
1
['d', 'e', 's', 's', 'e', 'r', 't', 's']
1
"|".join(list(reversed("stressed")))
1
'd|e|s|s|e|r|t|s'
1
"stressed"[::2]
1
'srse'
第1章: 準備運動 01. 「パタトクカシーー」
  • 「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.
1
print("パタトクカシーー"[1::2])
1
タクシー
1
print("パタトクカシーー"[0::2])
1
パトカー
02. 「パトカー」+「タクシー」=「パタトクカシーー」

「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
s1 = "パトカー"
s2 = "タクシー"


print("".join([s1[i] + s2[i] for i in range(4)]))


s = ""
for i in range(4):
    print(s)
    s = s + s1[i]+ s2[i]
print(s)
1
2
3
4
5
6
パタトクカシーー

パタ
パタトク
パタトクカシ
パタトクカシーー
03 円周率

"Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."という文を単語に分解し,各単語の(アルファベットの)文字数を先頭から出現順に並べたリストを作成せよ.

1
2
s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
print(list(map(lambda x: len(x), s.split())))
1
[3, 1, 4, 1, 6, 9, 2, 7, 5, 3, 5, 8, 9, 7, 9]
1
2
s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
s.split()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
['Now',
 'I',
 'need',
 'a',
 'drink,',
 'alcoholic',
 'of',
 'course,',
 'after',
 'the',
 'heavy',
 'lectures',
 'involving',
 'quantum',
 'mechanics.']
1
2
s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
print(list(map(lambda x: len(x), s.replace(",", "").replace(".", "").split())))
1
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
print(s.replace(",", ""))
print(s.replace(",", "").replace(".", ""))
print(s.replace(",", "").replace(".", "").split())

xs = []
for x in s.replace(",", "").replace(".", "").split():
    print(len(x))
    xs.append(len(x))
print(xs)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Now I need a drink alcoholic of course after the heavy lectures involving quantum mechanics.
Now I need a drink alcoholic of course after the heavy lectures involving quantum mechanics
['Now', 'I', 'need', 'a', 'drink', 'alcoholic', 'of', 'course', 'after', 'the', 'heavy', 'lectures', 'involving', 'quantum', 'mechanics']
3
1
4
1
5
9
2
6
5
3
5
8
9
7
9
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
04. 元素記号

"Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."という文を単語に分解し,1, 5, 6, 7, 8, 9, 15, 16, 19番目の単語は先頭の1文字,それ以外の単語は先頭の2文字を取り出し,取り出した文字列から単語の位置(先頭から何番目の単語か)への連想配列(辞書型もしくはマップ型)を作成せよ.

(言っていることがよくわからなくて何度も読み返した。)

1
2
3
4
5
6
7
8
9
numbers = [1,5,6,7,8,9,15,16,19]
numbers = list(map(lambda x: x - 1, numbers))

def f(i,v):
    return v[0] if i in numbers else v[0:2]

s = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
s = s.replace(",", "").replace(".", "").split()
print({f(i,v): i for i, v in enumerate(s)})
1
{'H': 0, 'He': 1, 'Li': 2, 'Be': 3, 'B': 4, 'C': 5, 'N': 6, 'O': 7, 'F': 8, 'Ne': 9, 'Na': 10, 'Mi': 11, 'Al': 12, 'Si': 13, 'P': 14, 'S': 15, 'Cl': 16, 'Ar': 17, 'K': 18, 'Ca': 19}
1
2
3
4
5
s = ""
if i in numbers:
    s = v[0]
else:
    s = v[0:2]
内包表記をループで書き直した
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
numbers = [1,5,6,7,8,9,15,16,19]
numbers = list(map(lambda x: x - 1, numbers))

def f(i,v):
    return v[0] if i in numbers else v[0:2]

s = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
s = s.replace(",", "").replace(".", "").split()

dic = {}
for i,v in enumerate(s):
    dic[f(i,v)] = i

print(dic)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
0
Hi

1
He

2
Lied

3
Because

4
Boron

5
Could

6
Not

7
Oxidize

8
Fluorine

9
New

10
Nations

11
Might

12
Also

13
Sign

14
Peace

15
Security

16
Clause

17
Arthur

18
King

19
Can

{'H': 0, 'He': 1, 'Li': 2, 'Be': 3, 'B': 4, 'C': 5, 'N': 6, 'O': 7, 'F': 8, 'Ne': 9, 'Na': 10, 'Mi': 11, 'Al': 12, 'Si': 13, 'P': 14, 'S': 15, 'Cl': 16, 'Ar': 17, 'K': 18, 'Ca': 19}

プログラミングの一般論

  • Web システムを例にした速度問題
  • データ構造とアルゴリズム
    • 連結リストと配列:どんな特性があるか?
    • スタックとキュー:いつどこで使うか?どう実装するか?
web システムの事例
  • 参考
  • システムが重いというときどこにどんな原因があるか?
    • ソシャゲでもよくある「障害発生」はどこでどう起こるか?
    • どこかのサーバーが物理的に壊れることもある
  • データ構造とアルゴリズム(いわゆる「プログラミング」)がかかわるのはどこか?
    • web サーバーでの処理(プログラム)
    • データベースの(インデックス)設計
    • ソフトによる問題なら基本的にはどこにでもありうる
データ構造とアルゴリズム
  • 鶏と卵で、同時に考えるべきテーマ:何かをするためにはどうデータを持ってどんな処理をすれば効率がいいか?
    • 効率にもいろいろある
    • 単純な処理速度・メモリ消費量・計算量
(連結)リストと配列
  • 何が違うのか?
  • メモリ上の配置やデータの「つなぎ方」
  • 状況によって使い分ける
リストの特徴
  • 要素数は変わることが前提
  • データを(先頭に)追加するのは簡単
  • データの削除も比較的簡単
  • 先頭から 1 つずつ順に処理するならそれなり
  • 検索やデータの書き換えが遅い:連結構造をたどる必要がある
配列の特徴
  • 要素数は固定
  • データの追加・削除が重め
  • データの参照・書き換えが速い:アドレスが連続なので先頭さえわかれば「そこから何番先」と直指定できる
  • 「リストで遅ければ配列で書き直す」みたいなことはよくある
ベクター(参考
  • 「要素数可変の配列」
  • リストのように要素追加・削除が比較的低コストで、要素の参照・書き換えも配列のように速い
  • 何が問題か:要素の追加が楽なように余計なメモリ領域を確保する
  • ハードウェア組み込みプログラムのように、メモリがカツカツの状況では使えない
    • 「メモリがカツカツ」という意味が理解できるか?

2020-06-28 課題

メモ:先に進む前に録画してあるか確認しよう

  • メモ:東大の AWS クラウド講義資料
  • https://tomomano.gitlab.io/intro-aws/#_hands_on_5_bashoutter
  • これを眺めてみるのもいいかもしれない

自分用メモ

  • 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 文と式の説明
  • IT 基礎知識みたいなやつ
  • 数値計算に関わるクラス・オブジェクトの説明
    • まずは辞書・構造体の拡大版として導入するか?
    • 変な誤解を生まないような書き方を考える
  • 遅延型方程式に対するコメント追加
  • import に関する実演
  • matplotlib のチュートリアルを読もうの会
  • matplotlib 回では実際に matplotlib のチュートリアルを読もう
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
  • Jupyter (IPython)でのはまりどころ解説を作ろう
    • いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
    • 「セルを上から順に読み込まないと動かない」問題の原因
    • カーネル再起動まで変数は残り続ける

Matplotlib

  • とりあえず本当に簡単な図を描く
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.01, 4, 201)
y1 = np.exp(x)
y2 = np.log(x)

plt.plot(x, y1, label="e^x")
plt.plot(x, y2, label="\log x")

plt.grid()
plt.legend()
#plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる
plt.show()

TeX の記録

量子力学の1粒子ハミルトニアン。 \begin{align} \hat{H} = \frac{1}{2m} \hat{p}^2 + V(x). \end{align}

自然言語処理100本ノック

第2章 Unix コマンド
  • 要検討:ローカルでやった方がデモンストレーションとしてはいいかもしれない
  • 参考ページ
    • ここでは pandas を使っている
    • これはこれで覚えると便利
    • Excel が処理できる
  • Google Colab 上では !ls のように ! をつけると Unix (Linux) コマンドが実行できる。
  • Mac ならターミナルから直接実行できる
  • Windows でも適当な手段でインストールできる
    • ただし OS の違いから純粋な Windows では意味を持たないコマンドもある
    • chown や chmod などの権限管理とか
  • すさまじく大量にあり、各コマンドはオプションも死ぬほどたくさんある。
    • 毎日ゴリゴリに使い込まければ覚えられるものではない。
    • 大事なコマンドをいくつか見て慣れ親しむことだけが目的。
補足
  • cd, ls などの(もっと)基本的なコマンドはカバーされていない。
  • 参考リスト:とりあえずこのくらい知っておくといい(名前だけ何となく覚えていればいい)
  • Python にも対応する関数がある
    • mv は shutil.move: https://note.nkmk.me/python-shutil-move/
    • shutil はたぶん shell utilities の略
  • Ruby だと「わかりやすさ」を考えて Linux コマンドと同じ名前の関数・メソッドで定義されている
準備
1
!wget https://nlp100.github.io/data/popular-names.txt
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
--2020-07-12 03:48:25--  https://nlp100.github.io/data/popular-names.txt
Resolving nlp100.github.io (nlp100.github.io)... 185.199.111.153, 185.199.109.153, 185.199.110.153, ...
Connecting to nlp100.github.io (nlp100.github.io)|185.199.111.153|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55026 (54K) [text/plain]
Saving to: ‘popular-names.txt.1'

popular-names.txt.1 100%[===================>]  53.74K  --.-KB/s    in 0.03s

2020-07-12 03:48:25 (2.03 MB/s) - ‘popular-names.txt.1' saved [55026/55026]
1
!wc --help
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Usage: wc [OPTION]... [FILE]...
  or:  wc [OPTION]... --files0-from=F
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified.  A word is a non-zero-length sequence of
characters delimited by white space.

With no FILE, or when FILE is -, read standard input.

The options below may be used to select which counts are printed, always in
the following order: newline, word, character, byte, maximum line length.
  -c, --bytes            print the byte counts
  -m, --chars            print the character counts
  -l, --lines            print the newline counts
      --files0-from=F    read input from the files specified by
                           NUL-terminated names in file F;
                           If F is - then read names from standard input
  -L, --max-line-length  print the maximum display width
  -w, --words            print the word counts
      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/wc>
or available locally via: info '(coreutils) wc invocation'
10. 行数のカウント

行数をカウントせよ.確認にはwcコマンドを用いよ.

1
!wc -l ./popular-names.txt
1
2780 ./popular-names.txt
1
2
3
4
import pandas as pd

df = pd.read_table('./popular-names.txt', header=None, sep='\t', names=['name', 'sex', 'number', 'year'])
print(len(df))
1
2780
# 補足:wc コマンドの調査
  • 参考
  • 実際にターミナルで実演してみよう
11. タブをスペースに置換

タブ1文字につきスペース1文字に置換せよ.確認にはsedコマンド,trコマンド,もしくはexpandコマンドを用いよ.

1
!sed -e 's/\t/ /g' ./popular-names.txt | head -n 5
1
2
3
4
5
Mary F 7065 1880
Anna F 2604 1880
Emma F 2003 1880
Elizabeth F 1939 1880
Minnie F 1746 1880

s/何とか/実はこう書きたかった/

1
!head -n 5 popular-names.txt
1
2
3
4
5
Mary    F   7065    1880
Anna    F   2604    1880
Emma    F   2003    1880
Elizabeth   F   1939    1880
Minnie  F   1746    1880
12. 1列目をcol1.txtに,2列目をcol2.txtに保存

各行の1列目だけを抜き出したものをcol1.txtに,2列目だけを抜き出したものをcol2.txtとしてファイルに保存せよ.確認にはcutコマンドを用いよ.

# Linux コマンド
1
2
3
4
5
!cut -f 1 ./popular-names.txt > ./col1_chk.txt
!cat ./col1_chk.txt | head -n 5

!cut -f 2 ./popular-names.txt > ./col2_chk.txt
!cat ./col2_chk.txt | head -n 5
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Mary
Anna
Emma
Elizabeth
Minnie
F
F
F
F
F
# Python
1
2
3
4
5
6
7
col1 = df['name']
col1.to_csv('./col1.txt', =False)
print(col1.head())

col2 = df['sex']
col2.to_csv('./col2.txt', =False)
print(col2.head())
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
0         Mary
1         Anna
2         Emma
3    Elizabeth
4       Minnie
Name: name, dtype: object
0    F
1    F
2    F
3    F
4    F
Name: sex, dtype: object
第 3 章 正規表現
正規表現の簡単な話
  • 分厚い本が何冊も出るくらいのごつい話
  • 例:「イギリス」という言葉が出てくる文章を調べたい
    • 単なる検索でいい
  • 例:「イギリス+単語」という言葉が出てくる文章を、その単語セットとともに調べたい。
    • 例えばイギリスではなく「イギリス連邦」「イギリスの勝利」のような形で調べたい
    • ここで正規表現が出てくる
  • もう少し web でよくある例
    • メールアドレスのバリデーション
    • 「メインの文字列@gmail.com」みたいなのをチェックする
  • メンテナンスが魔界
    • 正規表現は死ぬほど複雑で簡単な部類でさえすでに読みにくい
    • 複雑なものは本当に何もわからない
    • 時間が経つと書いた当人でさえ判別できないことはよくある
ファイル取得
1
!wget https://nlp100.github.io/data/jawiki-country.json.gz
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
--2020-07-12 03:48:38--  https://nlp100.github.io/data/jawiki-country.json.gz
Resolving nlp100.github.io (nlp100.github.io)... 185.199.108.153, 185.199.109.153, 185.199.110.153, ...
Connecting to nlp100.github.io (nlp100.github.io)|185.199.108.153|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5068362 (4.8M) [application/gzip]
Saving to: ‘jawiki-country.json.gz.1'

jawiki-country.json 100%[===================>]   4.83M  13.3MB/s    in 0.4s

2020-07-12 03:48:38 (13.3 MB/s) - ‘jawiki-country.json.gz.1' saved [5068362/5068362]
展開(解凍)
1
!gunzip ./jawiki-country.json.gz
行数確認
1
!wc -l ./jawiki-country.json
1
248 ./jawiki-country.json
先頭行の確認
1
!head -1 ./jawiki-country.json
1
{"title": "エジプト", "text": "{{otheruses|主に現代のエジプト・アラブ共和国|古代|古代エジプト}}\n{{基礎情報 国\n|略名 =エジプト\n|漢字書き=埃及\n|日本語国名 =エジプト・アラブ共和国\n|公式国名 ={{lang|ar|'''جمهورية مصر العربية'''}}\n|国旗画像 =Flag of Egypt.svg\n|国章画像 =[[ファイル:Coat_of_arms_of_Egypt.svg|100px|エジプトの国章]]\n|国章リンク =([[エジプトの国章|国章]])\n|標語 =なし\n|位置画像 =Egypt (orthographic projection).svg\n|公用語 =[[アラビア語]]\n|首都 =[[File:Flag of Cairo.svg|24px]] [[カイロ]]\n|最大都市 =カイロ\n|元首等肩書 =[[近代エジプトの国家元首の一覧|大統領]]\n|元首等氏名 =[[アブドルファッターフ・アッ=シーシー]]\n|首相等肩書 ={{ill2|エジプトの首相|en|Prime Minister of Egypt|label=首相}}\n|首相等氏名 ={{仮リンク|ムスタファ・マドブーリー|ar|مصطفى مدبولي|en|Moustafa Madbouly}}\n|面積順位 =29\n|面積大きさ =1 E12\n|面積値 =1,010,408\n|水面積率 =0.6%\n|人口統計年 =2012\n|人口順位 =\n|人口大きさ =1 E7\n|人口値 =1億人\n|人口密度値 =76\n|GDP統計年元 =2018\n|GDP値元 =4兆4,374億<ref name=\"economy\">IMF Data and Statistics 2020年2月3日閲覧([https://www.imf.org/external/pubs/ft/weo/2019/02/weodata/weorept.aspx?sy=2017&ey=2024&scsm=1&ssd=1&sort=country&ds=.&br=1&c=469&s=NGDP%2CNGDPD%2CPPPGDP%2CNGDPDPC%2CPPPPC&grp=0&a=&pr.x=57&pr.y=4])</ref>\n|GDP統計年MER =2018\n|GDP順位MER =45\n|GDP値MER =2,496億<ref name=\"economy\" />\n|GDP統計年 =2018\n|GDP順位 =21\n|GDP値 =1兆2,954億<ref name=\"economy\" />\n|GDP/人 =13,358<ref name=\"economy\" />\n|建国形態 =[[独立]]<br />&nbsp;-&nbsp;日付\n|建国年月日 =[[イギリス]]より<br />[[1922年]][[2月28日]]\n|通貨 =[[エジプト・ポンド]] (£)\n|通貨コード =EGP\n|時間帯 = +2\n|夏時間 =なし\n|国歌 =[[エジプトの国歌|{{lang|ar|بلادي، بلادي، بلادي}}]]{{ar icon}}<br>''我が祖国''<br>{{center|[[file:Bilady, Bilady, Bilady.ogg]]}}\n|ISO 3166-1 = EG / EGY\n|ccTLD =[[.eg]]\n|国際電話番号 =20\n|注記 =\n}}\n'''エジプト・アラブ共和国'''(エジプト・アラブきょうわこく、{{lang-ar|جمهورية مصر العربية}})、通称'''エジプト'''は、[[中東]]([[アラブ世界]])および[[北アフリカ]]にある[[共和国]]。[[首都]]は[[カイロ]]。\n\n[[アフリカ大陸]]では北東端に位置し、西に[[リビア]]、南に[[スーダン]]、北東の[[シナイ半島]]では[[イスラエル]]、[[ガザ地区]]と[[国境]]を接する。北は[[地中海]]、東は[[紅海]]に面している。南北に流れる[[ナイル川]]の[[河谷]]と[[三角州|デルタ]]地帯([[ナイル・デルタ]])のほかは、国土の大部分の95%以上が[[砂漠]]である<ref>[https://kotobank.jp/word/エジプト-36404 エジプト]藤井宏志『日本大百科全書』小学館 2020年2月1日閲覧</ref>。ナイル河口の東に地中海と紅海を結ぶ[[スエズ運河]]がある。\n\n== 国号 ==\n正式名称は[[アラビア語]]で {{lang|ar|'''جمهورية مصر العربية'''}}(ラテン[[翻字]]: {{transl|ar|DIN|Ǧumhūrīyah Miṣr al-ʿarabīyah}})。通称は {{lang|ar|'''مصر'''}}([[フスハー|標準語]]: {{transl|ar|DIN|Miṣr}} ミスル、[[アラビア語エジプト方言|エジプト方言]]ほか、口語アラビア語: {{IPA|mɑsˤɾ}} マスル)。[[コプト語]]: {{Lang|cop|Ⲭⲏⲙⲓ}}(Khemi ケーミ)。\n\nアラビア語の名称'''ミスル'''は、古代から[[セム語派|セム語]]でこの地を指した名称である。なお、セム語の一派である[[ヘブライ語]]では、[[双数形]]の'''ミスライム'''({{lang|he|מצרים}}, ミツライム)となる。\n\n公式の英語表記は '''Arab Republic of Egypt'''。通称 '''Egypt''' {{IPA-en|ˈiːdʒɨpt|}}。形容詞はEgyptian {{IPA-en|ɨˈdʒɪpʃ''ə''n|}}。エジプトの呼称は、古代[[エジプト語]]のフート・カア・プタハ([[プタハ]]神の魂の神殿)から転じてこの地を指すようになったギリシャ語の単語である、[[ギリシャ神話]]の[[アイギュプトス (ギリシア神話)|アイギュプトス]]にちなむ。\n\n[[日本語]]の表記はエジプト・アラブ共和国。通称[[wikt:エジプト|エジプト]]。[[漢字]]では'''埃及'''と表記し、'''埃'''と略す。この[[国名の漢字表記一覧|漢字表記]]は、[[漢文]]がそのまま日本語や[[中国語]]などに輸入されたものである。英語では「イージプト」と呼ばれる。\n\n* [[1882年]] - 1922年 ({{仮リンク|イギリス領エジプト|en|History of Egypt under the British}})\n* 1922年 - 1953年 [[エジプト王国]]\n* 1953年 - 1958年 [[エジプト共和国]]\n* 1958年 - 1971年 [[アラブ連合共和国]]\n* 1971年 - 現在 エジプト・アラブ共和国\n\n== 歴史 ==\n{{Main|エジプトの歴史}}\n\n=== 古代エジプト ===\n[[ファイル:All Gizah Pyramids.jpg|thumb|300px|right|[[ギーザ|ギザ]]の[[三大ピラミッド]]]]\n[[ファイル:Egyptiska hieroglyfer, Nordisk familjebok.png|thumb|260px|right|[[ヒエログリフ]]]]\n{{Main|古代エジプト}}\n\n「エジプトはナイルの賜物」という[[古代ギリシア]]の[[歴史家]][[ヘロドトス]]の言葉で有名なように、エジプトは豊かな[[ナイル川]]の[[三角州|デルタ]]に支えられ[[古代エジプト|古代エジプト文明]]を発展させてきた。エジプト人は[[紀元前3000年]]ごろには早くも中央集権国家を形成し、[[ピラミッド]]や[[王家の谷]]、[[ヒエログリフ]]などを通じて世界的によく知られている高度な[[文明]]を発達させた。\n\n=== アケメネス朝ペルシア ===\n3000年にわたる諸王朝の盛衰の末、[[紀元前525年]]に[[アケメネス朝]]ペルシアに支配された。\n\n=== ヘレニズム文化 ===\n[[紀元前332年]]には[[アレクサンドロス3世|アレクサンドロス大王]]に征服された。その後、[[ギリシャ人|ギリシア系]]の[[プトレマイオス朝]]が成立し、[[ヘレニズム]]文化の中心のひとつとして栄えた。\n\n=== ローマ帝国 ===\nプトレマイオス朝は[[紀元前30年]]に滅ぼされ、エジプトは[[ローマ帝国]]の[[属州]]となり[[アエギュプトゥス]]と呼ばれた。ローマ帝国の統治下では[[キリスト教]]が広まり、[[コプト教会]]が生まれた。ローマ帝国の分割後は[[東ローマ帝国]]に属し、豊かな[[穀物]]生産でその繁栄を支えた。\n\n=== イスラム王朝 ===\n7世紀に[[イスラム教|イスラム化]]。[[639年]]に[[イスラム帝国]]の[[将軍]][[アムル・イブン・アル=アース]]によって征服され、[[ウマイヤ朝]]および[[アッバース朝]]の一部となった。アッバース朝の支配が衰えると、そのエジプト[[総督]]から自立した[[トゥールーン朝]]、[[イフシード朝]]の短い支配を経て、[[969年]]に現在の[[チュニジア]]で興った[[ファーティマ朝]]によって征服された。これ以来、[[アイユーブ朝]]、[[マムルーク朝]]とエジプトを本拠地として[[歴史的シリア|シリア地方]]まで版図に組み入れた[[イスラム王朝]]が500年以上にわたって続く。特に250年間続いたマムルーク朝の下で[[中央アジア]]や[[カフカス]]などアラブ世界の外からやってきた[[マムルーク]](奴隷軍人)による支配体制が確立した。\n\n=== オスマン帝国 ===\n[[1517年]]に、マムルーク朝を滅ぼしてエジプトを属州とした[[オスマン帝国]]のもとでもマムルーク支配は温存された({{仮リンク|エジプト・エヤレト|en|Egypt Eyalet}})。\n\n=== ムハンマド・アリー朝 ===\n[[ファイル:ModernEgypt, Muhammad Ali by Auguste Couder, BAP 17996.jpg|thumb|180px|[[ムハンマド・アリー]]]]\n[[1798年]]、[[フランス]]の[[ナポレオン・ボナパルト]]による[[エジプト・シリア戦役|エジプト遠征]]をきっかけに、エジプトは[[近代国家]]形成の時代を迎える。フランス軍撤退後、混乱を収拾して権力を掌握したのはオスマン帝国が派遣した[[アルバニア人]]部隊の隊長としてエジプトにやってきた軍人、[[ムハンマド・アリー]]であった。彼は実力によってエジプト総督に就任すると、マムルークを打倒して総督による中央集権化を打ち立て、[[経済]]・[[軍事]]の近代化を進め、エジプトをオスマン帝国から半ば独立させることに成功した。アルバニア系ムハンマド・アリー家による[[世襲]]政権を打ち立てた([[ムハンマド・アリー朝]])。しかし、当時の世界に勢力を広げた[[ヨーロッパ]][[列強]]はエジプトの独立を認めず、また、ムハンマド・アリー朝の急速な近代化政策による社会矛盾は結局、エジプトを列強に経済的に従属させることになった。\n\n=== イギリスの進出 ===\nムハンマド・アリーは[[綿花]]を主体とする農産物[[専売制]]をとっていたが、1838年に宗主オスマン帝国が[[イギリス]]と自由貿易協定を結んだ。ムハンマド・アリーが1845年に三角州の堰堤を着工。死後に専売制が崩壊し、また堰堤の工期も延びて3回も支配者の交代を経た1861年、ようやく一応の完工をみた。1858年末には国庫債券を発行しなければならないほどエジプト財政は窮迫していた。[[スエズ運河会社]]に払い込む出資金の不足分は、シャルル・ラフィット([[:fr:Charles Laffitte|Charles Laffitte]])と割引銀行(現・[[BNPパリバ]])から借り、国庫債券で返済することにした。[[イスマーイール・パシャ]]が出資の継続を認めたとき、フランスの[[ナポレオン3世]]の裁定により契約責任を問われ、違約金が[[自転車操業]]に拍車をかけた。[[1869年]]、エジプトはフランスとともに[[スエズ運河]]を開通させた。この前後(1862 - 1873年)に8回も[[外債]]が起債され、額面も次第に巨額となっていた。エジプトはやむなくスエズ運河会社持分を398万[[スターリング・ポンド|ポンド]]でイギリスに売却したが、1876年4月に[[デフォルト]]した<ref>西谷進、「[https://doi.org/10.20624/sehs.37.2_113 一九世紀後半エジプト国家財政の行詰まりと外債 (一)]」 『社会経済史学』 1971年 37巻 2号 p.113-134,216\n, {{doi|10.20624/sehs.37.2_113}}</ref>。\n\n英仏が負債の償還をめぐって争い、エジプトの蔵相は追放された。[[イタリア]]や[[オーストリア]]も交えた負債委員会が組織された。2回目のリスケジュールでイスマーイール一族の直轄地がすべて移管されたが、土地税収が滞った<ref>西谷進、「[https://doi.org/10.20624/sehs.37.3_283 一九世紀後半エジプト国家財政の行詰まりと外債 (二)]」 社会経済史学 1971年 37巻 3号 p.283-311,330-33, {{doi|10.20624/sehs.37.3_283}}</ref>。\n\n[[1882年]]、[[アフマド・オラービー]]が中心となって起きた反英運動([[ウラービー革命]])がイギリスによって武力鎮圧された。エジプトはイギリスの[[保護国]]となる。結果として、政府の教育支出が大幅カットされるなどした。[[1914年]]には、[[第一次世界大戦]]によってイギリスがエジプトの名目上の[[宗主国]]であるオスマン帝国と開戦したため、エジプトはオスマン帝国の宗主権から切り離された。さらに[[サアド・ザグルール]]の逮捕・国外追放によって反英独立運動たる[[エジプト革命 (1919年)|1919年エジプト革命]]が勃発し、英国より主政の国として独立した。\n\n=== 独立・エジプト王国 ===\n第一次大戦後の[[1922年]][[2月28日]]に'''[[エジプト王国]]'''が成立し、翌年イギリスはその[[独立]]を認めたが、その後もイギリスの間接的な支配体制は続いた。\n\nエジプト王国は[[立憲君主制]]を布いて議会を設置し、緩やかな近代化を目指した。[[第二次世界大戦]]では、[[枢軸国軍]]がイタリア領リビアから侵攻したが、英軍が撃退した([[北アフリカ戦線]])。第二次世界大戦前後から[[パレスチナ問題]]の深刻化や、1948年から1949年の[[パレスチナ戦争]]([[第一次中東戦争]])での[[イスラエル]]への敗北、経済状況の悪化、[[ムスリム同胞団]]など政治のイスラム化([[イスラム主義]])を唱える社会勢力の台頭によって次第に動揺していった。\n\n=== エジプト共和国 ===\nこの状況を受けて[[1952年]]、軍内部の秘密組織[[自由将校団]]が[[クーデター]]を起こし、国王[[ファールーク1世 (エジプト王)|ファールーク1世]]を亡命に追い込み、ムハンマド・アリー朝を打倒した([[エジプト革命 (1952年)|エジプト革命]]<ref>片山正人『現代アフリカ・クーデター全史』叢文社 2005年 ISBN 4-7947-0523-9 p49</ref>)。生後わずか半年の[[フアード2世 (エジプト王)|フアード2世]]を即位させ、[[自由将校団]]団長の[[ムハンマド・ナギーブ]]が首相に就任して権力を掌握した。さらに翌年の1953年、国王を廃位して共和政へと移行、[[ムハンマド・ナギーブ|ナギーブ]]が首相を兼務したまま初代大統領となり、'''エジプト共和国'''が成立した。\n\n=== ナーセル政権 ===\n[[ファイル:Gamal Nasser.jpg|thumb|180px|right|[[ガマール・アブドゥル=ナーセル]]。[[第二次中東戦争]]に勝利し、スエズ運河を国有化した。ナーセルの下でエジプトは[[汎アラブ主義]]の中心となった]]\n[[1956年]]、第2代大統領に就任した[[ガマール・アブドゥル=ナーセル]]のもとでエジプトは[[冷戦]]下での中立外交と[[汎アラブ主義|汎アラブ主義(アラブ民族主義)]]を柱とする独自の政策を進め、[[第三世界]]・[[アラブ諸国]]の雄として台頭する。同年にエジプトは[[スエズ運河国有化宣言|スエズ運河国有化]]を断行し、これによって勃発した[[第二次中東戦争]](スエズ戦争)で政治的に勝利を収めた。[[1958年]]には[[シリア]]と連合して'''[[アラブ連合共和国]]'''を成立させた。しかし[[1961年]]にはシリアが連合から脱退し、[[国家連合]]としてのアラブ連合共和国はわずか3年で事実上崩壊した。さらに[[1967年]]の[[第三次中東戦争]]は惨敗に終わり、これによってナーセルの権威は求心力を失った。\n\n=== サーダート政権 ===\n[[1970年]]に急死したナーセルの後任となった[[アンワル・アッ=サーダート]]は、自ら主導した[[第四次中東戦争]]後に[[ソビエト連邦]]と対立して[[アメリカ合衆国]]など[[西側諸国]]に接近。[[社会主義]]的経済政策の転換、[[イスラエル]]との融和など、ナーセル体制の切り替えを進めた。[[1971年]]には、国家連合崩壊後もエジプトの国号として使用されてきた「アラブ連合共和国」の国号を捨てて'''エジプト・アラブ共和国'''に改称した。また、サーダートは、経済の開放などに舵を切るうえで、左派に対抗させるべくイスラーム主義勢力を一部容認した。しかしサーダートは、イスラエルとの和平を実現させたことの反発を買い、[[1981年]]に[[イスラム過激派]]の[[ジハード団]]によって[[暗殺]]された。\n\n=== ムバーラク政権 ===\n[[ファイル:Hosni Mubarak ritratto.jpg|thumb|180px|[[アラブの春]]で失脚するまで30年以上にわたり長期政権を維持した[[ホスニー・ムバーラク]]]]\n[[イラク]]の[[クウェート侵攻]]はエジプトの国際収支を悪化させた。サーダートに代わって副大統領から大統領に昇格した[[ホスニー・ムバーラク]]は、対米協調外交を進める一方、[[開発独裁]]的な[[政権]]を20年以上にわたって維持した。\n\nムバラク政権は1990年12月に「1000日計画」と称する経済改革案を発表した。クウェート解放を目指す[[湾岸戦争]]では[[多国籍軍]]へ2万人を派兵し、これにより約130億ドルも[[対外債務]]を減らすという外交成果を得た。累積債務は500億ドル規模であった。軍事貢献により帳消しとなった債務は、クウェート、[[サウジアラビア]]に対するものと、さらに対米軍事債務67億ドルであった。1991年5月には[[国際通貨基金]]のスタンドバイクレジットおよび[[世界銀行]]の構造調整借款(SAL)が供与され、[[パリクラブ]]において200億ドルの債務削減が合意された。エジプト経済の構造調整で画期的だったのは、ドル・ペッグによる為替レート一本化であった<ref>『エジプトの経済発展の現状と課題』 [[海外経済協力基金]]開発援助研究所 1998年 23頁</ref>。\n\n海外の[[機関投資家]]に有利な条件が整えられていった。イスラム主義運動は厳しく[[弾圧]]され、[[ザカート|喜捨]]の精神は失われていった。[[1997年]]には[[イスラム集団]]による[[ルクソール事件]]が発生している。1999年にイスラム集団は武装闘争放棄を宣言し、近年、観光客を狙った事件は起こっていない。しかし、ムバーラクが大統領就任と同時に発令した[[非常事態法]]は、彼が追放されるまで30年以上にわたって継続された<ref>[http://www.cnn.co.jp/world/30001719.html エジプト副大統領が野党代表者らと会談、譲歩示す]</ref>。\n\n2002年6月、エジプト政府は15億ドルの[[ユーロ債]]を起債したが、2002年から2003年に為替差損を被り、対外債務を増加させた<ref>IMF, ''Arab Republic of Egypt: Selected Issues'', 2005, [https://books.google.co.jp/books?id=aZDSd_fjJzkC&pg=PT49&dq=reschedule+egypt+eurobond&hl=ja&sa=X&ved=0ahUKEwiD0qHpn8DbAhWLWbwKHXRrDGQQ6AEIJzAA#v=onepage&q=reschedule%20egypt%20eurobond&f=false]</ref>。\n\n=== ムルシー政権 ===\n[[ファイル:Mohamed Morsi-05-2013.jpg|thumb|180px|民主化後初の大統領だった[[ムハンマド・ムルシー]]]]\n{{Main|エジプト革命 (2011年)|2012年エジプト大統領選挙}}\n[[チュニジア]]の[[ジャスミン革命]]に端を発した近隣諸国の民主化運動がエジプトにおいても波及し、[[2011年]]1月、30年以上にわたって独裁体制を敷いてきたムバーラク大統領の辞任を求める大規模なデモが発生した。同2月には大統領支持派によるデモも発生して騒乱となり、国内主要都市において大混乱を招いた。大統領辞任を求める声は日に日に高まり、2月11日、ムバーラクは大統領を辞任し、全権が[[エジプト軍最高評議会]]に委譲された。同年12月7日には{{仮リンク|カマール・ガンズーリ|en|Kamal Ganzouri}}を暫定首相とする政権が発足した。その後、2011年12月から翌年1月にかけて人民議会選挙が、また2012年5月から6月にかけて大統領選挙が実施され[[ムハンマド・ムルシー]]が当選し、同年6月30日の大統領に就任したが、人民議会は大統領選挙決選投票直前に、選挙法が違憲との理由で裁判所から解散命令を出されており、立法権は軍最高評議会が有することとなった。\n\n2012年11月以降、新憲法の制定などをめぐって反政府デモや暴動が頻発した({{仮リンク|2012年-13年エジプト抗議運動|en|2012–13 Egyptian protests}})。ムルシー政権は、政権への不満が大規模な暴動に発展するにつれて、当初の警察改革を進める代わりに既存の組織を温存する方向に転換した。{{仮リンク|ムハンマド・イブラヒーム・ムスタファ|ar|محمد إبراهيم مصطفى|label=ムハンマド・イブラヒーム}}が内相に就任した[[2013年]]1月以降、治安部隊による政治家やデモ隊への攻撃が激化。1月末には当局との衝突でデモ参加者など40人以上が死亡したが、治安部隊への調査や処罰は行われていない<ref>「『アラブの春』の国で繰り返される悪夢」 エリン・カニンガム 『Newsweek[[ニューズウィーク]]日本版』 2013年3月5日号</ref>。イブラヒーム内相は、「国民が望むならば辞任する用意がある」と2月に述べている<ref>{{Cite news\n|url=http://english.ahram.org.eg/News/63894.aspx\n|title=I will leave my position if people want: Egypt's interior minister\n|newspaper=アハラムオンライン\n|date=2013-02-02\n|accessdate=2013-05-08\n}}</ref>。下落する[[エジプト・ポンド]]がとめどなく[[アメリカ合衆国ドル|USドル]]に交換され、[[外貨準備]]を減らすような混乱が同月10日の[[ロイター通信]]で報じられている。下落は1月から起きており、同月には[[ドバイ]]のエミレーツNBD([[:en:Emirates NBD|Emirates NBD]])が[[BNPパリバ]]のエジプト支店を完全買収した。[[オイルマネー]]がエジプト経済を我が物にする社会現象が起こっていた。さらに『[[フィナンシャル・タイムズ]]』が1月19日に報じたのは、[[エチオピア]]がナイルの川上に48億ドルの予算をかけて[[ダム]]を造るという計画であった。混乱中のエジプトが水紛争で負ければ大きな水ストレスが生じるだろうと予測された。\n\n2013年4月、[[エジプト中央銀行]]は[[リビア]]から20億ドルの預金を得た。リビア側が利害を説明したところによると、リビアはエジプト株を100億ドル近く保有しているという。リビアは[[世界金融危機]]の時から欧米の[[メガバンク]]と癒着を疑われている。\n\nムルシー政権は発足後約1年後の[[2013年エジプトクーデター|2013年7月3日、軍部によるクーデター]]によって終焉を迎えた<ref>{{Cite news\n|url=http://middleeast.asahi.com/watch/2013070800008.html\n|title=エジプトのクーデターに至る過程:朝日新聞記事再録\n|work=asahi.com\n|newspaper=[[朝日新聞]]\n|date=2013-07-09\n|accessdate=2013-07-13\n}}</ref>。8月下旬にムバラクが釈放され、国内銀行が平常運転に復帰した。8月30日の[[CNN]]では、[[中国石油化工]]が米国[[ヒューストン]]のアパッチ([[:en:Apache Corporation|Apache Corporation]])とエジプト内[[油田]]事業を提携したことが報じられた。10月下旬、[[アラブ首長国連邦]]がエジプトに50億ドルの支援を申し出た。エジプトエリートの売国とソブリン危機は翌年4月まで深化していった。\n\nなお、イブラヒームは、クーデター後に成立した[[ハーゼム・エル=ベブラーウィー|ベブラーウィー]]暫定内閣でも続投している。\n\n=== アッ=シーシー政権 ===\n[[ファイル:Abdel_Fattah_el-Sisi_September_2017.jpg|thumb|180px|[[アブドルファッターフ・アッ=シーシー]]。2013年のクーデターを主導し、大統領に就任した]]\n2014年5月26日 - 28日に行われた大統領選挙では2013年のクーデターの主導者[[アブドルファッターフ・アッ=シーシー]]が当選して6月8日、大統領に就任し<ref>http://www.afpbb.com/articles/-/3017089 エジプトのシシ新大統領が就任、前大統領の追放からほぼ1年</ref>、8月5日からは[[新スエズ運河]]の建設など大規模なプロジェクトを推し進めた。[[2015年]][[3月13日]]には、[[カイロ]]の東側に向こう5 - 7年で、450億ドルを投じて新しい行政首都の建設も計画していることを明らかにした<ref>http://jp.reuters.com/article/topNews/idJPKBN0MC0B720150316 エジプト、カイロの東に新行政首都建設へ=住宅相(ロイター通信)</ref>。行政と経済の中心となる新首都はカイロと紅海の間に建設され、広さは約700平方キロメートルで、米[[ニューヨーク]]の[[マンハッタン]]のおよそ12倍の面積の予定であり<ref>http://jp.wsj.com/articles/SB10030317691824024149004580519060782977390 エジプト、新首都建設を計画―カイロと紅海の間に</ref>、大統領府などエジプトの行政を担う地区は当初覚書を交わした[[アラブ首長国連邦]](UAE)の[[エマール・プロパティーズ]]や[[中華人民共和国|中国]]の[[中国建築|中国建築股份有限公司]]との破談はあったものの[[2016年]]4月に地元企業によって工事を開始し<ref>{{Cite news|url=http://www.xinhuanet.com/english/2016-04/02/c_135246252.htm|tile=Egypt kicks off 1st phase of building new capital|work= [[新華社]]|date=2016-04-02|accessdate=2018-06-25}}</ref>、代わりにエジプト政府がピラミッド<ref>{{Cite news|url= https://zhuanlan.zhihu.com/p/41444500|title=埃及总理表示,将新首都CBD项目建成"金字塔"一样的地标|work= 知乎专栏|date=2018-08-06|accessdate=2018-08-18}}</ref>に匹敵する一大事業の[[ランドマーク]]と位置づけている、アフリカでもっとも高いビルも建設予定である経済を担う[[中央業務地区]]を中国企業が請け負って[[2018年]]3月に着工した<ref>{{Cite news|url=http://www.xinhuanet.com/english/2017-10/12/c_136672905.htm|tile=Chinese firm finalizes deal for building huge business district in Egypt's new capital|work= amwalalghad|date=2017-10-12|accessdate=2018-07-28}}</ref><ref>{{Cite news|url=http://en.amwalalghad.com/china-to-build-egypt-africa-tallest-tower-in-new-capital-spokesperson/|tile=China to build Egypt-Africa tallest tower in new capital: spokesperson|work= amwalalghad|date=2018-06-28|accessdate=2018-06-29}}</ref><ref>{{Cite news|url=https://www.bloomberg.com/news/articles/2018-03-18/china-to-finance-majority-of-new-egypt-capital-s-tower-district|tile=China to Finance Majority of New Egypt Capital's Tower District|work= [[ブルームバーグ (企業)|ブルームバーグ]]|date=2018-03-18|accessdate=2018-07-28}}</ref><ref>{{Cite news|url= http://eg.mofcom.gov.cn/article/todayheader/201803/20180302720170.shtml|title=中建埃及新行政首都CBD项目开工仪式在开罗举行|work= 中華人民共和国駐エジプト大使館|date=2018-03-21|accessdate=2018-06-25}}</ref>。\n\nUAEや中国と破談した背景には通貨不安が存在する。2016年11月3日、エジプト中央銀行が[[変動相場制]]を採用すると発表した。エジプト・ポンドが売られるのを革命の影響だけで片付けるには、この不安は長引きすぎている。同行は6日後、国際金融機関から20億ドルの[[シャドー・バンキング・システム#レポ市場|レポ借入]]を始めた。4月に[[国際通貨基金]]からも120億ドルを借りている。エジプトは経済主権を失っている。[[ガーディアン]]が10月4日に報じたところでは、国際金融機関の[[バークレイズ]]がエジプト事業を[[ダノン#ワファバンク|ワファバンク]]に売却した。\n\n2017年末、政府が[[世界銀行]]に対し、エチオピアのダム事業を差し止めるように要請した。世銀は5月にエジプトへ10億ドルを追加融資しており、エジプトは厳しい立場にある。翌2018年1月中旬にエチオピアとの水紛争が妥協に至った。5月末にエジプトの対外債務累積額は829億ドルであった。9月、ムバラクの息子ら2人([[:en:Gamal Mubarak|Gamal]] and [[:en:Alaa Mubarak|Alaa]])がエジプトの株価を操作した疑いで逮捕された。\n\n== 政治 ==\n{{エジプトの政治}}\n{{Main2|詳細は{{仮リンク|エジプトの政治|en|Politics of Egypt|ar|السياسة في مصر}}および[[近代エジプトの国家元首の一覧]]}}\n\n=== 政体 ===\n[[共和制]]\n=== 大統領 ===\n[[国家元首]]の大統領は、立法・行政・司法の三権において大きな権限を有する。また国軍([[エジプト軍]])の[[総司令官|最高司令官]]でもある。大統領の選出は、[[直接選挙]]による。任期は4年で、三選禁止となった<ref>{{Cite journal|和書|author = 鈴木恵美|coauthors = |title = エジプト革命以後の新体制形成過程における軍の役割|journal = 地域研究|volume = 12|issue = 1|pages = 135-147|publisher = 京都大学地域研究統合情報センター|location = |date = 2012-03-28|language = |url = http://www.cias.kyoto-u.ac.jp/publish/?cat=4|jstor = |issn = 1349-5038 |isbn =978-4-8122-1178-6|doi = |id = |naid = |accessdate = 2012-06-17}}</ref>。最高大統領選挙委員会(The Supreme Presidential Election Commission, SPEC)委員長は、最高憲法裁判所長官が兼任していたが、現在は副長官がその任を負う。\n\n第2代大統領[[ガマール・アブドゥル=ナーセル]]以来、事実上の終身制が慣例で、第4代大統領[[ホスニー・ムバーラク]]は[[1981年]]の就任以来、約30年にわたって[[独裁]]体制を築いた。ムバーラクの[[親米]]・親[[イスラエル]]路線が欧米諸国によって評価されたために、独裁が見逃されてきた面がある。当時は任期6年、多選可。議会が候補者を指名し、国民は[[信任投票]]を行っていた。ただし、2005年は複数候補者による大統領選挙が実施された。\n\n[[2011年]]9月に大統領選が予定されていたが、2011年1月に騒乱状態となり、[[2月11日]]、ムバーラクは国民の突き上げを受ける形で辞任した。翌日より[[国防大臣]]で[[エジプト軍最高評議会|軍最高評議会]]議長の[[ムハンマド・フセイン・タンターウィー]]が元首代行を務め、それは[[2012年エジプト大統領選挙]]の当選者[[ムハンマド・ムルシー]]が[[6月30日]]に大統領に就任するまで続いた。2011年[[3月19日]]、[[憲法改正]]に関する[[国民投票]]が行われ、承認された<ref name=jpnmofa>{{Cite web|title = エジプト・アラブ共和国 基礎データ|work = 各国:地域情勢|publisher = 外務省(日本)|url = http://www.mofa.go.jp/mofaj/area/egypt/data.html|accessdate =2016-10-01}}</ref><ref>{{Cite web|title = エジプト基礎情報~政治・外交|work = エジプト情報|publisher = 在エジプト日本国大使館|date = 2011-07-30|url = http://www.eg.emb-japan.go.jp/j/egypt_info/basic/seiji.htm|accessdate =2016-10-01}}</ref>。\n\nしかしムルシー政権発足からわずか1年後の2013年、[[2013年エジプトクーデター|軍事クーデター]]が勃発。ムルシーは解任され、エジプトは再び軍による統治へと逆戻りした。2014年1月に再び憲法が修正され<ref name=jpnmofa />、同年5月の大統領選挙を経て再び民政へと復帰した。\n\n=== 議会 ===\n議会は、[[一院制]]の'''人民議会'''(マジュリス・アッ=シャアブ)。全508議席で、498議席は公選、10議席は大統領指名枠<ref>2011年12月現在では、定数498議席のうち、3分の2(332議席)が政党(連合)リストによる[[比例代表制]]で、3分の1(166議席)が[[小選挙区制]]で選出される</ref>。任期5年。これとは別に、'''諮問評議会'''(シューラ)が1980年設置されたが、立法権は有さない大統領の諮問機関である<ref>{{Cite web| author = 鈴木恵美\n | coauthors =\n | title = エジプト\n | work = 中東・イスラーム諸国の民主化\n | publisher = NIHU プログラム・イスラーム地域研究、東京大学拠点\n | date =\n | url = http://www.l.u-tokyo.ac.jp/~dbmedm06/me_d13n/database/egypt/egypt_all.html\n | format =\n | doi =\n | accessdate = 2012-06-15}}</ref>。全270議席で、180議席が公選、90議席が大統領指名枠。\n\n=== 選挙 ===\n2011年[[11月21日]]、[[イサーム・シャラフ]]暫定内閣は、デモと中央[[治安部隊]]の衝突で多数の死者が出たことの責任を取り軍最高評議会へ辞表を提出した。軍最高評議会議長タンターウィーは[[11月22日]]テレビで演説し、「28日からの人民議会選挙を予定通り実施し、次期大統領選挙を2012年6月末までに実施する」と表明した<ref>[http://www.asahi.com/special/meastdemo/TKY201111220122.html エジプト・シャラフ内閣が総辞職表明 デモの混乱で引責] 『朝日新聞』 2011年11月22日</ref><ref>[http://www.asahi.com/special/meastdemo/TKY201111230004.html エジプト軍議長「近く挙国一致内閣」とテレビ演説] 『朝日新聞』 2011年11月23日</ref><ref>[http://www.asahi.com/special/meastdemo/TKY201111250136.html エジプト軍議長、元首相に組閣要請 選挙管理内閣を想定] 『朝日新聞』 2011年11月25日</ref>。人民議会選挙は2011年[[11月28日]]から[[2012年]][[1月]]までに、行政区ごとに3回に分けて、また、投票日を1日で終わりにせず2日間をとり、大勢の投票での混乱を緩和し実施、諮問評議会選挙も[[3月11日]]までに実施された。また[[5月23日]]と[[5月24日|24日]]に[[2012年エジプト大統領選挙|大統領選挙]]の投票が実施された。\n\nしかし、[[6月14日]]に最高[[憲法裁判所]]が出した「現行の議会選挙法は違憲で無効(3分の1の議員について当選を無効と認定)」との判決を受け<ref>[http://www.asahi.com/international/reuters/RTR201206150031.html「エジプト議会選は無効」、憲法裁が大統領選直前に違法判断] 『朝日新聞』 2012年6月15日</ref><ref>[http://www.news24.jp/articles/2012/06/15/10207632.html エジプト議会、解散へ 大統領選にも影響か] [[日テレNEWS24]] 2012年6月15日</ref>、[[6月16日|16日]]までにタンターウィー議長は人民議会解散を命じた<ref>{{Cite news\n  | author = カイロ共同\n | title = エジプト、軍が議会に解散命令 憲法裁判所の判断で\n | newspaper = 47NEWS\n | location =\n | pages = 6\n | language =\n | publisher = 共同通信\n | date = 2012-06-18\n | url = http://www.47news.jp/CN/201206/CN2012061701001315.html\n | accessdate = 2012-06-18}}</ref>。大統領選挙の決選投票は6月16日と[[6月17日|17日]]に実施され、イスラム主義系の[[ムハンマド・ムルシー]]が当選した。\n\n=== 政党 ===\n{{main|エジプトの政党}}\n\n2011年3月28日に改正政党法が公表され、エジプトでは[[宗教]]を基盤とした[[政党]]が禁止された。そのため、[[ムスリム同胞団]](事実上の最大[[野党]]であった)などは非合法化され、初めての選挙(人民議会選挙)では、ムスリム同胞団を母体とする[[自由公正党]]({{lang-ar|حزب الحرية والعدالة}} - {{lang|en|Ḥizb Al-Ḥurriya Wal-'Adala}}, {{lang-en-short|Freedom and Justice Party}})が結成された。また、[[ヌール党]]([[サラフィー主義]]、イスラーム保守派)、[[新ワフド党]](エジプト最古の政党)、[[政党連合]]{{仮リンク|エジプト・ブロック|en|Egyptian Bloc}}(含む[[自由エジプト人党]](世俗派)、[[エジプト社会民主党]](中道左派)、[[国民進歩統一党]](左派))、[[ワサト党]]、{{仮リンク|政党連合革命継続|en|The Revolution Continues Alliance}}、{{仮リンク|アダラ党|en|Justice Party (Egypt)|label=公正党}}({{lang-ar|حزب العدل}} - {{lang|en|Hizb ElAdl}}, {{lang-en-short|Justice Party}}、今回の革命の中心を担った青年活動家による政党)など、全部で50以上の政党が参加していた<ref>{{Cite web\n | last =\n | first =\n | authorlink =\n | coauthors =\n | title = エジプト・アラブ共和国 基礎データ\n | work = 各国:地域情勢\n | publisher = 外務省(日本)\n | date =\n | url = http://www.mofa.go.jp/mofaj/area/egypt/data.html\n | format =\n | doi =\n | accessdate =2012-06-17 }}</ref><ref>{{Cite web\n | last =\n | first =\n | authorlink =\n | coauthors =\n | title = エジプト基礎情報~政治・外交\n | work = エジプト情報\n | publisher = 在エジプト日本国大使館\n | date = 2011-07-30\n | url = http://www.eg.emb-japan.go.jp/j/egypt_info/basic/seiji.htm\n | format =\n | doi =\n | accessdate =2012-06-17 }}</ref>。\n\n=== 政府 ===\n* {{仮リンク|エジプトの首相|en|Prime Minister of Egypt|label=首相}}・{{仮リンク|ムスタファ・マドブーリー|en|Moustafa Madbouly}} 2018年6月就任。\n* {{仮リンク|エジプトの国防大臣の一覧|en|List of Ministers of Defence of Egypt|label=国防大臣}}・{{仮リンク|セドキ・ソブヒィ|en|Sedki Sobhi}} 2014年3月就任、エジプト軍総司令官。\n\n== 司法 ==\n{{Main2|詳細は[[エジプトの法]]}}\n[[ナポレオン法典]]と[[イスラム法]]に基づく、混合した法システム<ref>{{Cite web|title = Egypt| publisher = CIA-The World Factbook| url = https://www.cia.gov/library/publications/the-world-factbook/geos/eg.html| accessdate = 2012-06-15}}</ref>。フランスと同じく、司法訴訟と行政訴訟は別の系統の裁判所が担当する。{{仮リンク|フランスにおける裁判所の二元性|fr|Dualité des ordres de juridiction en France}}参照。\n* {{仮リンク|最高憲法裁判所|en|Supreme Constitutional Court of Egypt}} - 法律が違憲か否かを判断する。1979年設立。長官はアドリー・マンスール(2013年7月1日 - )<ref>{{Cite web| title = Aperçu Historique | publisher = 最高憲法裁判所\n  | url =http://www.hccourt.gov.eg/About/history.asp\n | accessdate = 2013-08-27}}</ref>。ほか、10人の判事は1998年から2013年7月までに着任している<ref>{{Cite web| title = Current Members of the Court | publisher = 最高憲法裁判所\n | date =\n | url =http://www.hccourt.gov.eg/CourtMembers/CurrentCourt.asp\n | accessdate = 2013-08-27}}</ref>。長官は[[最高大統領選挙委員会]](The Supreme Presidential Election Commission, SPEC)の委員長を兼任していた<ref>{{Cite news\n | author = 貫洞欣寛\n| title = エジプト司法が逆襲 ムバラク裁判「判決批判許さん」\n | newspaper = 朝日新聞 | date = 2012-06-09\n | url = http://digital.asahi.com/articles/TKY201206080567.html?ref=comkiji_txt_end\n | accessdate = 2012-06-15}}</ref>が、2012年9月には副長官ハーティム・バガートゥーが務めていた<ref>{{Cite web\n | title = 中東要人講演会\n | newspaper = 中東調査会 | date =\n | url = http://www.meij.or.jp/members/20120903124551000000.pdf\n | accessdate = 2012-09-09}}</ref>。\n* [[司法省]]管轄の一般の[[裁判所]] - [[最高裁判所]]([[破毀院]]、1931年設立)と以下の[[下級裁判所]]([[控訴院]]、[[第一審]]裁判所、[[地区裁判所]]および[[家庭裁判所]] - 2004年設立)からなる。\n* [[国務院]]管轄の[[行政裁判所]] - [[コンセイユ・デタ]] - 1946年設立<ref>{{Cite web| title = Judiciary Authority| publisher = Egypt State Information Service\n| url =http://www.sis.gov.eg/En/Templates/Categories/tmpListArticles.aspx?CatID=248\n | accessdate = 2013-08-29}}</ref>。2011年[[2月19日]]、従来の[[政党委員会]](政府運営)の申請却下に対する不服申し立てを認めた形の判決で、[[政党]]の許認可<ref>{{Cite web| title = エジプトでイスラーム政党が認可 | work =[中東研ニュースリポート]| publisher = [[日本エネルギー経済研究所]] 中東研究センター| date = 2月21日\n | url =http://jime.ieej.or.jp/htm/extra/ronbun/003pol.htm\n | format =\n | doi =\n | accessdate = 2012-05-19}}</ref>を、[[4月16日]]、[[与党]]・[[国民民主党 (エジプト)|国民民主党]](NDP)の解散を裁定した。\n\n== 国際関係 ==\n{{main|{{仮リンク|エジプトの国際関係|en|Foreign relations of Egypt}}}}\n国力、文化的影響力などの面からアラブ世界のリーダーとなっている。ガマール・アブドゥル=ナーセル時代には[[非同盟諸国]]の雄としてアラブに限らない影響力を持ったが、ナーセル死後はその影響力は衰えた。ナーセル時代は親ソ連だった外交はサーダート時代に入って親米路線となり、さらにそれに伴いイスラエルとの外交関係が進展。1978年の[[キャンプ・デービッド合意]]とその翌年のイスラエル国交回復によって親米路線は確立したが、これはイスラエルを仇敵とするアラブ諸国の憤激を買い、ほとんどのアラブ諸国から断交されることとなった。その後、[[1981年]]にサーダートが暗殺されたあとに政権を握ったムバーラクは親米路線を堅持する一方、アラブ諸国との関係回復を進め、1988年には[[シリア]]、[[レバノン]]、[[リビア]]を除くすべてのアラブ諸国との関係が回復した<ref>『アフリカを知る事典』、平凡社、ISBN 4-582-12623-5 1989年2月6日 初版第1刷 p.58</ref>。以降はアラブの大国として域内諸国と協調する一方、アフリカの一国として2004年9月には[[国際連合安全保障理事会]]の[[常任理事国]]入りを目指すことを表明した。[[2011年]]、[[パレスチナ]]の[[ガザ]]の[[国境検問所|検問所]]を開放した。また、[[イラン]]との関係を修復しようとしている<ref>[http://www.asyura2.com/11/lunchbreak47/msg/284.html エジプト:ガザ、出入り自由に 検問所開放、外交転換鮮明に]</ref>。\n\nシーシー政権はムスリム同胞団政権時代のこうした外交政策とは一線を画している。欧米や日本、親米アラブ諸国、イスラエルのほか、中国や[[ロシア]]<ref>[https://www.nikkei.com/article/DGXMZO24487270R11C17A2FF2000/ 「ロシアが中東に接近 プーチン大統領、エジプトに軍事協力 米の中東政策の揺らぎつく」][[日本経済新聞]]ニュースサイト(2017年12月11日)2019年1月9日閲覧。</ref>などと広範な協力関係を築いている。\n\n[[2017年カタール外交危機]]では、サウジアラビアとともに、ムスリム同胞団を支援してきたカタールと[[国交]]を断絶した国のひとつとなった。またサウジアラビアとは、[[アカバ湾]]口に架橋して陸上往来を可能とするプロジェクトが話し合われた([[チラン島]]を参照)。\n\n=== 日本国との関係 ===\n{{Main|日本とエジプトの関係}}\n\n== 軍事 ==\n[[ファイル:Abrams in Tahrir.jpg|thumb|陸軍の主力戦車[[M1エイブラムス]]]]\n{{Main|エジプト軍}}\n中東有数の軍事大国であり、イスラエルと軍事的に対抗できる数少ないアラブ国家であると目されている。2010年11月見積もりの総兵力は46万8,500人。[[予備役]]47万9,000人。兵員数は[[陸軍]]34万人([[軍警察]]を含む)、[[海軍]]1万8,500人([[沿岸警備隊]]を含む)、[[空軍]]3万人、[[防空軍]]8万人<ref>{{Cite book\n | title = The Middle East and North Africa 2012\n | publisher = Routledge\n | edition = 58th\n | date = 2011\n | page = 380\n | isbn = 978-1-85743-626-6}}</ref>。内務省管轄の中央[[治安部隊]]、[[国境警備隊]]と国防省管轄の革命[[国家警備隊]](大統領[[親衛隊]])の[[準軍事組織]]が存在する。\n\nイスラエルとは4度にわたる[[中東戦争]]で毎回干戈を交えたが、[[第二次中東戦争]]で政治的な勝利を得、[[第四次中東戦争]]の緒戦で勝利を収めたほかは劣勢のまま終わっている。その後はイスラエルと接近し、シーシー政権下ではシナイ半島で活動する[[イスラム過激派]]([[ISIS]])に対する掃討作戦で、[[イスラエル空軍]]による[[爆撃]]を容認していることを公式に認めた<ref>[http://www.tokyo-np.co.jp/article/world/list/201901/CK2019010602000123.html 「対IS イスラエルと協力」エジプト大統領 治安重視]『[[東京新聞]]』朝刊2019年1月6日(国際面)2019年1月9日閲覧。</ref>。\n\n軍事的にはアメリカと協力関係にあるため、[[北大西洋条約機構]](NATO)のメンバーではないものの同機構とは親密な関係を保っている。また、ロシアや中国からも武器の供給を受けており、中露の主導する[[上海協力機構]]への参加も申請している<ref>{{Cite web|date=2015-07-11|url=http://jp.sputniknews.com/politics/20150710/556387.html|title=上海協力機構事務総長:機構はカラー革命など恐れていない|publisher=Sputnik 日本|accessdate=2019-08-18}}</ref><ref>{{Cite web|date=2015-07-27|url=http://arab.rbth.com/news/2015/07/27/30859.html|title=وزير الخارجية المصري: مصر لا تستبعد عضويتها في منظمة \"شنغهاي\" للتعاون في المستقبل | روسيا ما وراء العناوين|publisher=ロシアNOWアラビア語版|accessdate=2019-08-18}}</ref><ref>{{Cite web|date=2016-06-23|url=http://www.interfax.com/newsinf.asp?id=683491|title=Syria, Israel, Egypt willing to join SCO's activity - president's special envoy|publisher=[[インテルファクス通信]]|accessdate=2019-08-18}}</ref>。\n\n== 地方行政区画 ==\n[[ファイル:Governorates of Egypt.svg|thumb|right|280px|エジプトの行政区画]]\n{{Main|エジプトの県}}\nエジプトの最上級の地方行政単位は、29あるムハーファザ({{lang|ar|محافظة}}, '''県'''、'''州''' と訳されることもある)である。[[知事]]は中央政府から派遣される官選知事で、内務省の管轄下において中央集権体制をとる。極端な行政区分でナイル川流域やナイル下流は非常に細分化されているにもかかわらず、南部は非常に大まかに分けられている。これは、ナイル流域以外が全域砂漠であり、居住者がほとんどいないことによるものである。\n\n=== 主要都市 ===\n{{Main|エジプトの都市の一覧}}\n{{Main|エジプトの県}}\n{{Col-begin}}\n{{Col-break}}\n* [[アシュート]]\n* [[アスワン]]\n* [[マラウィー]]\n* [[アブ・シンベル]]\n* [[アレクサンドリア]]\n* [[イスマイリア]]\n* [[インバーバ]]\n* [[エスナ]]\n* [[エドフ]]\n* [[エル・アラメイン]]\n* [[カイロ]]\n{{Col-break}}\n* [[ケナ]]\n* [[ギーザ]]\n* [[コム・オンボ]]\n* [[ザガジグ]]\n* [[サッカラ]]\n* [[シャルム・エル・シェイク]]\n* [[スエズ]]\n* [[スブラエルケーマ]]\n* [[ソハーグ県|ソハーグ]]\n* [[ダマンフール]]\n* [[タンター]]\n{{Col-break}}\n* [[ディムヤート]]\n* [[ハルガダ]]\n* [[ファイユーム]]\n* [[ベニスエフ]]\n* [[ポートサイド]]\n* [[エル=マハッラ・エル=コブラ|マハッラ・クブラー]]\n* [[マンスーラ]]\n* [[ミニヤー県|ミニヤ]]\n* [[メンフィス (エジプト)]]\n* [[ルクソール]]\n* [[ロゼッタ (エジプト)|ロゼッタ]]\n{{Col-end}}\n<!-- 五十音順 -->\n\n== 地理 ==\n{{Main2|詳細は{{仮リンク|エジプトの地理|en|Geography of Egypt}}}}\n[[ファイル:Egypt Topography.png|thumb|200px|エジプトの地形図]]\n[[ファイル:Egypt 2010 population density1.png|thumb|200px|エジプトの人口分布図]]\n[[アフリカ大陸]]北東隅に位置し、国土面積は100万2,450㎢で、世界で30番目の大きさである。国土の95%は砂漠で、ナイル川の西側には[[サハラ砂漠]]の一部である西部砂漠([[リビア砂漠]])、東側には[[紅海]]と[[スエズ湾]]に接する[[東部砂漠]]({{lang|ar|الصحراء الشرقية}} - シャルキーヤ砂漠)がある。西部砂漠には海抜0m以下という地域が多く、面積1万8,000km<sup>2</sup>の広さをもつ[[カッターラ低地]]は海面より133mも低く、[[ジブチ]]の[[アッサル湖]]に次いでアフリカ大陸で2番目に低い地点である。[[シナイ半島]]の北部は砂漠、南部は山地になっており、エジプト最高峰の[[カテリーナ山]](2,637m)や、[[旧約聖書]]で[[モーセ]]が[[モーセの十戒|十戒]]を授かったといわれる[[シナイ山]](2,285m)がある。シナイ半島とナイル河谷との間は[[スエズ湾]]が大きく湾入して細くくびれており、ここが[[アフリカ大陸]]と[[ユーラシア大陸]]の境目とされている。この細い部分は低地であるため、[[スエズ運河]]が建設され、紅海と地中海、ひいてはヨーロッパとアジアを結ぶ大動脈となっている。\n[[ファイル:S F-E-CAMERON 2006-10-EGYPT-LUXOR-0439.JPG|thumb|left|200px|[[ナイル川]]]]\n[[ナイル川]]は南隣の[[スーダン]]で[[白ナイル川]]と[[青ナイル川]]が合流し、エジプト国内を南北1,545Kmにもわたって北上し、河口で広大な[[三角州|デルタ]]を形成して[[地中海]]にそそぐ。[[アスワン]]以北は人口稠密な河谷が続くが、幅は5Kmほどとさほど広くない。上エジプト中部のキーナでの湾曲以降はやや幅が広がり<ref>『朝倉世界地理講座 アフリカI』初版所収「ナイル川の自然形態」春山成子、2007年4月10日(朝倉書店)p198</ref>、[[アシュート]]近辺で分岐の支流が[[ファイユーム]]近郊の[[モエリス湖|カールーン湖]]({{lang|ar|Birket Qarun}}、かつての[[モエリス湖]])へと流れ込む。この支流によって、カールーン湖近辺は肥沃な{{仮リンク|ファイユーム・オアシス|en|Faiyum Oasis}}を形成している。一方、本流は、[[カイロ]]近辺で典型的な扇状三角州となる'''[[ナイル・デルタ]]'''は、地中海に向かって約250Kmも広がっている。かつてはナイル川によって運ばれる土で、デルタ地域は国内でもっとも肥沃な土地だったが、[[アスワン・ハイ・ダム]]によってナイル川の水量が減少したため、地中海から逆に塩水が入りこむようになった。ナイル河谷は、古くから[[下エジプト]]と[[上エジプト]]という、カイロを境にした2つの地域に分けられている。前者はデルタ地域を指し、後者はカイロから上流の谷を指している。ナイル河谷は、世界でももっとも[[人口密度]]の高い地域のひとつである。\n\nナイル河谷以外にはほとんど人は住まず、わずかな人が[[オアシス]]に集住しているのみである。乾燥が激しく地形がなだらかなため、特にリビア砂漠側には[[ワジ]](涸れ川)が全くない。[[シワ・オアシス|シーワ]]、[[ファラフラ (エジプト)|ファラーフラ]]、[[ハルガ]]、バハレイヤ、ダフラといった[[オアシス]]が点在している<ref>『ミリオーネ全世界事典』第10巻 アフリカI([[学習研究社]]、1980年11月)p206</ref>。ナイル以東のシャルキーヤ砂漠は地形がやや急峻であり、ワジがいくつか存在する。紅海沿岸も降雨はほとんどないが、ナイルと[[アラビア半島]]を結ぶ重要な交通路に位置しているため、いくつかの小さな港が存在する。\n\n=== 国境 ===\n1885年に列強が[[ドイツ]]の[[ベルリン]]で開いた会議で、それまでに植民地化していたアフリカの分割を確定した。リビア国境の大部分で[[東経25度線|東経25度]]に、スーダンでは[[北緯22度線|北緯22度]]に定めたため、国境が直線的である。\n\nスーダンとの間では、エジプトが[[実効支配]]する[[ハラーイブ・トライアングル]]に対してスーダンも領有権を主張している。一方、その西にある[[ビル・タウィール]]は両国とも領有権を主張していない[[無主地]]である。\n\n=== 気候 ===\n{{Main2|詳細は{{仮リンク|エジプトの気候|en|Climate of Egypt}}}}\n国土の全域が[[砂漠気候]]で人口はナイル河谷および[[デルタ地帯]]、[[スエズ運河]]付近に集中し、国土の大半は[[サハラ砂漠]]に属する。夏には日中の気温は40℃を超え、50℃になることもある。降雨はわずかに[[地中海|地中海岸]]にあるにすぎない。冬の平均気温は下エジプトで13 - 14℃、上エジプトで16℃程度である。2013年12月にはカイロ市内でも降雪・積雪があったが、観測史上初ということで注目された。\n\n== 経済 ==\n{{Main2|詳細は{{仮リンク|エジプトの経済|en|Economy of Egypt}}}}\n[[ファイル:View from Cairo Tower 31march2007.jpg|thumb|left|220px|カイロはビジネス、文化、政治などを総合評価した[[世界都市#世界と指数|世界都市格付け]]でアフリカ第1位の都市と評価された<ref>[http://www.atkearney.com/documents/10192/4461492/Global+Cities+Present+and+Future-GCI+2014.pdf/3628fd7d-70be-41bf-99d6-4c8eaf984cd5 2014 Global Cities Index and Emerging Cities Outlook] (2014年4月公表)</ref>]]\n\n2018年のエジプトの[[GDP]]は約2,496億ドル(約27兆円)、一人当たりでは2,573ドルである<ref name=\"economy\" />。アフリカでは屈指の経済規模であり、[[BRICs]]の次に経済発展が期待できるとされている[[NEXT11]]の一国にも数えられている。しかし、一人当たりのGDPでみると、中東や北アフリカ諸国の中では、最低水準であり、[[トルコ]]の約4分の1、[[イラン]]の半分に過ぎず、更に同じ北アフリカ諸国である[[チュニジア]]や[[モロッコ]]に比べても、水準は低い<ref name=\"エジプト経済の現状と今後の展望\" >{{Cite report|author=堀江 正人|date=2019-01-08|title=エジプト経済の現状と今後の展望 ~経済の復調が注目される中東北アフリカの大国エジプト~|url=https://www.murc.jp/report/economy/analysis/research/report_190108/|publisher=[[三菱UFJリサーチ&コンサルティング|三菱UFJリサーチ&コンサルティング株式会社]]|accessdate=2020-02-03}}</ref>。\n\n[[スエズ運河]]収入と[[観光産業]]収入、更には在外労働者からの送金の3大外貨収入の依存が大きく、エジプト政府は、それらの手段に安易に頼っている<ref name=\"エジプト経済の現状と今後の展望\" />。更に政情に左右されやすい。\n\nかつては[[綿花]]の世界的生産地であり、ナイル川のもたらす肥沃な土壌とあいまって農業が重要な役割を果たしていた。しかし、通年灌漑の導入によってナイルの洪水に頼ることが減り、アスワン・ハイ・ダムの建設によって、上流からの土壌がせき止められるようになった。そのため、ダムによる水位コントロールによって農地が大幅に拡大した。農業生産高が格段に上がったにもかかわらず、[[肥料]]の集中投入などが必要になったため、コストが増大し、近年代表的な農業製品である綿製品は価格競争において後塵を拝している。\n\n[[1970年代]]に農業の機械化および各種生産業における機械への転換により、地方での労働力の過剰供給が見受けられ、労働力は都市部に流出し、治安・衛生の悪化及び社会政策費の増大を招いた。80年代には、[[石油]]産業従事者の増大に伴い、農業において労働力不足が顕著となる。このため綿花および綿製品の価格上昇を招き、国際競争力を失った。1990年代から、[[国際通貨基金|IMF]]の支援を受け経済成長率5%を達成するが、社会福祉政策の低所得者向け補助の増大および失業率10%前後と支出の増大に加え、資源に乏しく食料も輸入に頼るため、2004年には物価上昇率10%に達するなどの構造的問題を抱えている。現状、中小企業育成による国際競争力の強化、雇用創生に取り組んでいるが、結果が出ていない。[[2004年]]のナズィーフ内閣が成立後は、国営企業の民営化および税制改革に取り組んでいる。[[2008年]]、世界的な食料高騰によるデモが発生した。\n\nまた、「[[アラブの春]]」により、2012年~2014年の間は2~3%台と一時低迷していたが、その後政情の安定化により、2015年には、4%台に回復している。また[[IMF]]の勧告を受け、2016年に[[為替相場]]の大幅切り下げや[[補助金]]削減などの改革をしたことで、経済健全化への期待感より、外国からの資本流入が拡大していき、経済の復調を遂げている<ref name=\"エジプト経済の現状と今後の展望\" />。\n\n農業は農薬などを大量に使っているため世界一コストの高い農業となっているがそれなりの自給率を保っているし果物は日本にもジャムなどに加工され輸出されている。工業は石油などの資源はないが様々な工業が発展しており今後も成長が見込まれる。近年IT IC産業が急速に成長している。\nしかしながらGDPの約半分が軍関連企業が占めていて主に農業 建築業などの工業を担っている。\n金融はイスラーム銀行も近代式銀行の両方とも発達しており投資家層も厚くトランプ政権にはエジプトの敏腕女性投資家が起用されている。\n\n== 交通 ==\n{{Main|エジプトの交通}}\nエジプトの交通の柱は歴史上常に[[ナイル川]]であった。[[アスワン・ハイ・ダム]]の建設後、ナイル川の流れは穏やかになり、交通路として安定性が増した。しかし貨物輸送はトラック輸送が主となり、内陸水運の貨物国内シェアは2%にすぎない。[[ファルーカ]]という伝統的な[[帆船]]や、観光客用のリバークルーズなどの運航もある。\n\n[[鉄道]]は、国有の[[エジプト鉄道]]が運営している。営業キロは5,063キロにのぼり、カイロを起点として[[ナイル川デルタ]]や[[ナイル河谷]]の主要都市を結んでいる。\n\n航空は、[[フラッグ・キャリア]]である[[エジプト航空]]を筆頭にいくつもの航空会社が運行している。[[カイロ国際空港]]はこの地域の[[ハブ空港]]の一つである。\n\n== 国民 ==\n{{Main2|詳細は{{仮リンク|エジプトの人口統計|en|Demographics of Egypt}}}}\n[[ファイル:Cairo mosques.jpg|thumb|left|220px|[[カイロ]]の[[モスク]]]]\n=== 人口構成 ===\n[[ファイル:Egypt population pyramid 2005.svg|thumb|[[2005年]]の人口ピラミッド。30歳以下の若年層が非常に多く、若者の失業が深刻な問題となっている]]\n[[ファイル:Egypt demography.png|thumb|400px|[[国際連合食糧農業機関]]の2005年データによるエジプト人口の推移。1960年の3,000万人弱から人口が急増しているのが読み取れる]]\nエジプトの人口は8,254万人(2013年1月現在)で、近年急速に増大し続けている。年齢構成は0から14歳が33%、15から64歳が62.7%、65歳以上が4.3%(2010年)で、若年層が非常に多く、ピラミッド型の人口構成をしている。しかし、若年層はさらに増加傾向にあるにもかかわらず、経済はそれほど拡大していないため、若者の[[失業]]が深刻な問題となっており、[[2011年エジプト騒乱]]の原因のひとつともなった。年齢の中央値は24歳である。人口増加率は2.033%。\n\n=== 民族 ===\n{{See also|エジプト民族}}\n住民は[[ムスリム|イスラム教徒]]と[[キリスト教徒]]([[コプト教会]]、[[東方正教会]]など)からなる[[アラブ人]]がほとんどを占め、そのほかに[[ベドウィン]](遊牧民)や[[ベルベル人]]、{{仮リンク|ヌビア人|en|Nubian people}}、[[アルメニア人]]、[[トルコ人]]、[[ギリシア人]]などがいる。遺伝的に見れば、エジプト住民のほとんどが古代エジプト人の直系であり、[[エジプト民族]]との呼称でも呼ばれる所以である。また、エジプト人の大半は、イスラム勢力のエジプト征服とそれに続くイスラム系国家の統治の間に言語学的にアラブ化し、本来のエジプト語を捨てた人々であるとする見解がある。それだけではなく、長いイスラーム統治時代の人的交流と都市としての重要性から、多くのアラブ人が流入・定住していったのも事実である。1258年にアッバース朝が崩壊した際、[[カリフ]]周辺を含む多くの人々がエジプト(おもにカイロ近郊)へ移住したという史実は、中東地域一帯における交流が盛んであったことを示す一例である。現代においてカイロは[[世界都市]]となっており、また歴史的にも[[アル=アズハル大学]]は、イスラム教[[スンナ派]]で最高権威を有する教育機関として、中東・イスラム圏各地から人々が参集する。\n\nなお[[古代エジプト]]文明の印象があまりに大きいためか、特に現代エジプトに対する知識を多く持たない人は、現代のエジプト人を古代エジプト人そのままにイメージしていることが多い。すなわち、[[ギザの大スフィンクス]]や[[ギザの大ピラミッド]]を建て、太陽神やさまざまな神を信仰([[エジプト神話]])していた古代エジプト人を、現代のエジプト人にもそのまま当てはめていることが多い。しかし、上述のとおり現代エジプト人の9割はイスラム教徒であり、アラビア語を母語とするアラブ人である。それもアラブ世界の中で比較的主導的な立場に立つ、代表的なアラブ人のひとつである。\n\n=== 言語 ===\n{{Main2|詳細は{{仮リンク|エジプトの言語|en|Languages of Egypt}}}}\n現在のエジプトでは[[アラビア語]]が[[公用語]]である。これは、イスラムの征服当時にもたらされたもので、エジプトのイスラム化と同時に普及していった。ただし、公用語となっているのは[[正則アラビア語]](フスハー)だが、実際に用いられているのは[[アラビア語エジプト方言]]である{{要出典|date=2012年8月}}<!-- 実際に「通用」の意味か? 行政等の用語は? -->。\n\n古代エジプトの公用語であった[[エジプト語]](4世紀以降の近代エジプト語は[[コプト語]]の名で知られる)は、現在では少数のキリスト教徒が典礼言語として使用するほかはエジプトの歴史に興味を持つ知識層が学んでいるだけであり、これを話せる国民はきわめて少ない。日常言語としてコプト語を使用する母語話者は数十名程度である<ref>[http://www.dailystaregypt.com/article.aspx?ArticleID=106 The Dairy Star of Egypt 2007年1月23日]</ref>。他には地域的に[[ヌビア諸語]]、[[教育]]・[[ビジネス]]に[[英語]]、[[文化_(代表的なトピック)|文化]]においては[[フランス語]]なども使われている。\n\n=== 宗教 ===\n{{Main2|詳細は{{仮リンク|エジプトの宗教|en|Religion in Egypt}}}}\n{{bar box\n|title=宗教構成(エジプト)\n|titlebar=#ddd\n|width= 300px\n|float=right\n|bars=\n{{bar percent|イスラム教(スンナ派)|green|90}}\n{{bar percent|キリスト教その他|blue|10}}\n}}\n宗教は[[イスラム教]]が90%(ほとんどが[[スンナ派]])であり、[[憲法]]では[[国教]]に指定されている(既述の通り、現在では宗教政党の活動ならびにイスラム主義活動は禁止されている)<ref name=2010cia/>。その他の宗派では、エジプト土着の[[キリスト教会]]である[[コプト教会]]の信徒が9%、その他のキリスト教徒が1%となる<ref name=2010cia/>。\n\n=== 婚姻 ===\n多くの場合、婚姻時に女性は改姓しない([[夫婦別姓]])が、改姓する女性もいる<ref>[https://culturalatlas.sbs.com.au/egyptian-culture/naming-9bdb9e00-ffa6-4f6f-9b29-1616ec7bb952#naming-9bdb9e00-ffa6-4f6f-9b29-1616ec7bb952 Egyptian Culture], Cultural Atlas.</ref>。\n\n=== 教育 ===\n{{Main2|詳細は{{仮リンク|エジプトの教育|en|Education in Egypt}}}}\n[[ファイル:Bibalex-egypt.JPG|thumb|180px|[[新アレクサンドリア図書館]]]]\nエジプトの教育制度は、1999年から[[小学校]]の課程が1年延び、日本と同じく小学校6年・[[中学校]]3年・[[高等学校|高校]]3年・[[大学]]4年の6・3・3・4制となっている<ref>[http://www.mofa.go.jp/mofaj/toko/world_school/07africa/infoC70400.html 諸外国の学校情報(国の詳細情報) 日本国外務省]</ref>。[[義務教育]]は小学校と中学校の9年である。[[1923年]]のエジプト独立時に初等教育はすでに無料とされ、以後段階的に無料教育化が進み、[[1950年]]には著名な作家でもあった文部大臣[[ターハー・フセイン]]によって中等教育が無料化され、1952年のエジプト革命によって高等教育も含めたすべての公的機関による教育が無料化された。しかし、公立学校の[[教員]]が給料の少なさなどから個人の[[家庭教師]]を兼任することが広く行われており、社会問題化している<ref>[http://www.fukuoka-pu.ac.jp/kiyou/kiyo15_1/1501_tanaka.pdf 『福岡県立大学人間社会学部紀要』 田中哲也]</ref>。高額な授業料を取る代わりに教育カリキュラムの充実した私立学校も多数存在する。エジプト国内には、20万以上の小中学校、1,000万人以上の学生、13の主要大学、67の[[師範学校]]がある。\n\n[[2018年]]より「エジプト日本学校(EJS=Egypt-Japan School)」が35校、開校した<ref>[https://www.jica.go.jp/publication/mundi/1904/201904_03_01.html 「日本式教育」で、子どもたちが変わる! エジプト]</ref>\n<ref>[https://www.jica.go.jp/press/2018/20181004_01.html 「エジプト・日本学校」35校が開校:日本式教育をエジプトへ本格導入]</ref>。これは2017年に[[JICA]]が技術協力「学びの質向上のための環境整備プロジェクト」を開始ししたことに始まるもので、[[日本の学校教育]]で行われている[[学級会]]や生徒による清掃などをエジプトの教育に取り入れようとする教育方針である<ref>[https://www.nippon.com/ja/japan-topics/g00727/ エジプトの小学校に「日本式教育」、協調性など成果も]</ref>。試験的に導入した際には文化的な違いから反発も見受けられたが、校内での暴力が減った、子供が家でも掃除をするようになったなど、徐々に成果が見えるようになり本格的に導入されることになった<ref>[https://www.huffingtonpost.jp/entry/egypt-japan-school_jp_5cdba4c0e4b0c39d2a13534f 「日本式教育」はエジプトの教育現場をどう変えたか。「掃除は社会階層が低い人が行うもの」という反発を乗り越えて]</ref><ref>[https://egyptcesbtokyo.wordpress.com/2018/10/10/「エジプト・日本学校」について/ 「エジプト・日本学校」(EJS)について]</ref>。\n\n2005年の推計によれば、15歳以上の国民の[[識字率]]は71.4%(男性:83%、女性:59.4%)である<ref name=2010cia>[https://www.cia.gov/library/publications/the-world-factbook/geos/za.html CIA World Factbook \"Egypt\"]2010年1月31日閲覧。</ref>。2006年にはGDPの4.2%が教育に支出された<ref name=2010cia/>。\n\nおもな高等教育機関としては、[[アル=アズハル大学]](988年 p? )、[[吉村作治]]、[[小池百合子]]らが出身の[[カイロ大学]](1908年~)などが存在する。\n\n国立図書館として[[新アレクサンドリア図書館]]が存在する。\n\n== 文化 ==\n[[ファイル:Necip Mahfuz.jpg|thumb|[[ナギーブ・マフフーズ]]は[[1988年]]に[[ノーベル文学賞]]を受賞した]]\n{{Main2|詳細は{{仮リンク|エジプトの文化|en|Culture of Egypt}}}}\n\n* [[古代エジプト]]の建造物で有名。\n* [[ボードゲーム]]や[[カードゲーム]]の発祥の地としても知られている。\n* 座った時に足を組むと、相手に敵意があると受けとられる。\n\n=== 食文化 ===\n{{Main|エジプト料理}}\n\n=== 文学 ===\n{{Main|古代エジプト文学|アラビア語文学|エジプト文学}}\n古代エジプトにおいては[[パピルス]]に[[ヒエログリフ]]で創作がなされ、[[古代エジプト文学]]には『[[死者の書 (古代エジプト)|死者の書]]』や『[[シヌヘの物語]]』などの作品が現代にも残っている。7世紀にアラブ化したあともエジプトは[[アラビア語文学]]のひとつの中心地となった。近代の文学者として[[ターハー・フセイン]]の名が挙げられ、現代の作家である[[ナギーブ・マフフーズ]]は1988年に[[ノーベル文学賞]]を受賞している。\n{{clear}}\n\n=== スポーツ ===\n* [[サッカーエジプト代表]]の[[モハメド・サラー]]は[[プレミアリーグ]]で得点王、[[PFA年間最優秀選手賞]]を獲得、[[UEFAチャンピオンズリーグ 2018-19|2018-19シーズン]]に[[UEFAチャンピオンズリーグ]]優勝を果たした。\n* [[スカッシュ (スポーツ)|スカッシュ]]では[[21世紀]]に入ってからワールドオープン([[:en:World Squash Championships]])で男女ともに多くの優勝者を輩出している。\n\n=== 世界遺産 ===\n{{Main|エジプトの世界遺産}}\nエジプト国内には、[[国際連合教育科学文化機関|ユネスコ]]の[[世界遺産]]リストに登録された文化遺産が6件、自然遺産が1件登録されている。\n\n<gallery widths=\"180\" heights=\"120\">\nファイル:Egypt.Giza.Sphinx.01.jpg|[[メンフィスとその墓地遺跡|メンフィスとその墓地遺跡-ギーザからダハシュールまでのピラミッド地帯]](1979年、文化遺産)\nファイル:S F-E-CAMERON 2006-10-EGYPT-KARNAK-0002.JPG|古代都市[[テーベ]]とその墓地遺跡(1979年、文化遺産)\nファイル:Abou simbel face.jpg|[[アブ・シンベル]]から[[フィラエ]]までの[[ヌビア遺跡]]群(1979年、文化遺産)\nファイル:Al Azhar, Egypt.jpg|[[カイロ|カイロ歴史地区]](1979年、文化遺産)\nファイル:Katharinenkloster Sinai BW 2.jpg|* [[聖カタリナ修道院|聖カトリーナ修道院地域]](2002年、文化遺産)\nファイル:Whale skeleton 2.jpg|[[ワディ・アル・ヒタン]](2005年、自然遺産)\n</gallery>\n\n== 参考文献 ==\n*鈴木恵美編著『現代エジプトを知るための60章』、[[明石書店]]、2012年 ISBN 4750336483\n{{節スタブ}}\n\n== 脚注 ==\n{{脚注ヘルプ}}\n{{Reflist|2}}\n\n== 関連項目 ==\n* [[エジプト民族]]\n* [[エジプト美術]]\n* [[エジプト神話]]\n* [[エジプト軍]]\n* [[エジプト海軍艦艇一覧]]\n* [[エジプト革命 (2011年)]]\n* [[エジプトの法]]\n* [[エジプト関係記事の一覧]]\n\n== 外部リンク ==\n{{Wiktionary}}\n{{Commons&cat|Egypt|Egypt}}\n{{Wikivoyage|Egypt|エジプト{{en icon}}}}\n{{osm box|r|1473947}}\n{{ウィキポータルリンク|アフリカ|[[画像:Africa_satellite_orthographic.jpg|36px|ウィキポータルリンク アフリカ]]}}\n; 政府\n:* [http://www.egypt.gov.eg/arabic/home.aspx エジプト政府サービス・ポータル] {{ar icon}}\n:* [http://www.egypt.gov.eg/english/home.aspx エジプト政府サービス・ポータル] {{en icon}}\n:* [http://www.egypt.or.jp/.html 在日エジプト大使館 エジプト学・観光局] - 「観光情報」と「基本情報」{{ja icon}}\n:\n; 日本政府\n:* [https://www.mofa.go.jp/mofaj/area/egypt/ 日本外務省 HP>各国・地域情勢>アフリカ>エジプト・アラブ共和国] {{ja icon}}\n:* [https://www.eg.emb-japan.go.jp/itprtop_ja/.html 在エジプト日本国大使館] {{ja icon}}\n:** [https://www.eg.emb-japan.go.jp/itpr_ja/00_000035.html 在エジプト日本国大使館>エジプト情報]\n:\n; その他\n:* [https://www.jica.go.jp/.html 独立行政法人 JICA 国際協力機構]\n:** [https://www.jica.go.jp/egypt/ HP>各国における取り組み>中東>エジプト生活情報]\n:** [https://libportal.jica.go.jp/fmi/xsl/library/public/ShortTermStayInformation/MiddleEast/Egypt-Short.pdf HP>世界の現状を知る>世界の様子(国別生活情報)>中東>エジプト短期滞在者用国別情報(2011)]\n:* [https://www.jetro.go.jp/world/africa/eg/ 独立行政法人 JETRO 日本貿易振興機構 HP>海外ビジネス情報>国・地域別情報>アフリカ>エジプト]\n:* [https://www.jccme.or.jp/08/08-07-08.html 財団法人 JCCME 中東協力センター HP>中東各国情報>エジプト]\n:* [https://wikitravel.org/ja/%E3%82%A8%E3%82%B8%E3%83%97%E3%83%88 ウィキトラベル旅行ガイド - エジプト] {{ja icon}}\n:* {{Wikiatlas|Egypt}} {{en icon}}\n:* {{CIA World Factbook link|eg|Egypt}} {{en icon}}\n:* {{dmoz|Regional/Africa/Egypt}} {{en icon}}\n\n{{アフリカ}}\n{{アジア}}\n{{OIC}}\n{{OIF}}\n{{NATOに加盟していない米国の同盟国}}\n{{Authority control}}\n{{Coord|30|2|N|31|13|E|type:city|display=title}}\n\n{{デフォルトソート:えしふと}}\n[[Category:エジプト|*]]\n[[Category:共和国]]\n[[Category:軍事政権]]\n[[Category:フランコフォニー加盟国]]"}
20. JSON データの読み込み

Wikipedia記事のJSONファイルを読み込み,「イギリス」に関する記事本文を表示せよ.問題21-29では,ここで抽出した記事本文に対して実行せよ.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import json

filename = 'jawiki-country.json'
with open(filename, mode='r') as f:
    for line in f:
        line = json.loads(line)
        if line['title'] == 'イギリス':
            text_uk = line['text']
            break


#### 確認
print(text_uk)
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
{{redirect|UK}}
{{redirect|英国|春秋時代の諸侯国| (春秋)}}
{{Otheruses|ヨーロッパの国|長崎県熊本県の郷土料理|いぎりす}}
{{基礎情報 |略名  =イギリス
|日本語国名 = グレートブリテン及び北アイルランド連合王国
|公式国名 = {{lang|en|United Kingdom of Great Britain and Northern Ireland}}<ref>英語以外での正式国名:<br />
*{{lang|gd|An Rìoghachd Aonaichte na Breatainn Mhòr agus Eirinn mu Thuath}}[[スコットランドゲール語]]
*{{lang|cy|Teyrnas Gyfunol Prydain Fawr a Gogledd Iwerddon}}[[ウェールズ語]]
*{{lang|ga|Ríocht Aontaithe na Breataine Móire agus Tuaisceart na hÉireann}}[[アイルランド語]]
*{{lang|kw|An Rywvaneth Unys a Vreten Veur hag Iwerdhon Glédh}}[[コーンウォール語]]
*{{lang|sco|Unitit Kinrick o Great Breetain an Northren Ireland}}[[スコットランド語]]
**{{lang|sco|Claught Kängrick o Docht Brätain an Norlin Airlann}}{{lang|sco|Unitet Kängdom o Great Brittain an Norlin Airlann}}アルスタースコットランド語</ref>
|国旗画像 = Flag of the United Kingdom.svg
|国章画像 = [[ファイル:Royal Coat of Arms of the United Kingdom.svg|85px|イギリスの国章]]
|国章リンク =[[イギリスの国章|国章]]
|標語 = {{lang|fr|[[Dieu et mon droit]]}}<br />[[フランス語]]:[[Dieu et mon droit|神と我が権利]]
|国歌 = [[女王陛下万歳|{{lang|en|God Save the Queen}}]]{{en icon}}<br />''神よ女王を護り賜え''<br />{{center|[[ファイル:United States Navy Band - God Save the Queen.ogg]]}}
|地図画像 = Europe-UK.svg
|位置画像 = United Kingdom (+overseas territories) in the World (+Antarctica claims).svg
|公用語 = [[英語]]
|首都 = [[ロンドン]]事実上
|最大都市 = ロンドン
|元首等肩書 = [[イギリスの君主|女王]]
|元首等氏名 = [[エリザベス2世]]
|首相等肩書 = [[イギリスの首相|首相]]
|首相等氏名 = [[ボリスジョンソン]]
|他元首等肩書1 = [[貴族院 (イギリス)|貴族院議長]]
|他元首等氏名1 = [[:en:Norman Fowler, Baron Fowler|ノーマンファウラー]]
|他元首等肩書2 = [[庶民院 (イギリス)|庶民院議長]]
|他元首等氏名2 = {{仮リンク|リンゼイホイル|en|Lindsay Hoyle}}
|他元首等肩書3 = [[連合王国最高裁判所|最高裁判所長官]]
|他元首等氏名3 = [[:en:Brenda Hale, Baroness Hale of Richmond|ブレンダヘイル]]
|面積順位 = 76
|面積大きさ = 1 E11
|面積値 = 244,820
|水面積率 = 1.3%
|人口統計年 = 2018
|人口順位 = 22
|人口大きさ = 1 E7
|人口値 = 6643万5600<ref>{{Cite web|url=https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates|title=Population estimates - Office for National Statistics|accessdate=2019-06-26|date=2019-06-26}}</ref>
|人口密度値 = 271
|GDP統計年元 = 2012
|GDP値元 = 1兆5478億<ref name="imf-statistics-gdp">[http://www.imf.org/external/pubs/ft/weo/2012/02/weodata/weorept.aspx?pr.x=70&pr.y=13&sy=2010&ey=2012&scsm=1&ssd=1&sort=country&ds=.&br=1&c=112&s=NGDP%2CNGDPD%2CPPPGDP%2CPPPPC&grp=0&a=IMF>Data and Statistics>World Economic Outlook Databases>By Countrise>United Kingdom]</ref>
|GDP統計年MER = 2012
|GDP順位MER = 6
|GDP値MER = 2兆4337億<ref name="imf-statistics-gdp" />
|GDP統計年 = 2012
|GDP順位 = 6
|GDP値 = 2兆3162億<ref name="imf-statistics-gdp" />
|GDP/ = 36,727<ref name="imf-statistics-gdp" />
|建国形態 = 建国
|確立形態1 = [[イングランド王国]][[スコットランド王国]]<br />両国とも[[合同法 (1707年)|1707年合同法]]まで
|確立年月日1 = 927843|確立形態2 = [[グレートブリテン王国]]成立<br />1707年合同法
|確立年月日2 = 1707年{{0}}5月{{0}}1|確立形態3 = [[グレートブリテン及びアイルランド連合王国]]成立<br />[[合同法 (1800年)|1800年合同法]]
|確立年月日3 = 1801年{{0}}1月{{0}}1|確立形態4 = 現在の国号「'''グレートブリテン及び北アイルランド連合王国'''」に変更
|確立年月日4 = 1927年{{0}}4月12日
|通貨 = [[スターリングポンド|UKポンド]] (£)
|通貨コード = GBP
|時間帯 = ±0
|夏時間 = +1
|ISO 3166-1 = GB / GBR
|ccTLD = [[.uk]] / [[.gb]]<ref>使用は.ukに比べ圧倒的少数</ref>
|国際電話番号 = 44
|注記 = <references/>
}}

'''グレートブリテン及び北アイルランド連合王国'''(グレートブリテンおよびきたアイルランドれんごうおうこく{{lang-en-short|United Kingdom of Great Britain and Northern Ireland}}: '''UK''')[[ヨーロッパ大陸]]の北西岸に位置し[[グレートブリテン島]][[アイルランド島]]北東部その他多くの島々から成る[[立憲君主制]][[国家]]首都は[[ロンドン]][[日本語]]における[[通称]]の一例として'''イギリス'''、'''英国'''(えいこくがある(→[[#国名]])。

'''[[イングランド]]'''、'''[[ウェールズ]]'''、'''[[スコットランド]]'''、'''[[北アイルランド]]'''という歴史的経緯に基づく4つの[[イギリスのカントリー|カントリーと呼ばれる]]が[[同君連合]]型の単一の[[主権国家体制|主権国家]]を形成する<ref name="page823">{{cite web |url=http://webarchive.nationalarchives.gov.uk/+/http://www.number10.gov.uk/Page823 |title=Countries within a country |publisher=Prime Minister's Office |accessdate=10 January 2003}}</ref>独特の統治体制を採るが、一般的に[[連邦]]国家とは区別される。

[[国際連合安全保障理事会常任理事国]]の一国五大国であり[[G7]][[G20]]に参加するGDPは世界10位以内に位置する巨大な市場を持ちヨーロッパにおける四つの大国[[ビッグ4 (ヨーロッパ)|ビッグ4]]の一国である[[ウィーン体制]]が成立した[[1815年]]以来世界で最も影響力のある国家[[列強]]の一つに数えられるまた[[民主主義]][[立憲君主制]]など近代国家の基本的な諸制度が発祥した国でもある

イギリスの[[擬人化]]としては[[ジョンブル]][[ブリタニア (女神)|ブリタニア]]が知られる

==国名==
正式名称は英語で{{Lang|en|'''United Kingdom of Great Britain and Northern Ireland'''}}ユナイテッドキングダムオヴグレイトブリテンアンドノーザンアイルランド)」であり日本語では、「'''グレートブリテン及び北部アイルランド連合王国'''」とする場合法文など「'''グレートブリテン及び北アイルランド連合王国'''」とする場合条約文などがある

英語での略称は{{Lang|en|'''United Kingdom'''}}」、「{{Lang|en|'''UK'''}}」。[[日本語]]における一般的な通称は「'''イギリス'''」もしくは「'''英国'''」であるが稀に{{Lang|en|United Kingdom}}の[[直訳と意訳|直訳]]である「'''[[連合王国]]'''(れんごうおうこく)」が用いられることもある現在の公用文では英国が使用されており、「イギリスは口語で用いられることが多い<ref>[[日本放送協会|NHK]]で採用している他原則として英国を用いるメディアでも[[イギリス英語]]のような形では使用する</ref>。「連合王国は2003年まで法文において用いられていた<ref>[http://warp.da.ndl.go.jp/info:ndljp/pid/1368617/www.meti.go.jp/policy/anpo/moto/topics/country/country.pdf 輸出貿易管理令等における国名表記の変更について]([[経済産業省]]) 国立国会図書館のアーカイブより''2019-2-5閲覧''</ref>。

イギリス[[ポルトガル語]]で[[イングランド]]を指す{{Lang|pt|Inglez}}イングレス)」が語源で戦国時代にポルトガル人が来航した事に起源を持つ原義にかかわらず連合王国全体を指して使われており連合王国の構成体たるイングランドとは区別される[[江戸時代]]には[[オランダ語]]の{{Lang|nl|Engelsch}}エングルシュ)」を語源とする「'''エゲレス'''」という呼称も広く使用された<ref>[https://kotobank.jp/word/%E3%82%A8%E3%82%B2%E3%83%AC%E3%82%B9-444373 コトバンク「エゲレス」]</ref>。[[幕末]]から[[明治]]・[[大正]]期には「'''英吉利'''(えいぎりす)」や「大不列顛(だいふれつてん、大ブリテン)」と[[国名の漢字表記一覧|漢字で表記]]されることもあったが、前者が「英国」という略称の語源である。ただし「英国」は、狭義に連合王国全体でなくイングランド('''英格蘭''')のみを指す場合もある<ref>また、[[アメリカ合衆国]]に渡ることを「渡米」と言うように、イギリス、特にイングランドへ渡ることを「渡英」と言う([[二字熟語による往来表現の一覧]]を参照)。</ref>。

[[合同法 (1707年)|1707年合同法]]においては[[イングランド王国]]および[[スコットランド王国]]を一王国に統合すると宣言する同法において新国家名称は[[グレートブリテン王国]]またはグレートブリテン連合王国および連合王国とすると述べている<ref>{{cite web |url=http://www.scotshistoryonline.co.uk/union.html |title=Treaty of Union, 1706 |publisher=Scots History Online |accessdate=23 August 2011}}</ref><ref>{{cite book |url=http://books.google.com/?id=LYc1tSYonrQC&pg=PA165 |title=Constitutional & Administrative Law |page=165 |author=Barnett, Hilaire |author2=Jago, Robert |edition=8th |year=2011 |isbn=978-0-415-56301-7 |publisher=Routledge |location=Abingdon }}</ref>。しかしながら、「連合王国」という用語は18世紀における非公式の使用にのみ見られ、「長文式」でない単なる「グレート・ブリテン」であった1707年から1800年まで、同国はごくまれに正式名称である「グレート・ブリテン連合王国」と言及された<ref>See [[s:Act of Union 1707#Article 1 (name of the new kingdom)|Article One]] of the Act of Union 1707.</ref><ref name=name>"After the political union of England and Scotland in 1707, the nation's official name became 'Great Britain'", ''The American Pageant, Volume 1'', Cengage Learning (2012)</ref><ref name=name2>"From 1707 until 1801 ''Great Britain'' was the official designation of the kingdoms of England and Scotland". ''The Standard Reference Work:For the Home, School and Library, Volume 3'', Harold Melvin Stanford (1921)</ref><ref name=name3>"In 1707, on the union with Scotland, 'Great Britain' became the official name of the British Kingdom, and so continued until the union with Ireland in 1801". ''United States Congressional serial set, Issue 10;Issue 3265'' (1895)</ref><ref>{{cite web |url=http://www.historyworld.net/wrldhis/PlainTextHistories.asp?historyid=ab07 |title=History of Great Britain (from 1707) |authorlink=w:Bamber Gascoigne |author=Gascoigne, Bamber |publisher=History World |accessdate=18 July 2011}}</ref>。[[合同法 (1800年)|1800年合同法]]では、1801年にグレート・ブリテン王国と[[アイルランド王国]]が統合し、[[グレート・ブリテン及びアイルランド連合王国]]が成立した。現在の正式国名である「グレート・ブリテン及び北(部)アイルランド連合王国」は、[[北アイルランド]]のみが連合王国の一部としてとどまった1922年の[[アイルランド自由国]]独立および{{仮リンク|アイルランド分裂|en|Partition of Ireland}}後に採用された<ref>{{cite book |title=The Irish Civil War 1922–23 |author=Cottrell, P. |year=2008 |page=85 |isbn=1-84603-270-9}}</ref>。

イギリスは主権国家として国であるがイングランド[[スコットランド]][[ウェールズ]]それほどの段階ではないが北アイルランドも主権国家ではないが[[イギリスのカントリー|」(country]]と呼ばれる<ref name="alphabeticalNI">{{citation |author1=S. Dunn |author2=H. Dawson|year=2000 |title=An Alphabetical Listing of Word, Name and Place in Northern Ireland and the Living Language of Conflict |publisher=Edwin Mellen Press |location=Lampeter |quote=One specific problem&nbsp; in both general and particular senses&nbsp; is to know what to call Northern Ireland itself:in the general sense, it is not a country, or a province, or a state&nbsp; although some refer to it contemptuously as a statelet:the least controversial word appears to be jurisdiction, but this might change.}}</ref><ref>{{cite web |url=http://www.iso.org/iso/iso_3166-2_newsletter_ii-3_2011-12-13.pdf |title=Changes in the list of subdivision names and code elements |work=ISO 3166-2 |publisher=International Organization for Standardization |date=15 December 2011 |accessdate=28 May 2012}}</ref>。スコットランド、ウェールズ、北アイルランドは、権限の委譲による自治権を有する<ref>[http://books.google.com/?id=gPkDAQAAIAAJ Population Trends, Issues 75–82, p.38], 1994, UK Office of Population Censuses and Surveys</ref><ref name="citizenship">[http://books.google.com/?id=2u8rD6F-yg0C&pg=PA7 Life in the United Kingdom:a journey to citizenship, p. 7], United Kingdom Home Office, 2007, ISBN 978-0-11-341313-3.</ref>。イギリス首相のウェブサイトでは、連合王国の説明として「1国内の国々」という言葉が用いられていた<ref name="page823"/>。{{仮リンク|イギリスの12のNUTS1地域|en|NUTS of the United Kingdom}}統計のような複数の統計的概要において、スコットランド、ウェールズ、北アイルランドを「region」と言及している<ref>{{cite web |url=http://www.ons.gov.uk/ons/dcp171778_346117.xml |title=Statistical bulletin:Regional Labour Market Statistics |accessdate=5 March 2014 |archiveurl=https://web.archive.org/web/20141224045523/http://www.ons.gov.uk/ons/dcp171778_346117.xml |archivedate=2014年12月24日 |deadlinkdate=2018年3月 }}</ref><ref>{{cite web |url=http://www.gmb.org.uk/newsroom/fall-in-earnings-value-during-recession |title=13.4% Fall In Earnings Value During Recession |accessdate=5 March 2014}}</ref>。北アイルランドは「province」とも言及される<ref name="alphabeticalNI"/><ref name="placeApart">{{cite book |author=Murphy, Dervla |title=A Place Apart |year=1979 |publisher=Penguin |place=London |isbn=978-0-14-005030-1}}</ref>。北アイルランドに関しては、記述名の使用が「多くの場合、個人の政治的選好を明らかにする選択で議論の的になり得る」<ref>{{Cite book |last1=Whyte |first1=John |authorlink1=w:John Henry Whyte |last2=FitzGerald |first2=Garret|authorlink2=w:Garret FitzGerald|year=1991 |title=Interpreting Northern Ireland |location=Oxford |publisher=Clarendon Press |isbn=978-0-19-827380-6}}</ref>。

英語ではBritainという言葉は連合王国の同義語として頻繁に用いられる一方、「Great Britainという言葉は連合王国全体の緩い同義語として用いられる場合もあるが<ref>{{cite web |url=http://www.merriam-webster.com/dictionary/great%20britain |title=Merriam-Webster Dictionary Online Definition of '&#39;Great Britain'&#39;|publisher=[[:en:Merriam Webster|Merriam Webster]] |date=31 August 2012 |accessdate=9 April 2013}}</ref><ref>[[:en:New Oxford American Dictionary|New Oxford American Dictionary]]:"Great Britain:England, Wales, and Scotland considered as a unit. The name is also often used loosely to refer to the United Kingdom."</ref>、本来はイングランド、スコットランドおよびウェールズを指すものであり、北アイルランドを含む(すなわち、イギリス全体を指す)場合には用いるべきでないとされる<ref>{{cite news |url=http://www.guardian.co.uk/styleguide/page/0,,184840,00.html |title=Guardian Unlimited Style Guide |publisher=Guardian News and Media Limited |accessdate=23 August 2011 |location=London |date=19 December 2008}}</ref><ref>{{cite news |url=http://news.bbc.co.uk/1/hi/programmes/radio_newsroom/1099593.stm#g|title=BBC style guide (Great Britain)|accessdate=23 August 2011 |work=BBC News|date=19 August 2002}}</ref><ref>{{cite web |url=http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |title=Key facts about the United Kingdom|archiveurl=http://webarchive.nationalarchives.gov.uk/20121015000000/http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517|archivedate=3 November 2012 |accessdate=8 March 2015 |work=Government, citizens and rights |publisher=HM Government}}</ref>。

"GB"及び"GBR"イギリスの[[国際標準化機構|標準]]国名コード ([[ISO 3166-2:GB|ISO 3166-2]]及び[[:en:ISO 3166-1 alpha-3|ISO 3166-1 alpha-3]]を参照) でありその結果として国際機関がイギリスに言及する際に用いられることがあるさらにイギリスのオリンピックチームはGreat Britainもしくは[[Team GB]]の名称を用いる<ref>{{cite web |title=Great Britain |url=http://www.olympic.org/great-britain |publisher=International Olympic Committee |accessdate=10 May 2011}}</ref><ref>{{cite news|last1=Mulgrew|first1=John|title=Team GB Olympic name row still simmering in Northern Ireland|url=http://www.belfasttelegraph.co.uk/news/northern-ireland/team-gb-olympic-name-row-still-simmering-in-northern-ireland-28776939.html|accessdate=9 March 2015|work=Belfast Telegraph|date=2 August 2012}}</ref>。

形容詞のBritishイギリスに関する事項への言及によく用いられる。「Britishに明白な法的含意はないがイギリスの市民権及び[[:en:British nationality law|国籍に関する事項]]への言及に法律上用いられる<ref name="Bradley">{{cite book |url=http://books.google.com/?id=HT_GS2zgN5QC&pg=PA36 |title=Constitutional and administrative law |volume=1 |page=36 |author=Bradley, Anthony Wilfred |author2=Ewing, Keith D. |edition=14th |publisher=Pearson Longman |location=Harlow |year=2007 |isbn=978-1-4058-1207-8}}</ref>。イギリスの国民は、自らの国民性を表現するのに多数の異なる用語を用い、自らを[[イギリス人]]であるか、[[イングランド人]]、[[スコットランド人]]、[[ウェールズ人]]、[[:en:People of Northern Ireland|北アイルランド人]]、[[アイルランド人]]<ref>{{cite web |url=http://www.ark.ac.uk/nilt/2010/Community_Relations/NINATID.html |title=Which of these best describes the way you think of yourself? |year=2010 |work=Northern Ireland Life and Times Survey 2010 |publisher=ARK&nbsp;– Access Research Knowledge |accessdate=1 July 2010}}</ref>であるか、またはその両方であると見なし得る<ref>{{cite book |url=http://books.google.com/?id=u8gZklxHTMUC&pg=PA275 |title=Regionalism after regionalisation:Spain, France and the United Kingdom |pages=275–277 |author=Schrijver, Frans |publisher=Amsterdam University Press |year=2006 |isbn=978-90-5629-428-1}}</ref>。

2006{{仮リンク|イギリスのパスポート|en|British passport}}に新デザインが導入された新パスポートの1ページ目には[[英語]][[ウェールズ語]][[スコットランドゲール語]]で正式国名が記載されている<ref>{{cite news|url=http://www.guardian.co.uk/commentisfree/2010/dec/11/ian-jack-saddened-by-scotland-going-gaelic |location=London |work=The Guardian |first=Ian |last=Jack |title=Why I'm saddened by Scotland going Gaelic |date=11 December 2010}}</ref>。ウェールズ語での正式国名は"Teyrnas Unedig Prydain Fawr a Gogledd Iwerddon"であり、政府のウェブサイト上での略名は"Teyrnas Unedig"であるが<ref>{{cite web|url=http://www.direct.gov.uk/cy/Governmentcitizensandrights/LivingintheUK/DG_10012517CY|title=Ffeithiau allweddol am y Deyrnas Unedig|publisher=Directgov&nbsp;– Llywodraeth, dinasyddion a hawliau]|archiveurl=https://web.archive.org/web/20120924102112/http://www.direct.gov.uk/cy/Governmentcitizensandrights/LivingintheUK/DG_10012517CY|archivedate=2012年9月24日|accessdate=8 March 2015}}</ref>、通常は語形変化した形"Y Deyrnas Unedig"から"DU"と略される。スコットランド・ゲール語での正式国名は"Rìoghachd Aonaichte Bhreatainn is Èireann a Tuath"であり、略名は"Rìoghachd Aonaichte"である。

==歴史==
{{ブリテンの歴史}}
{{main|イギリスの歴史}}
[[ファイル:Descriptio Prime Tabulae Europae.jpg|thumb|left|[[クラウディオスプトレマイオス|プトレマイオス]]の[[地理学 (プトレマイオス)|地理学]]に基づく地図アルビオンと[[:en:Hibernia|ヒベルニア]]現在のアイルランドの文字が見える]]
[[ファイル:Lenepveu, Jeanne d'Arc au siège d'Orléans.jpg|thumb|left|[[ジャンヌダルク]]]]
{{Clear}}

古代のグレートブリテン島は[[アルビオン]]と呼ばれたラテン語起源でドーバーの白い崖に由来するとされる

1066年に[[ノルマンディー公]]であった[[ウィリアム1世 (イングランド王)|ウィリアム征服王]] (William the Conqueror) が[[ノルマンコンクエスト|イングランドを征服]]し大陸の進んだ[[封建制]]を導入して[[王国]]の体制を整えていった人口と[[経済力]]に勝るイングランドがウェールズとスコットランドを圧倒していった

13世紀[[第一次バロン戦争]][[第二次バロン戦争]]で[[フランス]]に政治を左右された1282年にウェールズ地方にもイングランドの州制度がしかれた14-15世紀にわたりフランスと[[百年戦争]]を展開したが1373年に[[英葡永久同盟]]を結んだ

[[ばら戦争]]を勝ち抜いた[[ランカスター朝]]は[[閨閥]]にバイエルン公でホラント伯の[[ヴィルヘルム1世 (バイエルン公)|ヴィルヘルム1世]]を迎えた1497[[ジョンカボット]]が北米海岸を発見した1514[[検閲]]できない外国商人飛脚が設立された1534[[国王至上法]]が出た1536年及び1543年の[[:en:Laws in Wales Acts 1535 and 1542|統一法]]の下スコットランドを正式に併合した{{仮リンク|ウェールズ法諸法|en|Laws in Wales Acts 15351542}})。1559キリスト教が[[イングランド国教会]]統一された1562年フランスで[[ユグノー戦争]]が起こってユグノーが移ってきた亡命者トレンチ家はイギリスで[[:en:Earl of Clancarty|クランカートリー伯]]となった<ref>Samuel Smiles, ''The Huguenots:Their Settlements, Churches, and Industries in England and Ireland'', Genealogical Publishing Com, 1868, pp.313-314.</ref>1588[[アルマダの海戦]]でカトリック勢力を破った1598[[ハンザ同盟]]の在ロンドン基地を閉鎖した

[[ファイル:London.bankofengland.arp.jpg|thumb|[[イングランド銀行]]]]
1600年[[イギリス東インド会社]]ができた1603年にイングランドとスコットランドが[[同君連合]]を形成したそして[[ヘンリーハドソン]]や[[ウィリアムバフィン]]が北米探検に活躍した1620[[ピルグリムファーザーズ]]が北米に上陸しまたフランスでユグノーが反乱しだした1628年に[[権利の請願]]がなされ翌年に[[リシュリュー]]がユグノーと和解した1639-1640スコットランド王国に国教会を強制しようとイングランドは二度の司教戦争を挑むが共に敗れてしまったそして矛先をアイルランド王国へ変えて[[チャールズ1世 (イングランド王)|チャールズ1世]][[オリバークロムウェル]][[ウィリアム3世 (イングランド王)|ウィリアム3世]]の3人が17世紀末まで苛め抜いたウィレム3世は[[ルイ14世]]に迫害されたユグノーに支えられ1694年[[イングランド銀行]]を設立した1702ユグノーだった[[:en:Matthew Decker|マシューデッカー]]がロンドンへ来た1704年にジブラルタルを占領し[[カトリック]]勢力を地中海に封じた1707年の合同法でイングランドとスコットランドは合邦しグレートブリテン王国となった[[ピューリタン]]とユグノーが商売敵のカトリックに対し統一戦線を組み上げたのである[[イギリス帝国]]の手が届く世界各地で宗教と経済が不可分にからみあった紛争が続いた植民地の争奪戦だけでなく[[ロシア帝国]]とアメリカ合衆国で利権を工作するときも彼らは常に優位であった繊維業における[[産業革命]]は綿花を輸出する[[アメリカ合衆国]]へ通貨を独占的に供給した

[[ファイル:Battle of Waterloo 1815.PNG|thumb|ユグノーから[[:en:Baron Northwick|ノースウィック男爵]]が出た頃イギリスは[[対仏大同盟]]の主役であった連合国が[[ワーテルローの戦い]]で勝利し[[ナポレオン戦争]]が終息したこうして[[パクスブリタニカ]]の時代が到来した]]
1801年の合同法でアイルランド王国と合邦しグレートブリテン及びアイルランド連合王国となった<ref>アイルランドにもユグノーが地位を占めていた[[:en:Baron Rendlesham|レンドルシャム男爵]]など</ref>しかし[[アイルランド共和軍]]は健在である統一戦線としては[[ジョージ4世 (イギリス王)|ジョージ4世]]の家柄勲章[[フリーメーソン]]加入すべてが戦利品であったフランス王が再びカトリックを強制することはないだろうしもはや[[神聖ローマ帝国]]もなくなっていた[[ベルギー]]を独立させ[[阿片戦争]]に勝利し統一戦線は鉄道通信の独占に注力したしかし統一戦線は事をやりすぎる癖があった[[ルイ16世]]には忌まわしき[[フォンテーヌブローの勅令]]を破棄させれば十分であったが[[フランス革命]]が[[ナポレオン]]を台頭させて神聖ローマだけでなく統一戦線まで脅かした支援した[[プロイセン王国]]がロシアと組んで[[オスマン帝国]]を攻撃するのも都合がよかったしかし[[普墺戦争]]で[[キール運河]]の利権をとられそうになったり[[普仏戦争]]で南ドイツ連邦が水の泡となったり[[オスマン債務管理局]]の利権を[[ドイツ帝国]]に奪われたりしてベルギーの統一戦線は飼い犬に手を噛まれた気持ちになった

[[栄光ある孤立]]と謳われた外交方針は[[エドワード7世 (イギリス王)|エドワード7世]]のときに放棄された[[1902年]]には[[日本]]とも[[日英同盟]]を締結した彼らはドイツを[[第一次世界大戦]]で敵対国として敗戦後の[[ヴァイマル共和政]]に対して多額の賠償金による債務奴隷にしたしかしアメリカ合衆国に対する影響力でイギリスはドイツにひけをとった1926年には[[バルフォア報告書]]が提出されたイギリスは[[ラザード]]を支配したが[[太平洋]]は支配できなかった[[ウィンザー朝]]の[[ジョージ5世 (イギリス王)|ジョージ5世]]による治世[[デビッドロイドジョージ]]政権下の[[1922年]]に[[英愛条約]]が発効され北部6州北アイルランド;アルスター9州の中の6州を除く26州がアイルランド自由国現[[アイルランド|アイルランド共和国]]として独立し[[1927年]]に現在の名称「'''グレートブリテン及び北アイルランド連合王国'''」へと改名したなおカントリーの一つであるスコットランドが独立すべきかどうかを問う住民投票が2014年9月に実施されたが独立は否決された<ref>{{cite web|url=http://www.cnn.co.jp/world/35023094.html|title=スコットランド独立の是非を問う住民投票実施へ 英国|author=<code>CNN.co.jp</code>|accessdate=2012-10-16}}</ref>。1925年受託者法([[:en:Trustee Act 1925|Trustee Act 1925]])の第61条は、裁判所に、公生かつ合理的に行動し、免責されるのが当然である受託者を、信託違反の責任から免除する権限を与えた<ref>Trustee Act, 1925. Article 61. "If it appears to the court that a trustee, whether appointed by the court or otherwise, is or may be personally liable for any breach of trust, whether the transaction alleged to be a breach of trust occurred before or after the commencement of this Act, but has acted honestly and reasonably, and ought fairly to be excused for the breach of trust and for ommitting to obtain the directions of the court in the matter in which he committed such breach, then the court may reliave him either wholly or partly from personal liability for the same."</ref><ref>1958年信託変更法([[:en:Variation of Trusts Act 1958|Variation of Trusts Act 1958]])は、信託を変更し、かつ受益者の利益のために信託財産を処理することを認可する広い権限を、裁判所に与えている。</ref>。この立法をなした[[イギリス議会]]は、[[世界恐慌]]が[[投資信託]]を通し大衆化した歴史にある程度の責任がある。イギリス投資信託全体の資産構成に占める下位証券の割合は、1933年で36.2%、1935年で42.0%、1938年で53.5%に上昇していった<ref>[[証券取引委員会]] ''Investment Trusts and Investment Companes'', Part 2, 連邦政府出版局 1939年 52頁;H.Burton and D.C.Corner, ''Investment and Unit Trusts in britain and America'', Elek Book, London, 1968, p.68.</ref>。

[[1939年]]の[[アドルフヒトラー]]総統の[[国家社会主義ドイツ労働者党|ナチ党]]率いる[[ナチスドイツ]]が[[ポーランド]]に侵攻し[[フランス]]とともに宣戦布告を行い[[バトルオブブリテン]]をはじめ[[西部戦線 (第二次世界大戦)|ヨーロッパ戦線]]では対独伊戦争[[太平洋戦争|太平洋戦線]]では対日戦争を経験しアメリカ合衆国の[[民主党 (アメリカ)|民主党]][[フランクリンルーズベルト]]大統領と[[大西洋憲章]]を共同で提唱した保守党の[[ウィンストンチャーチル]]政権による[[挙国一致内閣]]の下に勝利を得た[[第二次世界大戦]]後[[イギリス軍]]はドイツの[[ハンブルク]]や[[ハノーファー]]を占領し旧[[西ドイツ]]の形成の一役を担ったアメリカ合衆国は旧南ドイツ連邦と[[オーストリア]]西部を占領したアメリカ合衆国の占領地域は[[オランダ]]と歴史がつながっており[[戦間期]]にまして欧州東西の資本が錯綜した

イギリスは[[1945年]]の[[冷戦]]開始以降にかけて政治経済その他多くの面でアメリカ合衆国に覇権を譲ったまた[[資本主義]][[自由主義]]陣営の[[西側諸国]]の一国として[[ソビエト連邦]]とは敵対しながら政治面では[[労働党 (イギリス)|労働党]]の[[クレメントアトリー]]政権が「'''[[ゆりかごから墓場まで]]'''」をスローガンに[[福祉国家]]を作り上げた経済面ではイングランド銀行が[[ブレトンウッズ協定|ブレトンウッズ体制]]をめぐる駆け引きに競り負け1960年代のポンド危機と1970年代のセカンダリーバンキング危機に遭い、「[[英国病]]とまで呼ばれる[[景気後退|不景気]]に苦しんだ産業面では戦前から[[ゼネラルエレクトリック]]に[[産業革命]]の威光を奪われていたアトリー失脚後は保守党へ政権交代となりチャーチルが首相に再任する

第二次大戦中イギリスは帝国内で最大規模の人口を誇る[[イギリス領インド帝国|インド]]に対してヨーロッパ太平洋で複数の戦線を維持し又城内平和を維持するため戦後[[インド]]の地位に対して大幅な譲歩をせざるを得なかったイギリス政府は1947年にインド独立法を承認し[[印パ分離独立|インドとパキスタンの独立]]を翌[[1948年]]にはセイロン[[スリランカ]]の独立を承認した又大戦中に日本の支配下にあったビルママレーでもイギリス支配下に復することに混乱が見られ[[1948年]]に[[ビルマ]]ミャンマーの[[1957年]]に[[マレーシア]]の独立を承認した

[[1960年代]]に入るとフランス領西アフリカの独立要求を期に[[アフリカ]]諸国の独立運動が活発化し[[1960年]]に[[ナイジェリア]]が[[1962年]]に[[ウガンダ]]が[[1963年]]に[[ケニア]]が[[1964年]]に[[マラウイ]]と[[ザンビア]]がイギリスから独立を宣言した又[[1961年]]に[[南アフリカ共和国|南アフリカ]]が[[1966年]]に[[ローデシア]]が[[アパルトヘイト]]維持のためイギリスからの独立を宣言した

[[1956年]]には[[エジプト]]が[[スエズ運河]]の国有化を宣言し同地帯を占領したためイギリスフランス[[イスラエル]]との間で戦闘が勃発したこれが[[第二次中東戦争]]スエズ危機である英仏は国際世論の支持を得られなかったためスエズから撤退し[[地中海]]と[[紅海]]を結ぶスエズ運河の利権を喪失したまたエジプトの行動に励まされて中東地域でも独立運動が刺激され[[1971年]]に[[バーレーン]][[カタール]][[アラブ首長国連邦]]がイギリスから独立した

残る最大のイギリス植民地は[[香港]]だけになったがこれも1984年にマーガレットサッチャー首相と[[トウ小平|鄧小平]][[中華人民共和国]]中央軍事委員会主席の間で行われた英中首脳会談で新界の租借期限が切れる1997年に割譲地も含めて一斉に中国に返還されることになった[[香港返還|香港を返還]]したことでイギリスは主要な植民地のほぼ全てを喪失することになり世界の7つの海を跨いだ[[イギリス帝国]]は消滅していった

[[1964年]]には[[ハロルドウィルソン]]が首相に就任しアトリー以来13年ぶりに労働党が政権に復帰する[[1969年]]に[[イングランド]][[ウェールズ]] [[スコットランド]][[1973年]]に[[北アイルランド]]で死刑制度が一部例外を除き廃止されたまたウィルソン労働党政権下で[[妊娠中絶]]の合法化[[死刑]]制度の廃止及び[[同性愛]]の非刑罰化[[ソドミー法]]の廃止を含む社会的改革がなされ通貨[[スターリングポンド|ポンド]]の平価切り下げや日本の[[放送大学]]の模倣ともなった[[大学通信教育|通信制公立大学]]である[[オープン大学]]の設置などの政策が実施された

1980年代に成立した[[保守党 (イギリス)|保守党]]の[[マーガレットサッチャー]]政権は[[新自由主義]]による[[構造改革]][[ネオリベラリズム]][[サッチャリズム]]に基づく[[民営化]][[行政改革]][[規制緩和]]を急進させて[[小さな政府]]志向[[自由主義国家論]])、多くの[[失業]]者を出した地方経済は不振を極めロンドンを中心に[[金融]]産業などが成長した

1990年代政権は保守党の[[ジョンメージャー]]から労働党の[[トニーブレア]]に交代しイギリスは[[市場]]化一辺倒の[[政策]]を修正しつつかつての重厚な福祉国家にも逆戻りしない[[第三の道]]への路線に進むことになったまた[[1998年]]人権法を制定し[[死刑]]制度が完全に廃止されたこの頃からイギリスは久しぶりの好況に沸き、「老大国のイメージを払拭すべく「'''[[クールブリタニア]]'''」と呼ばれるイメージ戦略[[文化政策]]に力が入れられるようになった

2000年代2010年代[[21世紀]]に突入し労働党の[[ゴードンブラウン]]保守党の[[デーヴィッドキャメロン]]と政権が続く

[[2014年]]からは[[同性結婚]]が合法化された

[[2016年]][[6月23日]]に[[イギリスの欧州連合離脱是非を問う国民投票]]が実施されその結果僅差をもって離脱賛成派が過半数を占めたため[[イギリスの欧州連合離脱]]通称ブレグジットBrexitが決定された

これを受けてキャメロン首相兼保守党党首が責任を取る形で辞任を表明し[[テリーザメイ]]がサッチャーに続く2人目のイギリスの女性首相兼保守党党首として2016年[[7月13日]]に就任したメイ政権は新たに[[欧州連合離脱省]]を設置した

結果として[[2020年]][[1月31日]]午後11時([[グリニッジ標準時|GMT]])にイギリスは[[欧州連合]](EU)から脱退した<ref>{{Cite web|url=https://mainichi.jp/articles/20200201/k00/00m/030/008000c|title=英国がEU離脱 加盟国の離脱は初|publisher=毎日新聞|date=2020-02-01|accessdate=2020-02-01}}</ref>。

==地理==
{{main|イギリスの地理}}
[[ファイル:Uk topo en.jpg|thumb|200px|イギリスの地形図]]
[[ファイル:BenNevis2005.jpg|thumb|[[ブリテン諸島]]最高峰の[[ベンネビス山]]]]
イギリスはグレートブリテン島のイングランドウェールズスコットランドおよびアイルランド島北東部の北アイルランドで構成されているこの2つの大きな島とその周囲大小の島々を[[ブリテン諸島]]と呼ぶグレートブリテン島は中部から南部を占めるイングランド北部のスコットランド西部のウェールズに大別されるアイルランド島から北アイルランドを除いた地域はアイルランド共和国がある

北アイルランドとアイルランド共和国の国境の他にイギリスは[[大西洋]]に囲まれ東に[[北海]]南に[[イギリス海峡]]がある[[アイリッシュ海]]はグレートブリテン島とアイルランド島の間に位置するイギリスの総面積は243,610km<sup>2</sup>であり[[国の面積順リスト|世界第78位]]及び[[:en:List of European countries by area|ヨーロッパ第11位]]

イングランドの大部分は<!--rolling lowland terrain-->岩の多い低地からなり北西の山がちな地域[[湖水地方]]のカンブリア山脈)、北部ペニンネスの湿地帯ピークディストリクトの[[石灰岩]]丘陵地帯デールと呼ばれる渓谷[[パーベック島]][[リンカンシャー]]の石灰岩質の丘陵地帯から南イングランドの泥炭質のノースダウンズサウスダウンズチルターンにいたるイングランドを流れる主な河川は[[テムズ川]][[セヴァーン川]][[トレント川]][[ウーズ川]]である主な都市はロンドン[[バーミンガム]][[ヨーク (イングランド)|ヨーク]][[ニューカッスルアポンタイン]]などイングランド南部の[[ドーバー (イギリス)|ドーヴァー]]には[[英仏海峡トンネル]]があり対岸のフランスと連絡するイングランドには標高 1000m を超える地点はない

ウェールズは山がちで最高峰は標高 1,085m の[[スノードン山]]である本土の北に[[アングルシー島]]があるウェールズの首都また最大の都市は[[カーディフ]]で南ウェールズに位置する

スコットランドは地理的に多様で南部および東部は比較的標高が低くベンネビス山がある北部および西部は標高が高いベンネビス山はイギリスの最高地点で標高 1343 m であるスコットランドには数多くの半島ロッホと呼ばれる湖がありグレートブリテン島最大の淡水湖である[[ネス湖|ロッホネス]]もスコットランドに位置する西部また北部の海域には[[ヘブリディーズ諸島]][[オークニー諸島]][[シェトランド諸島]]を含む大小さまざまな島が分布するスコットランドの主要都市は首都[[エディンバラ]][[グラスゴー]][[アバディーン]]である

北アイルランドはアイルランド島の北東部を占めほとんどは丘陵地である中央部は平野でほぼ中央に位置する[[ネイ湖]]はイギリス諸島最大の湖である主要都市は[[ベルファスト]]と[[ロンドンデリー|デリー]]

現在イギリスは大小あわせて1098ほどの島々からなるほとんどは自然の島だがいくつかは[[クランノグ]]といわれる過去の時代に石と木を骨組みに作られしだいに廃棄物で大きくなっていった人工の島がある

イギリスの大半はなだらかな丘陵地及び平原で占められており国土のおよそ90%が可住地となっているそのため国土面積自体は[[日本]]のおよそ3分の2[[本州]]と[[四国]]を併せた程度であるが[[可住地面積]]は逆に日本の倍近くに及んでいるイギリスは[[森林]]も少なく日本が国土の3分の2が森林で覆われているのに対しイギリスの[[森林率]]は11%ほどである<ref>{{Cite web |url=http://yoshio-kusano.sakura.ne.jp/nakayamakouen6newpage3.html |title=中山徹奈良女子大教授の記念講演6 どうやって森を再生するかイギリスの例 |publisher=日本共産党宝塚市議 草野義雄 |accessdate=2014-5-10 |archiveurl=https://web.archive.org/web/20140512220911/http://yoshio-kusano.sakura.ne.jp/nakayamakouen6newpage3.html |archivedate=2014年5月12日 |deadlinkdate=2018年3月 }}</ref>。

その他{{仮リンク|領土紛争の一覧|en|List of territorial disputes|label=紛争中}}の[[フォークランド諸島]][[ジブラルタル]][[イギリス領インド洋地域|インド洋地域]]を含む[[イギリスの海外領土|14の海外領土]]を有する<ref>{{cite web |url=http://www.fco.gov.uk/en/about-us/what-we-do/overseas-territories |title=Working with Overseas Territories |publisher=[[:en:Foreign and Commonwealth Office|Foreign and Commonwealth Office]] |accessdate=3 May 2011}}</ref>。[[ガーンジー]]、[[ジャージー]]、[[マン島]]はイギリスの一部ではなく、イギリスの君主をともに君主とし、[[イギリス政府]]が防衛及び国際的表示に対して責任を負う[[イギリスの王室属領|王室属領]]である<ref>{{cite web |url=http://www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |title=Key facts about the United Kingdom |accessdate=3 May 2011 |publisher=[[:en:Directgov|Directgov]] |quote=The full title of this country is 'the United Kingdom of Great Britain and Northern Ireland'. 'The UK' is made up of England, Scotland, Wales and Northern Ireland. 'Britain' is used informally, usually meaning the United Kingdom. 'Great Britain' is made up of England, Scotland and Wales. The Channel Islands and the Isle of Man are not part of the UK. |archiveurl=http://webarchive.nationalarchives.gov.uk/20121015000000/http:/www.direct.gov.uk/en/Governmentcitizensandrights/LivingintheUK/DG_10012517 |archivedate=2012年10月15日 |deadlinkdate=2018年3月 }}</ref>。

===主要都市===
{{Main|イギリスの都市の一覧}}
イギリスは四つの非独立国であるイングランドスコットランドウェールズ北アイルランドより構成されるそれぞれの国は首都を持ちロンドンイングランド)、エディンバラスコットランド)、カーディフウェールズ)、ベルファスト北アイルランドがそれである中でもイングランドの首都であるロンドンはイギリス連合王国の首都としての機能も置かれている

イングランドの[[首都]]ロンドンは[[ヨーロッパ]]第2の規模の都市的地域及び[[ユーロスタット]]によれば[[欧州連合]]最大の約1,400万人の人口を有する[[:en:London commuter belt|都市圏]]であり重要な[[世界都市]]及び[[金融センター]]である<ref name="appsso.eurostat.ec.europa.eu show">{{cite web |url=http://appsso.eurostat.ec.europa.eu/nui/show.do?dataset=met_pjanaggr3&lang=en |title=Metropolitan Area Populations |publisher=Eurostat |date=30 August 2012 |accessdate=4 May 2013}}</ref><ref>{{cite web|url=https://www.cia.gov/library/publications/the-world-factbook/geos/uk.html|title=The World Factbook|date=1 February 2014|work=[[Central Intelligence Agency]]|accessdate=23 February 2014}}</ref>。

ウェールズスコットランド北アイルランドの首都は各々カーディフエディンバラベルファストである
[[ファイル:Population density UK 2011 census.png|thumb|right|人口分布2011]]

{| class="infobox" style="text-align:center; width:100%; margin-right:10px; font-size:100%"
! colspan="10" style="background:#e9e9e9; padding:0.3em; line-height:1.2em;"| '''イギリスの主要都市'''
|-
!rowspan=30|
[[ファイル:2019 Greenwich Peninsula & Canary Wharf.jpg|150px]]<br /><small>[[ロンドン]]</small><br />[[ファイル:Birmingham Skyline from Edgbaston Cricket Ground crop.jpg|150px]]<br /><small>[[バーミンガム]]</small><br />
! style="text-align:center; background:#f5f5f5;"| <small>#</small>
! style="text-align:left; background:#f5f5f5;"| 都市名
! style="text-align:left; background:#f5f5f5;"| [[イギリスの地方行政区画|行政区画]]
! style="text-align:center; background:#f5f5f5;"| 人口
! style="text-align:center; background:#f5f5f5;"| <small>#</small>
! style="text-align:left; background:#f5f5f5;"| 都市名
! style="text-align:left; background:#f5f5f5;"| [[イギリスの地方行政区画|行政区画]]
! style="text-align:center; background:#f5f5f5;"| 人口
!rowspan=21|
[[ファイル:Leeds CBD at night.jpg|150px]]<br /><small>[[リーズ]]</small><br />[[ファイル:Glasgow and the Clyde from the air (geograph 4665720).jpg|150px]]<br /><small>[[グラスゴー]]</small><br />
|-
| style="background:#f0f0f0"| 1 ||align=left | '''[[ロンドン]]''' || {{ENG}} || 8,908,081 || 11 ||align=left | '''[[コヴェントリー]]''' || {{ENG}} || 366,785|-
| style="background:#f0f0f0"| 2 ||align=left | '''[[バーミンガム]]''' || {{ENG}} || 1,141,374 || 12 ||align=left | '''[[カーディフ]]''' || {{Flagicon|WAL}}[[ウェールズ]] || 362,800|-
| style="background:#f0f0f0"| 3 ||align=left | '''[[リーズ]]''' || {{ENG}} || 789,194 || 13 ||align=left | '''[[ベルファスト]]''' || {{Flagicon|北アイルランド}}[[北アイルランド]] || 340,200|-
| style="background:#f0f0f0"| 4 ||align=left | '''[[グラスゴー]]''' || {{SCO}} || 626,410 || 14 ||align=left | '''[[レスター]]''' || {{ENG}} || 329,839|-
| style="background:#f0f0f0"| 5 ||align=left | '''[[シェフィールド]]''' || {{ENG}} || 582,506 || 15 ||align=left | '''[[ノッティンガム]]''' || {{ENG}} || 321,500|-
| style="background:#f0f0f0"| 6 ||align=left | '''[[マンチェスター]]''' || {{ENG}} || 547,627 || 16 ||align=left | '''[[ニューカッスルアポンタイン|ニューカッスルアポンタイン]]''' || {{ENG}} || 300,196|-
| style="background:#f0f0f0"| 7 ||align=left | '''[[ブラッドフォード (イングランド)|ブラッドフォード]]''' || {{ENG}} || 537,173 || 17 ||align=left | '''[[プリマス]]''' || {{ENG}} ||  263,100|-
| style="background:#f0f0f0"| 8 ||align=left | '''[[リヴァプール]]''' || {{ENG}} || 494,814 || 18 ||align=left | '''[[ウルヴァーハンプトン]]''' || {{ENG}} || 262,008|-
| style="background:#f0f0f0"| 9 ||align=left | '''[[エディンバラ]]''' || {{SCO}} || 488,050 || 19 ||align=left | '''[[キングストンアポンハル|キングストンアポンハル]]''' || {{ENG}} || 260,645|-
| style="background:#f0f0f0"| 10 ||align=left | '''[[ブリストル]]''' || {{ENG}} || 463,400 || 20 ||align=left | '''[[ストークオントレント|ストークオントレント]]''' || {{ENG}} || 255,833|}
{{Clear}}
4位以下の都市人口が僅差であり順位が変わりやすい2006年以降はロンドンバーミンガムリーズグラスゴーシェフィールドの順となっている

===気候===
イギリスの[[気候]]は2つの要因によって基調が定まっているまず[[メキシコ湾流]]に由来する暖流の北大西洋海流の影響下にあるため北緯50度から60度という高緯度にもかかわらず温暖であること次に中緯度の偏西風の影響を強く受けることである以上から[[西岸海洋性気候]] (Cfb) が卓越する[[大陸性気候]]はまったく見られず気温の年較差は小さい

メキシコ湾流の影響は冬季に強く現れる特に西部において気温の低下が抑制され気温が西岸からの距離に依存するようになる夏季においては緯度と気温の関連が強くなり比較的東部が高温になる水の蒸散量が多い夏季に東部が高温になることから年間を通じて東部が比較的乾燥し西部が湿潤となる

降水量の傾向もメキシコ湾流の影響を受けている東部においては降水量は一年を通じて平均しておりかつ一日当たりの降水量が少ない冬季特に風速が観測できない日には霧が発生しやすいこの傾向が強く当てはまる都市としてロンドンが挙げられる西部においては降水量が2500mmを超えることがある

首都ロンドンの年平均気温は12.81月の平均気温は6.77月の平均気温は19.5<ref>[https://www.weatheronline.co.uk/weather/maps/city?FMM=1&FYY=2001&LMM=12&LYY=2017&WMO=03779&CONT=ukuk&REGION=0003&LAND=UK&ART=TEM&R=0&NOREGION=1&LEVEL=162&LANG=en&MOD=tab London Weather Center 2001年1月から2017年12月までの平均]</ref>、年平均降水量は750.6mmとなっている。

==政治==
[[ファイル:Palace of Westminster, London - Feb 2007.jpg|thumb|[[イギリスの議会|英国議会]]が議事堂として使用する[[ウェストミンスター宮殿]]]]
{{main|イギリスの政治|イギリスの憲法|英国法|英米法}}
[[政体]]はイギリスの君主を[[元首]]に戴く[[立憲君主制]]であり内閣が議会の信任に基づいて存在する[[議院内閣制]]を採用する<ref>[http://www.royal.gov.uk/MonarchUK/HowtheMonarchyworks/Whatisconstitutionalmonarchy.aspx The British Monarchy, ''What is constitutional monarchy?'']. Retrieved 17 July 2013</ref><ref>[https://www.cia.gov/library/publications/the-world-factbook/geos/uk.html CIA, ''The World Factbook'']. Retrieved 17 July 2013</ref>。
===元首===
{{現在のイギリスの君主}}
1952年{{0}}2月{{0}}6日以降のイギリス女王君主[[ウィンザー朝]]第4代君主[[エリザベス2世]]である

======
[[イギリスの憲法]]は一つに成典化されていない[[不文憲法]]であり[[制定法]]議会制定法だけでなく[[マグナカルタ]]のような国王と貴族の契約も含むや[[判例法]]歴史的文書及び[[慣習法]]憲法的習律と呼ばれるなどが憲法を構成しているこれらは他の法律と同様に議会で修正可能なため[[軟性憲法]]であると言えるただし伝統的に憲法を構成する法律については簡単に改正されることはない)。憲法を構成する慣習法の一つに「'''国王は君臨すれども統治せず'''」とあり女王国王の権能は極めて儀礼的である

このように世界でも最も早い段階から立憲君主制と[[法の支配]]を採用しまた[[立法権]]優位の[[議会主権|議会主義]]が発達しており[[議院内閣制]][[ウェストミンスターシステム]]や[[政党制]][[複数政党制]]など現代の多くの国家が採用している[[民主主義]]の諸制度が発祥した国である

===内政===
[[立法権]]は[[イギリスの議会|議会]]に[[行政権]]は首相及び[[内閣 (イギリス)|内閣]]に[[司法権]]は[[イギリス最高裁判所]]及び以下の下級[[裁判所]]によって行使される

イギリスの議会は上院[[貴族院 (イギリス)|貴族院]]と下院[[庶民院 (イギリス)|庶民院]]の[[二院制]]である1911年に制定された[[議会法]]憲法の構成要素の一つにより、「下院の優越が定められている議院内閣制に基づき行政の長である首相は憲法的習律に従って下院第一党党首下院議員を国王が任命閣僚は議会上下両院の議員から選出される下院は単純[[小選挙区制]]による[[直接選挙]][[普通選挙]]で選ばれるが上院は非公選であり任命制である近年従来[[右派]]の保守党と[[左派]]の労働党により[[二大政党制]]化して来たが近年では第三勢力の[[自由民主党 (イギリス)|自由民主党]]旧[[自由党 (イギリス)|自由党]]の継承政党の勢力も拡大している

ウェールズスコットランド北アイルランドは各々異なる{{仮リンク|権限委譲 (イギリス)|en|Devolution in the United Kingdom|label=権限を委譲された}}政権を有しており<ref name="devoladmins">{{cite web|url=https://www.gov.uk/devolution-of-powers-to-scotland-wales-and-northern-ireland#devolved-administrations|title=Devolution of powers to Scotland, Wales, and Northern Ireland|publisher=United Kingdom Government|accessdate=17 April 2013|quote=In a similar way to how the government is formed from members from the two Houses of Parliament, members of the devolved legislatures nominate ministers from among themselves to comprise an executive, known as the devolved administrations...}}</ref><ref>{{cite news |url=http://news.bbc.co.uk/1/hi/education/7859034.stm |title=Fall in UK university students |work=BBC News |date=29 January 2009}}</ref><ref>{{cite web |url=http://www.transport-research.info/web/countryprofiles/uk.cfm |title=Country Overviews:United Kingdom |publisher=Transport Research Knowledge Centre |accessdate=28 March 2010 |archiveurl=https://web.archive.org/web/20100404062853/http://www.transport-research.info/web/countryprofiles/uk.cfm |archivedate=2010年4月4日 |deadlinkdate=2018年3月 }}</ref>、1996年に[[北アイルランド議会]]、1999年には[[スコットランド議会]]と[[ウェールズ議会]]が設置され、自治が始まった。スコットランドには主に[[スコットランド国民党]]による[[スコットランド独立運動]]が存在し、北アイルランドには20世紀から続く[[北アイルランド問題]]も存在する。
2016年{{0}}6月[[イギリスの欧州連合離脱是非を問う国民投票|欧州連合からの離脱を問う国民投票]]で賛成多数となり1973年のEEC加盟以来の大陸との一体化が幕を閉じた[[ブレグジット]])。これを受けてキャメロン首相からメイ首相へ交代した現任の首相は[[ボリスジョンソン]]

===地方行政区分===
[[ファイル:Scotland Parliament Holyrood.jpg|thumb|[[スコットランド議会]]議事堂]]
{{main|イギリスの地方行政区画}}

連合王国の地方行政制度は次の各地方によって異なっている
*{{Flag|ENG}}
*{{Flag|SCO}}
*{{Flag|WAL}}
*[[北アイルランド]]
このほか連合王国には含まれないものの連合王国がその国際関係について責任を負う地域として海外領土および[[王室属領]]が存在する

===外交軍事===
[[ファイル:Donald Trump and Theresa May (33998675310) (cropped).jpg|thumb|left|[[2017年]][[1月27日]]就任直後の[[ドナルドトランプ]]米大統領と[[ホワイトハウス]]で会談する[[テリーザメイ]]元英首相]]
{{Main|イギリスの国際関係|イギリス軍}}
イギリスは19世紀から20世紀前半までの間世界最高位の[[大国]]であった<ref>{{cite book |title=The First Industrial Nation:the Economic History of Britain, 17001914 |publisher=Routledge |location=London |author=Mathias, P. |year=2001 |isbn=0-415-26672-6}}</ref><ref name="ferguson">{{cite book |last=Ferguson |first=Niall |year=2004 |title=Empire:The rise and demise of the British world order and the lessons for global power |publisher=Basic Books |location=New York |isbn=0-465-02328-2}}</ref>現在も[[列強]]であり続け経済文化軍事科学政治で国際的な[[勢力圏|影響力を有する]]<ref>{{cite news |url=http://www.theaustralian.com.au/news/opinion/cameron-has-chance-to-make-uk-great-again/story-e6frg6zo-1225866975992 |author=Sheridan, Greg |title=Cameron has chance to make UK great again |accessdate=23 May 2011 |work=The Australian |location=Sydney |date=15 May 2010}}</ref><ref>{{cite news |url=http://www.independent.co.uk/news/uk/home-news/britain-is-now-most-powerful-nation-on-earth-8326452.html |author=Dugan, Emily |title=Britain is now most powerful nation on earth |accessdate=18 November 2012 |work=The Independent |location=London |date=18 November 2012}}</ref><ref name="David M. McCourt">{{cite book|last=McCourt|first=David|title=Britain and World Power Since 1945:Constructing a Nation's Role in International Politics|publisher=University of Michigan Press|year=28 May 2014|location=United States of America|pages=|isbn=0472072218|url=http://books.google.ie/books?id=lwpOnwEACAAJ&dq=Britain+and+World+Power+Since+1945:+Constructing+a+Nation%27s+Role+in+International+Politics&hl=en&sa=X&ei=TCJkU8TOE6mS7Abw14HIBg&ved=0CDIQ6AEwAA}}</ref>。

[[戦間期]]の[[国際連盟]]時代と同様1946年の第1回[[国際連合安全保障理事会]]以来同国は同理事会[[国際連合安全保障理事会常任理事国|常任理事国]]であり[[G7]][[主要国首脳会議|G8]][[G20]][[北大西洋条約機構|NATO]][[欧州評議会]][[経済協力開発機構|OECD]] [[世界貿易機関|WTO]]の加盟国となっているそしてアメリカ合衆国と歴史的に「'''特別な関係'''(Special relationship)」を持つアメリカ合衆国とヨーロッパ以外にも1920年代までは日本と[[日英同盟]]を結んでいた友好同盟国であったため[[大正]]時代の[[大日本帝国海軍]]現在の[[海上自衛隊]]は[[イギリス海軍]]の伝統に多大な影響を受けながら発展したイギリスと密接な同盟国は[[イギリス連邦|連邦国]]と他の[[英語圏]]の国家を含むイギリスの世界的な存在と影響は各国との相補関係と軍事力を通して拡大されているそれは世界中で約80の軍事基地の設置と軍の配備を維持していることにも現れている<ref>{{cite web|url=http://www.globalpowereurope.eu/|title=Global Power Europe|publisher=<code>Globalpowereurope.eu</code>|language=英語|accessdate=2008-10-17}}</ref>。2011年の軍事支出は627億ドルと一定水準を保っている。

[[ファイル:Soldiers Trooping the Colour, 16th June 2007.jpg|thumb|軍旗分列行進式における[[近衛兵 (イギリス)|近衛兵]]]]
イギリスの[[軍隊]]はイギリス軍<ref>{{lang-en-short|British Armed Forces}}</ref>または陛下の軍<ref>{{lang-en-short|His/Her Majesty's Armed Forces}}</ref>として知られているしかし公式の場ではアームドフォーシーズオブクラウン<!-- 慣例がないため未翻訳 --><ref>{{lang-en-short|Armed Forces of the Crown}}</ref>と呼ばれる<ref>{{Cite web|url=http://www.raf.mod.uk/legalservices/p3chp29.htm|title=Armed Forces Act 1976, Arrangement of Sections|publisher=<code>raf.mod.uk</code>|language=英語|accessdate=2009-02-22|archiveurl=https://web.archive.org/web/20090221072352/http://www.raf.mod.uk/legalservices/p3chp29.htm|archivedate=2009年2月21日|deadlinkdate=2018年3月}}</ref>(クラウンは冠、王冠の意)。全軍の最高司令官はイギリスの君主であるが、それはあくまで名目上に過ぎず、首相が事実上の指揮権を有している。軍の日常的な管理は[[国防省 (イギリス)|国防省]]に設置されている[[国防委員会]]によって行われている。

イギリスの軍隊は各国の軍隊に比べて広範囲にわたる活動を行い世界的な[[戦力投射]]能力を有する軍事大国の1つに数えられ国防省によると[[軍事費]]は世界2位である2008年現在軍事費はGDPの2.5%を占めている<ref>{{Cite web|url=http://www.mod.uk/DefenceInternet/AboutDefence/Organisation/KeyFactsAboutDefence/DefenceSpending.htm|title=Defence Spending|publisher={{lang|en|Ministry of Defence}}|language=英語|accessdate=2008-01-06 }}</ref>。イギリス軍はイギリス本国と海外の領土を防衛しつつ、世界的なイギリスの将来的国益を保護し、国際的な平和維持活動の支援を任ぜられている。

2005年の時点で[[イギリス陸軍|陸軍]]は102,440[[イギリス空軍|空軍]]は49,210海軍[[イギリス海兵隊|海兵隊]]を含むは36,320名の兵員から構成されておりイギリス軍の190,000名が現役軍人として80か国以上の国に展開配置されている<ref>{{lang-en-short|Ministry of Defence}}{{PDFlink|[http://www.mod.uk/NR/rdonlyres/6FBA7459-7407-4B85-AA47-7063F1F22461/0/modara_0405_s1_resources.pdf Annual Reports and Accounts 2004-05]|1.60&nbsp;MB}}」2006-05-14 閲覧。{{En icon}}</ref>。

イギリスは[[核兵器]]の保有を認められている5カ国の1つであり{{仮リンク|国別軍事費の一覧|en|List of countries by military expenditures|label=軍事費は世界第5位又は第6位}}である<ref name="SIPRI">{{cite web |url=http://books.sipri.org/product_info?c_product_id=476 |title=The 15 countries with the highest military expenditure in 2013 (table) |publisher=[[:en:Stockholm International Peace Research Institute|Stockholm International Peace Research Institute]] |format=PDF |accessdate=4 May 2014 |archiveurl=https://web.archive.org/web/20150104033821/http://books.sipri.org/product_info?c_product_id=476 |archivedate=2015年1月4日 |deadlinkdate=2018年3月 }}</ref><ref name="iiss.org">[http://www.iiss.org/en/about%20us/press%20room/press%20releases/press%20releases/archive/2014-dd03/february-0abc/military-balance-2014-press-statement-52d7 The Military Balance 2014:Top 15 Defence Budgets 2013] (IISS)</ref>。[[核弾頭]]搭載の[[トライデント (ミサイル)|トライデント II]] [[潜水艦発射弾道ミサイル]] (SLBM) を運用している。イギリス海軍は、トライデント IIを搭載した[[原子力潜水艦]]4隻で[[核抑止]]力の任務に担っている。
{{See also|イギリスの大量破壊兵器}}

イギリス軍の幅広い活動能力にも関わらず最近の国事的な国防政策でも協同作戦時に最も過酷な任務を引き受けることを想定している<ref>{{lang|en|Office for National Statistics}}{{lang|en|UK 2005:The Official Yearbook of the United Kingdom of Great Britain and Northern Ireland}}p. 89 {{En icon}}</ref>イギリス軍が単独で戦った最後の戦争は[[フォークランド紛争]]で全面的な戦闘が丸々3か月続いた現在は[[ボスニア紛争]][[コソボ紛争]][[アフガニスタン紛争 (2001-)|アフガニスタン侵攻]][[イラク戦争]]などアメリカ軍やNATO諸国との[[連合作戦]]が慣例となっているイギリス海軍の軽歩兵部隊であるイギリス海兵隊は[[上陸戦|水陸両用作戦]]の任務が基本であるがイギリス政府の外交政策を支援するため軽歩兵部隊の特性を生かして海外へ即座に展開できる機動力を持つ

==経済==
{{main|イギリスの経済}}
[[国際通貨基金|IMF]]によると2015年のイギリスの[[国内総生産|GDP]]は2兆8584億ドルであり世界5位欧州では[[ドイツ]]に次ぐ2位である<ref name="GDP1">[https://www.imf.org/external/pubs/ft/weo/2016/02/weodata/weorept.aspx?sy=2015&ey=2015&scsm=1&ssd=1&sort=country&ds=.&br=1&c=112&s=NGDPD%2CNGDPDPC&grp=0&a=&pr.x=28&pr.y=7 World Economic Outlook Database, October 2016] IMF 2016年11月{{0}}3日閲覧。</ref>。同年の一人当たりのGDPは4万3902ドルである<ref name="GDP1"/>。[[人間開発指数]]は[[人間開発指数による国順リスト|世界第14位]]で「非常に高い」に分類される。

[[ファイル:City of London skyline from London City Hall - Oct 2008.jpg|thumb|250px|ロンドンは2016年に発表された世界の都市総合力ランキングにおいて世界1位と評価された<ref>[http://www.mori-m-foundation.or.jp/ius/gpci/ 世界の都市総合力ランキング(GPCI) 2016] 森記念財団都市戦略研究所 2016年10月31日閲覧。</ref>]]
首都ロンドンは2016年時点で[[ニューヨーク]]を上回る世界一の金融センターと評価されている<ref>[http://www.longfinance.net/global-financial-centres--20/1037-gfci-20.html Global Financial Centres Index 20] Z/yen 2016年11月{{0}}3日閲覧。</ref>。ロンドンの[[シティ・オブ・ロンドン|シティ]]には、世界屈指の[[証券取引所]]である[[ロンドン証券取引所]]がある。イギリスの[[外国為替市場]]の1日平均取引額はアメリカを上回り、世界最大である<ref>[http://www.bis.org/publ/rpfx16.htm Triennial Central Bank Survey of foreign exchange and OTC derivatives markets in 2016] 国際決済銀行(BIS) 2016年11月{{0}}3日閲覧。</ref>。[[富裕層|富裕層人口]]も非常に多く、金融資産100万ドル以上を持つ富裕世帯は約41万世帯と推計されており、アメリカ、日本、[[中華人民共和国|中国]]に次ぐ第4位である<ref name="Rich">[http://www.bcg.com/expertise_impact/publications/PublicationDetails.aspx?id=tcm:12-107081 BCG Global Wealth 2012]</ref>。また、金融資産1億ドル以上を持つ超富裕世帯は1,125世帯と推計されており、アメリカに次ぐ第2位である<ref name="Rich"/>。

[[18世紀]]の産業革命以降近代において[[世界経済]]をリードする[[工業国]]で[[造船]]や[[航空機]]製造などの[[工業|重工業]]から金融業や[[エンターテインメント|エンターテイメント]]産業に至るまで様々な産業が盛んである歴史的に造船業は特筆に値し[[複式機関#船舶用複式蒸気機関の例|三段膨張機関]]が登場してから第一次世界大戦勃発までは世界の船の三分のニを生産した<ref>柏戸傳、「[https://hdl.handle.net/11266/1231 大戦間期日・英造船業の企業金融]」『立正経営論集』 2005年 37巻 2号, 立正大学経営学会</ref>。

しかしながら19世紀後半からはアメリカ合衆国ドイツ帝国の工業化により世界的優位は失われたイギリスを含む世界金融資本がイギリス製造業への投資よりドイツアメリカおよび植民地への投資を選好したためであるイギリス製造業はしだいにドイツフランスやアメリカ合衆国に立ち後れるようになってゆく20世紀に入るころより国力は衰え始め二度の世界大戦はイギリス経済に大きな負担を与えた各地の植民地をほとんど独立させた1960年代後半には経済力はいっそう衰退した

戦後の経済政策の基調は市場と国営セクター双方を活用する[[混合経済]]体制となり左派の労働党は[[ゆりかごから墓場まで]]と呼ばれる公共福祉の改善に力を入れ保守党も基本的にこれに近い政策を踏襲1960年代には世界有数の[[福祉国家論|福祉国家]]になったしかし[[オイルショック]]を契機とした不況になんら実用的な手立てを打たなかったために継続的な不況に陥り企業の倒産やストが相次いだ20世紀初頭から沈滞を続けたイギリス経済は深刻に行き詰まり、「[[英国病]]とまで呼ばれた

1979年に登場したサッチャー政権下で国営企業の民営化や各種規制の緩和が進められ1980年代後半には海外からの直接投資や証券投資が拡大したこの過程で製造業や[[鉱業]]部門の労働者が大量解雇され深刻な失業問題が発生基幹産業の一つである[[自動車]]産業の殆どが外国企業の傘下に下ったが外国からの投資の拡大をしだいに自国の産業の活性化や雇用の増大に繋げて行きその後の経済復調のきっかけにして行った[[ウィンブルドン現象]])。

その後1997年に登場したブレア政権における経済政策の成功などにより経済は復調しアメリカや他のヨーロッパの国に先駆けて好景気を享受するようになったがその反面でロンドンを除く地方は経済発展から取り残され[[貧富の差]]の拡大や不動産価格の上昇などの問題が噴出してきている

さらに2008年にはアメリカ合衆国の[[サブプライムローン]]問題の影響をまともに受けて金融不安が増大した上に資源食料の高騰の直撃を受け[[アリスターダーリング]][[財務大臣 (イギリス)|財務大臣]]が過去60年間で恐らく最悪の下降局面に直面していると非常に悲観的な見通しを明らかにしている<ref>{{Cite web|date=2008-08-30|url=http://sankei.jp.msn.com/economy/business/080830/biz0808301850007-n1.htm|work=産経新聞|title=「英経済、過去60年間で最悪の下降局面」英財務相|accessdate=2008-08-30 |archiveurl=https://web.archive.org/web/20080902012013/http://www.sankei.jp.msn.com/economy/business/080830/biz0808301850007-n1.htm |archivedate=2008-09-02}}</ref>。2012年{{0}}2月時点で失業率は8%を超えるまでに悪化した状態にあったが、その後は回復の兆しを見せている。

===鉱業===
[[ファイル:Oil platform in the North SeaPros.jpg|thumb|[[北海油田]]]]
イギリスの鉱業は産業革命を支えた[[石炭]]が著名である300年以上にわたる採炭の歴史があり石炭産業の歴史がどの国よりも長い2002年時点においても3193万トンを採掘しているもののほぼ同量の石炭を輸入している[[北海油田]]からの[[原油]]採掘量は1億1000万トンに及びこれは世界シェアの3.2%に達する最も重要なエネルギー資源は[[天然ガス]]であり世界シェアの4.3%第4位を占める有機鉱物以外では世界第8位となる[[塩化カリウム|カリ塩]] (KCl) 同10位となる[[塩]] (NaCl) がある金属鉱物には恵まれていない最大の[[鉛]]鉱でも1000トンである

===農業===
最も早く工業化された国であり現在でも高度に工業化されている農業の重要性は低下し続けておりGDPに占める農業の割合は2%を下回ったしかしながら世界シェア10位以内に位置する農産物が8品目ある穀物では[[オオムギ]]586万トン世界シェア10位以下2004年時点)、工芸作物では[[亜麻]]2万6000トン5)、[[テンサイ]]790万トン9)、[[アブラナ|ナタネ]]173万トン5)、[[ホップ]]2600トン6である家畜畜産品では[[ヒツジ]]3550万頭7)、[[ウール|羊毛]]6万5000トン5)、[[牛乳]]1480万トン9が主力

===貿易===
イギリスは産業革命成立後自由貿易によって多大な利益を享受してきたただし21世紀初頭においては貿易の比重は低下している2004年時点の貿易依存度すなわち国内総生産に対する輸出入額の割合はヨーロッパ諸国内で比較すると[[イタリア]]と並んでもっとも低いすなわち輸出16.1%輸入21.3%である

[[国際連合]]のInternational Trade Statistics Yearbook 2003によると品目別では輸出輸入とも工業製品が8割弱を占める輸出では電気機械15.2%2003)、機械類自動車医薬品原油輸入では電気機械 (16.3%)自動車機械類衣類医薬品の順になっている

貿易相手国の地域構成は輸出輸入ともヨーロッパ最大の工業国ドイツと似ている輸出入とも対EUの比率が5割強輸出においてはEUが53.4%2003)、次いでアメリカ合衆国15.0%アジア12.1%輸入においてはEU52.3%アジア15.1%アメリカ合衆国9.9%である

国別では主な輸出相手国はアメリカ合衆国15.0%2003)、ドイツ (10.4%)フランス (9.4%)オランダ (5.8%)アイルランド (6.5%)輸入相手国はドイツ (13.5%)アメリカ合衆国 (9.9%)フランス (8.3%)オランダ (6.4%)中華人民共和国 (5.1%) である
===不動産===
イギリスの不動産は人口の約1%の約25,000人の貴族や大企業などがイングランドの土地の48%を保有しており未申告は貴族が家族間で秘密裏に管理していた土地と考えられている
{|
|-
|法人企業
|style="text-align:right"|18
|<!-- 最上段 --><div style="width:180px;height:16px;background:#9999ff"></div>
|-
|銀行の経営者寡頭政治家
|style="text-align:right"|17
|<!-- 2段目 --><div style="width:170px;height:16px;background:#9999ff"></div>
|-
|公的機関
|style="text-align:right"|8.5
|<!-- 3段目 --><div style="width:85px;height:16px;background:#9999ff"></div>
|-
|住宅保有者
|style="text-align:right"|5
|<!-- 4段目 --><div style="width:50px;height:16px;background:#9999ff"></div>
|-
|慈悲団体
|style="text-align:right"|2
|<!-- 5段目 --><div style="width:20px;height:16px;background:#9999ff"></div>
|-
|王室
|style="text-align:right"|1,4
|<!-- 6段目 --><div style="width:14px;height:16px;background:#9999ff"></div>
|-
|イングランド教会
|style="text-align:right"|0.5
|<!-- 7段目 --><div style="width:5px;height:16px;background:#9999ff"></div>
|-
|未申告
|style="text-align:right"|17
|<!-- 最下段 --><div style="width:178px;height:16px;background:#9999ff"></div>
|}

===エネルギー政策===
{{main|{{仮リンク|イギリスのエネルギー|en|Energy in the United Kingdom}}}}

イギリスの原子力発電に対する中華人民共和国の投資と技術協力を積極的に推進することでエネルギー政策と経済力の強化に取り組んでいる<ref>[http://mainichi.jp/select/news/20151022k0000m030079000c.html 習主席:英首相と7兆円商談合意…人民元建てで国債発行へ] {{webarchive|url=https://web.archive.org/web/20151023155717/http://mainichi.jp/select/news/20151022k0000m030079000c.html |date=2015年10月23日 }}毎日新聞 2015年10月21日</ref>。2016年には、中国からの投資による原子炉の建造を承認した<ref>https://www.gov.uk/government/news/multimillion-boost-to-uk-economy-as-china-and-uk-government-sign-civil-nuclear-agreement-and-sign-agreement-to-deepen-cooperation-on-climate-change</ref>。

===通貨===
スターリングポンド (GBP) が使用されている補助単位は[[ペニー]]で1971年より1ポンドは100ペンスであるかつてポンドは[[アメリカ合衆国ドル|USドル]]が世界的に決済通貨として使われるようになる以前イギリス帝国の経済力を背景に国際的な決済通貨として使用されたイギリスの欧州連合加盟に伴いヨーロッパ共通通貨であるユーロにイギリスが参加するか否かが焦点となったがイギリス国内に反対が多く[[欧州連合の経済通貨統合|通貨統合]]は見送られたイングランド銀行が連合王国の[[中央銀行]]であるがスコットランドと北アイルランドでは地元の商業銀行も独自の紙幣を発行しているイングランド銀行の紙幣にはエリザベス女王が刷られており連合王国内で共通に通用するスコットランド紙幣北アイルランド紙幣ともに連合王国内で通用するが受け取りを拒否されることもある
2016年{{0}}6月24日1993年に加盟した欧州連合EUの脱退が国民投票によって正式に決定した

===企業===
{{main|イギリスの企業一覧}}

====通信====
{{Main|{{仮リンク|イギリスの情報通信|en|Telecommunications in the United Kingdom}}}}
イギリスではヒースロー空港などにある自動販売機で[[SIMカード]]が購入できる[[プリペイド|プリペイド式]]となっておりスーパーなどで通話通信料をチャージして使う

おもな通信業者
*[[ボーダフォン]] イギリス
*[[EE (企業)|EE]] ドイツ系の[[T-Mobile]]とフランス系(元イギリス)の[[Orange_(通信会社)|Orange]]([[:en:Orange (UK)|en]])の合弁で現在は[[BTグループ]]傘下
*[[O2]] スペイン[[テレフォニカ]]傘下
*3Three 香港[[ハチソンワンポア]]

==交通==
{{main|{{仮リンク|イギリスの交通|en|Transport in the United Kingdom}}}}

===道路===
{{main|{{仮リンク|イギリスの道路|en|Roads in the United Kingdom}}}}

自動車は[[対面交通|左側通行]]であるまたインドオーストラリア[[香港]][[シンガポール]]など旧イギリス植民地の多くが左側通行を採用している

===鉄道===
{{main|イギリスの鉄道}}
[[ファイル:Eurostar at St Pancras Jan 2008.jpg|thumb|国際列車[[ユーロスター]]の発着駅である[[セントパンクラス駅]]]]
近代鉄道の発祥の地であり国内には鉄道網が張り巡らされロンドンなどの都市には14路線ある[[地下鉄]]チューブトレイン網が整備されているしかし1960年代以降は設備の老朽化のために事故が多発しさらに運行の遅延が常習化するなど問題が多発している

小規模の民間地方鉄道の運営する地方路線の集まりとして誕生したイギリスの鉄道は19世紀から[[20世紀]]前期にかけて競合他社の買収などを通じて比較的大規模な少数の会社が残った1921年にはついに[[ロンドンミッドランドアンドスコティッシュ鉄道]][[ロンドンアンドノースイースタン鉄道]][[グレートウェスタン鉄道]][[サザン鉄道 (イギリス)|サザン鉄道]]の4大鉄道会社にまとまりこれらは1948年に国有化されて[[イギリス国鉄]] (BR) となったしかし[[1994|1994]][[1997|97年]]にBRは旅客輸送貨物輸送と線路や駅などの施設を一括管理する部門に分割されて民営化された

1994年開業したイギリスフランス両国所有の英仏海峡トンネルはイングランドのフォークストンからフランスのカレーまでイギリス海峡の海底130mを長さ50.5kmで走る3本の並行したトンネルからなる1本は貨物専用で残り2本は乗客貨物の輸送に使われるこのトンネルを使ってセントパンクラス駅からはヨーロッパ大陸との間を結ぶ[[ユーロスター]]が運行され[[パリ]]や[[ブリュッセル]][[リール (フランス)|リール]]などのヨーロッパ内の主要都市との間を結んでいる

===海運===
周囲を海に囲まれている上世界中に植民地を持っていたことから古くからの海運立国であり[[P&O]]や[[キュナードライン]]など多くの海運会社があるまた歴史上有名な[[タイタニック (客船)|タイタニック号]][[クイーンエリザベス2]]」、「[[クイーンメリー2]]などの著名な客船を運航している

===航空===
{{main|{{仮リンク|イギリスの航空|en|Air transport in the United Kingdom}}}}

[[ファイル:Heathrow Terminal 5C Iwelumo-1.jpg|thumb|[[:en:London Heathrow Terminal 5|London Heathrow Terminal 5]]. [[ロンドンヒースロー空港]]は[[:en:World's busiest airports by international passenger traffic|国際線利用客数]]では世界随一である]][[ファイル:Airbus A380-841 G-XLEB British Airways (10424102995).jpg|thumb|ブリティッシュエアウェイズ (イギリス最大の航空会社)]]


民間航空が古くから発達し特に国際線の拡張は世界に広がる植民地間をつなぐために重要視されてきた

現在は[[ブリティッシュエアウェイズ]]や[[ヴァージンアトランティック航空]]や[[イージージェット]]などの航空会社がある中でもブリティッシュエアウェイズは[[英国海外航空]]と[[英国欧州航空]]の2つの国営会社が合併して設立され1987年に民営化された世界でも最大規模の航空会社で2009年にはスペインの[[イベリア航空]]と統合合意し2011年に[[インターナショナルエアラインズグループ]]を設立した

航空機製造業も[[BAEシステムズ]]やエンジン製造の[[ロールスロイスホールディングス]]があり1976年にはフランスとともに[[コンコルド]]機を開発して世界初の[[超音速旅客機|超音速旅客]]輸送サービスを開始しかし老朽化とコスト高などにより2003年11月26日をもって運航終了となりコンコルドは空から姿を消した

主な空港としてロンドンのヒースロー空港[[ロンドンガトウィック空港|ガトウィック]][[ロンドンスタンステッド空港|スタンステッド]]のほか[[ロンドンルートン空港|ルートン]][[マンチェスター空港|マンチェスター]][[グラスゴー空港|グラスゴー]]などが挙げられる

日本との間には2016年サマースケジュールではヒースロー空港と[[成田国際空港|成田空港]]の間にブリティッシュエアウェイズのみ1日1便直行便を運航し[[東京国際空港|羽田空港]]の間にもブリティッシュエアウェイズ[[日本航空]][[全日本空輸]]がそれぞれ1日1便直行便を運航しているかつてはヴァージンアトランティック航空が就航していたが2015年に撤退している

==科学技術==
{{Main|{{仮リンク|イギリスの科学技術|en|Science and technology in the United Kingdom}}}}

17世紀の科学革命はイングランドとスコットランドが18世紀の産業革命はイギリスが世界の中心であった重要な発展に貢献した科学者と技術者を多数輩出している[[アイザックニュートン]][[チャールズダーウィン]]電磁波の[[ジェームズクラークマクスウェル]]そして最近では宇宙関係の[[スティーブンホーキング]]科学上の重要な発見者には水素の[[ヘンリーキャヴェンディッシュ]][[ペニシリン]]の[[アレクサンダーフレミング]][[デオキシリボ核酸|DNA]]の[[フランシスクリック]]がいる工学面では[[グラハムベル]]など科学の研究応用は大学の重要な使命であり続け2004年から5年間にイギリスが発表した科学論文は世界の7%を占める学術雑誌[[ネイチャー]]や医学雑誌[[ランセット]]は世界的に著名である

==国民==
{{main|イギリス人|{{仮リンク|イギリスの人口統計|en|Demography of the United Kingdom}}}}
{{See also|{{仮リンク|イギリスの民族|en|Ethnic groups in the United Kingdom}}}}
[[ファイル:UKpop.svg|thumb|right|イギリスの[[人口ピラミッド]]]]
イギリスの人口は2015年時点で推計6,471万人であり[[国の人口順リスト|世界第22位]]である

イギリス民族という民族は存在しない主な民族はイングランドを中心に居住する[[ゲルマン人|ゲルマン民族]]系のイングランド人[[アングロサクソン人]])、[[ケルト人|ケルト]]系のスコットランド人アイルランド人ウェールズ人だが旧植民地出身のインド系[[印僑]])、[[アフリカ系]]カリブ系[[アラブ系]]や[[華僑]]なども多く住む[[多民族国家]]である

イギリスの国籍法では旧植民地関連の者も含め自国民を次の六つの区分に分けている
*GBR:British Citizen - イギリス市民
*:本国人
*BOTC:[[:en:British Overseas Territories citizen|British Overseas Territories citizen]] - [[イギリス海外領土市民]]
*:イギリスの海外領土出身者
*BOC:[[:en:British Overseas Citizen|British Overseas Citizen]] - [[イギリス海外市民]]
*:ギリシャ西岸の諸島インドパキスタンマレーシアなどの旧植民地出身者のうち特殊な歴史的経緯のある者
*GBS:[[:en:British Subject|British Subject]] - [[イギリス臣民]]
*:アイルランド北部以外)・ジブラルタルなどイギリス海外領土市民やイギリス海外市民とは別の経緯のある地域の住民で一定要件に該当する者
*BNO:[[:en:British National (Overseas)|British National (Overseas)]] - [[イギリス国民海外]]※「BN(O)とも書く
*:英国国籍で香港の[[永住権|住民権]]も持つ人
*BPP:[[:en:British Protected Person|British Protected Person]] - [[イギリス保護民]]

いずれの身分に属するかによって国内での様々な取扱いで差異を生ずることがあるほかパスポートにその区分が明示されるため海外渡航の際も相手国により取扱いが異なることがある例えば日本に入国する場合British citizen本国人とBritish National (Overseas)英国籍香港人は短期訪問目的なら[[査証]]ビザ不要となるが残りの四つは数日の[[観光]]訪日であってもビザが必要となる

===言語===
{{main|{{仮リンク|イギリスの言語|en|Languages of the United Kingdom}}}}
[[ファイル:Anglospeak.svg|thumb|250px|世界の[[英語圏]]地域濃い青色は英語が[[公用語]]または事実上の公用語になっている地域薄い青色は英語が公用語であるが主要な言語ではない地域]]
事実上の公用語は英語イギリス英語でありもっとも広く使用されているがイングランドの主に[[コーンウォール]]でコーンウォール語ウェールズの主に北部と中部でウェールズ語スコットランドの主に[[ローランド地方]]でスコットランド語ヘブリディーズ諸島の一部でスコットランドゲール語北アイルランドの一部で[[:en:Ulster Scots dialects|アルスタースコットランド語]]とアイルランド語が話されておりそれぞれの構成国で公用語になっている

特にウェールズでは1993年にウェールズ語が公用語になり英語と同等の法的な地位を得た2001年現在ウェールズ人口の約20%がウェールズ語を使用しその割合は僅かではあるが増加傾向にある公文書や道路標識などはすべてウェールズ語と英語とで併記されるまた16歳までの義務教育においてウェールズ語は必修科目でありウェールズ語を主要な教育言語として使用し英語は第二言語として扱う学校も多く存在する

===宗教===
{{See also|イギリスの宗教}}
10年に一度行われるイギリス政府の国勢調査によれば2001[[キリスト教徒]]が71.7%[[イスラム教徒]]が3.0%[[ヒンドゥー教]]徒が1.0%
2011キリスト教徒59.3%イスラム教徒4.8%ヒンドゥー教徒が1.5%<ref>{{Cite report |publisher=Office for National Statistics |title=Religion in England and Wales 2011 |date=2012-12-11 |url=https://www.ons.gov.uk/peoplepopulationandcommunity/culturalidentity/religion/articles/religioninenglandandwales2011/2012-12-11 }}</ref>。

キリスト教の内訳は[[英国国教会]]が62%[[カトリック]]が13%[[長老派]]が6%[[メソジスト]]が3%程度と推定されている<ref>The Changing Religious Landscape of Europe Hans Knippenberg</ref>

===婚姻===
婚姻の際には夫婦同姓複合姓[[夫婦別姓]]のいずれも選択可能であるまた[[同性結婚]]も可能である<ref>英国イングランドとウェールズ同性婚を初の合法化朝日新聞2014年{{0}}3月29日</ref>また在日英国大使館においても同性結婚登録を行うことが可能である<ref>在日本英国大使館領事館で同性婚登録が可能に 週刊金曜日 2014年{{0}}6月13日</ref><ref>https://www.gov.uk/government/news/introduction-of-same-sex-marriage-at-british-consulates-overseas.ja</ref>。

===移住===
{{main|{{仮リンク|現代イギリスにおける移民|en|Modern immigration to the United Kingdom}}|{{仮リンク|イギリスにおける外国人出生者|en|Foreign-born population of the United Kingdom}}}}
{{節スタブ}}
===教育===
{{main|イギリスの教育}}
イギリスの学校教育は地域や公立私立の別により異なるが5歳より小学校教育が開始される

===医療===
{{Main|イギリスの医療}}
[[ファイル:Royal Aberdeen Children's Hospital.jpg|thumb|right|The Royal Aberdeen Children's HospitalNHSスコットランドの小児病院]]
イギリスの医療は各地域それぞれの[[地方分権]]型であり公的医療とプライベート診療が存在する公的医療は[[国民保健サービス]]NHSによりすべてのイギリス人に提供され医学的必要性が認められる治療は大部分は自己負担なしであり費用は一般税収を原資としている[[公費負担医療]])。NHSにはイギリス国家予算の25.2%が投じられている<ref name="ohe">{{Cite report |publisher=Office of Health Economics |title=OHE Guide to UK Health and Health Care Statistics |date=2013-08 |url=https://www.ohe.org/publications/ohe-guide-uk-health-and-health-care-statistics }}</ref>。

国全体にかかわる規制は{{仮リンク|総合医療評議会|en|General Medical Council}}や{{仮リンク|看護助産評議会|en|Nursing and Midwifery Council}}やまた[[ロイヤルカレッジ]]などの外部機関が行っているしかし政策や現業の責務は各地方行政区である4つの女王陛下の政府北アイルランド政府スコットランド政府ウェールズ政府がそれぞれになっているそれぞれの運営するNHSは各々の政策や優先度を持ち施政に違いをもたらしている<ref>{{cite news |url=http://news.bbc.co.uk/1/hi/health/7586147.stm |title='Huge contrasts' in devolved NHS |work=BBC News |date=28 August 2008}}</ref><ref>{{cite news |url=http://news.bbc.co.uk/1/hi/health/7149423.stm |title=NHS now four different systems |work=BBC News |date=2 January 2008 |first=Nick |last=Triggle}}</ref>。

英国はGDPの8.5%を医療に支出しておりこれはOECD平均と比べて-0.5%EU平均と比べて-1%の値であった<ref>{{cite report|title=OECD Health Data 2009&nbsp; How Does the United Kingdom Compare |publisher=OECD}}</ref>1979年に保健支出が急増したことによりその値はEU平均に近くなってきている<ref>{{Cite journal|url=http://www.healthp.org/node/71|title=The NHS from Thatcher to Blair |first=Peter |last=Fisher |work=NHS Consultants Association |publisher=International Association of Health Policy |quote=The Budget ... was even more generous to the NHS than had been expected amounting to an annual rise of 7.4% above the rate of inflation for the next 5 years. This would take us to 9.4% of GDP spent on health ie around EU average.}}</ref>。WHOは2000年に英国の医療制度を欧州で15位、世界で18位と評している<ref name="Who2000">{{Cite book |editor-last=Haden |editor-first=Angela |editor2-last=Campanini |editor2-first=Barbara |title=The world health report 2000&nbsp;– Health systems:improving performance |year=2000 |location=Geneva |publisher=World Health Organisation |url=http://www.who.int/whr/2000/en/whr00_en.pdf |isbn=92-4-156198-X |accessdate=5 July 2011}}</ref><ref>{{Cite journal |url=http://pages.stern.nyu.edu/~wgreene/Statistics/WHO-COMP-Study-30.pdf |title=Measuring overall health system performance for 191 countries |author=[[World Health Organization]] |publisher=New York University |accessdate=5 July 2011}}</ref>。

==文化==
{{Main|[[:en:Culture of the United Kingdom]]}}

===食文化===
{{Main|イギリス料理}}
[[フィッシュアンドチップス]]や[[ローストビーフ]][[ウナギのゼリー寄せ]]などが有名である{{節スタブ}}

===文学===
[[ファイル:CHANDOS3.jpg|thumb|150px|[[ウィリアムシェイクスピア]]]]
{{Main|イギリス文学}}
多くの傑作を後世に残した[[ウィリアムシェイクスピア]]は[[イギリスルネサンス演劇]]を代表する空前絶後の詩人および劇作家と言われる初期のイギリス文学者としては[[ジェフリーオブモンマス]]や[[ジェフリーチョーサー]][[トマスマロリー]]が著名18世紀になると[[サミュエルリチャードソン]]が登場する彼の作品には3つの小説の基本条件すなわちフィクション性および物語性人間同士の関係愛情結婚など)、個人の性格や心理といった条件が満たされていたことから彼は近代小説の父と呼ばれている

19世紀の初めになると[[ウィリアムブレイク]][[ウィリアムワーズワース]]ら[[ロマン主義]]の詩人が活躍した19世紀には小説分野において革新が見られ[[ジェーンオースティン]][[ブロンテ姉妹]][[チャールズディケンズ]][[トーマスハーディ]]らが活躍した19世紀末には[[耽美主義]]の[[オスカーワイルド]]現代の[[推理小説]]の生みの親[[アーサーコナンドイル]]が登場

20世紀に突入すると、「[[サイエンスフィクション|SF]]の父[[ハーバートジョージウェルズ]][[モダニズム]]を探求した[[デーヴィッドハーバートローレンス]][[ヴァージニアウルフ]]預言者[[ジョージオーウェル]]、「ミステリーの女王[[アガサクリスティ]]などが出てくるそして近年[[ハリーポッターシリーズ]]の[[JKローリング]]がかつての[[JRRトールキン]]のような人気を世界中で湧かせている

===哲学===
{{Main|{{仮リンク|イギリスの哲学|en|British philosophy}}}}
{{節スタブ}}
*[[イギリス経験論]]
*[[イギリス理想主義]]

===音楽===
{{Main|イギリスの音楽}}
<!-- 音楽の欄はジャンルも影響力もバラバラの人名が並んでいるため出典に基づいた整理が必要 -->
[[クラシック音楽]]における特筆すべきイギリス人作曲家として、「ブリタニア音楽の父[[ウィリアムバード]][[ヘンリーパーセル]][[エドワードエルガー]][[アーサーサリヴァン]][[レイフヴォーンウィリアムズ]][[ベンジャミンブリテン]]がいる特に欧州大陸で古典派ロマン派が隆盛をきわめた18世紀後半から19世紀にかけて有力な作曲家が乏しかった時期もあったが旺盛な経済力を背景に演奏市場としては隆盛を続けロンドンはクラシック音楽の都の一つとして現在残るドイツのオーケストラが地方中都市の団体でも四管フル編成を原則としているのに対しロンドン5大オーケストラは長年[[BBC交響楽団]]を除き現在は[[ロンドン交響楽団]]も総員70名台の中規模編成を貫き大曲演奏に際してはフリー奏者を臨時補充するなどの形であったにも関わらずそれなりの世界的声価を維持してきた一時はメンバーの共有も見られ映画音楽の仕事が多いことが批判されることもあるものの持ち前の合理主義によって少なくとも英語圏では随一のクラシック演奏都市であり続けているオペラはロンドンに[[ロイヤルオペラハウス|コヴェントガーデン王立歌劇場]]と[[イングリッシュナショナルオペラ]]を擁し後者は世界手も珍しい英訳上演主義の団体である

====ポピュラー音楽====
[[ファイル:The Fabs.JPG|thumb|200px|[[ビートルズ]]]]
{{Main|ロック (音楽)|{{仮リンク|ブリティッシュロック|en|British rock}}}}
[[ポピュラー音楽]]特にロックミュージックにおいてイギリスは先鋭文化の発信地として世界的に有名である196070年代になると[[ロック (音楽)|ロック]]が誕生し中でも[[ビートルズ]]や[[ローリングストーンズ]]といった[[ロックンロール]]の影響色濃いバンドがその表現の先駆者として活躍したやがて[[キングクリムゾン]]や[[ピンクフロイド]]などの[[プログレッシブロック]]や[[クイーン (バンド)|クイーン]][[クリーム (バンド)|クリーム]][[レッドツェッペリン]][[ディープパープル]][[ブラックサバス]]などの[[R&B]]や[[ハードロック]]がロックの更新に貢献1970年代後半の[[パンクロック]]の勃興においてはアメリカニューヨークからの文化を取り入れロンドンを中心に[[セックスピストルズ]][[ザクラッシュ]]らが国民的なムーブメントを起こす

パンクロック以降はインディーロックを中心に[[ニューウェイヴ (音楽)|ニューウェイヴ]]などといった新たな潮流が生まれ[[テクノポップ]]ドラッグミュージック文化の発達と共に[[ニューオーダー]][[ザストーンローゼズ]][[グリッド]]などがメインストリームでは[[デュランデュラン]][[デペッシュモード]]らの著名なバンドが生まれた90年代は[[ブリットポップ]]や[[エレクトロニカ]]がイギリスから世界中に広まり人気を博し[[オアシス (バンド)|オアシス]][[ブラー]][[レディオヘッド]][[プロディジー]][[マッシヴアタック]]などは特に目覚ましい[[シューゲイザー]][[トリップホップ]][[ビッグビート]]などといった多くの革新的音楽ジャンルも登場した近年では[[エイミーワインハウス]][[マクフライ]][[コールドプレイ]][[スパイスガールズ]]らがポップシーンに名を馳せた

イギリスではロックやポップなどのポピュラー音楽が国内だけでなく世界へ大きな市場を持つ主要な[[外貨]]獲得興業となっておりトニーブレア政権下などではクールブリタニアでロックミュージックに対する国策支援などが行われたりなどその重要度は高いアメリカ合衆国と共にカルチャーの本山として世界的な影響力を保ち続け他国のポピュラー音楽産業の潮流への先駆性は近年もいささかも揺るがない

===映画===
{{Main|イギリスの映画}}
{{節スタブ}}

===コメディ===
イギリス人はユーモアのセンスが高いと言われているまたコメディアンの多くは高学歴である
*[[ローワンアトキンソン]]
*[[チャールズチャップリン]]
*[[ピーターセラーズ]]
*[[モンティパイソン]]
*[[リックウェイクマン]] 但し本職は[[ミュージシャン]]

===国花===
[[国花]]はそれぞれの地域が持っている
*イングランドは[[バラ]]
*ウェールズは[[ラッパスイセン]][[スイセン]]の1種)。[[リーキ]]もより歴史のあるシンボルだがリーキは花ではない
*北アイルランドは[[シャムロック]]
*スコットランドは[[アザミ]]

===世界遺産===
イギリス国内には[[国際連合教育科学文化機関|ユネスコ]]の[[世界遺産]]リストに登録された文化遺産が21件自然遺産が5件ある詳細は[[イギリスの世界遺産]]を参照
<gallery>
PalaceOfWestminsterAtNight.jpg|ウェストミンスター宮殿
Westminster Abbey - West Door.jpg|[[ウェストミンスター寺院]]
Edinburgh Cockburn St dsc06789.jpg|[[エディンバラ旧市街|エディンバラの旧市街]][[エディンバラ新市街|新市街]]
Canterbury Cathedral - Portal Nave Cross-spire.jpeg|[[カンタベリー大聖堂]]
Kew Gardens Palm House, London - July 2009.jpg|[[キューガーデン|キュー王立植物園]]
2005-06-27 - United Kingdom - England - London - Greenwich.jpg|[[グリニッジ|マリタイムグリニッジ]]
Stonehenge2007 07 30.jpg|[[ストーンヘンジ]]
Yard2.jpg|[[ダラム城]]
Durham Kathedrale Nahaufnahme.jpg|[[ダラム大聖堂]]
Roman Baths in Bath Spa, England - July 2006.jpg|[[バース市街]]
Fountains Abbey view02 2005-08-27.jpg|[[ファウンテンズ修道院]]跡を含む[[スタッドリー王立公園]]
Blenheim Palace IMG 3673.JPG|[[ブレナム宮殿]]
Liverpool Pier Head by night.jpg|[[海商都市リヴァプール]]
Hadrian's Wall view near Greenhead.jpg|[[ローマ帝国の国境線]] ([[ハドリアヌスの長城]])
London Tower (1).JPG|[[ロンドン塔]]
</gallery>

===祝祭日===
祝祭日はイングランドウェールズスコットランド北アイルランドの各政府により異なる場合がある銀行など多くの企業が休みとなることから国民の祝祭日をバンクホリデー({{interlang|en|Bank holiday}})銀行休業日と呼ぶ
{|class="wikitable"
!日付!!日本語表記!!現地語表記!!備考
|-
|1月{{0}}1||[[元日]]||{{lang|en|New Year's Day}}||
|-
|1月{{0}}2||元日翌日||-||スコットランドのみ
|-
|3月17日||[[聖パトリックの祝日|聖パトリックの日]]||{{lang|en|St. Patrick's Day}}||北アイルランドのみ
|-
|3 - 4||[[聖金曜日]]||{{lang|en|Good Friday}}||移動祝日
|-
|3 - 4||[[復活祭]]月曜日||{{lang|en|Easter Monday}}||移動祝日
|-
|5月第1月曜日||[[五月祭]]||{{lang|en|Early May Bank Holiday}}||移動祝日
|-
|5月最終月曜日||五月祭終り||{{lang|en|Spring Bank Holiday}}||移動祝日
|-
|7月12日||[[ボイン川の戦い]]記念日||{{lang|en|Battle of the Boyne (Orangemen's Day)}}||北アイルランドのみ
|-
|8月第1月曜日||夏季銀行休業日||{{lang|en|Summer Bank Holiday}}||移動祝日スコットランドのみ
|-
|8月最終月曜日||夏季銀行休業日||{{lang|en|Summer Bank Holiday}}||移動祝日スコットランドを除く
|-
|12月25日||[[クリスマス]]||{{lang|en|Christmas Day}}||
|-
|12月26日||[[ボクシングデー]]||{{lang|en|Boxing Day}}||
|}
*聖金曜日を除く移動祝日は原則的に月曜日に設定されている
*ボクシングデー後の2日も銀行休業日であったが2005年を最後に廃止されている

===スポーツ===
{{main|{{仮リンク|イギリスのスポーツ|en|Sport in the United Kingdom}}}}
[[ファイル:Wembley Stadium, illuminated.jpg|thumb|220px|[[ウェンブリースタジアム]]]]
イギリスは[[サッカー]][[ラグビー]][[クリケット]][[ゴルフ]][[ボクシング]]など多くの競技が発祥もしくは近代スポーツとして整備された地域であり国技としても定着している年間観客動員数は4000万人以上を集めるサッカーが他を大きく凌いでおり[[競馬]]の600万人ユニオンラグビーの300万クリケット200万がそれに続く

このうち団体球技サッカーラグビークリケットは発祥地域の伝統的な配慮から国際競技団体ではイギリス単体ではなくイングランドスコットランドウェールズ北アイルランドラグビーに関してはアイルランドにまとめているの4地域それぞれの加盟を認めているがサッカーが公式なプログラムとして行われている[[近代オリンピック]]では単一国家としての出場が大原則であるため長年出場していなかったしかし2012年の開催が内定した[[ロンドンオリンピック (2012年)|ロンドン五輪]]では4協会が一体となった統一イギリス代表としてエントリーしたまたイギリスの首都であるロンドンで[[夏季オリンピック]]を行ったのは1948年以来64年ぶりであるただし[[野球]]においては早くから[[野球イギリス代表|英国代表]]として[[欧州野球選手権]]や[[ワールドベースボールクラシック|WBC]]などに統一ナショナルチームを送り出している

====サッカー====
{{main|{{仮リンク|イギリスのサッカー|en|Football in England}}}}
数多くのスポーツを誕生させたイギリスでも取り分け人気なのがサッカーであるイギリスでサッカーは「'''フットボール'''」と呼び近代的なルールを確立したことから「'''近代サッカーの母国'''」と呼ばれそれぞれの地域に独自のサッカー協会があるイギリス国内でそれぞれ独立した形でサッカーリーグを展開しており中でもイングランドの[[プレミアリーグ]]は世界的に人気である[[フットボールアソシエーション|イングランドサッカー協会]] (FA) などを含むイギリス国内の地域協会は全て[[国際サッカー連盟]] (FIFA) よりも早くに発足しておりFIFA加盟国では唯一特例で国内の地域単位での加盟を認められている(以降FIFAは海外領土など一定の自治が行われている地域協会を認可している)その為FIFAや[[欧州サッカー連盟]]UEFAが主宰する各種国際大会[[FIFAワールドカップ]][[UEFA欧州選手権]][[UEFAチャンピオンズリーグ]][[UEFAカップ]][[FIFA U-20ワールドカップ]]や[[UEFA U-21欧州選手権]]などの年代別国際大会には地域協会単位でのクラブチームやナショナルチームを参加させておりさらには7人いるFIFA副会長の一人はこの英本土4協会から選ばれるサッカーのルールや重要事項に関してはFIFAと英本土4協会で構成する[[国際サッカー評議会]]が決定するなど特権的な地位が与えられているまたサッカー選手や監督がプロ競技における傑出した実績によって一代限りの騎士や勲爵士となることがある[[デビッドベッカム]][[スティーヴンジェラード]]や[[ボビーロブソン]][[アレックスファーガソン]]など)。

またサッカーはもともとラグビーと同じく中流階級の師弟が通う[[パブリックスクール]]で近代競技として成立したがその過程は労働者階級の娯楽として発展していったただ当時のイギリスの継続的な不況からくる労働者階級の人口の割合とそれ以外の階級者も観戦していたということを注意しなければならない労働者階級がラグビーよりもサッカーを好んでいたとされる理由として[[フーリガン]]というあまり好ましくない暴力的なファンの存在が挙げられることもあるただ相次ぐフーリガン絡みの事件や事故を重く見た政府は1980年代にフーリガン規制法を制定しスタジアムの大幅な安全基準の見直しなどを行った各スタジアムの試合運営スタッフがスタジアムの至る所に監視カメラを設置し特定のサポーターフーリガンに対する厳重な監視や入場制限を行っているそのような取り組みの結果スタジアムではそれまで頻発していたフーリガン絡みの事件や事故の件数が大幅に減少した
*2007-2008シーズンにおけるイングランドサッカー入場者数<ref>2008年12月10日付けの日本経済新聞</ref>
**プレミアリーグ 1370万8875人
**[[フットボールリーグチャンピオンシップ|チャンピオンシップ]] 939万7036人
**[[フットボールリーグ1]] 441万2023人
**[[フットボールリーグ2]] 239万6278人
**[[FAカップ]] 201万1320人
**[[フットボールリーグカップ|リーグカップ]] 133万2841人
**[[UEFAチャンピオンズリーグ|CL]] 122万0127人
**UEFAカップ 46万2002人
**総動員数 3494万人

====クリケット====
クリケットは全面芝のフィールドでプレイされ試合中には[[ティー]]タイムもあるその優雅な雰囲気から別名紳士のスポーツといわれるイギリスでは[[上流階級]]がたしなむスポーツとされており[[イートン]]などの名門校の体育ではクリケットは必修種目とされている16世紀にイングランド南部で初めてプレーされた18世紀末までにはイングランドの国民的スポーツへと発展した大英帝国の拡大によってクリケットは海外でプレーされるようになり19世紀中頃までには初の国際試合が開催されたイングランドは[[国際クリケット評議会]]ICCのフルメンバーである[[クリケットワールドカップ]]は[[FIFAワールドカップ]]と[[夏季オリンピック]]に次いで世界で3番目に視聴者数の多いスポーツイベントであり<ref>[https://www.theguardian.com/sport/blog/2015/feb/12/cricket-world-cup-icc-50-overs More money, more viewers and fewer runs in prospect for intriguing World Cup More money, more viewers and fewer runs in prospect for intriguing World Cup] The Guardian 2019年7月15日閲覧。</ref>、自国開催の[[2019 クリケット・ワールドカップ|2019年]]大会では[[クリケットイングランド代表|イングランド代表]]が初優勝した<ref>[https://www.theguardian.com/sport/live/2019/jul/14/new-zealand-v-england-cricket-world-cup-final-2019-live England beat New Zealand in thrilling Cricket World Cup final – as it happened!] The Guardian 2019年7月18日閲覧。</ref>。女子イングランド代表は[[女子クリケット・ワールドカップ|ワールドカップ]]で4度の優勝経験を誇る。ロンドンにある[[ローズ・クリケット・グラウンド]]はクリケットの聖地と呼ばれ、ワールドカップの決勝戦などが催された。国内リーグは[[カウンティ・チャンピオンシップ]]があり、イングランド所在の17クラブ及びウェールズ所在の1クラブ、合計18クラブにより編成される。

====競馬====
{{main|イギリスの競馬}}
近代競馬発祥の地でもある18世紀ゴルフに次いでスポーツ組織として[[ジョッキークラブ]]が組織され同時期に[[サラブレッド]]も成立したどちらかと言えば[[平地競走]]よりも[[障害競走]]の方が盛んな国であり"Favourite 100 Horses"好きな馬100選では[[アークル]]を初め障害馬が上位を独占した障害の[[チェルトナムフェスティバル]]や[[グランドナショナルミーティング]]は1525万人もの観客動員数がある特に最大の競走であるG3[[グランドナショナル]]の売り上げは700億円近くになり2007年現在世界で最も馬券を売り上げる競走になっている平地競走は[[ダービーステークス|イギリスダービー]][[イギリス王室|王室]]開催の[[ロイヤルアスコット開催]]が知られこちらも1425万人の観客を集めるダービーはこの競走を冠した競走が競馬を行っている国には必ずと言っていい程存在しており世界で最も知られた競走といって良いだろうエリザベス女王も競馬ファンとして知られており自身何頭も競走馬を所有している

イギリスでは日本などと違い競馬など特定の競技だけでなく全てのスポーツがギャンブルの対象となるが売り上げはやはり競馬とサッカーが多い競馬は1970年代を頂点に人気を失いつつあったが後に急速に観客動員数が持ち直す傾向にある売上高も2兆円を超え人口当りの売り上げは香港を除けばオーストラリアに次ぐしかし売り上げの多く2003年で97.1%が主催者側と関係のない[[ブックメーカー]]に占められるという構造的な課題があるなおイギリス人はどんな小さな植民地にも大抵の場合は競馬場を建設したため独立後も旧イギリス領は競馬が盛んな国が多いまた[[馬術]]も盛んであり馬術のバドミントンは3日間で15万人以上の観客動員数がある

====モータースポーツ====
イギリスは[[モータースポーツ]]発祥の地としても知られる[[フォーミュラ1]]F1では多数のチャンピオンドライバーを生み出している最近では2009年世界チャンピオンに[[ジェンソンバトン]]そして200820142015201720182019年世界チャンピオンに6度[[ルイスハミルトン]]が輝きあと1回世界チャンピオンになれば[[ミハエルシューマッハ]]のもつ7度の記録と並ぶことになる

過去には[[チームロータス|ロータス]]や[[ティレル]]現在も[[マクラーレン]][[ウィリアムズF1|ウィリアムズ]]といった数多くの名門レーシングチームが本拠を置き車両の設計製造において常に最先端を行く

イベントにも歴史があり1926年に初開催された[[イギリスグランプリ]]は最も古いグランプリレースのひとつである1950年に始まったF1グランプリはイギリスグランプリを第1戦としたまた[[世界ラリー選手権]]の一戦として組み込まれているラリーグレートブリテン1933年初開催も同シリーズの中でもっとも古いイベントの一つである

====野球====
{{main|ナショナルリーグ (イギリスの野球)}}
知名度は低いが1890年に[[ブリティッシュベースボールリーグ]]という野球リーグが誕生している[[IBAFワールドカップ]]の[[ジョンムーアズトロフィー|第1回大会]]ではアメリカ合衆国との二カ国対抗戦という形ではあったが5回戦制のこの大会を4勝1敗で勝ち最初の優勝国となっている2012年{{0}}9月には[[2013 ワールドベースボールクラシック|第3回WBC]]予選に出場している

==== カーリング ====
あまり知られてはいないがイギリスはカーリングの強豪国でもある<ref>[http://www.curling.or.jp/newinfo/newrankings.html 世界ランク男女]」</ref>

==== 自転車競技 ====
国内での人気はサッカーなどには劣るが[[ロードレース (自転車競技)|ロードレース]]や[[トラックレース]]では世界でも[[フランス]][[スペイン]][[イタリア]]と肩を並べる強豪国であるロードレースでは2012年に[[ブラッドリーウィギンス]]が[[ツールフランス2012|ツールフランス]]を英国人として初めて制覇し[[クリスフルーム]]が2013年2015-2017年と同大会で総合優勝しまた2017年には[[ブエルタエスパーニャ2017|ブエルタエスパーニャ]]を2018年には[[ジロイタリア2018|ジロイタリア]]を制覇し[[グランツール]]と呼ばれる世界三大大会を年を跨いで連続制覇した史上3人目の選手となるなど近年目覚ましい活躍を見せているトラックレースでもウィギンスや[[ゲラントトーマス]][[エドクランシー]]らが[[世界選手権自転車競技大会|世界選手権]]や[[オリンピック]]で数々のメダルを獲得している

==脚注==
{{脚注ヘルプ}}
{{Reflist|2}}

==関連項目==
*[[イギリス関係記事の一覧]]

==外部リンク==
{{ウィキポータルリンク|イギリス}}
{{Sisterlinks|commons=United Kingdom|commonscat=United Kingdom|s=Category:イギリス|n=Category:イギリス|voy=United Kingdom}}
;本国政府
*[https://www.royal.uk/ 英国王室(The British Monarchy)] {{en icon}}
**{{Facebook|TheBritishMonarchy|The British Monarchy}} {{en icon}}
**{{Twitter|BritishMonarchy|BritishMonarchy}} {{en icon}}
**{{flickr|photos/britishmonarchy/|The British Monarchy}} {{en icon}}
**{{YouTube|user=TheRoyalChannel|The British Monarchy}} {{en icon}}
*[https://www.gov.uk/ 英国政府(GOV.UK)] {{en icon}}
*[https://www.gov.uk/government/organisations/prime-ministers-office-10-downing-street 英国首相府(Prime Minister's Office, 10 Downing Street)] {{en icon}}
**{{Facebook|10downingstreet|10 Downing Street}} {{en icon}}
**{{Twitter|@Number10gov|UK Prime Minister}} {{en icon}}
**{{Twitter|@Number10press|No.10 Press Office}} {{en icon}}
**{{flickr|photos/number10gov|Number 10}} {{en icon}}
**{{Pinterest|number10gov|UK Prime Minister}} {{en icon}}
**{{YouTube|user=Number10gov|Number10gov|films and features from Downing Street and the British Prime Minister}} {{en icon}}
**{{YouTube|user=DowningSt|Downing Street|archive footage from Downing Street and past British Prime Ministers}} {{en icon}}
*[https://www.gov.uk/government/world/japan.ja UK and Japan (UK and the world - GOV.UK)] {{ja icon}}{{en icon}}
**[https://www.gov.uk/government/world/organisations/british-embassy-tokyo.ja 駐日英国大使館(GOV.UK)] {{ja icon}}{{en icon}}
***{{Facebook|ukinjapan|British Embassy Tokyo}} {{ja icon}}{{en icon}}使用言語は個々の投稿による
***{{Twitter|UKinJapan|BritishEmbassy英国大使館}} {{ja icon}}{{en icon}}使用言語は個々の投稿による
***{{flickr|photos/uk-in-japan|UK in Japan- FCO}} {{en icon}}
***{{YouTube|user=UKinJapan|UKinJapan|British Embassy in Japan}} {{en icon}}
*[https://www.gov.uk/government/organisations/uk-visas-and-immigration UK Visas and Immigration (GOV.UK)] {{en icon}}
**[https://www.vfsglobal.co.uk/ja-jp 英国ビザ申請センター] - VFS Global Japan (上記「UK Visas and Immigration」日本地区取扱代行サイト) {{ja icon}}{{en icon}}
;日本政府内
*[https://www.mofa.go.jp/mofaj/area/uk/ 日本外務省 - 英国] {{ja icon}}
*[https://www.uk.emb-japan.go.jp/ 在英国日本国大使館] {{ja icon}}
;観光
*[https://www.visitbritain.com/jp/ja 英国政府観光庁(日本語版サイト)] {{ja icon}}
**{{Facebook|LoveGreatBritain|Love GREAT Britain}} {{en icon}}
;その他
*[https://www.jetro.go.jp/world/europe/uk/ JETRO - 英国] {{ja icon}}
*{{CIA World Factbook link|uk|United Kingdom}} {{en icon}}
*{{dmoz|Regional/Europe/United_Kingdom}} {{en icon}}
*{{wikiatlas|United Kingdom}} {{en icon}}
*{{Osmrelation|62149}}

{{Normdaten}}
{{イギリス関連の項目}}
{{ヨーロッパ}}
{{国連安全保障理事会理事国}}
{{G8}}
{{OECD}}
{{イギリス連邦}}
{{EU|1973 - 2020年}}
{{CPLP}}
{{デフォルトソート:いきりす}}
[[Category:イギリス|*]]
[[Category:イギリス連邦加盟国]]
[[Category:英連邦王国|*]]
[[Category:G8加盟国]]
[[Category:欧州連合加盟国|元]]
[[Category:海洋国家]]
[[Category:現存する君主国]]
[[Category:島国]]
[[Category:1801年に成立した国家領域]]
21. カテゴリ名を含む行を抽出

記事中でカテゴリ名を宣言している行を抽出せよ.

  • ^はデフォルトでは文字列全体の先頭にのみマッチ
  • 今回はすべての行をチェックしたい
  • MULTILINEオプションで ^ を各行の先頭にマッチさせる
1
2
3
4
5
import re

pattern = r'^(.*\[\[Category:.*\]\].*)$'
result = '\n'.join(re.findall(pattern, text_uk, re.MULTILINE))
print(result)
1
2
3
4
5
6
7
8
9
[[Category:イギリス|*]]
[[Category:イギリス連邦加盟国]]
[[Category:英連邦王国|*]]
[[Category:G8加盟国]]
[[Category:欧州連合加盟国|元]]
[[Category:海洋国家]]
[[Category:現存する君主国]]
[[Category:島国]]
[[Category:1801年に成立した国家・領域]]
22. カテゴリ名の抽出

記事のカテゴリ名を(行単位ではなく名前で)抽出せよ.

  • 一部のカテゴリ名に含まれる「カテゴリ名|記号」の|以降を拾わないようにするしたい。
  • カッコ内の正規表現にマッチはするが拾ってはこない ?:... を使う
1
2
3
pattern = r'^.*\[\[Category:(.*?)(?:\|.*)?\]\].*$'
result = '\n'.join(re.findall(pattern, text_uk, re.MULTILINE))
print(result)
1
2
3
4
5
6
7
8
9
イギリス
イギリス連邦加盟国
英連邦王国
G8加盟国
欧州連合加盟国
海洋国家
現存する君主国
島国
1801年に成立した国家・領域

IT 一般論

  • シンプルなシステムからの成長
  • ハード構成の基礎:CPU・メモリ・HDD、キャッシュ
  • データ構造とアルゴリズム
    • 連結リストと配列:どんな特性があるか?
    • スタックとキュー:いつどこで使うか?どう実装するか?
1
2
3
a[1], a[15]
for a in lst:
    print(a)
そもそもなぜ IT 一般論の話をしだしたか
  • データ構造の話をするため
  • メモリの話をしないとリストと配列(とベクター)の違いが説明できない
    • 一言でいうと、リストと配列はメモリ上にどうデータを置くかが違う
    • データの置き方によってデータアクセスの仕方が変わり、「何が得意か」が変わる
      • リスト:要素の追加・削除に都合がいいが、ランダムアクセスと値の更新処理に弱い
      • 配列:要素の追加・削除は不便だが、ランダムアクセスと値の更新処理に強い
      • ベクター:要素の追加・削除に比較的強く、ランダムアクセスと値の更新処理も強い
    • 単純にベクターだけ使っていればいいわけでもない:メモリ効率という観点
  • メモリ単独の話をしても多分わからない
  • 統計学がらみの話は割とすぐにパフォーマンス(速度)の話になる
    • いわゆるビッグデータというやつで、大量のデータを何回も計算しないといけない
    • 計算を速くしないとやっていられない
    • GPU 使うなり何なり割とすぐにハード面の話が出てくる
シンプルなシステムからの成長
  • 適当な Web システムを考える。
  • 具体的にはショッピングサイトなどをイメージすればいい。
    • 何を考えても大きくは変わらない話をする。
  • サーバー構成やインフラ設計という言葉で調べると色々出てくる
  • サーバー構成の画像:Google 画像検索
大事で面倒な話:「サーバー」とは何か?
  • 何でもいいが、とりあえず一つ参考ページ
  • 物理的なモノとソフトウェア両方ある
  • 1 つの物理的なサーバーの中に複数のソフトウェアとしてのサーバーが入っていることがある
    • 小規模システムならよくある
  • 仮想化・コンテナみたいな話をしだすともっと面倒なことになる
  • 今回も多少は詳細化するが、まずは「一度は聞いたことがある」レベルにするのが目的。
基本構成
  • ソフトウェアとしてのサーバーが 3 つ
  • Web サーバー:Apache・Nginx:単純に HTML を返すサーバー
  • アプリケーションサーバー:いわゆる「アプリケーション」。プログラマーがプログラムを書く部分で、ログインユーザーごとに処理が分かれるとか。最終的に Web サーバーがクライアントに返す HTML の形でデータをまとめる。もちろんここでデータベースのアクセスもある。
  • データベースサーバー:顧客情報や製品情報を持っている。
一番単純
  • 物理サーバーは 1 つ
  • ソフトウェアとしての Web サーバー・アプリケーションサーバー・データベースサーバーが載っている。
  • 開発者が開発するときは実際にこういう状況で開発している(こともある)
状況に応じていろいろ分かれる
  • 例えば実際にシステムにかかる負荷によって変わる
  • データベースの負荷が高い
    • 物理サーバーを追加してデータベースサーバーをそちらに載せ替える。
  • Web のリクエストがさばききれないとき
    • Web サーバーを切り分けた上で 2 台にわける
    • アプリケーションサーバー・データベースサーバーは 1 つの物理サーバーに載せる。
他の状況
  • データベースの読み込み負荷が高い:Memcache や Redis のようなキャッシュサーバーを(物理サーバーごと)追加する。
  • セキュリティが気になってきた:Web サーバーの前にセキュリティ用のファイアーウォール
  • セキュリティが絡むとサーバー構成がまた複雑になる。
    • 上記画像参考
    • 直接外とやり取りするところに外部向けファイアーウォール
    • DMZ の中で外部とやり取りするサーバーが置かれる:いわゆるアプリケーションサーバー
    • アプリケーションサーバーと「内部」がやり取りするところにまたファイアウォールを置く
      • 「内部」というのは顧客データベースなどの社外に公開しないサーバー
      • ファイアウォールを二重に置くことで、絶対に触ってはいけないところに対して二重の防御を敷く
      • 外部公開しているサーバーがクラックされても内部にアクセスできないようにする
      • 内部から危険な情報を外に出せないようにする
ハードウェア構成の基礎
  • CPU、キャッシュ(キャッシュメモリ)、メモリ、HDD・SSD、キーボード・マウスくらいまでの大まかな話
コンピューター構成の5大要素
  • 参考
  • 制御装置:各装置を制御。担当は CPU
    • 人間でいうと脳やせき髄
  • 演算装置:データを処理。担当は CPU
    • 人間でいうと脳
  • 記憶装置:データを保存。担当はメモリ・ハードディスク・SSD
    • 人間でいうと脳(短期記憶)、「机」、「本棚」
    • それぞれの「記憶装置」に意味がある
    • 短期記憶は容量が小さいが高速に計算に回せる
    • 机は本が置けて、データを本棚に取りに行く手間は省ける分だけ速い
    • 本棚は取りに行くのは大変だが、たくさんモノが置ける
  • 入力装置:データを受けつける。担当はキーボード・マウスなど
  • 出力装置:データや処理の結果を外に出す。ディスプレイ・プリンタ等
CPU からキャッシュ
  • 参考の図
  • CPU もコアという概念がある
    • 最近の分散コンピューティングで重要な要素
    • 「コロナの解析のためにあなたのマシンパワーを貸してください」
    • 「ブロックチェーン・ビットコインの計算をさせていた」
  • 参考ページ
    • レジスターやら何やら細かく見ていくといろいろある
複数のキャッシュレベル

「それぞれのキャッシュには役割があるから」

「キャッシュは容量が大きいほどデータ転送速度が遅く、記憶密度が高く、省電力という性質を持つため、必要性に応じて異なる種類のキャッシュを使い分けるのが有利だから」

補足:キャッシュ
  • キャッシュはいろいろなところにある
    • webシステムでのメモリデータベース(メモリキャッシュ)
    • データベースを使うときのデータベースサーバーでのメモリキャッシュ(Redis などのメモリデータベースのキャッシュとはまた違う)
    • ブラウザのキャッシュ:一度読み込んだwebサイトのデータを取っておいて次に読み込むときのロードを速くする
  • ブラウザのキャッシュについては、「ブラウザが重くなった時」などで調べると「キャッシュを削除しよう」みたいな話が出てくる。
    • cf. このページ
      • 「GoogleのWebブラウザ「Chrome(クローム)」が重いときに考えられる原因には、キャッシュや履歴などの問題が考えられます。」
データ構造とアルゴリズム
  • 鶏と卵で、同時に考えるべきテーマ:何かをするためにはどうデータを持ってどんな処理をすれば効率がいいか?
    • 効率にもいろいろある
    • 単純な処理速度・メモリ消費量・計算量
(連結)リストと配列
  • 何が違うのか?
  • メモリ上の配置やデータの「つなぎ方」
  • 状況によって使い分ける
リストの特徴
  • 要素数は変わることが前提
  • データを(先頭に)追加するのは簡単
  • データの削除も比較的簡単
  • 先頭から 1 つずつ順に処理するならそれなり
  • 検索やデータの書き換えが遅い:連結構造をたどる必要がある
配列の特徴
  • 要素数は固定
  • データの追加・削除が重め
  • データの参照・書き換えが速い:アドレスが連続なので先頭さえわかれば「そこから何番先」と直指定できる
  • 「リストで遅ければ配列で書き直す」みたいなことはよくある
ベクター(参考
  • 「要素数可変の配列」
  • リストのように要素追加・削除が比較的低コストで、要素の参照・書き換えも配列のように速い
  • 何が問題か:要素の追加が楽なように余計なメモリ領域を確保する
  • ハードウェア組み込みプログラムのように、メモリがカツカツの状況では使えない
    • 「メモリがカツカツ」という意味が理解できるか?

2020-07-12 課題

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • とりあえず本当に簡単な図を描く
  • 今回はシグモイド関数

\begin{align} \sigma(x) = \frac{1}{1 + e^{-x}}. \end{align}

  • ついでなのでこれの TeX も紹介する
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 501)
y = 1 / (1 + np.exp(-x))

plt.plot(x, y, label="sigmoid")

plt.grid()
plt.legend()
#plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる
plt.show()

TeX の記録

  • 凸不等式
  • geq, nabla, langle, rangle

\begin{align} f(y) \geq f(x) + \langle \nabla f(x), \, y-x \rangle. \end{align}

競プロ、AtCoder

ABC087B - Coins

あなたは、500 円玉を A 枚、100 円玉を B 枚、50 円玉を C 枚持っています。 これらの硬貨の中から何枚かを選び、合計金額をちょうど X 円にする方法は何通りありますか。 同じ種類の硬貨どうしは区別できません。2 通りの硬貨の選び方は、ある種類の硬貨についてその硬貨を選ぶ枚数が異なるとき区別されます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def solve(A, B, C, X):
    lst = []
    for a in range(A+1):
        for b in range(B+1):
            for c in range(C+1):
                lst.append(500*a+100*b+50*c == X)
    # 下のセルで補足
    return sum(lst) #len(list(filter(lambda x: x == True, lst)))

[A, B, C, X] = [2, 2, 2, 100]
print(solve(A, B, C, X)) # 2

[A, B, C, X] = [30, 40, 50, 6000]
print(solve(A, B, C, X)) # 213
1
2
2
213
注意

ブール値は True = 1False = 0 として足せるらしい。

1
sum([True, False, True, False, False])
1
2
上のコードをリスト内包表記で簡潔に
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#A, B, C, X = [int(input()) for i in range(4)]
def solve(A, B, C, X):
    return sum(500*a+100*b+50*c == X
               for a in range(A+1)
               for b in range(B+1)
               for c in range(C+1))

[A, B, C, X] = [2, 2, 2, 100]
print(solve(A, B, C, X)) # 2

[A, B, C, X] = [30, 40, 50, 6000]
print(solve(A, B, C, X)) # 213
1
2
2
213
ABC083B

1 以上 N 以下の整数のうち、10 進法での各桁の和が A 以上 B 以下であるものの総和を求めてください。

サンプル
  • 20 以下の整数のうち、各桁の和が 2 以上 5 以下なのは 2,3,4,5,11,12,13,14,20 です。これらの合計である 84 を出力します。
1
list(range(1, 20+1))
1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
1
2
a <= b && b <= c
a <= b <= c
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def solve(N, A, B):
    lst = []
    for i in range(1, N+1):
        if A <= sum(map(int, str(i))) <= B:
            lst.append(i)
    return sum(lst)

N, A, B = [20, 2, 5]
print(solve(N, A, B)) # 84

N, A, B = [10, 1, 2]
print(solve(N, A, B)) # 13

N, A, B = [100, 4, 16]
print(solve(N, A, B)) # 4554
1
2
3
84
13
4554
わからなければ分解しよう
  • これ、すぐわかる?
1
sum(map(int, str(i)))
  • 数値を文字列に変換
  • 「文字列」を「文字のリスト」とみなして各要素に int を作用させている

  • 文字:char (character)

  • 文字列:string
1
2
3
4
5
6
7
i = 20
map(int, str(i))

lst = []
for a in str(i):
    lst.append(int(a))
print(lst)
1
[2, 0]
1
2
3
4
5
6
7
8
9
i = 20
print(list(str(i)))
print(list(map(int, str(i))))

i = 123
print(list(map(int, str(i))))

i = 3564565
print(list(map(int, str(i))))
1
2
3
4
['2', '0']
[2, 0]
[1, 2, 3]
[3, 5, 6, 4, 5, 6, 5]
1
2
3
4
i = 3564565
l = len(str(i))
int(i / (10**(l-1)))
i % 10**(l-1)
1
564565
リスト内包表記で簡潔に
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def solve(N, A, B):
    return sum(i for i in range(1, N+1) if A <= sum(map(int, str(i))) <= B)

N, A, B = [20, 2, 5]
print(solve(N, A, B)) # 84

N, A, B = [10, 1, 2]
print(solve(N, A, B)) # 13

N, A, B = [100, 4, 16]
print(solve(N, A, B)) # 4554
1
2
3
84
13
4554

IT 一般論

  • シンプルなシステムからの成長
  • ハード構成の基礎:CPU・メモリ・HDD、キャッシュ
  • データ構造とアルゴリズム
    • 連結リストと配列:どんな特性があるか?
    • スタックとキュー:いつどこで使うか?どう実装するか?
前回
  • システムの成長についていろいろ見た
  • ちょっと復習してからハードの構成へ
そもそもなぜ IT 一般論の話をしだしたか
  • データ構造の話をするため
  • メモリの話をしないとリストと配列(とベクター)の違いが説明できない
    • 一言でいうと、リストと配列はメモリ上にどうデータを置くかが違う
    • データの置き方によってデータアクセスの仕方が変わり、「何が得意か」が変わる
      • リスト:要素の追加・削除に都合がいいが、ランダムアクセスと値の更新処理に弱い
      • 配列:要素の追加・削除は不便だが、ランダムアクセスと値の更新処理に強い
      • ベクター:要素の追加・削除に比較的強く、ランダムアクセスと値の更新処理も強い
    • 単純にベクターだけ使っていればいいわけでもない:メモリ効率という観点
  • メモリ単独の話をしても多分わからない
  • 統計学がらみの話は割とすぐにパフォーマンス(速度)の話になる
    • いわゆるビッグデータというやつで、大量のデータを何回も計算しないといけない
    • 計算を速くしないとやっていられない
    • GPU 使うなり何なり割とすぐにハード面の話が出てくる
      • 「メモリを積もう」みたいな話も出てくる
      • 計算速度は直接には CPU の役割だったり
シンプルなシステムからの成長
  • 適当な Web システムを考える。
  • 具体的にはショッピングサイトなどをイメージすればいい。
    • 何を考えても大きくは変わらない話をする。
  • サーバー構成やインフラ設計という言葉で調べると色々出てくる
  • サーバー構成の画像:Google 画像検索
大事で面倒な話:「サーバー」とは何か?
  • 何でもいいが、とりあえず一つ参考ページ
  • 物理的なモノとソフトウェア両方ある
  • 1 つの物理的なサーバーの中に複数のソフトウェアとしてのサーバーが入っていることがある
    • 小規模システムならよくある
  • 仮想化・コンテナみたいな話をしだすともっと面倒なことになる
  • 今回も多少は詳細化するが、まずは「一度は聞いたことがある」レベルにするのが目的。
基本構成
  • ソフトウェアとしてのサーバーが 3 つ
  • Web サーバー:Apache・Nginx:単純に HTML を返すサーバー
  • アプリケーションサーバー:いわゆる「アプリケーション」。プログラマーがプログラムを書く部分で、ログインユーザーごとに処理が分かれるとか。最終的に Web サーバーがクライアントに返す HTML の形でデータをまとめる。もちろんここでデータベースのアクセスもある。
  • データベースサーバー:顧客情報や製品情報を持っている。
一番単純
  • 物理サーバーは 1 つ
  • ソフトウェアとしての Web サーバー・アプリケーションサーバー・データベースサーバーが載っている。
  • 開発者が開発するときは実際にこういう状況で開発している(こともある)
状況に応じていろいろ分かれる
  • 例えば実際にシステムにかかる負荷によって変わる
  • データベースの負荷が高い
    • 物理サーバーを追加してデータベースサーバーをそちらに載せ替える。
  • Web のリクエストがさばききれないとき
    • Web サーバーを切り分けた上で 2 台にわける
    • アプリケーションサーバー・データベースサーバーは 1 つの物理サーバーに載せる。
他の状況
  • データベースの読み込み負荷が高い:Memcache や Redis のようなキャッシュサーバーを(物理サーバーごと)追加する。
  • セキュリティが気になってきた:Web サーバーの前にセキュリティ用のファイアーウォール
  • セキュリティが絡むとサーバー構成がまた複雑になる。
    • 上記画像参考
    • 直接外とやり取りするところに外部向けファイアーウォール
    • DMZ の中で外部とやり取りするサーバーが置かれる:いわゆるアプリケーションサーバー
    • アプリケーションサーバーと「内部」がやり取りするところにまたファイアウォールを置く
      • 「内部」というのは顧客データベースなどの社外に公開しないサーバー
      • ファイアウォールを二重に置くことで、絶対に触ってはいけないところに対して二重の防御を敷く
      • 外部公開しているサーバーがクラックされても内部にアクセスできないようにする
      • 内部から危険な情報を外に出せないようにする
ハードウェア構成の基礎
  • CPU、キャッシュ(キャッシュメモリ)、メモリ、HDD・SSD、キーボード・マウスくらいまでの大まかな話
コンピューター構成の5大要素
  • 参考
  • 制御装置:命令の実行・周辺装置の制御。担当は CPU
    • 人間でいうと脳やせき髄
  • 演算装置:データを処理。担当は CPU
    • 人間でいうと脳
  • 記憶装置:データを保存。担当はメモリ・ハードディスク・SSD
    • 人間でいうと脳(短期記憶)、「机」、「本棚」
    • それぞれの「記憶装置」に意味がある
    • 短期記憶は容量が小さいが高速に計算に回せる
    • 机は本が置ける
      • 本棚に取りに行く手間が省ける分だけデータを取り出すのは速い
      • もちろん脳内短期記憶から取り出すよりは遅い
      • 本を置ける量は本棚より少ない
    • 本棚はたくさん本が置ける
      • データを本棚まで取りに行くのは大変(時間がかかる)
      • たくさんモノが置ける
  • 入力装置:データを受けつける。担当はキーボード・マウスなど
  • 出力装置:データや処理の結果を外に出す。ディスプレイ・プリンタ等
CPU からキャッシュ

# 補足コメント
  • CPU にはコアという概念がある
    • 「CPU がクアッドコア」とか何とかいうときの「コア」
    • 最近の分散コンピューティングで重要な要素
      • 他人の CPU を借りることもよくある
      • 「コロナの解析のためにあなたのマシンパワーを貸してください」
      • 「ブロックチェーン・ビットコインの計算をさせていた」
  • 各コアが計算の単位:コアがたくさんあると並列に計算させられて、処理速度が上がる(類の処理もある)
    • コアがたくさんある CPU を使うと個人のコンピューターレベルでもある程度並列処理できる
    • 構成はいろいろあるが「スパコン」でも適当な意味で CPU をたくさん並べて使っている
      • 1 つ 1 つのスペックが高いコンピューターをたくさん並べる
      • 1 つ 1 つのスペックは大したことがないかもしれないが、冗談のようなコンピューター数・並列数で性能を出す
      • Google などではトラックに「PC」レベルのコンピューターを大量に積み込み、それで並列計算させていることもあるらしい
        • しばらく使っていると各トラックごとにどんどんマシンが壊れていく
        • いくつ以上のマシンが壊れたらトラックに積んであるマシンをすべて廃棄して全取り換えする、みたいな話を見たことがある
        • どれが故障しているかをいちいち調べるよりも一定の稼働率から下がったら全部つぶす方が「コスパが高い」
        • トヨタなどで「不良品のねじが入ったらその箱は全部捨てる」みたいなエピソードを聞くが、まさにそういう感じ
        • スケールによってコスパの概念自体が大きく変わるのも大事な認識
  • コアに対してキャッシュがある
    • 距離が近い順に L1, L2, L3
      • キャッシュの容量が大きくなっていく順
      • 速度は落ちていく
    • キャッシュの後ろにいわゆるメモリがある
  • 参考ページ
    • レジスターやら何やら細かく見ていくといろいろある
    • 大事なこと
      • 何はともあれ、現実的にそういう風にできている
      • 必要だからそうなっている:少なくとも何かしら、歴史的な理由はある
複数のキャッシュレベル
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Latency Comparison Numbers
--------------------------
L1 cache reference                           0.5 ns
Branch mispredict                            5   ns
L2 cache reference                           7   ns                      14x L1 cache
Mutex lock/unlock                           25   ns
Main memory reference                      100   ns                      20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy            10,000   ns       10 us
Send 1 KB bytes over 1 Gbps network     10,000   ns       10 us
Read 4 KB randomly from SSD*           150,000   ns      150 us          ~1GB/sec SSD
Read 1 MB sequentially from memory     250,000   ns      250 us
Round trip within same datacenter      500,000   ns      500 us
Read 1 MB sequentially from SSD*     1,000,000   ns    1,000 us    1 ms  ~1GB/sec SSD, 4X memory
Disk seek                           10,000,000   ns   10,000 us   10 ms  20x datacenter roundtrip
Read 1 MB sequentially from 1 Gbps  10,000,000   ns   10,000 us   10 ms  40x memory, 10X SSD
Read 1 MB sequentially from disk    30,000,000   ns   30,000 us   30 ms 120x memory, 30X SSD
Send packet CA->Netherlands->CA    150,000,000   ns  150,000 us  150 ms
# 追加説明

「それぞれのキャッシュには役割があるから」

「キャッシュは容量が大きいほどデータ転送速度が遅く、記憶密度が高く、省電力という性質を持つため、必要性に応じて異なる種類のキャッシュを使い分けるのが有利だから」

  • 省電力の意義:単純にエコなだけではない
    • 省電力だと熱も出にくい
    • 熱が高くなると熱暴走が起こりうる:逆に計算効率が悪くなる
    • マシンを物理的に傷つけにくくので故障もしにくくなる
補足:いろいろなキャッシュ
  • キャッシュはいろいろなところにある
    • ブラウザのキャッシュ:一度読み込んだwebサイトのデータを取っておいて次に読み込むときのロードを速くする
      • サイトのロゴなどの画像はそうそう変わらないうえ、画像ファイルは重い(容量が大きい)のでダウンロードにも時間がかかる
        • それだけ保管しておく意義がある
      • 「自分だけサイトが更新されない?」みたいなことがあったら、それはキャッシュを見ている可能性がある
    • webシステムでのメモリデータベース(メモリキャッシュ)
    • データベースを使うときのデータベースサーバーでのメモリキャッシュ(Redis などのメモリデータベースのキャッシュとはまた違う)
  • ブラウザのキャッシュについては、「ブラウザが重くなった時」などで調べると「キャッシュを削除しよう」みたいな話が出てくる。
    • cf. このページ
      • 「GoogleのWebブラウザ「Chrome(クローム)」が重いときに考えられる原因には、キャッシュや履歴などの問題が考えられます。」
  • ここでコメントしたタイプの「キャッシュ」は日々の PC 利用を快適にする上でも大事
    • 快適にする上での情報収集やその意味を理解する上で大事というべきか
補足その 2:「キャッシュ」があるとなぜ重くなる?
  • ブラウザの話
  • キャッシュが大量にあると必要なキャッシュを探す手間が出てくる
  • 数十くらいの中ならまだしも、数百・数千・数万から探すとなると探すだけで時間がかかる
  • ブラウザを長いこと使っていると、実際にキャッシュがそのくらいに膨れてくる
  • 削除して余計な検索処理(計算)がなくなれば、かえって早くなる
  • こういうところで「検索」「探索」問題が出てくる
    • Google が出てきたのもある意味でこういう文脈
    • 検索はデータ構造・アルゴリズムの中でも一番基本的なテーマ
補足
  • 世の勉強系基本コンテンツの主流はたいてい次の 2 つ
    • 論理的完全性
    • 網羅性
  • 前者の基本コンテンツとその内容は大事だが、構造的に全体像・そこから広がる世界の広がりが見えにくい
  • もちろん各種テーマ特化型のコンテンツやオムニバス型のコンテンツもある
  • 状況に合わせて適切なコンテンツを組み合わせて勉強するべき
  • 複数の本をあえて並行して勉強する意義・意味もある
データ構造とアルゴリズム
  • 鶏と卵で、同時に考えるべきテーマ:何かをするためにはどンな風にデータを持ってどんな処理をすれば効率がいいか?
    • 効率にもいろいろな観点がある
    • 単純な処理速度・メモリ消費量・計算量
  • 「データの持ち方」「データ構造」に関して軽く
    • 本棚をどう整理するか?
      • 本の名前順
      • 分野を分けたうえで名前順
      • 手元に置くのはよく読む本、近い本棚には比較的読む本を分野ごとに名前順、あまり読まない本は押し入れに適当に詰め込む
      • 図書館のような大規模なところでは「閉架」という概念がある
    • 目的に応じて適切な本の置き方は変わる
      • 蔵書の数や質でも変わる
      • 図書館なのか本屋なのか
        • 本屋だと平積み・面陳列といった概念もある
        • 図書館情報学という分野さえある
    • どんなデータ構造がいいかはその時々で変わる
(連結)リストと配列
  • 何が違うのか?
  • メモリ上のデータの配置やデータの「つなぎ方」
    • メモ:zoom の機能で両方の図を描こう
  • 状況によって使い分ける
リストの特徴
  • 要素数は変わることが前提
  • データを(先頭に)追加するのは簡単
  • データの削除も比較的簡単
  • 先頭から 1 つずつ順に処理するならそれなり
  • 検索やデータの書き換えが遅い:連結構造をたどる必要がある
配列の特徴
  • 要素数は固定
  • データの追加・削除が重め
    • 気分的にはその都度メモリ領域を確保しなおす必要がある:特に追加
  • データの参照・書き換えが速い:アドレスが連続なので先頭さえわかれば「そこから何番先」と直指定できる
  • 処理によっては「リストで遅ければ配列で書き直す」みたいなことはよくある
ベクター(参考
  • 「要素数可変の配列」
  • リストのように要素追加・削除が比較的低コストで、要素の参照・書き換えも配列のように速い
  • 何が問題か:要素の追加が楽なように余計なメモリ領域を確保する
  • ハードウェア組み込みプログラムのように、メモリがカツカツの状況では使えない
    • 「メモリがカツカツ」という意味が理解できるか?
シーケンシャルアクセス
  • レイテンシーのところでも出てきた
  • 配列でもリストでも、「先頭から順番になめていく」こと
参考:HDD でのシーケンシャルアクセス・断片化・ディスクデフラグ

デフラグとは、デフラグメンテーション(defragmentation)の略です。PCはハードディスクに読み書きを行っていますが、何度も繰り返すうちに連続した広い領域が確保できなくなり、狭い複数の領域に分散して書き込むようになります。データが分散している状態を「断片化」といい、断片化しているとファイルを読み込むのが遅くなり、PC速度が低下します。

断片化したデータを連続した状態に整理することをデフラグといいます。デフラグを定期的に行うことで、読み込み、書き込みが速くなるだけではなく、PC起動が早くなったり、ハードディスクの残り空き容量が増える、というメリットがあります。

なぜ遅くなるのか
  • ディスク上でデータ断片化すると何が問題か?
  • 例:動画が見たい
    • 動画用のファイルが HDD 上でいろいろなところに散らばっている
    • ある個所からある個所に行くとき、断片化していると、HDD の読み取りの針を物理的に移動させないといけない
    • この時間が長い:処理が重くなる原因
    • 気分的には「連結リスト」
  • こうした話題は何だかんだで普段の PC ライフにも絡んでくる
    • 最近は OS を入れる部分は SSD、データを大量に入れる部分は HDD という構成がよくある
    • SSD はまだ高いので HDD は死んでいない
補足:なぜ空き容量が増えるのか

HDDにデータを書き込む時、データはセクタという最小単位(主に512バイトまたは4,096バイト)に切り分けられ、プラッタの同心円状に作られているトラックと呼ばれる領域に保管されます。

  • データ書き込みには最小単位がある
  • 断片化して「最小単位」未満のデータで書きこまれてしまっていると、その分容量が無駄になる。
  • デフラグするとこの無駄が解放される
  • 「配列では一括でズドンとメモリ領域を取る」という「ズドンと取った」状態はこんな感じ。
    • 他に触らせない・触らせられないのでこの手の無駄ができる
    • ベクターで無駄が出るといったのはこういう状況

2020-07-19 課題

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • とりあえず本当に簡単な図を描く
  • 今回は減衰振動

\begin{align} x(t) = e^{-\gamma t} \sin \omega t. \end{align}

  • ついでなのでこれの TeX も紹介する

```python import numpy as np import matplotlib.pyplot as plt

x = np.linspace(0, 10, 501) y = np.exp(-x) * np.sin(5*x)

plt.plot(x, y, label="dump wave")

plt.grid() plt.legend() #plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる plt.show() ```

TeX の記録

  • 熱核
  • まず名前が格好いい

\begin{align} k(x,y,t) = t^{N - \frac{m}{2}} e^{-\frac{d^2(x,y)}{4t}} \mathcal{K}(x,y,t). \end{align}

競プロ、AtCoder

ABC088B - Card Game for Two

$N$枚のカードがあります. $i$ 枚目のカードには, $a_i$ という数が書かれています. Alice と Bob は, これらのカードを使ってゲームを行います. ゲームでは, Alice と Bob が交互に 1 枚ずつカードを取っていきます. Alice が先にカードを取ります. 2 人がすべてのカードを取ったときゲームは終了し, 取ったカードの数の合計がその人の得点になります. 2 人とも自分の得点を最大化するように最適な戦略を取った時, Alice は Bob より何点多く取るか求めてください.

# 例

2 3 1

最初, Alice は 3 が書かれたカードを取ります. 次に, Bob は 1 が書かれたカードを取ります. 得点差は 3 - 1 = 2 となります.

# 説明
  • 逆順(大きい順、sorted(lst, reverse=True)に並べる
  • 最初からお互いに取っていく
  • これで最適戦略になる
  • 相互の得点をどう計算するかも重要

```python #N = int(input()) #a = sorted(map(int, input().split()))[::-1] def solve(lst): a = sorted(lst, reverse=True) print(a) return sum(a[::2]) - sum(a[1::2])

lst = [3, 1] print(solve(lst)) # 2

lst = [2, 7, 4] print(solve(lst)) # 5

lst = [20, 18, 2, 18] # 18 print(solve(lst)) ```

1
2
3
4
5
6
  [3, 1]
  2
  [7, 4, 2]
  5
  [20, 18, 18, 2]
  18
ABC085B - Kagami Mochi
  • いわゆるハノイの塔:ただし同じ半径の円盤が複数枚ある

$X$ 段重ねの鏡餅 ($X \geq 1$) とは、$X$ 枚の円形の餅を縦に積み重ねたものであって、どの餅もその真下の餅より直径が小さい(一番下の餅を除く)もののことです。例えば、直径 10、8、6 センチメートルの餅をこの順に下から積み重ねると 3 段重ねの鏡餅になり、餅を一枚だけ置くと 1 段重ねの鏡餅になります。 ダックスフンドのルンルンは $N$ 枚の円形の餅を持っていて、そのうち $i$ 枚目の餅の直径は $d_i$ センチメートルです。これらの餅のうち一部または全部を使って鏡餅を作るとき、最大で何段重ねの鏡餅を作ることができるでしょうか。

# 解法
  • 重複をなくせば勝手に順序がつく
  • 餅の積み方や積む順序を聞かれているわけではない
  • 最大数しか聞かれていない
  • 余計な計算をしないことも重要:高速化
# 仮定
  • めんどいので実際の入力例とは違う入力を想定する。
  • 縦に並んだ数を最初からリストにする
  • 実際には次のように入力を取る必要がある

python N = int(input()) d = [input() for i in range(N)]

  • これを次のように入力を取る

python d = [1,2,3]

```python def solve(lst): return len(set(lst)) # set で重複をつぶす

lst = [10, 8, 8, 6] print(solve(lst)) # 3

lst = [15, 15, 15] print(solve(lst)) # 1

lst = [50, 30, 50, 100, 50, 80, 30] print(solve(lst)) # 4 ```

1
2
3
  3
  1
  4

IT 基礎知識

  • SSD の話:記憶の仕方、書き込み耐性
  • HDD の最小単位
SSD の話
参考記事:SSDの寿命はどれくらい?SSDの寿命に関する情報(SSDの特徴・データ記憶媒体比較・故障予兆・故障症状・寿命延ばす対策)
  • HDDと比べてSSDは読み書き速度が速い
  • 使用環境によっては寿命が短くなってしまう
# 寿命
  • SSDの寿命を決める要素は3つ
    • 書き込み回数、空き容量、そして使用時間
  • SSD:基本的には半導体
    • NAND型フラッシュメモリ
      • メモリーカードやスマートフォンの記憶媒体と同じタイプのメモリ
    • 参考:HDD は磁気ディスク
  • データの上書きができない
    • 「データの空き容量に新しいデータを書き込み、前のデータを消去する」
    • これがSSDの寿命に大きく影響
  • SSDは書き込み回数が増えると、次第に劣化
    • ゴリゴリの物理の話なので省略:結論だけ受け入れる
  • 書き込み可能回数はデータの保持形式にも依存
    • TLC:低価格大容量SSDの場合
      • 1セルあたりの書き込み可能回数は1千回
      • TLC:Triple、1つのセルに電子3つ
        • 単電子制御というのは尋常ではない
    • 参考:SLC(シングルレベルセル、Single Level Cell)
      • 最も耐久性が高い
      • 1セルに電子が1つ:セルの中の電子の有無で01が記録
      • 1セルに1ビットしか記録できない:データ容量は少ない→高価
        • 10万回程度の書き込みに耐え、信頼性と速度は高くなる
  • 長い間使っていても SSD は劣化
# SSD・HDD・eMMC
  • SSD(ソリッドステートドライブ)
    • NAND型メモリにデータを記録
    • 高速で読み書きできる、広く使われているフラッシュメモリ
    • 近年大容量化と低価格化
  • HDD(ハードディスクドライブ)
    • プラッタと呼ばれる円盤型の磁気記憶媒体に磁気ヘッドでデータを書き込み・読み出し
    • 構造上SSDに比べるとデータの読み書き速度が低速
    • 物理的に複雑な構造
      • SSDやeMMCにて比べて大型で重く、電源消費量が多い
      • 衝撃に弱い:物理的に針を使っているため
    • 大容量のデータを保持するのが得意で安価
      • 速度にあまり影響されない画像や動画のバックアップ用
  • eMMC(embedded Multi Media Card)
    • SSDと同様:フラッシュメモリを使用した記憶ストレージ
    • SSDと比較すると読み書きの速度は劣る
    • 消費電力は3つの記憶媒体の中で一番低い
    • SSDよりもさらに小型
    • スマートフォンやタブレットなどモバイル端末用
    • UMPC などにも詰まれている
# SSDの寿命が近いときの症状とその対策
  • SSDの寿命が近づいてくるといくつかの予兆がパソコンに現れる
    • 処理速度が低下する
    • 作業時にフリーズする
    • SSDドライブが認識されない
    • エラーメッセージが表示される
    • ブルースクリーン画面(※)が表示される
  • 個人メモ:デスクトップでよくブルースクリーンが出るようになった。画面にはメモリエラーと出ていたが、SSD がまずいかもしれない。
HDD の書き込み最小単位
  • もともとの問題意識:なぜ最小単位があるのか?
セクタの話
  • 参考記事
  • セクタとは、ディスクに記録する最小記録単位の事です。
  • 512 セクタと 4K セクタ
  • 4K セクタのメリット:OSで扱える容量が格段に増える
    • 今までの【WindowsXP】では、512セクタのハードディスクの場合、2TBまでしか認識できない
    • 4Kセクタ対応ハードディスクを使うと大容量ハードディスクを認識できる
  • 2TBバイトまでの認識問題
    • 参考
    • 2TBの壁:OSやマザーボードの仕様で壁を超える容量の製品を使えない
      • 使えても壁を超える部分は認識しない
    • 詳細
      • MBRが管理できるセクタ数が4,294,967,296(約43億)
        • MBR:Master Boot Record
        • ハードディスクなどのストレージ(外部記憶装置)の最も先頭にある、起動に必要なプログラムや情報を記録した小さな領域。コンピュータの起動時に最初に読み込まれる。
      • 1セクタが512バイト 管理可能な容量は4,294,967,296 × 512 = 2,199,023,255,552(約2兆2000億)バイト
        • これが2TB
セクターとクラスター
  • クラスタとは
    • HDDなどのドライブにデータを記録して管理する際に使う最小の単位
  • 「クラスタ」より小さい「セクタ」という単位がある
    • クラスタは複数のセクタで作られる
  • HDD上ではセクター単位ではなくクラスター単位でデータを管理
  • なぜセクタではなくクラスタ単位でデータを管理するのか?
    • HDDの容量が以前に比べて大きくなったため
    • セクタのような小さな単位で読み書きをすると、時間がかかる
    • 効率悪化
    • 「1 ファイル」自体の容量も大きくなっている
    • クラスタで処理しても問題は小さいはず
  • クラスタのサイズは HDD 容量によって変わる
    • 同容量の HDD を使ってもクラスタのサイズが小さい方がデータを効率的に管理できる
    • HDD 内のデータの管理を行うファイルシステムがFATやNTFS
    • 大昔「ファイルをフォーマットします。Macなどでは使えなくなります」とか出てきた理由がこれ:ファイルシステムが違う形でフォーマットするから
    • 参考:実は危険??「exFATフォーマット」との付き合い方

2020-07-26 課題

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

  • 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
    • https://atcoder.jp/contests/apg4b
      • C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
    • Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • とりあえず本当に簡単な図を描く
  • 今回は有限フーリエ級数

\begin{align} f(x) = \frac{4}{\pi} \left( \sin x + \frac{1}{3} \sin 3 x + \frac{1}{5} \sin 5 x + \cdots \right) \end{align}

  • ついでなのでこれの TeX も紹介する

```python import numpy as np import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 1001) y = (4 / np.pi) * (np.sin(x) + np.sin(3x) / 3 + np.sin(5x) / 5 + np.sin(7x) / 7 + np.sin(9x) / 9) y1 = np.ones(len(x)) y2 = -1 * np.ones(len(x))

plt.plot(x, y, label="finite fourier") plt.plot(x, y1, label="y=1") plt.plot(x, y2, label="y=-1")

plt.grid() plt.legend() #plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる plt.show() ```

TeX の記録

  • コンパクト多様体上のラプラシアンの固有値の漸近評価

\begin{align} \lambda_k = 4 \pi \left(\frac{\Gamma (\frac{m}{2} + 1)}{\binom{m}{p} \mathrm{vol}(M)} \right) k^{m/2} + o (k^{m/2}). \end{align}

競プロ、AtCoder

ABC085C - Otoshidama

日本でよく使われる紙幣は、10000 円札、5000 円札、1000 円札です。以下、「お札」とはこれらのみを指します。 青橋くんが言うには、彼が祖父から受け取ったお年玉袋にはお札が $N$ 枚入っていて、合計で $Y$ 円だったそうですが、嘘かもしれません。このような状況がありうるか判定し、ありうる場合はお年玉袋の中身の候補を一つ見つけてください。なお、彼の祖父は十分裕福であり、お年玉袋は十分大きかったものとします。

N 枚のお札の合計金額が Y 円となることがありえない場合は、-1 -1 -1 と出力せよ。 N 枚のお札の合計金額が Y 円となることがありうる場合は、そのような N 枚のお札の組み合わせの一例を「 10000 円札 x 枚、5000 円札 y 枚、1000 円札 z 枚」として、x、y、z を空白で区切って出力せよ。複数の可能性が考えられるときは、そのうちどれを出力してもよい。

入力・出力例 1

# 入力 9 45000 # 出力 4 0 5 お年玉袋に 10000 円札 4 枚と 1000 円札 5 枚が入っていれば、合計枚数が 9 枚、合計金額が 45000 円になります。 5000 円札 9 枚という可能性も考えられるため、0 9 0 も正しい出力です。

入出力例 2

不適格な場合の出力チェックにあたる。

# 入力 20 196000 # 出力 -1 -1 -1

合計枚数が 20 枚の場合、すべてが 10000 円札であれば合計金額は 200000 円になり、そうでなければ 195000 円以下になるため、196000 円という合計金額はありえません。

入出力例 4

変なアルゴリズムを組むと指定計算時間内に終わらない。

# 入力 2000 20000000 # 出力例 2000 0 0

基本方針
  • 全探索をするしかないが一ひねりして計算量(ループの数)を減らす
  • 合計 $Y$ 円が嘘かどうかであり、「何枚以下だったかもしれない」みたいな条件は付いていない

```python # N, Y = map(int, input().split()) def solve(N, Y): for x in range(N+1): for y in range(N-x+1): z = N-x-y # z のループはせずにこれで固定 if 0 <= z <= 2000 and 10000x+5000y+1000*z == Y: return "%s %s %s" % (x, y, z) exit() # ヒットしたので処理終了 # ここまで来たら不適格だったと判断 return "-1 -1 -1"

print(solve(9, 45000)) # 4 0 5 print(solve(20, 196000)) # -1 -1 -1 print(solve(1000, 1234000)) # 14 27 959 他にもありうるはず print(solve(2000, 20000000)) # 2000 0 0 ```

1
2
3
4
  0 9 0
  -1 -1 -1
  2 54 944
  2000 0 0
ABC049C - 白昼夢

英小文字からなる文字列 $S$ が与えられます。 $T$ が空文字列である状態から始め、以下の操作を好きな回数繰り返すことで $S=T$ とすることができるか判定してください。

$T$ の末尾に dream dreamer erase eraser のいずれかを追加する。

# 入力例 1 erasedream # 出力例 1 YES erase dream の順で T の末尾に追加することで S = T とすることができます。

# 入力例 2 dreameraser # 出力例 2 YES

# 入力例 3 dreamerer # 出力例 3 NO

```python import re #S = input() def solve(S): # 正規表現を使って特定 4 文字列の繰り返しだけかどうかを判定する return "YES" if re.match("^(dream|dreamer|erase|eraser)+$", S) else "NO"

print(solve("erasedream")) # YES print(solve("dreameraser")) # YES print(solve("dreamerer")) # NO ```

1
2
3
  YES
  YES
  NO
メモ
  • 正規表現マッチの速度:そんなに速いか?
    • 正規表現自体をいろいろ調べないといけない
    • ケースバイケースでの実測
  • 公式の解説:後ろから文字列マッチしていく

文字列 S を dream, dreamer, erase, eraser に分解していくことを考えます。先頭から分解していこうとす ると、例えば dreamer まで読んだとき、dream で切るべきなのか、dreamer で切るべきなのか判定するこ とができません。(dreameraser は dream eraser と切らなければならないので、dreamer まで読んだときに dream で切らなければいけない場合が存在することが分かります) 逆に、後ろから読んでみましょう。4 つの単語を後ろから読むと、それぞれ maerd, remaerd, esare, resare となります。この 4 つの文字列は、ある文字列が他の文字列の接頭辞 (prefix) になっていないため、後ろか ら読んで当てはまるものが見つかれば即座に分解するしかありません。(参考: 語頭符号) S を最終的に分解す ることができなかった場合 NO を、そうでない場合 YES を出力します。

  • 後ろからのマッチ:今の場合の文字列設定だからできることではある
    • むしろ問題ごとにその勘所を見抜いて問題ごとに適切な手法を見つけて実装する

IT 基礎知識

  • 東大の AWS クラウド講義資料を眺めてみてください。せっかくなので状況を見て(私の勉強も兼ねて)「勉強会前半パート」で取り上げようと思います。
    • これはこれで眺めると大事な用語・概念・操作などがわかる
    • ハードル高そうなのでとりあえず保留
  • 応用情報技術者試験の本を使って浅く広く眺めてみる
    • 根本的にそういう試験
    • 横のつながりを見つつ浅く広く知る
7 章 ネットワーク
  • OSI基本参照モデル、TCP/IP、MACアドレスあたりの話と他のところの関係
  • OSI 基本参照モデル
    • 上の方が「アプリケーション」
    • 下の方はハードウェア
  • 例えばセキュリティの話をしているとポンと出てくる
    • 「下の方(ハードウェア)」レベルでやった方が処理が速いが、複雑なことはできない
      • 高負荷のシステムで手早く最低限の前処理だけしたい場合に有効
      • 複雑なことをしない(できない)からこそ速い
    • 「上の方(ソフトウェア)」レベルでやると処理は遅いが、複雑な処理ができる
      • システムに多少負荷をかけてもいいから、セキュリティを高めたい
      • 複雑な処理・計算が必要なのでその分時間がかかる
OSI参照モデルとは|ファイアウォールの種類をわかりやすく解説
  • レイヤー1:物理層 階層の1段階目は「物理層」です。ハードウェアに最も近い部分であり、電気信号やアナログ信号などによる通信を行っています。主にLANケーブルなどの回線を使って通信を行っています。カプセル化されたデータの単位は「ビット」です。
  • レイヤー2:データリンク層 階層の2段階目は「データリンク層」です。同一ネットワーク上での通信を行う階層で、直接的に接続された通信のための規定です。この通信規定により、LANやWANの間の通信を実現できます。カプセル化されたデータの単位は「フレーム」です。
  • レイヤー3:ネットワーク層 インターネットでの通信を実現するものが、第3階層である「ネットワーク層」です。この階層ではネットワーク間の通信に関する取り決めが行われています。主にIPアドレスが使われ、ルータによって通信が管理されている階層です。カプセル化されたデータの単位は「パケット」であり、この階層からファイアウォールで通信を制御しています。
    • 遥か昔、「ケータイ」のころのパケット通信料は名前が同じだけで本質的には関係ない模様
セキュリティ
  • パケットフィルタリング:レイヤー3・4で動作 パケットフィルタリング型のファイアウォールは「ネットワーク層」「トランスポート層」で動作します。
    • レイヤー3の情報である「送信元IPアドレス」「宛先IPアドレス」をもとに判断することが可能です。このタイプのファイアウォールは構成がシンプルで、ほかの種類よりも処理が速いという特徴があります。
    • しかし、安全性はほかの種類よりも低く、フィルタリングの設定が煩雑になることがデメリットです。
  • サーキットゲートウェイ:レイヤー5で動作 セッション層で動作するファイアウォールが「サーキットゲートウェイ型」という種類です。
    • 先程のパケットフィルタリングの動作に加え、ポート指定や制御ができます。使用するアプリケーションごとに細かく通信の制御を設定することが可能です。
  • アプリケーションレベルゲートウェイ:レイヤー5・6・7で動作
    • 比較的新しいタイプのファイアウォールが「アプリケーションレベルゲートウェイ」です。
    • 主にレイヤー5から7までで動作を行い、アプリケーションレベルのデータをもとに通信を判断します。細かい単位で通信を判断するため、高度な識別が可能です。従来のファイアウォールよりも通信速度が少し落ちますが、なりすましなどの対策ができます。
もう 1 つ参考:ネットワーク各レイヤーのセキュリティを強化するには
  • トランスポートモード:パケットのペイロードだけを暗号化し、それにIPヘッダを付けて開いて送信する。
  • トンネルモード:IPヘッダを含めて暗号化されるため、ネットワーク間の安全な接続に用いられる。

  • 「SSL」「TLS」「SSH」といった第4層の通信プロトコルを使用すると、データを暗号化することによって傍受などから守ることが可能になる(「SSL」は「セキュア・ソケッツ・レイヤー」、「TLS」は「トランスポート・レイヤー・セキュリティ」、「SSH」は「セキュア・シェル」の略)。特に機器をリモートで管理するためにネットワーク接続を行う際に十分考慮に入れるべきものである。

  • SSL:https の s
  • SSH:Linux サーバーにログインするときによく使う。東大のクラウド講義資料でも「SSH で云々」というのがよく出てくる
  • こういう感じで横断的にいろいろ出てくる

2020-08-01 課題

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • とりあえず本当に簡単な図を描く
  • 適当なランダムグラフ

```python import numpy as np import matplotlib.pyplot as plt

y = np.random.rand(100) x = np.linspace(1, 5, 101)

plt.plot(x, y,label="random data") plt.xlabel("time series") plt.ylabel("power") plt.title("sample graph")

plt.grid() plt.legend() #plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる plt.show() ```

TeX の記録

  • 運動方程式

\begin{align} \dot{p} &= F, \ \frac{dp}{dt} &= F, \ m\ddot{x} &= F, \ m \frac{d^2 x}{dt^2} &= F. \end{align}

競プロ、AtCoder

素数判定A - 素数、コンテスト、素数

ARC N に出場できるとき、すなわち N が素数のときは YES、そうでないときは NO と一行に出力せよ。

  • 要は素数判定
  • $N$ が素数かどうかを判定するには $\sqrt{N}$ 以下の数までチェックすればいい:素直に $N$ まで見ると大変なことになる。
ルートに対するオーダーの感覚
  • 具体的に大きな数でどう振る舞うか見てみよう

python import math lst = [1, 10**3, 10**8, 10**15, 10**30, 10**50] for n in lst: print(f"n = {n}") print(f"sqrt n = {math.ceil(math.sqrt(n))}") print("==============")

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
  n      = 1
  sqrt n = 1
  ==============
  n      = 1000
  sqrt n = 32
  ==============
  n      = 100000000
  sqrt n = 10000
  ==============
  n      = 1000000000000000
  sqrt n = 31622777
  ==============
  n      = 1000000000000000000000000000000
  sqrt n = 1000000000000000
  ==============
  n      = 100000000000000000000000000000000000000000000000000
  sqrt n = 10000000000000000905969664
  ==============
問題の解法

```python import math

def is_prime(n): if n == 1: return False for k in range(2, int(math.sqrt(n)) + 1): if n % k == 0: return False return True

def solve(n): return "YES" if is_prime(n) else "NO"

print(solve(17)) # YES print(solve(18)) # NO print(solve(999983)) # YES print(solve(672263)) # NO, 547, 1229 ```

1
2
3
4
  YES
  NO
  YES
  NO

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
    • 次回対応予定:7.4 ネットワーク層のプロトコルと技術
今日の気分
  • What is your address?
  • 173.168.16.11
  • No, you local address
  • 127.0.0.1
  • I mean you physical address
  • 28:05:FF:58:31:05
復習:OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
ある端末が持つ・割り当てられる IP
  • 大前提:同じマシンでも状況に応じて IP はいろいろ変わる
    • 例:スマホ
      • 家の中のネット環境
      • 外で単独で使うとき
      • 適当な Wi-Fi につなぐとき
    • 気分:どのルーターの配下にいるか?
      • ルーターはあとで触れる

外向き IP(グローバルアドレス)と内向き IP(ローカルアドレス)

MACアドレスは、LANカード、ルータ、ハブなどのネットワーク機器に割り当てられます。実際にデータ通信を行う際、最終的にはパソコンなどのコンピュータ同士、つまりIPアドレス間のやり取りになりますが、行き来するデータは途中でルータやハブなどの機器を経由しています。機器から機器へのデータ移動の際に、MACアドレスによって、次のデータの引き渡し先を判別するという仕組みです。

IP 割り当て問題
  • いろいろな切り口がある
  • 1 つの方向性:IP 枯渇問題
  • なぜ IPv4 と IPv6 の 2 つがあるのか?
    • IPv4 では足りなくなったから
    • IPv6 で方式ごと変えて増やした
    • IoT 端末にも IP を振りたい:冷蔵庫を外から操作
  • 内向き・外向きのアドレスが出てくる理由も同じ
    • 外向きのアドレスが「真のアドレス」:会社の代表番号
    • 内向きのアドレスは内線番号
    • 内線番号にまでいちいち正規の電話番号を割り当てない
      • そもそも公開したいとさえ思わない
      • 「公開したいとさえ思わない」というのがまさに別の切り口の 1 つ
本の記述を追いかける
P.386 コネクションレス型通信である
  • Wikipedia
  • TCP/IP の UDP で使われる
  • Wikipedia の UDP から
    • 参考:ハンドシェイク
    • 「トランスポート層でのそのような処理のオーバーヘッドを削減している」

通信中のパケット紛失や重複、改竄の検出やそのための対応が必要な場合はアプリケーションで行う。それによってトランスポート層でのそのような処理のオーバーヘッドを削減している。リアルタイム・システムでは遅れているパケットを待つよりもそういうパケットはないものとして処理する方が好ましいため、適時性を重視するアプリケーションでよく使われている[1]。トランスポート層での誤り検出機能が必須なら、その用途に設計された Transmission Control Protocol (TCP) または Stream Control Transmission Protocol (SCTP) を使えばよい。

  • オーバーヘッドの問題はいろいろなところで出てくる
  • 参考:「ITの分野では、コンピュータで何らかの処理を行う際に、その処理を行うために必要となる付加的、間接的な処理や手続きのことや、そのために機器やシステムへかかる負荷、余分に費やされる処理時間などのことをオーバーヘッドということが多い。」
P.386 ルーターとは
  • 異なるネットワークを相互に接続するネットワーク機器
  • Wikipedia

通常はOSI基本参照モデルでの第1層(物理層)から第3層(ネットワーク層)までの接続を担う。一般的に用いられるルーターは、基本機能として各ネットワーク間でのIPパケット(第3層)をやり取りできるようにする装置であるが、実際は基本に加えてさまざまな付加機能を実現している。

ハードウェアとしてのルーターは、おおまかに通信事業者 (ISP) 向けのコアルーターと企業向けのエッジルーター、コンシューマー向けのブロードバンドルーターに分けられる。

ルーターというのは「会社の電話の内線と外線の交換機」にそっくりです。最初からそう説明すればよかったですね。

あなたが iPad のサファリを開き、キーワード「NETAGE のWiFi レンタルは国内最安?」を Google で検索すると、iPad は WiFi 経由で WiFi ルーターに接続されます。そして WiFi ルーターは LTE(3G や 4G でもいいですけど)で近くの基地局と接続し、その先のインターネットに接続します。 LAN につながった iPad から WiFi 経由でWiFi ルーターにリクエストが送信されたのです。その後、WiFi ルーターから近所のアンテナ基地局へ、そこから更にインターネットを経由して Google サーバにリクエストが届きます。

このようなネットワーク接続状態のとき、WiFi ルーターのこっち側を LAN(ローカルエリアネットワーク)、向こう側を WAN(ワイドエリアネットワーク)と呼びます。(必ずしも正確ではないですが、シンプルに考え、)WAN はインターネット、LAN は WiFi、とすれば分かりやすいと思います。

P.386 (IP)ヘッダ
P.389 特殊なIPアドレス
  • 8.8.8.8:Google の DNS として有名
  • 127.0.0.1:開発時によく使う。Windows だと「c:/Windows/System32/drivers/etc/hosts」ファイルでドメイン名「localhost」を指定して使うこともある。
  • グローバル IP とローカル IP
    • 最初に触れた問題
    • 外向きにグローバル IP アドレス、内向きにプライベート IP アドレスを使う
    • IP の無駄遣いを防ぐためもある
    • クラス A-C:会社の規模によって使い分ける
    • もちろん A が大企業向け、C が小企業・家庭用という感じ
    • 本でいきなり「192.168.」というアドレスが出てくることがあるが、それはまさにこのプライベートアドレスで話をしている。
P.390 サブネットマスク
  • これは社内セキュリティに使われたりする
  • 参考
    • 会社の部署間でデータの参照を制限する場合
    • パソコンやサーバの台数が多く分割して管理する場合
    • 開発環境と本番環境を分けるなど、環境を切り離す場合
  • ネットワーク設計の話
    • 経営関係の資料を一般社員には見せたくない
    • 経営関係者のネットワークとその他社員の領域を切り分け、経営関係者しかその資料があるところにアクセスできないようにする
P.392 IPv6
  • IP アドレスの枯渇
  • IPv4 でも「特殊なIPアドレス」などグローバル・ローカルを分けたりして枯渇対策はしてきた。
  • 「端末」が世にあふれてきて、アドレスが足りなくなってきた
    • 原理的に「IPアドレスは32けたの2進数」としているので、これ以上増やせない
      • IPはよく「インターネット上の住所」に例えられるが、市町村合併で起きる実際の住所変更のように柔軟に変えられるわけではない
        • 実際の住所にしても行政関係はもちろん、郵便や運送業などのシステムのレベルでは修正や対応が必要
    • 既存の機器・プログラムはこの前提で動いていて、勝手に変えられないし、仮に変えられるとしても膨大な手間になる
    • 新たな仕様を作り、それで世界全体に持っていく
    • 少なくとも既存の欠点はつぶしておく必要があるし、しばらく枯渇しないようにしたい
# P.392 IPv6 の特徴

2020-08-16 課題

課題

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • $x^2$ のフーリエ級数:参考

\begin{align} f(x) = x^2 = \frac{\pi^2}{3} + \sum_{n=1}^\infty \frac{(-1)^n}{n^2} 4 \cos nx. \end{align}

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(- np.pi, np.pi, 1001)
xsquared = x**2
y0 = np.full(len(x), np.pi**2 / 3)
y1 = y0 - 4 * np.cos(x)
y2 = y1 + (1/2**2) * 4 * np.cos (2 * x)
y3 = y2 - (1/3**2) * 4 * np.cos (3 * x)
y4 = y3 + (1/4**2) * 4 * np.cos (4 * x)
y5 = y4 - (1/5**2) * 4 * np.cos (5 * x)

plt.plot(x, xsquared, label="$x^2$")
plt.plot(x, y0, label="y0")
plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.plot(x, y3, label="y3")
plt.plot(x, y4, label="y4")
plt.plot(x, y5, label="y5")
plt.xlabel("$-\pi$ to $\pi$")
plt.ylabel("Fourier")
plt.title("Fourier transform of $x^2$")

plt.grid()
plt.legend()
#plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる
plt.show()

TeX の記録

  • 測地線の方程式

\begin{align} \nabla_{c'} c' &= 0, \ \frac{d^2 c^i}{ds^2} + \Gamma^i_{jk} \frac{dc^j}{ds} \frac{dc^k}{ds} &= 0. \end{align}

競プロ、AtCoder

約数列挙C - Digits in Multiplication

整数 $N$ が与えられます。ここで、$2$ つの正の整数 $A,B$ に対して、$F(A,B)$ を「$10$ 進表記における、$A$ の桁数と $B$ の桁数のうち大きい方」と定義します。例えば、$F(3,11)$ の値は、$3$ は $1$ 桁、$11$ は $2$ 桁であるため、$F(3,11)=2$ となります。$2$ つの正の整数の組 $(A,B)$ が $N=A×B$ を満たすように動くとき、$F(A,B)$ の最小値を求めてください。

約数列挙のポイント
  • 素数判定と同じく $a = 1,2,3,\dots,\sqrt{N}$ で割り続けてためていく。
  • $\sqrt{N}$ までしか見ないので、$a$ を約数にしたら $N/a$ も約数リストにためる。
    • $N$ が $a^2$ を約数に含むとき、$a = N/a$ になるときがあるので、この重複を除いてリストに入れる。
    • Python など集合がある場合は集合にためてもいい。
  • 今回の問題は必ずしも全約数列挙ではないので、このリスト自体は作らなくてもいい。
  • 参考解答
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import math

def solve(N):
    a = math.ceil(math.sqrt(N))
    p = []

    for i in range(1, a+1):
        if N % i == 0:
            x = len(str(i))
            y = len(str(N // i))
            p.append(max(x, y))

    return min(p)

print(solve(10000)) # 3
print(solve(1000003)) # 7
print(solve(9876543210)) # 6
1
2
3
3
7
6

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
    • 次回対応予定:7.4 ネットワーク層のプロトコルと技術
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
ある端末が持つ・割り当てられる IP
  • 大前提:同じマシンでも状況に応じて IP はいろいろ変わる
    • 例:スマホ
      • 家の中のネット環境
      • 外で単独で使うとき
      • 適当な Wi-Fi につなぐとき
    • 気分:どのルーターの配下にいるか?
      • ルーターはあとで触れる
  • 参考:WAN
  • 参考:インターネットの仕組みとISPの構造

本の記述を追いかける
P.386 コネクションレス型通信である
  • Wikipedia
  • TCP/IP の UDP で使われる
  • Wikipedia の UDP から
    • 参考:ハンドシェイク
    • 「トランスポート層でのそのような処理のオーバーヘッドを削減している」

通信中のパケット紛失や重複、改竄の検出やそのための対応が必要な場合はアプリケーションで行う。それによってトランスポート層でのそのような処理のオーバーヘッドを削減している。リアルタイム・システムでは遅れているパケットを待つよりもそういうパケットはないものとして処理する方が好ましいため、適時性を重視するアプリケーションでよく使われている[1]。トランスポート層での誤り検出機能が必須なら、その用途に設計された Transmission Control Protocol (TCP) または Stream Control Transmission Protocol (SCTP) を使えばよい。

  • オーバーヘッドの問題はいろいろなところで出てくる
  • 参考:「ITの分野では、コンピュータで何らかの処理を行う際に、その処理を行うために必要となる付加的、間接的な処理や手続きのことや、そのために機器やシステムへかかる負荷、余分に費やされる処理時間などのことをオーバーヘッドということが多い。」
P.386 ルーターとは
  • 異なるネットワークを相互に接続するネットワーク機器
  • Wikipedia

通常はOSI基本参照モデルでの第1層(物理層)から第3層(ネットワーク層)までの接続を担う。一般的に用いられるルーターは、基本機能として各ネットワーク間でのIPパケット(第3層)をやり取りできるようにする装置であるが、実際は基本に加えてさまざまな付加機能を実現している。

ハードウェアとしてのルーターは、おおまかに通信事業者 (ISP) 向けのコアルーターと企業向けのエッジルーター、コンシューマー向けのブロードバンドルーターに分けられる。

ルーターというのは「会社の電話の内線と外線の交換機」にそっくりです。最初からそう説明すればよかったですね。

あなたが iPad のサファリを開き、キーワード「NETAGE のWiFi レンタルは国内最安?」を Google で検索すると、iPad は WiFi 経由で WiFi ルーターに接続されます。そして WiFi ルーターは LTE(3G や 4G でもいいですけど)で近くの基地局と接続し、その先のインターネットに接続します。 LAN につながった iPad から WiFi 経由でWiFi ルーターにリクエストが送信されたのです。その後、WiFi ルーターから近所のアンテナ基地局へ、そこから更にインターネットを経由して Google サーバにリクエストが届きます。

このようなネットワーク接続状態のとき、WiFi ルーターのこっち側を LAN(ローカルエリアネットワーク)、向こう側を WAN(ワイドエリアネットワーク)と呼びます。(必ずしも正確ではないですが、シンプルに考え、)WAN はインターネット、LAN は WiFi、とすれば分かりやすいと思います。

P.386 (IP)ヘッダ
P.389 特殊なIPアドレス
  • 8.8.8.8:Google の DNS として有名
  • 127.0.0.1:開発時によく使う。Windows だと「c:/Windows/System32/drivers/etc/hosts」ファイルでドメイン名「localhost」を指定して使うこともある。
  • グローバル IP とローカル IP
    • 最初に触れた問題
    • 外向きにグローバル IP アドレス、内向きにプライベート IP アドレスを使う
    • IP の無駄遣いを防ぐためもある
    • クラス A-C:会社の規模によって使い分ける
    • もちろん A が大企業向け、C が小企業・家庭用という感じ
    • 本でいきなり「192.168.」というアドレスが出てくることがあるが、それはまさにこのプライベートアドレスで話をしている。
P.390 サブネットマスク
  • これは社内セキュリティに使われたりする
  • 参考
    • 会社の部署間でデータの参照を制限する場合
    • パソコンやサーバの台数が多く分割して管理する場合
    • 開発環境と本番環境を分けるなど、環境を切り離す場合
  • ネットワーク設計の話
    • 経営関係の資料を一般社員には見せたくない
    • 経営関係者のネットワークとその他社員の領域を切り分け、経営関係者しかその資料があるところにアクセスできないようにする
P.392 IPv6
  • IP アドレスの枯渇
  • IPv4 でも「特殊なIPアドレス」などグローバル・ローカルを分けたりして枯渇対策はしてきた。
  • 「端末」が世にあふれてきて、アドレスが足りなくなってきた
    • 原理的に「IPアドレスは32けたの2進数」としているので、これ以上増やせない
      • IPはよく「インターネット上の住所」に例えられるが、市町村合併で起きる実際の住所変更のように柔軟に変えられるわけではない
        • 実際の住所にしても行政関係はもちろん、郵便や運送業などのシステムのレベルでは修正や対応が必要
    • 既存の機器・プログラムはこの前提で動いていて、勝手に変えられないし、仮に変えられるとしても膨大な手間になる
    • 新たな仕様を作り、それで世界全体に持っていく
    • 少なくとも既存の欠点はつぶしておく必要があるし、しばらく枯渇しないようにしたい
P.392 IPv6 の特徴

- 勉強会の案内: アインシュタインの特殊相対性理論の原論文を多言語で読む会の話

  • bewegter の話をしよう

微分積分

  • 理解という言葉で何を求めているのか?
  • 短期目標と長期目標は何か?
  • 質はともかく量をこなしているか?
    • 量に関する参考:微分幾何計算ノート
  • 基礎をどこまで頑張るか?
    • 高校の数学はだいたいいい加減
    • day3.pdf, P.15 「微分可能性を保証していない」
  • 直近で何を諦めるか?

2020-08-23 課題

課題

TODO

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
  • 他の $m, l$ でもやってみる
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 0,0
phi = np.linspace(0, np.pi, 31)
theta = np.linspace(0, 2 * np.pi, 46)
phi, theta = np.meshgrid(phi, theta)

r = sph_harm(m, l, theta, phi).real
x = np.abs(r) * np.sin(phi) * np.cos(theta)
y = np.abs(r) * np.sin(phi) * np.sin(theta)
z = np.abs(r) * np.cos(phi)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • 測度の完全加法性

\begin{align} \mu \left( \bigcup_{n \in \mathbb{N}} A_n \right) = \sum_{n=0}^\infty \mu \left( A_n \right) \end{align}

競プロ、AtCoder

素因数分解AOJ Course NTL_1_A Prime Factorize

整数 $n$ を素因数分解してください。

素因数分解のポイント
  • 素数判定と同じく $a = 2,3,\dots,\sqrt{N}$ で割り続けてためていく。

  • 参考解答, 特にこれ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import math

def solve(n):
    str_n = str(n)
    sqrt_n = math.sqrt(n)
    result = []
    i = 2
    while i <= sqrt_n:
        # i を因数として複数持つ場合があるためこういう分岐にする
        if n%i == 0:
            n //= i
            result.append(str(i))
        else:
            i += 1
    if n != 1:
        result.append(str_n)

    print(str_n + ": " + " ".join(result))

solve(12) # 12: 2 2 3
solve(126) # 126: 2 3 3 7
1
2
12: 2 2 3
126: 2 3 3 7

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
    • 次回対応予定:7.4 ネットワーク層のプロトコルと技術
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
P.386 (IP)ヘッダ
参考
P.389 特殊なIPアドレス
  • 8.8.8.8:Google の DNS として有名
  • 127.0.0.1:開発時によく使う。Windows だと「c:/Windows/System32/drivers/etc/hosts」ファイルでドメイン名「localhost」を指定して使うこともある。
  • グローバル IP とローカル IP
    • 最初に触れた問題
    • 外向きにグローバル IP アドレス、内向きにプライベート IP アドレスを使う
    • IP の無駄遣いを防ぐためもある
    • クラス A-C:会社の規模によって使い分ける
    • もちろん A が大企業向け、C が小企業・家庭用という感じ
    • 本でいきなり「192.168.」というアドレスが出てくることがあるが、それはまさにこのプライベートアドレスで話をしている。
P.390 サブネットマスク
  • これは社内セキュリティに使われたりする
  • 参考
    • 会社の部署間でデータの参照を制限する場合
    • パソコンやサーバの台数が多く分割して管理する場合
    • 開発環境と本番環境を分けるなど、環境を切り離す場合
  • ネットワーク設計の話
    • 経営関係の資料を一般社員には見せたくない
    • 経営関係者のネットワークとその他社員の領域を切り分け、経営関係者しかその資料があるところにアクセスできないようにする
P.392 IPv6
  • IP アドレスの枯渇
  • IPv4 でも「特殊なIPアドレス」などグローバル・ローカルを分けたりして枯渇対策はしてきた。
  • 「端末」が世にあふれてきて、アドレスが足りなくなってきた
    • 原理的に「IPアドレスは32けたの2進数」としているので、これ以上増やせない
      • IPはよく「インターネット上の住所」に例えられるが、市町村合併で起きる実際の住所変更のように柔軟に変えられるわけではない
        • 実際の住所にしても行政関係はもちろん、郵便や運送業などのシステムのレベルでは修正や対応が必要
    • 既存の機器・プログラムはこの前提で動いていて、勝手に変えられないし、仮に変えられるとしても膨大な手間になる
    • 新たな仕様を作り、それで世界全体に持っていく
    • 少なくとも既存の欠点はつぶしておく必要があるし、しばらく枯渇しないようにしたい
P.392 IPv6 の特徴

2020-09-06 課題

  • 今回から日付設定を次回の勉強会開催日に変更。
  • 先に進む前に録画してあるか確認しよう

コンテンツ修正メモ

  • 平面内で回転している様子を表すコードを書く: $R(\theta)$ を定義して関数化する.
  • 矢印を書くときに何を描いているか, 式もきちんと書く.
  • 遊ぶ例についてコメントを残す.

途中で見せたページ・動画

競プロ、AtCoder
IT 基礎知識編
数学・プログラミング

quiver について

課題

TODO

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き

```python import numpy as np import matplotlib.pyplot as plt from scipy.special import sph_harm

m,l = 0,1 phi = np.linspace(0, np.pi, 31) theta = np.linspace(0, 2 * np.pi, 46) phi, theta = np.meshgrid(phi, theta)

r = sph_harm(m, l, theta, phi).real x = np.abs(r) * np.sin(phi) * np.cos(theta) y = np.abs(r) * np.sin(phi) * np.sin(theta) z = np.abs(r) * np.cos(phi)

fig = plt.figure(figsize=(8, 8)) ax = fig.gca(projection="3d") ax.plot_surface(x, y, z, color="aqua", edgecolor="k") plt.axis("off") plt.show() ```

TeX の記録

\begin{align} Y^m_k(\theta, \phi) &= (-1)^{(m+ |m|)/2} \sqrt{\frac{2k+1}{4 \pi} \frac{(k-|m|)!}{((k+|m|)!}} P^{|n|}k (\cos \theta) e^{im\phi}, \ P^{m}_k (t) &= \frac{1}{2^k} (1-t^2)^{m/2} \sum^{\lfloor (k-m)/2 \rfloor} \frac{(-1)^j (2k-2j)!}{j!(k-j)!(k-2j-m)!} t^{k-2j-m}. \end{align}

競プロ、AtCoder

素因数分解の利用約数の個数

整数 $N$ が与えられます。 $N!$ の正の約数の個数を $10^9+7$ で割った余りを求めてください。

約数の個数のポイント
  • $N= \prod_{k=1}^K p^{e_k}$ と素因数分解できるとき、約数の個数は $(e_1+1)(e_2+1)…(e_K+1)$ 個
    • 具体例で計算すればわかる
  • 約数の個数を求めるだけなら素因数分解はオーバーキル:約数列挙で十分
  • 素因数分解で考えるメリット:約数に関する考察がしやすい
コードの参考

```python #N=int(input()) from collections import defaultdict from functools import reduce

#前回の素因数分解とだいたい同じ def solve(n): p = defaultdict(int)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
  # クロージャー上の p にアクセスしてそこに結果をためる
  def inner(n):
      sqrt_n = int(n ** 0.5)
      for i in range(2, sqrt_n + 1):
          x = 0
          while n % i == 0:
              n //= i
              x += 1
          if x:
              p[i] += x
      if n > 1:
          p[n] += 1

  for i in range(2, n+1):
      inner(i)

  # 関数型でいう fold
  print(reduce(lambda x, y: x * (y+1), p.values(), 1) % (10**9 + 7))

solve(3) # 4: 3! = 6 で 6 の約数は 1, 2, 3, 6 の 4 つ solve(6) # 30: 6! = 720, 約数は 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 30, 36, 40, 45, 48, 60, 72, 80, 90, 120, 144, 180, 240, 360, 720 solve(1000) # 972926972 ```

1
2
3
  4
  30
  972926972
Project Euler も見てみよう
  • GitHub の回答ページ
  • 中高生の数学・プログラミング学習用によかろうと思い、ちょこちょこやっている $a$
  • F#, Julia の |> を説明する
    • Twitter (私の TL)でも話題になった $f(x)$ か $xf$, $x^f$ か
    • F# や Julia の標準も $f(x)$ 型だが、$xf$ と書くための機構がある
    • Unix のパイプラインと同じ:データがあって、それをコマンドで順に整形していくワンライナーのイメージ
    • この感覚が育っていると実に自然な記法
    • 書いていて楽しい

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
    • 次回対応予定:7.4 ネットワーク層のプロトコルと技術
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
P.392 IPv6
  • IP アドレスの枯渇
  • IPv4 でも「特殊なIPアドレス」などグローバル・ローカルを分けたりして枯渇対策はしてきた。
  • 「端末」が世にあふれてきて、アドレスが足りなくなってきた
    • 原理的に「IPアドレスは32けたの2進数」としているので、これ以上増やせない
      • IPはよく「インターネット上の住所」に例えられるが、市町村合併で起きる実際の住所変更のように柔軟に変えられるわけではない
        • 実際の住所にしても行政関係はもちろん、郵便や運送業などのシステムのレベルでは修正や対応が必要
    • 既存の機器・プログラムはこの前提で動いていて、勝手に変えられないし、仮に変えられるとしても膨大な手間になる
    • 新たな仕様を作り、それで世界全体に持っていく
    • 少なくとも既存の欠点はつぶしておく必要があるし、しばらく枯渇しないようにしたい
P.392 IPv6 の特徴
  • 家電などへもIP アドレスを採番できるようになった。
  • アドレス空間が32ビットから128ビットに拡張
  • ルーティングに不要なフィールドを拡張ヘッダに分離
    • 基本ヘッダを簡素かつ固定長:固定長のご利益はあとで
    • ルータなどの負荷を軽減
  • IPレベルのセキュリティ機能IPsecに標準対応
    • IPSec
    • 暗号技術で IP パケット単位で改竄検知や秘匿機能を提供するプロトコル
    • 暗号化をサポートしていないトランスポート層やアプリケーションでも通信路の途中での盗聴や改ざんを防止できる。
  • IPアドレスの自動設定機能の組み込み
    • DHCP を使わなくてもよくなる
  • 特定グループのうち経路上最も近いノード,あるいは最適なノードにデータを送信するエニーキャストの追加
    • エニーキャスト
      • ルーティングトポロジーから見てデータを「最も近い」または「最もよい」あて先に送信するネットワークのアドレッシング/ルーティング手法である(anycast―どこかに送信)。
# 固定長レコードのメリット・デメリット
  • 対義語は可変長レコード
  • 固定長レコード
    • 全てが桁数で決まる
      • メリットであり、デメリットでもある
      • 参考
      • すべてのデータの長さが同じ
      • わざわざ「何文字で終わりか」と考える必要がなくなる
      • データベースにもプログラム(変数の型)にもある:「何文字までを許すデータ型」
  • デメリット
    • データ項目を増やしたりデータ項目の桁数を増やすためにシステムの大規模修正が出る可能性がある
    • 2000 年問題の原因の 1 つ
      • 年号を 2 桁で持っていたため
      • 4 桁で持っていれば問題なかった
    • これが起きた原因
      • 昔は HDD 容量なども限られていた上、恐ろしく高価だったので削れる分は削っていた
      • そんなに長期間にわたって使われると思っていなかった
      • 個別のシステムはともかく、2桁表記というルール自体が一般化してしまった
    • いまの類似の問題:Unix 時間と 2038 年問題
# ホップ・リミット
  • パケットの生存時間(通過可能なルータの最大数)
  • なぜこれが必要か?
    • プログラム(アルゴリズム)によってネットワークをたどって目的地に行くために起こる問題
    • 何か・どこかがおかしくて、ネットワークのある一部をループしてしまうかもしれない
      • ループを抜け出すような処理を書くよりはそのパケットを捨てて再送させた方が楽
      • いつ捨てるか:パケットの寿命・生存時間
    • 辿ろうと思っていたネットワークが急な瞬断・故障などで辿れなくなった
      • 適切なところまで戻ってから新たなルートを探す必要がある
      • 計算時間・ネットワーク上での情報の移動時間がかかり、その分帯域も占有し圧迫する
      • そのパケットは捨てた方が早いかもしれない
P.394 アドレス変換技術

インターネットに接続するノードには,IPアドレスが割り当てられている必要があります。しかし,各組織に1つのIPアドレスがあれば,IPアドレスを割り当てられていないノードからもインターネットに接続できるといった技術があります。

  • ルーターやグローバル IP・ローカル IP の発想でもある
P.395 ICMP を利用した ping
  • ネットワークの疎通確認でよく使う
    • 「ネットがつながらない」
    • 「どこまでつながるか、ping 打って試してみて」
  • 疎通
    • 意思疎通の疎通だが、ここではネットワーク用語
  • 参考:疎通確認でよくやること
    • ルーターにつながるか、ルーターの IP を打ってみて確認
      • つながらなければマシンの設定がおかしい可能性がある
      • マシンの無線 Wi-Fi 送受信のハードウェアが壊れている
      • ルーターが死んでいる(壊れた・停電後に電源が落ちたまま)など
    • 適当な DNS につながるか、DNS の IP を打ってみて確認
      • 何らかの理由でルーターから出られていない?
      • DNS が死んでいる?
  • こういう感じの状況切り分けでよく使う
    • 状況切り分けという手法自体、アルゴリズムの二分探索にも近い発想で、プログラミングそれ自体にも非常に重要。
  • 他にもいろいろな応用がある
    • パソコンサポートでの一幕
    • 「パソコンがつかない」
    • 「コンセントは繋いでいますか?」
      • 直接聞くと怒るタイプの社会性が高い人もいる
      • 「まずは電源を差し込んでみてください」
P.395 COLUMN
  • これらのコマンドはたまに使う:ifconfig, netstat, nslookup
  • 覚えなくてもいい:そういうコマンドがあることを知っているだけでも全然違う
P.396 7.5 トランスポート層のプロトコル
P.396 7.5.1 TCP と UDP
  • トランスポート層は IP を補完し、データ送信の品質・信頼性を上げる
  • プロトコルは TCP・UDP
P.396 TCP
  • IP はデータ通信の安全性を保障しないコネクションレス型通信
  • IP の補完のために送達管理・伝送管理の機能を持つコネクション型プロトコル
  • 特に HTTP や FTP のような全て確実に伝わってほしいリクエスト・レスポンスに使われる
  • 参考:一部が落ちてもいいリクエスト・レスポンス
    • 動画:一部が抜け落ちてもそれほど問題なく、かつ大容量で帯域を圧迫するので再送も控えたい
P.397 TCP でのコネクションの確立
  • 3 ウェイハンドシェイク
    • クライアント→サーバー:コネクションの確立要求、SYN(synchronize packet)
    • サーバー→クライアント:上記への ACK(acknowledgement packet)・SYN
    • クライアント→サーバー:上記への ACK
  • TCP コネクションは, あて先 IP アドレス, あて先 TCP ポート番号, 送信元 IP アドレス, 送信元 TCP ポート番号の 4 つによって識別される.
ポート・ポート番号

ポートとは、ネットワークでデータを通信するための扉のようなものだと思うとわかりやすいだろう。ポート番号はその扉の番号だ。

それぞれプログラムの種類によって、使うポート(扉)が違う。例えば、メールを送るにはこの扉、メールを受け取るにはこの扉、Webページを見てもらうのはこの扉、などと決まっているわけだ。

実際TCPやUDPで通信を行うときは、コンピュータ一台という単位ではなく「プログラム単位」つまり「プロセスやスレッド単位」で通信が行われる。そのためプロセス同士、正しく受け渡しをする必要がある。

  • プロセス・スレッドなどいきなりかなり低レイヤーの話がでてくることに注意。

このとき通信しているプロセスには「ポート番号」というものが割り振られる。プロセスやスレッドはこのポート番号を目印にして、どのアプリケーションとどのアプリケーションが通信をとっているのかを判別することになる。

IPアドレスを建物の住所に例えるなら、ポート番号は「部屋の番号は何号室か?」という例えになる。コンピュータネットワークにおいて、プロトコル、IPアドレスとポート番号はまとめると、「どのような方法」で「どこ」の「何号室」に通信をとるのか?という形にいいかえることが出来る。

通信において重要なポート番号だがポートを開くということは、特定の部屋の扉をあけはなっている状態に等しいので、サービスを提供するサーバでもないかぎり、基本的に不必要なポートは開かないように設定しておかなければならない。

  • サーバーのセキュリティなども絡むが分かる。

代表的なポート番号とプロトコル それぞれ「どの様なプロトコルがどの様なポート番号で運用されるのか?」代表的な例をあげると以下のようになる。

  • TCP 20 : FTP (データ)
  • TCP 21 : FTP (制御)
  • TCP 22 : SSH
  • TCP 23 : Telnet
  • TCP 25 : SMTP
  • UDP 53 : DNS
  • UDP 67 : DHCP(サーバ)
  • UDP 68 : DHCP(クライアント)
  • TCP 80 : HTTP
  • TCP 110 : POP3
  • UDP 123 : NTP
  • TCP 443 : HTTPS
  • WELL KNOWN PORT NUMBERS 0~1023
  • MySQL: 3306
P.397 アプリケーション間の通信
  • トランスポート層にはアプリケーション間の通信の実現という役割がある
  • 各アプリケーションはトランスポート層のヘッダにあるポート番号をみて自分宛のデータか判断する。
P.398 7.6 アプリケーション層のプロトコル
P.398 7.6.1 メール関連
P.398 メールプロトコル
  • 送信転送する SMTP (Simple Mail Transfer Protocol)
  • メールを受け取る POP3 (Post Office Protocol 3)
  • IMAP (Internet Message Access Protocol)
補足:POP と IMAP
  • (気分的には)管理する主体が違う
  • POP は単純にサーバーからメールデータを取ってくる
    • 取ってきたらサーバーからデータが消える
    • そのあとは自分で管理する
  • IMAP の説明の参考
    • 郵便にたとえると、(実際にはできませんが)郵便局から手紙は受け取らずコピーをもらってくるような形になり、手紙は郵便局が保管することになります。
    • メールはサーバに保管されますので、既読・未読・削除、フォルダの分類といった管理は、すべてサーバ上で行われます。
    • いろいろな端末でメールが見られる
  • POP と IMAP のメリット・デメリット
    • POP
      • メリット
        • PC などの端末にメールが保存される
        • 端末が許す限りメールを保存できる
        • 端末に保存されたメールはネット接続なしで見られる
      • デメリット
        • 落としてきた端末でしたメールが見られない
        • サーバーに一定期間メールを残す設定で複数端末でメールを見ることもできるが、未読・既読・削除などの状態が反映されない
    • IMAP:サーバー上でメール管理
      • メリット
        • 未読・既読などの状態が共有できる
        • サーバー上で一元管理できる。
      • デメリット
        • メールの閲覧・状態修正のためにサーバーと通信する必要がある
        • サーバーの容量の上限に達するとメールからサーバーを削除する必要がある
Gmail と IMAP
  • (何となくの理解しかないので間違っているかもしれない)
  • Web インターフェースからの Gmail 利用と Thunderbird などのアプリからの利用で事情が違う
  • POP や IMAP が関係してくるのはアプリからの利用
  • アプリを使う場合はふつう IMAP を使う
  • IMAP にしないと他の端末、もっといえば Web インターフェースからも見られなくなる(はず)
  • 会社で特定端末からしかメールを見ないなら POP でもいいかもしれない。
    • マシンが変わるとき、メールデータも引越ししないと昔のメールが掘れない
    • 会社のメールサーバー管理問題・容量問題などはかなり大変
    • 一頃「Gmail でサーバー管理問題を解決して、IT 部門が攻めの IT を提案できるようになった」みたいな記事も出ていた
    • メールが止まると直接的にビジネスに被害が出る
    • 何にせよサーバー管理は大変なので
P.398 メール受信プロトコル、メール関連のプロトコル・規格
  • 昔のプロトコルはセキュリティ関連の仕様がなかった
  • SMTP-AUTH, SMTP over TLS/SSL など
P.399 Web 関連
  • HTTP: HTTP(Hyper Text Transfer Protocol)は WebサーバとWebクライアント(ブラウザ)間でHTMLなどのWeb情報の配信 に使うプロトコル
    • セキュリティ:HTTP に SSL/TLS の認証機能や通信の暗号化を実装した HTTPS が登場
  • SOAP: XML を使ってデータ構造を記述
    • 最近あまり見かけない印象
    • XML 自体もうあまり使わない
    • 最近は JSON や GQL をよく見かける
P.401 DNS(Domain Name System)
  • TCP/IPでは,各ノードに対して一意なIPアドレスが割り当てられている
  • IPアドレスは覚えにくい
  • IP アドレスと対応する別名であるドメイン名がつけた
  • ドメインと IP を対応させるサービスが DNS
  • 原理的には世界中のすべてのノードのドメイン名とIPアドレスの対応関係を知ってい なければならない
    • 事実上不可能
    • DNSの規約では変換表作成の負担を細分化して,DNSを分散データベースとすることで対応しています。
  • DNS ルートサーバー
  • DNS ポイズニングのような攻撃手法もある

2020-09-13 課題

  • 先に進む前に録画してあるか確認しよう

進捗メモ

プログラミング勉強会
  • 2020-09-06:線型代数、02_03 の固有ベクトルの計算その 1 まで
  • 2020-09-13:02_03 固有値・固有ベクトルの計算その 2 から 03_02 の「具体例:関数 $f(x)=3x^2+4x-5$ の $x=1$ での接線」、「sympy による接線の描画」まで
統計学・機械学習勉強会
理系のための語学・リベラルアーツ

課題

TODO

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 0,2
phi = np.linspace(0, np.pi, 31)
theta = np.linspace(0, 2 * np.pi, 46)
phi, theta = np.meshgrid(phi, theta)

r = sph_harm(m, l, theta, phi).real
x = np.abs(r) * np.sin(phi) * np.cos(theta)
y = np.abs(r) * np.sin(phi) * np.sin(theta)
z = np.abs(r) * np.cos(phi)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TODO TeX の記録

競プロ、AtCoder

素因数分解の利用約数の総和

問題文 高橋君は完全なものが大好きです。 自然数には、完全数というものがあります。 完全数というのは、自分以外の約数の総和が自分と等しくなる自然数のことです。 例えば $6$ の場合 $1+2+3=6$ となるので完全数です。 それに対して、自分以外の約数の総和が自分より小さくなる場合は不足数と言い、大きくなる場合は過剰数と言います。 高橋君には今気になっている自然数があります。高橋君のために、それが完全数なのか不足数なのか過剰数なのか判定してください。

約数の総和のポイント
  • 約数を列挙して足せばいい
  • 「約数の個数」を求めたときの考え方を少し改変するだけで求められる
  • $N= \prod_{k=1}^K p^{e_k}$ と素因数分解できるとき、約数の総和は次のように書ける。

\begin{align} \left( \sum_{k=0}^{e_1} p_1^{k} \right) \cdot \left( \sum_{k=0}^{e_2} p_2^{k} \right) \cdots \left( \sum_{k=0}^{e_K} p_K^{k} \right) = \prod_{l=1}^K \left( \sum_{k=0}^{e_K} p_l^{k} \right). \end{align}

  • 単に約数の総和を求めるだけなら普通に約数列挙した方が楽
コードの参考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#n = int(input())
def solve(n):
    sqrt_n = int(n ** 0.5)
    ans = 0

    for i in range(1, sqrt_n + 1):
        if n % i == 0:
            # 完全数は定義によって自分以外の約数の和を見るので、平方数の場合は約数だけを取る
            if i**2 == n:
                ans += i
                # ans = ans + i
            else:
                # ループで sqrt_n までしか見ないので、sqrt_n 以上の値になるペアも足し込む
                # 例:n = 8 で、sqrt_n + 1 = 3, i = 2 に対して n // i = 4
                ans += i + n // i

    if ans > n*2:
        print("Abundant")
    elif ans < n*2:
        print("Deficient")
    else:
        print("Perfect")

solve(6) # Perfect
solve(24) # Abundant
solve(27) # Deficient
solve(945) # Abundant
1
2
3
4
Perfect
Abundant
Deficient
Abundant
Project Euler も見てみよう

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
# P.393 ホップ・リミット
  • パケットの生存時間(通過可能なルータの最大数)
  • なぜこれが必要か?
    • プログラム(アルゴリズム)によってネットワークをたどって目的地に行くために起こる問題
    • 何か・どこかがおかしくて、ネットワークのある一部をループしてしまうかもしれない
      • ループを抜け出すような処理を書くよりはそのパケットを捨てて再送させた方が楽
      • いつ捨てるか:パケットの寿命・生存時間
    • 辿ろうと思っていたネットワークが急な瞬断・故障などで辿れなくなった
      • 適切なところまで戻ってから新たなルートを探す必要がある
      • 計算時間・ネットワーク上での情報の移動時間がかかり、その分帯域も占有し圧迫する
      • そのパケットは捨てた方が早いかもしれない
P.394 アドレス変換技術

インターネットに接続するノードには,IPアドレスが割り当てられている必要があります。しかし,各組織に1つのIPアドレスがあれば,IPアドレスを割り当てられていないノードからもインターネットに接続できるといった技術があります。

  • ルーターやグローバル IP・ローカル IP の発想でもある
P.395 ICMP を利用した ping
  • ネットワークの疎通確認でよく使う
    • 「ネットがつながらない」
    • 「どこまでつながるか、ping 打って試してみて」
  • 監視でも使われる:参考ページ、「PING 監視」とあるところ
    • せっかくなのでいくつかキーワードなどを盛り込む
    • PING 監視、TRAP 監視、RSH、SNMP、SOCKET 通信、POP・SMTP認証、PHN/PNSコマンド、2バイトのコマンド
    • インターフェースコンバータ
      • 「インタフェースコンバータ」は異なるインタフェースを相互に変換して接続する装置です。異なる規格の通信インタフェースを相互接続して、多種多様なシステムを構築することができます。
# 疎通とは
  • 意思疎通の疎通だが、ここではネットワーク用語
  • 参考:疎通確認でよくやること
    • ルーターにつながるか、ルーターの IP を打ってみて確認
      • つながらなければマシンの設定がおかしい可能性がある
      • マシンの無線 Wi-Fi 送受信のハードウェアが壊れている
      • ルーターが死んでいる(壊れた・停電後に電源が落ちたまま)など
    • 適当な DNS につながるか、DNS の IP を打ってみて確認
      • 何らかの理由でルーターから出られていない?
      • DNS が死んでいる?
  • こういう感じの状況切り分けでよく使う
    • 状況切り分けという手法自体、アルゴリズムの二分探索にも近い発想で、プログラミングそれ自体にも非常に重要。
  • 他にもいろいろな応用がある
    • パソコンサポートでの一幕
    • 「パソコンがつかない」
    • 「コンセントは繋いでいますか?」
      • 直接聞くと怒るタイプの社会性が高い人もいる
      • 「まずは電源を差し込んでみてください」
P.395 COLUMN
  • これらのコマンドはたまに使う:ifconfig, netstat, nslookup
  • 覚えなくてもいい:そういうコマンドがあることを知っているだけでも全然違う
P.396 7.5 トランスポート層のプロトコル
P.396 7.5.1 TCP と UDP
  • トランスポート層は IP を補完し、データ送信の品質・信頼性を上げる
  • プロトコルは TCP・UDP
P.396 TCP
  • IP はデータ通信の安全性を保障しないコネクションレス型通信
  • IP の補完のために送達管理・伝送管理の機能を持つコネクション型プロトコル
  • 特に HTTP や FTP のような全て確実に伝わってほしいリクエスト・レスポンスに使われる
  • 参考:一部が落ちてもいいリクエスト・レスポンス
    • 動画:一部が抜け落ちてもそれほど問題なく、かつ大容量で帯域を圧迫するので再送も控えたい
P.397 TCP でのコネクションの確立
  • 3 ウェイハンドシェイク
    • クライアント→サーバー:コネクションの確立要求、SYN(synchronize packet)
    • サーバー→クライアント:上記への ACK(acknowledgement packet)・SYN
    • クライアント→サーバー:上記への ACK
  • TCP コネクションは, あて先 IP アドレス, あて先 TCP ポート番号, 送信元 IP アドレス, 送信元 TCP ポート番号の 4 つによって識別される.
ポート・ポート番号

ポートとは、ネットワークでデータを通信するための扉のようなものだと思うとわかりやすいだろう。ポート番号はその扉の番号だ。

それぞれプログラムの種類によって、使うポート(扉)が違う。例えば、メールを送るにはこの扉、メールを受け取るにはこの扉、Webページを見てもらうのはこの扉、などと決まっているわけだ。

実際TCPやUDPで通信を行うときは、コンピュータ一台という単位ではなく「プログラム単位」つまり「プロセスやスレッド単位」で通信が行われる。そのためプロセス同士、正しく受け渡しをする必要がある。

  • プロセス・スレッドなどいきなりかなり低レイヤーの話がでてくることに注意。

このとき通信しているプロセスには「ポート番号」というものが割り振られる。プロセスやスレッドはこのポート番号を目印にして、どのアプリケーションとどのアプリケーションが通信をとっているのかを判別することになる。

IPアドレスを建物の住所に例えるなら、ポート番号は「部屋の番号は何号室か?」という例えになる。コンピュータネットワークにおいて、プロトコル、IPアドレスとポート番号はまとめると、「どのような方法」で「どこ」の「何号室」に通信をとるのか?という形にいいかえることが出来る。

通信において重要なポート番号だがポートを開くということは、特定の部屋の扉をあけはなっている状態に等しいので、サービスを提供するサーバでもないかぎり、基本的に不必要なポートは開かないように設定しておかなければならない。

  • サーバーのセキュリティなども絡むが分かる。

代表的なポート番号とプロトコル それぞれ「どの様なプロトコルがどの様なポート番号で運用されるのか?」代表的な例をあげると以下のようになる。

  • TCP 20 : FTP (データ)
  • TCP 21 : FTP (制御)
  • TCP 22 : SSH
  • TCP 23 : Telnet
  • TCP 25 : SMTP
  • UDP 53 : DNS
  • UDP 67 : DHCP(サーバ)
  • UDP 68 : DHCP(クライアント)
  • TCP 80 : HTTP
  • TCP 110 : POP3
  • UDP 123 : NTP
  • TCP 443 : HTTPS
  • WELL KNOWN PORT NUMBERS 0~1023
  • MySQL: 3306
P.397 アプリケーション間の通信
  • トランスポート層にはアプリケーション間の通信の実現という役割がある
  • 各アプリケーションはトランスポート層のヘッダにあるポート番号をみて自分宛のデータか判断する。
P.398 7.6 アプリケーション層のプロトコル
P.398 7.6.1 メール関連
P.398 メールプロトコル
  • 送信転送する SMTP (Simple Mail Transfer Protocol)
  • メールを受け取る POP3 (Post Office Protocol 3)
  • IMAP (Internet Message Access Protocol)
補足:POP と IMAP
  • (気分的には)管理する主体が違う
  • POP は単純にサーバーからメールデータを取ってくる
    • 取ってきたらサーバーからデータが消える
    • そのあとは自分で管理する
  • IMAP の説明の参考
    • 郵便にたとえると、(実際にはできませんが)郵便局から手紙は受け取らずコピーをもらってくるような形になり、手紙は郵便局が保管することになります。
    • メールはサーバに保管されますので、既読・未読・削除、フォルダの分類といった管理は、すべてサーバ上で行われます。
    • いろいろな端末でメールが見られる
  • POP と IMAP のメリット・デメリット
    • POP
      • メリット
        • PC などの端末にメールが保存される
        • 端末が許す限りメールを保存できる
        • 端末に保存されたメールはネット接続なしで見られる
      • デメリット
        • 落としてきた端末でしたメールが見られない
        • サーバーに一定期間メールを残す設定で複数端末でメールを見ることもできるが、未読・既読・削除などの状態が反映されない
    • IMAP:サーバー上でメール管理
      • メリット
        • 未読・既読などの状態が共有できる
        • サーバー上で一元管理できる。
      • デメリット
        • メールの閲覧・状態修正のためにサーバーと通信する必要がある
        • サーバーの容量の上限に達するとメールからサーバーを削除する必要がある
Gmail と IMAP
  • (何となくの理解しかないので間違っているかもしれない)
  • Web インターフェースからの Gmail 利用と Thunderbird などのアプリからの利用で事情が違う
  • POP や IMAP が関係してくるのはアプリからの利用
  • アプリを使う場合はふつう IMAP を使う
  • IMAP にしないと他の端末、もっといえば Web インターフェースからも見られなくなる(はず)
  • 会社で特定端末からしかメールを見ないなら POP でもいいかもしれない。
    • マシンが変わるとき、メールデータも引越ししないと昔のメールが掘れない
    • 会社のメールサーバー管理問題・容量問題などはかなり大変
    • 一頃「Gmail でサーバー管理問題を解決して、IT 部門が攻めの IT を提案できるようになった」みたいな記事も出ていた
    • メールが止まると直接的にビジネスに被害が出る
    • 何にせよサーバー管理は大変なので
P.398 メール受信プロトコル、メール関連のプロトコル・規格
  • 昔のプロトコルはセキュリティ関連の仕様がなかった
  • SMTP-AUTH, SMTP over TLS/SSL など
P.399 Web 関連
  • HTTP: HTTP(Hyper Text Transfer Protocol)は WebサーバとWebクライアント(ブラウザ)間でHTMLなどのWeb情報の配信 に使うプロトコル
    • セキュリティ:HTTP に SSL/TLS の認証機能や通信の暗号化を実装した HTTPS が登場
  • SOAP: XML を使ってデータ構造を記述
    • 最近あまり見かけない印象
    • XML 自体もうあまり使わない
    • 最近は JSON や GQL をよく見かける
P.401 DNS(Domain Name System)
  • TCP/IPでは,各ノードに対して一意なIPアドレスが割り当てられている
  • IPアドレスは覚えにくい
  • IP アドレスと対応する別名であるドメイン名がつけた
  • ドメインと IP を対応させるサービスが DNS
  • 原理的には世界中のすべてのノードのドメイン名とIPアドレスの対応関係を知ってい なければならない
    • 事実上不可能
    • DNSの規約では変換表作成の負担を細分化して,DNSを分散データベースとすることで対応しています。
  • DNS ルートサーバー
  • DNS ポイズニングのような攻撃手法もある
P.402 DNS クライアント(リゾルバ)の名前解決要求

コンテンツサーバへの問い合わせを繰り返すのは非効率なので,通常,自組織内にキャッシュサーバを置きます。この場合,リゾルバはキャッシュサーバに問い合わせを行い,キャッシュサーバ内に該当情報がキャッシュされていれば直接回答を得ることができます。ない場合は,キャッシュサーバが組織外のコンテンツサーバに問い合わせを行い,その結果をリゾルバに回答します。また,キャッシュサーバは,同様の問い合わせの際に再利用できるよう,問い合わせで得た結果を一定期間キャッシュします。

リゾルバからキャッシュサーバに送られる問い合わせを再帰的な問合せという。"再 帰 的"とは,「再び帰ってくる」という意味で,再帰的な問合せに対しては,最終的な結果を回答する必要がある。

  • 例えばディレクトリツリーを掘るタイプのプログラムではよくやる処理
  • (F# で)競プロをやっていると意外と再帰を使う(使える)ことに気づいた
    • いわゆる関数型言語は(命令型で)ループを使うところは高階関数か再帰で処理する
    • たいてい高階関数で足りる
    • 再帰は末尾再帰など面倒ポイントがある
P.402 インターネット上の電話サービスで用いるプロトコル
  • VoIP(Voice over Internet Protocol)
  • IPネットワークで音声をやり取りするための技術
  • データの伝送にはリアルタイム性に優れたUDPをベースとしたプロトコルが使われる
    • 届かなかったらもう一度しゃべらせればいい
P.403 その他のアプリケーション層プロトコル
  • FTP:ファイルを送る。ポートは 20、21
    • セキュリティが甘いので FTP、FTPS、SFTP、SCP などがある
  • Telnet:(あまり使ったことない)
  • SSH(Secure SHell):サーバーにログインするときに使う。とにかくよく使う。
    • テキストベースの通信であるTelnetに対し,暗号化や認証技術を利用して安全に遠隔操作するためのプロトコル
  • NTP・SNTP(Network Time Protocol):時刻合わせ
  • LDAP(Lightweight Directory Access Protocol):ディレクトリサービスにアクセスするためのプロトコル
    • Windows の ActiveDirectory も LDAP を使っている
    • 社員情報をやり取りするシステム間連携で出てくる
P.404 7.7 伝送技術
P.404 誤り制御
P.404 パリティチェック
  • 最もシンプルな検査方法
  • 7 ビットのデータを送信する場合,8 ビット目に誤り検出用のパリティビットを入れてデータの整合性を検査
    • 偶数パリティ:8ビットの各ビットについて"1"の数が偶数になるようにパリティビットを挿入する
    • 奇数パリティ:上で奇数にする
  • 有限体(ガロア体)$\mathbb{F}_2$ (ビット)で考えるといってもいい。
  • 微分形式で偶数次と偶数次・偶数次と奇数の積が偶数次になり、奇数次と奇数次の積がと奇数次になるのも一種のパリティチェック。
  • cf. P.405 水平垂直パリティチェック
P.404 CRC
  • CRC:巡回冗長検査(Cyclic Redundancy Check)
  • 送信するデータに生成多項式を適用して誤り検出用の冗長データを作成し,それを付けて送信
  • 受信側は送信側と同じ生成多項式で受信データを割り,同じ結果であればデータ誤りが ないと判断
  • CRCでは複雑な演算を使ってバースト誤り も検出できる
    • バースト誤り:データ転送回線上で連続して発生するビットの誤りのこと。ノイズの混入で生じることが多い。
  • HDLC 手順が採用
P.404 ハミング符号
  • 上で紹介した動画で簡単に数学的な原理を紹介している
  • 情報ビットに対して検査ビットをつけて 2 ビットまでの誤り検出と,1 ビットの誤り自動訂正機能をもつ誤り制御方式
    • 原理的には何ビットの誤り検出・自動訂正でもできる
  • 代数幾何符号もある
    • 数学的にはもちろん難しい
    • 有限体上の(非特異な射影)代数曲線を使う
P.406 同期制御
  • 通信時に送信側と受信側でタイミングを合わせる必要がある。
  • 本の話題とは別に同期・非同期にはいろいろな話があって難しい。
  • プログラミング、特に JavaScript フロントエンド周り。
  • データベースの同期・非同期
    • 大規模サービスでの問題、READ-WRITE、マスター・スレーブ
    • ふつう読み込みに比べて書き込みは少ない
    • 場合によっては読み込みは完全に最新の情報でなくてもいい
    • 書き込みメインのデータベースと、その内容を適当なタイミングでもらってくる読み込み専用のデータベースがある:これがマスターとスレーブ
    • 参考:前にやった Twitter のシステム構成など
    • 適当な意味で完全同期していないとまずいシステムもある:銀行・金融系
      • cf. トランザクション
      • トランザクションはふつう銀行が例になるくらい、そちらの話が有名でしかもイメージしやすい

2020-09-20 課題

  • 先に進む前に録画してあるか確認しよう

進捗メモ

  • 今回は 03-02 からはじめ、03-03 の「sympy による偏導関数の実装」まで
  • 次回は「高階の偏導関数」から
プログラミング勉強会
  • 2020-09-06:線型代数、02_03 の固有ベクトルの計算その 1 まで
  • 2020-09-13:02_03 固有値・固有ベクトルの計算その 2 から 03_02 の「具体例:関数 $f(x)=3x^2+4x-5$ の $x=1$ での接線」、「sympy による接線の描画」まで
統計学・機械学習勉強会
理系のための語学・リベラルアーツ

課題

TODO

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 0,3
phi = np.linspace(0, np.pi, 101)
theta = np.linspace(0, 2 * np.pi, 151)
phi, theta = np.meshgrid(phi, theta)

r = sph_harm(m, l, theta, phi).real
x = np.abs(r) * np.sin(phi) * np.cos(theta)
y = np.abs(r) * np.sin(phi) * np.sin(theta)
z = np.abs(r) * np.cos(phi)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • シュレディンガー方程式

\begin{align} i \hbar \frac{\partial}{\partial t} \left| \psi \right\rangle = \hat{H} \left| \psi \right\rangle \end{align}

競プロ、AtCoder

素因数分解の利用オイラー関数

正の整数 $N$ が与えられたとき $1,2,\dots,N$ のうち $N$ と互いに素であるものの個数を $\phi(N)$ と表します。これをオイラー関数とよびます。

問題

正の整数 $N$ が与えられる。$1,2,\dots,N$ のうち、$N$ と互いに素であるものの個数を求めよ。

(数値例)

・$N=12$

答え: 4

$1,2,3,4,5,6,7,8,9,10,11,12$ のうち、$12$ と互いに素であるものは、$1,5,7,11$ の $4$ 個です。

オイラー関数のポイント
  • 素因数分解 $N = p_1^{e_1}p_2^{e_2} \cdots p_K^{e_K}$ に対してオイラー関数は次のように書ける。

\begin{align} \phi(N) = N (1 − 1/p_1)(1 − 1 / p_2) \cdots (1 − 1 / p_K) = N \prod_{i=1}^K \left(1 - \frac{1}{p_i} \right). \end{align}

コードメモ
1
2
3
4
5
6
7
#http://www.tohoho-web.com/python/operators.html
#切り捨て割り算 //
print(15 // 2) # 7
print(15 / 2)  # 7.5
print("-----")
print(7 // 3) # 2
print(7 / 3)  # 2.3333333333333335
1
2
3
4
5
7
7.5
-----
2
2.3333333333333335
コードの参考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def solve(n):
    # p はオイラー関数の結果をためていく変数
    p = n
    sqrt_n = n ** 0.5
    d = 2

    # いつも通り √n まで計算
    while d <= sqrt_n:
        # 割り切れるときに処理
        if n%d == 0:
            # (d-1) // d は (1 - 1/d) のこと
            p = p * (d - 1) // d
            # 互いに素な数だけ引っ張りたいので、因数に持っていたら割れるだけ割ってしまう
            while n % d == 0: n //= d
        # 一通り計算したら d を増やす
        d += 1
    # n が素数なら n > 1, True で 1 になる
    # n が合成数なら n = 1, False で 0 になる
    lst = [p, p * (n-1) // n]
    print(lst)
    return lst[n > 1]

print(solve(6)) # 2
print(solve(12)) # 4
print(solve(17)) # 16
print(solve(1000000)) # 400000
1
2
3
4
5
6
7
8
[3, 2]
2
[4, 0]
4
[17, 16]
16
[400000, 0]
400000
Project Euler も見てみよう
  • Problem3
  • GitHub の回答集
  • 中高生の数学・プログラミング学習用によかろうと思い、ちょこちょこやっている

https://projecteuler.net/problem=9

A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,

a2 + b2 = c2 For example, 32 + 42 = 9 + 16 = 25 = 52.

There exists exactly one Pythagorean triplet for which a + b + c = 1000. Find the product abc.

1
2
3
4
5
6
7
8
N = 1001
for a in range(1, N):
    for b in range(a, N):
        c = 1000 - a - b
        if a**2 + b**2 == c**2:
            print(a,b,c)

200 * 375 * 425
1
2
3
4
5
6
7
200 375 425





31875000

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
P.395 COLUMN
  • これらのコマンドはたまに使う:ifconfig, netstat, nslookup
  • 覚えなくてもいい:そういうコマンドがあることを知っているだけでも全然違う
P.396 7.5 トランスポート層のプロトコル
P.396 7.5.1 TCP と UDP
  • トランスポート層は IP を補完し、データ送信の品質・信頼性を上げる
  • プロトコルは TCP・UDP
P.396 TCP
  • IP はデータ通信の安全性を保障しないコネクションレス型通信
  • IP の補完のために送達管理・伝送管理の機能を持つコネクション型プロトコル
  • 特に HTTP や FTP のような全て確実に伝わってほしいリクエスト・レスポンスに使われる
  • 参考:一部が落ちてもいいリクエスト・レスポンス
    • 動画:一部が抜け落ちてもそれほど問題なく、かつ大容量で帯域を圧迫するので再送も控えたい
P.397 TCP でのコネクションの確立
  • 3 ウェイハンドシェイク
    • クライアント→サーバー:コネクションの確立要求、SYN(synchronize packet)
    • サーバー→クライアント:上記への ACK(acknowledgement packet)・SYN
    • クライアント→サーバー:上記への ACK
  • TCP コネクションは, あて先 IP アドレス, あて先 TCP ポート番号, 送信元 IP アドレス, 送信元 TCP ポート番号の 4 つによって識別される.
ポート・ポート番号

ポートとは、ネットワークでデータを通信するための扉のようなものだと思うとわかりやすいだろう。ポート番号はその扉の番号だ。

それぞれプログラムの種類によって、使うポート(扉)が違う。例えば、メールを送るにはこの扉、メールを受け取るにはこの扉、Webページを見てもらうのはこの扉、などと決まっているわけだ。

実際TCPやUDPで通信を行うときは、コンピュータ一台という単位ではなく「プログラム単位」つまり「プロセスやスレッド単位」で通信が行われる。そのためプロセス同士、正しく受け渡しをする必要がある。

  • プロセス・スレッドなどいきなりかなり低レイヤーの話がでてくることに注意。

このとき通信しているプロセスには「ポート番号」というものが割り振られる。プロセスやスレッドはこのポート番号を目印にして、どのアプリケーションとどのアプリケーションが通信をとっているのかを判別することになる。

IPアドレスを建物の住所に例えるなら、ポート番号は「部屋の番号は何号室か?」という例えになる。コンピュータネットワークにおいて、プロトコル、IPアドレスとポート番号はまとめると、「どのような方法」で「どこ」の「何号室」に通信をとるのか?という形にいいかえることが出来る。

通信において重要なポート番号だがポートを開くということは、特定の部屋の扉をあけはなっている状態に等しいので、サービスを提供するサーバでもないかぎり、基本的に不必要なポートは開かないように設定しておかなければならない。

  • サーバーのセキュリティなども絡むが分かる。

代表的なポート番号とプロトコル それぞれ「どの様なプロトコルがどの様なポート番号で運用されるのか?」代表的な例をあげると以下のようになる。

  • TCP 20 : FTP (データ)
  • TCP 21 : FTP (制御)
  • TCP 22 : SSH
  • TCP 23 : Telnet
  • TCP 25 : SMTP
  • UDP 53 : DNS
  • UDP 67 : DHCP(サーバ)
  • UDP 68 : DHCP(クライアント)
  • TCP 80 : HTTP
  • TCP 110 : POP3
  • UDP 123 : NTP
  • TCP 443 : HTTPS
  • WELL KNOWN PORT NUMBERS 0~1023
  • MySQL: 3306
P.397 アプリケーション間の通信
  • トランスポート層にはアプリケーション間の通信の実現という役割がある
  • 各アプリケーションはトランスポート層のヘッダにあるポート番号をみて自分宛のデータか判断する。
P.398 7.6 アプリケーション層のプロトコル
P.398 7.6.1 メール関連
P.398 メールプロトコル
  • 送信転送する SMTP (Simple Mail Transfer Protocol)
  • メールを受け取る POP3 (Post Office Protocol 3)
  • IMAP (Internet Message Access Protocol)
補足:POP と IMAP
  • (気分的には)管理する主体が違う
  • POP は単純にサーバーからメールデータを取ってくる
    • 取ってきたらサーバーからデータが消える
    • そのあとは自分で管理する
  • IMAP の説明の参考
    • 郵便にたとえると、(実際にはできませんが)郵便局から手紙は受け取らずコピーをもらってくるような形になり、手紙は郵便局が保管することになります。
    • メールはサーバに保管されますので、既読・未読・削除、フォルダの分類といった管理は、すべてサーバ上で行われます。
    • いろいろな端末でメールが見られる
  • POP と IMAP のメリット・デメリット
    • POP
      • メリット
        • PC などの端末にメールが保存される
        • 端末が許す限りメールを保存できる
        • 端末に保存されたメールはネット接続なしで見られる
      • デメリット
        • 落としてきた端末でしたメールが見られない
        • サーバーに一定期間メールを残す設定で複数端末でメールを見ることもできるが、未読・既読・削除などの状態が反映されない
    • IMAP:サーバー上でメール管理
      • メリット
        • 未読・既読などの状態が共有できる
        • サーバー上で一元管理できる。
      • デメリット
        • メールの閲覧・状態修正のためにサーバーと通信する必要がある
        • サーバーの容量の上限に達するとメールからサーバーを削除する必要がある
Gmail と IMAP
  • (何となくの理解しかないので間違っているかもしれない)
  • Web インターフェースからの Gmail 利用と Thunderbird などのアプリからの利用で事情が違う
  • POP や IMAP が関係してくるのはアプリからの利用
  • アプリを使う場合はふつう IMAP を使う
  • IMAP にしないと他の端末、もっといえば Web インターフェースからも見られなくなる(はず)
  • 会社で特定端末からしかメールを見ないなら POP でもいいかもしれない。
    • マシンが変わるとき、メールデータも引越ししないと昔のメールが掘れない
    • 会社のメールサーバー管理問題・容量問題などはかなり大変
    • 一頃「Gmail でサーバー管理問題を解決して、IT 部門が攻めの IT を提案できるようになった」みたいな記事も出ていた
    • メールが止まると直接的にビジネスに被害が出る
    • 何にせよサーバー管理は大変なので
P.398 メール受信プロトコル、メール関連のプロトコル・規格
  • 昔のプロトコルはセキュリティ関連の仕様がなかった
  • SMTP-AUTH, SMTP over TLS/SSL など
P.399 Web 関連
  • HTTP: HTTP(Hyper Text Transfer Protocol)は WebサーバとWebクライアント(ブラウザ)間でHTMLなどのWeb情報の配信 に使うプロトコル
    • セキュリティ:HTTP に SSL/TLS の認証機能や通信の暗号化を実装した HTTPS が登場
  • SOAP: XML を使ってデータ構造を記述
    • 最近あまり見かけない印象
    • XML 自体もうあまり使わない
    • 最近は JSON や GQL をよく見かける
P.401 DNS(Domain Name System)
  • TCP/IPでは,各ノードに対して一意なIPアドレスが割り当てられている
  • IPアドレスは覚えにくい
  • IP アドレスと対応する別名であるドメイン名がつけた
  • ドメインと IP を対応させるサービスが DNS
  • 原理的には世界中のすべてのノードのドメイン名とIPアドレスの対応関係を知ってい なければならない
    • 事実上不可能
    • DNSの規約では変換表作成の負担を細分化して,DNSを分散データベースとすることで対応しています。
  • DNS ルートサーバー
  • DNS ポイズニングのような攻撃手法もある
P.402 DNS クライアント(リゾルバ)の名前解決要求

コンテンツサーバへの問い合わせを繰り返すのは非効率なので,通常,自組織内にキャッシュサーバを置きます。この場合,リゾルバはキャッシュサーバに問い合わせを行い,キャッシュサーバ内に該当情報がキャッシュされていれば直接回答を得ることができます。ない場合は,キャッシュサーバが組織外のコンテンツサーバに問い合わせを行い,その結果をリゾルバに回答します。また,キャッシュサーバは,同様の問い合わせの際に再利用できるよう,問い合わせで得た結果を一定期間キャッシュします。

リゾルバからキャッシュサーバに送られる問い合わせを再帰的な問合せという。"再 帰 的"とは,「再び帰ってくる」という意味で,再帰的な問合せに対しては,最終的な結果を回答する必要がある。

  • 例えばディレクトリツリーを掘るタイプのプログラムではよくやる処理
  • (F# で)競プロをやっていると意外と再帰を使う(使える)ことに気づいた
    • いわゆる関数型言語は(命令型で)ループを使うところは高階関数か再帰で処理する
    • たいてい高階関数で足りる
    • 再帰は末尾再帰など面倒ポイントがある
P.402 インターネット上の電話サービスで用いるプロトコル
  • VoIP(Voice over Internet Protocol)
  • IPネットワークで音声をやり取りするための技術
  • データの伝送にはリアルタイム性に優れたUDPをベースとしたプロトコルが使われる
    • 届かなかったらもう一度しゃべらせればいい
P.403 その他のアプリケーション層プロトコル
  • FTP:ファイルを送る。ポートは 20、21
    • セキュリティが甘いので FTP、FTPS、SFTP、SCP などがある
  • Telnet:(あまり使ったことない)
  • SSH(Secure SHell):サーバーにログインするときに使う。とにかくよく使う。
    • テキストベースの通信であるTelnetに対し,暗号化や認証技術を利用して安全に遠隔操作するためのプロトコル
  • NTP・SNTP(Network Time Protocol):時刻合わせ
  • LDAP(Lightweight Directory Access Protocol):ディレクトリサービスにアクセスするためのプロトコル
    • Windows の ActiveDirectory も LDAP を使っている
    • 社員情報をやり取りするシステム間連携で出てくる
P.404 7.7 伝送技術
P.404 誤り制御
P.404 パリティチェック
  • 最もシンプルな検査方法
  • 7 ビットのデータを送信する場合,8 ビット目に誤り検出用のパリティビットを入れてデータの整合性を検査
    • 偶数パリティ:8ビットの各ビットについて"1"の数が偶数になるようにパリティビットを挿入する
    • 奇数パリティ:上で奇数にする
  • 有限体(ガロア体)$\mathbb{F}_2$ (ビット)で考えるといってもいい。
  • 微分形式で偶数次と偶数次・偶数次と奇数の積が偶数次になり、奇数次と奇数次の積がと奇数次になるのも一種のパリティチェック。
  • cf. P.405 水平垂直パリティチェック
P.404 CRC
  • CRC:巡回冗長検査(Cyclic Redundancy Check)
  • 送信するデータに生成多項式を適用して誤り検出用の冗長データを作成し,それを付けて送信
  • 受信側は送信側と同じ生成多項式で受信データを割り,同じ結果であればデータ誤りが ないと判断
  • CRCでは複雑な演算を使ってバースト誤り も検出できる
    • バースト誤り:データ転送回線上で連続して発生するビットの誤りのこと。ノイズの混入で生じることが多い。
  • HDLC 手順が採用
P.404 ハミング符号
  • 上で紹介した動画で簡単に数学的な原理を紹介している
  • 情報ビットに対して検査ビットをつけて 2 ビットまでの誤り検出と,1 ビットの誤り自動訂正機能をもつ誤り制御方式
    • 原理的には何ビットの誤り検出・自動訂正でもできる
  • 代数幾何符号もある
    • 数学的にはもちろん難しい
    • 有限体上の(非特異な射影)代数曲線を使う
P.406 同期制御
  • 通信時に送信側と受信側でタイミングを合わせる必要がある。
  • 本の話題とは別に同期・非同期にはいろいろな話があって難しい。
  • プログラミング、特に JavaScript フロントエンド周り。
  • データベースの同期・非同期
    • 大規模サービスでの問題、READ-WRITE、マスター・スレーブ
    • ふつう読み込みに比べて書き込みは少ない
    • 場合によっては読み込みは完全に最新の情報でなくてもいい
    • 書き込みメインのデータベースと、その内容を適当なタイミングでもらってくる読み込み専用のデータベースがある:これがマスターとスレーブ
    • 参考:前にやった Twitter のシステム構成など
    • 適当な意味で完全同期していないとまずいシステムもある:銀行・金融系
      • cf. トランザクション
      • トランザクションはふつう銀行が例になるくらい、そちらの話が有名でしかもイメージしやすい
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット
  • 耐障害性
    • 通信路を固定しないため,迂回経路が取れる。
    • パケット交換機にデータが蓄積されているため,復旧まで待てる。
  • パケット多重
    • 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる
  • 異機種間接続性
    • パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる
# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要
    • ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい

2020-09-27 課題

  • FTP: file transfer protocol
  • 先に進む前に録画してあるか確認しよう

進捗

  • 今日の進捗
    • 基礎知識編:P.370 プロトコルとサービス、ポート・ポート番号、P.397 アプリケーション間の通信、P.398 7.6 アプリケーション層のプロトコル、P.398 7.6.1 メール関連、P.398 メールプロトコル、補足:POP と IMAP、Gmail と IMAP
    • 本編:03_03 終了
  • 次回
    • 本編:03_04 はじめから

課題

TODO

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 0,4
theta = np.linspace(0, np.pi, 101)
phi = np.linspace(0, 2 * np.pi, 151)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • 3 次元極座標

\begin{align} x &= r \sin \theta \cos \phi, \ y &= r \sin \theta \sin \phi, \ z &= r \cos \phi. \end{align}

競プロ、AtCoder

6. 素因数分解を活用した考察6-2. ひねった状況でも「約数の個数」がわかる
問題

$N!$ の正の約数の個数を $1000000007$ で割ったあまりを求めよ。

$1 \le N \le 1000$

(数値例)

・$N = 3$

答え: 4

$3! = 6$ の約数は、$1, 2, 3, 6$ の $4$ 個です。

ポイント
  • $N!$ は巨大なので約数列挙では途方もない時間がかかる。
  • $N!$ を求めてからの約数列挙は非現実的。
  • 素因数分解で約数の個数を求める

    • 正の整数 $M$ が $M = p_{1}^{e_{1}} p_{2}^{e_{2}} \dots p_{K}^{e_{K}}$ と素因数分解できるとき、$M$ の約数の個数は $(e_{1} + 1)(e_{2} + 1) \dots (e_{K} + 1)$ 個
    • $N!$ を計算しなくても $N!$ の素因数分解が分かれば十分
  • n_1 = p_1^{e_1} ...

  • n_2 = p_1^{e_1} ...
  • N! = p_1^{e_1} ...
コードの参考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def is_factor_table(N):
    """[0, N] の整数が N の因数かどうかを調べる"""
    table = [True for _ in range(N+1)]
    table[0] = False
    table[1] = False
    for i in range(2, N+1):
        # いったん因数ではない判定をされたらチェック不要
        if table[i] == False:
            continue
        # i を因数に持たないなら i*j も因数に持たない
        for j in range(2, N // i):
            table[i * j] = False
    return table

def factors(N):
    table = is_factor_table(N)

    p = [] # 素因数をためるリスト
    for i in range(N+1):
        if table[i]:
            p.append(i)

    n = len(p) # 素因数の数
    cnt = [0 for _ in range(n)]
    for i in range(2, N+1):
        x = i
        j = 0
        while x > 1:
            while x % p[j]==0:
                cnt[j] += 1 # j 番目の素数で割れるうちは素因数のべきを足していく
                x //= p[j] # ループチェック用の x をどんどん小さくしていく
            j += 1

    return (n, cnt)

def solve(N):
    n, cnt = factors(N)
    ans = 1
    MOD = 1000000007
    for i in range(n):
        ans *= cnt[i] + 1 # 約数の個数計算
        ans %= MOD
    return ans

print(solve(3)) # 4
print(solve(6)) # 30
print(solve(1000)) # 972926972
1
2
3
4
30
972926972
Project Euler も見てみよう
  • Problem5
  • GitHub の回答集
  • 中高生の数学・プログラミング学習用によかろうと思い、ちょこちょこやっている

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
ポート・ポート番号

ポートとは、ネットワークでデータを通信するための扉のようなものだと思うとわかりやすいだろう。ポート番号はその扉の番号だ。

それぞれプログラムの種類によって、使うポート(扉)が違う。例えば、メールを送るにはこの扉、メールを受け取るにはこの扉、Webページを見てもらうのはこの扉、などと決まっているわけだ。

実際TCPやUDPで通信を行うときは、コンピュータ一台という単位ではなく「プログラム単位」つまり「プロセスやスレッド単位」で通信が行われる。そのためプロセス同士、正しく受け渡しをする必要がある。

  • プロセス・スレッドなどいきなりかなり低レイヤーの話がでてくることに注意。

このとき通信しているプロセスには「ポート番号」というものが割り振られる。プロセスやスレッドはこのポート番号を目印にして、どのアプリケーションとどのアプリケーションが通信をとっているのかを判別することになる。

IPアドレスを建物の住所に例えるなら、ポート番号は「部屋の番号は何号室か?」という例えになる。コンピュータネットワークにおいて、プロトコル、IPアドレスとポート番号はまとめると、「どのような方法」で「どこ」の「何号室」に通信をとるのか?という形にいいかえることが出来る。

通信において重要なポート番号だがポートを開くということは、特定の部屋の扉をあけはなっている状態に等しいので、サービスを提供するサーバでもないかぎり、基本的に不必要なポートは開かないように設定しておかなければならない。

  • サーバーのセキュリティなども絡むが分かる。

代表的なポート番号とプロトコル それぞれ「どの様なプロトコルがどの様なポート番号で運用されるのか?」代表的な例をあげると以下のようになる。

  • TCP 20 : FTP (データ)
  • TCP 21 : FTP (制御)
  • TCP 22 : SSH
  • TCP 23 : Telnet
  • TCP 25 : SMTP
  • UDP 53 : DNS
  • UDP 67 : DHCP(サーバ)
  • UDP 68 : DHCP(クライアント)
  • TCP 80 : HTTP
  • TCP 110 : POP3
  • UDP 123 : NTP
  • TCP 443 : HTTPS
  • WELL KNOWN PORT NUMBERS 0~1023
  • MySQL: 3306
P.397 アプリケーション間の通信
  • トランスポート層にはアプリケーション間の通信の実現という役割がある
  • 各アプリケーションはトランスポート層のヘッダにあるポート番号をみて自分宛のデータか判断する。
P.398 7.6 アプリケーション層のプロトコル
P.398 7.6.1 メール関連
P.398 メールプロトコル
  • 送信転送する SMTP (Simple Mail Transfer Protocol)
  • メールを受け取る POP3 (Post Office Protocol 3)
  • IMAP (Internet Message Access Protocol)
補足:POP と IMAP
  • (気分的には)管理する主体が違う
  • POP は単純にサーバーからメールデータを取ってくる
    • 取ってきたらサーバーからデータが消える
    • そのあとは自分で管理する
  • IMAP の説明の参考
    • 郵便にたとえると、(実際にはできませんが)郵便局から手紙は受け取らずコピーをもらってくるような形になり、手紙は郵便局が保管することになります。
    • メールはサーバに保管されますので、既読・未読・削除、フォルダの分類といった管理は、すべてサーバ上で行われます。
    • いろいろな端末でメールが見られる
  • POP と IMAP のメリット・デメリット
    • POP
      • メリット
        • PC などの端末にメールが保存される
        • 端末が許す限りメールを保存できる
        • 端末に保存されたメールはネット接続なしで見られる
      • デメリット
        • 落としてきた端末でしたメールが見られない
        • サーバーに一定期間メールを残す設定で複数端末でメールを見ることもできるが、未読・既読・削除などの状態が反映されない
    • IMAP:サーバー上でメール管理
      • メリット
        • 未読・既読などの状態が共有できる
        • サーバー上で一元管理できる。
      • デメリット
        • メールの閲覧・状態修正のためにサーバーと通信する必要がある
        • サーバーの容量の上限に達するとメールからサーバーを削除する必要がある
Gmail と IMAP
  • (何となくの理解しかないので間違っているかもしれない)
  • Web インターフェースからの Gmail 利用と Thunderbird などのアプリからの利用で事情が違う
  • POP や IMAP が関係してくるのはアプリからの利用
  • アプリを使う場合はふつう IMAP を使う
  • IMAP にしないと他の端末、もっといえば Web インターフェースからも見られなくなる(はず)
  • 会社で特定端末からしかメールを見ないなら POP でもいいかもしれない。
    • マシンが変わるとき、メールデータも引越ししないと昔のメールが掘れない
    • 会社のメールサーバー管理問題・容量問題などはかなり大変
    • 一頃「Gmail でサーバー管理問題を解決して、IT 部門が攻めの IT を提案できるようになった」みたいな記事も出ていた
    • メールが止まると直接的にビジネスに被害が出る
    • 何にせよサーバー管理は大変なので
P.398 メール受信プロトコル、メール関連のプロトコル・規格
  • 昔のプロトコルはセキュリティ関連の仕様がなかった
  • SMTP-AUTH, SMTP over TLS/SSL など
P.399 Web 関連
  • HTTP: HTTP(Hyper Text Transfer Protocol)は WebサーバとWebクライアント(ブラウザ)間でHTMLなどのWeb情報の配信 に使うプロトコル
    • セキュリティ:HTTP に SSL/TLS の認証機能や通信の暗号化を実装した HTTPS が登場
  • SOAP: XML を使ってデータ構造を記述
    • 最近あまり見かけない印象
    • XML 自体もうあまり使わない
    • 最近は JSON や GQL をよく見かける
P.401 DNS(Domain Name System)
  • TCP/IPでは,各ノードに対して一意なIPアドレスが割り当てられている
  • IPアドレスは覚えにくい
  • IP アドレスと対応する別名であるドメイン名がつけた
  • ドメインと IP を対応させるサービスが DNS
  • 原理的には世界中のすべてのノードのドメイン名とIPアドレスの対応関係を知ってい なければならない
    • 事実上不可能
    • DNSの規約では変換表作成の負担を細分化して,DNSを分散データベースとすることで対応しています。
  • DNS ルートサーバー
  • DNS ポイズニングのような攻撃手法もある
P.402 DNS クライアント(リゾルバ)の名前解決要求

コンテンツサーバへの問い合わせを繰り返すのは非効率なので,通常,自組織内にキャッシュサーバを置きます。この場合,リゾルバはキャッシュサーバに問い合わせを行い,キャッシュサーバ内に該当情報がキャッシュされていれば直接回答を得ることができます。ない場合は,キャッシュサーバが組織外のコンテンツサーバに問い合わせを行い,その結果をリゾルバに回答します。また,キャッシュサーバは,同様の問い合わせの際に再利用できるよう,問い合わせで得た結果を一定期間キャッシュします。

リゾルバからキャッシュサーバに送られる問い合わせを再帰的な問合せという。"再 帰 的"とは,「再び帰ってくる」という意味で,再帰的な問合せに対しては,最終的な結果を回答する必要がある。

  • 例えばディレクトリツリーを掘るタイプのプログラムではよくやる処理
  • (F* で)競プロをやっていると意外と再帰を使う(使える)ことに気づいた
    • いわゆる関数型言語は(命令型で)ループを使うところは高階関数か再帰で処理する
    • たいてい高階関数で足りる
    • 再帰は末尾再帰など面倒ポイントがある
P.402 インターネット上の電話サービスで用いるプロトコル
  • VoIP(Voice over Internet Protocol)
  • IPネットワークで音声をやり取りするための技術
  • データの伝送にはリアルタイム性に優れたUDPをベースとしたプロトコルが使われる
    • 届かなかったらもう一度しゃべらせればいい
P.403 その他のアプリケーション層プロトコル
  • FTP:ファイルを送る。ポートは 20、21
    • セキュリティが甘いので FTP、FTPS、SFTP、SCP などがある
  • Telnet:(あまり使ったことない)
  • SSH(Secure SHell):サーバーにログインするときに使う。とにかくよく使う。
    • テキストベースの通信であるTelnetに対し,暗号化や認証技術を利用して安全に遠隔操作するためのプロトコル
  • NTP・SNTP(Network Time Protocol):時刻合わせ
  • LDAP(Lightweight Directory Access Protocol):ディレクトリサービスにアクセスするためのプロトコル
    • Windows の ActiveDirectory も LDAP を使っている
    • 社員情報をやり取りするシステム間連携で出てくる
P.404 7.7 伝送技術
P.404 誤り制御
P.404 パリティチェック
  • 最もシンプルな検査方法
  • 7 ビットのデータを送信する場合,8 ビット目に誤り検出用のパリティビットを入れてデータの整合性を検査
    • 偶数パリティ:8ビットの各ビットについて"1"の数が偶数になるようにパリティビットを挿入する
    • 奇数パリティ:上で奇数にする
  • 有限体(ガロア体)$\mathbb{F}_2$ (ビット)で考えるといってもいい。
  • 微分形式で偶数次と偶数次・偶数次と奇数の積が偶数次になり、奇数次と奇数次の積がと奇数次になるのも一種のパリティチェック。
  • cf. P.405 水平垂直パリティチェック
P.404 CRC
  • CRC:巡回冗長検査(Cyclic Redundancy Check)
  • 送信するデータに生成多項式を適用して誤り検出用の冗長データを作成し,それを付けて送信
  • 受信側は送信側と同じ生成多項式で受信データを割り,同じ結果であればデータ誤りが ないと判断
  • CRCでは複雑な演算を使ってバースト誤り も検出できる
    • バースト誤り:データ転送回線上で連続して発生するビットの誤りのこと。ノイズの混入で生じることが多い。
  • HDLC 手順が採用
P.404 ハミング符号
  • 上で紹介した動画で簡単に数学的な原理を紹介している
  • 情報ビットに対して検査ビットをつけて 2 ビットまでの誤り検出と,1 ビットの誤り自動訂正機能をもつ誤り制御方式
    • 原理的には何ビットの誤り検出・自動訂正でもできる
  • 代数幾何符号もある
    • 数学的にはもちろん難しい
    • 有限体上の(非特異な射影)代数曲線を使う
P.406 同期制御
  • 通信時に送信側と受信側でタイミングを合わせる必要がある。
  • 本の話題とは別に同期・非同期にはいろいろな話があって難しい。
  • プログラミング、特に JavaScript フロントエンド周り。
  • データベースの同期・非同期
    • 大規模サービスでの問題、READ-WRITE、マスター・スレーブ
    • ふつう読み込みに比べて書き込みは少ない
    • 場合によっては読み込みは完全に最新の情報でなくてもいい
    • 書き込みメインのデータベースと、その内容を適当なタイミングでもらってくる読み込み専用のデータベースがある:これがマスターとスレーブ
    • 参考:前にやった Twitter のシステム構成など
    • 適当な意味で完全同期していないとまずいシステムもある:銀行・金融系
      • cf. トランザクション
      • トランザクションはふつう銀行が例になるくらい、そちらの話が有名でしかもイメージしやすい
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避

2020-10-04 進捗

  • 今日の進捗
    • 基礎知識編:P.406 の同期制御まで
    • 本編:03_04 はじめから、03-05 最急降下法の簡単な説明まで
  • 次回
    • 基礎知識編:P.408 7.8 交換方式から
    • 本編:03-05 最急降下法の復習

課題

TODO

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 1,1
theta = np.linspace(0, np.pi, 101)
phi = np.linspace(0, 2 * np.pi, 151)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • 拡散方程式

\begin{align} u_t = \triangle u. \end{align}

競プロ、AtCoder

6. 素因数分解を活用した考察6-3. 素数を分け合う
問題

$N$ 個の $1$ 以上の整数 $a_1,a_2,\dots,a_N$ があります. $a_1,a_2,\dots,a_N$ の値はわかりませんが, $a_1 \times a_2 \times \cdots \times a_N = P$ がわかっています. $a_1,a_2,\dots,a_N$ の最大公約数として考えられるもののうち, 最も大きいものを求めてください.

ポイント
  • 「(整数の積) = (整数)」という形の式を見たら素因数分解を考えてみる
  • $P$ を素因数分解する
    • $a_1 a_2 \cdots a_N= p_1^{e_1} p_2^{e_2} \cdots p_K^{e_K}$
    • $e_1$ 個の $p_1$
    • $e_2$ 個の $p_2$
    • ...
    • $e_K$ 個の $p_K$
  • $a_1,a_2,\cdots,a_N$ の $N$ 人で分け合う
  • $a_1,a_2,\cdots,a_N$ の最大公約数をなるべく大きくするには素数をなるべく均等に分配する
  • 注意:「各素因数ごとに独立に考えて良い」
  • まとめ
    • $P=p_1^{e_1} e_2^{p_2} \cdots p_K^{e_K}$ と素因数分解する
    • 各素因数 $p_i$ について、$e_i/N$ を計算し、あまりは切り捨てる
    • その個数だけ $p_i$ をかける
コードの参考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
def prime_factorize(p):
    # 計算結果を積む変数
    arr = []

    # 各素因数ごとに考えればいい
    # 2 だけ別に処理: 割れるだけ割っておく
    if p % 2 == 0:
        # 「べき」を積む変数を初期化
        cnt = 0
        while p % 2 == 0:
            cnt += 1
            p //= 2 # どんどん割っていく
        # 2 のべきをリストで積む
        arr.append([2, cnt])

    # 奇素数に対する処理
    q = 3
    # 素数のループの定型処理: p の平方根まで計算すればいい
    # ループ中で p 自体をどんどん小さくしていくのではじめに sqrt_p を計算してはいけない
    while q * q <= p:
        if p % q == 0:
            cnt = 0
            while p % q == 0:
                p //= q # q でどんどん割って小さくする
                cnt += 1 # 割れたらカウントアップ
            arr.append([q, cnt])
            q += 2 # 偶数は既に処理しているので偶数は飛ばしていい
        else:
            q += 2 # 偶数は既に処理しているので偶数は飛ばしていい
            continue

    # p が素数の場合の処理
    if p != 1:
        arr.append([p, 1])

    return arr

def solve(n, p):
    # n, p = map(int, input().split())
    # 計算結果を積む変数
    ans = 1

    # p = 1 は別処理
    if p == 1:
        return 1

    pr_list = prime_factorize(p)

    # a^b が p の素因数分解に含まれる
    for a, b in pr_list:
        # b は p の素因数分解のべきで, n 等分できないなら無視する
        if b >= n:
            # 最大公約数を考えるので a^b を適切な形で積む
            ans *= a ** (b // n)

    return ans

print(solve(3, 24))           # 2
print(solve(5, 1))            # 1
print(solve(1, 111))          # 111
print(solve(4, 972439611840)) # 206
1
2
3
4
2
1
111
206
1
2
3
4
2
1
111
206
1
206
Project Euler も見てみよう
  • Problem5
  • GitHub の回答集
  • 中高生の数学・プログラミング学習用によかろうと思い、ちょこちょこやっている
基礎知識
  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
[P.398 メール受信プロトコル、メール関連のプロトコル・規格]{#P398}
  • 昔のプロトコルはセキュリティ関連の仕様がなかった
  • SMTP-AUTH, SMTP over TLS/SSL など
P.399 Web 関連
  • HTTP: HTTP(Hyper Text Transfer Protocol)は WebサーバとWebクライアント(ブラウザ)間でHTMLなどのWeb情報の配信 に使うプロトコル
    • セキュリティ:HTTP に SSL/TLS の認証機能や通信の暗号化を実装した HTTPS が登場
  • SOAP: XML を使ってデータ構造を記述
    • 最近あまり見かけない印象
    • XML 自体もうあまり使わない
    • 最近は JSON や GQL をよく見かける
[P.401 DNS(Domain Name System)]{#P401_DNSDomain_Name_System}
  • TCP/IPでは,各ノードに対して一意なIPアドレスが割り当てられている
  • IPアドレスは覚えにくい
  • IP アドレスと対応する別名であるドメイン名がつけた
  • ドメインと IP を対応させるサービスが DNS
  • 原理的には世界中のすべてのノードのドメイン名とIPアドレスの対応関係を知ってい なければならない
    • 事実上不可能
    • DNSの規約では変換表作成の負担を細分化して,DNSを分散データベースとすることで対応しています。
  • DNS ルートサーバー
  • DNS ポイズニングのような攻撃手法もある
[P.402 DNS クライアント(リゾルバ)の名前解決要求]{#P402_DNS}

コンテンツサーバへの問い合わせを繰り返すのは非効率なので,通常,自組織内にキャッシュサーバを置きます。この場合,リゾルバはキャッシュサーバに問い合わせを行い,キャッシュサーバ内に該当情報がキャッシュされていれば直接回答を得ることができます。ない場合は,キャッシュサーバが組織外のコンテンツサーバに問い合わせを行い,その結果をリゾルバに回答します。また,キャッシュサーバは,同様の問い合わせの際に再利用できるよう,問い合わせで得た結果を一定期間キャッシュします。

リゾルバからキャッシュサーバに送られる問い合わせを再帰的な問合せという。"再 帰 的"とは,「再び帰ってくる」という意味で,再帰的な問合せに対しては,最終的な結果を回答する必要がある。

  • 例えばディレクトリツリーを掘るタイプのプログラムではよくやる処理
  • (F# で)競プロをやっていると意外と再帰を使う(使える)ことに気づいた
    • いわゆる関数型言語は(命令型で)ループを使うところは高階関数か再帰で処理する
    • たいてい高階関数で足りる
    • 再帰は末尾再帰など面倒ポイントがある
[P.402 インターネット上の電話サービスで用いるプロトコル]{#P402}
  • VoIP(Voice over Internet Protocol)
  • IPネットワークで音声をやり取りするための技術
  • データの伝送にはリアルタイム性に優れたUDPをベースとしたプロトコルが使われる
    • 届かなかったらもう一度しゃべらせればいい
[P.403 その他のアプリケーション層プロトコル]{#P403}
  • FTP:ファイルを送る。ポートは 20、21
    • セキュリティが甘いので FTPS、SFTP、SCP などがある
  • Telnet:(あまり使ったことない)
  • SSH(Secure SHell):サーバーにログインするときに使う。とにかくよく使う。
    • テキストベースの通信であるTelnetに対し,暗号化や認証技術を利用して安全に遠隔操作するためのプロトコル
  • NTP・SNTP(Network Time Protocol):時刻合わせ
  • LDAP(Lightweight Directory Access Protocol):ディレクトリサービスにアクセスするためのプロトコル
    • Windows の ActiveDirectory も LDAP を使っている
    • 社員情報をやり取りするシステム間連携で出てくる
[P.404 7.7 伝送技術]{#P404_77}
[P.404 誤り制御]{#P404}
[P.404 パリティチェック]{#P404-2}
  • 最もシンプルな検査方法
  • 7 ビットのデータを送信する場合,8 ビット目に誤り検出用のパリティビットを入れてデータの整合性を検査
    • 偶数パリティ:8ビットの各ビットについて"1"の数が偶数になるようにパリティビットを挿入する
    • 奇数パリティ:上で奇数にする
  • 有限体(ガロア体)$\mathbb{F}_2$ (ビット)で考えるといってもいい。
  • 微分形式で偶数次と偶数次・偶数次と奇数の積が偶数次になり、奇数次と奇数次の積がと奇数次になるのも一種のパリティチェック。
  • cf. P.405 水平垂直パリティチェック
[P.404 CRC]{#P404_CRC}
  • CRC:巡回冗長検査(Cyclic Redundancy Check)
  • 送信するデータに生成多項式を適用して誤り検出用の冗長データを作成し,それを付けて送信
  • 受信側は送信側と同じ生成多項式で受信データを割り,同じ結果であればデータ誤りが\ ないと判断
  • CRCでは複雑な演算を使ってバースト誤り も検出できる
    • バースト誤り:データ転送回線上で連続して発生するビットの誤りのこと。ノイズの混入で生じることが多い。
  • HDLC 手順が採用
[P.404 ハミング符号]{#P404-3}
  • 上で紹介した動画で簡単に数学的な原理を紹介している
  • 情報ビットに対して検査ビットをつけて 2 ビットまでの誤り検出と,1 ビットの誤り自動訂正機能をもつ誤り制御方式
    • 原理的には何ビットの誤り検出・自動訂正でもできる
  • 代数幾何符号もある
    • 数学的にはもちろん難しい
    • 有限体上の(非特異な射影)代数曲線を使う
[P.406 同期制御]{#P406}
  • 通信時に送信側と受信側でタイミングを合わせる必要がある。
  • 本の話題とは別に同期・非同期にはいろいろな話があって難しい。
  • プログラミング、特に JavaScript フロントエンド周り。
  • データベースの同期・非同期
    • 大規模サービスでの問題、READ-WRITE、マスター・スレーブ
    • ふつう読み込みに比べて書き込みは少ない
    • 場合によっては読み込みは完全に最新の情報でなくてもいい
    • 書き込みメインのデータベースと、その内容を適当なタイミングでもらってくる読み込み専用のデータベースがある:これがマスターとスレーブ
    • 参考:前にやった Twitter のシステム構成など
    • 適当な意味で完全同期していないとまずいシステムもある:銀行・金融系
      • cf. トランザクション
      • トランザクションはふつう銀行が例になるくらい、そちらの話が有名でしかもイメージしやすい
[P.408 7.8 交換方式]{#P408_78}
[P.408 パケット交換方式]{#P408}
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
[パケット通信のメリット・デメリット]{#i-10}
# [メリット]{#i-11}

耐障害性\ -- 通信路を固定しないため,迂回経路が取れる。\ -- パケット交換機にデータが蓄積されているため,復旧まで待てる。

  • パケット多重
    • 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる
  • 異機種間接続性
    • パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる
# [デメリット]{#i-12}
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
[P.408 ATM 交換方式]{#P408_ATM}
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要\ \^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
[P.408 ペイロード(payload)]{#P408_payload}
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
[P.410 輻輳]{#P410}
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情\ 報速度)
P.370 7 ネットワーク]{#P370_7}
  • 確か 7.4 から始めた気がするので 7 章はじめから
[P.370 7.1.1 OSI基本参照モデル]{#P370_711_OSI}
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
[P.370 プロトコルとサービス]{#P370}
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
[7.1.2 TCP/IPプロトコルスイート]{#712_TCPIP}
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート\ \^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
[P.372 TCP/IPの通信]{#P372_TCPIP}
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
[P.372 MAC(Media Access Control)アドレス]{#P372_MACMedia_Access_Control}
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
[P372 ポート番号]{#P372}
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
[P.373 ネットワーク間の通信]{#P373}
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
[P.374 7.2 ネットワーク接続装置と関連技術]{#P374_72}
[P.374 7.2.1 物理層の接続]{#P374_721}
[P.374 リピータ]{#P374}
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
[P.374 7.2.2 データリンク層の接続]{#P374_722}
  • 第2層
[P374 ブリッジ]{#P374-2}
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート\ に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス\ トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
[P.375 スイッチングハブ]{#P375}
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機\ 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
[P.375 ブロードキャストストリーム]{#P375-2}
  • データリンク層で動作するブリッジやスイッチングハブなどの\ LANスイッチはブロードキャストフレームを受信ポート以外\ のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
[P.376 ネットワーク層の接続]{#P376}
  • 第 3 層(レイヤ 3)
[P.376 ルータ]{#P376-2}
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
[P.376 デフォルトゲートウェイ]{#P376-3}
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト\ ゲートウェイを中継する
[P.376 ルーティング]{#P376-4}
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
[P.377 ルータの冗長構成]{#P377}
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ\ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
[P.377 レイヤ3スイッチ(L3スイッチ)]{#P377_3L3}
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
[P.378 トランスポート層以上の層の接続]{#P378}
[P.378 ゲートウェイ]{#P378-2}
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
[P.378 L4スイッチ・L7スイッチ]{#P378_L4L7}
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
[P.379 7.2.5 VLAN]{#P379_725_VLAN}
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
[P.380 データ林宗の制御とプロトコル]{#P380}
  • データリンク層:第2層

2020-10-24 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:P.408 7.8 交換方式から
      • ネットワークの話に飽きてきたのでデータベースの話をする
    • 本編:03-05 最急降下法の復習
      • メモ:あとで 2 次元の場合のグラフなどを追加する
      • 等高線が密なところは勾配が急:ここを通って最小化していく
  • 今回の進捗
    • 基礎知識編:(ネットワークを飛ばして)「P.290 物理設計」まで
    • 本編:03-05 「グラフの解説」まで

課題

TODO

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 1,2
theta = np.linspace(0, np.pi, 101)
phi = np.linspace(0, 2 * np.pi, 151)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • 波動方程式

\begin{align} u_{tt} = \triangle u. \end{align}

競プロ、AtCoder

6. 素因数分解を活用した考察6-4. 約数の構造を知る)
問題

正整数 A,B が与えられます。 A と B の正の公約数の中からいくつかを選びます。 ただし、選んだ整数の中のどの異なる 2 つの整数についても互いに素でなければなりません。 最大でいくつ選べるでしょうか。

(数値例)

・A=60

・B=72

答え:3

60 と 72 の公約数は 1, 2, 3, 4, 6, 12 の 6 個ですが、このうち 1, 3, 4 を選ぶと「どの二つも互いに素」となっています。

ポイント
  • 2 つの整数に関する問題から 1 つの整数に関する次の問題のように書き換える

正の整数 $G$ が与えられる。$G$ の約数の中から、「どの二つも互いに素となるように」いくつか選びたい。選べる個数の最大値を求めよ。

  • $G$ を素因数分解する
    • $a_1 a_2 \cdots a_N= p_1^{e_1} p_2^{e_2} \cdots p_K^{e_K}$
  • どの 2 つも互いに素になるように約数を取る = 各素因数だけ取ってくる
    • 最大公約数が 1 の数のペアが互いに素な数のペアなので、1 をいれてもいい
    • 「素因数の個数+1」が求める最大数
    • 1 を含めないといけないのが割とはまりポイントになりそう。
コードの参考
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#最大公約数の計算: 再帰的に書いた
#gcd = Greatest Common Divisor
def gcd(a,b):
    return a if b == 0 else gcd(b, a % b)

def factorize(n):
    i = 2
    res = []
    # いつものルート n までの処理
    while i*i <= n:
        while n % i == 0:
            # 割り切れる間は割り続ける
            n //= i
            # 各素因数のべきなど細分してもいいが, とりあえずリストにバンバン突っ込む
            # あとの処理を考えるならはじめから set にしてもいい
            res.append(i)
        i += 1
    # n が素数の場合の処理
    if n > 1:
        res.append(n)
    return res

def solve(a, b):
    g = gcd(a, b)
    pf = factorize(g)
    # 素因数のべきを考えずにただただ素因数をリストに突っ込んでいるので, set で素因数の個数が取れる
    return len(set(pf)) + 1

print(solve(12, 18)) # 12, 18 => 3
print(solve(420, 660)) # 420 660 => 4
print(solve(1, 2019)) # 1 2019 => 1
1
2
3
3
4
1

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、DB の話を先行してやるか?
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
P.375 スイッチングハブ
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
P.375 ブロードキャストストリーム
  • データリンク層で動作するブリッジやスイッチングハブなどの LANスイッチはブロードキャストフレームを受信ポート以外 のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
P.376 ネットワーク層の接続
  • 第 3 層(レイヤ 3)
P.376 ルータ
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
P.376 デフォルトゲートウェイ
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト ゲートウェイを中継する
P.376 ルーティング
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
P.377 ルータの冗長構成
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
P.377 レイヤ3スイッチ(L3スイッチ)
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
P.378 トランスポート層以上の層の接続
P.378 ゲートウェイ
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
P.378 L4スイッチ・L7スイッチ
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
P.379 7.2.5 VLAN
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
P.380 データリンク層の制御とプロトコル
  • データリンク層:第2層
P.380 7.3.1 メディアアクセス制御
  • 複数のデータを1つのケーブルを通して送受する場合,データの衝突(コリジョン)を回避するための制御が必要
    • これがメディアアクセス制御(Media Access Control:MAC)
コリジョン(衝突)

イーサネットや無線LANで複数の端末が送信し、データが衝突する現象を指す。旧式のイーサネット規格では、端末同士を接続するときに1組の通信路で双方向の通信を行う半二重通信のため、送信と受信を同時に行うことができない。送信と受信をその都度切り替えて行うので、端末がお互いデータを送信してしまうと衝突する可能性が高くなる。

P.380 CSMA/CD
  • CSMA/CD:Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセ ス/衝突検出)の略。
  • イーサネットで採用されている方式
    • 衝突検知方式を採用
    • イーサネット:IEEE 802.3として標準化されている LAN規格
  • CSMA/CD
    • 各ノードは伝送媒体が使用中かどうかを調べて,使用中でなければデータを送りはじめる
    • 複数のノードが同時に通信しはじめるとデータの衝突が起こる
    • 衝突を検知し,一定時間(ランダム)待った後で,再送
    • 一定の距離以上のケーブルでは衝突が検知できない
  • CSMA/CD方式の限界
    • トラフィックが増加するにつれて衝突が多くなる
    • 再送が増え,さらにトラフィックが増加する悪循環に陥る可能性がある
    • 特に伝送路の使用率が30%を超えると実用的でなくなる
P.381トークンパッシング方式
  • トークンによる送信制御を行う方式で
    • トークンバス方式
    • トークンリング方式
P.381 トークンパッシング方式
  • ネットワーク上をフリートークンと呼ばれる送信権のためのパケットが巡回する
    • フリートークンを獲得したノードだけが送信できるので衝突を避けられる
    • ふつうはコンセントレータ(集線器)でネットワ ークとノードを結ぶ
  • トークンパッシング方式を採用したLAN規格
    • 例:FDDI:Fiber Distributed Data Interface
    • FDDIは物理媒体に光ファイバを利用し,最大100Mビ ッ ト/秒の通信
  • 特徴
    • 伝送媒体上では衝突しない
    • トラフィックが増えるにつれてトークンを獲得しにくくなり,少しずつ遅延時間が増える
    • 衝突による再送制御の必要がないため伝送路の使用率に対する遅延時間の増加率はCSMA/CD方式より緩やか
P.382 TDMA 方式
  • TDM(時分割多重)
    • ネットワーク上にデータを送信する時間を割 り当てる(タイムスロット)
    • タイムスロットごとに別のデータを送って多重化する
    • TDM によるアクセス制御が TDMA
  • TDMA(Time Division Multiple Access:時分割多重アクセス)
    • CSMA/CD・トークンパッシング方式と並ぶ主要なデー タリンク技術
    • TDMA ではネットワーク(伝送路)を使える時間を細かく区切る
    • 割り当てられた時間は各ノードが独占する方式
    • TDMAはコネクション型の通信
P.382 7.3.2 無線LANのアクセス制御方式
P.382 CSMA/CA方式
  • CSMA/CA:Carrier Sense Multiple Access with Collision Avoidance、搬送波感知多重アクセス/衝突回避
  • 無線 LAN の制御方式
  • CSMA/CD との違い:「衝突検出」が「衝突回避」になった
  • 無線 LAN:物理層媒体は電波で衝突の検出は不可能だから回避する
  • 特徴
    • 送信ノードは使いたい周波数帯の使えるか確認後、必ずランダムな時間だけ待ってから送信をはじめる
      • 待ち時間をバックオフ制御時間とよぶ
    • 衝突してフレームが壊れても検出できない
      • データを受け取ったノードは ACK を返す
P.328 RTS/CTS
  • 無線 LAN の話
  • 隠れ端末問題
    • 他のノードのデータ送信を感知できないことがある
    • 通信ノード間の距離が遠い
    • ノード間に障害物がある
  • 回避のための RTS/CTS 方式
  • 無線 LAN ノード
    • データ送信前にRTS(Request ToSend:送信リクエスト)をアクセスポイントに送信
    • これを受理したアクセスポイントがCTS(Clear to Send:送信OK)を返信
      • 他のノードは CTS を傍受して自分以外の別のノードに送信権があると解釈
      • データ送信を延期
    • 無線LANノードはアクセスポイントからCTSを受信したらデータ送信開始します
    • 衝突抑制:CTSに書かれた他のノードに対する送信抑制時間を使う
  • データ送信開始前にデータ送信のネゴシエーシ ョンとして RTS/CTS 方式を使った CSMA/CA を CSMA/CA with RTS/CTS とよぶ
P.383 無線LANの動作モード
  • 無線 LAN の動作モード:図7.3.4参照
  • 2 つのモードがある
  • インフラストラクチャモード:無線LANノードがアク セスポイントを通じて相互に通信
  • アドホックモード:アクセスポイントなしに無線LANノードどうしが直接通信
P.383 COLUMN FDMA,CDMA
  • 表7.3.1:多元接続する技術グループ
    • TDMA とセット
  • FDMA
    • ある周波数帯をさらに細かい周波数帯に分割
    • 接続できる端末数を増やす技術
  • CDMA
    • 周波数も時間も分割しない
    • 符号で各端末の通信を識別・分離
    • 接続できる端末数を増やす
P.383 7.3.3 データリンク層の主なプロトコル
  • 第 2 層
P.384 ARP
  • ARP(Address Resolution Protocol):通信相手のIPアドレスからMACアドレスを取るためのプロトコル
  • ARPの動作
    • ブロードキャストで目的IPアドレスを指定したARP要求パケットをLAN全体に流す
      • ブロードキャスト:ネットワークに参加するすべての機器に同時に信号やデータを送ること
    • 各ノードは自分のIPアドレスと比較
    • 一致したノードだけARP応答パケットに自分のMACアドレスを入れて返す(ユニキャスト)
  • 参考:GARP(Gratuitous ARP)
    • 主な目的:自身に設定するIPアドレスの重複確認・ARPテ ーブルの更新
    • 目的IPアドレスに自身が使うIPアドレスを指定し,MACアドレスを問い合わせる
P.384 RARP
  • Reverse-ARP:逆アドレス解決プロトコル
    • MACアドレスからIPアドレスを取る
  • 電源オフ時にIPアドレスを保持できない(IPアドレスを保持するハードディスクをもたない)機器が電源オン時に自分のMACアドレスから自身に割り当てられているIPアドレスを知るために使う
  • RARP サーバー
    • MACアドレスとIPアドレスの対応表を持ったサーバー(RARPサーバー)が必要
P.384 PPP
  • PPP:Point to Point Protocol
    • 2 点間をポイントツーポイントでつなぐためのデータリンクプロトコル
    • WANを介して2つのノードをダイヤルアップ接続するときに使う
  • ネットワーク層(第3層)とネゴシエーションする NCP(ネットワーク制御プロトコル)とリンクネゴシエーションするLCP(リンク制御プロトコル)からなる
    • NCP:Network Control Protocol
    • LCP:Link Control Protocol
  • リンク制御やエラー処理機能を持つ
P.384 PPPoE
  • PPPoE:PPP over Ethernet
  • PPPと同等な機能をイーサネット(LAN)上で実現するプロトコル
  • PPPフレームをイーサネットフレームでカプセル化して実現
P.384 7.3.4 IEEE 802.3規格
  • メディアアクセス制御に CSMA/CD 方式を使う LAN についての標準
  • OSI基本参照モデルにおけるデータリンク層(第 2 層)と物理層(第 1 層)のプロトコルおよびサービスを規定
    • OSI 基本参照モデルでのデータリンク層を LLC 副層と MAC 副層の2つに分割
    • 物理層での LAN で使う伝送媒体や MAC 副層でのフレーム構成や衝突検出の仕組みを規定
  • ツイストケーブルの企画が表 7.3.2 にまとまっている
P.386 7.4 ネットワーク層のプロトコルと技術
  • もうやった
P.286 6.1 データベースの基礎
P.286 6.1.1 データベースの種類
  • 代表的なデータベース
    • 階層型データベース
    • 網型データベース
    • 関係データベース
  • 関係データベースが一番よく使われている
    • MySQL (MariaDB), PostgreSQL, SQL Server, Oracle
  • (疑問)いわゆる NoSQL はどれなのだろうか?
    • redis, mongoDB, memcache
P.286 階層型データベース
  • (具体的なデータベース名(製品名)を知らない)
  • 階層構造(木構造)でデータの構造を表現
  • レコードどうしが親子関係をもつ
    • ある親レコードに対する子レコードは 1 つ以上存在
    • 子レコードに対する親レコードはただ1つ
  • データの操作
    • 親レコードと子レコードを結ぶポインタをたどる
P.286 網型データベース
  • ネットワーク型データベースとも
  • 親レコードと子レコードに「多対多」の関係がある
    • 親レコードは複数の子レコードをもてる
    • 子レコードは複数の親レコードをもてる
  • データの操作
    • 親レコードと子レコードを親子組(セット)
    • 親子間や兄弟間のリンクをたどって 1 つのデータを取り出す
P.287 関係データベース
  • データの集合を平坦な2次元の表で表現:リレーショナルデータベースとも
  • 親レコード・子レコードという概念をもたない
  • レコード間を結ぶポインタやリンクがない
    • データ操作の結合でレコードを関連づける
  • 1 つの表の 1 つの行と別の表との関連づけ
    • 数学の集合概念に基礎をおく
    • 値の一致(たとえば,外部キーと主キー)による
P.288 6.1.2 データベースの設計
  • プロの技
P.288 データベースの設計プロセス
  • 「概念設計→論理設計→物理設計」の順
  • ER 図、関係モデル
P.288 概念設計
  • 所有データを調査・分析して抽象化した概念データモデルを作る
  • まずはデータのもつ意味やデータ間の関係を崩さずあるがままに表現する
  • 概念データモデルは単純にデータのもつ意味とその関係を表したモデル
  • コンピュータへの実装とは独立の、特定の DBMS に依存しないデータモデル
    • DBMS:DataBase Management System、データベース管理システム
    • E-Rモデル:EntityRelationship Model、エンティティリレーションシップモデル
      • cf.P.292, 6.1.4
    • UML のクラス図
      • cf. P.496, 9.3.4
P.288 データ分析
  • 概念設計のデータ分析
  • 洗い出しが大事
    • どのようなデータがあるのか
    • 必要なデータはなにか
  • 2 つの大きな目的
    • 異音同義語(シノニム)や同名異義語(ホモニム)の排除
    • 複数箇所に存在する同一内容データ(データ重複)の排除
  • 手法
    • データ項目を標準化
    • 正規化:データ項目間の関連を明確にする
P.289 POINT データ項目洗出しの留意点
  • 簡単なアプリ作成をしてみると気分がつかめる
    • もしくは具体的なアプリのデータベース設計に関する本を読んでみる
  • データ項目名の標準化
  • データ項目の意味の定義
    • "日付"・"年月日" の 2 つの項目をどう扱うか
    • 別物ならデータ項目を定義して本当に別の実体にする
  • データ項目のけた数や型の統一
    • 型:文字列、日付型、数値、TEXT、バイナリなどなど
  • 各データ項目の発生源や発生量の明確化
P.289 トップダウンアプローチとボトムアップアプローチ
  • データの分析手法
    • トップダウンアプローチ:最初に理想型の概念データモデルを作ってからデータ分析する
    • ボトムアップアプローチ:画面や帳票などから項目を洗い出してデータ分析した結果として現実的な概念データモデルを作る
  • 最終的なデータモデルへの要求事項
    • 適切な正規化
      • 正規化にもいくつかの段階がある
      • いろいろな状況に応じて完全な正規化をしないこともある
        • 例えばバッチ集計すると時間がかかりすぎる場合、あえて正規化を崩す
    • 業務上のデータ項目をすべて持つ
  • どちらかだけで済むことはない
    • 主に後者で組んだ上で前者の視点で見直すなど
    • 業務・状況に応じて適切な方法を使う・組み合わせる
P.289 論理設計
  • E-R 図などで表現された概念データモデルはそのままではデータベースに実装できない
  • 概念データモデルを論理データモデルに変換する
    • 階層モデル,ネットワーク(網)モデル,関係モデルの 3 つ
    • それぞれのDBMSの制約に合わせて変換
  • 関係データベース
    • 概念データモデルを基に主キーや外部キーを含めたテーブル構造を作る
    • テーブルの各列(データ項目)に設定される制約を検討
  • 処理・利用しやすいようなビュー設計も必要
    • ビュー(P.325 参照):データベースの実表のうち,利用者が必要とするものだけを利用に適した形で表として定義したもの
    • SELECT 文を呼びやすくするために名前をつけただけ
P.290 物理設計
  • 実際にデータベース内にデータ実装するときの注意
    • 論理データモデルに基づいた特定のデータベース管理システム(DBMS)でデータ量・データの利用頻度・パフォーマンス・運用を考えてデータベースの物理的構造を決める
      • データ量:初期データ量,増加度合い
      • 利用頻度:トランザクション発生頻度,トランザクション種類(検索,更新)など
      • 前に Twitter のシステムの話で紹介した事案
  • 論理設計:データベースの見かけ上の設計
  • 物理設計:実際に磁気ディスク上に記憶される形式などの具体的な設計
P.290 6.1.3 データベースの3層スキーマ
P.290 スキーマ
  • schema
  • データの性質・形式・ほかのデータとの関連などデータ定義の集合
P.290 ANSI/SPARC3層スキーマ
  • データベースの3層スキーマ
    • データを扱う立場を3つのグループに分け,それぞれに対応したデータ定義するためのモデル
  • 目的:次の2点の確立
    • 論理データ独立性:論理的なデータと利用者やアプリケーションプログラムから見たデータとの独立
    • 物理データ独立性:記憶装置との独立
  • cf. P.291 の図。
  • 外部スキーマ
    • 利用者やアプリケーションプログラムから見たデータを定義
    • 実世界が変化するとそれに合わせて概念スキーマは変わる
    • アプリケーションプログラムが影響を受けないようにするためにするためのスキーマ
    • 例:関係データベースのビュー
  • 概念スキーマ
    • 実際のデータの物理的な表現方法とは別
    • データベースの論理的構造とその内容を定義
    • 例:論理設計段階の論理データモデル
  • 内部スキーマ
    • データを記憶装置上にどのような形式や編成で記録するか、物理的内容の定義
    • 障害回復処理(リカバリ),セキュリティなども考えた実際にコンピュータに実装させる格納表現
P.291 COLUMN インメモリデータベース
  • データを直接メモリに配置してパフォーマンスを上げる
    • キャッシュとして使われることもよくある
  • DB の基本はあくまでディスクにデータを記録してメモリに読み込む
    • ディスク入出力がボトルネック
    • 前に紹介した速度表を参照すること
  • インメモリデータベースではディスク入出力がない
    • 基本の処理がメモリ上で閉じるので処理が速い
  • 最近のインメモリデータベースの傾向
    • データをカラム(列)型フォーマットでメモリに配置する列指向(カラム指向)を採用
    • 集計や分析処理などのクエリが高速化します
  • 欠点
    • 揮発性:メモリ上のデータは電源を切ると失われてしまう
    • 何かの事故が起きたらデータが(すべて)飛ぶ
    • HDD・SDD よりもメモリは高い
  • 対策
    • データを定期的にディスクに保存する機能
    • 別のスタンバイデータベースにデータの複製を取るレプリケーション機能
P.292 6.1.4 E-R図
  • 実世界にあるデータ構造をなるべくそのまま表現したい
  • データベース管理システムに依存しないデータモデルを作りたい
  • ER 図:E-Rモデルを図で表現
    • Entity-Relationship Diagram
P.292 E-R図の構成要素
  • エンティティ:データベース化の対象となる実世界を構成する実体
    • 大きく分けて 2 種類
    • 物理的実体がある:顧客、商品など
    • 物理的実体がない:顧客と購入商品の「関係」そのもの:後の例参照
    • RDB の例をいろいろ見るとわかる
  • アトリビュート:エンティティがもつその性質や特徴を表すいくつかの属性
  • 例:顧客エンティティ
    • 顧客番号,顧客名
  • 識別子:エンティティを一意に識別するための属性
    • いわゆる ID:関係データベースの表の主キー
    • 例:顧客番号
    • 内部 ID と外部(?)ID がある。
    • 内部 ID:システム内で固定の ID。よく数値を使う
    • 外部(?)ID:ログイン ID などユーザーが決める ID。
      • メールアドレスなどある時点では一意。
      • ユーザーが変更できるのでシステム内でその値を永続的に使えない
  • 関連(リレーションシップ):業務上の規則やルールなどによって発生するエンティティ間の関係
    • 顧客はいくつもの商品を注文する
  • カーディナリティ:エンティティ間の「1対1」、「1対 多 」、「 多 対 多 」といった対応関係の表現
    • 数学で基数・濃度を cardinal number というその cardinal
P.292 「多対多」の関係
  • 「多対多」の関係は,関係データベースとして実装できない
    • 「1対多」と「多対1」の関係に分解する
  • リレーションシップそれ自体を1つのエンティティとする
    • 図 6.1.8 参照
    • 識別子に顧客エンティティの識別子(顧客番号)と商品エンティティの識別子(商品番号)をもたせる
    • 顧客と注文の関係は「1対多」、注文と商品の関係は「多対1」の関係
    • このときの「注文」を連関エンティティと呼ぶ
  • 注意:リレーションシップも属性をもつ
    • 例:注文日、注文数量
      • 顧客と商品の両方が特定されてはじめて確定する概念
P.292 独立エンティティと依存エンティティ
  • エンティティ間に「1対多」の関係があるとき
  • 「多」側のエンティティは「1」側のエンティティの識別子を外部キーとしてもつ
    • 外部キーがまさに RDB の R
  • 外部キーが識別子の一部となる場合、そのエンティティは「1」側のエンティティに依存する
    • cf. P.292 図6.1.8 の注文エンティティ
    • 注文はある顧客がある商品を注文するという概念
    • 顧客番号と商品番号がないと存在できない
    • これを依存エンティティ(弱実体)と呼ぶ
  • これを独立化したければしてもいい
    • 注文番号を導入
    • 注文エンティティを図 6.1.9 のように捉える
    • 親エンティティに依存しない独立エンティティ (強実体)とみなせる
    • 「発注書に ID を振りたい」といった要望も多いはずで、よくある対応
  • 独立化させる必要がないケースの例も見てみよう
    • e-ラーニングでの受講履歴
    • 「誰がどのコースのどの単元を受講したか」
    • 特に ID を振って独立に管理したいわけではない
    • いつ何を受講してどういう結果だったか(テスト系ならどの問題にどう回答して正否はどうか)といったことは知りたい
P.294 6.2 関係データベース
P.294 6.2.1 関係データベースの特徴
  • 関係データベース:RDB(Relational DataBase)
  • 1970年 E.F.コッド博士によって提案された関係モデルをもとにしたデータベース
  • 現在,最も多く使われているデータベース
  • 一応集合論をもとにしているらしいが、集合論を知らなくても全く問題ない
  • 計算機科学の専門家は集合を勉強しないと駄目らしいという事案ではある模様
P.294 関係データベースの構造
  • 意味的にひとまとまりのデータを 2 次元の平坦な表で表す
    • 列が「あるユーザの情報」
    • 行が「ある属性の情報」:名前やメールアドレス
  • 表に格納されるデータ:単位は次の通り
    • 行(組、タプル)
    • 列(属性、アトリビュート)
  • 2 次元の平坦な表
    • 行と列が交差する 1 つのマスには 1 つの値しか入らない
      • 「1 つの値」とはいうが、JSON を叩き込むこともある
      • 参考
      • インデックスが張れず検索のパフォーマンスは厳しいので、検索したいなら JSON を張るのはやめた方がいい
      • NoSQL だと列そのものが JSON だったりもする
    • 第 1 正規形:cf. P.300 6.3.2
# 次数と基数
  • (この言葉を使った記憶がない)
  • 次数:1 組のデータを表す行を構成する列の数
  • 基数:1 つの表を構成する行の数
    • テーブルを集合とみなしたときの要素数
  • 本曰く「次数は変わることはありません」
    • テーブル定義を変えると変わる
    • 実際にテーブル定義を変えることはよくある:特に開発中は。
    • 機能追加・改修案件で追加されることもよくある
  • 1 行は 1 組のデータを表す:表に対するデータの追加・削除で基数はよく変わる
P.295 定義域(ドメイン)
  • テーブル全体を $\mathcal{T} = A \times B \times \cdots \times Z$ と書いたときの各 $A,B,\dots,Z$ をドメイン(定義域、domain)と呼ぶ
  • 数学の集合と違って $\mathcal{T}$ の中に同じ集合を含まない:つまり $\mathcal{T} = \mathbb{R}^n$ といったテーブルは考えない
  • ドメインは「属性が取り得る値の集合」
    • RDB では適当なデータ型を対応させる:日付,金額,数量,量
  • ドメインを新たなデータ型として定義すると違うデー タ項目でも同じ入力チェックや同じ出力編集ができる
P.296 6.2.2 関係データベースのキー
  • 表中の行を一意に識別するためのキー(スーパキー,候補キー,主キー)
  • 別の表を参照し関連づけるための外部キー
P.296 スーパキー
  • 表中の行を一意に特定できる属性,あるいは属性の組
    • 組について:購入履歴を知るためにはユーザーID・商品ID・購入日がわからないといけない、という程度の意味
    • かなり広い意味のようなのでたぶんそんなに使わない
  • 補足:なぜスーパ「ー」キーではないのか
P.296 候補キー
  • 行を一意に決めるための必要最小限の属性で構成されるスーパーキー
    • 一意性制約が必要
  • 何かの履歴のように複数のIDの組になることもある
    • 外部キーが入るテーブルでよくある
P.296 主キー
  • 複数存在する候補キーの中から任意に選んだ1つの候補キーを主キー(primary key)
  • 主キーに選ばれなかった残りの候補キーを代理キー(alternate key)
  • 主キー制約
    • 一意性制約
    • 実体を保証するため空値(NULL)は許さないという NOT NULL制約
P.296 外部キー
  • 関連する他の表を参照する属性あるいは属性の組
  • 2 つの表の間に「1対多」の関係がある場合
    • 「多」側の表に「1」側の表の主キーあるいは主キー以外の候補キーを参照する属性をもたせて外部キーにする
  • 参照制約:外部キーの値が外部キーで参照される表に存在することを保証
    • 参照制約があると「親テーブル」のカラムを勝手に消せなくなる
  • 複数の表を参照するなら表内に複数の外部キーを持つ
    • 外部キーの値に NOT NULL 制約がなければ NULL が許される
  • 一般に外部キーは被参照表の主キーを参照
    • UNIQUE 指 定 さ れ た候補キーを参照する場合もある
  • cf. 参照制約:P.320
P.297 COLUMN 代用のキー設定
  • 主キーが複数の属性から構成される複合キー(連結キー)でその構成属性数が多すぎると運用が面倒
  • 連番のような必ずしも積極的な意味がない属性を追加してそれを代用のキー(surrogate key)にする
    • 複合キーを構成している属性はすべて非キー属性にして代理キーにする
P.298 6.3 正規化
P.298 6.3.1 関数従属
  • 関数従属:ある属性xの値が決まると他の属性yの値が一意的に決まる関係で、$x \mapsto y$ と書く
    • 属性 $x$:独立属性(決定項)
    • 属性 $y$:従属属性(従属項)
  • 正規化:1 つの表の中の属性間にある関数従属性に着目して整理する
    • 整合性を維持しやすいデータベースが設計できる
P.298 部分関数従属
  • 関係 $x \mapsto y$ で $y$ が $x$ の真部分集合に関数従属するとき、$y$ は $x$ に部分関数従属するという
    • どこの業界の用語なのかよくわからない。情報系?
  • 部分関数従属は独立属性 $x$ が複数の属性からなるときに起こりうる関数従属
    • あまりピンとこない:P.299 に商品マスタ的な例が載っていた
  • 本の例:独立属性 $x$ が $x_1$ と $x_2$ の 2 つの属性からなるとき
    • ${x_1, x_2} \mapsto y$ が成り立ち、かつ $x_1 \mapsto y$ または $x_2 \mapsto y$ のどちらかが成り立つ
    • このとき ${x_1, x_2 }$ と $y$ の間に部分関数従属がある
  • 例:社員所属部門テーブル
    • 社員番号・部門コード・部門名があるテーブル
    • 主キー:社員番号と部門コード
    • 部門コードに対して部門名は一意に紐づく
    • このとき部門名は主キーに部分関数従属する
P.298 完全関数従属
  • 完全関数従属:関係 $x \mapsto y$ で $y$ が $x$ のどの真部分集合にも関数従属しない
  • 独立属性 $x$ が 1 つの属性かなるときは常に完全関数従属
P.299 推移的関数従属
  • 直接ではなく間接的に関数従属している関係
  • 例:社員マスタ
    • 社員番号・社員名・住所・郵便番号からなるテーブル
    • 社員番号から住所が一意に紐づく
    • 住所から郵便番号が一意に紐づく
    • 郵便番号は社員番号に推移的関数従属している
    • 念のため:住所は住所マスタなどに外出し(正規化)するべきで、こういうテーブルを作ってはいけない
    • 詳しくは次の 6.3.2 で議論される

2020-11-01 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:(ネットワークを飛ばして)「P.290 物理設計」まで
    • 本編:03-05 「グラフの解説」まで
  • 今回の進捗
    • 基礎知識編
      • 何か適当なアプリのスキーマ持ってくる
      • 「COLUMN インメモリデータベース」まで
    • 本編:03-06「定積分の例 $f(x)=x^2$」まで

課題

TODO

自分用メモ

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 1,3
theta = np.linspace(0, np.pi, 101)
phi = np.linspace(0, 2 * np.pi, 151)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • ヘルダーの不等式

\begin{align} \Vert fg \Vert_1 \leq \Vert f \Vert_p \cdot \Vert g \Vert_q, \quad p^{-1} + q^{-1} = 1. \end{align}

日々の勉強

Julia
数学英語
P.20 注意1

C) の場合を日常の文と比べてみよう。例えば犬好きの人が "A dog is a friendly animal" といった場合、現実には例外があって吠えかかる犬もいる。しかし、数学の文の場合は例外なしに成り立つと解釈する。

P.26 存在文の主語
  • (文章を文法的に解析するうえで主語・述語に注目するのが大事という話がある)
  • 文の構造を把握するために、There is 構文では形式的に there を主語として調べる
P.37 種明かしの but

実はもうこれで証明は完成している

  • 気分はわかるが、どの程度「一般的な言明(?)」なのだろうか?
P.40 2.6 冠詞はこわくない
  • ざっくりした見分け方
  • 原則として単数の可算名詞には冠詞がつく.
  • 名前のついている定理・公式は一通りに決まるので the.
    • (同じ名前の定理もいろいろあるが、文脈に応じて決まる扱いでいいのだろう.)
  • 初出か既出か?
    • 既出:the
    • 初出:前後の文脈・常識から読者にとって一通りに決まるか?
      • Yes:the
      • No:単数なら a/an, 複数なら冠詞なし
  • 冠詞と同時には名詞につかない語
  • every, each, any, some, no, another, either, neither, both, this, that, these, those, our, its, their, Cauchy's など代名詞・名詞の所有格

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、DB の話を先行してやるか?
復習
OSI基本参照モデル
  • 会社の部署と同じ気分
  • 特定層は自分のところにしか責任を持たない
  • 「他の層は他の層で専門的に管轄してね」
  • お互い全くの無関係ではないが、基本的には自分のことだけ考えていればいい。
いろいろなプロトコル
  • IP, HTTP, SMTP, POP, ARP...
  • 通信の規格
  • 状況に応じて適切なプロトコルを選ぶ
  • ヘッダ・ボディーの概念
本の記述を追いかける
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
P.375 スイッチングハブ
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
P.375 ブロードキャストストリーム
  • データリンク層で動作するブリッジやスイッチングハブなどの LANスイッチはブロードキャストフレームを受信ポート以外 のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
P.376 ネットワーク層の接続
  • 第 3 層(レイヤ 3)
P.376 ルータ
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
P.376 デフォルトゲートウェイ
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト ゲートウェイを中継する
P.376 ルーティング
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
P.377 ルータの冗長構成
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
P.377 レイヤ3スイッチ(L3スイッチ)
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
P.378 トランスポート層以上の層の接続
P.378 ゲートウェイ
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
P.378 L4スイッチ・L7スイッチ
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
P.379 7.2.5 VLAN
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
P.380 データリンク層の制御とプロトコル
  • データリンク層:第2層
P.380 7.3.1 メディアアクセス制御
  • 複数のデータを1つのケーブルを通して送受する場合,データの衝突(コリジョン)を回避するための制御が必要
    • これがメディアアクセス制御(Media Access Control:MAC)
コリジョン(衝突)

イーサネットや無線LANで複数の端末が送信し、データが衝突する現象を指す。旧式のイーサネット規格では、端末同士を接続するときに1組の通信路で双方向の通信を行う半二重通信のため、送信と受信を同時に行うことができない。送信と受信をその都度切り替えて行うので、端末がお互いデータを送信してしまうと衝突する可能性が高くなる。

P.380 CSMA/CD
  • CSMA/CD:Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセ ス/衝突検出)の略。
  • イーサネットで採用されている方式
    • 衝突検知方式を採用
    • イーサネット:IEEE 802.3として標準化されている LAN規格
  • CSMA/CD
    • 各ノードは伝送媒体が使用中かどうかを調べて,使用中でなければデータを送りはじめる
    • 複数のノードが同時に通信しはじめるとデータの衝突が起こる
    • 衝突を検知し,一定時間(ランダム)待った後で,再送
    • 一定の距離以上のケーブルでは衝突が検知できない
  • CSMA/CD方式の限界
    • トラフィックが増加するにつれて衝突が多くなる
    • 再送が増え,さらにトラフィックが増加する悪循環に陥る可能性がある
    • 特に伝送路の使用率が30%を超えると実用的でなくなる
P.381トークンパッシング方式
  • トークンによる送信制御を行う方式で
    • トークンバス方式
    • トークンリング方式
P.381 トークンパッシング方式
  • ネットワーク上をフリートークンと呼ばれる送信権のためのパケットが巡回する
    • フリートークンを獲得したノードだけが送信できるので衝突を避けられる
    • ふつうはコンセントレータ(集線器)でネットワ ークとノードを結ぶ
  • トークンパッシング方式を採用したLAN規格
    • 例:FDDI:Fiber Distributed Data Interface
    • FDDIは物理媒体に光ファイバを利用し,最大100Mビ ッ ト/秒の通信
  • 特徴
    • 伝送媒体上では衝突しない
    • トラフィックが増えるにつれてトークンを獲得しにくくなり,少しずつ遅延時間が増える
    • 衝突による再送制御の必要がないため伝送路の使用率に対する遅延時間の増加率はCSMA/CD方式より緩やか
P.382 TDMA 方式
  • TDM(時分割多重)
    • ネットワーク上にデータを送信する時間を割 り当てる(タイムスロット)
    • タイムスロットごとに別のデータを送って多重化する
    • TDM によるアクセス制御が TDMA
  • TDMA(Time Division Multiple Access:時分割多重アクセス)
    • CSMA/CD・トークンパッシング方式と並ぶ主要なデー タリンク技術
    • TDMA ではネットワーク(伝送路)を使える時間を細かく区切る
    • 割り当てられた時間は各ノードが独占する方式
    • TDMAはコネクション型の通信
P.382 7.3.2 無線LANのアクセス制御方式
P.382 CSMA/CA方式
  • CSMA/CA:Carrier Sense Multiple Access with Collision Avoidance、搬送波感知多重アクセス/衝突回避
  • 無線 LAN の制御方式
  • CSMA/CD との違い:「衝突検出」が「衝突回避」になった
  • 無線 LAN:物理層媒体は電波で衝突の検出は不可能だから回避する
  • 特徴
    • 送信ノードは使いたい周波数帯の使えるか確認後、必ずランダムな時間だけ待ってから送信をはじめる
      • 待ち時間をバックオフ制御時間とよぶ
    • 衝突してフレームが壊れても検出できない
      • データを受け取ったノードは ACK を返す
P.328 RTS/CTS
  • 無線 LAN の話
  • 隠れ端末問題
    • 他のノードのデータ送信を感知できないことがある
    • 通信ノード間の距離が遠い
    • ノード間に障害物がある
  • 回避のための RTS/CTS 方式
  • 無線 LAN ノード
    • データ送信前にRTS(Request ToSend:送信リクエスト)をアクセスポイントに送信
    • これを受理したアクセスポイントがCTS(Clear to Send:送信OK)を返信
      • 他のノードは CTS を傍受して自分以外の別のノードに送信権があると解釈
      • データ送信を延期
    • 無線LANノードはアクセスポイントからCTSを受信したらデータ送信開始します
    • 衝突抑制:CTSに書かれた他のノードに対する送信抑制時間を使う
  • データ送信開始前にデータ送信のネゴシエーシ ョンとして RTS/CTS 方式を使った CSMA/CA を CSMA/CA with RTS/CTS とよぶ
P.383 無線LANの動作モード
  • 無線 LAN の動作モード:図7.3.4参照
  • 2 つのモードがある
  • インフラストラクチャモード:無線LANノードがアク セスポイントを通じて相互に通信
  • アドホックモード:アクセスポイントなしに無線LANノードどうしが直接通信
P.383 COLUMN FDMA,CDMA
  • 表7.3.1:多元接続する技術グループ
    • TDMA とセット
  • FDMA
    • ある周波数帯をさらに細かい周波数帯に分割
    • 接続できる端末数を増やす技術
  • CDMA
    • 周波数も時間も分割しない
    • 符号で各端末の通信を識別・分離
    • 接続できる端末数を増やす
P.383 7.3.3 データリンク層の主なプロトコル
  • 第 2 層
P.384 ARP
  • ARP(Address Resolution Protocol):通信相手のIPアドレスからMACアドレスを取るためのプロトコル
  • ARPの動作
    • ブロードキャストで目的IPアドレスを指定したARP要求パケットをLAN全体に流す
      • ブロードキャスト:ネットワークに参加するすべての機器に同時に信号やデータを送ること
    • 各ノードは自分のIPアドレスと比較
    • 一致したノードだけARP応答パケットに自分のMACアドレスを入れて返す(ユニキャスト)
  • 参考:GARP(Gratuitous ARP)
    • 主な目的:自身に設定するIPアドレスの重複確認・ARPテ ーブルの更新
    • 目的IPアドレスに自身が使うIPアドレスを指定し,MACアドレスを問い合わせる
P.384 RARP
  • Reverse-ARP:逆アドレス解決プロトコル
    • MACアドレスからIPアドレスを取る
  • 電源オフ時にIPアドレスを保持できない(IPアドレスを保持するハードディスクをもたない)機器が電源オン時に自分のMACアドレスから自身に割り当てられているIPアドレスを知るために使う
  • RARP サーバー
    • MACアドレスとIPアドレスの対応表を持ったサーバー(RARPサーバー)が必要
P.384 PPP
  • PPP:Point to Point Protocol
    • 2 点間をポイントツーポイントでつなぐためのデータリンクプロトコル
    • WANを介して2つのノードをダイヤルアップ接続するときに使う
  • ネットワーク層(第3層)とネゴシエーションする NCP(ネットワーク制御プロトコル)とリンクネゴシエーションするLCP(リンク制御プロトコル)からなる
    • NCP:Network Control Protocol
    • LCP:Link Control Protocol
  • リンク制御やエラー処理機能を持つ
P.384 PPPoE
  • PPPoE:PPP over Ethernet
  • PPPと同等な機能をイーサネット(LAN)上で実現するプロトコル
  • PPPフレームをイーサネットフレームでカプセル化して実現
P.384 7.3.4 IEEE 802.3規格
  • メディアアクセス制御に CSMA/CD 方式を使う LAN についての標準
  • OSI基本参照モデルにおけるデータリンク層(第 2 層)と物理層(第 1 層)のプロトコルおよびサービスを規定
    • OSI 基本参照モデルでのデータリンク層を LLC 副層と MAC 副層の2つに分割
    • 物理層での LAN で使う伝送媒体や MAC 副層でのフレーム構成や衝突検出の仕組みを規定
  • ツイストケーブルの企画が表 7.3.2 にまとまっている
P.386 7.4 ネットワーク層のプロトコルと技術
  • もうやった
P.290 6.1.3 データベースの3層スキーマ
P.290 スキーマ
  • schema
  • データの性質・形式・ほかのデータとの関連などデータ定義の集合
P.290 ANSI/SPARC3層スキーマ
  • データベースの3層スキーマ
    • データを扱う立場を3つのグループに分け,それぞれに対応したデータ定義するためのモデル
  • 目的:次の2点の確立
    • 論理データ独立性:論理的なデータと利用者やアプリケーションプログラムから見たデータとの独立
    • 物理データ独立性:記憶装置との独立
  • cf. P.291 の図。
  • 外部スキーマ
    • 利用者やアプリケーションプログラムから見たデータを定義
    • 実世界が変化するとそれに合わせて概念スキーマは変わる
    • アプリケーションプログラムが影響を受けないようにするためにするためのスキーマ
    • 例:関係データベースのビュー
  • 概念スキーマ
    • 実際のデータの物理的な表現方法とは別
    • データベースの論理的構造とその内容を定義
    • 例:論理設計段階の論理データモデル
  • 内部スキーマ
    • データを記憶装置上にどのような形式や編成で記録するか、物理的内容の定義
    • 障害回復処理(リカバリ),セキュリティなども考えた実際にコンピュータに実装させる格納表現
P.291 COLUMN インメモリデータベース
  • データを直接メモリに配置してパフォーマンスを上げる
    • キャッシュとして使われることもよくある
  • DB の基本はあくまでディスクにデータを記録してメモリに読み込む
    • ディスク入出力がボトルネック
    • 前に紹介した速度表を参照すること
  • インメモリデータベースではディスク入出力がない
    • 基本の処理がメモリ上で閉じるので処理が速い
  • 最近のインメモリデータベースの傾向
    • データをカラム(列)型フォーマットでメモリに配置する列指向(カラム指向)を採用
    • 集計や分析処理などのクエリが高速化します
  • 欠点
    • 揮発性:メモリ上のデータは電源を切ると失われてしまう
    • 何かの事故が起きたらデータが(すべて)飛ぶ
    • HDD・SDD よりもメモリは高い
  • 対策
    • データを定期的にディスクに保存する機能
    • 別のスタンバイデータベースにデータの複製を取るレプリケーション機能
P.292 6.1.4 E-R図
  • 実世界にあるデータ構造をなるべくそのまま表現したい
  • データベース管理システムに依存しないデータモデルを作りたい
  • ER 図:E-Rモデルを図で表現
    • Entity-Relationship Diagram
P.292 E-R図の構成要素
  • エンティティ:データベース化の対象となる実世界を構成する実体
    • 大きく分けて 2 種類
    • 物理的実体がある:顧客、商品など
    • 物理的実体がない:顧客と購入商品の「関係」そのもの:後の例参照
    • RDB の例をいろいろ見るとわかる
  • アトリビュート:エンティティがもつその性質や特徴を表すいくつかの属性
  • 例:顧客エンティティ
    • 顧客番号,顧客名
  • 識別子:エンティティを一意に識別するための属性
    • いわゆる ID:関係データベースの表の主キー
    • 例:顧客番号
    • 内部 ID と外部(?)ID がある。
    • 内部 ID:システム内で固定の ID。よく数値を使う
    • 外部(?)ID:ログイン ID などユーザーが決める ID。
      • メールアドレスなどある時点では一意。
      • ユーザーが変更できるのでシステム内でその値を永続的に使えない
  • 関連(リレーションシップ):業務上の規則やルールなどによって発生するエンティティ間の関係
    • 顧客はいくつもの商品を注文する
  • カーディナリティ:エンティティ間の「1対1」、「1対 多 」、「 多 対 多 」といった対応関係の表現
    • 数学で基数・濃度を cardinal number というその cardinal
P.292 「多対多」の関係
  • 「多対多」の関係は,関係データベースとして実装できない
    • 「1対多」と「多対1」の関係に分解する
  • リレーションシップそれ自体を1つのエンティティとする
    • 図 6.1.8 参照
    • 識別子に顧客エンティティの識別子(顧客番号)と商品エンティティの識別子(商品番号)をもたせる
    • 顧客と注文の関係は「1対多」、注文と商品の関係は「多対1」の関係
    • このときの「注文」を連関エンティティと呼ぶ
  • 注意:リレーションシップも属性をもつ
    • 例:注文日、注文数量
      • 顧客と商品の両方が特定されてはじめて確定する概念
P.292 独立エンティティと依存エンティティ
  • エンティティ間に「1対多」の関係があるとき
  • 「多」側のエンティティは「1」側のエンティティの識別子を外部キーとしてもつ
    • 外部キーがまさに RDB の R
  • 外部キーが識別子の一部となる場合、そのエンティティは「1」側のエンティティに依存する
    • cf. P.292 図6.1.8 の注文エンティティ
    • 注文はある顧客がある商品を注文するという概念
    • 顧客番号と商品番号がないと存在できない
    • これを依存エンティティ(弱実体)と呼ぶ
  • これを独立化したければしてもいい
    • 注文番号を導入
    • 注文エンティティを図 6.1.9 のように捉える
    • 親エンティティに依存しない独立エンティティ (強実体)とみなせる
    • 「発注書に ID を振りたい」といった要望も多いはずで、よくある対応
  • 独立化させる必要がないケースの例も見てみよう
    • e-ラーニングでの受講履歴
    • 「誰がどのコースのどの単元を受講したか」
    • 特に ID を振って独立に管理したいわけではない
    • いつ何を受講してどういう結果だったか(テスト系ならどの問題にどう回答して正否はどうか)といったことは知りたい
P.294 6.2 関係データベース
P.294 6.2.1 関係データベースの特徴
  • 関係データベース:RDB(Relational DataBase)
  • 1970年 E.F.コッド博士によって提案された関係モデルをもとにしたデータベース
  • 現在,最も多く使われているデータベース
  • 一応集合論をもとにしているらしいが、集合論を知らなくても全く問題ない
  • 計算機科学の専門家は集合を勉強しないと駄目らしいという事案ではある模様
P.294 関係データベースの構造
  • 意味的にひとまとまりのデータを 2 次元の平坦な表で表す
    • 列が「あるユーザの情報」
    • 行が「ある属性の情報」:名前やメールアドレス
  • 表に格納されるデータ:単位は次の通り
    • 行(組、タプル)
    • 列(属性、アトリビュート)
  • 2 次元の平坦な表
    • 行と列が交差する 1 つのマスには 1 つの値しか入らない
      • 「1 つの値」とはいうが、JSON を叩き込むこともある
      • 参考
      • インデックスが張れず検索のパフォーマンスは厳しいので、検索したいなら JSON を張るのはやめた方がいい
      • NoSQL だと列そのものが JSON だったりもする
    • 第 1 正規形:cf. P.300 6.3.2
# 次数と基数
  • (この言葉を使った記憶がない)
  • 次数:1 組のデータを表す行を構成する列の数
  • 基数:1 つの表を構成する行の数
    • テーブルを集合とみなしたときの要素数
  • 本曰く「次数は変わることはありません」
    • テーブル定義を変えると変わる
    • 実際にテーブル定義を変えることはよくある:特に開発中は。
    • 機能追加・改修案件で追加されることもよくある
  • 1 行は 1 組のデータを表す:表に対するデータの追加・削除で基数はよく変わる
P.295 定義域(ドメイン)
  • テーブル全体を $\mathcal{T} = A \times B \times \cdots \times Z$ と書いたときの各 $A,B,\dots,Z$ をドメイン(定義域、domain)と呼ぶ
  • 数学の集合と違って $\mathcal{T}$ の中に同じ集合を含まない:つまり $\mathcal{T} = \mathbb{R}^n$ といったテーブルは考えない
  • ドメインは「属性が取り得る値の集合」
    • RDB では適当なデータ型を対応させる:日付,金額,数量,量
  • ドメインを新たなデータ型として定義すると違うデー タ項目でも同じ入力チェックや同じ出力編集ができる
P.296 6.2.2 関係データベースのキー
  • 表中の行を一意に識別するためのキー(スーパキー,候補キー,主キー)
  • 別の表を参照し関連づけるための外部キー
P.296 スーパキー
  • 表中の行を一意に特定できる属性,あるいは属性の組
    • 組について:購入履歴を知るためにはユーザーID・商品ID・購入日がわからないといけない、という程度の意味
    • かなり広い意味のようなのでたぶんそんなに使わない
  • 補足:なぜスーパ「ー」キーではないのか
P.296 候補キー
  • 行を一意に決めるための必要最小限の属性で構成されるスーパーキー
    • 一意性制約が必要
  • 何かの履歴のように複数のIDの組になることもある
    • 外部キーが入るテーブルでよくある
P.296 主キー
  • 複数存在する候補キーの中から任意に選んだ1つの候補キーを主キー(primary key)
  • 主キーに選ばれなかった残りの候補キーを代理キー(alternate key)
  • 主キー制約
    • 一意性制約
    • 実体を保証するため空値(NULL)は許さないという NOT NULL制約
P.296 外部キー
  • 関連する他の表を参照する属性あるいは属性の組
  • 2 つの表の間に「1対多」の関係がある場合
    • 「多」側の表に「1」側の表の主キーあるいは主キー以外の候補キーを参照する属性をもたせて外部キーにする
  • 参照制約:外部キーの値が外部キーで参照される表に存在することを保証
    • 参照制約があると「親テーブル」のカラムを勝手に消せなくなる
  • 複数の表を参照するなら表内に複数の外部キーを持つ
    • 外部キーの値に NOT NULL 制約がなければ NULL が許される
  • 一般に外部キーは被参照表の主キーを参照
    • UNIQUE 指 定 さ れ た候補キーを参照する場合もある
  • cf. 参照制約:P.320
P.297 COLUMN 代用のキー設定
  • 主キーが複数の属性から構成される複合キー(連結キー)でその構成属性数が多すぎると運用が面倒
  • 連番のような必ずしも積極的な意味がない属性を追加してそれを代用のキー(surrogate key)にする
    • 複合キーを構成している属性はすべて非キー属性にして代理キーにする
P.298 6.3 正規化
P.298 6.3.1 関数従属
  • 関数従属:ある属性xの値が決まると他の属性yの値が一意的に決まる関係で、$x \mapsto y$ と書く
    • 属性 $x$:独立属性(決定項)
    • 属性 $y$:従属属性(従属項)
  • 正規化:1 つの表の中の属性間にある関数従属性に着目して整理する
    • 整合性を維持しやすいデータベースが設計できる
P.298 部分関数従属
  • 関係 $x \mapsto y$ で $y$ が $x$ の真部分集合に関数従属するとき、$y$ は $x$ に部分関数従属するという
    • どこの業界の用語なのかよくわからない。情報系?
  • 部分関数従属は独立属性 $x$ が複数の属性からなるときに起こりうる関数従属
    • あまりピンとこない:P.299 に商品マスタ的な例が載っていた
  • 本の例:独立属性 $x$ が $x_1$ と $x_2$ の 2 つの属性からなるとき
    • ${x_1, x_2} \mapsto y$ が成り立ち、かつ $x_1 \mapsto y$ または $x_2 \mapsto y$ のどちらかが成り立つ
    • このとき ${x_1, x_2 }$ と $y$ の間に部分関数従属がある
  • 例:社員所属部門テーブル
    • 社員番号・部門コード・部門名があるテーブル
    • 主キー:社員番号と部門コード
    • 部門コードに対して部門名は一意に紐づく
    • このとき部門名は主キーに部分関数従属する
P.298 完全関数従属
  • 完全関数従属:関係 $x \mapsto y$ で $y$ が $x$ のどの真部分集合にも関数従属しない
  • 独立属性 $x$ が 1 つの属性かなるときは常に完全関数従属
P.299 推移的関数従属
  • 直接ではなく間接的に関数従属している関係
  • 例:社員マスタ
    • 社員番号・社員名・住所・郵便番号からなるテーブル
    • 社員番号から住所が一意に紐づく
    • 住所から郵便番号が一意に紐づく
    • 郵便番号は社員番号に推移的関数従属している
    • 念のため:住所は住所マスタなどに外出し(正規化)するべきで、こういうテーブルを作ってはいけない
    • 詳しくは次の 6.3.2 で議論される
P.300 6.3.2 正規化の手順
P.300 第 1 正規化
  • 非正規:くり返し部分をもつテーブルのこと
    • まずもってくり返しという言葉の理解自体がたぶん面倒
    • いろいろな例に触れてみよう
  • RDB は平坦な 2 次元の表(テーブル)
    • くり返し部分をもつ表から繰り返しを排除してスリム化したい
  • 第 1 正規化:くり返しを排除する操作
    • 第 1 正規形:第 1 正規化して得られた表のこと
    • cf. P.300 図6.3.4 の売上表
  • P.300 図 6.3.5
    • 売り上げ明細表:主キーの売上番号とくり返し部分を一意に決める商品番号が複合キー
    • 別の表に分解する
    • 外部キー:他のテーブルの主キーである売上番号を参照している
  • 分解・独立させた表に元の表の主キーをもたせる理由:結合で元の表を再現するため
P.301 第1正規形におけるデータ操作での不具合
  • 第1正規形になった表は RDB 上で定義できる
  • データの冗長性のためにデータ操作時に不整合を起こさないように注意が必要:更新時異常の概念
  • 種類は以下の通り
  • 例は本 P.300 の売り上げ表・売上明細表から
  • 第 1 正規形では以下のような更新時異常が起きる可能性がある
    • 防止策が第 2 正規化・第 3 正規化
    • どこまでどうやるかは状況次第
# P.301 修正時異常
  • 商品名「オレンジ」を「清見オレンジ」に変更したい
    • 該当する行をすべて同時に変更しなければならない
    • 1行でも変更し忘れるとデータ不整合が起きる
  • 先に対策を書いておく
    • 売上明細には商品番号だけ持たせて、商品名を削る
    • 削った代わりに商品テーブルを作る
    • (ふつう商品テーブルには単価も切り出す)
    • (単価に消費税を載せるかどうかといった問題もある)
# P.301 挿入時異常
  • 売上明細表の主キーは売上番号と商品番号の複合キ ー
  • 売上のない("売上番号"が空値)商品は登録できない
    • どうやらこの本の「売上表」は商品テーブルも兼ねているらしい
  • 先に対策
    • 商品テーブルを別に作って、そこからの参照という形にする
# P.301 削除時異常
  • (先程と同じくこの本の売り上げ表は商品テーブルも兼ねている模様)
  • 売上実績が 1 つしかない商品のの売上データを削除す ると商品データも削除される
  • 逆に商品データを残そうとすれば売上データは削除できない
  • 先に対策:商品テーブルを切り出す
P.301 第2正規化
  • 第2正規化:すべての非キー属性が各候補キーに完全関数従属である状態にする操作
    • 第1正規形の表に対して行われる操作
    • 候補キーの一部に部分関数従属する非キー属性を別の表に分解する
    • 第2正規化して得られた表を第2正規形という
  • 例:図6.3.7の売上明細表
    • 候補キーは主キーの{売上番号,商品番号}の1
    • 非キー属性である商品名と単価は主キーの一部である商品番号に部分関数従属している
      • 商品表として独立させる
  • 分解の仕方
    • 商品表の主キーを商品番号
    • 図6.3.7の上の表を再現できるようにする
      • 売上明細表(図6.3.7の下の表)には商品表の主キーを参照する外部キーとして"商品番号"を残す
# P.302 メモ
  • 第2正規化するのは候補キーが複数の属性で構成されている場合。
    • 1つの属性で構成されているのであれば部分関数従属は存在しない
    • 既に第2正規形
  • 非キー属性:どの候補キーにも属さない属性
  • 第2正規形:どの非キー属性も候補キーの真部分集合に対して関数従属しない
    • どの非キー属性も候補キーに完全関数従属
P.302 第3正規化
  • 第3正規化:非キー属性間の関数従属をなくしてどの非キー属性も候補キーに直接に関数従属している状態にする
    • 第2正規形の表に対して行われる操作
    • 候補キーに推移的関数従属している非キー属性を別の表に分解
    • 第3正規化して得られた表を第3正規形
  • 例:図6.3.8の売上表
    • これは第2正規形
    • 顧客番号→顧客名いう非キー属性間の関数従属がある
    • 顧客番号を主キーとした顧客表として独立させる
    • 売上表には顧客表の主キーを参照する外部キーとして顧客番号を残す
# P.303 メモ
  • 第3正規形:どの非キー属性も候補キーに推移的関数従属しない
    • どの非キー属性も候補キーに直接に関数従属している
  • ボイス・コッド正規形
    • 第3正規形では次の関数従属が存在する可能性がある
      • 候補キーの真部分集合から他の候補キーの真部分集合への関数従属
      • 候補キー以外の属性から候補キーの真部分集合への関数従属
    • この関係を分解したのがボイス・コッド正規形
P.303 正規化と非正規化
  • 正規形には第1正規形から第5正規形まである
    • たいていの用途ではデータベースの場合、第3正規形まで正規化されていれば十分といわれている
  • 正規化の目的はデータ操作にともなう更新時異常の発生を防ぐこと
    • 属性間の関数従属を少なくする
    • データの重複を排除する
  • 正規化のデメリット
    • 表がいくつにも分割される
    • 必要なデータを取り出すために表を結合しないといけない
    • 処理時間がかかる
  • 処理速度が必要な時や更新時異常の発生が低い場合はあえて正規化しない・正規化を解く
    • たとえば更新が少ない表は正規化しない
  • ここでの「非正規化」:アクセスパターンを考えたうえでどの表を統合するか、どの属性を表間に重複させるか考える
P.304 6.4 関係データベースの演算
P.304 6.4.1 集合演算
  • 関係データベースでの集合演算
    • 同じ型の表間での和、共通部分(積)、差
    • 直積:同じ型の表でなくてもいい
P.304 和、共通(積)、差
  • 図6.4.1の表AとBに対するそれぞれの演算結果を見る
  • 本参照
P.305 直積演算(Cartesian Product:×)
  • 社員表と部門表の直積は社員表の各行に対して部門表の行を1つずつつなぎ合わせた表
  • 直積の結果として得られる新しい表を直積表と呼ぶ
    • 次数(属性の数)は両方の表の次数を足した数
    • 位数(タプルの数)は両方の位数を掛けた数
  • 直積が役に立つイメージがない:実際には結合 (JOIN) を本当によく使う
P.305 6.4.2 関係演算
  • 関係演算:関係データベース特有の演算
    • 射影,選択,結合,商
  • 関係代数:関係演算と集合演算を合わせた代数
    • 導出表:これらの演算によって得られた表
# P.306 SQL の例
  • 先に持ってきてみた

SELECT 社員コード, 社員名, 部門表.部門コード, 部門名

FROM 社員表, 部門表

WHERE 社員表.部門コード = 部門表.部門コード

P.305 選択と射影
  • 選択演算:表から指定した行を取り出す関係演算
    • SQL でいう WHERE
  • 射影演算:表から指定した列を取り出す関係演算
    • SQL でいう SELECT column_name
P.306 結合
  • 参考:P.306 の下の表
  • 結合演算:2つの表が共通にもつ項目(結合列)で結合して新しい表をつくり出す関係演算
    • まさに正規化でわけたテーブルを結合させる演算
  • SQL:SELECT文のFROM句で複数の表名をカンマで区切って指定
    • WHERE句で結合条件を指定
  • 結合条件
    • 結合列の値を>,≧,=,≠,≦,<のいずれかの比較演算子で比較して結びつける
  • 等結合:比較演算子が「=(等号)」である結合
    • 2つの表から作成される直積表から結合列の値が等 しいものだけを取り出す
    • 得られた新たな表には結合列が重複して含まれる
    • SELECT句でどちらか一方の結合列を指定して見かけ上の重複を除く
  • 自然結合(natural join):重複する結合列を取り除く(一方のみ残す)ようにした結合
    • 結合列の列名が2つの表で同じ場合に使える
    • 参考
      • (意識的に使ったことがない)
P.307 内結合と外結合
  • 参考:P.307 の図 6.4.8
  • 内結合(INNER JOIN)
    • 結合列の値が等しい行だけを取り出す結合演算
    • 片方の表にしか存在しない行は取り出せない
    • データベース言語仕様(JIS X 3005)
  • 外結合(OUTER JOIN)
    • 片方の表にしか存在しない行も取り出せる結合
    • 結合相手の表に該当するデータが存在しない場合はNULL(空)値で結合
    • 左外結合・右外結合・完全外結合
  • 等結合
    • 結合する表をFROM句で指定、結合条件はWHERE句 で指定
  • 内結合・外結合
    • 結合する表をFROM句の中でJOINを使って指定
    • 結合条件は JOIN に続くON句で指定する
    • 参考:p309のコラム「内結合と外結合のSQL文」
P.307 左外結合(LEFT OUTER JOIN)
  • 参考:P307 図 6.4.9、P309 の SQL 文
  • 結合する左の表(社員表)が基準
  • 右の表(部門表)に存在しない行を空値(NULL)として結合
P.308 右外結合(RIGHT OUTER JOIN)
  • 参考:P.308 図 6.4.10
  • 結合する右の表(部門表)が基準
  • 左の表(社員表)に存在しない行をNULLとして結合
P.308 完全外結合(FULL OUTER JOIN)
  • 参考:P.308 図 6.4.11
  • 片方だけに存在する場合もう片方をNULLとして結合
P.308 商
  • (これ何だろうか?where の in?)
  • 参考:P.308 図 6.4.12
  • 関係R(X,Y1,Y2)とS(Y3,Y4)がある
  • S(Y3,Y4)のすべての行がR(Y1,Y2)に含まれる場合に対応するR(X)を求める演算
    • 商(R÷S)は関係Rの中から関係Sのすべての行を含む行を取り出し、そこから関係Sの項目を除く
    • 重複行も除く

2020-11-15 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:「COLUMN インメモリデータベース」まで
    • 本編:03-06「定積分の例 $f(x)=x^2$」まで
  • 今回の進捗
    • 基礎知識編:次数と基数まで
    • 本編:04-01 の冒頭

課題

TODO

自分用メモ

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 1,4
theta = np.linspace(0, np.pi, 101)
phi = np.linspace(0, 2 * np.pi, 151)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • ミンコフスキーの不等式

\begin{align} \Vert f+g \Vert_p \leq \Vert f \Vert_p + \Vert g \Vert_p, \quad p \geq 1. \end{align}

日々の勉強

Julia

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、DB の話を先行してやるか?
復習
  • 3 つのスキーマ
    • ユーザーが見るレベル
    • 正規化などをかけておいたデータベースにもっていけるレベル
    • 個々のデータベースに合わせた具体的なレベル
  • インメモリの DB:コンピューターの基本的なハードウェア構成と意味を復習しよう
本の記述を追いかける
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
P.375 スイッチングハブ
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
P.375 ブロードキャストストリーム
  • データリンク層で動作するブリッジやスイッチングハブなどの LANスイッチはブロードキャストフレームを受信ポート以外 のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
P.376 ネットワーク層の接続
  • 第 3 層(レイヤ 3)
P.376 ルータ
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
P.376 デフォルトゲートウェイ
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト ゲートウェイを中継する
P.376 ルーティング
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
P.377 ルータの冗長構成
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
P.377 レイヤ3スイッチ(L3スイッチ)
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
P.378 トランスポート層以上の層の接続
P.378 ゲートウェイ
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
P.378 L4スイッチ・L7スイッチ
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
P.379 7.2.5 VLAN
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
P.380 データリンク層の制御とプロトコル
  • データリンク層:第2層
P.380 7.3.1 メディアアクセス制御
  • 複数のデータを1つのケーブルを通して送受する場合,データの衝突(コリジョン)を回避するための制御が必要
    • これがメディアアクセス制御(Media Access Control:MAC)
コリジョン(衝突)

イーサネットや無線LANで複数の端末が送信し、データが衝突する現象を指す。旧式のイーサネット規格では、端末同士を接続するときに1組の通信路で双方向の通信を行う半二重通信のため、送信と受信を同時に行うことができない。送信と受信をその都度切り替えて行うので、端末がお互いデータを送信してしまうと衝突する可能性が高くなる。

P.380 CSMA/CD
  • CSMA/CD:Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセ ス/衝突検出)の略。
  • イーサネットで採用されている方式
    • 衝突検知方式を採用
    • イーサネット:IEEE 802.3として標準化されている LAN規格
  • CSMA/CD
    • 各ノードは伝送媒体が使用中かどうかを調べて,使用中でなければデータを送りはじめる
    • 複数のノードが同時に通信しはじめるとデータの衝突が起こる
    • 衝突を検知し,一定時間(ランダム)待った後で,再送
    • 一定の距離以上のケーブルでは衝突が検知できない
  • CSMA/CD方式の限界
    • トラフィックが増加するにつれて衝突が多くなる
    • 再送が増え,さらにトラフィックが増加する悪循環に陥る可能性がある
    • 特に伝送路の使用率が30%を超えると実用的でなくなる
P.381トークンパッシング方式
  • トークンによる送信制御を行う方式で
    • トークンバス方式
    • トークンリング方式
P.381 トークンパッシング方式
  • ネットワーク上をフリートークンと呼ばれる送信権のためのパケットが巡回する
    • フリートークンを獲得したノードだけが送信できるので衝突を避けられる
    • ふつうはコンセントレータ(集線器)でネットワ ークとノードを結ぶ
  • トークンパッシング方式を採用したLAN規格
    • 例:FDDI:Fiber Distributed Data Interface
    • FDDIは物理媒体に光ファイバを利用し,最大100Mビ ッ ト/秒の通信
  • 特徴
    • 伝送媒体上では衝突しない
    • トラフィックが増えるにつれてトークンを獲得しにくくなり,少しずつ遅延時間が増える
    • 衝突による再送制御の必要がないため伝送路の使用率に対する遅延時間の増加率はCSMA/CD方式より緩やか
P.382 TDMA 方式
  • TDM(時分割多重)
    • ネットワーク上にデータを送信する時間を割 り当てる(タイムスロット)
    • タイムスロットごとに別のデータを送って多重化する
    • TDM によるアクセス制御が TDMA
  • TDMA(Time Division Multiple Access:時分割多重アクセス)
    • CSMA/CD・トークンパッシング方式と並ぶ主要なデー タリンク技術
    • TDMA ではネットワーク(伝送路)を使える時間を細かく区切る
    • 割り当てられた時間は各ノードが独占する方式
    • TDMAはコネクション型の通信
P.382 7.3.2 無線LANのアクセス制御方式
P.382 CSMA/CA方式
  • CSMA/CA:Carrier Sense Multiple Access with Collision Avoidance、搬送波感知多重アクセス/衝突回避
  • 無線 LAN の制御方式
  • CSMA/CD との違い:「衝突検出」が「衝突回避」になった
  • 無線 LAN:物理層媒体は電波で衝突の検出は不可能だから回避する
  • 特徴
    • 送信ノードは使いたい周波数帯の使えるか確認後、必ずランダムな時間だけ待ってから送信をはじめる
      • 待ち時間をバックオフ制御時間とよぶ
    • 衝突してフレームが壊れても検出できない
      • データを受け取ったノードは ACK を返す
P.328 RTS/CTS
  • 無線 LAN の話
  • 隠れ端末問題
    • 他のノードのデータ送信を感知できないことがある
    • 通信ノード間の距離が遠い
    • ノード間に障害物がある
  • 回避のための RTS/CTS 方式
  • 無線 LAN ノード
    • データ送信前にRTS(Request ToSend:送信リクエスト)をアクセスポイントに送信
    • これを受理したアクセスポイントがCTS(Clear to Send:送信OK)を返信
      • 他のノードは CTS を傍受して自分以外の別のノードに送信権があると解釈
      • データ送信を延期
    • 無線LANノードはアクセスポイントからCTSを受信したらデータ送信開始します
    • 衝突抑制:CTSに書かれた他のノードに対する送信抑制時間を使う
  • データ送信開始前にデータ送信のネゴシエーシ ョンとして RTS/CTS 方式を使った CSMA/CA を CSMA/CA with RTS/CTS とよぶ
P.383 無線LANの動作モード
  • 無線 LAN の動作モード:図7.3.4参照
  • 2 つのモードがある
  • インフラストラクチャモード:無線LANノードがアク セスポイントを通じて相互に通信
  • アドホックモード:アクセスポイントなしに無線LANノードどうしが直接通信
P.383 COLUMN FDMA,CDMA
  • 表7.3.1:多元接続する技術グループ
    • TDMA とセット
  • FDMA
    • ある周波数帯をさらに細かい周波数帯に分割
    • 接続できる端末数を増やす技術
  • CDMA
    • 周波数も時間も分割しない
    • 符号で各端末の通信を識別・分離
    • 接続できる端末数を増やす
P.383 7.3.3 データリンク層の主なプロトコル
  • 第 2 層
P.384 ARP
  • ARP(Address Resolution Protocol):通信相手のIPアドレスからMACアドレスを取るためのプロトコル
  • ARPの動作
    • ブロードキャストで目的IPアドレスを指定したARP要求パケットをLAN全体に流す
      • ブロードキャスト:ネットワークに参加するすべての機器に同時に信号やデータを送ること
    • 各ノードは自分のIPアドレスと比較
    • 一致したノードだけARP応答パケットに自分のMACアドレスを入れて返す(ユニキャスト)
  • 参考:GARP(Gratuitous ARP)
    • 主な目的:自身に設定するIPアドレスの重複確認・ARPテ ーブルの更新
    • 目的IPアドレスに自身が使うIPアドレスを指定し,MACアドレスを問い合わせる
P.384 RARP
  • Reverse-ARP:逆アドレス解決プロトコル
    • MACアドレスからIPアドレスを取る
  • 電源オフ時にIPアドレスを保持できない(IPアドレスを保持するハードディスクをもたない)機器が電源オン時に自分のMACアドレスから自身に割り当てられているIPアドレスを知るために使う
  • RARP サーバー
    • MACアドレスとIPアドレスの対応表を持ったサーバー(RARPサーバー)が必要
P.384 PPP
  • PPP:Point to Point Protocol
    • 2 点間をポイントツーポイントでつなぐためのデータリンクプロトコル
    • WANを介して2つのノードをダイヤルアップ接続するときに使う
  • ネットワーク層(第3層)とネゴシエーションする NCP(ネットワーク制御プロトコル)とリンクネゴシエーションするLCP(リンク制御プロトコル)からなる
    • NCP:Network Control Protocol
    • LCP:Link Control Protocol
  • リンク制御やエラー処理機能を持つ
P.384 PPPoE
  • PPPoE:PPP over Ethernet
  • PPPと同等な機能をイーサネット(LAN)上で実現するプロトコル
  • PPPフレームをイーサネットフレームでカプセル化して実現
P.384 7.3.4 IEEE 802.3規格
  • メディアアクセス制御に CSMA/CD 方式を使う LAN についての標準
  • OSI基本参照モデルにおけるデータリンク層(第 2 層)と物理層(第 1 層)のプロトコルおよびサービスを規定
    • OSI 基本参照モデルでのデータリンク層を LLC 副層と MAC 副層の2つに分割
    • 物理層での LAN で使う伝送媒体や MAC 副層でのフレーム構成や衝突検出の仕組みを規定
  • ツイストケーブルの企画が表 7.3.2 にまとまっている
P.386 7.4 ネットワーク層のプロトコルと技術
  • もうやった
P.290 6.1.3 データベースの3層スキーマ
P.290 スキーマ
  • schema
  • データの性質・形式・ほかのデータとの関連などデータ定義の集合
P.290 ANSI/SPARC3層スキーマ
  • データベースの3層スキーマ
    • データを扱う立場を3つのグループに分け,それぞれに対応したデータ定義するためのモデル
  • 目的:次の2点の確立
    • 論理データ独立性:論理的なデータと利用者やアプリケーションプログラムから見たデータとの独立
    • 物理データ独立性:記憶装置との独立
  • cf. P.291 の図。
  • 外部スキーマ
    • 利用者やアプリケーションプログラムから見たデータを定義
    • 実世界が変化するとそれに合わせて概念スキーマは変わる
    • アプリケーションプログラムが影響を受けないようにするためにするためのスキーマ
    • 例:関係データベースのビュー
  • 概念スキーマ
    • 実際のデータの物理的な表現方法とは別
    • データベースの論理的構造とその内容を定義
    • 例:論理設計段階の論理データモデル
  • 内部スキーマ
    • データを記憶装置上にどのような形式や編成で記録するか、物理的内容の定義
    • 障害回復処理(リカバリ),セキュリティなども考えた実際にコンピュータに実装させる格納表現
P.292 6.1.4 E-R図
  • 実世界にあるデータ構造をなるべくそのまま表現したい
  • データベース管理システムに依存しないデータモデルを作りたい
  • ER 図:E-Rモデルを図で表現
    • Entity-Relationship Diagram
P.292 E-R図の構成要素
  • エンティティ:データベース化の対象となる実世界を構成する実体
    • 大きく分けて 2 種類
    • 物理的実体がある:顧客、商品など
    • 物理的実体がない:顧客と購入商品の「関係」そのもの:後の例参照
    • RDB の例をいろいろ見るとわかる
  • アトリビュート:エンティティがもつその性質や特徴を表すいくつかの属性
  • 例:顧客エンティティ
    • 顧客番号,顧客名
  • 識別子:エンティティを一意に識別するための属性
    • いわゆる ID:関係データベースの表の主キー
    • 例:顧客番号
    • 内部 ID と外部(?)ID がある。
    • 内部 ID:システム内で固定の ID。よく数値を使う
    • 外部(?)ID:ログイン ID などユーザーが決める ID。
      • メールアドレスなどある時点では一意。
      • ユーザーが変更できるのでシステム内でその値を永続的に使えない
  • 関連(リレーションシップ):業務上の規則やルールなどによって発生するエンティティ間の関係
    • 顧客はいくつもの商品を注文する
  • カーディナリティ:エンティティ間の「1対1」、「1対 多 」、「 多 対 多 」といった対応関係の表現
    • 数学で基数・濃度を cardinal number というその cardinal
P.292 「多対多」の関係
  • 「多対多」の関係は,関係データベースとして実装できない
    • 「1対多」と「多対1」の関係に分解する
  • リレーションシップそれ自体を1つのエンティティとする
    • 図 6.1.8 参照
    • 識別子に顧客エンティティの識別子(顧客番号)と商品エンティティの識別子(商品番号)をもたせる
    • 顧客と注文の関係は「1対多」、注文と商品の関係は「多対1」の関係
    • このときの「注文」を連関エンティティと呼ぶ
  • 注意:リレーションシップも属性をもつ
    • 例:注文日、注文数量
      • 顧客と商品の両方が特定されてはじめて確定する概念
P.292 独立エンティティと依存エンティティ
  • エンティティ間に「1対多」の関係があるとき
  • 「多」側のエンティティは「1」側のエンティティの識別子を外部キーとしてもつ
    • 外部キーがまさに RDB の R
  • 外部キーが識別子の一部となる場合、そのエンティティは「1」側のエンティティに依存する
    • cf. P.292 図6.1.8 の注文エンティティ
    • 注文はある顧客がある商品を注文するという概念
    • 顧客番号と商品番号がないと存在できない
    • これを依存エンティティ(弱実体)と呼ぶ
  • これを独立化したければしてもいい
    • 注文番号を導入
    • 注文エンティティを図 6.1.9 のように捉える
    • 親エンティティに依存しない独立エンティティ (強実体)とみなせる
    • 「発注書に ID を振りたい」といった要望も多いはずで、よくある対応
  • 独立化させる必要がないケースの例も見てみよう
    • e-ラーニングでの受講履歴
    • 「誰がどのコースのどの単元を受講したか」
    • 特に ID を振って独立に管理したいわけではない
    • いつ何を受講してどういう結果だったか(テスト系ならどの問題にどう回答して正否はどうか)といったことは知りたい
P.294 6.2 関係データベース
P.294 6.2.1 関係データベースの特徴
  • 関係データベース:RDB(Relational DataBase)
  • 1970年 E.F.コッド博士によって提案された関係モデルをもとにしたデータベース
  • 現在,最も多く使われているデータベース
  • 一応集合論をもとにしているらしいが、集合論を知らなくても全く問題ない
  • 計算機科学の専門家は集合を勉強しないと駄目らしいという事案ではある模様
P.294 関係データベースの構造
  • 意味的にひとまとまりのデータを 2 次元の平坦な表で表す
    • 列が「あるユーザの情報」
    • 行が「ある属性の情報」:名前やメールアドレス
  • 表に格納されるデータ:単位は次の通り
    • 行(組、タプル)
    • 列(属性、アトリビュート)
  • 2 次元の平坦な表
    • 行と列が交差する 1 つのマスには 1 つの値しか入らない
      • 「1 つの値」とはいうが、JSON を叩き込むこともある
      • 参考
      • インデックスが張れず検索のパフォーマンスは厳しいので、検索したいなら JSON を張るのはやめた方がいい
      • NoSQL だと列そのものが JSON だったりもする
    • 第 1 正規形:cf. P.300 6.3.2
# 次数と基数
  • (この言葉を使った記憶がない)
  • 次数:1 組のデータを表す行を構成する列の数
  • 基数:1 つの表を構成する行の数
    • テーブルを集合とみなしたときの要素数
  • 本曰く「次数は変わることはありません」
    • テーブル定義を変えると変わる
    • 実際にテーブル定義を変えることはよくある:特に開発中は。
    • 機能追加・改修案件で追加されることもよくある
  • 1 行は 1 組のデータを表す:表に対するデータの追加・削除で基数はよく変わる
P.295 定義域(ドメイン)
  • テーブル全体を $\mathcal{T} = A \times B \times \cdots \times Z$ と書いたときの各 $A,B,\dots,Z$ をドメイン(定義域、domain)と呼ぶ
  • 数学の集合と違って $\mathcal{T}$ の中に同じ集合を含まない:つまり $\mathcal{T} = \mathbb{R}^n$ といったテーブルは考えない
  • ドメインは「属性が取り得る値の集合」
    • RDB では適当なデータ型を対応させる:日付,金額,数量,量
  • ドメインを新たなデータ型として定義すると違うデー タ項目でも同じ入力チェックや同じ出力編集ができる
P.296 6.2.2 関係データベースのキー
  • 表中の行を一意に識別するためのキー(スーパキー,候補キー,主キー)
  • 別の表を参照し関連づけるための外部キー
P.296 スーパキー
  • 表中の行を一意に特定できる属性,あるいは属性の組
    • 組について:購入履歴を知るためにはユーザーID・商品ID・購入日がわからないといけない、という程度の意味
    • かなり広い意味のようなのでたぶんそんなに使わない
  • 補足:なぜスーパ「ー」キーではないのか
P.296 候補キー
  • 行を一意に決めるための必要最小限の属性で構成されるスーパーキー
    • 一意性制約が必要
  • 何かの履歴のように複数のIDの組になることもある
    • 外部キーが入るテーブルでよくある
P.296 主キー
  • 複数存在する候補キーの中から任意に選んだ1つの候補キーを主キー(primary key)
  • 主キーに選ばれなかった残りの候補キーを代理キー(alternate key)
  • 主キー制約
    • 一意性制約
    • 実体を保証するため空値(NULL)は許さないという NOT NULL制約
P.296 外部キー
  • 関連する他の表を参照する属性あるいは属性の組
  • 2 つの表の間に「1対多」の関係がある場合
    • 「多」側の表に「1」側の表の主キーあるいは主キー以外の候補キーを参照する属性をもたせて外部キーにする
  • 参照制約:外部キーの値が外部キーで参照される表に存在することを保証
    • 参照制約があると「親テーブル」のカラムを勝手に消せなくなる
  • 複数の表を参照するなら表内に複数の外部キーを持つ
    • 外部キーの値に NOT NULL 制約がなければ NULL が許される
  • 一般に外部キーは被参照表の主キーを参照
    • UNIQUE 指 定 さ れ た候補キーを参照する場合もある
  • cf. 参照制約:P.320
P.297 COLUMN 代用のキー設定
  • 主キーが複数の属性から構成される複合キー(連結キー)でその構成属性数が多すぎると運用が面倒
  • 連番のような必ずしも積極的な意味がない属性を追加してそれを代用のキー(surrogate key)にする
    • 複合キーを構成している属性はすべて非キー属性にして代理キーにする
P.298 6.3 正規化
P.298 6.3.1 関数従属
  • 関数従属:ある属性xの値が決まると他の属性yの値が一意的に決まる関係で、$x \mapsto y$ と書く
    • 属性 $x$:独立属性(決定項)
    • 属性 $y$:従属属性(従属項)
  • 正規化:1 つの表の中の属性間にある関数従属性に着目して整理する
    • 整合性を維持しやすいデータベースが設計できる
P.298 部分関数従属
  • 関係 $x \mapsto y$ で $y$ が $x$ の真部分集合に関数従属するとき、$y$ は $x$ に部分関数従属するという
    • どこの業界の用語なのかよくわからない。情報系?
  • 部分関数従属は独立属性 $x$ が複数の属性からなるときに起こりうる関数従属
    • あまりピンとこない:P.299 に商品マスタ的な例が載っていた
  • 本の例:独立属性 $x$ が $x_1$ と $x_2$ の 2 つの属性からなるとき
    • ${x_1, x_2} \mapsto y$ が成り立ち、かつ $x_1 \mapsto y$ または $x_2 \mapsto y$ のどちらかが成り立つ
    • このとき ${x_1, x_2 }$ と $y$ の間に部分関数従属がある
  • 例:社員所属部門テーブル
    • 社員番号・部門コード・部門名があるテーブル
    • 主キー:社員番号と部門コード
    • 部門コードに対して部門名は一意に紐づく
    • このとき部門名は主キーに部分関数従属する
P.298 完全関数従属
  • 完全関数従属:関係 $x \mapsto y$ で $y$ が $x$ のどの真部分集合にも関数従属しない
  • 独立属性 $x$ が 1 つの属性かなるときは常に完全関数従属
P.299 推移的関数従属
  • 直接ではなく間接的に関数従属している関係
  • 例:社員マスタ
    • 社員番号・社員名・住所・郵便番号からなるテーブル
    • 社員番号から住所が一意に紐づく
    • 住所から郵便番号が一意に紐づく
    • 郵便番号は社員番号に推移的関数従属している
    • 念のため:住所は住所マスタなどに外出し(正規化)するべきで、こういうテーブルを作ってはいけない
    • 詳しくは次の 6.3.2 で議論される
P.300 6.3.2 正規化の手順
P.300 第 1 正規化
  • 非正規:くり返し部分をもつテーブルのこと
    • まずもってくり返しという言葉の理解自体がたぶん面倒
    • いろいろな例に触れてみよう
  • RDB は平坦な 2 次元の表(テーブル)
    • くり返し部分をもつ表から繰り返しを排除してスリム化したい
  • 第 1 正規化:くり返しを排除する操作
    • 第 1 正規形:第 1 正規化して得られた表のこと
    • cf. P.300 図6.3.4 の売上表
  • P.300 図 6.3.5
    • 売り上げ明細表:主キーの売上番号とくり返し部分を一意に決める商品番号が複合キー
    • 別の表に分解する
    • 外部キー:他のテーブルの主キーである売上番号を参照している
  • 分解・独立させた表に元の表の主キーをもたせる理由:結合で元の表を再現するため
P.301 第1正規形におけるデータ操作での不具合
  • 第1正規形になった表は RDB 上で定義できる
  • データの冗長性のためにデータ操作時に不整合を起こさないように注意が必要:更新時異常の概念
  • 種類は以下の通り
  • 例は本 P.300 の売り上げ表・売上明細表から
  • 第 1 正規形では以下のような更新時異常が起きる可能性がある
    • 防止策が第 2 正規化・第 3 正規化
    • どこまでどうやるかは状況次第
# P.301 修正時異常
  • 商品名「オレンジ」を「清見オレンジ」に変更したい
    • 該当する行をすべて同時に変更しなければならない
    • 1行でも変更し忘れるとデータ不整合が起きる
  • 先に対策を書いておく
    • 売上明細には商品番号だけ持たせて、商品名を削る
    • 削った代わりに商品テーブルを作る
    • (ふつう商品テーブルには単価も切り出す)
    • (単価に消費税を載せるかどうかといった問題もある)
# P.301 挿入時異常
  • 売上明細表の主キーは売上番号と商品番号の複合キ ー
  • 売上のない("売上番号"が空値)商品は登録できない
    • どうやらこの本の「売上表」は商品テーブルも兼ねているらしい
  • 先に対策
    • 商品テーブルを別に作って、そこからの参照という形にする
# P.301 削除時異常
  • (先程と同じくこの本の売り上げ表は商品テーブルも兼ねている模様)
  • 売上実績が 1 つしかない商品のの売上データを削除す ると商品データも削除される
  • 逆に商品データを残そうとすれば売上データは削除できない
  • 先に対策:商品テーブルを切り出す
P.301 第2正規化
  • 第2正規化:すべての非キー属性が各候補キーに完全関数従属である状態にする操作
    • 第1正規形の表に対して行われる操作
    • 候補キーの一部に部分関数従属する非キー属性を別の表に分解する
    • 第2正規化して得られた表を第2正規形という
  • 例:図6.3.7の売上明細表
    • 候補キーは主キーの{売上番号,商品番号}の1
    • 非キー属性である商品名と単価は主キーの一部である商品番号に部分関数従属している
      • 商品表として独立させる
  • 分解の仕方
    • 商品表の主キーを商品番号
    • 図6.3.7の上の表を再現できるようにする
      • 売上明細表(図6.3.7の下の表)には商品表の主キーを参照する外部キーとして"商品番号"を残す
# P.302 メモ
  • 第2正規化するのは候補キーが複数の属性で構成されている場合。
    • 1つの属性で構成されているのであれば部分関数従属は存在しない
    • 既に第2正規形
  • 非キー属性:どの候補キーにも属さない属性
  • 第2正規形:どの非キー属性も候補キーの真部分集合に対して関数従属しない
    • どの非キー属性も候補キーに完全関数従属
P.302 第3正規化
  • 第3正規化:非キー属性間の関数従属をなくしてどの非キー属性も候補キーに直接に関数従属している状態にする
    • 第2正規形の表に対して行われる操作
    • 候補キーに推移的関数従属している非キー属性を別の表に分解
    • 第3正規化して得られた表を第3正規形
  • 例:図6.3.8の売上表
    • これは第2正規形
    • 顧客番号→顧客名いう非キー属性間の関数従属がある
    • 顧客番号を主キーとした顧客表として独立させる
    • 売上表には顧客表の主キーを参照する外部キーとして顧客番号を残す
# P.303 メモ
  • 第3正規形:どの非キー属性も候補キーに推移的関数従属しない
    • どの非キー属性も候補キーに直接に関数従属している
  • ボイス・コッド正規形
    • 第3正規形では次の関数従属が存在する可能性がある
      • 候補キーの真部分集合から他の候補キーの真部分集合への関数従属
      • 候補キー以外の属性から候補キーの真部分集合への関数従属
    • この関係を分解したのがボイス・コッド正規形
P.303 正規化と非正規化
  • 正規形には第1正規形から第5正規形まである
    • たいていの用途ではデータベースの場合、第3正規形まで正規化されていれば十分といわれている
  • 正規化の目的はデータ操作にともなう更新時異常の発生を防ぐこと
    • 属性間の関数従属を少なくする
    • データの重複を排除する
  • 正規化のデメリット
    • 表がいくつにも分割される
    • 必要なデータを取り出すために表を結合しないといけない
    • 処理時間がかかる
  • 処理速度が必要な時や更新時異常の発生が低い場合はあえて正規化しない・正規化を解く
    • たとえば更新が少ない表は正規化しない
  • ここでの「非正規化」:アクセスパターンを考えたうえでどの表を統合するか、どの属性を表間に重複させるか考える
P.304 6.4 関係データベースの演算
P.304 6.4.1 集合演算
  • 関係データベースでの集合演算
    • 同じ型の表間での和、共通部分(積)、差
    • 直積:同じ型の表でなくてもいい
P.304 和、共通(積)、差
  • 図6.4.1の表AとBに対するそれぞれの演算結果を見る
  • 本参照
P.305 直積演算(Cartesian Product:×)
  • 社員表と部門表の直積は社員表の各行に対して部門表の行を1つずつつなぎ合わせた表
  • 直積の結果として得られる新しい表を直積表と呼ぶ
    • 次数(属性の数)は両方の表の次数を足した数
    • 位数(タプルの数)は両方の位数を掛けた数
  • 直積が役に立つイメージがない:実際には結合 (JOIN) を本当によく使う
P.305 6.4.2 関係演算
  • 関係演算:関係データベース特有の演算
    • 射影,選択,結合,商
  • 関係代数:関係演算と集合演算を合わせた代数
    • 導出表:これらの演算によって得られた表
# P.306 SQL の例
  • 先に持ってきてみた

SELECT 社員コード, 社員名, 部門表.部門コード, 部門名

FROM 社員表, 部門表

WHERE 社員表.部門コード = 部門表.部門コード

P.305 選択と射影
  • 選択演算:表から指定した行を取り出す関係演算
    • SQL でいう WHERE
  • 射影演算:表から指定した列を取り出す関係演算
    • SQL でいう SELECT column_name
P.306 結合
  • 参考:P.306 の下の表
  • 結合演算:2つの表が共通にもつ項目(結合列)で結合して新しい表をつくり出す関係演算
    • まさに正規化でわけたテーブルを結合させる演算
  • SQL:SELECT文のFROM句で複数の表名をカンマで区切って指定
    • WHERE句で結合条件を指定
  • 結合条件
    • 結合列の値を>,≧,=,≠,≦,<のいずれかの比較演算子で比較して結びつける
  • 等結合:比較演算子が「=(等号)」である結合
    • 2つの表から作成される直積表から結合列の値が等 しいものだけを取り出す
    • 得られた新たな表には結合列が重複して含まれる
    • SELECT句でどちらか一方の結合列を指定して見かけ上の重複を除く
  • 自然結合(natural join):重複する結合列を取り除く(一方のみ残す)ようにした結合
    • 結合列の列名が2つの表で同じ場合に使える
    • 参考
      • (意識的に使ったことがない)
P.307 内結合と外結合
  • 参考:P.307 の図 6.4.8
  • 内結合(INNER JOIN)
    • 結合列の値が等しい行だけを取り出す結合演算
    • 片方の表にしか存在しない行は取り出せない
    • データベース言語仕様(JIS X 3005)
  • 外結合(OUTER JOIN)
    • 片方の表にしか存在しない行も取り出せる結合
    • 結合相手の表に該当するデータが存在しない場合はNULL(空)値で結合
    • 左外結合・右外結合・完全外結合
  • 等結合
    • 結合する表をFROM句で指定、結合条件はWHERE句 で指定
  • 内結合・外結合
    • 結合する表をFROM句の中でJOINを使って指定
    • 結合条件は JOIN に続くON句で指定する
    • 参考:p309のコラム「内結合と外結合のSQL文」
P.307 左外結合(LEFT OUTER JOIN)
  • 参考:P307 図 6.4.9、P309 の SQL 文
  • 結合する左の表(社員表)が基準
  • 右の表(部門表)に存在しない行を空値(NULL)として結合
P.308 右外結合(RIGHT OUTER JOIN)
  • 参考:P.308 図 6.4.10
  • 結合する右の表(部門表)が基準
  • 左の表(社員表)に存在しない行をNULLとして結合
P.308 完全外結合(FULL OUTER JOIN)
  • 参考:P.308 図 6.4.11
  • 片方だけに存在する場合もう片方をNULLとして結合
P.308 商
  • (これ何だろうか?where の in?)
    • 普通に in または =`= でよさそう?
    • select も含んでいる?
  • 参考:P.308 図 6.4.12
  • 関係R(X,Y1,Y2)とS(Y3,Y4)がある
  • S(Y3,Y4)のすべての行がR(Y1,Y2)に含まれる場合に対応するR(X)を求める演算
    • 商(R÷S)は関係Rの中から関係Sのすべての行を含む行を取り出し、そこから関係Sの項目を除く
    • 重複行も除く
  • 参考:P.309、図6.4.13
    • 社員表から東京に住み営業2課(E02)に勤務する社員を探す場合に商演算を使う
P.309 COLUMN ない結合と外結合の SQL
  • 本を読もう
P.310 6.5 SQL
P. 310 6.5.1 データベース言語SQLとは
  • SQL(Structured Query Language)
  • RDB の標準的な操作言語
  • ほとんどの RDBMS が SQL を使っている
    • Relational DataBase Management System
P.310 SQLの分類
  • RDB のデータを検索(参照)、操作
  • データ定義
  • トランザクション制御
  • 参照:表 6.5.1 に SQL 文が書いてある
P.310 表 6.5.1 重要な SQL
  • DDL (Data Definition Language)
    • CREATE, DROP, GRANT, REVOKE
  • DML (Data Manipulate Language)
    • SELECT, INSERT, UPDATE, DELETE, COMMIT, ROLLBACK, DECLARE CURSOR, OPEN, FETCH, CLOSE
  • DECLARE CURSOR以降は親言語方式などで使用されるSQL
  • 親言語方式
    • CやCOBOLなどのプログラム中にSQL文を組み込んでデータベースにアクセスする方式。
    • 埋込みSQL:p328参照
P.311 6.5.2 SELECT文
  • データ操作言語(DML)
    • 問合せ(SELECT)文
    • 挿入(INSERT)文
    • 更新(UPDATE)文
    • 削除(DELETE)文
    • などなど
  • SELECT文以外のDMLは「6.5.3 その他のDML文」(p319)参照
P.311 SELECT文の構文
  • SELECT文の基本構文
    • [ ]内は省略可能

SELECT

[DISTINCT]

列名のリスト

FROM 表名のリスト

[WHERE 選択条件や結合条件]

[GROUP BY 列名のリスト]

[HAVING グループ選択条件]

[ORDER BY 列名のリスト]

  • リスト:列名および表名をカンマ(,)で区切って列挙したもの。
P.311 行、列の取り出し
  • 選択:WHERE句に選択条件を指定すると特定の行を取り出せる
    • in とリストを使うと複数行に対する
    • 具体例を考えないと使い分けや気分はわからなそう
  • 射影:SELECT句に列名を指定すると特定の列を取り出せる
  • SELECT句への *:全部の列を取りだす
  • 選択条件と論理演算子(AND・OR・NOT):複数の条件を組み合わせる
  • 表 6.5.2:選択条件に使う比較演算子の表
  • 参考:列の値が「空値(NULL)であるか」という検索条件
    • WHERE 列 IS NULL
    • WHERE 列 = NULLではない
    • NULL は他にもいろいろ邪悪な面がある
    • 空文字列などとは違う概念でよくはまる
# SQL 例
  • P.312、図 6.5.1
  • 社員表から年齢が24以上28以下の社員コード・社員名を表示するサンプル

SELECT 社員コード, 社員名 FROM 社員表 WHERE 年齢 >= 24 AND 年齢 <= 28

P.312 BETWEEN述語
  • 先のSELECT文はBETWEEN述語やIN述語を使って同じ内容を表せる
  • BETWEEN述語は「値1~値2」の範囲(値1,値2を含む)に列の値が含まれるかを選択条件にする

SELECT 社員コード, 社員名 FROM 社員表 WHERE 年齢 BETWEEN 24 AND 28

P.312 IN述語
  • IN述語は列の値が指定された値のいずれかと等しいかを選ぶ条件にする場合に使う
  • INの前にNOTをつけると指定された値のいずれでもないという選択条件になる
  • IN述語の使用例については副問合せ(p317)も参照
P.313 重複行の排除
  • 取り出された行の中から重複するものを除きたい場合
  • SELECT句の列名指定にDISTINCT述語を使う
P.314 出力順の指定
  • ORDER BY 句:特定の列の値で昇順・降順に並べ替えて表示する
    • ORDER BY のあとに続けて並べ替えのキー(列名)を指定
    • 降順の場合はDESC、昇順の場合はASC
    • ふつう ASC がデフォルトで省略できる

SELECT 社員名, 年齢 FROM 社員表 ORDER BY 年齢 DESC

P.314 グループ化
  • GROUP BY 句:取り出した行を指定した列の値でグループ化
    • グループごとの合計や最大値などを求める
  • HAVING 句:条件に合ったグループだけを取り出す

SELECT 所属, COUNT(), AVG(年齢) FROM 社員表 GROUP BY 所属 HAVING COUNT() >= 2

  • SQL の簡単な解説
    • 社員表のデータをGROUP BY句を使って所属でグループ化
    • HAVING 句で「グループに所属する人数が2人以上」のグループだけを取り出す
    • 取り出したグループごとにその所属・人数・平均年齢を求める
P.315 表の結合
  • 2 つの結合
    • SELECT A FROM B WHEREによる等結合
    • FROM 句の中での JOIN ... ON による内結合や外結合
  • どちらであっても結合表には結合条件で指定した結合列が重複して含まれる
    • 列名を指定するときは「表名.列名」という形式で表す
P.316 表に別名をつける
  • FROM句で「表名 AS 別名」あるいは「表名 別名」と指定すると表名に対して別名(相関名)を設定できる
  • 自己結合:表に別名を与えると同じ表どうしを結合できる
  • 自己結合については P.317 の例を参照
    • 上司コードを使ってある社員とその上司の氏名や関連情報を見たい場合に使う
P.317 副問い合わせ
  • サブクエリともいう
  • SELECT文のFROM句やWHERE句・HAVING句などに指定されている入れ子になったSELECT文

SELECT 社員コード, 社員名, 年齢 FROM 社員表 WHERE 年齢 IN (SELECT 指定年齢 FROM 調査対象)

  • サブクエリにはいろいろ面倒な話がある
  • 参考:MySQL のサブクエリって、ほんとに遅いの?
    • これは 2017 年の記事:この辺はお金になるので割と日進月歩で、3 年程度の昔の情報でも既に参考にならないことも多い。
    • 簡単なまとめ
      • 遅いのは2番目、DEPENDENT SUBQUERYである
      • MySQL 5.5 までサブクエリはやっぱり遅い
      • MySQL 5.6 からはそんなに遅くなくなった
      • MySQL とはいってもバージョンによって全然違う:オプティマイザは進化している
    • 現状についてはきちんと最新の話を追う、または自分が必要なケースについて実測する
P.318 EXISTS述語
  • サブクエリはEXISTS述語でも表せる
  • 参照:P.318 の例
    • EXISTS は相関副問合せが何らかの結果を返した場合にTRUE(真),何も返さなかった場合にFALSE(偽)を返す
    • 主問合せの結果1行に対して相関副問合せから何らかの結果が戻されれば、主問合せの選択条件は成り立ち、何も返されなければ選択条件は成り立たない
  • EXISTS 述語でほかの表にも存在するものを調べられる
  • ANY でも同じ操作を表せる
    • 参考:P.318 の例
    • 副問合せの結果のいずれか(ANY)と等しい
  • どれがいいかは最終的にはテーブルの実装や使っている RDBMS とバージョンに依存する
    • 実測してチューニングしよう
P.319 6.5.3 その他の DML 文
P.319 INSERT文
  • 表に行を挿入する:2つ方法がある
    • 参考:本の P.319
    • 挿入する値をVALUES句で指定する
    • 問合せの結果をすべて挿入する
    • (DBMS によるかもしれないが)個別INSERTと一括INSERTもある:パフォーマンスでよく問題になる
  • 一部の列に対して INSERT
    • どの列に対して挿入するのか列名リストで指定
    • 省略された列の値はDEFAULT制約があればその既定値、そうでなければNULL値
    • NULL はなるべく使うのをやめよう
    • DEFAULT は P.322 表 6.6.1
P.319 UPDATE文
  • 表中のデータを変更
    • 列の変更値を直接指定する
    • 変更値をCASE式で決める
    • 副問合せの結果を変更値にする
  • SET句には変更したい列の値を「列名 = 変更値」の形で指定
  • 1 つのUPDATE文で複数の列の値を変えるときはカンマ(,)で区切って指定
  • WHERE句を省略すると表中のすべての行が変わる
    • ふつうはやらない
    • WHERE句を指定すれば条件に合った行だけ変わる
P.320 DELETE文
  • 表中の行を削除する
    • 表中の全行を削除しても表自体は残る
    • 表を削除するのはDROP文
  • WHERE句を省略すると表中のすべての行が削除される
  • WHERE句を指定するとその条件に一致した行だけを削除できる
P.320 参照関係をもつ表の更新
  • 関連する2つの表の間に参照制約が設定できる
    • 被参照表の主キー(候補キー)にない値を参照表の外部キーに追加できない
  • 被参照表の行の削除・変更時に制約が出る:図6.5.10参照
  • 参照動作指定:削除・変更時の制約は明示的に指定できる
    • 次節のCREATE TABLE文を参照
    • REFERENCES句(参照指定)の後に次の構文で指定

参照動作指定 REFERENCES 被参照表(参照する列リスト) ON DELETE 参照動作] [ON UPDATE 参照動作] (*[ ]内は省略可能)

  • 指摘できる参照動作:表 6.5.5 の 5つ
    • デフォルトは NO ACTION
# P.320 補足
  • 参照制約
    • 外部キーの値が被参照表の主キーあるいは主キー以外の候補キーに存在することを保証する制約。
    • 関連する2つの表の間に参照制約を設定する目的:データ矛盾を起こすような行の追加や削除・変更を排除するため
  • REFERENCES指定:p322-324を参照
  • データの整合性を保つための制約
    • 一意性制約
    • 参照制約
    • データ項目のデータ型や桁数に関する形式制約
    • データ項目が取り得る値の範囲に関するドメイン制約がある。
P.322 6.6 データ定義言語(DDL)
P.322 6.6.1 実表の定義
P.322 CREATE TABLE文
  • 表の定義はには CREATE TABLE 文
  • 基本構文は P.322 参照
P.322 列制約
  • 表を構成する列に対する制約
  • 参考:表6.6.1
  • 一意性制約:同一表内に同じ値が複数存在しないことを保証する制約
    • 主キーとなる列には一意性制約にとNOT NULL制約を加えたPRIMARY KEY指定
    • 主キー以外の候補キーにも一意性制約がある
    • 一般にNULL(ナル)値は重複値とは扱われない
    • 候補キーにはNULL値を許すUNIQUE指定
  • 参照制約:外部キーの値が被参照表に存在することを保証する制約
  • 外部キー:REFERENCES指定(参照指定)す。
P.323 表制約
  • 一意性制約・参照制約・検査制約は表制約(表定義の要素として定義される制約)にもできる
  • 列制約:1つの列に対する制約
  • 主キーや外部キーが複数列から構成される場合、これを列制約として定義できない
    • このときは表制約を使う
P.323 主なデータ型
  • 一般的な文字型,数値型は覚えておくといい
P.324 実表の定義例
  • P.324 の社員表と部門表を定義を見てみよう
P.325 6.6.2 ビューの定義
P.325 ビューとは
  • 実表:ディスク装置上にあり実際にデータが格納される表
  • ビュー:実表の一部または複数の表から必要な行や属性(列)を取り出してあたかも1つの表 であるかのように見せかけた仮想表
    • 利用者から見れば実表と同じ
    • データを検索するだけなら制約はあっても同じように操作できる
  • ビューのメリット
    • あくまでも仮想の表:対象となった元の表(基底表)の列名と別の名前で定義できる
    • ビューに定義することで情報を公開
    • ビューに定義しないことで情報を非公開にできる
    • 元の表に新たな列が追加されても既存のビューには影響がなく再定義する必要がない
  • ビューは仮想的な表
    • 一般には実体化されずデータ格納領域をとら ない。
    • 実表のように実体化されるビューもある:体現ビュー(materialized view)
P.325 CREATE VIEW文
  • ビューの定義:CREATE VIEW文による:詳細は本の P.325
  • ビュー:対象となる実表(あるいは他のビュー)からSELECT文で必要データを導出する方法で定義される定義するビューの列名に命名規則はない
    • 列数はAS句に続くSELECTで問い合わせた結果の列数と同じでなければならない
    • 列名は省略可能:省略した場合はSELECTで問い合わせた結果の列名がそのまま定義される
  • ビューに対する参照や更新処理
    • ビューの対象となった表(基底表)に対す る参照あるいは更新処理に変換されて実行される
P.326 ビューの定義例
  • 本の P.326 参照
  • 社員表と部門表から社員コードと社員名、その社員が所属する部門名からなる表をビュー「社員表2」
    • JOIN して必要なカラムだけ取り出す
P.326 ビューの更新
  • ビューへの更新処理 ビュー定義を基にビューが参照している表(基底表)への対応する処理に変換されて実行
  • 更新のための条件
    • 更新にかかる実際の表が更新可能
    • 更新される表の列や行が一意に決まる
  • 更新できないビューの例
    • SELECT句で式、集合関数、DISTINCT を使ったSELECT文で定義されている
    • ・GROUP BY句やHAVING句を使ったSELECT文で定義されている
P.327 6.6.3 オブジェクト(表)の処理権限
  • スキーマに定義された実表やビューはそのスキーマ所有者(作成者)にしか処理権限が与えられない
  • 複数の利用者がデータベースを利用できるようにしたければ、スキーマ所有者以外にも処理権限を付与する必要がある
    • データベース管理ユーザーは全権を持っていて危険な処理もできてしまう
    • できることを制限したユーザーで操作したい
  • オブジェクト(表)の処理権限
    • 読取(SELECT)権限
    • 削除(DELETE)権限
    • 挿入(INSERT)権限
    • 更新(UPDATE)権限
  • cf. スキーマ
    • 1つのデータベースの枠組み
    • スキーマ内に複数の表やビューを定義できる
P.327 処理権限の付与
  • 権限の付与:GRANT文による
  • GRANTの基本構文は次の通り
1
GRANT 権限 ON 表名 TO 許可識別子
  • 権限指定
    • 4 つの処理権限(SELECT,INSERT,UPDATE,DELETE)
    • ALL PRIVILEGES(すべて)を指定できる
  • 権限を複数付与する場合はカンマ(,)で区切って指定
P.327 処理権限の取消し(変更)
  • 一度付与された権限を取消し(変更)できる
  • 権限の取消しはREVOKE文
  • REVOKEの基本構文
1
REVOKE 権限 ON 表名 FROM 許可識別子
P.328 6.7 埋込み方式
P.328 6.7.1 埋込みSQLの基本事項
P.328 静的SQLと動的SQL
  • 静的 SQL:あらかじめ決められたSQL文をプログラム中に埋込んで実行する方式
    • 実際のアプリケーションではあまり見かけない
  • 非カーソル処理:データベースの表から1行を取り出すこと
    • 次のような SELECT 文
    • この INTO を見たことがない

SELECT 社員名, 年齢 INTO :name, :age FROM 社員表 WHERE 社員コード = '100';

  • 動的 SQL:実行する SQL 文がプログラム実行中でな ければ決まらない場合に SQL 文を動的に作成し実行する方式
  • 上の社員コードがふつう変わる:それが「動的」。
  • この動的な部分に変なコードを埋め込むとまずいというのがセキュリティ問題で、例えば SQL インジェクションの問題。
P.328 ホスト変数
  • ホスト変数:データベースとプログラムのインタフェースとなる変数
  • 埋め込み SQL では SQL を実行すると取り出されたデータをINTO句で指定したホスト変数に格納する
  • ホスト変数は通常の変数としてもアクセスできる
    • 出力関数で表示
    • 入力関数で値を入力してそれをSELECT文の条件としても使える
P.329 6.7.2 カーソル処理とFETCH
P.329 カーソル処理
  • 「SELECT・・・・INTO・・・」形式では,1行のデータしか取り出せない
    • (見たことがないのでイメージがつかない)
  • 検索結果が複数行の場合は1行ずつ取り出せるカーソル処理を使う
  • カーソル処理は SQL 文で問い合わせた結果をあたかも1つのファイルであるかのようにとらえる
  • FETCH文でそこから1行ずつ取り出す方式
    • 1つのSELECT文に対してカーソルを宣言(定義)
    • カーソルのオープンでSELECT文が実行
    • カーソルで1行ずつ取り出せる
    • FETCH文で繰返し行を取り出して処理
    • 終了したらカーソルを閉じる
P.330 FETCHで取り出した行の更新
  • 参考:図 6.7.2:FETCHで取り出した行の更新処理
  • FETCH文で取り出した行を更新あるいは削除する場合,FETCH文のあとに続くUPDATE文やDELETE文のWHERE句 に「WHERE CURRENT OF カーソル名」と指定する。
  • (FETCH 文を見たことがないのでイメージつかない)
P.330 処理の確定と取消し

2020-12-06 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:次数と基数まで
    • 本編:04-01 の冒頭
  • 今回の進捗
    • 基礎知識編:6.3.2 正規化の手順まで
    • 本編:「04-01 以下、高校数学水準で」

課題

TODO

自分用メモ

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 1,5
theta = np.linspace(0, np.pi, 101)
phi = np.linspace(0, 2 * np.pi, 151)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • ゴルディングの不等式

\begin{align} \Vert s \Vert_{H^2_{k+1}} \leq C_k \left( \Vert Ds \Vert_{H^2_k} + \Vert s \Vert_{L^2} \right) \end{align}

日々の勉強

Julia

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、しばらく DB の話
復習
  • 3 つのスキーマ
    • ユーザーが見るレベル
    • 正規化などをかけておいたデータベースにもっていけるレベル
    • 個々のデータベースに合わせた具体的なレベル
  • インメモリの DB:コンピューターの基本的なハードウェア構成と意味を復習しよう
本の記述を追いかける
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
P.375 スイッチングハブ
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
P.375 ブロードキャストストリーム
  • データリンク層で動作するブリッジやスイッチングハブなどの LANスイッチはブロードキャストフレームを受信ポート以外 のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
P.376 ネットワーク層の接続
  • 第 3 層(レイヤ 3)
P.376 ルータ
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
P.376 デフォルトゲートウェイ
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト ゲートウェイを中継する
P.376 ルーティング
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
P.377 ルータの冗長構成
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
P.377 レイヤ3スイッチ(L3スイッチ)
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
P.378 トランスポート層以上の層の接続
P.378 ゲートウェイ
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
P.378 L4スイッチ・L7スイッチ
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
P.379 7.2.5 VLAN
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
P.380 データリンク層の制御とプロトコル
  • データリンク層:第2層
P.380 7.3.1 メディアアクセス制御
  • 複数のデータを1つのケーブルを通して送受する場合,データの衝突(コリジョン)を回避するための制御が必要
    • これがメディアアクセス制御(Media Access Control:MAC)
コリジョン(衝突)

イーサネットや無線LANで複数の端末が送信し、データが衝突する現象を指す。旧式のイーサネット規格では、端末同士を接続するときに1組の通信路で双方向の通信を行う半二重通信のため、送信と受信を同時に行うことができない。送信と受信をその都度切り替えて行うので、端末がお互いデータを送信してしまうと衝突する可能性が高くなる。

P.380 CSMA/CD
  • CSMA/CD:Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセ ス/衝突検出)の略。
  • イーサネットで採用されている方式
    • 衝突検知方式を採用
    • イーサネット:IEEE 802.3として標準化されている LAN規格
  • CSMA/CD
    • 各ノードは伝送媒体が使用中かどうかを調べて,使用中でなければデータを送りはじめる
    • 複数のノードが同時に通信しはじめるとデータの衝突が起こる
    • 衝突を検知し,一定時間(ランダム)待った後で,再送
    • 一定の距離以上のケーブルでは衝突が検知できない
  • CSMA/CD方式の限界
    • トラフィックが増加するにつれて衝突が多くなる
    • 再送が増え,さらにトラフィックが増加する悪循環に陥る可能性がある
    • 特に伝送路の使用率が30%を超えると実用的でなくなる
P.381トークンパッシング方式
  • トークンによる送信制御を行う方式で
    • トークンバス方式
    • トークンリング方式
P.381 トークンパッシング方式
  • ネットワーク上をフリートークンと呼ばれる送信権のためのパケットが巡回する
    • フリートークンを獲得したノードだけが送信できるので衝突を避けられる
    • ふつうはコンセントレータ(集線器)でネットワ ークとノードを結ぶ
  • トークンパッシング方式を採用したLAN規格
    • 例:FDDI:Fiber Distributed Data Interface
    • FDDIは物理媒体に光ファイバを利用し,最大100Mビ ッ ト/秒の通信
  • 特徴
    • 伝送媒体上では衝突しない
    • トラフィックが増えるにつれてトークンを獲得しにくくなり,少しずつ遅延時間が増える
    • 衝突による再送制御の必要がないため伝送路の使用率に対する遅延時間の増加率はCSMA/CD方式より緩やか
P.382 TDMA 方式
  • TDM(時分割多重)
    • ネットワーク上にデータを送信する時間を割 り当てる(タイムスロット)
    • タイムスロットごとに別のデータを送って多重化する
    • TDM によるアクセス制御が TDMA
  • TDMA(Time Division Multiple Access:時分割多重アクセス)
    • CSMA/CD・トークンパッシング方式と並ぶ主要なデー タリンク技術
    • TDMA ではネットワーク(伝送路)を使える時間を細かく区切る
    • 割り当てられた時間は各ノードが独占する方式
    • TDMAはコネクション型の通信
P.382 7.3.2 無線LANのアクセス制御方式
P.382 CSMA/CA方式
  • CSMA/CA:Carrier Sense Multiple Access with Collision Avoidance、搬送波感知多重アクセス/衝突回避
  • 無線 LAN の制御方式
  • CSMA/CD との違い:「衝突検出」が「衝突回避」になった
  • 無線 LAN:物理層媒体は電波で衝突の検出は不可能だから回避する
  • 特徴
    • 送信ノードは使いたい周波数帯の使えるか確認後、必ずランダムな時間だけ待ってから送信をはじめる
      • 待ち時間をバックオフ制御時間とよぶ
    • 衝突してフレームが壊れても検出できない
      • データを受け取ったノードは ACK を返す
P.328 RTS/CTS
  • 無線 LAN の話
  • 隠れ端末問題
    • 他のノードのデータ送信を感知できないことがある
    • 通信ノード間の距離が遠い
    • ノード間に障害物がある
  • 回避のための RTS/CTS 方式
  • 無線 LAN ノード
    • データ送信前にRTS(Request ToSend:送信リクエスト)をアクセスポイントに送信
    • これを受理したアクセスポイントがCTS(Clear to Send:送信OK)を返信
      • 他のノードは CTS を傍受して自分以外の別のノードに送信権があると解釈
      • データ送信を延期
    • 無線LANノードはアクセスポイントからCTSを受信したらデータ送信開始します
    • 衝突抑制:CTSに書かれた他のノードに対する送信抑制時間を使う
  • データ送信開始前にデータ送信のネゴシエーシ ョンとして RTS/CTS 方式を使った CSMA/CA を CSMA/CA with RTS/CTS とよぶ
P.383 無線LANの動作モード
  • 無線 LAN の動作モード:図7.3.4参照
  • 2 つのモードがある
  • インフラストラクチャモード:無線LANノードがアク セスポイントを通じて相互に通信
  • アドホックモード:アクセスポイントなしに無線LANノードどうしが直接通信
P.383 COLUMN FDMA,CDMA
  • 表7.3.1:多元接続する技術グループ
    • TDMA とセット
  • FDMA
    • ある周波数帯をさらに細かい周波数帯に分割
    • 接続できる端末数を増やす技術
  • CDMA
    • 周波数も時間も分割しない
    • 符号で各端末の通信を識別・分離
    • 接続できる端末数を増やす
P.383 7.3.3 データリンク層の主なプロトコル
  • 第 2 層
P.384 ARP
  • ARP(Address Resolution Protocol):通信相手のIPアドレスからMACアドレスを取るためのプロトコル
  • ARPの動作
    • ブロードキャストで目的IPアドレスを指定したARP要求パケットをLAN全体に流す
      • ブロードキャスト:ネットワークに参加するすべての機器に同時に信号やデータを送ること
    • 各ノードは自分のIPアドレスと比較
    • 一致したノードだけARP応答パケットに自分のMACアドレスを入れて返す(ユニキャスト)
  • 参考:GARP(Gratuitous ARP)
    • 主な目的:自身に設定するIPアドレスの重複確認・ARPテ ーブルの更新
    • 目的IPアドレスに自身が使うIPアドレスを指定し,MACアドレスを問い合わせる
P.384 RARP
  • Reverse-ARP:逆アドレス解決プロトコル
    • MACアドレスからIPアドレスを取る
  • 電源オフ時にIPアドレスを保持できない(IPアドレスを保持するハードディスクをもたない)機器が電源オン時に自分のMACアドレスから自身に割り当てられているIPアドレスを知るために使う
  • RARP サーバー
    • MACアドレスとIPアドレスの対応表を持ったサーバー(RARPサーバー)が必要
P.384 PPP
  • PPP:Point to Point Protocol
    • 2 点間をポイントツーポイントでつなぐためのデータリンクプロトコル
    • WANを介して2つのノードをダイヤルアップ接続するときに使う
  • ネットワーク層(第3層)とネゴシエーションする NCP(ネットワーク制御プロトコル)とリンクネゴシエーションするLCP(リンク制御プロトコル)からなる
    • NCP:Network Control Protocol
    • LCP:Link Control Protocol
  • リンク制御やエラー処理機能を持つ
P.384 PPPoE
  • PPPoE:PPP over Ethernet
  • PPPと同等な機能をイーサネット(LAN)上で実現するプロトコル
  • PPPフレームをイーサネットフレームでカプセル化して実現
P.384 7.3.4 IEEE 802.3規格
  • メディアアクセス制御に CSMA/CD 方式を使う LAN についての標準
  • OSI基本参照モデルにおけるデータリンク層(第 2 層)と物理層(第 1 層)のプロトコルおよびサービスを規定
    • OSI 基本参照モデルでのデータリンク層を LLC 副層と MAC 副層の2つに分割
    • 物理層での LAN で使う伝送媒体や MAC 副層でのフレーム構成や衝突検出の仕組みを規定
  • ツイストケーブルの企画が表 7.3.2 にまとまっている
P.386 7.4 ネットワーク層のプロトコルと技術
  • もうやった
P.295 定義域(ドメイン)
  • テーブル全体を $\mathcal{T} = A \times B \times \cdots \times Z$ と書いたときの各 $A,B,\dots,Z$ をドメイン(定義域、domain)と呼ぶ
  • 数学の集合と違って $\mathcal{T}$ の中に同じ集合を含まない:つまり $\mathcal{T} = \mathbb{R}^n$ といったテーブルは考えない
  • ドメインは「属性が取り得る値の集合」
    • RDB では適当なデータ型を対応させる:日付,金額,数量,量
  • ドメインを新たなデータ型として定義すると違うデー タ項目でも同じ入力チェックや同じ出力編集ができる
P.296 6.2.2 関係データベースのキー
  • 表中の行を一意に識別するためのキー(スーパキー,候補キー,主キー)
  • 別の表を参照し関連づけるための外部キー
P.296 スーパキー
  • 表中の行を一意に特定できる属性,あるいは属性の組
    • 組について:購入履歴を知るためにはユーザーID・商品ID・購入日がわからないといけない、という程度の意味
    • かなり広い意味のようなのでたぶんそんなに使わない
  • 補足:なぜスーパ「ー」キーではないのか
P.296 候補キー
  • 行を一意に決めるための必要最小限の属性で構成されるスーパーキー
    • 一意性制約が必要
  • 何かの履歴のように複数のIDの組になることもある
    • 外部キーが入るテーブルでよくある
P.296 主キー
  • 複数存在する候補キーの中から任意に選んだ1つの候補キーを主キー(primary key)
  • 主キーに選ばれなかった残りの候補キーを代理キー(alternate key)
  • 主キー制約
    • 一意性制約
    • 実体を保証するため空値(NULL)は許さないという NOT NULL制約
P.296 外部キー
  • 関連する他の表を参照する属性あるいは属性の組
  • 2 つの表の間に「1対多」の関係がある場合
    • 「多」側の表に「1」側の表の主キーあるいは主キー以外の候補キーを参照する属性をもたせて外部キーにする
  • 参照制約:外部キーの値が外部キーで参照される表に存在することを保証
    • 参照制約があると「親テーブル」のカラムを勝手に消せなくなる
  • 複数の表を参照するなら表内に複数の外部キーを持つ
    • 外部キーの値に NOT NULL 制約がなければ NULL が許される
  • 一般に外部キーは被参照表の主キーを参照
    • UNIQUE 指 定 さ れ た候補キーを参照する場合もある
  • cf. 参照制約:P.320
P.297 COLUMN 代用のキー設定
  • 主キーが複数の属性から構成される複合キー(連結キー)でその構成属性数が多すぎると運用が面倒
  • 連番のような必ずしも積極的な意味がない属性を追加してそれを代用のキー(surrogate key)にする
    • 複合キーを構成している属性はすべて非キー属性にして代理キーにする
P.298 6.3 正規化
P.298 6.3.1 関数従属
  • 関数従属:ある属性xの値が決まると他の属性yの値が一意的に決まる関係で、$x \mapsto y$ と書く
    • 属性 $x$:独立属性(決定項)
    • 属性 $y$:従属属性(従属項)
  • 正規化:1 つの表の中の属性間にある関数従属性に着目して整理する
    • 整合性を維持しやすいデータベースが設計できる

テーブル1:あるユーザーが何を買ったか - ユーザーID - 商品 ID - 商品名 - 商品の値段 - 購入点数 - 支払金額

→ユーザーのテーブル、商品のテーブル、購入詳細のテーブル

  • ユーザーID
  • 商品ID
  • 購入点数

これがあれば商品名、商品の値段、支払金額がいらない

P.298 部分関数従属
  • 関係 $x \mapsto y$ で $y$ が $x$ の真部分集合に関数従属するとき、$y$ は $x$ に部分関数従属するという
    • どこの業界の用語なのかよくわからない。情報系?
  • 部分関数従属は独立属性 $x$ が複数の属性からなるときに起こりうる関数従属
    • あまりピンとこない:P.299 に商品マスタ的な例が載っていた
  • 本の例:独立属性 $x$ が $x_1$ と $x_2$ の 2 つの属性からなるとき
    • ${x_1, x_2} \mapsto y$ が成り立ち、かつ $x_1 \mapsto y$ または $x_2 \mapsto y$ のどちらかが成り立つ
    • このとき ${x_1, x_2 }$ と $y$ の間に部分関数従属がある
  • 例:社員所属部門テーブル
    • 社員番号・部門コード・部門名があるテーブル
    • 主キー:社員番号と部門コード
    • 部門コードに対して部門名は一意に紐づく
    • このとき部門名は主キーに部分関数従属する
P.298 完全関数従属
  • 完全関数従属:関係 $x \mapsto y$ で $y$ が $x$ のどの真部分集合にも関数従属しない
  • 独立属性 $x$ が 1 つの属性かなるときは常に完全関数従属
P.299 推移的関数従属
  • 直接ではなく間接的に関数従属している関係
  • 例:社員マスタ
    • 社員番号・社員名・住所・郵便番号からなるテーブル
    • 社員番号から住所が一意に紐づく
    • 住所から郵便番号が一意に紐づく
    • 郵便番号は社員番号に推移的関数従属している
    • 念のため:住所は住所マスタなどに外出し(正規化)するべきで、こういうテーブルを作ってはいけない
    • 詳しくは次の 6.3.2 で議論される
P.300 6.3.2 正規化の手順
P.300 第 1 正規化
  • 非正規:くり返し部分をもつテーブルのこと
    • まずもってくり返しという言葉の理解自体がたぶん面倒
    • いろいろな例に触れてみよう
  • RDB は平坦な 2 次元の表(テーブル)
    • くり返し部分をもつ表から繰り返しを排除してスリム化したい
  • 第 1 正規化:くり返しを排除する操作
    • 第 1 正規形:第 1 正規化して得られた表のこと
    • cf. P.300 図6.3.4 の売上表
  • P.300 図 6.3.5
    • 売り上げ明細表:主キーの売上番号とくり返し部分を一意に決める商品番号が複合キー
    • 別の表に分解する
    • 外部キー:他のテーブルの主キーである売上番号を参照している
  • 分解・独立させた表に元の表の主キーをもたせる理由:結合で元の表を再現するため
P.301 第1正規形におけるデータ操作での不具合
  • 第1正規形になった表は RDB 上で定義できる
  • データの冗長性のためにデータ操作時に不整合を起こさないように注意が必要:更新時異常の概念
  • 種類は以下の通り
  • 例は本 P.300 の売り上げ表・売上明細表から
  • 第 1 正規形では以下のような更新時異常が起きる可能性がある
    • 防止策が第 2 正規化・第 3 正規化
    • どこまでどうやるかは状況次第
# P.301 修正時異常
  • 商品名「オレンジ」を「清見オレンジ」に変更したい
    • 該当する行をすべて同時に変更しなければならない
    • 1行でも変更し忘れるとデータ不整合が起きる
  • 先に対策を書いておく
    • 売上明細には商品番号だけ持たせて、商品名を削る
    • 削った代わりに商品テーブルを作る
    • (ふつう商品テーブルには単価も切り出す)
    • (単価に消費税を載せるかどうかといった問題もある)
# P.301 挿入時異常
  • 売上明細表の主キーは売上番号と商品番号の複合キ ー
  • 売上のない("売上番号"が空値)商品は登録できない
    • どうやらこの本の「売上表」は商品テーブルも兼ねているらしい
  • 先に対策
    • 商品テーブルを別に作って、そこからの参照という形にする
# P.301 削除時異常
  • (先程と同じくこの本の売り上げ表は商品テーブルも兼ねている模様)
  • 売上実績が 1 つしかない商品のの売上データを削除す ると商品データも削除される
  • 逆に商品データを残そうとすれば売上データは削除できない
  • 先に対策:商品テーブルを切り出す
P.301 第2正規化
  • 第2正規化:すべての非キー属性が各候補キーに完全関数従属である状態にする操作
    • 第1正規形の表に対して行われる操作
    • 候補キーの一部に部分関数従属する非キー属性を別の表に分解する
    • 第2正規化して得られた表を第2正規形という
  • 例:図6.3.7の売上明細表
    • 候補キーは主キーの{売上番号,商品番号}の1
    • 非キー属性である商品名と単価は主キーの一部である商品番号に部分関数従属している
      • 商品表として独立させる
  • 分解の仕方
    • 商品表の主キーを商品番号
    • 図6.3.7の上の表を再現できるようにする
      • 売上明細表(図6.3.7の下の表)には商品表の主キーを参照する外部キーとして"商品番号"を残す
# P.302 メモ
  • 第2正規化するのは候補キーが複数の属性で構成されている場合。
    • 1つの属性で構成されているのであれば部分関数従属は存在しない
    • 既に第2正規形
  • 非キー属性:どの候補キーにも属さない属性
  • 第2正規形:どの非キー属性も候補キーの真部分集合に対して関数従属しない
    • どの非キー属性も候補キーに完全関数従属
P.302 第3正規化
  • 第3正規化:非キー属性間の関数従属をなくしてどの非キー属性も候補キーに直接に関数従属している状態にする
    • 第2正規形の表に対して行われる操作
    • 候補キーに推移的関数従属している非キー属性を別の表に分解
    • 第3正規化して得られた表を第3正規形
  • 例:図6.3.8の売上表
    • これは第2正規形
    • 顧客番号→顧客名いう非キー属性間の関数従属がある
    • 顧客番号を主キーとした顧客表として独立させる
    • 売上表には顧客表の主キーを参照する外部キーとして顧客番号を残す
# P.303 メモ
  • 第3正規形:どの非キー属性も候補キーに推移的関数従属しない
    • どの非キー属性も候補キーに直接に関数従属している
  • ボイス・コッド正規形
    • 第3正規形では次の関数従属が存在する可能性がある
      • 候補キーの真部分集合から他の候補キーの真部分集合への関数従属
      • 候補キー以外の属性から候補キーの真部分集合への関数従属
    • この関係を分解したのがボイス・コッド正規形
P.303 正規化と非正規化
  • 正規形には第1正規形から第5正規形まである
    • たいていの用途ではデータベースの場合、第3正規形まで正規化されていれば十分といわれている
  • 正規化の目的はデータ操作にともなう更新時異常の発生を防ぐこと
    • 属性間の関数従属を少なくする
    • データの重複を排除する
  • 正規化のデメリット
    • 表がいくつにも分割される
    • 必要なデータを取り出すために表を結合しないといけない
    • 処理時間がかかる
  • 処理速度が必要な時や更新時異常の発生が低い場合はあえて正規化しない・正規化を解く
    • たとえば更新が少ない表は正規化しない
  • ここでの「非正規化」:アクセスパターンを考えたうえでどの表を統合するか、どの属性を表間に重複させるか考える
P.304 6.4 関係データベースの演算
P.304 6.4.1 集合演算
  • 関係データベースでの集合演算
    • 同じ型の表間での和、共通部分(積)、差
    • 直積:同じ型の表でなくてもいい
P.304 和、共通(積)、差
  • 図6.4.1の表AとBに対するそれぞれの演算結果を見る
  • 本参照
P.305 直積演算(Cartesian Product:×)
  • 社員表と部門表の直積は社員表の各行に対して部門表の行を1つずつつなぎ合わせた表
  • 直積の結果として得られる新しい表を直積表と呼ぶ
    • 次数(属性の数)は両方の表の次数を足した数
    • 位数(タプルの数)は両方の位数を掛けた数
  • 直積が役に立つイメージがない:実際には結合 (JOIN) を本当によく使う
P.305 6.4.2 関係演算
  • 関係演算:関係データベース特有の演算
    • 射影,選択,結合,商
  • 関係代数:関係演算と集合演算を合わせた代数
    • 導出表:これらの演算によって得られた表
# P.306 SQL の例
  • 先に持ってきてみた

SELECT 社員コード, 社員名, 部門表.部門コード, 部門名

FROM 社員表, 部門表

WHERE 社員表.部門コード = 部門表.部門コード

P.305 選択と射影
  • 選択演算:表から指定した行を取り出す関係演算
    • SQL でいう WHERE
  • 射影演算:表から指定した列を取り出す関係演算
    • SQL でいう SELECT column_name
P.306 結合
  • 参考:P.306 の下の表
  • 結合演算:2つの表が共通にもつ項目(結合列)で結合して新しい表をつくり出す関係演算
    • まさに正規化でわけたテーブルを結合させる演算
  • SQL:SELECT文のFROM句で複数の表名をカンマで区切って指定
    • WHERE句で結合条件を指定
  • 結合条件
    • 結合列の値を>,≧,=,≠,≦,<のいずれかの比較演算子で比較して結びつける
  • 等結合:比較演算子が「=(等号)」である結合
    • 2つの表から作成される直積表から結合列の値が等 しいものだけを取り出す
    • 得られた新たな表には結合列が重複して含まれる
    • SELECT句でどちらか一方の結合列を指定して見かけ上の重複を除く
  • 自然結合(natural join):重複する結合列を取り除く(一方のみ残す)ようにした結合
    • 結合列の列名が2つの表で同じ場合に使える
    • 参考
      • (意識的に使ったことがない)
P.307 内結合と外結合
  • 参考:P.307 の図 6.4.8
  • 内結合(INNER JOIN)
    • 結合列の値が等しい行だけを取り出す結合演算
    • 片方の表にしか存在しない行は取り出せない
    • データベース言語仕様(JIS X 3005)
  • 外結合(OUTER JOIN)
    • 片方の表にしか存在しない行も取り出せる結合
    • 結合相手の表に該当するデータが存在しない場合はNULL(空)値で結合
    • 左外結合・右外結合・完全外結合
  • 等結合
    • 結合する表をFROM句で指定、結合条件はWHERE句 で指定
  • 内結合・外結合
    • 結合する表をFROM句の中でJOINを使って指定
    • 結合条件は JOIN に続くON句で指定する
    • 参考:p309のコラム「内結合と外結合のSQL文」
P.307 左外結合(LEFT OUTER JOIN)
  • 参考:P307 図 6.4.9、P309 の SQL 文
  • 結合する左の表(社員表)が基準
  • 右の表(部門表)に存在しない行を空値(NULL)として結合
P.308 右外結合(RIGHT OUTER JOIN)
  • 参考:P.308 図 6.4.10
  • 結合する右の表(部門表)が基準
  • 左の表(社員表)に存在しない行をNULLとして結合
P.308 完全外結合(FULL OUTER JOIN)
  • 参考:P.308 図 6.4.11
  • 片方だけに存在する場合もう片方をNULLとして結合
P.308 商
  • (これ何だろうか?where の in?)
    • 普通に in または =`= でよさそう?
    • select も含んでいる?
  • 参考:P.308 図 6.4.12
  • 関係R(X,Y1,Y2)とS(Y3,Y4)がある
  • S(Y3,Y4)のすべての行がR(Y1,Y2)に含まれる場合に対応するR(X)を求める演算
    • 商(R÷S)は関係Rの中から関係Sのすべての行を含む行を取り出し、そこから関係Sの項目を除く
    • 重複行も除く
  • 参考:P.309、図6.4.13
    • 社員表から東京に住み営業2課(E02)に勤務する社員を探す場合に商演算を使う
P.309 COLUMN ない結合と外結合の SQL
  • 本を読もう
P.310 6.5 SQL
P. 310 6.5.1 データベース言語SQLとは
  • SQL(Structured Query Language)
  • RDB の標準的な操作言語
  • ほとんどの RDBMS が SQL を使っている
    • Relational DataBase Management System
P.310 SQLの分類
  • RDB のデータを検索(参照)、操作
  • データ定義
  • トランザクション制御
  • 参照:表 6.5.1 に SQL 文が書いてある
P.310 表 6.5.1 重要な SQL
  • DDL (Data Definition Language)
    • CREATE, DROP, GRANT, REVOKE
  • DML (Data Manipulate Language)
    • SELECT, INSERT, UPDATE, DELETE, COMMIT, ROLLBACK, DECLARE CURSOR, OPEN, FETCH, CLOSE
  • DECLARE CURSOR以降は親言語方式などで使用されるSQL
  • 親言語方式
    • CやCOBOLなどのプログラム中にSQL文を組み込んでデータベースにアクセスする方式。
    • 埋込みSQL:p328参照
P.311 6.5.2 SELECT文
  • データ操作言語(DML)
    • 問合せ(SELECT)文
    • 挿入(INSERT)文
    • 更新(UPDATE)文
    • 削除(DELETE)文
    • などなど
  • SELECT文以外のDMLは「6.5.3 その他のDML文」(p319)参照
P.311 SELECT文の構文
  • SELECT文の基本構文
    • [ ]内は省略可能

SELECT

[DISTINCT]

列名のリスト

FROM 表名のリスト

[WHERE 選択条件や結合条件]

[GROUP BY 列名のリスト]

[HAVING グループ選択条件]

[ORDER BY 列名のリスト]

  • リスト:列名および表名をカンマ(,)で区切って列挙したもの。
P.311 行、列の取り出し
  • 選択:WHERE句に選択条件を指定すると特定の行を取り出せる
    • in とリストを使うと複数行に対する
    • 具体例を考えないと使い分けや気分はわからなそう
  • 射影:SELECT句に列名を指定すると特定の列を取り出せる
  • SELECT句への *:全部の列を取りだす
  • 選択条件と論理演算子(AND・OR・NOT):複数の条件を組み合わせる
  • 表 6.5.2:選択条件に使う比較演算子の表
  • 参考:列の値が「空値(NULL)であるか」という検索条件
    • WHERE 列 IS NULL
    • WHERE 列 = NULLではない
    • NULL は他にもいろいろ邪悪な面がある
    • 空文字列などとは違う概念でよくはまる
# SQL 例
  • P.312、図 6.5.1
  • 社員表から年齢が24以上28以下の社員コード・社員名を表示するサンプル

SELECT 社員コード, 社員名 FROM 社員表 WHERE 年齢 >= 24 AND 年齢 <= 28

P.312 BETWEEN述語
  • 先のSELECT文はBETWEEN述語やIN述語を使って同じ内容を表せる
  • BETWEEN述語は「値1~値2」の範囲(値1,値2を含む)に列の値が含まれるかを選択条件にする

SELECT 社員コード, 社員名 FROM 社員表 WHERE 年齢 BETWEEN 24 AND 28

P.312 IN述語
  • IN述語は列の値が指定された値のいずれかと等しいかを選ぶ条件にする場合に使う
  • INの前にNOTをつけると指定された値のいずれでもないという選択条件になる
  • IN述語の使用例については副問合せ(p317)も参照
P.313 重複行の排除
  • 取り出された行の中から重複するものを除きたい場合
  • SELECT句の列名指定にDISTINCT述語を使う
P.314 出力順の指定
  • ORDER BY 句:特定の列の値で昇順・降順に並べ替えて表示する
    • ORDER BY のあとに続けて並べ替えのキー(列名)を指定
    • 降順の場合はDESC、昇順の場合はASC
    • ふつう ASC がデフォルトで省略できる

SELECT 社員名, 年齢 FROM 社員表 ORDER BY 年齢 DESC

P.314 グループ化
  • GROUP BY 句:取り出した行を指定した列の値でグループ化
    • グループごとの合計や最大値などを求める
  • HAVING 句:条件に合ったグループだけを取り出す

SELECT 所属, COUNT(), AVG(年齢) FROM 社員表 GROUP BY 所属 HAVING COUNT() >= 2

  • SQL の簡単な解説
    • 社員表のデータをGROUP BY句を使って所属でグループ化
    • HAVING 句で「グループに所属する人数が2人以上」のグループだけを取り出す
    • 取り出したグループごとにその所属・人数・平均年齢を求める
P.315 表の結合
  • 2 つの結合
    • SELECT A FROM B WHEREによる等結合
    • FROM 句の中での JOIN ... ON による内結合や外結合
  • どちらであっても結合表には結合条件で指定した結合列が重複して含まれる
    • 列名を指定するときは「表名.列名」という形式で表す
P.316 表に別名をつける
  • FROM句で「表名 AS 別名」あるいは「表名 別名」と指定すると表名に対して別名(相関名)を設定できる
  • 自己結合:表に別名を与えると同じ表どうしを結合できる
  • 自己結合については P.317 の例を参照
    • 上司コードを使ってある社員とその上司の氏名や関連情報を見たい場合に使う
P.317 副問い合わせ
  • サブクエリともいう
  • SELECT文のFROM句やWHERE句・HAVING句などに指定されている入れ子になったSELECT文

SELECT 社員コード, 社員名, 年齢 FROM 社員表 WHERE 年齢 IN (SELECT 指定年齢 FROM 調査対象)

  • サブクエリにはいろいろ面倒な話がある
  • 参考:MySQL のサブクエリって、ほんとに遅いの?
    • これは 2017 年の記事:この辺はお金になるので割と日進月歩で、3 年程度の昔の情報でも既に参考にならないことも多い。
    • 簡単なまとめ
      • 遅いのは2番目、DEPENDENT SUBQUERYである
      • MySQL 5.5 までサブクエリはやっぱり遅い
      • MySQL 5.6 からはそんなに遅くなくなった
      • MySQL とはいってもバージョンによって全然違う:オプティマイザは進化している
    • 現状についてはきちんと最新の話を追う、または自分が必要なケースについて実測する
P.318 EXISTS述語
  • サブクエリはEXISTS述語でも表せる
  • 参照:P.318 の例
    • EXISTS は相関副問合せが何らかの結果を返した場合にTRUE(真),何も返さなかった場合にFALSE(偽)を返す
    • 主問合せの結果1行に対して相関副問合せから何らかの結果が戻されれば、主問合せの選択条件は成り立ち、何も返されなければ選択条件は成り立たない
  • EXISTS 述語でほかの表にも存在するものを調べられる
  • ANY でも同じ操作を表せる
    • 参考:P.318 の例
    • 副問合せの結果のいずれか(ANY)と等しい
  • どれがいいかは最終的にはテーブルの実装や使っている RDBMS とバージョンに依存する
    • 実測してチューニングしよう
P.319 6.5.3 その他の DML 文
P.319 INSERT文
  • 表に行を挿入する:2つ方法がある
    • 参考:本の P.319
    • 挿入する値をVALUES句で指定する
    • 問合せの結果をすべて挿入する
    • (DBMS によるかもしれないが)個別INSERTと一括INSERTもある:パフォーマンスでよく問題になる
  • 一部の列に対して INSERT
    • どの列に対して挿入するのか列名リストで指定
    • 省略された列の値はDEFAULT制約があればその既定値、そうでなければNULL値
    • NULL はなるべく使うのをやめよう
    • DEFAULT は P.322 表 6.6.1
P.319 UPDATE文
  • 表中のデータを変更
    • 列の変更値を直接指定する
    • 変更値をCASE式で決める
    • 副問合せの結果を変更値にする
  • SET句には変更したい列の値を「列名 = 変更値」の形で指定
  • 1 つのUPDATE文で複数の列の値を変えるときはカンマ(,)で区切って指定
  • WHERE句を省略すると表中のすべての行が変わる
    • ふつうはやらない
    • WHERE句を指定すれば条件に合った行だけ変わる
P.320 DELETE文
  • 表中の行を削除する
    • 表中の全行を削除しても表自体は残る
    • 表を削除するのはDROP文
  • WHERE句を省略すると表中のすべての行が削除される
  • WHERE句を指定するとその条件に一致した行だけを削除できる
P.320 参照関係をもつ表の更新
  • 関連する2つの表の間に参照制約が設定できる
    • 被参照表の主キー(候補キー)にない値を参照表の外部キーに追加できない
  • 被参照表の行の削除・変更時に制約が出る:図6.5.10参照
  • 参照動作指定:削除・変更時の制約は明示的に指定できる
    • 次節のCREATE TABLE文を参照
    • REFERENCES句(参照指定)の後に次の構文で指定

参照動作指定 REFERENCES 被参照表(参照する列リスト) ON DELETE 参照動作] [ON UPDATE 参照動作] (*[ ]内は省略可能)

  • 指摘できる参照動作:表 6.5.5 の 5つ
    • デフォルトは NO ACTION
# P.320 補足
  • 参照制約
    • 外部キーの値が被参照表の主キーあるいは主キー以外の候補キーに存在することを保証する制約。
    • 関連する2つの表の間に参照制約を設定する目的:データ矛盾を起こすような行の追加や削除・変更を排除するため
  • REFERENCES指定:p322-324を参照
  • データの整合性を保つための制約
    • 一意性制約
    • 参照制約
    • データ項目のデータ型や桁数に関する形式制約
    • データ項目が取り得る値の範囲に関するドメイン制約がある。
P.322 6.6 データ定義言語(DDL)
P.322 6.6.1 実表の定義
P.322 CREATE TABLE文
  • 表の定義はには CREATE TABLE 文
  • 基本構文は P.322 参照
P.322 列制約
  • 表を構成する列に対する制約
  • 参考:表6.6.1
  • 一意性制約:同一表内に同じ値が複数存在しないことを保証する制約
    • 主キーとなる列には一意性制約にとNOT NULL制約を加えたPRIMARY KEY指定
    • 主キー以外の候補キーにも一意性制約がある
    • 一般にNULL(ナル)値は重複値とは扱われない
    • 候補キーにはNULL値を許すUNIQUE指定
  • 参照制約:外部キーの値が被参照表に存在することを保証する制約
  • 外部キー:REFERENCES指定(参照指定)す。
P.323 表制約
  • 一意性制約・参照制約・検査制約は表制約(表定義の要素として定義される制約)にもできる
  • 列制約:1つの列に対する制約
  • 主キーや外部キーが複数列から構成される場合、これを列制約として定義できない
    • このときは表制約を使う
P.323 主なデータ型
  • 一般的な文字型,数値型は覚えておくといい
P.324 実表の定義例
  • P.324 の社員表と部門表を定義を見てみよう
P.325 6.6.2 ビューの定義
P.325 ビューとは
  • 実表:ディスク装置上にあり実際にデータが格納される表
  • ビュー:実表の一部または複数の表から必要な行や属性(列)を取り出してあたかも1つの表 であるかのように見せかけた仮想表
    • 利用者から見れば実表と同じ
    • データを検索するだけなら制約はあっても同じように操作できる
  • ビューのメリット
    • あくまでも仮想の表:対象となった元の表(基底表)の列名と別の名前で定義できる
    • ビューに定義することで情報を公開
    • ビューに定義しないことで情報を非公開にできる
    • 元の表に新たな列が追加されても既存のビューには影響がなく再定義する必要がない
  • ビューは仮想的な表
    • 一般には実体化されずデータ格納領域をとら ない。
    • 実表のように実体化されるビューもある:体現ビュー(materialized view)
P.325 CREATE VIEW文
  • ビューの定義:CREATE VIEW文による:詳細は本の P.325
  • ビュー:対象となる実表(あるいは他のビュー)からSELECT文で必要データを導出する方法で定義される定義するビューの列名に命名規則はない
    • 列数はAS句に続くSELECTで問い合わせた結果の列数と同じでなければならない
    • 列名は省略可能:省略した場合はSELECTで問い合わせた結果の列名がそのまま定義される
  • ビューに対する参照や更新処理
    • ビューの対象となった表(基底表)に対す る参照あるいは更新処理に変換されて実行される
P.326 ビューの定義例
  • 本の P.326 参照
  • 社員表と部門表から社員コードと社員名、その社員が所属する部門名からなる表をビュー「社員表2」
    • JOIN して必要なカラムだけ取り出す
P.326 ビューの更新
  • ビューへの更新処理 ビュー定義を基にビューが参照している表(基底表)への対応する処理に変換されて実行
  • 更新のための条件
    • 更新にかかる実際の表が更新可能
    • 更新される表の列や行が一意に決まる
  • 更新できないビューの例
    • SELECT句で式、集合関数、DISTINCT を使ったSELECT文で定義されている
    • ・GROUP BY句やHAVING句を使ったSELECT文で定義されている
P.327 6.6.3 オブジェクト(表)の処理権限
  • スキーマに定義された実表やビューはそのスキーマ所有者(作成者)にしか処理権限が与えられない
  • 複数の利用者がデータベースを利用できるようにしたければ、スキーマ所有者以外にも処理権限を付与する必要がある
    • データベース管理ユーザーは全権を持っていて危険な処理もできてしまう
    • できることを制限したユーザーで操作したい
  • オブジェクト(表)の処理権限
    • 読取(SELECT)権限
    • 削除(DELETE)権限
    • 挿入(INSERT)権限
    • 更新(UPDATE)権限
  • cf. スキーマ
    • 1つのデータベースの枠組み
    • スキーマ内に複数の表やビューを定義できる
P.327 処理権限の付与
  • 権限の付与:GRANT文による
  • GRANTの基本構文は次の通り
1
GRANT 権限 ON 表名 TO 許可識別子
  • 権限指定
    • 4 つの処理権限(SELECT,INSERT,UPDATE,DELETE)
    • ALL PRIVILEGES(すべて)を指定できる
  • 権限を複数付与する場合はカンマ(,)で区切って指定
P.327 処理権限の取消し(変更)
  • 一度付与された権限を取消し(変更)できる
  • 権限の取消しはREVOKE文
  • REVOKEの基本構文
1
REVOKE 権限 ON 表名 FROM 許可識別子
P.328 6.7 埋込み方式
P.328 6.7.1 埋込みSQLの基本事項
P.328 静的SQLと動的SQL
  • 静的 SQL:あらかじめ決められたSQL文をプログラム中に埋込んで実行する方式
    • 実際のアプリケーションではあまり見かけない
  • 非カーソル処理:データベースの表から1行を取り出すこと
    • 次のような SELECT 文
    • この INTO を見たことがない

SELECT 社員名, 年齢 INTO :name, :age FROM 社員表 WHERE 社員コード = '100';

  • 動的 SQL:実行する SQL 文がプログラム実行中でな ければ決まらない場合に SQL 文を動的に作成し実行する方式
  • 上の社員コードがふつう変わる:それが「動的」。
  • この動的な部分に変なコードを埋め込むとまずいというのがセキュリティ問題で、例えば SQL インジェクションの問題。
P.328 ホスト変数
  • ホスト変数:データベースとプログラムのインタフェースとなる変数
  • 埋め込み SQL では SQL を実行すると取り出されたデータをINTO句で指定したホスト変数に格納する
  • ホスト変数は通常の変数としてもアクセスできる
    • 出力関数で表示
    • 入力関数で値を入力してそれをSELECT文の条件としても使える
P.329 6.7.2 カーソル処理とFETCH
P.329 カーソル処理
  • 「SELECT・・・・INTO・・・」形式では,1行のデータしか取り出せない
    • (見たことがないのでイメージがつかない)
  • 検索結果が複数行の場合は1行ずつ取り出せるカーソル処理を使う
  • カーソル処理は SQL 文で問い合わせた結果をあたかも1つのファイルであるかのようにとらえる
  • FETCH文でそこから1行ずつ取り出す方式
    • 1つのSELECT文に対してカーソルを宣言(定義)
    • カーソルのオープンでSELECT文が実行
    • カーソルで1行ずつ取り出せる
    • FETCH文で繰返し行を取り出して処理
    • 終了したらカーソルを閉じる
P.330 FETCHで取り出した行の更新
  • 参考:図 6.7.2:FETCHで取り出した行の更新処理
  • FETCH文で取り出した行を更新あるいは削除する場合,FETCH文のあとに続くUPDATE文やDELETE文のWHERE句 に「WHERE CURRENT OF カーソル名」と指定する。
  • (FETCH 文を見たことがないのでイメージつかない)
P.330 処理の確定と取消し
  • 一連のデータを更新している途中でエラーが出た場合
  • それまでの更新処理を取り消して元に戻す必要がある
  • 整合性を取らないといけない:いわゆるロールバックが必要
  • トランザクションが正常終了したときは「コミット」する:更新処理の確定
P.331 6.8 データベース管理システム
P.331 6.8.1 トランザクション管理
P.331 トランザクションとは
  • 複数の利用者が同時にデータベースにアクセスしてもデータが矛盾してはいけない
  • この仕組みがトランザクション管理
  • トランザクション:データの整合性を取るための SQL 処理の最小単位
    • 「回復の単位(Unit of Re-covery)」とも呼ぶ
P.331 ACID 特性
  • トランザクション処理は原子性・一貫性・隔離性・耐久性の 4 特性が必要
  • 厳密な一貫性(完全一貫性)が必要
    • トランザクションではそのすべての処理が完了するか(All)、あるいはまったく実行されていない状態か(Nothing)のどちらか一方で終了しなければならない
    • これは,COMMIT(正常終了),、ROLLBACK(異常終了)で実現できる
    • COMMIT(コミット):更新処理を確定し、データベ ースへの反映を保証する
    • ROLLBACK(ロールバック):更新処理をすべて取 消し,トランザクション開始時点の状態へ戻す
  • 参考:結果整合性
    • 完全一貫性に対する概念
    • 分散トランザクションやいわゆる NoSQL で使われる
    • 参考:分散トランザクション
      • トランザクション管理するべきテーブルが複数のデータベースにまたがっているとき
      • すべてのデータベースをロールバックしなければいけない
P.331 表 6.8.1 ACID 特性
  • 原子性(Atomicity)
    • 更新処理トランザクションが正常終了した場合だけデータベースへの反映を保証する
    • 異常終了時は処理が何もなかった状態に戻す
  • 一貫性(Consistency)
    • トランザクションの処理によってデータベース内のデ ータに矛盾が生じないこと
    • 常に整合性のある状態が保たれていること
  • 隔離性(Isolation)
    • 複数のトランザクションを同時(並行)に実行した場合 と,順(直列)に実行した場合の処理結果が一致するこ と
    • 独立性ともいう
    • トランザクションのスケーリング:複数のトランザクションを同時実行してもそれが正しい順で実行されるように順序づけること
      • 基本は並行実行の結果と直列実行の結果が等しくなるように調整する
    • ロック:直列可能性を保証する方法
  • 耐久性(Durability)
    • いったん正常終了したトランザクションの結果はそ の後に障害が発生してもデータベースから消失しないこと
    • トランザクションの再実行を必要としないこと
P.332 6.8.2 同時実行制御

2020-12-20 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:6.3.2 正規化の手順まで
    • 本編:「04-01 以下、高校数学水準で」
  • 今回の進捗
    • 基礎知識編:P.319 6.5.3 その他の DML 文
    • 本編:「期待値をコードで表す」まで

課題

TODO

自分用メモ

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 2,3
theta = np.linspace(0, np.pi, 1001)
phi = np.linspace(0, 2 * np.pi, 1501)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

TeX の記録

  • TODO

\begin{align} a \end{align}

日々の勉強

Julia

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、しばらく DB の話
復習
  • 3 つのスキーマ
    • ユーザーが見るレベル
    • 正規化などをかけておいたデータベースにもっていけるレベル
    • 個々のデータベースに合わせた具体的なレベル
  • インメモリの DB:コンピューターの基本的なハードウェア構成と意味を復習しよう
本の記述を追いかける
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
P.375 スイッチングハブ
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
P.375 ブロードキャストストリーム
  • データリンク層で動作するブリッジやスイッチングハブなどの LANスイッチはブロードキャストフレームを受信ポート以外 のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
P.376 ネットワーク層の接続
  • 第 3 層(レイヤ 3)
P.376 ルータ
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
P.376 デフォルトゲートウェイ
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト ゲートウェイを中継する
P.376 ルーティング
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
P.377 ルータの冗長構成
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
P.377 レイヤ3スイッチ(L3スイッチ)
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
P.378 トランスポート層以上の層の接続
P.378 ゲートウェイ
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
P.378 L4スイッチ・L7スイッチ
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
P.379 7.2.5 VLAN
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
P.380 データリンク層の制御とプロトコル
  • データリンク層:第2層
P.380 7.3.1 メディアアクセス制御
  • 複数のデータを1つのケーブルを通して送受する場合,データの衝突(コリジョン)を回避するための制御が必要
    • これがメディアアクセス制御(Media Access Control:MAC)
コリジョン(衝突)

イーサネットや無線LANで複数の端末が送信し、データが衝突する現象を指す。旧式のイーサネット規格では、端末同士を接続するときに1組の通信路で双方向の通信を行う半二重通信のため、送信と受信を同時に行うことができない。送信と受信をその都度切り替えて行うので、端末がお互いデータを送信してしまうと衝突する可能性が高くなる。

P.380 CSMA/CD
  • CSMA/CD:Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセ ス/衝突検出)の略。
  • イーサネットで採用されている方式
    • 衝突検知方式を採用
    • イーサネット:IEEE 802.3として標準化されている LAN規格
  • CSMA/CD
    • 各ノードは伝送媒体が使用中かどうかを調べて,使用中でなければデータを送りはじめる
    • 複数のノードが同時に通信しはじめるとデータの衝突が起こる
    • 衝突を検知し,一定時間(ランダム)待った後で,再送
    • 一定の距離以上のケーブルでは衝突が検知できない
  • CSMA/CD方式の限界
    • トラフィックが増加するにつれて衝突が多くなる
    • 再送が増え,さらにトラフィックが増加する悪循環に陥る可能性がある
    • 特に伝送路の使用率が30%を超えると実用的でなくなる
P.381トークンパッシング方式
  • トークンによる送信制御を行う方式で
    • トークンバス方式
    • トークンリング方式
P.381 トークンパッシング方式
  • ネットワーク上をフリートークンと呼ばれる送信権のためのパケットが巡回する
    • フリートークンを獲得したノードだけが送信できるので衝突を避けられる
    • ふつうはコンセントレータ(集線器)でネットワ ークとノードを結ぶ
  • トークンパッシング方式を採用したLAN規格
    • 例:FDDI:Fiber Distributed Data Interface
    • FDDIは物理媒体に光ファイバを利用し,最大100Mビ ッ ト/秒の通信
  • 特徴
    • 伝送媒体上では衝突しない
    • トラフィックが増えるにつれてトークンを獲得しにくくなり,少しずつ遅延時間が増える
    • 衝突による再送制御の必要がないため伝送路の使用率に対する遅延時間の増加率はCSMA/CD方式より緩やか
P.382 TDMA 方式
  • TDM(時分割多重)
    • ネットワーク上にデータを送信する時間を割 り当てる(タイムスロット)
    • タイムスロットごとに別のデータを送って多重化する
    • TDM によるアクセス制御が TDMA
  • TDMA(Time Division Multiple Access:時分割多重アクセス)
    • CSMA/CD・トークンパッシング方式と並ぶ主要なデー タリンク技術
    • TDMA ではネットワーク(伝送路)を使える時間を細かく区切る
    • 割り当てられた時間は各ノードが独占する方式
    • TDMAはコネクション型の通信
P.382 7.3.2 無線LANのアクセス制御方式
P.382 CSMA/CA方式
  • CSMA/CA:Carrier Sense Multiple Access with Collision Avoidance、搬送波感知多重アクセス/衝突回避
  • 無線 LAN の制御方式
  • CSMA/CD との違い:「衝突検出」が「衝突回避」になった
  • 無線 LAN:物理層媒体は電波で衝突の検出は不可能だから回避する
  • 特徴
    • 送信ノードは使いたい周波数帯の使えるか確認後、必ずランダムな時間だけ待ってから送信をはじめる
      • 待ち時間をバックオフ制御時間とよぶ
    • 衝突してフレームが壊れても検出できない
      • データを受け取ったノードは ACK を返す
P.328 RTS/CTS
  • 無線 LAN の話
  • 隠れ端末問題
    • 他のノードのデータ送信を感知できないことがある
    • 通信ノード間の距離が遠い
    • ノード間に障害物がある
  • 回避のための RTS/CTS 方式
  • 無線 LAN ノード
    • データ送信前にRTS(Request ToSend:送信リクエスト)をアクセスポイントに送信
    • これを受理したアクセスポイントがCTS(Clear to Send:送信OK)を返信
      • 他のノードは CTS を傍受して自分以外の別のノードに送信権があると解釈
      • データ送信を延期
    • 無線LANノードはアクセスポイントからCTSを受信したらデータ送信開始します
    • 衝突抑制:CTSに書かれた他のノードに対する送信抑制時間を使う
  • データ送信開始前にデータ送信のネゴシエーシ ョンとして RTS/CTS 方式を使った CSMA/CA を CSMA/CA with RTS/CTS とよぶ
P.383 無線LANの動作モード
  • 無線 LAN の動作モード:図7.3.4参照
  • 2 つのモードがある
  • インフラストラクチャモード:無線LANノードがアク セスポイントを通じて相互に通信
  • アドホックモード:アクセスポイントなしに無線LANノードどうしが直接通信
P.383 COLUMN FDMA,CDMA
  • 表7.3.1:多元接続する技術グループ
    • TDMA とセット
  • FDMA
    • ある周波数帯をさらに細かい周波数帯に分割
    • 接続できる端末数を増やす技術
  • CDMA
    • 周波数も時間も分割しない
    • 符号で各端末の通信を識別・分離
    • 接続できる端末数を増やす
P.383 7.3.3 データリンク層の主なプロトコル
  • 第 2 層
P.384 ARP
  • ARP(Address Resolution Protocol):通信相手のIPアドレスからMACアドレスを取るためのプロトコル
  • ARPの動作
    • ブロードキャストで目的IPアドレスを指定したARP要求パケットをLAN全体に流す
      • ブロードキャスト:ネットワークに参加するすべての機器に同時に信号やデータを送ること
    • 各ノードは自分のIPアドレスと比較
    • 一致したノードだけARP応答パケットに自分のMACアドレスを入れて返す(ユニキャスト)
  • 参考:GARP(Gratuitous ARP)
    • 主な目的:自身に設定するIPアドレスの重複確認・ARPテ ーブルの更新
    • 目的IPアドレスに自身が使うIPアドレスを指定し,MACアドレスを問い合わせる
P.384 RARP
  • Reverse-ARP:逆アドレス解決プロトコル
    • MACアドレスからIPアドレスを取る
  • 電源オフ時にIPアドレスを保持できない(IPアドレスを保持するハードディスクをもたない)機器が電源オン時に自分のMACアドレスから自身に割り当てられているIPアドレスを知るために使う
  • RARP サーバー
    • MACアドレスとIPアドレスの対応表を持ったサーバー(RARPサーバー)が必要
P.384 PPP
  • PPP:Point to Point Protocol
    • 2 点間をポイントツーポイントでつなぐためのデータリンクプロトコル
    • WANを介して2つのノードをダイヤルアップ接続するときに使う
  • ネットワーク層(第3層)とネゴシエーションする NCP(ネットワーク制御プロトコル)とリンクネゴシエーションするLCP(リンク制御プロトコル)からなる
    • NCP:Network Control Protocol
    • LCP:Link Control Protocol
  • リンク制御やエラー処理機能を持つ
P.384 PPPoE
  • PPPoE:PPP over Ethernet
  • PPPと同等な機能をイーサネット(LAN)上で実現するプロトコル
  • PPPフレームをイーサネットフレームでカプセル化して実現
P.384 7.3.4 IEEE 802.3規格
  • メディアアクセス制御に CSMA/CD 方式を使う LAN についての標準
  • OSI基本参照モデルにおけるデータリンク層(第 2 層)と物理層(第 1 層)のプロトコルおよびサービスを規定
    • OSI 基本参照モデルでのデータリンク層を LLC 副層と MAC 副層の2つに分割
    • 物理層での LAN で使う伝送媒体や MAC 副層でのフレーム構成や衝突検出の仕組みを規定
  • ツイストケーブルの企画が表 7.3.2 にまとまっている
P.386 7.4 ネットワーク層のプロトコルと技術
  • もうやった
P.300 6.3.2 正規化の手順
P.300 第 1 正規化
  • 非正規:くり返し部分をもつテーブルのこと
    • まずもってくり返しという言葉の理解自体がたぶん面倒
    • いろいろな例に触れてみよう
  • RDB は平坦な 2 次元の表(テーブル)
    • くり返し部分をもつ表から繰り返しを排除してスリム化したい
  • 第 1 正規化:くり返しを排除する操作
    • 第 1 正規形:第 1 正規化して得られた表のこと
    • cf. P.300 図6.3.4 の売上表
  • P.300 図 6.3.5
    • 売り上げ明細表:主キーの売上番号とくり返し部分を一意に決める商品番号が複合キー
    • 別の表に分解する
    • 外部キー:他のテーブルの主キーである売上番号を参照している
  • 分解・独立させた表に元の表の主キーをもたせる理由:結合で元の表を再現するため
P.301 第1正規形におけるデータ操作での不具合
  • 第1正規形になった表は RDB 上で定義できる
  • データの冗長性のためにデータ操作時に不整合を起こさないように注意が必要:更新時異常の概念
  • 種類は以下の通り
  • 例は本 P.300 の売り上げ表・売上明細表から
  • 第 1 正規形では以下のような更新時異常が起きる可能性がある
    • 防止策が第 2 正規化・第 3 正規化
    • どこまでどうやるかは状況次第
# P.301 修正時異常
  • 商品名「オレンジ」を「清見オレンジ」に変更したい
    • 該当する行をすべて同時に変更しなければならない
    • 1行でも変更し忘れるとデータ不整合が起きる
  • 先に対策を書いておく
    • 売上明細には商品番号だけ持たせて、商品名を削る
    • 削った代わりに商品テーブルを作る
    • (ふつう商品テーブルには単価も切り出す)
    • (単価に消費税を載せるかどうかといった問題もある)
# P.301 挿入時異常
  • 売上明細表の主キーは売上番号と商品番号の複合キ ー
  • 売上のない("売上番号"が空値)商品は登録できない
    • どうやらこの本の「売上表」は商品テーブルも兼ねているらしい
  • 先に対策
    • 商品テーブルを別に作って、そこからの参照という形にする
# P.301 削除時異常
  • (先程と同じくこの本の売り上げ表は商品テーブルも兼ねている模様)
  • 売上実績が 1 つしかない商品のの売上データを削除す ると商品データも削除される
  • 逆に商品データを残そうとすれば売上データは削除できない
  • 先に対策:商品テーブルを切り出す
P.301 第2正規化
  • 第2正規化:すべての非キー属性が各候補キーに完全関数従属である状態にする操作
    • 第1正規形の表に対して行われる操作
    • 候補キーの一部に部分関数従属する非キー属性を別の表に分解する
    • 第2正規化して得られた表を第2正規形という
  • 例:図6.3.7の売上明細表
    • 候補キーは主キーの{売上番号,商品番号}の1
    • 非キー属性である商品名と単価は主キーの一部である商品番号に部分関数従属している
      • 商品表として独立させる
  • 分解の仕方
    • 商品表の主キーを商品番号
    • 図6.3.7の上の表を再現できるようにする
      • 売上明細表(図6.3.7の下の表)には商品表の主キーを参照する外部キーとして"商品番号"を残す
# P.302 メモ
  • 第2正規化するのは候補キーが複数の属性で構成されている場合。
    • 1つの属性で構成されているのであれば部分関数従属は存在しない
    • 既に第2正規形
  • 非キー属性:どの候補キーにも属さない属性
  • 第2正規形:どの非キー属性も候補キーの真部分集合に対して関数従属しない
    • どの非キー属性も候補キーに完全関数従属
P.302 第3正規化
  • 第3正規化:非キー属性間の関数従属をなくしてどの非キー属性も候補キーに直接に関数従属している状態にする
    • 第2正規形の表に対して行われる操作
    • 候補キーに推移的関数従属している非キー属性を別の表に分解
    • 第3正規化して得られた表を第3正規形
  • 例:図6.3.8の売上表
    • これは第2正規形
    • 顧客番号→顧客名いう非キー属性間の関数従属がある
    • 顧客番号を主キーとした顧客表として独立させる
    • 売上表には顧客表の主キーを参照する外部キーとして顧客番号を残す
# P.303 メモ
  • 第3正規形:どの非キー属性も候補キーに推移的関数従属しない
    • どの非キー属性も候補キーに直接に関数従属している
  • ボイス・コッド正規形
    • 第3正規形では次の関数従属が存在する可能性がある
      • 候補キーの真部分集合から他の候補キーの真部分集合への関数従属
      • 候補キー以外の属性から候補キーの真部分集合への関数従属
    • この関係を分解したのがボイス・コッド正規形
P.303 正規化と非正規化
  • 正規形には第1正規形から第5正規形まである
    • たいていの用途ではデータベースの場合、第3正規形まで正規化されていれば十分といわれている
  • 正規化の目的はデータ操作にともなう更新時異常の発生を防ぐこと
    • 属性間の関数従属を少なくする
    • データの重複を排除する
  • 正規化のデメリット
    • 表がいくつにも分割される
    • 必要なデータを取り出すために表を結合しないといけない
    • 処理時間がかかる
  • 処理速度が必要な時や更新時異常の発生が低い場合はあえて正規化しない・正規化を解く
    • たとえば更新が少ない表は正規化しない
  • ここでの「非正規化」:アクセスパターンを考えたうえでどの表を統合するか、どの属性を表間に重複させるか考える
P.304 6.4 関係データベースの演算
P.304 6.4.1 集合演算
  • 関係データベースでの集合演算
    • 同じ型の表間での和、共通部分(積)、差
    • 直積:同じ型の表でなくてもいい
P.304 和、共通(積)、差
  • 図6.4.1の表AとBに対するそれぞれの演算結果を見る
  • 本参照
P.305 直積演算(Cartesian Product:×)
  • 社員表と部門表の直積は社員表の各行に対して部門表の行を1つずつつなぎ合わせた表
  • 直積の結果として得られる新しい表を直積表と呼ぶ
    • 次数(属性の数)は両方の表の次数を足した数
    • 位数(タプルの数)は両方の位数を掛けた数
  • 直積が役に立つイメージがない:実際には結合 (JOIN) を本当によく使う
P.305 6.4.2 関係演算
  • 関係演算:関係データベース特有の演算
    • 射影,選択,結合,商
  • 関係代数:関係演算と集合演算を合わせた代数
    • 導出表:これらの演算によって得られた表
# P.306 SQL の例
  • 先に持ってきてみた

SELECT 社員コード, 社員名, 部門表.部門コード, 部門名

FROM 社員表, 部門表

WHERE 社員表.部門コード = 部門表.部門コード

P.305 選択と射影
  • 選択演算:表から指定した行を取り出す関係演算
    • SQL でいう WHERE
  • 射影演算:表から指定した列を取り出す関係演算
    • SQL でいう SELECT column_name
P.306 結合
  • 参考:P.306 の下の表
  • 結合演算:2つの表が共通にもつ項目(結合列)で結合して新しい表をつくり出す関係演算
    • まさに正規化でわけたテーブルを結合させる演算
  • SQL:SELECT文のFROM句で複数の表名をカンマで区切って指定
    • WHERE句で結合条件を指定
  • 結合条件
    • 結合列の値を>,≧,=,≠,≦,<のいずれかの比較演算子で比較して結びつける
  • 等結合:比較演算子が「=(等号)」である結合
    • 2つの表から作成される直積表から結合列の値が等 しいものだけを取り出す
    • 得られた新たな表には結合列が重複して含まれる
    • SELECT句でどちらか一方の結合列を指定して見かけ上の重複を除く
  • 自然結合(natural join):重複する結合列を取り除く(一方のみ残す)ようにした結合
    • 結合列の列名が2つの表で同じ場合に使える
    • 参考
      • (意識的に使ったことがない)
P.307 内結合と外結合
  • 参考:P.307 の図 6.4.8
  • 内結合(INNER JOIN)
    • 結合列の値が等しい行だけを取り出す結合演算
    • 片方の表にしか存在しない行は取り出せない
    • データベース言語仕様(JIS X 3005)
  • 外結合(OUTER JOIN)
    • 片方の表にしか存在しない行も取り出せる結合
    • 結合相手の表に該当するデータが存在しない場合はNULL(空)値で結合
    • 左外結合・右外結合・完全外結合
  • 等結合
    • 結合する表をFROM句で指定、結合条件はWHERE句 で指定
  • 内結合・外結合
    • 結合する表をFROM句の中でJOINを使って指定
    • 結合条件は JOIN に続くON句で指定する
    • 参考:p309のコラム「内結合と外結合のSQL文」
P.307 左外結合(LEFT OUTER JOIN)
  • 参考:P307 図 6.4.9、P309 の SQL 文
  • 結合する左の表(社員表)が基準
  • 右の表(部門表)に存在しない行を空値(NULL)として結合
P.308 右外結合(RIGHT OUTER JOIN)
  • 参考:P.308 図 6.4.10
  • 結合する右の表(部門表)が基準
  • 左の表(社員表)に存在しない行をNULLとして結合
P.308 完全外結合(FULL OUTER JOIN)
  • 参考:P.308 図 6.4.11
  • 片方だけに存在する場合もう片方をNULLとして結合
P.308 商
  • (これ何だろうか?where の in?)
    • 普通に in または =`= でよさそう?
    • select も含んでいる?
  • 参考:P.308 図 6.4.12
  • 関係R(X,Y1,Y2)とS(Y3,Y4)がある
  • S(Y3,Y4)のすべての行がR(Y1,Y2)に含まれる場合に対応するR(X)を求める演算
    • 商(R÷S)は関係Rの中から関係Sのすべての行を含む行を取り出し、そこから関係Sの項目を除く
    • 重複行も除く
  • 参考:P.309、図6.4.13
    • 社員表から東京に住み営業2課(E02)に勤務する社員を探す場合に商演算を使う
P.309 COLUMN 内結合と外結合の SQL
  • 本を読もう
P.310 6.5 SQL
P. 310 6.5.1 データベース言語SQLとは
  • SQL(Structured Query Language)
  • RDB の標準的な操作言語
  • ほとんどの RDBMS が SQL を使っている
    • Relational DataBase Management System
P.310 SQLの分類
  • RDB のデータを検索(参照)、操作
  • データ定義
  • トランザクション制御
  • 参照:表 6.5.1 に SQL 文が書いてある
P.310 表 6.5.1 重要な SQL
  • DDL (Data Definition Language)
    • CREATE, DROP, GRANT, REVOKE
  • DML (Data Manipulate Language)
    • SELECT, INSERT, UPDATE, DELETE, COMMIT, ROLLBACK, DECLARE CURSOR, OPEN, FETCH, CLOSE
  • DECLARE CURSOR以降は親言語方式などで使用されるSQL
  • 親言語方式
    • CやCOBOLなどのプログラム中にSQL文を組み込んでデータベースにアクセスする方式。
    • 埋込みSQL:p328参照
P.311 6.5.2 SELECT文
  • データ操作言語(DML)
    • 問合せ(SELECT)文
    • 挿入(INSERT)文
    • 更新(UPDATE)文
    • 削除(DELETE)文
    • などなど
  • SELECT文以外のDMLは「6.5.3 その他のDML文」(p319)参照
P.311 SELECT文の構文
  • SELECT文の基本構文
    • [ ]内は省略可能

SELECT

[DISTINCT]

列名のリスト

FROM 表名のリスト

[WHERE 選択条件や結合条件]

[GROUP BY 列名のリスト]

[HAVING グループ選択条件]

[ORDER BY 列名のリスト]

  • リスト:列名および表名をカンマ(,)で区切って列挙したもの。
P.311 行、列の取り出し
  • 選択:WHERE句に選択条件を指定すると特定の行を取り出せる
    • in とリストを使うと複数行に対する
    • 具体例を考えないと使い分けや気分はわからなそう
  • 射影:SELECT句に列名を指定すると特定の列を取り出せる
  • SELECT句への *:全部の列を取りだす
  • 選択条件と論理演算子(AND・OR・NOT):複数の条件を組み合わせる
  • 表 6.5.2:選択条件に使う比較演算子の表
  • 参考:列の値が「空値(NULL)であるか」という検索条件
    • WHERE 列 IS NULL
    • WHERE 列 = NULLではない
    • NULL は他にもいろいろ邪悪な面がある
    • 空文字列などとは違う概念でよくはまる
# SQL 例
  • P.312、図 6.5.1
  • 社員表から年齢が24以上28以下の社員コード・社員名を表示するサンプル

SELECT 社員コード, 社員名 FROM 社員表 WHERE 年齢 >= 24 AND 年齢 <= 28

P.312 BETWEEN述語
  • 先のSELECT文はBETWEEN述語やIN述語を使って同じ内容を表せる
  • BETWEEN述語は「値1~値2」の範囲(値1,値2を含む)に列の値が含まれるかを選択条件にする

SELECT 社員コード, 社員名 FROM 社員表 WHERE 年齢 BETWEEN 24 AND 28

P.312 IN述語
  • IN述語は列の値が指定された値のいずれかと等しいかを選ぶ条件にする場合に使う
  • INの前にNOTをつけると指定された値のいずれでもないという選択条件になる
  • IN述語の使用例については副問合せ(p317)も参照
P.313 重複行の排除
  • 取り出された行の中から重複するものを除きたい場合
  • SELECT句の列名指定にDISTINCT述語を使う
P.314 出力順の指定
  • ORDER BY 句:特定の列の値で昇順・降順に並べ替えて表示する
    • ORDER BY のあとに続けて並べ替えのキー(列名)を指定
    • 降順の場合はDESC、昇順の場合はASC
    • ふつう ASC がデフォルトで省略できる

SELECT 社員名, 年齢 FROM 社員表 ORDER BY 年齢 DESC

P.314 グループ化
  • GROUP BY 句:取り出した行を指定した列の値でグループ化
    • グループごとの合計や最大値などを求める
  • HAVING 句:条件に合ったグループだけを取り出す

SELECT 所属, COUNT(), AVG(年齢) FROM 社員表 GROUP BY 所属 HAVING COUNT() >= 2

  • SQL の簡単な解説
    • 社員表のデータをGROUP BY句を使って所属でグループ化
    • HAVING 句で「グループに所属する人数が2人以上」のグループだけを取り出す
    • 取り出したグループごとにその所属・人数・平均年齢を求める
P.315 表の結合
  • 2 つの結合
    • SELECT A FROM B WHEREによる等結合
    • FROM 句の中での JOIN ... ON による内結合や外結合
  • どちらであっても結合表には結合条件で指定した結合列が重複して含まれる
    • 列名を指定するときは「表名.列名」という形式で表す
P.316 表に別名をつける
  • FROM句で「表名 AS 別名」あるいは「表名 別名」と指定すると表名に対して別名(相関名)を設定できる
  • 自己結合:表に別名を与えると同じ表どうしを結合できる
  • 自己結合については P.317 の例を参照
    • 上司コードを使ってある社員とその上司の氏名や関連情報を見たい場合に使う
P.317 副問い合わせ
  • サブクエリともいう
  • SELECT文のFROM句やWHERE句・HAVING句などに指定されている入れ子になったSELECT文

SELECT 社員コード, 社員名, 年齢 FROM 社員表 WHERE 年齢 IN (SELECT 指定年齢 FROM 調査対象)

  • サブクエリにはいろいろ面倒な話がある
  • 参考:MySQL のサブクエリって、ほんとに遅いの?
    • これは 2017 年の記事:この辺はお金になるので割と日進月歩で、3 年程度の昔の情報でも既に参考にならないことも多い。
    • 簡単なまとめ
      • 遅いのは2番目、DEPENDENT SUBQUERYである
      • MySQL 5.5 までサブクエリはやっぱり遅い
      • MySQL 5.6 からはそんなに遅くなくなった
      • MySQL とはいってもバージョンによって全然違う:オプティマイザは進化している
    • 現状についてはきちんと最新の話を追う、または自分が必要なケースについて実測する
P.318 EXISTS述語
  • サブクエリはEXISTS述語でも表せる
  • 参照:P.318 の例
    • EXISTS は相関副問合せが何らかの結果を返した場合にTRUE(真),何も返さなかった場合にFALSE(偽)を返す
    • 主問合せの結果1行に対して相関副問合せから何らかの結果が戻されれば、主問合せの選択条件は成り立ち、何も返されなければ選択条件は成り立たない
  • EXISTS 述語でほかの表にも存在するものを調べられる
  • ANY でも同じ操作を表せる
    • 参考:P.318 の例
    • 副問合せの結果のいずれか(ANY)と等しい
  • どれがいいかは最終的にはテーブルの実装や使っている RDBMS とバージョンに依存する
    • 実測してチューニングしよう
P.319 6.5.3 その他の DML 文
P.319 INSERT文
  • 表に行を挿入する:2つ方法がある
    • 参考:本の P.319
    • 挿入する値をVALUES句で指定する
    • 問合せの結果をすべて挿入する
    • (DBMS によるかもしれないが)個別INSERTと一括INSERTもある:パフォーマンスでよく問題になる
  • 一部の列に対して INSERT
    • どの列に対して挿入するのか列名リストで指定
    • 省略された列の値はDEFAULT制約があればその既定値、そうでなければNULL値
    • NULL はなるべく使うのをやめよう
    • DEFAULT は P.322 表 6.6.1
P.319 UPDATE文
  • 表中のデータを変更
    • 列の変更値を直接指定する
    • 変更値をCASE式で決める
    • 副問合せの結果を変更値にする
  • SET句には変更したい列の値を「列名 = 変更値」の形で指定
  • 1 つのUPDATE文で複数の列の値を変えるときはカンマ(,)で区切って指定
  • WHERE句を省略すると表中のすべての行が変わる
    • ふつうはやらない
    • WHERE句を指定すれば条件に合った行だけ変わる
P.320 DELETE文
  • 表中の行を削除する
    • 表中の全行を削除しても表自体は残る
    • 表を削除するのはDROP文
  • WHERE句を省略すると表中のすべての行が削除される
  • WHERE句を指定するとその条件に一致した行だけを削除できる
P.320 参照関係をもつ表の更新
  • 関連する2つの表の間に参照制約が設定できる
    • 被参照表の主キー(候補キー)にない値を参照表の外部キーに追加できない
  • 被参照表の行の削除・変更時に制約が出る:図6.5.10参照
  • 参照動作指定:削除・変更時の制約は明示的に指定できる
    • 次節のCREATE TABLE文を参照
    • REFERENCES句(参照指定)の後に次の構文で指定

参照動作指定 REFERENCES 被参照表(参照する列リスト) ON DELETE 参照動作] [ON UPDATE 参照動作] (*[ ]内は省略可能)

  • 指摘できる参照動作:表 6.5.5 の 5つ
    • デフォルトは NO ACTION
# P.320 補足
  • 参照制約
    • 外部キーの値が被参照表の主キーあるいは主キー以外の候補キーに存在することを保証する制約。
    • 関連する2つの表の間に参照制約を設定する目的:データ矛盾を起こすような行の追加や削除・変更を排除するため
  • REFERENCES指定:p322-324を参照
  • データの整合性を保つための制約
    • 一意性制約
    • 参照制約
    • データ項目のデータ型や桁数に関する形式制約
    • データ項目が取り得る値の範囲に関するドメイン制約がある。
P.322 6.6 データ定義言語(DDL)
P.322 6.6.1 実表の定義
P.322 CREATE TABLE文
  • 表の定義はには CREATE TABLE 文
  • 基本構文は P.322 参照
P.322 列制約
  • 表を構成する列に対する制約
  • 参考:表6.6.1
  • 一意性制約:同一表内に同じ値が複数存在しないことを保証する制約
    • 主キーとなる列には一意性制約にとNOT NULL制約を加えたPRIMARY KEY指定
    • 主キー以外の候補キーにも一意性制約がある
    • 一般にNULL(ナル)値は重複値とは扱われない
    • 候補キーにはNULL値を許すUNIQUE指定
  • 参照制約:外部キーの値が被参照表に存在することを保証する制約
  • 外部キー:REFERENCES指定(参照指定)す。
P.323 表制約
  • 一意性制約・参照制約・検査制約は表制約(表定義の要素として定義される制約)にもできる
  • 列制約:1つの列に対する制約
  • 主キーや外部キーが複数列から構成される場合、これを列制約として定義できない
    • このときは表制約を使う
P.323 主なデータ型
  • 一般的な文字型,数値型は覚えておくといい
P.324 実表の定義例
  • P.324 の社員表と部門表を定義を見てみよう
P.325 6.6.2 ビューの定義
P.325 ビューとは
  • 実表:ディスク装置上にあり実際にデータが格納される表
  • ビュー:実表の一部または複数の表から必要な行や属性(列)を取り出してあたかも1つの表 であるかのように見せかけた仮想表
    • 利用者から見れば実表と同じ
    • データを検索するだけなら制約はあっても同じように操作できる
  • ビューのメリット
    • あくまでも仮想の表:対象となった元の表(基底表)の列名と別の名前で定義できる
    • ビューに定義することで情報を公開
    • ビューに定義しないことで情報を非公開にできる
    • 元の表に新たな列が追加されても既存のビューには影響がなく再定義する必要がない
  • ビューは仮想的な表
    • 一般には実体化されずデータ格納領域をとら ない。
    • 実表のように実体化されるビューもある:体現ビュー(materialized view)
P.325 CREATE VIEW文
  • ビューの定義:CREATE VIEW文による:詳細は本の P.325
  • ビュー:対象となる実表(あるいは他のビュー)からSELECT文で必要データを導出する方法で定義される定義するビューの列名に命名規則はない
    • 列数はAS句に続くSELECTで問い合わせた結果の列数と同じでなければならない
    • 列名は省略可能:省略した場合はSELECTで問い合わせた結果の列名がそのまま定義される
  • ビューに対する参照や更新処理
    • ビューの対象となった表(基底表)に対す る参照あるいは更新処理に変換されて実行される
P.326 ビューの定義例
  • 本の P.326 参照
  • 社員表と部門表から社員コードと社員名、その社員が所属する部門名からなる表をビュー「社員表2」
    • JOIN して必要なカラムだけ取り出す
P.326 ビューの更新
  • ビューへの更新処理 ビュー定義を基にビューが参照している表(基底表)への対応する処理に変換されて実行
  • 更新のための条件
    • 更新にかかる実際の表が更新可能
    • 更新される表の列や行が一意に決まる
  • 更新できないビューの例
    • SELECT句で式、集合関数、DISTINCT を使ったSELECT文で定義されている
    • ・GROUP BY句やHAVING句を使ったSELECT文で定義されている
P.327 6.6.3 オブジェクト(表)の処理権限
  • スキーマに定義された実表やビューはそのスキーマ所有者(作成者)にしか処理権限が与えられない
  • 複数の利用者がデータベースを利用できるようにしたければ、スキーマ所有者以外にも処理権限を付与する必要がある
    • データベース管理ユーザーは全権を持っていて危険な処理もできてしまう
    • できることを制限したユーザーで操作したい
  • オブジェクト(表)の処理権限
    • 読取(SELECT)権限
    • 削除(DELETE)権限
    • 挿入(INSERT)権限
    • 更新(UPDATE)権限
  • cf. スキーマ
    • 1つのデータベースの枠組み
    • スキーマ内に複数の表やビューを定義できる
P.327 処理権限の付与
  • 権限の付与:GRANT文による
  • GRANTの基本構文は次の通り
1
GRANT 権限 ON 表名 TO 許可識別子
  • 権限指定
    • 4 つの処理権限(SELECT,INSERT,UPDATE,DELETE)
    • ALL PRIVILEGES(すべて)を指定できる
  • 権限を複数付与する場合はカンマ(,)で区切って指定
P.327 処理権限の取消し(変更)
  • 一度付与された権限を取消し(変更)できる
  • 権限の取消しはREVOKE文
  • REVOKEの基本構文
1
REVOKE 権限 ON 表名 FROM 許可識別子
P.328 6.7 埋込み方式
P.328 6.7.1 埋込みSQLの基本事項
P.328 静的SQLと動的SQL
  • 静的 SQL:あらかじめ決められたSQL文をプログラム中に埋込んで実行する方式
    • 実際のアプリケーションではあまり見かけない
  • 非カーソル処理:データベースの表から1行を取り出すこと
    • 次のような SELECT 文
    • この INTO を見たことがない

SELECT 社員名, 年齢 INTO :name, :age FROM 社員表 WHERE 社員コード = '100';

  • 動的 SQL:実行する SQL 文がプログラム実行中でな ければ決まらない場合に SQL 文を動的に作成し実行する方式
  • 上の社員コードがふつう変わる:それが「動的」。
  • この動的な部分に変なコードを埋め込むとまずいというのがセキュリティ問題で、例えば SQL インジェクションの問題。
P.328 ホスト変数
  • ホスト変数:データベースとプログラムのインタフェースとなる変数
  • 埋め込み SQL では SQL を実行すると取り出されたデータをINTO句で指定したホスト変数に格納する
  • ホスト変数は通常の変数としてもアクセスできる
    • 出力関数で表示
    • 入力関数で値を入力してそれをSELECT文の条件としても使える
P.329 6.7.2 カーソル処理とFETCH
P.329 カーソル処理
  • 「SELECT・・・・INTO・・・」形式では,1行のデータしか取り出せない
    • (見たことがないのでイメージがつかない)
  • 検索結果が複数行の場合は1行ずつ取り出せるカーソル処理を使う
  • カーソル処理は SQL 文で問い合わせた結果をあたかも1つのファイルであるかのようにとらえる
  • FETCH文でそこから1行ずつ取り出す方式
    • 1つのSELECT文に対してカーソルを宣言(定義)
    • カーソルのオープンでSELECT文が実行
    • カーソルで1行ずつ取り出せる
    • FETCH文で繰返し行を取り出して処理
    • 終了したらカーソルを閉じる
P.330 FETCHで取り出した行の更新
  • 参考:図 6.7.2:FETCHで取り出した行の更新処理
  • FETCH文で取り出した行を更新あるいは削除する場合,FETCH文のあとに続くUPDATE文やDELETE文のWHERE句 に「WHERE CURRENT OF カーソル名」と指定する。
  • (FETCH 文を見たことがないのでイメージつかない)
P.330 処理の確定と取消し
  • 一連のデータを更新している途中でエラーが出た場合
  • それまでの更新処理を取り消して元に戻す必要がある
  • 整合性を取らないといけない:いわゆるロールバックが必要
  • トランザクションが正常終了したときは「コミット」する:更新処理の確定
P.331 6.8 データベース管理システム
P.331 6.8.1 トランザクション管理
P.331 トランザクションとは
  • 複数の利用者が同時にデータベースにアクセスしてもデータが矛盾してはいけない
  • この仕組みがトランザクション管理
  • トランザクション:データの整合性を取るための SQL 処理の最小単位
    • 「回復の単位(Unit of Re-covery)」とも呼ぶ
P.331 ACID 特性
  • トランザクション処理は原子性・一貫性・隔離性・耐久性の 4 特性が必要
  • 厳密な一貫性(完全一貫性)が必要
    • トランザクションではそのすべての処理が完了するか(All)、あるいはまったく実行されていない状態か(Nothing)のどちらか一方で終了しなければならない
    • これは,COMMIT(正常終了),、ROLLBACK(異常終了)で実現できる
    • COMMIT(コミット):更新処理を確定し、データベ ースへの反映を保証する
    • ROLLBACK(ロールバック):更新処理をすべて取 消し,トランザクション開始時点の状態へ戻す
  • 参考:結果整合性
    • 完全一貫性に対する概念
    • 分散トランザクションやいわゆる NoSQL で使われる
    • 参考:分散トランザクション
      • トランザクション管理するべきテーブルが複数のデータベースにまたがっているとき
      • すべてのデータベースをロールバックしなければいけない
P.331 表 6.8.1 ACID 特性
  • 原子性(Atomicity)
    • 更新処理トランザクションが正常終了した場合だけデータベースへの反映を保証する
    • 異常終了時は処理が何もなかった状態に戻す
  • 一貫性(Consistency)
    • トランザクションの処理によってデータベース内のデ ータに矛盾が生じないこと
    • 常に整合性のある状態が保たれていること
  • 隔離性(Isolation)
    • 複数のトランザクションを同時(並行)に実行した場合 と,順(直列)に実行した場合の処理結果が一致するこ と
    • 独立性ともいう
    • トランザクションのスケーリング:複数のトランザクションを同時実行してもそれが正しい順で実行されるように順序づけること
      • 基本は並行実行の結果と直列実行の結果が等しくなるように調整する
    • ロック:直列可能性を保証する方法
  • 耐久性(Durability)
    • いったん正常終了したトランザクションの結果はそ の後に障害が発生してもデータベースから消失しないこと
    • トランザクションの再実行を必要としないこと
P.332 6.8.2 同時実行制御
  • 同時実行制御(並行性制御):複数のトランザクションを同時に実行しても矛盾を起こすことなく処理を実行するメカニズム
  • 実現する方法:ロック・多版同時実行制御・時刻印アルゴリズム
    • 多版同時実行制御に対してロックによる通常の同時実行制御を単版同時実行制御という
P.331 ロック
  • 複数のトランザクションを同時実行してもその結果はトランザクションを直列実行した結果と同じでなければならない(ACID 特性の隔離性)
  • 同時実行制御が行われない環境では結果が変わる場合もある
  • 例:図 6.8.1 を見ること
    • トランザクションTR1とトランザクションTR2が同じデータaを①→②の順に読み込む
    • それぞれのトランザクションでデータaを③→④の順に更
    • COMMITした場合トランザクションTR1がデータaを「a+5→10」に更新してもトランザクションTR2が aの値を「a+10→15」に更新してしまう
    • トランザクションTR1における更新内容が失われる
    • これを変更消失(ロストアップデート)という
  • こうした問題を防ぐための対処法
    • データベース管理システムではデータaにロック(鍵)をかける
    • 咲にデータaをアクセスしたトランザクションの処理が終了するか、あるいはロックが解除されるまでほかのトランザクションを待たせる制御をする
  • 参考 ダーティリード:他のトランザクションが更新中のコミットされていないデータを読み込むこと
P.333 デッドロック
  • P.250 5.2.5 も参考にすること
  • デッドロック:複数のデータに対してロックしようとして互いにロックの解除を待ち続けてしまう
  • 例:図 6.8.2
    • データA、B、Cを専有して処理するトランザクションTR1,TR2,TR3がある
    • 各トランザクションは処理の進行に合わせて表に示される順(①→②→③)にデータを専有
    • トランザクション終了時に3つの資源を一括して解放
    • トランザクションTR1とトランザクションTR2はデッドロックを起こす可能性がある
  • 再び図 6.8.2 を見る
    • データを専有する順序が等しいトランザションTR1とTR3の間ではデッドロックは起こらない
    • 異なる順や逆順でデータを専有するトランザクション間ではデッドロックが起きうる
  • デッドロックが起きたときロールバックなどで 1 つのトランザクションを強制的に終了させてデッドロックを解除する
P.334 ロック方式
  • 2相ロック方式・木規約
  • ロック方式
    • 第1相:使用するデータすべてにロックをかける
    • 第2相:処理後にロックを解除する
    • トランザクション内でのロック・解除はそれぞれ1回だけ
    • 直列可能性は保証されるがデッドロック発生の可能性は 残る
  • 木規約
    • データに順番をつけてその順番どおりにロックをかける
    • デッドロックが起きず、直列可能性を保証する
    • データへの順番づけには木(有向木)を使う
    • トランザクションの同時実行性が低くなるため特殊な用途で使う(どんなところで使うのだろう?)
  • 参考:有向木
    • 方向をもった有向グラフ(の 1 つ)
    • データ構造とアルゴリズムを勉強しよう
    • データベースは検索の便宜もあってデータ構造とアルゴリズムが大事
P.334 ロックの種類
  • 占有ロック・共有ロックの 2 モード
    • DBMS でトランザクションの同時実行性を高めるため
  • 専有ロック
    • データ更新するときに使うロック
    • データに対するほかのトランザクションからのアクセスは一切禁止
  • 共有ロックは
    • ふつうデータの読取りの際に使用されるロックで
    • 参照だけを許可
  • 表 6.8.2 参照:2 つのロックモードの組み合わせによる同時実行の可否
  • 専有:占有または排他ともいう
  • 共有:共用ともいう
  • 共有ロックで同時実行性を高める
    • 先行トランザクションがロックしたデータを後続トランザクションが参照できる
    • 待ちがなくなり同時実行性が高まる
    • たいていのシステムでは書き込みよりも読み込みの方が多い

2021-01-17 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:P.319 6.5.3 その他の DML 文
    • 本編:04-01「期待値をコードで表す」まで
  • 今回の進捗
    • 基礎知識編:P.326 ビューの更新
    • 本編:04-02「よくある条件付き確率密度関数(確率分布)」まで

課題

TODO

自分用メモ

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 2,5
theta = np.linspace(0, np.pi, 1001)
phi = np.linspace(0, 2 * np.pi, 1501)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

日々の勉強

Julia

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、しばらく DB の話
復習
  • 3 つのスキーマ
    • ユーザーが見るレベル
    • 正規化などをかけておいたデータベースにもっていけるレベル
    • 個々のデータベースに合わせた具体的なレベル
  • インメモリの DB:コンピューターの基本的なハードウェア構成と意味を復習しよう
本の記述を追いかける
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
P.375 スイッチングハブ
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
P.375 ブロードキャストストリーム
  • データリンク層で動作するブリッジやスイッチングハブなどの LANスイッチはブロードキャストフレームを受信ポート以外 のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
P.376 ネットワーク層の接続
  • 第 3 層(レイヤ 3)
P.376 ルータ
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
P.376 デフォルトゲートウェイ
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト ゲートウェイを中継する
P.376 ルーティング
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
P.377 ルータの冗長構成
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
P.377 レイヤ3スイッチ(L3スイッチ)
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
P.378 トランスポート層以上の層の接続
P.378 ゲートウェイ
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
P.378 L4スイッチ・L7スイッチ
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
P.379 7.2.5 VLAN
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
P.380 データリンク層の制御とプロトコル
  • データリンク層:第2層
P.380 7.3.1 メディアアクセス制御
  • 複数のデータを1つのケーブルを通して送受する場合,データの衝突(コリジョン)を回避するための制御が必要
    • これがメディアアクセス制御(Media Access Control:MAC)
コリジョン(衝突)

イーサネットや無線LANで複数の端末が送信し、データが衝突する現象を指す。旧式のイーサネット規格では、端末同士を接続するときに1組の通信路で双方向の通信を行う半二重通信のため、送信と受信を同時に行うことができない。送信と受信をその都度切り替えて行うので、端末がお互いデータを送信してしまうと衝突する可能性が高くなる。

P.380 CSMA/CD
  • CSMA/CD:Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセ ス/衝突検出)の略。
  • イーサネットで採用されている方式
    • 衝突検知方式を採用
    • イーサネット:IEEE 802.3として標準化されている LAN規格
  • CSMA/CD
    • 各ノードは伝送媒体が使用中かどうかを調べて,使用中でなければデータを送りはじめる
    • 複数のノードが同時に通信しはじめるとデータの衝突が起こる
    • 衝突を検知し,一定時間(ランダム)待った後で,再送
    • 一定の距離以上のケーブルでは衝突が検知できない
  • CSMA/CD方式の限界
    • トラフィックが増加するにつれて衝突が多くなる
    • 再送が増え,さらにトラフィックが増加する悪循環に陥る可能性がある
    • 特に伝送路の使用率が30%を超えると実用的でなくなる
P.381トークンパッシング方式
  • トークンによる送信制御を行う方式で
    • トークンバス方式
    • トークンリング方式
P.381 トークンパッシング方式
  • ネットワーク上をフリートークンと呼ばれる送信権のためのパケットが巡回する
    • フリートークンを獲得したノードだけが送信できるので衝突を避けられる
    • ふつうはコンセントレータ(集線器)でネットワ ークとノードを結ぶ
  • トークンパッシング方式を採用したLAN規格
    • 例:FDDI:Fiber Distributed Data Interface
    • FDDIは物理媒体に光ファイバを利用し,最大100Mビ ッ ト/秒の通信
  • 特徴
    • 伝送媒体上では衝突しない
    • トラフィックが増えるにつれてトークンを獲得しにくくなり,少しずつ遅延時間が増える
    • 衝突による再送制御の必要がないため伝送路の使用率に対する遅延時間の増加率はCSMA/CD方式より緩やか
P.382 TDMA 方式
  • TDM(時分割多重)
    • ネットワーク上にデータを送信する時間を割 り当てる(タイムスロット)
    • タイムスロットごとに別のデータを送って多重化する
    • TDM によるアクセス制御が TDMA
  • TDMA(Time Division Multiple Access:時分割多重アクセス)
    • CSMA/CD・トークンパッシング方式と並ぶ主要なデー タリンク技術
    • TDMA ではネットワーク(伝送路)を使える時間を細かく区切る
    • 割り当てられた時間は各ノードが独占する方式
    • TDMAはコネクション型の通信
P.382 7.3.2 無線LANのアクセス制御方式
P.382 CSMA/CA方式
  • CSMA/CA:Carrier Sense Multiple Access with Collision Avoidance、搬送波感知多重アクセス/衝突回避
  • 無線 LAN の制御方式
  • CSMA/CD との違い:「衝突検出」が「衝突回避」になった
  • 無線 LAN:物理層媒体は電波で衝突の検出は不可能だから回避する
  • 特徴
    • 送信ノードは使いたい周波数帯の使えるか確認後、必ずランダムな時間だけ待ってから送信をはじめる
      • 待ち時間をバックオフ制御時間とよぶ
    • 衝突してフレームが壊れても検出できない
      • データを受け取ったノードは ACK を返す
P.328 RTS/CTS
  • 無線 LAN の話
  • 隠れ端末問題
    • 他のノードのデータ送信を感知できないことがある
    • 通信ノード間の距離が遠い
    • ノード間に障害物がある
  • 回避のための RTS/CTS 方式
  • 無線 LAN ノード
    • データ送信前にRTS(Request ToSend:送信リクエスト)をアクセスポイントに送信
    • これを受理したアクセスポイントがCTS(Clear to Send:送信OK)を返信
      • 他のノードは CTS を傍受して自分以外の別のノードに送信権があると解釈
      • データ送信を延期
    • 無線LANノードはアクセスポイントからCTSを受信したらデータ送信開始します
    • 衝突抑制:CTSに書かれた他のノードに対する送信抑制時間を使う
  • データ送信開始前にデータ送信のネゴシエーシ ョンとして RTS/CTS 方式を使った CSMA/CA を CSMA/CA with RTS/CTS とよぶ
P.383 無線LANの動作モード
  • 無線 LAN の動作モード:図7.3.4参照
  • 2 つのモードがある
  • インフラストラクチャモード:無線LANノードがアク セスポイントを通じて相互に通信
  • アドホックモード:アクセスポイントなしに無線LANノードどうしが直接通信
P.383 COLUMN FDMA,CDMA
  • 表7.3.1:多元接続する技術グループ
    • TDMA とセット
  • FDMA
    • ある周波数帯をさらに細かい周波数帯に分割
    • 接続できる端末数を増やす技術
  • CDMA
    • 周波数も時間も分割しない
    • 符号で各端末の通信を識別・分離
    • 接続できる端末数を増やす
P.383 7.3.3 データリンク層の主なプロトコル
  • 第 2 層
P.384 ARP
  • ARP(Address Resolution Protocol):通信相手のIPアドレスからMACアドレスを取るためのプロトコル
  • ARPの動作
    • ブロードキャストで目的IPアドレスを指定したARP要求パケットをLAN全体に流す
      • ブロードキャスト:ネットワークに参加するすべての機器に同時に信号やデータを送ること
    • 各ノードは自分のIPアドレスと比較
    • 一致したノードだけARP応答パケットに自分のMACアドレスを入れて返す(ユニキャスト)
  • 参考:GARP(Gratuitous ARP)
    • 主な目的:自身に設定するIPアドレスの重複確認・ARPテ ーブルの更新
    • 目的IPアドレスに自身が使うIPアドレスを指定し,MACアドレスを問い合わせる
P.384 RARP
  • Reverse-ARP:逆アドレス解決プロトコル
    • MACアドレスからIPアドレスを取る
  • 電源オフ時にIPアドレスを保持できない(IPアドレスを保持するハードディスクをもたない)機器が電源オン時に自分のMACアドレスから自身に割り当てられているIPアドレスを知るために使う
  • RARP サーバー
    • MACアドレスとIPアドレスの対応表を持ったサーバー(RARPサーバー)が必要
P.384 PPP
  • PPP:Point to Point Protocol
    • 2 点間をポイントツーポイントでつなぐためのデータリンクプロトコル
    • WANを介して2つのノードをダイヤルアップ接続するときに使う
  • ネットワーク層(第3層)とネゴシエーションする NCP(ネットワーク制御プロトコル)とリンクネゴシエーションするLCP(リンク制御プロトコル)からなる
    • NCP:Network Control Protocol
    • LCP:Link Control Protocol
  • リンク制御やエラー処理機能を持つ
P.384 PPPoE
  • PPPoE:PPP over Ethernet
  • PPPと同等な機能をイーサネット(LAN)上で実現するプロトコル
  • PPPフレームをイーサネットフレームでカプセル化して実現
P.384 7.3.4 IEEE 802.3規格
  • メディアアクセス制御に CSMA/CD 方式を使う LAN についての標準
  • OSI基本参照モデルにおけるデータリンク層(第 2 層)と物理層(第 1 層)のプロトコルおよびサービスを規定
    • OSI 基本参照モデルでのデータリンク層を LLC 副層と MAC 副層の2つに分割
    • 物理層での LAN で使う伝送媒体や MAC 副層でのフレーム構成や衝突検出の仕組みを規定
  • ツイストケーブルの企画が表 7.3.2 にまとまっている
P.386 7.4 ネットワーク層のプロトコルと技術
  • もうやった
P.319 6.5.3 その他の DML 文
P.319 INSERT文
  • 表に行を挿入する:2つ方法がある
    • 参考:本の P.319
    • 挿入する値をVALUES句で指定する
    • 問合せの結果をすべて挿入する
    • (DBMS によるかもしれないが)個別INSERTと一括INSERTもある:パフォーマンスでよく問題になる
  • 一部の列に対して INSERT
    • どの列に対して挿入するのか列名リストで指定
    • 省略された列の値はDEFAULT制約があればその既定値、そうでなければNULL値
    • NULL はなるべく使うのをやめよう
    • DEFAULT は P.322 表 6.6.1
1
2
INSERT INTO table1 (hoge) VALUES ("a");
INSERT INTO table1 (hoge) VALUES ("b");
1
INSERT INTO table1 (hoge) VALUES ("a"), ("b"), ("c");
P.319 UPDATE文
  • 表中のデータを変更
    • 列の変更値を直接指定する
    • 変更値をCASE式で決める
    • 副問合せの結果を変更値にする
  • SET句には変更したい列の値を「列名 = 変更値」の形で指定
  • 1 つのUPDATE文で複数の列の値を変えるときはカンマ(,)で区切って指定
  • WHERE句を省略すると表中のすべての行が変わる
    • ふつうはやらない
    • WHERE句を指定すれば条件に合った行だけ変わる
1
2
3
4
UPDATE dept
SET    dname = '技術部',
       loc   = '福岡'
WHERE  deptno = 80;
P.320 DELETE文
  • 表中の行を削除する
    • 表中の全行を削除しても表自体は残る
    • 表を削除するのはDROP文
  • WHERE句を省略すると表中のすべての行が削除される
  • WHERE句を指定するとその条件に一致した行だけを削除できる
P.320 参照関係をもつ表の更新
  • 関連する2つの表の間に参照制約が設定できる
    • 被参照表の主キー(候補キー)にない値を参照表の外部キーに追加できない
  • 被参照表の行の削除・変更時に制約が出る:図6.5.10参照
  • 参照動作指定:削除・変更時の制約は明示的に指定できる
    • 次節のCREATE TABLE文を参照
    • REFERENCES句(参照指定)の後に次の構文で指定

参照動作指定 REFERENCES 被参照表(参照する列リスト) ON DELETE 参照動作] [ON UPDATE 参照動作] (*[ ]内は省略可能)

  • 指摘できる参照動作:表 6.5.5 の 5つ
    • デフォルトは NO ACTION
# P.320 補足
  • 参照制約
    • 外部キーの値が被参照表の主キーあるいは主キー以外の候補キーに存在することを保証する制約。
    • 関連する2つの表の間に参照制約を設定する目的:データ矛盾を起こすような行の追加や削除・変更を排除するため
  • REFERENCES指定:p322-324を参照
  • データの整合性を保つための制約
    • 一意性制約
    • 参照制約
    • データ項目のデータ型や桁数に関する形式制約
    • データ項目が取り得る値の範囲に関するドメイン制約がある。
P.322 6.6 データ定義言語(DDL)
P.322 6.6.1 実表の定義
P.322 CREATE TABLE文
  • 表の定義は CREATE TABLE 文
  • 基本構文は P.322 参照
P.322 列制約
  • 表を構成する列に対する制約
  • 参考:表6.6.1
  • 一意性制約:同一表内に同じ値が複数存在しないことを保証する制約
    • 主キーとなる列には一意性制約とNOT NULL制約を加えたPRIMARY KEY指定
    • 主キー以外の候補キーにも一意性制約がある
    • 一般にNULL(ナル)値は重複値とは扱われない
    • 候補キーにはNULL値を許すUNIQUE指定
  • 参照制約:外部キーの値が被参照表に存在することを保証する制約
  • 外部キー:REFERENCES指定(参照指定)す。
P.323 表制約
  • 一意性制約・参照制約・検査制約は表制約(表定義の要素として定義される制約)にもできる
  • 列制約:1つの列に対する制約
  • 主キーや外部キーが複数列から構成される場合、これを列制約として定義できない
    • このときは表制約を使う
P.323 主なデータ型
  • 一般的な文字型,数値型は覚えておくといい
P.324 実表の定義例
  • P.324 の社員表と部門表を定義を見てみよう
P.325 6.6.2 ビューの定義
P.325 ビューとは
  • 実表:ディスク装置上にあり実際にデータが格納される表
  • ビュー:実表の一部または複数の表から必要な行や属性(列)を取り出してあたかも1つの表 であるかのように見せかけた仮想表
    • 利用者から見れば実表と同じ
    • データを検索するだけなら制約はあっても同じように操作できる
  • ビューのメリット
    • あくまでも仮想の表:対象となった元の表(基底表)の列名と別の名前で定義できる
    • ビューに定義することで情報を公開
    • ビューに定義しないことで情報を非公開にできる
    • 元の表に新たな列が追加されても既存のビューには影響がなく再定義する必要がない
  • ビューは仮想的な表
    • 一般には実体化されずデータ格納領域をとら ない。
    • 実表のように実体化されるビューもある:体現ビュー(materialized view)
    • 参考
P.325 CREATE VIEW文
  • ビューの定義:CREATE VIEW文による:詳細は本の P.325
  • ビュー:対象となる実表(あるいは他のビュー)からSELECT文で必要データを導出する方法で定義される定義するビューの列名に命名規則はない
    • 列数はAS句に続くSELECTで問い合わせた結果の列数と同じでなければならない
    • 列名は省略可能:省略した場合はSELECTで問い合わせた結果の列名がそのまま定義される
  • ビューに対する参照や更新処理
    • ビューの対象となった表(基底表)に対す る参照あるいは更新処理に変換されて実行される
P.326 ビューの定義例
  • 本の P.326 参照
  • 社員表と部門表から社員コードと社員名、その社員が所属する部門名からなる表をビュー「社員表2」
    • JOIN して必要なカラムだけ取り出す
P.326 ビューの更新
  • ビューへの更新処理 ビュー定義を基にビューが参照している表(基底表)への対応する処理に変換されて実行
  • 更新のための条件
    • 更新にかかる実際の表が更新可能
    • 更新される表の列や行が一意に決まる
  • 更新できないビューの例
    • SELECT句で式、集合関数、DISTINCT を使ったSELECT文で定義されている
    • ・GROUP BY句やHAVING句を使ったSELECT文で定義されている
P.327 6.6.3 オブジェクト(表)の処理権限
  • スキーマに定義された実表やビューはそのスキーマ所有者(作成者)にしか処理権限が与えられない
  • 複数の利用者がデータベースを利用できるようにしたければ、スキーマ所有者以外にも処理権限を付与する必要がある
    • データベース管理ユーザーは全権を持っていて危険な処理もできてしまう
    • できることを制限したユーザーで操作したい
  • オブジェクト(表)の処理権限
    • 読取(SELECT)権限
    • 削除(DELETE)権限
    • 挿入(INSERT)権限
    • 更新(UPDATE)権限
  • cf. スキーマ
    • 1つのデータベースの枠組み
    • スキーマ内に複数の表やビューを定義できる
P.327 処理権限の付与
  • 権限の付与:GRANT文による
  • GRANTの基本構文は次の通り
1
GRANT 権限 ON 表名 TO 許可識別子
  • 権限指定
    • 4 つの処理権限(SELECT,INSERT,UPDATE,DELETE)
    • ALL PRIVILEGES(すべて)を指定できる
  • 権限を複数付与する場合はカンマ(,)で区切って指定
P.327 処理権限の取消し(変更)
  • 一度付与された権限を取消し(変更)できる
  • 権限の取消しはREVOKE文
  • REVOKEの基本構文
1
REVOKE 権限 ON 表名 FROM 許可識別子
P.328 6.7 埋込み方式
P.328 6.7.1 埋込みSQLの基本事項
P.328 静的SQLと動的SQL
  • 静的 SQL:あらかじめ決められたSQL文をプログラム中に埋込んで実行する方式
    • 実際のアプリケーションではあまり見かけない
  • 非カーソル処理:データベースの表から1行を取り出すこと
    • 次のような SELECT 文
    • この INTO を見たことがない

SELECT 社員名, 年齢 INTO :name, :age FROM 社員表 WHERE 社員コード = '100';

  • 動的 SQL:実行する SQL 文がプログラム実行中でな ければ決まらない場合に SQL 文を動的に作成し実行する方式
  • 上の社員コードがふつう変わる:それが「動的」。
  • この動的な部分に変なコードを埋め込むとまずいというのがセキュリティ問題で、例えば SQL インジェクションの問題。
P.328 ホスト変数
  • ホスト変数:データベースとプログラムのインタフェースとなる変数
  • 埋め込み SQL では SQL を実行すると取り出されたデータをINTO句で指定したホスト変数に格納する
  • ホスト変数は通常の変数としてもアクセスできる
    • 出力関数で表示
    • 入力関数で値を入力してそれをSELECT文の条件としても使える
P.329 6.7.2 カーソル処理とFETCH
P.329 カーソル処理
  • 「SELECT・・・・INTO・・・」形式では,1行のデータしか取り出せない
    • (見たことがないのでイメージがつかない)
  • 検索結果が複数行の場合は1行ずつ取り出せるカーソル処理を使う
  • カーソル処理は SQL 文で問い合わせた結果をあたかも1つのファイルであるかのようにとらえる
  • FETCH文でそこから1行ずつ取り出す方式
    • 1つのSELECT文に対してカーソルを宣言(定義)
    • カーソルのオープンでSELECT文が実行
    • カーソルで1行ずつ取り出せる
    • FETCH文で繰返し行を取り出して処理
    • 終了したらカーソルを閉じる
P.330 FETCHで取り出した行の更新
  • 参考:図 6.7.2:FETCHで取り出した行の更新処理
  • FETCH文で取り出した行を更新あるいは削除する場合,FETCH文のあとに続くUPDATE文やDELETE文のWHERE句 に「WHERE CURRENT OF カーソル名」と指定する。
  • (FETCH 文を見たことがないのでイメージつかない)
P.330 処理の確定と取消し
  • 一連のデータを更新している途中でエラーが出た場合
  • それまでの更新処理を取り消して元に戻す必要がある
  • 整合性を取らないといけない:いわゆるロールバックが必要
  • トランザクションが正常終了したときは「コミット」する:更新処理の確定
P.331 6.8 データベース管理システム
P.331 6.8.1 トランザクション管理
P.331 トランザクションとは
  • 複数の利用者が同時にデータベースにアクセスしてもデータが矛盾してはいけない
  • この仕組みがトランザクション管理
  • トランザクション:データの整合性を取るための SQL 処理の最小単位
    • 「回復の単位(Unit of Re-covery)」とも呼ぶ
P.331 ACID 特性
  • トランザクション処理は原子性・一貫性・隔離性・耐久性の 4 特性が必要
  • 厳密な一貫性(完全一貫性)が必要
    • トランザクションではそのすべての処理が完了するか(All)、あるいはまったく実行されていない状態か(Nothing)のどちらか一方で終了しなければならない
    • これは,COMMIT(正常終了),、ROLLBACK(異常終了)で実現できる
    • COMMIT(コミット):更新処理を確定し、データベ ースへの反映を保証する
    • ROLLBACK(ロールバック):更新処理をすべて取 消し,トランザクション開始時点の状態へ戻す
  • 参考:結果整合性
    • 完全一貫性に対する概念
    • 分散トランザクションやいわゆる NoSQL で使われる
    • 参考:分散トランザクション
      • トランザクション管理するべきテーブルが複数のデータベースにまたがっているとき
      • すべてのデータベースをロールバックしなければいけない
P.331 表 6.8.1 ACID 特性
  • 原子性(Atomicity)
    • 更新処理トランザクションが正常終了した場合だけデータベースへの反映を保証する
    • 異常終了時は処理が何もなかった状態に戻す
  • 一貫性(Consistency)
    • トランザクションの処理によってデータベース内のデ ータに矛盾が生じないこと
    • 常に整合性のある状態が保たれていること
  • 隔離性(Isolation)
    • 複数のトランザクションを同時(並行)に実行した場合 と,順(直列)に実行した場合の処理結果が一致するこ と
    • 独立性ともいう
    • トランザクションのスケーリング:複数のトランザクションを同時実行してもそれが正しい順で実行されるように順序づけること
      • 基本は並行実行の結果と直列実行の結果が等しくなるように調整する
    • ロック:直列可能性を保証する方法
  • 耐久性(Durability)
    • いったん正常終了したトランザクションの結果はそ の後に障害が発生してもデータベースから消失しないこと
    • トランザクションの再実行を必要としないこと
P.332 6.8.2 同時実行制御
  • 同時実行制御(並行性制御):複数のトランザクションを同時に実行しても矛盾を起こすことなく処理を実行するメカニズム
  • 実現する方法:ロック・多版同時実行制御・時刻印アルゴリズム
    • 多版同時実行制御に対してロックによる通常の同時実行制御を単版同時実行制御という
P.331 ロック
  • 複数のトランザクションを同時実行してもその結果はトランザクションを直列実行した結果と同じでなければならない(ACID 特性の隔離性)
  • 同時実行制御が行われない環境では結果が変わる場合もある
  • 例:図 6.8.1 を見ること
    • トランザクションTR1とトランザクションTR2が同じデータaを①→②の順に読み込む
    • それぞれのトランザクションでデータaを③→④の順に更
    • COMMITした場合トランザクションTR1がデータaを「a+5→10」に更新してもトランザクションTR2が aの値を「a+10→15」に更新してしまう
    • トランザクションTR1における更新内容が失われる
    • これを変更消失(ロストアップデート)という
  • こうした問題を防ぐための対処法
    • データベース管理システムではデータaにロック(鍵)をかける
    • 咲にデータaをアクセスしたトランザクションの処理が終了するか、あるいはロックが解除されるまでほかのトランザクションを待たせる制御をする
  • 参考 ダーティリード:他のトランザクションが更新中のコミットされていないデータを読み込むこと
P.333 デッドロック
  • P.250 5.2.5 も参考にすること
  • デッドロック:複数のデータに対してロックしようとして互いにロックの解除を待ち続けてしまう
  • 例:図 6.8.2
    • データA、B、Cを専有して処理するトランザクションTR1,TR2,TR3がある
    • 各トランザクションは処理の進行に合わせて表に示される順(①→②→③)にデータを専有
    • トランザクション終了時に3つの資源を一括して解放
    • トランザクションTR1とトランザクションTR2はデッドロックを起こす可能性がある
  • 再び図 6.8.2 を見る
    • データを専有する順序が等しいトランザションTR1とTR3の間ではデッドロックは起こらない
    • 異なる順や逆順でデータを専有するトランザクション間ではデッドロックが起きうる
  • デッドロックが起きたときロールバックなどで 1 つのトランザクションを強制的に終了させてデッドロックを解除する
P.334 ロック方式
  • 2相ロック方式・木規約
  • ロック方式
    • 第1相:使用するデータすべてにロックをかける
    • 第2相:処理後にロックを解除する
    • トランザクション内でのロック・解除はそれぞれ1回だけ
    • 直列可能性は保証されるがデッドロック発生の可能性は 残る
  • 木規約
    • データに順番をつけてその順番どおりにロックをかける
    • デッドロックが起きず、直列可能性を保証する
    • データへの順番づけには木(有向木)を使う
    • トランザクションの同時実行性が低くなるため特殊な用途で使う(どんなところで使うのだろう?)
  • 参考:有向木
    • 方向をもった有向グラフ(の 1 つ)
    • データ構造とアルゴリズムを勉強しよう
    • データベースは検索の便宜もあってデータ構造とアルゴリズムが大事
P.334 ロックの種類
  • 占有ロック・共有ロックの 2 モード
    • DBMS でトランザクションの同時実行性を高めるため
  • 専有ロック
    • データ更新するときに使うロック
    • データに対するほかのトランザクションからのアクセスは一切禁止
  • 共有ロック
    • ふつうデータの読取りの際に使用されるロックで
    • 参照だけを許可
  • 表 6.8.2 参照:2 つのロックモードの組み合わせによる同時実行の可否
  • 専有:占有または排他ともいう
  • 共有:共用ともいう
  • 共有ロックで同時実行性を高める
    • 先行トランザクションがロックしたデータを後続トランザクションが参照できる
    • 待ちがなくなり同時実行性が高まる
    • たいていのシステムでは書き込みよりも読み込みの方が多い
P.335 ロックの粒度
  • ロックをかける単位:表・ブロック・行
    • ブロック:物理的なIOの単位
  • ロックの単位をロックの粒度という。
    • 粒度が小さければ小さいほど同時実行性があがる代わりにロックの回数が多くなり、ロック制御のためのオーバーヘッドが増える
    • 粒度が大きいほどロックの解除待ちが長くなり、同時実行性が下がる
P.336 多版同時実行制御(MVCC:MultiVersion Concurrency Control)
  • 同時実行性を高めつつ一貫性のあるトランザクシ ョン処理を実現する仕組み
  • ふつう専有ロック中(更新中)のデータは参照できない
  • 後続トランザクションはロックの解除を待つ
  • 多版同時実行制御での対処
    • 更新中のデータに対する参照要求に更新前(トランザクション開始前)の内容を返す
    • 後続トランザクションを待たずに処理できる
  • 専有ロックと共有ロックの同時確保で同時実行性を高める一方で、後続トランザクションには現在からさかのぼったある時点における一貫性のあるデータを提供する
  • 整合性を欠いたデータの参照を防げる
# 参考:整合性を欠いたデータの参照
  • ダーティリード
  • アンリピータブルリード
    • 再度読み込んだデータが他のトランザクションで更新されている
    • 前回読み込んだ値と一致しない
  • フ ァ ン ト ム リ ー ド
    • 再度読み込んだデータの中に他のトランザ クションによって追加・削除されたデータがある
    • 前回と検索結果が変わる
P.335 時刻印アルゴリズム
  • ロック制御をせずに同時実行制御を行う方法としての時刻印(タイムスタンプ)アルゴリズム
  • トランザクションが発生した時刻 T とデータのもつ読込み時刻 Tr、あるいは書込み時刻 Tw を比較して読み書きを判断する
  • 読み込みの場合
    • Tw≦T のときだけ読み込む
    • 読み取ったあとは読み込み時刻 Tr にトランザクション発生時刻 T を設定
  • 書き込みの場合
    • Tw≦T かつ Tr≦T のときだけ書き込む
    • 書き込み後、書込み時刻 Tw にトランザクション発生時刻Tを設定
  • 参考:P.336 図 6.8.4
# 参考:楽観ロック
  • 楽観的方式:ロック制御をしない他の方法
  • 仮定:同じデータへのアクセス(更新要求)はめったに発生しない
    • 処理を進めて更新直前にほかのトランザクションでそのデータが更新されたかどうかを確認する
    • 更新された場合はロールバックする
  • 実装例
    • データベースに「更新回数」のようなカラムを持たせる
    • データ取得時に更新回数も送る
    • データ更新するときは更新回数つきでサーバーにリクエストを出す
    • 更新回数が同じなら更新する
    • 更新回数が違うなら更新要求を却下する
    • ほぼ同じタイミングで複数の更新要求が出ることはあり、このときは更新が重複して異常が出る
      • これが起きない(起きにくい)というのが最初に書いた「同じデータへの更新要求はめったに発生内」という仮定
P.336 障害回復管理
P.336 障害の種類
  • データベースに発生する障害の三大分類
  • 媒体障害:記憶媒体の故障でデータが消失
  • システム障害:DBMSやOSのバグ・オペレータの誤操作によるシステムダウン
  • トランザクション障害:プログラムのバグ・デッドロック発生でのトランザクションの強制終了など、実行中のトランザクションが異常終了
P.336 目標復旧時点
  • RPO:Recovery Point Objective
  • システム再稼働時に障害発生前のどの時点の状態に復旧させるかを示す概念で、データ損失の最大許容範囲
  • 目標復旧時間(RTO、Recovery Time Objective)
    • 災害による業務の停止が深刻な被害とならないために許容される時間
P.336 事前対策
  • 障害回復:障害からデータベースを復旧して一貫性が保たれた元の状態に戻すこと
  • 障害回復には次のファイルを事前に取得しておく必要がある
  • ログファイル
    • 障害やバグ対策の基本
    • トランザクション処理でデータベースが更新されるとき,更新前ログ、更新後ログなどの更新履歴(変更情報)を取り、時系列に記録する
    • ジャーナルファイル、ジャーナルログともいう
    • 大量に出るので復旧や原因追及に必要十分な要素をピックアップする必要がある
    • ログファイル容量などを見て自動でファイルが切り替わる(ローテーション)
  • バックアップファイル
    • 媒体障害に備えてデータベースとログファイルを定期的に別の媒体にバックアップ(退避)する
    • データベースのバックアップは定期的に取る
    • ログファイル切り替え時にログファイルのバックアップも取る
      • ふつうn個のログファイルに対してログデータをログファイル1から順に書き込む
      • ログファイル1が一杯になるとログファイル2へと切り替える(ローテーション)
      • このタイミングでバックアップ
P.337 参考 バックアップの種類
  • フルバックアップ:すべてのデータをバックアップする
  • 差分バックアップ:直前のフルバックアップ からの変更分だけをバックアップする。
  • 増分バックアップ:直前のフルバックアップ または増分バックアップからの変更分だけをバックアップする。
  • メリット・デメリット
    • フルバックアップは何も考えずにドカンと復旧できるが容量を食う
    • 差分バックアップはバックアップに使う容量を減らせるが、復旧時に手間がかかる
P.337 媒体障害からの回復
  • 媒体障害発生時:バックアップファイルとログファイルの更新後ログを使ってロールフォワード処理でデータ ベースを回復させる
    • 参考:P.338 図6.8.6
    • T1:バックアップファイル取得
    • T2:媒体障害発生
      • バックアップファイルを別の媒体にリストア、T1時点に復帰
      • T1-T2間の更新データ回復:ログファイルの更新後ログによるデータベースの各レコードを順番に再現するロールフォワード処理
  • 参考:差分バックアップ方式採用時
    • フルバックアップファイルをリストア
    • 直近の差分バックアップファイルのデータを追加
    • 更新後ログでロールフォワード
P.338 トランザクション障害からの回復
  • アプリケーションプログラムのバグやデッドロックを解除するための強制終了などでアプリケーションが異常終了したとき
  • ログファイルの更新前ログを使ったロールバック処理でデータベースの内容をトランザクション開始時点の状態に戻す
  • 参考:P.338 図6.8.7
    • データxとyを更新しなければならないトランザクションがT1で開始
    • データyの更新を行う前にT2で異常終了
    • このままではデータxとyのつじつまが合わない
      • T1からT2の間に行われたxの更新を取り消す必要が出る
    • ログファイルの更新前ログによるロールバック処理 でトランザクション開始時点(T1)の状態に戻す
  • 参考:データとログをメモリ上にバッファリングしている場合
    • まだCOMMITされていないトランザクションはログ・バッファの内容で自動的にロールバック(ROLLBACK)される
P.339 システム障害からの回復
  • 現在のデータベース管理システムでのディスクの入出力効率向上のための工夫
    • データとログをメモリ上にバッファリング
    • まずデータベース・バッファに対してデータの更新
    • ある時間間隔でデータベース・バッファの内容をデータファイル(データベース)へ書き出す
    • 書き出し時点を行った時点:チェックポイント
    • チェックポイントの発生:トランザクションのCOMMITとは非同期で、トランザクションがCOMMITされてもデータベース・バッファの内容はデータファイルに書き出されない
      • チェックポイント発生時、稼働中のトランザクション情報もログファイルに書き出される
# ログ・バッファの内容
  • トランザクションのCOMMITまたはチェックポイント発生でログファイルに書き出される
  • システム障害発生時の問題
    • データファイルに書き出されていないデータベース・バッファ上の更新データの消失
  • P.340 図6.8.9 の TR2
    • システム障害が発生した時点でCOMMITされていない
    • データベース・バッファの内容が消失しても問題ない:再処理で対応
    • 問題になるのはチェックポイント(T1)の前に開始されたTR1
    • TR1はシステム再立上げ後に更新前ログを用いたロールバック処理で
    • トランザクション開始時点の内容に戻す
# 図6.8.10の例
  • チェックポイント(T1)後
  • システム障害発生(T2)前にCOMMITされたトランザクションTR3,TR4による更新内容はまだデータファイルに書き出されていない
  • システム障害が発生した直前のチェックポイント(T1)まではデータベースの内容が保証されている
  • ここから更新後ログを用いてロールフォワード処理によって回復
  • システム障害における障害回復はシステム障害 発生時のトランザクションの状態に応じて変わる
  • チェックポイントを作ることでそれまで行われてきた更新内容はすべてデータベース・バッファからデータファイルに書き出される
  • システム障害が発生してもチェックポイント以降の更新後ログだけでロールフォワード処理で回復できる
    • 回復時間が短縮される
P341 6.8.4 問合せ処理の効率化
P.341 インデックス
  • インデックス():データベースへのアクセス効率を上げるために使う
    • 例えばデータ構造とアルゴリズムの意味で「木」を作っている
  • 一般に検索対象の項目にインデックスをつけるとアクセス(検索)速度はあがる
  • しかしシステム全体のパフォーマンスが遅くなることがある
    • インデックスをつけるとインデックスの更新が走る
    • この処理がどれだけパフォーマンスに影響するかが問題
  • インデックスのつけ方はきちんと考える必要がある
  • 参考
    • 各データに複数の索引語を付けて検索時に具体的な値を与えることで,その値を含むすべてのデータを高速かつ簡単に検索できるように編成
    • 蓄積された索引ファイルを転置ファイル(inverted file:インバ ーテッドファイル)という。
P.341 POINT インデックス設定時の留意点
  • アクセス頻度の高い列(検索でよく使う項目)に張る
    • いわゆる内部 ID 系(これは主キーとして勝手にインデックスがつく・つける)
  • 更新頻度の多い列に対してインデックスを張らない
    • 外部 ID としてのメールアドレス・ログイン ID に張ることは多い
  • 行数の少ない表に対してインデックスを張っても効果は低い
  • データのとり得る値の種類が少ない(データ値の重複が多い)列に対して張っても効果は低い
    • それでも張ることはある
    • 「推測するな。計測せよ。」
  • データ値の重複に大きな偏りがある場合は効果が低い
  • 初期のデータ挿入など多くの行を挿入するときはいったんインデックスを削除するといい
  • 参考
    • インデックスには重複を許さないユニークインデックスと重複を許 すデュプリケートインデックスがある
    • 主キー項目にはユニークインデックスが張られる
P.341 上記POINTの④,⑤について
  • P.342 表はインデックスを張ったある項目Xの値とその行数
  • [例1]と[例2]を比べる
    • データのとり得る種類は両方とも同じ
    • [例2]のほうが重複の程度が平準
    • [例1]のほうが大きく偏っている
    • インデックスで1項目当たりの平均の検索効率の向上が期待できるのは[例2]
  • ただしあくまで一般論
P.342 例1・例2の検索効率を確率的に考える
  • [例1]の場合
    • 検索条件が「項目X=A」である確率は(20/1200)
    • Aの検索はインデックスが使える
    • 目的のデータを検索するにはさらに20件を順次検索する必要が ある
    • このときの最大比較回数は20
    • 「項目X=B」の場合、1項目当たりの検索効率(期待値)は次の式で求められる
    • (20/1,200)×20+(40/1,200)×40+(80/1,200)×80 +(160/1,200)×160+(300/1,200)×300+(600/1,200)×600=403
  • [例2]の場合
    • 1項目当たりの検索効率(期待値)は(200/1,200)×200×6=200
  • 確率的意味からも[例2]のほうが検索効率がいい
  • 参考
    • 効率を下げる重複が多い値で検索する機会がほとんどない場合、実際の効率は例1の方が大きい可能性がある
    • いつでも実際のケースでどうかを考える必要がある
  • 参考
    • インデックスを張った項目を検索条件にして絞り込んだ選択率が10〜20%を大きく超える場合,インデックスの効果はあまり期待できない
P.343 連結インデックス

TODO

2021-01-31 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:P.326 ビューの更新
    • 本編:04-02「よくある条件付き確率密度関数(確率分布)」まで
  • 今回の進捗
    • 基礎知識編:「参考:楽観ロック」まで
    • 本編:04-02終了

課題

TODO

自分用メモ

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 2,5
theta = np.linspace(0, np.pi, 1001)
phi = np.linspace(0, 2 * np.pi, 1501)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

日々の勉強

Julia

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、しばらく DB の話
復習
  • 3 つのスキーマ
    • ユーザーが見るレベル
    • 正規化などをかけておいたデータベースにもっていけるレベル
    • 個々のデータベースに合わせた具体的なレベル
  • インメモリの DB:コンピューターの基本的なハードウェア構成と意味を復習しよう
本の記述を追いかける
P.408 7.8 交換方式
P.408 パケット交換方式
  • 回線交換方式と対になる概念
    • 回線交換方式:通信を行うノード間で物理的な通信路を確保してから通信する
    • 例:電話
  • パケット交換方式について
    • データ送信するノードはデータをパケットに区切る。
    • ひとつひとつのパケットにヘッダを付けて送信。
    • ネットワーク内ではパケット交換機にパケットがたまる
    • ネットワークの状況に応じて順次送られる
パケット通信のメリット・デメリット
# メリット

耐障害性 - 通信路を固定しないため,迂回経路が取れる。 - パケット交換機にデータが蓄積されているため,復旧まで待てる。 - パケット多重 - 1 対 1 の通信で回線を占有する必要がないため,1つの回線を多くのノードで共有でき,回線を効率的につかえる - 異機種間接続性 - パケット交換機で中継するときにプロトコル変換・速度変換でエンドノードどうしが同じプロトコルをサポートしていなくても通信できる

# デメリット
  • ネットワーク内の蓄積交換処理による遅延
    • 蓄積交換処理による遅延解消のために主に回線の帯域を広げることで対応してきた
    • 構造上,完全には遅延をなくせない
  • パケット到着順序の不整合
P.408 ATM 交換方式
  • ATM(Asynchronous Transfer Mode:非同期転送モード)
  • 遅延のない回線交換方式とパケット交換方式の利点を得たい
  • パケット交換方式の発展
  • 遅延の原因をつぶす:特にパケットの多様性
    • 多種多様なパケットに対応するために,パケット交換機はソフトウェア処理が必要 ^ ATM での工夫の一例:最も特徴的なのは,パケット(ATMではセルという)の長さをヘッダ部 5 バイト,ペイロード 48 バイトの53バイトに統一
    • パケット解析がハードウェアだけでできる。
    • ソフトウェアは不要になった。
  • Wikipedia から
    • 当初の意図に反して非常に複雑な技術になってしまった
    • ATM は次世代の主流にならず限定的な使用にとどまった
    • ATM の設計思想は MPLS へと引き継がれた
    • 汎用のレイヤ 2 のパケットスイッチングのプロトコルとして、ルーターを介したIPの通信網で利用されている。
P.408 ペイロード(payload)
  • データ通信で本来転送したいデータ本体の部分、ボディを指す。
  • ATM ではペイロードのサイズを固定して処理を簡素化
  • 難点:パケット全体に占めるペイロードのサイズが相対的に小さくオーバヘッドが大きい
P.410 輻輳
  • フレームリレー:パケット交換方式の一種
    • 1 つの回線を多数のユーザで共有。
    • 回線がもつ潜在的な伝送能力(ワイヤスピード)を十分に引き出すうえで効果がある
  • 輻輳:ユーザの利用が一時期に集中すると,ワイヤスピードを超えるパケットがネットワーク上に流れる
    • ネットワークが輻輳状態になるとスループットが落ちる
  • フレームリレーサービスを提供する事業者は,ネットワークが輻輳状態に陥ってスループットが低下しても最低限保証する通信速度を決めている
    • CIR(Committed Information Rate:認定情 報速度)
P.370 7 ネットワーク
  • 確か 7.4 から始めた気がするので 7 章はじめから
P.370 7.1.1 OSI基本参照モデル
  • 改めて復習
  • OSI(Open System Interconnection)基本参照モデル- 異なる設計思想・世代のシステムと円滑に通信するのが目的に標準化
  • プロトコルの単機能化,交換の容易さが目的
    • 階層化のおかげで一部の階層の技術体系が変わっても、その階層だけ取り替えればいい
    • コスト・リスクを小さくする
P.370 プロトコルとサービス
  • N 層:それぞれの階層のこと
  • エンティティ:N 層に存在する通信機器などの実体
    • この言葉はいろいろなところで出てきていろいろな意味で使われる
    • もちろん気分的には適当な実体を指すことが多い
  • プロトコル:N 層に属するエンティティが通信するための取り決め
  • 上位の層が下位の層を利用しながら通信する
    • 別の階層間のエンティティどうしが通信する窓口が必要
    • これを提供するのが下位層:この機能をサービスと呼ぶ
  • プロトコルに沿った仕様で製品を開発すれば別のベンダの機器でも通信できる
  • 参考:ベンダーロックイン

特定ベンダー(メーカー)の独自技術に大きく依存した製品、サービス、システム等を採用した際に、他ベンダーの提供する同種の製品、サービス、システム等への乗り換えが困難になる現象のこと。

出来上がった情報システムの正確な仕様が、システムを開発・構築したベンダーにしか解らなくなる場合がある。結果、システムの保守・拡張・改修等の際、現存システムを開発・構築したベンダーに引き続き発注せざるを得なくなる。

  • 「Excel で行政に提出する書類を作れ」事案もそれ。
  • Apple 製品で身の回りを固めるのも同じ。
  • 「多様性が大事」事案でもある。
7.1.2 TCP/IPプロトコルスイート
  • プロトコル同士には相性がある
    • 「ネットワーク層がこのプロトコルならトランスポート層はこのプロトコルにしておくとトラブルが少ない」
  • 一般に同じ団体が作ったプロトコルはセットで使われることが多い
    • このセットがプロトコルスイート ^ 最も代表的なのは IP を中心に組まれた TCP/IP プロトコルスイート
    • 独自の階層モデルをもつ
P.372 TCP/IPの通信
  • データをパケットに区切る
    • 各パケットにヘッダを付けて送信
    • ヘッダは各階層ごとに付加されて次の階層へと渡される
    • 各ヘッダにはその階層で必要となる送信元や送信先,大きさ,順番などパケット自体に関する情報を含む
    • TCPヘッダを付加したパケット:TCP セグメント
    • IP ヘッダを付加したパケット:IP パケット
    • MACヘッダを付加したパケット:MAC フレームあるいはイーサネットフレーム
P.372 MAC(Media Access Control)アドレス
  • イーサネットや FDDI で使用される物理アドレス
    • イーサネット (Ethernet):コンピューターネットワークの規格の1つ。オフィスや家庭で一般的に使用されている有線LAN (Local Area Network) の技術規格
    • FDDI:LAN でデータ転送を行うための標準の一つ
      • Fiber distributed data interface
  • データリンク層
  • 同じネットワークに接続された隣接ノード間の通信で相手を識別するために使う
  • MACアドレスの長さ:6バイト
    • 先頭24ビットの OUI(ベンダID)
    • 後続24ビットの固有製造番号(製品に割り当てた番号)
  • MAC アドレスは機器が固有にもつ番号
    • 必ず一意に定まるように IEEE が管理
P372 ポート番号
  • トランスポート層にでノード内のアプリケーションの識別に使う識別子番号
    • 0-65535の範囲
  • TCP/IPではパケット交換方式でデータをやり取りする
  • よく使われるアプリケーションについてのポート番号は Well-Known ポートとして標準化
    • TCP・UDPそれぞれで 0-1023 番までの番号を割り当てている
    • SSH:TCP22番
    • Telnet:TCP23番
    • SMTP:TCP25番
    • HTTP:TCP80番
    • POP3:TCP110番
    • IMAP4:TCP143番
    • HTTPS :TCP443番
    • NTP:UDP123番
    • SNMP:UDP161番
    • SNMP Trap :UDP162番
  • セキュリティ対策のために標準とはポート番号を変えることもある
  • Web 開発の本を読んでいると、いろいろな都合から http のポートを 80 以外にしていることもよくある。
    • 80 の場合はポートを指定しなくてもいい
      • 例:http://localhost/hoge/fuga
      • 例:http://localhost:5000/hoge/fuga
P.373 ネットワーク間の通信
  • 同じネットワークに接続されたノード間はデータリンク層(第 2 層)の通信
  • ネットワークを超えたノード間はネットワーク層(第 3 層)の通信 -実際に図 7.1.4 を見よう
    • どこが IP アドレスでのやりとりか?
    • どこが MAC アドレスでのやり取りか?
P.374 7.2 ネットワーク接続装置と関連技術
P.374 7.2.1 物理層の接続
P.374 リピータ
  • ネットワーク上を流れる電流の増幅装置・整流装置
  • 物理層:第 1 層
  • データ通信はネットワーク上を流れる電流
    • ケーブルが長いと電流が減衰・波形が乱れが起きる
    • データが読み取れなくなる
    • これを増幅するのがリピータ
  • 大昔の電話は距離が遠いと音が小さく聞こえにくかった
    • まさにこの減衰が問題
  • リピータは 1:1 で繋ぐ
    • 現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使われるのが一般的
P.374 7.2.2 データリンク層の接続
  • 第2層
P374 ブリッジ
  • データリンク層に位置
  • ネットワーク上を流れているフレーム(情報の単位)の MAC アドレスを認識して通信を中継する
    • 接続されているノードをコリジョンドメイン(セグメント)という単位に分割
    • MAC アドレスで判定したフレームのあて先のあるセグメントだけにフレームを送信
    • 無駄なトラフィックの回避
  • ポートの記憶
    • 通信のたびにある MAC アドレスをもつノードがどのポート に接続されているか学習
    • 次回の通信時には余分なポートには通信を中継しない。
  • ブリッジの動作
    • あて先MACアドレスをもとにMACアドレステーブルを参照する
    • あて先MACアドレスの接続ポートがフレームを受信したポー トと別ポートであれば,そのポートにフレームを送信し
      • 同一ポートであればフレームを破棄する
    • あて先MACアドレスが記憶されていない場合やブロードキャス トアドレス(FF-FF-FF-FF-FF-FF)の場合は,受信ポート以外のすべてのポートにフレームを送信する
P.375 スイッチングハブ
  • レイヤ2スイッチ(L2スイッチ)とも呼ばれる
  • データリンク層に位置
  • ブリッジと同じ働きをする
    • MAC アドレスを認識してフレームのあて先を決めて通信を行います。
  • 試験での問われ方
    • スイッチングハブはフレームの蓄積機能、速度変換機能や交換機 能をもっている。
    • このようなスイッチングハブと同等の機能をもち,同じプロトコル階層で動作する装置はどれか
    • 答えは「ブリッジ」
P.375 ブロードキャストストリーム
  • データリンク層で動作するブリッジやスイッチングハブなどの LANスイッチはブロードキャストフレームを受信ポート以外 のすべてのポートに転送
  • これらの機器をループ状に接続し冗長化させると信頼性はあがる
    • ブロードキャストフレームは永遠に回り続けながら増える
    • 最終的にはネットワークダウンを招く
    • この現象をブロードキャストストームという
  • ブロードキャストストームを防ぐプロトコル:スパニングツリープロトコル(Spanning Tree Protocol:STP)
    • ループを構成している一部のポートを通常運用時にはブロック(論理的に切断)する
    • ネットワーク全体をループをもたない論理的なツリー構造にする
P.376 ネットワーク層の接続
  • 第 3 層(レイヤ 3)
P.376 ルータ
  • ルータはネットワーク層(第 3 層)に位置する
    • あて先IPアドレスを見てパケットの送り先を決め通信を制御する
  • IP のローカルネットワークの境界線に設置して利用され,ネットワークの基本単位として機能
  • 世界中に散在しているローカルネットワークどうしをルータが結ぶ
    • 全体としてインターネットというインフラが機能
  • ルータで分けられたネットワークの単位をブロードキャストドメインという
  • ルータがパケットを受け取ったあと
    • あて先IPアドレスを見る
    • 自分のネットワークあてであれば,破棄
    • 他のネットワークあてであれば転送
      • どのルータへ送ればあて先のネットワークへの通信が速く行えるかを判断することを経路制御(ルーティング)
      • ルータはそのための経路表(ルーティングテーブル)を備えている
P.376 デフォルトゲートウェイ
  • 会社Aのネットワークに属するPCは会社BのPCと直接通信できない
  • 会社AのPCは他ネットワークへの接点であるルータAに転送を依頼
  • デフォルトゲートウェイ:会社AのPCから見て直近のルータA
  • 自分と直接接続していない相手と通信するときはすべてデフォルト ゲートウェイを中継する
P.376 ルーティング
  • 経路表(ルーティングテーブル)の作成方法
    • 手作業で作る:スタティックルーティング
    • ルーティングプロトコル利用:ルータ同士が経路情報を交換し、自立的に経路表を作るダイナミックルーティング
  • ダイナミックルーティングのための代表的なルーティングプロトコル:RIP、OSPF
  • RIP:ディスタンスベクタ型(距離ベクトル型)
    • ルーティングテーブルの情報(経路情報)を一定時間間隔で交換しあう
    • あて先ネットワークにいたるまでに経由するルータの数(ホップ数)最小経路を選ぶ
    • あて先に到達可能な最大ホップ数は 15
      • これを超えた経路は採用されない
  • OSPF:リンクステート型
    • コストを経路選択の要素に取り入れ、コスト最小経路を選ぶ
    • コスト値は,回線速度を基に自動的に算出されるが手動設定もできる
    • コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」
  • コスト計算例は P.377 の図を見ること
P.377 ルータの冗長構成
  • ルータを冗長構成のために使うプロトコル:VRRP(Virtual Router Redundancy Protocol )
  • 同じ LAN に接続された複数のルータを仮想的に 1 台のルータ として見えるようにして冗長構成を実現する
  • 複数のルータでグループ(VRRP グループ)を作る
  • VRRP グループごとに仮想 IP アドレスと仮想 MAC アドレスを割り当て
  • PC などのノードは仮想ルータの IP アドレスに対して通信
  • 通常時はグループのマスタルータが仮想ルータの IP アドレス(仮想 IP アドレス)を保持
  • マスタルータに障害が発生すると他のバックアップルータがこれを継承
P.377 レイヤ3スイッチ(L3スイッチ)
  • ルータと同じネットワーク層(第 3 層)の通信機器
  • 特徴
    • ルータ:ソフトウェアで転送処理
    • レイヤ 3 スイッチ:専用ハードウェアで転送処理
  • 高速処理できる:大容量のファイルを扱うファイルサーバへのアクセスなど
P.378 トランスポート層以上の層の接続
P.378 ゲートウェイ
  • トランスポート層(第 4 層)-アプリケーション層(第7層)でネットワーク接続するための装置
  • 第 3 層のネットワーク層まででエンドツーエンド(E2E)の通信は完成する
    • E2E = 通信を行う二者、あるいは、二者間を結ぶ経路全体
    • エンドツーエンド原理:高度な通信制御や複雑な機能は末端のシステムが担い、経路上のシステムは単純に信号やデータの中継・転送だけすべし
    • TCP/IP ネットワークの原理
    • 誤り訂正・フロー制御・再送:TCP 層(第4層、トランスポート層)など上位側の機器やソフトウェア・プロトコル
    • 単純な送受信・転送処理:IP 層(第3層、ネットワーク層)
  • ゲートウェイ:第 4 層のトランスポート層以上が違う LAN システム相互間のプロトコル・データ形式の変換を担う
  • ゲートウェイはアプリケーションプロトコルの内容を 解釈できる
    • アプリケーションヘッダの不正な情報混入を検出可能
    • ファイアウォール・プロキシサーバもゲートウェイの一種
P.378 L4スイッチ・L7スイッチ
  • L4スイッチ(レイヤ4スイッチ)はトランスポート層(第4層)の装置
    • 定義としてはゲートウェイ
    • 機能的にはレイヤ2スイッチ・レイヤ3スイッチの延長上
    • ルータやレイヤ3スイッチはIPアドレスを参照して経路制御する
    • L4スイッチではTCPポート番号やUDPポート番号も経路制御判断に使える:第4層の機器だから
  • L7スイッチ:アプリケーション層(第7層)までの情報を使って通信制御する
P.379 7.2.5 VLAN
  • VLAN(Virtual LAN:仮想LAN)
  • スイッチ(レイヤ2スイッチ,レイヤ3スイッチ)で物理的な接続形態とは独立に仮想的なLANグループを構成する仕組み,あるいはそう構成されたLAN
  • 複雑な形態のネットワークを楽に構築できる
  • サブネット構成も柔軟に変えられる
P.380 データリンク層の制御とプロトコル
  • データリンク層:第2層
P.380 7.3.1 メディアアクセス制御
  • 複数のデータを1つのケーブルを通して送受する場合,データの衝突(コリジョン)を回避するための制御が必要
    • これがメディアアクセス制御(Media Access Control:MAC)
コリジョン(衝突)

イーサネットや無線LANで複数の端末が送信し、データが衝突する現象を指す。旧式のイーサネット規格では、端末同士を接続するときに1組の通信路で双方向の通信を行う半二重通信のため、送信と受信を同時に行うことができない。送信と受信をその都度切り替えて行うので、端末がお互いデータを送信してしまうと衝突する可能性が高くなる。

P.380 CSMA/CD
  • CSMA/CD:Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセ ス/衝突検出)の略。
  • イーサネットで採用されている方式
    • 衝突検知方式を採用
    • イーサネット:IEEE 802.3として標準化されている LAN規格
  • CSMA/CD
    • 各ノードは伝送媒体が使用中かどうかを調べて,使用中でなければデータを送りはじめる
    • 複数のノードが同時に通信しはじめるとデータの衝突が起こる
    • 衝突を検知し,一定時間(ランダム)待った後で,再送
    • 一定の距離以上のケーブルでは衝突が検知できない
  • CSMA/CD方式の限界
    • トラフィックが増加するにつれて衝突が多くなる
    • 再送が増え,さらにトラフィックが増加する悪循環に陥る可能性がある
    • 特に伝送路の使用率が30%を超えると実用的でなくなる
P.381トークンパッシング方式
  • トークンによる送信制御を行う方式で
    • トークンバス方式
    • トークンリング方式
P.381 トークンパッシング方式
  • ネットワーク上をフリートークンと呼ばれる送信権のためのパケットが巡回する
    • フリートークンを獲得したノードだけが送信できるので衝突を避けられる
    • ふつうはコンセントレータ(集線器)でネットワ ークとノードを結ぶ
  • トークンパッシング方式を採用したLAN規格
    • 例:FDDI:Fiber Distributed Data Interface
    • FDDIは物理媒体に光ファイバを利用し,最大100Mビ ッ ト/秒の通信
  • 特徴
    • 伝送媒体上では衝突しない
    • トラフィックが増えるにつれてトークンを獲得しにくくなり,少しずつ遅延時間が増える
    • 衝突による再送制御の必要がないため伝送路の使用率に対する遅延時間の増加率はCSMA/CD方式より緩やか
P.382 TDMA 方式
  • TDM(時分割多重)
    • ネットワーク上にデータを送信する時間を割 り当てる(タイムスロット)
    • タイムスロットごとに別のデータを送って多重化する
    • TDM によるアクセス制御が TDMA
  • TDMA(Time Division Multiple Access:時分割多重アクセス)
    • CSMA/CD・トークンパッシング方式と並ぶ主要なデー タリンク技術
    • TDMA ではネットワーク(伝送路)を使える時間を細かく区切る
    • 割り当てられた時間は各ノードが独占する方式
    • TDMAはコネクション型の通信
P.382 7.3.2 無線LANのアクセス制御方式
P.382 CSMA/CA方式
  • CSMA/CA:Carrier Sense Multiple Access with Collision Avoidance、搬送波感知多重アクセス/衝突回避
  • 無線 LAN の制御方式
  • CSMA/CD との違い:「衝突検出」が「衝突回避」になった
  • 無線 LAN:物理層媒体は電波で衝突の検出は不可能だから回避する
  • 特徴
    • 送信ノードは使いたい周波数帯の使えるか確認後、必ずランダムな時間だけ待ってから送信をはじめる
      • 待ち時間をバックオフ制御時間とよぶ
    • 衝突してフレームが壊れても検出できない
      • データを受け取ったノードは ACK を返す
P.328 RTS/CTS
  • 無線 LAN の話
  • 隠れ端末問題
    • 他のノードのデータ送信を感知できないことがある
    • 通信ノード間の距離が遠い
    • ノード間に障害物がある
  • 回避のための RTS/CTS 方式
  • 無線 LAN ノード
    • データ送信前にRTS(Request ToSend:送信リクエスト)をアクセスポイントに送信
    • これを受理したアクセスポイントがCTS(Clear to Send:送信OK)を返信
      • 他のノードは CTS を傍受して自分以外の別のノードに送信権があると解釈
      • データ送信を延期
    • 無線LANノードはアクセスポイントからCTSを受信したらデータ送信開始します
    • 衝突抑制:CTSに書かれた他のノードに対する送信抑制時間を使う
  • データ送信開始前にデータ送信のネゴシエーシ ョンとして RTS/CTS 方式を使った CSMA/CA を CSMA/CA with RTS/CTS とよぶ
P.383 無線LANの動作モード
  • 無線 LAN の動作モード:図7.3.4参照
  • 2 つのモードがある
  • インフラストラクチャモード:無線LANノードがアク セスポイントを通じて相互に通信
  • アドホックモード:アクセスポイントなしに無線LANノードどうしが直接通信
P.383 COLUMN FDMA,CDMA
  • 表7.3.1:多元接続する技術グループ
    • TDMA とセット
  • FDMA
    • ある周波数帯をさらに細かい周波数帯に分割
    • 接続できる端末数を増やす技術
  • CDMA
    • 周波数も時間も分割しない
    • 符号で各端末の通信を識別・分離
    • 接続できる端末数を増やす
P.383 7.3.3 データリンク層の主なプロトコル
  • 第 2 層
P.384 ARP
  • ARP(Address Resolution Protocol):通信相手のIPアドレスからMACアドレスを取るためのプロトコル
  • ARPの動作
    • ブロードキャストで目的IPアドレスを指定したARP要求パケットをLAN全体に流す
      • ブロードキャスト:ネットワークに参加するすべての機器に同時に信号やデータを送ること
    • 各ノードは自分のIPアドレスと比較
    • 一致したノードだけARP応答パケットに自分のMACアドレスを入れて返す(ユニキャスト)
  • 参考:GARP(Gratuitous ARP)
    • 主な目的:自身に設定するIPアドレスの重複確認・ARPテ ーブルの更新
    • 目的IPアドレスに自身が使うIPアドレスを指定し,MACアドレスを問い合わせる
P.384 RARP
  • Reverse-ARP:逆アドレス解決プロトコル
    • MACアドレスからIPアドレスを取る
  • 電源オフ時にIPアドレスを保持できない(IPアドレスを保持するハードディスクをもたない)機器が電源オン時に自分のMACアドレスから自身に割り当てられているIPアドレスを知るために使う
  • RARP サーバー
    • MACアドレスとIPアドレスの対応表を持ったサーバー(RARPサーバー)が必要
P.384 PPP
  • PPP:Point to Point Protocol
    • 2 点間をポイントツーポイントでつなぐためのデータリンクプロトコル
    • WANを介して2つのノードをダイヤルアップ接続するときに使う
  • ネットワーク層(第3層)とネゴシエーションする NCP(ネットワーク制御プロトコル)とリンクネゴシエーションするLCP(リンク制御プロトコル)からなる
    • NCP:Network Control Protocol
    • LCP:Link Control Protocol
  • リンク制御やエラー処理機能を持つ
P.384 PPPoE
  • PPPoE:PPP over Ethernet
  • PPPと同等な機能をイーサネット(LAN)上で実現するプロトコル
  • PPPフレームをイーサネットフレームでカプセル化して実現
P.384 7.3.4 IEEE 802.3規格
  • メディアアクセス制御に CSMA/CD 方式を使う LAN についての標準
  • OSI基本参照モデルにおけるデータリンク層(第 2 層)と物理層(第 1 層)のプロトコルおよびサービスを規定
    • OSI 基本参照モデルでのデータリンク層を LLC 副層と MAC 副層の2つに分割
    • 物理層での LAN で使う伝送媒体や MAC 副層でのフレーム構成や衝突検出の仕組みを規定
  • ツイストケーブルの企画が表 7.3.2 にまとまっている
P.386 7.4 ネットワーク層のプロトコルと技術
  • もうやった
P.327 6.6.3 オブジェクト(表)の処理権限
  • スキーマに定義された実表やビューはそのスキーマ所有者(作成者)にしか処理権限が与えられない
  • 複数の利用者がデータベースを利用できるようにしたければ、スキーマ所有者以外にも処理権限を付与する必要がある
    • データベース管理ユーザーは全権を持っていて危険な処理もできてしまう
    • できることを制限したユーザーで操作したい
  • オブジェクト(表)の処理権限
    • 読取(SELECT)権限
    • 削除(DELETE)権限
    • 挿入(INSERT)権限
    • 更新(UPDATE)権限
  • cf. スキーマ
    • 1つのデータベースの枠組み
    • スキーマ内に複数の表やビューを定義できる
P.327 処理権限の付与
  • 権限の付与:GRANT文による
  • GRANTの基本構文は次の通り
1
GRANT 権限 ON 表名 TO 許可識別子
  • 権限指定
    • 4 つの処理権限(SELECT,INSERT,UPDATE,DELETE)
    • ALL PRIVILEGES(すべて)を指定できる
  • 権限を複数付与する場合はカンマ(,)で区切って指定
P.327 処理権限の取消し(変更)
  • 一度付与された権限を取消し(変更)できる
  • 権限の取消しはREVOKE文
  • REVOKEの基本構文
1
REVOKE 権限 ON 表名 FROM 許可識別子
P.328 6.7 埋込み方式
P.328 6.7.1 埋込みSQLの基本事項
P.328 静的SQLと動的SQL
  • 静的 SQL:あらかじめ決められたSQL文をプログラム中に埋込んで実行する方式
    • 実際のアプリケーションではあまり見かけない
  • 非カーソル処理:データベースの表から1行を取り出すこと
    • 次のような SELECT 文
    • この INTO を見たことがない

SELECT 社員名, 年齢 INTO :name, :age FROM 社員表 WHERE 社員コード = '100';

  • 動的 SQL:実行する SQL 文がプログラム実行中でな ければ決まらない場合に SQL 文を動的に作成し実行する方式
  • 上の社員コードがふつう変わる:それが「動的」。
  • この動的な部分に変なコードを埋め込むとまずいというのがセキュリティ問題で、例えば SQL インジェクションの問題。
P.328 ホスト変数
  • ホスト変数:データベースとプログラムのインタフェースとなる変数
  • 埋め込み SQL では SQL を実行すると取り出されたデータをINTO句で指定したホスト変数に格納する
  • ホスト変数は通常の変数としてもアクセスできる
    • 出力関数で表示
    • 入力関数で値を入力してそれをSELECT文の条件としても使える
P.329 6.7.2 カーソル処理とFETCH
P.329 カーソル処理
  • 「SELECT・・・・INTO・・・」形式では,1行のデータしか取り出せない
    • (見たことがないのでイメージがつかない)
  • 検索結果が複数行の場合は1行ずつ取り出せるカーソル処理を使う
  • カーソル処理は SQL 文で問い合わせた結果をあたかも1つのファイルであるかのようにとらえる
  • FETCH文でそこから1行ずつ取り出す方式
    • 1つのSELECT文に対してカーソルを宣言(定義)
    • カーソルのオープンでSELECT文が実行
    • カーソルで1行ずつ取り出せる
    • FETCH文で繰返し行を取り出して処理
    • 終了したらカーソルを閉じる
P.330 FETCHで取り出した行の更新
  • 参考:図 6.7.2:FETCHで取り出した行の更新処理
  • FETCH文で取り出した行を更新あるいは削除する場合,FETCH文のあとに続くUPDATE文やDELETE文のWHERE句 に「WHERE CURRENT OF カーソル名」と指定する。
  • (FETCH 文を見たことがないのでイメージつかない)
P.330 処理の確定と取消し
  • 一連のデータを更新している途中でエラーが出た場合
  • それまでの更新処理を取り消して元に戻す必要がある
  • 整合性を取らないといけない:いわゆるロールバックが必要
  • トランザクションが正常終了したときは「コミット」する:更新処理の確定
P.331 6.8 データベース管理システム
P.331 6.8.1 トランザクション管理
P.331 トランザクションとは
  • 複数の利用者が同時にデータベースにアクセスしてもデータが矛盾してはいけない
  • この仕組みがトランザクション管理
  • トランザクション:データの整合性を取るための SQL 処理の最小単位
    • 「回復の単位(Unit of Re-covery)」とも呼ぶ
P.331 ACID 特性
  • トランザクション処理は原子性・一貫性・隔離性・耐久性の 4 特性が必要
  • 厳密な一貫性(完全一貫性)が必要
    • トランザクションではそのすべての処理が完了するか(All)、あるいはまったく実行されていない状態か(Nothing)のどちらか一方で終了しなければならない
    • これは,COMMIT(正常終了),、ROLLBACK(異常終了)で実現できる
    • COMMIT(コミット):更新処理を確定し、データベ ースへの反映を保証する
    • ROLLBACK(ロールバック):更新処理をすべて取 消し,トランザクション開始時点の状態へ戻す
  • 参考:結果整合性
    • 完全一貫性に対する概念
    • 分散トランザクションやいわゆる NoSQL で使われる
    • 参考:分散トランザクション
      • トランザクション管理するべきテーブルが複数のデータベースにまたがっているとき
      • すべてのデータベースをロールバックしなければいけない
P.331 表 6.8.1 ACID 特性
  • 原子性(Atomicity)
    • 更新処理トランザクションが正常終了した場合だけデータベースへの反映を保証する
    • 異常終了時は処理が何もなかった状態に戻す
  • 一貫性(Consistency)
    • トランザクションの処理によってデータベース内のデ ータに矛盾が生じないこと
    • 常に整合性のある状態が保たれていること
  • 隔離性(Isolation)
    • 複数のトランザクションを同時(並行)に実行した場合 と,順(直列)に実行した場合の処理結果が一致するこ と
    • 独立性ともいう
    • トランザクションのスケーリング:複数のトランザクションを同時実行してもそれが正しい順で実行されるように順序づけること
      • 基本は並行実行の結果と直列実行の結果が等しくなるように調整する
    • ロック:直列可能性を保証する方法
  • 耐久性(Durability)
    • いったん正常終了したトランザクションの結果はそ の後に障害が発生してもデータベースから消失しないこと
    • トランザクションの再実行を必要としないこと
P.332 6.8.2 同時実行制御
  • 同時実行制御(並行性制御):複数のトランザクションを同時に実行しても矛盾を起こすことなく処理を実行するメカニズム
  • 実現する方法:ロック・多版同時実行制御・時刻印アルゴリズム
    • 多版同時実行制御に対してロックによる通常の同時実行制御を単版同時実行制御という
P.331 ロック
  • 複数のトランザクションを同時実行してもその結果はトランザクションを直列実行した結果と同じでなければならない(ACID 特性の隔離性)
  • 同時実行制御が行われない環境では結果が変わる場合もある
  • 例:図 6.8.1 を見ること
    • トランザクションTR1とトランザクションTR2が同じデータaを①→②の順に読み込む
    • それぞれのトランザクションでデータaを③→④の順に更
    • COMMITした場合トランザクションTR1がデータaを「a+5→10」に更新してもトランザクションTR2が aの値を「a+10→15」に更新してしまう
    • トランザクションTR1における更新内容が失われる
    • これを変更消失(ロストアップデート)という
  • こうした問題を防ぐための対処法
    • データベース管理システムではデータaにロック(鍵)をかける
    • 咲にデータaをアクセスしたトランザクションの処理が終了するか、あるいはロックが解除されるまでほかのトランザクションを待たせる制御をする
  • 参考 ダーティリード:他のトランザクションが更新中のコミットされていないデータを読み込むこと

ロックが必要な状況

  • 事務員が二人
  • Aさんは給与振り込み、Bさんは書類提出チェック
  • 同じテーブルに書き込まれている
  • Aさんがいろいろやった
    • 給与振り込みはまだ、書類の提出もまだ
    • 給与の振り込み終了の情報を書き戻す
  • Bさんがいろいろやった
    • 給与振り込みがまだ、書類の提出もまだ
    • 書類の提出確認を書き戻す

社員マスタ

  • 社員ID、社員名、今月給与振り込みステータス、書類の提出ステータス
P.333 デッドロック
  • P.250 5.2.5 も参考にすること
  • デッドロック:複数のデータに対してロックしようとして互いにロックの解除を待ち続けてしまう
  • 例:図 6.8.2
    • データA、B、Cを専有して処理するトランザクションTR1,TR2,TR3がある
    • 各トランザクションは処理の進行に合わせて表に示される順(①→②→③)にデータを専有
    • トランザクション終了時に3つの資源を一括して解放
    • トランザクションTR1とトランザクションTR2はデッドロックを起こす可能性がある
  • 再び図 6.8.2 を見る
    • データを専有する順序が等しいトランザションTR1とTR3の間ではデッドロックは起こらない
    • 異なる順や逆順でデータを専有するトランザクション間ではデッドロックが起きうる
  • デッドロックが起きたときロールバックなどで 1 つのトランザクションを強制的に終了させてデッドロックを解除する
P.334 ロック方式
  • 2相ロック方式・木規約
  • ロック方式
    • 第1相:使用するデータすべてにロックをかける
    • 第2相:処理後にロックを解除する
    • トランザクション内でのロック・解除はそれぞれ1回だけ
    • 直列可能性は保証されるがデッドロック発生の可能性は 残る
  • 木規約
    • データに順番をつけてその順番どおりにロックをかける
    • デッドロックが起きず、直列可能性を保証する
    • データへの順番づけには木(有向木)を使う
    • トランザクションの同時実行性が低くなるため特殊な用途で使う(どんなところで使うのだろう?)
  • 参考:有向木
    • 方向をもった有向グラフ(の 1 つ)
    • データ構造とアルゴリズムを勉強しよう
    • データベースは検索の便宜もあってデータ構造とアルゴリズムが大事
P.334 ロックの種類
  • 占有ロック・共有ロックの 2 モード
    • DBMS でトランザクションの同時実行性を高めるため
  • 専有ロック
    • データ更新するときに使うロック
    • データに対するほかのトランザクションからのアクセスは一切禁止
  • 共有ロック
    • ふつうデータの読取りの際に使用されるロックで
    • 参照だけを許可
  • 表 6.8.2 参照:2 つのロックモードの組み合わせによる同時実行の可否
  • 専有:占有または排他ともいう
  • 共有:共用ともいう
  • 共有ロックで同時実行性を高める
    • 先行トランザクションがロックしたデータを後続トランザクションが参照できる
    • 待ちがなくなり同時実行性が高まる
    • たいていのシステムでは書き込みよりも読み込みの方が多い
P.335 ロックの粒度
  • ロックをかける単位:表・ブロック・行
    • ブロック:物理的なIOの単位
  • ロックの単位をロックの粒度という。
    • 粒度が小さければ小さいほど同時実行性があがる代わりにロックの回数が多くなり、ロック制御のためのオーバーヘッドが増える
    • 粒度が大きいほどロックの解除待ちが長くなり、同時実行性が下がる
P.336 多版同時実行制御(MVCC:MultiVersion Concurrency Control)
  • 同時実行性を高めつつ一貫性のあるトランザクシ ョン処理を実現する仕組み
  • ふつう専有ロック中(更新中)のデータは参照できない
  • 後続トランザクションはロックの解除を待つ
  • 多版同時実行制御での対処
    • 更新中のデータに対する参照要求に更新前(トランザクション開始前)の内容を返す
    • 後続トランザクションを待たずに処理できる
  • 専有ロックと共有ロックの同時確保で同時実行性を高める一方で、後続トランザクションには現在からさかのぼったある時点における一貫性のあるデータを提供する
  • 整合性を欠いたデータの参照を防げる
# 参考:整合性を欠いたデータの参照
  • ダーティリード
  • アンリピータブルリード
    • 再度読み込んだデータが他のトランザクションで更新されている
    • 前回読み込んだ値と一致しない
  • フ ァ ン ト ム リ ー ド
    • 再度読み込んだデータの中に他のトランザ クションによって追加・削除されたデータがある
    • 前回と検索結果が変わる
P.335 時刻印アルゴリズム
  • ロック制御をせずに同時実行制御を行う方法としての時刻印(タイムスタンプ)アルゴリズム
  • トランザクションが発生した時刻 T とデータのもつ読込み時刻 Tr、あるいは書込み時刻 Tw を比較して読み書きを判断する
  • 読み込みの場合
    • Tw≦T のときだけ読み込む
    • 読み取ったあとは読み込み時刻 Tr にトランザクション発生時刻 T を設定
  • 書き込みの場合
    • Tw≦T かつ Tr≦T のときだけ書き込む
    • 書き込み後、書込み時刻 Tw にトランザクション発生時刻Tを設定
  • 参考:P.336 図 6.8.4
# 参考:楽観ロック
  • 楽観的方式:ロック制御をしない他の方法
  • 仮定:同じデータへのアクセス(更新要求)はめったに発生しない
    • 処理を進めて更新直前にほかのトランザクションでそのデータが更新されたかどうかを確認する
    • 更新された場合はロールバックする
  • 実装例
    • データベースに「更新回数」のようなカラムを持たせる
    • データ取得時に更新回数も送る
    • データ更新するときは更新回数つきでサーバーにリクエストを出す
    • 更新回数が同じなら更新する
    • 更新回数が違うなら更新要求を却下する
    • ほぼ同じタイミングで複数の更新要求が出ることはあり、このときは更新が重複して異常が出る
      • これが起きない(起きにくい)というのが最初に書いた「同じデータへの更新要求はめったに発生内」という仮定
P.336 障害回復管理
P.336 障害の種類
  • データベースに発生する障害の三大分類
  • 媒体障害:記憶媒体の故障でデータが消失
  • システム障害:DBMSやOSのバグ・オペレータの誤操作によるシステムダウン
  • トランザクション障害:プログラムのバグ・デッドロック発生でのトランザクションの強制終了など、実行中のトランザクションが異常終了
P.336 目標復旧時点
  • RPO:Recovery Point Objective
  • システム再稼働時に障害発生前のどの時点の状態に復旧させるかを示す概念で、データ損失の最大許容範囲
  • 目標復旧時間(RTO、Recovery Time Objective)
    • 災害による業務の停止が深刻な被害とならないために許容される時間
P.336 事前対策
  • 障害回復:障害からデータベースを復旧して一貫性が保たれた元の状態に戻すこと
  • 障害回復には次のファイルを事前に取得しておく必要がある
  • ログファイル
    • 障害やバグ対策の基本
    • トランザクション処理でデータベースが更新されるとき,更新前ログ、更新後ログなどの更新履歴(変更情報)を取り、時系列に記録する
    • ジャーナルファイル、ジャーナルログともいう
    • 大量に出るので復旧や原因追及に必要十分な要素をピックアップする必要がある
    • ログファイル容量などを見て自動でファイルが切り替わる(ローテーション)
  • バックアップファイル
    • 媒体障害に備えてデータベースとログファイルを定期的に別の媒体にバックアップ(退避)する
    • データベースのバックアップは定期的に取る
    • ログファイル切り替え時にログファイルのバックアップも取る
      • ふつうn個のログファイルに対してログデータをログファイル1から順に書き込む
      • ログファイル1が一杯になるとログファイル2へと切り替える(ローテーション)
      • このタイミングでバックアップ
P.337 参考 バックアップの種類
  • フルバックアップ:すべてのデータをバックアップする
  • 差分バックアップ:直前のフルバックアップ からの変更分だけをバックアップする。
  • 増分バックアップ:直前のフルバックアップ または増分バックアップからの変更分だけをバックアップする。
  • メリット・デメリット
    • フルバックアップは何も考えずにドカンと復旧できるが容量を食う
    • 差分バックアップはバックアップに使う容量を減らせるが、復旧時に手間がかかる
P.337 媒体障害からの回復
  • 媒体障害発生時:バックアップファイルとログファイルの更新後ログを使ってロールフォワード処理でデータ ベースを回復させる
    • 参考:P.338 図6.8.6
    • T1:バックアップファイル取得
    • T2:媒体障害発生
      • バックアップファイルを別の媒体にリストア、T1時点に復帰
      • T1-T2間の更新データ回復:ログファイルの更新後ログによるデータベースの各レコードを順番に再現するロールフォワード処理
  • 参考:差分バックアップ方式採用時
    • フルバックアップファイルをリストア
    • 直近の差分バックアップファイルのデータを追加
    • 更新後ログでロールフォワード
P.338 トランザクション障害からの回復
  • アプリケーションプログラムのバグやデッドロックを解除するための強制終了などでアプリケーションが異常終了したとき
  • ログファイルの更新前ログを使ったロールバック処理でデータベースの内容をトランザクション開始時点の状態に戻す
  • 参考:P.338 図6.8.7
    • データxとyを更新しなければならないトランザクションがT1で開始
    • データyの更新を行う前にT2で異常終了
    • このままではデータxとyのつじつまが合わない
      • T1からT2の間に行われたxの更新を取り消す必要が出る
    • ログファイルの更新前ログによるロールバック処理 でトランザクション開始時点(T1)の状態に戻す
  • 参考:データとログをメモリ上にバッファリングしている場合
    • まだCOMMITされていないトランザクションはログ・バッファの内容で自動的にロールバック(ROLLBACK)される
P.339 システム障害からの回復
  • 現在のデータベース管理システムでのディスクの入出力効率向上のための工夫
    • データとログをメモリ上にバッファリング
    • まずデータベース・バッファに対してデータの更新
    • ある時間間隔でデータベース・バッファの内容をデータファイル(データベース)へ書き出す
    • 書き出し時点を行った時点:チェックポイント
    • チェックポイントの発生:トランザクションのCOMMITとは非同期で、トランザクションがCOMMITされてもデータベース・バッファの内容はデータファイルに書き出されない
      • チェックポイント発生時、稼働中のトランザクション情報もログファイルに書き出される
# ログ・バッファの内容
  • トランザクションのCOMMITまたはチェックポイント発生でログファイルに書き出される
  • システム障害発生時の問題
    • データファイルに書き出されていないデータベース・バッファ上の更新データの消失
  • P.340 図6.8.9 の TR2
    • システム障害が発生した時点でCOMMITされていない
    • データベース・バッファの内容が消失しても問題ない:再処理で対応
    • 問題になるのはチェックポイント(T1)の前に開始されたTR1
    • TR1はシステム再立上げ後に更新前ログを用いたロールバック処理で
    • トランザクション開始時点の内容に戻す
# 図6.8.10の例
  • チェックポイント(T1)後
  • システム障害発生(T2)前にCOMMITされたトランザクションTR3,TR4による更新内容はまだデータファイルに書き出されていない
  • システム障害が発生した直前のチェックポイント(T1)まではデータベースの内容が保証されている
  • ここから更新後ログを用いてロールフォワード処理によって回復
  • システム障害における障害回復はシステム障害 発生時のトランザクションの状態に応じて変わる
  • チェックポイントを作ることでそれまで行われてきた更新内容はすべてデータベース・バッファからデータファイルに書き出される
  • システム障害が発生してもチェックポイント以降の更新後ログだけでロールフォワード処理で回復できる
    • 回復時間が短縮される
P341 6.8.4 問合せ処理の効率化
P.341 インデックス
  • インデックス():データベースへのアクセス効率を上げるために使う
    • 例えばデータ構造とアルゴリズムの意味で「木」を作っている
  • 一般に検索対象の項目にインデックスをつけるとアクセス(検索)速度はあがる
  • しかしシステム全体のパフォーマンスが遅くなることがある
    • インデックスをつけるとインデックスの更新が走る
    • この処理がどれだけパフォーマンスに影響するかが問題
  • インデックスのつけ方はきちんと考える必要がある
  • 参考
    • 各データに複数の索引語を付けて検索時に具体的な値を与えることで,その値を含むすべてのデータを高速かつ簡単に検索できるように編成
    • 蓄積された索引ファイルを転置ファイル(inverted file:インバ ーテッドファイル)という。
P.341 POINT インデックス設定時の留意点
  • アクセス頻度の高い列(検索でよく使う項目)に張る
    • いわゆる内部 ID 系(これは主キーとして勝手にインデックスがつく・つける)
  • 更新頻度の多い列に対してインデックスを張らない
    • 外部 ID としてのメールアドレス・ログイン ID に張ることは多い
  • 行数の少ない表に対してインデックスを張っても効果は低い
  • データのとり得る値の種類が少ない(データ値の重複が多い)列に対して張っても効果は低い
    • それでも張ることはある
    • 「推測するな。計測せよ。」
  • データ値の重複に大きな偏りがある場合は効果が低い
  • 初期のデータ挿入など多くの行を挿入するときはいったんインデックスを削除するといい
  • 参考
    • インデックスには重複を許さないユニークインデックスと重複を許 すデュプリケートインデックスがある
    • 主キー項目にはユニークインデックスが張られる
P.341 上記POINTの④,⑤について
  • P.342 表はインデックスを張ったある項目Xの値とその行数
  • [例1]と[例2]を比べる
    • データのとり得る種類は両方とも同じ
    • [例2]のほうが重複の程度が平準
    • [例1]のほうが大きく偏っている
    • インデックスで1項目当たりの平均の検索効率の向上が期待できるのは[例2]
  • ただしあくまで一般論
P.342 例1・例2の検索効率を確率的に考える
  • [例1]の場合
    • 検索条件が「項目X=A」である確率は(20/1200)
    • Aの検索はインデックスが使える
    • 目的のデータを検索するにはさらに20件を順次検索する必要が ある
    • このときの最大比較回数は20
    • 「項目X=B」の場合、1項目当たりの検索効率(期待値)は次の式で求められる
    • (20/1,200)×20+(40/1,200)×40+(80/1,200)×80 +(160/1,200)×160+(300/1,200)×300+(600/1,200)×600=403
  • [例2]の場合
    • 1項目当たりの検索効率(期待値)は(200/1,200)×200×6=200
  • 確率的意味からも[例2]のほうが検索効率がいい
  • 参考
    • 効率を下げる重複が多い値で検索する機会がほとんどない場合、実際の効率は例1の方が大きい可能性がある
    • いつでも実際のケースでどうかを考える必要がある
  • 参考
    • インデックスを張った項目を検索条件にして絞り込んだ選択率が10〜20%を大きく超える場合,インデックスの効果はあまり期待できない
P.343 連結インデックス

TODO

2021-02-07 課題

  • 先に進む前に録画してあるか確認しよう

進捗

  • 前回の進捗
    • 基礎知識編:「参考:楽観ロック」まで
    • 本編:04-02終了
  • 今回の進捗
    • 基礎知識編:「6.8.4 問合せ処理の効率化」まで
    • 本編:05-01終了

課題

TODO

* 自分用メモ

* Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 3,7
theta = np.linspace(0, np.pi, 1001)
phi = np.linspace(0, 2 * np.pi, 1501)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()

日々の勉強

Julia

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、しばらく DB の話
復習
  • 3 つのスキーマ
    • ユーザーが見るレベル
    • 正規化などをかけておいたデータベースにもっていけるレベル
    • 個々のデータベースに合わせた具体的なレベル
  • インメモリの DB:コンピューターの基本的なハードウェア構成と意味を復習しよう
本の記述を追いかける
P.336 障害回復管理
P.336 障害の種類
  • データベースに発生する障害の三大分類
  • 媒体障害:記憶媒体の故障でデータが消失
  • システム障害:DBMSやOSのバグ・オペレータの誤操作によるシステムダウン
  • トランザクション障害:プログラムのバグ・デッドロック発生でのトランザクションの強制終了など、実行中のトランザクションが異常終了
P.336 目標復旧時点
  • RPO:Recovery Point Objective
  • システム再稼働時に障害発生前のどの時点の状態に復旧させるかを示す概念で、データ損失の最大許容範囲
  • 目標復旧時間(RTO、Recovery Time Objective)
    • 災害による業務の停止が深刻な被害とならないために許容される時間
P.336 事前対策
  • 障害回復:障害からデータベースを復旧して一貫性が保たれた元の状態に戻すこと
  • 障害回復には次のファイルを事前に取得しておく必要がある
  • ログファイル
    • 障害やバグ対策の基本
    • トランザクション処理でデータベースが更新されるとき,更新前ログ、更新後ログなどの更新履歴(変更情報)を取り、時系列に記録する
    • ジャーナルファイル、ジャーナルログともいう
    • 大量に出るので復旧や原因追及に必要十分な要素をピックアップする必要がある
    • ログファイル容量などを見て自動でファイルが切り替わる(ローテーション)
  • バックアップファイル
    • 媒体障害に備えてデータベースとログファイルを定期的に別の媒体にバックアップ(退避)する
    • データベースのバックアップは定期的に取る
    • ログファイル切り替え時にログファイルのバックアップも取る
      • ふつうn個のログファイルに対してログデータをログファイル1から順に書き込む
      • ログファイル1が一杯になるとログファイル2へと切り替える(ローテーション)
      • このタイミングでバックアップ
P.337 参考 バックアップの種類
  • フルバックアップ:すべてのデータをバックアップする
  • 差分バックアップ:直前のフルバックアップ からの変更分だけをバックアップする。
  • 増分バックアップ:直前のフルバックアップ または増分バックアップからの変更分だけをバックアップする。
  • メリット・デメリット
    • フルバックアップは何も考えずにドカンと復旧できるが容量を食う
    • 差分バックアップはバックアップに使う容量を減らせるが、復旧時に手間がかかる
P.337 媒体障害からの回復
  • 媒体障害発生時:バックアップファイルとログファイルの更新後ログを使ってロールフォワード処理でデータ ベースを回復させる
    • 参考:P.338 図6.8.6
    • T1:バックアップファイル取得
    • T2:媒体障害発生
      • バックアップファイルを別の媒体にリストア、T1時点に復帰
      • T1-T2間の更新データ回復:ログファイルの更新後ログによるデータベースの各レコードを順番に再現するロールフォワード処理
  • 参考:差分バックアップ方式採用時
    • フルバックアップファイルをリストア
    • 直近の差分バックアップファイルのデータを追加
    • 更新後ログでロールフォワード
P.338 トランザクション障害からの回復
  • アプリケーションプログラムのバグやデッドロックを解除するための強制終了などでアプリケーションが異常終了したとき
  • ログファイルの更新前ログを使ったロールバック処理でデータベースの内容をトランザクション開始時点の状態に戻す
  • 参考:P.338 図6.8.7
    • データxとyを更新しなければならないトランザクションがT1で開始
    • データyの更新を行う前にT2で異常終了
    • このままではデータxとyのつじつまが合わない
      • T1からT2の間に行われたxの更新を取り消す必要が出る
    • ログファイルの更新前ログによるロールバック処理 でトランザクション開始時点(T1)の状態に戻す
  • 参考:データとログをメモリ上にバッファリングしている場合
    • まだCOMMITされていないトランザクションはログ・バッファの内容で自動的にロールバック(ROLLBACK)される
P.339 システム障害からの回復
  • 現在のデータベース管理システムでのディスクの入出力効率向上のための工夫
    • データとログをメモリ上にバッファリング
    • まずデータベース・バッファに対してデータの更新
    • ある時間間隔でデータベース・バッファの内容をデータファイル(データベース)へ書き出す
    • 書き出し時点を行った時点:チェックポイント
    • チェックポイントの発生:トランザクションのCOMMITとは非同期で、トランザクションがCOMMITされてもデータベース・バッファの内容はデータファイルに書き出されない
      • チェックポイント発生時、稼働中のトランザクション情報もログファイルに書き出される
# ログ・バッファの内容
  • トランザクションのCOMMITまたはチェックポイント発生でログファイルに書き出される
  • システム障害発生時の問題
    • データファイルに書き出されていないデータベース・バッファ上の更新データの消失
  • P.340 図6.8.9 の TR2
    • システム障害が発生した時点でCOMMITされていない
    • データベース・バッファの内容が消失しても問題ない:再処理で対応
    • 問題になるのはチェックポイント(T1)の前に開始されたTR1
    • TR1はシステム再立上げ後に更新前ログを用いたロールバック処理で
    • トランザクション開始時点の内容に戻す
# 図6.8.10の例
  • チェックポイント(T1)後
  • システム障害発生(T2)前にCOMMITされたトランザクションTR3,TR4による更新内容はまだデータファイルに書き出されていない
  • システム障害が発生した直前のチェックポイント(T1)まではデータベースの内容が保証されている
  • ここから更新後ログを用いてロールフォワード処理によって回復
  • システム障害における障害回復はシステム障害 発生時のトランザクションの状態に応じて変わる
  • チェックポイントを作ることでそれまで行われてきた更新内容はすべてデータベース・バッファからデータファイルに書き出される
  • システム障害が発生してもチェックポイント以降の更新後ログだけでロールフォワード処理で回復できる
    • 回復時間が短縮される

2021-02-21 オンライン プログラミング勉強会の記録

進捗

  • 前回の進捗
    • 基礎知識編:「P.341 6.8.4 問合せ処理の効率化」まで
    • 本編:05-01終了
  • 今回の進捗
    • 基礎知識編:「P.345 6.8.5 データベースのチューニング」まで
    • 本編:05-03終了

課題

TODO

Matplotlib

TeX

データ構造とアルゴリズムに関するリポジトリ

IT基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。

2021-03-07 オンライン プログラミング勉強会の記録

進捗

  • 前回の進捗
    • 基礎知識編:「P.345 6.8.5 データベースのチューニング」まで
    • 本編:05-03終了
  • 今回の進捗
予定
  • 基礎知識編: 本のP.345から
  • 次回から何するか?
  • 本編

課題

TODO

Matplotlib

TeX

データ構造とアルゴリズムに関するリポジトリ

IT基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。

アインシュタインの特殊相対性理論の原論文を英語・多言語で読む会

理工系向けの語学教材作成・整備が主な目的で, 特に英語を中心にして多言語翻訳とともにアインシュタインの原論文を読みます. 単語まわりの情報は英語・英単語のページを参照してください. 文法や読解に関するコンテンツは会員ページで公開しています.

YouTubeでの講義動画

勉強会の案内

はじめに

先日 (2020-08-17) Twitter で上のような告知をした上で, 連続ツイートで簡単に想定の内容を紹介した. この記事の一番下のリンクから参加登録できる. 勉強会についていくつか注意があるので, それを読んだ上で興味があれば参加登録してほしい. まだ参加者間のやり取り用の連絡手段を決めていないこともあり, いったんメルマガに登録してもらう形にしている. 最近メールが届きにくくなっているので, 登録後迷惑メールなどに入っていないか確認してほしい. また勉強会の進め方に関するアンケートもつけていて, 大事な注意があるので確認の上回答してほしい.

2021-06-11 追記

半年以上勉強会を続けてきて気付いたことがいくつかあり, その知見をここにまとめた.

勉強会の進め方に関する大事な点

詳細に入る前に最初にまとめておく.

  • 趣旨としては私がコンテンツを作る上で「その解説はおかしい」と指摘してもらうことが目的で, 参加者が英語を一から勉強することは一切意図していない. 参加者の物理・数学学習はより一層意図していない.
  • 最終的には中高生向けコンテンツ・サービスとして提供していく予定だが, いったん大人向けのコンテンツ作成に向けた勉強会として企画・運営する. つまり最低限の英語学習が済んでいない中高生について, 参加を排除することはないが, 中高生向けの配慮もしない. そして英語の論文を最低限読み進められる程度の英語力を前提にする. 大学受験で要求される単語力・読解力があれば十分だろう.
  • 最終的に中高生に提供するときは物理・数学学習とも並行して提供するので, その意味では物理・数学教育の視点は忘れていないが, 今回の勉強会では読解に必要な最低限の物理の解説以外の物理・数学の解説をする予定はない.
    • これの「指導」は相当大変なので, もし希望される方がいたとして, 指導するとしても有料のサービスとして展開する.
    • 参加者同士で別途物理・数学の勉強会を開くのは全く構わないし, むしろそれを勧める. 参加者同士が交流できるように適当な SNS や Slack を使う予定だが, これは語学以外は参加者同士で何とかしてほしいからという理由もある.

以下, この前提で読んでほしい.

原論文と多言語翻訳

ドイツ語原論文・英訳を含め, 私が直近で興味ある言語への翻訳 PDF のリンクを紹介する. 勉強会では英語メインでドイツ語・フランス語を眺める予定. 他の言語ができる人がいれば, ぜひその人にその言語の解説をやってほしい気持ちはあるが強制はしない.

物理・数学的予備知識

もし物理や数学についても並行して勉強したいなら次の 2 冊, 特に前者を勧めておく.

唐木田本にも翻訳は入っているから内山本は買わなくてもいい.

企画の背景

極論を承知で一言で言えば, 人文系教員および理工系教員の知的怠慢がひどく「理工系のための語学」のような教材がないからだ. 大学院レベルの「語源で単語暗記」のような本はあるが, 中高生が触れるような内容ではないし, 変に理工系一般を意識していて数学にゴリゴリに特化, 物理にゴリゴリに特化といった感じではなく使いづらい. ここでも少し書いているように, 理工系のための歴史・科学史のようなコンテンツもない. 「文系のための数学」のような本はたくさんあるにも関わらず. 人文系・社会学・教育学系教員の知的怠惰・教育上の配慮のなさ・理工系向け教養教育の軽視は甚だしくただただ怒りに震えている.

次のような話もある: 東京外国語大学の言語モジュールがある.

次のような趣旨で作られたそうだ.

TUFS言語モジュールは,東京外国語大学大学院の21世紀COEプログラム「言語運用を基盤とする言語情報学拠点」の研究成果を活かして開発した,新しいインターネット上の言語教材です。英語以外の言語教材は,主として大学生が初めて新しい外国語を学ぶための教材を想定しています。英語については,小学校での総合学習や中学校で初めて学ぶ外国語としての英語を念頭において開発しました。

これのドイツ語の語彙モジュールの「場面による学習」には次のような場面しかない.

  • 海外旅行
  • スポーツ
  • 会社
  • 図書館
  • 家庭/家
  • 部屋
  • 交番
  • 美容院
  • 学校
  • 授業
  • 病院
  • 喫茶店
  • レストラン/食堂
  • 銀行
  • 郵便局
  • デパート
  • 不動産屋

ここで「学校」の項目があるが, この中で理工系の学習・教育・研究という視点はかすりさえしない. 言語学に対する国内最高峰が理工系をこの程度にしか扱わないのならもう何も期待できない. よく本の前書きで「浅学非才の身の私が本を書くなど云々」という話がある. 私はどう控え目に言っても浅学非才というレベルでさえない. それでも誰もやってくれないのなら自分でやるしかない. YouTube などでよく地獄コンテンツを見かけるが, 私が作る語学教材は所詮そのレベルだろう. それでも泥水をすすり生き恥を晒してコンテンツを作るのだ.

勉強会の詳細

数学・物理で大事な類推力を語学学習でも強要するという修羅のコンテンツを作りたい. まず文法は西欧の系統で一定の類似がある. 単語は英語・フランス語では特に類似があり, ドイツ語も多少の類似があるため, そこから強引に手繰り寄せていく感じにしたい. そもそもフランス語由来の語彙は英語の語彙の 70% 程度あると聞いているし, 英語自体はもともとゲルマン系の言語で, ドイツ語がまさにゲルマン系言語と聞いているので, そうした類推をうまく使って言語の世界での類推力をうまく育てたい. そしてその手の類推はいろいろな形で数学や物理でも出てくる. 実際の数学記号の運用の観点からもいろいろな話ができると思っている.

私の観測範囲ではフランス語はイタリア語と語彙がよく似ていて, イタリア語は現代ラテン語とも呼ばれているそうなので, できる限りラテン語まで切り込みたい. 例えば高校数学・物理でも出てくるベクトルはラテン語の「動く」といった意味を持つ vehere がもとであるといったところまで掘りたい. このサイトによると vehicle の ve とも語源を同じくするようだし, 速度を意味する velocity とも語源を同じくするようだ. こういう形で語彙を増強することも考えている. 生物系では学名に本当にラテン語を採用していて, 人文系・社会学系でどうなのかは全く知らないが, ラテンまで遡ってイメージ豊かに言語を理解することは実用的でさえある. 少なくとも理工系にとっては.

語源関係の話については日本語の感覚も使いたい. 中国語でどこまで感覚が一致するのかはわからないが, 少なくとも日本語なら「さんずい」が入っている漢字は水に関わるのは誰でも知っている. 英・独・仏単語についても同じような感覚で臨みたいし, 上で紹介したように実際にある程度までは本当にそれで臨める.

もう少し例を挙げておこう. 例えば「sp」を含む単語はスペル・音からもある程度想像できるように「シュパーン」という感覚がある単語に使われる. ディズニーランドでスプラッシュマウンテンというアトラクションがある. これの splash はやはり水のしぶきの気分がある. スプラッター映画の splatter も血が飛び散るイメージがある. sparkle も Google 画像検索で見るとわかるように「キラキラ光が飛び散る」イメージの「光る」だ. スパンコールのキラキラも同じイメージで, まさしく「さんずい」のような部首の趣がある. これを必要ならラテン語まで遡りつつ, 物理・数学のイメージも載せながら学習したい. 場合によってはギリシャ語も必要だろう.

この語源・部首イメージとは関係ないが件の外語大モジュールのロシア語のページで次のような記述があった.

初めてロシア語を学習する方は,見慣れない文字が多いことに圧倒されるかもしれませんが,よく見ると英語のアルファベットによく似ているものや,数学に用いるギリシャ文字に似ているものがあることに気付かれると思います。

外語大人材からしても, ギリシャ語専攻でもない人間がギリシャ文字を目にする機会の筆頭は数学らしい. ラテン語・ギリシャ語は西欧言語の基礎のようだし, vehere のように物理・数学系の語彙にも深く寄与していると聞くのでそうしたところをついでに突いていきたい.

参考までに他にももう少し単語の類推などに関してどんな感じか気分を書いておく. 例えば日本語でも「た」と「だ」事案があるように t と d は近い. それに対応するように英・独・仏でよく入れ替わる文字だ. 例えば英語の day とドイツ語の der Tag がある. 他に y と g にも入れ替わりがある. いままさに紹介した day と Tag がそうだし, 英語内部でも garden と yard 事案がある. フランス語と比較するなら jardin だ. これらを英独仏でできる範囲で見ていきたい.

ちなみに私は学部の時ドイツ語選択だった程度でしかドイツ語を知らないし, フランス語に至ってほぼ独学である. 文法も少しはやったが, 数学の本を読むための勉強を最優先にしていて, 文法はほぼ全く身についていない. 独・仏については本当に無茶をやるのでそのつもりで来てほしい. あと, 今回に関しては中高英語の文法は一通り扱える前提を敷くことにして, 基本的な文法を把握していない実際の中高生は対象に想定していない. 最終的には中高生向けの整備はするが, いまはまだそこまで行けない.

ついでに書くと, 単語編・文法編は別途コンテンツを作る予定で, 単語編についてはごく簡単な単語帳も作るし, 作りかけのものはある. できればこれの整備も手伝ってほしい気分がある. Google スプレッドシートに編集権限をつけて参加者だけに公開する.

読解以外に大事なこと: 音読

このコンテンツで 1 番重視するのはあくまで読解力の涵養, そしてそのための単語力の増強, 文法の基礎知識の定着だが, 最終的には発音・音読も重視したい. 何故かというと「Russian for the Mathematician」という数学関係者向けロシア語学習の本があり, その中で「読むだけだからと発音を軽視するものがいるようだが, それでもきちんと発音練習をしろ, 音読をしろ」と書いてあったりするほど音読は語学学習で大事だからだ. 上で書いたように, 音の類似とスペルの類似・意味の類似があるので, きちんと音を知ることを甘く見てはいけない.

残念ながらこの勉強会で音読や発音の話を深く触れはしない: 私にその能力・知識がないからだ. ただ大事なことではあるので強調しておく. 並行して詳しい人にコンタクトして, いろいろ勉強する予定ではある.

あえて原論文にアタックするご利益

これは中高生向けコンテンツとして展開するときのご利益だ. 大人が読むご利益は知らない. 1 つあるのは単語暗記の都合だ. 上で紹介したようにその気でやれば 1 つの単語から凄まじい広範囲の語彙を獲得できる. その基盤語彙を物理で覚える, そういう気分だ. 単語を覚えるためにはいくつか「コツ」のようなものもあると思うが, 何にせよ記憶を定着させるためにはくり返しが必要だ. 論文を読んでいると特定語彙が馬鹿みたいにくり返し出てくる. もちろん論文の主要テーマに関わる語彙だ. こういう言葉は中二病をくすぐるので, 物理・数学が好きな中高生なら自然とくり返したくなる. 興味が持てる単語が論文で何度も出てきて, それをくり返し濫用するなら当然覚えやすくもある. そうした効果を狙っている.

物理・数学は深く触れない

この勉強会を開く背景の 1 つとして, いままで実際にいろいろなコンテンツを作り, アンケートを取ってきた経緯から相対性理論に興味があるという人が多かったというのもある. やはり量子力学と同じく「物理といえば」という分野で 1 つ憧れの存在であるらしい. いますぐ全ての要望に応えられるわけでもなく, 私が当面やりたいこととや現状の能力の兼ね合いもある. 今回はあくまで「アインシュタインの思考に触れる」という意味で相対性理論の原論文を読解する語学教材という体で挑む.

読解にダイレクトにかかわるので多少は物理の説明はするがそれも限度がある: 実際には物理も数学も解説なしと思ってほしい. あくまで中高生向け語学教材としての内容を整えるための第一歩としての勉強会開催だ. 参加者には語学の水準についても適度なレベルの大学受験を乗り越えられる程度の水準を要求しているように, きちんと理解しようというならそれ相応の水準が必要だ. 厳密に言えば数学・物理とも高校程度は遥かに超える. 以前, 東大物理の清水明さんが「中学のときに特殊相対性理論の発表をしたことがあって, 中学生くらいの数学でもかなりよくわかる」と言っていた記憶はあるが, 東大の教授になるくらいの人物の「中学数学でもわかる」がどの程度信用できるか問題がある. 実際には次の本の内容程度は知っている必要がある.

物理まで理解したければこの本を並行して読み進めてほしい. この本では必要な数学の解説もしてある. 勉強会では触れる予定はない. 関係ある数学についてプログラミングとセットでコンテンツと作っていたりもするので, 必要なら活用してほしい.

ちなみに今回の勉強会で配慮をしないだけであって, 物理・数学がわからない人の参加を排除したりはしない. 興味があれば気楽に参加してほしい. 合わなければいつ抜けてもらっても構わない.

開催スケジュール

勉強会は Zoom を使ってオンライン形式で, 週に 1 回, 1 時間を想定する. 基本的には私が話す前提で, 他にもふつうに仕事があり, プライベートでもいろいろやっているのでそれ以上は準備が間に合わない. 参加者の都合も見ようとは思うが, いまのところ平日, 金曜日の 20:00-21:00 あたりを考えている. 原論文がドイツ語なのでドイツ語に詳しい人がいると嬉しい.

作成途中コンテンツの公開

「こんなやつがこんなことをやっている・やろうとしている」のをアピールするため, YouTube に勉強会の録画を放流する. これについて次の点を注意してほしい.

参加者の顔出しは要求しない (する意味がわからない) のでそれは気にしなくて構わない. 名前については参加者の識別のために使うだけなので本名である必要はないが, 何かしらの「識別名」は公開してもらう. しかし勉強会で発言したら声は YouTube に上がるし, 場合によっては名前も出てしまう: zoom の表示名が本名になっているとついそれで呼んでしまう可能性がある. こうしたデメリットを重視する人は参加を控えてほしい.

登録はこちらから

もしあなたがこの勉強会に興味があるのなら, 次のフォームから登録してほしい. いくつかのメディアで同時に募集するので, いったんメルマガ登録の形で募集する. 上に書いた通り, 参加者同士で交流して勉強会で触れられない部分を補足し合ってほしいので, 最終的にはメルマガ以外のメディアやツールを使う予定だが, とりあえず募集はメルマガに集約する.

  • (閉鎖) 特殊相対性理論の元論文を多言語で読む 勉強会登録フォーム

注意: 最近 icloud.com, me.com, mac.com や docomo, ezweb, softbank などの携帯メールアドレス, hotmail.com, hotmail.jp などのマイクロソフト系のメールアドレスにはメールが届きにくくなっている. Gmail は比較的届きやすいようなので, Gmail で登録してほしい. メールが届かない場合, 迷惑メールになっていないか, 確認すること.

最後に: 学生時代の思い出, そして屋敷先生

実はアインシュタインの原論文は早稲田の物理学科所属, 学部 2 年当時の語学のドイツ語の講義で少し読んだことがある. 残念ながらというか当然というべきか, 勉強していなかったからドイツ語自体はもうほとんど覚えていない.

そのときの先生はいわゆる人文系の先生で屋敷先生と言った. 「どうしてもアインシュタインの相対性理論を理解したいから」といって原論文を読んだのだそうだ. そのとき基本的な数学・物理の勉強に使ったというのが上で紹介した唐木田本だ. 実際に講義でもこれも併用していた.

学生当時は絶版になっていて, このコピーを使っていた. ちくま学芸文庫で復刊したので喜ばしい. 当時, 屋敷先生が次のようなことを言っていた.

「こういう本は本当に大事だと思う. アインシュタインの知的財産は私の人文学の人間にも触れられるようになってほしい. みなさんも将来, こういう本を書くような人になってほしい」

大学を出てから久しい今も覚えているし, 心に刻んでいる. 実際に勉強会を主催してコンテンツを作っていこうと思う程度には.

ちなみに屋敷先生は「アインシュタインのドイツ語は上品で素晴らしいです. ドイツ語教材としても非常に優れているので, 全理工系学生に触れてほしい」と言っていた. 英語だけではなく無理やりドイツ語原論文も持ち出すのはこう聞いていたから, という理由もある. 私自身, もっときちんと読んでみたい.

改めて: 登録はこちらから

もしあなたがこの勉強会に興味があるのなら, 次のフォームから登録してほしい. いくつかのメディアで同時に募集するので, いったんメルマガ登録の形で募集する. 上に書いた通り, 参加者同士で交流して勉強会で触れられない部分を補足し合ってほしいので, 最終的にはメルマガ以外のメディアやツールを使う予定だが, とりあえず募集はメルマガに集約する.

  • (閉鎖) 特殊相対性理論の元論文を多言語で読む 勉強会登録フォーム

注意: 最近 icloud.com, me.com, mac.com や docomo, ezweb, softbank などの携帯メールアドレス, hotmail.com, hotmail.jp などのマイクロソフト系のメールアドレスにはメールが届きにくくなっている. Gmail は比較的届きやすいようなので, Gmail で登録してほしい. メールが届かない場合, 迷惑メールになっていないか, 確認すること.

第001回 勉強会の概要と論文タイトル解説

まず自分への確認

  • 録画はじめた?

これを読んでいる方への注意

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

(改めて) 内容

  • 勉強会案内ページの URL
  • 理工系向けの語学教材作成・整備が主な目的.
  • 特に英語を中心にしてアインシュタインの原論文を読む.
原論文と各種翻訳へのリンク
参考: 日本語訳と数学・物理に対する補足 (購入の必要なし, お好みで)

当面の進め方の予定

  • メイン: 本文を構文などをきちんと取りながら文法的に丁寧に読む.
    • しばらくは英語だけ.
    • たぶん毎回 1-2 文程度しか読まない (読めない).
  • 補足: ボキャビル用コンテンツの作成.
    • 理工系のためのボキャビルという視点で面白そうな単語を深く掘る.
    • 英語がメイン.
    • 英語のボキャビルを目的に単語についてはドイツ語・フランス語も適宜掘る.
  • ひたすらに私が話し, おかしなところがあれば指摘してもらう.
  • コンテンツの構成なども何かあれば適宜指摘をもらう.

作ろうと思っているコンテンツの全体像

大きくわけて次のモジュールからなる.

  • 中高生向けの数学・物理・プログラミングに関わるコンテンツ
  • 単語 (ボキャビル)
  • 文法
  • 面白そうな文章・論文などの読解
  • 語学学習のための英文作法や発展的・雑多な話題
    • テクニカルライティング
    • 工業英語
    • コロンとセミコロンの意味や使い分け
    • 理工系文章に we が多い理由
    • etc
  • 未整理のいろいろなメモ (現代数学探険隊などに記録)

ここではあくまで語学に集中する. 文法は (面白さを除けば) 既存のコンテンツでもかなりカバーできるはずなので優先度は低い. まずは単語と読解を重視して進める.

参考: 数学・物理・プログラミング系でやった・やっていること
読解
  • 当面はアインシュタインの原論文を読む.
  • 文法は既存のコンテンツに任せることにしてその実地応用という視点で進める.
単語 (ボキャビル)
  • 日本語を含めた多言語の視点を取り入れる.
  • 日本語の視点: 漢字の部首やつくりが漢字の意味を指定している.
    • 英語でいう部首やつくりは何か?
    • 部首をどう見抜くのか?
    • 単語の発音からの類推.
    • 単語のスペルからの類推.
    • アルファベットの転換.
  • 例: bewegen を先に見てみよう.
    • 原論文のタイトルに含まれるキーワードでもある.
  • アルファベットレベルで文字・言語に対する感度を上げてほしい.
    • 物理で $E$ と書いたら (文脈依存で) 電場, エネルギーを想像する.
    • 数学で $E$ と書いたら (文脈依存で) 単位行列, 射影, ベクトル束, 期待値 (expectation) などをイメージする.
      • 単位行列は Einheitsmatrix である模様.
        • die Einheitsmatrix / die Matrizen
  • アルファベットと類推
    • e.g. 現象と偏微分方程式
    • 文字・式に落として抽象化した上で方程式の類似で類推する.
    • ある種の物理的・数学的直観とも関係する.
  • 勉強会本体へ.

指摘メモ

  • 交代原則の言葉を調べておく
  • math_lang の bewegen などに TODO メモを入れておいたので, あとで調べて埋める.
    • 対応
  • 佐藤健太郎, 炭素文明論
    • 有機化学者による科学史・化学史の本.
    • めちゃくちゃ面白いので必読.
    • 語学から歴史・科学史にも迫りたい.

今日話した内容メモ

  • そのうち適当な形で有料コンテンツ・有料サービスとしてリリースする予定.
    • 勉強会みたいな感じの有料サービスの方がいい?
    • 独学したい・できる人もいるだろうし, 「それは違う」とコメントをもらえた方がいいので, この勉強会ログとしては内容を公開していく.
    • 理工系の人達向けに「こういう有料サービスがあってもいいし, 需要もあるし, それで食ってもいける」ことを示したいので, 最終的には何らかの形で有料サービスとして展開したい.
    • この記録をもとにして (私に無許可で) 個々に勉強会を開いてもくれても構わない.
今日の英文解釈: 論文タイトル
英文と訳
  • (en.0) ON THE ELECTRODYNAMICS OF MOVING BODIES
  • (de.0) Zur Elektrodynamik bewegter Körper
  • (fr.0) De l'électrodynamique des corps en mouvement
  • (ja.0) 運動物体の電気力学について
文構造・文法事項
# タイトルに関わる一般的な事情

日本語でもよくあるように章や節のタイトルは完全な文ではないこともよくあります. ここでは「---について」で, 日本語でもよくあるタイプの句です.

上の英文では全て大文字になっています. ここでタイトル書きの大文字小文字のパターンをいくつか注意しておきます.

  • ふつうの文章と同じ先頭の単語だけ先頭の文字が大文字.
  • 全ての単語の先頭の文字が大文字.
  • 全ての単語の全ての文字が大文字.

他のパターンもあるかもしれません. 少なくとも私が見たことがあるのはたいてい上のどれかです. 論文雑誌の投稿規約で指定があります. 英文の文章作法もあると思いますが, 説明できるほど調べ尽くせていません.

# 英語の文構造

では実際の文構造を見てみましょう.

タイトルのうちメインフレーズは the electrodynamics で, 特に of moving bodies という限定の修飾がついています. Electrodynamics は学問名でふつう学問名は無冠詞です. ここでは電磁気学の対象はいろいろある中で, 特に moving bodies に対する電磁気学だ, という意味で定冠詞の限定がついています.

次に moving bodies に関して見てみましょう. ここでの moving は現在分詞です. 日本語文法の言葉で言えば, 現在分詞は形容詞であり, 動名詞は名詞です. 名詞 bodies を修飾している moving は形容詞なので, 現在分詞とみなすべきです.

ときどきこの 2 つの区別がきちんとできない人がいるようです. それを説明しておきます. 現在分詞は「進行感・ライブ感」を表しています. つまりいままさに何かしている状態を表します. moving body は「move している body」を表しているのです. もっと言えば a body moves と主語・動詞の文章に書き換えられると言っても構いません.

一方, 動名詞はまさにその動きです. 例えば動名詞としての running は「走ること」そのものです.

聞くところによると, そもそも現在分詞と動名詞自体, ラテン語などの時代には区別がなかったようで, そもそもそう簡単な話でもないようです. 格の話など古い時代の方が複雑な文法をしていることもあり, 文法の変遷や言語ごとの特徴理解は簡単ではありません.

# 単語レベル・訳の説明

個別の単語の解説は必要に応じて単語編を参照してください.

## 英語
  • on = about: ---について
  • electrodynamics: 電気力学
  • moving $\gets$ move: 運動する
  • body: 物体 (物理の専門用語)
## ドイツ語
  • zur: zu+der, zu = to
    • der: ドイツ語の定冠詞
  • die Electrodynamik = the electrodynamics
  • bewegter $\gets$ bewegen = move
  • der Körper = the body
## フランス語
  • de: 前置詞, of など
  • (f) l'électrodynamique = the electrodynamics
  • des: 不定冠詞の複数形
  • le corps = the bodies: 単複同形.
  • en: 前置詞
  • mouvement = movement
単語集
electricity

この語にはかなり複雑な経緯があります. Electricityはラテン語の electricus から来ています. これがさらに古代ギリシャ語の ἤλεκτρον から来ていて, 琥珀 (amber) を指しています. ギリシャ語の ἤλεκτρον も複雑で Wikipedia によると, 琥珀から次の 3 つに分化しました.

  • 物理での電子の意味. 琥珀をこすったときの摩擦電気から電磁気現象が発見されたことに由来.
  • 金と銀の合金である琥珀金. 古代ギリシアで琥珀と同じ名称で呼ばれていた.
  • マグネシウムを主体とした合金.

ちなみに磁石の magnet も語源の 1 つとされているのは「古代ギリシャのマグネジア地方で取れた変な石」なので, 電磁気に関わる語源にはギリシャ語が深く関わっています. さらに言えば amber はアラビア語由来です.

中世のヨーロッパでは古代ギリシャやローマの知見は散逸してしまい, アラビアから逆輸入の形で中世ヨーロッパに戻ってきた経緯があるため, その一環なのでしょう. ちなみにアルコール, alcohol もアラビア語起源で, アラビア語起源の科学用語もいろいろあります.

electrodynamics
  • 名詞
  • 電気力学
  • electro + dynamics
  • electro-: 電気-
  • dynamics: 力学, 動力学
  • Wiktionary
  • Etymonline

Electrodynamics は electro と dynamics でわけて考えることにし, 分解した語については対応する単語を調べてください. 特に electro- は electricity などから考えてます. Electro- のような形で他の語とつながって形容詞的に使うことがあるのも覚えておくといいでしょう. たくさん例を見ていると自然と体得できることでもあります.

Electrodynamic は直訳すると「電気力学的」です. 「電磁力学」という日本語も同じ意味です. また英語で使われるときに磁気の議論を含むときでも electrodynamic と書き, electromagnetodynamics のように書きません. 例えば磁気も理論も明らかに含む量子電気力学は英語で quantum electrodynamics (QED) です.

単に dynamics とだけ書くと動力学という意味です. 静力学という言葉もあり, これは statics と言います. 例えば気象静力学は meteorological statics です.

body

中学生どころか小学生でも「身体」という意味を知っているでしょう. 物理では「物体」の意味で使われます. このように専門用語として理解しなければいけない単語はたくさんあります. もちろん日本語でもエネルギーやポテンシャルのように専門用語としての意味を本歌に取りつつそれとはずれた意味で日常語として使われている言葉があります. まずはそういう概念・言葉があると知るのが大事です.

対応する印欧祖語は bʰewdʰ- でこれは "to be awake, observe" という意味があります. 観察対象のような意味から物体に派生していったのでしょう.

他の意味について少し触れておきます. Etymonline では 1660 年代から "main portion of a document" としての用例があると紹介されています. これは IT 系でもよく使われます. もしあなたが HTML を知っているなら, この中にも head と body というセクションがあるのを知っているでしょう. この body がまさに「ドキュメントの主要部」の意味です.

ちなみに上の portion はポーションと読みます. あなたは「ポーション」と聞くとゲームのファイナルファンタジーで出てくる回復アイテムとしてのポーションを想像するかもしれません. それは potion で別物です. 特に Wiktionary によると, ラテン語の potio (飲み物) に由来していて, ラテン語自体がさらにギリシャ語の poton に由来します.

bewegen

Bewegter は動詞 bewegen から来ています. 一見するとこれと move が対応する理由が全くわからないでしょう. Bewegen の接頭辞 be は自動詞から他動詞を作るはたらきを表していて, 接尾辞の en は動詞を表す接尾辞です. 動詞を表す接尾辞という概念については日本語でも次のような特徴があることからその存在は推察できるでしょう.

  • 動詞の最後は「う」行: 売る, 買う, 作る.
  • 形容詞の最後は「い」: 美しい, 面白い, 楽しい.

したがって問題は weg です. これは語源からの視点, そしてある意味物理・数学的に考えれば move との対応が見えます. いくつかのポイントがあるので順に見ていきます.

少なくとも英・独・仏語には g と y の交替現象があります. 例えば英語内部で garden と yard は同じ (ような) 意味ですし, フランス語では jardin が対応し, ドイツ語では der Garten が対応します. 英・独対応を見ると d と t の交替現象も見え, 音に注目すれば「ディー」と「ティー」で, 日本人の感覚からすれば文字のレベルで似ていることがわかりますし, 音の類似の重要性も見て取れます. 英・仏対応を見ると g と j の交替現象も見え, これまた音に注目すれば「ジー」と「ジェー」で似ています.

さて, g と y の交替に戻りましょう. ここで言えば weg から way (道) が想像できます. ドイツ語では「ヴェーグ・ヴェーク」で, 英語では「ウェイ」です. ここでも w に関する濁音かどうかの違いがあるものの, e と a は気分的に「ェイ」で音の対応があります.

音の観点からすると w と v, g と k, c の対応があります. つまり weg から vec・vek が連想できます. ここからさらに vector/vektor にまで話を持っていければ完璧です.

Vector はもちろん数学のベクトルに対応する英語で, vector の語源はラテン語の vehere で「運ぶ」といった意味があります. Wiktionary によればラテン語の vector は "carrier, transporter" で vehō ("I carry, I transport, I bear") に由来します. ラテン語・イタリア語は主語に応じて動詞の活用の形が全て違います. 主語を省略しても意味が通じることから, 日本語のように主語が省略する方が多いようで, vehō だけで I carry です.

他の英単語からすると vehicle などとも関係があります. そして etymonline を見ると from PIE root *wegh- "to go, move, transport in a vehicle" という記述があります. ここで PIE は Proto-Indo-European の略で, *wegh- は印欧祖語という仮想的な言語の語根という意味です. つまり weg (wegh) という綴りに vehere, vector などと同じ感覚が籠められています. 漢字でさんずいが水に関わる概念を表すのと同じ気分です. ドイツ語の bewegen と英語の move が対応するのは weg に込められた意味によります.

言い始めるときりがありません. 例えばドイツの自動車メーカーでフォルクスワーゲン (Volkswagen) があります. この Wagen は車の意味で, wag が上でコメントした「運ぶモノ」の意味です. 英語でも wagon が車を指すわけで, それと同じ気分の動詞が bewegen なのです.

他にもベルトコンベアのコンベアは conveyer で動詞 convey から来ています. この convey の vey に y と g の交替原則を使うとやはり veg で, 音の類似から weg または vec/vek をイメージすれば「運ぶモノ」です. こうして weg が描く世界が見えてきます.

der Körper / die Körper

特殊相対性理論の論文で対応する英語は body でした. Wiktionary で見ても語源は似ても似つきません. しかし同じく Wiktionary とフランス語で対応している corps を見るとここに対応する英語として corpse があるのがわかります. これは遺体という意味です. 少なくとも英語にも身体を表わす言葉として残っています. 直接 body との関係はないにせよ, 英・独・仏の間で語源が同じ言葉が似た意味を持っているのです.

また数学, 特に代数学の群・環・体の体もドイツ語では Körper です. 代数学の対象としての意味の体は英語だと field です. なぜこういうのか私は知りません. ちなみに電磁場は electromagnetic field で, 場は field です.

corps
  • 男性名詞
  • 物体 (専門用語), 身体, 体 (代数学)

Wiktionary によるとやはりドイツ語の Körper と同じくラテン語起源で「身体」の意味の corpus から来ています. 複数形では軍隊などの意味も持っていて, 英語でも複数形で同じ意味です. 派生語として corporation もあり, 会社の意味があります. ちなみに生協のコープは英語の協同組合 co-operative です.

さらに corpus二重語でもあります. これは日本語でも使われる言語学の「コーパス」, つまり「テキストや発話を大規模に集めてデータベース化した言語資料」です. 二重語が何かというと, 1 つの言語の中である 1 つの共通の語源に由来しながら, それぞれ違う語形を取り, 別の意味や機能を持たせて同時に使われている 2 つの語を指す言葉です. 姉妹語ともいいます.

ドイツ語と同じく, 代数学の群・環・体の体を表す言葉です.

第002回 分詞の解説, 第1文の訳と文法事項

まず確認

  • 録画はじめた?

これを読んでいる方への注意

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 教えてもらった分詞の話
  • 第 1-2 文の 2 文やる
  • あまった時間で単語

進捗

  • 教えてもらった分詞の話
  • 第 1 文の文法解説
できなかった項目
  • 第 2 文
  • 単語の深掘り

次週予定

  • 各文型が持つ意味: 文法事項
  • 第 2 文
  • 単語の深掘り

今日のメモ

  • Google 画像検索による単語のニュアンス把握は使える
  • sp の意味の理解: splash, sparkle, 「輝く」に対応する語 で sparkle/shine の比較
  • 自動詞と他動詞を使った分詞の意味の理解
    • 概念に言葉をあてる意義
    • 概念を言語化してはじめて意味や現象を認識できる
      • 例: 「高校物理あるある」ドップラー効果を勉強したあと救急車の音ではしゃぐ
  • 論文の記述のわかりにくさ問題
    • 当時, 確立しておらず紛糾していた議論を慎重に慎重を重ねて議論している「論文」だから.
    • 内山訳は現在の理解・特殊相対性理論の立ち位置を知った上で「わかりやすい意訳」をしている部分がある.
      • 必ずしも「忠実な翻訳」ではない.
      • 悪いわけではない.
    • 当時の物理学事情を知らないとこのわかりにくさの源泉が理解できない.
    • 論文読解を通して人の営みとしての物理学を見る.
  • 型から意味を推測する.
    • 文型それ自体が意味を持つ
    • cf. 型が強いプログラミング言語での型の表現力

TODO 覚え書き

  • (en.1) の文法説明での第 1 文型の記述の整理
    • 気分: まず第一文型の存在の意味があり、そこに to を含む句があると、その存在が to が指し示す先に向かう意味がつく、向かい方は同士が決める
  • 文型が持つ意味の説明 (次回話してみる?)
  • appear to が助動詞事案
    • have to はどういう経緯で助動詞扱いになったのかを調べる
    • 継続審議・調査

内容: コンテンツ (案) からの転記

分詞の解説
分詞

分詞についてはまず次の大方針を持つといいでしょう.

  • 分詞は動詞を元に作られた形容詞で, 元の動詞の意味を引き継いでいる.
  • 分詞の意味上の主語は被修飾語の名詞である: 元の動詞に戻せば被修飾語の名詞を主語として文の形に書き換えられる.
  • 意味上の主語 (被修飾語の名詞) と元の動詞の関係や意味を正しくとらえる.
    • 特に文に直して確認すべし.
  • 現在分詞は動名詞と区別できるようになること.
    • 動名詞はあくまで名詞.
    • 文の中での働きがわかればどちらかわかるので文に直して確認すること.
  • 分詞構文は副詞句を作る.

文への直し方や事例については現在分詞・過去分詞の項も見てください. 先に 1 つ事例を紹介します.

  • terrifying look: 恐ろしい表情
  • terrified look: おびえた表情

この違いを独力で理解できるようになることが大事です. ちなみに, 意味がわからなくなったら Google で画像検索してみるのもいいでしょう. "terrifying look" で調べると見ていて怖い画像が出てきます. 一方 "terrified look" で調べると怯えている人の顔が出てきます. 検索して出てきた画像のイメージと自分の理解が違いそうな場合, 上の原則に基づいて考え直してみてください.

現在分詞

現在分詞は「進行感・ライブ感」, つまりいままさに何かしている状態を表しますという説明はよく見ますし, 間違いではありません. しかしこの手の説明に引きづられておかしな解釈をしてしまうこともあります. あなたは次の文・句の意味や修飾関係が理解できるでしょうか?

  • He is boring.
  • loving mother

まずは自分で考えてみてください. 説明は次の通りです.

  • He is boring.
    • 正: 彼は退屈な人だ $\gets$ 彼は人を退屈させている.
    • 誤: 彼は退屈している.
  • loving mother
    • 正: 愛情深い母 $\gets$ 人を愛している母.
    • 誤: (私の) 愛する母.

「進行感・ライブ感」とだけ覚えていくとこのような事故が起きかねません. 実際よく誤解している人が大人でもいます. 現在分詞の ing を単純に「---している」と思ってはいけないのです. また現在分詞は進行形で使われる場合は別として, 「今まさに---している」というより名詞の継続的な性質を表すことも多いです.

元の動詞が自動詞のときは次のイメージを持つといいでしょう.

  • 意味: ---する, ---している
  • 例: a moving body (= a body moves)
    • 「動く物体」または「動いている物体」

元の動詞が他動詞のときは次のイメージを持つといいでしょう.

  • 意味: (他を) ---する, ---している
  • 例 1: an exciting book (a book excites sb)
    • (他を) 面白がらせている本 $\to$ 面白い本
  • 例 2: a loving mother (a mother loves sb)
    • (他を) 愛している母 $\to$ 愛情深い母

他動詞の現在分詞はどちらも「今まさにしている」というより名詞の継続的な性質を表しています.

過去分詞

元の動詞が自動詞のときは次のイメージを持つといいでしょう.

  • 意味: 完了
  • 例: a married man (a man is married), 結婚している男性

元の動詞が他動詞のときは次のイメージを持つといいでしょう.

  • 意味: 受け身
  • 例: a broken car (a car is broken), (誰かに) 壊された車
第 1 文の解説
英文と訳
  • (en.1) It is known that Maxwell's electrodynamics ---as usually understood at the present time--- when applied to moving bodies, leads to asymmetries which do not appear to be inherent in the phenomena.
  • (de.1) Dass die Elektrodynamik Maxwells --- wie dieselbe gegenwärtig aufgefasst zu werden --- in ihrer Anwendung auf bewegte Körper zu Asymmetrien führt, welche den Phänomenen nicht anzuhaften scheien, ist bekannt.
  • (fr.1) Il est connu que si nous appliquons l'électrodynamique de Maxwell, telle que nous la concevons aujourd'hui, aux corps en mouvement, nous sommes conduits à une asymétrie qui ne s'accorde pas avec les phénomènes observés.
  • (ja.1) 現在の標準的な理解によれば, 運動する物体に適用されたとき, マクスウェルの電気力学は現象固有には見えない非対称性を導くことが知られている.

どの言語で読んだところで, この一文だけでは逐語訳はできても物理として何を言っているかはわからないでしょう. 実際には第 1 段落の主題で, 続く文章で具体例として磁石と導体の間の相互作用の説明が出てきます. 実際の文章の読解ではある 1 文を読解するために周囲の文との関係, もっと言えば文章全体の中でのその文の役割を考えて読まなければいけないこともよくあります.

ちなみに \cite{AlbertEinstein1} だと, この文メインパートは次のように訳されています.

  • マックスウェルの電気力学を用いて説明しようとする場合, たとえば, ある二つの現象が本質的には同じものと考えられるにもかかわらず, その電気力学的説明には大きな違いの生ずるという場合がある.

つまり私が「現象固有には見えない非対称性」と書いた部分は, 「本質的には同じはずの現象を同じように説明できない」という意味なのです. そしてこれが気に食わないことが当時の電磁気学の問題でした. 一文一文をきちんと訳すためにも物理学上の時代背景や前後の文章の流れも知っていなければなりません.

文構造・文法事項
# 英語
## 文構造

まずは文構造を確認します.

  • It is known that
    • that Maxwell's electrodynamics leads to asymmetries
      • asymmetries which do not appear to be inherent in the phenomena
    • as usually understood at the present time
    • when applied to moving bodies

まず It is known that で that 節が主語になる構文であることを見抜きましょう. この主語を表す that 節の本体は Maxwell's electrodynamics leads to asymmetries です. これに限らず挿入がやたらと多い文ばかりなので, 文構造を正確に捉えて本体を正確に見抜く訓練が必要です. 挿入が 2 つ入ってわかりにくいのですが, leads の主語が electrodynamics なのも注意です. 三単現の s があるので主語は単数です. 学問名としての electrodynamics は不可算名詞で扱いとしては単数なので, この文法事項を知らないと主語・動詞の対応が正確につけられません.

最後の which do not --- は asymmetries を修飾する関係代名詞節です. 動詞が do なので複数形に対する修飾であることに注意しましょう. 学問名としての electrodynamics は不可算名詞で扱いとしては単数なので, こちらの修飾とはみなせません.

そして as usually ---, when applied to --- が副詞句として文全体を修飾しています.

次に注意すべき点をさらに細かく見ます.

## It is known that ---

It is known that --- からはじめましょう. 英語は長い主語を嫌がります. 英語は動詞を早めに見せたい言語と言ってもいいですし, もっと強く文構造を早めに見せたい言語と言っていいでしょう. いわゆる SVOC の第 5 文型では find it C to do といった構文がよく出てきます. 例えば次のような例文があります.

  • I found it difficult to finish all this work.

英語は文の型が文の意味を決める部分があります. その型をきちんと見抜くのが重要で, そこに文法学習が生きてきます.

もとの文の解析に戻りましょう. 主語が長くなるとそれだけ文構造を把握するまで時間がかかります. それを避けるために仮主語として it を置いてすぐに動詞を出し, 主語の本体は that 節で受けます. この構文を見抜く必要があります.

さらに be known で受動態も使われています. By による真の主語の明示はありません. 強いて言うなら「全物理学者」が真の主語です. 受動態は主語を明示したくなかったり書きにくい場合に使われます.

真の主語である that 節は Maxwell's electrodynamics leads to asymmetries でした. ここの動詞 lead は目的語がないので自動詞であり, 文型は第 1 文型 SV です. 細かい訳語のニュアンスはあるものの, to A という副詞句がある第 1 文型の文の本質的な意味は「A に向かう」です. いまの場合「内包している」といった訳語を当ててもいいでしょう. どんな asymmetries を持っているのかが気になります. それが which による関係代名詞節で補足説明されます.

## asymmetries which do not appear to be ---

次に asymmetries which do not appear --- を考えます.

単に asymmetries と言われてもよくわかりません. こういう場合は修飾語・修飾節を使って補足説明をつけます. ここでは関係代名詞を使って修飾しています. Appear は自動詞であり, 第 1 文型の文です. There is/exist 構文が典型的なように, 第 1 文型は文自体に「存在する」「そういう存在である」という意味を持ちます. Which 節は主語がないので asymmetries が主語であり, とにかくまずは asymmetries が存在するのです. 動詞 appear を使ったのは存在の意味を柔らげるためだと思ってください. 単に「存在する」のではなく「そういう存在であるかのように見える」と主張するために 動詞 appear を使っています. どういう存在であるように見えるのかが to be の不定詞句で説明されています.

この文にはもう 1 つの見方があります. それは appear to を助動詞のようにみなして SVC の第 2 文型 asymmetries are inherent in the phenomena を基礎に据える見方です. 型として第 2 文型が持つ意味は「S と C は等しい」です. 特に動詞が be 動詞で C が名詞の場合は直接的に等号だとみなせます.

  • I am a teacher.
  • He is my brother.

これらはまさに be 動詞が等号だとみなせる例です. 動詞 become も第 2 文型を作れます. Be 動詞ではない以上, 「S はこれから C になる (C と等しくなろうとする)」といった意味に変わりますが, 等号を基礎にした意味を持つことは同じです.

ここで appear to を助動詞とみなすのは, 完全な等号とみなすと意味が強くなりすぎるので弱くするためです. 可能性を表す意味での助動詞 may や can の用法と同じです. 動詞 appear には「---に見える」という意味があるので, その意味を使って等号の意味を拡張・変更しています.

なぜこうした話をしたかというと, 同じような構造・用例がよく出てくるからです. 有名なのは動詞 seem でしょうか. 動詞それぞれが持つ固有の細かいニュアンスを除けば次の文はだいたい同じ意味です.

  • It appears to be difficult.
  • It seems to be difficult.
  • It seems difficult.

念のため appear と seem の違いについて Weblio の seem の項 からニュアンスに関する説明を引用します.

(seem は) 通例話し手の推量をこめた見方・判断を示す語で,文法上の主語と判断の主体は一致しないことが多く,時に判断の主体を示すのに to a person を従えることがある.

【類語】 seem は通例話し手の主観的判断を表わす; appear は外観がそのように見えるということを意味するが,「実際はそうではないかもしれない」という含みをもつことがある; look も appear と同じように外面的なことを表わすが,「実際もそうである」ということが多い.

## ---as usually understood at the present time---

まず --- で囲まれた部分は挿入句・挿入節として理解してください. 特にここでは分詞構文で副詞句になっています. 分詞構文にはいくつかの用法があります. 今回は as で用法を指示しています. As は as でいろいろな意味があってややこしいものの, 理由を表していると思えばいいでしょう.

動詞 understood の意味上の主語をどう考えるかは少し悩む部分です. ただ副詞句として全体を修飾している以上, 主節の主語である that 節が主語であるとみなしても問題ないでしょう.

## when applied to ---

これも分詞構文で, when を使って時間的な条件句であることを表しています. As 句の挿入を無視して考えれば, applied の意味上の主語は Maxwell's electrodynamics でいいでしょう.

ここでは動詞 apply to について補足します. 前提として前置詞 to には「何かを何かに向ける」意味があります. 例えば I go to my house. は「私を自分の家に向ける」「私は自分の家に向けられている」という意味で, 動詞 go の意味によって向け方が「行く」になっていると読みます. ここでは Maxwell's electrodynamics が moving bodies に向けられていて, 意味が apply で指定されています. 理論がその適用対象に向けられることを日本語では「適用する」と言うので, そういう訳語を当てればいいでしょう. 実際 apply を英和辞典で調べるとそのものずばりで出てきますし, Weblio では次のような説明があります.

3〈規則・原理などを〉〔…に〕適用する,応用する 〔to〕.

Apply this rule to the case. その事例にはこの規則を適用しなさい.

ここでは規則が物理法則または理論に変わっているだけです.

ポイントは apply の意味を知らなくても前置詞 to の意味・イメージから動詞の意味が決まってしまうことです. 具体的にどんな単語を選ぶかは to の漠然としたイメージをどう具体化するかによって決まるのです.

こう考えるようになるともし知らない単語が出てきても状況証拠から意味が推定できます. 犯罪捜査の推理のように思っていいですし, 考古学などでの推定を想像してもいいでしょう. こうした推論力を鍛えるのは数学や物理でも非常に大事で, そのためには 1 語 1 語の理解を徹底的に深める必要があります. 数学や物理でも同じように 1 つ 1 つの原理原則を徹底的に理解して深めることが大事だと言われます. 語学学習にも数学・物理学習の原理原則が直接適用できます.

第003回 第2文を詳しく読む

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
注意
  • 2020-09-18 にも勉強会をやったが, 録画できていなかったので 2020-09-25 にもう一度やり直す.

これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 前回の訂正: as は様態の方がよさそう, understood の主語
  • 第 2 文の解説

進捗

  • 第 2 文の解説

TODO

  • コメントもらった項目 (今日のメモのところに書いてある) を本体に統合

次週予定

  • 追加した文法の説明
  • 第 1-2 文の単語の深掘り

今日のメモ

2020-09-25
  • 録音失敗したときの記録

  • (en.2) Take, for example, the reciprocal electrodynamic action of a magnet and a conductor.

  • (de.2) Man denke z. B. an die elektrodynamische Wechselwirkung zwischen einem Magneten und einem Leiter.
  • (fr.2) Analysons par exemple l'influence mutuelle d'un aimant et d'un conducteur.
  • (jp.2) 例えば, ある 1 つの磁石とある 1 つの導体の間の電気力学的な相互作用を考えよう.

Man: 男性名詞, 単数, 3 人称, 「人はみな」 One can say that ---. Mann: ドイツ語の男性. On: フランス語. homme 人.

z. B. = zum Beispile = for example zum = zu + dem. zu = 「ツー」と発音 (ドイツ語): zu 不定詞 = to 不定詞. to と zu は音として似ている. 英語とドイツ語で用法も似ている.

(fr) par exemple = for example f = フ, p = プ. (en) garden, yard (fr) jardin

私が知っている範囲の欧米語. 単語の意味は子音が決める. s_ng: song, sing, sang, sung.

denke -> denken = think

analyser = analyze = 分析する

mutuelle = mutual.

古典論ではいわゆる磁石がない. ファンリューエンの定理.

van = von of von Neumann.

内容: コンテンツ (案) からの転記

英文と訳
  • (en.2) Take, for example, the reciprocal electrodynamic action of a magnet and a conductor.
  • (de.2) Man denke z. B. an die elektrodynamische Wechselwirkung zwischen einem Magneten und einem Leiter.
  • (fr.2) Analysons par exemple l'influence mutuelle d'un aimant et d'un conducteur.
  • (jp.2) 例えば, ある 1 つの磁石とある 1 つの導体の間の電気力学的な相互作用を考えよう.

中高生にとって国語の読解でも大事なことがあります. それは「例えば」を含む文, そしてそこからつながる文の理解です.

まず日常的な書く・話すで考えましょう. ふつう一般的・抽象的な話はわかりにくいので例が必要です. あなたも日常生活の中で何かわかってもらえないことがあったとき, 「例えばこんなことがあるだろう」と説明する機会があるはずです. もちろんわかりにくい何かを説明するための工夫です. 書く・話すときには自然にやることです. この感覚をきちんと読解にも活かしましょう. これは受験・問題解答の点から「読解テクニック」などと言われることもあるようですが, そんな大層な話ではありません.

さて, 読解として大事なことは次の点です.

  • 「例えば」が出てくるということは, この前後で何かわかりにくい面倒な話をしているはずだ.

こう思ってください. 第 1 文の訳の説明で「この 1 文だけを読んでも逐語訳こそできても物理としての意味を捉えるのは難しい」と書きました. アインシュタインもそれをわかっていて例を挙げて説明しています.

数学や物理を勉強するときにも何かわからないことがあったら例を作るのは決定的に大事です. 結城浩さんの『数学ガール』では「例示は理解の試金石」という印象的な言葉で表現されています. そのくらい大事なことです. この 1 文には英文解釈としてはそう難しい要素はありません. しかし学習上の配慮など総合的な視点からは非常に重要な示唆を含んでいます. ここまできちんと読み取り, 自分の学習・実践に活かせるようになってください.

メモ: a は any と使われることもある. a の理工系的使い方として文法で説明しておくとよさそう.

文構造・文法事項
英語
# 文構造
  • Take the reciprocal electrodynamic action
    • (action) of a magnet and a conductor
    • for example

本文では take と the reciprocal action に for example が挟まれて出てきます. 「例えば」と言っているだけの独立した挿入句です. 慣れていないと読みにくいかもしれません. 文構造としては添え物なので上の分解では最後に添える形にしました.

この文を単純化すると take A (of B) という形で命令文であり, of B は名詞句 A を修飾しています. 細かく見ていきましょう.

動詞ではじまっていて主語がないので命令文であることを読み取ります. Take の目的語が the (reciprocal electrodynamic) action で, reciprocal action (相互作用) が何と何の間の相互作用かを表すのが of 以下で補足されています.

ここで面白いのは冠詞です. A magnet と a conductor の相互作用には冠詞 the が使われています. A magnet と a conductor という一般の対象間であっても, その (reciprocal) action は物理法則で特定されるという感覚なのでしょう.

  • メモ: the は all のような気分もある.
  • 総称用法: the lion is ---. みたいな感じ.

For example は副詞句として文全体を修飾します. 英語ではここで出てくるような形での挿入がよくあります. 補足も参考にしてください.

補足
日本語からすると不思議な挿入

日本語でも口語ではいろいろな挿入表現があります. しかしこの文での for example のような挿入の仕方・場所に関して, 私は日本語の硬い文章, 特に理工系の文章で見かけた記憶はありません. 強いて言えば記憶にあるのは大学受験のときに読んだ人文系の評論・随筆です. ちなみにドイツ語原文でもフランス語でも同じ位置に挿入しているので, 英独仏ではふつうの語順・感覚なのでしょう.

私がこの手の英語の文章のような日本語での挿入表現を見かけた機会として強く覚えているのは, 漫画の「ジョジョの奇妙な冒険」です. 例えば第 5 部後半でブチャラティによる次のセリフがあります.

  • あとは, ジョルノ, 頼んだぞ

ふつうの日本語で見かけるのは次の 2 通りだと思います.

  • ジョルノ, あとは頼んだぞ
  • あとは頼んだぞ, ジョルノ

著者の荒木飛呂彦は洋画・洋楽が好きなようで, いろいろな形で海外の事情を取り込んでいます. 上の呼びかけに見える「ジョルノ」の挿入は英語で良く見られます. そもそも作中ではイタリア人の発言ですし, それを織り込んだ表現なのかもしれません.

何にせよここで出てくる「不思議な挿入」は英語の英語らしさを司る部分でもあります. 楽しんで鑑賞してください.

単語の意味を深く知る

ここでは語源を中心に深掘りしています. しかし他には英英辞典を使うという手もあります. 基本的な語彙力がない中高生には厳しいので, まずは基本的な語彙力を鍛えるために語源に遡ろうという手法を提案しているのです.

ここで 1 つコメントしておきたいのは第 2 文の主要な動詞 take です. Take はふつう訳語として「取る」を挙げることが多いでしょうが, 今回は take the action という形で出てきた上で「考えよう」という訳語を当てています. これは「取り上げよう」と訳せば「取る」に近い表現ではあります. しかしドイツ語では denken = think でもあり, 「考えよう」を採用しました. ちなみにフランス語では analysons = analyze でまた違う単語を当てています.

ここで英語としての意味を深く知りたいと思ったら英英辞典を調べてみましょう. 例えばオンラインの英英辞典で take を調べると次のような説明があります.

  • 8 STUDY [transitive] to study a particular subject in school or college for an examination

これがここでの take の意味でしょう. 日本語でも「授業を取る」という表現があり, それと対応する「取る」です.

英英辞典の使い方についても 1 つコメントしておきます. ある程度の語彙力, できれば大学受験突破程度の語彙力をつけた上で, 難しい単語よりも take のような中学生でも知っている基本単語を英英辞典で調べてみましょう. 基本単語は多くの場所で使われていて多種多彩な意味があります. 実際 LONGMAN では意味が 33 個列挙されています.

よく使われる基本単語に対する認識の深さがその人の理解の深さを決めます. そしてもっと大事なのは「よく知っていると思った単語であっても, 実はいくら汲んでも尽きないほど深く広い」のだと知ること・体感することです.

命令形の意味

命令形・命令文は日本語の言葉通りの命令の意味を持つとは限りません. もし第 2 文を文字通り命令だとすると「何で論文を読んでいて命令されないといけないのか」という話になります. 実は命令文には提案としての意味・用法があり, ここでは実際に提案の意味です.

  • もし第 1 文の意味がよくわからないなら, こういう例を考えてみてはどうだろう.

命令文のニュアンスを取り違えると「こちらは命令しているのに何でやらないのか」という話にもなるでしょう.

ちなみに, 実際の会話では命令の意図が強くなるほど丁寧な言葉になることがあるようです. 日本語でも「やりなさい!」と言われるより, にっこり笑いつつ有無を言わさない様子で「申し訳ないのですが, これをやって頂けると, 私, とっても嬉しいのですけれど?」などと言われた方が怖いでしょう. 英語にも同じ気分があるのです.

例を作る難しさ

訳のところで説明したように例を作るのは大事です. どのくらい大事でかつ難しいかというと数学では具体例を作るだけで論文になるほどです. 永田雅宜という数学者はヒルベルト第 14 問題を反例による否定的解決が世界的に有名で, Mr. counterexample と呼ばれています.

物理では例を作るのは現象の発見があたるように思います. この視点で言うと, 理論的に知られていること・予言されていたことを実験的に実現するのはこれまた非常に重要な業績です. どのくらい評価されているかと言えば, 分子の存在を実験的に証明したことで有名なペランは 1926 年にまさにこの業績でノーベル賞を受賞しています. ちなみにペランの実験のもとになったのは, 特殊相対性理論と同じく 1905 年にアインシュタインが書いたブラウン運動に関する論文です. 次のページの記述を引用しておきます.

ブラウン運動の理論 [2] 論文の原題は『熱の分子論から要求される静止液体中の懸濁粒子の運動について』 この論文の目的は,「ブラウン運動をする粒子の運動を測定することによって,原子(または分子)の存在が結論づけられる」ことを示すことだった.当時,物理学者の間でもコンセンサスが得られていなかった原子論が,実験によって決着できることを述べたのである.論文中では,Newton力学の現象論(物理的考察)とランダムに動く粒子に対する確率過程論(数学的考察)を併用し,理論の検証として「粒子の平均2乗変位」が観測可能な量であると結論した.この予言は,フランスの物理化学者ペラン J. Perrinによって,1908年に実験確認され,原子の概念がゆるぎなく確立することになった.ちなみに,博士論文は,このブラウン運動に関するものであり,アインシュタインの論文のなかで最も引用度が高いのは,博士論文であるという. この成果は,その後の物理学で,より小さな粒子の発見への足がかりとなったばかりではなく,確率過程という数学理論への発展を促した.(米沢富美子,「原子の実在を証明 ブラウン運動の理論」,数理科学 2003年10月号 p.31-37)

ここで数学への貢献が謳われていますが, 実際に数学ではそのものずばり「ブラウン運動」と呼ばれる数学的対象があります. 数学科の大学 4 年から大学院程度で議論するレベルの対象です.

これも有名な話ではありますが念のために書いておくと, アインシュタインのノーベル賞の業績は同じく 1905 年に出した光電効果の理論の論文が発端です. そしてもう 1 つ, 光電効果の実験的検証と高校物理でも有名な電気素量の測定によって, アインシュタインがノーベル賞を受賞したのと同じ年にロバート・ミリカンがノーベル賞を受賞しています.

アインシュタインがなぜ偉いか (すごいか) というと, 1 つあるだけでもすごいノーベル賞級の仕事を連発しているからです. 現在固体物理学と呼ばれる巨大な分野がありますが, 固体の物理・物性物理にはじめて量子論を適用して分野を切り開いたのもアインシュタインですし, 2001 年にボース-アインシュタイン凝縮の実験的実現に関わる仕事でノーベル賞が出ていて, 名前の通りアインシュタインが貢献しています.

ボース-アインシュタイン凝縮ですごいのは, はじめボースが光の量子統計に関して論文を書き, それが周囲で認められないからといってアインシュタインに論文を送ったところ, アインシュタインは即座にその価値を認め, さらに光以外の現在ボース粒子と呼ばれる系にまで一般化した理論を組み上げたという逸話です. 私が知る限りでさえ少なくとも 4 つのノーベル賞に関して本質的な貢献があります.

固体物理は半導体物理などの基礎であり, 半導体でもノーベル賞は出ています. 半導体の基礎理論を支える分野を開拓したことを貢献とみなすなら, これもノーベル賞級の貢献とみなしてもいいでしょう.

第004回 コンテンツ制作の方針と文法へのスタンス

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 追加した文法の説明
  • 第 1-2 文の単語の深掘り

進捗

  • コンテンツ制作方針とそれに関わる文法の話
  • 「一般化助動詞についての注意」まで
  • 5 文型の話: こんなのも書きました, と軽く触れた程度
  • 文法の話はまた折に触れて議論する

TODO

  • 日本語・簡体字・繁体字の比較例
  • プログラミング言語の変化・進化に関する話

次週予定

  • 第 1-2 文の単語で面白そうなもの (いまの知見・能力で面白く掘り下げられた単語) を議論

今日のメモ

日本語・簡体字・繁体字の比較例
  • 日本語での「体」
    • 繁体字: 體
    • 簡体字: 体
  • 日本語での「電」
    • 繁体字: 電
    • 簡体字: 电
  • 日本語: 「体」
    • 繁体字: 對
    • 簡体字: 对
プログラミング言語の変化・進化に関する話

勉強会でプログラミング言語の変化・進化は必然かという質問があったので, それに対するコメントです.

プログラミング言語の研究成果や実践の中でいろいろな要望が挙がってくることを受けて変わるので, そうした経緯・意味で一般には必然的な変化です. もちろん後方互換性の問題があり, 引き起こしたい変化が後方互換性を破壞するような変更 (破壊的変更) に対する態度が各言語・文化圏で大きく変わります.

Java のような広く産業利用される言語では破壊的変更の影響が極めて大きく, 変化があるにしても破壊的な影響がないように慎重に進められます. 破壊的変更が入る言語のバージョンアップに対して, 産業の現場で古いバージョンを使い続けるようなこともあります.

伝え聞く話だと留保をつけますが, Java の場合は文化という観点からは面白い話がいろいろあります. 一時期は本当に言語の進化が遅々として進まなかったようですが, 最近の IT 界隈の状況に合わせてここ数年は言語そのものにかなり積極的なバージョンアップが入っています. 言語の変化・進化には言語が持つ文化圏という視点の他, IT 界隈の雰囲気という文化・社会の要素も含まれます. 自然言語でも日本では国語審議会があり, 「当用漢字表」、「現代かなづかい」、「常用漢字表」、改訂「現代仮名遣い」などを決めてはいますが, すぐに浸透するわけではありません. フランスでもアカデミー・フランセーズによる言語介入があります. こうした自然言語と似た事情は人工言語にもあるのです.

言語をよくするために破壊的な変更を含む変化をどんどん取り入れる言語もあります. 例えば少なくとも私が知る限りでは, バージョン 2.9-2.12 での Scala はかなり激しい変化を取り込んでいたと思います. これは Scala を好む人々が先進的な機能をどんどん使いたいという人々で, まさにそういう文化だったのです.

JavaScript は言語自体の変化もさることながら, 言語を取り巻く環境としてのライブラリなどに激しい変化・進化があった言語としての文化的な面白さがあります. ここ 2-3 年は React・Vue でかなり安定してきたようですが, 4-5 年はライブラリの群雄割拠という状態で, 毎月新しいライブラリが出てきて話題になるといった状況が続いていました.

変化の激しさは書籍などにも表われます. たいていのプログラミング言語に関わる書籍は, 数年前の本はほとんど使い物になりません. 中に書いてあるプログラムが動かず, 本を読んでいていちいちはまるのでかえって勉強を阻害します.

その一方で強い後方互換性があること, 根本的な変更が入らないこと, または柔軟に変更に応えられることを特徴にする言語や, それを大事にする文化がある言語もあります. その 1 つは Lisp です. Lisp はいまも現役の言語の中では, 数値計算でよく使われる Fortran につぐ寿命を誇っています. そしてプログラミング言語の書籍としては本当に珍しく, 30 年前の本でもその内容が十分に通用すると言われていて, 参考文献として紹介され続けています.

自然言語にも言語ごとの文化があるように, 人工言語であるプログラミング言語にも言語ごとの文化があります.

内容: コンテンツ (案) からの転記

文法や単語に関するコメント

だいぶ前に書いた分も整理する必要があるが後回し. コンテンツをある程度作ってみて全体をどう組むべきか見えてからの方がよさそうだから. せっかくなのでいくつかは紹介する.

単語
# 多言語対照記憶法

これは中高生にはお勧めできないというか, 実行不可能な方法です.

もしあなたがある程度の語彙を既に持っているのなら. ドイツ・フランス・イタリア・スペイン語などから類推した方が覚えやすいことがあります.

例えば parliament という単語があり, これは議会という意味です. かなり古い表現はいまはあまり使われないようですが, これの類語として客間・お店と言った意味の parlor という単語もあります. 英語だけ見ているとこれがなぜ類語で, このような意味を持つのかわかりません.

これは実はフランス語に起源があります. 実はフランス語の「話す」 (talk, speak) は parler という単語であり, parliament にしろ parlor にしろ, 「話す場所」から議会や客間という意味が来ています. このように英語以外の言語を介して意味を見抜けることがあります.

英語の 7-8 割はフランス語から来ていると言われています. ノルマンコンクエストに由来する歴史的な事情によります. フランス語はラテン語の系統で, 一方, 英語はゲルマン語の系統なのです. そして英語のもう 1 つの親はドイツ語です. つまり英語の深いところを探ろうと思うと, どうしてもドイツ語とフランス語が出てくるのです. 日本語は漢字を使って書かれていますし, どうしても中国語の影響があるというのと同じことです.

相対性理論の原論文がドイツ語なので, このドイツ語ならまだしもこの講座でフランス語を扱うのはどう考えても無理です. ただ, こうしたアプローチがあることは覚えておいてください. 特に大学で第 2 外国語としてフランス語を勉強した人は, それを思い出すといろいろないいことがあるでしょう.

# 英語には品詞がない?

ここまでとは少し違った視点から考えます. ある単語が複数の品詞を持つという現象, そして同綴異義語 (どうてついぎご) という視点です.

世界中で使われているという事情もあってか, 英語は単語の使い方がかなり簡単に・頻繁に変わる言語です. その 1 つとして, 単語の品詞が簡単に変わる (追加される) という現象です.

例えば Google という会社はいまや日本人の誰もが知る会社でしょう. もちろん元は社名なので名詞です. しかしかなり前から先頭を小文字化した google がそのまま「検索する」という意味になっています. 杓子定規に言えば, 別の意味を与えられた上で別の品詞として使われるのです.

他の事例も見てみましょう. move のように同じ意味で名詞と動詞が同形の単語, book のように名詞では「本」という意味, 動詞では「予約する」という意味で少し意味が変わることもあります: 「本に記録する $\to$ 予約する」という推測はできるので, 全く違う意味というわけでもありません. もちろん google もこの手の形です.

(beech: ブナの木)

形容詞と動詞が同形のパターンも見てみましょう. free は形容詞で「自由な」, 動詞で「開放する」といった意味です. loose は形容詞で「緩い」, 動詞で「ゆるめる」です.

意味によって発音が変わる単語もあります. 例えば live はリブと読めば動詞で「生きる」, ライブと読めば形容詞で「生の」という意味です. 音楽などのライブを想像すればいいでしょう. 他に close はクローズなら動詞で「閉じる」, クロースなら形容詞で「近い」という意味です.

名詞・形容詞・動詞が同じ形の単語もあります. リストでまとめておきます.

  • water:「水」「水の」「水をやる」
  • ice:「氷」「氷上の」「凍らす」
  • mail:「郵便」「郵便の」「郵送する」
  • 同綴異義語パターン
  • light:「明かり」「灯す」/ 「軽い」
  • fine:「素晴らしい」/ 「罰金」「罰金を科する」
  • subject:「主題」/ 「従属の」「従属させる」

挙げていくときりがありません. 次のもっと複雑なパターンもあることを紹介して終わりにします.

  • sweet: 形容詞・名詞, 「甘い」「甘いもの」.
  • right: 名詞・形容詞・副詞・動詞, 「右」「右の」「右に」/ 「権利, 正当」「正しい」「正しく」「正しくする」
  • round: 名詞・形容詞・副詞・動詞, 「丸いもの, 一回り」「丸い」「丸く」「丸くする」
  • well: 副詞・形容詞・名詞・動詞・間投詞, 「よく」「よい」「井戸」「湧き出る」「おや, まあ, えっと」
  • down: 副詞・形容詞・名詞・動詞・前置詞, 「下に」「下の」「下位」「打ち負かす」「~を下って」
  • May: 名詞・助動詞「五月」「~してよい」
  • can: 名詞・助動詞, 「缶」「~できる, ~してよい」
  • spoke: 動詞 (過去形)・名詞, 「(speak の過去形) 話した」「 (車輪の) スポーク」

これらもある意味では多義語と言えるでしょう. 相対性理論の単語集に品詞をつけておいたのは, こういう事例がたくさんあるからです. いきなり品詞情報まで覚えようとしても大変なので, 少しずつ覚えていってください.

# 意味は子音で取る

次のような穴埋め問題を考えます.

  • s-ng

ここでハイフン - を入れたところに何が入れられるでしょうか? 例えば次のような穴埋めができます.

  • song, sing, sang, sung

これは「歌」を表す名詞・動詞とその活用です. 母音は「歌」の意味はそのままにして品詞や活用を表すのに使われています. 実際, この動詞の活用は変則的だと言われてはいますが, 同じ変則的な活用をする動詞はたくさんあります. これも少なくとも英語では子音が単語の意味を決めていることがわかります.

これが有効活用されている事例として, 少なくとも数学の現場で使われている略語を紹介します.

  • bdd = bounded
  • mfd = manifold
  • iff = if and only if
  • sqrt = square root
  • eq = equal

完全に全てとは言えないものの, 見事なまでに主な省略対象は母音です. そしてこれできちんと意味が通じますし想像もできます.

また省略という概念に対する基本も確認します. 省略は枝葉を取り除いてエッセンスを残す作業です. そしてそこで残る要素が実際に子音なのです. 英語圏の人々にとって間違いなく単語のエッセンスは子音にあることがわかります.

少し話がずれますが, 何がエッセンスかを判断する上では漢字の省略を眺めるのも面白いでしょう. 例えば台湾でいまも使われる繁体字はいわゆる「昔の面倒な漢字の書き方」で, 現代の日本語はそれをアレンジして簡単にしたバージョンを使っています. 一方, 中国大陸側では簡体字と呼ばれる日本語とはまた違う省略形を使っています.

いくつか眺めるとわかるように簡体字の省略はすさまじいです. 時々「中国人は省略のセンスがない. 省略しすぎていて元が何だかが全然わからない」という日本人がいるようです. これはそもそも漢字を眺めるセンスが中国大陸の人々と日本人とで全く違うと見るべきでしょう.

いくつか例を挙げておきます.

  • 日本語での「体」
    • 繁体字: 體
    • 簡体字: 体
  • 日本語での「電」
    • 繁体字: 電
    • 簡体字: 电
  • 日本語: 「体」
    • 繁体字: 對
    • 簡体字: 对

何をどう省略するか見るだけでも言語に対する感覚が現れます. 他の言語を勉強することは自分の中に他の文化圏を受け入れることでもあります. 自分の中に多元的な文化・世界を育むと言ってもいいですし, 文化的な侵略だと捉えたくなることもあるでしょう. 何にせよ言語にはその言語圏の文化が色濃く反映されているので, 深く言語を理解するには対応する文化の理解も不可欠です.

文法
# この講座での文法の役割

この講座は理系のための語学・リベラルアーツというスタンスが基礎にあります. 物理・数学になぞらえると, ガリレイの「自然という書物は数学の言語で書かれている」という有名な言葉があるように, 言語・文章という自然を, 文法という人間が見出した法則で読み解くというイメージで, 数学・物理学習にも活きる形で構成するのが目的です.

物理に対する数学のように, 文章に対する文法は人類の知見がフルに叩き込まれた最も重要な道具というスタンスを取ります. そして中学・高校で勉強する文法はほぼそのままの形で理系向け語学・文章読解に使えます. 世の中にはすでにいろいろなレベルに合わせた文法の本があり, 学校で買った参考書をきちんと勉強してもらえればそれで十分です. ここでは同じようなコンテンツを作るのに労力を割くよりも, それらを下地にしてより深く文法を勉強し理解するための内容を議論していきます.

# プログラミングと文法

この講座は理系のための語学・リベラルアーツというスタンスが基礎にあり, 理工系科目として基礎に据えているのは数学・物理・プログラミングです. 特にプログラミングの側面から文法を捉えてみましょう. 実際にいろいろな問題があるからです. 私の文法に対する感覚はよくも悪くもプログラミング学習・実践による部分が大きくあります.

まずプログラミング言語からすると文法はある種の絶対性があります. 人間相手に自然言語でコミュニケーションするときは文法的に正しく話さなくても相手に通じます. しかしプログラミング言語で機械とコミュニケーションするときは, 文法的に正しくないと全く相手に通じません. 大文字・小文字を間違えたり 1 文字スペルミスしただけで「何を言っているかわからない」と突き返されます. 本当に何一つ意思が通じなくなるので, 文法の意義を学ぶには英語を勉強するよりもかえってプログラミング言語という人工言語を勉強した方が早いくらいです.

一方でプログラミング言語のもう 1 つの問題は自然言語より遥かに短い期間で文法が変わりうることです. プログラミング言語には明確なバージョンがあります. あるバージョンではこう書かなければならない一方, 別のバージョンでは違うように書かなければならない, そんな事態がよく起こります. 後方互換性の問題と呼ばれます.

文法学習という観点からは後方互換性も重要です. バージョンごとに絶対性 (文法にしたがわないと本当に話が通じない) がある一方, バージョンごとにそのルールそれ自体が変わるのです. もちろんある言語を固定すればその言語内でルールが根源的に大きく変わることはそうありません. しかし, 微妙な違いであったとしても, そのルールは絶対的で強制されるため, 影響範囲・被害が甚大になることもよくあるのです. 自然言語のようにゆるく漸進的に変わっていくとは限りません. 必ずしも両立しない自然言語に対する文法感覚と, 人工言語であるプログラミング言語に対する文法感覚を両方育てることこそが, この講座でのリベラルアーツの 1 つの要点とさえ言えるかもしれません.

ちなみにバージョン変更で根源的に文法ルールが変わることはありえます. 例えば Egison と呼ばれる言語ははじめ Lisp 型の括弧による構文の言語だったのですが, あるバージョンからは Haskell 型の構文に変わっています.

# 文法分析の注意

人間が間違って理解・適用しない限り, 自然は自然法則にしたがって動くと理解するのが物理です. 「人間が間違って理解・適用しない限り」例外はないと仮定しています. うるさいことを言えばきりがありませんが, ここではこの仮定を全面的に受け入れましょう.

例えば「飛び出すな 車は急に止まれない」というとき, ニュートンの運動方程式が成り立つ範囲の古典力学が支配する世界にいる限り, 急に止まれる車は本当にありません. ここで「適用範囲を間違えない限り」という注意が決定的に大事です.

文法はお行儀よく書かれた文章を読むときに役に立つ概念です. 極端に言えばそれ以外の場合に使える保証はありません. 人は常に文法通りに言葉を紡ぐわけではないのです.

文法は何とかして言語の中にルールを見出したいという人の心の結晶で, もちろんできる限り例外事項を補足しようという動きもあります. しかし実際の発話ではいくらでも無茶ができます. 例えば外国に行ったときに片言の単語だけで何かを話して伝えようとしたとき, 「お前の言葉は文法的におかしいので何も意味がわからない」と言われても困るでしょう. 言語はコミュニケーションを円滑にするための道具にすぎず, その目的の方が重視されるときに「文法的におかしい」と言われても「おかしいのはお前の方だ」としか言い様がありません.

ときどき文法を神聖不可侵の金科玉条のように扱う人がいます. 私達は英文をよりよく理解するため, それが役に立つ場面で文法をうまく使おうとしているだけであり, 具体的な文を文法で裁判したいわけではありません.

文法は時代によっても変わります. 学校でも勉強するように, 日本でも平安時代の貴族による日本語文法と現代文法は必ずしも一致しません. そもそも字面が同じでも単語の意味さえ一致しないことがあります. 言葉は生き物であり, 変化・成長します. 本来, 杓子定規に文法が適用できる対象ではありません. それでもできる限りのルールを見出してみたいという特定の人々の欲求から生まれたのが文法理論です. 現実の言葉が先, 文法が後です. それを間違えてはいけません.

一方, 文法的に整った文は物事を伝えやすくなるときがあります. 特に難しいこと・面倒なことを伝えるときにはできる限り文法的に整った文を書くモチベーションが出ます. その極致が論文をはじめとした学術的な文献です. 特に論文に出てくる文章は内容がとにかく難しいですし, 微妙な表現の違いで意味やニュアンスが決定的に変わる文章も出てきます. だから文法面で非常に繊細な注意を払って読み書きする必要があります. 逆に言えば文法がこれほど使える場面はありません. そこで実際に文法的な正確さが強く担保された文章を読み書きすることで文法を実戦的に勉強しようというのがこの講座の意図・目的です.

# 臨機応変に取り組む

まず目的をはっきりさせましょう. 私達がしたいのは次の 2 点です.

  • 文章のスタイルで書かれた相手の主張を素早く的確に理解したい.
  • 自分の主張を文章で的確に表現したい.

この 2 点を効率よく効果的に実現するために文法を使います.

実際の文章読解で各文を文法的に考えるとき, 大事なことは上の 2 点を達成することです. 具体的に言えば文法的にきちんと考えるときでさえその考え方は 1 通りではありません. 内容に関する解釈の幅があるように, 文法的に見てもその文の文法事項の解釈にも幅があるのです.

もっと言えばあなたが中学・高校で勉強した文法だけが全てではありません. 中学・高校の文法は言語学的にはもっと細かく分類されているかもしれませんし, 逆に実は同じものだとして複数の概念が統合されて理解されるようになっているかもしれません. 日本語の古文と現代文を見てもわかるように, ゆっくりではあっても文法は少しずつ変わっていきます. 現在の物理学の理解では, 物理的な自然法則は過去現在未来, 全時空で同じ物理法則が成り立つとされていますが, 言語の法則である文法はそうではないのです.

この講座では次の 2 点を意識しながら文法を活用します.

  • よりよい文法理解を目指す.
  • 1 つの文を文法的にいろいろな視点から眺めて英語に対する感覚を磨く.

この意味は読解編を読み進めながら体得してください.

# 法助動詞と一般化助動詞

ここでいう一般化助動詞はこの講座だけの独自用語なので注意してください. 適切な文法用語を見つけられたらそれに差し替えます.

まず法助動詞はいわゆる助動詞, つまり can, will, may, must, should などです. 一般化助動詞は be able to, be going to, have to が代表例です. 他にも appear to, seem to などのように助動詞とみなした方が理解しやすい表現があります.

イントロダクションでも注意したように日本の中学・高校で勉強する文法だけが英文法ではありません. 研究者達が考える言語学の水準から見たもっと詳しい文法もあります. Appear to や seem to が助動詞だなんて聞いたことがないと思うかもしれませんが, そう考えた方が理解しやすいことがあるならそうした概念を新たに定義してもいいのです.

# 一般化助動詞についての注意
## TODO メモ

これ, 単語の意味の方に置くか文法に置くかどうするか?

## have to
  • https://eikaiwa.weblio.jp/column/study/english_study_skills/uses-of-have-to
  • https://note.com/tkiyoto/n/nf33a1739c078

have to は一般化助動詞だと書きました. 中学・高校の教科書では (一般化) 助動詞と書いてありますが, そもそもなぜ have to が助動詞なのかという話もあります. それについて考えてみましょう.

話を固定するために次の文を考えてみましょう.

  • I have to study English.

まず動詞の have は「持っている」という意味があります. そして何にせよ have to のあとには動詞の原形が来ます. これは have + to 不定詞とも考えられ, 上の文は「私は英語を勉強することを持っている」と日本語に直訳できます. ここからこの文章の解釈の問題が出ます. 「持っている」のが他者から持たされているなら「英語を勉強しなければならない (その義務がある)」と訳すべきかもしれません. 「好き好んで持っている」なら「英語を勉強したい」と訳すべきですし, もう少し価値中立的に「英語を勉強する必要がある」と訳すべきときもあるでしょう.

この解釈の幅は否定形の意味を考えるときに強く出てきます. 肯定形は must と同じで「しなければならない」と訳すのに, 否定形で I don't have to study English. は「勉強する必要がない」と訳すのは不自然だと思ったことはないでしょうか? これは上の肯定文の解釈とも関係があります. 本来 have to は「---することを持っている」ことを意味するだけで本来は中立的な意味しかありません. 否定形ではそれに忠実な日本語訳をつけているわけです.

こう思うとそもそも日本の中高英語文法で have to は must と同じような意味とするのは正しいか? という疑問が出てきます. あくまでも have to を助動詞とみなす視点を堅持した上で, have to に否定形と揃えた意味を持たせたいなら have to は「---する必要がある」と訳すべきでしょう. 一般化助動詞について考えるときは最低限この程度の思考・思索は必要です.

念のため補足しておきます. どうやら英語の教員がその手の杓子定規な解釈を重視しているようなので, 下手な訳をつけると逆にバツにされるという問題はあります. しかしそれは個別の教員の資質やら現在の日本の学校教育の問題です. 私達の立場で英文を正しく理解という欲求, 私達の英文法に対する認識とはまた別の話です.

## be able to

ときどき be able to は can の意味だと言われることがあります. これも本当か? という話があります. 例えば can には may の意味を強めた推量の意味があると言われます. これは can の「できる」は可能性に関する意味があり, その可能性の意味からの転用として推量の意味を持つようになったと考えられます. しかし私は be able to に推量の意味があると聞いたことがありません.

一方, 一般化助動詞 be able to をいつ使うかと言えば, 例えば "I may not be able to do it." のように本助動詞と組み合わせて使います. これは助動詞が重ねられない (遥か昔そういうルールで運用しはじめて今も方針変更されていない) 英語の事情があり, そのときに be able to で回避・代用したのが一般化助動詞として定着したのでしょう.

## be going to

これは未来表現としての will の代わりに使うことになっています. そして will と be going to は例えばこのページで説明されているように次のような使い分けがあるとされています.

  • 未来のことが前もって考えられていたことかどうかで使い分ける.
    • be going to: 発言する前から決まっていたこと, 既に予定されていたことに使う.
    • will: その場で思いついたこと, 決まっていなかったことに使う.

しかしこれも本来的に will の単純な言い換えではありません. Will は名詞として「意志」などの意味を持ちます. つまり未来表現に使う will はもともとそうする意志を持っているという意味があり, その意志を持って行動するなら未来はきっとそうなるだろうという意味で未来表現に転用されています.

一方 be going to は必ずしもそういう意志を持たない意味にも使えます. つまり他の人に予定を入れられたからそれに合わせて向かっていく (go to) のであり, 自分の意志とは必ずしも関係ないはずで, その辺の微妙なニュアンスの違いが上に書いた使い分けに響くのでしょう.

TODO will の話はあとで適当な場所に移す.

# 5 文型: 文型それ自体が意味を持つ

次に説明するように, 各文型はそれ自体が意味を持っています. うるさく言えば文型の分類自体も諸説あるようですし, 何がどの文型に属するのか, 完全分類できるかも明らかではありません. ここではあくまで英文理解の役に立てることを目的に, 金科玉条にはせずに進めましょう.

大西泰斗氏は各文型に次のような名前をつけています.

  • S+V $\to$ 自動型
  • S+V+C $\to$ 説明型
  • S+V+O $\to$ 他動型
  • S+V+O+O $\to$ 授与型
  • S+V+O+C $\to$ 目的語説明型

名前をつけるとそれで意味が固定されてしまいがちですし, その名前に引っ張られて利用者が柔軟性を失ってしまうこともあります. 適切な命名が大事な理由でもあります. 上の命名は 1 つの適切な入口を与えてくれはするので, まずはこれで大まかに特徴を掴むのもいいでしょう.

# 5 文型: 各文型が持つ意味
## 第 1 文型 SV

第 1 文型 SV は there is/are 構文が典型的なように, 「S が存在する」という意味を持ちます. 存在のあり方を強調するために be 動詞から他の適切な動詞に変えることがあります. 例えば数学では存在性を強く主張するために there is をわざわざ there exist と書くことがよくあります. むしろ exist の方を良く見かけるほどです.

他には特殊相対性理論の論文では実際に次の文があります.

  • Asymmetries do not appear to be inherent in the phenomena.

これは asymmetries の存在の様子が to be inherent in the phenomena だと言っています. 存在の様子を断定するのではなく, 「---なように見える」と訳せば動詞 appear の意味を持たせています.

## 第 2 文型 SVC

第 2 文型は SVC で, この型は次の 2 つの意味を持ちます.

  • S は C の特性を持つ.
  • S と C は等しい.

大雑把に「S = C」とまとめてもいいでしょう.

  • I am a teacher.
  • He is my brother.

これらはまさに be 動詞が等号だとみなせる例です. もちろん第 1 文の I は先生であるだけではなく, 誰かの親だったり, 生徒だったり, 娘だったりするかもしれません. こう思うと単純な等号ではなく包含を表すような「特性を持つ」というニュアンスが出てきます.

補語が形容詞でも同じです. 次のような文を考えてみましょう.

  • She is smart.
  • He is nervous.

前者はまさに she = smart ですし, 後者も he = nervous です. うるさいことを言えば, もちろんこれも「そういう側面がある」だけで完全な等号ではありません.

他には動詞 become も第 2 文型を作れます. Be 動詞ではない以上, 「S はこれから C になる (C と等しくなろうとする)」といった意味に変わりますが, 等号を基礎にした意味を持つことは同じです.

## 第 3 文型 SVO

第 3 文型 SVO は型が次のような意味を持っています.

  • S が V を通して O に影響を与える.

むしろ第 1, 2, 4, 5 文型以外の意味を全て担うとイメージした方が適切かもしれません. この文型は英語表現の格で, 第 3 文型を使うと英語らしい表現がたくさん作れますし, 英語表現の面白さを実感できる文型でもあります. 日本人が第 2 文型で書きがちな文を第 3 文型で書くと英語らしくなりますし, 表現が豊かになります. 例えば次の文を見て比較するといいでしょう.

  • It's easy!
    • I can do it!
    • I have no problem.
  • This book is good for students.
    • I recommend this book to students.
    • This book helps students.
    • Students should read this book.
    • This book grows students.
  • My favorite food is sushi.
    • I like sushi.
    • I love sushi.
  • There is an ATM in the hotel.
    • The hotel has an ATM.
  • My job is an English teacher.
    • I teach English.
  • I'm busy.
    • I have many things to do.
    • I have no time.

一般に第 3 文型にすると意味が明確になります. 場合によっては文が短くなって意味が取りやすくなることもあります.

主語や目的後を自由に変えられるようになることで, 話の主体がどこにあるのか明示しやすくなる利点もあります. 例えば This book is good for students. では, 私が勧めることに主眼があるのか (私のお勧めが何か聞かれている), 本の良し悪しが問題なのか (この本がお勧めなのか聞かれている), 生徒が主体にあるのか (教師にとっていいのか生徒にとっていいのか) などいくつかの論点があり, それに応じて主語・目的語を柔軟に切り替えるべきときがあるからです.

この講座は読解中心なので英作文は強調して勉強しませんが, 英作文について強いていうならいろいろなことを第 3 文型で表現するようにしてみましょう. 英語の表現の幅があがります.

## 第 4 文型 SVOO

2 つの目的語を区別するために第 4 文型は SV O1 O2 と書くこともあります. こう書くと第 4 文型は次のような意味を持ちます.

  • 01 に 02 を与える.

「与える」というよりも「奪う」というニュアンスを持つこともありますが, 数学的に捉えてプラスを与えるかマイナスを与えるかと思えば「与える」で統一できます. いくつか例を見てみましょう.

  • I'll show you some pictures. (私はあなたに写真を見せるつもりです.)
  • My mother bought me a new bike. (母は私に新しい自転車を買いました.)
  • My girlfriend cooked me a nice meal. (彼女は私においしい料理を作ってくれました.)

「奪う」系の例も紹介します.

  • This big mistake may lose you your job. (この大きな失敗であなたは仕事を失うかもしれない.)
  • Computers save us a lot of time and trouble. (コンピューターのおかげで多くの時間と手間が省ける.)

前者の文は次のように第 3 文型で書いた方がシンプルではあります.

  • Computers save our time and trouble.

ここで a lot of を省略しています. この省略で意味が変わるかどうかは何が主張のメインかによります. もし「たくさん」であることを強調したい場合は省略すると意味が変わります. しかし時間と手間が省けることに重きがあって量にはそれほど関心がない場合, この省略で意味は大きく変わりません.

TOOD 後者の文, 第 3 文型ですっきり言えない?

後者に関してはいろいろな書き換え方があります. 第 4 文型を使うと形式的には短く表現できる一方で第 4 文型は扱いにくい面もあります. 例えばある動詞が第 4 文型を取れるのかどうかという文法上の問題があるからです. そう思うと次のような書き換えがあります.

  • I may be fired because I make a big mistake in my work.
## 第 5 文型 SVOC

第 5 文型は他よりも複雑な構造を持っています. 特に後半の OC はよく O = C と説明されることもありますが, これだと少し不都合なこともあります. 次のように整理すると SVOC が持つ意味を統一的に考えられます.

  • OC は本質的に文の構造を持った形が来る.
    • 特に第 2 文型か第 3 文型が来る.
  • 特に OC の O とは必ずしも一致しない存在として S があり, S は V の視点で OC が指す内容を捉えている.
    • OC の意味を S が V の視点で変えるとも言える.

詳しく見ていきます.

  • I find this book difficult, but he finds it easy.
    • 私はこの本は難しいと思うが, 彼は簡単だと思っている.
  • I make him read the book.
    • 私は彼に本を読ませる.

前者の OC は第 2 文型のイメージです. そして O = C というわけではなく, 「私」から見ると本は難しく見える一方で「彼」から見ると本は簡単です. これが「S は V の視点で OC を捉える」という意味で, O と C の関係が S によって変わっています. 第 2 文型での単独の文 this book is difficult. は客観的な意味を持つ一方で, 第 5 文型の OC におさまると主観的な意味に変わると言ってもいいでしょう.

後者の OC は第 3 文型で, 動詞は使役動詞です. そもそも等号を意味する第 2 文型ではありませんが強いて等号で説明するなら, 「彼」が主体的に本を読むのではなく, 「私」が読ませることで強制的に O=C の状態に持っていくとみなせます. これも S によって O と C の関係が変えられています.

このように第 5 文型は OC の関係性と SV の関係性の 2 つを含む複雑な構造になっています.

TODO 前者の例は I find that this book is difficult. とどういうニュアンスの違いがあるか?

## SVO と SVOO の書き換え

中学・高校で SVO と SVOO は言い換え・書き換えできると勉強したはずです. 表面的には書き換えできますが, 違う文には違う意味, もっと言えば違うニュアンスになることがあります. 日本語でも「相手の感情を傷付けないように言い方を考えよう」ということがあるのと同じです. ここではその問題を考えてみましょう.

よくある次の 2 文を考えます.

  • (SVO) Mary gave a present to Bob
  • (SVOO) Mary gave Bob a present.

どちらも大雑把には「メアリーはボブにプレゼントをあげた」と訳します. 英語の語感としてどうもこの 2 文は違うようです. その感覚が何に由来するのはを考えるのも言語学の役目です. 言語学として多くの議論があるそうで, 専門ではない私はその全てを追い切れていません. ここでは他の文章読解にも役立つ形で 1 つの見方を紹介します.

結論から言うと上の 2 文は「ボブがプレゼントを受け取ったかどうか」にニュアンスの違いがあります. これを前置詞 to の有無という視点から見てみましょう. SVO の文には SVOO にはない前置詞 to があります. ここで前置詞 to は方向性を指し示していることに注意します. 「I go to school.」は「私は学校へ行く」という日本語にするのが普通ですが, to を杓子定規に理解すると「私は学校の方に向かっていく」とも受け取れます.

第 4 文型では明確にボブにプレゼントを渡している一方, 第 3 文型ではプレゼントを渡そうとしただけでボブが受け取ったかまではわかりません. 渡そうとしたが実は拒絶されたという結末もありえます.

日本人の感覚からすると「to が付くか付かないか程度でそんなことがあるのか?」とも思います. しかし日本語でも「私はそうします」というか「私がそうします」で微妙なニュアンスの違いがあるように, この書き換えでそうした微妙なニュアンスの違いは出るようなのです. もっと言えば to はそのくらい微妙な塩梅を表現できる装置です. こうした to のはたらきについては他のところでもいろいろな形で説明します.

## 文型を柔軟に捉える

イントロダクションで大事なことは文章の内容を正確に理解することであり, 文法はそのための道具でしかないので金科玉条として杓子定規に考えては逆にその力を失ってしまうと書きました. 文型理解でも同じです. どう考えるとその文を的確に理解できるかが大事なのです.

例えば形式的に見れば第 1 文型であっても第 2 文型として捉える方が適切な場合もあるのです. 論文の英訳第 1 文でまさにそうした例が出ています. 実際に原論文を確認してみてください. 読解編を読んでもらえればそこでも解説しています. もちろんいろいろなところで出てくる例です.

## 文型を柔軟に捉える具体例: be in motion

特殊相対性理論の論文で次の文があります.

  • (en.3) either the one or the other of these bodies is in motion.

この be in motion を be moving と思って問題ないか考えてみましょう.

まずここでの move は自動詞なので, 現在進行形にしても S+V の第 1 文型と捉えて問題ありません. しかし一般論として現在進行形は S+V+C の第 2 文型に分類されることがあります. 例えば大西泰斗氏の著書では, 存在を意味するタイプの文を除いて be 動詞が構成する文は S+V+C の「説明型」 (主語の状態を C で説明する文) と書かれています. つまり be moving は「動いている (moving) 状態である」ことを説明している内容です. そう考えると中学でよくある第 3 文型と第 4 文型の書き換えのように, 微妙にニュアンスが変わることはなく be in motion と同じ意味と考えていいでしょう.

一方の in motion については, 例えば江川泰一郎の「英文法解説」の「前置詞 + 抽象名詞」の項に「英語らしい表現で, 文語調」という説明があります. この手の表現は論文のような硬い英語ではよくあり, of importance = important などと同じです.

## TODO 文型を柔軟に捉える: 受動態の文型

受動態の文型は考えない (無理にあてはめない) という話.

  • 参考: https://spice-of-englishgrammar.com/sentence-pattern-passive-voice/

たしかにS・V・Oを振り分けていますが、通常の最も身近な五文型とは少し異なっていることが感じられるかと思います。

TODO 少し違うという意味の確認. 次のように考えているが適切か?

「型が意味を持つ」という文型論の大原則からすると型自体に受身という意味を持たせたいが, 5 文型の議論で受身の議論はない. つまり第 5 文型は受身を無視した整理の仕方なのだと言える.

# 冠詞 a の使い方: any の意味

特に理工系・数学で重要な使い方に関して説明します.

  • (en.2) Take, for example, the reciprocal electrodynamic action of a magnet and a conductor.

上の例文で a magnet, a conductor とあります. ここの冠詞の a は any のような意味も持っています. 日本語, 特に「数学用語」で言えば「任意の」という言葉があてられます. つまり次のような意味です.

  • 任意の磁石と任意の導体の電気的相互作用を例に挙げよう.

もちろん次のように訳すのがふつうでしょうし, それで全く問題ありません.

  • ある 1 つの磁石とある 1 つの導体の間の電気力学的な相互作用を例に挙げよう.

もう少しイメージしやすい例をいくつか挙げておきます.

  • A cube has six surfaces.
  • 立方体は 6 面ある.
  • 任意の立方体は面を 6 つ持つ.

どんな立方体であったとしても立方体である限り定義によって 6 面あります.

  • A cloud is a mass of vapor in the sky.
  • 雲は空中での大量の蒸気の集まりである.

同じくどんな雲であれ雲は定義によって水蒸気の集まりです.

  • An elastic substance returns to its original shape.
  • 弾力性のある物質はもとの形に戻る.

弾力性のある物質は弾性体と呼ばれます. 同じく弾性体はその定義によって弾性限界を超えるまで必ずもとの形に戻ります.

# 冠詞 the の使い方: all の意味

The には次のように総称的な用法があります.

  • The electron is a fundamental particle with negative electric charge that is found in atoms.
  • 電子は負の電荷を持った基本粒子であり, 原子の中に見られる.

ここでの the electron は「全ての電子」「電子というものは」という意味で, 形式的には単数ですが総称的に使われています.

本文単語

★がついた単語を眺める. いま面白いと思っている (それだけのコメントができる) 単語としてリストアップしている.

第005回 第1-2文の単語の掘り下げ

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 第 1-2 文の単語の深掘り

進捗

  • know, Maxwell, electrodynamics, electric, electricity, dynamic, dynamics, understand の紹介

TODO

  • 名詞の単数形・複数形の議論を詳しくやっていく

次週予定

  • 第 3 文突入

今日のメモ

  • 名詞の単数形・複数形の議論は大事

内容: コンテンツ (案) からの転記

単語の素因数分解

少し複雑な単語になると, その中にいくつかの要素が見えます. 部首やつくりがある漢字を考えるとわかりやすいでしょう. 見たことがない漢字が出てきても, 漢字を自然にいくつかのパーツにわけた上で, さんずいがあれば水に関わる意味だろうと推測できるでしょうし, パーツを組み合わせて意味を推測するのはよくやるはずです.

英語にも同じ要素があります. 典型的には語幹・接頭辞・接尾辞です. これらの概念を使って単語を因数分解していくと, 難しい単語がよく知っている簡単な要素にわかれることはよくあります. こうした視点を含め, 単語解説ではいろいろな視点から単語を眺めます.

Gould による Russian for the Mathematician という本にもこうした解説があります. ロシア語はスラブ系の言語である一方, ゲルマン系のドイツ語とロマンス系のフランス語の影響を強く受けていて, ラテン語の影響もあります. これにも単語理解のために単語を因数分解して理解しようという注意がいくつもの例を挙げて詳しく議論されています.

理解を深める

英語または他の言語を通じて日本語の理解をも深め, さらには学習全般への理解を深めることも理工系のリベラルアーツを目指すこの講座の目的です.

例えば understand の項を読んでもらうとわかるように, 理解といってもいろいろあります. 実際 understand の項では類語として apprehend/comprehend を挙げています. Understand は混乱していたものをすっきりさせるという意味での理解, apprehend は何か 1 つをがっちり掴むという意味での理解, comprehend は全体をがっち掴むという意味での理解を表しています. ここで英語を通じて「理解」という日本語自体への理解も深まりますし, 他の国の言葉を深く理解する中で国語の理解も深められます.

そして理解という言葉への認識が深まると, いまの自分の状態をさらに深く理解・分析できます. 例えば「いろいろな知識は入ってきたがすっきりとした理解ができない」状態なら, それらを統合してくれる一般論や抽象論を勉強するといいでしょう. 一方で「曖昧模糊としていてはっきり見えない」状態なら具体例をいじり倒してみるのが適切です. 何を勉強するべきか, どう勉強するべきか方向性を自分で見つけるためにも役立つのです.

今回紹介した単語
know

Wiktionary によると対応する印欧祖語は *ǵneh₃- です. Etymonline にはなかなか面倒なことが書いてあります. 特に第 2 段落を見てください. 翻訳して紹介しましょう.

いったんゲルマン語で広まったが, この動詞はいま英語でだけ保持されている. 英語では広く応用されていて, 他の言語での 2 つ以上の動詞の意味をカバーしている. 例えばドイツ語では wissen, kennen, erkennen, そして特に können, フランス語では connaître (英語では perceive, understand, recognize に対応する), savoir (「その知識を持っている」という意味での「知っている」), ラテン語では scire (understand, perceive) や cognoscere (get to know, recognize), 古代教会スラブ語では znaja, vemi が対応する. アングソサクソンではこれに対して 2 つの言葉が使われていて, もう一方は witan である.

上の日本語訳は単に「知る」とだけ書きはしました. しかし他の言語では複数動詞に分けた内容を 1 つにまとめた単語なので, それだけ多彩な意味と用法があります. 英英辞書で調べると面白いだろうと思います.

Maxwell

電磁気学を支配するマクスウェルの方程式で有名なマクスウェルです. Wiktionary には次のような記述があります.

  • A Scottish habitational surname from Mackeswell near Melrose.
  • メルローズに近い Mackeswell からつけられたスコットランドの地名に根差した名字

実際マクスウェルはスコットランドの物理学者です. 日本でも地名由来の名字はよくあり, 英語にも同じ言語現象があるのです. 例えば日本でも島袋や新垣と言われると沖縄にルーツがあるような印象があるでしょうし, 実際そういう調査もあります.

他にも例えば日本でも山川のように自然物から名字を取ることがあります. そしてユダヤ人はこの手の名字がよくあり, 何を隠そうアインシュタイン Einstein は「1 つの石」という意味です. Ein はドイツ語の 1 の意味で, stein は英語の stone, rock といった意味です. 名前を見るとそれだけでその人の来歴や人種がわかることがあるのです. アインシュタインについて言うなら, そこにはユダヤ人差別の歴史も刻まれています. 例えばこの記事を引用します.

ユダヤ人の姓の売買については、『人名の世界地図』では、「すぐにユダヤ人とわかるように、その名を植物名と金属名に限ったりもした」とあります。ローゼンタールRosental(薔薇の谷)、リリエンタールLiliental(百合の谷)、ブルーメンガルテンBlumengarten(花園)、ゴールドシュタインGoldstein(金の石)、シルバーシュタインSilverstein(銀の石)、ルビンシュタインRubinsteinなど、よく聞くユダヤ系の名前に花や宝石名が多いのはそういうわけだったのです。なお、"stein"というのは、タールtal(谷)、ハイムheim(家)、バウムbaum(木)といった単語と同様、アインシュタインEinstein(1つの石=石ころ)、エイゼンシュタインEizenshtein(鉄の石)などユダヤ人の姓の語尾によく使われます。

ちなみにドイツには Karl Stein という著名な数学者がいます. スタイン多様体という彼の名前を関した数学用語・概念もあります. 日本人で一石賢という人もいます.

Wikipedia を見ると次のような注意もあります.

  • This name was first recorded in 1144, as Mackeswell, meaning "Mack's spring (or stream)" (from the Old English well[a]).

英単語の well には井戸の意味があり, spring にも春・ばねの他に泉の意味があります. Weblio には「コア」として次のような解説があります.

突然出てくるもの 季節でまっ先にやってくるものとして「春」,突然飛び出すものとして「ばね」,「泉」などの意味が展開

人名 1 つを少し掘るだけでも歴史・文化がそこに色濃く反映されていること, 文化・言語を超えた世界が広がっています.

electrodynamics
  • 名詞: - 電気力学
    • electro + dynamics
      • electro-: 電気-
      • dynamics: 力学, 動力学
  • Wiktionary
  • Etymonline

Electrodynamics は electro と dynamics でわけて考えることにし, 分解した語については対応する単語を調べてください. 特に electro- は electricity などから考えてます. Electro- のような形で他の語とつながって形容詞的に使うことがあるのも覚えておくといいでしょう. たくさん例を見ていると自然と体得できることでもあります.

Electrodynamic は直訳すると「電気力学的」です. 「電磁力学」という日本語も同じ意味です. また英語で使われるときに磁気の議論を含むときでも electrodynamic と書き, electromagnetodynamics のように書きません. 例えば磁気も理論も明らかに含む量子電気力学は英語で quantum electrodynamics (QED) です.

単に dynamics とだけ書くと動力学という意味です. 静力学という言葉もあり, これは statics と言います. 例えば気象静力学は meteorological statics です.

electric

詳しくは electricity を見てください.

Wiktionary によると 1640 年代に Thomas Browne が新ラテン語 ēlectricus (electrical; of amber), ēlectrum (amber) +‎ -icus (形容詞の接尾辞), 古ギリシャ語の ḗlektron (amber), ēléktōr (shining sun) に由来します.

electricity

この語にはかなり複雑な経緯があります. Electricityはラテン語の electricus から来ています. これがさらに古代ギリシャ語の ἤλεκτρον から来ていて, 琥珀 (amber) を指しています. ギリシャ語の ἤλεκτρον も複雑で Wikipedia によると, 琥珀から次の 3 つに分化しました.

  • 物理での電子の意味. 琥珀をこすったときの摩擦電気から電磁気現象が発見されたことに由来.
  • 金と銀の合金である琥珀金. 古代ギリシアで琥珀と同じ名称で呼ばれていた.
  • マグネシウムを主体とした合金.

古代ギリシャ語としての ἤλεκτρον はサンスクリットの उल्का (ulka, meteor) や ἠλέκτωρ (ēléktōr, shining sun), ἥλιος (helios, sun) に由来するとも言われます.

さらに言えば amber はアラビア語由来です. 中世のヨーロッパでは古代ギリシャやローマの知見は散逸してしまい, アラビアから逆輸入の形で中世ヨーロッパに戻ってきた経緯があるため, その一環なのでしょう. ちなみにアルコール, alcohol もアラビア語起源で, アラビア語起源の科学用語もいろいろあります.

dynamic

Wiktionaryによると, 元を辿れば古代ギリシャ語の dunamikós から来ていて, これは powerful の意味です. これの類語として dúnamis や dúnamai も起源で, それぞれ power, "I am able" の意味です.

日本語で「デュナミス」はいろいろなところで顔を出します. 私が思いつくところだと機動戦士ガンダム00のガンダムデュナメスです. 現代日本でもアニメや漫画やゲームの中に (古代) ギリシャ語が根付いています. 何気ない横文字を調べることで物理や数学につながることもぜひ覚えておいてください. 日常に物理・数学を組み込んでいきましょう.

私は単数形の用例を見かけたことはありませんが, dynamic は名詞として使われることもあります. これについては dynamics を参照してください.

dynamics
  • 不可算名詞: 力学, 動力学
  • 名詞 (複数扱い)
    • (物理的・精神的な) 原動力,活動力,エネルギー,迫力
    • 変遷, 変動, 過程.
  • Wiktionary
  • Etymonline

物理では力学, 特に動力学の意味で使われます. 動力学というからには静力学もあり, statics と言います. 高校物理で言うと物体が動かない状況で力の釣り合いを考えるのが静力学, 実際に運動方程式にしたがって運動する様子を追いかけるのが動力学です.

学問名・分野名として使うときは不可算名詞として扱います. つまり次のように形式的に単数形のように処理する必要があります.

  • Informally, dynamics is the study of forces and motion.

一方, 複数形として捉えると単数扱いの名詞 dynamic の複数形として捉える必要が出てきて意味が変わります.

TODO 形容詞に s がつくと名詞化する現象, 他にもあった気がするので例. どういう気分なのだろう. semantics

understand

もちろん under+stand からなる単語です. 理解を深めるにはやはり WiktionaryEtymonline が役に立ちます. 後者を眺めてみると stand in the midst of と書いてあります. 英語にとって, 何かを理解することは「世界を見通しよく眺める中心に立てている・その中心に立って制圧する」といった気分があるのでしょう. そして実際にはここでの under の意味についてはもっと深く切り込んでいくべき事情があります. ここでの under は下にある (beneath) の意味ではなく, 古英語, そして印欧祖語の *nter- が指す between, among と言った意味で捉えるべきなのです. サンスクリットでは同じ意味が antar, ラテン語では inter, ギリシャ語では entera で表現されていて, こちらの意味を継いでいるとみなす方が適切です.

同じく Etymonline ではさらに強く究極的な意味は「---に近い」という意味で見立てるべきとあります. ギリシャ語の epistamai は科学・知識という意味の名詞で, 英語で言えば stand upon という形の語の成り立ちです. 対応は epi = upon, stamai = stand です.

ここの epi は数学的な応用があるのでそれも少し書いておきます. 圏論ではエピ射という概念があります. 気分としては集合論での全射を圏論的に定式化した概念です. ここで大事なのは全射の英語表現です. 名詞としては surjective map ですが, this map is onto と言うこともあります. これに対応する日本語は「上への写像」です. もちろん upon と onto で少し変わりはしますが, on を含む重要な共通点があります. このような形で回り回って数学にも影響する語彙なのです.

Wiktionary には類義語として apprehend, comprehend, grasp, know, perceive, pick up what someone is putting down, realise, grok, believe が挙がっています. これらの言葉と比較しつつ語源なども調べていくとまた理解が深まります.

比較のとき, 語源を調べるのと同じくらい画像検索も役に立ちます. 1 つ例を出しておきます.

私の画像検索結果とあなたの画像検索結果が一致する保証がないので, 1 つずつ印象的な画像が張られたページへのリンクをつけてあります. 注目してほしいのは特に後者の apprehend です. 具体的な画像参照の方では後ろ手に手錠をかけられた画像がトップに来ています. つまり同じ「理解する」という日本語をあててはいるものの, apprehend が表す「理解」は「手錠をかけてがっちり掴まえる」といった意味なのです. Wiktionary で語源を調べると, ラテン語の apprehendere からの借用語であることがわかります. さらに apprehendere を Wiktionary で調べると語源としては ad- + prehendō であり, ad- は "to, towards, at" を意味し, prehendō は "lay hold of, seize" を意味しています. Seize は「掴む」という意味です.

掴むというと, apprehend の中に hend があり, これが hand に近いので何か関係があるのではないかという気分も出てきます. Wiktionary で hand を調べてみると, 次のような記述があります.

  • 古スウェーデン語の hinna (to gain), ゴート語の fra-hinþan (to take captive, capture), 古ギリシャ語の kentéō (prick) などとの比較も参考になるだろう.

hand 自体が理解するという言葉を語源に持っていることがわかります.

もう 1 つ prehend つながりで apprehend と comprehend の違いも気になります. これは apprehend の Wiktionary に次の記述があります.

  • These words come into comparison as describing acts of the mind. Apprehend denotes the laying hold of a thing mentally, so as to understand it clearly, at least in part. Comprehend denotes the embracing or understanding it in all its compass and extent. We may apprehend many truths which we do not comprehend.
  • これらの語は精神への作用を説明する点で比較できる. Apprehend は少なくともその一部を明確に理解するために精神的に掴まえることを意味する. Comprehend はその範囲や大きさの全てを掴み, 理解することを意味する. 私達は comprehend していない多くの真実を apprehend できる.

特に注目すべきは最後の例文, "We may apprehend many truths which we do not comprehend." です. この 2 つにはこのような明確な違いがあるのです. Wiktionary, Etymonline はもちろん, Google 画像検索を駆使するとこうした意味の違いを一段深く, そして視覚的にも印象的に理解できます.

Wiktionary で comprehend も調べてみると, ラテン語の comprehendere (to grasp) 由来で接頭辞の com- + prehendere ((to seize) からなっています. 接頭辞の com- は次の文字が b, m, p の場合の con- の変形であり, Wiktionary によると con- は次の 2 つの意味があります.

  • ある語に with, together, joint と言った意味を追加するために使われる
    • 例: congenial, congregation, console, consonant, construct, converge
  • その語の意味を強めるために使われる
    • 例: confirm

当然ではありますが comprehend の 1 まとめ感は com で表現されています. Converge は高校数学の極限・微分積分で出てくる「収束する」の意味です. もう 1 つ数学的に大事な例を挙げておくと complete があります. Etymonline によるとこれも com + plere で, plere は「満たす」 (to fill) の意味です. Complete には数学の距離空間論で「完備」という日本語を表すのに使います. 完備性は例えば相対性理論と並ぶ現代物理学の柱である量子力学の数学, ヒルベルト空間論で出てきます.

接頭辞 mis をつけた misunderstand という単語があります. Under+stand に miss しているので「誤解」といった意味です. ここから接頭辞の概念, 特に mis の語感を知るのにも役立つでしょう.

第 1 文の単語
英語
  • ★ known $\gets$ know: 知る
  • ★ Maxwell: マクスウェル (人名, 方程式名)
  • ★ electrodynamics: 電気力学
  • ★ understood $\gets$ understand: 理解する
  • ★ present: 現在
  • ★ when: ---なとき
  • ★ applied $\gets$ apply: 適用する
    • apply to: ---に適用する
  • ★ asymmetries $\gets$ asymmetry: 非対称, 非対称性
    • a+symmetry: ここで "a" は「反対」の意味の接頭辞
  • ★ which: (関係代名詞)
  • ★ appear: 現われる
  • ★ inherent: 固有
  • ★ phenomena $\gets$ phenomenon: 現象
ドイツ語
  • ★ bewegte $\gets$ TOOD bewegen のどんな活用形かあとで埋める
  • ★ Körper = body
フランス語
  • ★ connu $\gets$ connaître = know
  • ★ si = if
    • cf. si et seulment si = if and only if
  • ★ corps = body
  • ★ conduits $\gets$ conduit = 導体 (物理), 導管, 水道
第 2 文の単語
英語
  • ★ reciprocal: 相互の
  • ★ electrodynamic: 電気力学的な, 電磁気的な
  • ★ magnet: 磁石
  • ★ conductor: 導体 (物理の専門用語)
ドイツ語
  • ★ Man: man, human, people
  • ★ denke $\gets$ denken = think
  • ★ zwischen: between
  • ★ Leiter = conductor
フランス語
  • ★ aimant = magnet

第006回 第3文の読解

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 第 3 文の読解

進捗

  • 第 3 文の単語以外完了

TODO

  • 今日のメモの内容を適切に取り込む

次週予定

今日のメモ

  • either A or B の of these bodies がはまりどころ
    • くり返しを嫌うこととセットで説明.
    • is in motion で単数であること, 文法上の注意が必要.
  • 訳の説明と文法の説明の順序を考えよう.
  • Slack のメモをうまく取り込む: 以下参照.
  • 黒体輻射と工学
    • いい感じのが見つかりませんが、黒体輻射と工業の関係があったという話、冒頭の「19世紀後半のドイツでは工業の発展とともにまた分光学の確立とともに、この輻射のメカニズムと、その正確な分布の解明が着目されていた。」がありました。もうちょっと具体的なのが欲しいですが、工業的な問題があったことは何となく伝わるだろうと思うのでとりあえず。
Slack メモ

内容: コンテンツ (案) からの転記

第 3 文
英文と訳
# 文
## en.3

The observable phenomenon here depends only on the relative motion of the conductor and the magnet, whereas the customary view draws a sharp distinction between the two cases in which either the one or the other of these bodies is in motion.

## de.3

Das beobachtbare Phänomen hängt hier nur ab von der Relativbewegung von Leiter und Magnet, während nach der üblichen Auffassung die beiden Fälle, dass der eine oder der andere dieser Körper der bewegte sei, streng voneinander zu trennen sind.

## fr.3

Le phénomène observé dans ce cas dépend uniquement du mouvement relatif du conducteur et de l'aimant, alors que selon les conceptions habituelles, une distinction doit être établie entre les cas où l'un ou l'autre des corps est en mouvement.

typhon pharmacy

## jp.3

ここで観測される現象は導体と磁石の相対的な運動にだけ依存する. これに反して慣習的な観点からすると, これらの物体のどちらが動いているかによって 2 つの場合の間に著しい区別がある.

# 解説
## 英語

英文解釈上, 注目すべきはもちろん逆接の whereas です. 前半では「現象は導体と磁石の相対的な運動にしか依存しない」と言っているのに, 後半では「1905 年当時の人類の電磁気学の理解度では, どちらが動いているかによって説明の仕方を変えないといけない (のが気に食わない)」と言っています. しかも "a sharp distinction" とまで言って強調しています. 単なる違いなのではなく, 鮮烈な印象を与える単語の選び方です. The customary view という表現で既存の知見への批判であることも表現しています.

主節の名詞に全て the がついていることに注意してください. 既に言及したモノばかりで議論が続いていることがはっきりわかります.

The observe phenomenon here の here の使い方が面白いです. 冠詞 the を使っている時点で指示内容は明確と思いますが, さらに here を使って強調しています.

動詞の depend only on の only のかかり方の理解も重要です. 形容詞にしろ副詞にしろ挿入句・挿入節にしろ, 何がどこにどうかかるのかをきちんと理解するのは重要です.

Whereas による従属節の主語の the customary view は重要です. 直訳すると「慣用的な見方」くらいの意味で, 文法的にはいわゆる無生物主語として使われています. こういう場合は「慣用的な見方によれば」と訳すと日本語として取りやすい文章に直せます. 逆に日本語でこう言いたい場合, 無生物主語を使うと英語らしい簡潔な表現になって便利です.

文を理解する上で大事なのは the customary view の the です. 冠詞を理解する上でも大事です. これは「この当時の物理の慣用的な見方」を表しているからです. 当然現代 (2020 年現在) の物理の慣用的な見方ではありません. The には「あなたもご存知の通り」といった意味の指定・限定を示唆しています. 歴史的な文献を読むとき何がどう the なのか解釈上大きな問題になり得ます. 当時の人の感覚で読む工夫が必要で, 古典文献講読に特別な訓練が必要になる理由の 1 つです.

Draw は絵を描く方の「描く」です. View が見方なので customary view がある描像を描き出すという意味で view が使われているのでしょう. 無生物主語とあいまって英語らしい, 面白い表現です.

Sharp distinction は直訳すれば「鋭い違い」です. 違いに対して鋭いという形容詞をあてられるのは日本語にはない感覚でしょう. もちろん日本語訳するときは「大きな違い」としてしまって構いません.

Either the one or the other of these bodies は導体と磁石を指しています. ここでの, というか物理の力学で出てくる body はたいてい「物体」の意味です. ちなみに「物質」は material です. 「物質科学」material science で覚えるといいでしょう.

ここで either A or B の変形版が使われているのを注意しておきます. まず either A or B は必ず覚えておかないといけないこと, そして A or B にそれぞれ名詞が来るところを of these bodies につなげるために the one or the other としています. くどく両方に the をつけているのも冠詞を理解する上でのポイントでしょう. もしかしたらドイツ語の der eine oder der andere に合わせたのかもしれません. フランス語も l'un ou l'autre で揃っています.

Is in motion は「運動状態にある」という意味です. ここで is moving と書かずに be in motion と少し持って回った言い方をしています. 論文のような硬い文章ではよく見かける表現でもあります.

違う表現を使うのは意味やニュアンスが違うからだという話もあります. しかしここでは単に文語調の表現だと理解すればいいでしょう. 論文などの硬い英語の文章では単に important と書けばいいものを of importance と書くことがあり, be in motion も be moving と同じ意味・ニュアンスを持ちます.

ちなみに be in motion のような名詞を使った書き方にすると, motion を適切な形容詞で修飾できるようになります. どんな動きなのかを細かく指定できるようになり, 細かいニュアンスまで表現しきりたい書き言葉では重宝します.

文構造・文法事項
# 多言語比較

文が長いので少し大変ではあるものの, 文構造・単語の対応が比較的見やすい文です. ぜひ比較して眺めてみて下さい.

# 英語
## 文構造
  • (主節 1) The observable phenomenon depends only on the relative motion
    • of the conductor and the magnet
  • (接続詞) whereas
  • (主節 2) the customary view draws a sharp distinction
    • between the two cases
    • in which either the one or the other of these bodies is in motion.

主節 1 の名詞はことごとく the がついていることに注意してください. 特に the conductor と the magnet は前文で冠詞は a でした. 出てきたのは 2 回目なので the で指定しているのです.

英文解釈でも注意したように whereas は逆接の接続詞です. 文構造を捉える上でも重要です.

主節 2 の a (sharp) distinction の a からはまだ説明していない distinction であることが読み取れます. それなら補足説明が続くはずで, between the two cases 以下に続きます.

この the two cases はもちろん「2 つの場合」です. 何故取り上げたかというと the がついているのが面白いからです. 少なくとも私はここで the をつけて書ける自信がありません. The relative motion of the conductor and the magnet の 2 パターンで限定されているという認識なのでしょう.

In which に関しては in と case の結びつきを知ることが大事です. 前置詞と名詞には相性のいいペアがあり, 語のコロケーションと呼ばれます. 関係代名詞節が修飾する相手を探すときにも使える概念です.

Either A or B は熟語として覚えましょう. これもやはりよく使います. もともとこれ自体が二者択一の意味であるところに the one と the other を使っていて, よほど強く強調したい意図が見えます.

文法上 either A or B は A, B が単数なら単数扱いであることにも注意してください. 実際 which 節の動詞が is になっています.

単語
# 英語
  • ★ observable: 観測可能な
  • ★ phenomenon: 現象 (単数形)
    • 複数形: phenomena
  • here: ここで
  • ★ depend on ---: ---に依存する
  • only: ---だけ
  • ★ relative: 相対的な
    • relative motion: 相対運動
  • motion: 運動 ($gets$ move)
  • conductor: 導体 (物理の専門用語)
  • magnet: 磁石
  • whereas: 一方, ---に反して
  • ★ customary: 慣習的な
  • ★ view: 見方
  • ★ draw: 描く
  • sharp: 鋭い
  • distinction: 区別
  • ★ between: ---の間
  • ★ case: 場合
  • either A or B: A または B
  • other: (the other で) 他方
  • ★ bodies $\gets$ body: 物体
# ドイツ語
  • das: 中性名詞に対する定冠詞の 1 格
  • ★ beobachtbare $\gets$ beobachtbar = observable
  • Phänomen = phenomenon
  • hängt $\gets$ hängen = depend on
  • hier = here, there
  • nur = only
  • ab: 前置詞
  • von: 前置詞
  • der: 男性名詞に対する定冠詞の 1 格
  • ★ Relativbewegung: 相対運動
    • relativ + die Bewegung
  • Leiter = conductor: 導体
  • und = and
  • Magnet = magnet
  • ★ während = while
  • nach:
  • ★ üblichen $\gets$ üblich = usual, customary
  • ★ Auffassung = understanding
  • die: 女性名詞に対する定冠詞の 1 格
  • ★ beiden $\gets$ beide = both
  • Fälle $\gets$ Fäll = case
  • dass = that, so that
  • ★ eine $\gets$ eine = a, one
  • oder = or
  • ★ andere $\gets$ anderer = other, different
  • dieser: この, あの, その
  • Körper = body
  • ★ bewegte $\gets$ bewegt = moving
  • ★ sei $\gets$ sein = be
  • streng = severe
  • ★ voneinander = each other
  • ★ zu: 前置詞
  • trennen: 切り離す
  • sind = sein の直説法現在第 1 人称複数形
# フランス語
  • le: 男性名詞に対する定冠詞
  • phénomène: 現象
  • observé $\gets$ observer = observe
  • dans: 前置詞 (in, into)
  • ce: it, this
  • cas: case
  • ★ dépend $\gets$ dépendre = depend
  • ★ uniquement = uniquely
  • du = de + le
  • mouvement = movement, move
  • relatif = relative
  • conducteur = condutor
  • et = and
  • aimant = magnet
  • alors = then
  • ★ que = that (関係代名詞)
  • selon = according to
  • les: 複数形に対する定冠詞
  • ★ conceptions $\gets$ conception = idea
  • habituelles $\gets$ habituel = customary
  • une $\gets$ un = one
  • distinction = distinction
  • ★ doit $\gets$ devoir = must
  • être = be
  • ★ établie $\gets$ établir = draw
  • entre = between
  • ★ où = where
  • l'un ou l'autre = each other
    • l'un l'autre とも
  • des: 不定冠詞の複数形
  • corps = bodies
  • est $\gets$ être
  • en = one
  • mouvement = movement
補足
# a sharp distinction の印象的な例文

単純に面白い例文があったのでそれを紹介します.

  • There is a sharp distinction between what is remembered what is told and what is true.
# 文献講読の難しさ

The customary view に関してコメントしたように, 古い文献を読むときはその当時の常識を前提にしないと深く理解できないことがあります.

これに関して私が覚えているのは蜻蛉日記の次の記述です.

かくはあれど、ただ今のごとくにてはゆくすゑさへ心ぼそきに、 ただ一人をとこにてあれば、年ごろもここかしこにまうでなどする所には、 このことを申しつくしつれば、今はましてかたかるべき年齢(としよはひ)になりゆくを、 いかでいやしからざらん人のをんなご一人とりて、うしろみもせん、 一人ある人をもうちかたらひて、わがいのちのはてにもあらせんと、 この月ごろおもひたちてこれかれにもいひあはすれば、

先生に頼んで特別に友人と放課後に古文の指導を受けていたときにこの文・作品に出会いました. ここの「かたかるべき」の理解です. これは「難しいだろう」という意味ですが, さて, 何が難しいのかと先生から聞かれたのです. 前後の文章を知らないとわかりませんが, 結論から言うと「出産が難しい年齢になった」という意味です.

日記ということもあり何が難しいのか書いていません. 作者が藤原道綱母であり何歳頃に書いた本なのか, どういう境遇にある人なのかといった情報がないと正しく読めません. 物理や数学の教科書ならともかく, 論文となると同じような事情があることを示す文でもあります.

# 相対性理論に関わる物理学史

少し物理の歴史的な事情に関しておきましょう.

19 世紀後半, 「もう基本的な原理はわかりきっていて, 物理学者に残された仕事は未知の現象に原理を適用していくだけだ」と言われていたようです. そんな中, 電磁気学と力学の交点, そして電磁気学と熱力学の交点で出てきた問題が相対論と量子力学への契機になりました. 前者の 1 つはもちろん相対性理論に関わる諸問題であり, 他にはクーロン場中の荷電粒子の運動による電磁波の放射とそれによる荷電粒子の落ち込みの問題です. 後者は物質の安定性とも関わっていて量子力学の問題です. 物質の安定性はいまだに未解決の問題があり, 精力的に研究されています. もしあなたがこの問題に興味があるなら, 例えば \cite{JanPhilipSolovej1} を読んでみるといいでしょう. 次の URL からレビューの論文をダウンロードできます.

この問題に関する教科書は \cite{LiebSeiringer1} があります. 非常に難しく, これが読めれば最先端の論文が読みこなせるレベルです.

電磁気学と熱力学に関わる問題は黒体輻射で, これも量子力学, 特に量子統計力学・場の量子論につながります. 熱力学的な予測をもとに古典統計力学で考えたら, その結果が現象とまるで合わない問題があり, これを克服するためにプランクがいろいろ考えてエネルギーの量子仮説を提出しました. ここからさらにアインシュタインが光電効果・光量子仮説にまで議論を深め, 有名な 1905 年の奇蹟の年の論文の 1 本として提出しています.

この 1 文の解説としては風呂敷を広げすぎかもしれません. しかしこのくらいの大きな世界観を背景にした 1 文なのです. 実際, 現代の物理学者はこの 1 文にこのくらいの世界を見るでしょうし, もっと言えばアインシュタインがまさにこの論文を書きながら対峙していた世界です. せっかくの原論文読解です. 1 文 1 文味わいながら読んでいきましょう.

第007回 第3文の単語

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 第 3 文の単語

進捗

  • 第 3 文の単語 (英語) 終了

TODO

  • なし

今日のメモ

内容: コンテンツ (案) からの転記

いまの気分メモ
  • 単語をやっていると終わらない
    • さらには多言語でやっていると楽しいが終わらない
  • いったん文章読解メインで進めて読解だけでもけりをつけたい
  • 読解も解説をきちんと書くとなると本当に面倒
    • ふだんどれだけさぼって読んでいるかもよくわかって厳しい気分になる
最初に紹介: 大事な参考文献の紹介

中高生には少し難しいと思いますが 1 つ大事な視点を提供してくれる次の本を勧めておきます.

もとが大学生向けの講義資料なので, 数学をある程度知っている前提がありつつ, 基本的な文法を一度勉強した上で一定の語彙を持っている必要があります. しかし豊富な数学の例文があり, 数学で使う文法に絞って解説されているため, 特に力を入れて学習するべき項目がわかります. 数学で必要な文法と物理で必要な文法には重なりも多く, もしあなたが物理にしか興味がないとしても参考になるはずです.

この本から 1 つ面白い説明を抜き出しておきます. P.20 からの引用です.

C) の場合を日常の文と比べてみよう. 例えば犬好きの人が "A dog is a friendly animal" といった場合, 現実には例外があって吠えかかる犬もいる. しかし, 数学の文の場合は例外なしに成り立つと解釈する.

当たり前と言えば当たり前ですが, 数学で使う英語と日常で使う英語に微妙な食い違いがあるのも間違いありません. 他に日常の英語・口語英語・会話の英語ではあまり使わないとされる表現, 文章の英語だからといって説明がなおざりにされる表現がまさに使われるのが数学の文章英語であることもよくあります. そうした「実用的な」視点から数学の英語を解説してくれている本です.

他には「英作文は英借文」とも言われていて暗記も勉強する上で大事な要素です. しかしふつうの例文暗記では飽きてしまうことも多いでしょう. そんなとき, 数学の例文暗記という形で対応するのも一手です. そしてそうした例文がたくさん載っています. そういう使い方をするのもお勧めです.

単語
物理の専門用語
  • observable, motion, conductor, magnet, body
  • motion: move の名詞, ve を除いて -tion をつけるという異様な変形.

observe -> observ -tion

observable
  • 形容詞: 観測可能な
    • 名詞: (量子力学) 観測可能量, 物理量
    • observe +‎ -able
  • Wiktionary
  • Etymonline

動詞 observe も参照してください.

この論文では observable は形容詞です. 実は observable は量子力学で「観測可能量」という名詞として使われることがあります. 専門用語・術語としての用法です.

observe
  • 動詞: 観測する
    • observes, observed, observing
    • observable
    • observer: 観測者
  • Wiktionary
  • Etymonline

Wiktionary によると中期フランス語の observer, ラテン語の observare (to watch, note, mark, heed, guard, keep, pay attention to, regard, comply with, etc.) に由来します. Etymonline によると単語として ob (in front of, before) + servare (to watch, keep safe) と分解できます. 印欧祖語からの語幹 *ser- は to protect の意味を持ちます.

see -> sehen go -> gehen take -> nehmen

英語だと名詞と動詞が同形のものが多い. start も名詞と動詞が同形.

日本語は動詞の語尾が「う」の列であるというのと同じく, フランス語は動詞の語尾が -er, -or, -ir になるルールを持つので, observer はこれで動詞です. 英語の「--- する人」の意味の -er ではありません.

ラテン語の observare は ob (before) + servare (to keep) と分解でき, さらに印欧祖語の *serw- (to guard) に由来します.

phenomenon

フェノメノンとして日本語化されている言葉でもあります. Phenomena と特殊な複数形を取るのはギリシャ語の形をそのまま使っているからです. 後期ラテン語 (Late Latin) の phaenomenon (appearance), 古代ギリシャ語の phainómenon (thing appearing to view) に由来します. つまりギリシャ語由来の単語です. 英語には見られない複数形を持つのはギリシャ語由来の単語だからです. また印欧祖語の語根 *bha- は to shine の意味を持ちます.

また, 一般に ph がつく単語はギリシャ語に由来していることがよくあります. 薬学や薬局を意味する pharmacy は古代ギリシャ語の pharmakeía (the use of drugs) に由来しますし, ゲームでよく出てくるテュポーンは typhon で, ギリシャ神話に出てくる神とも怪物ともいわれる巨人です.

時々ゲームにも出てきていて, 2020 年時点ではグラブルのテュポーンが有名でしょうか. ある程度の年齢の人にはファイナルファンタジー VI のテュポーン先生が印象深いかもしれません. 台風 (Typhoon) の語源とも言われているそうですが, 私はあまりよくわかっていません.

学術用語には ph がつく単語はよく出てきますし, それらはたいていギリシャ語由来です. そもそもラテン系の語彙に ph を含む単語はほとんどないそうで, 上で紹介しているように ph を含んでいるのはギリシャ語由来のことが多いのです. Phenomenon で典型的なように変な活用をすることも多く, 見抜きやすいでしょう.

depend
  • 動詞: (depend on で) ---に頼る, 依存する
    • depends, depended, depending
  • Wiktionary
  • Etymonline

ラテン語の dependeō に由来していて, これは dē- + pendeō (to hang) に分解できます. この dē- は of, from の意味で, pendeō はペンダント (pendant) の pend です. 何かにぶらさがることはその何かへの依存を表すと考えたのでしょう. また de はフランス語にもあり, 英語でいう of の意味を持つことも注意しておきます.

使うときはたいてい depend on の形です. 対応する前置詞が on であることも覚えておく必要があります.

relative

Wiktionary によると後期ラテン語の relātīvus, ラテン語の referō (to carry back, to ascribe) の完了受動分詞 relātus に由来します. これは re- (again) + ferō (to bear or carry) に分解できます. この ferō は ferry (フェリー) の語源です.

  • TODO transfer, offer

この fer に関して, 例えば堕天使のルシファー (Lucifer) の fer も同じです. ちなみに Lucifer の luci は lux, luminus など光の意味です. 光を奪う存在が堕天使という意味なのです.

相対性理論がまさに theory of relativity であり, 相対性理論の名前の由来になる基本的な語彙なので何度も出てきます.

Etymonline によると後期ラテン語 relativus (having reference or relation) があり, これはラテン語の relatus から来ていて, さらに referre (to refer) の過去分詞という由来があります. 特に "person in the same family" という意味があります.

whereas

もちろん where +‎ as (that) のように分解できます.

TODO なぜこれが逆接のように使われるようになったのか?

customary

名詞 custom から派生した形容詞です. 詳しくは custom を参照してください.

# custom

Wiktionary によると, 俗ラテン語 (Vulgar Latin) の cōnsuētūmen or costūmen, そしてラテン語の cōnsuētūdō の対格単数の cōnsuētūdinem (custom, habit), 同じくラテン語の cōnsuēscō (accustom, habituate) に由来します. 単語 cōnsuēscō は con- (with) + suēscō (become used or accustomed) に分解でき, これは sueō (I am accustomed) の起動形 (inchoative form) や suus (one's own, his own) に由来します.

またコスチュームとしてほぼ日本語化されている costume の二重語でもあります. Costume はフランス語の costume の借用語で, フランス語はイタリア語の costuma, そして究極的にはラテン語の consuetudo, consuetudinem (custom) に由来します.

view

古フランス語の veue やイタリア語の vedere に由来します. 古フランス語の veue は現代フランス語 voir の過去分詞の女性単数形 vue にあたります. イタリア語の vedere はラテン語 vidēre (videō の現在能動形の原形, present active infinitive) で印欧祖語の語根 *weyd- に由来します. Videō の見た目の通りビデオと関係があります.

draw

draw tragen d - t

Wiktionary によるとゲルマン祖語 draganą や印欧祖語 dʰregʰ- (to draw, pull) に由来します. ドイツ語の tragen (to carry), サンスクリットの ध्रजस् (dhrájas, gliding course or motion) と同根です. Drag の二重語でもあります.

between

Wiktionary によると be- +‎ twain に対応するゲルマン祖語の bi- (be-) + twihnaz (two each) に由来します.

case

まず場合の方から語源を確認しましょう. Wiktionary によると古フランス語の cas (an event), ラテン語の cado (to fall, to drop) の完了受動分詞 (perfect passive participle) にあたる casus (a falling, a fall; accident, event, occurrence; occasion, opportunity; noun case) に由来します.

日本語のケースにはカードケースのように「収納箱」のような意味もあり, もちろん英語にもその意味があります. Wiktionary によるとこちらの語源はラテン語の capsa (box, bookcase) で これはさらに capiō (to take, seize, hold) に由来します. また cash の二重語でもあります.

cf. school 学校, 魚の群れ

body

中学生どころか小学生でも「身体」という意味を知っているでしょう. 物理では「物体」の意味で使われます. このように専門用語として理解しなければいけない単語はたくさんあります. もちろん日本語でもエネルギーやポテンシャルのように専門用語としての意味を本歌に取りつつそれとはずれた意味で日常語として使われている言葉があります. まずはそういう概念・言葉があると知るのが大事です.

対応する印欧祖語は bʰewdʰ- でこれは "to be awake, observe" という意味があります. 観察対象のような意味から物体に派生していったのでしょう.

他の意味について少し触れておきます. Etymonline では 1660 年代から "main portion of a document" としての用例があると紹介されています. これは IT 系でもよく使われます. もしあなたが HTML を知っているなら, この中にも head と body というセクションがあるのを知っているでしょう. この body がまさに「ドキュメントの主要部」の意味です.

ちなみに上の portion はポーションと読みます. あなたは「ポーション」と聞くとゲームのファイナルファンタジーで出てくる回復アイテムとしてのポーションを想像するかもしれません. それは potion で別物です. 特に Wiktionary によると, ラテン語の potio (飲み物) に由来していて, ラテン語自体がさらにギリシャ語の poton に由来します.

以降第 4 文の単語: 第 3 文と間違った
物理の専門用語
  • magnet, motion, conductor, rest, electric, field
  • motion: move の名詞, ve を除いて -tion をつけるという異様な変形.
neighbourhood

これは neighbour +‎ -hood に分解できます. Neighbour はゲルマン祖語の nēhwagabūrô (neighbour) に由来し, nigh +‎ bower に分解できます. Nigh は near と同根であり, bower はゲルマン祖語の būraz (room, abode) に由来し, ドイツ語の Bauer (birdcage) と同根です.

一方 -hood はゲルマン祖語の *haiduz に由来し, ドイツ語の -heit と同根です.

certain: 一定の
  • 形容詞: 確実な, 一定の
  • Wiktionary
  • Etymonline
  • Collins
    • being sure
    • If you are certain about something, you firmly believe it is true and have no doubt about it.
    • If you say that something is certain to happen, you mean that it will definitely happen.
    • If you say that something is certain, you firmly believe that it is true, or have definite knowledge about it.

Wiktionary によると古フランス語の certain の借用語であり, 俗ラテン語の unattested form である *certānus, ラテン語の extended form である certus ("fixed, resolved, certain"), 同じ語源で cernere ("to separate, perceive, decide") の過去分詞 cretus に由来します.

読解編で見るように第 4 文で with a certain definite energy という形で出てきます. ここで問題なのは certain と definite の使い分けです. この 2 語は実際に同じような意味でどう使い分けているかが問題になります. いくつか調べてみた結果を引用しておきます.

certain: of a specific but unspecified character, quantity, or degree. "The house has a certain charm." Using "definite charm" in this case simply doesn't fit.

definite: free of all ambiguity, uncertainty, or obscurity. "We need a definite answer." Using "certain answer" in this case wouldn't mean the same thing.

上の with a certain definite energy については次のように使い分けているのでしょう.

  • certain: どのくらいかはわからないがエネルギーが発生することは確実である.
  • definite: 物理的な条件によって発生するエネルギーの量は確定している.

Definite の意味については definite, 特に動詞の define の項も参考にしてください. Define の意味は「定義する」であり, 曖昧さなく範囲を明確にするイメージがあります. 特に制限をかけるというニュアンスもあります. これを前提にすると語のイメージがもう少しはっきりするでしょう.

definite: 決まった
  • 形容詞: 確かな, 疑いのない
  • Wiktionary
  • Etymonline
  • Collins
    • If something such as a decision or an arrangement is definite, it is firm and clear, and unlikely to be changed.
    • Definite evidence or information is true, rather than being someone's opinion or guess.
    • You use definite to emphasize the strength of your opinion or belief.
    • Someone who is definite behaves or talks in a firm, confident way.
    • A definite shape or colour is clear and noticeable.

Wiktionary によるとラテン語の dēfīniō の過去分詞 dēfīnītus に由来し, 英語の define とも関係があります. 単語 define の記述も参考にしてください.

読解編 (論文) の第 4 文には with a certain definite energy という句が出てきます. ここで certain と definite の使い分けが問題になります. Certain の項に解説をつけておいたのでそちらも参考にしてください.

energy: エネルギー

中フランス語の énergie, 後期ラテン語の energia, 古ギリシャ語の enérgeia (activity), energós (active) に由来します. この energós は en (in) + érgon (work) と分解できます. 物理での意味はトーマス-ヤングの 1802 年の講義に由来します.

ギリシャ語 érgon はヘレニック祖語 wérgon, 印欧祖語 wérǵom に由来します. これは古英語 weorc (English work) と同根です. ここまで来ると energy が work と同根であるとわかります. 物理の専門用語としても仕事 (work) とエネルギー (energy) の関係は重要ですが, 語源の上でもきちんと関連しているのです.

producing $\gets$ produce: 生み出す

ラテン語 prōdūcō ("to lead forth") の借用語です. これは prō- ("forth, forward") + dūcō ("to lead, bring") と分解できます.

current: 電流 (物理の専門用語)
  • 名詞: (物理) 電流, (数学: 超関数係数の微分形式) カレント, 流れ, 傾向, 風潮
    • currents
  • 形容詞: 今の, 現在の
  • Wiktionary
  • Etymonline

Wiktionary によると古フランス語 courre (to run) の現在分詞 curant (courant) の借用語であり, ラテン語 currō (I run) の現在能動原形 currere (to run, move quickly) に由来します. Courant の二重語でもあります.

意味としては「いままさに流れているもの (走っているもの)」です. ここから貨幣 (currency: 金は世の回りもの) と言った意味も出てきます. 語源, そして語のコアミーミングには常に注意を払うようにすると, 急がば回れで語彙力と言語直観が磨かれます.

流れを表す英単語では flow も物理・数学でよく出てきます. こちらはゲルマン祖語の flōaną (to flow), 印欧祖語の plōw- や plew- (to fly, flow, run) に由来します. Wiktionary には float と比較するよう指示があり, そちらを眺めてみると float はゲルマン祖語の flutōną (to float), 印欧祖語の plewd-, plew- (to float, swim, fly) に由来します. 古ギリシャ語の pléō, ラテン語の plaustrum (wagon, cart) とも同根です.

places $\gets$ place: 場所

Wiktionary によるとラテン語の platea (plaza, wide street), 古ギリシャ語の plateîa に由来し, ギリシャ語については plateîa hodós (broad way) の略語です. 他には印欧祖語では plat- (to spread) に由来し, これは pleh₂- (flat) の extended form です.

単語 plazapiazza の二重語でもあります. 前者の plaza はスペイン語の plaza (town-square or central place of gathering) にも由来を持ちます. 後者の piazza はイタリア語の piazza に由来します.

スペルを見ると pizza, つまりピザとの関係もありそうですが, Wiktionary によると pizza の語源はまだ確かなことがわかっていないようです. 一応中世ギリシャ語 (Byzantine Greek) の pítta (cake, pie), 古ギリシャ語 píssa (pitch), ラテン語の pinsō (I beat, pound) に由来するのではないかとは書いてあります.

where: 関係代名詞

Wiktionary によるとゲルマン祖語 hwar (where), 印欧祖語の疑問代名詞 kʷo- に由来します. ドイツ語の wo (where) と同根です. フランス語では で, これはラテン語の ubi (where) に由来します.

この ubi は ubiquitous の ubi で, 一昔前にユビキタス社会と言っていたその ubiquitous です. ユビキタス社会は次のような意味です.

  • インターネットなどの情報ネットワークにいつでもどこからでもアクセスできる環境を指し, ユビキタスが普及すると場所にとらわれない働き方や娯楽が実現出来るようになる.

疑問詞はフランス語・ラテン語由来ではなくゲルマン語由来であり, 疑問詞のような基本的なゲルマン語由来であることは英語がゲルマン系の語彙である事情を反映しています.

parts $\gets$ part: 部分

Wiktionary によるとラテン語の pars (piece, portion, share, side, party, faction, role, character, lot, fate, task, lesson, part, member) の対格である partem, 印欧祖語の par-, per- (to cut, bore) に由来します. ラテン語の portio (a portion, part), parare (to make ready, prepare) にも似ています.

situate: 位置する

Wiktionary によると後期ラテン語の situātus に由来します. これは中世ラテン語の situō (to locate, place) の過去分詞であり, 同じくラテン語の situs (a site) に由来します.

数学で現在トポロジー (位相幾何) と呼ばれる分野は, フランス人数学者のポアンカレの論文 Analysis Situs に由来して実際にこのように呼ばれていました. 数学史では有名な話です.

第008回 第4文の読解

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 第 4 文の読解

進捗

  • 第 4 文の解説が終わり.
  • 次回: 第 4 文の文法の記述, 単語.

TODO

in motion, at rest の前置詞を大事に. For の使い分け: 前置詞のときは後ろに名詞が来る, 接続詞なら文みたいな話も書いておく. in the neighbourhood の the が面白い. a energy などの冠詞はもっときちんと注目. the parts とならない理由を追記.

今日のメモ

内容: コンテンツ (案) からの転記

備忘録
  • 各文の読解と文法解説をもっと綺麗にわける.
    • いまの「文法解説」は完全に読解に回してよさそう.
    • 文法は本当に「文法」にしたい.
  • どうわけるといいかを検討しつつ進める.
第 4 文
en.4

For if the magnet is in motion and the conductor at rest, there arises in the neighbourhood of the magnet an electric field with a certain definite energy, producing a current at the places where parts of the conductor are situated.

de.4

Bewegt sich nämlich der Magnet und ruht der Leiter, so entsteht in der Umgebung des Magneten ein elektrisches Feld von gewissem Energiewerte, welches an den Orten, wo sich Teile des Leiters befinden, einen Strom erzeugt.

fr.4

(if and only if = si et seulement si)

Si par exemple l'aimant se déplace et que le conducteur est au repos, alors un champ électrique d'une certaine énergie apparaît à proximité de l'aimant, ce qui engendre un courant dans les parties du champ où se trouve un conducteur.

courant courir trouver = find

jp.4

というのも, もし磁石が運動状態にあって導体が静止しているとすると, 磁石の近傍にはある決まったエネルギーを持った電場が発生し, 導体の各点で電流が生じる.

解説
英語
# For if the magnet is in motion and the conductor at rest,

訳文では文頭の for を「---というのも」という形で訳しています. ここの for は接続詞です. For とみたら前置詞と安易に判断してはいけません. こういう基本的な単語こそ英英辞典でじっくり調べてみましょう. 前置詞はコアミーニングをもとに多彩な意味を持つので, 前置詞の意味・用法を調べるだけでも勉強になります. ここの for は文章解釈上, 第 3 文の内容を詳しく説明していて, for を文頭に置いてそれを明示しています.

引き続き magnet は磁石, conductor は導体で, やはり冠詞は the です. 磁石が動いている (in motion) で, 導体が止まっている (at rest) 状態を仮定しています. 第 3 文で相対的な運動状態に依存すると言っているので, 実際に磁石を動かした状況を考えています.

Motion に対して前置詞 in, rest に対して前置詞 at を使っています. ふつう rest は休憩といった意味で使われます. 物理で静止 (状態) を表すのはこのふだんの意味と同じです. ここは語と語の相性 (コロケーション) と思っても構いませんし, 熟語と思ってもいいでしょう.

# there arises in the neighbourhood of the magnet an electric field with a certain definite energy,

there is a room Is there you are --- Are you ---?

There arises はいわゆる there is 構文です. このように be 動詞の代わりに違う動詞を使うことがあります. 特に数学では is の代わりに there exists をよく使います. There is の is は存在するという意味で使われているので, それを適切な言葉で明確にしているのです. つまり, ここでは単に存在するだけではなく, 生み出された結果として存在するという意味で arise が使われています. 特に arise を「発生する」などと訳せばいいでしょう.

Neighbourhood はふつうの意味では「近所」のような意味で, そこから「周囲」くらいの感覚で訳すといいでしょう. ここでは数学的な言葉遣いである「近傍」と訳してみました. In the neighbourhood of the magnet で「磁石のまわり」で, there is に対応して存在する場所を指定しています.

An electric field with a certain definite energy は全体として「ある一定のエネルギーを持つ電場」と訳します. Electric は「電気の」という形容詞で, field は物理の専門用語として「場」と訳し, 2 つでまとめて「電場」です. 高校の教科書だと電界と呼ばれているかもしれません. 実はこれは工学で使われる呼び方で, 物理では電場と呼びます. そして with 以下は電場がどんな状態にあるかを説明しています.

Certain と definite は辞書を見ると同じような意味が出てきます. 実際英語で考えても意味の重なりがあります. ここではあえて 2 語使われているので, 意味を重ねずに使い分けているはずです. 例えばそれぞれの意味を次のように考えればいいでしょう.

  • certain: どのくらいかはわからないがエネルギーが発生する (with) ことは確実である.
  • definite: 物理的な条件によって発生するエネルギーの量は確定している.

Definite は certain で存在が示唆された量の具体的な値について言及しているのです. Definite は define と関係あることに注意すれば, 「状況を限定・制限すれば決まる」という意味で捉えるべきです. 単語編の certain と definite/define も確認してみてください.

Energy はいわゆるエネルギーです. エネルギーはドイツ語読みで英語読みはエナジーです. 2019 年現在エナジードリンクという飲み物がありますが, そのエナジーです.

# producing a current at the places

Producing ではじまる副詞句の説明に入ります. もちろん現在分詞による分詞構文です.

Current は電流で produce a current で「電流を発生させる」です. Places は「場所」で, at the places で電流が発生する場所を説明していて, 特にどんな場所なのか where による関係副詞で詳しく説明されています.

# where parts of the conductor are situated

Parts are situated が本体で, 「部分が置かれている場所に電流が発生している」と訳します.

(TODO parts に the がつかないのは何故?) the parts にしてしまうと導体の特定部位という意味になってしまう.

Situate は日本語化したシチュエーション (situation) のもとになった動詞です. Situation は状況くらいの意味と思えば「置かれた状態 = 状況」と理解すればよく, Be situated は「置かれている = ---な状況にある」とでも訳せばいいでしょう.

また Parts が意味不明なので of the conductor という説明が入っています. 全体として「導体の各部位」とでも訳せます.

文構造・文法事項
英語
# 全体の文構造

全体の構造は次のようになっています.

  • (接続詞) For
  • there arises an electric field
    • with a certain definite energy
    • in the neighbourhood of the magnet
    • producing a current at the places
      • where parts of the conductor are situated
    • if the magnet is in motion and the conductor at rest

文頭の For は接続詞で, 前文を受けて「さきほどこう書いた理由は---」という意味で使われています. If の条件節があった上で there arise (there is) 構文があり, ある条件下で何かが出てくると言っています. ", producing ---" は分詞構文で状況を補足的に説明しています. その分詞構文の中にさらに where ではじまる関係代名詞があり, places を修飾しています.

初出なので electric field と energy には冠詞 a がついています. Current も可算名詞で冠詞がつくのは面白い感覚のように思います. 実際 weblio には電流の意味だと一般には不可算名詞であり, a direct current (直流) のように種類を表すときには可算名詞として扱うとあるので, 名詞の可算・非可算, そして冠詞の有無には英語の独特の感覚があります.

(TODO energy はふつう不可算名詞なのに冠詞があるのはどういう意図か?)

さらに副詞句として文全体に in the neighbourhood of the magnet がかかります. 何の neighbourhood (どこに電場ができるのか) かを示すために of the magnet が使われています.

口語英語でこんな複雑な文章はまず出てきません. 理解できないからです. 文章の英語特有の複雑な構文です. 中身を詳しく見ていきましょう.

# 主節: For there arises an electric field with a certain definite energy

There arises --- が主節です. 動詞はもちろん arises で主語は electric field です. この field を with a certain definite energy が修飾しています. タイトルでは省略していますが, electric field が存在する場所を指定するために in the neighbourhood of the magnet があります.

念のためフルの文章も載せておきましょう.

  • For there arises in the neighbourhood of the magnet an electric field with a certain definite energy

Field は可算名詞なので冠詞 a がつきます. 電場の強さを測定することはあっても電場を数えるという感覚は日本語にないと思うので, 面白い感覚ではないでしょうか. ただ, 電場の強さは電気力線の密度であり, 単位面積あたりで規格化しているとはいえ, 電場の強さの測定は電気力線の本数を数えることにあたります. こう思うと可算名詞で電場を捉える気分もわからないでもありません.

# producing a current at the places

この副詞句は分詞構文で意味上の主語は electric field です. 主語が何か判定する方法はいくつかありますが, 物理法則として電場の変化が電流 (いわゆる変位電流) を生むので, そこからも主語が判断できることをコメントしておきましょう.

(TODO 文法的に主語を判断するにはどうすればいいか?)

初出の current は冠詞 a がついています. At the places の the は where 節の内部の情報によって既知情報であるとわかっています.

(TODO the places で places がなぜ複数か?)

# where parts of the conductor are situated

Where 節は関係副詞節として places を修飾していて, 中身は受動態です. Where なので先行詞は場所であり, ここでは素直に直前の places が先行詞だと思えばいいでしょう.

(TODO parts になぜ冠詞がつかない?)

# if the magnet is in motion and the conductor at rest
  • if the magnet is in motion and the conductor at rest

If 節の中身は単純な SV の第 1 文型が and で 2 つ並んでいます. 読解のポイントを 1 つ挙げるとすると, the conductor at rest では動詞 is が省略されていて, 正確には and the conductor is at rest です.

くどくはなりますが, magnet と conductor には冠詞 the がついていることも注意しておきます.

第009回 第4文の文法・単語

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 第 4 文の文法・単語
  • 文法解説は本文にまとめたので

進捗

TODO

今日のメモ

内容: コンテンツ (案) からの転記

rest

Wiktionary によるとゲルマン祖語の rastijō (rest), 印欧祖語の ros-, res-, erH- (rest) に由来します.

neighbourhood

これは neighbour +‎ -hood に分解できます. Neighbour はゲルマン祖語の nēhwagabūrô (neighbour) に由来し, nigh +‎ bower に分解できます. Nigh は near と同根であり, bower はゲルマン祖語の būraz (room, abode) に由来し, ドイツ語の Bauer (birdcage) と同根です.

一方 -hood はゲルマン祖語の *haiduz に由来し, ドイツ語の -heit と同根です.

certain
  • 形容詞: 確実な, 一定の
  • Wiktionary
  • Etymonline
  • Collins
  • being sure
  • If you are certain about something, you firmly believe it is true and have no doubt about it.
  • If you say that something is certain to happen, you mean that it will definitely happen.
  • If you say that something is certain, you firmly believe that it is true, or have definite knowledge about it.

Wiktionary によると古フランス語の certain の借用語であり, 俗ラテン語の unattested form である *certānus, ラテン語の extended form である certus ("fixed, resolved, certain"), 同じ語源で cernere ("to separate, perceive, decide") の過去分詞 cretus に由来します.

読解編で見るように第 4 文で with a certain definite energy という形で出てきます. ここで問題なのは certain と definite の使い分けです. この 2 語は実際に同じような意味でどう使い分けているかが問題になります. いくつか調べてみた結果を引用しておきます.

certain: of a specific but unspecified character, quantity, or degree. "The house has a certain charm." Using "definite charm" in this case simply doesn't fit.

definite: free of all ambiguity, uncertainty, or obscurity. "We need a definite answer." Using "certain answer" in this case wouldn't mean the same thing.

上の with a certain definite energy については次のように使い分けているのでしょう.

  • certain: どのくらいかはわからないがエネルギーが発生することは確実である.
  • definite: 物理的な条件によって発生するエネルギーの量は確定している.

Definite の意味については definite, 特に動詞の define の項も参考にしてください. Define の意味は「定義する」であり, 曖昧さなく範囲を明確にするイメージがあります. 特に制限をかけるというニュアンスもあります. これを前提にすると語のイメージがもう少しはっきりするでしょう.

definite
  • 形容詞: 確かな, 疑いのない
  • Wiktionary
  • Etymonline
  • Collins
  • If something such as a decision or an arrangement is definite, it is firm and clear, and unlikely to be changed.
  • Definite evidence or information is true, rather than being someone's opinion or guess.
  • You use definite to emphasize the strength of your opinion or belief.
  • Someone who is definite behaves or talks in a firm, confident way.
  • A definite shape or colour is clear and noticeable.

Wiktionary によるとラテン語の dēfīniō の過去分詞 dēfīnītus に由来し, 英語の define とも関係があります. 単語 define の記述も参考にしてください.

読解編 (論文) の第 4 文には with a certain definite energy という句が出てきます. ここで certain と definite の使い分けが問題になります. Certain の項に解説をつけておいたのでそちらも参考にしてください.

energy

中フランス語の énergie, 後期ラテン語の energia, 古ギリシャ語の enérgeia (activity), energós (active) に由来します. この energós は en (in) + érgon (work) と分解できます. 物理での意味はトーマス-ヤングの 1802 年の講義に由来します.

ギリシャ語 érgon はヘレニック祖語 wérgon, 印欧祖語 wérǵom に由来します. これは古英語 weorc (English work) と同根です. ここまで来ると energy が work と同根であるとわかります. 物理の専門用語としても仕事 (work) とエネルギー (energy) の関係は重要ですが, 語源の上でもきちんと関連しているのです.

produce

ラテン語 prōdūcō ("to lead forth") の借用語です. これは prō- ("forth, forward") + dūcō ("to lead, bring") と分解できます.

current
  • 名詞: (物理) 電流, (数学: 超関数係数の微分形式) カレント, 流れ, 傾向, 風潮
  • currents
  • 形容詞: 今の, 現在の
  • Wiktionary
  • Etymonline

Wiktionary によると古フランス語 courre (to run) の現在分詞 curant (courant) の借用語であり, ラテン語 currō (I run) の現在能動原形 currere (to run, move quickly) に由来します. Courant の二重語でもあります.

意味としては「いままさに流れているもの (走っているもの)」です. ここから貨幣 (currency: 金は世の回りもの) と言った意味も出てきます. 語源, そして語のコアミーミングには常に注意を払うようにすると, 急がば回れで語彙力と言語直観が磨かれます.

流れを表す英単語では flow も物理・数学でよく出てきます. こちらはゲルマン祖語の flōaną (to flow), 印欧祖語の plōw- や plew- (to fly, flow, run) に由来します. Wiktionary には float と比較するよう指示があり, そちらを眺めてみると float はゲルマン祖語の flutōną (to float), 印欧祖語の plewd-, plew- (to float, swim, fly) に由来します. 古ギリシャ語の pléō, ラテン語の plaustrum (wagon, cart) とも同根です.

昔アーマードコアというゲームがあり, これにフロートという脚部パーツがありました. まさに常に地面から浮遊した状態で移動するパーツです. これはラテン語の wagon, cart との語感を持った言葉です.

流れと言えば物理では流体力学という分野があり, これは英語で fluid dynamics と言います. この fluid は見ての通り flow と形が似ています.

place

Wiktionary によるとラテン語の platea (plaza, wide street), 古ギリシャ語の plateîa に由来し, ギリシャ語については plateîa hodós (broad way) の略語です. 他には印欧祖語では plat- (to spread) に由来し, これは pleh₂- (flat) の extended form です.

単語 plazapiazza の二重語でもあります. 前者の plaza はスペイン語の plaza (town-square or central place of gathering) にも由来を持ちます. 後者の piazza はイタリア語の piazza に由来します. ここで見るとわかるように, 英語での pl はイタリア語では pi に変わる一般的な法則があります. 英語の plate はイタリア語で piatte です.

スペルを見ると pizza, つまりピザとの関係もありそうですが, Wiktionary によると pizza の語源はまだ確かなことがわかっていないようです. 一応中世ギリシャ語 (Byzantine Greek) の pítta (cake, pie), 古ギリシャ語 píssa (pitch), ラテン語の pinsō (I beat, pound) に由来するのではないかとは書いてあります.

situate

Wiktionary によると後期ラテン語の situātus に由来します. これは中世ラテン語の situō (to locate, place) の過去分詞であり, 同じくラテン語の situs (a site) に由来します.

数学で現在トポロジー (位相幾何) と呼ばれる分野は, フランス人数学者のポアンカレの論文 Analysis Situs に由来して実際にこのように呼ばれていました. 数学史では有名な話です.

第010回 第5文読解

まず確認

  • 録画はじめた?
  • 音は大丈夫?
  • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
  • YouTube へのリンクのタイトル・URL
  • 自サイト記事へのリンク URL
  • ブログに記事を上げる
  • URL スラッグは「studygroup-for-relativity」
  • Twitter で共有
  • YouTube のタイトルと説明欄
  • タイトルは md・ブログ のタイトル
  • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 第 5 文の読解

進捗

  • 第 5-2 文の "In the conductor, however, we find an electromotive force" まで

TODO

  • stationary の類語の記録

今日のメモ

内容: コンテンツ (案) からの転記

英文と訳

ドイツ語原文 (de.5) がこの英訳では 2 つの文にわかれています. 原文に合わせて 1 つにまとめました. 一般に和訳するときも難しければ無理に 1 文で訳さず, 2 文・3 文にわけましょう.

# en.5

But if the magnet is stationary and the conductor in motion, no electric field arises in the neighbourhood of the magnet. In the conductor, however, we find an electromotive force, to which in itself there is no corresponding energy, but which gives rise ---assuming equality of relative motion in the two cases discussed--- to electric currents of the same path and intensity as those produced by the electric forces in the former case.

# de.5

Ruht aber der Magnet und bewegt sich der Leiter, so entsteht in der Umgebung des Magneten kein elektrisches Feld, dagegen im Leiter eine elektromotorische Kraft, welcher an sich keine Energie entspricht, die aber --- Gleichheit der Relativbewegung bei den beiden ins Auge gefassen Fällen vorausgesetzt --- zu elektrischen Strömen von derselben Größe und demselben Verlaufe Veranlassung gibt, wie im ersten Falle die elektrischen Kräfte.

# fr.5

Mais si l'aimant est au repos et le conducteur mis en mouvement, aucun champ électrique n'apparaît à proximité de l'aimant, mais une force électromotrice qui ne correspond à aucune énergie en soi est produite dans le conducteur. Elle provoque cependant --- dans l'hypothèse que le mouvement relatif dans les deux cas est le même --- l'apparition d'un courant électrique de même intensité et de même direction que la force électrique, comme la force électrique dans le premier cas.

# jp.5

しかし, もし磁石が静止していて導体が運動状態にあるなら, 磁石の近傍に電場は発生しない. 一方, 導体中では起電力が発生する. この起電力にはそれ自身対応するエネルギーが存在しないが, いま議論されている 2 つの場合の相対的な運動の等価性を仮定すると, この起電力は先のケースでの電気力によって発生する強さ・経路と同じ強さ・経路の電流を発生させる.

解説
# 英語
## 第 1 文
### 構文

まずは構文を調べます.

  • no electric field arises
  • in the neighbourhood of the magnet
  • (But) if the magnet is stationary
  • and (if) the conductor (is) in motion

英文解釈上, まず文頭の but に注目しましょう. 前の文と反対のことを言っているサインです. 文と文のつながりを表す接続詞は丁寧に見てください. 先程は磁石が動いていて導体が静止していました. 逆接なので今度はこれが反転しているはずです. そう思って読解を進めます.

構文としては if の条件節がカンマまで続いてから主節がはじまります. この大きな構造を見てから細部にうつります.

### But no electric field arises in the neighbourhood of the magnet

最初に言った通り文の解釈上 but にまず意識を向けましょう.

主節は第 1 文型 (SV) です. どこで arise しているか, つまり存在している場所を表すために in --- the magnet の句があります. 最初の時点で field が可算扱いなのか不可算扱いなのかは判断が難しいものの, どちらにせよ動詞 arises に三単現の s がついていて単数扱いなこと, no field の no は冠詞のように働くことにも注意してください. No one can say that --- のような表現も合わせておさえるとイメージしやすいはずです.

No electric field arises は杓子定規に訳すと「ない電場が発生する」です. 対応する日本語・日本語訳が不自然であったとしても英語としては自然な表現です. Arise は rise を含むので「立ち上がる」といった意味で, 「電場が立ち上がる」のは「電場が発生する」と訳せばいいでしょう. まとめると日本語としては「電場が発生しない」と訳します. No+名詞は否定的な内容をすっきり簡潔に書けるとても便利な英語表現なので, ぜひ覚えて使いこなしてください.

もちろんどこで電場が発生しないのかが気になるので, 補足情報として in 以下で電場がどこで発生しないのかを説明しています. Magnet はともかく, neighbourhood は「周囲」です. 訳では数学用語を使って近傍をあてています.

### if the magnet is stationary and the conductor in motion,

冒頭の if は条件を表す副詞節を導きます. If の副詞節の中を見てみましょう. 第 4 文と違い「磁石が静止していて導体が動いている」状況であると言っています.

If の中に第 2 文型 (SVC) が and で並んで 2 つあります. 日本語でもよくあるように並列構造があると単語や表現が省略されることがあります. この and の範囲は if の中に 2 つある, つまり if (A and B) と思っても構いませんし, if 文自体が 2 つ並んでいる, つまり (if A) and (if B) と思っても構いません. さらに the conductor in motion は本来 the conductor is in motion で, be 動詞が省略されています.

単語としては stationary が初めて出て来ました. これは相対性理論の中でも重要で覚えるべき単語です. しかし知らなくても意味が推測できなければいけません. 何故かというと but で前の文と比較されているからです. 文章の流れとして現象は相対的な運動に依存するべきだと言っていて, 前の文では磁石が運動状態にあったのだから, 今度は磁石が静止しているはずです. だから stationary は「静止状態にある」と訳すべきです. 第 4 文では at rest が対応します.

他に理工系頻出語として出てくる stationary の訳は「定常的な」です. Stationary state で「定常状態」と訳します. 特に空間的な変化があっても時間的な変化がない状態を定常状態と呼びます. 適当な意味で時空間的に変化がない系は平衡状態 (equilibrium state) と呼びます.

static の話, station. statue. stay.

## 第 2 文
### 構文

まずは全体の構造を掴みます.

  • we find an electromotive force
  • , to which in itself there is no corresponding energy
  • , but which gives rise to electric currents
    • of the same path and intensity
    • as those produced by the electric forces in the former case
    • ---assuming equality of relative motion in the two cases discussed---
  • In the conductor
  • however

主節は we find an electromotive force であとは全て修飾です. ダッシュで囲まれた挿入もあれば関係代名詞の非制限用法もあり, 単なる長さに留まらない難しさがあります.

この文に限らず, 大きな構造を掴む上では接続詞, または意味上接続詞の働きをする単語には注意しましょう. ここでは冒頭の however と but which の but です. 逆接の接続詞なので前の話と何かが反転しています. 論文や教科書のような説得的な文章を読むときは接続詞を正しく読み取ることが大事です.

そして修飾構造の本丸も ", to which" と ", but which" です.

TODO ここの but which は非制限用法で問題ない?

どちらも関係代名詞の非制限用法です. But は等位接続詞で同じ概念を並べていて, いまは非制限用法の関係代名詞を意味としては逆接で並べています. この 2 つの関係代名詞の先行詞は共通していると見ていいでしょう. 前者の ", to which" は in itself という修飾があり, 後者の ", but which" は gives で入っているので, それぞれ単数の名詞に対する修飾だと判断します. つまり we ではなく an electromotive force を修飾しています. 単複の情報から文法的に機械的に決まっていることを見抜けるかが大事です. あなたが物理をわかっているなら文脈からもわかります.

さらに electromotive force には an と不定冠詞がついていることからよくわかっていない, つまりまだきちんと説明していない言葉であり, 補足説明がなければならないと思えるかどうかも大事なポイントです.

全体的な構造の分析はこのくらいでいいでしょう. 以下, 細かく文を見ます.

### In the conductor, however, we find an electromotive force

However は逆接の意味の副詞です. 接続詞ではないことを念のため注意しておきます.

The conductor は導体でずっと言及されている対象であることを表す定冠詞がついています. An electromotive force は起電力で, 不定冠詞がついていることに注意しましょう. ここでは抽象的な意味を持つ不可算名詞ではなく, 物理として具体的な起電力を指しているのです. 概念として初めて出てくるのであとに補足説明があるはずです. ちなみに後半の the electric forces は電気力と訳すべきでしょうが, この文ではこの冒頭の語と合わせて起電力と訳した方が適切です.

主語として we を使っていることにも注意します. 人文・社会学系だと解釈がわかれることも多く, we を使うと「we というのは誰だ」「私はそんなふうに思っていない」と突っ込まれると聞いたことがあります. 理工系でも議論がある部分に we を使うと同じことが起きることはあります. しかし自然の振る舞いを見ている物理では誰が見ても・考えてもそうなるべき見解を出す必要があるとされていて, we がよく出てくる傾向があります.

royal we

動詞 find は英作文でも役に立つ単語です. 読解から話がずれるので補足でコメントしてあります.

### , to which in itself there is no corresponding energy

第 4 文の「磁石の周囲にある量のエネルギーを持つ電場が発生する」と対応する表現で, 先行詞は素直に an force と思えばいいでしょう. 文法としては前にカンマがあるので関係代名詞の非制限用法です. 先行詞と主節までセットで訳せば「対応するエネルギーが存在しない起電力を見つける」です.

ここで in itself は修飾の副詞句で, メインの構造は there is no corresponding energy で第 1 文型 SV です. To which は corresponding force to something の something が関係代名詞が修飾する名詞として抜かれて, to が which と結びついた形になっています. 物理的にエネルギーに対応する概念と結びつけるたいので, やはり an electromotive force を修飾していると見るべきです.

To which の to とセットにした correspond to something という熟語を覚えておきましょう. 「something に対応する」という意味です.

### , but which gives rise to electric currents of the same path and intensity

全体としては長い節です. 挿入の "--- assuming ... discussed---" を無視して構造を見ます. 訳は「同じ経路と強さを持つ電流を与える」でいいでしょう. 英語として詳しく見ていきます.

逆接の接続詞 but がある上に再び関係代名詞の非制限用法です. どれだけ複雑な構文なのかと途方に暮れますが仕方ありません.

ここでは (an electromotive force) gives rise to electric currents がメインの構造です. 続く要素は electric currents を修飾しています. 続く構造を見抜く上で大事なのは same --- as の部分です. As 以降の分析は後回しにして, 表題部分の文を見ましょう.

まず electric currents of the same path and intensity でいったん切れます. ここで何が same なのか? という疑問が湧いてきます. 実はこれを as those が受けて説明しているのです. 熟語表現として same A as B があり, これを使っています.

動詞の gives rise to something は熟語で, 「発生させる, 生み出す」といった意味で produce と同じです. 三単現の s があるので主語は単数のはずです. 接続詞 but は関係代名詞の並列を指していると見るべきでしょうから, ここは素直に a force が先行詞だと見ていいはずです. 物理としてもエネルギーが電流を生むというより, 起電力が電流を生むと言った方が自然です.

目的語にあたる electric currents は電流です. 定冠詞が the がつかず無冠詞の複数形になっていることに注意しましょう. 単に current だけでも電流を表します. Current はラテン語で to run, move quickly を意味する currere を語源にしていて, 動くモノという意味があります. 深掘りすると面白い単語なので単語編で詳しく眺めると楽しいでしょう.

Path は物理だと「経路」という訳を覚えておくと便利です. 例えばファインマンの経路積分が path integral です: もちろんファインマンはノーベル賞を取った人です. Intensity は「強さ」です. これも理工系ではよく出てくる単語で覚えておくべきでしょう.

最後に the same と言われても何とどう同じなのかが気になります. 本来は same A as B という熟語で理解すべき部分なので, この部分を次に調べてみましょう.

### as those produced by the electric forces in the former case

The same path and intensity as those で, the same A as B の as B 部分です. この部分は「前の場合の起電力によって生み出される (のと同じ)」と訳せばいいでしょう.

ここで those が何を意味しているかで悩むかもしれません. いま those の前には electric currents と same path and intensity があるからです. ここでは electric currents of the same A as B であり, ここは一種の並列構造なので those は electric currents produced by と読むべきでしょう. 物理としても produced by the electric forces な those は path and intensity ではなく electric currents でないと意味が通りません.

([TODO: those の説明] these ではなく those にする気分をどう説明するか? Path and intensity より遠い electric currents を指しているから, という説明は正しいか? 意味としては問題ないように思うが.)

ここで the electric forces と冠詞が the になっていることにも注意しましょう. 冒頭で an electromotive force と不定冠詞だったのが変わっているのです.

([TODO: 単複の変更] 何で単複が変わっているのか. どう説明をつければいいのか.)

最後の in the former case は former が問題かもしれません. これは前者・後者という場合の「前者」です. 単語編の former も参考にしてください. ちなみに後者は latter です.

### ---assuming equality of relative motion in the two cases discussed---

最後に assuming からはじまる分詞構文を確認します. 英語での節・句の挿入は日本語とだいぶ違う趣があり, どこにどうかかっているかを把握するのは重要です.

文法的な判断は必ずしも簡単ではないと思いますが, assume の意味から言って意味上の主語は we で問題ないでしょう. つまり we assume equality of relative motion in the two cases discussed が対応する完全な文であり, 第 3 文型で we assume equality が主な構造です. 無冠詞 の equality が何かと言えば of relative motion で修飾されていて, さらに in the two cases の補足があり, two cases を discussed でさらに詳しく修飾しています.

(TODO: 文法的に主語をどう判定すればいいか?)

動詞 assume の意味は「仮定する」で理工系最重要・最頻出単語の 1 つです. これと suppose は数学の定理や言明の仮定で「---と仮定する」というときの「仮定する」に使う単語です. Assume と suppose にも微妙なニュアンスの違いがあります. 詳しくは英英辞典で調べましょう.

目的語の equality は相対性理論の文脈では「等価性」などと訳すといいでしょう. Relative motion は「相対的な運動」で, この relative は相対性理論の相対性です.

Equality は何かと何かが等しいと言わなければならないので, その 2 つは in the two cases で表されています. どの the two cases かを示すのが discussed で, 「いままさに議論されている 2 つの場合」と訳します. この「2 つの場合」はもちろん導体と磁石のどちらが動くかによる場合分けです.

最後にここでの equality が無冠詞なことに注目してください. 「いままさに議論されている 2 つのケース」と言う具体的な equality のようにも思います, しかし一般に equality 自体は抽象的な不可算名詞 「等価性」は抽象的な等価性であり, 無冠詞扱いでいいのでしょう. これについては数学・物理で独特の語感があるため補足パートで説明します.

補足
# 英作文で便利な find

第 2 文で出てくる動詞の find は「---なことを見つけた」ことを表したいときに使いやすい単語です. 日本人が思うよりも便利に使える単語で英作文でも役に立ちます. 例えば次のように「わかる」「気づく」といった意味も表せます.

  • I found that the car was stuck in the mud.
  • 車が泥の中に入って動けなくなったのに気づいた.

他にもいくつか英作文で便利な単語があります. 例えば have は異様に便利です. 「体重が 70 kg である」というのを "I have 70kg weight." と言えます. せっかく詳しく文章を読むので, 「自分でもこれを使えると便利だ」という英作文・英語表現もためてください.

# 数学・物理では equalities/inequalities がありうる

タイトルが結論です. 日常的なふつうの英語では equality はまさに抽象的な単語で, 不可算名詞と理解するのが自然なのでしょう. しかし数学や物理では等式・不等式という意味で equalities/inequalities を使います. 等式や不等式はまさに具体的な式が星の数ほどあり可算名詞として使う機会が多いのです. もっといえば Inequalities というタイトルの世界的に有名な数学の教科書があるほどです.

実を言えば本文での equality に関して, はじめて見たとき私は数学・物理として「具体的な項の等価性・等号・等式」をイメージしたので, 可算名詞にするべきではないかと思ったのです. しかし翻訳した人にとっては「議論しているケースの等価性」という抽象的な等価性をイメージしたから不可算名詞をあてたのでしょう. 実際, 不可算名詞をあてた方が適切と思います.

名詞の可算・不可算は数学・物理での感覚と日常言語の感覚に微妙な齟齬があります. 気になったらきちんと調べるようにしてください.

第011回 第5文読解の残り・単語

まず確認

  • 録画はじめた?
  • 音は大丈夫?
  • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
  • YouTube へのリンクのタイトル・URL
  • 自サイト記事へのリンク URL
  • ブログに記事を上げる
  • URL スラッグは「studygroup-for-relativity」
  • Twitter で共有
  • YouTube のタイトルと説明欄
  • タイトルは md・ブログ のタイトル
  • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 第 5 文の読解の残り
  • 第 5 文の単語

進捗

  • 第 5 文の読解の残り
  • ドイツ語単語を何となく眺めた

TODO

  • 頂いたコメントや, コメントへの回答をコンテンツ本体に盛り込む

今日のメモ

以下の内容のところにいろいろメモしてある.

内容: コンテンツ (案) からの転記

en.5 第 2 文
構文

まずは全体の構造を掴みます.

  • we find an electromotive force
  • , to which in itself there is no corresponding energy
  • , but which gives rise to electric currents
    • of the same path and intensity
    • as those produced by the electric forces in the former case
    • ---assuming equality of relative motion in the two cases discussed---
  • In the conductor
  • however

物理での電場: 高校でいうと空間に電荷を置いて, 電荷が受ける力と「定義」する. (正確には単位電荷に対する力 = 電場) ベクトル. 電荷: 観測対象

電場それ自体: 電場というモノ自体が空間に分布している. 空間にたくさんのベクトルが分布している. (物理的には空間に沿ってふつう連続的に変化する) ベクトル場.

TODO 上のコメントを補足に入れる.

主節は we find an electromotive force であとは全て修飾です. ダッシュで囲まれた挿入もあれば関係代名詞の非制限用法もあり, 単なる長さに留まらない難しさがあります.

この文に限らず, 大きな構造を掴む上では接続詞, または意味上接続詞の働きをする単語には注意しましょう. ここでは冒頭の however と but which の but です. 逆接の接続詞なので前の話と何かが反転しています. 論文や教科書のような説得的な文章を読むときは接続詞を正しく読み取ることが大事です.

そして修飾構造の本丸も ", to which" と ", but which" です.

TODO ここの but which は非制限用法で問題ない?

どちらも関係代名詞の非制限用法です. But は等位接続詞で同じ概念を並べていて, いまは非制限用法の関係代名詞を意味としては逆接で並べています. この 2 つの関係代名詞の先行詞は共通していると見ていいでしょう. 前者の ", to which" は in itself という修飾があり, 後者の ", but which" は gives で入っているので, それぞれ単数の名詞に対する修飾だと判断します. つまり we ではなく an electromotive force を修飾しています. 単複の情報から文法的に機械的に決まっていることを見抜けるかが大事です. あなたが物理をわかっているなら文脈からもわかります.

さらに electromotive force には an と不定詞がついていることからよくわかっていない, つまりまだきちんと説明していない言葉であり, 補足説明がなければならないと思えるかどうかも大事なポイントです.

全体的な構造の分析はこのくらいでいいでしょう. 以下, 細かく文を見ます.

, to which in itself there is no corresponding energy

TODO 構文の注意

第 4 文の「磁石の周囲にある量のエネルギーを持つ電場が発生する」と対応する表現で, 先行詞は素直に an force と思えばいいでしょう. 文法としては前にカンマがあるので関係代名詞の非制限用法です. 先行詞と主節までセットで訳せば「対応するエネルギーが存在しない起電力を見つける」です.

ここで in itself は修飾の副詞句で, メインの構造は there is no corresponding energy で第 1 文型 SV です. To which は corresponding force to something の something が関係代名詞が修飾する名詞として抜かれて, to が which と結びついた形になっています. 物理的にエネルギーに対応する概念と結びつけるたいので, やはり an electromotive force を修飾していると見るべきです.

To which の to とセットにした correspond to something という熟語を覚えておきましょう. 「something に対応する」という意味です.

, but which gives rise to electric currents of the same path and intensity

全体としては長い節です. 挿入の "--- assuming ... discussed---" を無視して構造を見ます. 訳は「同じ経路と強さを持つ電流を与える」でいいでしょう. 英語として詳しく見ていきます.

逆接の接続詞 but がある上に再び関係代名詞の非制限用法です. どれだけ複雑な構文なのかと途方に暮れますが仕方ありません.

ここでは (an electromotive force) gives rise to electric currents がメインの構造です. 続く要素は electric currents を修飾しています. 続く構造を見抜く上で大事なのは same --- as の部分です. As 以降の分析は後回しにして, 表題部分の文を見ましょう.

まず electric currents of the same path and intensity でいったん切れます. ここで何が same なのか? という疑問が湧いてきます. 実はこれを as those が受けて説明しているのです. 熟語表現として same A as B があり, これを使っています.

動詞の gives rise to something は熟語で, 「発生させる, 生み出す」といった意味で produce と同じです. 三単現の s があるので主語は単数のはずです. 接続詞 but は関係代名詞の並列を指していると見るべきでしょうから, ここは素直に a force が先行詞だと見ていいはずです. 物理としてもエネルギーが電流を生むというより, 起電力が電流を生むと言った方が自然です.

目的語にあたる electric currents は電流です. 定冠詞が the がつかず無冠詞の複数形になっていることに注意しましょう. 単に current だけでも電流を表します. Current はラテン語で to run, move quickly を意味する currere を語源にしていて, 動くモノという意味があります. 深掘りすると面白い単語なので単語編で詳しく眺めると楽しいでしょう.

(fr) courir = run

pass

順番がよくないので記述を整理する

Path は物理だと「経路」という訳を覚えておくと便利です. 例えばファインマンの経路積分が path integral です: もちろんファインマンはノーベル賞を取った人です. Intensity は「強さ」です. これも理工系ではよく出てくる単語で覚えておくべきでしょう.

最後に the same と言われても何とどう同じなのかが気になります. 本来は same A as B という熟語で理解すべき部分なので, この部分を次に調べてみましょう.

as those produced by the electric forces in the former case

The same path and intensity as those で, the same A as B の as B 部分です. この部分は「前の場合の起電力によって生み出される (のと同じ)」と訳せばいいでしょう.

ここで those が何を意味しているかで悩むかもしれません. いま those の前には electric currents と same path and intensity があるからです. ここでは electric currents of the same A as B であり, ここは一種の並列構造なので those は electric currents produced by と読むべきでしょう. 物理としても produced by the electric forces な those は path and intensity ではなく electric currents でないと意味が通りません. この those は文法で前方照応的と呼ばれています. 文法的に文法編で説明しています.

ここで the electric forces と冠詞が the になっていることにも注意しましょう. 冒頭で an electromotive force と不定冠詞だったのが変わっているのです.

([TODO: 単複の変更] 何で単複が変わっているのか. どう説明をつければいいのか.)

最後の in the former case は former が問題かもしれません. これは前者・後者という場合の「前者」です. 単語編の former も参考にしてください. ちなみに後者は latter です.

TODO 記述の追加, the に対するコメント

---assuming equality of relative motion in the two cases discussed---

最後に assuming からはじまる分詞構文を確認します. 英語での節・句の挿入は日本語とだいぶ違う趣があり, どこにどうかかっているかを把握するのは重要です.

文法的な判断は必ずしも簡単ではないものの, Assume の意味から言って意味上の主語は we で問題ないでしょう. Assume の意味上の主語を文法的に考えるなら, 文法編の分詞構文の主語の節, 慣用的独立分詞構文のところを見てください.

もしこれを慣用的独立分詞構文とみなさずルールに則って分析するなら, 次の 2 点がポイントになるでしょう.

  • but which の前がカンマで大きく区切られているので, 挿入句はカンマより前の部分にはかからない.
  • 分詞構文の主語が明示されていないときは, 文 (ここでは but which 以下の節) の主語と同じ.

こう思うと assume の主語は which = an electromotive force とみなす必要があります. しかしやはりこれは不自然です. 素直に we が主語と考えるべきですし, 基本的なルールを踏まえた上で慣用として許されている表現とみなしましょう.

主語は we でいいとすれば, we assume equality of relative motion in the two cases discussed が対応する完全な文であり, 第 3 文型で we assume equality が主な構造です. 無冠詞 の equality が何かと言えば of relative motion で修飾されていて, さらに in the two cases の補足があり, two cases を discussed でさらに詳しく修飾しています.

動詞 assume の意味は「仮定する」で理工系最重要・最頻出単語の 1 つです. これと suppose は数学の定理や言明の仮定で「---と仮定する」というときの「仮定する」に使う単語です. Assume と suppose にも微妙なニュアンスの違いがあります. 詳しくは英英辞典で調べましょう.

目的語の equality は相対性理論の文脈では「等価性」などと訳すといいでしょう. Relative motion は「相対的な運動」で, この relative は相対性理論の相対性です.

Equality は何かと何かが等しいと言わなければならないので, その 2 つは in the two cases で表されています. どの the two cases かを示すのが discussed で, 「いままさに議論されている 2 つの場合」と訳します. この「2 つの場合」はもちろん導体と磁石のどちらが動くかによる場合分けです.

最後にここでの equality が無冠詞なことに注目してください. 「いままさに議論されている 2 つのケース」と言う具体的な equality のようにも思います, しかし一般に equality 自体は抽象的な不可算名詞 「等価性」は抽象的な等価性であり, 無冠詞扱いでいいのでしょう. これについては数学・物理で独特の語感があるため補足パートで説明します.

単語
  • あとで記録
  • 何に対してコメントしたか記録する

manifold = mfd

第012回 第5文の単語

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • 前回の訂正・再説明
  • 第 5 文の単語

進捗・TODO・今日のメモ

内容: コンテンツ (案) からの転記

前回の訂正: en.4 と en.5 第 2 文の比較

次のような形になっています.

  • 第 4 文: an electric field produces a current at the places
  • 第 5 文その 1: an electromotive force gives rise to electric currents

さらに言えば第 5 文には次の記述もあります.

  • 第 5 文その 2: electric currents of the same path and intensity as those produced by the electric forces in the former case

直訳調では次のようになるでしょうか.

  • 第 4 文: 空間の各点ごとに 1 つの電場が 1 つの電流を生み出す
  • 第 5 文その 1: 1 つの起電力がたくさんの電流を生み出す
  • 第 5 文その 2: 多くの電気力が生み出したたくさんの電流

一見すると主語と目的語の単複がうまく噛み合っていないように見えます. もっと言えば「電場」と「電気力」のずれもあります. これは起電力と電場・電気力の意味・定義の違いです. 同じ力とついていて紛らわしいだけで, 実際には起電力は (力学的な) 力ではないのです. 歴史的・分野的な事情も含めていくつかの事情があります.

電圧とは何か 気にすると、なかなか難しいのだ。」の説明を参考にしましょう. 電気回路の理論を中心にして電圧と曖昧に呼ばれる概念があり, これの内実は電位差と起電力です. ここで電位は純粋な電磁気学的な概念で, ベクトル場である電場に対するポテンシャル (スカラー, 関数) を意味しています.

E = - \grad \phi F = - -G Mm / r^2 = - m \grad U, U = -GM/r

そしてこの電位の差が電位差でこれは文字通り静電ポテンシャルである電位の差です. 一方, 起電力が何かといえば「電気回路内で電圧を生み出す概念」です. もう少し正確に言えば「回路中にあって電子をよりエネルギーの高い状態へと押し上げようとする働き」が起電力です. そして電気回路の理論で電圧が何を表すかと言えば電流を生み出すモノ (「物質」の意味ではない) です.

私が知る限り起電力は電気回路と強く紐づく概念で, 一般の電磁気学の概念ではありません. 論文が書かれた 1905 年当時の物理学界での用語法まで調べられてはいないものの, いま電気回路の議論をしていないこともあり, ここでいう起電力は電流を生み出すモノくらいの意味でしょう.

もう 1 つ物理学史として大事なポイントがあります. ここで electric force として言及された電気力と電場の違いです. 結論から言うとここではこの 2 つをあえて区別せずに使っています: 以下の電磁気学的な解説はいったん飛ばしても構いません.

では飛ばしてもいい解説を書きます. 高校物理で電場は空間の各点に置かれた単位電荷が受ける力として定義されます. 一方, 現代物理で電場は第一義的にはマクスウェル方程式が定義するベクトル場で, 特にクーロンの法則だけを取り出すなら電荷分布が生み出すベクトル場です. いったん力とは切り離した概念として独自に定義される概念なのです.

f = q E + qv \times B: ローレンツ力

マクスウェル方程式で出てくるのはあくまで後者の意味での電場であり, 電荷が受ける力ではありません. そしてここでは (単位電荷あたりの) 力としての電場と, マクスウェル方程式 (特にアンペール・マクスウェルの法則?) 由来の電場が混同されています.

この整理のもとで先の文章を見直すと次のように整理できるでしょう.

  • 第 4 文: an electric field produces a current at the places
    • 空間の各点ごとに 1 つの電場が 1 つの電流を生み出す
    • 空間の各点で定義された電場のベクトルが, その点での電流のベクトルを生み出す
    • ベクトル場 (ベクトル値関数) である電場がベクトル場としての電流を生み出していて, その関係を空間の各点ごとのベクトルレベルで考えている
  • 第 5 文その 1: an electromotive force gives rise to electric currents
    • 1 つの起電力がたくさんの電流を生み出す
    • 時空の実数値関数 (スカラー場) として定義された 1 つの起電力が, 時空の各点でベクトル場としての電流を生み出す
    • (その扱いが物理的にどこまで正当かはともかく) 空間上の実数値関数として, ある 1 つの起電力が空間全体の電流の分布を決めていて, 電流の分布を「多数の電流を生み出している」と表現している
  • 第 5 文その 2: electric currents of the same path and intensity as those produced by the electric forces in the former case
    • 多くの電気力が生み出したたくさんの電流
    • (起電力が純粋に空間の各点での電位差を生んでいると仮定して) 空間の各点での電位差 (電位の勾配, ベクトル解析でのグラディエント) が, 空間の各点で電気力のベクトル (正確には電場) を生み出し, それがさらに電流ベクトルを生み出していて, その関係を空間の各点ごとのベクトルレベルで考えている

最後に念のため物理的な整理も込めて補足しておくと, 電場・電気力・起電力が直接電流を生み出すわけではありません. 力学的に言えば, 電気力によって電荷が運動し, その電荷の運動が電流として出てきます. そして起電力を電位差と思えば, 電位差 (電位の勾配, ベクトル解析のグラディエント) によって電場が生まれ, 空間の各点での電場が電気力の源になっています.

単語
stationary

物理・数学では単に「止まった」といってもいくつか意味と対応する訳語があります. 例えば stationary process と言えば「定常過程」と訳します. 他には熱力学で時間的な変化はないものの空間的には非一様な状態を stationary state と言い, 日本語では「定常状態」です. 時間変化がなく空間的に一様な状態は equilibrium state と言い, 「平衡状態」と訳します.

Wiktionary によるとラテン語の stationarius, statio, 究極的には stō (to stand) に由来します. 二重語として stationer があります. Stationery の語源は「常設の場所 (station) で売られる品物」です. 昔の商人は教会の近くに常設の売店 (station) を開くことを許され, そこで聖職者用の品物を売っていました. 時代が下って筆記具類を専門に扱うようになり, 「文房具店」の意味に変わります.

Etymonline によると, 14 世紀後半に中フランス語の "motionless" を意味する stationnaire に由来します. 古典ラテン語の stationarius は "of a military station" の意味でした. Statarius は "stationary, steady" の意味です.

ここで stand にも注目してみましょう. Wiktionary によるとゲルマン祖語の standaną (to stand), 印欧祖語 steh₂- に由来します. この stand はよく「立つ」と訳されますが, 「(立ったまま) 動かないでいる」という意味もあります. 例えば書見台をブックスタンドというとき, 本とそのページを動かないようにおさえておく装置の意味です. 駅を station と言うのも電車にとって動かないしるべという意味からです.

また static にも似た意味があります. 例えば静電ポテンシャルを electro static potential と書くときに使います. Wiktionary によると近代ラテン語の staticus, 古ギリシャ語 statikós に由来していて, やはり stō の持つ st という共通項があります.

他にも語源が同じ言葉として state (状態), status (地位), statue (像), stay (とどまる) などがあります. 例えば station は「(人などが) 立つ所」で, 16 世紀に「宿場」「駅」などの意味に変わりました.

field

電磁場, 重力場というときの「場」を表す単語です.

Wiktionary によると西ゲルマン祖語の felþu ゲルマン祖語の felþuz, felþaz, felþą ("field"), 究極的には印欧祖語の pleh₂- ("field, plain") or pleth₂- ("flat") に由来します. ドイツ語の Feld と同根です. 古英語の folde ("earth, land, territory"), folm ("palm of the hand") とも関係があります.

Wiktionary には fold も参照するよう指示があるのでそれも見てみましょう. これは中英語の folden, 古英語の fealdan, ゲルマン祖語 falþaną ("to fold"), 印欧祖語 pel- ("to fold") に由来します.

ドイツ語の動詞: 最後に en がつく. 品詞ごとに「語尾」が決まっている. フランス語だと動詞の語尾が -are, -ire, -ere. イタリア語だと同じような語尾. イタリア語は現代ラテン語: ラテン語でも同じような動詞語尾. 日本語だと動詞は「う」行, 形容詞は「い」で終わる.

英語は語順が重要: 意味が変わる. イタリア語は動詞の活用が 1 人称の単複, 2 人称の単複, 3 人称の単複で 6 つ.

arise

Wiktionary によるとゲルマン祖語の *uzrīsaną (to rise up, arise) に由来し, これは a- + rise に分解できます. 特にこの a- は away, up, on, out のような意味を付加したり意味を強調する接頭語と思えばいいでしょう. 詳しくは接頭辞の項を見てください.

however

How + ever に分解できます.

何故 however で「しかし」の意味になるのだろう? 要調査.

force

Wiktionary によると古フランス語 force の借用語で, 後期ラテン語または俗ラテン語 fortis (strong) の中性複数形 *fortia に由来します.

correspond

Wiktionary によると中フランス語 correspondre, ラテン語 com- (with) + respondeo (to match, to answer to) に由来します. 英語でそのまま con/com + respond とみなしてもいいでしょう.

give

Wikipedia によるとゲルマン祖語の *gebaną (to give) に由来します. 同じゲルマン祖語に由来するネイティブの中英語 yiven, ȝeven が英語内部での由来です.

中英語の yiven と give を比較すると y と g が入れ替わっていることに気付きます. 実はこれはある程度一般的な現象です. 有名なのは「庭」を意味する garden と yard です. 語尾の en を抜かせば完全に一致します. 古い形を見るとこうした入れ替わりにも気付けるようになるので, 深く記憶に刻み込むためにはこういう単語の掘り方も大事です.

intensity

Wiktionary によるとラテン語の intensitas に由来します. Intense +‎ -ity と分解できます. Intense は中フランス語 intense, ラテン語 intendere (to stretch out) の過去分詞 intensus (stretched tight) の借用語です. これは in (in, upon, to) + tendere (to stretch) と分解できます. 後者の tenderetendō の活用で, tendō はイタリア祖語 tendō, 印欧祖語の ten- (to stretch, draw) の extension である *tend- に由来します.

Stretch などから考えれば *ten- は tend の語源のように思えます. 実際 Wiktionary によると tend は古フランス語の tendre (to stretch, stretch out, hold forth, offer, tender), ラテン語の tendere (to stretch, stretch out, extend, spread out) に由来します. この名詞形 tension は中フランス語 tension, ラテン語の tensiō, tensiōnem に由来します. 物理・数学ではテンソルという量は張力 (tension) に由来する概念です.

せっかくなので stretch も 見てみると, これは西ゲルマン祖語 strakkjan (to stretch, make taut or tight), 印欧祖語 (s)treg-, streg-, treg- (stiff, rigid) に由来します. ドイツ語 strecken (to stretch, straighten, elongate) も同根です. STARK を参照するようにと書いてあるので見てみると, これはゲルマン祖語 starkaz, starkuz (stiff, strong), 印欧祖語 (s)terg- (rigid, stiff) に由来し, ドイツ語の stark (strong) と同根です. これはデンプンを意味する starch と関係があるそうで, 中英語の stark, sterk (strong; stiff) の歯擦音化 starche (名詞), starche, sterch (stiff, 形容詞) に由来します.

第013回 言語学小ネタ紹介, 第6文の英独仏単語比較

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

はじめに

  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

今日の予定

  • (報告) 単語系コンテンツを独立して作ることにした
    • こちらはしばらく本文読みに集中する
  • 最近勉強して面白かった単語ネタ紹介
  • 第 6 文の読解

進捗・TODO・今日のメモ

  • 単語ネタ紹介が前半 35 分
  • 残りの 30 分で第 6 文の英・独・仏の多言語単語比較
  • 次回予定: 第 6 文の和訳・文法解析・補足

内容: コンテンツ (案) からの転記

言語学ネタ: 音韻法則
はじめに

はじめに少し単語の話. 他で所属している語学学習コミュニティで流れてきた話を紹介する. いまここの人達にも少し相談しつつ, 単語学習に特化したコンテンツを作っている. 今月中には作り終える予定. こちらにもシェアする.

単語の話は楽しいが本文読解が進まなくなる. 本文を読みたいという私の気分もあるのでしばらく本文読解に集中したい. 今日は (せっかく勉強会用に資料を整備したこともあって) 本文集中前の当面最後の単語回にする.

基本
  • 音韻法則は音の話で物理で自然科学領域
  • 人体 (口) の構造とも関わる
  • 言語・文化の世界の制約を超える
  • focus
    • 英語の「焦点」
    • ラテン語では「かまど」
  • 火 (hi): 韓国語ではプル
    • H と P は親戚: フとプ
    • H と F も親戚
    • F と P も親戚: フとプ
  • 例: 英語の fish はフランス語の poisson, イタリア語の pesche (星座の魚座はピスケス)
    • cf. スパゲティーのペスカトーレは「漁師」
    • プルコギのプル (Pul = Hi 火), 火 + 肉 = 焼き肉
  • 火についてもう少し
    • en. fire
    • de. das Feuer
    • fr. le feu
    • it. il fuoco
    • sp. el fuego
    • ru. ogon (アゴン)
    • サンスクリット: agni- (ロシア語と近い)
    • lat. ignis
  • ロシア語 ogon, サンスクリット agni, ラテン ignis は全て「母音+G+N」
印欧語比較文法
  • 母音の音色 (何でもいい) + 同じ子音のキープ
    • 母音の音色の変化を階梯と呼ぶ. 英語だとグレード
    • 母音のグレードは何でもいい
  • これが一番大事
  • 一つの単語が必ず別な言語の何かの現象と交差する: 単語も自動的に付随して記憶できる
  • 日頃から耳学問で構わないので浴び続けることが必要
アニメ・漫画・ゲーム・社会で見る単語の連関
# agni についてもう少し
  • ゲームの真女神転生の悪魔のアグニ
    • イメージの絵も火の化身そのもの
  • 昔, 漫画のサザンアイズでアグニマーヤーというのがあったはず (検索でいい感じに出てこない)
    • マーヤー: パーリ語なりサンスクリットなりでいろいろある
  • これまた遥か昔のゲーム, 飛龍の拳 II あたりでもインド神話やサンスクリット周辺の言葉がたくさんある
  • 小説・アニメの天空戦記シュラトも古代インド関連ネタ: 仏教とも深く関わる
  • アグニで調べて出てきたニュース: インド、ICBM「アグニ5」の発射実験に成功と発表
  • サンスクリットは現代社会にも生きている
# ignis
  • アニメ・漫画・ゲームキャラでよく聞く名前で一定の語感が (私には) ある
  • 検索するとすぐ出てくる
  • 英語の ignite: プログラミング関係で CodeIgniter
  • 直接にはウェディングピーチのイグニス
    • 「悪魔界の女王レインデビラに仕える火魔ピュール族の悪魔」
  • pyro はギリシャ語
    • p と f の転換でそのまま
    • pyromania = 放火癖
  • 少女漫画にさえ言語の世界が百花繚乱
  • 先のページを見ると水魔ポタモスというリンクがある
  • リンクを辿ると「水魔アクア」
  • ラテン語: aqua, 水和物など NaOH + aq: aq は水溶液または大量の水
  • イタリア語: acqua
# ポタモスに見る水の語感
  • 何か謎に水の語感を感じた
  • 検索してみたら一発で
  • メソポタミアというそのものずばりの存在がある
# メソの物理
  • 湯川秀樹のノーベル賞, 中間子は meson
  • メゾスコピック系 = mesoscopic: microscopic (微視的), macroscopic (巨視的)
# 身近なサンスクリット

マハラジャ. 実は maha は mega と語源が同じ. これも母音のずれと h と g の入れ替え現象が見える.

ついでにいえば摩訶不思議の maka も同じ: これは maha の音写. さらについでに, マハラジャの「ラジャ」は何か?

実はラジャは rēgem 「王」で, これはラテン語の rēx, rēgālis と同根かつ英語では royal が同根.

さらに garden と yard で g と y が入れ替わるのと同じで, ここでも g と y の転換がある.

第 6 文
英文と訳
# 文
## en.6

Examples of this sort, together with the unsuccessful attempts to discover any motion of the earth relatively to the light medium, suggest that the phenomena of electrodynamics as well as of mechanics possess no properties corresponding to the idea of absolute rest. They suggest rather that, as has already been shown to the first order of small quantities, the same laws of electrodynamics and optics will be valid for all frames of reference for which the equations of mechanics hold good.

## de.6

Beispiele ähnlicher Art, sowie die misslungenen Versuche, eine Bewegung der Erde relativ zum "Lichtmedium" zu konstatieren, führen zu der Vermutung, dass dem Begriffe der absoluten Ruhe nicht nur in der Mechanik, sondern auch in der Elektrodynamik keine Eigenschaften der Erscheinungen entsprechen, sondern dass vielmehr für alle Koordinatensysteme, für welche die mechanischen Gleichungen gelten, auch die gleichen elektrodynamischen und optischen Gesetze gelten, wie dies für die Grössen erster Ordnung bereits erwiesen ist.

## fr.6

Des exemples similaires, tout comme l'essai infructueux de confirmer le mouvement de la Terre relativement au «médium de la lumière», nous amène à la supposition que non seulement en mécanique, mais aussi en électrodynamique, aucune propriété des faits observés ne correspond au concept de repos absolu; et que dans tous les systèmes de coordonnées où les équations de la mécanique sont vraies, les équations électrodynamiques et optiques équivalentes sont également vraies, comme il a été déjà montré par l'approximation au premier ordre des grandeurs.

  • (NdT 1) (médium de la lumière) médium de la lumière: En jargon moderne, il s'agit de l'éther luminifère.
## jp.6

光の媒質に対して相対的な地球のどんな運動を見つけられなかったことと合わせて, この種の例は示唆するのは, 電磁気現象と力学現象は絶対静止の概念に対応するどんな性質も持たないことである. それらはむしろ次の内容を示唆する: つまり既に 1 次の微少量までは示されているように, 力学の方程式がよく成り立つ全ての座標系に対して, 電気力学と光学の物理法則は正しい.

  • [TODO] この訳, 内山訳と the same laws の取り方が違う. 上の訳で正しいか要確認. 英訳自体がドイツ語訳からずれている? 該当箇所だけ見るとそんなことはなさそうだが.
  • cf. 内山訳: そのような座標系のどれから眺めても, 電気力学の法則および光学の法則は全く同じであるという推論である.
  • cf. 唐木田訳: 電気力学や光学の法則が同じ形で成立する.

第014回 第6文の読解

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第 6 文の読解

進捗・TODO・今日のメモ

  • 第6文内の第2文の主節の構造を確認
  • 次回: 第 6 文内第 2 文の復習から
  • TODO: 頂いたコメントを転記
  • TODO: 修正した部分を本体に反映

内容: コンテンツ (案) からの転記

第 6 文
en.6

Examples of this sort, together with the unsuccessful attempts to discover any motion of the earth relatively to the light medium, suggest that the phenomena of electrodynamics as well as of mechanics possess no properties corresponding to the idea of absolute rest. They suggest rather that, as has already been shown to the first order of small quantities, the same laws of electrodynamics and optics will be valid for all frames of reference for which the equations of mechanics hold good.

de.6

Beispiele ähnlicher Art, sowie die misslungenen Versuche, eine Bewegung der Erde relativ zum "Lichtmedium" zu konstatieren, führen zu der Vermutung, dass dem Begriffe der absoluten Ruhe nicht nur in der Mechanik, sondern auch in der Elektrodynamik keine Eigenschaften der Erscheinungen entsprechen, sondern dass vielmehr für alle Koordinatensysteme, für welche die mechanischen Gleichungen gelten, auch die gleichen elektrodynamischen und optischen Gesetze gelten, wie dies für die Grössen erster Ordnung bereits erwiesen ist.

fr.6

Des exemples similaires, tout comme l'essai infructueux de confirmer le mouvement de la Terre relativement au «médium de la lumière», nous amène à la supposition que non seulement en mécanique, mais aussi en électrodynamique, aucune propriété des faits observés ne correspond au concept de repos absolu; et que dans tous les systèmes de coordonnées où les équations de la mécanique sont vraies, les équations électrodynamiques et optiques équivalentes sont également vraies, comme il a été déjà montré par l'approximation au premier ordre des grandeurs.

  • (NdT 1) (médium de la lumière) médium de la lumière: En jargon moderne, il s'agit de l'éther luminifère.
jp.6

光の媒質に対して相対的な地球のどんな運動を見つけられなかったことと合わせて, この種の例が示唆するのは, 電磁気現象と力学現象は絶対静止の概念に対応するどんな性質も持たないことである. それらはむしろ次の内容を示唆する: つまり既に 1 次の微少量までは示されているように, 力学の方程式がよく成り立つ全ての座標系に対して, 電気力学と光学の物理法則は正しい.

  • [TODO] この訳, 内山訳と the same laws の取り方が違う. 上の訳で正しいか要確認. 英訳自体がドイツ語訳からずれている? 該当箇所だけ見るとそんなことはなさそうだが.
  • cf. 内山訳: そのような座標系のどれから眺めても, 電気力学の法則および光学の法則は全く同じであるという推論である.
  • cf. 唐木田訳: 電気力学や光学の法則が同じ形で成立する.
解説
英語第 1 文
# 構文

文構造を確認しましょう.

  • Examples of this sort suggest
    • that the phenomena of electrodynamics as well as of mechanics possess no properties
      • corresponding to the idea of absolute rest
    • together with the unsuccessful attempts
      • to discover any motion of the earth
        • relatively to the light medium

まず主節は A suggest that の構造で that 節があり, カンマに挟まれた, together with からなる副詞句が長い挿入があります.

# Examples of this sort suggest that

これが主節です. 主語はもちろん Examples of this sort です. 間の長い挿入を無視して動詞 suggest を見つけられうかがまず勝負です.

Examples of this sort は「この種の例」と訳し, suggest that --- は「---を示唆する」と訳せばいいでしょう. 何を示唆するかが that 節の中身です. Examples は無冠詞の複数で, sort は単数で this の限定がついていることに注意してください.

よく suggest は suggest that のかたまりで出てきますし, 提案の内容までセットで骨格を掴みたいと思うのも人情です. 先に補足説明を除いた骨格を示しておくと次の通りです.

  • Examples suggest that the phenomena possess no properties.

何故これが骨格なのか調べてみましょう.

# (that) the phenomena of electrodynamics as well as of mechanics possess no properties corresponding to the idea of absolute rest

Suggest の目的語である that 節は主語が長いものの, 主な構造は the phenomena possess no properties です. The phenomena と possess の間にある of A as well as of B が phenomena の補足説明で as well as は and と思ってください. No properties の補足説明が corresponding to からなる形容詞句です. ついでに動詞が possess になっているので the phenomena は複数形であることもわかります.

ここで examples は何なのか, phenomena は何なのか, no properties は何なのかを説明する句がたくさんある構造がわかります. 先にこの骨組を見抜いておき, 修飾がある単語に対して「確かに補足してもらわないとわからないな」と感じるのも大事です. それぞれ複数形であることも大事です. 冠詞の有無にも注意しましょう.

では深掘りしていきましょう. まずは基本構造の the phenomena possess no properties からはじめます. 名詞 phenomena は phenomenon の複数形で「現象」という意味です. 動詞 possess は have と思ってください. 目的語の no properties は直接日本語では表現しづらいので多少意訳して, この全体は「その現象は (以下で説明する) 性質を何も持たない」と訳せます. 目的語の no properties は英語らしい表現で, 多くの場合「そのような性質はない」などと訳せば問題ありません. 次の例文がイメージしやすいでしょう.

  • There is no room for compromise.
  • 妥協の余地はない. $¥gets$ 妥協に対する余地が 0 個ある.

次に主語を詳しく見てみます.

  • the phenomena of electrodynamics as well as of mechanics

これは単に the phenomena of electrodynamics and mechanics と思えばよく, 「電気力学的な現象と力学的な現象」とシンプルに訳せば十分です. 電気力学と力学という専門用語, ギリシャ語由来の phenomena が複数形であることがポイントです.

次は動詞を詳しく見てみます. 動詞 possess は単純に「持つ」と思いましょう. もしあなたがサッカーが好きなら「ボールのポゼッション」という言葉を聞いたことがあるでしょう. 「ボールをどれだけ持っているか」という意味で, サッカーで言えばチームのボール所有支配率という意味です. スポーツなり何なり, 身近に英語を含めた多言語は溢れています. 自分なりの言語, ひいては情報収集ルートを整備してみてください.

次は目的語です.

  • no properties corresponding to the idea of absolute rest

TODO the idea の定冠詞に関して言及

No properties は冠詞のない複数形で正体不明です. 何かしら補足説明があるべきで, それが corresponding to からなる形容詞句です.

Absolute は「絶対」という意味で relative 「相対」に対応する単語です. Relative に対応する単語である以上, この論文のキーワードです. そしてここでの rest は「静止」という意味で, absolute rest で「絶対静止」です. 静止状態 (概念) は座標系の取り方による概念であり, 静止状態は相対的にしか定義できず, 絶対的な静止状態が存在しないという特殊相対性理論の重要な主張につながります. この論文の内容として本質的な部分です. 冒頭でテーマをすっきり論じるのは欧米系の文章作法であり, それに即して議論が進んでいることがわかります.

# together with the unsuccessful attempts to discover any motion of the earth relatively to the light medium

挿入句で examples of this sort を補足しています. 第 5 文までは理論上の話であり, いわば人間の頭の中の話です. この挿入句が何を言っているかというと実験に関する話です. ここでの attempts は実験の話なのです.

物理は実験科学である以上, どれだけ理論的に優れて見えたとしても実験と合わないならその理論は捨てるしかありません. その重要な話を補足説明しているのです. これは理論の論文で理論に重点がある以上, 話の筋は理論的な問題です. しかし実験的にもきちんと支持されている話だという補足なのです. Together with attempts でここまで読み取る必要があります. 物理学者はそういう思考習慣があると言っても構いません.

ここで大事なのは attempts は単に attempts なのではなく, the (unsuccessful) attempts と定冠詞がついています. つまり「物理学者であるあなたなら先刻承知の試み」だと言っています. 高校物理でも出てくるマイケルソン-モーリーの実験があり, 当時でもこれらの実験を自然と結びつけられたのでしょう. この特殊相対性理論の論文には他の論文の引用がなく, これらの実験に関する論文をきちんと引用するべきだったという批判があることもコメントしておきましょう. 何にせよこの 1 文で実験に関する諸々を一気に説明していて, いわゆる大きな行間がある挿入句なのです.

読解上のコメントが先行しました. 文法的に解析しながら読み進めてみましょう. まず together with the attempts が基本構造です. どんな unsuccessful attempts なのかが気になるので 即 to discover の形容詞句での説明があります. Discover の目的語は any motion で, any motion をさらに of the earth が修飾しています. 最後の relatively to the light medium はまず to the light medium が any motion of the earth を修飾していて, relatively は to the light medium を修飾しています.

まずは to discover any motion から見てみましょう. ここの any は unsuccessful の un (not) と結びついています. 「いろいろがんばって見たがどんな運動も見つけられなかった」のです. どんな運動なのかが気になるので, それを of からの形容詞句で説明されています.

ここの discover の目的語は次の文 (節) であると思った方がわかりやすいかもしれません.

  • the earth moves relative to the light medium

こうした節で表現すると any motion の any はこの構文ですっきりと表現するのが難しく, discover any motion と名詞で表現するとすっきり書けることもわかります. 念のため move relative to に関する例文を 1 つ紹介しておきます.

  • Two objects move relative to each other.

さて, 元の文章に戻りましょう. まずは of the earth で地球の運動なのだと説明されています. Earth は普通名詞で定冠詞がつくという教科書にも書いてある話が出てきて, 教科書が役に立つことを教えてくれます.

特殊相対性理論は運動の相対性を問う理論なので, 何に対して相対的な運動なのかが気になります. それが relatively to the light medium です. つまり「光の媒質に対して相対的な運動」なのだとわかります.

ここでまた the light medium と定冠詞がついていることに注意します. 「あなたも先刻承知の光の媒質」でありいわゆるエーテルです.

TODO as well as = and でもいいときはある. 翻訳者泣かせ. 「B だけでなく A」, 「A と B」どちらがわかっていることか, 重きを置くかで文脈によって決まる.

英語第 2 文
# 構文
  • They suggest rather that
    • the same laws of electrodynamics and optics will be valid
      • for all frames of reference
        • (all frames) for which the equations of mechanics hold good.
    • as has already been shown to the first order of small quantities,

主節は They suggest that で suggest する内容が that 節の内容です. 最初の they は前文の主語である「この種の例」を指しています. 主節は前文と同じで they suggest that という形になっていることにも注意しましょう.

この that のあとに ", as ...," とカンマで区切られた as 節は that 節に対する副詞節です. あとで調べることにしましょう. Suggest に対する that 節のメインの構造は the same laws will be vaild です.

# They suggest rather that

これが主節で基本的には英語第 1 文と同じ構造です. Suggest が「提案する」で提案内容は that 節の内容です. 文章理解の上では主語 they の理解が大事です. 前文 (第 1 文) の主語 examples of this sort, together with the unsuccessful attempts と思えばいいでしょう.

ここの rather が解釈上重要です. 日本語では「むしろ」とでも訳せばいいでしょう. これは次のように捉えます.

  • 電気力学にも力学にも絶対静止という概念を持たせられない.
  • これを否定的な材料と思わず肯定的に捉えて理解するべきだ.

つまり the customary view からの大きな転換を表しているのです.

目的語の that 節を見ると as has already からはじまる挿入節があります. この挿入節は後回しにして, that 節の本体を確認しましょう.

第015回 第6文の読解

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第 6 文の読解

進捗・TODO・今日のメモ

  • 今回は第6文が終わった
  • 補足に入って「the unsuccessful attempts」まで終わり
  • 次回は補足の残りを片付けてから第7文の読解
  • TODO コメントもらった部分を本体に追記

内容: コンテンツ (案) からの転記

第 6 文
英文と訳
# 文
## en.6

Examples of this sort, together with the unsuccessful attempts to discover any motion of the earth relatively to the light medium, suggest that the phenomena of electrodynamics as well as of mechanics possess no properties corresponding to the idea of absolute rest. They suggest rather that, as has already been shown to the first order of small quantities, the same laws of electrodynamics and optics will be valid for all frames of reference for which the equations of mechanics hold good.

## de.6

Beispiele ähnlicher Art, sowie die misslungenen Versuche, eine Bewegung der Erde relativ zum "Lichtmedium" zu konstatieren, führen zu der Vermutung, dass dem Begriffe der absoluten Ruhe nicht nur in der Mechanik, sondern auch in der Elektrodynamik keine Eigenschaften der Erscheinungen entsprechen, sondern dass vielmehr für alle Koordinatensysteme, für welche die mechanischen Gleichungen gelten, auch die gleichen elektrodynamischen und optischen Gesetze gelten, wie dies für die Grössen erster Ordnung bereits erwiesen ist.

## fr.6

Des exemples similaires, tout comme l'essai infructueux de confirmer le mouvement de la Terre relativement au «médium de la lumière», nous amène à la supposition que non seulement en mécanique, mais aussi en électrodynamique, aucune propriété des faits observés ne correspond au concept de repos absolu; et que dans tous les systèmes de coordonnées où les équations de la mécanique sont vraies, les équations électrodynamiques et optiques équivalentes sont également vraies, comme il a été déjà montré par l'approximation au premier ordre des grandeurs.

  • (NdT 1) (médium de la lumière) médium de la lumière: En jargon moderne, il s'agit de l'éther luminifère.
## jp.6

光の媒質に対して相対的な地球のどんな運動を見つけられなかったことと合わせて, この種の例が示唆するのは, 電磁気現象と力学現象は絶対静止の概念に対応するどんな性質も持たないことである. それらはむしろ次の内容を示唆する: つまり既に 1 次の微少量までは示されているように, 力学の方程式がよく成り立つ全ての座標系に対して, 電気力学と光学の物理法則は正しい.

  • [TODO] この訳, 内山訳と the same laws の取り方が違う. 上の訳で正しいか要確認. 英訳自体がドイツ語訳からずれている? 該当箇所だけ見るとそんなことはなさそうだが.
  • cf. 内山訳: そのような座標系のどれから眺めても, 電気力学の法則および光学の法則は全く同じであるという推論である.
  • cf. 唐木田訳: 電気力学や光学の法則が同じ形で成立する.
# 解説
## 英語
### 英語第 2 文

**** 構文 - They suggest rather that - the same laws of electrodynamics and optics will be valid - for all frames of reference - (all frames) for which the equations of mechanics hold good. - as has already been shown to the first order of small quantities,

主節は They suggest that で suggest する内容が that 節の内容です. 最初の they は前文の主語である「この種の例」を指しています. 主節は前文と同じで they suggest that という形になっていることにも注意しましょう.

この that のあとに ", as ...," とカンマで区切られた as 節は that 節に対する副詞節です. あとで調べることにしましょう. Suggest に対する that 節のメインの構造は the same laws will be vaild です. **** They suggest rather that これが主節で基本的には英語第 1 文と同じ構造です. Suggest が「提案する」で提案内容は that 節の内容です. 文章理解の上では主語 they の理解が大事です. 前文 (第 1 文) の主語 examples of this sort, together with the unsuccessful attempts と思えばいいでしょう.

  • SV that
  • V = 「言う」という意味

ここの rather が解釈上重要です. 日本語では「むしろ」とでも訳せばいいでしょう. これは次のように捉えます.

  • 電気力学にも力学にも絶対静止という概念を持たせられない.
  • これを否定的な材料と思わず肯定的に捉えて理解するべきだ.

つまり the customary view からの大きな転換を表しているのです.

目的語の that 節を見ると as has already からはじまる挿入節があります. この挿入節は後回しにして, that 節の本体を確認しましょう. **** the same laws of electrodynamics and optics will be valid for all frames of reference 主な構造は次の通りです.

  • the same laws will be vaild

もちろん「同じ物理法則が成り立つであろう」と訳します. これは suggest の目的語の that 節であることに注意すれば ここでの will は未来形ではなく推量の助動詞と見るべきです.

The same laws で何の法則かが気になるわけで, それが electrodynamics and optics です. Electrodynamics は電気力学で optics は 光学です. 光は電磁波なので光学は電磁気学 electromagnegnetism です. ここでelectromagnegnetism ではなく electrodynamics が出ているので optics をわけているのかもしれません. 読み進めるとわかるように情報伝達のための信号として光を使っているので, それを強調するためにあえて optics を積極的に取り上げているのかもしれません.

Be valid はどういう状況で成り立つのかが問題になります. それが for all frames of reference で指示されています. All frames of reference の直訳は「全ての参照枠」でいいでしょう. 特に一般相対性理論を視野に入れて現代的に考えると, 数学的な言葉で言えば全ての局所座標系と訳せます. 局所座標系は多様体論の言葉・概念で一般相対性理論の数学でも出てくる大事な概念です. もちろん特殊相対性理論でも座標系の概念は大事です. あとで何度も出てくるので嫌でもわかります.

最後, frames は all がついているとはいえ定冠詞がありません. 「皆さんご承知の全ての座標系」とは言っていないので, 何かしらの決めきれない部分があります. それを指定するのが次の関係代名詞節の内容です. **** for which the equations of mechanics hold good 主節の suggest の目的語である that 節の内容をさらに補足する内容です. 特に all frames を修飾しています. ここで hold good は hold が be 動詞のようにはたらいていて, 文型は第 2 文型 SVC と見るといいでしょう.

主語は the equations of mechanics です. 定冠詞 the がついていることに注意してください. そしてここは明確に力学 mechanics と言っていて electrodynamics ではありません. 電磁気学と切り離した純粋な力学の話が影響すると言っているのです.

最後の hold good は「よく成り立つ」という意味で, 特に hold を「成り立つ」とみなすのが大事です. Hold の有名な訳「持つ・つかむ・抱える」の意味を発展させて「成り立つ」と訳してください. 数学や物理で重要な単語です. また equations に対する動詞 hold のコロケーションを覚えておいてください.

  • TODO コロケーションの話を単語コンテンツに盛り込んでおく.
  • we have もよくある. we get, we obtain, it follows that, it shows that **** as has already been shown to the first order of small quantities さて, 挿入節です. 接続詞の as は様態で訳すと落ち着きます.

  • TODO as は関係代名詞で見た方がいい. 非制限用法.

まず as 節は主語がなく動詞が has と三単現になっていることに注意しましょう. これは前の文自体の内容を it で受け, さらにそれを省略した形とみなせます. 動詞は現在完了形をさらに already で修飾していて既存の確立した結果という気分が強く出ています. そして既存の結果としては to the first order of small quantities です. これは物理や理工学では典型的な表現で, 議論の精度・近似の精度に関する言及です. まだ近似レベルで留まっていて厳密に示されているわけではないという主張でもあります.

(TODO これの主語は何? 単数のどれ? 前文の内容全体を it/that などで示して受けていると思えばいい?)

ここでは動詞が現在完了で already まで入れて強調しているのがポイントです. ふつう「見せる, 示す」と訳す show は「証明する」の意味で理解するといいでしょう. つまり「既に証明されているように」と訳します. 物理・数学, 特に数学ではよく使われる用法です.

これに対して to が導く句で証明されている程度を表しています. 高校物理でもよく議論したように, 物理では適当な近似の範囲で成り立つというタイプの議論がよくあります. 物理で厳密な証明は難しく, 近似で仮定した範囲での限定的な「証明」なのです.

The first order of small quantities は「1 次の微少量」と訳します. これは物理でよく出てくる数学表現で, 微分, 特に 1 階の微分係数・導関数を使った近似を指します. そして実際に高校の物理でよく出てくる近似はこの「1 次の微少量による近似」です.

この文は数学と近似に関わる議論なので, 物理の議論に慣れていないと難しいでしょう. 念のため簡単に補足をつけておきました. 必要なら補足の節を確認してください.

補足
# 英語第 1 文
## 専門用語としての sort

Sort はプログラミングでは「データの集合を一定の規則に従って並べる」という意味でも使われ, 日本語でもそのまま「ソート」と言います. データ構造とアルゴリズムの話題で必ず出てくる計算機科学の基本です.

## 絶対性に関わる議論

特殊相対性理論では静止という力学的な概念の絶対性を否定します. 一方で他の絶対的な概念を導入しています. それがまさに特殊相対性理論の 2 つの仮定 (原理) です.

  • 光速度不変の原理: 真空における光の速度$c$はどの慣性座標系でも同一である.
  • 相対性原理: 全ての慣性座標系は等価である.

どちらも謎と言えば謎の概念です. ここでは相対性原理に注目しましょう. 相対性原理は座標系に注目して定義されていますが, ここから座標系に付随する概念についても適当な等価性が要求されます. たいていの物理法則は微分方程式で記述されます. 特に偏微分方程式を記述するための微分概念である偏微分は座標系にべったり依存しています. そこで座標系に依存しない微分概念を導入する必要があり, そのための数学が実は幾何学です. この意味で一般相対性理論の記述言語は微分幾何だと言われています.

現代数学の話に突撃するので簡単ではありません. 2020 年のノーベル物理学賞でのペンローズの業績がまさに一般相対性理論で記述言語は幾何であり, 2016 年のノーベル物理学賞でのトポロジカル絶縁体ではトポロジーという分野名が幾何から来ています. 最近, 理論物理をはじめとして理工系では幾何が非常に重要な役割を担いつつあります.

## the unsuccessful attempts

本文で出てきたこの名詞句についてもう少し深掘りします. ポイントはもちろん the でいわゆるエーテルの検出問題です. The は「皆さんご存知の」という意味なので, 本当に当時の大テーマだったのでしょう.

光の媒質に対する運動はまさにエーテルの検出に関わる実験の問題です. 当時, 何であれ振動・波動が伝わるには媒質が必要だと思われていたようです. そして電磁気学のマクスウェル理論によって電磁波は波なので, 何かしらの媒質を想定しようとし, それを「エーテル」と呼んでいたわけです. エーテル検出失敗実験として有名なのがマイケルソン・モーリーの実験です. これは大学受験ネタとしてもよく出てくるので知っている人も多いでしょう. 実際に相対性理論の論文の中で, 高校物理で学んだことが生きています.

他に人間の営みとしての物理学にも触れておきます. 高校物理や通俗的な科学史では話が激烈に単純化されています. つまりマイケルソン-モーリーの実験でエーテルの存在は否定され, アインシュタインの特殊相対性理論で旧来の説は完全否定されたと思う人もよくいます.

しかし実際には他にも歴史的に多くの人達がいろいろがんばってやってきた末, 何をどうやっても無理そうだ・敗色濃厚だとなり, その中でも印象的な仕事の 1 つがマイケルソン-モーリーの仕事であり, アインシュタインの特殊相対性理論の論文なのです. 有名な話として, アインシュタインと同等の結論はローレンツが得ていたものの, 数学的な推論だけで物理的な洞察に乏しく, 物理の原理に踏み込んで導出したアインシュタインのこの論文はやはり偉い, そういう事情もあります.

アインシュタインのこの論文は引用がないことでも有名ですが, ローレンツの論文やマイケルソン-モーリーの実験論文をきちんと引用すべきだったという話もあります. 引用は必死の思いで先人が積み上げてきた営為への敬意を示す行為でもあり, そうした「礼儀」がなっていないのはどうか, という視点もあります. 科学者も人間なので自分がやった (決定的な) 仕事を無視されたら面白くないと感じる人も多いのです.

第016回 第6文の補足, 第7文の読解

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第6文の補足
  • 第7文の読解

進捗・TODO・今日のメモ

  • 第7文の全体構造まで
  • 次回は第7文の本文から

内容: コンテンツ (案) からの転記

第6文
補足
# 英語第 1 文
## 実験科学としての物理, そして数学

この論文は理論の論文ですが, 上で補足したように大事なところに関してはきちんと実験にも言及があります. 理論だからといって実験を無視してはいけないのです.

物理を勉強するためには数学の勉強も必要です. そこで数学の勉強に役立つ話もしておきます. 数学にもいろいろな形で「実験」が必要で重要です. 電磁気学でも有名なガウスは現代では数学者として有名です. そのガウスは常人には対応しきれない膨大な計算を捌いた人間としても有名です. そのガウスを受けて日本人数学者の高木貞治は「数学は帰納の学問である」と言いました.

数学ではどうしても一般的な定理に注意が向きがちですが, 膨大な計算例をもとに一般的な規則を予測・推測することこそが数学の核だと主張したのです. ここでいう「数学」は学校で「勉強する」数学ではなく, 自ら切り開いてく学問・アートとしての数学です. 現代では手計算以外にコンピューターを使った計算もあり, 特に物理ではコンピューターを使った計算の重要度が上がってきていますし, そのためには「人工言語の語学」, つまりプログラミングが大事になってきています.

この英語の講座では数学・物理・プログラミングについては議論しきれませんが, 補完する講座・コンテンツを準備しています. ぜひそちらも勉強してみてください.

## エーテルの話

実験の話の中でエーテルが出てきたので本文の解説には盛り込みませんでしたが, 理論的にも重要なのでここで補足しておきます.

高校の波動の理論や振動・波動の理論では次のような話になっています.

  • 波はパターンが空間を伝播する現象である.
  • 波はそれ自体に実体があるわけではなく媒質の運動の伝播である.

波をこう定義して理解しようとしていて電場・磁場も波として伝わると見た以上, 電磁波の媒質が何かが当然大問題になります. 電磁波の媒質として想定されたのがエーテルなのです. エーテルがないとなると電磁波はどう伝わるのか, もっと言えば電磁波とは何なのか, 波をどう定式化し直すべきかという物理全体の問題に波及しさえします. 簡単に補足説明しかされていない挿入句は, 実は物理としてはこのくらい重要な転回です.

ちなみに高校の化学で有機化合物としてエーテルが出てきますが, 実はこのエーテルのこの語源は光の媒質としてのエーテルです. こちらも興味があればぜひ調べてみてください. 科学史, そして歴史を深掘りして楽しむ切り口になるでしょう.

イーサネット Ethernet, Aethernet

# 英語第 2 文
## 英文理解のポイント

ここでのポイントは 2 つあります.

  • 1 次の微少量までは示されていること.
  • 全ての座標系に対して成り立つこと.

前者は物理でよくある近似の話です. 高校の物理でも振動・波動, 光の議論ではよく近似を使ったはずです. ふつう高校物理で使うのは 1 次近似です. To the first order と言っているのはまさにこれです. いま見たい現象を見たい精度で確認できればいいので, 1 次でいいかどうかは何を考えているかによります.

大学の頃, 物理学科の光学の講義はレンズ開発の現場にいる人が講師で, その人が「この式は教科書には近似と書いてあるが, 現場でレンズを開発していると厳密に成り立つ式くらいの気分がある」と言っていました. 現場の開発者として持つべき感覚は工学のそれで物理ともまた違います. こうした背景がある表現なのです.

もう 1 つ, 全ての座標系について成り立つべしという要請は相対性理論の基礎基本であり, この論文のメインテーマです. 座標系は人間側の都合で使う概念でしかなく, そんなものに本質的に依存するようでは自然の記述として不十分だろうという程度のことで, 当たり前と言えば当たり前の主張です. 物理としては解析力学とも共通する発想で, 現代幾何学の母胎である多様体論の基礎でもあります.

歴史的には微分方程式を厳密に解くとき, (解の存在と一意性が言えているなら特に) 「解ければ正義」で, 実際に「何をどうすればそんな変換を思いつけるのか」としか思えない, めちゃくちゃな変数変換や式変形も考えます. 変数変換をした程度のことでもとの方程式の大事な部分が変わってほしくないわけで, こうした具体的な問題が背景にあります.

これはいわば「方程式の大事な部分」を物理と言っていて, それを突き詰めると方程式の不変性といった概念にも導かれます.

## 数学的補足: 「微少量の 1 次まで」について

高校物理でも波動の分野などで$\sqrt{1+x} \approx 1 + \frac{1}{2}x$という近似式が出てきます. 実は$\sqrt{1+x} = 1 + \frac{1}{2}x - \frac{1}{8}x^2 + \frac{1}{16} x^3 + \cdots$という展開があり, テイラー展開と呼ばれています.

ここで$x$が小さいとすると$n > 1$に対する $x^n$は急激に小さくなります. 表にしてみましょう.

$x$ 0.1 0.001
$x^2$ 0.01 0.00001
$x^3$ 0.001 0.0000001
$x^4$ 0.0001 0.000000001

変数$x$の値が小さいとき$1$次の量, つまり$x$に比べて$x^2$はまさに桁違いに小さいので無視できます. 状況にもよりますが「有効数字での検出限界以下になって無視せざるをえない」と思った方が適切かもしれません.

この手の近似計算は高校レベルでさえよくやりますし, 大学に入ってからはなおのことよく出てきます. これは適当な解説書で勉強してみてください. もちろん私が作っている別の講座やコンテンツも参考になるでしょう.

第7文
en.7

We will raise this conjecture (the purport of which will hereafter be called the Principle of Relativity) to the status of a postulate, and also introduce another postulate, which is only apparently irreconcilable with the former, namely, that light is always propagated in empty space with a definite velocity $c$ which is independent of the state of motion of the emitting body.

de.7

folgenden = following nahmen = name Raume = room bewegen = be+weg <- vector

Wir wollen diese Vermutung (deren Inhalt im folgenden "Prinzip der Relativität" genannt werden wird) zur Voraussetzung erheben und ausserdem die mit ihm nur scheinbar unerträglich Voraussetzung einführen, dass sich das Licht im leeren Raume stets mit einer bestimmten, vom Bewegungszustande des emittierenden Körpers unabhängigen Geschwindigkeit $V$ fortpflanze.

fr.7

suit = following de = of of: 分離のof de = 分離の意味を持つ接頭辞, e.g. depart autre = other 光量 lumen like, alike = gleich peut = pouvoir = can (possible)

Dans le texte qui suit, nous élevons cette conjecture au rang de postulat (que nous appellerons dorénavant «principe de relativité») et introduisons un autre postulat --- qui au premier regard est incompatible avec le premier --- que la lumière se propage dans l'espace vide, à une vitesse $V$ indépendante de l'état de mouvement du corps émetteur.

  • (NdT 2) (l'espace vide) Par «espace vide», il faut comprendre «vide parfait», que l'on peut presque assimiler à l'espace intersidéral dénué de toute matière.
jp.7

私達はこの予想を公準の地位にまで持ち上げよう: 以下ではこれを相対性原理と呼ぶことにする. そしてもうひとつ, 光はそれを放射する物体の運動状態によらず, 常に真空中を一定の速度$c$で伝播するという公準を導入する. 一見するとこれは前者と調和しない.

第017回 第7文の読解

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • イタリア語を比較して眺めてみる
  • 第7文の読解

進捗・TODO・今日のメモ

  • イタリア語単語・文法の簡単な比較
  • 主節1のWe will raise this conjectureまで
  • 次回は(the purport of ---)から

内容: コンテンツ (案) からの転記

はじめに
  • 少しイタリア語を眺めてみる
  • ロマンス語系でフランス語とよく似ている
  • 今日は見ないがスペイン語もよく似ている
    • スペイン語は歴史的経緯からアラビア語の影響がある
    • be動詞が二種類あるとかいろいろな特徴がある
メモ
  • Assumeremo
    • first-person plural future of assumere
    • ラテン語由来の単語
    • ここではassumeを使っている
    • 主語のweがない:
      • assumere の活用
      • 人称・単複で全て形が違うので主語がなくてもわかる
      • 省略というより動詞に人称の情報が書き込まれている
      • 英語・ドイツ語・フランス語にはない現象
  • questa $\gets$ questo
    • ラテン語由来
    • this, these
  • congettura
    • conjecture
    • jとgの入れ替え
    • 参考: イタリア語のジェラート(gelato)
  • contenuto
    • content
    • Mario, Maria
  • nel: in the の縮約
    • nello = in lo (=in the)
  • sarà: essere
  • chiamato
    • ラテン語の clamare
    • 英語のcallとはまた少し違う模様
  • come
    • ラテン語のquomo+et
    • フランス語のcommeと同じでhow, as, like
    • COMME des GARCONS
  • e
    • 英語のand
    • フランス語だとet
  • oltre
    • alter, old?
    • further
    • ラテン語のultraから
  • con
    • ラテン語のcum=with
    • 英語でも接頭辞でよくある
    • cf. comprehend, apprehend
  • che
    • ラテン語quid,
    • what, which, who
    • 疑問詞・関係代名詞の系統が英語・ドイツ語と全然違う
    • フランス語とは同じ
  • solo
    • ラテン語のsolus, solum
    • alone, only
  • luce
    • ラテン語のlucem, lux
  • spazio: space
  • vuoto: empty, vacant
    • vacancy, vacuum: イタリア語, もっと言えばラテン語由来
  • propaghi: propagate
  • sempre: always, still
  • determinata
    • feminine singular of determinato
    • いろいろたぐるとdetermino
      • de-+termino (I limit), from terminus
      • このdeはof, from (分離)
    • definiteに対応
      • これもラテン語definio
      • de-+finio
      • finioは明らかにfinish
    • どちらにせよ分離のde (of)
  • indipendente: independent
  • dallo: da loの縮約
  • stato: state
  • moto: motion
    • モトローラ, モーター
  • dei: di iの縮約
    • フランス語 カフェオレ cafe aux lait
    • aux = a les
  • corpi: body, corps, Korper
  • emittenti: emit
英語の解説
全体構造

一文が長い上に構文が恐ろしく複雑です. Andでつながった主節がふたつあるので, それぞれの主節の意味を考えましょう.

  • (主節1) We will raise this conjecture
    • (the purport of which will hereafter be called the Principle of Relativity)
    • to the status of a postulate
  • and
  • (主節2) (we) also introduce another postulate
    • , which is only apparently irreconcilable with the former
    • that light is always propagated
      • in empty space
      • with a definite velocity $c$
        • which is independent of the state of motion of the emitting body

主節はふたつあり, ひとつはWe will raise this conjecture ---, もうひとつはand also introduce another postulateです. ふたつ目の主節は主語が省略されていることにも気付く必要があります. さらに第一文の目的語はthis conjecture, 第二文の目的語はanother postulateなので内容的にも強い関連があるはずです.

主節1
# We will raise this conjecture to the status of a postulate

これが基本構造です. 挿入の(the purport ---)はthis conjectureの補足説明なので, いったん無視しましょう. さらにwe (will) raise A to Bの構造も見抜きましょう. 動詞raiseの正確な意味はともかく「A を B に向ける」という文型・文構造上の型を確認してください.

助動詞willはいわゆる未来形・未来表現のwillです. Willは名詞で「意思」の意味があり, その意思のもとに導かれる意味での未来です. つまり「以下, 我々はこのように動く」という意味でwillを理解してください.

どう動くのか考えましょう. まずwe raise A to Bという構造から意味を判定します. 構造から「A を B に向ける」という意味にならなければなりません. その向け方を指定するのがraiseなのです. そしてraiseの意味は「(持ち)上げる」です. ここでは次のように理解してください.

  • 予想 (conjecture) を公理 (postulate) の地位 (status) まで持ち上げる.

ここでthis conjectureは第6文の内容を受けています. いま公理と訳したpostulateはふつう公準と訳すようです. ある理論体系の基礎として成り立つことを認めて進める言明を指します. 要は証明抜きで正しいと認める言明のことで議論の前提です. 補足でもう少し詳しくコメントします.

第018回 第7文の読解

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第7文の(the purport of ---)から

進捗・TODO・今日のメモ

  • 第7文本体完了
  • TODO をつけた部分を本体に反映

内容: コンテンツ (案) からの転記

en.7

We will raise this conjecture (the purport of which will hereafter be called the Principle of Relativity) to the status of a postulate, and also introduce another postulate, which is only apparently irreconcilable with the former, namely, that light is always propagated in empty space with a definite velocity $c$ which is independent of the state of motion of the emitting body.

jp.7

私達はこの予想を公準の地位にまで持ち上げよう: 以下ではこれを相対性原理と呼ぶことにする. そしてもうひとつ, 光はそれを放射する物体の運動状態によらず, 常に真空中を一定の速度$c$で伝播するという公準を導入する. 一見するとこれは前者と調和しない.

英語の解説
全体構造
  • (主節1) We will raise this conjecture
    • (the purport of which will hereafter be called the Principle of Relativity)
    • to the status of a postulate
  • and
  • (主節2) (we) also introduce another postulate
    • , which is only apparently irreconcilable with the former
    • that light is always propagated
      • in empty space
      • with a definite velocity $c$
        • which is independent of the state of motion of the emitting body
主節1
# (the purport of which will hereafter be called the Principle of Relativity)

修飾はなるべく修飾したい語の近くに置く原則からすれば, これはthis conjectureの補足説明と思えばいいでしょう.

TODO まずは本質的には名詞がひとつ入っているだけ

構造を理解するためにまずwhich節の中身を単純化して考えると which is called Aが見えてきます. これを次のように置き換えれば元の文章です.

  • is $\to$ will be
  • 副詞hereafterを挿入
  • A $\to$ the Principle of Relativity

さてwhich節は明らかに主語がありません. 主語は何だと思えばいいでしょうか? 実は主語はthe purport of this conjectureです. この挿入句が難しいのは主語の判断です. 関係代名詞節として先行詞はthis conjectureであり, これはthe purport of this conjectureという形で入ります.

Purportは「趣旨」と言った意味で, 定冠詞がついていることに注意してください. Conjectureの内容を指しているだけなので, 上の訳では「これ」と軽く訳しています. Hereafterは「今後この論文の中では」と訳すといいでしょう.

The Principle of Relativityはもちろん「相対性原理」です. この時点で既に定冠詞theがついています. 原理や基本法則を追い求める物理でprincipleは最重要単語です. Relativityも相対性理論のrelativityなので当然大事です. 単語の先頭が大文字になっていることにも注意してください.

主節2
# 全体構造

まず等位接続詞の and でつながっていることに注意してください. 当然同じ系統の意味の文になっているはずです. その上で第二文を見ると主語がありません. この主語は第一文と同じweと判定すればいいでしょう.

改めて文構造を意識した形で主節2を再掲します.

TODO 厳密には助動詞willも補足すべき

  • (主節2) (we) also introduce another postulate
    • , which is only apparently irreconcilable with the former
    • , namely, that light is always propagated
      • in empty space
      • with a definite velocity $c$
        • which is independent of the state of motion of the emitting body
# we also introduce another postulate

主節2の基本構造で, ごく単純な第三文型SVOです. Introduceは「導入する」という意味です. Alsoはtooと同じで, postulateにanother (an + other)という不定冠詞がついています. これが何かが気になるのでもちろん補足説明があります. ひとつはthat節の内容で, もうひとつは関係代名詞の非制限用法で説明が入っています.

# , which is only apparently irreconcilable with the former

きちんと意味が取れることが大事なので文型の解釈には自由度があります. ここではis irreconcilable withを動詞句と見て第三文型SVOとして考えます.

TODO 主語の話を盛り込む

Only apparentlyは副詞がふたつついているだけで, 文法的な問題はありません. 目的語のthe formerは「前者」という意味です. 主節1のa postulateと対比させています. やはり定冠詞に注意してください. ちなみにformerの対義語はlatterで「後者」です.

Apparentlyは「一見」という意味の副詞で, irreconcilableは「調和しない, 矛盾する」と言った意味の形容詞です.

読解上面白いのは動詞・副詞のセットとその意味です. 動詞句中のirreconcilableのirは否定の接頭辞です. そしてonly apparentlyは「見かけだけ」と訳せるのでやや否定的な意味があります. 「見かけ上は第一の公理と矛盾しているように見えるかもしれないが実はそうではない」という挿入です. ちなみにapparentlyは「見かけ上」と「明白に」という相反するような意味があります. ここの訳語では「見かけ上」を取りました.

# , namely, that light is always propagated in empty space with a definite velocity $c$

Another postulateの実質的な内容であるthat節を見てみましょう. 基本構造は次の通りでごく単純です.

TODO that節の中身は完全な文になっている

  • light is propagated

受身になっていて面倒ではあるもののpropagateの意味も一緒にして考えると, 形式的にはbe propagatedが動詞(句)の第一文型SVとみなせます. 受身系はふつうの第五文型の枠組みに入りません. 無理に五文型の枠には入れずに柔軟に考える必要があります. 物理学でのlightはふつう無冠詞扱いのようです.

TODO light は物理でいつも無冠詞というわけでもないので記述整理

さて, 第一文型と思うとその存在の様子が気になります. 存在する場所はin empty spaceで示されていて, どのような状態で存在するかがwith a definite velocity $c$で示されています. ここでspaceは無冠詞, velocityはaと不定冠詞がついていることに注意しましょう. つまりvelocityは正体不明なので補足説明がほしくなります. それが最後のwhichの関係代名詞節です.

意味を確認します. Namelyは「つまり」という意味の副詞で, lightはもちろん「光」です. Alwaysは「常に」という意味の副詞で, propagatedは「(光の波が) 伝わる, 伝播する」という意味のpropagateの過去分詞です.

TODO 補足に回す

Empty spaceは直訳すると「何もない空間」という意味で, 物理の文章の日本語訳としては「真空」(vacuum)と訳すべきでしょう. ここでは無冠詞で出てくることに注意してください. 物理・数学ではいろいろな空間が出てくるのでspaceはよく可算名詞として出てくる一方, ここでは抽象的な空間の意味で捉えています. 真空という概念自体も物理ではなかなか厄介で, 例えば場の量子論では理論としてもいろいろな真空があり, 具体的な可算名詞として捉えなければいけない場面もよくあります. 他にも例えば日本工業規格(JIS)では「大気圧よりも低い状態」を真空と定義しています.

A definite velocityは「一定の速度」です. Velocityは力学で出てくる速度でやはり重要単語です.

相対論: rapidity

イタリックの小文字の$c$は一定不変の光速を表す定数として物理の中で使われています. この英訳では現在の慣習に合わせて小文字の$c$を使っていますが, アインシュタインのドイツ語の原論文では大文字の$V$で書かれています. もちろん歴史的な事情によります.

# which is independent of the state of motion of the emitting body

A definite velocity $c$の補足説明のwhich節です. 基本構造はwhich is independent of the state ---です. 動詞がisなので主語は単数であり, そこからもa velocityが先行詞が主語になっていることが推測できます.

ここもbe independent ofを動詞句とした第三文型SVOとみて考えましょう. 目的語はthe state of motionです. 名詞stateに定冠詞がついているのが重要です. 何のmotionなのかを明確にするため, さらにof the emitting bodyがあります. ここにもbodyに定冠詞がついていることに注意してください. このふたつのtheは日本人にはなかなかつけられない定冠詞ではないでしょうか.

意味を確認します. Independentは「独立した, 依存しない」という意味の形容詞です. Stateは「状態」でmotionは「運動」です. Emit (emitting)は「放出する」という意味の動詞で, ここでは光を放出しているという意味です. 光の放出にはemitを良く使うので覚えておきましょう. 似たような意味で輻射(放射)という言葉があり, ふつうradiationを使います. Bodyは「物体」です.

Light is propagatedのpropagatedは日本語では「光が進む」と訳して構いませんが, 英語では「伝播する」を意味するpropagateを使うことに注意してください. Empty spaceは「真空」です. ふつうはvacuumと書きます. ドイツ語で(im) leeren Raumeと書かれているの忠実に訳したのでしょう.

TODO 記述整理

A definite velocity $c$「一定の速度$c$」です.

TODO 補足

物理としての注意を入れておくと, 速度$c$で進むのは真空中だけであることも注意してください. 現代物理では定数であることを強調して光の速度にはconstantの$c$を使います. ドイツ語原文では真空中の光速を大文字の$V$で表しています.

# 読解上のポイント

「一見すると前者と調和しない」という部分です. 何故かというとこの文で説明がないからです. 人によってはこの部分の理解でつまずくでしょう. このあとの本文で追加説明があるかもしれませんし, 論文を読むレベルの人間なら何も言わなくてもわかるだろうと思われて省略されているのかもしれません. 何にせよ論文読解の上でひとつ問題が提起されたとも読めます. 文章に接するとき著者との対話をしているスタンスで臨むのが大事です.

念のため調和しない(ように見える)理由を簡単に説明しておきましょう. これは高校レベルの力学を知っていれば解決する問題です. 電車の中でボールを投げたとき, ニュートン力学ではそのボールの速度には電車の速度も加えるべきですが, 光に対してはそう考えないと言っています.

# 全体のまとめ

この文は副詞や挿入句でくどいくらいに細かい注意が出てきました. アインシュタインの原論文ではこれからもこの手の細かい注意がくどいくらいに出てきます. 当時の理論物理の混沌とした状況を少しでもクリアにしようという意識を感じます.

念のため書いておくとここでの「見かけ上の矛盾」は次のような意味です.

  • 第一公理は「絶対静止の概念の否定」である.
  • 第二公理は「光速は常に定数であるという絶対性」である.
  • ニュートン力学では相対速度を考える.
    • 光速は放射された物体の速度を考える必要がある.
    • 第二公理ではその事情を無視している.
    • 第一公理からすると光が出てくる物体は静止しているようにみなさなければいけないはず.
    • どう考えると整合的になるのか?

この「見かけだけの」矛盾をどう乗り越えるかが論文でも当面のテーマになるはずです. そう思って読解を進めてください.

第019回 第7文の補足・第8文の読解

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第7文の補足から

進捗・TODO・今日のメモ

  • 第7文・第8文の本文終了
  • 残るは第8文補足のところ
  • 次回: 第8文の補足と第9文

内容: コンテンツ (案) からの転記

第7文
# en.7

We will raise this conjecture (the purport of which will hereafter be called the Principle of Relativity) to the status of a postulate, and also introduce another postulate, which is only apparently irreconcilable with the former, namely, that light is always propagated in empty space with a definite velocity $c$ which is independent of the state of motion of the emitting body.

補足
# 相対性原理

相対性原理が出てくる文なのでやはり決定的に大事な文です.

論文が書かれた時点では一次の微少量, つまり一次近似まででしか成り立つことがわかっていない言明がありました. 高次まで成り立つかわかりませんし, 厳密に成り立つかどうかはなおさらです. これを一気に厳密に成り立つとし, さらに原理のレベルにまで持ち上げるという非常に強い主張をしています.

# 公理・公準

名詞postulateはふつう公準と訳すようです. 数学だとふつう公理はaxiomをあてます. 以下で説明する理由によってpostulateを公理と訳しました.

そもそも公準・公理という日本語自体がわからないでしょうから, 補足しておきます. これはユークリッド幾何に由来する言葉です. 哲学などでは区別して使われているかもしれません. しかし数学や物理では必ずしもはっきりした区別はありません. とりあえずは同じ意味だと思ってもらって構いません.

公理は物理よりも数学や論理学でよく出てきます. ときどき特に公理は「自明な前提」のように言われることもあります. 少し凝った話をしようと思うと初学者にとっては何が・どこか自明かわかりません. 単に理論を進めるための仮定・議論の前提だと思ってください.

# 予想

Conjectureは「予想」と訳します. 数学でもよく使われる単語です. いくつかの傍証があって成り立つとは思われているものの, まだ完全解決にいたらない言明は予想と呼ばれます. 数論に関わるフェルマー予想やゴールドバッハ予想などが有名でしょう. この予想がconjectureです.

# 光速を表す文字$c$

ドイツ語原文とフランス語では大文字$V$を使っていて, 英語版では$c$を使っています. 現代物理では英語版のように光速には小文字の$c$をあてています. これは真空中での光速の値を定数として採用していて, 時空の単位の基準になっています.

もちろんドイツ語の原論文が書かれた頃はそうした認識がなかったので, 単に論文中で特殊な意味を持たせた大文字の$V$で書かれています.

# 黒体輻射

Radiation (輻射)はアインシュタインの他の仕事とも関係が深いので, 簡単に補足説明しておきます. 最近は放射と呼ぶ方がよくあるかもしれません.

黒体輻射(black body radiation)の議論があり, 同じ1905年にアインシュタインが革命的な論文を書いています. どのくらい革命的かと言えば, アインシュタインのノーベル賞の業績はこの黒体輻射に関する光電効果の説明に対してあてられたほどです. 正確にはこれ以外にもいくつか光電効果の論文を書いていてそれらも含むようですが, 1905年の論文の意義は薄れません.

第8文
対象文
# en.8

These two postulates suffice for the attainment of a simple and consistent theory of the electrodynamics of moving bodies based on Maxwell's theory for stationary bodies.

# de.8

vor = fore (before) aus = out voraus = ahead, before setzungen = setzen -> Setzung -> Setzungen Umgebung unter - under

Diese beiden Voraussetzungen genügen, um zu einer einfachen und widerspruchsfreien Elektrodynamik bewegter Körper zu gelangen unter Zugrundelegung der Maxwellschen Theorie für ruhende Körper.

# fr.8

pour = for former = form

Ces deux postulats suffisent entièrement pour former une théorie simple et cohérente de l'électrodynamique des corps en mouvement à partir de la théorie maxwellienne des corps au repos.

# it.8

Questi due postulati bastano a pervenire ad un'elettrodinamica dei corpi in movimento semplice ed esente da contraddizioni, costruita sulla base della teoria di Maxwell per i corpi in quiete.

# sp.8

Basándonos en la teoría de Maxwell para cuerpos en reposo, estas dos hipótesis son suficientes para derivar una electrodinámica de cuerpos en movimiento que resulta ser sencilla y libre de contradicciones.

# ru.8

Эти две предпосылки достаточны для того, чтобы, положив в основу теорию Максвелла для покоящихся тел, построить простую, свободную от противоречий электродинамику движущихся тел.

# sch.8

由这两条公设, 根据静体的麦克斯韦理论, 就足以得到一个简单而又不自相矛盾的动体电动力学。

# jp.8

静止物体に対するマクスウェル理論に基づいて単純で首尾一貫した運動物体の電気力学の理論を構築するには, これらふたつの仮定で十分である.

英語解説
# 文構造
  • These two postulates suffice
    • for the attainment of a simple and consistent theory
      • of the electrodynamics of moving bodies
      • based on Maxwell's theory for stationary bodies.

主な構造はごく単純な第一文型 SV です.

  • These two postulates suffice.

もちろん suffice for を動詞句とみなして次のような第 3 文型 SVO を基礎構造と見ても構いません.

  • These two postulates suffice for the attainment.

ここでは前者の解釈を取ります.

前文で公理をふたつ設定しているのでその存在の様子を議論する文です. 詳しく見ましょう.

# These two postulates suffice

先程コメントした通り第一文型 SV で, とにかく these two postulates が存在していて, その存在の様子が suffice です. 端的な訳としては「これらふたつの公理 (公準) で十分である」でいいでしょう.

この論文全体の特徴がここにも現れています. 何かといえば these と two という修飾です. These だけでも十分なところを「ふたつの公理」だと強調しているのです. ふたつ大事な仮定をしていて, 両方それぞれ大事な意味があるからそれを絶対に忘れるな, というメッセージと思ってもいいでしょう.

さて, 存在の様子が suffice 「十分」なのはわかりました. もちろんどう十分なのかが気になります. それが次の for the ataignement で示されています.

# for the attainment of a simple and consistent theory

主な構造を第 3 文型 SVO と思うなら目的語にあたります. 端的な訳としては「単純で首尾一貫した理論を得るためには」でいいでしょう.

まず attainment に定冠詞がつき, theory に不定冠詞 a がついていることに注意します. つまり theory は初出のよくわからない概念なので, あとに補足説明が来るはずです.

この the attainment の the は日本人にはなかなかつけられない定冠詞です.

TODO この the の気分をどう説明するか?

Attainment はもともと他動詞 attain なので, of a simple and consistent theory 「単純で首尾一貫した理論」は目的語です. 直接的な英文理解を超えた物理としての気分を補足で解説します. 興味があれば読んでみてください.

ここで a theory で不定冠詞がついているので補足説明が必要です.

# of the electrodynamics of moving bodies

A theory の直接的な補足説明をしている句で「運動物体の電気力学」と訳せばいいでしょう. タイトルで提示された問題を解決するにはこのふたつが重要だという宣言です. 学問名・分野名を表す electrodynamics には定冠詞 the がついていて moving bodies は無冠詞の複数であることに注意しましょう. ずっと議論をしているから the electrodynamics であり, moving bodies については特定の運動物体ではなく一般的な運動物体を指しています.

# based on Maxwell's theory for stationary bodies

最後の補足で「静止物体に対するマクスウェル理論に基づいて」と訳せばいいでしょう. ここでは based on 「---に基づいて」を動詞句とみなして目的語が Maxwell's theory と捉えてください. さらに何に対する理論なのかを for stationary bodies で表しています.

この句の based の意味上の主語は the electrodynamics でいいでしょう. 意味的にも「運動物体の電気力学は静止物体に対するマクスウェル理論に基づく」と綺麗におさまります.

定冠詞 the の限定がどうかかるかをここで補足説明しているともみなせます. TODO 何を言っていたのか忘れてしまった

Theory には冠詞の代わりに Maxwell's が定冠詞としてはたらいています. 一方で stationary bodies は複数で冠詞なしです. こちらも特定の静止物体ではなく一般の静止物体に言及しています.

# 単語
  • these = これら
  • two = 2
  • ★ postulates $\gets$ postulate = 公理
  • ★ suffice = 十分である
    • cf. it suffices to show that = 「that 以下を示せば十分である」
  • for: 前置詞
  • the: 定冠詞
  • ★ attainment = 到達, 達成, 得ること
    • cf. The function $f$ attains its maximum at $x$. = 「関数 $f$ は $x$ で最大値を取る」
  • of: 前置詞
  • a: 不定冠詞
  • simple: 単純な
  • and: 接続詞
  • ★ consistent: 首尾一貫した
  • theory: 理論
  • ★ electrodynamics: 電気力学
  • moving $\gets$ move = 動く
  • ★ bodies $\gets$ body = 物体
  • based $\gets$ base = 基づく
  • on: 前置詞
  • ★ Maxwell's = マクスウェルの
    • Maxwell's theory = マクスウェルの理論, 電磁気学
  • ★ stationary = 静止した
補足
# エーテル

歴史的にエーテルの影響は甚大で定冠詞 the で「あなたもご存知の」と言われるほどです. くり返しを厭わずコメントしましょう. 次にコメントする「単純で首尾一貫した理論」ともつながる話です.

もともと振動・波動についてはフックやニュートンによる理論がありました. 波とは何なのかという話です. いまとなっては「悪い名前」であることがわかっている量子力学の「波動関数」, そして昔の混乱を表す「量子力学的粒子の粒子性・波動性」があるように, 全くもって簡単な話ではないのです.

エーテルに話を戻しましょう. 振動・波動, 略して波が何かといえば媒質の運動の様子なのです. 目に見えない音にしても, 高校物理で勉強するように媒質である空気の粗密の伝播の様子が音・音波として伝わります. 光についても同じように媒質の運動の様子だと思いたくなるのが物理学者の人情です. そこで想定された媒質がエーテルです.

# 単純で首尾一貫した理論

オッカムの剃刀と呼ばれる有名な議論があります. これは「ある事柄を説明するためには、必要以上に多くを仮定するべきでない」とする指針です. これは一般的に理論を作るときの指針とされていて, ゴリゴリに理屈が大好きな西洋に限らず, 歴史上で世界中の人類が採用してきていると思います.

首尾一貫性はともかくなぜ単純性を求めるか, 簡単に説明しておきます. 一般に余計なことをいろいろ考えていると混乱するからです. たいていの人間は複雑なことを処理しきれないといっても構いません. まずはできる限り単純にし, 必要に応じて条件をつけて複雑にしていき, 複雑すぎて扱える限度を超えてきたらまた単純化できないか考える, このステップが基本的です.

物理での典型例が天動説と地動説です. 史実はともかく一般に流布していて私が把握しているのは次のような見解です. 大昔は観測精度が低く, 天動説でも地動説でも科学としての精度に問題はありませんでした. しかし時代が上がるにつれてもっと詳しく知りたい・知るべき流れが生まれ, 観測精度が上がると天動説を指示していては不都合な観測結果が出てきました. いわゆる周転円で天動説を修正できはしても, 理論がどんどん複雑になってしまったのです. そこで地動説を採用すると余計な周転円が一気に消えて理論が単純になりました. こうした歴史的な経緯もあって, 特に自然科学を考える上ではなるべく単純な理論を取ることが大事です.

念のため書いておくとここで問題になっているのは理論が採用する仮定の単純さです. そこからの議論が複雑になるのは問題になりません. 理論の単純さは採用する仮定の単純さと少なさです.

この文で問題になった単純さはエーテルの存在を仮定するかどうかです. 先ほど力学的な振動波動の伝播では媒質が必要と言いました. 光は電磁波なので光の伝播にも媒質が必要なのではないかというのです. しかしそれが何かはよくわからないのでエーテルという媒質を想定しました. 正体不明の存在を仮定する複雑さを削れるので嬉しいという理論の優越性を主張しているのです.

第020回 第8文の補足・第9文の多言語比較

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第8文の補足と第9文

進捗・TODO・今日のメモ

  • 第8文の補足終了
  • 第9文の多言語比較
  • 次回: 第9文の英文詳細

内容: コンテンツ (案) からの転記

第8文
対象文
# en.8

These two postulates suffice for the attainment of a simple and consistent theory of the electrodynamics of moving bodies based on Maxwell's theory for stationary bodies.

補足
# エーテル

歴史的にエーテルの影響は甚大で定冠詞 the で「あなたもご存知の」と言われるほどです. くり返しを厭わずコメントしましょう. 次にコメントする「単純で首尾一貫した理論」ともつながる話です.

もともと振動・波動についてはフックやニュートンによる理論がありました. 波とは何なのかという話です. いまとなっては「悪い名前」であることがわかっている量子力学の「波動関数」, そして昔の混乱を表す「量子力学的粒子の粒子性・波動性」があるように, 全くもって簡単な話ではないのです.

エーテルに話を戻しましょう. 振動・波動, 略して波が何かといえば媒質の運動の様子なのです. 目に見えない音にしても, 高校物理で勉強するように媒質である空気の粗密の伝播の様子が音・音波として伝わります. 光についても同じように媒質の運動の様子だと思いたくなるのが物理学者の人情です. そこで想定された媒質がエーテルです.

# 単純で首尾一貫した理論

オッカムの剃刀と呼ばれる有名な議論があります. これは「ある事柄を説明するためには、必要以上に多くを仮定するべきでない」とする指針です. これは一般的に理論を作るときの指針とされていて, ゴリゴリに理屈が大好きな西洋に限らず, 歴史上で世界中の人類が採用してきていると思います.

首尾一貫性はともかくなぜ単純性を求めるか, 簡単に説明しておきます. 一般に余計なことをいろいろ考えていると混乱するからです. たいていの人間は複雑なことを処理しきれないといっても構いません. まずはできる限り単純にし, 必要に応じて条件をつけて複雑にしていき, 複雑すぎて扱える限度を超えてきたらまた単純化できないか考える, このステップが基本的です.

物理での典型例が天動説と地動説です. 史実はともかく一般に流布していて私が把握しているのは次のような見解です. 大昔は観測精度が低く, 天動説でも地動説でも科学としての精度に問題はありませんでした. しかし時代が上がるにつれてもっと詳しく知りたい・知るべき流れが生まれ, 観測精度が上がると天動説を指示していては不都合な観測結果が出てきました. いわゆる周転円で天動説を修正できはしても, 理論がどんどん複雑になってしまったのです. そこで地動説を採用すると余計な周転円が一気に消えて理論が単純になりました. こうした歴史的な経緯もあって, 特に自然科学を考える上ではなるべく単純な理論を取ることが大事です.

念のため書いておくとここで問題になっているのは理論が採用する仮定の単純さです. そこからの議論が複雑になるのは問題になりません. 理論の単純さは採用する仮定の単純さと少なさです.

数学: ユークリッド幾何の第五公準. 平行線の話.

この文で問題になった単純さはエーテルの存在を仮定するかどうかです. 先ほど力学的な振動波動の伝播では媒質が必要と言いました. 光は電磁波なので光の伝播にも媒質が必要なのではないかというのです. しかしそれが何かはよくわからないのでエーテルという媒質を想定しました. 正体不明の存在を仮定する複雑さを削れるので嬉しいという理論の優越性を主張しているのです.

第9文
対象文
# en.9

The introduction of a luminiferous ether will prove to be superfluous inasmuch as the view here to be developed will not require an "absolutely stationary space" provided with special properties, nor assign a velocity-vector to a point of the empty space in which electromagnetic processes take place.

# de.9

格: 日本語でも格助詞. 1-4格. 1格: 主格, 「は」「が」. 2格: 「の」 3格: 「に」 4格: 「を」 Die: 女性名詞につく一格の定冠詞 die-der-der-die eines <- ein ドイツ語は(英語と比較したとき)語順がけっこう滅茶苦茶. (英語よりは自由.) 日本語: 格助詞で格を表せる. 格によって単語の役割がわかる. 順番がめちゃくちゃでも意味が通ります. ラテン語: 格が6格. 男性, 女性, 中性名詞. will = wollen, werden werden = become, will erweisen -> weisen <- wise fl = flood, fluent, influence, インフルエンザ Auffassung = auf + fassung = view, understanding fassung = ファスナー comprehend, apprehend hend <- hand, かっちり掴む=理解 aufheben 止揚 eigen = 固有の, schaft=接尾辞 ruhend = 静止 <- rest 分離動詞 zugeordnet <- zu+orden = order geordnet = 過去分詞

Die Einführung eines "Lichtäthers" wird sich insofern als überflüssig erweisen, als nach der zu entwickelnden Auffassung weder ein mit besonderen Eigenschaften ausgestatteter „absolut ruhender Raum" eingeführt, noch einem Punkte des leeren Raumes, in welchem elektromagnetische Prozesse stattfinden, ein Geschwindigkeitsvektor zugeordnet wird.

# fr.9

sera = be動詞の未来形, etre <- raison de etre = 存在理由 il = it que = that espace = space specially = especially like alike vitesse = vital = いきている, 活動的 phenomenon: ギリシャ語 typhoon, phermacy phi

Il sera démontré que l'introduction d'un «éther luminifère» est superflu, puisque selon les conceptions que nous développerons, nous n'introduirons ni un «espace absolument au repos» muni de propriétés spéciales et ni n'associerons un vecteur vitesse à un point où des phénomènes électromagnétiques se déroulent.

# it.9

comme = like quiete = quiet = 静止 = 靜か dotato = donate ad = to, adhere vuoto = vacuum (Vacuum = 真空)

L'introduzione di un "etere luminoso" si dimostra fin qui come superflua, in quanto secondo l'interpretazione sviluppata non si introduce uno "spazio assoluto in quiete" dotato di proprietà speciali, né si associa un vettore velocità ad un punto dello spazio vuoto nel quale abbiano luogo processi elettromagnetici.

# sp.9

フランス語の定冠詞 le, la, les フランス語: -tion 女性名詞 de = of (フランス語)

La introducción de un "éter" resultará ser superflua puesto que de acuerdo a los conceptos a desarrollar no es necesario introducir un "espacio en reposo absoluto", ni tampoco se asocia un vector de velocidad a ninguno de los puntos del espacio vacío en los que se llevan a cabo procesos electromagnéticos.

# ru.9

theory = ギリシャ語 they = 英語

Введение «светоносного эфира» окажется при этом излишним, поскольку в предлагаемой теории не вводится «абсолютно покоящееся пространство», наделенное особыми свойствами, а также ни одной точке пустого пространства, в котором протекают электромагнитные процессы, не приписывается какой-нибудь вектор скорости.

# sch.9

"光以太"的引用将被证明是多余的, 因为按照这里所要阐明的见解, 既不需要引进一个共有特殊性质的"绝对静止的空间", 也不需要给发生电磁过程的空虚实间中的每个点规定一个速度矢量。

# jp.9

この論文で展開される議論は特別な性質を与えられた絶対静止空間を必要とせず, 電磁過程が起こる真空の点に速度ベクトルを割り当てもしないことから, エーテルの導入は不要であることが示されるだろう.

第021回 第9文の読解

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第9文の読解

進捗・TODO・今日のメモ

  • 第9文の読解
  • 次回: 第10文の多言語比較

内容: コンテンツ (案) からの転記

英語と格, 発音と文法
  • 参考: 第11回なぜ英語はSVOの語順なのか?(前編)
  • 音が大事というのを別の視点から話したい
  • 英語で語順が大事な理由: 格がないから
    • 参考: 日本語の格助詞, ラテン語やドイツ語の格変化
  • 昔の英語(古英語)には格があった
  • 格がなくなった理由は何か?
    • 発音の問題
    • 英語は単語の後ろを弱く読むことが多い
    • (格)変化は語尾にある: cf. 三単現のs, 過去分詞の ed, 進行形の ing, 複数系の s
    • 発音(会話)で語尾が聞こえにくい
    • 語尾に大事な情報を載せにくい
    • 格という文法上の重要な情報を語尾に載せにくい
    • 格を消して語順でしばることにした
  • 文章の読解がメインの理工系には(多分)忘れがちな視点: 文章よりも音が先
  • 単語の類似などを追う上でも音は大事
  • 音(発音)が文法に大きな影響を与えることがある
第9文
対象文
# en.9

The introduction of a luminiferous ether will prove to be superfluous inasmuch as the view here to be developed will not require an "absolutely stationary space" provided with special properties, nor assign a velocity-vector to a point of the empty space in which electromagnetic processes take place.

英語解説
# 構造
  • The introduction of a luminiferous ether will prove to be superfluous
    • inasmuch as the view here to be developed will not require an "absolutely stationary space"
      • provided with special properties,
    • nor assign a velocity-vector to a point of the empty space
      • in which electromagnetic processes take place.

これも長い文なので文構造に注意して読みましょう. Inasmuch as は「...だから」「...である限りは」という意味の接続詞で, まずここで文が切れることに注意します. 同じく接続詞の nor にも注意してください.

接続詞に注意しながら各文の骨格を抜き出します.

  • The introduction will prove something.
  • (inasmuch as) the view will not require a space.
  • (nor) the view will assign a velocity-vector.

Nor がつなぐ文がどこと並置されているかは判断が必要です. ここでは inasmuch as と並べた上で省略された主語を the view としています.

# The introduction of a luminiferous ether will prove to be superfluous

各文をさらに詳しく見ます. 文型は第 3 文型 SVO と見るのが素直です. 一方で prove to be の be に注目して第二文型 SVC とみなす手もあります. このとき will be able to と同じように will と prove to が助動詞・一般化助動詞としてはたらいているとみなします. ここでは後者の味方で進めましょう. つまりメインの構造は次の通りです.

TODO どちらでもいいが, きちんと書く.

  • The introduction is superfluous.

まず the introduction「導入」が superfluous「余分」です. 余分な様子を補足するのが will と prove to であり prove は「証明する」なので, この論文で展開される議論が余分であることを示すこと, これからこの論文で展開するという未来または予告を表しています.

ここで introduction には唐突に定冠詞 the がついています. 何の introduction かというと of 以下で示されていて, luminiferous ether 「発光性のエーテル」, いわゆる光の媒質として想定されたエーテルです. この the はこの論文が書かれた時代, もしくは物理学史的な常識として「あなたもご存知, エーテルの導入」という気分を表しているのでしょう. 物理学史やこの論文が書かれた時代背景を知らないと, なぜこれが the なのかは理解できません.

TODO: ether の冠詞は a? 何でだろう? 不思議な使い方ではある. luminiferous がついている ether だから a をつけているのはそれはそう.

# inasmuch as the view here to be developed will not require an "absolutely stationary space" provided with special properties

先程書いたようにメインの構造は次の通りです.

  • the view will not require a space

第 3 文型 SVO です. 主語は the view 「視点」で定冠詞がついているため既知の概念です.

TODO: 既知というわけでもない.

引き続き未来表現の will が出て来ていて, この論文で明らかにされることを示唆しています. 目的語は a space 「空間」と不定冠詞がついているので, まだ説明していない空間概念であることが示唆されます. ふつう space は抽象的な意味を持つ不可算名詞ですが, ここでは不定冠詞がついていて可算化していることにも注意しましょう.

The view は既知なのはいいとして, 具体的にどんな視点なのかが気になります. これは here to be developed で補足されています. To 不定詞句 to be developed はよくある日本語訳で言えば「開発される (視点)」です. ここでは未来表現ともセットで「展開される視点」と思えばいいでしょう. Here は to be developed を補足する副詞と思えばよく, 特に「以下, この論文で」くらいの気分で理解します.

次に目的語の a space の修飾内容を詳しく確認します. これは an absolutely stationary space provided with special properties で, an absolutely stationary space と provided with special properties に分けられます.

まず an absolutely stationary space は「絶対静止空間」と訳せばいいでしょう. 特殊相対性理論では絶対静止という概念が否定されます. 相対性理論の相対性という言葉の由来なので決定的なキーワードです.

後半の provided with special properties は熟語として有名な provide A with B 「A に B を与える」に由来していて, 受身形として A = a space が前に出ていて, B は special properties があたります.

この熟語は with の意味に囚われず provide A (前置詞) B, 特に provide A to B のように考えましょう. この「動詞 A to B」は型として「A を B に向ける」という意味があり, 向け方が動詞の意味で決まります. ここでは provide なので「与える」方向で B に向けています. 前置詞 with を使うのはコロケーションの問題で, 究極的には暗記するしかありません.

# nor assign a velocity-vector to a point of the empty space in which electromagnetic processes take place

まず接続詞 nor 「---もない」に注意してください. Inasmuch as でつながれた前の文は will not と否定形の表現であり, こちらの文でも同じように否定的な内容を伝えていることがわかります. 接続詞 nor は等位接続詞なので前の文と並列的な意味・構造を持つことも示しています. この上で主語がないことにも注意してください. Nor が等位接続詞であることを思えば主語は the view だと思えばいいでしょう. さらに the view が明らかに単数である一方, 動詞は assign と原形です. このギャップを埋めるには前の文の動詞が will not require で助動詞 will があることに注意し, will が省略されていると見抜く必要があります. 名詞の単複は常に意識しましょう.

ここまで来れば次の基本的な構造がわかります.

  • (nor) the view (will) assign A to B
    • A: a velocity-vector
    • B: a point of the empty space

構造としては assign A to B 「A を B に割り当てる」です. ここもやはり「動詞 A to B; A を B に向ける」の構造があり, 向け方が assign で指定されています.

文法上の直接的な目的語は a velocity-vector 「速度ベクトル」です. 速度・速さといえば speed をイメージするかもしれません. しかし物理で速度はここで出てくる velocity です. 高校物理でなぜ速度に v を使うかといえばこの velocity からです. 大学の物理では状況によって明確なので必ずしも厳密に使い分けないものの, 一般には速度はベクトルで速度の大きさである速さはスカラーで speed です.

TODO: 速さは本当にspeedか? あとで調べる.

不定冠詞 a がついていることも注意してください. この文全体の意味を考えると, a vector を a point に割り当てるという形になっていて, 不定冠詞の意味は「あるひとつのベクトルをある点に割り当てる」ことを意味しています. これは$v = v(x,y,z)$というベクトル値関数を考えるといっても構いません. 正確には nor assign なので「こういうベクトル値関数$v$を考えない」です.

TODO: 不定冠詞というより単数であることが大事.

Assign A to B の B にあたる a point を考えましょう. 不定冠詞 a の意味は上で説明しました. A point では一般的すぎてよくわからないので of the empty space と補足があります. The empty space は字義通りには「何もない空間」であり, 物理としては「真空 vacuum」と言うこともあります. ここで真空に the がついていることに注意してください. 例えば第 7 文では無冠詞で empty space が出てきます. 既に言及した empty space であることも示唆しています.

TODO: 説明が変な気がする. 真空は一つしかない? 場の量子論ではいろいろな真空がある.

最後に in which での関係代名詞があります.

  • in which electromagnetic processes take place

動詞 (句) が take place 「起きる・起こる」で三単現の s がなく, electromagnetic processes という複数形の名詞があるので, これがこの関係代名詞節の主語・動詞とみなして問題ないでしょう. いま take place で自動詞扱いなので第一文型 SV です. どこで起きるのかが気になるわけで, それが in which の in で示されています. 当然先行詞が何かが気になります. 何らかの意味で場所であるべきで, 関係代名詞はふつう直前の名詞にかかるので素直に the empty space が先行詞と思えばいいでしょう.

TODO: エーテル: 電磁波としての光が伝播する媒質.

ここで注意してほしいことがあります. 前置詞 in は意味として「広がりの中にある」ことを表し, in space のような使い方をするのがふつうで in a point は不自然です. さらに point にはふつう at a point と 1 点を指す at が出てくるのがふつうなので, in which の先行詞としてはやはり a point ではなく space を選ぶべきです. また electromagnetic processes と複数の process が起こる場所としても, 1 点よりは広がりのある空間が適切です.

TODO: 一点の部分は説明微妙なので削るか書き換えるかする.

まとめると, in which の先行詞は文法的・機械的に直前の名詞と思って問題はありません. 一方で in との対応や意味的な対応からも直前の名詞 space を先行詞にするべきことが示唆されます. たくさんの「当たり前」が重なりあっていると言っても構いません. この当たり前をきちんと積み重ねていくと英語に対する感覚が養われていき, 文章を正確に読み書きできるようになります.

補足
# 電磁過程が起こる真空の点に速度ベクトルを割り当てもしない

これは絶対静止空間が存在しないのだから, それに対する速度ベクトルが何かを考える必要もないという意味です.

TODO: 何を言おうとしたか? マイケルソン-モーリー: 媒質(エーテル)の相対的速度を測ろうとして相対速度が検出できなかった実験.

このあたりは相対性理論にとって本質的な物理の内容に踏み込んだ議論なので, 物理の話をせずに済ませることはできません. そして英語の解説を中心とするこの講座では説明しきれない部分です. ぜひ物理として相対性理論をきちんと勉強してみてください.

第022回 第10文の読解

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第10文の読解

進捗・TODO・今日のメモ

  • 対象文の多言語比較まで

内容: コンテンツ (案) からの転記

第10文
対象文
# en.10

The theory to be developed is based ---like all electrodynamics--- on the kinematics of the rigid body, since the assertions of any such theory have to do with the relationships between rigid bodies (systems of co-ordinates), clocks, and electromagnetic processes.

# de.10

der: 男性名詞につく die: 女性名詞または複数形 das: 中性につく. der, die, das は名詞の格に合わせて変わる. der des dem den (1-4格) die der der die das dem des das (怪しい) die der den die

ドイツ語の名詞は必ず先頭が大文字.

jede = each, any andere = other auf = over da = then aus = out Aussagen = out say = 外に出して言う Beziehungen <- Beziehung zwei = two Uhr = clock <- hour = fr. horloge = it. orolog

Die zu entwickelnde Theorie stützt sich --- wie jede andere Elektrodynamik --- auf die Kinematik des starren Körpers, da die Aussagen einer jeden Theorie Beziehungen zwischen starren Körpern (Koordinatensystemen), Uhren und electromagnetischen Prozessen betreffen.

be + treffen

# fr.10

Comme = like pour = for toute <- tout = total autre = other

le = 男性名詞につく定冠詞 la = 女性名詞 les = 複数形 sur <- surface, surrealism = 超現実的 cinématique = cinema 映画 poor man = 貧しい男, 貧相な男 man poor, poor man dans = Then -tion = 名詞化, 女性名詞 de = of nous = we devons = (直説法の)現在形 avec = with

Comme pour toute autre théorie électrodynamique, la théorie proposée s'appuie sur la cinématique des corps rigides. Dans la formulation de toute théorie, nous devons composer avec les relations entre les corps rigides (système de coordonnées), les horloges et les phénomènes électromagnétiques.

# it.10

altra = alter = other una = uno = one, a (tra <- traverse <- sur?)

La teoria da svilupparsi si fonda - come ogni altra elettrodinamica - sulla cinematica dei corpi rigidi, poiché le affermazioni di una tale teoria riguardano relazioni tra corpi rigidi (sistemi di coordinate), orologi e processi elettromagnetici.

Maria, Mario

ある言語では連続できない文字がある. flower = フィレンツェ fi

# sp.10

La teoría a desarrollar se basa - como cualquier otra electrodinámica - en la cinemática del cuerpo rígido porque las afirmaciones de cualquier teoría involucran relaciones entre cuerpos rígidos (sistemas de coordenadas), relojes y procesos electromagnéticos.

rigid body = star Körpern

# ru.10

Развиваемая теория основывается, как и всякая другая электродинамика, на кинематике твердого тела, так как суждения всякой теории касаются соотношений между твердыми телами (координатными системами), часами и электромагнитными процессами.

# sch.10

这里所要闸明的理论 ------象其他各种电动力学一样------ 是以刚体的运动学为根据的, 因为任何这种理论所讲的, 都是关于刚体(坐标系)、 时钟和电磁过程之间的关系。

# jp.10

全ての電気力学と同じように, これから議論する理論は剛体の運動学に基づく. そのような理論に関する主張は何であれ, 剛体 (座標系), 時計, 電磁過程の間の関係を扱うからである.

第023回 第10文の読解

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.
記事公開手順
  • 動画が変換でき次第, YouTube にアップしておく
  • md を整理しつつオリジナルのコンテンツに追記する
  • md の「講義動画と関連リンク」を書き換える
    • YouTube へのリンクのタイトル・URL
    • 自サイト記事へのリンク URL
  • ブログに記事を上げる
    • URL スラッグは「studygroup-for-relativity」
    • Twitter で共有
  • YouTube のタイトルと説明欄
    • タイトルは md・ブログ のタイトル
    • 説明欄は次の通り
1
2
3
4
5
6
7
この動画に特化したリンク先は次の通りです。

(講義動画と関連リンクの内容)

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)
  • 動画を公開して Twitter・Slack で共有
  • md を GitHub にアップロード

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください.

勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します.

適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

今日の予定

  • 第10文の読解

進捗・TODO・今日のメモ

  • 第10文終了
  • TODO, memoの部分を本編に反映させること!
  • 次回予定: 第11文の多言語比較

内容: コンテンツ (案) からの転記

第10文
対象文
# en.10

The theory to be developed is based ---like all electrodynamics--- on the kinematics of the rigid body, since the assertions of any such theory have to do with the relationships between rigid bodies (systems of co-ordinates), clocks, and electromagnetic processes.

# de.10

der: 男性名詞につく die: 女性名詞または複数形 das: 中性につく. der, die, das は名詞の格に合わせて変わる. der des dem den (1-4格) die der der die das dem des das (怪しい) die der den die

ドイツ語の名詞は必ず先頭が大文字.

jede = each, any andere = other auf = over da = then aus = out Aussagen = out say = 外に出して言う Beziehungen <- Beziehung = relation zwei = two Uhr = clock <- hour = fr. horloge = it. orolog

zwischen = between

Die zu entwickelnde Theorie stützt sich --- wie jede andere Elektrodynamik --- auf die Kinematik des starren Körpers, da die Aussagen einer jeden Theorie Beziehungen zwischen starren Körpern (Koordinatensystemen), Uhren und electromagnetischen Prozessen betreffen.

be + treffen

# jp.10

全ての電気力学と同じように, これから議論する理論は剛体の運動学に基づく. そのような理論に関する主張は何であれ, 剛体 (座標系), 時計, 電磁過程の間の関係を扱うからである.

イオンの電気力学, 電子の電気力学 何とかさんの提唱する理論 相対論的粒子の上で適当な仮定がくっつく プラズマ

英語解説
# 文構造

基本の文構造は次の通りです.

  • The theory to be developed is based on the kinematics
    • of the rigid body
    • ---like all electrodynamics---
  • since the assertions of any such theory have to do with the relationships
    • between rigid bodies (systems of co-ordinates), clocks, and electromagnetic processes.

まず接続詞の since に注目しましょう. 中学高校ではあまり見かけないものの, 専門的な文章では as, because のように理由を説明する従属節を導きます. 前文からの流れを重視して先に結論を書き, そのあとに理由を補足している構造を見抜いてください.

TODO since, asのニュアンスの話 because > since > as

# The theory to be developed is based on the kinematics of the rigid body

形式的には受動態で書かれていて第一文型の趣があります. しかしここでは is based on を熟語または 1 かたまりの動詞句とみなして第三文型SVOとみなした方が素直です. 主語は The theory, 動詞は is based on, 目的語は the kinematics of the rigid body です.

memo: isを動詞でSVCの方がよくある? (趣味の話もある?) based onで形容詞句と取る.

先程書いたように動詞は is based on で熟語「---に基づく」という意味です. Base は名詞で基地といった意味も持ち, 前置詞 on の「上にいる」という意味から字義通りには「拠点の上に置かれた」という意味で, 転じて「---に基づく」になります.

主語は the theory to be developed で定冠詞が入っています. ここでのポイントは定冠詞 + to be developed です. まず定冠詞がついているので「あなたもご存知の理論」であり, ここまで紹介してきた理論です. いまは論文の前文でありここまで紹介してきたのはあくまで理論の概要なので, 正式には論文の続く記述で詳しく議論する理論です. それが to be developed で表されています. もちろん形式的には単なる to 不定詞句の形容詞的用法です. しかし前置詞 to には行き先指定の役割があり, そこから目的に向かっていく動的なイメージもあります. つまり「これまで概要しか語っていなかったが, 詳しい話はこれから発展させる」という意味も込められています. 前文でも出てきた the view here to be developed と同じです.

目的語は the kinematics of the rigid body で名詞は両方定冠詞つきです. この kinematics は学問名「運動学」で s がついていても単数です. 単純な学問名には冠詞がつかないので何か特定の運動学のはずです. それが of the rigid body 「剛体」で示されています. この定冠詞は特定の剛体を意識しているというより, 他の何かの運動学ではなく総称的・一般的な剛体の運動学という意味です.

特定の対象を指す定冠詞と総称的な定冠詞の用法については文法編, 冠詞の「定冠詞 the の使い方: all の意味, 総称的な用法」を参考にしてください.

  • The electron is a fundamental particle with negative electric charge that is found in atoms.
    • 電子は負の電荷を持った基本粒子であり, 原子の中に見られる.
  • The tiger is an endangered species.
    • 一般に虎は絶滅危惧種です.
  • The tiger suddenly jumped up.
    • その虎は突然飛び上がりました.
# ---like all electrodynamics---

単純な挿入です. 基本的には修飾したい語の近くに置きます. ここでは動詞の近くにあることもふまえ, 素直に like は副詞句を導いていると見ます. 訳としては「全ての電磁気学のように」でいいでしょう.

TODO electrodynamicsはallがかかるので複数

補足で物理として注意するべき点を説明しています. 興味があれば眺めてみてください.

# since the assertions of any such theory have to do with the relationships

Since は理由に関する従属節を導く接続詞です. 主な構造は次のようになっていて第三文型SVOです.

  • the assertions have to do with the relationships

もちろん主語は the assertions, 動詞句は have to do with, 目的語は the relationships です. Of any such theory は主語を補足説明する形容詞句です.

主語の assertions 「主張」に the がついていることに注意しましょう. どんな主張かといえば of any such theory 「そのような理論のどれも」です. ここでの such はここまでの議論の流れを受けていて, 主節の主語の the theory と同じ類の理論という意味です.

TODO any --- と every --- でどんな感覚の違いがあるだろうか? anyだと例外がないとかいう感じのニュアンス入る.

動詞に関しては熟語 have to do with A 「A を扱う」を覚えてください. これは to do with A を to 不定詞の名詞用法と思い, 「A と一緒にするべきことを持つ = A に対処する, A を扱う」と翻訳できれば覚えていなくても理解・対処はできます. しかし語学に限らず, 何をするにしても一定量の暗記は絶対に必要です. 覚えるべきはきちんと覚えましょう.

TODO haveはいろいろな用法があるので, それ自体を深く覚えつつ応用できると便利だし, その必要がある. cf. I have a headache.

最後の the relations 「特定の複数の関係」は定冠詞がついて複数であることに注意しましょう. 関係である以上, 何かと何かを結びつける必要があり, その補足説明が必要で, それがまさに between 以下で説明されています.

memo: of the relations はネイティブでもtheを入れるかわかれる.

# between rigid bodies (systems of co-ordinates), clocks, and electromagnetic processes

The relations が何の間の関係なのかを示す形容詞句です. 全て冠詞なしの複数形で, 一般的な剛体 (座標系, systems of co-ordinates), 時計, 電磁過程です. 座標系は単に coordinate system と書く方が多いでしょう. ここで Co-ordinates と複数なのは座標の成分が空間部分で x, y, z の 3 つに時間部分を加えた 4 つあるのと対応しています.

(TODO co-ordinates の複数の説明は上の説明で大丈夫?) 一次元の場合は単数になる用例が多い. 高次元だとふつう複数を取る. coordinate systemだとcoordinateが形容詞扱いで形式的に単数で書く.

剛体 (座標系) も電磁過程も, この時点で何を意図しているかまだわかりません. そしてこの関係を追いかけることこそまさに運動学の部の内容で, 特殊相対性理論の力学の核です.

# 単語
  • the = 定冠詞
  • theory = 理論
  • to: 前置詞
  • be: be 動詞の原形
  • developed $\gets$ develop = 発展させる
  • is $\gets$ be
  • based $\gets$ base
    • be based on A: A に基づく
  • on: 前置詞
  • like = ---のように
  • all = 全て
  • electrodynamics = 電気力学
  • on: 前置詞
  • kinematics = 運動学, 動力学
  • of: 前置詞
  • rigid = 堅くて曲がらない
  • body = 物体
    • rigid body = 剛体
  • since = ---だから (接続詞)
  • assertions $\gets$ assertion = 主張
  • any = どんな---でも
  • such = そのような
  • theory = 理論
  • have = 持つ
    • have to do with A = A を扱う
  • do = する
  • with: 前置詞
  • relationships $\gets$ relationship = 関係
  • between = ---の間の
  • bodies $\gets$ body
  • systems $\gets$ system = 系
  • co-ordinates = 座標
    • system of co-ordinates = 座標系
  • clocks $\gets$ clock = 時計
  • and = ---と---
  • electromagnetic = 電磁気的な
  • processes $\gets$ process = 過程
補足
# 力学と電磁気学の齟齬

挿入句の ---like all electrodynamics--- に対する補足です. ここを物理としてどう読めばいいかが問題です. ここで細かい議論はしきれません. 興味があればぜひ物理としてきちんと勉強してみてください.

さて, この当時の問題を現代的に整理すると, 力学の基礎方程式であるニュートンの運動方程式を不変にする座標変換がガリレイ変換である一方, このガリレイ変換が電磁気学の基礎方程式であるマクスウェル方程式を不変にしない問題がありました. 説明しきれないところなのでなぜ座標変換が大事かには触れません.

高校でも大学でも物理は力学からはじめます. 直観的であり, 必要な数学的知識も少なく済み, 計算練習のテーマもたくさんあれば物理の歴史上重要な問題も揃っているといった勉強のしやすさもあります. そしてそれ以上に物理で重要な概念がたくさん出てくるのです. 自然のモデル化, モデルの階層性や近似計算などの都合もあります. ある意味で一番物理らしい理論が力学なのだと言っても過言ではありません.

一方でマクスウェル方程式は電磁気学の基本中の基本です. これらを理論的・数学的に考える上で方程式を不変にする座標変換はやはり基本的な概念で, 力学と電磁気学で齟齬があるというのは物理の理論としては気分がよくないのです.

ここでマクスウェル方程式を不変にする変換はローレンツ変換と呼ばれ, まさに特殊相対性理論の誕生前夜の 19 世紀後半から 20 世紀冒頭に重要性がはっきりしました. 名前がついている通り, ローレンツが発見・整理した概念・議論です. ただローレンツは数学的にそうなると主張しただけで, これの物理的な意義を深めるにいたらなかったと言われています. そしてこれらの齟齬やローレンツ変換の物理を明らかにしたのがアインシュタインで, この論文なのです.

物理の問題意識や視点, もっと言えば論文執筆当時の問題意識, 物理学の研究動向がわからないと正確には読めない部分です.

第024回 第11文の多言語比較

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • 第11文の多言語比較

進捗・TODO・今日のメモ

  • 第11文の多言語比較完了
  • 次回: 第11文の英文読解

内容: コンテンツ (案) からの転記

第11文
対象文
# en.11
  • circum (lat?) = circle

Insufficient consideration of this circumstance lies at the root of the difficulties which the electrodynamics of moving bodies at present encounters.

# de.11
  • ung -> (pl) -ungen
  • Umstand, um = around
  • sein = ich bin, du bist, er ist
  • Wurzel = root
  • Schwierigkeit - (pl) Schwierigkeiten = difficulties
  • mit = with
  • die - der - den - die
  • bewegter <-- bewegen, be- 他動詞を作る接頭辞,
  • wegen <- vehere, vector
  • hat = haben = (en) have
  • zu kämpfen hat = have to struggle

Die nicht genügende Berücksichtigung dieses Umstandes ist die Wurzel der Schwierigkeiten, mit denen die Elektrodynamik bewegter Körper gegenwätig zu kämpfen hat.

# fr.11
  • une (女性名詞につく不定冠詞)= a, an
  • 女性語尾 e = Marie
  • de = of
  • ces <-- ce = this
  • être: je suis, tu es, il/elle est, nous sommes, vous êtes, ils sont
  • la: 定冠詞の (単数の) 女性形
  • le, la, les
  • des = de + les, (a + les = aux)
  • quel = 疑問詞, 関係代名詞
  • heurter = 衝突する = encounter

Une appréciation insuffisante de ces conditions est la cause des problèmes auxquels se heurte présentement l'électrodynamique des corps en mouvement.

# it.11
  • (fr) de = (en) of = (it) di
  • (it) essere --> è
  • (it) con = (en) with = (de) mit. この con は英語の接頭辞にも生きている.
  • deve <- (fr) devoir = (en) must

La non sufficiente considerazione di queste circostanze è la radice delle difficoltà, con le quali l'elettrodinamica dei corpi in movimento attualmente deve lottare.

# sp.11
  • (sp) el = (en) the = (アラビア語) al, algebra = al-gabr
  • (fr) que = (en) that, what
  • que estas circunstancias

El que estas circunstancias no hayan sido consideradas en forma apropiada es la raíz de las dificultades con las que actualmente debe luchar la electrodinámica de cuerpos en movimiento.

# ru.11
  • (ru) понимание = (en) consideration, (en) ponder(?)

Недостаточное понимание этого обстоятельства является корнем тех трудностей, преодолевать которые приходится теперь электродинамике движущихся тел.

# sch.11

对这种情况考虑不足, 就是动体电动力学目前所必须克服的那些困难的根源.

# ja.11

この状況に対する考察の不十分さが, 運動物体に関する電気力学がいま出会っている困難の原因にある.

# 単語比較
  • Insufficient = (de) nicht genügende = (fr) insuffisante = (it) non sufficiente = (sp) (no) en forma apropiada (= appropriately) = (ru) Недостаточное
  • consideration = (de) die Berücksichtigung = (fr) Une appréciation = (it) La considerazione = (sp) no hayan sido consideradas (= have not been considered) = (ru) понимание
  • of this circumstance = (de) dieses Umstandes = (fr) de ces conditions = (it) di queste circostanze = (sp) El que estas circunstancias = (ru) этого обстоятельства
  • lies at = (de) ist = (fr) est = (it) è = (sp) es = (ru) является (= is an)
  • the root = (de) die Wurzel = (fr) la cause = (it) la radice = (sp) la raíz = (ru) корнем
  • of the difficulties = (de) der Schwierigkeiten = (fr) de des problèmes = (it) delle difficoltà = (sp) de las dificultades = (ru) тех трудностей (= those difficulties)
  • which = (de) mit denen = (fr) auxquels = (it) con le quali = (sp) con las que = (ru) которые
  • the electrodynamics = (de) die Elektrodynamik = (fr) l'électrodynamique = (it) l'elettrodinamica = (sp) la electrodinámica = (ru) электродинамике
  • of moving bodies = (de) bewegter Körper = (fr) des corps en mouvement = (it) in movimento dei corpi = (sp) de cuerpos en movimiento = (ru) движущихся тел
  • at present = (de) gegenwätig = (fr) présentement = (it) attualmente = (sp) actualmente = (ru) теперь
  • encounters = (de) hat zu kämpfen = (fr) se heurte = (it) deve lottare = (sp) debe luchar = (ru) приходится преодолевать (= has to overcome)

第025回 第11-12文の英文読解

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • 第11文の英文読解
  • 第12文の多言語比較

進捗・TODO・今日のメモ

  • 第12文の読解
  • 第13文
  • TODO の反映

内容: コンテンツ (案) からの転記

第11文
対象文
# en.11

Insufficient consideration of this circumstance lies at the root of the difficulties which the electrodynamics of moving bodies at present encounters.

# ja.11

この状況に対する考察の不十分さが, 運動物体に関する電気力学がいま出会っている困難の原因にある.

英語解説
# 文構造

基本的な文構造は次の通りです.

  • Insufficient consideration of this circumstance lies
    • at the root of the difficulties
      • which the electrodynamics of moving bodies at present encounters.

第一文型 SV で consideration lies が基本構造です.

# Insufficient consideration of this circumstance lies

まず consideration と言われてもどんな consideration 「考察」なのか気になるので, それに対して Insufficient consideration と補足されていることに注意します. ここで consideration は無冠詞単数なので不可算名詞だと判断すればいいでしょう. さらに何を consider 「考える」しているかと言えば, of this circumstance です. 他動詞を名詞化したとき, もとの動詞の目的語は of で補足することがよくあります.

TODO 動詞の名詞化と名詞の動詞化で英語として表現をすっきりさせることがよくある. 英作文の技術として大事にするという話をどこかに書く.

動詞 lies については「どこに」あるのかという問題があります. それを次に見てみましょう.

# at the root of the difficulties

単純に第一文型 SV の動詞 lies の「どこにいるか」を補足する副詞句です. まず at the root 「根本のところで」で指定され, 何の根本なのかを補足するために of the difficulties があります. ここで root は定冠詞がついていて, difficulty も複数形にした上で定冠詞がついていることに注意しましょう. もちろん difficulties も具体的に何なのかと思うわけで, それに対して which で関係代名詞による修飾がつきます.

# which the electrodynamics of moving bodies at present encounters

動詞が encounters で三単現の s がついているため, 学問名で単数扱いの the electrodynamics が主語で, 目的語が先行詞になっている関係代名詞節と見ればいいでしょう. 学問名なので s がついていても単数扱いであることも注意点です. 修飾を考える上でもうひとつ大事なのは, 意味からして先行詞が the difficulties であることです. これは複数形なので encounters の主語であるとすると, 三単現の s と複数形であることが噛み合わないからです.

主語の the electrodynamics に定冠詞がついているのは, 特に moving bodies に対する電気力学を考えていることによる特定化です. Of moving bodies が定冠詞抜きの単純な複数形なのは, 特定複数の the moving bodies なのではなく, 一般的な運動物体全体を指しています.

最後, at present は副詞で関係代名詞節全体に時間的な限定もつけています.

節タイトル: 第12文
対象文
# en.12

I. KINEMATICAL PART \S1. Definition of Simultaneity

# de.12
  • 男性定冠詞 der-des-dem-den
  • 女性定冠詞 die-der-der-die
  • -keit = -heit = (en) -hood, -ty, -ty
  • gleich = like, alike, equal
  • die Gleichung = equation
  • zeitig = zeit + -ig,
  • zeit = (en) time

I. Kinematischer Teil. \S1. Definition der Gleichzeitigkeit.

# fr.12
  • フランス語は形容詞は基本はうしろから修飾.
  • 参考: 冠詞も言語によっては後ろにつく.
  • CINÉMATIQUE = Kinematic
  • kinema = cinema シネマ 映画 = 動画
  • -ité = -ity
  • SVO, SOV

I. PARTIE CINÉMATIQUE \S1. Définition de la simultanéité

# it.12
  • zu + dem = zum
  • zu + der = zur
  • (de) zu = (en) to
  • (fr) -tion = ション = (en) = (it) -zione

I. Parte cinematica \S1. Definizione della simultaneità

# sp.12

I. Cinemática \S1. Definición de simultaneidad

# ru.12

I. КИНЕМАТИЧЕСКАЯ ЧАСТЬ \S1. Определение одновременности

# sch.12

一 运动学部分 \S1, 同时性的定义

# ja.12

I. 運動学の部 \S1. 同時性の定義

英語解説
# 全体的な注意

英語では部タイトルは全て大文字, 章タイトルは of は先頭が小文字, それ以外が大文字であることに注意してください. よくある表記です. ドイツ語のように部タイトルと節タイトルの形式が一致しているケースもよくあります. この形式は論文誌ごとの投稿規定などにも依存します.

日本語とも同じくタイトルは必ずしも完全な文の形ではなく, 名詞メインのこともよくあります.

# 構文
  • I. KINEMATICAL PART
  • \S1. Definition of Simultaneity

部タイトルは単純な名詞 part に補足で kinematical がついた形, 章タイトルも単純な名詞 definition に補足で of simultaneity がついています. 強いて注意すれば definition はもとが他動詞の define であり, 動詞の目的語を of simultaneity で添えています.

# 単語
  • kinematical: 運動学の
  • part: (文献の段落構造としての) 部
  • definition: 定義
  • simultaneity: 同時性
ドイツ語解説
# 単語
  • kinematischer $\gets$ kinematisch = kinematical
  • Teil = part
  • Definition = definition
  • der: 定冠詞
  • Gleichzeitigkeit = simultaneity
節終了

第026回 第12文の英文読解・第13文の多言語比較・補足

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • 第12文の読解
  • 第13文の多言語比較

進捗・TODO・今日のメモ

  • 第 12 文終了
  • 第 13 文の多言語比較と補足終了
  • 次回は第 13 文の読解.

内容: コンテンツ (案) からの転記

節タイトル: 第12文
対象文
# en.12

I. KINEMATICAL PART \S1. Definition of Simultaneity

# ja.12

I. 運動学の部 \S1. 同時性の定義

英語解説
# 全体的な注意

英語では部タイトルは全て大文字, 章タイトルは of は先頭が小文字, それ以外が大文字であることに注意してください. よくある表記です. ドイツ語のように部タイトルと節タイトルの形式が一致しているケースもよくあります. この形式は論文誌ごとの投稿規定などにも依存します.

日本語とも同じくタイトルは必ずしも完全な文の形ではなく, 名詞メインのこともよくあります.

# 構文
  • I. KINEMATICAL PART
  • \S1. Definition of Simultaneity

部タイトルは無冠詞 part に補足で kinematical がついた形, 章タイトルも無冠詞の definition に補足で of simultaneity がついています. 強いて注意すれば definition はもとが他動詞の define であり, 動詞の目的語を of simultaneity で添えています.

# 単語
  • kinematical: 運動学の
  • part: (文献の段落構造としての) 部
  • definition: 定義
  • simultaneity: 同時性
節終了
第13文
対象文
# en.13

Let us take a system of co-ordinates in which the equations of Newtonian mechanics hold good(footnote).

(footnote: i.e. to the first approximation.)

# de.13
  • liege --- vor = vorliegen
    • liege <-- liegen = lie, exist
    • 分離動詞, vor: 分離前綴り
    • cf. grow up
  • vorliegen: 自動詞 (目的語 (4 格) を取らない
  • das Koordinatensystem, das-des-dem-das
  • welche: 定冠詞類の変化
  • 弱変化: 定冠詞+形容詞+名詞が来るとき
  • Gleichungen <-- die Gleichung (gleich + ung)
  • グリムの法則: 「グリム」はグリム童話のグリム
  • deutsch
  • in: 3 格と 4 格
    • 3 格: 場所, (en) in
    • 4 格: 移動, (en) into

Es liege ein Koordinatensystem vor, in welchem die Newtonschen mechanischen Gleichungen gelten.

# fr.13
  • dans = in
  • lequel = le + quel
  • le, la, les
  • sons = etre (be), je suis - tu es - il est - nous somme - vous êtes - ils sont

Supposons un système de coordonnées dans lequel les équations newtoniennes sont vraies.

# it.13
  • nel = in + 定冠詞
  • Si (?), (fr) si = (en) if
  • seulement = seule + ment, seule = solo

Si assuma un sistema di coordinate, nel quale valgano le equazioni meccaniche di Newton.

# sp.13

valen =? (en) valid

Supongamos un sistema de coordenadas en el cual se valen las ecuaciones mecánicas de Newton.

# ru.13

Пусть имеется координатная система, в которойill справедливы уравнения механики Ньютона.

# sch.13

设有一个牛顿力学方程在其中有效的坐标系.

# ja.13

ニュートン力学の方程式がよく成り立つ座標系を取ろう. (すなわち一次近似の精度で考える.)

補足
# 「ニュートン力学がよく成り立つ」

物理は数学で自然をモデル化し, その数学モデルを解析する分野です. 2020 年時点でいわゆるニュートン力学が成り立つのはそこそこの大きさを持ち, 物体の速度もそれほど大きくない領域, つまり量子力学の世界でもなければ相対性理論の世界でもない(光速より十分小さい速度)範囲でしか使えないことがわかっています. これがモデルの精度や適用限界であり, 「よく成り立つ」の意味です.

実際に電磁気学と連携させて力学を考えるとき, 電磁波が光の速度で伝わる以上, 光の速度の領域で議論する必要があり, 物体の運動学・力学に対してニュートン力学の適用限界を超えてしまっているのです. つまり以下の議論ではニュートン力学の制約下から外れる領域に踏み込まざるを得ないと主張しています.

# 一次近似

あなたが高校生で物理を勉強しているなら, 波動の分野で$\sqrt{1+x} \fallingdotseq 1 + \frac{1}{2} x$という近似式を使ったことがあるでしょう. これが一次近似です. 特に微分法を使った議論のことで, テイラー展開とも関係があるので, 興味があればぜひ調べてみてください.

  • ばね: ばねも一般には非線型.
  • $m \ddot{x} = - kx = f(x)$
  • 振り子: $m \ddot{\theta} = - \sin \theta = - \theta$.
  • 力学系 dynamical system = 連立 (非線型) 常微分方程式.
    • ポアンカレ, 三体問題.
節終了

第027回 第13文の英文読解・第14文の多言語比較

1
2
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • 第 13 文の読解
  • 第 14 文の多言語比較

進捗・TODO・今日のメモ

  • 第 13 文の読解
  • 第 14 文の多言語比較
  • TODO を処理する!

内容: コンテンツ (案) からの転記

第13文
対象文
# en.13

Let us take a system of co-ordinates in which the equations of Newtonian mechanics hold good(footnote).

(footnote: i.e. to the first approximation.)

# de.13
  • liege --- vor = vorliegen
    • liege <-- liegen = lie, exist
    • 分離動詞, vor: 分離前綴り
    • cf. grow up
  • vorliegen: 自動詞 (目的語 (4 格) を取らない
  • das Koordinatensystem, das-des-dem-das
  • welche: 定冠詞類の変化
  • 弱変化: 定冠詞+形容詞+名詞が来るとき
  • Gleichungen <-- die Gleichung (gleich + ung)
  • グリムの法則: 「グリム」はグリム童話のグリム
  • deutsch
  • in: 3 格と 4 格
    • 3 格: 場所, (en) in
    • 4 格: 移動, (en) into
  • welchem: 3 格

Es liege ein Koordinatensystem vor, in welchem die Newtonschen mechanischen Gleichungen gelten.

# ja.13

ニュートン力学の方程式がよく成り立つ座標系を取ろう. (すなわち一次近似の精度で考える.)

英語解説
# 文構造

基本の構造は次の通りです.

  • Let us take a system of co-ordinates
    • in which the equations of Newtonian mechanics hold good
      • i.e. to the first approximation

脚注も入れてあります. 文構造としてはいわゆる Let's go の Let's です.

# Let us take a system of co-ordinates

強いていえば次のように書き換えられます.

TODO Let us の説明も入れる

  • we take a system of co-ordinates

まず目的語が a system で不定冠詞の単数, co-ordinates は複数です. 前文から本文に部が切り替わったので改めて仕切り直すという意味で, とにかく何か系 a system を取ったという符丁です.

Co-ordinates 「座標」は coordinates とハイフンなしで書くこともあります. これが複数形なのは$x, y, z$の 3 つまたは$x, y, z, t$の 4 つあることから来ているのでしょう. 数学でも一般相対性理論で重要な微分幾何でうんざりするほど出てくる言葉です. どんな座標系なのかが気になるわけで, それが in which の関係副詞節で説明されています.

TODO 上の関係副詞を関係代名詞・形容詞節なので修正する.

# in which the equations of Newtonian mechanics hold good

先行詞は文法上では判定できません. 何を言いたいのかというと, 直前の名詞を修飾すると思えば co-ordinates になりそうなところ, 実際には a system を修飾していると見るべきだという話です. 意味がわからないのはこちらの方なので先行詞は a system です.

中身は第二文型SVCです. The equations が good であり, そのありようが hold で指定されています. 主語から順に見ましょう.

主語は the equations で定冠詞がついた複数形です. 「あなたもご存知の」と言われてもこれだけではよくわからないので, of Newtonian mechanics 「ニュートン力学」という補足が入っています. ニュートン力学の方程式は高校でも出てくる運動方程式で, $x, y, z$座標それぞれの成分に対する方程式で 3 本あるのを複数だと捉えているのでしょう.

ここでの動詞 hold は「成り立つ」という意味で, 物理や数学ではよく使われる用法です. 補語 good は素直に「よく」と思えばよく, hold good は「よく成り立つ」と訳します.

TODO ここの「よく」は「精度がいい」の意味.

単純な翻訳はこれで十分ですが意味がよくわからないでしょう. 実際脚注がつく程度には意味が捉えにくいとは言えます. 物理の議論が必要になるので補足でコメントします.

# i.e. to the first approximation

これは hold good についた脚注です. I.e. は「アイイー」とそのまま読むこともあれば, that is と読むこともあります. 実はラテン語 id est の略で「すなわち」の意味です. (it is.) 英語 that is も「すなわち」の意味です.

est = (be 動詞の活用) (fr) être = je suis, tu es, il est.

To the first approximation は「一次近似で」という意味で, 「よく成り立つ」という精度に関わる注意で, これまた物理ではよく出てくる議論です. 定冠詞 the がついているのは英語の感覚という意味で注目するところでしょう. ここでの to は「---の範囲まで」という意味を表しています.

節終了
第14文
対象文
# en.14

In order to render our presentation more precise and to distinguish this system of co-ordinates verbally from others which will be introduced hereafter, we call it the stationary system.

# de.14
  • nennen = name
  • dies: 定冠詞類
  • zur = zu + der (<- die)
  • sprachlichen <- sprachlich <- sprechen = (en) speak
  • Unterscheidung = distinction
  • einzuführenden <- ein + zu + führenden <- zu einführenden
    • führen
    • führend
      • ge-
    • führenden
  • -ung: 女性名詞, die-der-der-die
  • von später einführenden Koordinatensystemen: 弱変化

Wir nennen dies Koordinatensystem zur sprachlichen Unterscheidung von später einzuführenden Koordinatensystemen und zur Präzisierung der Vorstellung das „ruhende System".

# fr.14
  • Pour = for
  • d'un = de + un <- de = of
  • autre = other
  • qui = that
  • sera = will be
  • et = and
  • nous = (en) we = (it) nos = (de) wir
  • cafe au lait
  • il est

Pour distinguer ce système d'un autre qui sera introduit plus tard, et pour rendre cette notion plus claire, nous l'appellerons le «système stationnaire».

# it.14
  • Chiamiamo = call
    • mi chiamo
  • riposo = (en) rest
  • per = for
  • nel = in + 定冠詞
  • discorso = discourse = presentation
  • descrizione = description
  • sistemi (複数形 (記憶が正しければ))

Chiamiamo questo sistema di coordinate il "sistema a riposo", per distinguerlo nel discorso dai sistemi di coordinate che si introdurranno in seguito e per precisare la descrizione.

# sp.14
  • estar
  • en = (fr) en = in
  • adelante = hereafter
  • y = and
  • para = pour

A este sistema de coordenadas lo llamaremos "sistema en reposo" a fin de distinguirlo de otros sistemas que se introducirán más adelante y para precisar la presentación.

# ru.14

ロシア語も格変化と活用があり, その原形がわからない. さらに名詞は辞書の見出し語は単数の主格らしく, その形が判定できないので辞書で満足に調べることもできていない.

  • Для = for
  • отличия = distinction
  • от = of, from, against
  • вводимых = imposed
  • позже = hereafter
  • координатных систем = coordinate systems
  • и = and
  • уточнения = clarify
  • терминологии = terminology
  • назовем - we'll call
  • эту = this
  • покоящейся = at rest

Для отличия от вводимых позже координатных систем и для уточнения терминологии назовем эту координатную систему «покоящейся системой».

# sch.14
  • 以后 = hereafter = 以後
  • 叫 = (x) (ex)claim = (o) call
  • 严谨 = rigorous
  • 为 = for
  • 并且 - and
  • 便 = convenient
  • 将 = will
  • 这 = this
  • 要引进 = to introduce
  • 加以 = add
  • 它 = it

为丁使我们的陈述比较严谨, 并且便于将这坐标系同以后要引进来的别的坐标系在字面上加以区别, 我们叫它"静系".

# ja.14

我々の議論をより厳密にするため, そしてこの座標系と後で導入する座標系を言葉の上で区別するために, それを静止系と呼ぶことにする.

英語解説
# 文構造

基本は次の通りです.

  • we call it the stationary system
    • In order to render our presentation more precise
    • and to distinguish this system of co-ordinates verbally from others
      • which will be introduced hereafter

To 不定詞による長い副詞句があり, 最後に主節が来ています. 主節の構造は第五文型 SVOC です.

# we call it the stationary system

第五文型は「S は V の視点で O = C であると思っている」という意味を持っています. ここでは it = the stationary system であると call する, つまり「そうみなす・定義する」という意味です. 実際 call は「この概念をこう呼ぶ」という形で定義のときに使われる単語です.

主語 we はいわゆる論文の we で, 目的語の it は前文の「ニュートン力学がよく成り立つ座標系」です. 補語の the stationary system には定冠詞がついていることに注意してください. 「あなたもご存知の」というよりも前文で性質を特定した系という意味での特定が入っています.

# In order to render our presentation more precise

ここでは and で to 不定詞句がふたつ並んでいるひとつ目です. In order to は to 不定詞句が特に副詞用法であることを表す符丁です. 文型としては第五文型の VOC で, our presentation 「我々の議論」を more precise 「より厳密に」するためと訳せばいいでしょう. 動詞 render は「与える, 描く」といった意味で, ここでは第五文型の型の意味で訳せば十分です.

# and to distinguish this system of co-ordinates verbally from others

先程書いたように in order to のもうひとつです. 動詞 distinguish は「区別する」という意味で, this system of co-ordinates 「この座標系」を区別するため, というのが基本的な意味・構造です. ここでは system で冠詞代わりに this が使われています.

区別するためには比較対象が必要でそれは from others で示されています. 複数系で無冠詞なことに注意しましょう. ここでの others は other systems で, 日本語でもこの手の省略はよくあります. ただ others がいまひとつ曖昧なままです. それが次の関係代名詞で補足されています.

# which will be introduced hereafter

明らかに主語が欠けた節なので先行詞は主語にあたるはずです. 文法上特別な事情がなければ直前の語を修飾するので, others が先行詞でこの節の主語と判断していいでしょう. 動詞が will になっているので三単現の s があるかないかといった文法上の判断基準は使えないことに注意してください. もっと難しい文章をきちんと読むためにも, 当たり前の判断基準を常に気にかけるのが大事です.

ここでのもうひとつのポイントは未来表現を表す will と, 未来を表す副詞 hereafter です. Others はこれから議論する systems だとして, 文章を読み進めるモチベーションを与えています.

節終了

第028回 第14文の英文読解・第15文の多言語比較

1
2
3
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • 第 14 文の読解
  • 第 15 文の多言語比較

進捗・TODO・今日のメモ

  • 第15文の多言語比較まで
  • 次回: 第 15 文の読解から

内容: コンテンツ (案) からの転記

プチ共有
  • ロシア語はドイツ語と同じで格があり, ロシア語は 6 つ.
  • これまたドイツ語と同じく, 格のおかげで語順をかなり自由に取れる.
  • 発音の重要性
    • 思いついた: たぶん「発音抜きの語学は式抜きの数学・物理と同じ」
    • プロソディ: 英語の文の強弱のリズム・ストレス・メロディ.
    • 発音しないとわからない部分がある.
    • 語呂の良さ: 俳句の五七五 (中国語の五言絶句, 四六駢儷文など)
    • 言語ごとの特色もある
    • どこまで本当か知らないが, ラマヌジャンを育んだインド, ヒンディー語は音のリズムがよいらしい.
    • クルアーンも韻律を重視した文章だとか.
前回の補足: 一次近似について

(ニュートン力学がよく成り立つ範囲で)

もう一つ, 次の補足とは別に, 後知恵的になぜこれが一次近似にあたるのかコメントします. 英語にだけこの脚注があるのはまさにこの後知恵にあたるからでしょう. ここでは単に「そうはいっても状況を限定すればよく成り立つのはわかっているのだから, ニュートン力学にも一定の信頼は置こう」と言っているだけです.

純粋にこの論文が書かれた時代の知識だけから, 「ニュートン力学がよく成り立つ」が一次近似とは言えません. 次の議論によって相対性理論に対してニュートン力学が一次近似として得られることはわかります.

実はローレンツ因子を $\gamma = 1 / \sqrt{1 - \frac{v^2}{c^2}}$ とすると, 相対論的運動エネルギーは $E = \gamma mc^2$ と書けます. ここで $\gamma$ を $\frac{v^2}{c^2}$ に関してテイラー展開して一次まで取ると, $\gamma = 1 + \frac{1}{2} \frac{v^2}{c^2}$ と書けるので, もとの運動エネルギーに代入すると $E = mc^2 + \frac{1}{2} mv^2$ と書けます. 第一項はいわゆる静止エネルギーで有名な式です. これに対して一次近似の項として非相対論的な運動エネルギーが出てきます. つまり一次近似としてニュートン力学が復元できました. いわばこれを先取りした表現が英語版の脚注です.

第14文
対象文
# en.14

In order to render our presentation more precise and to distinguish this system of co-ordinates verbally from others which will be introduced hereafter, we call it the stationary system.

# de.14
  • nennen = name
  • dies: 定冠詞類
  • zur = zu + der (<- die)
  • sprachlichen <- sprachlich <- sprechen = (en) speak
  • Unterscheidung = distinction
  • einzuführenden <- ein + zu + führenden <- zu einführenden
    • führen
    • führend
      • ge-
    • führenden
  • -ung: 女性名詞, die-der-der-die
  • von später einführenden Koordinatensystemen: 弱変化

Wir nennen dies Koordinatensystem zur sprachlichen Unterscheidung von später einzuführenden Koordinatensystemen und zur Präzisierung der Vorstellung das „ruhende System".

# ja.14

我々の議論をより厳密にするため, そしてこの座標系と後で導入する座標系を言葉の上で区別するために, それを静止系と呼ぶことにする.

英語解説
# 文構造

基本は次の通りです.

  • we call it the stationary system
    • In order to render our presentation more precise
    • and
    • to distinguish this system of co-ordinates verbally from others
      • which will be introduced hereafter

To 不定詞による長い副詞句があり, 最後に主節が来ています. 主節の構造は第五文型 SVOC です.

# we call it the stationary system

第五文型は「S は V の視点で O = C であると思っている」という意味を持っています. ここでは it = the stationary system であると call する, つまり「そうみなす・定義する」という意味です. 実際 call は「この概念をこう呼ぶ」という形で定義のときに使われる単語です.

  • TODO 数学・物理の call の用法. 「呼ぶ」と書いたら「そう定義する」の意味.

主語 we はいわゆる論文の we で, 目的語の it は前文の「ニュートン力学がよく成り立つ座標系」です. 補語の the stationary system には定冠詞がついていることに注意してください. 「あなたもご存知の」というよりも前文で性質を特定した系という意味での特定が入っています.

  • TODO 補語に the がつく理由は再考. the earth に the がつくのと同じような感じ? 総称に近い感じ? 「そういうもの」という感じ.
# In order to render our presentation more precise

ここでは and で to 不定詞句がふたつ並んでいるひとつ目です. In order to は to 不定詞句が特に副詞用法であることを表す符丁です. 文型としては第五文型の VOC で, our presentation 「我々の議論」を more precise 「より厳密に」するためと訳せばいいでしょう. 動詞 render は「与える, 描く」といった意味で, ここでは第五文型の型の意味で訳せば十分です.

  • TODO presentation は数学・物理用法? 少なくとも「議論」と訳すべきではある.
  • TODO render: 3DCG とかでレンダリング.
# and to distinguish this system of co-ordinates verbally from others

先程書いたように in order to のもうひとつです. 動詞 distinguish は「区別する」という意味で, this system of co-ordinates 「この座標系」を区別するため, というのが基本的な意味・構造です. ここでは system で冠詞代わりに this が使われています.

区別するためには比較対象が必要でそれは from others で示されています. 複数系で無冠詞なことに注意しましょう. ここでの others は other systems で, 日本語でもこの手の省略はよくあります. ただ others がいまひとつ曖昧なままです. それが次の関係代名詞で補足されています.

  • TODO 副詞 verbally に関する説明.
# which will be introduced hereafter

明らかに主語が欠けた節なので先行詞は主語にあたるはずです. 文法上特別な事情がなければ直前の語を修飾するので, others が先行詞でこの節の主語と判断していいでしょう. 動詞が will になっているので三単現の s があるかないかといった文法上の判断基準は使えないことに注意してください. もっと難しい文章をきちんと読むためにも, 当たり前の判断基準を常に気にかけるのが大事です.

ここでのもうひとつのポイントは未来表現を表す will と, 未来を表す副詞 hereafter です. Others はこれから議論する systems だとして, 文章を読み進めるモチベーションを与えています.

節終了
第15文
対象文
# en.15

If a material point is at rest relatively to this system of co-ordinates, its position can be defined relatively thereto by the employment of rigid standards of measurement and the methods of Euclidean geometry, and can be expressed in Cartesian co-ordinates.

# de.15
  • das-des-dem-das
  • 定型第二の法則
  • letzterem <- last
  • durch = through
  • starre <- star = strength
  • Maßstäbe = standards = 物差し
  • stab = stuff
  • -ung = 女性名詞を作る接尾辞
  • die Methode -> Methoden (pl)
  • ausgedrückt (分離動詞 ausdrucken) aus + drucken
    • 過去分詞 aus + gedrückt
    • aus = out
    • express
  • unter = under

Ruht ein materieller Punkt relativ zu diesem Koordinatensystem, so kann seine Lage relativ zu letzterem durch starre Maßstäbe unter Benutzung der Methoden der euklidischen Geometrie bestimmt und in kartesischen Koordinaten ausgedrückt werden.

# fr.15

Si un point matériel est au repos dans ce système de coordonnées, alors sa position dans ce système peut être trouvée grâce à une règle à mesurer en utilisant des méthodes en géométrie euclidienne, et exprimée en coordonnées cartésiennes.

  • en = in
  • peut = pouvoir = possible
  • trouvée = found <- find
  • règle = regular = rigid

  • (NdT3) (une règle à mesurer) L'inexactitude, inhérente au concept de simultanéité de deux évènements (presque) au même endroit, et qui doit également être résolue par une abstraction, n'est pas discutée ici.

# it.15

Se un punto materiale è a riposo rispetto a questo sistema di coordinate, la sua posizione rispetto a quest'ultimo può essere determinata mediante regoli rigidi utilizzando i metodi della geometria euclidea, e può essere espressa in coordinate cartesiane.

  • (it) e = (en) and = (fr) et = (sp) y = (ru) и = (de) und
# sp.15

Si un punto material se encuentra en reposo con respecto a este sistema de coordenadas, su posición se puede determinar y expresar en coordenadas cartesianas mediante escalas rígidas, utilizando la geometría euclidiana.

# ru.15

Если некоторая материальная точка находится в покое относительно этой координатной системы, то ее положение относительно последней может быть определено методами эвклидовой геометрии с помощью твердых масштабов и выражено в декартовых координатах.

# sch.15

如果一个质点相对于这个坐标系是静止的, 那么它相对于后者的位置就能够用刚性的量杆按照欧儿里得几何的方法来定出, 并且能用笛卡儿坐标来表示.

# ja.15

もしある質点がこの座標系に対して相対的に静止しているなら, その位置は剛体の物差しによる測定とユークリッド幾何の方法で定義でき, デカルト座標で表現できる.

第029回 第15文の英文読解・第16文の多言語比較

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Motoya G04 Gothic")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • 第 15 文の読解
  • 第 16 文の多言語比較

進捗・TODO・今日のメモ

内容: コンテンツ (案) からの転記

プチ共有
数学徒用キリル文字記憶法
多言語学習: 日本語の力を上げるために

このサイトは理系のためのリベラルアーツ・総合語学という大きな方向性があります. その中で語学, 特に英語は重要な核の一つです. 英語一つだけでも大変なのになぜたくさんの (自然) 言語を扱うのかと思っている方がいます. あなたもそうかもしれません. 結論から言えば総合的な言語への認識を上げるため, とりわけ自然言語の運用力を上げるためです. もっと強く言えば, 母語 (である日本語) の運用精度を上げるためです. 以下, 母語の代わりに日本語と書くことにします.

よく言語に関する能力は母語 (日本語) の能力で決まると言われます. 実際, 日本語で言われてさえわからないことが英語や他の言語ではまず理解できません. かといってなかなか日本語それ自体を勉強するのは大変です. いちいち日本語学・日本語の言語学の専門書の適切な記述にあたれるわけでもありません. そんなときは比較対象として他の国の言語を勉強することで, 逆説的に日本語に焦点を当ててみよう, それが多言語に触れる理由です.

例えば実際にロシア語の本を読んでいて出会った例を挙げましょう. 日本語で「医者の兄」というとき, 「ある医者の兄」と「医者である兄」の意味があります. しかしロシア語ではこれらをはっきり区別します. 特に брат доктора (brat doktora) は「ある医者の兄」の意味です.

特に自然科学は日常に潜む何気ない現象を詳しく調べることが全てのはじまりです. 日々話す日本語・自然言語の何気ない現象に目を向け, 一歩立ち止まって考えるのは自然科学を考える上でも大事な営みです. 英語だけでは見えない世界もたくさんありますし, 言語にも好き嫌いがあります. だからこそいくつかの言語の世界に触れてみよう・触れてみてほしい, そんな思いを込めて私自身日々勉強しています.

第15文
対象文
# en.15

If a material point is at rest relatively to this system of co-ordinates, its position can be defined relatively thereto by the employment of rigid standards of measurement and the methods of Euclidean geometry, and can be expressed in Cartesian co-ordinates.

# de.15

Ruht ein materieller Punkt relativ zu diesem Koordinatensystem, so kann seine Lage relativ zu letzterem durch starre Maßstäbe unter Benutzung der Methoden der euklidischen Geometrie bestimmt und in kartesischen Koordinaten ausgedrückt werden.

# ja.15

もしある質点がこの座標系に対して相対的に静止しているなら, その位置は剛体の物差しによる測定とユークリッド幾何の方法で定義でき, デカルト座標で表現できる.

英語解説
# 文構造
  • If a material point is at rest
    • relatively to this system of co-ordinates,
  • its position can be defined
    • relatively thereto
    • by
      • the employment of rigid standards of measurement
      • and
      • (by) the methods of Euclidean geometry,
  • and (its position) can be expressed in Cartesian co-ordinates.

明確にするために省略されている単語を括弧で追加してあります. 主節が and でつながってふたつあり, if 節はその両方にかかっているので上のような構造で書いています.

特にひとつ目の主節が長いのでまずは基本構造を抜き出してみましょう.

  • if a point is at rest
  • its position can be defined
  • and
  • its position can be expressed

ここでそれぞれよくわからない点があるので, 補足説明をぺたぺた張りつけると上の巨大で複雑な文ができます. 順に詳しく見ましょう.

# If a material point is at rest relatively to this system of co-ordinates

上に書いた通り主な構造は a material point is (at rest) の第一文型 SV です. 主語は a material point で不定冠詞の a に注目しましょう. 部が切り替わったばかりなので新たな話がはじまっているのです. そして単に「粒子 (質点) が存在する」と言われてもよくわからないので, 存在の様子が知りたくなります. それが at rest 「静止している」です.

TODO 前置詞句自体で補語の役割をはたす. 文法の本にもきちんと書いてある. be 動詞は存在よりも状態.

そして静止の様子はさらに踏み込んで補足説明されています. 相対性理論で重要なのはまさにその相対性で, 何に対して静止しているように「見える」かが問題です. それが this system of co-ordinates 「この座標系」です. これは前文の「静止系」であり, 「ニュートン力学がよく成り立つ系」と定義されていました.

最後に if は単なる従属接続詞で, 意味上は明らかで文法上の役割も明らかです. 文法上で従属節は前に置いても後ろに置いてもいいところ, この条件節を前提として主節を読み込んでほしいというメッセージから, 先に条件節を出している意図もきちんと読み込みましょう. 読み手が読みやすいように要素を並べ替えるのも著者の大事な仕事です.

# its position can be defined relatively thereto

受身形なので正確には対応する文型がありません. 強いていうなら第一文型 SV でしょう. つまり its position 「その位置」がとにかく存在し, その存在の様子が can be defined 「定義されうる」なのです.

位置と言われるとどこかが気になります. それはまず thereto 「そこへ, そこに」で指示され, さらに relatively 「相対的に」で補足されます. ここでも相対的というキーワードが出てきていますし, 実際大事です.

# by the employment of rigid standards of measurement

さて, 定義されるのはいいとしてどう定義するのかという問題が出てきます. 構文として受身なので, 本来の能動態での主語が何なのかと言ってもいいでしょう. それがこの by が導く句です.

TODO 主語というより手段とした方がいいだろう. あえて能動態に書き直すなら we では?

The employment 「利用」は抽象的な不可算名詞と定冠詞, rigid standards 「剛体の物差し」は一般的な複数形, measurement 「測定」は抽象的な不可算名詞の冠詞なしで使われていることに注意してください. 物理としては特に気にせずさらっと流し読んでもそれほど困らない部分です. しかし英語としてきちんと向き合おうと思うと全てきちんと考える必要があります.

まず rigid standards は一般に剛体の物差しであれば何でも構わないことを主張しています. (TODO 物差しをいっぱい使うというメッセージもある?) 無冠詞単数の measurement はここでいう測定という行為は具体的な測定を意味しているのではなく, 抽象的・一般的で特定されているわけでもないことを意味しています. (TODO 量子力学で量子測定理論.) 最後の the employment は剛体の物差しによる特定の測定方法という意味で定冠詞がついているのでしょう. 冠詞や名詞の単複の厳格な運用は日本語にはない視点なので, いちいち細かく検討するようにしておくべきです. 数学・物理の文献の読み書きに限定すれば必ずしもどうにもならない概念ではありません. しかし日常の英語では, どれだけ勉強してもネイティブの感覚には永遠に追いつけない部分で, 眺めていて飽きることがないほど面白い概念です.

TODO 名詞の冠詞と単複は上の解釈で問題ない?

# and (by) the methods of Euclidean geometry,

まず and が何と何と並列させているかが問題です.

TODO 説明が微妙

直後に名詞が来ているので対象は名詞のはずです. もちろん結論から言えば the employment であり, もっと言えば by the employment と by the methods を並列させています.

念のため余計な修飾を潰した主節を見てみましょう.

  • its position can be defined by the employment and the methods
  • S V by A and B

こう書けば by A and B の形になっていて何が並列されているか見やすくなるはずです.

次のポイントは the methods 「(特定の) 方法」です. 定冠詞がついた上で複数形です. どんな方法なのかよくわからないので補足として of Euclidean geometry 「ユークリッド幾何の」がついています. ここでの geometry は分野名「幾何」として使われていて, Euclidean は人名「ユークリッド」から来る形容詞で, 幾何といってもいろいろある中でユークリッド幾何に限定しています.

もっと言えば Euclidean は定冠詞のように使われています. これで the methods で複数形が来ている理由もわかります. ユークリッド幾何にはいろいろな概念・定理・応用があります. 具体的に何かはともかく, ユークリッド幾何に由来するたくさんの方法を使う必要があり, それを複数形で表現しているのです.

# and can be expressed in Cartesian co-ordinates

要素としては前の and the methods から and が連続して登場するので, 何が並列されているのか, 再びきちんと考える必要があります.

  • a, b, c, and d
  • TODO カンマは文法上はなくてもいいのでなくても読めるような判断能力が大事.

ここでのポイントは前の要素で "and the methods of Euclidean geometry," と最後にカンマが入っていることです. これは「ここで意味的に切って理解してほしい」ことを表す文法上の符丁なので, 文法上ここでいったん切って考えるべきです. 特に and can be と動詞が来ていて, 名詞を並べている the employment and the methods とは違います.

TODO 説明が微妙.

この二つの点から and が何を結びつけているか見抜く必要があります.

明らかに主語がないので何が主語なのか考える必要があります. 文法上は次のように並列されています.

  • its position can be defined
  • and
  • (its position) can be expressed in Cartesian co-ordinates.

両方とも can be と受身になっているのもポイントです. 省略された主語は its position と思えばいいでしょう. 念のため助動詞があるせいで主語の単複の判定情報からの主語の絞り込みが使えないことも注意しておきます.

TODO can = können, ich kann - du kannst-er kann(?) -wir könenn

さて, 動詞は can be expressed 「表しうる」です. どうやって表すのかが気になるわけで, in が導く句 Cartesian co-ordinates 「デカルト座標」で表すと言っています. ここでは Cartesian が定冠詞のようにはたらく形容詞で定冠詞 + 複数形です. 複数なのはやはり空間変数として$x, y, z$で 3 つあるからです.

TODO de Cartes = デカルト. フランス語は基本的に語末の子音を読まない. Cartesian = カルテシアン.

# 単語
  • if = もし
  • material = 物質
  • point = 点
    • material point = 質点
  • at rest = 静止した
  • relatively = 相対的に
  • system = 系
  • of: 前置詞
  • co-ordinates $\gets$ co-ordinate = 座標
    • system of co-ordinates = 座標系
  • position = 位置
  • define = 定義する
  • can = できる
  • thereto = それに
  • employment = 利用
  • TODO rigid = 厳格な
  • TODO standard = 標準
  • measurement = 測定
  • method = 方法
  • Euclidean = ユークリッドの
  • geometry = 幾何
    • Euclidean geometry = ユークリッド幾何
  • express = 表現する
  • Cartesian = デカルトの
    • Cartesian co-ordinates = デカルト座標
補足
# 剛体の物差し

実は相対性理論としては剛体は存在しません. 定義によって光速を超えて瞬時に情報が伝わってしまうからです. ここではこれ以上詳しく説明しません. 興味があればぜひ物理を詳しく勉強してください.

ちなみに最近 (2017 年) にいわゆる 4 次元時空の他にもうひとつ, 情報という軸を追加してみてはどうかという論文が出ています.

読み込めていないので私には妥当性が判断できません. 今でもいろいろな議論があることだけお伝えしておきます.

節終了
第16文
対象文
# en.16

If we wish to describe the motion of a material point, we give the values of its co-ordinates as functions of the time.

# de.16

Wollen wir die Bewegung eines materiellen Punktes beschreiben, so geben wir die Werte seiner Koordinaten in Funktion der Zeit.

  • be: 他動詞を作る接頭辞
  • weg = vec <- veho (vehere) -> vector
  • describe <- scribe = こする
  • schreiben = シュライベン
  • (fr) île アイル = 島
    • i の山括弧が何か?
    • つぎに s が来ることを表す.
    • island <- ラテン語が s が入っている.
  • Werte = (en) value
    • 発音: ヴェルテ
    • ダブリュ = ダブルユー
    • u v (w) は同じようなもの
# fr.16

Si nous voulons décrire le mouvement d'un point matériel, les valeurs de ses coordonnées doivent être exprimées en fonction du temps.

  • 重要なのは子音
  • function = fonction
  • 省略でよくわかる: ft, func
  • ヘブライ語: 書くのは子音しかない.
  • ヤハウェ = YWVH
  • あいまい母音
# it.16

Se vogliamo descrivere il moto di un punto materiale, diamo i valori delle sue coordinate in funzione del tempo.

# sp.16

Cuando queremos describir el movimiento de un punto material, especificamos los valores de sus coordenadas en función del tiempo.

# ru.16

Желая описать движение какой-нибудь материальной точки, мы задаем значения ее координат как функций времени.

  • (超訳) Wanting to describe motion of some material point we set the sense of its coordinates as function of time.
# sch.16

如果我们要描述一个质点的运动, 我们就以时间的函数来给出它的坐标值.

# ja.16

もし質点の運動を記述したいと思うのなら, その座標の値を時間の関数として与える.

英語解説
# 文構造

これはシンプルな構造をしています.

  • we give the values of its co-ordinates as functions of the time
    • If we wish to describe the motion of a material point,

単純に見れば主節の基本構造は第三文型SVOで次の通りです.

  • we give the values

詳しく見ていきましょう.

# If we wish to describe the motion of a material point

主節の説明で困るので if 節からはじめます. 基本構造は we describe the motion で第三文型SVOです. 杓子定規に言えば動詞は wish ですが, これは助動詞で意味としては want to または will くらいに思えばいいでしょう. 主語はいわゆる論文の we で, 動詞 describe は「記述する」です.

目的語は the motion 「(特定の) 運動」で定冠詞 + 単数形の名詞です. 何の運動かは of が導く形容詞句で示していて, of a material point 「ある質点の」と指定されています. これは不定冠詞 + 単数で, 「何でもいいからとにかくひとつ質点を取って, その質点の運動を考えよう」という意図を表しています.

# we give the values of its co-ordinates as functions of the time

先程見た通りメインは we give the values です. 先程と同じく主語は we で論文の we です. 動詞はただの現在形で三単現の s はありません. 目的語は the values で定冠詞 + 複数形の形になっています.

もちろん the values と言われてもわけがわからないので, of の形容詞句で補足説明されています. まず of its co-ordinates で複数形の co-ordinates はこれまでと同じく$x,y,z$で複数なのでしょう. Its については既に言及されている単数の名詞を指しているわけで ここでは if の条件節で言及した質点と思えばいいでしょう. 既に言及したひとつの質点に関わる値なので the で限定できます.

最後に as が導く句があります. 意味としては文全体を give A as B で「A を B として与える」と見ます. これは we think that A is B と思えますし, as には be 動詞のような等価接続の意味があるので, 第五文型 SVOC 「OC の意味を S が V の視点で変える」の視点で見ても構いません. つまり we give A as B は「私達は A を B とみなす」とも訳せ, give の具体的な意味は文型の型に託しても構いません.

これで 文全体の意味が確定したので最後に as B の B を詳しく見ましょう. これは functions of the time で, functions 「関数」は無冠詞の複数, the time 「時間」は定冠詞 + 単数です. Functions が複数なのは the values に対応していて, 無冠詞なのは何か特定の関数を想定しているわけではないからです. The time は変数として時空の 4 変数$x,y,z,t$のうちのひとつ$t$を指定しているから time が単数で, the は「皆様ご存知の時間変数です」という意味と思えばいいでしょう.

節終了

第030回 第15文の補足・ドイツ語読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • プチメモ
  • 第 15 文のドイツ語構文解析
  • 第 15 文の補足: 前回話忘れた
  • 第 16 文の多言語比較

進捗・TODO・今日のメモ

内容: コンテンツ (案) からの転記

プチメモ
文法と分解能

スペイン語の be 動詞は ser と estar の二つがあり, 前者は本質的な性質や恒常的な性質を表す場合に使い, 後者は一時的な状態を表す場合に使います. いろいろな言語で他の言語では複雑な表現が必要なある種の意味やニュアンスを一語・一機能で表すモノがあります. フランス語だと直説法の時制は現在・複合過去・半過去・大過去・単純過去・前過去・単純未来・前未来の 8 種類があります. フランス文学の良さの一つとして, この微妙な時制の塩梅がその良さを表現していると言われていて, 特に星の王子様の冒頭が有名です.

日本語で一つ例を挙げると助詞の「は・が」です. 必ずしも主語にばかり使うわけではありません. ただここでは主語用の格助詞とみなして考えましょう.

次の文を考えます.

  • (他の誰も行かないかもしれないが) 私は行く.
  • (彼の代わりに) 私が行く.

TODO 昔話の「おじいさんとおばあさんがいました」, 「おじいさんは山に柴刈りに」で「は・が」を入れ替えたときの気持ち悪さ. TODO 自動翻訳でもいろいろ事情がある模様.

もちろん必ずしもここで書いた通りの用法だけではありません. (例えば「今日は」というときの「今日」は主語ではありません.) しかし少なくとも「は」と「が」は単に主語を表す機能だけではなく, 微妙なニュアンスも引き受けています. 言語学での知見をおさえきれていませんが, 日本語には主格が二つあると言えるのかもしれません.

最終的には言語学の膨大な知見と照らし合わせてきちんと判断する必要はあるものの, ごく基本的で日常的なところにも各言語・文法の特徴が出てきます. 丁寧に比較して世界への認識を深めていきましょう.

各言語ごとの自然に沿う

最近, ようやくドイツ語の読み方がわかってきました.

  • 動詞句をきちんと考える.
  • 格をきちんと考える.

この 2 つです. 英語の方がよくわかるから・英語のように考えられる部分があるからといって, それを無理やりあてはめてはいけません. 文法についていうならむしろ日本語の感覚の方が近いです. 日本語も原則として語順がなく, 助詞で要素の関係を把握するわけで, ドイツ人もそれと同じように処理していると見るべきらしいのです.

まだきちんと理解しきれていない上にそれほどたくさんの本を見たわけでもありませんが, ドイツ語の本の作文法はたいてい動詞句を基点にしているようです. もちろん読むときもこれを前提にします.

少しだけ例を挙げます. 英語で「バイオリンを弾く」と言いたければ play (the) violin と表現します. しかしドイツ語ではふつう Geige spielen と表現します. 大事なのは辞書で不定形で書くときにもこの語順で出てきます. 英語の熟語的な表現で keep in mind と書くとき, ドイツ語の対応する表現は ins Auge behalten などと書きます. Wiktionaryを見てみましょう.

ちなみに動詞句 (不定詞句) を考えるとき, よく「日本語の語順で考えるとドイツ語としても自然な語順になることが多い」と書かれています. ラテン語も同じと聞きます. ロシア語も格を持つ言語なので, ロシア語でどうなるかは注目しているところです.

ローマ字の歴史: BVLGARI の表記

古代ローマで用いられていたアルファベットには、"U"という文字はなく、母音はA,E,I,O,Vの5つで表されていました。さらにIとVはそれぞれ子音としての役割もあり、Iは今で言うYを、Vは今で言うWの音を表していました。

外来語を表記するために、YとZがギリシャ語から導入されます。 10世紀ごろには、日本語でいう「ウ」と「ワ行」の音に使われていた"V"が、「ウ」の音を"U"、「ワ行」の音を"V"とわけられ、ここでようやく"U"が登場します。

しかし、"V"を「ヴァ行」の音とする地域が増え、ヨーロッパの中で混乱が起きました。そうして11世紀ごろに"V"を「ヴァ行」とするため、「ワ行」を表す"W"が考案されます。

音の現象とそれがどうスペルに反映されるか, そして歴史とともにどう変わっていったか, 音とスペルにはいろいろなダイナミズムがあるのです.

言語と音: リズムの解釈の違い

マイケル・ジャクソンの歌を聞く前にコメントを. ふつう日本人はこの冒頭部を「チーチキ チーチキ」と聞くようです (私もそうです). しかしこれは「チー チキチー チキチー」と聞くべきだそうです. 上の記事にいろいろ書いてありますが, 要は冒頭部のラストで「チー チー」と連発する部分があり, 「チー」単独の音に意味を持たせるべきで, そう思うと「チー チキチー」と「チー」を単独で切り出せる聞き方をするべきだ, こうなるようです.

ドイツ語の 1 格と 4 格

むしろロシア語の文法書を読んでいて思ったことです. ロシア語では名詞の主格と対格の形が同じケースがいくつかあります. 一方, ドイツ語は男性単数は例外として, 他は冠詞・形容詞の活用で主格・対格が一致します.

男性単数 女性単数 中性単数 複数
1 格 der kleine Wecker die große Vase das neue Haus die kleinen Zimmer
2 格 des kleinen Weckers der großen Vase des neuen Hauses der kleinen Zimmer
3 格 dem kleinen Wecker der großen Vase dem neuen Haus den kleinen Zimmern
4 格 den kleinen Wecker die große Vase das neue Haus die kleinen Zimmer

それでふと思ったのは, 1 格と 4 格が同じになる(ことがある)のは, 4 格は受身を作るときに主語になる格なので, 同じような語形を取るのはこの事情を反映しているのではないかとふと思ったのです.

あくまできちんと調べたわけでもない思いつきで, 素人が二言語見ただけでしかないのでたぶん間違いでしょう. ただ, 気になるのはこういうのをそもそもどう調べたらいいのかという問題です.

第15文
対象文
# en.15

If a material point is at rest relatively to this system of co-ordinates, its position can be defined relatively thereto by the employment of rigid standards of measurement and the methods of Euclidean geometry, and can be expressed in Cartesian co-ordinates.

ドイツ語解説

動詞の位置に関して.

  • 主文: 定型第二の法則
    • 枠構造
  • 副文: 文末
  • 条件文・命令文: 先頭

関係詞がつくときカンマが絶対つく.

my book = il mio libro (the my book)

  • kann (<- können) = can
  • 定動詞
  • 本動詞
  • can be
  • kann --- --- werden
  • werden: 助動詞
    • 受身の助動詞
    • 未来形
    • 本動詞: become
    • can be drawn
  • ge---: 過去分詞
  • gedrückt <- drücken
  • aus: 分離前綴り
  • ausdrücken -> aus + drücken -> aus + gedrückt
  • 非分離前綴り: be-emp-ent-er ge-ver-zer-miss
  • bestimmt -> be + stimmen -> be + gestimmt -> be + stimmt
  • ヴァレンツ理論: 動詞を中心にして考える.
  • ruhen -> ruht: ruhen の三人称単数の現在形, 自動詞
    • 主語は三人称単数: 主格でないといけない (1 格)
    • 自動詞: 4 格目的語を持つものが他動詞
    • ドイツ語: 名詞の先頭は大文字
  • durch = through
補足
# 剛体の物差し

実は相対性理論としては剛体は存在しません. 定義によって光速を超えて瞬時に情報が伝わってしまうからです. ここではこれ以上詳しく説明しません. 興味があればぜひ物理を詳しく勉強してください.

ちなみに最近 (2017 年) にいわゆる 4 次元時空の他にもうひとつ, 情報という軸を追加してみてはどうかという論文が出ています.

読み込めていないので私には妥当性が判断できません. 今でもいろいろな議論があることだけお伝えしておきます.

節終了
第16文
対象文
# en.16

If we wish to describe the motion of a material point, we give the values of its co-ordinates as functions of the time.

# de.16

Wollen wir die Bewegung eines materiellen Punktes beschreiben, so geben wir die Werte seiner Koordinaten in Funktion der Zeit.

# fr.16

Si nous voulons décrire le mouvement d'un point matériel, les valeurs de ses coordonnées doivent être exprimées en fonction du temps.

# it.16

Se vogliamo descrivere il moto di un punto materiale, diamo i valori delle sue coordinate in funzione del tempo.

# sp.16

Cuando queremos describir el movimiento de un punto material, especificamos los valores de sus coordenadas en función del tiempo.

# ru.16

Желая описать движение какой-нибудь материальной точки, мы задаем значения ее координат как функций времени.

  • (超訳) Wanting to describe motion of some material point we set the sense of its coordinates as function of time.
# sch.16

如果我们要描述一个质点的运动, 我们就以时间的函数来给出它的坐标值.

# ja.16

もし質点の運動を記述したいと思うのなら, その座標の値を時間の関数として与える.

ドイツ語解説
英語解説
# 文構造

これはシンプルな構造をしています.

  • we give the values of its co-ordinates as functions of the time
    • If we wish to describe the motion of a material point,

単純に見れば主節の基本構造は第三文型SVOで次の通りです.

  • we give the values

詳しく見ていきましょう.

# If we wish to describe the motion of a material point

主節の説明で困るので if 節からはじめます. 基本構造は we describe the motion で第三文型SVOです. 杓子定規に言えば動詞は wish ですが, これは助動詞で意味としては want to または will くらいに思えばいいでしょう. 主語はいわゆる論文の we で, 動詞 describe は「記述する」です.

目的語は the motion 「(特定の) 運動」で定冠詞 + 単数形の名詞です. 何の運動かは of が導く形容詞句で示していて, of a material point 「ある質点の」と指定されています. これは不定冠詞 + 単数で, 「何でもいいからとにかくひとつ質点を取って, その質点の運動を考えよう」という意図を表しています.

# we give the values of its co-ordinates as functions of the time

先程見た通りメインは we give the values です. 先程と同じく主語は we で論文の we です. 動詞はただの現在形で三単現の s はありません. 目的語は the values で定冠詞 + 複数形の形になっています.

もちろん the values と言われてもわけがわからないので, of の形容詞句で補足説明されています. まず of its co-ordinates で複数形の co-ordinates はこれまでと同じく$x,y,z$で複数なのでしょう. Its については既に言及されている単数の名詞を指しているわけで ここでは if の条件節で言及した質点と思えばいいでしょう. 既に言及したひとつの質点に関わる値なので the で限定できます.

最後に as が導く句があります. 意味としては文全体を give A as B で「A を B として与える」と見ます. これは we think that A is B と思えますし, as には be 動詞のような等価接続の意味があるので, 第五文型 SVOC 「OC の意味を S が V の視点で変える」の視点で見ても構いません. つまり we give A as B は「私達は A を B とみなす」とも訳せ, give の具体的な意味は文型の型に託しても構いません.

これで 文全体の意味が確定したので最後に as B の B を詳しく見ましょう. これは functions of the time で, functions 「関数」は無冠詞の複数, the time 「時間」は定冠詞 + 単数です. Functions が複数なのは the values に対応していて, 無冠詞なのは何か特定の関数を想定しているわけではないからです. The time は変数として時空の 4 変数$x,y,z,t$のうちのひとつ$t$を指定しているから time が単数で, the は「皆様ご存知の時間変数です」という意味と思えばいいでしょう.

節終了

第031回 第15文のドイツ語読解・第16文の多言語比較

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

今日の予定

  • 第 15 文のドイツ語構文解析
  • 第 16 文の多言語比較

進捗・TODO・今日のメモ

  • 第16文の比較: ドイツ語まで終わった.

内容: コンテンツ (案) からの転記

第15文
対象文
# en.15

If a material point is at rest relatively to this system of co-ordinates, its position can be defined relatively thereto by the employment of rigid standards of measurement and the methods of Euclidean geometry, and can be expressed in Cartesian co-ordinates.

ドイツ語解説
第16文
対象文
# en.16

If we wish to describe the motion of a material point, we give the values of its co-ordinates as functions of the time.

  • x(t), y(t), z(t)
# de.16
  • wollen = will
  • u = v = w

Wollen wir die Bewegung eines materiellen Punktes beschreiben, so geben wir die Werte seiner Koordinaten in Funktion der Zeit.

# fr.16

Si nous voulons décrire le mouvement d'un point matériel, les valeurs de ses coordonnées doivent être exprimées en fonction du temps.

# it.16

Se vogliamo descrivere il moto di un punto materiale, diamo i valori delle sue coordinate in funzione del tempo.

# sp.16

Cuando queremos describir el movimiento de un punto material, especificamos los valores de sus coordenadas en función del tiempo.

# ru.16

Желая описать движение какой-нибудь материальной точки, мы задаем значения ее координат как функций времени.

  • (超訳) Wanting to describe motion of some material point we set the sense of its coordinates as function of time.
# sch.16

如果我们要描述一个质点的运动, 我们就以时间的函数来给出它的坐标值.

# ja.16

もし質点の運動を記述したいと思うのなら, その座標の値を時間の関数として与える.

ドイツ語解説
英語解説
# 文構造

これはシンプルな構造をしています.

  • we give the values of its co-ordinates as functions of the time
    • If we wish to describe the motion of a material point,

単純に見れば主節の基本構造は第三文型SVOで次の通りです.

  • we give the values

詳しく見ていきましょう.

# If we wish to describe the motion of a material point

主節の説明で困るので if 節からはじめます. 基本構造は we describe the motion で第三文型SVOです. 杓子定規に言えば動詞は wish ですが, これは助動詞で意味としては want to または will くらいに思えばいいでしょう. 主語はいわゆる論文の we で, 動詞 describe は「記述する」です.

目的語は the motion 「(特定の) 運動」で定冠詞 + 単数形の名詞です. 何の運動かは of が導く形容詞句で示していて, of a material point 「ある質点の」と指定されています. これは不定冠詞 + 単数で, 「何でもいいからとにかくひとつ質点を取って, その質点の運動を考えよう」という意図を表しています.

# we give the values of its co-ordinates as functions of the time

先程見た通りメインは we give the values です. 先程と同じく主語は we で論文の we です. 動詞はただの現在形で三単現の s はありません. 目的語は the values で定冠詞 + 複数形の形になっています.

もちろん the values と言われてもわけがわからないので, of の形容詞句で補足説明されています. まず of its co-ordinates で複数形の co-ordinates はこれまでと同じく$x,y,z$で複数なのでしょう. Its については既に言及されている単数の名詞を指しているわけで ここでは if の条件節で言及した質点と思えばいいでしょう. 既に言及したひとつの質点に関わる値なので the で限定できます.

最後に as が導く句があります. 意味としては文全体を give A as B で「A を B として与える」と見ます. これは we think that A is B と思えますし, as には be 動詞のような等価接続の意味があるので, 第五文型 SVOC 「OC の意味を S が V の視点で変える」の視点で見ても構いません. つまり we give A as B は「私達は A を B とみなす」とも訳せ, give の具体的な意味は文型の型に託しても構いません.

これで 文全体の意味が確定したので最後に as B の B を詳しく見ましょう. これは functions of the time で, functions 「関数」は無冠詞の複数, the time 「時間」は定冠詞 + 単数です. Functions が複数なのは the values に対応していて, 無冠詞なのは何か特定の関数を想定しているわけではないからです. The time は変数として時空の 4 変数$x,y,z,t$のうちのひとつ$t$を指定しているから time が単数で, the は「皆様ご存知の時間変数です」という意味と思えばいいでしょう.

節終了

第032回 第16文の多言語比較・読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

進捗・TODO・今日のメモ

内容: コンテンツ (案) からの転記

第16文
対象文
# en.16

If we wish to describe the motion of a material point, we give the values of its co-ordinates as functions of the time.

  • $x(t), y(t), z(t)$
# de.16
  • wollen = will: 意志・未来, ドイツ語では意志.
  • u = v = w
  • 女性名詞に対する定冠詞: die-der-der-die
  • 中性名詞に対する定冠詞: das-des-dem-das
  • der. Wert -> die Werte
  • 複数形に対する定冠詞: die-der-den-die

Wollen wir die Bewegung eines materiellen Punktes beschreiben, so geben wir die Werte seiner Koordinaten in Funktion der Zeit.

# fr.16

Si nous voulons décrire le mouvement d'un point matériel, les valeurs de ses coordonnées doivent être exprimées en fonction du temps.

  • Si = if: cf. if and only if = si et seulement si
    • cf. seulement = solo
  • nous = we
  • le, la, les
  • voulons <- vouloir
  • d'un = de un
  • doivent <- devoir: ラテン語 dēbeō.
  • raison de être ドイツ語・英語とは違う系統. 基本的な語彙はその言語のオリジナルが残りやすい. 例: 疑問詞, 関係代名詞.
# it.16

Se vogliamo descrivere il moto di un punto materiale, diamo i valori delle sue coordinate in funzione del tempo.

  • -amo: 一人称複数の現在形の活用語尾
  • funzione: マリア Maria 女性単数形, フランス語は語尾が e の名詞の多くは女性
# sp.16

Cuando queremos describir el movimiento de un punto material, especificamos los valores de sus coordenadas en función del tiempo.

  • Cuando: (fr) quand = (en) when
  • especificamos = specify
# ru.16

Желая описать движение какой-нибудь материальной точки, мы задаем значения ее координат как функций времени.

  • (超訳) Wanting to describe motion of some material point we set the sense of its coordinates as function of time.
# sch.16

如果我们要描述一个质点的运动, 我们就以时间的函数来给出它的坐标值.

  • 一个の个: 助数詞. 日本語でも個・本・柱・丁・羽・頭などモノによって変わる. 言語ごとに区別したくなるモノが違う. いろいろな言語に触れることでいろいろな解像度・世界の見方が手に入る. この「言語」の中に数学・物理・プログラミングを盛り込みたい.
# ja.16

もし質点の運動を記述したいと思うのなら, その座標の値を時間の関数として与える.

ドイツ語解説
英語解説
# 文構造

これはシンプルな構造をしています.

  • we give the values of its co-ordinates as functions of the time
    • If we wish to describe the motion of a material point,

単純に見れば主節の基本構造は第三文型SVOで次の通りです.

  • we give the values

詳しく見ていきましょう.

# If we wish to describe the motion of a material point

主節の説明で困るので if 節からはじめます. 基本構造は we describe the motion で第三文型SVOです. 杓子定規に言えば動詞は wish ですが, これは助動詞で意味としては want to または will くらいに思えばいいでしょう. 主語はいわゆる論文の we で, 動詞 describe は「記述する」です.

目的語は the motion 「(特定の) 運動」で定冠詞 + 単数形の名詞です. 何の運動かは of が導く形容詞句で示していて, of a material point 「ある質点の」と指定されています. これは不定冠詞 + 単数で, 「何でもいいからとにかくひとつ質点を取って, その質点の運動を考えよう」という意図を表しています.

質点に対応する表現はいくつかあります. 例えばファインマン物理では a point mass と呼んでいます. 粒子 a particle と呼ぶこともあります. ついでにいうと素粒子 an elementary particle です.

# we give the values of its co-ordinates as functions of the time

先程見た通りメインは we give the values です. 先程と同じく主語は we で論文の we です. 動詞はただの現在形で三単現の s はありません. 目的語は the values で定冠詞 + 複数形の形になっています.

もちろん the values と言われてもわけがわからないので, of の形容詞句で補足説明されています. まず of its co-ordinates で複数形の co-ordinates はこれまでと同じく$x,y,z$で複数なのでしょう. Its については既に言及されている単数の名詞を指しているわけで ここでは if の条件節で言及した質点と思えばいいでしょう. 既に言及したひとつの質点に関わる値なので its で限定できます.

最後に as が導く句があります. 意味としては文全体を give A as B で「A を B として与える」と見ます. これは we think that A is B と思えますし, as には be 動詞のような等価接続の意味があるので, 第五文型 SVOC 「OC の意味を S が V の視点で変える」の視点で見ても構いません. つまり we give A as B は「私達は A を B とみなす」とも訳せ, give の具体的な意味は文型の型に託しても構いません.

これで文全体の意味が確定したので最後に as B の B を詳しく見ましょう. これは functions of the time で, functions 「関数」は無冠詞の複数, the time 「時間」は定冠詞 + 単数です. Functions が複数なのは the values に対応していて, 無冠詞なのは何か特定の関数を想定しているわけではないからです. The time は変数として時空の 4 変数$x,y,z,t$のうちのひとつ$t$を指定しているから time が単数で, the は「皆様ご存知の時間変数です」という意味と思えばいいでしょう.

節終了

第033回 第17文の多言語比較

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

進捗・TODO・今日のメモ

  • 多言語比較でイタリア語まで.
  • 次回: スペイン語の比較から.

内容: コンテンツ (案) からの転記

第17文
対象文
# en.17

Now we must bear carefully in mind that a mathematical description of this kind has no physical meaning unless we are quite clear as to what we understand by time.

# de.17
  • hat <- haben
  • erst = first
  • dann = then
  • 男性の定冠詞: der-des-dem-den
  • wenn = when = if
  • geworden ist: 受身
  • klar = clear
  • was = what
  • hier = here
  • unter = under
  • Zeit = time
  • wird <- werden
  • comprehend <- com = (it) con = (en) with
  • über = over

Es ist nun wohl im Auge zu behalten, daß eine derartige mathematische Beschreibung erst dann einen physikalischen Sinn hat, wenn man sich vorher darüber klar geworden ist, was hier unter „Zeit" verstanden wird.

# fr.17
  • garder = watch, see
  • en = in
  • tête = head
  • qu'une <- que une = that a
  • possède <- possess: cf サッカーでの「ボールのポゼッション」
  • seulement si = only if
    • seulement = solely <- solo
  • nous = we = (sp) nos
  • avons = avoir
  • qu'est <- que est, est = be 動詞の三人称単数現在形
    • je suis - tu es - il est - nous sommes - vous etes - ils sont
    • Je suis Charlie = ジュスイシャルリー
  • temps = time

Il faut toujours garder en tête qu'une telle définition mathématique possède un sens physique, seulement si nous avons au préalable une perception claire de ce qu'est le «temps».

# it.17
  • deve = (fr) devoir = (en) must
  • tenere = (fr) tenir
    • (it) cantare = (fr) chanter: 聖歌 chant
  • che: ケ = that
  • ha: ア = (en) have
    • h はふつう読まない.
    • cf. l'Hopital ロピタル: H を読まない. le Hopital's theoreme -> l'Hospital
  • una descrizione matematica siffatta ha = such a mathematical description has
  • fisico = physical
  • quando = when = (fr) quand
  • chiaramente: 明るく、はっきりと <- chiamare = call
  • intende = (en) intension

Ora si deve tenere ben in mente che una descrizione matematica siffatta ha un significato fisico solo quando si sia detto chiaramente in precedenza che cosa si intende qui per "tempo".

# ja.17

いま私達は次の点を注意深く考えなければならない: つまり時間という概念に対する理解が完全に明確になっていない限り, この種の数学的記述は物理的な意味を持たない.

節終了

第034回 第17文の多言語比較・読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

記事公開手順メモ
  • 動画が変換でき次第, YouTube にアップしておく
  • 勉強会用ファイルを整理しつつオリジナルのコンテンツに追記する
  • 動画へのリンクを書き換える
  • YouTube のタイトルと説明欄
    • タイトルは記事のページタイトル
  • 動画を公開して Twitter・Slack で共有

進捗・TODO・今日のメモ

  • スペイン語の比較から.

内容: コンテンツ (案) からの転記

メモ
イギリス英語の fibre

フランス語の単語本に書いてあったので備忘録を込めて. タイトルの fibre のように, 一般的にイギリス英語で -re, アメリカ英語で -er と書く単語があります. イギリス英語の -re はフランス語の記述をそのまま残している (ことがある) とのこと. これはフランス語由来の言葉で, さらに言えばラテン語由来の可能性があることも示唆しています. 単語遊びをする上で大事でしょう.

英語の関係代名詞 whom

目的格のときに who は whom にしてもいい. この whom の m は何か? ドイツ語の定冠詞で der-des-dem-den, das-des-dem-das と三格に m が出る.

I play {∅/a/the} guitar.

I'm Ringo, and I play the drums. I'm Paul, and I play the bass. I'm George, and I play a guitar. I'm John, and I too play guitar, sometimes I play the fool.

ここで、早速ですが樋口 (2009) で答え合わせをしましょう。ただし〔…〕は引用者注で、例文は省略しました。

3.1.5. 楽器名

play に続く楽器名もしばしば無冠詞で用いられます。 これは、このとき楽器名はジャズバンドなどにおけるパート、 つまり、「役割」を表すので、原理Ⅲ〔英語の名詞部は、 「働き」を表すときは a/an をとらず、 「個体」として認識されるときは a/an(あるいは他の限定詞)をとる〕により、 冠詞をとらないからです。 (以下の例文の多くで in a/the band(または類義語句)が共起しているのがその証拠です;"play the 楽器名" に関しては §8.6.2 参照。) 他方、楽器名が無冠詞で learn/study/teach などの目的語として用いられるときは「演奏法」(§2.4「技法」)を表します。 辞書では the がかっこに入っている例もありますが、 the がある場合とない場合とは同義ではありません。 the の有無は、典型的には、バンドでのパートを表すか否かによって決定されるからです。

イタリア語で「私の本」 il mio libro = the my book.

第17文
対象文
# en.17

Now we must bear carefully in mind that a mathematical description of this kind has no physical meaning unless we are quite clear as to what we understand by time.

# sp.17
  • cuando = (fr) quand = (en) when
  • solamente = seulement = (en) solo, only
  • esta = (en) this
  • de = (fr) de = (en) of
    • cf. 分離の of
    • 奪う: deprive

Será necesario tener en cuenta que una descripción matemática de esta índole tiene un sentido físico solamente cuando con anterioridad se ha aclarado lo que en este contexto se ha de entender bajo "tiempo".

# ru.17

При этом следует иметь в виду, что подобное математическое описание имеет физический смысл только тогда, когда предварительно выяснено, что подразумевается здесь под «временем».

# sch.17

现在我们必须记住, 这样的数学描述, 只有在我们十分清楚地懂得"时间"在这里指的是什么之后才有物理意义.

# ja.17

いま私達は次の点を注意深く考えなければならない: つまり時間という概念に対する理解が完全に明確になっていない限り, この種の数学的記述は物理的な意味を持たない.

英語解説
# 文構造
  • Now we must bear carefully in mind
    • that a mathematical description of this kind has no physical meaning
    • unless we are quite clear as to what we understand by time.

基本的な構造は we bear (in mind) that であり, bear in mind 「心に留める, 考える」は we think that と思えばよく, あとは考えている内容を表す that 節が長く続くだけです.

# Now we must bear carefully in mind

これは第三文型SVOと思えばいいでしょう. ここでは副詞 carefully を挿入だと思って無視して bear in mind を熟語動詞・動詞句とみなします. もちろん bear 本来の意味「持つ」を重視しつつ in mind で「心の中に持つ = 心に留める, 記憶する, 考える」とみなしても構いません.

これに対して must で強制した上, carefully で覚え方を注意させ, now で他のいつでもなくこのタイミングで, と詳しくしつこく強調しています. 内容を読めばまさに物理の本道をきちんとやりなさいというメッセージです.

# that a mathematical description of this kind has no physical meaning

何を bear in mind しなければならないかを調べましょう. この that 節は第三文型SVOで基本構造は次の通りです.

  • a description has no meaning
  • ある記述は何の意味もない

これが unless まで含めた that 節の本質的な内容です. 文法的に見ると主語は不定冠詞 + 単数, 動詞は主語の単数を受けて三単現の形, 目的語は no + 名詞の単数形になっています.

TODO この a は any のような意味を持っている.

主語の a description 「あるひとつの記述」が何なのかと言えば, mathematical 「数学的な, 数学の」です. さらに of this kind 「この種の」という補足もついています. もちろん前文の内容「座標の値を時間の関数とみなす」を受けています.

目的語 no meaning は physical 「物理的な」という補足説明がついています. 翻訳の問題としては has no meaning と, 動詞は肯定形にして目的語を否定にして否定の意味を表現する英語の表現技法に注意してください. こう書くと英語としてもすっきり綺麗に表現できるので, 英作文上も重要な技術です.

物理の論文として重要なのは「数学的な記述」と「物理的な意味」の対比です. 主節でくどいほど「ここにポイントがある」と主張しているのです. 人類レベルの物理学者であるアインシュタインの言葉であることにも注意しましょう. 私達はよくこの自明な事実を忘れるのです.

# unless we are quite clear as to what we understand by time

最後に that 節の思考内容の補足説明として条件の副詞節を追加しています. 全体としては unless が入っていて「こういう状態でない限り」という条件文で, その状態が何かと言えば第二文型SVCでごく単純には次のような構造です.

  • we are clear
  • 私達が邪魔ものがなく透き通った状態にある
  • 私達が明晰な理解に到達している

この内容を we are clear と表現できるのが英語です. もちろん後者の「明晰な理解」と書いたのは節全体の意味を判断した上で書いています. これに対して quite 「まったく, すっかり, 完全に」という副詞をつけて最上級の強調をしています.

「私達が邪魔ものがなく透き通った状態にある」を基点にして考えましょう. 「透き通った状態」というのは何に対する状態なのかが気になるので, as to で導かれています. 前置詞が導くので名詞または名詞句が来るはずで, それが what が導く名詞句です. その内容が what we understand by time 「時間という言葉によって私達が何を理解しているか」です. もっと強く言えば「時間という物理の概念を何を表したいのか」, そして「時間という概念を物理として真剣に考えているか?」という読者への問い掛けでもあります.

ドイツ語解説
節終了

第035回 第18文の多言語比較・読解 英独仏

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

進捗・TODO・今日のメモ

  • 今回: フランス語まで
  • 次回: イタリア語から

内容: コンテンツ (案) からの転記

メモ
ventriloquist

意味は「腹話術師」で, Wiktionary によると ventriloquy +‎ -ist と分解できます. 前者の ventriloquy はラテン語 venter (stomach) + loqui (to speak) に由来します.

この分解の前者は医学用語か何かで他にも英語に痕跡があった気がしますが, すぐに思い出せないのでいいとして, ここで気になるのは後者です. これもやはり何かある気がしてふと思いついたのは dialogue などの -logue です. これも Wiktionary によると中英語 dialog, 古フランス語 dialoge (フランス語 dialogue), 後期ラテン語 dialogus, 古代ギリシャ語 διάλογος (diálogos, "conversation, discourse"), διά (diá, "through, inter") + λόγος (lógos, "speech, oration, discourse"), διαλέγομαι (dialégomai, "to converse"), διά (diá) + λέγειν (légein, "to speak") に由来します. 哲学でも出てくるギリシャ語のロゴスに由来する言葉のようで, 理性ある動物としての人間が持つ特性として言葉を話すといった意味の発展があるのでしょう. ラテン語の loqui (-> loquor) との関係までは調べきれなかったのですが, これが関係あるとするなら現代英語にも loqui は生きています.

第18文
対象文
# en.18

We have to take into account that all our judgments in which time plays a part are always judgments of simultaneous events.

# de.18

Wir haben zu berücksichtigen, daß alle unsere Urteile, in welchen die Zeit eine Rolle spielt, immer Urteile über gleichzeitige Ereignisse sind.

  • der-des-dem-den
  • über = (en) over
  • (en) simultaneous = (de) gleichzeitige
  • gleich = (en) like, alike
  • (de) Gleichung = equation
  • (de) zeitige = (en) time <- (en) tide 潮
  • be 動詞 = (de) sein, ich bin - du bist - er ist - wir sind - ihr seid (?) - sie sind
  • (fr) être: je suis - tu es - il/elle est - nous sommes - vous êtes - ils/elles sont
  • (fr) aller = go
  • go - went - gone
  • come - came - come
  • 言文一致: アラビア語は言文一致.
# fr.18

Nous devons prendre en considération le fait que nos conceptions, où le temps joue un rôle, portent toujours sur des évènements simultanés.

  • (fr) devoir = (it) devere = (en) must = (de) mussen
  • prendre = (en) take
  • fait = (en) fact
  • où = (en) where
  • ou = (en) or
  • le temps = (en) tempo
  • joue <- jouer = play
  • portent = (?) porter = (en) port
  • toujours = always : TODO 何でs?
  • jour = (en) day
  • tou <- tout = (en) total = (en) all
  • sur = (en) over = surface
  • surrealisme = シュールレアリスム = 超現実主義
  • bon = good
  • nos conceptions portent toujours sur des évènements simultanés

第036回 第18文の多言語比較・読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

進捗・TODO・今日のメモ

  • 18文全て終了

内容: コンテンツ (案) からの転記

メモ

scilang で小ネタを話す.

第18文
対象文
# en.18

We have to take into account that all our judgments in which time plays a part are always judgments of simultaneous events.

# it.18
  • dobbiamo: 一人称の複数 = debere = (fr) devoir
  • tener = (fr) tenir (prendre) = take = (lat) tenere
  • presente = (en) presentation
  • (it) che = (en) that = (fr) que = (lat) que/qui
  • tutte = (en) all, total
  • nostre = (en) our
  • my book - il mio libro
  • nelle quali = in which
  • (男性三人称単数) il = (en) it = (fr) il/elle = (lat) ille
    • ラテン語は冠詞ない, ille = this/that
    • il/le -> il: イタリア語の定冠詞の男性, le: フランス語の定冠詞の男性
  • tempo = テンポ, 「時間」系の意味
  • sono = be動詞 一人称複数 (?)
  • asserzioni = assertions
    • -i: 複数形の語尾
    • octopus - octopi
  • gioca <- (fr) jouer = (en) play

Dobbiamo tener presente che tutte le nostre asserzioni nelle quali il tempo gioca un ruolo sono sempre asserzioni su eventi simultanei.

# sp.18

Debemos tener en cuenta que todas nuestras afirmaciones en las cuales el tiempo juega alg'un papel, siempre son afirmaciones sobre eventos simultáneos.

  • en = (en) in = (fr) in
  • el = (en) the
  • juega = gioca = (fr) jouer
  • (fr) je suis - nous sommes
  • (sp) papel = paper, 役割
    • part
  • (sp) sobre = (en) over = (lat) super = (greek) hyper
  • 佐藤の超関数 hyperfunction
    • 日本人 古代の日本語系に中華系みたいな感じ?
    • 閼伽棚 (仏教)
    • 閼伽棚の閼伽: サンスクリット語のargha(アルガ)の音写
    • (lat) aqua, 印欧祖語, (it) acqua
    • (en) water, (de) das Wasser
# ru.18

Мы должны обратить внимание на то, что все наши суждения, в которых время играет какую-либо роль, всегда являются суждениями об одновременных событиях.

# sch.18

我们应当考虑到: 凡是时间在里面起作用的我们的一切判断, 总是关于同时的事件的判断.

  • 应 = 応? (座?)
# ja.18

私達は次の事情を考えなければならない. つまり時間が役割を担う考察は常に同時の事象に対する考察でなければならない.

英語解説
# 文構造
  • We have to take into account
    • that all our judgments are always judgments of simultaneous events
      • in which time plays a part

(SVA, コピュラ文, SVC) 主節は第三文型SVOで目的語 O が that 節です. That 節は judgments are judgments という形で, ふつう "judgments are ones" と書くでしょうから少し珍しい書き方です. これは in which 節が挿入されているので解釈の曖昧さを防ぐためにあえてこう書いたのでしょう. 主語の judgments を in which の関係代名詞が修飾し, 補語の judgments を of の句が修飾しています.

# We have to take into account

これは take into account 「考慮に入れる」が動詞句または熟語, have to 「---しなければならない」が助動詞としてはたらいているだけです. 助動詞が助動詞句として 2 語, 動詞が動詞句として 3 語で動詞部分が 5 語もあります.

意味は「私達は---を考慮に入れなければならない」, もっと単純には「私達は---を考えなければならない」です. 何を考えなければいけないかは that 節の中身で示されています.

# that all our judgments are always judgments of simultaneous events

冒頭の that は関係代名詞の that です. これは第二文型SVCで本体は judgments are judgments で, always 「常に」という副詞がついています. 主語・補語にどんな修飾語句がつくかが問題です.

補語は冠詞なしの複数形で of simultaneous events 「同時の事象について」がついています. ここでの events も冠詞なしの複数形で一般的な event について語っていること, 相対性理論特有の専門用語で「事象」と訳すことに注意してください.

主語については all our judgments で「私達の全ての判断」です. 冠詞なしの複数形で何かを限定しているわけではないにも関わらず all がついています. この all の範囲を制限しているのが次の in which が導く関係代名詞節です. 先に関係代名詞節まで含めた主語の訳を書いておくと「時間が役割を演じる私達の全ての判断」です.

# in which time plays a part

ここは time plays a part in で in の後ろに来る名詞が先行詞の judgments です. 主語は冠詞なしで単数形の time であり, ここでは不可算で抽象的な意味での「時間」を指していると思えばいいでしょう. 動詞もきちんと三単現の s がついています.

動詞は plays a part in 全体で動詞句・熟語とみなすべきで, 「---という役割を果たす」という意味です. ここでは「時間が関わる」くらいで訳すといいでしょう.

ドイツ語解説
補足
# 物理としての注意

この文章を物理として理解する上でのポイントは, 「同時の事象」です. 相対性理論で有名な「速く動くと時間が遅れる」という話は, まさにこの同時性に関わる問題なのです.

第037回 第19文の多言語比較・読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

進捗・TODO・今日のメモ

  • 次回: フランス語の脚注から

内容: コンテンツ (案) からの転記

対象文
en.19

If, for instance, I say, "That train arrives here at 7 o'clock," I mean something like this: "The pointing of the small hand of my watch to 7 and the arrival of the train are simultaneous events."

(footnote) We shall not here discuss the inexactitude which lurks in the concept of simultaneity of two events at approximately the same place, which can only be removed by an abstraction.

de.19
  • z. B. = zum Beispiele = for example
    • zum = zu + dem
  • Wenn = When = if
  • sage <- sagen = (en) say
    • 語尾 en
    • y と g: garden - yard
  • ankommt <- ankommen = come
  • um = around
  • Uhr = (en) hour = time
  • so = (en) so
  • 定型第二の法則: 主文では動詞が二番目
  • heißt <- heißen = mean = called
  • etwa = something
  • dies = this
  • kleine <- eine kleine Nacht musik
  • auf = up
  • und = and
  • gleichzeitige = gleich + zeitig(e)
    • gleich = like, alike; die Gleichung = the equation
  • ドイツ語の be 動詞:
    • ich bin - du bist - er ist - wir sind - ihr seid - sie sind
  • 中性名詞の定冠詞: das - des - dem - das
  • ß = ss
  • Begriff = concept
  • --heit = --keit = -tion
  • 女性名詞に対する定冠詞: die-der-der-die
  • zwei = two: スペルと音と両方見ないと同じだとわからない
  • durch = through
  • soll = sollen = (en) shall

Wenn ich z. B. sage: „Jener Zug kommt hier um 7 Uhr an", so heißt dies etwa: „Das Zeigen des kleinen Zeigers meiner Uhr auf 7 und das Ankommen des Zuges sind gleichzeitige Ereignisse."

(Fußnote) Die Ungenauigkeit, welche in dem Begriffe der Gleichzeitigkeit zweier Ereignisse an (annähernd) demselben Orte steckt und gleichfalls durch eine Abstraktion überbrückt werden muß, soll hier nicht erörtert werden.

fr.19
  • par = for
  • si = if
  • disons <- dire = say
    • dialogue, dictate
  • heure = die Uhr = (en) hour
  • cela = that, it
  • signifie = signify
  • petite = プチ = 小さい = kleine, small
  • et = and
  • du train = de + le train -> du train
  • a + le -> aux
  • sont = are (je suis-tu est-il est-nous sommes- vous etez-ils sont)

Par exemple, si nous disons «qu'un train arrive ici à 7 heures», cela signifie «que la petite aiguille de ma montre qui pointe exactement le 7 et que l'arrivée du train sont des évènements simultanés».

補足
内容の補足: 特に脚注

私は学生の頃に指導教員から「論文は注を読むのが一番難しい」と言われたことがあります. ここの脚注は物理に慣れている人ほど疑問に思わず「いちいちそこまで注意するのか」と思うでしょうし, 逆に物理に慣れていない人には何を言っているのかよくわからないかもしれません. 念のために補足しておきます.

まず近似的に同じ場所でのふたつの事象が何を指しているかというと, もちろん「時計の短針が7を指すこと」と「電車の到着」です. 自明な話として時計, もっと言えば時計の短針と電車の場所は同じではありません. 電車にしても電車のどの位置を取るかという問題がありますし, もっと言えば時計の短針を読んだ人間の目の位置とのずれなどもあります. 人間が時間を確認するには時計から出てくる光を目で捉え, その情報が神経回路を伝わって解釈するだけの時間のずれがあり, 厳密に同時刻ではないからです.

もちろん「適当に決めればいい」のですが, この「適当」のところに曖昧さが残っています. 例えば時計も電車も質点で近似した上で, 思考実験的に人間が時計を読む処理は省略すればいいでしょう. こうした説明をいちいち書くのは明らかに面倒ですし物理学者なら誰でもできます. だから本文ではsomething like thisで気分だけ説明して, あとは各自で適当に埋めておいて, と濁しているわけです.

実は次の文以降でこの事情にさらに深く切り込んでいます. 脚注まで含め無意味に書いているわけではないのです.

第038回 第19文の多言語比較・読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

進捗・TODO・今日のメモ

  • 今回: フランス語の脚注から, 全体比較まで終了
  • 次回: 英文読解

内容: コンテンツ (案) からの転記

対象文
en.19

If, for instance, I say, "That train arrives here at 7 o'clock," I mean something like this: "The pointing of the small hand of my watch to 7 and the arrival of the train are simultaneous events."

(footnote) We shall not here discuss the inexactitude which lurks in the concept of simultaneity of two events at approximately the same place, which can only be removed by an abstraction.

fr.19
  • évènements = ex + venir
    • venir = come
  • presque = almost
  • même = each
  • endroit = in law (= 物理法則)
  • et = and
  • doit <- devoir = must
  • également = equality
  • être = be動詞 (原形)
  • résolue = resolution
  • ici = here
  • n'est pas = not is
    • ne --- pas
    • pas = foot

(NdT) L'inexactitude, inhérente au concept de simultanéité de deux évènements (presque) au même endroit, et qui doit également être résolue par une abstraction, n'est pas discutée ici.

it.19
  • quando = (fr) quand = (en) when = (sp) cuando
  • per = (en) for
  • esempio = example
  • dico = (fr) disons = (fr) dire
  • ore = 時間 = (de) die Uhr = (fr) heure
  • significa = (en) signify
  • del mio orologio = of my watch
    • del = di + il
      • il, i, lo, gli, la, le
    • orologio = watch = (fr) montre
    • mio
    • the my book = il mio libro
  • piccola = 小さい, petite
  • considererà = (en) consider
  • imprecisione = imprecise
  • che = (fr) que
  • concetto = concept
  • approssimativamente = (fr) presque = almost

Quando per esempio dico: "Quel treno arriva qui alle ore 7," ciò significa: "Il porsi della lancetta piccola del mio orologio sulle 7 e l'arrivo del treno sono eventi simultanei".

footnote: Non si considererà qui l'imprecisione che si introduce nel concetto di simultaneità di due eventi (approssimativamente) nello stesso posto e che viene superata con l'astrazione.

sp.19
  • Por ejemplo = (fr) par exemple = (it) per esempio
  • digo = dico = dison
  • llega = llegar
  • (fr) je suis - tu es - il est
  • como = (fr) コムデギャルソン
  • El momento = 時間
  • pequeña =(?) piccola, petite
  • reloj = (it) orologio = (fr) heure = (de) Uhr
  • y = and
  • discutirá = discuss (未来形)

Por ejemplo, cuando digo "Ese tren llega aquí a las 7," esto significa algo así como: "El momento en que la manecilla pequeña de mi reloj marca las 7 y la llegada del tren son eventos simultáneos."(1)

(nota1) Aquí no se discutirá la imprecisión que se encuentra implícita en el concepto de simultaneidad de dos eventos en (aproximadamente) el mismo lugar y que de igual manera se debe conciliar mediante una abstracción.

ru.19

Если я, например, говорю: «Этот поезд прибывает сюда в 7 часов», ------то это означает примерно следующее: «Указание маленькой стрелки моих часов на 7 часов и прибытие поезда суть одновременные события».(сноска1)}

(сноска1) Здесь не будет обсуждаться неточность, содержащаяся в понятии одновременности двух событий, происходящих (приблизительно) в одной и том же месте, которая должна быть преодолена также с помощью некоторой абстракции.

sch.19

比如我说, 那列火车7点钟到达这里'', 这大概是说:我的表的短针指到7同火车的到达是同时的事件.''}

ja.19

もし, 例えば私が「あの電車が7時にここに到着する」と言うとき, 私は次のような内容を主張している: 「時計の短針が7を指し示すことと電車の到着は同時の事象である.」

(脚注) 近似的に同じ場所でのふたつの事象の同時性の概念に潜む不正確さがあり, これは抽象化によってだけ取り除ける可能性があるが, ここで私達はこの不正確さに関しては議論しない.

英語解説
文構造
  • I mean something like this:
    • A are simultaneous events
      • A = The pointing of the small hand of my watch to 7 and the arrival of the train
    • If I say "That train arrives here at 7 o'clock"
      • for instance
  • (脚注) We shall not here discuss the inexactitude
    • which lurks in the concept of simultaneity of two events at approximately the same place
      • , which can only be removed by an abstraction.

脚注込みで考えましょう. クオーテーションがあり, 文全体としてはここまでなかったタイプの面倒さがあります. しかし主節は次のようにごく単純な第3文型SVOです.

  • I mean something

これに対してsomethingがlike thisと補足され, その内容がコロンのあとにクオートつきで言及され, さらに脚注で補足されています. ついでにifの条件節もあります. この全体像を念頭に置きながら詳しく見ていきましょう.

I mean something like this:

主節です. 先程書いたように単純な第3文型SVOです. I mean somethingと目的語をぼかした言い方をしていてよくわからないので, like thisとコロン以下の文でさらに詳しく言及しています.

むしろ書きたいことを正確に書くのが難しい, または書けても理解してもらうのが難しいと思った場合, 論文でさえ曖昧さの残る例示文で説明することがあると言った方が適切かもしれません. 実際この曖昧さに関しては脚注でコメントがあります.

The pointing of the small hand of my watch to 7 and the arrival of the train are simultaneous events

物理としてどう捉えるべきかを説明した文でlike thisが指し示す内容です. 英語としては難しくないものの主語が長くて読みにくいため, まずはそれをうまく読み飛ばして次のように大きな構造を見抜くことからはじめましょう.

  • A and B are simultaneous events
  • A = The pointing of the small hand of my watch to 7
  • B = the arrival of the train

「AとBは同時の事象である」という文です. ここでsimultaneousとeventsは両方とも相対性理論で重要な専門用語です. まずsimultaneous「同時性」はよくある相対性理論での不思議な現象を生み出す原因で, 従来の力学とは違う概念です. 後者のeventは「事象」と訳し, これも専門用語として理解する必要があります. 主語がA and Bなのでeventsと複数形です.

次に主語を眺めましょう. 出てくる名詞全てに定冠詞theがついていることに注目してください. もちろんwatchについているのはmyで厳密にはtheではありませんが, 「私の」と強い限定がかかっているので事実上の定冠詞です. クォートがかかっていて誰かの発言のような形をしていて, 会話をしている目の前の人が話しているイメージなのでしょう. どこかの何かではなく「いままさにここにあるモノ」を指している状況を再現しています. 定冠詞はこの会話の情景描写を生き生きと描く目的で使われていると言ってもいいでしょう.

  • A = The pointing of the small hand of my watch to 7

これは「私の時計の小針(small hand)が7を指すこと(pointing)」です. 「7を指すこと」をthe pointing to 7でtoを使っているコロケーションに注意してください. 上のような形で日本語に訳すと消えてしまうtheの「まさにこれ」というニュアンスを忘れてはいけません.

  • B = the arrival of the train

これももちろん「電車の到着」です. こちらもやはりtheによるニュアンスをきちんと取るのが大事です.

If, for instance, I say "That train arrives here at 7 o'clock"

ここでのfor instance「例えば」は副詞句の挿入で, 意味としては最後に添えればいいでしょう.

基本構造はもちろんI say somethingでsomethingがクォートで括られた短文です. 本体と同じくsomething like thisの構造です.

この短文を眺めてみると, 単純な第1文型SVで主な構造はThat train arrivesです. ここのthatは関係代名詞などではなく単に「あの」という指示形容詞で, 主語は単数trainなので動詞もarrivesで三単現のsがついています. 動詞arrivesは「到着する」という意味で「いつ・どこに到着したのか」が気になるわけで, それをhereとat 7 o'clockで指示しています.

もちろんこのクォートされた文は単なる例で日常的な言い方です. 物理としてどう捉えるべきかが大事でそれが主節の内容です.

(脚注) We shall not here discuss the inexactitude

既にコメントしたように本来は厳密に言うべき部分をsomething like thisと言って曖昧にしていて, その釈明が脚注の内容です.

TODO このshallとwillの気分の違いをきちんと調べる.

メインの構造は単純な第三文型SVOで, 間にshall not hereが入っているだけです.

  • We (do not) discuss the inexactitude

目的語はthe inexactitudeと定冠詞がついています. 指している対象は明確である一方, どう釈明するかが気になります. 関係代名詞で補足説明しているので追いかけましょう.

which lurks in the concept of simultaneity of two events at approximately the same place

文としては長いものの, 先行詞the inexactitudeが主語で動詞がlurksの第一文型SVです. とにかく存在しているわけで, その存在の様子がlurksです. 念のためlurksの意味を調べると「潜む」です. もう少し言えばlurks in the conceptで「不正確性がある概念の中にいる」という意味なので, 自力で「潜む」を思い付くこともできるでしょう. 何にせよどこに不正確さが潜んでいるのかが問題で, それはin以下に示されているはずです. 詳しく見てみましょう.

前から順に「それは何?」と突っ込みながら読んでいく形で意味が取れます. まずthe concept「概念」があり定冠詞つきではあるものの何なのかよくわかりません. それがof simultaneityが補足され「同時性」であることがわかります. 無冠詞なのは特に強い限定がかからない不可算名詞だからです. 同じというには比較対象が必要で, それがtwo events「ふたつの事象」と指定されています. 無冠詞なしの複数系なので何でもいいからとにかくふたつの事象です. 最後にat approximately the same place「近似的に同じ位置」と補足されます. ここのplaceにはthe sameの形で定冠詞がついていることに注意してください.

ここでは会話調で内容を指示したことによる曖昧さの影響が出ています. 「数学的」には単にat a placeと書いていいのでしょう. しかしこう書くと厳密に同じ位置のふたつの事象の意味になってしまいます. 近似的にしか同じと言えず, 同じという部分でsameを使い, コロケーションとしてthe sameとしたためにapproximatelyとthe sameが並立する不思議な形になっています.

, which can only be removed by an abstraction.

ここで ", which" がどこにかかっているかがわかりにくいかもしれません. 何も考えないと直前のplaceにかかっていると思ってしまうからです. 動詞の三単元などの情報が使えると名詞の単複などで決められることはあるものの, ここではcanと助動詞が出てきてしまってうまく判定に使えません. 結論から言えば, これは意味から考えてinexactitudeにかかっていると思えばいいでしょう. 関係代名詞の非制限用法はいったん流れを切ってand it can only be ...などと書いていると思えばよく, こう考えれば単純な先行詞探しゲームからは抜けやすくなります.

先行詞がわかったので構文と意味を考えましょう. 構文は基本的に単純な受身です.

  • and it (= , which) is removed by an abstraction

これにcan onlyを入れてisを原形に変えればもとの文が得られます. ここでabstractionは不定冠詞つきで可算名詞として処理していることに注意しましょう. 「細かいことまで考えればいろいろ処理の方法はあるかもしれないが, とにかく何かしらの抽象化法をひとつ取る」という意味で不定冠詞が使われています.

単語

"The pointing of the small hand of my watch" は言われてみればすぐわかるものの, 慣れていないときちんと訳しづらい名詞句でしょう. ここで the small hand は時計の短針のことで, The pointing は時計の短針が指す先のことです.

  • if: もし
  • for instance: 例えば (for example)
  • say: 言う
  • train: 電車
  • arrive: 到着する
  • here: ここ
  • 7 o'clock: 7 時
  • mean: 意味する
  • something: 何か
  • like this: このような
  • pointing: 指し示す先
  • small hand: 短針
  • watch: 時計
  • arrival: 到着
  • simultaneous: 同時の
  • event: 事象 (物理の専門用語)
  • shall: 未来形 (意志を表す, will)
  • discuss: 議論する
  • inexactitude: 不正確
  • lurk: 潜む
  • concept: 概念
  • simultaneity: 同時性
  • approximately: 近似的に
  • same: 同じ
  • place: 場所
  • can: できる, しうる
  • only: だけ
  • remove: 取り除く
  • abstraction: 抽象, 抽象化
ドイツ語解説

第039回 第19文の読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

(YouTube 動画の説明欄にいつも張るリンク集)

進捗・TODO・今日のメモ

  • メモ: can only be called a miracle〔主語の事柄は〕奇跡としか言いようがない)

内容: コンテンツ (案) からの転記

対象文
en.19

If, for instance, I say, "That train arrives here at 7 o'clock," I mean something like this: "The pointing of the small hand of my watch to 7 and the arrival of the train are simultaneous events."

(footnote) We shall not here discuss the inexactitude which lurks in the concept of simultaneity of two events at approximately the same place, which can only be removed by an abstraction.

ja.19

もし, 例えば私が「あの電車が7時にここに到着する」と言うとき, 私は次のような内容を主張している: 「時計の短針が7を指し示すことと電車の到着は同時の事象である.」

(脚注) 近似的に同じ場所でのふたつの事象の同時性の概念に潜む不正確さがあり, これは抽象化によって取り除くしかないが, ここで私達はこの不正確さに関しては議論しない.

TODO 訳を修正.

英語解説
文構造
  • I mean something like this:
    • "A" are simultaneous events
      • "A" = The pointing of the small hand of my watch to 7 and the arrival of the train
    • If I say "That train arrives here at 7 o'clock"
      • for instance
  • (脚注) We shall not here discuss the inexactitude
    • which lurks in the concept of simultaneity of two events at approximately the same place
      • , which can only be removed by an abstraction.

脚注込みで考えましょう. クオーテーションがあり, 文全体としてはここまでなかったタイプの面倒さがあります. しかし主節は次のようにごく単純な第3文型SVOです.

  • I mean something

これに対してsomethingがlike thisと補足され, その内容がコロンのあとにクオートつきで言及され, さらに脚注で補足されています. ついでにifの条件節もあります. この全体像を念頭に置きながら詳しく見ていきましょう.

I mean something like this:

主節です. 先程書いたように単純な第3文型SVOです. I mean somethingと目的語をぼかした言い方をしていてよくわからないので, like thisとコロン以下の文でさらに詳しく言及しています.

むしろ書きたいことを正確に書くのが難しい, または書けても理解してもらうのが難しいと思った場合, 論文でさえ曖昧さの残る例示文で説明することがあると言った方が適切かもしれません. 実際この曖昧さに関しては脚注でコメントがあります.

The pointing of the small hand of my watch to 7 and the arrival of the train are simultaneous events

物理としてどう捉えるべきかを説明した文でlike thisが指し示す内容です. 英語としては難しくないものの主語が長くて読みにくいため, まずはそれをうまく読み飛ばして次のように大きな構造を見抜くことからはじめましょう.

  • "A" and "B" are simultaneous events
  • "A" = The pointing of the small hand of my watch to 7
  • "B" = the arrival of the train

「AとBは同時の事象である」という文です. ここでsimultaneousとeventsは両方とも相対性理論で重要な専門用語です. まずsimultaneous「同時性」はよくある相対性理論での不思議な現象を生み出す原因で, 従来のニュートン力学とは違う概念です. 後者のeventは「事象」と訳し, これも専門用語として理解する必要があります. 主語がA and Bなのでeventsと複数形です.

次に主語を眺めましょう. 出てくる名詞全てに定冠詞theがついていることに注目してください. もちろんwatchについているのはmyで厳密にはtheではありませんが, 「私の」と強い限定がかかっているので事実上の定冠詞です. クォートがかかっていて誰かの発言のような形をしていて, 会話をしている目の前の人が話しているイメージなのでしょう. どこかの何かではなく「いままさにここにあるモノ」を指している状況を再現しています. 定冠詞はこの会話の情景描写を活き活きと描く目的で使われていると言ってもいいでしょう.

  • A = The pointing of the small hand of my watch to 7

これは「私の時計の小針(small hand)が7を指すこと(pointing)」です. 「7を指すこと」をthe pointing to 7でtoを使っているコロケーションに注意してください. 上のような形で日本語に訳すと消えてしまうtheの「まさにこれ」というニュアンスを忘れてはいけません.

  • B = the arrival of the train

これももちろん「電車の到着」です. こちらもやはりtheによるニュアンスをきちんと取るのが大事です.

If, for instance, I say "That train arrives here at 7 o'clock"

ここでのfor instance「例えば」は副詞句の挿入で, 意味としては最後に添えればいいでしょう.

基本構造はもちろんI say somethingでsomethingがクォートで括られた短文です. 本体と同じくsomething like thisの構造です.

この短文を眺めてみると, 単純な第1文型SVで主な構造はThat train arrivesです. ここのthatは関係代名詞などではなく単に「あの」という指示形容詞で, 主語は単数trainなので動詞もarrivesで三単現のsがついています. 動詞arrivesは「到着する」という意味で「いつ・どこに到着したのか」が気になるわけで, それをhereとat 7 o'clockで指示しています.

物理として事象は時空点を指すので「いつ・どこ」をきちんと指定するのが重要です. さらっと書いてありますが実は非常に重要な副詞・副詞句です.

もちろんこのクォートされた文は単なる例で日常的な言い方です. 物理としてどう捉えるべきかが大事でそれが主節の内容です.

(脚注) We shall not here discuss the inexactitude

既にコメントしたように本来は厳密に言うべき部分をsomething like thisと言って曖昧にしていて, その釈明が脚注の内容です.

TODO このshallとwillの気分の違いをきちんと調べる. 固さ (文語調) なのが shall?

メインの構造は単純な第三文型SVOで, 間にshall not hereが入っているだけです.

  • We (do not) discuss the inexactitude

目的語はthe inexactitudeと定冠詞がついています. 指している対象は明確である一方, どう釈明するかが気になります. 関係代名詞で補足説明しているので追いかけましょう.

which lurks in the concept of simultaneity of two events at approximately the same place

文としては長いものの, 先行詞the inexactitudeが主語で動詞がlurksの第一文型SVです. とにかく存在しているわけで, その存在の様子がlurksです. 念のためlurksの意味を調べると「潜む」です. もう少し言えばlurks in the conceptで「不正確性がある概念の中にいる」という意味なので, 自力で「潜む」を思い付くこともできるでしょう. 何にせよどこに不正確さが潜んでいるのかが問題で, それはin以下に示されているはずです. 詳しく見てみましょう.

前から順に「それは何?」と突っ込みながら読んでいく形で意味が取れます. まずthe concept「概念」があり定冠詞つきではあるものの何なのかよくわかりません. それがof simultaneityが補足され「同時性」であることがわかります. 無冠詞なのは特に強い限定がかからない不可算名詞だからです. 同じというには比較対象が必要で, それがtwo events「ふたつの事象」と指定されています. 無冠詞の複数系なので何でもいいからとにかくふたつの事象です. 最後にat approximately the same place「近似的に同じ位置」と補足されます. ここのplaceにはthe sameの形で定冠詞がついていることに注意してください.

ここでは会話調で内容を指示したことによる曖昧さの影響が出ています. 「数学的」には単にat a placeと書いていいのでしょう. しかしこう書くと厳密に同じ位置のふたつの事象の意味になってしまいます. 近似的にしか同じと言えず, 同じという部分でsameを使い, コロケーションとしてthe sameとしたためにapproximatelyとthe sameが並立する不思議な形になっています.

, which can only be removed by an abstraction.

ここで ", which" がどこにかかっているかがわかりにくいかもしれません. 何も考えないと直前のplaceにかかっていると思ってしまうからです. 動詞の三単元などの情報が使えると名詞の単複などで決められることはあるものの, ここではcanと助動詞が出てきてしまってうまく判定に使えません. 結論から言えば, これは意味から考えてinexactitudeにかかっていると思えばいいでしょう. 関係代名詞の非制限用法はいったん流れを切ってand it can only be ...などと書いていると思えばよく, こう考えれば単純な先行詞探しゲームからは抜けやすくなります.

TODO can only が難しい.

先行詞がわかったので構文と意味を考えましょう. 構文は基本的に単純な受身です.

  • and it (= , which) is removed by an abstraction

これにcan onlyを入れてisを原形に変えればもとの文が得られます. ここでabstractionは不定冠詞つきで可算名詞として処理していることに注意しましょう. 「細かいことまで考えればいろいろ処理の方法はあるかもしれないが, とにかく何かしらの抽象化法をひとつ取る」という意味で不定冠詞が使われています.

TODO only のかかり方をきちんと書く. can only be でのまとまった意味もある模様.

単語

"The pointing of the small hand of my watch" は言われてみればすぐわかるものの, 慣れていないときちんと訳しづらい名詞句でしょう. ここで the small hand は時計の短針のことで, The pointing は時計の短針が指す先のことです.

  • if: もし
  • for instance: 例えば (for example)
  • say: 言う
  • train: 電車
  • arrive: 到着する
  • here: ここ
  • 7 o'clock: 7 時
  • mean: 意味する
  • something: 何か
  • like this: このような
  • pointing: 指し示す先
  • small hand: 短針
  • watch: 時計
  • arrival: 到着
  • simultaneous: 同時の
  • event: 事象 (物理の専門用語)
  • shall: 未来形 (意志を表す, will)
  • discuss: 議論する
  • inexactitude: 不正確
  • lurk: 潜む
  • concept: 概念
  • simultaneity: 同時性
  • approximately: 近似的に
  • same: 同じ
  • place: 場所
  • can: できる, しうる
  • only: だけ
  • remove: 取り除く
  • abstraction: 抽象, 抽象化
ドイツ語解説

第040回 第20文の多言語比較

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

進捗・TODO・今日のメモ

  • http://www.eigo-akahige.com/archives/1850514.html
    • seem と see
  • ドイツ語 komplett https://en.wiktionary.org/wiki/komplett#German
  • イタリア語まで完了
  • 次回: スペイン語から

内容: コンテンツ (案) からの転記

対象文
en.20

It might appear possible to overcome all the difficulties attending the definition of "time" by substituting "the position of the small hand of my watch" for "time".

de.20
  • es = (en) it
  • könnte <- können = (en) can = may, might
  • scheinen = (en) shine
  • daß = dass = (en) that
  • alle = (en) all
  • die Definition (女性名詞)
  • die Zeit
    • 女性定冠詞 die-der-der-die
  • betreffenden <- (en) to concern, to affect
  • Schwierigkeiten = (en) difficulties
    • -en: 複数形の語尾
    • 複数形の定冠詞: die-der-den-die
  • dadurch: through it
  • überwunden werden könnten = can be overcome
  • setze <- setzen = (en) set
    • lieben <- ich liebe
  • Stelle = (en) position
  • die „Stellung des kleinen Zeigers meiner Uhr"
    • the position of the small hand of my watch
    • Uhr = hour = watch
  • überwinden O1 O2
    • overcome O1 O2 -> S be overcome O1
    • we can overcome

Es könnte scheinen, daß alle die Definition der „Zeit" betreffenden Schwierigkeiten dadurch überwunden werden könnten, daß ich an Stelle der „Zeit" die „Stellung des kleinen Zeigers meiner Uhr" setze.

fr.20
  • il = (en) it
  • peut <- pouvoir = can = possible
  • sembler = (en) seem
  • que = that (関係代名詞)
  • toutes = total
  • provenant = prove, ジェロンディフ (?)
  • du temps = of "times"
    • « = guillemet
  • peuvent = pouvoir
  • être = be
  • supprimées = (?)
  • quand = when = (de) wenn
  • au «temps» = a + les + temps
  • nous = we = (de) wir
  • supprimées = deleted
    • supprimer = to suppress

Il peut sembler que toutes les difficultés provenant de la définition du «temps» peuvent être supprimées quand, au «temps», nous substituons «la position de la petite aiguille de ma montre».

it.20
  • イタリア語は主語が文法的に省略可能. 動詞の活用は性数で全て違うから. 音も違う. フランス語はスペルが違くても発音が同じ.
  • Potrebbe: 三人称?
    • = peut <- pouvoir
    • <- potere
  • sembrare = sembler = seem
    • seem = see?
  • che = que
  • tutte = toutes = total
  • le difficoltà = the difficulties
  • riguardano = regard
  • (fr) si = (en) if
  • superare = super
  • posto = (en) post = position
  • tempo = temps = テンポ
  • espressione = expression
  • piccola <- 楽器でピッコロ
  • mio orologio = my watch
  • sostituissi = substitute
    • first/second-person singular imperfect subjunctive of sostituire
    • From Latin substituo.

Potrebbe sembrare che tutte le difficoltà che riguardano la definizione del "tempo" si potrebbero superare se sostituissi al posto di "tempo" l'espressione "posizione della lancetta piccola del mio orologio".

sp.20

Podría parecer que todas las dificultades relacionadas con la definición del "tiempo" se superarían si en lugar de "tiempo" utilizara "la posición de la manecilla peque˜na de mi reloj."

ru.20

Может показаться, что все трудности, касающиеся определения «времени», могут быть преодолены тем, что вместо слова «время» я напишу «положение маленькой стрелки моих часов\guillemotleft.

sch.20

也许有人认为, 用我的表的短针的位置''来代替时间'', 也许就有可能克服由于定义``时间''而带来的一切困难.

ja.20

「時間」を「私の時計の短針の位置」に置き換えることで, 「時間」の定義に伴う全ての困難を克服できるように思えるかもしれない.

英語
文構造
  • It might appear possible to overcome all the difficulties
    • attending the definition of "time"
    • by substituting "the position of the small hand of my watch" for "time".

このitは仮主語でto overcome ---が真の主語です. どんなdifficultiesかがわからないので, attending --- timeで補足説明されています. さらに副詞節by substituting ---が文全体を修飾しています.

It might appear possible to overcome all the difficulties

文型は第二文型SVCです.

  • It appears possible.

Itが何かがto不定詞句で指示してあります. 真の主語であるto不定詞句はto overcome all the difficultiesで, 定冠詞がついています. 時間に関わる問題を議論していたので, それら全ての問題という限定です.

意味として難しいことはないものの, 動詞部分が非常に特徴的です. 単にpossibleというだけでも可能性の示唆で意味が弱いのに, appearで弱めた上にmightまで被せて意味を弱めに弱めています. ドイツ語原文を見ると接続法第2式を使っていて, それを反映させているのでしょう.

アカデミックライティングでは段落冒頭にはふつうその段落のトピックを書きます. 典型的な譲歩系の構文であることとも合わせると, そんな単純な話ではないと話が続くはずです.

attending the definition of "time"

現在分詞の形でall the difficultiesをもっと強く限定する形容詞句です.

ふつうattendは「出席する」という意味で覚えているでしょう. しかしここでは「伴う」という意味で取った方が適切です. これは辞書にも載っている意味です.

目的語はthe definitionと定冠詞がついています. ここではof timeまでセットで限定しているとみなすのが適切です.

by substituting "the position of the small hand of my watch" for "time"

メインメッセージは「---ができる」なので, それを実現する手段を表現しています. このsubstitutingが導く句を理解するにはいつもの五文型の知識が使えます. ここではクォートで括られているため構造が明確で, substitute A for B「AをBの代わりに使う」です. 熟語として覚えてもいい一方, SV A for B, 特にA for Bをforのコアミーニングに合わせて「AとBを交換する」と一般的に捉えることもできます.

構造が見えたのでAとBを詳しく見てみましょう. まずAのthe position of the small hand of my watchは各名詞に定冠詞がついています. ここでもmyは定冠詞相当のはたらきをしているので広義定冠詞として処理しています. 一方Bのtimeは無冠詞単数なので抽象的な概念としての時間を表しています. つまり英文の構造からは「抽象概念を具体物(時計の針の位置)で置き換える」形になっています. 日本語では曖昧になりがちな具体的な時刻・時間と, 抽象概念としての時間が, 冠詞と可算・非可算という名詞に対する概念ですっきり明確に表現しています.

補足
主語が人ではない理由

ここでは主語を人にせずぼかしています. 人にすると誰がそう思っているか書くのが難しいからでしょう. これは論文なので論文の"we"を使う手もあったかもしれませんが, それを避けてあるのです. そもそも論文の"we"は原則として実験事実のような誰もがそう思うことに対して使うので, 「そう思うかもしれない」のところには使いづらいのだと思います. ふつうの文章なら"you"でいいかもしれませんが, 論文で"you"は使いづらい事情もあるのでしょう.

attendの意味

ここでのattendは「出席する」ではなく「伴う」と紹介しました. 解説でも書いたように「伴う」は辞書にも載っている意味です.

実は私も最初はこの意味を知らず, 出席ではおかしいと思って「関わる」と訳出したのですが, 改めて辞書を調べたらここではぴったりの「伴う」があったので, これに変えました. 知っている単語だからと言ってその意味を無理にあてはめてもうまく行かないことがあります. そういう場合は一呼吸置いてきちんと辞書を調べてみましょう. 特に意外な意味に出会った場合は英英辞典を見たり語源を調べて, 何故その意味を持つにいたったか考えてみると言語に対する直観が磨けます.

substitute A for Bの意味

これについて念のため書いておきましょう. 一般的に「AとBを交換する」だとAとBが等価なように感じるかもしれません. しかし純粋に構造だけで見ると, まずsubstiture Aで意味が完結していて補足としてfor Bがあります. つまり「Aを使う」ことが前提で「Bの代わりに」が補足情報として添えられているため, 「AをBの代わりに使う」というAが前に出てくる訳語が選ばれています.

第041回 第20文の多言語比較・読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々の md に関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

進捗・TODO・今日のメモ

  • 今回: ドイツ語の復習・スペイン語から
  • 次回: 第21文

内容: コンテンツ (案) からの転記

対象文
en.20

It might appear possible to overcome all the difficulties attending the definition of "time" by substituting "the position of the small hand of my watch" for "time".

de.20
  • es = (en) it
  • könnte <- können = (en) can = may, might
  • scheinen = (en) shine
  • daß = dass = (en) that
  • alle = (en) all
  • die Definition (女性名詞)
  • die Zeit
    • 女性定冠詞 die-der-der-die
  • betreffenden <- (en) to concern, to affect
  • Schwierigkeiten = (en) difficulties
    • -en: 複数形の語尾
    • 複数形の定冠詞: die-der-den-die
  • dadurch: through it
  • überwunden werden könnten = can be overcome
  • setze <- setzen = (en) set
    • lieben <- ich liebe
  • Stelle = (en) position
  • die „Stellung des kleinen Zeigers meiner Uhr"
    • the position of the small hand of my watch
    • Uhr = hour = watch
  • überwinden O1 O2
    • overcome O1 O2 -> S be overcome O1
    • we can overcome
  • ドイツ語は動詞に関しては動詞句という固まりでいろいろなことを判定するとわかりやすい.
    • 動詞句 die Definition der „Zeit" betreffen
    • 主語が何? 主文か副文か?
    • ich + die Definition der „Zeit" betreffen + 主文
      • ich betreffe die Definition der „Zeit"
    • ich + --- + 副文
      • daß ich die Definition der „Zeit" betreffe

Es könnte scheinen, daß alle die Definition der „Zeit" betreffenden Schwierigkeiten dadurch überwunden werden könnten, daß ich an Stelle der „Zeit" die „Stellung des kleinen Zeigers meiner Uhr" setze.

fr.20
  • il = (en) it
  • peut <- pouvoir = can = possible = (lat) potere
  • sembler = (en) seem
  • que = that (関係代名詞)
  • toutes = total
  • provenant = prove, ジェロンディフ (?)
  • du temps = of "times"
    • « = guillemet
  • peuvent = pouvoir
  • être = be
  • supprimées = (?)
  • quand = when = (de) wenn
  • au «temps» = a + les + temps
  • nous = we = (de) wir
  • supprimées = deleted
    • supprimer = to suppress

Il peut sembler que toutes les difficultés provenant de la définition du «temps» peuvent être supprimées quand, au «temps», nous substituons «la position de la petite aiguille de ma montre».

it.20
  • イタリア語は主語が文法的に省略可能. 動詞の活用は性数で全て違うから. 音も違う. フランス語はスペルが違くても発音が同じ.
  • Potrebbe: 三人称?
    • = peut <- pouvoir
    • <- potere
  • sembrare = sembler = seem
    • seem = see?
  • che = que
  • tutte = toutes = total
  • le difficoltà = the difficulties
  • riguardano = regard
  • (fr) si = (en) if
  • superare = super
  • posto = (en) post = position
  • tempo = temps = テンポ
  • espressione = expression
  • piccola <- 楽器でピッコロ
  • mio orologio = my watch
  • sostituissi = substitute
    • first/second-person singular imperfect subjunctive of sostituire
    • From Latin substituo.

Potrebbe sembrare che tutte le difficoltà che riguardano la definizione del "tempo" si potrebbero superare se sostituissi al posto di "tempo" l'espressione "posizione della lancetta piccola del mio orologio".

sp.20
  • todas = total = all
  • las: 定冠詞
  • relacionadas = relation, relate
  • con la definición = with the definition
  • del "tiempo" = de+in, tiempo = tempo = time
    • cf. (fr) à + le = au
  • lugar
  • utilizara = utilize
  • de mi reloj = my watch
  • la manecilla pequeña = the small hand
  • si en lugar de "tiempo" = the place of "time"
    • lugar <- locus (location)

Podría parecer que todas las dificultades relacionadas con la definición del "tiempo" se superarían si en lugar de "tiempo" utilizara "la posición de la manecilla pequeña de mi reloj."

ru.20

Может показаться, что все трудности, касающиеся определения «времени», могут быть преодолены тем, что вместо слова «время» я напишу «положение маленькой стрелки моих часов».

sch.20
  • 定义 = 定義
  • 为 = 為

也许有人认为, 用我的表的短针的位置''来代替时间'', 也许就有可能克服由于定义``时间''而带来的一切困难.

ja.20

「時間」を「私の時計の短針の位置」に置き換えることで, 「時間」の定義に伴う全ての困難を克服できるように思えるかもしれない.

英語
文構造
  • It might appear possible to overcome all the difficulties
    • attending the definition of "time"
    • by substituting "the position of the small hand of my watch" for "time".

このitは仮主語でto overcome ---が真の主語です. どんなdifficultiesかがわからないので, attending --- timeで補足説明されています. さらに副詞句by substituting ---が文全体を修飾しています.

It might appear possible to overcome all the difficulties

文型は第二文型SVCです.

  • It appears possible.

Itが何かがto不定詞句で指示してあります. 真の主語であるto不定詞句はto overcome all the difficultiesで, 定冠詞がついています. 時間に関わる問題を議論していたので, それら全ての問題という限定です.

意味として難しいことはないものの, 動詞部分が非常に特徴的です. 単にpossibleというだけでも可能性の示唆で意味が弱いのに, appearで弱めた上にmightまで被せて意味を弱めに弱めています. ドイツ語原文を見ると接続法第2式を使っていて, それを反映させているのでしょう.

アカデミックライティングでは段落冒頭にはふつうその段落のトピックを書きます. 典型的な譲歩系の構文であることとも合わせると, そんな単純な話ではないと話が続くはずです.

attending the definition of "time"

現在分詞の形でall the difficultiesをもっと強く限定する形容詞句です.

ふつうattendは「出席する」という意味で覚えているでしょう. しかしここでは「伴う」という意味で取った方が適切です. これは辞書にも載っている意味です. 他動詞と自動詞の使い分け・意味の発展なども込めて, 読むのはよくても書くときに使いこなすのが大変な単語です.

目的語はthe definitionと定冠詞がついています. ここではof timeまでセットで限定しているとみなすのが適切です.

by substituting "the position of the small hand of my watch" for "time"

メインメッセージは「---ができる」なので, それを実現する手段を表現しています. このsubstitutingが導く句を理解するにはいつもの五文型の知識が使えます. ここではクォートで括られているため構造が明確で, substitute A for B「AをBの代わりに使う」です. 熟語として覚えてもいい一方, SV A for B, 特にA for Bをforのコアミーニングに合わせて「AとBを交換する」と一般的に捉えることもできます.

構造が見えたのでAとBを詳しく見てみましょう. まずAのthe position of the small hand of my watchは各名詞に定冠詞がついています. ここでもmyは定冠詞相当のはたらきをしているので広義定冠詞として処理しています. 一方Bのtimeは無冠詞単数なので抽象的な概念としての時間を表しています. つまり英文の構造からは「抽象概念を具体物(時計の針の位置)で置き換える」形になっています. 日本語では曖昧になりがちな具体的な時刻・時間と, 抽象概念としての時間が, 冠詞と可算・非可算という名詞に対する概念ですっきり明確に表現しています.

補足
主語が人ではない理由

ここでは主語を人にせずぼかしています. 人にすると誰がそう思っているか書くのが難しいからでしょう. これは論文なので論文の"we"を使う手もあったかもしれませんが, それを避けてあるのです. そもそも論文の"we"は原則として実験事実のような誰もがそう思うことに対して使うので, 「そう思うかもしれない」のところには使いづらいのだと思います. ふつうの文章または英会話なら"you"でいいかもしれませんが, 論文で"you"は使いづらい事情もあるのでしょう.

attendの意味

ここでのattendは「出席する」ではなく「伴う」と紹介しました. 解説でも書いたように「伴う」は辞書にも載っている意味です.

実は私も最初はこの意味を知らず, 出席ではおかしいと思って「関わる」と訳出したのですが, 改めて辞書を調べたらここではぴったりの「伴う」があったので, これに変えました.

知っている単語だからと言ってその意味を無理にあてはめてもうまく行かないことがあります. そういう場合は一呼吸置いてきちんと辞書を調べてみましょう. 特に意外な意味に出会った場合は英英辞典を見たり語源を調べて, 何故その意味を持つにいたったか考えてみると言語に対する直観が磨けます.

substitute A for Bの意味

これについて念のため書いておきましょう. 一般的に「AとBを交換する」だとAとBが等価なように感じるかもしれません. しかし純粋に構造だけで見ると, まずsubstitute Aで意味が完結していて補足としてfor Bがあります. つまり「Aを使う」ことが前提で「Bの代わりに」が補足情報として添えられているため, 「AをBの代わりに使う」というAが前に出てくる訳語が選ばれています.

sub <- subway 泳 substitute <- sub+statuo (cf. status)

第042回 第21文の多言語比較・読解

1
2
3
4
(face-remap-add-relative 'default :family "Yu Gothic")
(face-remap-add-relative 'default :family "Migu 1M")
(face-remap-add-relative 'default :family "newspaper")
(face-remap-add-relative 'default :family "Noto Sans")

まず確認

  • 録画はじめた?
  • 音は大丈夫?
    • 一度音声が入っていなくてひどい目に遭ったことを忘れないように.
  • 吃音があり, 言葉は非常に聞き取りづらいと思うのでそのつもりで聞いてほしい.
  • 必要なら適当な手段で文章を書いて「話す」こともある.

YouTube 公開用: これを読んでいる方への注意・言い訳

これはコンテンツの原稿案であり, 私の勘違いや単純なミスを含めた間違いも含まれた文章・コンテンツです. そのつもりで内容を眺めてください. 勉強会の最中や後で指摘を受けてオリジナルの原稿には修正を入れ続けますが, 多重管理が大変なのでこちらの記録自体はいちいち修正しません. もちろん指摘は歓迎しますし, 個々のファイルに関して指摘された部分は修正します. 適当なタイミングでコンテンツ・サービスをリリースするので, もしあなたが間違いを潰した (少ない) バージョンのコンテンツで勉強したいなら, それを待ってください.

講義動画と関連リンク

この記事・動画に特化したリンク先は次の通りです。

以下いつもの関連コンテンツ群です。

進捗・TODO・今日のメモ

  • 多言語比較のはじめから

内容: コンテンツ (案) からの転記

対象文
en.21

And in fact such a definition is satisfactory when we are concerned with defining a time exclusively for the place where the watch is located; but it is no longer satisfactory when we have to connect in time series of events occurring at different places, or---what comes to the same thing--- to evaluate the times of events occurring at places remote from the watch.

de.21

Eine solche Definition genügt in der Tat, wenn es sich darum handelt, eine Zeit zu definieren ausschließlich für den Ort, an welchem sich die Uhr eben befindet; die Definition genügt aber nicht mehr, sobald es sich darum handelt, an verschiedenen Orten stattfindende Ereignisreihen miteinander zeitlich zu verknüpfen, oder --- was auf dasselbe hinausläuft --- Ereignisse zeitlich zu werten, welche in von der Uhr entfernten.

fr.21

Une telle définition est dans les faits suffisante, quand il est requis de définir le temps exclusivement à l'endroit où l'horloge se trouve. Mais elle ne suffit plus lorsqu'il s'agit de relier chronologiquement des évènements qui ont lieu à des endroits différents --- ou ce qui revient au même ---, d'estimer chronologiquement l'occurrence d'évènements qui surviennent à des endroits éloignés de l'horloge.

it.21

Una definizione del genere basta infatti quando si tratta di definire un tempo indipendentemente dalla posizione nella quale si trova l'orologio; ma la definizione non basta più quando si tratta di collegare temporalmente serie di eventi che abbiano luogo in posti diversi, ovvero - il che è equivalente - valutare temporalmente eventi che abbiano luogo in posti lontani dall'orologio.

sp.21

De hecho, una definición de este tipo sería suficiente en caso de que se trate de definir un tiempo exclusivamente para el lugar en el cual se encuentra el reloj; no obstante, esta definición ya no sería suficiente en cuanto se trate de relacionar cronológicamente series de eventos que ocurren en lugares diferentes, o --- lo que implica lo mismo --- evaluar cronológicamente eventos que ocurren en lugares distantes del reloj.

ru.21

Такое определение, действительно, достаточно в случае, когда речь идет о том, чтобы определить время лишь для того самого места, в котором как раз находятся часы; однако это определение уже недостаточно, как только речь будет идти о том, чтобы связать друг с другом во времени ряды событий, протекающих в различных местах, или, что сводится к тому же, установить время для тех событий, которые происходят в местах, удаленных от часов. }

sch.21

事实上, 如果问题只是在于为这只表所在的地点来定义一种时间, 那么达样一种定义就已经足够了; 但是, 如果问题是要把发生在不同地点的一系列事件在时间上联系起来, 或者说------其结果依然一样------要定出那些在远离这只表的地点所发生的事件的时问, 那么这徉的定义就不够了.

ja.21

そして実は, 時計が置かれた場所に対する時間を定義することだけに関心がある場合, そのような定義で十分なのだ; しかし別の場所で起きた事象の時系列を繋がなければならないか, または---同じことに帰着するのだが---時計と離れた場所で起きた事象の時間を評価しなければならないとき, それはもはや満足のいく内容にはならない.

英語解説
文構造

まずは文法的に大きな構造を確認しましょう. 特に論文はその主題に沿って文章を組んでいるため, 文・単語など細部の構造も全体の構造から決まる部分が多くなります.

  • And in fact such a definition is satisfactory
    • when we are concerned with defining a time exclusively for the place
      • where the watch is located;
  • but it is no longer satisfactory
    • when we have to connect in time series of events occurring at different places,
      • or to evaluate the times of events occurring at places remote from the watch.
      • ---what comes to the same thing---

冒頭のAndは議論が直接的に続いていることを表し, 特にis satisfactoryと書かれています. そしてセミコロンのあとにbut it is no longer satisfactoryと来ていて, 前の内容を肯定的に受け取ったあと, 何かしらの意味でそれでは問題があると主張しているはずです. またor to evaluateはhave to connectの言い換えのorです. わかりにくい内容があってそれを補足している様子も見えます.

And in fact such a definition is satisfactory

主な構造は第二文型SVCで次の通りです.

  • a definition is satisfactory

主語は不定冠詞がついていて曖昧さがあります. もちろんsuchでその曖昧さを減らしています. ここでの曖昧さはここまでの「定義」が会話ベースの気分的な定義であることを受けています. 日本語で言えば「何にせよだいたい前の定義で示した気分」くらいの話を英語だと不定冠詞で表現できるとも言えます.

And in factは直接的に前の文を受けています. 「---できるように思うかもしれない」と言っているので, 「実際できることはできる」と言っているからです.

既に全体の構造を見ていて, 後半のbut以下でそれをひっくり返すことがわかっています. 次はwhenからはじまるので, 「状況を限定すれば正しいが一般的には正しくない」という話のはずです. 詳しく確認してみましょう.

when we are concerned with defining a time exclusively for the place

いつ正しいのかを示す副詞節です.

主な構造をどう思うかはひとつの焦点です. ここでは第三文型SVOで捉えます.

  • we are concerned with defining a time
  • V = are concerned with
  • O = defining a time

形式的には受身のように見えますが, ここはbe concerned with「---に関心がある」という熟語・動詞句とみなすべきです. 目的語は動名詞definingが導く名詞句です.

ここでのポイントはdefining a timeのa timeです. 前文でのtimeは無冠詞で抽象概念としての時間でした. ここでは不定冠詞がついているので何かしら具体化された存在です.

どういう意味で具体化されたのかと思うわけで, 続けて読むとexclusively for the place「特定の位置に対して」とあります. ここでexclusivelyをつけた上でthe placeとガチガチの限定が走っていて, ここに対して定義されたa timeであることがわかりました. こう思うとここでのtimeは日本語としては時間よりも時刻と訳した方が適切かもしれません.

さて, the placeと定冠詞つきのplaceが出てきました. ここのthe placeには多少の曖昧さがあるため, 曖昧さをなくすために関係副詞がつきます.

where the watch is located;

これはthe placeの曖昧さをなくすための補足です. どんな意味でthe placeなのかというと, 「時計がある位置」という意味でのtheだったのです.

もしあなたが何となくでも特殊相対性理論を知っているなら, 「知っている話がやってきた」と思うかもしれません. 実際にそうです. これはまさにその議論を提唱した論文であり, 慎重さに慎重さを重ねて論陣を展開しています. じっく見ていきましょう

but it is no longer satisfactory

文法的にも内容的にも特に言うことはありません. 強いていうなら単なるnotではなくno longerという表現を使っているのが内容的なポイントでしょうか. ここまでのちゃぶ台をひっくり返します. どうひっくり返すのか確認しましょう.

when we have to connect in time series of events occurring at different places,

あるときには問題なかったわけで, 内容的には問題がある状況が出てくるはずです.

大きな構造は第三文型SVOとして次のように取ってみます.

  • we connect in time series

動詞はconnect inを動詞句または熟語とみなします. 実際connect in seriesで「直列につなぐ」と訳すときがあり, まさにこれを使っていると思っても構いません. ここでのseriesは複数形とみなせばよく, time seriesはふつう「時系列」と訳します. そして単なる時系列ではなくof events以下でさらに補足が入ります. 単なる「事象の時系列」ではなく「異なる場所で起きた事象の時系列」です.

実際に前段では「時計を一つ取り上げ, その時計がある場所」の時間を議論していました. いろいろな場所での事象とその時系列を考えるときに問題があることが示唆されました.

最後に助動詞have toを考えましょう. これによって「こういう状況を考える必要があるので前段の議論・定義では不十分なのだ」と強く示唆しています. 一語一語を徹底的に選び抜いていて, まさにお手本のような論文です.

---what comes to the same thing---

これはor to evaluateでorとtoの間に入る挿入句で, 意味を確定する上で先に挿入句を見ておいた便利です. 実は慣用句で「結局同じことだが」という意味です. ここから直前の接続詞orは言い換えを表すorであることも見えます.

or to evaluate the times of events occurring at places remote from the watch.

間に挿入句も入っているため, ぱっと見ではto不定詞のように見えるかもしれません. 実際にはhave to connect or have to evaluateを表すorで, このorは言い換えを表すorです. 既に挿入句の解析からもわかっていることです. 実は言い換えであることは目的語句が次のように似ていることからもわかります.

  • connect in time series of events occurring at different places
  • evaluate the times of events occurring at places remote from the watch

文章を書く技術として,似た内容を並べるときはなるべく同じ単語を使うことで, 違う部分を際立たせて違いを読み取りやすく工夫しているのです.

意味としてはevaluate the times of eventsで「各事象の時刻を評価する」で, 対象が時系列から各事象の時刻に変わりました. ここでthe timesと定冠詞を使っていることはしつこく注意しましょう. 場所も問題だったわけでそれに対する補足はat places remote from the watchです.

事象が無冠詞複数であることと合わせてplacesは無冠詞複数です. ここでplacesに定冠詞がついていない以上, the timesに合わせているわけではないことに注意してください.

もうひとつ, from the watchと時計が定冠詞単数で指定されていることに注意してください. 特定のひとつの時計を使っていても時計から離れた場所の場所での事象を考えるとうまくいかないという主張です. 冠詞の有無・単複に本質的な情報が詰まっているので見落としてはいけません.

節終了

講演の記録

これまで次のようなイベント・講演会に登壇してきました.

数学のためのプログラミング入門・学習案内

理論物理学者に数学を教える上でのコツ: 「理論物理学者に市民が数学を教えようの会」の経験をふまえて

科学と社会の狭間の一市民の奮闘

講演会シリーズ「理工学のフロンティア」, 平成26年度第4回, 2014/10/15.

Google ページランクの数理

  • 第5回関西すうがく徒のつどい, 京都大学, 2014/09/13-14.

エルゴード理論の数理物理: 解析力学からの幾何学, 力学系, そして確率論と連分数展開

大学生向けセミナー, 東工大, 2014/07/20.

線型代数と微分積分: 大学数学の紹介, そして量子力学の数学に向けて

  • 大学新入生向けセミナー, 津田塾, 2014/05/10.
  • 大学新入生向けセミナー, 東工大, 2014/04/19.

コイン投げからの大数の法則・中心極限定理

知人向け勉強会, 新宿, 2014/03/22.

Lieb-Loss Analysis セミナー: 変分問題と Thomas-Fermi 汎関数

知り合いの解析系の学生向け+1-2年生向けセミナー, 東工大, 2014/2/17.

関数論ウルトラショートコース: メインストリートを駆け抜けよう

主に都数のメンバー向けセミナー, 早稲田大学, 2013/10/14

偏微分方程式の逆問題--拡散方程式の数学と物理と工学

第4回関西すうがく徒のつどい, 大阪大学, 2013/09/21

Gaussian superprocess and its application to Quantum Field Theory: Sasakure Seminar

ささくれセミナー, 東工大, 2013/9/10.

Friedrichsモデルの解析:埋蔵固有値の摂動論

坊ゼミ, 埼玉大学, 2013/3/24.

色々な反例で遊ぼう

第3回関西すうがく徒のつどい, 京都大学, 2013/3/16.

Ising モデルのための複素解析

原・田崎 相転移と臨界現象の数理 査読ゼミ, 東大, 2013/1/18.