2011/11/16
祖父が亡くなって一週間になるので…
享年94歳。一言で言えば、大往生というやつだ。
ちょうど一週間で良い区切りなので、こんなポストを今、空港で書いている。
歳も歳だし家族全員、"その時"がいつ来るのかと覚悟していたことではあるので、思いのほかショックはなかった。
実際、もしかしたら、海外にいっている間にいってしまうかもしれないとも思ったかったからこそ、その前の土曜にわざわざ帰省して顔を見に行ったのだ。
その時は、歳が越せるかな、とは思っていた。
それがまさか、火曜に呼び戻されることになろうとは、想像もしていなかった。
今回の死に際して、ひとつわかるようになったことがある。
近年は、亡くなった家族の遺体を放置したまま同じ屋根の下で暮らしていたとか、曰く「どうすればいいかわからなかったから放っておいた」とか、想像を絶する事件がニュースになったりしていたが、その気持ちが少しだけわかったような気がするのだ。
幸いなことに祖父は本当に眠るように亡くなった。
死に顔を見ていると、ゆったり寝ているだけのようにも見えた。その内、また起きるんじゃないか、というくらい幸せそうな顔だ。
そんな顔を見ていたら、ふっと、このままそっとしておいてあげたらいいんじゃないか、という思いすら過ぎった。
もしかしたら、事件になっていた家族も、最初はそんな気持ちだったのかもしれない。
そう考えると、何も想像を絶するニュースではなくて、少しだけ優しい話なのかもしれないと思った。
でも、実際にはそんな悠長なことはいってられない。
亡くなってすぐに親戚の人達が大勢やってきて(なにせ実家は田舎なので)、葬儀社の人がやってきて、やれ通夜と告別式の日取りはどうだの、納棺だの出棺だの、どんどん進んでいって、あっという間にお爺ちゃんは小さなお骨になって帰ってきた。
本当に、色々な人達の力があって、お式を終えることができたんだと思う。
もしかしたら、家族の死というのは、家族だけで乗り切るには切なすぎるものなのかもしれないね。
それを親戚やら近所の人達やらが、よってたかって、明日に向かって押し出してくれる。
本当にありがたい話だ。
これから米国に発つけど、次に帰国するときは四十九日です。
2011/10/14
YAPC::Asia 2011にやってきたので…
今年もやって来ましたYAPC::Asia。
まだ、一日目(前夜祭を入れると二日目?)の午前が終わったところなんだけど、KeynoteのJesse Vincentのトークを聴いて、Twitterで書き足りなかったところを書いとこうかと。
実は、この話は事前にOSCON 2011のスライドを見ていたので知っていた。
でも、実際にJesseのトークを直に聴くと、Perl5を良くしたい!という情熱がひしひしと伝わってくる。
非常に大雑把に言ってしまうと、「Perl5をこれからも進化させ続けていくために、Perl5のコアを小さくしよう、過去の遺物を捨てられるようにしよう」、そういう方向に舵を切ったんだという話。
でも、それをやりつつも、今動いているPerlプログラムは(可能な限り)動き続けるよう互換性を保つための提案をしている。
とても野心的な話だ。(どんな方法を提案しているのかは、上のスライドを参照)
個人的には、未来に向かって変わり続けようとする、この話には心から賛同している。
一方で、この方向に舵を切ることで、Perl5が俺が大好きだったPerlではなくなってしまうのかもしれないなぁ…という一種の寂しさもよぎった。
俺が大好きだったPerlというのは、つまり、なんでもござれの全部入りアーミーナイフなPerlのことだ。
「Perlが使えれば、なんとかなる!」
そんな妙な安心感をくれるPerlのことだ。
一方で、コアを小さくして拡張はモジュールでやる方向性でいくと、その極限の解はSchemeだ。
Schemeの世界は素直に綺麗だと思えるけど、俺の好きな世界ではなかった。
やっぱり俺は、病的折衷主義者なのだね!
Jesseはアーミーナイフともチェーンソーとも表現していたけど、Jesseもこのチェーンソーが好きみたいだ。
だから、Schemeみたいになることはないと思う。
そんなことをしても、嬉しい人は少ないと思うし。
一方で、病的折衷主義と純粋主義とのバランスの狭間で、難しい舵取りをすることになると思う。
色々思うところはあるけれど、前に向かって変わり続けるというのには大賛成だ。
変わり続けることのみが、自分たちが自分たちで在り続けられるたった1つの方法だと思うから。
今はただ、そんな大それた決断をしたJesseとPerl Mongerたちを、自分なりにサポートできる方法ってなんだろう、とそれを考えている。
2011/03/10
JavaScriptのオブジェクト指向は、逆の順番で学んだほうが理解しやすいと思うので…
事の発端というか、きっかけは、id:perlcodesampleさんとid:gfxさんの下のポストを見て、
newとかprototypeを使うのが推奨されてないとか、直接代入するほうが楽とかじゃなくて、挙動が違うんだよなぁ、と思ったこと。
挙動が違うんだから、もちろん使いどころも違うんですよね。
でも実際、JavaScriptのオブジェクト指向は混乱しやすいと思います。
自分もご多分にもれず、さんざん混乱させられたクチですしね。
わかってしまえば、どってことなくて、とってもシンプルなんですけどね。
せっかくなので、今だからこそ言える、自分だったらこうやって教えて欲しかったなぁ、っていう説明をしてみようかと思います。
題して、JavaScriptのオブジェクト指向は、逆から入門しろ!
2011/03/07
zshでperlbrewを補完するようにしたので…
zshの補完ってホントに便利ですよねー
堕落しきった俺には、もはやperlbrewのサブコマンドを入力することさえ困難なのです。
というわけで、perlbrewのzshでのコマンド補完(改) - LAPISLAZULI HILL#Hatena のルールを利用させてもらって、補完できるようにしました。
でも、このルールは若干古くなっていたので、ちょこっと修正しまった↓
具体的には、switchとuseの補完候補にinstalledサブコマンド(listサブコマンドの古いやつ)を使うようになっていたので、修正しています。
#compdef perlbrew | |
typeset -A opt_args | |
local context state line | |
_arguments -C \ | |
'(- 1 *)'{-h,--help}'[prints help]' \ | |
'(-f --force)'{-f,--force}'[Force installation of a perl]' \ | |
'(-q --quiet)'{-q,--quiet}'[Log output to a log file rather than STDOUT. This is the default.]' \ | |
'(-v --verbose)'{-v,--verbose}'[Log output to STDOUT rather than a logfile]' \ | |
'-D=-[pass through switches to the perl Configure script]' \ | |
'(-as)'-as+'[Install a given perl under an alias.]:alias name' \ | |
'1: :->cmds' \ | |
'(1 *): :->args' && return 0 | |
case $state in | |
cmds) | |
local -a cmds | |
cmds=( init install switch list use off help mirror version ) | |
_describe -t commands 'perlbrew command' cmds && ret=0 | |
;; | |
args) | |
case $line[1] in | |
switch | use) | |
local -a versions | |
versions=(system $(_call_program commands perlbrew list 2>/dev/null | perl -ne '!m{\*|^\s*/} && s/\n/ / && print')) | |
_wanted versions expl 'perl version' compadd $versions && ret=0 | |
;; | |
install) | |
if ( [[ ${+_perlbrew_installs} -eq 0 ]] || _cache_invalid PERLBREW_installs ) && ! _retrieve_cache PERLBREW_installs; then | |
_perlbrew_installs=($(_call_program commands curl -L0 http://search.cpan.org/dist/perl/ 2>/dev/null |perl -ne 'm{^\s*<option value="[^"]+/(perl-[^"]+)/">} && print "$1\n"')) | |
_store_cache PERLBREW_installs _perlbrew_installs | |
fi | |
_wanted releases expl 'perl release' compadd -a _perlbrew_installs && ret=0 | |
;; | |
*) | |
(( ret )) && _message 'no more arguments' | |
;; | |
esac | |
;; | |
esac | |
return ret |
あとついでに、install候補も補完できるようにしときました。(※CPANからリストを取ってくるので、最初の補完には時間がかかりますが(>_<;)) これで、いちいちバージョンを調べなくても気軽にいろんなperlを試せますね!
zshの補完関数はじめて書いたけど、こんなんでいいのかな?
3/11追記
App-perlbrew-0.17にアップデートしたら、switch候補がちゃんと動かなくなったぽいので、修正しました。
2011/02/28
どうやらzshなしでは生きられない体になってしまったようなので…
ついにWindowsにまでcygwin-zshを入れてしまった。minttyとの組み合わせで快適。今まで、なるべくcygwinは避けて生きてきたのに……ホントにzshがないと生きられなくなりつつある。堕ちるところまで堕ちた感じだ。2月27日 via web Favorite
Retweet
Reply
yet another
Maki_Daisuke
最近、上のようなことをTwitterでさんざんつぶやいてますが、表題のとおりです。
もうTab補完でどこにでも行けるコレに慣れてしまうと、手放せなくなる、っていうか補完がきかないとコマンドラインでの作業ができないくらいになりつつあります(>_<)
ホントにたくさんのコマンドの補完ルールが最初から入ってるので、どんどんオプションを覚えなくなって、どんどん堕ちていくw
そんな、イイカンジに人を堕落させてくれるzshをWindowsに入れる際に、いろいろとコツがいったので、メモがわりに書き留めておきます。
自分以外にも、Windowsでzshを使うのをためらってた人がいたら、これでzshライフ始めましょう!