=============================================== 1999.5.31 発行 =========
         極私的 Emacs カスタマイズ紹介マガヂン
            Emacs をわたし色に染めて♪
------------------------------------------------------------------------
        第 3 回  漢は黙って fundamental mode
------------------------------------------------------------------------
※あなたのカスタマイズをぜひ教えてください。一般的なものから、他の人は
 絶対にしないような「外道」なものまで、何でも結構です。

※解除の方法は、このメールの末尾をごらんください。
========================================================================

	こんにちは。でるもんた・いいじま です。
	今日は発行がすこし遅れてしまいました。申し訳ありません。

☆目次☆

	◇おわび
	◇続・資料紹介
	◇読者の質問から

	◇前回の補足

	◇本日のお題
	◇まずはキーボードで
	◇auto-mode-alist を書き換える
	◇補足的情報

	◇正規表現について
	◇今週の発展編 - local-set-key について

	◇今週のワンポイント: コマンドラインオプション -q と -u
	◇あとがき
	◇次回予告
	◇増刊号のご案内

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-
☆おわび☆

	前回までの表紙で、日付を間違えておりました。m(_ _)m

	第 0 回〜第 2 回の表紙に
		================= 1998.5.13 発行 ========
		================= 1998.5.17 発行 ========
		================= 1998.5.24 発行 ========
	と書いていましたが、これはもちろん 1999 年の間違いです(^^;)

	WWW のバックナンバーのほうはすでに修正しました(^^;)

☆続・資料紹介☆

	前回は私が実際に参考にした情報源を紹介しましたが、つづいて、
	「直接参考にすることはあまりないが、こういうものもある」という
	ものを御紹介します。

	◇texinfo

		Emacs には、texinfo というメカニズムがあります。現在の
		WWW のような、リンク機能のあるハイパーテキストのさきがけ
		のひとつです。前回に名前だけ紹介した Emacs Lisp
		リファレンスマニュアルも、texinfo で提供されています。

		texinfo で使うテキストファイルは、特殊な記述を施した
		ソースファイルを元にコンパイルして作ります。同じソースを
		TeX に食わせれば高品質な印刷用資料ができる、というのが
		texinfo の売りでもあります。

		【補足】もちろん、texinfo で使うソースの書式は普通の
		    LaTeX 用とは全く別物です。専用のスタイルファイル
		    と一緒に「生の TeX」に通すことによって DVI ファ
		    イルを作ります。

		ちなみに、texi2html というツールもあって、ソースをこれで
		処理すれば、ふだん使い慣れている HTML ファイルに変換する
		ことができます。

		さて、Info の使い方ですが、とりあえず
			M-x info RET
		としてみましょう。

		それ以上は私は知りません(^^;) 何しろ私は、Info に関しては
		texi2html しか使わないので。

	◇ネットニュース

		ネットニュースに、fj.editor.mule というグループがあります。

		流通量はそれほど多くありません。
		4/22 から 5/22 までの 1 ヶ月間で 50 通くらいです。
		私もここは読んでいますので(普通は読むだけですが)、
		みなさんが質問された場合は私から返答を入れるかもしれません。

		【お願い】説明なしで「いいじまのメールマガジンで紹介された」
			とは書かないでくださいね(^^;)
			まだそんなに知名度が高くはないので、このマガジンに
			ついてふれる場合は、ホームページアドレスをきちんと
			併記してくださいませ。

		このグループには Mule 界の重鎮も出入りしていらっしゃるので、
		はじめての方には気が引けるかもしれませんが、わからない
		ことがあって、自分でいろいろ調べてもわからなければ、
		思い切ってここで聞いてみてはどうでしょうか。

		【余談】fj.editor.mule では「ISO-2022-JP-2」キャラクタ
			コードでの投稿が認められており、原理的には、日本
			語と、アクセントつき英字や中国の簡体字・ハングル
			文字などが混じった投稿ができます。(ただし、Mule
			以外で読むと、その部分が文字化けします;私はニュ
			ースは Netscape で読んでいるので、困ることがあり
			ます。)実際は、本当に中国語などを投稿するのでは
			なく、韓国活字(KS C 5601)を利用してハートマーク
			などの、JIS にない文字を表現する事例が多いようです。

☆読者の質問から☆

	●C-n や C-p で物理行(画面の一行)単位で移動するようになる方法が
	 あったと思うのだが…

		そういうマクロの存在をいくつかか確認しました。
		まだ入手してはいないので、実際に使ってみてから、
		後日紹介したいと思います。

		→第 16 回・第 17 回をご覧ください。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆前回の補足☆

	●前回の記事の通りにやったのですが、DEL キーが delete-char に
	 なってくれません。M-x describe-key RET DEL としてみると、
	 backward-delete-char-untabify というコマンドになっています。

		*scratch* バッファで試していませんか? *scratch* バッファ
		は Lisp Interaction Mode というモードになっており、global-
		set-key では DEL キーの機能を変更できません。

		根本的な解決策は今回の本文で説明しますので、とりあえずは
		次のいずれかの方法でしのいでください。

			○*scratch* で、M-x fundamental-mode RET と入力
			 して、Fundamental Mode という状態に変更する。

			○ファイルを開いて、そちらで作業する。

			 #こちらは、Fundamental Mode や Text Mode
			 #などになっているはずです。ただし、一部の
			 #モード(Perl Mode など)ではダメなようです。

	●「backward-delete-char ではなく delete-backward-char だ」という
	 ことを、ものの本で読んだのですが…

		実は、どちらでもいいのです(^^;)
		M-x apropos RET ^backward-delete-char$ RET で調べてみると
		(apropos については次回以降に説明します)、
		「alias for `delete-backward-char'」と書いてあります。

		しかし、fence mode(Wnn での、カナ(ローマ字)入力中の
		状態)でカーソル左の 1 文字を消すコマンドは、なぜか
		fence-backward-delete-char となっており、fence-delete-
		backward-char というコマンドはないようです。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆本日のお題☆

	「漢は黙って fundamental mode」

	Emacs では、開いたファイルの種類によって、自動的にキー操作が
	変わったり、インデントや括弧対応づけをしたり、といったことを
	してくれます。

	ところが、私にはこれは「余計なお世話」です。
	そこで、今回はこの「余計なお世話」をさせない方法のご紹介です。

	もちろん、まっとうな人(^^;)のための、「ファイル種別とモードの
	対応関係を追加・部分変更する方法」も御紹介します。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆まずはキーボードで☆

	◇モード切り替えとは

		ファイルを開くと、そのファイルの種類に応じて、モードライン
		(反転行)に
			(C)
			(Pascal)
			(Text)
			(HTML)
			(Emacs-Lisp)
		のように表示されます。たとえば、拡張子 .pas のファイルを
		開くと、(Pascal) と出てきます。

		これは、単にファイルの種類を表しているのではなく、その
		バッファがどんな状態になっているのか、どんなキー操作が
		できるのか、を示しています。

		言い換えれば、このモードによって、キー操作が微妙に変わっ
		てくるのです。

	◇fundamental-mode に切り替える

		この Pascal Mode では、begin と入力して改行すると、勝手に
		3 文字のインデントが行われてしまいます。

		あるいは、C Mode では、while (...) と入力して TAB を入力
		すると、いちどの TAB で、while の i の下まで進んで
		しまいます。
		つまり、下のようなコーディングスタイルになるわけです↓
			while (...)
			  {
			     int a;
			       :
			  }

		私などは、このように「勝手に機械がやってしまう」のは気持
		ちが悪いと感じます。

		本式の方法は下で紹介しますが、とりあえずは
			M-x fundamental-mode RET
		とすれば Fundamental Mode(もっとも基本的な、何のお節介も
		ないモード)に切り替えることができます。とくに、自分の環境
		ではなく他人の環境を一時的に借りるときには、この方法で
		切り替えるのが、簡単で間違いのない方法でしょう。

		なお、Fundamental Mode では、TAB キーが使えませんので、
			M-x global-set-key RET TAB tab-to-tab-stop RET
		としておきましょう。あるいは、.txt ファイル用の Text
		Mode でなら使えますので、上の代わりに
			M-x text-mode RET
		としてもかまいません。

		どうやら Text Mode ではほとんどお節介はないようですが、
		それでも私は「何かあったらイヤだ」と感じるので、
		Fundamental Mode にしています。

		【参考】fund で始まるコマンドは fundamental-mode しかない
			ので、タブ補完機能を使って
				M-x fund TAB RET
			とすることができます。

	◇別の例 - 好きなモードに切り替える

		次は、もっとまっとうな(^^;)人むけのケースです。

		さて、モード切り替えはなにも fundamental-mode にする
		だけが能ではありません。たとえば、初期設定では

			(1)拡張子 .html と .htm に対しては HTML モードに
			   なるが、大文字の .HTM に対してはそうならない。
			(2)拡張子 .C と .H(いずれも大文字)が C++ モード
			   になってしまう。また拡張子 .cpp はよくても、
			   .hpp では C++ モードになってくれない。
			(3)拡張子 .doc で Text モードになってくれない。

		といった点が、DOS/Windows と併用している人には気になる
		ところでしょう。こういう場合は、
			(1)M-x html-mode RET
			(2)M-x c++-mode RET または M-x c-mode RET
			(3)M-x text-mode RET
		とすれば、それぞれ希望するモードに切り替わってくれます。

		【解説】(2)DOS/Windows では、C++ のソース&ヘッダには
			   .cpp、.hpp という拡張子をつけるのが通例です。
			   一方、UNIX では .cc/.hh とするのが通例ですが、
			   小文字の .c/.h は普通の C、大文字の .C/.H は
			   C++、という使い分けをすることもあるようです。
			(3)拡張子 .doc は、最近は MS Word の文書ファイル
			   に使われていますが、かつては MS-DOS のフリー
			   ソフトウェアのマニュアル(テキストファイル)
			   によく使われていました。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆auto-mode-alist を書き換える☆

	さて、ここからは基本的に ~/.emacs を書き換えての作業になります。

	どんなファイル名・拡張子のときにどんなモードになるのか、
	の一覧表は、auto-mode-alist という変数に記録されています。

	◇まずは中身を見てみよう

		さて、初期状態では、
			M-x describe-variable RET auto-mode-alist RET
		とすると、次のように出てきます。
			auto-mode-alist's value is (
				("\\.tsp\\'" . tsp-mode)
				("\\.te?xt\\'" . text-mode)
				("\\.c\\'" . c-mode)
				("\\.h\\'" . c-mode)
				;中略
			)

		【補足】ここでは、見やすさのために途中で改行を入れて
			います。実際の表示では改行の代わりにスペースが
			ひとつあるだけです。

	◇本論に入る前に - リストと dotted pair について

		さて、ここでは、これまで見てきた変数と比べて複雑な形が
		出てきました。本題に入る前に、こういった構造について
		簡単な説明をしておきます。

		まず、(甲 乙 丙 丁 ...) といった形で、カッコの中にモノが
		並んだものを、リスト(list)といいます。

		auto-mode-alist では中の甲、乙、…も複雑な構造をしてい
		ますが、もうすこし単純な構造のリストもあります。たとえば、
		load-path は文字列を要素とするリストで、手元の環境では
			load-path's value is (
				"/usr/local/share/emacs/site-lisp"
				"/usr/local/share/emacs/19.34/site-lisp"
				"/opt/NSUG98/share/emacs/site-lisp"
				"/usr/local/share/emacs/19.34/lisp"
			)
		となっています。

		【補足】load-path については次回以降に説明します。
			もっとも、既に内容の察しがついている読者も
			多いことでしょう(^^;)

		auto-mode-alist の場合、中の甲、乙、…も、
			(イ . ロ)
		という形をしています。これは dotted pair と呼ばれます。

		【注意】dotted pair では、間に「.」がついています。
			「.」のつかない (イ ロ) とは別物ですので
			注意してください。

	◇auto-mode-alist に追加してみよう

		さて、auto-mode-alist の場合、それぞれの dotted pair の
		左側が「どんなファイル名か」、右側が「どのモードにするか」
		を示しています。

		【注意】左側は必ずしも「拡張子」ではないことに注意して
			ください。たとえば、「ChangeLog というファイル
			名のときには change-log-mode にする」という
			設定が、標準設定には含まれています。

		そこで、上にあげたような、好みのモードの組み合わせを、
		auto-mode-alist に追加してあげましょう。たとえば、上の
		例をすべて実現するには、
			(setq auto-mode-alist (append
				'(
					("\\.HTML?\\'" . html-mode)
					("\\.hpp\\'"   .  c++-mode)
					("\\.C\\'"     .    c-mode)
					("\\.H\\'"     .    c-mode)
					("\\.doc\\'"   . text-mode)
				)
				auto-mode-alist
			))
		と書けばいいことになります。

		【補足】ここでは、append の意味/ここの「'」の用法/「\\」
			の意味などについては説明しませんので、とりあえず
			はこの表記をそのまま使ってみてください。

		上の設定を ~/.emacs に書いてから再起動し、
			M-x describe-variable RET auto-mode-alist RET
		でこの 5 つが先頭に含まれていることと、実際に拡張子
		.HTM、.C/.H、.doc でそれぞれのモードになることを確認
		してみてください。

	◇末尾に追加する

		上の例では auto-mode-alist の先頭に追加しましたが、
		次のようにして、末尾に追加することもできます。

			(setq auto-mode-alist (append
				auto-mode-alist
				'(
					("\\.doc\\'"   . text-mode)
					("\\.HTML?\\'" . html-mode)
				)
			))

		ただし、auto-mode-alist では、重複するものがあるときは
		前方にあるものが優先されます。したがって、たとえば上の
		.C/.H の例では、末尾につける方法では、先にある
			("\\.C\\'" . c++-mode)
			("\\.H\\'" . c++-mode)
		のほうが優先されてしまうので、意味をなしません。

	◇私の場合 - nil にしてしまえ!

		さて、私の場合は、そもそもモード切り替えをしてほしく
		ないので、次のようにしています。

			(setq auto-mode-alist nil)

		【補足】実は、nil というのは、真偽値の“偽”を表すと
			同時に、空のリスト「()」という意味もあります。
			じっさい、上で nil の代わりに () と書いても、
			M-x describe-variable RET auto-mode-alist RET
			とすると「auto-mode-alist's value is nil」と
			表示されます。

☆補足的情報☆

	◇interpreter-mode-alist(Emacs 19 以降)

		実は、auto-mode-alist のほかに、もう一つの変数があります。
		interpreter-mode-alist です。

		interpreter-mode-alist には、ファイルの先頭の「#!...」と
		いう部分に書いてある内容と、そのファイルの編集モードとの
		対応関係が記録されています。

		これは、シェルスクリプトなどでは、ファイル名に拡張子を
		つけないことが多く、拡張子のないスクリプトがたとえば
		sh のスクリプトなのか、perl のスクリプトなのかを区別して
		モード切り替えをするためのものです。

		これについても、auto-mode-alist と同じように変更すること
		ができますが、私はこれも nil にしています。

	◇default-major-mode

		この変数には、auto-mode-alist や interpreter-mode-alist に
		当てはまるものがなかったときにどのモードになるのかを設定
		します。初期値では fundamental-mode ですが、たとえば text-
		mode にするには次のようにすればいいでしょう。
		…私は fundamental-mode のままにしていますが。

			(setq default-major-mode 'text-mode)

	◇initial-major-mode

		これは、*scratch* バッファのモードを示しています。
		初期設定では lisp-interaction-mode ですが、
		そういう目的に使う事はまれでしょうから、
		私は fundamental-mode にしています。

			(setq initial-major-mode 'fundamental-mode)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆正規表現について☆

	auto-mode-alist や interpreter-mode-alist の各要素の左側には、
	「\\.」や「tex?t」のような書式が出てきます。

	すでにお気づきの方も多いでしょうが、これは正規表現になっています。


	◇正規表現がわからないかたへ

		正規表現がわからないので取り上げてほしい、というかたは、
		ぜひ <g740564@komaba.ecc.u-tokyo.ac.jp> までメールを
		お寄せください。

		希望者が多ければ、増刊号として正規表現の特集を組みたいと
		思います。

	◇正規表現がわかるかたへ

		ここで「\\.」のようにバックスラッシュ(日本語フォントでは
		円記号になりますが)が二重になっています。

		これは、Emacs Lisp では、バックスラッシュは \n=改行、
		\t=タブ、\"=二重引用符そのもの、のように特別な意味を
		持つので、バックスラッシュ自身を表すためには二重にする
		必要があるからです。

		また、「\\'」は、通常の正規表現での「$」と同様に、
		「末尾」を表します。もちろん、「$」も使用可能です。
		また、「\\`」は、「^」と同様に「先頭」を表します。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆今週の発展編 - local-set-key について☆

	◇local keymap と global keymap

		Emacs では、キー操作とコマンドとの対応表(キーマップ)を
		2 種類もっています。Global keymap と local keymap です。

		Global keymap はすべてのバッファに共通ですが、local
		keymap は各バッファごとに違う内容にすることができます。
		これによって、モードによってキー操作を変えることが
		可能になっています。

		Global keymap と local keymap の関係を図にすると、
		次のようになります。

		              +----------------+        +----------------+
		DEL キー ---→|local keymap    | …×→ |global keymap   |
		              +----------------+        +----------------+
		              |DEL=delete-     |        |DEL=delete-char |
		              |  backward-char-|        +----------------+
		              |  untabify      |
		              +----------------+
		                      ↓
		              delete-backward-char-untabify

		          +------------+       +-------------+
		C-n ----→|local keymap| ----→|global keymap|
		          +------------+       +-------------+
			  |C-n=なし   |       |C-n=next-line|
			  +------------+       +-------------+
						    ↓
						next-line

		ここでは、*scartch* バッファの初期状態、lisp-interaction-
		mode を例にとって説明します。

		DEL キーを押すと、まず local keymap の中から、DEL キーに
		対応するコマンドを探します。そうすると、lisp-interaction-
		mode では「DEL キーは delete-backward-char-untabify だ」
		という設定があるので、それが採用され、global keymap の
		設定は無視されます。

		いっぽう、たとえば C-n を押すと、local keymap には C-n に
		関する設定はありませんから、global keymap にある next-line
		が採用されます。

	☆local keymap をキー操作で変更する☆

		さて、local keymap の内容をキー操作で変えるには、
		次のようにします。
			M-x local-set-key RET キー コマンド RET
		global が local に変わる以外は、global-set-key の場合と
		まったくおなじです。

		なお、このように変更すると、「同じモードを使っている他の
		バッファ」も同時に影響を受けます。つまり、たとえば c-mode
		でこのコマンドを実行すると、他の c-mode のバッファすべて
		に影響が及びます。

	☆local keymap の変更を .emacs に書く☆

		さて、この場合は、ちょっと特殊なことになります。
		もちろん
			(local-set-key "\177" 'delete-char)
		と書くこともできますが、これは普通は使いません。
		(単に ~/.emacs に書いても意味をなしません。)
		というのは、~/.emacs に書く場合は、「どのモードでの
		local keymap を変更するのか」を明示する必要があるからです。

		通常は、
			(define-key lisp-interaction-mode-map
				"\177" 'delete-char)
		のように書きます。なお、ここで 'delete-char のかわりに
		nil を指定すると、local keymap からその項目を削除する
		という意味になります。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆今週のワンポイント: -q と -u☆

	今回は、Emacs 起動時のコマンドラインオプションです。

	◇-q … ~/.emacs を読まない

		~/emacs を編集していると、うっかり設定を間違えて、Emacs
		がまともに起動しなくなってしまうということがあります。

		こういう場合、いちばんナイーヴな方法は、シェルか何かで
		~/.emacs を削除する(もしくは、別の名前に変更する)
		方法ですが、起動時に
			% emacs -q
		とすると、~/.emacs を無視してくれます。

		また、私のように無茶苦茶にいじっている場合、
			○原稿を書くために、きちんと ~/.emacs の設定が
			 有効になっている環境
			○動作試験用に、何もいじっていないスッピンの環境
		の両方を同時に使いたいことがあります。こういう場合に、
		前者は普通に起動、後者は -q をつけて起動、という方法が
		便利です。

	◇-u … 他人の ~/.emacs を読む

		これは、自分の ~/.emacs ではなく他人の ~/.emacs を読む
		という設定です。たとえば、
			% emacs -u mercury
		とすると、~mercury/.emacs が使われます。

		この辺は「古きよき UNIX 文化」の名残で、初心者は上級者の
		設定ファイルを読んで技術を盗む、という思想のあらわれです。

		とはいえ、最近は UNIX でも素人(自分でパーミッションの
		設定等ができない人)ユーザーが増えたので、プライバシー
		対策を重視してデフォルトパーミッションが「なるべく他人に
		見せない」という方向に動きつつあり、-u は使いづらくなり
		ましたが…。

	【補足】最近では、mule というコマンド名を実行すると Mule 2.3
		based on Emacs 19.34(or 19.28) が、emacs というコマンドを
		実行すると Emacs 20.x (or 21.x) が起動するという設定になって
		いるサイトが多く見られます。そういう場合は、上の「emacs」と
		いうコマンド名は適宜読み替えてください。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆次回予告☆

	おまたせしました!
	いよいよ次回は「第 4 回 禁断の VZ 化 (1) Ctrl+英字」です。
	C-a から C-z まで、キー操作を丸ごと入れ替えてしまいます!

	ところで、このように入れ替えてしまうと、他の人からたとえば
	「C-x 5 0 と押してください」というアドバイスをもらったときに
	困ってしまいます。

	そこで、「まっとうな Emacs community と折り合いをつけていく
	ための対策(^^;)」もあわせて御紹介しようと思います。

☆増刊号のご案内☆

	これから近いうちに、増刊号を出したいと考えております。

	Emacs Lisp で複雑なプログラムを組むためには、「リスト」や
	「quote」の知識が必要です。そこで、今回すこしだけ出てきた
	リストの話を、もうすこし突っ込んで説明したいと思います。

	なお、この増刊号は、上級者向けの発展編特集です。
	とりあえずいじりたいという人・プログラミングに自信がないと
	いう人は増刊号を読まなくても、本編を読むぶんには差し支えのない
	ようにしたいと思います。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆あとがき☆

	今回はけっこう難しい話もまじってしまいましたが、どうでしたか?
	ぜひご感想をお聞かせください。

========================================================================
極私的 Emacs カスタマイズ紹介マガジン Emacs をわたし色に染めて♪

☆発行人☆

        でるもんた・いいじま <g740564@komaba.ecc.u-tokyo.ac.jp>
			http://user.ecc.u-tokyo.ac.jp/~g740564/emacs/

                ※このメールマガジンで取り上げてほしいテーマ、ご意見など
                 ありましたら、上のメールアドレスまでお気軽にどうぞ。

☆配信☆
        このメールマガジンは、「インターネットの本屋さん・まぐまぐ」を
        利用して配信しています。
                http://www.mag2.com     (マガジン ID=0000013484)

☆バックナンバー・登録解除・メールアドレス変更は☆

	上記のホームページまでどうぞ。
	なお、手動での登録解除は行っておりませんのでご了承下さい。
=========================================================================

Copyright © IIJIMA Hiromitsu aka Delmonta, 2016/03/10 15:09 JST
これは「古文書」です。 古くなった情報も原則未修正で保存していますのでご注意ください。

古文書本館トップ | 電脳外道学会