2022年7月

育児

1 歳 8 ヶ月になった。

  • 保育園から帰宅後すぐにパパの仕事部屋にくる
    • チェアに座ってキーボードやマウスをさわる
  • 保育園で七夕の短冊バックに一緒に写真撮った
    • 「写真とりましょうか?」って言ってくれた先生方に感謝!
  • なんでもぶん投げる
    • おもちゃ、ご飯、食器
  • お風呂のとき自分でシャンプーだしてお腹ポンポンする
    • 洗っているつもりだろうけど泡はパパがキャッチしている
  • 市の文化センターで遊んだ
    • 世界中の民族楽器とかおもちゃがあった
    • 人が多くて最初は戸惑ってたけどすぐ慣れた
    • 安かったしまたいきたい
  • コップもって「ゴクゴク プハー!」ってやると笑う
    • コップをパパママに渡してそれを求める
  • 新しく買ったお野菜のおもちゃだけお片付けが上手
  • 「ごちそうさま」のマネをした!
    • 手を合わせてお辞儀
    • 手をあわせて上にあげた
    • 「ごーちゃちゃちゃっちゃ」
  • 保育参観に参加した
    • 外の窓からのぞき見する形
      • 見られそうになったらしゃがんで隠れる
    • ちょうど朝おやつのタイミング
      • 飲み物こぼしてた(平常運転)
    • 車のおもちゃで遊ぶ
      • お友達におもちゃ取られたけど気にしない
    • 滑り台であそぶ
      • 車のおもちゃを滑らせる
    • カードを箱の中にいれる
    • 絵の具であそぶ
      • 手に絵の具つけてぺったん
      • 終わったら手洗い
    • ブロックはめで遊ぶ
      • 丸と四角のブロックをはめることができた
    • ドミノで遊ぶ
      • ドミノたてる前に倒したい
    • トランポリンであそぶ
      • ジャンプはできないけど膝をまげまげ
    • 絵本をよむ
      • 『まんまるだあれ』って本
      • 上手にページをめくる
      • 家では踏んだり曲げたり破ったりするけど...
      • 先生が読み聞かせすると車のおもちゃをページで走らせる
    • 遊びに飽きたのか 10:30 ごろから甘える
      • 先生の手を引っ張って抱っこしてアピール
    • 野菜と果物のおもちゃを包丁で切る
    • おもちゃぜんぜん投げない
      • 家ではめっちゃ投げる
    • お昼ご飯
      • 真っ先に椅子に座る
      • じっとご飯がくるのを待ってる
      • 待ってるあいだ手をテーブルにトントン
      • 食事前のアルコール消毒も完璧にこなす
      • お米ぱくぱく
      • 先生はおかずとご飯をスプーンに乗せてあげていた
        • スプーン 2 つで丸める
      • ちゃっかりご飯と主菜をおかわり
      • ごちそうさまもできた!
      • テーブルに落ちてる食べかすをつまんで食べる
      • 園のご飯もたべた
        • 味付けとか参考になった
  • いとこ家族が家に遊びに来てくれた
    • 1 歳になる子もきた
    • その子と遊んでたら息子氏ギャン泣き
      • 寂しかったのかなごめんよ
  • 「緑のブーブーとって」て言ったら持ってきてくれた
    • 少しずつママパパの言っていることが分かってきたのかな
  • チャイルドシート卒業
  • パパの顔や腕を引っ掻いた
    • 冷静になれなくて手首を強く掴んだら泣いた
    • ごめんよ。。よくない。離れるなりしよう
  • 休日の昼食前にめっちゃ吐いた
    • 夕方までに 7 回吐いた
    • 顔色は良いけどあまり元気がない
    • 夕方に市の休日診療所にかかった
    • 腸炎とのこと
    • たぶん前日に当日賞味期限のヨーグルトあげたのが原因
    • 帰宅後は吐かなかったけど下痢が 5 回
    • 3 日くらいで復帰
    • 復帰後はパパママの手料理いっぱい食べてくれた
  • 家電量販店でペッパーくんに怯える(半泣き)
  • サイゼリヤデビュー
    • 初の外食
    • コーンスープとミートスパゲティとプチフォカッチャとじゃがいものやつ
    • キレイに食べました
    • 注文後すぐデリバリーされるし最高
    • ミルクジェラートたべて笑顔
  • アンパンマンミュージアムの動画に釘付け
  • お風呂後のスキンケアでクリームをポンプ押して出す(前からだけど)
    • 手についたのを洗うように伸ばしてそれをお腹にポンポンする
  • 髪乾かすときにストローマグで牛乳を飲む
    • が飲めないとママの手を取って角度を変えてとせがむ
  • しなぷしゅの「う〜〜〜がっしゃーん」の「う〜〜」を言う
    • ケーブルを挿す時やパズルをはめる時

今月はドタバタだった。。保育園に参加したり、家族全員胃腸炎にかかったり。。ほんと大変だった。 が、楽しいこともたくさんあった。サイゼリヤデビューも果たしたし、ジュニアシートに変えたり、おしゃべりが少しずつ上手になったりと息子氏の成長を感じた月だった。 まだはっきりと 1 語を話すことができなくて、若干焦りつつもあるけど、そこはじっくり進めたいと思う。いっぱい息子氏と話そう! 副鼻腔炎は良くなってきていて、お薬生活もそろそろ卒業できるかもしれない!!と希望を持って生きてる。

仕事

ドキュメント書いたりコード書いたりしていた。Weight はドキュメント作成が高め。

  • Lambda を使った某 APIリファクタリングをした
    • リファクタリングにあたり、pytest を使ったテストコードを初めて書いた
    • テストコードを書くことで、アプリケーションコードを修正するのに躊躇しなくなった気がする
    • 正常系と異常系のテストを書いた
    • moto で SQS のモックを作成
    • まだどのテストを書くべきで、どのテストを書くべきではないか、カバレッジも含めて分からないことが多いので勉強していきたい
  • Swagger UI/Redoc のドキュメント作成
    • 既存 API のドキュメントが存在していなかったため、OAS(Version 3)に準拠したドキュメントを作成した
    • Swagger ドキュメントと呼ばれることが多いのかな?
    • OAS 準拠の YAML/JSON を用意すれば Redoc でも表示が可能ということがわかった
    • GitHub と Amplify を連携させて、自動デプロイできるようにした
      • AWS リソースは CloudFormation で作成
    • Amplify の PR レビュー機能はまだ使ったことがないので今度試してみる
    • この話はどこか別でブログに書きたい
  • SQS トリガーで動作する非同期 Lambda のリファクタリングをした
    • まだ WIP だが、これもテストを書きながら進めている
    • Aurora Serverless の Data API のテストにおけるベストプラクティスをチーム内で模索中
      • テスト用 DB を作成することで落ち着いた

その他

ISUCON に参加した。今回も惨敗。。チーム内での反省会も終わり、定期的に素振りしていく予定。あしたから本気だす。

enokawa.hatenablog.jp

ISUCON12に参加した

昨年に引き続き、ISUCON12 オンライン予選に参加した。最終スコアは 2238 で、698 チーム中 426 位でフィニッシュ。

isucon.net

enokawa.hatenablog.jp

出場の経緯

去年出場して楽しかったので出場した。仕事でも 4 月から Web アプリケーションエンジニアとして Python 書いたりしてたので今のオレのベンチが取りたかった。去年は育児もあって相棒に迷惑をかけたので、1 人の方が気楽だなと思って 1 人で出るつもりだった。

けど、6 月の後半にたまたまハッカー飯@kikulabo さんと話したら「一緒に出ちゃいます?」みたいな流れになって一緒にやることになった。ちなみに @kikulabo さんは元同僚。

@kikulabo さんも Python を多少読み書きできるとのことで、コーディングに関する力量はほぼ同レベルだと思ったので、言語は Python でいくことに決めた。

準備

デプロイスクリプトの作成

昨年の反省も踏まえて、サーバー上で Vim でコードや Config を直接編集するのは、複数台サーバーへの反映が面倒すぎるのでやめたかった。ので事前に ShellScript でデプロイ用のスクリプトを用意した。make deploy-app とかでデプロイできる。予選で使ったけど便利だったので用意しておいてよかった。ちょっと使いづらい部分があって、例えば Download/Upload するファイルパスを ShellScript にコピペする必要がある。YAML とかでコンポーネント(Nginx / MySQL / App / Systemd) ごとにファイルパスを記載するだけでデプロイできるともっと楽かも。

github.com

ISUCON 本を読む

@kikulabo も読んでいて、「このへんは n 章が詳しかったです」みたいに事前にお互いに共通認識を作れたのはよかった。private-isu も通したりして、チューニングの理解を深めた。デプロイスクリプトの作成に時間を掛けすぎて private-isu は全部通せなかったことが反省点。

template repository の作成

前述したデプロイスクリプトだけじゃなくて、開発フローだったり Nginx の conf 例だったり alp のコマンド例などの便利スニペットを用意しておいた。

その他

  • レギュレーション確認
  • 当日やることチェックリスト作成
  • ISUCON11 を 2 人で通した
  • ISUCON11 の予選解説と講評記事を見た
  • ISUCON11 振り返り記事を見た

本番

ログを残していないので記憶が曖昧だけど流れを書いていく。

  • 予選当日マニュアル確認(2 人で)
  • AWS 環境構築 & サーバーセットアップ(オレ)
  • Cfn Stack 作成中にアプリケーションマニュアル読む(2 人)
  • Go のままベンチ(2722)
    • これが最高スコア...
  • デプロイスクリプト微修正 & ソースのダウンロード(オレ)
    • 11:00
  • Python に変更してベンチ(1792)
  • New Relic APM 導入(@kikulabo)
    • 12:30
    • この時点でスコア 1015
  • mysql-slow.log と Nginx の JSON ログフォーマット出力設定 (2 人)
  • APM 見て↓のクエリを改善したほうが良さそうと見当をつける(@kikulabo)
    • SELECT player_id, MIN(created_at) AS min_created_at FROM visit_history WHERE tenant_id = %s AND competition_id = %s GROUP BY player_id
    • EXPLAIN して Using where; Using temporary が出ていることを確認してインデックス貼ろうと決めた
    • tenant_id_idxtenant_id だけ指定してたので competition_id を追加
    • Using where は消えたが Using temporary は出たまま
    • GROUP BY で指定している player_id もインデックスに追加後、rows が 1/10 くらいになって Using temporary も消えた
    • この時点でスコア 1397
  • SQLite がサービスで使われていることを認識(栄野川)
    • 気づくの遅すぎな
    • App x 2, DB x 1 の構成にしたかった
    • SQLiteMySQL 移行を決意
    • 移行めんど。。
    • sqlite3-to-sql あるじゃん!運営ありがと!
      • これが罠だった..
      • 結構手直しが必要そうだぞ
      • webapp/tenant_db/*.db をすべて MySQL にぶちこめばイケる!
      • 全然おわらん。。1d 掛かるんちゃう。。
      • やめた
  • ここからお片付けモード
    • New Relic APM 止める
    • 3 号機の DB みるように設定
    • 2 号機はひましてる
    • syslog 停止
      • うまくできなかったかも
    • mysql-slow.log と Nginx のログの出力停止
    • Redis サービスを停止
    • 1 号機の DB とめる
    • 3 号機の App とめる

良かったこと

  • Docker のままでよかった
    • 最初の段階で無理に systemd に移行しない判断をとれたのはよかった
    • 移行コストが高かった
  • APM Docker にすぐ入れれたのはよかった
    • オレのおかげ
  • EXPLAIN 叩いてクエリの実行計画を確認できたのがよかった
    • ISUCON 本読んでおいてよかった
  • @kikulabo さんの player_id へのインデックス追加が GJ
  • デプロイ楽だった
  • alp 使えたの良かった

反省点

ソフト面

  • サービス再起動時にインデックスがちゃんと適用されているかどうかを確認しておけばよかった
    • ベンチが流れるとき(/initialize)に sql/admin/10_schema.sql が流れると思い込んでいた
    • init.sh をちゃんと読んでいなかった
      • 今見返すと「こりゃインデックスはられないよな。。」となる
    • 何もかも疑ってかかること
  • Go でやりたかったな
    • 個人的に勉強してたので
  • APM に頼りっきりだったのでもう少し自力で改善ポイントを見出す力をつけたい
    • APM いれるとスコア下がるし..
      • しょうがないとは思うけど精神的に少しキツい
  • アプリケーションコード 1 行も更新してない
    • もっともっとコードを読もう/書こう
      • 特にコードを読む力がない
    • デプロイの整備に時間をかけすぎたな
    • template は随時更新していこう

ハード面

  • ディスプレイ 2 枚必要
    • 今回は M1 MacBook Air と 27 inch ディスプレイ 1 枚でやった
      • もう 1 枚 23 inch ディスプレイ余ってたから使おうと思ってたけど単純に HDMI ケーブル挿すだけでは使えない
    • 1 枚は 作業用 & Discord 画面配信用でもう 1 枚は Discord 画面閲覧用
  • スピーカーとマイクほしい
    • AirPods 電池切れるしヘッドセットは疲れる
    • Shokz とか使うといいかもしれない
    • もしくはオフラインでやるか

おわりに

今年も準備不足だった。。たぶん今後も毎年いってると思う。スコアは去年より落ちたけど、コードの理解力だったり DB の理解力は去年よりも上がったと感じる。無力感のほうが大きかったが、充実感もある。

やはり普段から素振りをしないといけない。ので少なくとも 1 ヶ月に 1 回は ISUCON に関する素振りをしたい。ちまちま進めている個人開発プロダクトも Go で書いているので、少し ISUCON を意識して sqlx 使ったりしようかなと思う。(もともと echo は使っている)

とはいえ 1 年に 1 回の開催なのでなかなかモチベーションが上がりづらいなっていうのも本音。いちばんは普段の業務からコツコツと技術力だったり判断力であったりを積み重ねていくのがいいと思っている。

次は 5000 点以上を目指す!やっていくぞ。運営・スポンサーのみなさま、本当にありがとうございました!!!

2022年6月

育児

1 歳 7 ヶ月になった。

  • 食事中に手やテーブルや服についてる米をつまんで食べる
  • マクドナルドのチキンナゲットを 1 つ食べた
  • ママパパが手拍子しながら「くーるくる」って言ったら回ったり手拍子したりする
  • よく笑うようになった気がする
  • 相変わらずおもちゃ投げまくり
    • ご飯も投げる
    • 食器も投げる
  • ハイタッチが上手になった
    • 連チャンで「タチタチタチタチ!」ってやると笑う
  • 初めての園から呼び出し
    • 熱が出て元気がないので迎えにいった
  • くしゃみしたら鼻水ドバッとでる
    • 今までは口から唾液とばしてた
  • 「モグモグモグ」って手でジェスチャーしたら真似した
  • 「バイバイ」って言ったら両手で手を振ってくれる
    • 手首を回すんじゃなくて腕もいっしょに振る
  • 「バイバイ」からの上半身ブンブン回すからのその場でクルクル回る
  • 転落防止でベッドガードを導入
    • 1 辺のみで残り 3 辺は壁とクッションでガード
  • パパのチェアに座って回して喜ぶ
  • コールマンのヒーリングチェアに座らせてドヤ顔
  • パパに海苔をあ〜ん
    • パパ風邪ひく
  • 抱っこ紐(ヒップシート)に足で乗る
  • 抱っこ紐(ヒップシート)に膝で乗る
  • 耳鼻科に行った
    • 副鼻腔炎と中耳炎と診断された
    • 副鼻腔炎が原因で痰がたまって咳が出る
    • 鼻吸いしてもらってギャン泣き
    • 定期的に鼻吸いした方がいいみたい
  • マクドナルドのハッピーセットたべた
    • 初めてのドリンクカップ&ストロー
      • ストローをガジガジ噛んだけど飲めた
  • 目ヤニがすごくて眼科にいった
  • コメダ(テイクアウト)
    • サンドイッチとコメチキたべた
    • ジャンキーだいすき
  • ミスド
    • オールドファッションもぐもぐ
  • めっちゃ前髪きった
  • 玄関で自分で靴と靴下を脱ごうとする

先月に引き続き風邪気味な状態が続いた。耳鼻科にいって副鼻腔炎ということが分かってから抗生剤を処方してもらい。少しずつ落ち着いてきた。 毎週病院にいってたから夫婦共々疲弊して、テイクアウトでジャンキーフード食べすぎた。息子氏にもあげすぎたのでほどほどにしよう。。

仕事

ドキュメントを作成するために既存コードを読みこんだりしていた。 あと珍しくブログを 2 本かいた。

  • CloudFormation template 作成
    • Target tracking scaling policy を利用した ECS の Auto Scaling 化
  • プロジェクトのドキュメント整備
  • 新規プロジェクトの API 設計
    • 写真や動画を S3 にアップロードする API の設計
    • インフラは API Gateway + Lambda
    • API Gateway は 10 MB、Lambda は 6 MB のペイロード上限がある
      • ので Presined URL を発行して、フロントから S3 にアップロードする設計にした
  • 新規プロジェクトの API 作成
    • そこまで難しくなかったのですんなり終わった
  • SAM の CI/CD パイプライン構築検証
  • pytest のお勉強
  • RDS のボトルネック調査

enokawa.hatenablog.jp

enokawa.hatenablog.jp

AWS SAM ApplicationをGitHub Actions + OIDCを利用してデプロイする

CodePipeline や CodeBuild を利用したパイプラインの作成記事はよく見ますが、GitHub Actions を利用した日本語記事はあまり見かけないので備忘録として残します。 特に難しいことはしていないのですが、Actions 用の Credential(IAM User)は作成せず、OpenID Connect(OIDC) を利用して AssumeRole(WithWebIdentity) してみました。以下はサンプルのレポジトリです。

github.com

1. SAM Application の作成

公式チュートリアルを参考に、sam initsam deploy を実行します。今回は Python 3.9 で作成しています。

docs.aws.amazon.com

2. Identity provider の作成

GitHub OIDC Provider から AWS に対して Credential を要求するために、AWS 側で OIDC Provider と IAM Role を作成する必要があります。 まずは IAM で OIDC Provider を CloudFormation(template.yaml) で作成します。AWS マネージメントコンソールと CloudFormation のドキュメント、GitHub のドキュメントを行き来しながら作成しました。

docs.aws.amazon.com

https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services

パラメータは以下を指定しました。これは 2022/06/27 時点での情報であり、今後変わる可能性もあるため作成の際は公式ドキュメントを確認するようにしてください。

Key Value
Provider URL https://token.actions.githubusercontent.com
Thumbprints 6938fd4d98bab03faadb97b34396831e3780aea1
Audience sts.amazonaws.com

CloudFormation template の記載方法は aws-actions/configure-aws-credentials の README を参考にしました。

github.com

3. IAM Role の作成

AWS 側の OIDC Provider で JWT を検証できたら、指定の IAM Role を利用し、一時 Credential を発行して Actions へ渡します。IAM Role には sam deploy に必要な IAM Policy をアタッチします。 IAM Role と IAM Policy も CloudFormation で作成します。IAM Role の Trust relationships も aws-actions/configure-aws-credentials の README を参考に記載しました。

IAM Role の Trust relationships(信頼関係)は以下のように指定しました。

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::<AWS_ACCOUNT_ID>:oidc-provider/token.actions.githubusercontent.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringLike": {
                    "token.actions.githubusercontent.com:sub": "repo:enokawa/sam-cicd-sample:*"
                }
            }
        }
    ]
}

IAM Policy に必要な権限は、前述した通り sam deploy に必要なものを指定する必要があります。最小権限の原則に則った権限設定を行うことが望ましいですが、今回はおおざっぱな権限を付与しています。詳しくは以下の行を参照してください。プロダクションで利用する場合は、必要な権限やリソースを洗い出して設定するようにしましょう。

github.com

必要な権限やリソースの洗い出しにはかなりの労力が必要となりますが、以下のドキュメントが参考になるかもしれません。

aws.amazon.com

4. Secrets の登録

AWS アカウント ID やデプロイ先のリージョン、S3 バケット名など固有のリソース名は他者に知られたくないため、GitHub の Secrets に登録します。今回は Public レポジトリのため以下の設定としていますが、Private レポジトリでも利用した方がよいでしょう。

Key Value 用途
AWS_ACCOUNT_ID 12 桁の AWS アカウント ID aws-actions/configure-aws-credentials@v1 で IAM Role(role-to-assume) の ARN を指定する際に利用
AWS_REGION デプロイ先の AWS リージョン名 aws-actions/configure-aws-credentials@v1 で デプロイ先のリージョン(aws-region)を指定する際に利用
AWS_SAM_STACK_NAME デプロイする SAM の CloudFormation Stack 名 Integration test 時に Stack 名を指定する際に利用
S3_BUCKET_NAME Lambda のコードや CloudFormation template 保存先の S3 バケット sam deploy 時に S3 バケット名を指定する際に利用

5. Workflow の定義

ここまでできたら準備完了です。 .github ディレクトリ配下に Workflow や Job、Step を定義していきます。今回は、Build 用と Deploy 用で Workflow を分けてみました。YAML を修正しては GitHub に push して Actions がコケてまた YAML を修正して... を繰り返していました。試せていませんが、actionlint や act を使うことでもっとスムーズにデバッグできるかもしれません。

github.com

github.com

最終的に、以下のように無事 Actions が想定通りに動作することが確認できました。以降は、ローカルではデプロイせずに Actions からデプロイする運用を想定しています。ただ GitHub 側の障害もあり得るため、ローカルからデプロイができるように手順を準備しておいた方がよいかと思います。

まとめ

AWS SAM Application を GitHub Actions + OpenID Connect を利用してデプロイする方法を紹介しました。OIDC の利用は初めてだったのですが、IAM User を作成せずに一時 Credential を発行できるためセキュアに CI/CD パイプラインを構築できてよいですね。

参考記事

eh-career.com

zenn.dev

zenn.dev

gkzz.dev

https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect

GitHub上でのメンションをSlackに通知する

GitHub の Slack Integration の小ネタです。Slack Workspace に Integration を追加していて、/github subscribe owner/repo で subscribe している前提でのお話です。

GitHub の username と Slack の Display name が異なる場合、Issue や pull request 上で GitHub の username でメンションしても Slack の Display name に変換されません。 例えば GitHub username が enokawa で、Slack Display name が naoto_enokawa の場合、Issue/PR 上で @enokawa とメンションしても Slack では @enokawa と表示されるのみで、Slack 上で naoto_enokawa に対してメンションが飛ぶことはありません。

結論、/github signin することで GitHub username を Slack Display name に変換してくれます。ドキュメントにもその旨の記載があります。

At this point, your Slack and GitHub user accounts are not linked. You will be prompted to connect to GitHub. This is a primary step required to access the app. Alternatively, we can also connect by running /github signin.


Mentions will work only if you login to GitHub app in your Slack workspace. When you login to GitHub app with your GitHub id, we map it with your Slack id and ping you in Slack whenever you are mentioned in any of the GitHub notifications.

github.com

今回、チーム開発で GitHub を利用していて、コードレビュー依頼を pull request 上から行っても Slack に通知が飛ばなかったため、調査の上この設定を行いました。メンションを飛ばすために GitHub Actions や Slack の Webhook を用意するなどの記事を見ましたが、私たちのチームではこの設定のみで十分でした。

2022年5月

育児

1 歳 6 ヶ月になった。

  • 寝てる時にエアコンの風にやられて家族全員で風邪ひいた
    • 息子氏は鼻水と咳
    • GW 真っ只中だったので市の救急医療機関にかかった
    • 中耳炎になってるとのこと
      • 鼻吸い機の使い方間違えたかも
      • いつもよりめっちゃ泣いてたし電池変えたからパワーも増して耳に影響がいってたと予想
  • カラボにおでこを打った
  • 寝てる時に鼻吸いしたら泣きすぎて呼吸しづらくなった
    • そのあと夕ご飯に食べたお米を吐いた
    • 無理にやるべきじゃなかったごめんよ..
  • ステップ台から落ちて後頭部を打った
    • 支えられなくてごめんよ...
  • パパママの手を引っ張って歩く
  • トイストーリーの怖いシーン観てギャン泣き
  • パパママが座ってる時に手を引っ張ってだっこを乞う
    • 抱っこしないとギャン泣き
  • 園でご飯の準備が始まると真っ先に椅子に座る
  • 保育士さんからかわいいとよく言われる
  • 夜は添い寝しないと眠れなくなってきた
    • ベビーベッド卒業の機運
    • パパママと同じベッドに寝ると落ちる可能性がある
    • ベッドガードの購入を検討中
  • ドライヤーで髪をかわかすようになった
    • 今までは怖がってたから自然乾燥
  • ママが前髪を切ってあげた
    • 不揃いなパッツンだけどかわいい
    • 保育士さんも絶賛
  • 家族全員で夕食を食べることが増えた
    • 今までは息子氏に先あげてその後ママパパ
    • 食べられるご飯が増えてきたので
      • カレー、シチュー、炊き込みご飯、お魚などなど
  • 昼寝から起こしたらギャン泣きして吐いた
    • 咳してる時だったからかも
    • 先生に聞いたら反射みたいなものらしい
    • 口に指を突っ込むとオエっとなるのと似てる
  • だっこしてアピールが強くなった気がする
    • パパママの手をひっぱる -> だっこしてほしいスペースにつれてく -> だっこしてのポーズ(両手をあげて)
    • パパママつかれて座る -> だっこから降りる -> パパママの手をひっぱる... のループ
  • 小さいあんぱん 1 つたべた
  • ミートソースにトーストちょんちょんしたらマネした
  • ベッドで前転しそうな勢い
  • ベンチソファに登る

GW 初っ端から家族全員風邪を引いてしまった。ママの仕事も始まり、お互いに休みをとりながら看病したりした。月の半分くらいは保育園/会社を休んだと思う。 風邪の引き始めに保育園に預けたのがよくなかったなと思う。今後は引き始めにしっかり休みをとろうと思う。

仕事

いろいろやった。

  • Flutter アプリの UI 改善
    • とあるボタンの位置を調整
    • Stack と Positioned を利用して SingleChildScrollView や Container を配置
  • Flutter アプリのリファクタ
  • CloudFormation template 作成
    • RDS Parameter Group の Parameer 追加とか DynamoDB 作成とか ECS の AutoScaling とか API Gateway のカスタムドメイン設定とかを追加
    • あと ECS のデプロイパイプラインを CodePipeline, CodeBuild, CodeStar(GitHub v2 Connection)とかを作成した
  • とあるプロジェクトの開発フロー定義
    • CONTRIBUTING.md を書いた
    • ブランチ戦略や Issue/PR の作成、レビューの仕方などをまとめたガイドライン

2022年4月

育児

1 歳 5 ヶ月になった。

  • 保育園入園!
    • 引き渡しの時はぐずってた
    • その後はケロッとしてたらしい
    • 1 歳組は全員泣いてないらしい
  • 初日の夕方から鼻水たらたら
    • 風邪ひきました
  • コップ飲みがほぼサポートなしでできるようになった
  • おもちゃのスマホを耳に当てて「もしもし」をした
  • 最近はパパ好き
    • ことあるごとにギューしてくる(かわいい
  • 保育園で保育士さんに引き渡したあとスンする
    • まだ 3 日目ですが..
    • いつもはふぇ〜んってぐずるのに
    • 慣れてきたのかな 嬉しいけど少し寂しい
  • 玉子焼きを胸ポケットにいれる
  • 初湯船
    • あひる隊長を浮かべて遊んだ
  • 初めてパパと一緒に歯医者いった
    • これまではママといっていた
  • おでこで体温測るときにおでこを前にだす
  • 保育園でめっちゃご飯たべてるらしい
    • ほぼ毎日おかわりしてるみたい
  • チキンナゲット噛めた
  • OK?って言ったらOKって言い返してくれた
    • 2,3回くらい言ったから多分初めて発した言葉!
  • マクドナルドのポテト 2 本あげた
    • 少しずつ噛みちぎってたべる

保育園に入園した。初日から鼻水たれてバタバタだったけど、一時保育を経験していたのもあって慣れるのが早かった。 コドモンというアプリを使って保育士さんとコミュニケーションをとっていて、息子氏の様子や写真を共有してもらっているのだけど毎回「かわいい」となっている。

仕事

開発チームに異動した。詳細は別エントリに書く。

  • Vue3, Python, DynamoDB を利用したサーバーレスアプリケーションの開発のトレーニング実施
    • シンプルな CRUD を作成
    • DB を DynamoDB から Aurora Serverless(Data API)に変更して実装を変更
    • Vue は build した static file を S3 へアップロード
      • S3 は Static website hosting を有効化
      • Lambda は クライアントから API Gateway 経由で Invoke される
  • Flutter を利用したモバイル向け Web アプリケーション作成
    • Backend は Lambda(Python)
      • PR 2 本だして Merge された
    • Flutter 難しいけど少しずつ楽しくなってきた
      • PR 5 本だして Merge された