はじめに
2月も終わり、2025年も1/6が終わりました。
花粉が飛び散らかして、やかましいです。
新生活も始まる人も増えてきて、やたらと忙しくなりつつあるのではないでしょうか。
私も前職を辞めて Web系のエンジニアになってから半年も過ぎて
職場にも多少慣れてきたところで、早7ヶ月です。
ではいつも通り振り返っていきましょう
2月の総括
こういうのはまとめて最初は一言がいいのでしょうが、箇条書きで。
- backendを触れることになった
- frontendのテストを少し理解できた
- jestのmockに苦戦している
- 頑張っていれば何かしら発見がある
- 本番をバグらせた
- 打席にはできるだけ多く立つべき。
- 失敗してもそれでもめげずに成果を少しづつ積み上げていくべき
- table plusめっちゃ便利。
- rubyでleetcode(neetcode)を解き始めた
- 同棲のための準備が忙しくなりそう
ですかね。
個人的には backendにも触れるようになったということがかなりでかかったです
もちろんまだそんなバリバリというわけではないですが、
小タスクを順調に消化していけてるなと感じています。
Rails全く触ってなくて、忘れそうだー、と少し前まで嘆いていたのが
今は改善されつつあり、最近ではleetcodeをrubyで解けるようにもなってきました。
入社時点に比べて着実にレベルは上がっているなと感じます。
ではいつもの如く、メンタル、frontback infraと分けてやっていきます。
非技術面
打席には立つべき。ただ何度もあると思わないこと。
よくいう言葉ですね。打席には立つべき。
自分もそう思います。
頭だけでの計算とかで済まさずに実地での経験の方がよく身につくからとかいうものです。
そのため機会が与えられているなら積極的に立たせてもらうべきです。
そしてなんとしてでもやり切ること。
これはどの仕事においても言えることですね。
「こんなん無理や!」と投げ出したくなる時もあるかと思います。
そしたら投げ出してみるといいです。多分一気に信頼無くなります。
そしたら仕事振られなくなります。
ただそうする前に他の人を頼るべきです。そしたら何かしら手を差し伸べてくれるはずです。
ただその時にもベタベタとすがりつくのは辞めましょう。
「どこどこのここがどうわからない」というふうに聞き手がわかるように努めましょう。
それができればいずれ自分のためにもなります。
兎にも角にも全力でやりましょう。
それができないなら次のように考えを改めるべきです。
感謝をすべき。
よくアスリートとかそういった類の人が
「今日ここまでこれたのは支えてくれたみなさんのおかげです」とか言うじゃないですか。
自分はそれを聞いて、「いや自分の努力してきた結果でしょ、何聞こえのいいこと言っとるんじゃい」とか思う
ひねくれクソガキだったのですが最近そう思わなくなりました。
「なるほど、確かにその通り」だと。
人間、自分だけにベクトルが向いてると、こういう辛い努力とかしている時に
投げ出しやすくなります。少なくとも自分はそうです。
「別に良くね、やんなくても」と言ったように。
ただこの時にその行動をする目的、意義というものを自分から他のものに向けると
継続できる、やり切れることが多いです。
「あの人の期待に応えるために」とか「彼女のために」とか
「せっかくこの未経験に仕事くれてるのだから」とか。
「ありがたいことに仕事もらえてるんだからなんとしてでも」みたいな。
なんでもいいです。自分ではない他のものにベクトルを向けてみてください。
そうしたら多分やり切れると思います。
自分に向けたくなっても必死に他のものに向け続けることです。
と、最近うまくいっていそうな人、そうでなさそうな人を見ていて思いました。
多分そうでなさそうな人は感謝してないんだろうなと。
それでもそういうふうになる人はんー、まぁ頑張ってください笑
自分もしてしまっていたことがあったと思うのでこれを機に気をつけようかと思います。
技術面
frontend
shadcn のdialog、黒背景クリックしても閉じないようにする
これ意外と実装するの難儀だったのですが、公式に書いてありました。
ShadcnのDialogにおいて黒背景クリックで Dialogを閉じないようにするためには DialogContentに次を設定すればいける。 radix-uiに書いてあった。 onInteractOutside={(event) => { event.preventDefault(); }}
これをするとならなくなります。
今まで渡したonOpenChangeのfalseの時の挙動で制御しようとしていましたが、
これだけでいけるっぽいです。
jestとreact-testing-libraryについて
最初、frontendのテストって何がいるのかな、というところから始まりました。
そしたらHCのCTOに聞いて秒で解決したので、いただいたドキュメントをもとに読み進めていくと
現在のfrontendテスト界隈においてこのjestとreact-testing-libraryはこれがほぼ標準だということです。
テストをするならこいつらでしょ、というレベルです。
そもそもfrontendにおいて何をテストするのか、したいのかということを理解すると
この子達の必要性もスッと入ってくると思います。
自分はえ、rspectみたいに1つだけじゃダメなのとか思っていた人間だったので。
で、frontendで何をテストするのかというと、主に次の通りだと思います。
- ロジックうまく言ってるかな
- ちゃんと描画されてるかな
1つ目に関してはわかると思います。
問題は2つ目ですね。描画するにもボタン押したら何かが開くとかそういうことをテストする必要がありますね。
となるとその描画している要素を取得する必要がありそうです。バニラjsのgetelementbyidみたいに。
でこの時に
- 「取得した要素の存在確認(あるか否か)」とか
- 「取得した要素がこういう値を持っているか」とか
- 「ロジックの返り値がこれか否か」とか
総じて「結果の判定」だけであればjestの管轄なのですが
その結果を判定するために必要な要素の取得や実際にrenderingするとなるとjestでは賄いきれません。
これは困ったということで、そこでreact-testing-libraryが出てくるわけです。
以上のことから frontendのテストでは一般的に "jestとreact-testing-library"が必要というわけです。
expectとかitとかrenderとかtoBeとかいろいろありますよね。
今使う段階になったら辞書的に少しづつ調べていくという感じで進めてます。
まだ消化しきれてないので来月くらいにはできるようになっているのではないでしょうか。
cssで クリック制御ができるっぽい?
cssのpointer-events: autoとかnoneとか。
[CSS]pointer-eventsプロパティですごい便利に!クリックやホバーのターゲットになる要素を変更するテクニック | コリス
dialogをこれでもかといじり倒していた時に Dialogに設定されていたcssを紐解いて行って見つけました。
javascriptでないとできないようなことが、cssでもできるようになったっぽいです。
深掘りできてはいませんが使えはしそう。
まだあるけどキリがないので。
backend
nilにはご用心あれ。
こいつのせいで初めてのbackendの中タスク mergeした後本番をバグらせました。
mergeしたら、ことごとく undefind method nil classみたいな。
社内リリースだったからまだ良かったものの。
焦り散らかしました。
typescriptだとほぼほぼ回避できそうな事象だと思うので
改めて型付きの言語はさすがやと思いました。
結局自分が実装したところにことごとく「ボッチ演算子&」をつけると機能したので
何はともあれよかったです。
「nilの可能性があるものに関しては &をつけてエラーを回避しましょう」
ということを身をもって知りました。
今まで「なんでこれつける必要があんの」とか舐めてたツケが来ました。
二度とやりません。
業務に関してはこのくらいですかね。
特段かけることはないですね。ドメインに関わることもあるのでこのくらいで。
tallyとかいうメソッド
こいつはleetcode専用メソッドじゃないですかね。
rubyで最近leetcode進めていく中で見つけたメソッドです。
どういうものかというと配列に作用させるメソッドで、配列内の要素をカウントして、
その要素をkeyに、その要素の出現回数をvalueという形にしたhashを返してくれます。
問題はその出現回数が多い順に上からkこ取り出してその要素を配列として返せということだったので
そこからガチャガチャやりましたが、知っていると知らないとでは差が歴然でした。
hashのvalueでsortする sort_by
こいつもleetcodeから取り入れた知識。
sort_byです。hashに作用させるとそのkeyとvalueを配列にして、valueをsortし、
各配列を1つの配列に閉じ込めて返してくれます。
こいつも知ってたら便利でした。
インフラ
今月は特になしです。無念
終わりに
ということで7ヶ月目の振り返りでした。
qiitaの記事も書いているし、ブログの記事も書いているし、
xのツイートも続けているし、
いい感じに続けていけてるのではないでしょうか。
一応今1年目ですが、時間なんてあっという間に過ぎるので
これからも頑張っていきたいです。
3月の目標としては
- jestの理解(まとめ記事書けるように)
- rspecの理解(まとめ記事書けるように)
- x_clone課題を3つは進める
あとは実務を着実にこなしていこうかと思います。
ということで頑張りましょう。
現場からは以上です