2022後半振り返り
2022-12-28
- 振り返り
- 技術
技術関連
9月に転職して現職に就いたため、今年の後半は環境が大きく変わった。
リモートである部分は変わらなかったので(一部でなく完全にはなったが)、
macbookをクラムシェルで使うためにTrackPadとかAirPods Proとか周辺諸々を揃えたので出費も多い四半期だった。
転職前
2022前半振り返りと被る範囲が大きいので薄めに
- GitHubActionsベースのJest+Cypressを使用したテスト環境・ECSデプロイの自動化
- Nextプロジェクト立ち上げの環境周り整備(Cypress→PlayWright採用への切り替え)
2番目が結構大きく、Svelteを採用するか迷っていたプロジェクトの立ち上げに参加し、
フロント側の検証(ビジネス要件に即すか)とか環境づくりを主に担当した。
LP程度であればSvelte自体は好みかな?という感じだったがエコシステムがまだ微妙である事、
学習コスパが良くないこと(枯れ・将来性の意味で)、パフォーマンス重視だがSSGだけでなくSSRも取り入れたいなどいろいろな要件からNextを選択することにした。
また採用事例のあったCypressだがGitHub Actions上で稀に原因不明のエラーが出ていたこともあり色々調べていくと、
内部的にawaitがかなり走っていることから実行環境側のパフォーマンスに依存して内部タイムアウト制限に引っかかることがあるようだった。
ある程度はE2Eの書き方でカバーできるがwaitを入れたりとか時間がかかる動作についてはタイムアウト制限を長くする等の職人芸が必要になり、
(ここが一番重要だが)自動テスト化している部分が転けた原因を探す際の切り分けが面倒でより新人がエラーを理解しづらい可能性が高かったため、
ほぼ同様の書きっぷりでE2Eが実施できるPlaywrightを試してみた。
使用感はかなり良好で、少量のコードでブラウザ切り替えが実施できたり複数回実行が安定していることもあり今後E2E場合はPlaywright一度かなと思う。
Cypressは有料版or短期無料版を使用してE2Eの実行ログをクラウドダッシュボードから確認できることがメリットではあるが、
自動テスト実行時のGitHub Actionsログに必要なものは残るためあまり良さを感じなかった。
転職後
- Firebase関連の使用経験(Firestore・Functions・PubSub・Cloud Storage)
- Firebase Emulatorを使用したユニットテスト経験
トレーニング・リファクタリング含めてFirebase周りは結構触り、ある程度やりたいことにはこれを使うだったり組み合わせて色々できるようになった。
感覚的にはLambdaとあまり変わらないがイベントハンドラーに癖があったり、SDKのバージョンで書き方がガラッと変わってたりする部分については少し使いづらさがあった。
ただ一度なれてしまうとFirestoreとAuthentication・CloudStorageの一貫で使える利便性がかなり高いので確かに多く採用される理由はあるなと思った。
特にユニットテストで実際のDBを使用した書き込みテストを実施する際、Emulatorを使用することでAWS等のように別リソースを立てて設定して・・・等がないのはかなりメリットに感じた。
AWSリソースは似たサービスのメリデメ比較・組み合わせ合わせ考えるのが面倒・課金周りが難解なので初速は出にくいが後方拡張が可能。
Firebaseリソースは限定された機能であれば利用が簡単、SDKの癖が強い、良くも悪くもFirebase Emulatorが使えるので初速は出しやすいが実現したい物が高度な場合、
Firebase内で完結できないこともあるので一長一短かなって感じではある。
- Clean Architecture+DDDの実践
- TypeScript言語系の活用(Generics・UtilityType)
- TypeScriptツール系の活用(ts-mockito・TSyringe)
期間開発だと実装期間が短いこと・ビジネス側が期間や開発人数を決めるため機能以外の部分に力を入れづらいことや、
そもそも全員がスキル高いとは限らないためアーキテクチャ的な知識がないメンバーもいることから、現職でアーキテクチャを学べているのはかなりプラスになっていると思う。
アーキテクチャを意識すると言語仕様にも目を向け必要があり通常開発では出番の少なかったGenerics・UtilityTypeなども今ではガンガン使っている。
ドメイン駆動設計に関しては未だ実践学習中のため、分離・テストなどDDDに付随する作業をどう早く正確に実施できるかが今後の課題になるかなと思った。
- 社内ツールNextへのRecoil導入
ここについては過去触ってた部分もあるので作業としては比較的楽に実装できたが、フロントエンドにおけるグローバル状態管理に何を使うべきか?の部分を
過去の検討でショートカットした上でどう実装したほうが環境が汚れないか?(componentsにできるだけ隠蔽し、
該当モジュール以外は使いたい範囲をComponentで包む部分のみ外部に記述が必要とする)を考えながら実装できたのは良かったと思う。
生活系・その他
もう少し技術記事書きたい
特に年後半は業務周りの知識だったり足りない部分のインプットが中心で、アウトプットは社内報でできている分満足していたがやはり業務色がない知識としては記事にして残しておきたい。
検証して結果が間違ってないか調べてわかりやすく書いて・・・とある程度のレベルまで書こうとするとかなり時間がかかってしまい公開が面倒になるので、2h程度でかけるような軽めな物を書いていくようにしたい。
健康系
こちらも年後半で体調を崩すことが多少あり、筋トレ中心から有酸素中心にして体力づくりをする意識に変更した。
ウォーキングマシンを買ったりして以前よりも続いているので継続していく。
PFCバランスについては意識変えておらず、肌のためにもよりプロテインの摂取に努めたい。
引っ越し
未だに決まっていないが条件はある程度絞れてきたと思う。
- 作業部屋とその他部屋を分ける
- ペット可
- 騒音対策ができる部屋(大通り沿いでない・鉄筋)
細かい部分はあるがこの点はマストで、目上の人とも相談する機会があったがやはりトレンド的に良い場所を選んで
高いお金を払うよりはリモートであることを生かして安く広い場所に住む方にも傾きつつあるので、バランスがいいところを選んでいきたい(山手線沿いの比較的安価な場所とか)