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

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

レアカード価格を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. 忘年会を””働き方改革””していけ

 

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

ではでは。

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

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

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

結局、素人はインデックス投資が良い

僕と嫁は個別株式をやっていますが、成績はトントンです。

一方で、ひたすら放置しているつみたてNISAは、僕も嫁も+20%程度の高利益を叩き出しています。

やっぱり、素人は下手に個別投資に手を出さずにインデックス投資しておくのが良いという学びを得ています。

とはいえ、個別投資はスマホゲーム感覚で楽しいので、個別投資用に既に入金してある300万分(僕)は今後も運用を続けていきますが、それはそれとして、毎月の投資信託積み立てを増額することにしました。

せっかくつみたてするなら非課税のジュニアNISAを使おう

先日、長女と次女のジュニアNISA口座を開設していました。

highso.hatenablog.com

楽天証券のNISA枠は、スマホアプリのiSPEEDでは取引ができず、ウェブでログインしなければならないので取引がめんどくさいです。ちょこまか取引するのには不向きです。

しかし、NISA枠は税金20%が免除という素晴らしいメリットがあるので、一度買ったら触らずに放置のほったらかし投資に向いています。

投資信託を買うなら、自分の課税口座で買うよりも、娘の非課税口座で買った方が節税になるのでお得です。

 

長女のジュニアNISA枠では、まず、株主優待目当てでオリックスを100株(18万くらい)を買いました。

ジュニアNISAの非課税枠は年間80万円あるので、まだ60万円分は買えます。

無難にeMAXIS Slim 全世界株式(オール・カントリー)で

では何を買おうか、ということで、特に考えずに超王道の「eMAXIS Slim 全世界株式(オール・カントリー)」にしました。

積立額は月3万。4月から積み立て開始なので、年間27万です。まだ非課税枠に余裕はあります。

 

いちおう、家族内で分散投資しようと思いまして、今我が家のインデックスはこんな感じ。

  • 僕(つみたてNISA):eMAXIS Slim先進国株式(日本除く)、3.3万、1日
  • 僕(課税):深センイノベーション株式ファンド(1年決算型)、1.6万、1日
  • 嫁(つみたてNISA):楽天・全米株式インデックス・ファンド、3.3万、1日
  • 嫁(課税):iFreeNEXT NASDAQ次世代50、1.6万、1日

これらを選択した経緯については以下の記事で説明しました。

highso.hatenablog.com

4本のつみたて全てにおいて買付日が1日であるのが気になっていたので、長女のeMAXIS Slim 全世界株式(オール・カントリー)は分散させる意味で、15日買い付けに設定しました。

eMAXISシリーズと楽天・全米株式は、米国株価に引っ張られるので、ほぼほぼ同じ値動きをすると想定しています。

なので、大して分散投資になっていないですが、まぁ、僕は金や原油や債券や不動産や仮想通貨よりも株式に期待しているので、良しとします。

我が家で合計13万つみたてになった

僕と嫁が5万ずつ、長女が3万で、合計13万です。

僕と嫁が課税枠でつみたててしまっている3.2万分は、長女の非課税枠に乗り換えてもよいかもしれないな。

JTBCは毎年少しずつ昇給するので、昇給分をそのままインデックス投資に流し込んでいこうと思います。

 

ただ、今の資産額(非公開)では、投資を頑張るよりも転職して収入を増やすことの方が遥かにインパクトがあるので、転職活動も頑張ります。

 

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

ではでは。

魚オタクの長女とサンシャイン水族館に家族旅行してきた!

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

魚オタクの長女を連れて、池袋のサンシャイン水族館に1泊プチ家族旅行に行ってきました!!

f:id:highso:20210321045402j:image

サンシャインシティプリンスホテルで平日泊!

サンシャイン水族館池袋のサンシャインシティにあります。

我々は都内在住なので、日帰りでも行けるっちゃ行けるのですが、小さい子供二人を連れて朝から準備して出かけるのは大変です。

ならば、前日の夜から現地のホテルに宿泊して、朝からゆっくりと楽しむのが我が家のスタイルです。

 

今回は僕が金曜に平日休みを取れたので、前日の木曜から平日泊をしました。

嫁と子供たちには先にホテルにインしてもらっておいて、僕は会社で年度末の締め切り地獄と最後まで戦って、なんとかノルマを達成してホテルで合流です。

子連れなら小型ベッド付きのサンシャインフロアのツインルームAがオススメ!

f:id:highso:20210321045349p:image

ホテルはサンシャインシティ直結のサンシャインシティプリンスホテルです。

平日の1泊(大人2人、子供2人)、朝食付き、26~32階確約のツインルームAで、クーポン割引-1000円を使って15660円でした。

サンシャインシティプリンスホテルは、10~25階がシティフロア、26~32階がサンシャインフロア、33~37階がパノラマフロアとなっており、同じ部屋のグレードでも1000円程度ずつ値段が異なります。

僕たちは2019年にパノラマエリアの同じグレードの部屋に泊まったことがありました。

highso.hatenablog.com

調べてみると、サンシャインシティフロアのツインルームAにはスタッキングベッド(ベッドの下に収納されている小型ベッド)があって、子供を小型ベッドで寝かせることができるのですが、パノラマフロアのツインルームAにはスタッキングベッドが無いようです。

2019年と違い、今は子供が二人いるので、スタッキングベッドを使うために、パノラマフロアは諦めてサンシャインフロアにしました。

f:id:highso:20210321045407p:image

朝食会場は感染対策を徹底した上でのビュッフェ形式となっていました。

朝から家族4人でゆっくり過ごす朝食は、心のオアシスです。

LOOK & TASTE Springキャンペーンで5000円券もらえた!GOTOか!?

f:id:highso:20210321045414p:image

現在、サンシャインシティプリンスホテルでは「LOOK & TASTE Springキャンペーン」をやっていて、5000円の館内施設利用券がもらえました!

1階のレストランではテイクアウトのランチボックス(めっちゃ美味い)やケーキが売られていまして、ありがたく使わせていただきました。

ホテルのレストランは高額なので基本的に利用しないのですが、こういったキャンペーンやGOTOキャンペーンがあれば利用できますね。

5000円券のおかげで、豪華なランチ代がタダ、さらにお土産のケーキ5個もタダで買えました!助かるー!!(我が家はケチなので、旅行中でもコンビニ飯とかやりがち

サンシャイン水族館で憧れの魚に出会えた!!

f:id:highso:20210321045356j:image

前日泊したおかげもあって、朝はゆっくりと身支度してサンシャイン水族館にイン。(プリンスホテルから水族館の入り口エレベーターまで、徒歩1分)

現在、サンシャイン水族館はチケット事前購入制になっています。入場日の2日前から、入場日時を指定して(15分間隔)、事前予約ができます。

当日は指定の時間に来場して、受付でQRコードを見せるだけで入場できます。チケット売り場に並ばないのは嬉しい。

f:id:highso:20210321045359j:image

天地創造デザイン部(天デ部)とのコラボもしていました!

最近ハマっている漫画とのコラボはちょっと嬉しいですね。

highso.hatenablog.com

メイン水槽「サンシャインラグーン」

サンシャイン水族館は、屋外エリアのマリンガーデンでの「天空のペンギン」「空飛ぶアシカ」「コツメカワウソなどを今プッシュしているのですが、

うちの長女は魚オタクなので、鳥類や哺乳類よりも水槽の魚に大興奮していました!

 

f:id:highso:20210321045402j:image

個人的にはメイン水槽「サンシャインラグーン」が一番良かったです。

水槽のガラスが低いので、子供たち自身がのびのびと鑑賞できます。(ガラスが高い水槽だと、親が子供を持ち上げないと子供が中を見れないので、親が大変)

海底と水面を一枚の写真に納められるので、簡単にインスタ映えできます。

f:id:highso:20210321050410j:image

サンシャインラグーンのメイン魚はトラフザメです!

ジンベエザメほどは大きくないですが、3mほどの巨体が優雅に水槽内を泳ぐ姿は圧巻!

f:id:highso:20210321050436j:image

しばらくすると水槽の隅っこで眠り始めた姿も可愛い。

これのせいで、長女の中には「トラフザメは水族館でおねんねしている」というイメージが定着してしまった。。。

f:id:highso:20210321050609j:image

最近の僕のお気に入りの魚、メガネモチノウオ(別名ナポレオンフィッシュ=ナポレオンの帽子に似ている)です!!

ブサ可愛い顔、頭のコブ、1mくらいの巨体でゆっくり泳ぐのがたまりません。

メガネモチノウオは小学館の図鑑シリーズで、魚図鑑の表紙を飾っているんですよね。毎日家の中で見ているので、もはや家族のような気分です。

DVD付 新版 魚 (小学館の図鑑 NEO)

DVD付 新版 魚 (小学館の図鑑 NEO)

  • 発売日: 2015/06/18
  • メディア: 大型本
 

f:id:highso:20210321050407j:image

サンゴ礁エリアの主役はチョウチョウウオですよね!!

こちらはハタタテダイ。見た目がツノダシに酷似していますが、ハタタテダイはチョウチョウウオの仲間です。

数か月前のNHKダーウィンが来た!」でツノダシの特集をしていて、僕はツノダシに会いたかったのですが、ツノダシはいなかったです。

f:id:highso:20210321050606j:image

こちらはニセフウライチョウチョウウオ。黒い模様が「ハ」の形をしています。

チョウチョウウオはめちゃくちゃ種類が多くて、どれも似たような模様をしているので覚えるのが大変です。

魚オタクの長女のために、ハンディサイズの小さい魚図鑑を事前に用意しておき(メルカリで安く調達)、現地で図鑑と照らし合わせながら楽しみました。

他にはセグロチョウチョウウオ、スダレチョウチョウウオなどがいましたが、長女が一番好きなフエヤッコダイがいなかったのが少し残念です。

他にも魅力的な魚がいっぱい!

f:id:highso:20210321050353p:image

こちらはイワシの大群の水槽。みんな反時計回りに泳いでいます。

嫁曰く「逆向きに泳いでいるやつが結構いる」とのこと。

イワシ海のゴチソウといった感じで、こんな感じで海の中で群れを成しています。

NHKダーウィンが来た!」では、カジキやサメや鳥など、様々な大型生物から捕食されてしまう、かわいそうなマイワシ君です。

f:id:highso:20210321050344j:image

トラウツボウツボってめちゃくちゃデカいんですね!アラサーの僕としては、ウツボと聞くと「スーパーマリオ64」を思い出してしまう。

f:id:highso:20210321045953j:image

普通のウツボ。普段はスキマに収まっているウツボですが、全身を外に出して泳いでいる姿は珍しい!

サンシャイン水族館にはウツボがたくさんいました。3匹は見つけられました。サンシャイン水族館ウツボ水族館と呼んでも過言ではない。

f:id:highso:20210321050348j:image

アジアアロアワナ。実家で熱帯魚を飼っていた僕としては、やはりアロワナには燃えますね!

アロワナ、ディスカス、セルフィンプレコ、レッドテールキャットフィッシュ、クラウンローチ、ハイギョあたりの飼育用熱帯魚コーナーでは、僕はテンションダダ上がりでした。

しかし、長女は海魚クラスタなので、川魚にはあまり興味を示さなかった。。。。

f:id:highso:20210321050403j:image

お次はグレートバリアリーフ勢。カクレクマノミはニモで有名ですが、生態としてもとても面白い魚です。

猛毒をもつイソギンチャクの毒が効かない体質をしているため、イソギンチャク中に隠れて、イソギンチャクと「共生」するという生態をしています。

本当にイソギンチャクの中に隠れていました。図鑑の知識を実物で確かめられるのは楽しい!!

f:id:highso:20210321050400j:image

ナンヨウハギ色鮮やかな青色の魚だと思っていたけど、水族館で見ると、けっこう独特な模様をしているなと感じました。

f:id:highso:20210321045958j:image

チンアナゴもいました!!!

サンシャイン水族館チンアナゴは細めだと感じた。すみだ水族館チンアナゴはもっと大きかった気がする。どうなんだろ。

事前に予習してから行く水族館はめちゃくちゃ楽しい・・・

サンシャイン水族館は、水族館としては面積が小さめなので、サッサカ歩くと30分ほどで見終わってしまいます。

しかし、あらかじめ魚の情報を予習してから行くと、一つ一つの水槽が感動の連続で、めちゃくちゃ楽しかったです!!!

 

皆さんもぜひ行ってみてください。

平日は空いていました。

 

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

ではでは。