ビクター音楽産業の新竹取物語

が初めて買ったゲームなわけだが、今日のプレイが今世で最後になるのか。
このゲームに限らずコマンド入力はワードが出てこないと停滞するので難儀です。
アルファのガン+ウバウなんか分かる訳ない。


それにしても、ゲームクリアの認定証残しておけばよかった、殺人倶楽部やら破邪の封印やら。
あの頃のゲームがやりたいね、特にシステムサコムのZONEとHIGHWAY STAR。


以下クリアまでの最短路。
ローマ字入力が楽、CAPS LOCKを忘れずに。
★は入手できる持ち物。


■出発地点

  • キ(KI)+ノボル(NOBORU)
  • マッチ(MATCH)+トル(TORU)
  • オリル(ORIRU)


■西ルート~草原

  • 出発地点でニシ
  • ニシ×10回・・・目が慣れるまで
  • アナ(ANA)+ミル(MIRU)
  • モノ(MONO)+トル(TORU) ★フード
  • デル(DERU)
  • ニシ
  • フード(FOOD)+アゲル(AGERU) ★ナイフ
  • オテ(OTE)+Y
  • ハコ(HAKO)+アケル(AKERU)
  • サケ(SAKE)+トル(TORU) ★サケ
  • パンツ(PANTS)+トル(TORU) ★パンツ
  • ソト(SOTO)+デル(DERU)+ワープ(WARP)


■東ルート~草原

  • 出発地点でヒガシ
  • キタ
  • オジイサン(OJIISAN)+テツダウ(TETSUDAU)+Y ★サケ、リンゴ
  • キタ
  • キタ
  • ヒガシ×10回(目が慣れるまで) or ロウソク(ROUSOKU)+ツケル(TSUKERU)
  • ムチ(MUCHI)+フル(FURU)
  • リンゴ(RINGO)+アゲル(AGERU) ★ナイフ、カギ
  • ニシ
  • カギ(KAGI)+アケル(AKERU)
  • ニッキ(NIKKI)+トル(TORU) ★ニッキ
  • ヒガシ
  • ミナミ
  • ニシ


■草原~蛇

  • キタに進んでヘビと勝負
  • 草原の上端の方にドットの深緑草部分の塊がいくつかある、真ん中の1つ左の塊の右端から4ドット目の上にヘビが来た時にスペース押下


■銀行

  • キタに進んで四ツ辻で、ギンコウ(GINKOU)+ハイル(HAIRU)+Y


■セイコさん

  • 何回できる?→9回+Y(正直に言う)
  • 恋人はいる?→N(いない)
  • 私のことどう思う?→ビジン(BIJIN) ★2両
  • サケ(SAKE)+アゲル(AGERU)・・・サケから始めないとパンツorニッキで物が貰えない、1両のキーワード2つヒットでネコ選択時に占い
    • ナマエ(NAMAE) ★1両
    • シゴト(SHIGOTO) ★1両
    • シュミ(SHUMI) ★1両
    • ホン(HON) ★1両
    • タベモノ(TABEMONO) ★1両
    • ネコ(NEKO) ★1両
    • イクツ(IKUTSU) ★1両
    • ケッコン(KEKKON) ★1両
    • ガッコウ(GAKKOU) ★1両
    • シンチョウ(SHINCHOU) ★1両
    • タイジュウ(TAIJUU) ★1両
    • サイズ(SIZE) ★1両
    • ネンレイ(NENREI)
    • タンジョウビ(TANJOUBI)
    • セックス(SEX)
    • カゾク(KAZOKU)
    • シュッシン(SHUSSHIN)
    • ケツエキ(KETSUEKI)
  • ムチ(MUCHI)+ミセル(MISERU)+Y ★2両
  • パンツ(PANTS) or ニッキ(NIKKI)+ミセル(MISERU) ★50両
  • デル(DERU)


■ショップ

  • 四ツ辻をヒガシに進む
  • キタで店に入って全て購入 ★サングラス、ツルハシ、オノ
  • ジドウハンバイキ(JIDOUHANBAIKI)+ミル(MIRU)
    • オカネ(KANE)+イレル(IRERU) ★ビニボン
  • ニシに進んで四ツ辻へ


■川

  • キタに進んで川へ
  • 道が斜め下に折れ始めた地点(崖先の斜めになっている所の左端)でスペース押下
  • 渡ったらツルハシとオノを取り忘れないように
    • ツルハシ(TSURUHASHI)+トル(TORU)
    • オノ(ONO)+トル(TORU)


かぐや姫まで

  • ニシ×2回+キタ×1回で三叉路へ
  • セイコさんの占いの方向へ進む
  • 岩を抜けるには2通り
    • イワ(IWA)+ワル(WARU)×20回
    • 岩の前でヒガシ or ガンペキ(GANPEKI)+ミル(MIRU)→カネ(KANE)+イレル(IRERU)→ホン(HON)+ミル(MIRU)
  • キタ
  • サングラス(SUNGLASS)+カケル(KAKERU)
  • タケ(TAKE)+ワル(WARU)


■所持品

  • 一覧を見るには、モチモノ(MOCHIMONO)


■迷路の抜け方

  • FLFRLFRFRFFLFLFFFFRLR
  • 出発地点で洞窟に入り、ニシ×10回して、ガンペキ(GANPEKI)+ミル(MIRU)と書かれている


■川に落ちたら

  • おばあさんから逃れるには、キス(KISS)+スル(SURU)
  • 川越え先に戻ってきた時、オノとツルハシを取り忘れないように


■山賊

  • カネ(KANE)+ワタス(WATASU)


■他

  • 日記や蓋みたり、小屋燃やしたり、色々蹴ったり、泳いだり、高いところから飛んだり、してみてください

Web上でソフト開発に関して意見をするとき

は、どういう立場で発信しているのか、バックグラウンドを明確に出来ないもんですかね。
そこを明確にしないと、議論なんて成り立たず、ただの非難の応酬にしかならんと思うんですが。
少なくとも、主に携わっているプロジェクトや発言時のスタンスは明記してほしいものです。
議題にもよるでしょうけど、ざっくり下記内容ぐらいは分からないと、意見の妥当性が判断できんと思いますがね。
守秘義務だったり、個人が特定できてしまったりで、出せない情報はあるでしょうが、少なくとも●部分くらいはね…。

  • システムの情報
    • 製品分類●=自社製品/受託開発製品/…
    • 製品分類●=PKG/Webサービスエンタープライズ/…
    • 業種分類=B2C(Web)/金融/鉄道/…
    • 金銭取扱=有無
    • 導入件数=xx社/xx個/xx台
    • 利用規模=1日xx人
    • 主要言語=C++/C#/Java/…
    • 機器制御=有無 (PC以外)
    • 開発種別=新規開発/保守開発/派生開発/…
    • 受注金額=xx百万円
    • 開発期間=xxヶ月〜xxヶ月
    • 母体規模=xxKs (新規でない場合)
    • 開発規模●=xxKs
    • 開発手法●=ウォーターフォール/アジャイル/…
    • 作成文書=要件書/基本設計書/機能設計書/詳細設計書/プログラム設計書/マニュアル/…
    • 受注形態●=自社開発/請負(一次)/請負(二次以下)/…
    • 開発人数(システム全体)=xx人/月
    • 開発人数(自社・発注先)=xx人/月
    • レビュー対象物=仕様書/コード/マニュアル/…
    • 発注元レビュー=有無
  • 自身の情報
    • 担当職種●=PL/PM/SE/PG/障害管理/品質管理/原本管理/…
    • 業界経験●=xx年(PG xx年、PL・PM xx年(障害・品質管理含む)、…)
    • 費用交渉=自身が実施/PMが実施
    • 契約作業=自身が実施/PMが実施


あくまでこれまでの経験で言うと…
筋の通った日本語の文章もまともに書けない人のコードなんて見れたものじゃない。
ドキュメントは言うに及ばず。
そして「ドキュメントは無駄」という人の日本語は大抵がお粗末。
分からないことは人のせいにするし、言いたいことは助詞がおかしいので意味不明。
また、ある程度の規模と人数で開発する限り、ドキュメントは必須(ツール除く)。
UMLだろうが、フローチャートだろうが、使える物は何でも使って、齟齬や誤りを撲滅!


なので特に不要論を語るの方達には、どんな世界からの発信なのか、まずはバックグラウンドを語ってほしいものです。
と、あくまで傍観者の意見として、この世界の片隅にてひっそりと記しておきます。


ちなみに私の経歴は次のようになりますが、私自身は議論に参加しないので関係ないですがね。

  • システムの情報
    • 製品分類=受託開発製品
    • 製品分類=エンタープライズ
    • 金銭取扱=有
    • 導入件数=100〜1000
    • 利用規模=1導入単位・1日あたり百〜千オーダー
    • 主要言語=C++/C#
    • 開発種別=新規開発/保守開発/派生開発
    • 開発期間=6ケ月〜1.5年
    • 母体規模=10万step〜100万stepオーダー
    • 開発規模=10Ks〜50Ks
    • 開発手法=ウォーターフォール
    • 作成文書=機能設計書/詳細設計書/プログラム設計書
    • 受注形態=請負(一次)
    • 開発人数(システム全体)=5〜40人/月
    • 開発人数(自社・発注先)=5〜15人/月
    • レビュー対象物=仕様書/コード
    • 発注元レビュー=有
  • 自身の情報
    • 担当職種=PL/PM/SE/PG/障害管理/品質管理/原本管理
    • 業界経験=15年(PG 3年、PL・PM 12年(障害・品質管理含む))
    • 費用交渉=自身が実施
    • 契約作業=自身が実施


※補足1: 作ったものに対して試験をするのは当たり前なので、そのような記載は省いておりますよ。

実対称行列のスペクトル分解

を或ることに使いたいので、線形代数について事実の纏め。

■ベクトル空間

  • 集合 V、体K が次の条件を満たすとき、VK 上のベクトル空間と呼ぶ。
    • 和が定義されている: \forall x, y\in V. \exists z\in V. x+y=z
    • スカラー倍が定義されている: \forall x\in V. \forall a\in K. \exists z\in V. ax=z
    • Vが可換加法群:
  • W\subset VV の和とスカラー倍に関してベクトル空間となるとき、WV の部分空間と呼ぶ。
    • 空でない B=\{x_1, \cdots, x_r\}\subset V に対して、\langle B\rangle=\{a_1x_1+\cdots+a_rx_r | a_1, \cdots, a_r\in K\}Vの部分空間となる
  • W_1, \cdots W_rV の部分空間のとき、
    • W_1+\cdots+W_r=\{x_1+\cdots+x_r | x_1\in W_1, \cdots, x_r\in W_r\}W_1, \cdots W_r を含む最小の V の部分空間となる
    • W_1\cap W_2V の部分空間となる
    • W_1\cap W_2=\{0\} のとき、W_1+W_2W_1W_2 の直和と呼び、W_1\oplus W_2 で表す
    • W_1\cup W_2 は一般に部分空間ではない
  • K^n=\{(x_1, \cdots, x_n) | x_1, \cdots, x_n \in K\} は 次の算法で n 次元ベクトル空間となり、数ベクトル空間と呼ぶ
    • (x_1, \cdots, x_n)+(y_1, \cdots, y_n)=(x_1+y_1, \cdots, x_n+y_n)
    • a(x_1, \cdots, x_n)=(ax_1, \cdots, ax_n)

内積

  • K\mathbb{R} または \mathbb{C} のとき、次で定める数ベクトル空間 K^n 上の複素数値2項演算 (x,y)内積という
    • x=(x_1,\cdots, x_n)y=(y_1,\cdots, y_n) に対して、(x,y)=\sum_{i=1}^n x_iy_i
  • 次が成立つ
    • (x+y,z)=(x,z)+(y,z)
    • (ax,y)=a(x,y), a\in K
    • (x,y)=\overline{(y,x)}
    • x\not=0\rightarrow(x,x)\not=0
    • (x,x)\geq0

■次元

  • \dim_K(V)=\min_{B\subset V}\{{\rm card}(B) | V=\langle B\rangle\}V に対して一意に定まり、VK 上の次元と呼ぶ
  • {\rm card}(B)=\dim_K(V) のとき、BV の基底と呼ぶ
    • 基底 B=\{e_1, \cdots, e_n\} を一つ選ぶと、V の任意の元 xx=a_1e_1+\cdots+a_ne_n (a_1, \cdots a_n\in K) と一意に表される
  • \forall i,j. (i\not=j\rightarrow (e_i, e_j)=0) のとき、B を直交基底と呼ぶ
  • さらに \forall i. (e_i, e_i)=1 のとき、B を正規直交基底と呼ぶ

■線形写像

  • K 上のベクトル空間  V, W に対して、写像 f:V\rightarrow W が次を満たすとき、線形写像と呼ぶ
    • \forall x, y\in V. f(x+y)=f(x)+f(y)
    • \forall a\in K.  \forall x\in V. f(ax)=af(x)
  • 特に V=W のとき、f を線形変換と呼ぶ
  • 線形写像 f, g:V\rightarrow Wa\in K に対して、次も線形写像となる
    • V\ni x\mapsto (f+g)(x)=f(x)+g(x)\in W
    • V\ni x\mapsto (af)(x)=af(x)\in W
    • V\ni x\mapsto (f\circ g)(x)=f(g(x))\in W
  • {\rm Img}(f)=\{y\in W | \exists x\in V. f(x)=y\}W の部分空間となり f の像と呼ぶ
  • その次元 {\rm rank}(f)=\dim_K({\rm Img}(f))fのrankと呼ぶ
  • {\rm Ker}(f)=\{x\in V | f(x)=0\}V の部分空間となり f の核と呼ぶ
  • その次元 {\rm null}(f)=\dim_K({\rm ker}(f))f のnullityと呼ぶ
    • {\rm rank}(f)+{\rm null}(f)=\dim(V) となる

■行列

  • V の基底 B_V=\langle e_1, \cdots, e_n\rangleW の基底 B_W=\langle E_1, \cdots, E_m\rangle を固定すると、f(e_j)=a_{1j}E_1+\cdots+a_{mj}E_m と一意に表せる
  • \forall v=\sum_{j=1}^{n}b_je_j\in V に対して、f(v)=f(\sum_{j=1}^{n}b_je_j)=\sum_{j=1}^{n}b_jf(e_j)=\sum_{j=1}^{n}b_j(\sum_{i=1}^{m}a_{ij}E_i) となるので、f は行列 A_f=(a_{ij})で表せる
  • A_fB_V, B_W に関する f の表現行列と呼ぶ
  • 行列 A に対して {\rm rank}(A)=\dim_K(\langle A_1, \cdots, A_n\rangle)A のrankと呼ぶ、ここで A_jA の第 j 列とする
    • {\rm rank}(A_f)={\rm rank}(f) となる
    • 2つの行列 A, B に対して、A,B は共に f の表現行列 \Leftrightarrow 正則行列 P が存在して B=PAP^{-1}

■特殊な線形変換/行列

  • \forall x,y\in V. (f(x), f(y))=(x, y) なる線形変換 f を直交写像と呼び、その表現行列を直交行列と呼ぶ
  • \forall x,y\in V. (f(x), y)=(x, f(y)) なる線形変換 f を対称写像と呼び、その表現行列を対称行列と呼ぶ
  • \forall x\in V. f\circ f(x)=f(x) なる線形変換 f をベキ等写像と呼び、その表現行列をベキ等行列と呼ぶ
  • V の直和分解 V=V_1\oplus V_2 が存在し、\forall x=x_1+x_2\in V (x_1\in V_1, x_2\in V_2) に対して f(x)=x_1 なる線形変換 f を射影と呼び、その表現行列を射影行列と呼ぶ
  • 対称な射影を直交射影と呼ぶ
    • A が直交行列 \Leftrightarrow {}^tA=A^{-1}
    • A が対称行列 \Leftrightarrow {}^tA=A
    • A がベキ等行列 \Leftrightarrow A は射影行列
    • V=V_1\oplus\cdots\oplus V_r \Leftrightarrow 射影 p_1, \cdots, p_r が存在し、次の4条件を満たす
      • \forall i. p_i(V)=V_i
      • I=p_1+\cdots+p_r
      • \forall i. p_i\circ p_i=p_i
      • \forall i, j.(i\not=j\rightarrow p_i\circ p_j=0)

固有値

  • 線形変換 f に対して f(x)=\lambda x なる \lambda\in Kx(\not=0)\in V があるとき、\lambdaf固有値x\lambda に対応する f固有ベクトルと言う
  • f固有値 \lambda に対応する固有ベクトル全体に 0\in Vを加えた集合 F_f(\lambda)=\{x\in V | f(x)=\lambda x\}V の部分空間となり、\lambda に対応する f の固有空間と言う
    • 異なる固有値 \lambda_i, \lambda_j に対して、直和条件 F_f(\lambda_i)\cap F_f(\lambda_j)=\{0\} が成立つので、異なる固有値空間に属す固有ベクトルは一次独立
    • dim(F_f(\lambda_1))+\cdots+dim(F_f(\lambda_r))=dim(V) のとき F_f(\lambda_1)\oplus\cdots\oplus F_f(\lambda_r)=V、よって射影 p_1, \cdots, p_r が存在して 次が成立つ
      • f=\lambda_1p_1+\cdots+\lambda_rp_r
      • p_1+\cdots+p_r=I
      • p_i\circ p_i=p_i
      • p_i\circ p_j=0 (i\not=j)
  • 線形変換 f を正方行列 A として、Aに対しても同様の概念を定義すると
  • A が実対称行列のとき、
    • A は重複を許して n 個の固有値を持ち、それらは全て実数
    • D=P^{-1}AP なる P は直交行列
    • 次を満たす正射影行列 P_1, \cdots, P_r が一意に存在する
      • A=\lambda_1P_1+\cdots+\lambda_rP_r
      • P_1+\cdots+P_r=I
      • P_sP_s=P_s
      • P_sP_t=O (s\not=t)
    • P_s=\prod_{t\not=s}\frac{1}{\lambda_s-\lambda_t}(A-\lambda_tI)
    • F_A(\lambda_s) の正規直交基底を x_k=(x_{k1},\cdots, x_{kn}) (k=1,\cdots,t) とすると、P_s(i,j) 成分は \sum_{k=1}^t x_{ki}x_{kj}

データベーススペシャリストの

勉強を今回はまじめにやろうと、キーワードをメモリング。
とりあえず、以下暫定で、随時更新

■データモデル

  • 概念データモデル:実業務の中から必要なデータの集まりとそれらの関係を洗い出し、まとめたもの。
    • トップダウンアプローチ:現状に関係なく、特定の業務に依存しない、データ本来のあるべき姿を基にデータモデルを作成する方法。
    • ボトムアップアプローチ:現状改善型のアプローチで、現行システムを分析し、現状のデータモデルを作成してから、それを新しいデータモデルに変換していく方法。
  • 論理データモデル:概念データモデルで作成したものを、テーブル、レコードといったコンピュータで実装可能な論理的データ構造として定義したもの。データのアクセス用件に基づきデータベースの種類が決定される。特定のハード、OS、DBMSには依存しない。
  • 物理データモデル:ハードウェアやDBMS製品を含む、実装方法の定義。

■3層スキーマアーキテクチャ

  • 3層スキーマアーキテクチャ:データ構造の独立性を観点とした設計原理。ユーザに近い部分から、外部スキーマ、概念スキーマ、内部スキーマとなる。それぞれのスキーマは独立しており、ある層の変更がほかの層に影響しない。
    • 外部スキーマ:ユーザやアプリケーション視点でのデータ構造を定義したもの。この定義により、業務(アプリケーション仕様)が変更になっても、概念スキーマの変更がない。RDBではビューに相当。
    • 概念スキーマ:データベース化する対象が業務のデータ構造を定義したもので、特定のハード、OS、DBMSに依存しない。データモデルの論理データモデルに相当。RDBではテーブルに相当。
    • 内部スキーマ:実装の観点からデータ構造を定義したもので、データの物理的格納構造、ファイル配置、ファイル編成法などに相当。この定義により、チューニングなど実装上の変更が生じても、概念スキーマへの影響が無い。データモデルの物理データモデルに相当。

■関係モデル

  • キー
    • スーパーキー:タプルを一意に識別できる属性集合、複数存在する可能性あり、NULLを含んでOK。
    • 候補キー:スーパーキーの中で極小の属性集合のもの(つまり、真部分集合がスーパーキーとならないもの)、複数存在する可能性あり、NULLを含んでOK
    • 主キー:候補キーの中で主に使用するものとして定めたキー、表に対して1つのみ、主キーを成すどの列もNULLを含んではいけない
    • 代替キー:主キーでない候補キー
    • 複合キー:2つ以上の属性からなるキー
    • 代用キー:連番などをつけて主キーの代わりにする、複合キーを連番などの意味のないキーに置き替えることで、複合キーを構成している属性はすべて非キー属性に替え,代替キーとして指定する
    • 非キー属性:候補キーに含まれないフィールド
    • 外部キー:他テーブルを参照している属性集合、参照先テーブルでは候補キーとなっている必要がある

■関数従属

  • 関数従属:属性集合Xの値が定まると属性集合Yの値が1つに定まるとき、YはXに関数従属するといい、X→Yと表す。Xを決定項、Yを被決定項という。
    • 自明な関数従属:YがXの部分集合のとき、X→Yを自明な関数従属という。
    • 完全関数従属:X→Yが成立し、Xの全ての真部分集合X'に対してX'→Yが成立しないとき、YはXに完全関数従属するという。
    • 部分関数従属:X→Yが成立し、Xのある真部分集合X'に対してX'→Yが成立するとき、YはXに部分関数従属するという。
    • 推移的関数従属:X→Y、Y→Zが成立し、Y→Xが成立しないような属性集合Yがあるとき、ZはXに推移的関数従属するという。ただし、X→Y、Y→Zは自明でないとする。
    • 結合従属性:関係Rの属性集合の族X1、…、Xnに対して、RのX1、…、Xnへの射影の自然結合がR自身になるとき、Rは結合従属性*(X1,X2,…Xn)をもつという。
      • 自明な結合従属性:あるiに対してXi=Rの場合
    • 多値従属:関係Rの属性集合X、Yが次を満たすとき、YはXに多値従属するといい、X→→Yと表す。関係Rのタプルtに対して、tの属性集合Xに関する部分をt(X)で表す。このとき、任意の2つのタプルt1, t2に対してt1(X)=t2(X)ならば、あるタプルt3が存在してt3(X)=t1(X)、t3(Y)=t1(Y)、t3(R-X∪Y)=t2(R-X∪Y)。またこのとき、対照的に次のようなt4が存在する:t4(X)=t1(X)、t4(Y)=t2(Y)、t4(R-X∪Y)=t1(R-X∪Y)。またまたこのときRは、X,YとX,Zに分解できる。
      • 自明な多値従属:Y⊆XもしくはR=X∪Yの場合
      • 対称性のある多値従属:自明でない多値従属

■正規化

  • 正規化:1事実1箇所(1 fact in 1 place)を目指して、テーブルの整合性を保ったまま、テーブルの冗長性を排除し、データを効率的に管理できるようにすること。冗長性を排除するためにテーブルの分解という方法をとる。また分解後のテーブルを自然結合すると元のテーブルに戻るよう(結合従属性)に分解(情報無損失分解)を行う。
    • 非正規形:同じ意味を持つ属性集合が重複して現れる(繰返項目)ような関係、(社員番号、氏名、所属プロジェクト1、所属プロジェクト2、…)など
    • 第1正規形:非正規形から繰返し項目を分解して得られる関係。
    • 第2正規形:第1正規形から、候補キーに部分関数従属する非キー属性を分解して得られる関係。第1正規形であり、どの非キー属性も全ての候補キーに対して完全関数従属している関係。
    • 第3正規形:第2正規形から、候補キーに推移的関数従属する非キー属性を分解して得られる関係。第2正規形であり、候補キーと非キー属性間に推移的関数従属が成立しない関係。
    • ボイス・コッド正規形:第3正規形から、非キー属性を決定項とする関数従属を分解して得られる関係。第3正規形であり、自明でない全ての関数従属性の決定項が候補キーであるような関係。第1、2、3、5正規形であるが、第4正規形であるとは限らない。
    • 第4正規形:ボイスコッド正規形から、対象性のある多値従属を分解して得られる関係。ボイスコッド正規形であり、対象性のある多値従属を持たない関係。
    • 第5正規形:第4正規形から、自明でない結合従属性を分解して得られる関係。第4正規形であり、自明でない結合従属性を持たない関係。

SQL

■埋込みSQL

トランザクション管理

■一貫性、独立性の保障(排他制御

  • 2相ロック:
      • (第1相)参加者に対し、コミット可否問合せ実施
      • (第2相)参加者からOK応答があったら、コミット実行指示
      • 一度ロックを解除すると、同トランザクション内ではロックをかけ直すことはできない、デッドロックは起きにくいが、完全には防げない。

■独立性の保障(直列可能性)

■耐久性の保障(障害回復)

■分散データベースシステム

■インデックス

■データウェアハウス

ようやくソロオトモ付きで

MH4の村・集会所(闘技大会除く)を全クリア。
基本ライトボウガン、強化ダラとミラだけはヘビー。


一番苦労した「王者達よ、拝謁の至福を、ライトボウガン」だけメモっておく。


装備は


持込は

  • 通常弾2、3
  • 貫通弾1、2、3
  • 電撃弾
  • カラハリ
  • 回復薬、解毒薬
  • モドリ玉調合
  • 秘薬調合
  • 落とし穴、シビレ罠、捕獲用麻酔玉
  • 守りの護符、爪
  • 力の護符、爪
  • 閃光玉
  • 強走薬

方針は

  • オトモは的にするだけなので何でもOK、どうせなら一矢でも報いてくれるほうがいいのでファイト
  • ネコ飯はネコの射撃術
  • 回復はBCで、逃げ回って契機を伺うのでなく、しっかり直す。
  • 開始後は閃光+電撃弾
  • 目くらまし状態がきれたら、疲労時は電撃、それ以外は通常弾2、3、貫通弾1
  • 2体時はとにかく当てる、クリティカルでなくてもいいから当てる
  • 赤青レウスには罠使わずで25分針
  • 銀レウスは、通常弾2、水冷、貫通弾2、3
  • 残り1:40では捕獲できず、貫通3を残時間一杯まで撃って、残り6秒で捕獲、

補足

  • 回避性能+3あれば、飛び掛かりは、当たる直前に相手と離れる方向にコロリン
  • 爆炎ブレスは近ければ真下に、遠ければ離れる方向にコロリン


さて4年越しのあの研究の完成まであと一歩、邁進すべし。

モナド

を少々勉強、Haskellとやらは知らぬ。
他にやりたい・やるべきことがあるのに…全くもって現実逃避。
以下、対象、射、関手、自然変換とはいわずに、型、プログラム、型コンストラクタ、多相型関数としてる。


■問題点

ABC に関するプログラム f:\, A\rightarrow Bg:\, B\rightarrow C があるとき、プログラムの合成 g\circ f: A\rightarrow C は型 A のデータ a に対して g\circ f(a)=g(f(a)) とすれば良い。

ここで f, g にリスト化や外部出力などの何らかの付随計算をさせる場合ことを考える。
そのような計算を付加した時の出力型を M\langle B\rangleM\langle C\rangle とし、出力を拡張したプログラムを  f':\, A\rightarrow M\langle B\rangleg':\, B\rightarrow M\langle C\rangle とすると、 f' の出力と  g' の入力の型が異なるので、g\circ f に対応する拡張プログラム (g\circ f)'f'g' の単純な合成では表せない。


■解決策

M を型 X に対して型 M\langle X\rangle を生成する型コンストラクタとし、プログラム f:\, X\rightarrow Y が与えられると、f を元に具体的なプログラム M\langle f\rangle:\, M\langle X\rangle\rightarrow M\langle Y\rangle が生成されるものとする。
そしてこの型コンストラクM に対して、2つの多相型関数を用意する。

  • \eta_{\tiny X}:\, X\rightarrow M\langle X\rangle
  • \mu_{\tiny X}:\, M\langle M\langle X\rangle\rangle\rightarrow M\langle X\rangle

次の計算で混乱しないように、幾つかの具体的な X に対して、プログラムの型を明確にしておく。

  • \eta_{\tiny M\langle X\rangle}:\, M\langle X\rangle\rightarrow M\langle M\langle X\rangle\rangle
  • M\langle \eta_{\tiny X}\rangle:\, M\langle X\rangle\rightarrow M\langle M\langle X\rangle\rangle
  • \mu_{\tiny M\langle X\rangle}:\, M\langle M\langle M\langle X\rangle\rangle\rangle\rightarrow M\langle M\langle X\rangle\rangle
  • M\langle \mu_{\tiny X}\rangle:\, M\langle M\langle M\langle X\rangle\rangle\rangle\rightarrow M\langle M\langle X\rangle\rangle

そしてこの2関数が次の性質をもつとき、三つ組 (X, \eta_{\tiny X}, \mu_{\tiny X})モナドと呼ぶ。

  • M\langle M\langle M\langle X \rangle\rangle\rangle のデータ x に対して、\mu_{\tiny X}\big(M\langle\mu_{\tiny X}\rangle (x)\big) = \mu_{\tiny X}\big(\mu_{\tiny M\langle X\rangle} (x)\big)
  • M\langle X \rangle のデータ x に対して、\mu_{\tiny X}\big(\eta_{\tiny M\langle X\rangle} (x)\big) = \mu_{\tiny X}\big(M\langle \eta_{\tiny X}\rangle (x)\big) = x
  • プログラム h: X\rightarrow Y と、型 X のデータ x に対して、\eta_{\tiny Y}\big( h(x)\big) = M\langle h\rangle\big( \eta_{\tiny X} (x)\big)
  • プログラム h: X\rightarrow Y と、型 M\langle M\langle X\rangle\rangle のデータ x に対して、\mu_{\tiny Y}\big( M\langle M\langle h\rangle\rangle(x)\big) = M\langle h\rangle\big( \mu_{\tiny X} (x)\big)

ここで、2つのプログラムを定義する。

  • (>>=):\, M\langle X\rangle\rightarrow (X\rightarrow M\langle Y\rangle)\rightarrow M\langle Y\rangle を、(>>=)(x, h):=\mu_{\tiny Y}\big(M\langle h\rangle (x)\big) で定める

      … x から型 X のデータを取出し、プログラム f を適用する

  • return:\, X\rightarrow M\langle X\rangle を、return(x)=\eta_{\tiny X} と定める

      … x を型 M\langle X\rangle へ詰込む

このとき、(g\circ f)' (g\circ f)'(a)=(>>=)(f'(a), g') で与えられる。

さらに上の4つの性質から、最低限なりたってて欲しい次の3つの性質が導ける。

  • (>>=)(return(x), f)=f(x)

      … 詰込んだ x を取出して f を適用するのと、直接 xf を適用するのは同じ

  • (>>=)(M, return)=M

      … 取出して詰込み直したものは、元と同じ

      … (>>=) の結果は計算順に依らない


■例

は後日としておく。

*1:>>=)(M, f), g)=(>>=)(M, (>>=)(f, g

シュレディンガー方程式までの量子力学

を勉強したので、そのまとめノート。

黒体輻射比熱の問題(プランク、1900年)

  • 溶鉱炉内の鉄の温度を、放射される光の色(振動数、波長)から判定したかった
  • 外からの入射する全波長の電磁波を吸収して(=外から得たエネルギーを)内部に熱放射する空洞(=黒体)で、光の強さ(=温度=エネルギー=振幅)と放射される光の振動数の分布を調べた
  • 実験の結果は次の通り
    • 振動数が高くなるにつれ放射される光は多くなるが、ある振動数をピークとして放射される光が少なくなる
    • 温度が低いときはピークとなる光の振動数は低く、温度が高くなるとピークの振動数が高くなる
  • 放射される振動数 \nu の光に対する光の強度 U(\nu) の公式は次の通り
    • ヴィーン(1896年)
      • U(\nu)=\frac{8\pi k_B\beta}{c^3}\nu^3\frac{1}{\exp(\frac{\beta\nu}{T})}
      • T は温度、k_Bボルツマン定数\beta は実験にあうような定数
      • 振動数が高い(波長が短い)領域では実験と一致するが、振動数が低い(波長が長い)と一致しない
    • レイリー・ジーンズ(1900年):
      • U(\nu)=\frac{8\pi k_B T}{c^3}\nu^2
      • 振動数が低い(波長が長い)領域では実験と一致するが、振動数が高い光がいくらでも存在してしまう(ピークがない)
    • プランク(1900年)
      • U(\nu)=\frac{8\pi h}{c^3}\nu^3\frac{1}{\exp(\frac{h\nu}{k_B T})-1}
      • 振動数が低いときはレイリー・ジーンズの式、高いときはヴィーンの式にあうように作成
      • 全振動数領域(全波長領域)で実験と一致
  • プランクの公式の解釈は次の通り
    • エネルギーにはエネルギー量子という最低の単位があり、それは振動数に比例した h\nu になる考えると辻褄が合う
    • hh=k_B\beta となるような定数
    • ヴィーンの公式が低温で一致しないのは、エネルギーが h\nu 単位でなく連続と考えているため

■光量子仮説(アインシュタイン、1905年)

  • 金属に光を照射すると光が飛び出してくる(光電効果
  • 金属の表面にある電子が光からエネルギーをもらって、勢いあまって飛び出すと考えれば不思議ではない
  • エネルギーが小さいと飛び出しにくく、大きいと飛び出しやすいと想像できる
  • しかし、赤い波長の光であれば、どれだけエネルギーが大きくても(=明るくても=振幅が大きくても)電子は飛び出さない
  • 対して、紫の波長の光であれば、どれだけエネルギーが小さくても(=暗くても=振幅が小さくても)電子は飛び出す
  • 振動数νの光はエネルギーがhνの粒子(光量子)と考える(仮説する)と、次のように考えられる
    • 振動数の小さい赤い光(=エネルギーの小さい光)がいくら沢山ぶつかっても(=振幅が大きくても)、電子は動かない
    • 振動数の大きい紫の光(=エネルギーの大きい光)は一つぶつかられれただけで(=振幅が小さくても)、電子は動いてしまう

コンプトン効果(1923年)

  • 電子にX線を当てると電子が弾き飛ばされる
  • しかしその際、X線の波長が延びる(振動数が小さくなる)
  • 光は物にぶつかっても波長は変わらない(光の色は変わらない)
  • 光量子仮説で次のように説明できる
    • 電子を弾き飛ばしたのは、X線が電子にエネルギーを与えたからで、その分X線のエネルギーが減った、つまり振動数が小さくなった

■ラザフォードの原子モデル(1911年)

  • 原子の中心には非常に小さく、電子と比べると重い核があり、その周りを電子が回っており、核と電子は電気的な引力で引っ張られている、と主張
  • しかし電子は円運動をすると電磁波を放出する
  • 放出した電磁波のエネルギー分だけ電子はエネルギーを失う
  • よって電子は徐々にエネルギーを失い、やがて核に向かって落ちていくはず
  • つまり電子からの放出される光の振動数は、連続的に変化する(連続スペクトル)はず
  • 実験の結果、電子から放出される光の振動数は飛び飛び(線スペクトル)で、決まった波長の光だけであった

ニールス・ボーアの原子モデル(1913年)

  • 電子は原子核の周りに波動として存在すると考える
  • 両端が固定された弦では、振動数は1、2、3、…の値しかとり得ず、波長は弦の長さλに対して λ、λ/2、λ/3、…となる
  • 波長を固定して考えると弦の長さは波長の整数倍となる
  • 原子で考えた場合、電子の軌道半径 r は下記の物質波を使うと、2\pi r=n\frac{h}{mv} (n=1,2,\cdots) となり、飛び飛びになる
  • 振動数1より小さい軌道はないから、電子は核に向かって落ちていかない
  • 第2、3、…、軌道上の電子は、下の軌道におちる可能性があるが、軌道差のエネルギーの光が放出されるので、放出される光の振動数は飛び飛びとなる

■物質波(ドブロイ、1923年)

  • 光が波動であるにもかかわらず粒子の性質を持つなら、粒子である電子が波動の性質(物質波)を持ってもおかしくない
    • 質量 m の物質が速度 v で飛んでいるときの運動量は p=mv=\frac{d}{dv}E、運動エネルギーは E=\frac{1}{2}mv^2=\frac{p^2}{2m}
    • 波長 \lambda、振動数 \nu の波動は、速度が v=\lambda\nu、エネルギーが E=h\nu=h\frac{v}{\lambda}、なので運動量は p=\frac{d}{dv}E=\frac{h}{\lambda}
    • なので物質の波長は \lambda=\frac{h}{p}=\frac{h}{mv}
  • 電子の干渉現象が実験で確認された

波動方程式シュレーディンガー、1926年)

  • 物質の運動エネルギーは E=\frac{1}{2}mv^2=\frac{p^2}{2m}、波動のエネルギーは E=h\nu、運動量は p=\frac{h}{\lambda}、なので h\nu=\frac{1}{2m}\frac{h^2}{\lambda^2}
  • 波長 \lambda、振動数 \nux 軸方向へ伝播する波は、時間 t において \psi(x,t)=\exp(2\pi i(\frac{x}{\lambda}-\nu t))
  • -i\frac{h}{2\pi}\frac{\partial}{\partial x}\psi(x,t)=-i\frac{h}{2\pi}\frac{2\pi i}{\lambda}\psi(x,t)=\frac{h}{\lambda}\psi(x,t)、なので -i\frac{h}{2\pi}\frac{\partial}{\partial x}=\frac{h}{\lambda}
  • i\frac{h}{2\pi}\frac{\partial}{\partial t}\psi(x,t)=i\frac{h}{2\pi}(-2\pi i\nu)\psi(x,t)=h\nu\psi(x,t)、なので i\frac{h}{2\pi}\frac{\partial}{\partial t}=h\nu
  • よって、i\frac{h}{2\pi}\frac{\partial\psi}{\partial t}=h\nu\psi(x,t)=\frac{1}{2m}\frac{h^2}{\lambda^2}\psi(x,t)=-\frac{1}{2m}\frac{h^2}{(2\pi)^2}\frac{\partial^2\psi}{\partial x^2}
  • 一般の場合は、3次元であって、かつ位置エネルギーも考えるので、E=\frac{|p|^2}{2m}+V(x_1,x_2,x_3)=\frac{p_{x_1}^2+p_{x_2}^2+p_{x_3}^2}{2m}+V(x_1,x_2,x_3)
  • なので、i\frac{h}{2\pi}\frac{\partial\psi}{\partial t}=-\frac{1}{2m}\frac{h^2}{(2\pi)^2}\sum\frac{\partial^2\psi}{\partial x_i^2}+V(x1,x2,x3)\psi

不確定性原理ハイゼンベルク、1927年)

  • 未着手