2022年11月28日月曜日

TypeScriptとReact/Next.jsでつくる実践Webアプリケーション開発 を読んで

 



仕事でNext.jsを使うようになったのですが、いまいちよくわからない。

そこで今回以下の書籍でNext.jsを勉強しました。


1章では「Next.jsとTypeScriptによるモダン開発」という題ですが、

Next.jsだけでなく、フロントエンド開発の今までの流れも説明してくれて

最近いきなりnext.jsを使いだした私にとってはうれしい出だし。

概要を知ることができました。


最後には、TypeScriptやReact Next.jsの基礎を学んだあと、実際の開発環境構築や、最終的には簡易ECサイトを作ってデプロイするところまで面倒見てくれています。


普通に個人で勉強する分には、十分すぎる内容です。


ただ


どうもすっきりしません。


なんでかなーと思って自分の心の中を整理してみました。



懸念点について

リリースがVercel利用前提

VercelはNext.jsの開発元が公開するホスティングサービスで

CI/CDもサポートしてGithubとも連携して至れり尽くせりの機能なのですが、、、

商用利用では有償サポートに入らないといけません。

もともと、Javaで開発だと今まで通りだよね。Next.jsで新しい環境にチャレンジしたいねと

いうことで始めたため、Vercelの利用料金まで開発時に含めていませんでした。


商用利用なんだから、契約しちゃえばいいじゃん。


とお思いの方も多いと思いますが、1人当たり20ドル/月。

開発期間中は開発メンバー全員入れて、保守に入ったら減らすか、、、?

それともVercel使わずなんとかできるものか?

としらべていたら、もうすでに実践している人が

メンテモが Vercel を剥がすまで (経緯編)

メンテモが Vercel を剥がすまで (移行作業編)

特に移行編がすばらしい、Vercelから移行するために、以下の機能を自前で用意しないといけない、ということでまとめてもらっています。

Vercelからの移行を完了させるには最低でも以下の機能の代替を探す必要がありました。

デプロイ環境

実行環境

CDN

環境変数・機密情報の管理

確かにどれも重要で、開発期間が短かったり、対応できる人員が少なかったりすると

1人当たり20ドル、、、2000円?でこれを準備できるとすると、、、、格安か。

一人雇うと、1カ月当たり、、、70万とかかかるから。

でもな、、、

それでも自前でやりたいな、、、

他に様々なデプロイ方法・環境がある模様

Amazon S3とCloudFront

Netlify S3

AWS Amplify

serverless-next.js

App Runner

だめだ、、、どれいいかわからない。。。


サーバ側がJSON Server前提

今利用しようとしている外部APIが、POSTしたら普通にパラメータがレスポンスで返却されるシステムなので、JSONではありません。。。

すべて今風の環境で想定されているため、この書籍ではJSON Serverを使用されていますが、私の今回の環境には合わなかった。。。

CSR SSR SSG どれを使うべき?

「3.7 Next.js のレンダリング手法」というところで、

SSG CSR SSR ISR の4つを説明してくれています。

図もありとても分かりやすい。

例も紹介されており、通常の開発ではこの説明だけで事足りそう。

でも、今回の私のシステムでは、どれを使うべきかが確定できない、、、

これは知識不足によるものなのですが、、、、


最初APIから取得すればもう変わることがないもの→SSG

毎回最新とってこないとだめなやつ→SSR


となると、ISRは?

毎回ってほどじゃないど、時々最新化しないといけないもの→ISR


・・・そんなのあるか?


ECの購入者数とか、他の人のお気に入り数とか、わりと最新情報でなくてもよいものとかかな、、、


バリデーションが大変そう

6.5.5 テキストエリア TextArea でバリデーションを行っているのですが、最小行数の定義に8行使っていました。

他のチェックも必要なので、あっというまにソースコード1画面を超えてしまいそう。


Spring Bootだったら、、、

  @NotBlank

  @Length(max=32)

  private String aame;

でアノテーションでサクッとできるけど、、、

これはこういうものなのか、、、、


脆弱性診断やペネトレーションテストどうする

この本にここまで求めるのは難しいと思いますが、
実際に脆弱性診断やペネトレーションテストをする場合にどうすればいいか、
一例ほしかったな、、、


自分で調べてみると、、、
OWASP ZAP が無料で非営利団体が公開してくれているのでつかってみたいかな。。。
脆弱性診断としても出てくるし、、、ペネトレーションテストとしても使っている人がいる、、、まずはOWASP ZAPでためして、余裕があれば他の物もためすかな、、


まとめ

まだこの書籍のコードを写経していない状態ですが
それでも様々なことが体系立てて学べました。
さらに実装の勉強もすれば、さらに役に立ちそう。おすすめです。