2013-10

2013-10-01 

消費税増税がリフレ政策と矛盾するというのはわかってなかったわけではないはずなので、これはもう財務省との喧嘩に負けたので適当に言い訳を考えたんだろう。一般消費者に割を食わせつつ企業の優遇というのはぶっちゃけトリクルダウンなのだが、これはもう先進国では必ずしも上手く行かないということは散々言われているわけで、本当に何をしたいのかさっぱりわからん。

何度も書いてるけどインフレターゲットってのは金を使わないことへのペナルティなんだから、金を使っても安心という感覚を与えないとダメ。だから社会保証費は削るべきではないし、消費を冷え込ませる消費税率引き上げなんて以ての外。だから自民党の金融緩和以外の政策は概ねダメダメなので、マスコミも野党もそこを突いていかないとダメだったはずが、この体たらく。

やはり財務省が権限持ちすぎなのが問題なので例えば歳入庁を新設みたいな話もあるのだが、しかしそこまでやる気のある議員がどれほどいるのやら。もうこうなったら消費税増税によるブレーキを上回る形でリフレ政策が成功するのを祈るか、そうでなければクーデターの準備だな。


いやでも冗談抜きに財務省をどうにかしないと日本の景気回復って有り得ないんじゃないか? とりあえずここ数人の首相及び将来の首相候補の中で一番消費税を増税しそうになさげだった安倍首相がこれなので、どんだけ圧力がかかったんだよという。

2013-10-02 

最近「クロサギ」シリーズを大人買いしたので、またしても本棚のスペースが足りなくなってきた。最初は電子書籍で買おうと思ったが、小学館のサイトでは完結編の1巻まで出てるけど期限付きの配信形式だとか、そうでないところでは専用リーダーが必要かつ単行本の出版状況に追いついてないとか、論外にもほどがある。さっさとkindleなりepubなりの形式で売ってくれよ、金は出すからさあ。

それはともかく、クロサギはすげえ面白い。この手のダークヒーローは戦うことが自傷行為になってると悲壮さが増していいね。

2013-10-03 

何度も書いてきたが、インタゲの効果が失業率の低下、そして賃金上昇という形で世の中に普く行き渡った状態でそれでも必要なので消費税を上げますというのならまだ話はわかる。その場合、自然に税収が増えてそもそも消費税の引き上げ自体が不要になっていそうに思えるが、順序としては景気が十分回復してから必要に応じて増税というのは変わらん。

それでだ。まだリフレ政策が実体経済に影響を与え始めたとはいえまだまだこれからの状態で、なぜかデフレ継続を前提にした社会保証費の削減の話が出ていて(相変わらず捕捉率はクソ低い)、それでさらに消費税を上げますとなったら、まともな脳みその持ち主は「デフレ脱却と景気回復をするつもりがないんだな」と思うだろう。もっと身も蓋もない言い方をすれば支離滅裂なバカ扱いされるだろ、今回の決定は。

そこに輪をかけて最悪なのは、仮にこれで景気の回復に失敗したら間違いなくリフレ政策まで一緒くたにして叩き出すバカが無視できない量発生して、もう一度そちらに舵を取るのが難しくなるであろうこと、そして再度そちらに舵取りをしても前科が前科だけに次の金融緩和の効果は相対的に下がる恐れがあるであろうこと。これは滅茶苦茶マズい。

今回の消費税増税に反対しなかった連中は、上記のようなリフレ政策との不整合についてどう考えているのだろうか。俺は「何も考えていない」もしくは「リフレ政策を理解する脳みそを持ち合わせていない」のどちらかだと思うのだが。


これも前から書いてるが「資産家に課税するには消費税」というのは明確にダウトな。消費税は逆進性が強くて年金や生活保護で生活している人に相対的に重くのしかかる上、生活保護バッシングに乗っかって社会保証費を削ろうとしているバカ議員(片山さつきとか)が暴れたりしているもんでさらにどうしようもない。

ここで池田信夫の妄言などを真に受けて「消費税は逆進的ではない。むしろ累進的」などと言い出さないように。あれはライフサイクル仮説を前提に全国民が生涯所得を計画的に全部消費に回して死んだときには貯蓄ゼロになるので生涯所得に対する消費税の負担率は逆進的にならないというお花畑な笑い話なので、真に受けてはいけない。

まあ、古い記事だし大体コメント欄で大まかな反論はされているので、今更真に受ける奴はいないと思うが、しかし池田信夫は考えを変えていないのでねえ。普通に考えりゃ遺産や資本所得などの理由でライフサイクル仮説はまったく成立しねえし、消費税が累進的に見えるとしたら、

みたいなケースだろ。でもこれは単に非課税の消費が低所得者ほど割合として大きくなる傾向があるというだけなので、生活に必須な非課税の消費を抜くと負担率が上がるよな。あるいはそこを差し引かない計算でも上の例と同じ非課税消費で13万円/月の収入で5万円消費したら消費税の負担割合は下の例を越えるよねえ。そんでどのケースでも食費みたいな生活必需品の消費の差は所得格差よりも小さいとすれば(これはある程度正しい推測だろう。食費減らすのはキツいよ)、消費税には逆進性があるでしょ。

その辺り全部目を瞑って比例税だと言い張ったとしても、所得税などの累進課税よりは逆進性が相対的に強いんだから、先に消費税に手をつけるのはやっぱり筋が悪い。

そういや池田信夫以外にも消費税の逆進性を否定している連中はいるが、同類のバカ(金融日記のクソとか)を除くとよりによって元財務省の人間だったりするのでねえ。


「ヨーロッパ諸国に比べれば消費税率は引き上げ後も全然低い」もNGな。生活保護一つ取っても

こんな感じ。さらにヨーロッパ諸国には高等教育において学費が無料もしくは日本に比べると安かったり、学生ローン(not奨学金)の返済義務が相当ゆるやかだったりする国が多い。イギリスの大学なんかは学費自体は結構高いが基本全部学生ローンで借りられて、その学生ローンも年収が一定額を越えたら割合返済になるとかだったはず。まあこれはこれであちらならではの問題があるのでデモが起こったりなんだりしてんだが。スウェーデンはEU/EEA圏内の学生は無料だったかな。フィンランドもかなりの学校が無料だったはず。

なのでデフレ不況からの脱出を前提に、生活保護や家計における教育費の負担軽減など再分配政策をきっちりやるために増税が必要で、その中に消費税が含まれているというのなら(軽減税率の導入は必要かもしれんが)必ずしも反対はしない。が、長期的な景気の動向と再分配政策の話抜きに税率だけ持ってこられても「死ねや」以外に返答できんからな。

2013-10-04 

ゲームが時間の無駄かどうか問題については、「時間の無駄だがそれこそが文明・文化というものだ」で話が終わっているので、その先は「そんな事を聞くあなたはバクテリアみたいな生活がお望みでしょうか」と問い返して殴り合いに発展するほかない。

そもそもの話として、食料生産に直接関わらないようなものはその悉くが無駄である。が、余剰食料が生み出されるに至って「無駄」に従事できるものが現れ、そうして複雑な社会が構築されて文明というものが出来上がって行ったわけだな。なので無駄を無駄として捉えないというのは、余剰なリソースが存在しないのとイコールなので、そこから新しい何かを生み出すというのは難しい。

まあ、別に犯罪でもない娯楽に対してあれこれ難癖を付けるのは蛮族ですよ蛮族。

2013-10-05 

えー、詳しい経緯は省きますが、この度農家に嫁いだ妹がご当地アイドルとして活動を開始しました。まあ詳しいことは以下を見てください。

本当に何をやっているのでしょうか。年子で俺と1歳半しか違わないのにアイドルですよアイドル。絶対に最初は冗談だと思っていたのが、マジでやることになっていてお兄ちゃんはもう何がなんだか。

それで急遽公式サイトを作ることになり、楽曲をダウンロード販売することになり、どういうわけだかサイト作成とダウンロード販売のアドバイスなどの作業が俺のところにやってくるという事態になり、ああもう何やってんでしょうか俺は。しかも畜産フェアでMCの最中のBGMに俺の書いた曲を使ったかもしれんということで、輪をかけて何が何やら。お前らアイドルだろ、なんでチューニングをBまで下げたメタル曲を使おうという気になったんだ。

今後の活動は未定というか、多分この手のフェアで何曲か歌ってイベントの司会進行みたいな活動になるのではないでしょうか。本業の方が相当忙しいようだし。

2013-10-06 

CowMixの方の仕事をしていて思ったんだが、マジで千葉県畜産協会ってつかえねえ。何が使えないって、わかりやすいところだと昨日の畜産フェアの情報がWebサイトに載ってない。ってかあのWebサイトを作ったの誰だ? 職員が適当にでっち上げたんじゃねえのか? しかも前にやった奴も情報はPDFでしか載せてないし……。

本来ならそういう情報はそれこそLinked Open Dataの形式で公開しておけば、簡単に他のWebサイトに取り込めるようになったりしていろいろ便利な使い道が生まれるのだが……。

2013-10-07 

ところで極小規模で超短納期なプロジェクトは動的方付き言語でというのはあまり説得力が無いように思える。どちらかというとそのようなケースはまともな仕様書などを書いている時間すらない、というか作っていくうちに仕様が出来上がるようなものなので、それこそ静的型付き言語の方が向いているように思える。いやまあ、これはCowMixのサイト作っていて思ったことなんだが。

Catyでの開発はまず先にスキーマを書いて、それに合うテンプレートとそのためのデータを出すコマンドを作り、あとはそれを動かしながら修正していくような形になる。スキーマを書く人間とテンプレートやコマンドを書く人間は大抵別だが(現状請けている別案件は檜山さんがスキーマを書いて俺がコマンドを書いてテンプレートは俺の知らん誰か)、今回は全部俺だった。まあ、それでも上記の手順は変わらん。

今回のは規模的にも期間的にも多分最低限のものだったと思うが、とりあえず以下はCowMixのサイトのスキーマの一部。

type Topic = {
    "title": string,
    "date": string,
    "content": string,
    "id": integer,
};

type Release = {
    "title": string,
    "date": string,
    "image": string,
    "id": string,
    "dl": string,
    "songs": [string*],
};

type Link = {
    "url": string,
    "title": string,
};

master cowmixdb = MongoDB("cowmix");
collection topics of Topic within cowmixdb;
collection releases of Release within cowmixdb;
collection links of Link identified url within cowmixdb;

command all :: void -> void {
    gen_index;
    gen_topics;
    gen_releases;
    gen_links;
};

command gen_index :: void -> void {
    {
        "news": latest-topics,
        "release": latest-release,
    } | 
    expand include@this:/index.tpl | file:write /index.html
};

command gen_links :: void -> void {
    links.list | expand include@this:/link.tpl | file:write /links/index.html
};

command gen_topics :: void -> void {
  topics.list | each {
        $ > src;
        %src | ={"content": %src|$.content|text:creole, *: pass}
    } | expand include@this:/topics.tpl | file:write /topics/index.html
};

command gen_releases :: void -> void {
    releases.list | expand include@this:/releases.tpl | file:write /releases/index.html
};

command gen_about :: void -> void {
    expand include@this:/about.tpl | file:write /about/index.html
};

command latest-topics :: void -> [Topic*] {
    topics.list --order-by=id | list:slice -5 -0 | list:reverse | each {
        $ > src;
        %src | ={"content": %src|$.content|text:creole, *: pass}
    }
};

command latest-release :: void -> Release {
    releases.list --order-by=id | item -1 
};

細かい部分は別にわからんでもいいが、上の方からシステムで使われる型の定義、利用するデータベースの定義(細かい設定は外出し)、コマンドの定義。実際にはDBにデータを入れるところなども含めてかなり手を抜いているので(要件にWebからの管理コンソールが入ってなかった)、これに10行ぐらい足せば今動いているのと大体同じものが出来上がる。(テンプレートとCSSは除く。)

ちなみに今回はアクセスカウンター以外にPythonコードは一行も書いていない。まあこういう突貫工事だけど後で直すのを見越した代物を作るのには現状でもかなりCatyは有用なんじゃないかな。


今のCowMixのサイトは何分時間が無かったもんで、ボロなノートPCにCatyを立ち上げて、それを別のサーバーマシンからリバースプロキシで接続、その接続方法は無線LANという凄まじい代物なので、大変パフォーマンスが悪い。これはどうせ誰もアクセスしねえだろとかいう舐めた考えによる。

2013-10-09 

自宅サーバは一応Varnishでキャッシュをしてはいるのだが、サーバが貧弱なのか、応答の遅いバックエンドにリクエスト投げたとき、タイムアウトなどの設定をどういじくってもCSSファイルの取りこぼしが結構ある。どうにかならんものかと悩んだ挙句、Varnishのバージョンを上げたら治った。流石に2.0.xのまま動かしていたのはマズかったか。


大体今のサーバーの構成は次のような感じ。

2013-10-12 

元から下村文部科学大臣だけでも親学だのジュセリーノの予言だのナノ純銀除染だのと「本当にこの国の教育をどうするつもりだ」な話がボロボロあったのが、今度は教育再生実行会議にディプロマミルのイオンド大学名誉教授がいるとか、本当に勘弁してくれ。しかもこいつも下村博文の同志らしいし。

そんで最近は大学入試の二次試験撤廃して「人間を見る」とか言い出していて、もうダメだこいつら。普通に考えりゃ採点基準が曖昧=やりたい放題になるわけじゃん。特に今の政府の面子主導でこんな事やったらどうなるかなんて火を見るより明らかだろ。

学力試験ですら親の経済力との相関関係があるってのに、そこに人物評価なんて入れたらより経済力に依存した文化資本が評価対象になるんだから、余計に貧乏人が高等教育を受ける機会がなくなるだろ。あとは多分、何かしらの障碍持ちの人にも厳しくなるはず。多様な評価軸と言えば聞こえがいいが、俺に言わせりゃそんなもんは多様な差別の言い換えだ。

もちろん現在の大学には入るのは大変な割に出るのが楽なケースが多いとか、あるいは大学によっては試験問題が悪問だとか、そういう問題がないとは言わんが、前者は入試制度をいじってどうこうする問題ではないし、後者は個々の大学ごとの問題だろう。


そもそも人間性なんてのは金で買うもんだよ。俺自身を振り返ってみても、金を自分で稼げるようになってそんで文化資本を積み上げられるようになって、そんで多少はマシになったんだから。散々ガキの頃の俺をぶん殴ってた親父にしたって、俺を殴らなくなったのは新しい仕事見つけてからだもの。

社会の底辺の人間から高等教育を受ける機会を奪うというのは、

という二重の意味で大変マズい。俺にしたって大学行けた理由の9割ぐらいは爺さんは立派な人物だったからだからなあ。(そのファクターがなけりゃ今頃ブタ箱に入っていると思う。ってか組織犯罪からのお誘いとか普通にあったし。)

2013-10-15 

妹が酪農家に嫁いでいる&下手すると今後某方面でマネジメントしないといけないかもしれんので立場的に俺がこれを書くのは若干微妙ではあるが、しかしTPPに参加することでどれだけ一次産業にかなりのダメージがあるとしたら、そこはやはり補助金しかないんじゃないの。アメリカやヨーロッパって相当な補助金を農家に出してるでしょ。それに一次産業は国土保全などと密接に関わっている事を考えると、補助金をドカッと出すだけの公共性は十分あると思うのだが。

あとそもそも品質の問題があるのでホイホイと外国産の食料ばかりに飛びつくかはわからんというか多分俺は普通に今までの比率で国産品を食うと思うし、そういうこと言ってられないような貧困層の栄養状態が改善されたらそれこそ良い事なのでは。

もっともTPPのような生産性向上に繋がることよりは、まず長期デフレによる国内需要の冷え込みをどうにかしろよと言われればその通りだろう思うし、その意味でも消費税率引き上げはしてはいけないという話だったのだが……。

2013-10-16 

最近というか今日Catyに追加された機能に属性パラメータがある。まず最初にCatyのスキーマ属性についてだが、これは以下のように特定の組み込み型について主にその範囲を限定する目的で使われる。

type positiveInteger = integer(minimum=0);
type someArray = [any, any*](minItems=2, maxItems=10);

この時属性の値はスカラー値のリテラルしか認められていなかったが、以下のようにパラメータを取れるようになった。省略された場合はシステムのデフォルト値が使われる。(minimumもmaximumもデフォルト値は無制限。)

とりあえず実に素朴な例から。

type range(maximum, minimum, step) = integer(origin=0, step=%step, minimum=%minimum, maximum=%maximum);
type score = range(minimum=0, maximum=100);
type positiveInteger = range(minimum=0);
type even = range(step=2);

もうちょっと複雑な例。

type Message(titleLen, messageLen, fmt) = {
    "title": string(maxLength=%titleLen),
    "body": string(maxLength=%messageLen),
    "sendTo": string(format=fmt),
};

type ShortEmailMessage = Message(titleLen=20, messageLen=100, fmt="email");
type LongEmailMessage = Message(fmt="email");
type ShortPostMessage = Message(titleLen=20, messageLen=100);
type LongPostMessage = Message;

2013-10-18 

LinuxでDVDを焼くときにはgrowisofsを使っているのだが、これがまたファックとしかいいようのないコマンドラインインターフェースの持ち主で、久しぶりに使ったら大失敗。具体的には

growisofs -Z /dev/dvd /path/to/iso-image
growisofs -Z /dev/dvd=/path/to/iso-image

この二つは動作が違い、上の方は単なるデータディスクとしての書き込みになるので、isoイメージを展開してブートディスクを作る場合は下の書き方にしないといけない。ついつい上のやり方で焼いてしまって一枚DVD-Rを無駄にした。

……いやこれおかしいでしょ。常識的に考えたらオプションでそういう情報は渡すよねぇ?

2013-10-19 

最近宅録用に別のマシンを用意して、そっちは試しにUbuntu Studio 13.10をインストールした。別に普段使っているGentooでも良かったが、最近のUbuntuはどうなってんのかなと思って。とりあえずオーディオインターフェースのKomplete Audio 6は何もせずともJack経由で使えるようになったので、そこについては満足。Pulse Audio経由でJackとFlashの共存も簡単。

が、Ubuntu 13.10からはインプットメソッドが悪名高いibus 1.5になっており、殆どUbuntuと同じUbuntu Studioも同様。このような名状し難いクソを使い続けるぐらいならドーベルマンにケツ穴をファックされた方がマシなので、仕事用マシンで使っているSCIM+Anthyにしたが、今度はgeditで日本語入力にするとバックスペースで文字を消せない(半角スペースが入力される)という頭の悪い不具合に悩まされている。原因は不明。まあ、別に日本語入力をそんなに使うわけじゃないので、今のところは目を瞑っているが。

あと無線LANのファームウェアをインストールしたあとGUIから有効にする方法がさっぱりわからなかったので、結局ターミナルエミュレータから設定した。やっぱGentooにした方がコンパイル時間以外全部マシだったかもしれん。


俺のように生演奏中心で打ち込みはドラムと一部シンセのみみたいなタイプであれば、Linuxでもそこそこの宅録環境は作れるというのがここ数年での結論。商用のソフトウェア音源をバリバリ使うような人には厳しいかもしれんが、まあその辺はあまり興味がないのであまり調べていない。

Linuxで宅録環境を作る場合、HDDレコーダーソフトはArdour一択といっても問題はないだろう。他のソフトウェアは微妙に目的が違っていて、録音と編集からミックス、マスタリングまでとなるとArdour以外にない。Audacityは波形編集などは得意だがミックス段階で手詰まり。Rosegardenも一応録音はできるが、この機能は忘れていい。もうこの状態は何年も続いているので、そろそろArdour以外の選択肢が出てこないと選択肢なさすぎてまずいレベルだ。でも便利なんだよな、Ardour。

ハードウェアでネックになるのはオーディオインターフェース。これはマジでLinux版のドライバがない。そんな中でNative InstrumentsのKomplete Audio 6はLinuxでも完全に動作するのを確認しているので、俺はこれをすすめる。S/PDIFの入出力に癖というか難があるが、それを使わないことにしてもUSBバスパワーで動く4in4outのオーディオインターフェースが23,000円ほど、Linuxでも動くということを考えれば贅沢を言うべきではないかもしれない。Firewireの方はまだ何一つとして試していないのでわからん。

ギターやベースはLine 6のPOD X3でほぼ音作りが完結するのでそれをKA6に突っ込めばいいがが、アコースティック楽器とヴォーカルはマイクプリアンプが必要になる。ダイナミックマイクはいっそPODのマイクプリを使うという手もあるが、コンデンサーマイクはそうもいかない。ファンタム電源はProにしかないのだ。なのでMackieの402 VLZ3を2chマイクプリとして使っている。2chのマイクプリとなると、402 VLZ3以下の価格帯はBehringerとかなので、このような使い方でもコスパは悪くないと思える。前はこれをミキサー兼DIみたいに使っていたんだっけか。上手くルーティングすればPODの出力をPCに送ってPCからの出力をヘッドフォン及びモニタリングスピーカーに送るみたいなのも確かできた。

オーディオインターフェースを使わないなら、ギターやベースとアンプorアンプシミュレーター、ダイナミックマイク、DIで概ね機材は揃う。既にギターとアンプがあるなら、そこに+20,000以内で最低限の宅録環境はできるはず。実際にはDIを買うよりは安いミキサーをDI代わりにした方が手軽。

2013-10-22 

俺はまあ面倒くさがりなんで、経費で落ちねえだろこれって奴はまったくレシートをとっておかないので、自分の月の食費がどのぐらいかはよくわからん。なので大雑把に計算してみる。

まず主食の米だが、1日あたり1.5合ぐらい食ってるはずで、1合がおおよそ150g程度なので、1日225gの消費。1ヶ月だとおよそ6.7kgになる。米は毎回無洗米を適当に買っているのだが、5kgで1,650円が多分俺の普段買ってる一番安い米なのでそれを使うことにする。350円/kgなので、米代金は2,345円/月。

普段は一汁一菜でスープはインスタントだったり自分で作ったり、場合によってはそもそも無かったりするのでよく分からんが、自前のスープはほうれん草と卵とウェイパーとコショウみたいなので、2食分作るのに卵1個あたり20円弱、ほうれん草半束で30円ぐらい、これに調味料を加えてもインスタントのスープと同じかちょっと安いぐらいのはず。8袋入り300円ぐらいの奴を普段は使っているので、スープは2,400円/月ぐらいと仮定しておく。

副菜は本当にてんでんばらばらなので見積りが難しいが、最近作った奴をいくつかピックアップすると:

ラザニア、ミートソースドリアorスパゲティ
カゴメの基本のトマトソースと合挽き肉と塩コショウでソースは作れる。後はホワイトソースに牛乳とバター。3〜4食作るのにカゴメの基本のトマトソースが恐らく200円ぐらい、挽き肉が130円ぐらい、面倒なので牛乳その他まとめて1食あたり 170円ぐらいでどうだ。
回鍋肉
うちは豚バラにピーマンとにんにくの芽という構成。味付けは甜麺醤と豆板醤。2食分の素材は豚バラ150gで前後で230円ぐらい、ピーマン1個多分50円ぐらい、にんにくの芽は多分100円ぐらいなので、1食あたり190円。調味料を含めてキリよく200円としておくか。
天津飯
卵とカニカマとミックスベジタブルで作ってる。これは1食100円かかってない。
鶏肉の香草焼き
鶏もも肉と各種ハーブ、スパイスなど。鶏もも肉240円ぐらいに1食あたり多分30円ぐらいのサラダを付けているので、150円。

こうしてみると副菜1食に200円が普段の上限っぽい。たまにもう少し豪華なものを作ったりするが、それは2週間に1回レベルとかなので、他の安く済ませている日と相殺して落ち着くものとする。朝食は卵かけご飯とふりかけとお茶漬けのローテーションなので1食30円ぐらいで計算。回鍋肉を基準にすると12,900円/月ぐらいか。これに主食とスープの分を合わせると、17,645円/月(588円/日)以下で生活しているものと思われる。ここにはお茶とかの代金は加えてないけど、まあそれ加えても20,000円/月とかそんなもんか? 間食とか外食はまた別だが、何分レシートとっておいてないものでねえ。

実のところ特に何も考えずに適当に好きなもんばかり作って暮らしているが、松屋などの1コイン定食よりもマシなものを食いつつその半分ぐらいの食費に収まっている。まあ、俺の場合家で仕事してるから料理の時間を取れることが多いというのはあるが、でも勤め人だったころもデスマーチに巻き込まれるまでは夕食は自炊で昼飯は弁当持参だったからなあ。

2013-10-27 

ちょっと家のサーバーでいろいろ動かし過ぎでオーディオファイルをこれ以上置くのは厳しいかなあと思ってきたので、いい加減にSoundcloudを使うことにした。

今書いてる曲の一つのデモ版というかなんというか。イギリスやスウェーデンの初期デス/ドゥームというかぶっちゃけPeaceville系のサウンドを意識してみた。最近またちょっとデス/ドゥームを追求してみようかという気になってきたので。あと改めて聴いてみると、シャッフルパートのギターソロがもろにデモテープ〜1stアルバムの頃のMiika Tenkulaの影響丸出しだ。

2013-10-29 

Catyのクラスは実質的にトレイトなんじゃねえのという話題が持ち上がったのでちと調べてみたが、確かにトレイトの特徴はCatyのクラスと概ね合致するようだ。

具体的には、Mixinや多重継承と違い、トレイトの合成は順序に依存しない。Pythonなどの多重継承のある言語の場合、class C(A, B)はメソッドの探索の優先順序などでA, Bの順序の影響を受けることがある。トレイトではバッティングがある場合はバッティングしたメソッドを除去/リネームすることが出来る。リネームしない場合の挙動がどうあるべきかは知らん。(Catyはエラー。) またトレイトは継承の階層を作らない。あるクラスにトレイトを加える場合、それはそのクラスにトレイトのメソッドが注入される事になる。これが演算の対称性に効いてきているはず。

Catyではclass C = (use a, b as c) A & B & {...};という形でクラス演算が行える。当然これはclass C = B & (use a, b as c) A & {...};と書いても同じであり、またこのときに継承の階層などは一切作られないのでこれはトレイトの性質と同じ。そもそもCatyはnominal subtypingではなくstructual subtypingを採用しており、クラスや型の拡張や特殊化はそれらの演算として扱っているので、結果的にトレイトのような状態になっている。