Small Changes

2022年9月の振り返り


Metadata


先月のアウトプットは2記事でした。

書きたいことは結構ありますが、それ以上にやりたいことが先行してアウトプットが後回しになっていますね…これは世の常なのかもしれません…

第2領域: 9月のかけた時間は79.35時間(先月:97.2時間)

先月に比べて約20時間くらい減っていますが、いい感じにパソコン触っているのでいい感じです。

先月に引き続き今月も自分の開発環境周りに時間を捧げていました。

やったことが多すぎてすべては説明しきれていないですが、ざっくりとは記事にまとめたので気になるひとはよかったら見てください。

ラン: 9月のランは5km

先月に引き続きランがおろそかになってますね。。

今月は台風だったり天気だったりいろんなものが重なって土日で走れないことが多かったです。

健康のためにも走りたいので週1で5kmを目標に走るというのをやめて、週3くらいで1回1.5kmくらいを細かく走るような感じでやり方を変えてやってみようと思います。

テーブル設計のときにイミュータブルデータモデル

WEB+DB PRESS Vol.130で「イミュータブルデータモデルで始める 実践データモデリング」という特集が組まれていて、同僚の人から結構良かったという声を聞きました。

自分もまだちゃんと読めていないのですが、実際の業務でも結構この話題が出てきてテーブル設計に反映した箇所などもあります。

著者の方が誰でも読めるようにScrapboxにまとめてくださっているのでちゃんと読まないとと思ってます。。

Dyson V7 Mattressが欲しい

最近また鼻の調子が悪くて頭も痛くなって考えたりするのがつらい日が続いたりしてました。

少し前にアレルギー検査したときにダニアレルギーだったので、おそらく布団のダニが原因なのでアレルギーの原因を取り除けるものを調べていたらDyson V7 Mattressがよさそうだなと思ったので、お金に余裕ができたら買いたい…

Windowsのセットアップ方法をgit管理

ソフトウェアインストールやAutoHotkeyの設定ファイルなどをgit管理してとりあえずこのリポジトリ通りにセットアップすれば同じWindowsの環境を構築できるようになりました。まだまだスクリプト化できそうなところはありますが、いったんはこれでいいかなと思っています。

オブジェクト指向設計実践ガイド読書会

4.2のパブリックインターフェースはテストするのところで、以前悩んだプライベートメソッドのテストをどうすべき問題について新たな気づきを得られました。

以前悩んだときは最終的にプライベートメソッドに対してテストを書かない選択を取りました。

ですが4.2を読んで改めて考えると、別クラス(例えば、計算クラス)のパブリックインターフェースとして切り出して、そのパブリックインターフェースをテストすればいいのかという気づきを得られました。

つまり、テストしたいプライベートメソッド(複雑なドメインロジックなどが含まれる)があるというのは、暗に別のオブジェクトが必要なことを示唆しているのだなと思えるようになりました。

Graphqlのエラーハンドリングの設計を頑張った

自社プロダクトでは、サーバーサイドでGraphqlを使用しています。

今までGraphqlのエラーハンドリングについてちゃんと考えるタイミングがなかったのですが、自社でそのタイミングがあったので試行錯誤しながら次のような設計にしました。

  • トップレベルのerrosを使用する

  • GraphQL::Schema#rescue_fromの層は、あくまでセーフティーネットのため、発生した例外に対応した最低限の情報を返すところまでにとどめる。複雑な情報を返す必要がある場合などは各mutationで正しくrescueする

このような設計にすることで次のメリットが得られました。

  • Graphqlのレールに乗っかれる(GraphQL::Schema#rescue_fromなどGraphQL::ExecutionErrorなど使える)

  • rescue_from層は最後のセーフティーネット、mutation層で想定される例外は正しく処理するという風に役割が明確になった

ほかにも細かいところだと、rescue_from層をモジュール化してテストできるようにしたり、mutation内で気軽にraiseできるのでsave!が使えたりと見通しがよくなったりなどのメリットもありました。

元々はdata内のerrosとして返すという実装で進めていたのでかなり大きな変更ではありましたが、後々のことを考えるとつらくなりそうな感じはあったので、思い切って振り切ってよかったです。

作業環境をDockerfileへ移行

先月の後半あたりで実際にプロダクト開発で作業環境はDocker化して運用しています。

細かいところをあげると安定して作業できるまでにいろいろあったのですが、今はかなり安定して開発ができるようになってきて、思い切って作業環境の設定やインストールなどの諸々すべてをDockerfileに移行してよかったなーと思ってます。

ただ、かなり大変だったのでほかの人にはおすすめはしません(笑)

仙台行ってました

仕事の関係で9月末は3日間ほど仙台に行ってきました。

仙台の美味しいものをたくさん食べたり、今取り組んでいるプロダクトの未来について話し合えたり、いつもはオンラインでやっている開発もオフラインで一緒に話しながら開発できたりとかなり有意義な時間でした。

また、1年気合いを入れて頑張っていこう思います!

References