yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/01 の記事
[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]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
日本憂政
2009/10/25(Sun)13:42:17
 政権交代の影響により、日本郵政の西川氏が事実上罷免されましたが、今度はその後任人事が問題となっているようです。新社長とされるのは斉藤次郎氏ですが、氏は1995年まで大蔵省の事務次官を務めており、民主党が進める「脱官僚・天下り」との整合性が取れていないとして批判されています。また、日銀の新総裁を決定する際には、民主党は財務官僚出身であることを理由として武藤氏や田波氏を総裁とする人事に強硬に反対し、結果として副総裁になるはずの白川氏が総裁となりましたが、その一方で今回の元官僚の起用とあって、自民党新総裁の谷垣氏らは批判を強めています。
 斉藤氏が官僚を辞めてから14年が経過しており、この期間をどの程度重く考慮するかによっても評価は違ってくるはずですが、少なくともこの人事が脱官僚・天下り路線を推進するものであるとは言いがたく、その点で批判を受けるのは当然でしょう。下手をすると「脱官僚」の目標自体も頓挫しかねないほどの問題ですので、民主党が説明責任を果たさなくてはならないのは言うまでもありません。しかしながら、日銀を引き合いに出して今回の人事を批判する主張には同意しかねます。日銀の場合とはあまりに状況が違いすぎるためです。
 経済関係の問題は難解であるため、何となく「民主党が武藤・田波総裁案に反対したのは官僚出身だから」と捉えている人が多いとしても無理のないことですが、実際には単に元官僚なのが理由と捉えるのは正しくありません。日本銀行法では、日銀は政府と連絡を密にし、十分な意思疎通を図らなくてはならない旨が定められていますが、一方では独立性も必要であり、「金融と財政の分離」の観点からも問題が生じてくる恐れがあります。
 総裁と財務省とのパイプが十分残っていれば、日銀の独立性が損なわれる可能性は否定できません。以前に日銀が金融緩和政策を緩めようとした際、政府が立法権をちらつかせて日銀をけん制したことがありましたが、これなどは独立性の重要さを示す事例でしょう。政府としては、自政権の評価がかかっていたり、近日中の選挙が予想されるタイミングでは、景気の腰を折る可能性がある策を実行されては困るなど、様々な力学が絡んできます。すなわち、日銀の独立性を担保するために、元財務官僚の人間を総裁にしない行為には、ある程度の妥当性があります。
 無論、日銀同様に日本郵政にも独立性が必要であるから、元官僚を社長にすべきでないとの意見はあってもおかしくありませんし、これもまた重要なことです。しかしながら、西川氏が不公正な可能性の否定できない行為を行って問題視され、鳩山邦夫氏など自民党内の人間からも異論が出るほどであったのは周知の事実ですし、麻生氏は氏を排除しようとしたものの、小泉・竹中院政に先手を打たれて外堀を固められてしまい、逆に鳩山氏を切らざるを得なくなるなど、こちらも政治力学が非常に強く作用しています。したがって、独立性の観点を問題にするのであれば、西川氏の時点からの総括が必要でしょう。
 また、人事の透明性の面から見ても、確かに斉藤氏の起用は「脱天下り」に反するといえなくもありませんが、日銀の場合は「たすきがけ人事」という不透明な慣習が具体的に存在しており、財務官僚の起用はそれの再燃や疑念を招きかねない状況でした。具体的に存在する不透明な人事の懸念を問題視したものと考えれば、日銀の武藤氏ら起用に対する民主党の反対は、直ちに「元官僚の起用」を全否定したものであるとは言いがたく、今回の人事と日銀とではそれなりの違いがあると言わざるを得ません。
 このように、条件が違いすぎる日銀を引き合いに出して今回の人事を否定したとしても、どこかで話がかみ合わない事態に陥り、不毛な議論ともなりかねません。もし谷垣氏らがそのような批判に終始するのであれば、「自民党の野党ぶりも板についてきた」と皮肉のひとつも言いたくなるところです。
 谷垣氏がやるべきは、日銀総裁うんぬんではなく日本郵政の社長に斉藤氏が就任することに対する懸念や問題点を指摘し、ひいては連立与党の郵政の方針をただすことです。日本郵政社長としての斉藤氏の手腕は未知数ですが、亀井氏がかかわっている点からして民営化に消極的なのはほぼ間違いなく、政権時には郵政民営化を進めてきた自民党としては、日銀を引き合いに出して粗を探すより、郵政政策に関して論じるべき場面です。民主党の側も、国民新党との関係もあり、なかなか明確なスタンスが打ち出しにくいとみられますので、攻勢をかける上でも効果的でしょう。自民党や谷垣氏としても、仮に民主党が批判を容れて斉藤人事を撤回し、郵政民営化に反対で民間出身の別の人を社長につけたとしても、おそらく批判は行うはずで、「日銀」の問題が本質的なものでないことが分かります。
 確かに、政治や経済といった関係の話は難しい場合が多く、委細に渡って郵政の問題をただすより「斉藤氏の起用は天下りの官僚人事で、日銀総裁人事の対応と矛盾している」と主張した方が、何となく民主党に悪印象を抱かせることはできそうですが、それでは困ります。目立つばかりの小泉氏や麻生氏と違い、どちらかといえば政策通タイプの谷垣氏だけに、郵政についての議論が行われる希望がないとはいえません。

 ところで、次の参院選で民主党単独政権が誕生した場合はともかく、今のところは郵政民営化に消極的な立場を取っている連立与党ですが、その姿勢に対して「民営化は郵政選挙であれだけの民意を得たのだから、安易に止めるのは許されない」との意見が存在するようです。それについて少々触れておきます。
 私としては、そうした言い分自体は決して理解できないわけではありませんが、これに明確に反対します。なぜなら、郵政選挙において少なからぬ国民は、郵政民営化のデメリットをほとんど認識していなかったためです。
 はっきり言って、郵政選挙の際には調べもせずに小泉氏に賛同していながら、後になって郵便局が不便になったことに文句を言うような人間に、私は大変深く失望しています。常識的に考えて、「郵政民営化を実現すれば日本はバラ色で、その上副作用もない」などという上手い話があるわけがないのです。したがって、小泉氏不支持であったのに不便を負わされている人は気の毒と言うよりありませんが、小泉氏の郵政を支持した上で不便さに文句をつけるなど、選挙の結果責任を侮っているとしか言いようがなく、本来なら考慮する必要すらありません。
 しかしながら、小泉氏はあたかも郵政民営化が正義であるような主張を行い、デメリットどころか郵政民営化なるものが何なのかも知らぬまま支持していた人も存在するようです。スリードの低IQ戦略によるものですが、これでは後々不満が出るのも当然で、小泉氏のやり方には大いに問題があったといえるでしょう。
 結果、不便になるなどとは聞いていなかった人々が当然のごとく憤り、実際に直接被害をこうむった人、あるいは不安を覚えた人が自民党を見限り、それが民主党大勝の原因の1つとなったことは十分に考えられます。また、党内にも異論が出てくる状況が予想され、事実として麻生氏は郵政民営化を否定するかのような発言を行うなど、明らかにゆり戻しの機運が発生していました。ひとたびそうなってしまっては、いずれ郵政見直しの動きが出てくるのも必然の流れです。
 政権交代により、極端な場合は郵政民営化自体が頓挫しかねず、控えめに見ても減速するのは間違いありません。あの低IQ選挙と郵政の問題が自民敗北の遠因となったのであれば、郵政民営化が何なのかも分からぬまま支持していた連中はともかく、郵政民営化のデメリットは理解しつつも、それでも民営化は必要だから断行しなくてはならないと考え、小泉氏と郵政民営化を支持していた支持者すら裏切る結果となりました。これがあの華々しい低IQ選挙の結末です。まさに「選挙に勝って、勝負に負けた」ようなものです。勝負である郵政民営化は道半ばで阻まれてしまうのに、選挙に勝ったせいで金配りその他はことごとく通され、無賃残業合法化は通される寸前まで行くなど、何とも代償の大きい選挙でした。
 再び自民党が政権を取り、政権を競って切磋琢磨するのは大いに結構ですが、あのような選挙はもう二度とないことを望みます。

 Prologでは、例えば「アーランは人間である」「人間は生物である」といった「事実」を書くことができます。
human(ada).
human(haskell).
human(erlang).
cat(tom).
dolphine(sakila).

creature(X) :- human(X).
creature(X) :- cat(X).
creature(X) :- dolphine(X).
 これを読み込んだ後、例えば以下のような問い合わせが可能です。
% エイダは人間であるか
?- human(ada).
true.

% 誰が人間であるか
?- human(X).
X = ada ;
X = haskell ;
X = erlang.

% サキラは生物であるか
?- creature(sakila).
true.
 これが論理型言語たるPrologの特徴なのですが、果たしてPrologの派生であるErlangにこの種の機能はあるのでしょうか。
 Erlangでの類似機能は「Atom」と呼ばれており、命名規則もPrologに従っています。すなわち、先頭を小文字で記述した単語はAtomとみなされます。また、Erlangのリファレンスマニュアルによれば、文字列をシングルクォートで囲んだ場合、先頭の文字にかかわらずAtomとみなされるようです。
 したがって、以下のものはすべてAtomとなります。
atom
atom_type
atomType
'atom'
'atom type'
'Atom'
 シングルクォートで囲んでいないAtomと囲んだAtomは、両方同じものとみなされます。
1> atom == 'atom'.
true

2> atomType == 'atomType'.
true
 このAtom、平たく言えば定数のようなものなのですが、おそらくPrologから着想を得たものとみられるだけはあり、かなり色々な使い方ができそうです。他の言語でいえば、Lispのシンボルにも類似しています。
 手続き型で使用される定数の類のように、単にifなどで比較するだけでも使用できます。以下のプログラムは、1つ目の引数Xが数値、2つ目の引数SがAtomを取り、Atomの値がinclementの場合は数値に1を加算して返し、declementの場合は1を減算して返し、いずれでもない場合はそのまま返す、簡単なサンプルです。
-module(blog).
-export([num_action/2]).

num_action(X , S) -> if
	S == inclement -> X + 1;
	S == declement -> X - 1;
	true -> X
	end.
 これは以下のように呼び出せます。
1> blog:num_action(10 , inclement).
11

2> blog:num_action(5 , declement). 
4

% inclement または declement 以外のあらゆる Atom を渡した場合
3> blog:num_action(5 , any_other_atom).
5
 ただ、ErlangのAtomで面白い点は、何と言ってもパターンマッチでしょう。Prologを基にした関数型言語だけに、似たような書き方が可能となっています。
 以下のプログラムは、先ほどのPrologコードのhumanと類似しています。さすがにPrologと違って「誰が人間であるかを列挙」したりはできませんが、「アーランは人間か」を問い合わせることなら可能です。
-module(blog).
-export([human/1]).

human(ada) -> true;
human(haskell) -> true;
human(erlang) -> true.
 ただし、上記ではada、haskell、erlangのいずれかのAtomが引数として渡された場合の動作しか定義されておらず、それ以外のAtomが渡された場合の動作が存在しませんので、これら以外のAtomを渡すと例外が発生します。例外ではなくfalseを返すには、単に以下のようにするだけです。
-module(blog).
-export([human/1]).

human(ada) -> true;
human(haskell) -> true;
human(erlang) -> true;
human(_) -> false.
 もう少しPrologの真似事を行ってみます。Erlangは関数型言語ですので、論理型言語としての側面(「定義された人間をすべて列挙」するような逆引きの機能、複数経路の探索など)は持っていませんが、「サキラは生物であるか」を調べる関数程度なら簡単に作成できます。
-module(blog).
-export([human/1 , cat/1 , dolphine/1 , creature/1]).

human(ada) -> true;
human(haskell) -> true;
human(erlang) -> true;
human(_) -> false.

cat(tom) -> true;
cat(_) -> false.

dolphine(sakila) -> true;
dolphine(_) -> false.

creature(X) -> human(X) orelse cat(X) orelse dolphine(X).
 実際に問い合わせてみると、
1> blog:creature(sakila).
true

2> blog:creature(erlang).
true

3> blog:creature(plant).  
false
 サキラもアーランも生物であるとみなされているようです。植物(というより定義されていないあらゆるもの)は生物とはみなされません。
 ちなみに、Erlangではtrueもfalseもその実体はAtomです。
There is no Boolean data type in Erlang. Instead the atoms true and false are used to denote Boolean values.
 当然、以下のような式も成り立ちます。
1> true == 'true'.
true

2> false == 'false'.
true
 また、atom_to_list及びlist_to_atom関数を使用すると、Atomを文字列にしたり文字列をAtomにしたりできるようです(「Strings are enclosed in double quotes ("), but is not a data type in Erlang.」とのことで、「文字列」の呼称自体正しくないかもしれませんが)。文字列の比較と比べてパフォーマンス上の利点があるのであれば、辞書型のキーなどの使い道もありそうです。
% 追加と取得の操作しかなく、何の最適化もない非常に単純な辞書型の実装
% Erlang のタプルは丸カッコではなく {...} でくくる
-module(blog).
-export([add/3 , get/2]).

add(X , K , V) -> [{K , V} | X].
get([{K , V} | _] , K) -> V;
get([_ | XS] , K) -> get(XS , K);
get([] , _) -> throw("Not found.").

% 実際に使用
1> D_1 = blog:add([] , ada , "Ada Lovelace").    
[{ada,"Ada Lovelace"}]

2> D_2 = blog:add(D_1 , haskell , "Haskell Curry").
[{haskell,"Haskell Curry"},{ada,"Ada Lovelace"}]

3> D_3 = blog:add(D_2 , erlang , "Agner Erlang").         
[{erlang,"Agner Erlang"},
 {haskell,"Haskell Curry"},
 {ada,"Ada Lovelace"}]

4> blog:get(D_3 , haskell).
"Haskell Curry"

5> blog:get(D_3 , erlang). 
"Agner Erlang"

6> blog:get(D_3 , unknown).
** exception throw: "Not found."
     in function  blog:get/2
カテゴリ [開発魔法][社会問題][経済・知的財産] [トラックバック 0][コメント 0]
<- 前の記事を参照 次の記事を参照 ->

- Blog by yamicha.com -