ポジションが定まらないヤツ

ポジションが定まらない奴のブログ

うちで同居している鳥

ブログのネタがなかなか浮かんでこない為、プログラミングとは全く関係ないのですが同居している鳥 (ぼくは飼い主ではありません) を紹介しようと思います。*1

なぜ同居している鳥の情報を発信するのか

同居している鳥はサザナミインコという世の中的にはあまりメジャーではないインコで、日本語の飼育本すらない種類です。(獣医につれて行ってみましたが、すぐには飼育資料が出てこないと言われました)そのため、サザナミインコの飼育情報は洋書かインターネット上で飼育している人のブログや情報サイトを参考にするしかない状況です。日本で飼育されるようになってからまだ十数年との事で、何を食べさせるのがベストなのか?すらもハッキリとはわかっていないそうです。

前述の通り情報の少ない種類のインコであるため、興味の無い人には一切役に立たないでしょうが、人によっては役立つ情報になり得るため、我が家で同居している鳥についての情報を発信しようと思った次第です。

飼育者

飼い主である同居人はこれまで、オカメインコセキセイインコといった所謂「メジャーなインコ」の飼育経験はありますが、サザナミインコは現在同居している個体が初の飼育、ぼくは猫やハムスターなどの鳥と相性が悪そうな動物しか飼ったことがありませんが同じ部屋で同居している都合上、主に世話をしているのはぼくです。

同居人は家に居たりいなかったりしますが、ぼくは基本的に平日は朝の8時20分から夜の21時くらいまで不在にしています。土日は休みですが、日によっては家を空けています。つまり、昼間は放置、夜もぼくが寝ている間は放置、構うのは朝起きてからの1時間くらいと、家に帰ってから寝るまでの間くらいです。構うと言っても、食事や水の交換、カゴの掃除の他はなんとなく話しかけてみたり、においを嗅いでみたり、時間があれば散歩させるくらいです。

同居している鳥のスペック

ネットなどに掲載されている基本スペックと、同居している鳥のスペックです。

世の中 我が家
名前 サザナミインコ ちぇる
出身 南米の山岳地帯 ペットショップ
体重 40~70g 48g(動物病院で計測)
寿命 10年程 不明
仲間 20羽程の群れで生活 ぼくと同居、稀に同居人がくる
野生では緑らしい
普段の声 小さい 部屋の中に居ないと聞こえない
大きい声 大きい 家中に響く(2階建て2LDK)
飛行 飛ぶ 下手くそ、墜落したりする
歩行 飛ぶより好き メインの移動手段
移動速度 ゆっくり 基本ゆっくり
性格 温厚 たぶん大人しい
水浴び 大好き 基本しない
人慣れ 良く慣れる 慣れてはいるようだが……
懐き 良く懐くと書かれていた 好きでも嫌いでも無さそう
手乗り 手乗りになる個体が多いらしい ペットショップ時代のトラウマから手や指を怖がる
価格 15000〜40000円 40000円

補足

その他の特徴を補足します。

  • カゴを縄張りとして認識しているのか、カゴに手を入れると警戒して中程度の声で鳴く。
  • カゴの清掃、おもちゃの設置・撤去なども同様に警戒する、手間取っていると攻撃してくる。
  • 攻撃は主に噛みつきであり、嘴が鋭いためクワガタに全力で挟まれるのよりも痛い。(何故か血は出ない)
  • 手や指は怖がるが、顔や肩、足は怖くないらしく部屋を散歩中に肩や足に乗ってくる。
  • 手や指は散歩中でも攻撃・逃亡対象である。(散歩時、カゴに戻って貰うのに一苦労する)
  • カゴに戻って貰うために捕まえたときも手が怖いからか激しく暴れるが、試しに指で頭を撫でてみると多少大人しくなる。喜んではいないようだが撫でる指を噛んだりはしない、喰われると思ってビビっているだけなのかも知れない。
  • それでも嫌なところに触れると威嚇はする。
  • 髪の毛を甘噛みしてくる。
  • テレビやゲームの音は気にしないのに、モノを落とした音などには敏感に反応する。
  • 日が落ちて電気が消えているとほぼ寝ている、電気がついていても眠ければ寝ている。
  • 水浴びは基本しないが、極稀に胸だけ濡らす。
  • 嘴での噛みと、足での掴みを併用してクライミングボルダリングのように移動を行う。
  • おそらく機嫌が良いとき、歌うように鳴く。
  • 掃除機の音や自然音を聴くと複雑な鳴き声を披露する。(いつもの音量なので怒っているわけでは無さそう)
  • 音楽を流していると一緒に鳴き始めることがある(テンポがずれている)
  • 爪は自分で切るのが怖いため病院で切ってもらっています。

飼育環境

部屋

大体7畳、エアコン有り。元々の生息地が高地であり、暑さに弱く寒さに強いという特徴が有るため室温を大体26〜7度くらいに保つため、24時間エアコンが稼働しています。 照明はLEDのエジソン電球が裸のまま一つぶら下がっている状態です。 窓には基本カーテンが掛かっていますが、たまに開けてレースカーテン越しに日光を入れています。朝と夜、窓を開けて換気するようにしています。

食事

何を食べさせるのが正解か、イマイチわからないという事なので色々試していますがメインはペレット+オーツ麦+水です。サザナミインコ用のミックスシードを販売しているところがあるようなので、一度試してみたいと思っています。水には病院で出して貰ったビタミン剤を定められた量添加しています。

レギュラー 名称 好み
オーツ麦(殺菌済み) 大好き、無限に食べる
ペレット 腹が減っていれば食べる
ペレット(換羽期用) 腹が減っていれば食べる
オカメインコ用ミックスシード 好き
ボレー粉 食べる
小松菜 好き
粟穂 大好き

ペレットはこちらで購入しています。

カゴ

うちに来た当時は HOEI のこちらのカゴを使っていました。

ホーエイ HO101アーチ手のりメッキ

ホーエイ HO101アーチ手のりメッキ

「当時手持ちが無くてこのカゴを買ったが、実はちょっと狭いかもしれない」と言うことだったので、こちらのカゴに引っ越しました。

ホーエイ HOEI 35手のりホライズン

ホーエイ HOEI 35手のりホライズン

どちらでも快適にすごしているようです、前に住んでいたカゴのことはちゃんと覚えているようで、散歩の時に前のカゴの所で遊んでいることが割とあります。

カゴの中のモノ

カゴに付属してきた止まり木と、餌・水入れの他に以下の物を入れています。*2

家(ちぇるの家)

最重要アイテム、コレが無いと不機嫌になり、尾羽を広げて威嚇を繰り返し大音量で叫び続ける。汚れてきた為、取り替えようとして触れるだけでも叫び、噛みつき、走り回る。*3 個体識別はしていないようで、新品に変えても継続的に利用しています。これの製造が中止されたら大変なことになるかも知れません。*4

家の中の部分でも休みますが、カゴと家の天井の間にできるスペースの部分が一番のお気に入りで、落ち着いて寝るときはそこで寝ていることが多いです。カゴの天井に背中がくっつく状態になるため、顔を近づけるとにおい嗅ぎ放題です。*5

SANKO 小鳥の四角ベッド

SANKO 小鳥の四角ベッド

止まり木

カゴ付属のモノだけでは数が足りないため、こちらを追加で2本設置しています。カゴ付属の止まり木は囓りませんが、こちらの止まり木は囓るし、遊ぶときもこの止まり木の上で遊んでいることが多いです。*6

マルカン 森の小枝

マルカン 森の小枝

おやつ皿

名前の通りおやつをいれるために設置しましたが、設置した場所が「手を入れられるのが本当に嫌」な場所だったらしく、餌皿を回収しようとすると激しい攻撃を受けるため、おやつ皿としては機能しておらずただの移動の足掛かりになっています。

SANKO 小鳥のスカイレストラン

SANKO 小鳥のスカイレストラン

ロープ

ロープで出来た止まり木です。商品写真のように両端を上からつり下げるようにU字に配置していますが、囓ったり上を移動したりして遊んでいるようです。

SANKO ロープパーチ 37

SANKO ロープパーチ 37

謎のつり下げおもちゃ

何かのついでに購入して、試しに吊してみたところ最初は無視していましたが、今では毎日噛んだり、足で掴んで持ち上げたり、ぶら下がったり、移動のための足場として利用しているようです。1代目はボロボロになってしまったので、今は2代目と3代目がカゴの中に設置されています。

SANKO ナチュラルハンガー フルーツ

SANKO ナチュラルハンガー フルーツ

バードマット

カゴの底にはフンキリ網を敷かず、バードマット(広葉樹の木くず)を敷き詰めています。うちに来た当初は新聞紙を敷いて、その上にフンキリ網を敷いていましたが、掃除が大変だったためバードマットを試してみたところ、フンをこまめに回収することが出来たり、綺麗になっている時はカゴの底を歩き回ったり穴を掘るような動作をしていて気に入っているようだったため、こちらに移行しました。抜けた羽根の飛び散りも防止されて助かります。平日は汚れた部分の回収と補充、休日は全交換という運用にしています。20リットルほど備蓄しています。

SANKO バードマット 5L

SANKO バードマット 5L

カゴの外のモノ

外に有るべきモノと、同居している鳥に拒否されてカゴから取り出されたモノ。

止まり木

全く使ってくれません。

マルカン 止まり木タワー

マルカン 止まり木タワー

5段梯子

たまに登っているのを見かけましたが、利用頻度が低いため現在は撤去中。

スドー 木製 5段式ハシゴ P-1501

スドー 木製 5段式ハシゴ P-1501

3種セットのおもちゃ

ぼくの怠慢によりまだカゴにセットされていません。

3点セットパック1 P-1690

3点セットパック1 P-1690

ブランコ

スペースが見当たらなくて取り付けていません。

スドー 木製ブランコ 大 No.1511

スドー 木製ブランコ 大 No.1511

ティッシュペーパー

主にフンの処理に活躍しています。

バードバス

何度か設置してみましたが、水飲み場その2としてしか機能していないため撤去しました。

SANKO 小鳥の快適バスタイム

SANKO 小鳥の快適バスタイム

バードテント

ちぇるの家として購入してみたモノの、本家ちぇるの家と入れ替えで設置してみた結果激しい抗議活動にあい撤去。

SANKO 小鳥の三角ベッド

SANKO 小鳥の三角ベッド

*1:我が家では色々あって「同居人が飼い主の鳥」とぼくが同じ部屋で同居しています。(同居人は隣の部屋にいます)

*2:フンキリ網は外しています

*3:逆にコレさえあれば他のモノが無くなってもカゴが変わってもいつも通り大人しい

*4:自作か?

*5:割と良いにおいがする

*6:一人遊びですが

続きを読む

Laravel で group by した時にグループ毎の avg (集計関数の結果)が欲しい場合

前回「前月の〜」みたいなブログを書いたんですが、それに伴って「前月の週毎の平均を〜」みたいな要件があって、Laravelでちょっとハマったので書いておきます。

Laravel のクエリビルダには DB::avg('COLUMN_NAME') という、該当カラムの数値平均を出すための function が事前に定義されています。しかしこの DB::avg() は group by を利用して group 毎の平均値を得ようとすると最初の1グループ目の平均値しか返してくれません。

SQLPHP 弱者なので、中途半端に1グループ目の分だけ正しい値を返してくるのに加えてなんの警告もエラーも、ドキュメント上での言及も無いので「自分がどこか間違っているのでは無いか?」と色々と試して見ましたが、結果として今回のように「Laravel で group by した後 group 毎の集計関数の結果を取得したい」というケースでは以下のように*1書くのが正しいだろう、という所に落ち着きました。

SELECT
 avg(impressions)
 FROM `posts`
 WHERE
 YEARWEEK('2016-09-01',1) <= YEARWEEK(created_time,1)
 AND YEARWEEK('2016-09-30',1) > YEARWEEK(created_time,1)
 GROUP BY YEARWEEK(created_time,1)
 ORDER BY YEARWEEK(created_time,1)
<?php
// YEARWEEK(created_time,1)  をどうにかしろというツッコミは謹んでお受けします。
$firstDateOfPreviousMonthString = date('Y-m-d', strtotime('first day of previous month'));
$lastDateOfPreviousMonthString = date('Y-m-d', strtotime('last day of previous month'));
$impressionAvgs = DB::table("posts")->select(DB::raw('avg(impressions) as value'))->whereRaw('YEARWEEK(:startDate,1) <= YEARWEEK(created_time,1)',['startDate' => $firstDateOfPreviousMonthString])->whereRaw('YEARWEEK(:endDate,1) > YEARWEEK(created_time,1)', ['endDate' => $lastDateOfPreviousMonthString])->groupBy(DB::raw('YEARWEEK(created_time,1)'))->orderBy(DB::raw('YEARWEEK(created_time,1)'))->get();

というように、用意された DB::avg() を使わず select に DB::raw() で直接 avg(impressions) を指定することで該当月の週毎の平均値が配列で返ってくるようになります。DB::whereRaw() は and で纏めてしまっても良かったんですが、分けて書いても勝手に and で繋げてくれるので分けて書いてあります。

*1:テーブル名とか引数の日付は適当です。 YEARWEEK のモードもとりあえず置いておきます。

PHP で先月の月初月末日付を取得する( -1 month に関するどうでもいい話)

業務改善にあたり「先月の数字をほにゃらら」見たいな要件が出たので調べました。

例によってググって見ると、date('Y-m-t', strtotime(date('Y-m-01') . '-1 month'));みたいのが多かったのですが、PHP のドキュメントを読みに行ってみたら「0とか-1とか無くてこっちの方が好みだな」という書き方に辿り着いたので書いておきます。

DateTime で欲しいときは以下

<?php
// 先月初日
new \DateTime('first day of midnight previous month');

// 先月末日
new \DateTime('last day of midnight previous month');

文字列で欲しいときは以下

<?php
// 先月初日
echo date('Y-m-d', strtotime('first day of previous month'));

// 先月末日
echo date('Y-m-d', strtotime('last day of previous month'));

参考:PHP: Relative Formats - Manual

どうでもいい話

PHP のドキュメントでも多少言及されていますが、〜 month 表記を「(進んだ or 戻った)月の同じ日付」という感覚で利用すると基準となる日付次第で問題が発生するケースがあります。「基準日から見て〜ヶ月(前 or 後)の初日や末日が欲しい」という要件に関しては、「基準月の1日を求めてから云々」等の解決方法を結構見かけましたが、そんなにゴニョゴニョしなくても明示的に first day oflast day of を記載する事で該当の問題が発生することを避けることが可能です。

月ごとに日数は異なるので、月末月初に関わらず「来月」という「日」の概念が若干ふんわりしている要件には注意してあたろうと改めて思いました。

<?php
echo date('Y-m-d', strtotime('2016-01-31 next month'));
// 2016-03-02 <- マジかよw

echo date('Y-m-t', strtotime('2016-01-31 next month'));
// 2016-03-31 <- 2月なんてなかった

echo date('Y-m-d', strtotime('2016-01-31 last day of next month'));
// 2016-02-29 <- 欲しかった結果

追伸:ぼくは先月分のデータ引っ張るなら 先月初日 ≦ x < 当月初日 が好きです。

33歳になった。

8月31日に33歳になりました。

変わらず元気ですが、誕生日のちょっと前に

iOS の(社内的な)エキスパートとして働いて居たと思ったら、営業・運用メンバーの業務改善チームに移動になった

という、割とアレな出来事がありました。名刺に刻まれた「あいおーえすあぷりけーしょんえんじにあ」って肩書きが切ないので変えたいです。

業務改善は「会社がデカくなったときとか、属人性に頼った生産性の向上に限界が見えてくると必要になるが、内部の積極的な協力を得るまでそこそこ時間がかかる仕事」というイメージを持っていましたが、まさか自分がやることになるとは思いませんでした。だってぼくが PHP 書くとろくな事にならないし、iOS アプリ以外も書けなくは無いことなんて皆忘れてると思っていたから。

お金稼いだり、残業しないのは好きなので、時間短縮したり経費削減したりする業務改善ってのは相性悪くないだろうし。個人的な目標は「(諸事情で減らしたく無い人も居るかもしれないが)他人の残業時間を減らす」で頑張っていこうと思います。

ということで、家では毎日 Swift 書いているのに会社では毎日コマンドを並べただけのシェルスクリプトPHPSQL を書く生活になりましたが、最後に PHP をちゃんと書いたのはもう数年前のお話。「PHP 7 新機能」とか「PHP フレームワーク オススメ」でググって必死にキャッチアップした次第です。(ちゃんと PHP のドキュメントも読みに行きました、マサカリを投げないで下さい)PHP 久しぶりだけど結構楽しいです。

そんなこんなで仕事も変わったし歳も変わったし、ここは一つブログも変えてポエムでも書こうかなと思い、新しくはてなブログ開設してみました。

追伸:弊社で人を募集しています。興味の有る方はお声がけください。

自社サービス開発エンジニア♦最先端の技術で世の中をあっと驚かせるサービスを♦ | アライドアーキテクツ 株式会社 | IT/Web業界の求人・採用情報に強い転職サイトGreen(グリーン) | 2016/05/09 16:03:30更新 | id:13833