はじめに
今のところアドベントカレンダーでしかQiita記事投稿できていないsts-sd2改め、suger4です。
本投稿はラクスアドベントカレンダー 15日目の投稿になります。
前回は、@FlatMountainさんのAndroidで歩数計アプリを作ってみた話でした。
さて、本題ですが、今年はエンジニアとして、多方面にいろいろなことを経験しグッと成長できた実感があった1年でした。
あの時期あんなことやったなぁと振り返る意味を込めて、このネタで行きたいと思います。
※自己満足性が高く、淡々と文字が並ぶ記事になっておりますがご了承ください。
suger4の2020年
4月:負荷テストのためにJmeterを試す
オンプレの外部ツールの負荷テストを行うために、Jmeterのscenario作成やデータ作成に勤しんでいました。
このあたりからチーム内のJmeterおじさん化が始まり、Jmeter周りでちょこちょこ対応する機会が増えてきました。
でかいデータの入った環境が欲しいと言われ、素直にそのまま準備をした結果サーバのハードディスクを満タンにしてしまったのは今やよい思い出です。
※関係者の皆様、その節はご迷惑おかけしました。m(_ _)m
5月:suger4、初めてのリモートワーク
世間的にも自粛のムードが高かったこともあり弊社デモリモートワークになっていましたが、個人的にはあまり長いことこの状況はつらいなぁと思っていました。
通勤時間が無くなって自分の時間が増えるこれは間違いなかったのですが、
環境が変わらないためかプライベートと仕事のON/OFFも無くなり、
集中もし辛く、自宅の椅子は収納スツールのみ。
これは仕事する環境ではないなと。。。
また、画面越しのコミュニケーションは私の所属するチームにはあまり向いていなかったのかも、とも感じました。
もちろん通話することもできましたが、サクッとチャットで話題を振ることの方が多く、
結果的に話の方向がズレていたり、きちんと相手に伝わっていなかったりといったこともあったように思います。
6~7月:ドメインモデルの迷宮に足を踏み入れる
次バージョンで開発する機能からドメイン駆動設計(DDD)を取り入れた開発をしていこうということで、DDDの書籍を読んだり、社内の勉強会に参加したり知識をため込んでいる期間でした。
駄菓子菓子、業務ドメインをモデリングしていく過程が難しかったです。
DDD自体チームとしても初の試みであり、そもそもドメインモデルの何たるかもわからずの中、手探りで各々メンバーから「あーじゃないか」「こーじゃないか」「いやいやこれはコア業務だからこっちでしょー」のような会話が飛び交うMTGはみんなでモデルを良くしている感じがして、個人的には楽しかったです。
結果的に出来上がったモデルはまずまずといった出来になったと思います。
これからはモデルのブラッシュアップ力が試されることでしょう。
8月:suger4、既存機能の仕様に泣かされる
この時期はガツガツ実装していました。
どこでもあるあるかもですが、既存の仕様に泣かされ、**1からやり直し!**が発動したのもこの時期だったと思います。
ある機能で単発実行していたものを一括実行もできるように機能追加しており、当初は既存の機能をループさせれば行けそうということはわかっており、見た目上の動きは行けてました。
駄菓子菓子、既存の仕様の一部(多機能に関連する部分)はただループ回すだけでは意味がなく、このままではダメなことが発覚、一時思考停止ののちどうするか検討して対応しました。
もっと仕様を理解せねば、再利用性高く機能は作らねば、そう感じさせられる事件でした。
9月:成功しないユニットテストを必死に直す
機能を実装すると、その機能の品質を担保するためにユニットテストを書くわけですが、
私が実装したユニットテストが、ローカルでは成功するのに、定期実行しているサーバ側で実行するとなぜか落ちる事態が発生。
原因調査をコツコツやっていました。
テストデータが悪いのか?テストの実行が起因しているのか?複数の仮説をもとに調査していましたが、原因は「キャッシュに保存したデータを取ってくるロジックが動いていた」でした。
なまじテストコードが起因でなかっただけにすぐにわからず・・・結構時間を使ってしまいました。
こういうこともあるんかと、経験値が溜まりました。
10月:suger4、初めてのReact
今後の新機能の画面イメージ(モック)を素早く用意したり、フロントと、バックの分離による開発速度の向上を求めて、Reactのコンポーネントパターンについて情報収集と、どれくらいいい感じなのかとプロトタイプを作成してみました。
コンポーネントパターンはかなりよさげだなという印象を受けたのですが、コンポーネントがそろっている前提がないとうまみが得られないと感じました。
コンポーネントさえそろえることができれば、プロジェクト内でUIをそろえることも可能ですし、細かなところで悩む。といったことは減ってくるように思えています。
この取り組みは、継続してコツコツやっていきたいですね。
11月:PostgreSQLのパーティショニングで検索性能改善を試みる
ある画面で表示している情報の検索性能(SQLの速度)が悪く、今後の機能改修や利用者増加に耐えられなさそうということで、何とかして性能改善したいと、調査をしていました。
まず考えられたのが、表示するデータ範囲を制限すること(今まではあまり制限なく全件検索っぽくなっていた)、検索キーのインデックスを用意することでした。
これらは明らかに早くなりそうな気がしたので、以前社内で話題になったパーティショニングはどうなんだろうかということで少し手を突っ込んでみました。
が、結論としてはパーティショニングは無しということにしました。
というのも、パーティショニング用のテーブル構築や運用コストが高かったことと、これらのコストに見合う性能改善がみられなかったことが要因です。
調査の結果取り入れることができないという判断になったことは残念ですが、効果とコストを見比べて適切に判断を下す。という経験は今後の業務でもきっと役に立つことでしょう。
2020年総括
ここまで私の自己満足にお付き合いいただいている方はきっといないと思いますが、総括をば。
はじめにも書いたように、2020年は新しい技術を使ったフロント・バックの開発、外部システムの技術調査など、密度の濃い1年になりました。
多くのことに手を出したおかげか、自身の発言にも多少自信を持てますし、いろいろな方面から立てた仮説にもブレ(的外れ感)が少なくなってきたように思います。
エンジニアは学習し続ける生き物だと思っているので、2021年も貪欲に新しいことにチャレンジしていきたいですね。
では、ラクスアドベントカレンダー 引き続きお楽しみください。