react-jsonschema-form
Create React App
『技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL』
React18
React Reconciliation
あれ
ReactとWebRTCを組み合わせるとなぜかすぐに接続が切れてしまっていて、なんで途切れるねーんってなってたんだけども、RTCPeerConnectionをちゃんとuseStateで保持したら途切れなくなった。GCにさらわれてたんだろうか。
React Native
あれ
2年前に作ったサービスの開発環境を作って、ライブラリとかアップデートしたらバグった。マイナスからのスタートや。
このサービスがどうして動いていたのか分からない。2年前の私がReactを何も理解していなかったことだけはわかる。
あれ
rxjs完全に理解した。rxjsを完全に理解した結果、今回はrxjsで頑張る必要がないことがわかった。
本業でもrxjsを振り回したいけど、振り回されるチームメンバーはたまんねぇだろうなって思う。
うちのチームメンバーはやわじゃないから、泣きながらもついてきてくれるはずだ…!Reactにも適応してくれたし、React Server Componentsも適応してくれた。
来週の私「非同期処理って時間方向のイテレーターとみなせるんですよ」
来週の私「イテレーターからイテレーターへの写像が…」
あれ
JavaScriptを無効化してブラウザを使っている人がいるという話を以前Misskey.ioで聞いた。昨今のウェブの状況を考えると、JavaScriptを無効化したいという気持ちには一定の理解が示せる。ブラウザバックしようとしたら広告が表示されるなど、JavaScriptによってこちらの想定と異なる動作をするサイトが増えてきている。
開発者の視点では「超長期的には生のHTMLしか勝たん」みたいな気持ちも若干ある。Reactで作ったSPAとかは10年後には動かない、あるいは現在のバージョンのReactなどを動かし続けるとセキュリティ上の問題が露呈するだろうという予感がある。つまりバージョンアップなどの技術の変化に追従する労力が要求される度合いが高い見込み。
といいつつも、私自身はReactを使いがちになっている。
『Promiseをthrowするのはなぜ天才的デザインなのか』
『ReactのSuspense対応非同期処理を手書きするハンズオン』
iconoir
react-chat-ui
Qwik
Reactっぽい何か
狂気の産物らしい
PRRTTスタック
RSC
React Server Components
2023年11月14日日記
朝
特に記憶に無いです。
仕事
「Next.jsを使えば忌々しいAmplifyのDataStoreを無くせるんじゃね?」とか思って、社内システムの移植を開始した。もともとReactで動いていたので、3時間ほどでシステムがNext.jsの上で動くようになった。Next.jsの恩恵が受けられるのはこれからだ。
夜
「Next.jsを使えばBERTでSentence Embeddingを取るAPIをサーバーレスでつくれるんじゃね?」とかおもって実装した結果、比較的高性能な開発機であっても計算に3秒もかかることがわかり、検索には使えず無事死亡した。
デライトが落ちていた
「あれ」ってどんなんだったっけと思って、デライトで検索しようとしたところ、デライトが落ちていた(障害のお知らせ)。普段当たり前のようにデライトが使えているが、knownetの開発を通じてデライトが安定稼働していたことの異常さに気付きつつある。knownetの方はちゃんと動いている期間のほうが短い。
探そうとしていた情報については『t_wの輪郭』を参照して見つけられた。いざというときの保証として機能してくれた。
2023年11月13日日記
knownetが盛大にバグっていた。
無限にReactのレンダリングが走り、検索は動かずという状態だった。「何を見てたんだ?」とは思うものの、コードの変更において焦点外の箇所に波及してバグると、気づくことが非常に難しい。まじでコレを保守するの無理な気がしてきた。質的難易度が非常に高い。
自動テストをやったほうが良いのはわかっているが、自動テストがどうも導入しづらい。
Embeddingの類似度に基づいて関連付けの候補を出す機能 だの 検索結果から投稿を選んだ際に非表示の関連付けをつけて検索結果を強化する機能 だのを追加したいのだが、もはや認知的攻勢限界に達しており、これ以上機能を追加することは考えられない。バグが生まれる可能性が極めて高い。しばらくは理腑やバグつぶしに徹したい。もう少し難易度が下がってきたら機能追加を考えよう。
『上スクロールしたときだけ表示されるヘッダ』
jest-puppeteer-react
ReactでRSSを作る
import { Post } from "@/models";
import React from "react";
import { renderToString } from 'react-dom/server';
declare global {
namespace JSX {
interface IntrinsicElements {
[elemName: string]: unknown;
}
}
}
export function RssFeed({ posts }: { posts: Post[] }) {
return renderToString(
<rss version='2.0'>
<channel>
<language>ja</language>
<title>t_wの輪郭</title>
<rsslink>https://towasys.com/</rsslink>
<description>t_wの輪郭のRSSです。</description>
{posts.map(post => <item>
<title>{(post.title ? post.title : "あれ") + "|" + post.kno}</title>
<description>{post.body_html ?? ""}</description>
{post.posted_at && <pubDate>{new Date(post.posted_at * 1000).toUTCString()}</pubDate>}
<rsslink>{`https://towasys.com/${post.kno}`}</rsslink>
<guid isPermaLink="true">{`https://towasys.com/${post.kno}`}</guid>
</item>)}
</channel>
</rss>
).replaceAll("rsslink", "link")
}
Next.jsでの使い方
getServerSidePropsで下記を実行
const rss_feed = RssFeed({ posts })
context.res.statusCode = 200
context.res.setHeader('Cache-Control', 's-maxage=86400, stale-while-revalidate') // 24時間キャッシュする
context.res.setHeader('Content-Type', 'text/xml')
context.res.end(rss_feed)
return {
props: {},
}
あれ
ノリと勢いで『t_wの輪郭』をReactで作り直しだウェーイってしてるけど、SEO死ぬんじゃねこれ
あとOGP対応無理くねコレ
何ならRSSも無理っぽい
AWS AmplifyでSSRする方法探すか
使用できますAWS Amplifyサーバー側レンダリング (SSR) を使用する Web アプリをデプロイしてホストします。現在、Amplify ホスティングは Next.js フレームワークを使用して作成されたアプリをサポートしています。
公式の日本語が怪しいけど、AWS AmplifyはNext.jsでSSR出来るらしい。
React+DataStoreからNext.jsに切り替えるぞッ!!!!
ここまで作ったフロントエンドを捨てることになるけど、メリットはあるし、やるしかねぇ。
- フロントエンドの実装はまだほとんど進んでない
- AmplifyでNext.jsで動かす勉強になる
あれ
あれ
Reactのコンポーネント書くときに
const Component = ()=>(
<div></div>
)
とかやっていい気になってたけど、どうせ後から処理追加してreturn 書くハメになるし、最初からfunctionって書いた方が分かり良い気がしてきた。
あれ
仕事でReactを使っているが、Amplify UI以外のライブラリをほとんど使っていない。必要なコンポーネントがあれば自前で実装するし、ややこしいものはライブラリを探して、そのコードからエッセンスを読み取り、その上で自前で再実装してしまう。
どこの誰とも知らない人間が書いた保守されるかどうかもわからずセキュリティも保証されないものを使うより、自分で書いたコードの方が信頼できる。
いずれAmplifyから離れることもあろうから、Amplify UIも再実装してしまいたい。Amplify UIのFlexコンポーネントはうまく出来ている。display: flex;
と書くよりも記述量が少ないし、何をしたいのかタグから読み取れて明瞭だ。それでいてAWSに依存しない。テーマ機構とも無関係。再実装するに値するコンポーネントだ。
React Testing Library
あれ
良いホスティングサービス知りたい
Reactで書いたウェブアプリをAWS Amplifyでホスティングしてる
同僚にはVercelにしろって言われてる
Reactと関数型プログラミング
『Reactは関数型プログラミングを必ず学習しなければいけないという誤解』
『Reactを関数型プログラミングの文脈で理解する』
あれ
『You Might Not Need an Effect』
あれ
Reactで「要素が書き換わらねー」ってしてたんだけど、理解度が低い時のコードが悪さをしていた
修正前
if (post_to_display == null) {
set_post_to_display(props.post);
}
修正後
useEffect(()=>{
set_post_to_display(props.post);
}, [props.post]);