技術とかの雑なToday I Learnedメモ

〜2023-02-18

〜2023-02-18

引っ越しを言い訳に一ヶ月ほどサボっていたので再開。

2/13

『フロントエンド開発のためのセキュリティ入門』という本を出版します! - 別にしんどくないブログ

(6) shisama / Masashi Hirano(@shisama_)さん / Twitter著の本。

正直セキュリティに関しては詳しいわけではないしこの本を読むべき対象の一人だと自分を評しているつもり。

8章の「ライブラリを狙ったセキュリティリスク」なんかは、ここ数年ちらほら見かけている。こういうところもこの本を読んで学びたいところ。

2/14

積極的な技術選定と消極的な技術選定 - uhyo/blog

学習コストと学習ハードル、理想と現実など色々なことを考える必要があるのだなあ。

ネガティブかつ難しい決定を組織のために行い、しかも知見として公開してくださる方々に敬意を表します。

本来ネガティブな決定をポジティブなように見せ、しかもそれで技術をネガキャンする方々には敬意を表しません。

自分がこれを完璧にできているかちょっと怪しいので、気をつけなければ。

安定して成果を出せるエンジニアへの近道 - yigarashiのブログ

自分は波があるというか、安定した成果とは無縁なタイプだという自覚があるので、この記事は非常に刺さりました。

その方法とは、自分が面倒を見ているシステムのコードをとにかくたくさん読むことです。そしてそれによって、「真似をしたら平均点が出せる」という無難なやり方のメンタルモデルを構築することです。

自分が携わるプロダクトのコードを読みまくるというのを案外やったことがなく、もちろん携わるので読むには読むのだけど、隅から隅まで読んだり、自分のタスクで担当した以外の場所を詳しく知ったりする機会は今まで少なかったように思う。

面倒を見ているシステムのコードをよく読み、チームの無難なやり方のメンタルモデルをよく構築することが、安定して成果を出す近道であるという議論を展開しました。単に既存のコードの信用情報に裏打ちされた仕事ができるだけでなく、さらなる学びやリードの踏み石としても機能することが期待できます。成長したいのに伸ばし方が分からない時は、素朴に目の前のシステムに100%の力を注いでみると道が開けるかもしれません。

目の前のコードをもっと読みまくろうと思います……。

2/16

microcms-js-sdkで404のエラーハンドリングができない

Next.jsのPreview Mode+Vercelでプレビュー機能を実現する | microCMSブログ

Next.jsのPreview Modeを使ってプレビュー機能を実装すると、本番環境ではプレビュー用の記事は一般ユーザーからのリクエストは404ページを表示する必要がある。

SSGしている記事のgetStaticPathfallback: falseにしておくとビルド時にすべてのパスを返すので、リクエストが来たときにそのパス群に一致しないものはすべて404を返せばよいということになる。

ただしプレビューモードはビルド時に存在しない記事をプレビューとしてキーを知っている管理者が見れるようにしなくてはならないので。fallback: trueに設定しなければならない。

fallback: trueにすると、存在しないパスにリクエストが来たときにgetStaticPropsが実行されるので、その中で404の場合の分岐処理を追加し、404を表示するためのコンポーネントをpagesで返すようにしなくてはいけない。

ここで困るのが、microcms-js-sdkのGETリクエストに対するエラー処理の部分で、

microcms-js-sdk/createClient.ts at main · microcmsio/microcms-js-sdk

この部分でステータスコードが200以外の場合すべて500エラーとして扱われてしまう。

そのため存在しないURLにアクセスするだけで500エラーとなってしまいSentryにログが送信され続けていたしユーザーにはInternal Server Errorの画面が表示されてしまっていた。

なのでmicrocms-js-sdkのfetch用のクライアントは使わず独自でAPIクライアントを作り、型などをmicrocms-js-sdkから引っ張ってくることで対応とした。

2/18

Volta使い始めた

Node.jsのバージョン管理にVoltaを推したい

前々から名前は知っていたけど初めて使った。

asdfを使っていたけど、基本的にNode.jsしか使っていないので他の言語の管理はいったん置いておいていいかなと思って使い始めたが、とにかく速い。

プロジェクト毎のバージョンをそのプロジェクトのpackage.jsonに追加して管理するため、バージョン管理用の別のファイルが不要なのも嬉しい。

あとnpmやYarnのバージョン管理もできる。すごい。