英語について

英語をもっとちゃんと読めるようになりたい。なんか、精読が足りない気がしている。というわけで、受験参考書を少しあさってみた。Z会のはなんか、哲学が無い感じ。駿台や旺文社のは、相変わらず良いと思った。河合塾のは、大人はちょっと手に取りづらい雰囲気を出している。いずれにせよ、こういうノウハウは、もっと大人の勉強にも生かされるべきじゃないのか?Z会はもう横展開してるか。あと、科学論文の類は、今はあんまり読みたくない感じ。

SEの壁

  • 仕様通りに実装する→PGの壁
  • 要求通りに仕上げる→SEの壁
  • ユーザに成功をもたらす→コンサルの壁

多分、こういうことだと思う。コンサル業は、いずれ無料サービスになるんじゃないか、とも思う。

フリー 〈無料〉からお金を生みだす新戦略

フリー 〈無料〉からお金を生みだす新戦略

この本の影響もあるけど、似たようなこと前から考えてたし。
あと、そういう意味でもタイヤの絵は、本当に良く出来ている。何だかんだ言って永遠のテーマ。

品質について思うところ

  • 品質は、仕様ではなく、要求で決まる。
  • 要求は、人によって違う。
  • 仕様は、人のパワーバランスで決まる。

プログラマは、仕様を100%満たせばそれでいいと考える。建前上はそれは正しいのだが、実際のところそれじゃまずいことが多いと思う。何故なら、仕様とは流動的なものであることが多いから。建前では、仕様はソフトウェアのゴールということになっているけど、本当のゴールはユーザの満足。ただ、ユーザの満足は、ユーザごとに異なるので、じゃあ、こういうものを作りましょう、とまとめたのが仕様。
まとまっているんだから、それを満たせばいいんじゃないかという話なんだけど、そもそも仕様というのはきちっと形式化されていないことがほとんどだし、抜け漏れもあるから、ある時点で凍結して、それでソフトウェアが完成する、というものでもない。そして、仕様というのがそういうものだから、ユーザ側の政治の上手な人はそこに付け込んで、あれもこれもと仕様を増やそうとする。開発側の政治が上手な人は、それは違う、これは違う、といって仕様の膨らむのを防がなければならない。
プログラマは、その結果仕様がどうなり得るかということまで予想しながら設計及び開発を行わなければならない。そこの読みを外すと、無茶な改修を迫られ、遅延し、デスマーチ化する。品質を満たしているつもりなのに品質が上がらないと言われて、モチベーションも低下する。プログラマからは、仕様をころころ変えるのが悪い、としか思えない。客観的に見ると、プログラマの方が難易度の高いことをしている、という風にも思えるが・・・。実際はどうなんだろう。

家二郎やってみた

家二郎

やってみました。以下、簡単なレシピ。本当は麺から作りたかったのですが・・・。

材料(4人分+スープ多め)

  • 豚肉 肩ロース 1かたまり \1000くらい
  • 豚肉 バラブロック \1000くらい
  • たまねぎ 2個 \150くらい
  • 長ネギ 2本 \150くらい
  • 椎茸 1パック \250くらい
  • しょうが 1個 \100くらい
  • にんにく 1個 \250くらい
  • キャベツ 半分 \100くらい
  • もやし 2袋 \100くらい
  • 太麺 6人分 \400くらい
  • 薄口しょうゆ
  • みりん
  • 調理酒
  • 味の素

背油があった方がいいみたいですが、売っていませんでした。
醤油もカネシ醤油が手に入れば、そっちのほうがいいみたいです。

スープ1

ダシの方です。鍋に水4リットルくらい?を入れて、沸かす。
バラブロックを簡単に油と肉の部分に分けて切り、鍋に入れる。
その他、たまねぎ、長ネギの白い部分、スライスしたしょうが、にんにく4かけを投入。
ひたすら煮込む。1時間くらい。
椎茸、ネギ類、しょうが、にんにくを引き上げる。
豚肉の油の方をざるに上げ、おたまでこす。肉の方は後述のスープ2に投入。
肩ロースを投入する。また煮込む。
火が通ったくらいで肩ロースを上げ、スープ2に投入。

スープ2

カエシの方です。鍋に酒200cc、みりん100cc、醤油300cc、塩、味の素大量を入れて、沸騰する直前まで暖める。
スープ1から出てきた肉を入れたら、とろ火で煮込む。1時間くらい。

野菜と麺

たっぷり目の湯を沸かして、キャベツともやしを入れる。2-3分くらいで取り出す。適当。
そのままの湯に、水を少し足して、麺ゆでる。適当。
あまったにんにくをみじん切りにしておく。

盛り付け

スープ1とスープ2を、3:2くらいの割合で、高さ半分くらいになるように器に入れる。かなり辛めにした方がいいみたいです。
麺をどさっと入れて、スープと絡める。
野菜とスープ2の肩ロース、バラを切ってのせる。最後に刻みにんにくをのせる。

出来上がりは写真参照で(分かりにくいですが)。初めてやった割には結構うまく出来てよかったです。

乗り物と怪獣に関する勝手な思索

子供時代に、乗り物好きだった子は将来理系に、怪獣好きだった子は将来文系になりやすい、というような話を聞きました。ここでいう乗り物は、プラレールとかのようなおもちゃ、怪獣は、ソフビ人形のようなものを指しているとお考えください。ちなみに私は乗り物好き→理系でした。
乗り物というか、自動的に動くおもちゃが好きな子供って、自分の望む状態を作り出すための初期状態を、因果関係を考えながら、時には試行錯誤を重ねて構築していく遊び方がメインかな、と思うんですが、確かにこれは物理とか実験の考え方に近しい気がします。
翻って怪獣のおもちゃが好きな子供は、それまで積み重ねられたストーリーに瞬間的な判断を加え、その時々のドラマを楽しむような遊び方になるのかな、と予想します。するとこれって、コミュニケーション能力や、マネジメント能力につながっていくような気はします。とはいえ、怪獣で遊んだことはほとんどないので、完全に憶測ですが。
怪獣は、それ自体がドラマの中で存在するものなので、そういった意味でも文系的なのかもしれません。いずれにせよこの議論は、直感的且つ不毛すぎるのでこのくらいにしておこうと思います・・・。

使用感その2

数年前に、RedHat+emacs+perlで、割と大規模な推薦システムを書いたことがあったので、個人的にはかなり馴染みのある構成。まあ、一人で開発するくらいの規模だったらこの環境で十分すぎるなあ、という印象です。というわけで、この環境でしばらく行くことにしようと思います。

実際に構築した環境

vmware+ubuntu+emacs+puttyでいくことにしました。最近はpoderosaの方がいいんですかね・・・?vmware+ubuntuまでは、基本的に、
http://sarabande.info/wiki/Vmware:Windows%E3%82%92%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AB%E3%81%97%E3%81%A6Ubuntu%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B#vmdk.E3.81.A8vmx.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E4.BD.9C.E6.88.90
に書いてある通りにインストールしました。ただ、イメージファイルだけは、
Get Ubuntu | Download | Ubuntu
からサーバー版を落としてきました。取り合えず、putty
http://yebisuya.dip.jp/Software/PuTTY/
からダウンロードして、インストールしておきます。で、vmwareqemuをそれぞれ、
VMware Workstation Player | VMware
http://homepage3.nifty.com/takeda-toshiya/qemu/
から落としてきます。vmwareはそのままインストール。qemuは、解凍後、出来たフォルダをqemuに名前変更して、vmのイメージファイルを作成したいフォルダに突っ込む。参照先にあわせて、c:\linuxとしておきます。続いて、

cd C:\Linux
qemu\qemu-img.exe create -f vmdk ubuntu.vmdk 10G

としてイメージファイル作成。10Gの部分は、イメージファイルのサイズになります。さらに、vm実行ファイルを作成します。内容は、

config.version = "8"
virtualHW.version = "4"
memsize = "256"
ide0:0.present = "TRUE"
ide0:0.fileName = "ubuntu.vmdk"

ide1:0.present = "TRUE"
ide1:0.fileName = "落としてきたUBUNTUのイメージファイルの絶対パス"
ide1:0.deviceType = "cdrom-image"

floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayName = "Ubuntu"
guestOS = "ubuntu"
nvram = "ubuntu.nvram"
scsi0:0.redo = ""
ethernet0.addressType = "generated"

ide1:0.autodetect = "TRUE"
ethernet0.generatedAddress = "00:0c:29:51:03:67"
ethernet0.generatedAddressOffset = "0"
checkpoint.vmState = ""
tools.remindInstall = "FALSE"
ide0:0.redo = ""

extendedConfigFile = "ubuntu.vmxf"

virtualHW.productCompatibility = "hosted"
tools.upgrade.policy = "manual"

こんな感じ。意味はあまり分かっていません。で、vmwareを起動して、ubuntuを適当にインストール。sshをインストールして、puttyから接続します。sambaを使うために、windows側のソース格納フォルダを、

エクスプローラから選択→右クリ→共有タブ→「ネットワーク上でこのフォルダを共有する」「ネットワークユーザーによるファイルの変更を許可する」にチェック→OK

として、共有設定にし、ipconfig /allで表示されたHost Nameを覚えておく。ubuntu側は、

sudo apt-get install samba smbfs
sudo mkdir マウント先ディレクトリ
sudo smbmount //覚えておいたHost Name/共有名 マウント先ディレクトリ -o username=windowsのユーザ名,ip=vmから見たwindowsマシンのIPアドレス

を実行すればOK。ls マウント先ディレクトリして、windowsのファイルが見えていれば成功です。その他、haskellとかemacsとかhaskell-modeとか、諸々インストールして終了。