サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone18 Pro
ashunar0.dev
はじめに AIにプロダクトのコードを書かせると、ほぼほぼ脳死でNext.jsを提案してきます。これはおそらく、学習データにNext.jsのコードやチュートリアルが圧倒的に多いから、と推測されます。その割に、書かせたコードを見てみると全部use clientついてる… AIは「このプロジェクトに最適だから」ではなく「一番よく見た形だから」で提案している場合の方が多い気がするんですよね。実際、「Tanstack RouterとHonoの方が良くない?」「それRSC使うか?」って聞くと「確かにその通りだ。」って訂正してくるんです。いやだったら最初からそっちで提案してこいよ! もちろんNext.jsが最適なプロジェクトは実在します。ただ、それは全体のうちのごく一部です。にもかかわらず、AIが勧めてくるという理由だけでNext.jsがデフォルトになっている状況にはどうもモヤモヤしてなりません。この記
はじめに 最近 Twitter では、ORM 不要論や生 SQL 回帰論が話題に上がっています。「ORM は要らない」「生 SQL でいい」「いやクエリビルダくらいは欲しい」といった意見が見受けられますが、自分には正直よくわかりませんでした。 というのも、僕は「SQLを書くの面倒」「軽量」「なんとなく読みやすい」というあまりにも短絡的な理由で、Drizzleしか使っていないからです!! とはいえ、こうも話題に上がっている以上、何も学ばずにスルーするというのもいささかもったいない気がしたので、ORM が実際に何を引き受けているのかを分解してみることにしました。この論争の解像度が少しでも上がればいいなと思いながら調べています。 「ORM」が指すものの幅 分解の前に、用語の話をします。 ORM は Object-Relational Mapping の略で、名前の通りならオブジェクトとリレーショ
はじめに DI(Dependency Injection、依存性の注入)という言葉は、なんとなく仰々しいイメージがあります。 ただ、パターンとしてのDIは本来もっと小さいものです。ライブラリも設定ファイルも要りません。この記事では、まずHonoもサーバーも出さずにDIの正体を確認して、そのあとHonoとCloudflare Workersで実践してみます。 今回出てくるコードパターンは、現在自分が作っているHonoのアーキテクチャ設計とコーディング規約に含まれるものです。変わる可能性もあります! 1. DIとは何か DIを一言で言うと、「必要なものを自分で作らず、外から受け取る。」というものです。たったこれだけ!たとえばこんな感じです。 // 自分で作る function createGreeter() { const clock = new SystemClock(); return {
はじめに 最近、ReactやVueの公式ドキュメントを読んで、その原理原則を深く追求することにちょっぴりハマっています。今日は、そんな中から、Reactの根幹である純粋性と副作用について考えました。公式ドキュメントの説明や例って、びみょ〜に分かりづらいんですよね…今回はそれを、少しだけ自分ごとになるように言語化してみました。 1. 純粋関数とは まずReact抜きで、ただのJavaScriptの話です。 純粋関数の条件は2つだけです。 同じ入力なら必ず同じ出力 呼んでも外の世界を変えない // 純粋 function double(n) { return n * 2; } double(3); // 6 double(3); // 6 ← 何回呼んでも同じ! 数学の世界では、これは当たり前のことです。そもそも純粋でない関数というのは定義上存在しません。でも、プログラミングでは、コードの書き
この 4 つを前提として、話を進めることにします。 動的ルートは遷移のたびにサーバー往復が要る App Router の <Link> は、ビューポートに入った時点でプリフェッチを試みます。ただしプリフェッチの範囲はルートの種類で変わります。Next.js のドキュメントはこう書いています。 Static routes are prefetched in full by default with a 5-minute client cache TTL. Dynamic routes are only prefetched if they include a loading boundary, and they do not have a default client cache TTL. For dynamic routes, a server roundtrip is required
Valibot と Zod で 12 倍の差があります。これ自体は設計から予想される通りです。 ただ、この表には設計とは別の話が混ざっています。同じ Zod なのに、import の書き方だけで 5 倍違います。 import { z } from "zod" が引き連れてくるもの 上の 1 行目と 2 行目のスキーマ定義はまったく同じで、違うのは import 文だけです。 import { z } from 'zod'; // 64,990 B (gzip) import { object, string } from 'zod'; // 18,247 B (gzip) esbuild の metafile で内訳を見ると、原因が分かります。 31825 zod/v4/core/schemas.js 22483 zod/v4/classic/schemas.js 10628 zod/v
はじめに 前回、Durable Object とはなにかをまとめました。ここでは実際に 1 つアプリを作り、Durable Objects の要素を順に通していきます。 グローバルに1つだけ存在する永続ストレージ付きのクラスインスタンス「Durable Objects」 | ashunar0 binding で env に生えてくる仕組み、リクエストが直列化される理由、どういう単位で分割すべきか。Durable Objects を一つのモデルで説明する。 ashunar0.dev 題材はリアルタイム投票アプリです。お題を作り、複数人が同時に投票し、票が全員の画面に即座に反映され、締切時刻になると自動で締まる、というものです。 今回使用したコードは GitHub に置いてあります。 GitHub - ashunar0/poll-do: Cloudflare Durable Objects を
このページを最初にブックマークしてみませんか?
『ashunar0.dev』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く