メタラーまとんがハイソにやらかすようです

東大理系修士卒JTBCエンジニアのハイソサイエティ(上流階級)な日常

最近のエンタメ吸収の旅

ども!旅人のまとんです。

最近、新しいものに触れて、自分の世界・知見・アイデアを広げる旅をしています。

具体的には、子供を寝かしつけたあとの晩酌タイム2時間を、だらーっとTwitterで時間を使うのではなく、意識的に新しいエンタメを吸収するようにしています。

とはいえ貧乏サラリーマンなので、無料で見れるAmazon Primeを漁っています。

映画

記憶にございません!

記憶にございません!

記憶にございません!

  • メディア: Prime Video
 

三谷幸喜監督の映画が面白いと言われているので、新しいやつを見てみた。

国会を休んでフィリピンパブに行っちゃう厚生大臣の1シーンがやたらと面白かった。

なんでだろ?と思ってキャストを調べたら、歌舞伎役者の六代目市川男女蔵さんが演じていたようだ。たった1シーンで圧倒的な印象を植え付けてくる歌舞伎役者は、本当にすごいなと思った。

清洲会議

清須会議

清須会議

  • 発売日: 2014/05/14
  • メディア: Prime Video
 

三谷幸喜監督つながりでもう一つ。

学生時代に友達が見て面白いと言っていたので、気になっていた。

戦国時代は世襲制度が当たり前で、「お家」という大前提で話が展開されるが、僕はこの時代に産まれなくてよかったなぁと思った。

現代では「お家」の代わりに「お会社」の資本主義社会だけど、会社にさえ忠誠心が全く無い僕としては、ましてや世襲制度なんて生理的に無理だったなぁと思った。

引っ越し大名

引っ越し大名!

引っ越し大名!

  • 発売日: 2020/04/08
  • メディア: Prime Video
 

戦国つながりで。やたらとキャストが豪華。

戦国時代に実在した大名のエピソードですが、江戸時代は参勤交代という莫大なコストがかかる義務があったうえに、「お国替え」という、家臣全員をまとめた強制引っ越しがあったらしい。

現代でいう「転勤」を会社ぐるみでやらされる地獄のような時代ですが、こんな無茶苦茶な制度下でも日本の江戸時代が260年も安泰だったのは、江戸幕府の圧倒的なガバナンスが日本中に効いていたんだろうなと感じた。すごい。

平民にとっては、中央の指示一つで自分たちの行政機関の中の人がゴッソリ入れ替わる世界、ちょっと今では信じられないですね。

ヒトラー~最後の12日間~

ヒトラー ~最期の12日間~ (字幕版)

ヒトラー ~最期の12日間~ (字幕版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
 

小さい頃に金曜ロードショーかなんかで見た気がしますが、改めて見てみた。

大人になって子供ができてから見ると、もう見てられなかった。

特に、母親が自分の子供に毒を飲ませて殺すシーン、榴弾にあたって子供が即死するシーン、子供が一人で負傷者の中で泣いているシーン(多分親はいない)。

もう見てられない。

子供一人育てるのにどれだけ大変だと思ってるんだ。

もし、自分の子供の命が一瞬で消えてしまったら、僕はもうどうなるか分からない。

ましてや、自分で子供を殺すなんて、無理だ。いや、そのときは仕方なかったのだろう。でも、無理だ。見ていられん。

もし2歳の自分の娘が、僕たち親がいなくなったら、1日も生きていけない。

僕たちは、子供が死ぬ状況だけは作ってはいけない。他の何よりも大事だ。そのために世界を豊かにしているんだ。

子供は、公園で滑り台を滑って、友達と笑って、遊んで、泣いて、それだけでいいんだ。

子供の幸せを守るために僕らは頑張っているんだ。

どの時代に、どの国に、どんな状況で産まれたとしても、子供に罪はない。絶対に。

エヴァの映画3作品(序・破・Q)

ヱヴァンゲリヲン新劇場版:序

ヱヴァンゲリヲン新劇場版:序

  • 発売日: 2007/09/01
  • メディア: Prime Video
 

エヴァが完結したので、過去映画を見返した。

久しぶりに序と破を見ましたが、この頃はまだ学校があったり、みんな優しかったんだなぁ。Qの前後で世界が変わりすぎてて違和感ある。

委員長って、30秒くらいしか出演していなかったんですね。

アニメ版も見返したくなったのですが、Amazon Primeで見れなかった。いつか配信してくれるかな。

娘と一緒に見た映画

皇帝ペンギン ただいま

皇帝ペンギン ただいま(吹替版)

皇帝ペンギン ただいま(吹替版)

  • 発売日: 2019/02/02
  • メディア: Prime Video
 

長女は海の生き物が好きなので、Amazon Primeで映像を漁っていたら見つけた、ドキュメンタリー映画

めちゃくちゃハイクオリティで、僕が見入ってしまった。

子供としても、とにかく画面内にずっとコウテイペンギンがいるので楽しめる。

コウテイペンギンがいかに特殊な環境で、特殊な生き方をしているのかがよく分かった。

特に、母親が卵を産んだ後に、卵を父親に預けるのだが、母親が卵を冷たい地表に置き、父親が足でなんとか卵を持ち上げる。この持ち上げに数十秒以上かかってしまうと、卵は寒さで死んでしまう。

卵を母→父に手渡すだけで生きるか死ぬかをやっているペンギン、不器用すぎぃ!手を使えない鳥は大変だ。

ファインディング・ニモ

ファインディング・ニモ (吹替版)

ファインディング・ニモ (吹替版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
 

久しぶりにニモを見た。長女が好きな熱帯の魚がたくさん出てくるので、めちゃくちゃ楽しい。

僕はニモの父親のマーリンの気分で見てしまう。

子供の可能性を親がつぶしてはならない。子供を信じて、子供の自由にさせるのも親の務めだ。

ていうかマーリン、シングルファザーで、よくニモをここまで育てたなぁ・・・それだけで感動だよ。

SING

SING/シング【通常版】(吹替版)

SING/シング【通常版】(吹替版)

  • 発売日: 2017/06/02
  • メディア: Prime Video
 

世界の名曲を歌ってくれる、CG映画。

登場人物が全員動物なので、動物好きの長女は大喜び。

僕としても、世界の名曲が楽しめるのでとても良かった。

テイラー・スウィフトのShake it allで、0歳の次女がノリノリになっていたのが印象的だった。名曲は、子供にとっても本質的にアガるものがあるのだろうか。

ペット

ペット (吹替版)

ペット (吹替版)

  • 発売日: 2016/10/20
  • メディア: Prime Video
 

ニューヨークに住むペットの物語。CG映画。

犬もウサギもかわいいので長女は大満足。ダーウィンが来た!でユキウサギ好きになっている長女は、白いウサギで嬉しそう。

ニューヨークの街並みが良い感じですね。

ブルックリンからブルックリン橋を見上げるシーンは「左利きのエレン」でも出てきた場面でした。ここ、有名な場所なのだろうか。

 

以上、メタラーまとんが最近見た映画のまとめでした。

ではでは。

 

電車の戸棚にリュックサックを置き忘れてしまった話

f:id:highso:20210515211702p:plain

ども!育児ブロガーのまとんです。

今回、電車の戸棚にリュックサックを置き忘れてしまうという醜態を晒してしまった話を書きます。

その日の予定

とある休日のこと。

嫁は健康診断で病院に行っており、僕は娘二人を連れて、先に親戚の家に電車で向かうことにしました。嫁とは親戚の家で合流する予定です。

 

僕の持ち物は、リュックサックと、ベビーカー(長女2歳)、抱っこ紐(次女0歳)です。
普段、子供と出かけるときのカバンは、ベビーカーに取り付けられるトートバッグなど選択しています。しかしこの日は、転職エージェントとの電話面談を控えていたので、ノートパソコンを入れられる仕事用のリュックサックを選択していました。

リュックサックの中には、パソコンの他に、財布、モバイルバッテリー、オムツ等が入っていました。

一般に「カバンが二つあるときは置き忘れしやすい」と言われています。

今回はリュックとベビーカーの二個持ちだったので、危険ポテンシャルは高かったと言えます。

置き忘れに気が付くまで

娘二人を連れて、JRの電車に乗りました。

車内では、リュックサックを戸棚に置きました。

車内は休日の昼で空いていたので、隣の座席にリュックを置いても良かったのですが、「荷物で座席を確保するのはマナー違反」という良心が働いてしまって、戸棚に置いてしまいました。これが間違いだった。

電車内では、長女とお歌を歌ったり、手遊びをしたりしていました。

 

乗り換えがあったので、ベビーカーを押して降りて、乗り換え先の電車へ。

電車に乗って、さっきと同じように荷物を戸棚に置こうと思ったところで、肩にリュックを担いでおらず、電車に置き忘れてしまったことに気が付きました。

 

いつも仕事のときは、電車を降りるときにリュックが無いと「なんか肩が軽いなぁ」と違和感を感じて気が付きます。

しかし、この日は抱っこ紐で次女(数kg)を抱えていたため、肩に違和感を感じなくて、乗り換えの際に気が付かなかったのだと思います。

気が付いてからの一次対応

リュックが無いことに気が付いて、気が動転しました。

まず考えたことは三つです。

 

(1)リュックの中に何が入っていた?高価なものではノートパソコンです。昨年12月に約10万で購入したばかりの愛機です。失いたくない。次に財布。クレジットカードがたっぷり入っています。あろうことか、会社から支給されたコーポレートカードも入っていました。もしコーポレートカードを悪用されたら、会社にバレることになる。まず電話でコーポレートカードの利用停止をするべきではないか?

 

(2)今自分は何を持っているか?持っているのは、スマホだけでした。しかも充電が25%。モバイルバッテリーも無い。充電が切れたら、改札から外に出ることもできない。嫁や親戚に連絡することもできなくなるし、バスやタクシーにも乗れなくなる。幸いにしてモバイルSuicaに1.5万円チャージされていたので、充電が切れる前にコンビニに行けば、モバイルバッテリーが買える。

 

(3)子供を連れている。まだ子供には何も実害が起きていないが、気が動転しているので、二次災害を避けねばならない。例えば、パニックになり、ベビーカーを電車内にさらに置き忘れるとか、ベビーカーを駅のホームから転落させるといった最悪の事態は避けねばならない。

 

以上を総合的に判断して、一次対応として、「まず子供の安全確保が最優先」と判断しました。荷物を探すのはその後です。

子供の安全確保のために、まずは親戚の家まで到達してしまって、親戚に子供を預けてから、荷物捜索をしようと考えました。

そのためには最低限、スマホのバッテリーが必要です。もし、バッテリーが25%から急激に下がって切れたら、陸の孤島に取り残されることになる。

実際、東京という大ジャングルの中に裸で取り残されたような感覚を味わいました。

 

最初の行動として、乗り換え先の電車から降りました。

駅の改札へ行き、落とし物が届いていないか駅員に確認しましたが、まだ届いていないようです。

冷静に、改札から出て、駅のコンビニでスマホモバイルSuicaを使って、モバイルバッテリーを買いました。(2500円!痛い出費!)

とりあえずこれでスマホの充電が確保できたので、陸の孤島と化すことは避けられました。スマホモバイルSuicaApple Pay)さえあれば、東京では自由に行動できます。

 

それから、落ち着いて、嫁にLINEで状況説明。

幸いなことに、嫁の健康診断が早く終わったと連絡がきました。

親戚の家に向かうよりも、健康診断の病院の方が近かったため、病院のある駅へ向かいました。

健康診断のために前日からご飯を食べられなくて辛い思いをしていた嫁は、やっと解放されて、さぁご飯を食べられるぞ!というときに、僕からのアホな連絡を受けて、さぞかし幻滅したことでしょう。。。

なんとか嫁と合流し、子供らを嫁に託して、嫁が持っていた大容量モバイルバッテリーも受け取って、僕は身軽になって、リュックの捜索に取り掛かりました。

リュックサック捜索の旅

改めて駅の落とし物窓口で問い合わせますが、僕のリュックは届けられていないようです。

ここで、JRの落とし物管理について説明します(僕もこの日に理解しました)。

 

・荷物を駅員が発見したり、乗客が届けてくれると、「落とし物管理センター(正式名称は違うかも)」に登録される

・駅の窓口で落としものを尋ねると、駅員は、落とし物管理センターに電話し、荷物の特徴を伝える。センターでは、登録されたデータベースで照合してくれる。

・もしデータベースに登録されていれば、そのセンターまで自分で取りに行くことになる。

・データベースに登録されていない場合には、落とし物管理センターの電話番号が書かれた紙を渡されて、「また後で自分で電話して聞いてみてください」と言われて駅員の対応は終了する。

・荷物を置き忘れた車両を特定していたとしても、その車両に直接荷物を探しに行ってもらうような対応はできない。

 

センターに届いていないということは、考えられる状況は

(1)まだ車両の戸棚にリュックサックが置いてある

(2)誰かが持ち去ってしまった(盗難)

のどちらかです。

(2)の場合にはどうしようもありませんが、(1)だと考えて捜索することにします。

リュックを置き忘れた電車は特定しているので、その電車にもう一度乗って、自分で荷物を確保する方針を立てました。

 

僕が乗っていた電車は、JRの路線を終点まで行って、折り返して反対側の終点まで行って、の往復を繰り返して、夜に車庫に入る電車です。

もし、僕が捜索を放棄したならば、夜まで電車は走り続けて、車庫に入った時点で駅員が落とし物チェックする際に発見されて、落とし物センターに届けられるのだと思います。それまでに盗難されなければ。

夜まで盗難されないことを願って待つのは心臓に悪いので、一早く荷物を確保することを考えます。

 

そのために必要なのは、「自分が乗っていた電車が、終点で折り返して、何時に戻ってくるか」です。

駅員に確認したところ、いわゆる列車ダイヤグラムを確認し、僕が乗っていた車両が折り返す時刻を教えてくれました。

news.mynavi.jp

紙のダイヤ表なんて、電子化された現代ではほとんど使うことが無いと思うのですが、駅員はサッと確認してすぐに教えてくれました。

JR駅員の社員教育のすばらしさを垣間見ました。

 

それで、リュックがある電車が返ってくる時刻が分かったので、あとはひたすら待ちます。

返ってくるまでに1.5時間ほど時間があったので、その間に他の対応をしました。

 

(1)会社のクレジットカードの利用停止をしました。スマホで調べて24時間対応窓口に問い合わせると、簡単に停止と再発行の手続きができました。

カード番号も控えていなかったのですが、電話窓口では、氏名と生年月日と住所等だけで、僕がコーポレートカードを使っている人だと認証してくれました。

こういう電話窓口にしては珍しく、電話で待たされることなく、すぐにつながりました。緊急電話窓口の対応のすばらしさに、脱帽です

 

(2)会社の上司に電話で連絡しました。もし何か大問題に発展してしまったときに、全て事後報告になるのはマズイと思って、とりあえず連絡した事実を残しました。上司からは「会社のクレジットカードは保証が効くから大丈夫。それより私用のカードを心配するとよい。そもそも、財布が無いと困るので、落ち着いて対応してください。」と言ってもらえました。

 

(3)今日のここまでの状況をスマホでメモしました。仮に大問題に発展したら、時系列が求められるかもしれないので、先に書いておこうと思ったのと、多分このことをブログに書くと思ったので、メモしました。

 

そして、運命の電車がやってきました。

だいたい7号車ぐらいで置き忘れたと特定できていたので、まず、9号車に飛び乗りました。

9号車には無かったです。

座席は優先席だったので、号車を移動したら、すぐ右上の戸棚にあるはずです。

 

8号車に移動しました。右上の戸棚を見ますが、ありませんでした。

まぁ、本命は7号車です。8号車には無いと思っていました。

 

 

そして、本命の7号車に移動して、右上を見上げました。

そこには空の戸棚がありました。

 

 

 

 

このとき、僕は自分の心臓が飛び起きるのを感じました。

一気に血の気が引きました。

え?どういうこと?マジで盗難されちゃったの?嘘でしょ?


呼吸が乱れ、汗が吹き出し、フラフラしながら7号車の中を歩いて移動して、一縷の望みにかけて、6号車に移動しました。

 

 

 

6号車に入って右上を眺めると、そこには僕のリュックサックがありました。

 

 

あ、お、あ、あ、あ、ああああああああ!!!!

と心の中で叫びながら、リュックを取り、中を確認。

財布はあり、現金も残っていて、特に誰かに触られた形跡はありませんでした。

僕は、きっと、めちゃくちゃ安堵した顔をしていたのでしょう。

前に座っていたお爺さんに、「置き忘れたの?見つかってよかったねぇ」と声をかけてもらいました。

 

お爺さんは多分、電車にのると、戸棚の上に誰のものでもなさそうな荷物がポツンと置いてあって、置き忘れかなぁと思っていたのでしょう。

そこに、神妙な顔をした男が途中で乗ってきて、おもむろに荷物を取って、中身を確認し、安堵の顔浮かべている。お爺さんも一瞬で状況を理解してくれたのでしょう。

嫁の失望 ~僕の威厳 has gone~

とりあえず色々ありましたが、万事解決です。

嫁に連絡し、LINEスタンプなど送って、余裕の構えを見せました。

 

しかし、嫁はもう僕に完全に失望していました。

 

僕はめちゃくちゃドジで、忘れ物やド忘れが多く、「あんたそんなんで仕事できるの?」と心配されているのですが、今回はガチでやらかしてしまった。

これでもし、置き忘れたのがリュックサックではなくベビーカーだったら・・・。想像するだけで恐ろしい。

 

この日、我が家には「嫁がいないときに子供二人を連れて電車に乗ることはしない」という家族ルールが設けられ、僕の威厳は完全に消失しました。

今回のケースは完全に僕が悪いし、真摯に受け止めようと思います。。。

 

以上、メタラーまとんの「ベビーカーを押しているときに荷物を戸棚に置くのは絶対ダメ!!」という教訓でした。

育児世代の皆様、よろしくご査収お願いいたします。

 

ではでは。

 

リュックの中に入っていたパソコン

highso.hatenablog.com

育児関連記事

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

 

レアカード価格をmplfinanceで週足グラフにしてS3に保存するLambda関数(DynamoDB Streamトリガー)

ども!AWS認定ソリューションアーキテクトアソシエイトのまとんです。

「レアカード売り時お知らせ君」の続きを作ったので記事にします。

TL; DR

前回までに作ったところ

  • DynamoDBにレアカード価格の時系列データが保存してある
  • Lambdaで1日に1回、最新のカード価格を追加する

この記事で作ったところ

  • DynamoDBの更新をトリガー(DynamoDB Stream)にしてLambdaを起動
  • 株などのローソク足を描画するPythonライブラリmplfinanceを使って、レアカード価格の日推移と週足をプロット
  • プロットした画像をS3に保存し、S3の静的ウェブサイトホスティングで公開

以下のようなグラフを作ってweb公開しました。

f:id:highso:20210504230619j:image

「レアカード売り時お知らせ君」とは?

カードゲームユーザーの永遠の悩み「レアカードをいつ売ればいいか分からない!!」を解決するために作っているアプリです。

自分が持っているカードの値段が高騰したら、「今が売り時だ!売れーー!!」と教えてくれるロボットを作ります。

具体的には、以下のようなロボットを作ります。

  • 自分が持っているレアカードを、事前に登録しておく
  • 1日に1回、レアカードの価格をwebで調査
  • 価格が急激に上がったカードがあれば、LINEで「売れーー!!」と通知してくれる

詳細は以下を参照。

highso.hatenablog.com

アーキテクチャ

当初に考えていたアーキテクチャ、および前回の記事で作ったところは以下の図の通りです。

f:id:highso:20210504224306p:plain

前回の記事では、Wisdom Guild様からスクレイピングで価格を1日1回取得し、DynamoDBに記録するところを作りました。UIのLINEボット部分はまだできていません。

今回の記事では、当初の計画から少し機能を増やして、以下の部分を作りました。

f:id:highso:20210504225803p:plain

DynamoDBの更新をトリガーにしてLambdaを起動し、価格のプロット(日推移、週足)を作って画像をS3に保存し、S3の静的ウェブサイトホスティングを使ってウェブ公開します。

アーキテクチャを変更した理由は以下の通りです。

  • LINEbotは以前に別の作品で作ったことがあったので、新しく学ぶことがないためモチベーションが沸かない
  • S3でウェブ公開して「みんなから見れる状態」にする方が楽しいと思った
  • 未経験のAWSサービスを使ってみたかった(DynamoDB Stream、S3の静的ホスティング
  • 個人投資家としてローソク足を描画できるPythonライブラリ「mplfinance」を使ってみたかった

毎日株価をチェックしているので、ローソク足を作れるとテンション上がります!!

GitHub

LambdaにデプロイするコードはGitHubに公開してあります。

github.com

ただし、サーバーレスアプリはコードだけでは動かないので、AWS上であれこれ操作する手順について解説します。

アーキテクチャの構築も含めて、SAM(Serverless Application Model)という仕組みを使えば自動化できるようなので、今後はSAMにもトライしてみた思っています。

AWS構築手順

概略すると以下のことをします。

  • DynamoDBとS3バケットを用意
  • Lambda関数に権限を与えるIAMポリシーの作成
  • Lambda関数のデプロイ

DynamoDB(前回の記事で作成)

オレゴンリージョンにテーブル名「SellTimeRemainder」で、1日1回、カード価格が追加されるテーブルを、前回の記事で作っています。

f:id:highso:20210504232436p:plain

f:id:highso:20210504232440p:plain

プライマリーキーをCard(カードの日本語名)とし、URLにスクレイピング先のURLを記載しています。URLの最後にカードの英語略称が付いています(Wisdom Guild様の仕様)。

Pricesに、日付(YYYY-MM-DD)をkey、カード価格(int)をvalueでひたすら追加しています。
作成手順の詳細は前回の記事を参照ください。

highso.hatenablog.com

静的ウェブサイトホスティング用S3バケットの作成

S3バケットは、アクセスする人(主にTwitterのフォロワーを想定)の日本在住率が高いことを想定し、東京リージョンに作成。

バケット名は「highso.com」。念願のハイソドットコムです。

「S3 静的ホスティング」でググって、一般的な方法でホスティングを有効化。

デフォルトのindex.htmlに、「http://highso.com.s3-website-ap-northeast-1.amazonaws.com/」でアクセスできるようになります。

DynamoDBストリームの設定

DynamoDBのテーブル「SellTimeRemainder」を選択→エクスポートおよびストリーム→有効化

表示タイプ「新しいイメージ」を選択。他には「キーだけ」や「新旧イメージ」などがあり、Lambdaに渡されるeventの中身が変わります。

今回は、新規価格を登録後の新しいイメージの情報があれば十分なので、「新しいイメージ」にしました。

設定後にトリガー作成を促されますが、後でLambda関数を作るところで設定するので、とりあえずここではトリガーを作成しなくてOKです。

有効化が完了すると、以下のように確認できます。

f:id:highso:20210504233527p:plain

IAM設定

Lambda関数に付与するIAMロールを作ります。

セキュリティを高めるためには闇雲に権限を与えるのは避けるべきなので、必要最小限の権限を付与します。

Lambdaに与える権限は(1)DynamoDB Streamを読み出しできる、(2)S3に書き出しできる、(3)Lambdaの一般的な権限、の3つです。

(1)と(2)のポリシーは自作します。

IAMポリシー1:DynamoDB読み出しポリシー作成

IAMのポリシーを開き、ポリシーの作成→ビジュアルエディタに次のように入力します。

・サービスの選択: DynamoDB

・アクション(DynamoDB Streamを受けるためには次の4個が必要)

  - GetShardIterator

  - GetRecords

  - ListStream

  - DescribeStream

・リソース: ARN arn:aws:dynamodb:us-west-2:<AWSアカウントID>:table/SellTimeRemainder/stream/*
・ポリシー名: SellTImeRemainder_DynamoDBStream

JSONでは以下のようになります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:<AWSアカウントID>:table/SellTimeRemainder/stream/*"
        }
    ]
}
IAMポリシー2:S3書き出しポリシー作成

ポリシーの作成→ビジュアルエディタに次のように入力

・サービスの選択: DynamoDB

・アクション: PutObject (ファイルをアップロードするだけならこれで十分)

・リソース:

  - Bucket name: highso.com

  - Object name: すべて

・ポリシー名: SellTimeRemainder_PutToS3

JSONにすると以下のようになります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::highso.com/*"
        }
    ]
}

S3バケットはリージョンによらずグローバルに一意なので、リージョン情報は含まれていないことが分かります。

IAMロール:Lambda用ロール作成

ロールの作成

ユースケースの選択: Lambda

・ポリシーのアタッチ:

  - SellTimeRemainder_DynamoDBStream

  - SellTimeRemainder_PutToS3

  - AWSLambdaBasicExecutionRole (Lambda用の基本的なロール)

・ロール名: SellTimeRemainder_CreatePlotToS3

f:id:highso:20210504234901p:plain

「信頼関係」タブの「信頼されたエンティティ」には「ID プロバイダー lambda.amazonaws.com」が書かれているはずです。これで、LambdaがこのIAMロールを使用することができます。

Lambda関数作成

関数の作成

Lambda関数を新規作成

・関数名: SellTimeRemainder_CreatePlotToS3

・ランタイム: Python3.8

・実行ロール: SellTimeRemainder_CreatePlotToS3

・再試行: 10回

ここでくせものは「再試行」です。デフォルトの-1設定だと、lambdaがエラーになったときに無限に繰り返されてしまう可能性があります。(要検証)

実際、LambdaがPythonのエラーでエラー終了した際、約10秒ごとにLambdaが繰り返し起動されてしまっていました。

12時から繰り返し起動が始まって、15時頃に気が付いたので約3時間程度に止められましたが、もし気が付かず放置しておいたら、いかに安いLambdaとはいえ、従量課金の料金が膨らんでいたでしょう。危なかった。

「-1」設定が最大何回なのか分からないので、さしあたり10回にしておきました。

トリガーとタイムアウトの設定

トリガーの追加

・トリガー: DynamoDB

・DynamoDBテーブル: SellTimeRemainder

・バッチサイズ: 100(デフォルト)

設定→一般設定→編集

タイムアウト: 20秒

今回のコードは実行時間が平均8秒ほどかかりました。デフォルトの3秒ではタイムアウトしてしまうので、余裕をもって20秒にしました。

具体的には、Pythonのライブラリのローディング(pandas, mplfinanceなど)に1秒ほど、週足を計算するサブルーチンに1秒ほど、図の描画とS3アップロードに3秒ほどかかっているようです。

タイムアウトはもっと長くしてもよいですが、仮に何かしらの無限ループに入ってしまった場合、タイムアウトまで従量課金され続けてしまうのが怖いです。バランスをとって、20秒としました。

コードとライブラリをまとめたzipの作成

まず、上記のGitHubのコードをcloneします。

AWS LambdaではPythonライブラリごとzipで固めてアップロードする必要があります。

僕はWindows10を使用しており、wsl2でUbuntuを走らせて開発しています。wsl2の環境構築についてはこちらの記事で解説しています。

highso.hatenablog.com

Pythonライブラリ(mplfinanceとその依存ライブラリ群)は、再配布とならないようにGitHubにはアップロードしていません。なので、pipでダウンロードをお願いします。

pipでコードと同じディレクトリにインストール(pipで -t ./ オプションをつける)

$ git clone https://github.com/maton456/SellTimeRemainder.git
$ cd SellTimeRemainder
$ cd SellTimeRemainder_CreatePlotToS3 $ pip3 install -U pip $ pip3 install mplfinance -t ./

pipでダウンロードされる「*.dist-info」は不要なので削除

$ rm *.dist-info -r

ディレクトリごとzipで固める

$ sudo apt install zip
$ zip -r SellTimeRemainder_CreatePlotToS3.zip ./*

WSLを使っている場合は、zipをWSL環境からWindows環境(デスクトップ)にコピーするためには以下のコマンドを実行します

$ cp SellTimeRemainder_CreatePlotToS3.zip /mnt/c/Users/<Windowsユーザー名>/Desktop/

これでデプロイ用のzipの準備が整いました。

f:id:highso:20210505001232p:plain

Lambdaにデプロイ

Pythonライブラリ(特にnumpyとpandas)を含めるとzipは40MB程度に肥大化してしまいました。

10MBを超えるzipのデプロイは、S3を経由する必要があります。

Lambdaデプロイ用のバケットを作ります。

・リージョン: us-west-2

バケット名: lambda-zip-maton

webコンソールでS3を開いて、作成したzipをアップロードします。

アップロードしたzipオブジェクトを開き、オブジェクトURLをコピー。

Lambdaを開いて、「アップロード元」→「Amazon S3」を選び、オブジェクトURLを指定してアップロードします。

これでデプロイは完了です。

ソースコード解説

AWS環境構築さえちゃんとできていれば、コードは難しいことはしていませんが、いちおう解説します。

コードは全てlambda_function.pyに書いてあります。

DynamoDB Streamで受け取るevent

DynamoDBで何かしら更新が入ると、lambda_handlerのeventに以下のようなものが渡されてLambdaが起動します。eventはfor inでイテレーションできます。

これは更新したレコードが1個だけの場合で、仮に同時に複数のレコードが更新されたら、Recordsのリストに複数レコードが入ると思います。

    event = {
        "Records": [
            {
                "eventID""37428e30b8ad25bf68eecbdb6e959172",
                "eventName""MODIFY",
                "eventVersion""1.1",
                "eventSource""aws:dynamodb",
                "awsRegion""us-west-2",
                "dynamodb": {
                    "ApproximateCreationDateTime"1619967393,
                    "Keys": {
                        "Owner": {
                            "S""まとん"
                        },
                        "Card": {
                            "S""草むした墓"
                        }
                    },
                    "NewImage": {
                        "Prices": {
                            "M": {
                                "2021-03-10": {
                                    "N""1171"
                                },
                                "2021-03-09": {
                                    "N""1167"
                                },
                                "2021-03-08": {
                                    "N""1164"
                                },
                                "2021-03-07": {
                                    "N""1162"
                                },
                                "2021-03-06": {
                                    "N""1207"
                                }
                            }
                        },
                        "Owner": {
                            "S""まとん"
                        },
                        "URL": {
                            "S""http://wonder.wisdom-guild.net/price/Overgrown+Tomb/"
                        },
                        "Card": {
                            "S""草むした墓"
                        }
                    },
                    "SequenceNumber""462680900000000009038765128",
                    "SizeBytes"1642,
                    "StreamViewType""NEW_IMAGE"
                },
                "eventSourceARN""arn:aws:dynamodb:us-west-2:000000000000:table/SellTimeRemainder/stream/2021-05-02T14:55:28.113"
            }
        ]
    }
 

DynamoDB Streamでは、「レコードの変更された箇所だけ」が渡されるわけではなく、「変更されたレコードの全体」が渡されるようです。

なので、レコードが巨大になったら、1回あたりのLambda起動が重くなると思います。(今回のシステムは1日1key追加の仕組みなので、せいぜい1年で365keyだし、数年間は問題ない・・・だろうと想定)
この中から、必要な値だけを抽出して、リストに入れていきます。

    for record in event['Records']:
        if record['eventName'] != "MODIFY":
            print('This record is not MODIFY event.')
            continue
        card_name = record['dynamodb']['NewImage']['URL']['S'].split('/')[-2]
        print('card_name: ' + card_name)
        prices_dict = record['dynamodb']['NewImage']['Prices']['M']
        #print('prices_dict: ', prices_dict)

        date_list = 
        price_list = 
        for key, value in prices_dict.items():
            date_list.append(key)
            price_list.append(int(value['N']))
        #print('date_list: ', date_list)
        #print('price_list: ', price_list)
        
        # Sort with date_list
        tmp_zip = zip(date_list, price_list)
        tmp_zip_sorted = sorted(tmp_zip, key=lambda x: x[0])
        #print('tmp_zip_sorted: ', tmp_zip_sorted)
        date_list_sorted, price_list_sorted = zip(*tmp_zip_sorted)

eventの中の日付データは順番がめちゃくちゃになっているので、sorted()を使って日付でソートしています。

mplfinanceでグラフの描画

mplfinanceは、DataFrameをちゃんと作ることが大事です。

DataFrameのカラム名でdate(datetime形式の日付)、Open, High, Low, Close(ローソク足の4要素)、およびVolume(取引高)を作っておきます。出来高をプロットしない場合、Volumeはダミー値でもOKです。

dateをindexに指定し(大事)、dateでソートして日付順に並び変えておきます。

Open, High, Low, CloseはintのリストでOKです。

日足を作るなら日ごとに、週足を作るなら週ごとのデータをappendしたリストにします。もちろん全てのカラムの要素数は同じにします。

 
import datetime
import pandas as pd
 
time_sr = pd.Series(date_list_sorted) # str日付のリスト, YYYY-MM-DD形式
time_sr2 = pd.to_datetime(time_sr, format='%Y-%m-%d')
df = pd.DataFrame({'date': time_sr2,
                   'Open': <Open値のリスト>,
                'High': <High値のリスト>,
                   'Low': <Low値のリスト>,
                   'Close': <Close値のリスト>,
                   'Volume': <Volume値のリスト>,
                   })
df = df.set_index('date')
df = df.sort_index()

DataFrameさえ用意できれば、mplfinanceで良い感じにプロットできます。

import mplfinance as mpf
 
mpf.plot(df, type='candle'mav=(525),
    show_nontrading=True,
    datetime_format='%Y/%m/%d',
    title=card_name,
    savefig=save_filename
)

・type=candleでローソク足表示になります。

(lineだと線グラフになります。今回はデータの最小時間分解能が日なので、日足を描画するためにはローソク足の4要素の情報が足りないため、lineにしました。)

・mav=(5, 25)で、5日(週)、25日(週)平均線が描画されます。

・show_nontrading=Trueで、データが無い区間(例えば土日で取引所が開いていない日など)を、省略せずに表示します。通常の日足グラフでは省略することが多いですが、今回はサーバーレスのシステムがダウンしてデータが欠損することも考慮して、省略しないようにしました。

・datetime_formatは、x軸のフォーマットです。デフォルトでは月が英語表示で少し違和感があったので変更しました。

・title=<str>で図の上部にタイトルを表示できます。

・savefigオプションでpathを指定すると画像が保存されます。

LambdaからS3への画像アップロード

S3へのアップロードは、boto3を使って「ロカールのファイルをアップロード」するのが簡単です。

しかし、Lambdaはインラインメモリの仕組みなので、「ローカルに保存」という概念がありません。

とはいえ抜け道はあって、Lambdaは「/tmp/」ディレクトリという一時保存できるフォルダが用意されています。

なので、(1)mplfinanceで/tmp/にpngを保存、(2)boto3でS3にアップロード、(3)/tmp/内部をクリア、という手順にします。

(3)が必要な理由は、/tmp/フォルダ内のデータは残るため、次回のLambda起動時に同じファイル名で上書き保存すると、パーミッションエラーとなるためです。Lambdaは起動ごとに、実行ユーザーが変わったり、変わらなったりするようです。なので、毎回/tmp/内部をクリアしておくのが無難です。

これを加味すると、mplfinanceの保存も含めて、以下のようにすればよいでしょう。

import boto3
import glob
import os
    
# Plot and save in local
card_name = 'Overgrown+Tomb'
save_dir = '/tmp/weekly_'
save_filename = save_dir + card_name + '.png'
mpf.plot(df, type='candle'mav=(525),
    show_nontrading=True,
    datetime_format='%Y/%m/%d',
    title=card_name,
    savefig=save_filename
)
print('Save in temporary local dir: ' + save_filename)

# Upload to S3
S3_bucket_name = 'highso.com'
s3 = boto3.resource('s3')
save_object_path = save_filename.replace(save_dir, 'png/weekly/')
s3.Bucket(S3_bucket_name).upload_file(save_filename, save_object_path)
print('Upload to S3 bucket: ' + S3_bucket_name + ', path: ' + save_object_path)

動作確認

DynamoDBを開き、試しに1レコードを手動で更新してみると、S3バケット「highso.com」のpng/dairy/フォルダとpng/weekly/フォルダ以下に画像がpngで保存されます。

f:id:highso:20210505002231p:plain

highso.comのindex.htmlで、これらの画像を表示するhtmlをてきとうに書いておきます。

S3の静的ホスティングのURL「http://highso.com.s3-website-ap-northeast-1.amazonaws.com/」で、以下のように表示されました!

f:id:highso:20210504230619j:plain

感想

サーバーレスでシステムを組むのは、AWSサービスの仕様を勉強しながら進めることになるので大変です。

一方で、一旦動くようになってしまえば、あとは放置しておいても(ほとんどお金もかからず)安定稼働するのが嬉しいです。

IAMの権限設定は、これまで色々やってきた経験のおかげで、ようやく慣れてきた感があります。

あとは、ウェブサイトのCSSデザインをなんとかしないとなぁ・・・。本業がIoT屋なので、サーバーサイドの開発ばかり好きで、フロントエンドは苦手です。

 

以上、メタラーまとんでした。

ではでは。

レアカード売り時お知らせ君の記事一覧

1. 「レアカード売り時お知らせ君」をクラウドモダンアーキテクチャで作った!AWS Lambda, DynamoDB, EventBridge

2. レアカード価格をmplfinanceで週足グラフにしてS3に保存するLambda関数(DynamoDB Streamトリガー)

過去のエンジニア作品

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

【ハイソ旅行】六本木グランドハイアットでヒルズ族を味わってきた!

ども!ハイソブロガーのまとんです。都内ハイソ小旅行が趣味です。

子供の知育のためには、幼少期に色んな場所に行き、見て、触れて、感じて、脳のシナプスを刺激することが大事だと思っています。

子供の貴重な幼児期に脳の成長を促すため、今回は六本木のグランドハイアットに泊まってきました!

グランドハイアット東京

f:id:highso:20210502143947j:image

グランドハイアットは、六本木ヒルズの中に位置するハイアット系列のホテルです。

ハイアット系列のホテルはランク別に名前がついていて、主要なものは上から「パークハイアット、アンダーズ、グランドハイアットハイアットリージェンシー、・・・」となっているそうです。

グランドハイアットは文句なしの高級ホテルです。

写真のグランドハイアットの後ろに映っているのは、有名な六本木ヒルズ森タワーです。

森タワーにはGoogle日本法人が入っていましたが、「出張で日本に来る人がハイアットに泊まれるとラッキー」だったと中の人が言っていました。

f:id:highso:20210502143954j:image

エントランスのオブジェ。

六本木は芸術の街でもあり、街の中でもそこかしこに芸術作品(パブリックアートが飾られています。

お部屋(ツインルーム)

今回の予約の詳細は下記。

  • ツインルーム(禁煙)
  • 42平米
  • セミダブルベッド 2台(120cm x 204cm))
  • 大人2人、幼児(布団不要)2人
  • 朝食なし
  • 一泊
  • 税込34408円
  • 楽天株主優待の1500円分使用(楽天トラベルクーポン1000円、楽天キャッシュ500円)
  • 楽天ポイント6%付与(2004ポイント付与)

16階のお部屋でした。ベビーベッドの在庫があったようで、お借りしました。

f:id:highso:20210502143951j:image

お部屋はこんな感じ。ゆったりしていて良い感じです。

ベッドの上に置いてある赤い紙袋は子供用のアメニティでした。フロントで子供の年齢(2歳と0歳)を確認されたのですが、年齢に沿ったアメニティ(歯ブラシ、スリッパ、コマなど)を用意してもらえました。

f:id:highso:20210502144017j:image

この部屋は水回りの間取りが素晴らしかったです。

ベッドから見えるところに洗面台、トイレ、バスルームがあります。

子連れだと、常に子供の居場所を確認したいので、水回りとベッドスペースが一体化している間取りは大変助かりました。

f:id:highso:20210502143938j:image

バスルームは大変広くて素晴らしい!

今まで泊まってきたホテルの中では最上級に広い浴槽でした。

特に、体を洗うところが広々していて、バシャバシャやっても部屋に水が漏れなくなっており、良かったです。

外資系ホテルでは、体を洗うところが無かったり、あっても排水機構が微妙で部屋がビショビショになるところが多いです。

「日本人だから」ではなくて「育児世代」にとっては、子供の体を洗うところは必須だと思います

今まで色んなホテルに泊まってきましたが、バスルームの良し悪しは「広さ」が一番重要だと感じます。

バスルームからの景色の良さをウリにする「ビューバス」のお部屋が最近は多いですが、「景色が良くても狭いバスルーム」の満足度は低かったです。

また、バスルームの防音がしっかりしているのも良かったです。

子供を寝かしつけた後に、子供を起こさないように、静かにお風呂に入り直すことができました。

f:id:highso:20210502143957j:image

素敵なミニバー。小さいながらも必要なものが全て揃っていました。

特に、お茶を飲むポットと、湯飲みがオシャレで素敵でした。

さらに、独特のサービスとして、18時~21時の間にお掃除のルームサービスを行ってくれました。

ルームサービスでは、無料の水を補充したり、お茶やコーヒーを補充したり、湯飲みを洗ったり、ごみ箱のゴミを回収したり、洗面台を洗ったりしてくれました。

今まで泊まったホテルの中で、夜の時間帯に部屋の中に入ってくるルームサービスを受けたのは初めてでした。ハイソホテルでは普通なのだろうか?

部屋に来る時間帯はチェックインの時に確認してくれました。「お子さんが寝る前の方が良いので、18時の早い時間でいかがでしょうか」と気遣ってくれて助かりました。

f:id:highso:20210502143930j:image

さらに、おむつ用のゴミ箱も用意してくれたのは大変助かりました。

子供が二人もいると、一晩でオムツゴミの体積がすごいことになります。

普段は、いちおうビニール袋に入れてゴミ箱に捨てていましたが、ちょっと心苦しかったです。オムツゴミ箱があれば安心してオムツを捨てられます。

オムツゴミ箱の中身も、18時のルームサービスで回収してくれたので、非常に快適に過ごすことができました。

朝の六本木散策でヒルズ族気分を満喫するぞ!!

f:id:highso:20210502143942j:image

さて、せっかく六本木で目覚めたので、六本木の朝散歩に繰り出しました。

お部屋の窓から見えるのは、左が森タワー、奥に見えるのが東京タワー、右は六本木ヒルズレジデンスです。

六本木ヒルズレジデンスは、IT企業の社長などが住む、いわゆる「ヒルズ族」の象徴です。

ワンルームで月25万、1LDKで月55万程度のようです。真のハイソですね。

僕は自称ハイソの貧乏サラリーマンですが、せっかくグランドハイアットに泊まったので、一朝限りのヒルズ族を味わってきました!

f:id:highso:20210502150314p:plain

今回の散歩ルートです。

グランドハイアットのフロントから出ると「けやき坂」に出ます。そこから横道に入ると「さくら坂」になります。

いわゆる欅坂46(現・櫻坂46)の名前の由来になったエリアですね。

今回はさくら坂を歩いてみました。

f:id:highso:20210502154504p:image

さくら坂を散歩する僕ら。

名前の通り、キレイな桜並木でした。

f:id:highso:20210502144002p:image

さくら坂を歩くと、カラフルな滑り台の公園にたどり着きました。

公園内には、英語やフランス語を話す子連れのパパママたちが大勢いました。

おそらく近隣に住む外国人ファミリーでしょう。六本木ヒルズレジデンスに住んでいるのだろうか。ガチのハイソやん。

六本木に住むグローバルIT企業の日本駐在員っぽいパパたち(およびママたち)と、わざわざグランドハイアットに泊まってまで六本木に来ている僕

親の年収はアホほど差があるのでしょうが、子供に罪はないぞ!!ということで、長女もハイソファミリーに交じって滑り台で遊んでおきました。

f:id:highso:20210502144022j:image

この公園は「港区立 さくら坂公園」というそうです。

あー、これがガチの港区女子ってやつかぁ。ハイソの世界に触れちゃったなぁ。

さくら坂公園は、上記の六本木ヒルズレジデンスから直結していて、ヒルズ族の育児世代の御用達なんだと思います。

このあたりを「ベビーカーを押して歩く親子」は、「このへんに住んでいて子育てをしている=真のハイソ」だと思います。

一方、僕らはわざわざホテルに泊まってきているのですが、観光客から見たら「え!?この辺に住んでる人か!?」と思われたでしょう。

一瞬だけ、ハイソ気分を味わうことができました。(発想がローソ!)

f:id:highso:20210502144009p:image

六本木ヒルズレジデンスを抜けて、六本木ヒルズのアリーナへ。

テレビ朝日の中には朝から営業しているカフェがあり、200円でカフェオレを買うことができました。

物価が高い六本木の中にあって、庶民的な価格でカフェができるテレビ朝日一階はオススメですよ。(ローソ情報!)

f:id:highso:20210502143935j:image

六本木ヒルズの地上階にある毛利庭園。有名なハート型のオブジェ。

初めて六本木ヒルズに観光に来たカップは、とりあえずここの前で写真を撮ることで有名である(偏見)。

大都会の中にあって、こういった緑が残るエリアは、心洗われるようです。

 

以上、メタラーまとんでした。

もっと自由に旅行できる時代に早くなってほしいものです。

ではでは。

過去のハイソ旅行記

池袋

highso.hatenablog.com

東京タワーhighso.hatenablog.com

浦安

highso.hatenablog.com

「ビューバス」だがお風呂は微妙だった三井ガーデンプレミア

highso.hatenablog.com

 

次女に長女と同じ教育ができない問題

ども!育児ブロガーのまとんです。
うちには2歳の長女と約半年の次女がいるのですが、次女の教育について悩んでいます。

長女には色々と教育してきたのですが、次女にはあまり教育できなくて困っています。

大前提:姉妹間で差をつけたくない

我が家の教育方針として、何事においても姉妹で差をつけたくないと思っています。

先に産まれるか、後に産まれるかは、子供自身にはコントロールできません。

自分自身のせいではないのに、「お姉ちゃんなんだから」とか「妹なんだから」と大人が差別するのは、呪いの言葉だと思っています。

なので、我が家では「お姉ちゃん」という言葉は使わないようにしています。名前で呼んでいます。

大事なのは子供の個性であって、大人のイデオロギーを押し付けたくない。と思っています。
(しかしながら、祖父母や近所の人は「お姉ちゃんなんだからしっかりしないとね~」などと平気で言ってくるので、なるべくやめてもらうようにしています)

長女の教育はめちゃくちゃ頑張った

我が家の優先順位では子供の教育が最優先なので、長女の教育はめちゃくちゃ頑張りました。

特に嫁が頑張ってくれました。我が家なりの英才教育を施しました。

0歳から知育教室を10種類くらい体験レッスン受けて比較したり、

highso.hatenablog.com

テアトルアカデミーという子供俳優のオーディションを受けてみたり、

highso.hatenablog.com

1日10~20冊の絵本を読み聞かせしたり、

highso.hatenablog.com

色々してきました。

うちは都内旅行が好きなので、都内のハイソホテルに泊まって観光も、0歳からしょっちゅう行ってきました。

0歳のときから、知育教室とベビースイミングに毎週通っていて、今でも続けています。

おかげさまで長女は非常に優秀に育っており、公園などに行っても同年齢の子を知能で圧倒しています(親バカ)。

どう考えても高知能マンです。将来が楽しみです。

好きな魚は「コガネシマアジジンベエザメとマダイとフエヤッコダイとリュウグウノツカイだそうです。こんな渋いチョイスできる2歳児、ほかにおる?

次女を習い事につれていくのが物理的に不可能問題

で、次女です。

例えばベビースイミング。次女はもう、長女がスイミングに通い始めていた月齢になっています。

長女は土曜の午前中に僕がスイミングに連れて行っていますが、僕は一人しかいないので、次女を連れていくことができません。

知育教室は平日に嫁が連れて行っていますが、次女を通わせるとなると、その間に長女の面倒を見れる人がいません。

毎週、次女の習い事の時間帯に祖父母を召喚するなどしないと、次女を連れていくことが物理的に不可能です。

どうやって下の子を習い事につれていってんの!?

冷静に考えて、下の子を習い事に連れていくの、難しすぎませんか!?!?

僕は3兄弟の一番下でしたが、いったいうちの親はどうやって僕をピアノに連れて行っていたのだろうか。

ガチで、毎週祖母を召喚していたのかもしれません。そうしないと習い事つれていけない。

2人でも大変なのに、3人目とか、頭がおかしくなりそうです。

世の中には子供3人以上育てている親はたくさんいますが、無条件で尊敬してしまう。

子育てにおいては「祖父母が近くに住んでいるかどうか」はめちゃくちゃ重要なファクターだと実感します。

祖父母(特に嫁の方)が、歩いていける距離に住んでいるか、電車や車で1時間でいける距離か、新幹線や飛行機を使わないと会えないかで、育児の難易度が段違いですね。

コロナで旅行もままならん

長女のときは都内のハイソホテルに行ったり、都心の空気を吸いに行ったり、新幹線に乗ったり、なんでもやり放題でした。

しかし、次女はコロナ禍に産まれたので、いまいち遠出ができていません。

さいころの記憶は失われると言われていますが、脳の神経が発達するのは幼児期だと思っているので、とにかく色んなものを見て、触れて、聞いて、嗅いで、感じると、シナプスがピュンピュン繋がって、良いのだと思っています。

新しいものに触れたときの子供は目がキラキラして、刺激になっているのがよく分かります。

なので、色んな所に連れていきたいのですが、次女にはあまりできていない。。。。

姉妹で差をつけたくないのに、実態はめちゃくちゃ差がついてしまっています。申し訳ない。ほんとすまん。

コロナ禍に産まれたことは次女のせいではないのに、、、

 

以上、メタラーまとんの育児の悩みでした。

ではでは。

 

↓長女が好きな魚たち

 

自分探しの旅に出ることにしました。

ども!JTBCブロガーのまとんです。

突然ですが、自分探しの旅に出ることにしました。

 

きっかけは、外資ITベンダの選考に落ちたことです。

ちょっと自分の視野が狭くなっているなと感じたので、自分探しの旅に出て視野を広げることにしました。

 

コロナの影響もあって、ここ1年ほどは、自分の世界が狭く、単調になっていました。

付き合うのは家族と会社の人(仕事のみ)ですし、お出かけもほとんど家族と行っていました。

ブログの記事の内容も、振り返ると、エンジニア・育児・投資ネタばかりになっていました。

コンフォートゾーンに限定した生活は、大変快適ではありますが、僕は現状を打破しないといけない立場にあります。

このままではいかんのです。変わらないといけない。

JTBCの30台はコスパが悪いのです。

 

というわけで、自分探しの旅に出ています。

具体的には、人と話そうと思っています。

普段会わない人と話すと、それだけで価値観が広がったり、新しい発見があったり、インプットになって、明日からの仕事にも良い影響を及ぼすことを知っています。メリットは多いです。

最近、知り合いのスタートアップに話を聞いてみたり、久しぶりに会社や大学の同期と話してみたり、新しいSaaSを使ってみたり、色々しています。全て刺激的です。

外の世界に触れると、逆に自分の世界の境界線に気づかされて面白いです。

 

で、この記事を見ている人、もしよければ、久しぶりに話をさせてもらえませんか。

久しぶりに近況報告とか、愚痴とか、婚活の話とか、なんでもよいので、話をしたいです。

自分探しのツールとしては、Zoom、LINEなど使えます。

時間帯は、平日の17:00~21:00、土曜の14:00~19:00。
都内近郊なら足を運びます。酒は飲まないのでバーミヤンとか行きましょう。

 

まぁこう書いても誰も声をかけてくれないと思うので、

僕から積極的に友人たち(大学、サークル、浪人、高校、などなど)にSNSで凸していこうと思っています。

よろしくお願いします。

 

以上、メタラーまとんでした。

ではでは。

ブログで履歴書 2021年4月版

ども!メタラーまとんです。

自己紹介を書きます!

僕は自称ハイソの貧乏サラリーマンです。

エンジニアで、ファイナンシャルプランナーで、二児の父です。

年収を上げて教育資金を確保するために転職活動を行っています。

LinkedInに書けないプライベートの自己紹介を、このブログ記事にまとめました。

SNS

Twitter: @Highso_ciety

GitHubmaton456 (メタラーまとん)

エンジニア関連記事

ファイナンシャル×IoT

ドル建て生命保険の解約返戻金をLINEに通知するIoT作品を作りました。

f:id:highso:20190916232950j:plain

1. ドル円為替レートをLINEに通知するハイソ投資ボタンを作った! Lambda, LINE Notify, OANDA, SORACOM

2. ドル建て生命保険の解約返戻金を計算してLINEに通知する仕組みを作った!

3. LINE Botに生命保険の解約返戻金を教えてもらえるようにした!Messaging API, Amazon API Gateway, Lambda

マウスDJ

マウスを動かすとドゥイドゥイ鳴るおもちゃを作りました。


マウスDJ - MouseDJ

1. 【マウスDJ】デビューしました。

2. 【マウスDJ】プロ―モーションムービーを作りました!

育児応援LINE Botをサーバーレスで

育児を頑張る嫁を、僕の代わりに褒めてあげるLINE Botを作りました。

highso.hatenablog.com

IoTソレノイドを奏でる

1. 【JAWS DAYS 2019参加レポ】「あのボタン」SORACOMの薄い本を買ってみた! - メタラーまとんがハイソにやらかすようです

2. ソレノイド(ZHO-0420S-05A4.5)をArduinoとMOSFETで動かしてみた! - メタラーまとんがハイソにやらかすようです

3. AWS IoTをWSL(Windows Subsystem for Linux)のUbuntuで動かしてみた! - メタラーまとんがハイソにやらかすようです

4. ソラコムのボタンでUbuntuとサーバーレス通信してみた!(AWS IoT 1-click / Lambda / AWS IoT / Windows Subsystem for Linux: WSL) - メタラーまとんがハイソにやらかすようです

5. ソラコムのボタンとESP32を繋いでソレノイドを演奏してみた!(AWS IoT 1-click / Lambda / AWS IoT / ESP32)

レアカード売り時お知らせ君

趣味のカードゲーム(MTG)のレアカード価格が高騰したときに「今売れ!」と教えてくれるアプリを作りました(作成途中)。

highso.hatenablog.com

買うもの共有アプリ(ノーコード)

流行りのノーコード(Amazon Honeycode)を使って、家族間で買うものリストを共有するアプリを作りました。

highso.hatenablog.com

無料版はてなブログCSS編集

はてなブログCSSを編集するノウハウです。

実はこのブログで最もスターを得ているのはこれらの記事です。

1. 【2018年版】無料はてなブログでスマホ画面のCSSを編集する方法

2. 【2018年版】無料はてなブログでスマホ画面のフォントを16pxに大きくする方法

3. 【2020年】無料版はてなブログのスマホ画面で「目次・見出し・リスト・商品紹介」のCSSを編集する方法 

環境構築

PCに環境構築したときのメモです。

1. WSL+pyenv+pipenv+VSCodeで令和モダンなpython仮想環境を構築しよう!

2. Windows10HomeにWSL2(Ubuntu20.04)とVSCodeでPython開発環境を構築した

3. はじめてAWS CLIを使う。WSL2にインストールしてIAMユーザーを紐づける

趣味の資格取得

ファイナンシャルプランナー3級で資格取得にハマり、最近ではエンジニア系の資格を中心に集めています。

・2020年12月合格:CG-ARTS画像処理エンジニア検定ベーシック

【2020年後期】CG-ARTS画像処理エンジニア検定ベーシックを受けた!感想・速報・勉強法・対策

・2019年7月合格:AWS 認定ソリューションアーキテクトアソシエイト

AWS認定に合格しました!ソリューションアーキテクト - アソシエイト、感想・所感・勉強法

・2019年合格:G検定

【2019年第2回】G検定を受けた!試験中に圧倒的成長!!

・2018年12月合格:ネットワークスペシャリスト

【平成30年度】ネットワークスペシャリスト受けてきた!!!午前は突破!!!所感・解答速報・感想・講評・攻略・難易度

・2018年12月合格:技術士一次試験(電気電子部門)

【2018年】技術士受けて来た!感想・講評・速報!第一次試験(技術士補)電気電子部門

・2018年6月合格:応用情報技術者

【18年春】応用情報技術者試験の速報・所感

・2018年3月合格:ファイナンシャルプランナー2級

【資格】FP2級受験の結果

・2017年10月:TOEIC 800点

ファイナンシャルプランナー3級

資産形成

積み立てNISA

僕にとっての初めての投資は、月3万円の積み立てNISAでスタートしました。

f:id:highso:20181113021256p:plain

1. 楽天証券で「積み立てNISA」始めました。投資に興味無いエンジニアにオススメ!

2. 【積み立てNISA】税務署審査などモロモロで1ヵ月もかかった件

3. 【楽天証券】積立NISAで「eMAXIS Slim 先進国株式インデックス」発射!!「楽天・全米株式」との比較と、20年間の試算してみた

4. 初めての投資の運用報告が「-3%」で激おこ

5. 【つみたてNISA】年末の阿鼻叫喚から回復し、ついに黒字に転じました!!

6. 投資ビギナーLv.2「16,667円積み立て」について解説! つみたてNISA/楽天証券/楽天カード

7.  長女のジュニアNISA枠でつみたて開始しました

投資(投資信託+国内株式+米国ETF)現況記事

f:id:highso:20210206145009p:plain

1. 株主優待目当ての投資を始めていくぞ!

2. 投資の近況報告!!積み立てNISA、ドル建て生命保険、国内株式

3. JTBC社員が投資に走るワケ

4.【国内株式】なんとかコロナを生き延びてます。3ヶ月を振り返る

5. 資産運用の現況!第二次コロナショックに備えてどうする!?

6. 父の日なので100万円を入金しました!ポートフォリオを見直して17年後の2000万円を目指す!

7. 素人投資家のリアルな現実をお伝えします。300万円が1年半で何円になった?

節税

僕は節税オタクです。みんなにお得な節税制度を紹介することを生業としています。

1. 「節税」をはじめからていねいに - サラリーマンができる税金対策の種類をまとめてみた

2. 今年のふるさと納税は「豚肉・明太子・ハンバーグ」の布陣で決めた!!(初心者向けに解説します)

3. 【節税?】子供ができたらボーナス月に育休カードを切って手取りを増やそう!

マイル

僕はANAマイラーです。僕の知見を凝縮したこの記事は、わりとアクセス数を集めています。

1. ANAカードで10マイルコースにするとお得になる基準を計算してみた

持論

僕の持論です。どの記事もめちゃくちゃ長いです。

老後・保険・持ち家

f:id:highso:20180921014751j:plain

1. 「老後の月8万円」を、エンジニアの君はどうやって稼ぐか

2. 新社会人に読んで欲しい。その保険、本当に必要ですか? (新社会人は是非読んでほしい!)

3. 平成最後に教育資金を考える。つみたてNISAで資産を形成! (娘の教育資金2000万円を貯める具体的な作戦)

4. 令和時代に家を買うべきかどうか問題 (アラサーに是非読んでほしい!)

育児・教育

娘が産まれて父親になってから、育児について考えるようになりました。

1. 教育の機会均等を実現するのは親の努力

2. 親として、考えることをやめない、諦めない。

3. 新しい家族の在り方「S.A.C.家族」を提案します

4. 【令和元年】0歳児の教育コンテンツを比較します

働き方改革

僕は働き方改革アンバサダーを自称しています。口だけにならず、成果を残すタイプの働き方改革を実践していきます。

1. 忘年会を””働き方改革””していけ

 

以上、メタラーまとんでした。

ではでは。