まだ無名の風景たち

そしてその情景

親父が耄碌していた

実家に帰省した。親父はすでに仕事を引退している。家では酒を飲むか庭仕事しかしていない役に立たない親父になった。

 

子供の頃は怒られるのが怖かった。恐怖と威厳はそのまま結びついていた。しかし、僕が大人になった今、親父を怖いと思うことはなくなった。そもそも威厳とは恐怖に結びついたものなのだろうか・・。

 

親父はまるで時間が止まってしまったかのようだ。親父が僕に言うことは、大学生の時と全く変わらない。大学を卒業して6年経つ。6年である。それでも本当に同じことをずっと言っている。親父の目の前にいる息子は、大学生のまま成長していないらしい。

 

親父は、自分の卒業した高校のこと、大学のことを話す。僕のとってそれらは過去でしかなく、こだわるべきことではないのに、親父はそれにこだわりがあり、誇りに思っているようだ。

 

僕が実家に帰らないと判断したことは正しかった。僕の育った家庭は、おそらく機能不全家族だろう。親父が親父としての役割をおそらく果たしていない。親父はなぜか酒に酔うと人の悪口しか言わなくなった。そして世間を罵るような言葉を使った。母親からは親父の愚痴やネガティブな言葉しか聞かなかった。

 

僕が実家から出ていくことの判断の正しさを示す証左として、兄が精神を病んだことがあげられる。機能不全の家庭のにいたら、精神的に良い影響があるわけがない。自分はそう言うことがわかっていた。本を読んで色々勉強していたから、何となくはわかっていた。

 

親父はもう頼りにならない。言っていることも世間の流れから大きくずれてしまっている。親父はもう沈んでいく船である。僕は親父と一緒に沈んでいくわけにはいかない。僕は僕の航海を続ける。悲しいのと、腹が立つのと。もう俺の帰るべき場所ではないのだ。

Common Lispでリレーションの勉強 1.リレーションを作成する関数を作る

リレーションの勉強を兼ねて自分なりに何かプログラムを作ってみる。

Common Lispが好きなので、Lispでやる。

リレーションには、見出しと本体がある。

すなわち、リレーションは、

リレーション = 見出し + 本体

と考えてよいだろう。

これをLispで扱うとき、どのように表現すべきだろう。

Lispといえばリストなので、やはりリストでリレーションを表現するようにしたい。

直感的に、

(cons attribute body)

って表現すればいいんじゃない?って思う。

リストの図で表現するとこんな感じだろうか。

f:id:hitsuji123:20170722155059p:plain

「なんだ、簡単じゃん」と思って、下記のようなコードを書いてREPLで試してみる。

consの引数1に見出しのリストを、引数2に本体のリストを渡せばOKのはずだ。

CL-USER> (cons '(id name password) '( (1 "bob" "bob1234") (2 "alice" "0002")))
( (ID NAME PASSWORD) (1 "bob" "bob1234") (2 "alice" "0002"))

「あれ?思っていた結果と違う」

俺が欲しかったのはこんなリストだ。

( (ID NAME PASSWORD) ( (1 "bob" "bob123") (2 "alice" "0002")))

何か間違っているらしい。 

リスト( (ID NAME PASSWORD) ( 1 "bob" "bob1234") ( 2 "alice" "0002"))を図で表現すると、下記のようになる。

f:id:hitsuji123:20170722164327p:plain

 ふむ・・・。本来は下記の図のようになって欲しかった。

f:id:hitsuji123:20170722164655p:plain

このようにするには、

(cons attribute (cons body nil))

 とすれば良いのでは。実際にREPLで試してみる。

 CL-USER> (cons '(id name password) (cons '( ( 1 "bob" "bob123") ( 2 "alice" "0002")) nil))
( (ID NAME PASSWORD) ( (1 "bob" "bob123") (2 "alice" "0002")))

 OKだ。てなわけでリレーションを作る関数を定義する。

(defun make-relation (attribute body)
     (cons attribute (cons body nil)))

CL-USER> (make-relation '(id name password) '((1 "bob" "bob123") (2 "alice" "0002")))
((ID NAME PASSWORD) ((1 "bob" "bob123") (2 "alice" "0002"))) 

うん。シンプルだし、なかなか悪くないんじゃない?

てか、はてなLisp投稿するの面倒だな・・。

仕事メモ

 ・なぜ自分の設計に自信が持てないんだろう?

解決策としては他人に精査してもらうことだ。ひとりだから悩んでしまう。

 

・なぜ不安を感じるのだろう?

今後控えている作業にたいして、感覚的に過大評価しているのかも。重要なのは、作業にどれくらいかかるかを、あくまで定量的に把握することだ。じっさいにどれくらいかかったか、計ってみよう。

 

・不安なことがあって前に進めない

不安に感じるところがあっても、一回その感情を切り離して、今の目的を達成することを目標とせよ。不安な点はのちのち考慮すればいい。

 

・感覚について

僕の経験から言うと、感覚というのはかなり万能だ。感覚は導き手である。でも、それをうまく扱うことが難しい。乗りこなせず、飲まれてしまう。

 

・開発者が一回話したことを忘れている

コミュニケーションをするのを先延ばしにしてしまっていないか。

全体像を伝え忘れてないか。

伝えるべきことが、はじめに伝わっておらず、終わりごろに気づくようになっていないか。

コミュニケーションは基本「いますぐ」やる。