韓国の町名は結構強いのかなと思ったり

以前、ソウルから出した自分宛の郵便を見返してみると、差出人住所が
ソウル特別市中区忠武路2街61-3
となってた。まぁハングルだと書き写すのも一苦労だから、ローマ字で書いてあるけど。
韓国では田舎も都市も住所表示は番地のはずなので、61-3は61番地3のように取ればいいはず。
と思ってたのだが、どうも全国一斉に道路方式の住居表示に変わったらしい。
それはともかく、忠武路2街というのは洞の名前らしいね。


まぁ調べてみると、わらわら出てくるもので、
行政区画の最低の単位が都市では洞(ドン)、田舎では里(リ)だと。
まぁどっちも町名に相当するものですよね。
大阪市中央区難波五丁目の難波五丁目、奈良市針町の針町の針町、日本じゃ都市と田舎で差はないですけどね。
律儀に同じ市の中でも洞を設けるところと里を設けるところを区別してるそうですよ。
里の上に邑(ウプ)・面(ミョン)がおかれると。ここに市役所出張所みたいなのがおかれると。
じゃあ、洞の上は何も無しで市なのかというと、そうではなくて、洞をまとめたり・分割して、行政洞というのをおいてるらしい。
まぁ、忠武路2街の上も調べれば、明洞というのがあると。どうもこれが行政洞だと。そこに市役所出張所を置いてると。
ということは結構近所に事務所があるということですね。それはなかなかすごいな。
その上に、市(シ)・郡(クン)、広域市の区(ク)・郡がおかれると。これがまぁ日本で言う市町村に当たると。
洞を束ねて市・区、邑・面を束ねて郡を作るもんらしいのだが、洞・邑・面を束ねて市を作ることも最近はあるらしい。
日本ではなんとも思わないことだけどね。ただ最近までなかったらしい。
そのせいで、郡の中に急に市が発生して、郡に穴が開いたりしてしまうと。しかし、政治をするのは郡だから困ると。
まぁその辺の兼ね合いもあったのかなと。日本みたいな政治をしない郡ならいいんだけど。
その上に道(ド)と広域市(クァンヨクシ)がおかれると。


まぁなんで急にこんなこと言い出したのかというと、
島根県隠岐郡隠岐の島町竹島官有無番地
という、なんというか地番もまともに整備されていないところなんですが、
まぁこれは竹島という町名の、官有無番地という土地だと取ればいいんでしょう。
地番整備なんてできないしね。それに国有地は地番がないかも知れないわけだし。
いつからこの表記が使われるようになったかはわからないけど、
五箇村竹島と書いた札を立てたのは1953年らしいから、もしかするとそのときにはあったのかも。
一方、韓国曰く、それは
慶尚北道鬱陵郡鬱陵邑独島里
だと。まぁこちらは地番も整備されてるようです。まぁ曲がりなりとも人が住んでることになってるそうなので。
ただ、2000年までは独島里というのはなかったと。どうしてたんだろ?
多分作らないと表記できなかったんだと思うけどね。
この独島里というのはさっきも言った通り町名に相当するもの、
ただ、里には里長というのがいるらしく、ここも例外なく選ばれたと。まぁそれはなんというか…
けど多分これは連絡員みたいなもんだと思うけどね。市と地域の間の連絡する人。
まぁそう考えると納得いきますね。調べないとわからんもんだ。


まぁ最近、物騒な話が多いですよね。
なかなか難しいところで、昔の地図や地名がぐちゃぐちゃで何が正しくて何が違うかわからないと。
それを頭を冷やして考えられればいいのだが、結構厄介。
国際司法裁判所というのがあるんだが、当事者の了解を得ないといけないと。
日本は調べたら無条件で了承するというような宣言がされてるらしいけどね。
なんか気分が悪いですよね。せめて「日本が言うことはおかしい」と言われた方がまだすっきりしそうなもんだ。
日本と韓国以外誰も気にしない状態でどうしようもないのだけど、
それならせめて物騒な話は聞かせないでくれというのはあるわな。

頭のいいマイコンですよね

学校のお手伝いは今日で終わり。
明日から、小学生向けの公開講座があるらしく、それで作るモータを見せてもらったが、
よくある、半回転分はトルクが出るけど、残り半回転は出ないというモータだったのだけど、
そのわりにはよく回りますね。あれだけ導線を束ねればそりゃそうか…
しかしよく考えると気持ち悪い回路ですよね、だって特に電流を制御するための抵抗を付けてないのだから。
けどあれだけ束ねると、抵抗も結構あるはず。それに電池1つだから、300[mA]とかそんなもんじゃないのかな。
実はこれが怖い回路だと気付く人がいるかは知らないけどね。しかしこの程度なら怖くないですね。


ところで、今回のお手伝いというのは、体験入学するよということです。
実際に回路を作っていただこうと、そういうこと。
実はあまり難しい回路じゃない。
マイコンが面倒を見てくれてるからですね。
まぁここでコイルとかコンデンサとかトランジスタとかで出来た胡散臭い回路だったら、おもしろいのだけど、
そんなにおもしろいことはできんだろう。せいぜいLEDが点滅して、ブザーが鳴るとかそれぐらいじゃないの?
その点マイコンは、おいしいご飯を炊く程度には頭がいい。
だから非常におもしろい動作をしてくれると。まぁこの辺はしょうがないですよね。
とはいっても、中にはかなり手の込んだ回路もありましたけどね。


まぁしかしよく考えてみると、実験で共振回路とかいじったけど、
これはラジオの選局なんかでも使われてるはずなんだけど、非常に地味な実験だったよな。
周波数いじって、電圧・電流を計ってただけだからね。
何も知らない人が見てたら、不気味だなぁ…という程度にしかおもわないだろうけど。
しかし、これがラジオになったら、ちゃんとNHK-FMだとかなるわけですよね。
そういうのを見てきたからか、派手だけどここまでたどり着くのはかなり厳しいなと思うわけですね。
まぁ今回の回路はほとんどマイコンが面倒見てくれてるからそうでもないわけだけどね。
しかしマイコンの中身を気にしだしたら、何がなんだかわからないと思うけどね。

漢字は昔も今も生きている

そういえば、JIS X 0208は漢字コードなんだよね。
ひらがなも含めて漢字と、そういうことになる。
漢字の特徴は文字数が非常に多いこと。
だから、漢字をコンピュータで表現するのは厄介。
Unicodeの第0面のU+3000以降は大部分が中国・日本・朝鮮の文字となるわけだ。
特にハングルがひどいですね。韓国の人たちが実際これだけあって使うかはともかくとして。
まぁ漢字は結構絞りましたけどね。ただそのせいで、ちょっと都合の悪いことはありましたが。


最近の電子辞書では漢字辞典にもUnicodeが載っている。
おもしろいですね。
このUnicodeの見本にもされた、康熙字典という昔の漢字辞典というのがあります。
これは今でもかなり参考にされているものです。
ただ、当時の字体と今の日本の字体はやはり違います。
「龜」というのは、康熙字典に載っている部首です。
そして今でも部首だと思われています。
しかし、このように書くことはあまりないでしょう。亀と書くでしょうから。
というか手元の漢字辞典を引いたら、龜部の漢字は龜しかなかった。
ただ他の漢字の一部には龜というのもあるか。
ただし、日本の漢字の簡略化は常用漢字だけに実施されたので、変な簡略化だってありますよ。
例えば、龍という字は竜に簡略化されました。
というけど、これはどっちも使いますよね。というか簡略化の関係にあるのに驚いた。
ところが、籠という字がある。
なるほど、これは常用漢字じゃないのか。だから漢字で書くことは少ない。
まぁそれはともかくとして、これの龍を竜に置換した篭という字がなぜかある。
よくわからんことです。


なかなかこの部首というのは困ったものなのですが、今でも受け継がれています。
現代人向けに少しづつ字を変えてあっても、基本的には差がないんですね。
結構すごいことだと思います。
ただ部首ってわかりにくいよね。
よく意味を示すのを選んだろうけど、むずかしいもんです。
たまに漢字辞典を覗いてみるとおもしろいこともあるもんです。

ボランティアなのはいいのだけど…

学校のお手伝いということで、その説明を受けに行ってきた。
まぁちょっといろいろあるんです。
話はさほど長くなくて、こんな要領でやります、よろしく、という程度でしたと。
心配なことはありますけど、まぁなんとかなるでしょうと。


ところが、ちょっと不思議なことがありました。
実は手当がいくらか出ます。
これで交通費やら食費に充てなさいということでしょう。その程度は十分にありますね。
それで、そのお金を、現金で受け取ると思っていたのだけど、そうではないと。銀行振込だと。
まぁそれだけなら、なんてことはないのだが、さらに厄介なのは、
振込用紙に非常勤教職員給与規則…とか書いてある。
どうも非常勤職員の給与のように支払われると。


まぁ会ったこともない理事長宛の申請用紙だけど、そんなのは関係ない。
通帳見ながら写して、印鑑を押して完了。
少し埋めがたいところがあったけど、それは聞いて埋めればいいでしょう。
ただ、本当に小さなミスをしてしまって、その部分に訂正印を押したので非常に不細工。
訂正印といえど、普通の印鑑です。実際修正したい部分よりも遙かに大きな印鑑がその上から押されてると。
よくあることですけどね。


余談だが、いつぞに国立学校が全部、いくつかの国立大学法人と、独立行政法人国立高等専門学校機構に継承されたと。
なんか学校の正式名称が無駄に長くなった気がするけど、専ら略称で呼ぶのだからあまり関係ない。
どれも国が金を出して、仕事をするところ。
だから文部科学省の直営じゃないけど、国立学校となるらしい。
確かに国が建立したな、しかし運営するのは知らんと。まぁそこまでは言ってないか。
ただ、働く人は公務員ではないということになるらしい。
まぁその理屈から言うと、急にストライキが起きてもおかしくないのだが、そんな話は聞いたことがない。
結構聞く話ですが、どんな公務員でも、初めに、「憲法を尊重し擁護する」宣誓をさせられると。
まぁそれはないわけですね。だからどうしたという話ですけど。
それはともかく、やるだけのことはやってきましょう。

静的変数ってどれぐらい役に立つ?

C#の静的メソッドは、なぜかクラスに属さないといけない。
そんなのはあんまり気にすることではないし、Javaでもそのはず。
まぁC#のルールを乱さないため便宜上クラスに属していると、そう考えるのが妥当でしょう。
すべてのメソッド・プロパティはクラスまたは構造体に属するというやつね。
まぁそんなもんかと思えば納得のいく話です。
だから関連するクラスに静的クラス・静的プロパティを配置したとそういうことです。
例えば、単位ベクトルのプロパティをベクトルクラスに設けたり。


まぁ静的メソッドにせよ静的プロパティにせよ道具箱の側面が強い。
ところが静的変数というのもある。
ただ、これも道具箱的な使い方をされることの方が多いと思う。
readonly修飾子と静的コンストラクタと呼ばれる、クラスがメモリ上に呼び込まれるとき実行されるものの組み合わせで。

  static class foo {
static readonly public vector i;
static foo() { i=new vector(1, 0); }
}

staticかつreadonlyな変数。これを静的コンストラクタで初期化すると。
staticは付けるけど、publicは付けない、だって勝手に呼び出されるものだから。
これは普通のコンストラクタとは無関係なので。
これを活用したテスト。

    static public void Main(string[] args) {
Console.WriteLine(foo.i);
foo.i.inc();
Console.WriteLine(foo.i);
}

foo.i.inc();でfoo.iの値を改変しようと思ったがなぜか変わらない。
きちんとreadonlyの効果はあるようだ。
ただし、これはvectorが構造体、すなわちfoo.iが値型であるから。値型は変数自体に実体が入ってる。
参照型の場合、readonlyにしたところで、参照するインスタンスの内容は勝手に改変できる。
ここから考えるに、定数的なものは
●一時的か、publicでもπ・eなどの不変な数値・文字・文字列の定数 : const
●変わるかも知れない数値・文字・文字列の定数、数値・文字以外の値型の定数 : readonlyな静的変数
●参照型の定数 : getのみの静的プロパティ
まぁconstの使い道というのは実に狭くて、普通はメソッドの中の一時的な定数であることが多いですよね。
たとえ不変だとしても、3とか0.3とか’a’とか”Hello”とかいうものしかconstにできない。
結局便利なのは静的プロパティだと思ってたわけだ。
まぁしかし、readonlyな静的変数というのもありだとは思った。
けどそんなに構造体は使わないからね。あと、readonlyとはいえ変数とはねぇ。


と、まぁ定数的な使い道を書いてきたわけだけど、
実は大域変数としての役目も果たすと。
しかし、大域変数なんて今の時代流行りませんよ。
通し番号を作るのに使えるという例もあるけど、
実際は通し番号ジェネレータークラスを作って、インスタンスをずっと使い続けるのがいい。
随分下品なやり方です。まぁしかし、こういう考えもできる。
その大域変数的な静的変数をprivateにして、特定の静的メソッドからしか使わないと。
そうすれば、外から見てれば、なんか重ならない番号を作ってくれてるらしいと。
なら誰も気にしないと。別に変な番号が来ても重ならないならいいかと。
多少はましな気がする。まぁそれにしても、気持ち悪いですけどね。

即席foreach可能オブジェクト

C#でIEnumerableインターフェースを実装するのに便利な、yieldキーワード。
と、yieldキーワードを使った例をここでは一度も書いてないか…

  class foo : IEnumerable {
public IEnumerator GetEnumerator() {
for (int i=0; i yield return elements[i];
}
yield break;
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
return GetEnumerator();
}

こんな風に簡単にGetEnumeratorメソッドを実装できるわけです。
便利ですね。
yield returnは1つ渡す、yield break;はこれで終わりの意味。
これができるまではIEnumeratorを実装したクラスを自作する必要があったのでめんどくさい。
以前僕もこうやってやってたのだがあまりにめんどくさい。
まぁこんな風に簡単にforeach可能なクラスを作ることができると。
これはかなりありがたい事実です。


しかし、なんとIEnumerableを実装したクラスを作ることなく、foreach可能なオブジェクトを作ることができると。
まぁ百聞は一見にしかずという言葉を信じて、まず見てもらおう、

    static public void Main(string[] args) {
foreach (int i in FromTo(1, 10000)) {
Console.WriteLine(i);
}
Console.ReadKey(true);
}
public static IEnumerable FromTo(int f, int t) {
if (t for (int i=f; i<=t; i++) {
yield return i;
}
}

IEnumerable型を返り値にするメソッドの中で、yieldを使って書くと。
こうすれば、IEnumerableを実装したクラスも、IEnumeratorを実装したクラスもなしに、
急にforeach可能なオブジェクトを作れる。
これは結構驚いた。けど確かにMSDNにはそう書いてある。
それを活用して作ったのがMainメソッドの。


もちろんこれはPerlのこれにちなんだもの。

foreach(1..10000){ print "$_\n"; }

ここでは1..10000を一旦配列として作る。
しかしこの、IEnumerableにせよ、IEnumeratorにせよ、よいのは、配列を作る必要もないということ。
だから工夫次第ではかなり有益なものが作れる。
まぁ今回の例はあまりおもしろくないですけど。
しかし非常に時間のかかる、1つ1つ取り出す動作をこうやって書くと、
なかなかおもしろいことができると書いてあったのを見たことがある。
これだけおもしろいものが簡単に書けるのだから便利ですね。

コンピューターと書くこともあるかもしれない

Microsoftがコンピュータ関係の用語の表記を一部変更すると。
と、いいましたが、実はこのコンピュータという表記をコンピューターに変えると。
そういうことです。


JISでは原則三音以上のカタカナ語では最後の長音は省略するとなってるわけだ。
その影響で、専門書などを見ると、それに従った表現になってると。
本にコンデンサとは書いてあるけど、コンデンサーとは書いていない。
確かに不思議ですけど、それを当然と思う人はなんとも思わない。
むしろそうでないことに違和感を覚えるはず。
なぜか理由はよくわからないけど、最後の文字が「ー」だと間抜けだからかな。
まぁそんなわけで、それが当然のことだと思われてきたわけだ。


ところが、コンピュータと書いてあっても、実際はコンピューターと読む。
確かに英語でのcomputerの発音はコンピューターに近い。
だから、長音を省略するのが当然であると考えない人は、コンピューターなど書く。
新聞はどうもそうらしいです。
Microsoftは多くの人がMicrosoft製品に触れるようになって、
専門家気取りの長音を省略する書き方から、日常生活に近い書き方にすると。
まぁそういうことなんだと思います。


Microsoftがこんな決定をしたところで、急に何かが変わるわけではないだろうね。
とはいうけど、この背景を知らない人は混乱しなくなるのでよいか。
まぁ実際どっちでも通じますしね。
外国語を日本語でまねするのに完璧な答えなんてのはなかなかない。
有名な例がミシンですよね。sewing machineを日本語に取り込んだらミシンになったと。
けどsewing machineはミシンと書くのが正しいんです。
それに比べれば、computerをコンピュータと書くことは些細なことです。
しかし、これに疑問を持つ人が増えれば、コンピューターに変わるでしょうね。
まぁしかし、思い返してみれば、僕は普段は、長音省略して書いてますね。うーん。

今日の1円と明日の1円は少し違う

今日の8000円と、1年後の8000円ではどちらの方が価値が高いでしょう。
普通に考えれば、同じ、もしくはよくわからないのどちらかだろうね。
よくわからないという意見は、もしこれで米を買うなら、天候などによって買える米の量が違うと。
確かにそれも一理あると。
ところで、1年後、80円切手を100枚買うと、1年後のお金を8000円使うことになる。
しかし、もしこの8000円を定期預金として預けて、1年後には8000円と、いくらかの利息になっている。
そして80円切手を100枚買うと。
比較してみると、1年前に8000円用意しておくと、利息分だけ得すると。
逆に言うと、1年後のお金は利息分だけ今日のお金より価値が低いと。
だから、1年後の8000円の方が価値が低いというのは確かに説得力がある。


以前不気味な資料が出てきて、どうも道路工事の評価をしていたと。
便利になりましたねぇという感想だけでは納得いかんと。
それで金にして出せと。
しかし、今日300万円投じて工事したところで、利益が出てくるのは1年後、2年後、3年後…という未来の話。
さっき言った通り、未来のお金は今日より価値が低い。
だから思ったほどお得感がないかもしれない。


さて、どうも役人はお金の価値は時間に指数関数的に下がっていくと言う。
しかし、利息というのも指数関数的に増えるものだから確かに。
時間に比例するんじゃないんですよ。利息にも利息が付くから。
1年さかのぼるとお金の価値は4%上がるとして、工事がお得か損か考えてるらしい。
1年後の1円が、今日の1.04円ということです。すなわち1年後の1/1.04円が今日の1円となるわけです。
2年後の(1/1.04)2円が今日の1円となると。
さて、今日300万円投じて工事をしたら、毎年10万円の利益が出たと。
普通は工事したものの寿命があるけれど、寿命がないと考えてみる。
そう考えると、毎年10万円の利益があるならば、30年で工事費用を取り返せて、非常にお得であると。
しかし、さっき言った通り、未来のお金は今日より価値が低い。
10万円×{ 1+1/1.04+(1/1.04)2+(1/1.04)3… }=260万円
等比数列の総和を求める要領で求めたと。
なんと、千年経ってもこの計算では工事費用を取り返せないと。
恐ろしい事です。


この4%というのは、お金を借りることとかいろいろ考えて出された値のようです。
逆に言うと、これだけでは物価の変動は考えられていないと。
これだけで儲かるか損するか考えるのは短絡的すぎる気もするけど、
しかし、こう言われると、なるほどと思えるものです。
まぁ何が言いたかったのかというと、今あるお金は大切にしましょうということです。
というのは今に限った話ではないのだけどね。

エアコンってどんな機械?

えらい目にあった。日差し強すぎ。
さて、こんな日、冷房がガンガン動いていますね。
どんな原理なのか考え直してみた。


圧力を下げた液体フロンを室内機に通して、蒸発熱分の熱を吸収し、気体にする。
この気体をコンプレッサで圧縮して、気圧を高くする。
気圧の高い気体を、室外機に通して、液化熱分を外に捨てて、液体にする。
この液体を弁で圧力の低いところに放り込む。
ここで仕事をしてるのはコンプレッサだけですね。
で、もしかしてこの仕事は液体を圧力の低いところに放り込むときに回収できるのかな。
まぁ何がいいたいかというと、熱を移動させるのにたくさんエネルギーを使うと。
熱い空気はエネルギーがたくさんあるけど、別にそれは関係ない。
それをがんばって移動させるのにエネルギーが必要と。


だまされてる気がするが、吸収式のガス冷房も見てみよう。
まず、気圧の低いところに水を入れて、室内機から蒸発熱を吸収して。
この水蒸気は臭化リチウム水溶液が吸収してくれる。
その水蒸気を吸い込んで、水分が増えた臭化リチウム水溶液をガスの火で濃縮する。
そうすると改めて水蒸気が出てくる。こちらの気圧は1気圧ぐらいですね。
これを改めて液体に戻す。ここで水で冷やす。
さて、蒸発熱は室内機から吸収して、その後回りまわって、水で冷やされる。
このサイクルを維持するためにガスの力を借りてるわけです。
そして、このガスで無駄に暖められた分は、水で冷やされて結局捨てられますね。
こちらの方が納得いきますよね。


サイフォンの原理というのがありますよね。
ストローをコップ1に入れて、ストローを吸いつつ、すでに水が入ったコップ2に入れる。
ここで、コップ1のストローの口よりコップ2のストローの口を小さくすれば勝手に水が下ってくれる。
もし下ってなければ、ポンプが要りますよね。
ヒーターは、明らかに2の方が高いのでひたすらポンプで上げる。
多分、エアコンというのはこの口の高さが一緒なんだと思います。
まぁ勝手な例えだけどね。間違ってる気がする。
ただ、エアコンというのは右から左に熱を動かすだけです。
なんで冷やすのにエネルギーが要るのかと思うけど、実際は違うんですね。
しかしエアコンの消費電力って高いねー。

C#の参照型だってポインタに負けないんだから

C#の勉強会が始まっていろいろやってたけど、
クラスの型、参照型と、構造体の型、値型の違いって難しいですね。
参照型は実体の参照Aが、値型は実体Bが変数に入ってると。
そして、変数の代入、メソッドに値渡ししたとき、
参照型は実体aの参照のコピーA’が渡されて、値型は実体のコピーB’が渡される。
値型のコピーであるB’をいじくったところで、もとのBは変わらない。
参照型のコピーであるA’を見ながら、実体aをいじくることはできる。
このとき、もとのAを見ながら実体aを参照すればいじくられてることになる。
しかし、もし新しいインスタンスcを作成して、それの参照をA’に入れたとしても、
もとのAはそのままaを参照してるので、変わらない。


この事実は結構大切なことです。
しかし、C#では参照型と値型の区別が付きにくいので無視されやすい。
だから僕は昔迷った。

byte[] buf=new byte[16];
//中略
fs.Read(buf, 0, buf.Length);

これについてもこの考えで考えよう。
まず、byte[]のインスタンスXをメモリ上に作成して、変数bufにXの参照を入れる。
Readメソッドに、bufのコピー、b’を渡す。それで、b’の指すXを見る。
それでXをいじくる。そしてその後にbufを見るとその指す先Xは変更されていると。
そう考えるとわかる。しかし、ここではbyte[]が参照型であるという事実が必要。
C++/CLIではC#における参照型は^を付けたハンドル型の変数を使うのでわかりやすい。
確かにちょこちょこ出てきてスマートじゃないけどね。


Cのポインタってなんかうっとうしいという話もあるけど、
C#の参照型というのもなにげにめんどくさいもんです。
この事実を絵に描いて覚えるということは大切ですね。
そうすれば、うまいことやれますよ。
foreachで回しながら、データをいじくることもできるようになりますよ。