ravelll の日記

よしなに

2021年まとめ

2021年お疲れ様でした🎍

仕事

2020年と同じ新規サービスを開発するチームに所属し↓を主にやっていた。

開発用環境・本番環境の構築

K8s manifest 書いたり Terraform で必要なリソース作ったりアプリケーションの実装を調整したりして、管轄するサービス群を K8s cluster 上で動くようにしたりデプロイできるようにしたりした。開発環境を作ったのは2020年だったかもしれない。

多くの作業は社内にノウハウも自動化の仕組みも整っておりマニュアルに従って簡易な PR を出して回るようなものだったが、K8s cluster 上でジョブやアプリケーションを動かす際のデバッグ力が上がったのは良かった。

機能開発

Microservices 構成の Web API たちをいじっていた。アーキテクチャは社のミートアップで話した際のスライドに書いた。

speakerdeck.com

現チームの機能開発は他チームと連携が必要なことが多く、手を動かしている時間と仕様について議論している時間が半々くらいだったような気がする。議論は日々至らなさを感じているところで、領域によってはついていけなくなることも少なくない。現チームではそれなりに広いドメイン・レイヤーを扱っており、その領域に散らばる5個前後のトピックについての議論や開発が並行して進むような状況で、それぞれの進捗や必要な前提知識を保持することに苦戦している。この辺 feature team 体制にすると解決される気がしている。

実装面では REST(ish) な API を書く機会がほぼなくなり、GraphQL 漬けの1年だった。GraphQL を使うことで REST API で生まれがちなクライアントが要求するリソースの親子関係のバリエーションを実現する冗長な実装が不要になったり、クライアント開発者も記述できる共通言語でインタフェースの議論ができたり、それらの特徴により usecase-based な API の設計・開発がしやすいと感じていて気に入っている。

負荷試験の計画・実施

開発中のシステムはリリース直後からそれなりに多くのユーザーが利用することが見込まれているため負荷試験を実施することにした。

タイミングが良いことに負荷試験は社内のホットトピックの1つで、基盤がほぼ整っている状況からスタートすることができありがたかった。自身では本を読んで基礎知識を付けたり、マーケターや PM、QA と会話して負荷シナリオを決めたり、Scala で Gatling のシナリオを書いたりした。スケジュールが逼迫している中で初挑戦の言語を書くのは楽しさ3割苦しさ7割といった具合だったが、なんとかハードリミットには間に合いそうな状況になり良かった。負荷試験ドメイン知識からアプリケーションの実装、ミドルウェアの設定や監視など幅広い知識が求められ、これまでチームで得てきた知識を総動員しつつ +α を日々補完する状況で楽しい。

転籍

事業譲渡に伴って 2021-10-01 から所属する会社が変わった。就業環境にも色々と変化があり、良いことも悪いことも色々あった。

昇級

ありがたい事に昇級して昇給した。後述するように体調がよくない1年だったのだけど、最低限を超える成果は出ていたようでホッとした。今期はより広い領域を見るより抽象度の高いミッションを持っているので頑張るぞ。

その他生活

新居

2020年11月に現居に引っ越してから1年以上が経った。部屋はとても快適で、家賃は上がったものの引っ越して良かったと心底思う。良かった点は色々あるが、地上から離れていて静かなこと、ゴミが24時間出せること、リビングが広くなったこと、業務にあたる部屋に空調機が付いたことあたりは特に QoL 向上に寄与していると感じる。

健康

2月ごろに大きく体調を崩してしまった。当時は就業するのもギリギリな日が多く休職も考えたほどだったのだけど、業務のアクセルを緩めつつ通院を始めたことが奏功してか、幸い秋頃にはだいぶ落ち着いた。そんなこともあり2021年は回復に主軸を置いた1年だったけど、2022年はもう少し ““動”” の1年にできたらいいな。

進学

去年のまとめで D 進について触れていたが、今は気持ちがほぼ無く、引き続き職業プログラマーをやっていこうと思っている。

買い物

Shokz Aeropex

Shokz (旧AfterShokz) Aeropex 運動用の骨伝導イヤホン – ShokzJP

就業日は毎日お世話になっております。装着していても周囲の音が聞こえるので荷物が届く日も安心。接続も安定していて最高。いつの間にかブランド名が AfterShokz から Shokz になっていた。

Apple iPhone 13 Pro

iPhone 13 ProとiPhone 13 Pro Max - Apple(日本)

iPhone X からの買い替え。バッテリー残量を気にすることが皆無になり良かった。

象印 加湿器 EE-RQ50-WA

スチーム式加湿器 EE-RQ型|商品情報|象印

湿度が低いと暖房を付けてもなかなか温まらなかったり喉をやられたりするので購入。思ったより稼働音が大きかったけど大きな不満なく使えてる。水は非常用給水袋を使って部屋まで運んでます。

パナソニック ドラム式洗濯乾燥機 NA-VX900BL-C

ななめドラム洗濯乾燥機 NA-VX900BL 商品概要 | 洗濯機/衣類乾燥機 | Panasonic

遅れてきた我が家の革命児。洗濯物を干す・取り込む工程を無くすことがこれほど QoL を向上させるとは思わなかった。本当は NA-VX800BL を買う予定だったのだけど、買おうとしたタイミングで安価で売っている店舗の在庫が切れており NA-VX900BL の最安値とほぼ同じ価格でしか変えなかったので NA-VX900BL を購入。シャツを洗濯乾燥するとシワッシワになることだけが困りポイントなのだけど、別途スチームアイロンでシワを伸ばしてカバーしている。

ゲーム

桃太郎電鉄 ~昭和 平成 令和も定番!~

妻や知人と遊んだ。妻と99年遊ぶぞとしばらくやっていたものの30年くらいでやめてしまった。

SaGa Frontier Remastered

発売を心待ちにしていた作品。全主人公クリアして隠しボスに向けてパラメータ上げたり装備品を回収したりしているうちに気づけば隠しボスに挑むことなくやめてしまっていた。

真・女神転生V

衝動的に買った作品。シヴァを倒さず1周目をクリアして現在2周目をプレイし始めたあたり。シリーズ過去作を遊んだことはなかったのだけど、すぐに全滅する難易度設計でやりごたえがあり、のめり込んでプレイしていた。ボスを倒して思わず歓喜の声が出るような難易度の RPG ゲームは初めてだったかもしれない。荒廃したマップとそれにマッチする BGM が醸し出す雰囲気がとても良かった。

beatmaniaIIDX INFINITAS

新居でもプレイ音が問題にならなかったのでよく遊んだ。今はゲームセンターで遊ぶことが多くなったのでプレイ時間は減ったが、普通に遊べて便利。

2022年

前述の通り2021年は静の1年という感じだったので、2022年は動にできると良いですね。みなさま今年もどうぞよろしくおねがいいたします。

『Amazon Web Services負荷試験入門 ――クラウドの性能の引き出し方がわかる』を読んだ

業務で負荷試験をやっていく必要があり基礎知識を付けるべく読んだ。

負荷試験は試験と改善のサイクルを回すプロセスであることをはじめ、想定される負荷をシステムが捌けるかどうかのみを確認するものではないこと、健全に負荷がシステムにかかっていることをどう確認するか、ボトルネックをどう当たりをつけていくかなど、計画・実施・結果共有までの負荷試験のステップ全般について知見が書かれていて学びが多かった。

タイトルには AWS とあるものの、クラウドプロバイダやサービスに寄らない負荷試験の考え方が多く書かれていた印象(もちろん AWS のサービスの詳細に踏み込んだ内容も多く書かれている)。

Raspberry Pi + Netatmo で二酸化炭素濃度モニターを作る

部屋に Netatmo の Smart Home Weather Station を設置して気温や湿度、二酸化炭素濃度などを測定している。

測定値は Web 上の Dashboard ごしに見ることができるのだけど、PC を開いていないが値が気になるとき、具体的には集中を要するゲームをしているときにサッと値を見づらく少し不便していた。ちなみになぜ値を見たいかというと、集中力の持続と部屋の二酸化炭素濃度との関係が気になったため。

これを解決すべく、まず iOS のショートカット機能で Netatmo の API を叩いてワンタップで測定値を見れるようにしてみた。

ショートカットを使うのは初めてで思った以上に色々できて面白かったのだけど、iPhone を手に取りワンタップして数秒待って測定値を見る、というのが面倒で全然活用しなかった。

何かを操作することなしに値を見るには、と考えたときに棚で眠っている Raspberry Pi に小さなディスプレイを付ければ CO2 モニターを作れるのでは?と至り、作ってみた。

機材は Raspberry Pi 3 (Model B) と 1602 の LCD ディスプレイ。

Raspberry Pi 3 MODEL B

Raspberry Pi 3 MODEL B

  • 発売日: 2016/05/31
  • メディア: Personal Computers

Netatmo の API を叩いて結果をディスプレイに出す部分は atmo gem と i2c-ss1602 gem を使って ruby でシュッと。コードはこちら。

GitHub - ravelll/pi-co2-monitor

成果物はこんな感じ。1分ごとに値を更新してくれる。

f:id:ravelll:20210517214347j:plain
raspberry pi co2 monitor

そんなこんなで、無事要求が満たせるものが作れて良かった。早速活用してみたところ、ゲーム中の部屋の二酸化炭素濃度は 1500ppm 前後と高めの値を維持する事がわかった。今度は上手く換気をしつつプレイして感覚に差があるか確認したい。多分差はないと思う。