2007年3月26日月曜日

引っ越し準備 - 横浜のスラムと高齢化

4月から横浜市の関内の近くに引っ越すことになった。

関内と言えば、横浜の伝統的な建物や中華街が有名なところだ。
中華街もマンションから徒歩圏内なので、毎日食べ歩けるかと思うとのどがなる。

週末に、借りる予定の家の周辺を1時間ほどかけて歩いてきた。
事前に、周辺に大きなドヤ街があると聞いていたので、中華街を回って中華料理を楽しんだあとで足を運んでみたのだが、ちょっとした衝撃を受けた。

写真を撮るのも阻まれる雰囲気。道ばたに座りこんで将棋に興じる老人。特になにか目的もない様子で道をとぼとぼと歩く人々。どっちに向かうのかはっ きりしないかのようなとろとろとした動きの車。とっさに身の危険を案じた。しかし、次の瞬間に気がついたのは、町全体を覆う無気力間。ここ(寿町)はいわ ゆるスラム街なのだが、若者の姿はなく、「老人スラム街」というべき雰囲気で、喧騒で危険な空気はない。僕もジーパンに油よごれのついたジャンパーという 格好なので服装は町に溶け込んでいる(?)のだが、若者がしゃきしゃきと歩いているというだけで周囲との違和感を感じる。

「ドヤ」というのは、「やど」をひっくり返した言葉で、日雇労働者が滞在するための簡易宿泊施設のことだ。この地域は100軒以上宿泊施設が存在する日本三大ドヤ街の一つらしい。しかし、バブル以後は活気が失われ、現在は住人の老齢化も進んでいるそうだ[1]。

顔を上げると、開発地区のみなとみらいの高層ビル群が見える。高級住宅街の山手の山の緑も高架を挟んで目と鼻の先にある。このギャップには驚いた。台湾に自転車旅行をしたときに、台北で似たような地区の安宿に泊まったことを思い出した。しかし、それが日本にあるとは。

スラムが都市に隣接しているという状態は一般的なものだとしても、「若者がいないスラム街」という事態には驚かざるを得ない。「高齢化は、田舎ではなく、都市部においてもっとも進展する」という調査報告を ちょうど先日聞いたのだが、まさにその現場を見た気がした。スラムが都市において貧困層が過密的に集合した地域だとすると、老人スラムは、その老人版とい うことになるだろう。若者なら、町から飛び出し、あるいは他者を呼び寄せることもできるだろうが、老人の場合は、そのような流動性は期待できない。

このような問題をなんとかしたいと思いつつ、気分のやり場がないので、家に帰ってU2を聴く。

僕のつくるソフトは、そのとき周りにいる人や環境に大きく影響をうけている(例えば、家族と一緒に暮らしているときは、父でも使えるソフト、京都の 町屋にいるときは、みんなで管理できる共有ウェブなど)。新旧貧富美醜が交錯する街、横浜でなにがつくれるか? これから考えていきたい。

ちなみに新しい部屋は、最近事務所を改築して住居にしたところで、外からみるとビジネスビルのように見える。実際、半住居、半仕事用途で使おうと思っている。

[1]WikiPedia - 寿町 (横浜市)
http://ja.wikipedia.org/wiki/%E5%AF%BF%E7%94%BA_(%E6%A8%AA%E6%B5%9C%E5%B8%82)
WikiPedia - スラム
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%A9%E3%83%A0

寿町の写真
http://www2.tba.t-com.ne.jp/oldyokohama/kotobuki.htm

YOKOHAMA HOSTEL VILLAGE
http://yokohama.hostelvillage.com/ja/kotobuki/

理由説明構文「because文」を考える ⊂プログラミング言語論

because statement is a brand new statement which process and excuse reasons in programing models”

新しいプログラミング言語を考える会!を勝手に発足。

現行のプログラミングの構文はとても単純だ。
まずは、条件分岐と繰り返しについて考える。

条件分岐
if もし~
else if そうでないなら、もし~
else どれにも当てはまらないなら~
switch こういう場合はこうしたい~(といって条件を列挙)
case この場合~
default どれにも当てはまらないなら~

繰り返し
while この条件が満たされるまで何度でもやってよ
for ○○回やってよ
foreach 手持ちのものが尽きるまで何度もやってよ

たいていの言語はこれだけしかない。if/swtichとwhile/for/foreachは、それぞれif と while に統一してもよいが、コードの読みやすさや効率性の観点から、複数あるだけにすぎない。

上記以外のものとして
catch 例外の検出
というものがあるが、これもおおざっぱには条件分岐の中にいれることができるだろう。

今回は、接続詞の観点から、これらに面白い構文を追加してみよう。
接続詞は、
・だから~
・しかしながら~
・そして~
・つまり~
という類のやつである。

ここで、すこし頭の体操を。

井上ひさしの「私家版日本語文法」(だったと記憶している)には、日本語の接続詞を、「・」「:」「∴」「∵」「∠」「≡」「∪」「⊥」などに置き換えてみるとどうなるかという興味深い話がでてくる。

これを使うと

やはり今日は雨だった。しかし私は傘を忘れた。そのためずぶ濡れになった。

という日本語を下のように書ける。

⊥今日は雨だった。∴わたしを傘を忘れた。≡ずぶ濡れになった。

いまでも日本語では 「、」や「。」を使っているので、少しくらい記号が増えてもいいじゃないか。現に英語では、「.」や「,」に加えて「:」や「;」「-」などがよく使われている。

さて、このように日本語を記号をつかって単純化するという発想があるのだから、プログラミング言語をもっと豊かなものにするという発想があってもいい。

僕がまっさきに考えたのが「because」である。
さっそく例文を見てみよう。

if (apple_count < 4)
nullMessageBox(”りんごが不足しています。”)
nullbecause “私が食べた”
end

のように命令に続いて理由を述べる。
これだけではさっぱりわからないと思われるので、これがどんな影響を及ぼすか考えよう。

because文は、言い換えれば「なぜなら構文」である。正式名称は「理由説明構文」とでも名付けておこう。

「なぜなら構文」は、プログラミングの命令と実行には影響を与えない。プログラミングは軍隊組織のようになっていて、命令が絶対の世界だ。あらかじ め、「こういう事態が発生したら、こう対処しろ!」という処方を言語化しておく。優秀な参謀(プログラマー)は、予想される事態をかなり遠くまで見通せる ので、予期しない事態(バグ)に強いコードを作り上げることができる。そういう世界である。

理由付けは、軍隊組織では通用しない。上官に「それはなぜでありましょうか?」などと聞こうものなら「つべこべいわずに行動しろ!」と一蹴されるだろう。そんな軍人が増えたら作戦が成り立たない。

話を戻して、この「because文」。やはり、プログラミングコードのなかにいれてはみたものの、自分でもどう利用できるのかまだ思いつかない。しかしここは軍隊式発想を捨てて、because文に意味と意義を与えたい。

以下のような特徴をつけられないかと考えている。
・becauseは、関数型言語における遅延評価[1]のように、その場では処理されずあとから評価される
・プログラムが強制終了したときなどコンピュータがユーザーに「いいわけ」を提示するインタフェースとなる
・ユーザーの理由を理解する聞き分けのいいコンピュータ

オチがないエントリーで、ここまで読んでいただいた方には大変もうしわけない。because文は、いまのところ現実的な意味を見いだせていない。

because文をプログラミング言語のなかでどう使うか? どんな動作をしたら面白いか? という新しい発想を思いついた方は、メールやコメント、トラックバックなどで教えてもらえるとうれしいです。

/*
//ロボットとの会話
if (apple_count < 4)
nullMessageBox(”りんごが不足しています。”)
nullbecause “私がたべた”
nullnullMessageBox(”それはよくない”)
nullbecause “くさった”
nullnullMessageBox(”それは仕方がない”)
nullend
end
*/

[1]WikiPedia 関数型言語
http://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E

2007年3月1日木曜日

洛西@熊野古道

今週は、熊野にぶらり開発合宿に来ています。

ここは開発に集中できてとてもよいです。
朝起きて散歩に行ってご飯を食べたら、あとはノートPCに向かうだけ!

いろいろ作りつつ、新しいログイン認証と編集権限のインタフェースを考えています。
成果は、また後日お伝えできると思います。

熊野古道を歩いてきました(携帯なので画質が悪い)。