電撃的な脱おむつを果たして数週間、もうすぐ二歳五ヶ月になる息子は、日本語話者歴一年弱ながら、なかなかしゃべりが達者になってきた。
昨日待望のホースリールを購入したのは、脱衣所からベランダまで伸ばして網戸や窓ガラスを洗浄するためだった。するとこんなチャンスを消防マニアの息子が見過ごすはずもなく、たちまちシャワーヘッドを強奪して器用にハンドルを操作して水を噴射し始めた。
子供に制御権を渡すにあたってはあらかじめ下階をチラ見し、洗濯物がないこと、手すりの上に布団など干していないことを確認しておいたわけだが、よもや「人に向けるな」の指示を無視してボスたるこの俺に噴射口を向けようとは思わなんだ!しかも、憎たらしいことにスイッチを「ジェット」から「キリ」に切り替えた上で噴霧してくるため、狭いベランダでは逃げ場がない!濡れ方も中途半端なので叱りづらい!とか言ってる場合ではなく、結構本気で頭に来たのでこっぴどく叱りつけてシャワーを即剥奪した。
そして明くる今朝、俺がソファーでくつろいでいると、息子がそばに来て話しかけてきた。
「パパ、なんでおこるの?」
「・・・(一般的な話?)悪い子になっていけないことをしたりするからだよ」
「パパは最近、もっと、なんでおこるの?」
「(;´◔‸◔`)・・・(そういや最近叱り方がきついかな・・・)」
自分の虫の居所などでぶれてはいけないと自省。
先日も、寝る前に歯を磨いてやっていると、急に口を閉じたので、またいつもの歯磨き拒否かよと思い、
「口を閉じたら磨けないでしょ!」
と詰めると、いかにも穏やかな声で、
「唾が出てきたから、飲み込んだんだよ」
とのたまわれた。ああ、そうだったんですね…。
決めつけてはいけないと反省。
そして冒頭に触れた通り、幾度もの挫折と苦難を乗り越えついに脱おむつに成功したことで、いよいよ糞尿被害からの解放も近いかなと思ったら、便秘明けや軟便のときはまだうまく制御できないらしく、
子「うんち出そう。」
俺「はい!トイレ行くよ!」
子「・・・(へっぴり腰で立ち止まっている)」
俺「・・・(すべてを悟る)」
子「・・・(ばつの悪い顔をしている)」
俺「・・・(特段装うべき表情もなく淡々と処理開始)」
子「気まちゅい(気持ち悪い)・・・」
俺「次はする前に言ってね・・・」
子「はい・・・」
といった具合でむしろ、まみれる割合は増えております。
それでは、引き続きがんばってまいりましょう・・・!
先に起動ディスクをHDDからUSBメモリに変更してからしばらく運用を続けていたところ、深刻な性能問題に直面してHDDに戻したのは先月のことだった。
定常的に書込が発生するディレクトリは当然ながら外出ししており、たまのmake installworldくらいしかろくな書込が発生することはなかったにも関わらず、気が付くと、そのmake installworldに8時間も掛かるようになってしまっていた。
単に、USBメモリ自体がずっと通電しての読み書き(書くのはまれだが)に耐えうる設計になっていないからなのか、特定部分へのアクセスが重なった結果へたってしまったのかはよくわからないが、ともかく常時稼働は荷が重かったということは言えるだろう。
HDDに戻したところたちまち安定して快適にはなったが、ただの撤退ではおもしろくないので、安くなってきたSSDを導入することにした。ちょうど、
Crucial m4 64GBが7,000円を切っているので、これを採用した。
さて、FreeBSDに限らないが、SSDを使う上で当然気になるのがTRIM命令のサポート有無である。FreeBSD 9.0や8.3ではadaドライバ、GEOM、UFS2がこれをサポートしており、シンプルな非冗長構成ではすんなりこれを享受できる。だが、ZFSは未サポート、さらにGEOMもmirrorやjournalを通すとUFS2がTRIM命令のサポート有無を検知できず無効になってしまうようだ。
何とも残念な現状だが、システム(前述のように/usr/local, /var等は含まない)は書込がほとんど発生せず、また同居予定のZFS ZIL, L2ARCパーティションは多くの書込があるものの、冗長化した上でたまに片肺にしてTRIMすれば十分だと考えた。そして/のファイルシステムは、ZFSとUFS+GEOM mirrorを比較検討し、読み込み主体であることと、先にTRIMがサポートされそうなことから後者にした。信頼性を重視し、ジャーナリングはGEOM journalではなくSUJを選択。
前置きが長くなったが、購入したSSD二台にシステムを載せ替える手順のメモを開陳。
# Suppose the SSD #2 is at /dev/ada2
# TRIM the disk using newfs(8)
newfs -E ada2
# Create a GPT partition table
gpart create -s got ada2
# Put the FreeBSD boot loader in it
# "-b 34" will suffice but it is always nice to align partitions with 4KB
gpart add -b 40 -s 64k -t freebsd-boot ada2
# Install the (non-ZFS) boot loader
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada2
# Add a UFS partition for the system root
# Create a partition for / (20GB)
gpart add -t freebsd-ufs -s 20g ada2
# Make it GEOM mirrored
gmirror load
gmirror label root ada2p2
# Make sure GEOM mirror is available on boot
echo 'geom_mirror_load="YES"' >> /boot/loader.conf
# Create a UFS2 filesystem on it
newfs -j -t /dev/mirror/root
# Copy the system root to /dev/mirror/root using:
# - dump(8) & restore(8) from a snapshot of the current / if it is UFS
# - rsync -aHAX
# or:
# - good old tar|tar
# Add a swap partition (20GB - sufficiently bigger than the amount of RAM on this box)
gpart add -t freebsd-swap -s 20g ada2
# Make it GEOM mirrored
gmirror label swap ada2p3
# Create a partition for ZIL (8GB - half the amount of the RAM on this box)
gpart add -t freebsd-zfs -l zil1 -s 8g ada2
zpool add tank log /dev/gpt/zil1
# Use the rest of the disk for ZFS L2ARC
gpart add -t freebsd-zfs -l l2arc1 ada2
zpool add tank cache /dev/gpt/l2arc1
# Edit /etc/fstab
/dev/mirror/root / ufs rw,noatime 1 1
/dev/mirror/swap none swap sw 0 0
# Edit /boot/loader.conf
vfs.root.mountfrom="ufs:/dev/mirror/root"
#
# Boot from the SSD #2
#
# This may be needed
zpool import -fa
# Suppose the SSD #1 is at /dev/ada2
# TRIM the disk using newfs(8)
newfs -E ada1
# Create a GPT partition table
gpart create -s gpt ada1
# Put the FreeBSD boot loader in it
gpart add -b 40 -s 64k -t freebsd-boot ada1
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
# Get the system root mirrored
gpart add -t freebsd-ufs -s 20g ada1
gmirror insert root ada1p2
# Get the swap area mirrored
gpart add -t freebsd-swap -s 20g ada1
gmirror insert swap ada1p3
# Get the ZIL area mirrored
gpart add -t freebsd-zfs -l zil0 -s 8g ada1
zpool attach tank /dev/gpt/zil1 /dev/gpt/zil0
# Add a second L2ARC partition (mirroring N/A)
gpart add -t freebsd-zfs -l l2arc0 ada1
zpool add tank cache /dev/gpt/l2arc0
こんな感じです。けっこう簡単だよね。
ポイントは、移行後の新システムを作る際、単一パーティションでGEOM mirrorを構成し、そこに/を作って構築すること。GEOM mirrorは、マウントした状態のファイルシステムパーティションをミラー構成にすることはできないようだ。上記のように片肺(というか単肺)のGEOM mirrorボリュームを作ってそこからブートすれば、あとは二肺目をそこにアタッチ(GEOM用語ではinsert)するだけで良い。
こうして構築は完了したが、不意のシステムダウンが起きると、リブート後にZFSボリュームが見えない(zpool importしないといけない)問題が発生しており少し困っている。最近VirtualBoxが不安定(4.1.10くらいから?)で、たまにカーネルパニックを起こすので少し深刻だ。
そのときは/var/named/etc/namedbが見えないため/etc/rc.d/namedが/etc/namedbを壊してしまうので、シングルユーザモードで
ln -sf /var/named/etc/namedb /etc/
zpool import -fa
と直してからスタートアップする必要がある。
GEOM mirrorは何やら曲者で、まちがえて作ってしまったときなどに、削除しようとgmirror stop nameとしてもGPTラベル名やGPTIDやらのデバイス名で設定が生き残ってしまう。ちゃんと削除するには、
sysctl kern.geom.label.gpt.enable=0
sysctl kern.geom.label.gptid.enable=0
と一時的に別名デバイスが生えない状態にしてから
gmirror stop name
とすれば良いようだ。
以前発見した問題が解決。少なくともFreeBSD 9.0では、eSATA port multiplierにディスクを差したときに既存ディスクのデタッチが発生しないようになっていた。ヤッタネ\(^o^)/
以前、kill-region-or-backward-kill-wordというのを紹介したが、たとえばcua-modeではkill-regionに割り当てられたキーに上位互換のコマンド(cua-cut-region等)を割り当て直す、といったことをしているので、割り当ては変更せずにkill-regionの挙動を変えてしまう方が都合がいい。
というわけで、adviceを使って書き換えるとこうなる。
(defadvice kill-region
(around kill-region-or-backward-kill-word (beg end) activate)
(if (and (called-interactively-p 'any) (not mark-active))
(backward-kill-word
(cond ((null current-prefix-arg) 1)
((symbolp current-prefix-arg) -1)
((listp current-prefix-arg) (car current-prefix-arg))
(t current-prefix-arg)))
ad-do-it))おまけで、選択モードでないときにM-wが現在行をコピーするようにするのがこれ。(プレフィックスにも対応)
(defadvice kill-ring-save
(around kill-ring-save-or-copy-line-as-kill (beg end) activate)
(interactive (list (point) (mark)))
(if (and (called-interactively-p 'any) (not mark-active))
(copy-region-as-kill
(point-at-bol)
(save-excursion
(condition-case nil
(progn
(move-beginning-of-line nil)
(next-logical-line
(cond ((null current-prefix-arg) 1)
((symbolp current-prefix-arg) -1)
((listp current-prefix-arg) (car current-prefix-arg))
(t current-prefix-arg)))
(point))
(error (point-max)))))
ad-do-it))Emacsでイラつくことのひとつが行単位のコピー(viならY)の面倒さだが、こういう工夫で乗り越えよう。
好きなヘッドホンをつなぐタイプのBluetoothヘッドセットとして、今までデザインの良いSony Ericsson MW600を使っていたのだけど、ちょっと困ることがあった。それはholdボタンがないことで、冬になって上着の内ポケットに入れる使い方が多くなると誤操作が連発してイライラする。ボリュームスライダーの反応の悪さも、逆に不意に反応しなくてありがたいほどだ。
ということで、最近出て話題のaudio-technica AT-PHA05BTを買ってみた。使ってみると、MW600との比較で次のような感じ。
- まずデカい。体積比で倍近くありそうに感じる。これ単体でミュージックプレーヤーだとしても大きいくらい。ただ、黒い光沢の映える表側の高級感はなかなかのもの。
- クリップが広く強い。MW600のそれはあまりに貧弱でほとんど用を為さないのに対して、これはどんな方向、角度でも外れそうにない安心感がある。シャツの裾に無造作に挟んでも使えると思う。
- Holdボタンの存在は助かる。ただ、hold時に受話ボタン単押しをしたときは「HOLD」と無愛想な返事をせずに、非hold時と同様に曲名を出してくれてもいいのではないだろうか。副作用はないのだし。
- ボリュームボタンを含めすべての操作ボタンがそれぞれ特徴的な起伏を持っており、手触りで分かるのはうれしい。適度なクリック抵抗があり、誤操作の心配が少ない。
- 高出力アンプ内蔵ということで音の迫力、解像度はすばらしい。そのぶんMW600よりもホワイトノイズが大きいが、気になるほどではない。
- AVRCP 1.3の曲名表示で日本語に対応しているのはいいが、ドイツ語・フランス語・コバイヤ語などの拡張ラテン文字が表示できないのはひどいと思う。(それらの文字は豆腐になる)なんでそこの対応をケチるのか。ちなみにMW600では拡張ラテン文字はちゃんと表示できる。(ただし海外版は日本語非対応)
- 最大8台とペアリングできる。もっとも、MW600の3台でも十分と思う。それよりリセットボタンを押してもペアリング情報が消えないのは何か気持ち悪い。
- microUSBで充電できるのも、充電中は使えないのもMW600と同じ。
まとめると、よくできているのに詰めが甘いという印象。MW600と比べると一長一短と言える。操作感&取り回し&音を取るならAT-PHA05BT、デザイン&FMラジオ機能を取るならMW600。俺はというと、服装やスタイル、気分に応じて使い分けることにしますよ。
まあ、両社の次期製品に期待です。その頃はBluetooth 4.0+HSかな。
Gitを使っていると、今のcommitなし!とgit reset --soft HEAD^したり、abc1234以降のコミットをパッチ化したい!とgit format-patch abc1234^したくなることがよくあるわけだが、この^はzshの拡張グロブ有効化時(setopt extended_glob)はメタ文字として働くため、そのまま入力すると標記のエラーで怒られてしまう。
いちいちエスケープするのは面倒だと思うのだが、ぐぐってみても正面から対処している人があまりいないようなので紹介しておくと、拙作のgit-escape-magicを使えば良い。リンク先のドキュメントの通り、ふつうに入力するだけで、いい感じに文脈を見て自動エスケープしてくれる。
このように、zle(zshラインエディタ)をいじると結構おもしろいことができる。
たとえば、3つ上のディレクトリを参照するために../../..などと打つのは指がつりそうな所作だが、カレントディレクトリが.で親ディレクトリが..であるならばn個上のディレクトリは(n-1)個の.の並びで表現できてもよさそうなものである。と、思ったなら、manydots-magicのような実装に至ることができる。
もちろん正規表現、Gitのコミットの範囲指定、あるいはワンライナープログラム内で...という並びを使うこともあるので、引数の頭か/の直後でのみ動くようにしているほか、直後に../..の後には似つかわしくない文字が打たれたときは...に戻す工夫を加えた。また、指が滑って打ち過ぎたときに最後の/..をBSを3度も押して削るなどは面倒だから、.連打の後のBSは3文字分を削り直前の状態に戻るようにしてある。
先ほどのgit-escape-magicともども、参考にしたurl-quote-magicでは考慮外だったネストに対応しているので、いくつも併用できる。何かおもしろいものができたら、ぜひ公開してみてくれ。
以前、メモリ8GBのマシンでのZFS用チューニング設定を紹介したが、昨年中に8.2-STABLEに入ったvm.kmem_size_scale, vm.kmem_size_max, vfs.zfs.arc_maxの自動設定が8GB超のメモリを積んだマシンにとっても適切なものとなり、無設定でも運用上支障がなくなった。
zfs-statsでカーネルメモリの使用状況やARCの統計情報を見て問題がなければ、これらの値を手で調整する必要はもうないだろう。あとは、どのくらい書き込みアクセスが発生するか、データロス時のダメージはどれほどかを見つつ、以下のような項目だけを残して運用している。
/boot/loader.conf:
vfs.zfs.txg.timeout="5"
vfs.zfs.prefetch_disable="1"
/etc/sysctl.conf:
# 2GB
vfs.zfs.txg.write_limit_override=2147483648
XやWindowsやCocoa上のEmacsでは、Control+ReturnだろうがControl+,だろうがCtrl+Shift+Spaceだろうが、好きな機能を割り当てることができる。これらのGUI環境ではアプリケーションが検出できる修飾キーの組合せに制約がほとんどないためだ。
ところが、ターミナル(エミュレータ)上では原則として一つのキー入力は一つのASCIIコードとしてアプリケーションに渡されるため、上記のように対応するASCIIコードのないキーの組合せはEmacsなどでそれとして認識することができない。Meta+XをEscape Xの二ストロークに置換する仕掛けがせいぜいだ。
…と思いきや、実はEmacsにはいわゆるスティッキー修飾キーに相当するevent-apply-*-modifierというギミック的関数が用意されており、たとえばC-x @ c(event-apply-control-modifier)と押してからRETを押すと、C-RETを押したのと同じことになる。つまり、たとえばiTermであればPreferences→Keys→Global Shortcut Keysで+を押し、
| Shortcut Keyboard: | ^↩ |
|---|
| Action: | Send Hex Code |
|---|
| 18 40 63 0d |
|---|
のように設定すれば、EmacsでC-RETが効くようになる。もちろん、「18 40 63 0d」とはC-x @ c RETをASCIIコードに置き換えたものだ。C-,なども同様に設定すればいい。
ところが、C-S-SPCのような組合せはすんなりとはいかない。CとS-SPCに分解してみても、依然としてS-SPCにはASCIIコードがないのだ。CとSとSPCに分解しようと思っても、event-apply-*-modifierは直後の一ストロークに作用するので、C-x @ c C-x @ s SPCのC-x @ cの効用は直後のC-xに食われ、そこで連鎖が終了してしまう。ならばとSとC-SPCに分解してみても、C-SPCはASCIIコードでは00すなわちC-@であるため、C-S-@という組合せになってC-S-SPCとは認識されない。(ところでinput-decode-mapやkey-translation-mapを使う別解もあるが、ここでは詳しくは触れない)
解決策としては、「スティッキーControl+Shiftキー」を自作すれば良い。つまり、こんな関数を作り:
(defun event-apply-control-shift-modifier (ignore-prompt)
"\\Add the Control+Shift modifier to the following event.
For example, type \\[event-apply-control-shift-modifier] SPC to enter Control-Shift-SPC."
(vector (event-apply-modifier
(event-apply-modifier (read-event) 'shift 25 "S-")
'control 26 "C-")))
(define-key function-key-map (kbd "C-x @ C") 'event-apply-control-shift-modifier)次のような設定を加える。
| Shortcut Keyboard: | ^⇧Space |
|---|
| Action: | Send Hex Code |
|---|
| 18 40 43 20 |
|---|
同様に、たくさん使いたいquery-replace-regexp(正規表現による文字列置換)はEmacsの標準ではC-M-%などというターミナル住民にとっては鬼畜なキーに割り当てられているわけだが、これも次のような関数を作り:
(defun event-apply-meta-control-modifier (ignore-prompt)
"\\Add the Meta-Control modifier to the following event.
For example, type \\[event-apply-meta-control-modifier] % to enter Meta-Control-%."
(vector (event-apply-modifier
(event-apply-modifier (read-event) 'control 26 "C-")
'meta 27 "M-")))
(define-key function-key-map (kbd "C-x @ M") 'event-apply-meta-control-modifier)下のようなキー設定を加えれば良い。
| Shortcut Keyboard: | ^⌥⇧% |
|---|
| Action: | Send Hex Code |
|---|
| 18 40 4d 25 |
|---|
世の中、カビくさい道具であってもやりようはあるもんです。どんなところでも、妥協せずに使えるものを何でも使って自らを足らしむる。それがハック。
追記:zshもマルチストロークのキーバインディングに対応しているので、たとえば上記のように設定したC-RETに機能を割り当てるには
bindkey '^X@c^M' accept-line
でOK。(上記はC-RETをRETと同じにする設定)
旧年中はお世話になりました。仕事は恙なくこなしたというのみ、その他についても思うように動けず、もう子供が成長しましたという以外何もなかったです。ごめんなさい。でも、子育てとは苦行ながらもあらゆる趣味に勝る愉しみでした。こんなにも、思いのままにすれども思い通りにならないことはない。
息子は先月、二歳になりました。ままごとなどを通じて「似て非なるもの」という概念と、それをそれとして演じるという様式を身につけたのは素直に喜びたいところです。彼は毎晩寝る前にホットミルクを要求しますが、「牛乳もっとあっためて!」とねだって得たお代わりを半分くらいで残しておいて、「空っぽ!」「まだ入ってんじゃん。」「空っぽ!」とおもしろ半分の嘘も言うようになりました。半笑いで「おもしろいww」などとにやけている。
テレビの正月番組でスリムクラブの内間やレイザーラモンRGを見るや、「てっちみたい。てっちかなあ?」とおどけたりします。てっちとは彼の叔父で、保育士経験もある面倒見の良いナイスガイの愛称ですが、共通点は坊主頭だけだよ。
叱られたり眠気や空腹から虫の居所が悪かったりして臍を曲げるたび、「パパやだ!」「パパあっちいって!」「会社行って!」「ごはん食べてきて。ラーメンあるよ。」など持てる語彙をフルに駆使して拒絶表明をしてきた彼ですが、また新たな決めぜりふを身につけました。言うことを聞かず危険物を振り回してきゃーきゃー言っているので、普段にない強い調子で叱りつけたところ、間髪も入れずに「正体見たり!どっか行ぃーって!」と厳しく言い返され呆然。「俺の正体って一体…」(キートン山田)元ネタは「おかあさんといっしょ」の「リンちゃんどうする?」コーナーなわけだが、ほんと使えるフレーズは何でも使うしびっくりするわ。
そんなこんなで、今年も家族ともども力いっぱい楽しく過ごしたいと思いますので、よろしくお願い致します。
結婚して、子供を持って、お金や時間の使い方が変わるとともに、服を買う頻度が減った。同時に、たまに服を買いに行っても気に入った服に出会えない、思うような買い物が出来ない、ということが増えた。密かに悩んでいたところで、その道のプロ(妻)に言われて気づいたんだ。
ふだんから実際に買うつもりでなくても街を歩いて、雑誌を読んで、そして何より店に足を運んで、どんな服が売られているかをチェックして、着てみたりすること。自分の好みを醸成すること。これをびしっと着れるように少し絞ろうとか、こないだうまいコーディネートが思いつかなかったあれはこれと合わせたらバッチリじゃね?とか、あの兄ちゃんのアレンジはいただき、とか、だいたい相場がわかったしセールまで待とうとか、つまりそういう気の持ち様、張り様。
前のめりで買い物に行って不首尾なのは苦痛だが、いつも何と言わず追い求めていれば、それ自体が楽しい道のりになる。買うかどうか悩んで悩んで、値下げを期待したりしつつ、買ったときのことをあれこれ考えている時間がいちばん幸せというあれ。
ガジェット好きのお前らだって、必要があるわけでもないのにいつもアンテナを張って、新製品が出ればいちいち店頭にいじりに行ったり、レビュー記事をむさぼり読んでは買う理由買わない理由を並べてみたり、仲間とくだを巻いたりしてるわけじゃん。旅行好きなら次はどこへ行こう、食べるのが好きなら何を食べよう、そういう頭で日常を過ごして、テレビを見たり街を歩いたり本を読んだりして、愉しみの種を見逃さない。何事も同じなんだよな。
金欠のときも縮こまらず、ウィンドウショッピングすればいいんだよね!
でも、来月はまじでキャッシュないので、会食などの折は何とぞ、私のカード利用枠の現金化にご協力ください。よろしくお願い致します。
子供が生まれてから一、二ヶ月くらいは親になった実感があまりなかったというのも今は昔、一歳十ヶ月を迎えた今では子供への愛情は自分の一部、まるで所与のものとなっていて、とりたてて言うこともないほどだ。
だいぶ間が空いてしまったので前回からここまでの坊やの成長の歩みをまとめると、つかまり立ちから脱したのは一歳一ヶ月。自立して歩けるようになったのでこういうジャングルジムを買い与えると、すぐに階段を上って滑り台を滑って見せ、そこから瞬く間に手足の使い方を覚えていった。中をくぐる、手すりを伝うなどの動きを通して自ら、落ちそうになってもすばやく手すりをつかんで体勢を立て直す、必ず三点で支えながら重心を移行するなどの基本的な体術を身につけた。滑り台も降りるのではなく登る方に楽しみを見出し、さらには一時間以上も二階部分でぐるぐる回りながら過ごすなど、どんだけ体力有り余ってるんだ的パフォーマンスを見せ、何週間かするとてっぺんで海老反りをするまでになった。
こうした鍛錬のおかげで、一歳四ヶ月くらいで公園によくある高さの滑り台に登って自分で滑れるようになっていた。公園での遊び相手も、もっぱら一歳以上年上の子ばかりだ。しかし、一人っ子らしく我は強く、よほどその場で言って聞かせないと他所の子におもちゃを譲ったりしないし下手をすると顔を引っ掻いたりするのでこっちはヒヤヒヤものだ。
ところで、家の近くには消防署があり、妻がいつもベビーカーで見学に連れて行くので名物赤ちゃんとなり、何度も消防車や救急車に乗せてもらったり、シールなどのグッズをもらったり、現場から戻ってきた消防車と道ですれ違うときに声を掛けられたりする。もちろん家には消防車や救急車のおもちゃがたくさんあるし、消防博物館にも行くし、放水体験をしたり記念撮影をしたりとすっかり緊急車両マニアになっている。最近では消防署に飽き足らず、やはり比較的近所にある警察署に遊びに行っては、「まーりさん」(おまわりさん)に「カッパー」もしくは「パカカー」(パトカー)に乗せてもらったりしているようだ。親としてはあまりそうした車に乗る機会がないことを願っているが。
彼はしゃべる方も比較的早く、一歳前後でパパ、ママ以外にアンパンマンやら消防車やらパトカーやらを意味する単語を発し始めた。一歳三ヶ月のときには語彙が十語を数え、一歳半のときには三語の「文」を作っている。風の強い日に、ベランダを指して「ママー、パパ、あーあ。」と言ったので何かと思ったら、「ママ、パパ(の服が)あーあ(落ちたよ)」と伝えたかったらしい。いつも、食べ物を床に落としたり、おもちゃをベランダから投げ捨てて落としてしまったりしたときに「あーあ」と言うのを聞いているからだろう。(落ちた洗濯物を見て、誰の服かも認識しているということだ)
動詞をよく操るようになったのは一歳七、八ヶ月頃からで、「食べる(意思)」「食べた(完了/過去)」「食べて(依頼)」のような活用もあっというまに覚えた。ほぼ同時に恐怖の「やだ」を習得し、早くもヤダヤダ期を迎えてしまう。「あとで、やだ!」「待ってて、やだ!」「寝る、やだ!」と手が付けられないこともしばしば。
何度も挫折した離乳は、一歳八ヶ月のときに再々挑戦し、三日三晩泣いては「おねがい」攻撃で懇願されたりと大変だったが、なんとか成功した。その後、暖めた牛乳を哺乳瓶で与えるようにしたら落ち着いたが、300mlくらいをいつも一気飲みしてお代わりを要求するというのを日に二回はするので、1リットルパックが二日持たない。ちなみに最初からずっと100%母乳で粉ミルクはまったく口を付けなかったので哺乳瓶には不慣れだったが、いいタイミングだったようだ。離乳してから、ごはんもたくさん食べるようになってうれしい反面、急なタイミングであれが食べたいこれが食べたい言い出すので大変だ。
一歳十ヶ月となる現在は、「トミカ見に行くの!ママ、行こ!」「これ、昨日パパにもらった」「○ーちゃん(自分)、ママ、ばあば、一緒、公園行った」「パパ、寝て。どうぞ。」「パパ見ててやだ!あっち行って!」など言いたい放題となっている。
父親として滅入るのは、朝、最初に俺の顔を見ての第一声がいつも「パパやだ!」なことだ。むりやり抱っこして明るいリビングルームに連れて行き、窓の外を見せたり牛乳を飲ませてやったりして機嫌を直せば「パパ、大好き。ごめんしゃい。」とか言ったりするので親はやめられないわけだが。
と、そんな感じで楽しくやってますよというお話。あ、よっしーのところも生まれたそうで、おめでとうございます!子育て仲間は多ければ多いほどいいよね。そんなに家も遠くないしご近所付き合いしましょう。