azukiazusa のテックブログ2

https://azukiazusa.dev

azukiazusaのテックブログ2です。週に1回 Web 開発に関する記事をお届けします。フロントエンドに関する分野の記事が中心です。

フィード

記事のアイキャッチ画像
Svelte v5 における イベントハンドラの変更点
azukiazusa のテックブログ2
Svelte v5 では、イベントハンドラの書き方が一新され、いくつか非推奨となった書き方があります。この記事では、Svelte v4 と Svelte v5 のイベントハンドラの書き方の違いについて見ていきます。
5日前
記事のアイキャッチ画像
Svelte v5 で導入された Runes によるリアクティビティシステム
はてなブックマークアイコン 34
azukiazusa のテックブログ2
Svelte v5 で導入された Runes によるリアクティビティシステムについて解説します。従来の Svelte は純粋な JavaScript のコードのみを使用してリアクティビティを実現していましたが、アプリケーションが大規模になると複雑性が増すという問題がありました。Runes は Svelte のリアクティビティシステムをより柔軟にし、アプリケーションの規模が大きくなってもシンプルさを保つことを目指しています。
6日前
記事のアイキャッチ画像
エラーや非同期処理をより安全に扱うための TypeScript ライブラリ Effect-TS
はてなブックマークアイコン 141
azukiazusa のテックブログ2
Effect-TS は、開発者が複雑なエラーや非同期処理をより安全に開発できるようにすることを目的とした TypeScript ライブラリです。Effect-TS は、TypeScript の型システムを活用して、本番のアプリケーションにおける実用的な問題を解決することを目指しています。
11日前
記事のアイキャッチ画像
Next.js 型安全なルーティングを使う
はてなブックマークアイコン 100
azukiazusa のテックブログ2
Next.js では実験的な機能として、型安全なルーティングを利用できます。この機能を使うことでリンク先のパス名を静的に検査できるため、typo などのエラーを事前に防ぐことができます。
12日前
記事のアイキャッチ画像
React v19 から forwardRef が不要になる
azukiazusa のテックブログ2
今までの React では `ref` をコンポーネントの Props として渡す際に、`forwardRef` を使ってラップする必要がありました。しかし、React v19 からは `forwardRef` が不要になり、`ref` を直接渡すことができるようになりました。
13日前
記事のアイキャッチ画像
Remix v2.9 で導入された Single Fetch
はてなブックマークアイコン 2
azukiazusa のテックブログ2
Remix v2.9 で導入された Single Fetch はクライアントサイドでのページ遷移が行われた際に、サーバーへの複数の HTTP リクエストを並行して行う代わりに、1 つの HTTP リクエストを実行しまとめてレスポンスを返す機能です。Single Fetch は v2.9 ではフィーチャーフラグとして提供されており、v3 以降ではデフォルトの挙動となります。
13日前
記事のアイキャッチ画像
Math.max() にスプレッド構文で大きな配列を渡すとエラーになる恐れがある
azukiazusa のテックブログ2
`Math.max()` は、引数に渡された数値のうち最大のものを返す JavaScript の組み込み関数です。この関数は任意の数の引数を受け取るので、配列最大値を求めたい場合にはスプレッド構文で展開して渡す使い方が一般的です。しかし、引数の数が多すぎるとエラーになることがあります。
19日前
記事のアイキャッチ画像
コンテナ要素に基づく相対的な CSS の単位(cqw, cqh, cqi, cqb, cqmin, cqmax)
azukiazusa のテックブログ2
コンテナクエリ単位とは、コンテナ要素に基づいてスタイルを定義するための相対的な長さを表す単位です。例えば `1cqw` はコンテナ要素の幅の 1% に相当します。
20日前
記事のアイキャッチ画像
CSS でファイルのアップロードボタンをカスタマイズする ::file-selector-button 疑似要素
azukiazusa のテックブログ2
`::file-selector-button` 疑似要素を使用することで、`` 要素のデフォルトのボタンのスタイルをカスタマイズできます。現在すべてのモダンブラウザでサポートされています。
25日前
記事のアイキャッチ画像
ポップアップが画面内に収まらない場合に自動的に表示位置を調整する CSS Anchor Positioning
azukiazusa のテックブログ2
CSS Anchor Positioning とは、特定の要素を Anchor(基準)としてツールチップなどの要素の位置を決定する機能の総称です。CSS Anchor Positioning を使用することで、Floating UI のように自動で画面内に表示されるツールチップやコンテキストメニューを実装できます。
1ヶ月前
記事のアイキャッチ画像
Promise や Context から値を読み取る use React フック
azukiazusa のテックブログ2
React の Canary および experimental チャンネルでのみ利用可能な `use` フックについて解説します。`use` フックは Promise や Context から値を読み取るためのフックで、Promise の値を同期的に読み取ることができます。その他の React フックと異なり、`if` 文やループ内で呼び出すことができる点が特徴として挙げられます。
1ヶ月前
記事のアイキャッチ画像
親要素のスタイルの基づいてスタイルを適用するコンテナスタイルクエリー CSS
azukiazusa のテックブログ2
CSS の @container ルールは、コンテナ(親要素)の特性に基づいてスタイルを適用するためのルールです。コンテナースタイルクエリーはコンテナサイズクエリーとコンテナスタイルクエリーの 2 種類に分類されます。コンテナスタイルクエリは style() 関数記法で定義されたスタイルを @container ルールで評価し、指定された条件が一致する場合にスタイルが適用されます。
1ヶ月前
記事のアイキャッチ画像
CSS: ダークモードで値を切り替える light-dark 関数
azukiazusa のテックブログ2
light-dark 関数は CSS のカラー関数で、引数に 2 つのカラー値を取り、ライトモードのときには 1 つ目の値をを、ダークモードのときには 1 つ目の値を返します。`color-scheme` プロパティの値もしくはユーザーの OS のダークモード設定によって切り替わります。
1ヶ月前
記事のアイキャッチ画像
CSS から React コンポーネントを生成する MistCSS
azukiazusa のテックブログ2
MistCSS は CSS in JS になぞらえた JS from CSS というコンセプトで、CSS から React コンポーネントを生成するツールです。ピュアな CSS を記述できるので、学習コストが低い、パフォーマンスに影響がないといったメリットがあります。
2ヶ月前
記事のアイキャッチ画像
単体テストでスクリーンリーダーをシミュレートする Virtual Screen Reader
azukiazusa のテックブログ2
Virtual Screen Reader は単体テストのためにスクリーンリーダをシミュレートするライブラリです。このライブラリを使うことでマウスやキボードの操作をテストするように、スクリーンリーダーにより期待する読み上げが行われるかどうかをテストできます。なお、Virtual Screen Reader はあくまでスクリーンリーダーの挙動を模倣したものであり、現実で使われているスクリーンリーダーによるテストを代替するものではないことに注意してください。
2ヶ月前
記事のアイキャッチ画像
TypeScript 5.5 で関数による型の絞り込みが改善される
azukiazusa のテックブログ2
従来までは、TypeScript で関数の引数の型を絞り込んだ結果を返す場合には、ユーザー定義型ガードとして `x is string` のような形式で型ガードを定義する必要がありました。TypeScript 5.5 では自動で型の絞り込みが推論されるようになります。
2ヶ月前
記事のアイキャッチ画像
フォームのアクセシビリティを考える
azukiazusa のテックブログ2
今日の Web におけるフォームはユーザーが情報を入力して対話するための重要な要素です。支援技術を利用しているユーザーがフォームの入力を妨げられることは当然避けるべきでしょう。また障害の有無に関わらず、ユーザーに迷いを与えたり、入力ミスを誘発するようなフォームはユーザーがタスクを完了せずに途中で離脱してしまう可能性が高まり、ビジネスの観点からも望ましくありません。この記事ではフォームのアクセシビリティについて考え、実際のフォームの実装においてどのような点に注意すべきかを紹介します。
2ヶ月前
記事のアイキャッチ画像
CSS メディアクエリで比較演算子が使える
azukiazusa のテックブログ2
CSS のメディアクエリで比較演算子(``, `=`)が使えます。この記法を Range Syntax と呼びます。この記法は従来の `min-width` や `max-width` といった記法と比べて、より直感的に記述できるため便利です。
2ヶ月前
記事のアイキャッチ画像
React Server Components を使うためのミニマムなフレームワーク Waku
azukiazusa のテックブログ2
Waku は小規模から中規模の React プロジェクトを構築するためのミニマムなフレームワークです。従来は React Server Components を使うためには Next.js のような比較的大規模なフレームワークが必要でした。Waku もまた React Server Components に対応しているため、最小限の構成で React Server Components を使いたい場合に適しています。
2ヶ月前
記事のアイキャッチ画像
1 つの AbortController で複数の fetch をキャンセルできる
azukiazusa のテックブログ2
`AbortController` は、fetch API でリクエストをキャンセルするためのオブジェクトです。`AbortController` は複数のリクエストを 1 度にキャンセルできます。
2ヶ月前
記事のアイキャッチ画像
CSS の reverse 系の値は可能な限り使わない
azukiazusa のテックブログ2
CSS の reverse 系の値とは、`flex-direction` の `row-reverse` や `column-reverse` などのことです。これらの値は、アクセシビリティの観点からできる限り使用を避けるべきです。
2ヶ月前
記事のアイキャッチ画像
新しい UI テストの手法を提供するテストライブラリ SafeTest
azukiazusa のテックブログ2
SafeTest は Playwright と Jest/Vitest を組み合わせた UI テストライブラリです。特定のライブラリに依存せず、React, Vue, Angular, Svelte などのフレームワークに対応しています。SafeTest は単体テストと Playwright を使った E2E テストの手法を組み合わせることで、それぞれの手法が抱える欠点を補うことを目指しています。
3ヶ月前
記事のアイキャッチ画像
技術の素振りのために記事を書く
azukiazusa のテックブログ2
技術の素振りを、ここではある特定の言語やフレームワークに対する理解を深めるために、その技術を使って何かしらの成果物を作成することと定義します。素振りの目的としては、ドキュメントからは読み取れない Pro/Con を得ること、その技術が実際のプロジェクトで使えるかどうか調査するといった事項があげられるでしょう。ただ素振りするだけではぼんやりと頭に知識が入っている状態になりがちですが、他者への説明というアウトプットを意識することで、コードを書くことによって得られた知見を整理できるようになります。
3ヶ月前
記事のアイキャッチ画像
初心者向けの単純なルールを作る
azukiazusa のテックブログ2
新しい物事を始めるときは複雑な理屈は抜きにして、単純なルールが規定されていることが初心者にとって大切です。この理屈は開発時の設計やコーディングルールにも当てはまると思います。単純なルールとして lint を設定したり、コンポーネント化して複雑な部分を隠蔽することですべての開発者にとってコードをコミットしやすくなります。
3ヶ月前
記事のアイキャッチ画像
type-safe とプログレッシブエンハンスメント、アクセシビリティヘルパーを備えたフォームライブラリ Conform
azukiazusa のテックブログ2
Conform は React 向けのフォームライブラリです。type-safe であること、Web 標準を利用したプログレッシブエンハンスメントや、アクセシビリティヘルパーを特徴としており、Next.js の Server Actions や Remix に対応しています。
3ヶ月前
記事のアイキャッチ画像
フルスタック Web フレームワーク HonoX を使ってみる
azukiazusa のテックブログ2
HonoX は Hono と Vite をベースにしたフルスタック Web フレームワークです。Hono が提供するサーバーサイドやクライアントサイドの機能を使いつつ、ファイルベースルーティングや Islands Architecture などの新しい機能を使うことができます。
3ヶ月前
記事のアイキャッチ画像
Tailwind CSS を使う時に一緒に入れたいライブラリ
azukiazusa のテックブログ2
Tailwind CSS を使う上でクラス名をスッキリと書くために一緒に入れたいライブラリを紹介します
3ヶ月前
記事のアイキャッチ画像
Hono で Server-Sent Events によるストリーミングを実装する
azukiazusa のテックブログ2
Server-Sent events(SSE)は、サーバーからクライアントに向けてイベントをストリーミングするための仕組みです。WebSocket と比較すると、サーバーからの単方向の通信、HTTP で通信するという特徴があります。この記事では Hono を使って OpenAI API を使ったテキスト生成をストリーミングする方法を紹介します。
3ヶ月前
記事のアイキャッチ画像
npm は isntall でもコマンドを実行できる
azukiazusa のテックブログ2
npm は install の alias として isntall が用意されているので、typo して isntall と打ってもコマンドが実行されます。
3ヶ月前
記事のアイキャッチ画像
クラス名の結合をする軽量ライブラリの clsx
azukiazusa のテックブログ2
clsx は、複数のクラス名を結合するための軽量ライブラリです。条件によってクラスを付け替えたり、グルーピングをする際に簡潔に記述できます。
3ヶ月前
記事のアイキャッチ画像
TypeScript のような構文で OpenAPI のスキーマを定義する TypeSpec
azukiazusa のテックブログ2
TypeSepc は TypeScript にインスパイアされた言語で、開発者が親しみやすい構文で OpenAPI のスキーマを定義できます。モデルを使ってデータの構造を定義し、`@route` デコレーターを使って REST API のエンドポイントを定義します。
3ヶ月前
記事のアイキャッチ画像
CSS で絶対に最前面に表示したい要素には z-index:calc(infinity) を指定する
azukiazusa のテックブログ2
いつの時代にも z-index の管理には頭を悩ませます。z-index の値には 1 以外の値を許可しないなどの管理方法がありますが、外部のライブラリを使用してる場合に勝つことができません。そこで z-index の値に `calc(infinity)` を指定すると、絶対に最前面に表示させることができます。
4ヶ月前
記事のアイキャッチ画像
Node.js esm の dirname と filename
azukiazusa のテックブログ2
commonjs では `__dirname` と `__filename` でファイルのパスを取得できますが ES Modules では使えません。今まで同等の API が存在していなかったのですが、Node.js v20.11.0 で `import.meta.dirname` と `import.meta.filename` が追加されました。
4ヶ月前
記事のアイキャッチ画像
Bun でクロスプラットフォームなシェルスクリプト
azukiazusa のテックブログ2
Bun の `$` を使うと、クロスプラットフォームなシェルスクリプト(Bun Shell)を書くことができます。Bun Shell は macOS (zsh)、Linux (bash)、および Windows (cmd) と OS の違いを気にせずにシェルスクリプトを書ける、JavaScript オブジェクトとのやりとりが可能であることが特徴です。
4ヶ月前
記事のアイキャッチ画像
MSW v2 では Web 標準の Fetch API をサポート
azukiazusa のテックブログ2
Mock Service Worke(MSW) v2 では Web 標準の Fetch API をサポートしました。
4ヶ月前
記事のアイキャッチ画像
Remix の SPA モード
azukiazusa のテックブログ2
Remix は React のフルスタックフレームワークで、Web 標準に基づいた API で構築されていることが特徴です。Node.js のようなサーバーサイドの JavaScript 環境で動作することを前提としています。しかし、現実の世界ではサーバーを用意せずに、静的なファイルをホスティングするだけの環境で Web アプリケーションを構築することが有効な場合も多くあります。このような需要を満たすために、Remix v2.5.0 から実験的に SPA モードが導入されました。
4ヶ月前
記事のアイキャッチ画像
TypeScript で任意の文字列を受け取りつつエディタの補完を効かせる型
azukiazusa のテックブログ2
すべての文字列を受け入れつつ、特定の文字列のみを補完候補に表示させたい場合があります。例えば、CSS の色を指定するプロパティの値には、カラーコードで指定する `#000000` や `#ffffff` などの文字列を受け入れつつ、`red` や `blue` などの特定の文字列を指定します。
4ヶ月前
記事のアイキャッチ画像
React でコンポーネントの Props の型を取得する
azukiazusa のテックブログ2
プリミティブな UI を構築するとき、button や input などの HTML 要素をラップしたコンポーネントを作成することがあります。このようなコンポーネントでは、HTML 要素の Props に加えて、コンポーネント固有の Props を定義することが多いです。
4ヶ月前
記事のアイキャッチ画像
配列をグループ化する Object.groupBy 静的メソッド
azukiazusa のテックブログ2
Object.groupBy 静的メソッドは、ES2024 で追加された配列をグループ化する関数です。配列の各要素に対してグループ化のキーを指定することで、グループ化されたオブジェクトを返します。
4ヶ月前
記事のアイキャッチ画像
TailwindCSS で複数行のテキストを省略するとき
azukiazusa のテックブログ2
TailwindCSS で長いテキストを省略するときには、`truncate` クラスを使用します。しかし、`truncate` クラスは 1 行のテキストにしか対応していません。
4ヶ月前
記事のアイキャッチ画像
tabIndex には 0 と -1 だけを指定する
azukiazusa のテックブログ2
tabIndex 属性は、フォーカス可能な要素を指定するための属性です。この属性自由な数値を指定できますが、これはアクセシビリティの観点から推奨されていません。
4ヶ月前
記事のアイキャッチ画像
Svelte の Props 省略記法
azukiazusa のテックブログ2
Svelte ではコンポーネントに Props を渡す際に省略記法が使えます。
4ヶ月前
記事のアイキャッチ画像
GitHub Copilot Chat の inline chat のキーボードショートカットを無効にする
azukiazusa のテックブログ2
GitHub Copilot Chat を VSCode で使用していると、エディタ上で ⌘ + i を押すと inline chat が表示されます。しかし、このショートカットはコードの補完を表示するためにも使われていました。このショートカットに慣れていた人にとっては、inline chat が表示されるのは意図しない動作でしょう。
4ヶ月前
記事のアイキャッチ画像
details 要素の name 属性による排他的アコーディオン
azukiazusa のテックブログ2
`details` 要素は、開閉可能なコンテンツをマークアップするための要素です。`details` 要素に新たに `name` 属性が追加され排他的アコーディオンとして利用できるようになりました。
4ヶ月前
記事のアイキャッチ画像
GitLens で特定のコミットを除外する
azukiazusa のテックブログ2
GitLens の使用時に、機械的にフォーマットされたコミットがあるとコードの変更履歴を確認する際に邪魔になってしまいます。この記事では、GitLens で特定のコミットを除外する方法を紹介します。
4ヶ月前
記事のアイキャッチ画像
大きさが自動で変わる textarea を CSS だけで実現
azukiazusa のテックブログ2
テキストの入力量に応じて自動で高さが変わる textarea をよく見かけると思います。Slack や X の入力欄がそうですね。
4ヶ月前
記事のアイキャッチ画像
TailwindCSS の data 属性
azukiazusa のテックブログ2
TailwindCSS v3.2 からは data 属性を使って、条件付きでスタイルを適用できます。
4ヶ月前
記事のアイキャッチ画像
静的サイト向けの全文検索エンジンと UI ライブラリの Pagefind
azukiazusa のテックブログ2
Pagefind は、静的サイト向けの全文検索エンジンと UI ライブラリです。特定のフレームワークに依存しない JavaScript ライブラリとして実装されており、静的サイトジェネレーターで生成された HTML ファイルに対して検索機能を追加できます。
4ヶ月前
記事のアイキャッチ画像
2023 年に読んでよかった本
azukiazusa のテックブログ2
年末なので 2023 年のまとめっぽい記事を書きたくなりました。今年は 1 年間でおおよそ 300 冊の本をよんだようです(そのうち 3 割ほどはラノベなのですが...)。その中でも特に印象に残った本を紹介します。
4ヶ月前
記事のアイキャッチ画像
input[type=checkbox] 要素に switch 属性を指定することによる HTML 標準のスイッチ UI の提案
azukiazusa のテックブログ2
スイッチは多くのウェブサイトで使われているものの、HTML の標準要素としては存在していませんでした。そのため多くの開発者は、スイッチを実装するために独自の実装を行っていましたが、このような独自の実装はアクセシビリティの問題を引き起こす可能性がありました。この問題を解決するために、WHATWG により `input[type="checkbox"]` 要素に `switch` 属性を追加することが提案されました。この属性を指定することで、チェックボックスをスイッチとして利用できます。
5ヶ月前
記事のアイキャッチ画像
OpenTelemetry Collector をカスタムビルドする
azukiazusa のテックブログ2
本番環境では OpenTelemetry Collector Contrib を使用せず、必要なコンポーネントのみを含むようにカスタムビルドすることが推奨されています。この記事では、OpenTelemetry Collector をカスタムビルドする方法について紹介します。
5ヶ月前
記事のアイキャッチ画像
CSS だけで動くスクロールドリブンアニメーション
azukiazusa のテックブログ2
Google Chrome 115 で追加されたスクロールドリブンアニメーションを使うことで、今まで JavaScript を使わなれけば実装できなかったようなスクロールと連動するアニメーションを CSS だけで実装できるようになりました。スクロールの進行状況に応じてバーを伸縮させるようなアニメーションや、要素が画面内に入ったタイミングでアニメーションを開始するようなことが実装できます。
5ヶ月前
記事のアイキャッチ画像
Storybook v8 の React Server Components サポート
azukiazusa のテックブログ2
Storybook v8 では `experimentalNextRSC` オプションにより React Server Components をサポートしています。しかし、このオプションは React Server Components としての動作を再現しているわけではありません。サーバーサイドで Storybook が動作してるわけではなく、非同期コンポーネントをクライアントでレンダリングしているに過ぎないことに留意すべきです。
5ヶ月前
記事のアイキャッチ画像
MSW v2 で `HttpResponse.json()` の型がおかしいときの対処法
azukiazusa のテックブログ2
MSW v2 の `HttpResponse.json()` の第 2 引数の型は `Response` オブジェクトの初期化時に渡すオプションを指定できます。しかし、tsconfig.json の設定によっては、この型がおかしくなることがあります。その場合には、`tsconfig.json` の `compilerOptions.lib` に `dom` を追加するのが一時的な対処法です。
5ヶ月前
記事のアイキャッチ画像
React Server Components のテスト手法
azukiazusa のテックブログ2
現代におけるコンポーネントのテストは Testing Library を用いてテストを行うことが一般的です。しかし、2023 年 11 月現在、Testing Library はまだ Server Components のテストを十分にサポートしていません。そのため、Server Components のテストを行うには、別の方法を用いる必要があります。この記事では、Testing Library を用いずに Server Components のテストを行う方法について説明します。
5ヶ月前
記事のアイキャッチ画像
HTML 標準でコンボボックスを実現する `<combobox>` 要素の提案
azukiazusa のテックブログ2
コンボボックスとは、テキストボックスとドロップダウンリストを組み合わせた UI コンポーネントです。コンボボックスはユーザーがテキストボックスに入力した文字列に基づいて、ドロップダウンリストのアイテムをフィルタリングできます。`` 要素は、HTML の標準でコンボボックスを実現することを目的としています。
6ヶ月前
記事のアイキャッチ画像
なぜ Server Actions を使うのか
azukiazusa のテックブログ2
Next.js 14 の Server Actions の stable リリースに発表は大きな反響を呼びました。特に `` の `formAction` 属性内で直接 SQL クエリを実行するコードは多くの人に衝撃を与えていました。Server Actions の是非について語る時、導入の背景にユーザー体験の向上があるという観点を忘れてはいけません。また、セキュリティ上の観点についてどのように考えるべきでしょうか?
6ヶ月前
記事のアイキャッチ画像
パッケージマネージャーを npm に移行するときには `npm install --package-lock-only` コマンドを使うとよい
azukiazusa のテックブログ2
既存のプロジェクトで npm に移行する際に `npm install --package-lock-only` を使うことで、依存パッケージのバージョンを変更することなく lock ファイルを移行できます。
6ヶ月前
記事のアイキャッチ画像
Server Actions の戻り値には JSX を使える
azukiazusa のテックブログ2
Server Actions の戻り値には、シリアライズ可能なデータ型を返す必要があります。ドキュメントでは Server Actions の戻り値に JSX を使うことはサポートされていないと記述されていますが、実際には Server Actions の戻り値に JSX を使うことができます。ただし、公式にサポートされている仕様ではないので、思わぬバグを踏む、将来追加される機能に対応しないおそれがあることを理解した上で、使うかどうかを判断する必要があります。
6ヶ月前
記事のアイキャッチ画像
Server Actions のフォームバリデーションにおいて useFormState でエラーメッセージを表示する
azukiazusa のテックブログ2
Next.js の Server Actions でフォームを作成する際に、どのような方法でバリデーションを行い、エラーメッセージを表示する際にどのような手段が考えられるでしょうか。プログレッシブエンハンスメントの恩恵を受けるために、サーバーサイドでバリデーションを行いその結果を表示する方法が効果的です。`useFormStatus` フックはこの一連の動作を行うために使用します。
6ヶ月前
記事のアイキャッチ画像
GitLens で特定のコミットを除外する
azukiazusa のテックブログ2
GitLens の使用時に、機械的にフォーマットされたコミットがあるとコードの変更履歴を確認する際に邪魔になってしまいます。この記事では、GitLens で特定のコミットを除外する方法を紹介します。
6ヶ月前
記事のアイキャッチ画像
JavaScript なしでインタラクションを追加する Invokers
azukiazusa のテックブログ2
Invokers は JavaScript なしでインタラクションを追加するための提案です。`` 要素に `invoketarget` 属性を指定することで、値として指定した id を持つ `` などの要素の開閉状態を切り替えることが可能となります。
7ヶ月前
記事のアイキャッチ画像
URL が有効かどうかを判定する `URL.canParse()` メソッド
azukiazusa のテックブログ2
`URL.canParse()` メソッドは与えられた URL 文字列が有効であるかどうかを判定します。URL 文字列が有効であれば `true` を、無効であれば `false` を返します。これは URL コンストラクターを用いた `try...catch` 文による判定よりも簡潔に記述できます。
7ヶ月前
記事のアイキャッチ画像
:user-valid、:user-invalid 擬似クラスでユーザーの操作の後に検証を行う
azukiazusa のテックブログ2
ユーザーの操作の後にフォームの検証に基づき有効か無効かを示すために使用できる :user-valid、:user-invalid 擬似クラスを紹介します。従来の :valid、:invalid 擬似クラスと異なり、ユーザーがフォームに入力するまではスタイルを適用されません。
7ヶ月前
記事のアイキャッチ画像
forcusgroup で矢印キーによるフォーカスナビゲーションを実装する
azukiazusa のテックブログ2
カスタム UI ウィジェットを実装する際には、ウィジェットのロールに応じたキーボード操作によるフォーカスナビゲーションを実装することが求められています。従来このようなキーボード操作は JavaScript を用いて実装する必要がありました。`focusgroup` の提案は、このようなキーボード操作を独立して使用できるプリミティブとして提案されています。この機能を利用することで、開発者は JavaScript を用いることなく一貫したフォーカスナビゲーションを実装できます。
7ヶ月前
記事のアイキャッチ画像
`<details>` 要素の `name` 属性による排他的なアコーディオンの実装
azukiazusa のテックブログ2
`` 要素の `name` 属性を利用してグループ化することにより、排他的なアコーディオンを JavaScript なしで実装できます。
7ヶ月前
記事のアイキャッチ画像
よりカスタマイズ可能なセレクトボックスを実現する `selectlist` 要素
azukiazusa のテックブログ2
`` 要素は、デザインをカスタマイズできなかった従来の `` 要素の問題を解決するために Open UI グループにより提案されている要素です。`` の構成要素の多くはスロットとして提供されていて、高いカスタマイズ性を備えているのが特徴です。
7ヶ月前
記事のアイキャッチ画像
`history.replaceState()` にはブラウザによって呼び出し回数制限がある
azukiazusa のテックブログ2
`history.replaceState()` は、ブラウザの履歴を変更するための API です。使用例としてユーザーのアクションによる UI の状態の変更に合わせて、URL のクエリパラメータを変更することが挙げられます。この API はブラウザにより呼び出し回数に制限が設けられており、使い方を誤ると予期せぬ挙動が発生するおそれがあります。
7ヶ月前
記事のアイキャッチ画像
モーダルの開閉状態を URL で管理する
azukiazusa のテックブログ2
モーダルの開閉状態を URL で管理することで、状態を復元したり、状態を共有できるなどのメリットがあります。この記事では、Next.js を例に URL でモーダルの開閉状態を管理する方法を紹介します。
8ヶ月前
記事のアイキャッチ画像
Bun の Web フレームワーク ElysiaJS のチュートリアル
azukiazusa のテックブログ2
ElysiaJS は Bun の Web フレームワークです。高いパフォーマンスと、シンプルな API や厳格な型チェックにより生産性に優れているという特徴があります。また柔軟性が高く、多くのプラグインを組み合わせて利用できます。この記事では、ElysiaJS を使って簡単なタスク管理アプリの Web API を作成してみます。
8ヶ月前
記事のアイキャッチ画像
Bun workspace で始めるモノレポ生活
azukiazusa のテックブログ2
Bun では `package.json` の `workspaces` を使用することでモノレポの管理が可能です。この記事では Bun によるモノレポを試してみます。
8ヶ月前
記事のアイキャッチ画像
Bun のマクロを使ってフィーチャートグルを実装する
azukiazusa のテックブログ2
Bun にはマクロはビルド時に実行される関数です。関数が返す値がインラインにバンドルファイルに埋め込まれます。マクロには、実行してインライン化した後に、デッドコードを削除するという特徴があります。この機能を使ってフィーチャートグルを実装してみましょう。
8ヶ月前
記事のアイキャッチ画像
Bun の Plugins で CSV ファイルを直接 import する
azukiazusa のテックブログ2
Bun の Plugins API を使用することで、任意の拡張子のファイルのサポートを追加できます。例えば Bun の公式の動画では、Plugins API を使用して Rust ファイル(.rs)を直接 import できる仕組みも作れることが紹介されています。
8ヶ月前
記事のアイキャッチ画像
OpenTelemetry Collector の Connector を使ってログをメトリックに変換する
azukiazusa のテックブログ2
OpenTelemetry には、メトリック、トレース、ログの 3 つの形式があります。これらの形式はそれぞれ別のパイプラインで処理されます。ある形式のデータを別の形式に変換し、あたかも 1 つのパイプライン上でデータを処理したい場合に Connector を使用します。例えば、あるパイプラインはログのパイプラインのエクスポーターとメトリックのパイプラインのレシーバーとして動作します。このような場合、Connector はログをメトリックに変換する役割を担います。
8ヶ月前
記事のアイキャッチ画像
最小限のコードで動く最も汚いコードから始める
azukiazusa のテックブログ2
コードを書く際の重要な要点は、読みやすく他人に理解される「良いコード」を書くことです。しかし、完璧を目指して最初から書こうとすると行き詰まります。代わりに、荒削りながらも動くコードを作成し、徐々にリファクタリングして完成度を高めます。型エラーやリントエラーを無視しても構わないので、まずは動くものを作成しましょう。それからリファクタリングして「良いコード」を作成できます。
8ヶ月前
記事のアイキャッチ画像
OpenTelemetry を使用して Node.js アプリケーションを計装する
azukiazusa のテックブログ2
OpenTelemetry は Observability のフレームワークであり、トレース・メトリクス・ログなどのテレメトリーデータを作成、管理するためのツールキットです。OpenTelemetry はベンダーに依存しない形で標準化されたプロトコルとツールを提供していることが特徴です。この記事では Node.js アプリケーションを計装して Prometheus にデータを送信する方法を紹介します。
8ヶ月前
記事のアイキャッチ画像
await は Promise 以外のオブジェクトでも値を取り出せる
azukiazusa のテックブログ2
await キーワードは `then()` という名前のメソッドを持つオブジェクトに対して使用できます。このようなオブジェクトを thenable object と呼びます。await キーワードが Promise オブジェクトではなく thenable オブジェクトを対象としているのは、ライブラリの相互運用のためです。
9ヶ月前
記事のアイキャッチ画像
【React】メモ化したコンポーネントに children を渡すと効果がなくなる
azukiazusa のテックブログ2
React.memo は Props が変更されないかぎり、コンポーネントを再レンダリングしないようにする関数です。この関数はコンポーネントの余分なレンダリングを防ぎ、パフォーマンスを向上させる目的で使用されます。しかし、React.memo の使い方を誤ると意図しない再レンダリングが発生してしまうことがあります。ここではメモ化したコンポーネントに children を渡すと効果がなくなるというケースについて説明します。
9ヶ月前
記事のアイキャッチ画像
アニメーションの無効設定は prefers-reduced-motion に任せるか、アプリケーションの設定で制御するか
azukiazusa のテックブログ2
prefers-reduced-motion とは、ユーザーの環境設定によって余計な動きを抑制することを要求したことを検出するメディアクエリです。この設定は各 OS ごとに設定できます。ユーザーがアニメーションを無効にできることは、アクセシビリティの観点で重要です。prefers-reduced-motion によりアニメーションを無効にするのでも十分ですが、アプリケーションの設定として持たせるべきだと考えています。
9ヶ月前
記事のアイキャッチ画像
【書評】RustとWebAssemblyによるゲーム開発は Rust 開発における設計を学べる良書
azukiazusa のテックブログ2
本のタイトルは「Rust と WebAssembly によるゲーム開発」となっていますが、反して WebAssembly についての話題はほとんど出てきません。主に Rust における開発の設計についての話題が中心となっています。
9ヶ月前
記事のアイキャッチ画像
グラフのアクセシビリティについて考える
azukiazusa のテックブログ2
`` や `` 要素で描画されたグラフは、スクリーンリーダーを使用するユーザーにとって内容を正しく理解することが難しいです。この記事では、グラフの内容をスクリーンリーダーを使用するユーザーに伝える方法について考えてみます。
9ヶ月前
記事のアイキャッチ画像
React.memo でメモ化したコンポーネントはモック関数が使えない
azukiazusa のテックブログ2
テストにおいて子コンポーネントをモックしたい場合には通常のテストと同様に jest.mock() を使います。しかし、React.memo() でメモ化したコンポーネントはモック自体には成功するものの、mockImplementation のようなモック関数が使えません。
10ヶ月前
記事のアイキャッチ画像
Document Picture in Picture で任意の要素を Picture in Picture する
azukiazusa のテックブログ2
Document Picture-in-Picture は、`` 要素に限らず任意の要素を PiP できるようにする提案です。これにより、動画以外の要素を PiP できるようになります。主なユースケースとして、カスタムのメディア・コントロールを使用したり、プレイリストとともに動画を PiP することが挙げられます。
10ヶ月前
記事のアイキャッチ画像
スナップショットテストとアサーションテスト
azukiazusa のテックブログ2
この記事では、スナップショットテストとアサーションテストの違いを説明します。また、それぞれのアプローチでテストを書いたときのメリットとデメリットを見ていき、どちらのアプローチを採用すべきか考えていきます。
10ヶ月前
記事のアイキャッチ画像
pnpm でパッケージにパッチを当てる
azukiazusa のテックブログ2
`pnpm patch` コマンドを使うと、依存パッケージのコードを直接書き換えることができます。
10ヶ月前
記事のアイキャッチ画像
aria-label を使いすぎない
azukiazusa のテックブログ2
aria-label 属性はコンテンツに対してアクセシブルな名前を与えるために使用します。aria-label 属性を使用する代表例として、中身がアイコンのボタンがあげられます。aria-label 属性は手軽に使えますが、できる限り一般的な形式でテキストを提供することが望ましいです。
1年前
記事のアイキャッチ画像
スクリーンリーダーに配慮したテキスト表記
azukiazusa のテックブログ2
文字を機械的に判断するスクリーンリーダーでは、人間の目によって判断できる文字について異なる解釈をするおそれがあります。そのような場合、利用者に正しい文章の意図を伝えられません。スクリーンリーダーに配慮したテキストの表記法を紹介します。
1年前
記事のアイキャッチ画像
ポップオーバー API で JavaScript を使わずにポップアップを表示する
azukiazusa のテックブログ2
Chrome 114 から追加されたポップオーバー API を使うと、JavaScript を使わずに簡単にポップアップを表示することができます。
1年前
記事のアイキャッチ画像
Vue.js でジェネリックコンポーネントを使う
azukiazusa のテックブログ2
Vue.js 3.3 から `` 構文を使用してコンポーネントを記述する際に、型引数を指定することができるようになりました。TypeScript で関数に型引数を指定するのと同じように、コンポーネントの props の型を指定することができます。
1年前
記事のアイキャッチ画像
GIF アニメーションの使用を控える
azukiazusa のテックブログ2
技術記事を書く際に、GIF アニメーションを使用することがあるかと思います。しかし、GIF アニメーションを使用することはアクセシビリティ上問題となります。この記事では、GIF アニメーションを使用することを避けるべき理由を説明します。
1年前
記事のアイキャッチ画像
list-style: none スタイルを指定した ul 要素には list ロールを指定すべき
azukiazusa のテックブログ2
WAI-ARIA における role 属性を使用する際のプラクティスとして、暗黙のロールを明示しないというものがあります。しかし、`` 要素は暗黙のロールとして `list` ロールを持っていますが、明示的に `list` ロールを宣言するべきです。
1年前
記事のアイキャッチ画像
Vitest のブラウザテスト
azukiazusa のテックブログ2
Vitest は実験的な機能として、ブラウザモードをサポートしています。ブラウザテストは Node.js 上で jsdom を用いてテストを実効するよりも信頼性の高い方法ですが、テストのセットアップに時間がかかるといったデメリットも存在します。
1年前
記事のアイキャッチ画像
Next.js の Server Actions について
azukiazusa のテックブログ2
Next.js の Server Actions はサーバーサイドのデータのミューテーション、クライアント JavaScript の削減、プログレッシブエンハンスメントなフォームを実現します。
1年前
記事のアイキャッチ画像
SvelteKit のフォーム操作
azukiazusa のテックブログ2
SvelteKit のフォームは Web 標準の機能のみで完結しています。つまり、クライアントサイドでは JavaScript を一切使用せずにサーバーにデータを送信できるのです。さらに、JavaScript を利用できる環境であるならばリッチなユーザー体験を追加できます。例えば、フォームを送信した後ページ全体の再読み込みを行わずに、フォームの送信結果を表示することができたり、バリデーションメッセージを即座に表示できたりします。
1年前
記事のアイキャッチ画像
Array.prototype.with() とは
azukiazusa のテックブログ2
`Array.prototype.with()` は、非破壊的に配列の要素を置き換えるためのメソッドです。非破壊的とは、元の配列を変更せずに新しい配列を返すということです。`arr` に対して `with()` を実行しても、`arr` は変更されず、新しい配列のコピーが返されます。
1年前
記事のアイキャッチ画像
Tailwind CSS のダークモードで System, Light, Dark を切り替える
azukiazusa のテックブログ2
ダークモードの設定では、OS の設定と同期させるか、ライトモードまたはダークモードに手動で切り替えるかの 3 つの選択肢が用意されていることがあります。手動でライトモードとダークモードを切り替える場合に比べて、OS の設定を自動で反映できるメリットがあります。
1年前
記事のアイキャッチ画像
Next.js の Interception Routes について
azukiazusa のテックブログ2
Intercepting routes は Next.js 13.3 から追加された機能で、App Router(app ディレクトリ)において使用できます。Intercepting routes ではブラウザの URL を遷移先のものに上書きしつつ、現在のレイアウトに新しいページを表示できます。これは例えば Instagram のように、ユーザーのプロフィールから写真をクリックすると、写真をモーダルを開き、ページを更新したり共通したりするとデフォルトのレイアウトで表示する場合などに便利です。
1年前
記事のアイキャッチ画像
Cloudflare Workers のためのフルスタックツールキット Superflare を試してみた
azukiazusa のテックブログ2
Superflare は Cloudflare Workers 用のフルスタックツールキットです。D1 Database 向けの ORM や R2 Storage 向けのユーティリティなどの機能を提供しています。Superflare 自体はフレームワークを謳っておりません。実際に、Superflare は Remix、Next.js、Nuxt.js などのフレームワークと組み合わせることで効果を発揮します。
1年前
記事のアイキャッチ画像
HTML の仕様に search 要素が追加された
azukiazusa のテックブログ2
HTML Standardに新しい``要素が追加された。これまで、ARIAには``に相当するHTML要素がなかったため、``しか代替要素がなかった。新たに``要素を使用することにより、WAI-ARIA を使用せずともsearchランドマークを定義できるようになった。通常、``要素は少なくとも1つの入力要素を含んでおり、検索を開始するためのボタンもあることが期待されている。
1年前
記事のアイキャッチ画像
ChatGPT3 で出力の形式を固定したい場合には例を提示してあげるとよさそう
azukiazusa のテックブログ2
ChatGPT は毎回異なる出力を返すことがあるため、APIやアプリ開発にとって不都合が生じる。そこで、出力の例を提示することで固定した形式の回答を得やすくすることができる。提示するためのプロンプトは区切り文字を使用して区切ることが推奨され、回答は通常、「例」に基づいた形式で得られる。
1年前
記事のアイキャッチ画像
TypeScript で網羅性をチェックする
azukiazusa のテックブログ2
パターンマッチを備えている言語では、コンパイル時に網羅性が検査され、網羅的でない場合にはコンパイルエラーとなります。例えば Rust では match 式は網羅性を検査します。列挙型が取りうる値をすべて網羅していない場合にはコンパイルエラーとなります。TypeScript にはパターンマッチがないため、網羅性の検査は行われません。ですが、TypeScript では `never` 型を利用することで網羅性の検査を行うことができます。
1年前
記事のアイキャッチ画像
SvelteKit で環境変数を使う
azukiazusa のテックブログ2
SvelteKit プロジェクトは Vite を使用しているので、`import.meta.env` から環境変数を参照できます。単に環境変数を参照するだけならば十分です。ですが SvelteKit により提供されている環境変数の仕組みを使用すると、型安全に環境変数を参照できる、公開してはいけない値をクライアントから参照できなくなるなどのメリットを得られます。
1年前
記事のアイキャッチ画像
React は javascript スキームを使った XSS を防ぐことができない
azukiazusa のテックブログ2
React を使用していた場合に引き起こす可能性がある XSS 脆弱性の例として、javascript スキームを使った XSS があります。この記事では、javascript スキームを使った XSS についての説明とその対策について紹介します。
1年前
記事のアイキャッチ画像
TypeScript + ESModules の開発環境をシュッと作る
azukiazusa のテックブログ2
ほぼ設定なしで TypeScript + ESModules の開発環境をシュッと作る時のレシピです。
1年前
記事のアイキャッチ画像
Web アプリケーションエンジニアのためのウェブアクセシビリティの基礎
azukiazusa のテックブログ2
ウェブアプリケーションエンジニアを対象に、アクセシビリティの対応について解説した記事。アクセシビリティを向上させるためには、正しいHTMLの書き方が必要である。HTML要素には、アクセシビリティに関する機能が元々備わっているため、適切なHTMLを選択し使用することが大切だ。複雑なUIの場合はWAI-ARIAを使用し、ARIA Authoring Practices Guideに基づき適切に実装する必要がある。UIライブラリ選びの際には、WAI-ARIAに従った実装を行っているかが基準の1つとなる。
1年前
記事のアイキャッチ画像
React Hook Form で Zod を使う時の 5 つパターン
azukiazusa のテックブログ2
React Hook Form で Zod を使用する時によくあるバリデーションのパターンを 5 つ紹介します
1年前
記事のアイキャッチ画像
SvelteKit でページ遷移時のプログレスバーを表示する
azukiazusa のテックブログ2
SPA で画面遷移をする場合、MPA の場合と違い、ブラウザがローディングの表示を行ってくれません。リンクをクリックしてから画面遷移が完了するまで何も表示されないので、ユーザーからすると何も反応していないように感じてしまいます。 SPA で画面遷移した時にプログレスバーを表示したい場合には NProgress が最適です。コンパクトな JavaScript ライブラリでフレームワークを選ばず利用できます。この記事では SvelteKit で NProgress を使用する方法を紹介します。
1年前
記事のアイキャッチ画像
アクセシビリティに考慮したツールチップを実装する
azukiazusa のテックブログ2
ツールチップとは、ある要素に対する補足情報を与える UI です。通常ある要素に対してマウスホバーまたはキーボードでフォーカスした時少しのディレイの後に、ユーザーの操作によらず自動的にポップアップして表示されます。このポップアップはユーザーの操作をブロッキングするものではありません。ユーザーがマウスのホバー外すかフォーカスが外れた場合にツールチップは非表示となります。
1年前
記事のアイキャッチ画像
focus() メソッドで CSS の :focus-visible 擬似クラスが適用されるかどうかは最後の操作によって異なる
azukiazusa のテックブログ2
:focus-visible 擬似クラスはユーザーの入力方法によって異なるフォーカス表示をしたい時に便利です。この擬似クラスはキーボード操作によりフォーカスされた場合に適用されますが、マウス操作によりフォーカスした場合には適用されません。 それでは、JavaScript の focus()メソッドによりフォーカスされた場合には、`:focus-visible` 擬似クラスは適用されるのでしょうか?実はこれは最後 `focus()` メソッドが呼ばれる前に要素にフォーカスがあったかどうかにより異なります。
1年前
記事のアイキャッチ画像
テストコード内では条件分岐を書かないようにする
azukiazusa のテックブログ2
誰でも読める愚直なコードであることの 1 つの目安として、テストコードの中に if 文や三項演算子などの条件分岐が入り込んでいていないことが上げられます。if 文が存在するコードはアンチパターンであるといえます。実際に if 文がテストコードの中に入り込んだ例を見てみましょう。
1年前
記事のアイキャッチ画像
無効にしたボタンにフォーカスさせたいときには aria-disabled を使う
azukiazusa のテックブログ2
例えばフォームの項目になにか入力されるまで、送信ボタンを無効にしたい状況があるかと思います。このような場合には `` に `disabled` 属性を与えることでフォームの送信を無効にできます。`disabled` 属性はデフォルトでコントロールを無効にする一般的に期待されるすべての機能を提供するため、多くの場合はこの属性を使用するべきです。しかし `disabled` 属性には 1 つ問題点が存在します。それは Tab キーによるフォーカスができなくなるという点です。
1年前
記事のアイキャッチ画像
単体テストの単位はコードではなく振る舞いである
azukiazusa のテックブログ2
単体テストの目的は、ソフトウェア開発プロジェクトを持続可能なものにすることです。この目的を達成するための単体テストの機能の 1 つにリファクタリングに対する耐性が上げられます。これは内部のコードを変更した前後でも、外部の振る舞いから見た振る舞いが壊れていないことを保証してくれる度合いです。この耐性が高ければ、開発者は安全にコードを変更できます。 この記事では、単体テストをコード単位で書いた場合と振る舞い単位で書いた場合をそれぞれ提示して、リファクタリングに対する耐性がどのように異なるのかを見ていきます。
1年前
記事のアイキャッチ画像
今すぐできる Web アクセシビリティ改善
azukiazusa のテックブログ2
アクセシビリティの対応は、要件定義段階から設計したりなど大変そうなイメージはあります。実際に本格的に対応するにはどの達成基準を目標にするか決めたり、入念なテストが必要になるなど確かに一朝一夕で対応できるわけではないでしょう。 ですが、完璧な対応を目指すのではなく、少しづづ改善できるところから進めることこともできます。実際にやってみると、簡単な HTML や CSS のコードの修正でもよい改善を得られたりします。 この記事では比較的低コストで実践入門できるアクセシビリティの改善を紹介します。
1年前
記事のアイキャッチ画像
Web フロントエンドの実装において本来の機能を損なってはいけない
azukiazusa のテックブログ2
データの取得・ルーティング・フォームの値の管理に至るまで JavaScript で制御するようになった結果、本来備わっていた機能を損なう形で実装されるような間違いが起きるケースも発生してしまいました。見た目上操作に不都合がないのですが、修飾キーが有効でなかったりと、とある要素が当然に持っているべき機能が失われていることがよくあります。
1年前
記事のアイキャッチ画像
Satori + SvelteKit で OGP 画像を自動生成する
azukiazusa のテックブログ2
Satori とは Vercel が公開している OGP 画像生成ライブラリです。OGP 画像を表示したい場合、記事ごとに対応する OGP 画像が必要になるわけで、新しい記事を投稿するたびに新たな画像を生成しなければいけません。都度画像を生成する手間は取れないわけで、このOGP 画像を生成する工程を自動化する仕組みが必要となります。Satori は記事のタイトルなどをもとに動的 OGP 画像を生成するユースケースのために使用できます。
1年前
記事のアイキャッチ画像
TailwindCSS のダークモードでページ読み込み時に一瞬ライトモードで表示されてしまうときの対応法
azukiazusa のテックブログ2
ユーザーの OS の設定や LocalStorage の値をもとにダークモードかどうか判定する場合、コンテンツが読み込まれる前にスクリプトの実行が完了している必要があります。
1年前
記事のアイキャッチ画像
Pa11y CI でアクセシビリティテストを GitHub Actions で実行する
azukiazusa のテックブログ2
Pa11y とは Web Content Accessibility Guidelines (WCAG) をベースに HTML のアクセシビリティを検査するツールです。適合レベル AA を対象にテストします。Pa11y にはいくつかの種類がありますが、その中でも Pa11y CI は CI 上で実行することにフォーカスしています。
1年前
記事のアイキャッチ画像
モノレポで GitHub Actions の jest coverage report を動かす
azukiazusa のテックブログ2
jest coverage reportは GitHuba Actions のワークフローの1つで Jest で実行したテストのコードカバレッジをプルリクエスト上にコメントしてくれます。 この記事では yarn workspaces 使用して作成したモノレポ構築のレポジトリで jest coverage report を動かしてみます。
1年前
記事のアイキャッチ画像
TypeScript 4.9 で in 演算子による型の絞り込みが改善された
azukiazusa のテックブログ2
TypeScript において `in` 演算子を `unknown` 型に対して使用した際の挙動が改善されました。
1年前
記事のアイキャッチ画像
React Router の defer で重要なデータを先に描画する
azukiazusa のテックブログ2
あるページの中で重要ではない付随的なデータの取得を待たずに、重要なデータの取得が完了したタイミングでページを表示させたい場合があります。例えば、ブログの記事のページを遷移する場合、ユーザーにとって記事のコンテンツは重要なデータですが、それに付随するコメントやいいねの数はそれほど重要ではないので、それらのデータの取得を待つ必要がありません。 この記事では React Router の loaderを使用して重要なデータの完了のみを待機する方法を試してみます。
1年前
記事のアイキャッチ画像
【React】アクセシビリティに考慮したタブを実装する
azukiazusa のテックブログ2
タブとは、ページ内でコンテンツを切り替えるために使用する UI です。タブ初期表示ではいずれか一つのタブパネルが表示されており、関連するタブがアクティブなスタイルで表示されます。それぞれのタブには関連するタブパネルがあり、タブを選択することで表示されるタブパネルがタブに関連するものに切り替わります。
2年前
記事のアイキャッチ画像
【React】アクセシビリティに考慮したアコーディオンを実装する
azukiazusa のテックブログ2
アコーディオンは見出しであるヘッダーとコンテンツであるパネルから構成された UI が垂直に積み重ねられたセットです。ユーザーはヘッダーをクリックすることで、ヘッダーに関連付けられたパネルの表示・非表示を切り替えることができます。 アコーディオンは1つのページ内で複数のセクションのコンテンツを表示する際に、スクロールを減らすためによく 使用されます。例えば、「よくある質問」のようなページで使われていることを見たことがあるかと思います
2年前
記事のアイキャッチ画像
【React】アクセシビリティに考慮したリストボックスを実装する
azukiazusa のテックブログ2
リストボックスにアクセシビリティ上求められる要件を確認した後に、React で実際に要件に従った実装をおこないます。
2年前
記事のアイキャッチ画像
Qwik City でブログアプリを作る
azukiazusa のテックブログ2
Qwik City は Qwik のメタフレームワークです。React における Next.js、Vue.js における Nuxt.js のような関係と同等です。
2年前
記事のアイキャッチ画像
イベントのバブリングは DOM ツリーではなく React ツリーに従う
azukiazusa のテックブログ2
イベントのバブリングとは、ある要素で発生したイベントがその親要素まで伝播することです。React でポータルを使用した場合、DOM ツリー状親子関係でなかったとしても、React ツリー上親子関係であればイベントがバブリングされます。
2年前
記事のアイキャッチ画像
【React】state のリフトダウンパターン
azukiazusa のテックブログ2
React において不要な再レンダリングを避けるためのいくつかのパターンを紹介します
2年前
記事のアイキャッチ画像
Jest で beforeunload イベントをテストする
azukiazusa のテックブログ2
beforeunload イベントをテストする方法を紹介します
2年前
記事のアイキャッチ画像
CSS 擬似クラス「:focus-within」
azukiazusa のテックブログ2
:focus-within は CSS の擬似クラスであり、その要素または子孫要素にフォーカスがある場合に一致します。
2年前
記事のアイキャッチ画像
アクセシブルなダイアログに必要なこと
azukiazusa のテックブログ2
ダイアログをアクセシビルに実装するための要件を確認しましょう。
2年前
記事のアイキャッチ画像
Sanitizer API で HTML を安全に使用する
azukiazusa のテックブログ2
ユーザーが入力した情報をそのまま表示するとクロスサイトスクリプティング(XSS)脆弱性につながる問題があることはよく知られています文字列の無害化はこのようにライブラリの実装に頼っている状況でしたが、WING により Sanitizer API という仕様が策定されました。Sanitizer API により外部ライブラリの依存無しで XSS の対策が可能となります。
2年前
記事のアイキャッチ画像
Hono + Cloudflare Workers で REST API を作ってみよう
azukiazusa のテックブログ2
Hono は TypeScript/JavaScript のシンプルな Web フレームワークです。Hono という名前は日本語の「炎」に由来します。 Hono の特徴としては以下の点が挙げられています。 - ウルトラファスト - 依存関係なし - ミドルウェア - TypeScript - マルチプラットフォーム
2年前
記事のアイキャッチ画像
Fetch Upload Streaming でチャットアプリを作ってみる
azukiazusa のテックブログ2
Fetch Upload Streaming とは、ブラウザの JavaScript の POST リクエストで HTTP のストリーミングを行える機能です。より具体的には、Fetch API の `body` に ReadableStream を渡せるようになります。
2年前
記事のアイキャッチ画像
AngularJS のチュートリアルを React にリプレイスしてみた③
azukiazusa のテックブログ2
それではいよいよ、AnguarJS のルーティングモジュールである `ngRoute` を置き換えましょう。この置き換えが完了したら AngularJS を完全に取り除くことができます。
2年前
記事のアイキャッチ画像
AngularJS のチュートリアルを React にリプレイスしてみた②
azukiazusa のテックブログ2
AngularJS のチュートリアルを React にリプレイスします。今回の記事では AngularJS のコンポーネントをすべてリプレイスして、angular-resorce の代わりに API クライアントを実装します。
2年前
記事のアイキャッチ画像
AngularJS のチュートリアルを React にリプレイスしてみた①
azukiazusa のテックブログ2
AngularJS のチュートリアルを React にリプレイスします。
2年前
記事のアイキャッチ画像
pnpm は npm と何が違うのか
azukiazusa のテックブログ2
pnpm は npm、yarn と並ぶ JavaScript のパッケージマネージャーです。pnpm と言う名前は「performant npm」に由来します。
2年前
記事のアイキャッチ画像
MSW の実践活用例
azukiazusa のテックブログ2
msw の実践で活用する例を紹介します
2年前
記事のアイキャッチ画像
Volar で Vuetify2.x の補完を効かせる
azukiazusa のテックブログ2
Volar + Vuetify 2.x を利用する場合、型定義ファイルを作成してグローバルコンポーネントを定義する必要があります。
2年前
記事のアイキャッチ画像
【TypeScript】Zod でスキーマ宣言とバリデーションを実施する
azukiazusa のテックブログ2
[Zod](https://github.com/colinhacks/zod) は TypeScript first でスキーマ宣言とバリデーションを実施するためのライブラリです。 一度バリデータを宣言すれば、Zod が自動的に TypeScript の型を推論してくれるという特徴があります。このおかげで重複した型宣言を排除できます。 また、Zod はエコシステムも多く存在しており、OpenApi、Nest.js、Prisma、react-hook-form などと組み合わせて使うことができます。
2年前
記事のアイキャッチ画像
おまえら禁じられたインデックスアクセスを平気で使ってんじゃねえか!わかってんのか?『ランタイムエラー』が生まれたのは人間がコンパイラオプションに甘えたせいだろうがよ!
azukiazusa のテックブログ2
TypeScript 4.1 から noUncheckedIndexedAccess オプションが追加されました。このオプションは上記のような配列のアクセスやオブジェクトのプロパティのアクセスをより厳密にします。 具体的には、配列に対するインデックスアクセスやインデックスシグネチャを通じたプロパティのアクセスは常に `undefined` とのユニオン型となります。
2年前
記事のアイキャッチ画像
Deno Web フレームワーク Fresh チュートリアル
azukiazusa のテックブログ2
Fresh は Deno 製の Web フレームワークです。事前のビルドを必要せず、エッジでレンダリングを提供するという特徴があります。また、Islands Architecture を採用しており、デフォルトではクライアントに JavaScript が配信されることがありません。
2年前
記事のアイキャッチ画像
Atomic CSS エンジン - UnoCSS
azukiazusa のテックブログ2
UnoCSS はフレームワークではなく、Atomic CSS エンジンです。全ては柔軟性とパフォーマンスを考慮して設計されています。UnoCSS にはコアユーティリティはなく、すべての機能はプリセットで提供されます。
2年前
記事のアイキャッチ画像
Vue 向けの Vite 製の UI コンポーネントカタログツール Histoire
azukiazusa のテックブログ2
Histoireはフランス語で「Story」という意味の単語であり、Storybook のように UI コンポーネントのカタログを作成するツールです。Vite にネイティブ対応、Vue の SFC 形式で Story を書けるといった特徴があります。
2年前
記事のアイキャッチ画像
Jest Preview がけっこーすごい
azukiazusa のテックブログ2
Jest Preview とは Jest で実行中のテストに debug() 関数を仕込むことで、実行中のテストが作成した HTML をブラウザでプレビューしながらデバッグできるライブラリです。
2年前
記事のアイキャッチ画像
Playwright でコンポーネントテスト
azukiazusa のテックブログ2
Playwright は E2E テストのための Node.js フレームワークです。v1.22.0 から React,Vue.js,Svelte のコンポーネントに対してテストを実行できるようになりました。つまりもともと備えていた E2E レベルのテストに加えて、結合レベルのテストまでカバーできるようになったということです。
2年前
記事のアイキャッチ画像
Tailwind CSS ベースの UI フレームワークという選択肢
azukiazusa のテックブログ2
この記事を読んでいるみなさんも、Vuetify や MUI のような UI フレームワークを使用したことがあるでしょう。これらの UI フレームワークは Web アプリケーションでよく使われる UI パーツを非常に高機能で提供しており、多大な工数の削減に貢献しています。 その一方で、細かなスタイルの調整に手間取り余分に時間を取られ苦労を経験している方も多いのではないでしょうか?
2年前
記事のアイキャッチ画像
Node.js の標準 API にテストランナーが追加された
azukiazusa のテックブログ2
JavaScript のテストランナーといえば、Jest がデファクトスタンダードと言えるでしょう。最近は Vitest と呼ばれる新たなテストランナーも登場していますが、しばらくは Jest が使われ続けられることでしょう。 そんな中、Node.js 18 から標準 API としてテストランナーが組み込まれました。まだ実験的な機能ではありますが、サードパーティのライブラリを使用せずに扱えることもあって注目を集めています。
2年前
記事のアイキャッチ画像
Rust の魅力に感じた点
azukiazusa のテックブログ2
最近は [Rust](https://www.rust-lang.org/) と呼ばれるプログラミング言語を趣味として触っています。[SWC](https://swc.rs/) や [Rome](https://rome.tools/) のように Rust で作成されたフロントエンドツールが増えていることから興味を持ったのですが、実際に触ってみて Rust が高い人気を誇る理由がよく分かるようになりました。 この記事では私が Rust を触ってみて魅力に感じた点を列挙していきます。
2年前
記事のアイキャッチ画像
markuplint で構文チェックを始めよう
azukiazusa のテックブログ2
HTML の構文チェックを実施するには適切なツールを導入するのがよいでしょう。この記事では markuplint と呼ばれる HTML の静的解析ツールを紹介します。markuplint は JSX(React),Vue,Svlete のようなテンプレートエンジンにも対応しています。
2年前
記事のアイキャッチ画像
Node.js のバージョン管理には Volta がよい
azukiazusa のテックブログ2
皆さん Node.js のバージョン管理ツールには何を使っておりますでしょうか?上記の中でも私がオススメするのは [volta](https://volta.sh/) です。volta は 1.0 がリリースされたのが2020年12月と比較的新しいツールです。
2年前
記事のアイキャッチ画像
npm workspace で始めるモノレポ生活
azukiazusa のテックブログ2
workspace は複数のパッケージ(`package.json`)をレポジトリを管理するために使用されます。このようなレポジトリは**モノレポ**として知られています。
2年前
記事のアイキャッチ画像
君は return と await return の違いを理解して使っているか
azukiazusa のテックブログ2
`Promise` を返す非同期関数を扱う時 `Promise` をそのまま返す書き方と `Promise` を `await` してから返す二通りの方法があります。これらは一見同じように動作するように見えますが異なる点が存在します。
2年前
記事のアイキャッチ画像
import type { ... } from "./module" とは何者何か
azukiazusa のテックブログ2
TypeScript のプロジェクトにおいて `import type { ... } from "./module"` という記述を見たことはないでしょうか? これは Type-Only imports and export と呼ばれる機能で TypeScript3.8 より導入されました。これは名前の通りモジュールから型情報のみをインポートするために使用されます。これは通常の利用用途ではあまり考慮する必要はないのですが、特定の問題に立ち向かうために利用されることがあります。
2年前
記事のアイキャッチ画像
anonymous default export はやめたほうがいいかもね
azukiazusa のテックブログ2
`anonymous default export` とは名前の通り匿名でデフォルトエクスポートを宣言することです。必ず名前を付与しなければいけない名前付きエクスポートと異なり、以下はすべて有効な構文です。
2年前
記事のアイキャッチ画像
msw でリクエストを検証する方法
azukiazusa のテックブログ2
msw 使ってテストを記述した時期待したリクエストが送信されているのか検査したくなるかもしれません。リクエストを検証する方法と、それを回避する方法を紹介します。
2年前
記事のアイキャッチ画像
Storybook 単体でインタラクションテストを実施する
azukiazusa のテックブログ2
Storybook の Component Story Format 3.0 では新機能として play() 関数が追加されました。 `play()` 関数は Storybook 上で ユーザーのインタラクションな操作を表現することができます。 以前は composeStories() 関数により Storybook 上で作成したストーリーを Jest で再利用する方法を書いたのですが、どうやら Storybook のみで完結してテストを実行することができるようですのでこちらを試してみます。
2年前
記事のアイキャッチ画像
Web フロントエンドエンジニアなら当然 Rust も書けますよね??
azukiazusa のテックブログ2
本記事では Yew を利用して Web アプリケーションを作成してみたいと思います。Yew は React や Vue などと同じくコンポーネントベースのフレームワークでインタラクティブな UI を作成できます。
2年前
記事のアイキャッチ画像
Q:v-for の key に 配列のインデックスを使うのは犯罪ですか?#Shorts
azukiazusa のテックブログ2
結論: - `v-for` ディレクティブに渡す配列要素が決して変わらないことがわかっているのであれば使っても良い。 - `id` 属性を持っているのであれば常に `id` 属性を `key` に使用するべき。
2年前
記事のアイキャッチ画像
Q:TypeScript の関数の返り値の型を明示的に書かないのは犯罪ですか?#Shorts
azukiazusa のテックブログ2
TypeScript において関数の返り値の型は推論させることは可能ですが、これはコードベース全体に意図しない型の変更による影響が広がる可能性があります。
2年前
記事のアイキャッチ画像
Node.js に fetch がやってきた
azukiazusa のテックブログ2
Node.js で fetch が使えるようになる
2年前
記事のアイキャッチ画像
アクセシビリティを自動で検査する仕組みを整える
azukiazusa のテックブログ2
様々な方法でアクセシビリティを自動で検査します
2年前
記事のアイキャッチ画像
Storybook の interaction testing と jest を組み合わせる
azukiazusa のテックブログ2
Storybook の Component Story Format 3.0 では新機能として `play()` 関数が追加されました。 `play()` 関数は Storybook 上で ユーザーのクリックやフォーム入力のようなインタラクションな操作を表現することができます。 `play()` 関数の大きな特徴としては Component Story Format の移植性の高さを利用して Storybook 上で定義したインタラクションを `Jest` など他の領域においても再利用できることです。
2年前
記事のアイキャッチ画像
Vite だと require() が使えないよ〜
azukiazusa のテックブログ2
皆様はすでにプロジェクトに Vite は導入されていらっしゃいますでしょうか?私はできていません。 Vite はフロントエンドのビルディングツールであり、従来の Webpack 等と比較して高速に動作するといった特徴があります。Vue.js を開発した Evan You 氏によって開発ツールではありますが Vue.js に限らず React や Svelte にも対応しています。
2年前
記事のアイキャッチ画像
フロントエンドのテストのモックには msw を使うのが最近の流行りらしい
azukiazusa のテックブログ2
最近のテスト手法として API コールをモックする際に Jest ではなく [Mock Service Worker](https://mswjs.io/) (以下 `msw` )を使用する手法が注目されています。実施にどのように使用されているのか見ていきましょう。
2年前
記事のアイキャッチ画像
【Vue.js】ref vs reactive
azukiazusa のテックブログ2
さて、そんな Compositon API ですがリアクティブなデータを定義する際に `reactive` と `ref` の2つの方法が用意されています。 `reactive` と `ref` どちらを使用するのがよいのか公式からも推奨する方法がありませんので、どちらを使用するべきか迷ってしまうところです。 `reactive` と `ref` のそれぞれのメリット・デメリットを確認してみましょう。
2年前
記事のアイキャッチ画像
Vitest と呼ばれるテスティングフレームワークがめちゃくちゃ早いらしいな
azukiazusa のテックブログ2
Vitest は Vite ベースの JavaScript のテスティングフレームワークです。
2年前
記事のアイキャッチ画像
Vuetify 3 Alpha の主な変更点
azukiazusa のテックブログ2
[Vuetify](https://vuetifyjs.com/) は Vue.js で多く使われている UI コンポーネントです。現在のバージョンは Vue 3 には対応していません。 現在 Vue 3 に対応する Alpha 版の Vuetify 3 が公開されています。開発スケジュールは以下のとおりになっています。
2年前
記事のアイキャッチ画像
Nuxt3 の新しい機能いろいろ
azukiazusa のテックブログ2
現在 Nuxt.js は バージョン3がパブリックベータ版として提供されています。 Nuxt.js が 2 → 3 に移行するにあたってたくさんの新機能が追加されました。
2年前
記事のアイキャッチ画像
CSS で印刷用のスタイルを設定できる
azukiazusa のテックブログ2
大抵のブラウザでは Web ページを印刷することができます。 しかし Web ページをそのまま印刷しようとすると改ページがおかしくなったりレイアウトがおかしくなってしまうことがあるでしょう。そもそも Web ページはディスプレイで表示することを目的としているので印刷には不向きなものです。 とはいえ Web ページを印刷したいというニーズは少なからずあるとは思います、そのようば場合には `@media print` などのような印刷用の CSS を利用することで見た目を整えることができます
2年前
記事のアイキャッチ画像
フォーカストラップとは? 〜アクセシブルなモーダル〜
azukiazusa のテックブログ2
フォーカストラップ(またはループ)とは、ウェブページをキーボードで操作する際にフォーカスをとある領域からはみ出さないようにすることです。フォーカス可能な要素を抽出してその中をループすることで実現ができます。 登場シーンとしてはモーダルで使われることが多いです。実際に例を交えて確認してみましょう。
2年前
記事のアイキャッチ画像
Webpack5 Module Federation ではじめるマイクロフロントエンド
azukiazusa のテックブログ2
Webpack5 の Module Federation を使用してマイクロフロントエンドを作成します。
2年前
記事のアイキャッチ画像
Youtube すごい裏ワザ!!!
azukiazusa のテックブログ2
Tab キーでページを操作した時のみ表示される「ナビゲーションをスキップ」は一般にスキップリンクと呼ばれるものであり、ウェブアクセシビリティのガイドライン (W3C 勧告) である WCAG 2.0にあるブロックスキップと呼ばれる達成基準を達成する方法として上げられています。
2年前
記事のアイキャッチ画像
npm の人気パッケージ 「coa」と「rc」にマルウェアが埋め込まれた
azukiazusa のテックブログ2
2021/11/5 npm パッケージ 「coa」と「rc」がハイジャックされ、パスワードを盗むマルウェアが埋め込まれました。現在の時点では問題のあったバージョンはすべて取り除かれています。
3年前
記事のアイキャッチ画像
ボックスモデル
azukiazusa のテックブログ2
CSS にはボックスという概念があります。ブラウザは文書をレイアウトする際に、それぞれの要素を CSS のボックスモデルに基づいた長方形の箱(ボックス)として表現します。つまりは、HTMLの個々の要素はすべてボックスにからできており、それらのボックスが組み合わさることによってページ全体が表現されます。 ボックスは CSS において最も基本的な概念であり、ボックスを理解することは CSS でレイアウトを構成したり要素同士を揃えるための手助けとなることでしょう。
3年前
記事のアイキャッチ画像
【TypeScript】type-challenges 中級編
azukiazusa のテックブログ2
[type-challengs](https://github.com/type-challenges/type-challenges) の medium レベルをやります。
3年前
記事のアイキャッチ画像
【TypeScript】type-challenges で学ぶ高度な型
azukiazusa のテックブログ2
type-challengesを知っていますか? これは TypeScript の型についての問題集で、問題文の条件を満たす独自のユーティリティ型を作るチャレンジです。いわゆる「型パズル」ってやつですね。 問題の回答はPlayground上で行えるので実際に手を動かしながら問題を解くことができます。型パズルを通じてTypeScript の高度な型について学んでいきましょう。
3年前
記事のアイキャッチ画像
lodash-es lodash 違い
azukiazusa のテックブログ2
[lodash-es](https://www.npmjs.com/package/lodash-es) とは [lodash](https://lodash.com/) を `ES module` 形式で提供しているライブラリです。
3年前
記事のアイキャッチ画像
Q: TypeScript を使っているのに関数の引数のオブジェクトや配列に `readonly` を付与しないのは犯罪ですか? #Shorts
azukiazusa のテックブログ2
質問来てた👉 Q: TypeScript を使っているのに関数の引数のオブジェクトや配列に `readonly` を付与しないのは犯罪ですか? 結論:犯罪になる場合がある。 まず、配列の引数に `readonly` を付与しておけば以下の利点を得られます。 - うっかり関数の内部で引数の値を変更してしまうコードを書いてしまったときにコンパイルエラーが得られる - 関数の利用者が安心して関数を呼び出せる
3年前
記事のアイキャッチ画像
【Vue.js】script setup 構文がすごくすごい
azukiazusa のテックブログ2
Vue.js 3.x から script setup 構文が使えるようになりました。これは単一ファイルコンポーネント(SFC)内で Composition API を使用している際に使える糖衣構文です。下記のようなメリットを得ることができ、公式からも使用が推奨されています。
3年前
記事のアイキャッチ画像
Vuex 5 でどのように変わるのか。
azukiazusa のテックブログ2
現在リリースされている最新のバージョンは Vuex 4 です。 これは Vuex 3 と互換性のあるバージョンで Vue 3 で使用するためのものであり、 Vuex 3 と同じ API となっています。 Vuex 5 は Vue 3 において Composition API による Reactivity API が登場したことにより Reactivitty API によってどのように Vuex をどうさせるか再考されたバージョンとなっています。
3年前
記事のアイキャッチ画像
【Vue3.2】styleタグ内でJavaScript変数をバインドできる
azukiazusa のテックブログ2
Vue.js3.2からは、JavaScriptの変数をCSS変数としてバインドできるようになりました。 つまりは、CSSの値を動的に設定できるということです。 ものは試しのやってみましょう。
3年前
記事のアイキャッチ画像
Vue2のプロジェクトをVue3へマイグレーションsする
azukiazusa のテックブログ2
Vue 3が正式リリースされてから約1年が経過しました。 Vuetifyのリリース目標である2021年Q3も近づく中でそろそろVue3へのアップデートを検討されている方もいらっしゃることでしょうか? この記事ではVue 2からVue 3への移行手順を記述していきます。
3年前
記事のアイキャッチ画像
【Vue.js】Mixinを使うのはもうやめよう
azukiazusa のテックブログ2
禁止まで言ってしまうとなんだか強い言葉のように聞こえてしまいますが、mixinは基本的にあまり良いアプローチとは考えられません。 実際に、Reactにも過去にはMixinが存在していましたが現在は廃止されています。
3年前
記事のアイキャッチ画像
あの日見たaxiosの機能を僕達はまだ知らない。
azukiazusa のテックブログ2
axiosは、JavaScriptにおけるHTTPクライアントのデファクトスタンダードといえるでしょう。 Promiseベースで非同期通信を行えるHTTPクライアントとして、ブラウザ標準のfatchやjQuery.ajaxなどがありますが、特にaxiosがよく使われているのには豊富なオプションや設定に理由付けられるでしょう。 axiosの機能について私のように詳しくなくても直感的にHTTPリクエストを送れるのも良い点の1つですが、せっかくなのでaxiosでどのようなことができるのがを見ていきましょう。
3年前
記事のアイキャッチ画像
VuetifyのテーマをCSS変数として使用する
azukiazusa のテックブログ2
VuetifyのテーマをCSSの変数として生成して使用します。
3年前
記事のアイキャッチ画像
青春JSDocはTypeScript先輩の夢を見ない
azukiazusa のテックブログ2
時には、TypeScriptという概念が存在しない退屈な世界で開発を行わなけらばならない状況はあるでしょう。私はもはやキーボードでタイピングすることすらままなりません。 そんなJavaScriptしか利用できない状況で代替手段となるのが、JSDocです。JSDocのアノテーションによって型を付与することによって最低限の支援を受けることができます。
3年前
記事のアイキャッチ画像
【TypeScript】型定義をする際にもDRY原則を守る
azukiazusa のテックブログ2
DRY原則は非常に有名な原則ですし、普段から特に考えずとも自然と重複をさけるようなコードを書いている方も多いことでしょう。 とはいえ、TypeScriptにおいて`interface`や`type`などを用いて型定義を行う際に重複した型定義を行ってしまうことはないでしょうか? TypeScriptには型定義をする際に重複を抑える手段は確かに存在します。そのようないくつかの方法を紹介します。
3年前
記事のアイキャッチ画像
Jest setTimeout()のようなでタイマー関数をテストする
azukiazusa のテックブログ2
JavaScriptには、setTimeout()のような時間に関する便利な機能が用意されています。しかし、これらの関数はユニットテストを記述する際に厄介です。Jestのタイマーモックはこのような場合に利用できる便利な機能です。
3年前
記事のアイキャッチ画像
【TypeScript】型アノテーションと型アサーションの違い
azukiazusa のテックブログ2
型アノテーションと型アサーションによる変数宣言は、一見同じ結果ををもたらすように見えます。しかし、型アサーションには明確な欠点が存在します。
3年前
記事のアイキャッチ画像
【mongoose】Cannot overwrite 'Model' model once compiled. エラーの直し方
azukiazusa のテックブログ2
mongooseで遭遇するCannot overwrite 'Model' model once compiled. エラーの解消方法です
3年前
記事のアイキャッチ画像
JSONオブジェクトのあれこれ
azukiazusa のテックブログ2
`JSON`オブジェクトはJavaScriptにおいて、JSONをパースしたり値をJSONに変換するためにもっぱら使われます。 普段使っている`JSON.stringify()`や`JSON.parse()`にはオプショナルな引数を渡すことによってその振る舞いを変更することができます。
3年前
記事のアイキャッチ画像
【JavaScript】Objectがプリミティブに変換されるとき
azukiazusa のテックブログ2
JavaScriptがプリミティブな値に変換されるとき、string型に変換されようとするか、number型に変換されようとするかで挙動が変化する
3年前
記事のアイキャッチ画像
ReactのErrorBoundaryで内部のエラーをキャッチする
azukiazusa のテックブログ2
Error Boundaryとは、自身の子コンポーネントツリーで発生したJavaScriptのエラーをキャッチ・記録しフォールバックのUIを表示するコンポーネントです。 例えるなら、`try/catch`構文を行うコンポーネントのようなものと言えます。
3年前
記事のアイキャッチ画像
仕事で役に立つかもしれないHTML5のマイナー要素
azukiazusa のテックブログ2
HTMLは書いたことがありますか?プログラミング初心者が最初の一歩として書き出すのに好まれる言語ですが、セマンティクスを追求すると奥深い言語だとわかります。タグの種類も数多くあり、全てを把握している人はそう多くなないでしょう。 今回は、そんなHTMLの普段の仕事では余り見かけないであろう要素を紹介していきます。
3年前
記事のアイキャッチ画像
Nuxt Sentryでユーザーフィードバックを受け取る
azukiazusa のテックブログ2
Sentryでは、エラーが発生した際に簡単にユーザーフォードバックを求めるダイアログを表示することができます。 Nuxt.jsでは、エラーが発生した際には`layouts/error.vue`へ遷移させることでエラーページを表示するので、このエラーコンポーネントにダイアログを表示させる処理を書いていきます。
3年前
記事のアイキャッチ画像
Node.js(Express)でcsvを生成してダウンロード
azukiazusa のテックブログ2
Node.js(Express)でCSVファイルを生成してダウンロードさせます。
3年前
記事のアイキャッチ画像
CKADにも合格した
azukiazusa のテックブログ2
開発者向けのK8sの試験であるCKADにも合格したので同様に合格体験記を記載したいと思います。 といっても、大枠の部分はCKAのときとあまり変わらないのでCKAと異なる部分を中心に記載したいと思います。
3年前
記事のアイキャッチ画像
Vue CLIで作成したプロジェクトをViteに置き換える
azukiazusa のテックブログ2
Viteは、一言でいうとフロントエンドのめっちゃ早いビルドツールです。Vue CLIで作成したプロジェクトをViteに置き換えるためにvue-cli-plugin-viteをというプラグインを使います。
3年前
記事のアイキャッチ画像
KubernetesのapiVersion
azukiazusa のテックブログ2
Kubernetesのマニフェストを作成するときには、`apiVersion`フィールドを指定する必要があります。 例えば`Pod`の場合には`v1`を、`Deployment`の場合には`apps/v1`を指定しますが、これらはどのようなルールで記述するのでしょうか。
3年前
記事のアイキャッチ画像
etcdのバックアップとリストア
azukiazusa のテックブログ2
etcdは、kubernetesのクラスターの情報を保存するkey-valueストアです。
3年前
記事のアイキャッチ画像
kubectl JSONpath
azukiazusa のテックブログ2
kubectlはアウトプットの形式としてJSONPathをサポートしています。
3年前
記事のアイキャッチ画像
Vue.jsでIE11対応
azukiazusa のテックブログ2
人生でときにはIE11に対応させなければいけない時があるでしょう。Vue.jsでIE11に対応しなけらばいけなくなったときに読むものを記載しておきます。
3年前
記事のアイキャッチ画像
e2eテスティングフレームワークCypress
azukiazusa のテックブログ2
Cypressは、JavaScript製のE2Eテスティングフレームワークです。 実行速度が早い、HTTPリクエストの実行を待つなどテストが壊れにくい仕組みが整っています
3年前
記事のアイキャッチ画像
Kubernetes Tips
azukiazusa のテックブログ2
知っていると時間を短縮できるようなkubectlコマンドのtipsです。
3年前
記事のアイキャッチ画像
Sassの基礎文法
azukiazusa のテックブログ2
SassはCSSのメタ言語です。CSSに比べてコード量が減り、保守性が優れるといった開発体験を向上させてくれる特徴があります。
3年前
記事のアイキャッチ画像
Kustomizeとは
azukiazusa のテックブログ2
Kustomizeとは、Kuberbetsコミュニティのsig-cliが提供しているマニフェストのテンプレーティングツールです。環境ごとにマニフェストを生成したり特定のフィールドを上書きするといった機能が提供されています。
3年前
記事のアイキャッチ画像
KubernetesのパッケージマネージャーHelm
azukiazusa のテックブログ2
Helmは、Kubernetsのパッケージマネージャーです。 例えば、npmを利用して第三者が作成したパッケージをレポジトリで管理して検索・インストールするように、Helmではチャート(Chart)と呼ばれる設定ファイルをレポジトリで管理しています。
3年前
記事のアイキャッチ画像
Kubernetes用語集
azukiazusa のテックブログ2
仕事上kubernetesを学ぶ必要が出てきました。 筆者のレベルは、Docker・kubernetesの概念・必要性をやんわりと理解している状態です。 勉強をすすめる上で、わからない用語が次々と出てきたて頭の中がパンクしそうになったので、簡潔に随時まとめることとしました。
3年前
記事のアイキャッチ画像
DenoでREST API
azukiazusa のテックブログ2
この記事では、Denoを使い簡単なCRUD操作を行うREST APIを構築します。
3年前
記事のアイキャッチ画像
TailwindCSSでダークモード
azukiazusa のテックブログ2
昨今のアプリケーションでは、ダークモードを提供しているのがもはや当たり前になってきました。 OSのレベルでダークモードを設定することができ、ダークモードが提供されていないサイトは眩しく感じしてしまって敬遠してしまうなんて経験はあるのではないでしょうか? そんな一般化されたダークモードの提供をTailwind CSSで実装します。
3年前
記事のアイキャッチ画像
はじめてのGraphQL
azukiazusa のテックブログ2
GraphQLとは、Facebookが開発したAPI向けのクエリ言語です。RESTに変わるサーバーとクライアントの通信手段として注目を集めています。 リクエスト・レスポンスの型の定義ができる、フロント側から取得するデータを選択することができるなどの特徴があります。 GraphQL自体はSQLのようなクエリ言語としての位置づけなので、Java、Node.js、Ruby、JavaScript、Pythonなど様々な言語で利用することができます。
3年前
記事のアイキャッチ画像
Sapper + contentful + VercelのJamstackで高速なブログを構築する
azukiazusa のテックブログ2
JamstackのJamはJavaScript/APIs/Markupの頭文字です。 従来の手法と比較して、高速化・堅牢なセキュリティ。より簡単なスケーラブル・開発体験の向上という特徴を持っています。実行時にAPIから取得したデータを動的にレンダリングせずに、ビルド時にAPIから取得して静的なHTMLとして出力されます。
3年前
記事のアイキャッチ画像
【Svelte + TypeScript + tailwindcss】本検索サイト チュートリアル
azukiazusa のテックブログ2
この記事でははSvelte + TypeScript + tailwindcssで本検索サイトを作成します。 Svelteを使ってアプリケーションを作成1から作成することができます。 以下のことが学べます。 - Svelteの基礎文法 - Svelteのルーティング - Svelteのストア HTML・CSS・JavaScriptの基礎的な理解がある人が対象です。
3年前
記事のアイキャッチ画像
Vue3 コンポーネントのテスト
azukiazusa のテックブログ2
コンポーネントのテストをするのフレームワークとしてJest、vue-test-utils 2を利用します。Vue2系をターゲットにしているvue-test-utils 1とは一部APIが異なります。
3年前
記事のアイキャッチ画像
TailWindCSSとは
azukiazusa のテックブログ2
TailWindCSSはBootStrap・Materialize CSSなどに代表するCSSフレームワークの一つです。 その特徴として、**Utility First**を掲げています。
3年前
記事のアイキャッチ画像
JavaScriptライブラリ Svelteとは
azukiazusa のテックブログ2
Svelteとは、ReactやVue.jsのような宣言的UIライブラリの一種です。その最大の特徴は、ReactやVue.js・Angularと異なりSvelteはコンパイラであることを謳っているところです。Svelteによってコンパイルされたコードは、すべてVanilla JS - ネイティブのJavaScript- にで生成されます。 そのため、コンパイル後のファイルサイズも小さくパフォーマンス上での利点が期待されています。
3年前
記事のアイキャッチ画像
Firebase Functions https.onCall()トリガーでアプリから簡単に呼び出す
azukiazusa のテックブログ2
Firebase Functionsとは、Firebaseの提供するサーバレスフレームワークです。HTTPSリクエストによって関数を実行したり、FireStore・Cloud Storage・AuthenticationのCRUDイベントをトリガーに関数を実行することができます。使用できる言語はJavaScript・TypeScriptに限られているというデメリットはあるものの、手軽にデプロイでき簡単にプロジェクトの他のFirebaseの機能と統合できるメリットがあります。
3年前
記事のアイキャッチ画像
JavaScript テストフレームワークのJestのモックがすごくすごい
azukiazusa のテックブログ2
Jestは、JavaScriptのシンプルなテスティングフレームワークです。ゼロコンフィグを謳っており、細かい設定なしに動作させることが可能です。 Jestの中でも特に強力な機能がモッキングです。Jestのモックを利用すれば、外部ライブラリであろうとモジュール外のオブジェクトを簡単にモック化することができます。 実際に、テストコードの例を見ていきましょう。
3年前
記事のアイキャッチ画像
Vue.js Composition APIでTODOアプリ作成
azukiazusa のテックブログ2
Vue3 Composition APIを使って、ハンズオン形式でTODOアプリを作成していきます。
3年前
記事のアイキャッチ画像
イマドキのJavaScriptの書き方
azukiazusa のテックブログ2
JavaScriptはES2015以降から言語自体が大きく変化しました。 ES2015以降も、毎年JavaScriptはアップデートが行われており、最新の使用はES2020となっています。 このように、JavaScriptという言語は日々進化を遂げています。ES2015より前の書き方の多くが非推奨となっており、過去のWebや本の情報は現在ではあまり役に立たなくなっています。 そんなJavaScriptのイマドキの書き方を見ていきましょう。
3年前
記事のアイキャッチ画像
すぐに使える!JavaScriptの華麗な配列操作
azukiazusa のテックブログ2
JavaScriptで配列操作をする際には、まずはJavascriptが持つ配列のメソッドを眺めて見るとよいでしょう。JavaScriptはライブラリに頼らなくとも自前で高度な操作を可能にしてくれます。 組み込みの配列メソッドはたくさんありますが、その中で私がよく使うメソッドを紹介します。
3年前
記事のアイキャッチ画像
Go言語 テスト
azukiazusa のテックブログ2
Go言語の提供するテストはシンプルです。テストのために覚えることは多くはありません。 Go言語の単体テスト用の機能は`testing`という標準パッケージとして提供されています。ベンチマークやカバレッジ、標準出力のテストなどをカバーしています。 また、テストは`go test`コマンドによって実行されます。サードパーティのツールなどは必要ありません。まずはこの`testing`パッケージの内容を見ていきます。
3年前
記事のアイキャッチ画像
Go 言語 標準パッケージでHTTPサーバー
azukiazusa のテックブログ2
Go言語は、標準パッケージでHTTPサーバーと基本的なHTTPクライアントを提供します。 使用するのは、net/httpというパッケージです。
4年前
記事のアイキャッチ画像
Go言語 ポインター
azukiazusa のテックブログ2
Go言語には、ポインタがあります。 ポインタとは、メモリのアドレスのことです。アドレスは`0xc0000b4008`のような16進数で表されます。
4年前
記事のアイキャッチ画像
Go言語 構造体・インターフェース
azukiazusa のテックブログ2
構造体(Struct)とは、フィールドの集まりです。JavaScriptのオブジェクトよく似ており、データをまとめて1つの集まりの値として表現します。 例えば、座標を表すには緯度と経度がフィールドとして必要になるでしょう。緯度と経度をそれぞれ別の変数として宣言することはできますが、間違いが生じやすく面倒な処理になってしまいます。
4年前
記事のアイキャッチ画像
Go言語 コレクション(配列・スライス・マップ)
azukiazusa のテックブログ2
配列は決まった長さを持つ要素を並べた順序のあるコレクションです。 Go言語の配列は固定長になっており、宣言時に長さと要素型を指定します。 長さは後から変更することはできません。 Go言語の配列は柔軟性に欠けるため、実際にはあまり使用されません。可変長であるスライスがよく使われます。 マップはキーと値によって宣言されます。これは、連想配列のようなものです。
4年前
記事のアイキャッチ画像
Go言語 型・関数・メソッド
azukiazusa のテックブログ2
Go言語は静的型付け言語であり、全ての変数は何らかの型に属し、異なる型同士の演算といった問題点の多くはコンパイル時に検出されます。 関数の宣言にはfuncキーワードを使用します。関数の引数と戻り値には型を指定します。戻り値を複数持たせられる、戻り値に名前をつけることができるといった特徴があります。 クラスやオブジェクトはないですが、メソッドはあります。メソッドは型に紐付けられます。
4年前
記事のアイキャッチ画像
Go言語基礎文法
azukiazusa のテックブログ2
Go言語(Golang)は、2009年にGoogleによって開発されたオープンソースの静的型付け、コンパイルされるプログラミング言語です。Go言語はコンパイルされるプログラミング言語です。 Go言語はシンプルで、信頼性が高く、効果的なソフトウェアを構築します。
4年前
記事のアイキャッチ画像
CSSの設計
azukiazusa のテックブログ2
今この文章を読んでいる人ならば、少なくともCSSには触れたことがあると思います。CSSはとても簡単に記述できますが、それゆえにCSSは「壊れやすい」のです。なぜCSSは壊れやすくなってしまうのでしょうか。CSSには「すべてがグローバルスコープ」「複雑化するWeb開発」といった問題点があげられます。そのような状態に対する解決策として、CSSの設計が誕生しました。
4年前
記事のアイキャッチ画像
Express + TypeScript + MondoDBでやる
azukiazusa のテックブログ2
Expressは、Node.jsのWebアプリケーションでもっとも利用されているフレームワークです。Expressは、HTTPによるWeb上の相互作用とNOde.jsプラットフォームの中間に位置するので、ある種のミドルウェアと言えます。 Expressを利用して、MVCモデルのアプリケーションを開発してみます。 データベースにはMongoDBを利用し、さらにTypeScriptで書いてみます。
4年前
記事のアイキャッチ画像
Node.js - サーバーサイドのJavaScript
azukiazusa のテックブログ2
Node.jsは、V8 Javascriptエンジン上に構築されたJavaScriptの実行環境です。サーバーサイドのJavaScript環境であり、非同期、イベント駆動といった特徴があります。
4年前
記事のアイキャッチ画像
Firebase④ Cloud FireStore - クエリ
azukiazusa のテックブログ2
Firebase4回目の記事です。 前回は、Firebaseにおける単一のドキュメントに対するCRUD操作までを取り扱いました。 今回は複数のコレクションから取得するためのクエリについて説明していきます。
4年前
記事のアイキャッチ画像
Denoとはなにか - 実際に使ってみる
azukiazusa のテックブログ2
Denoは、Node.jsの製作者であるRyan Dahlによって作られた、新しいJS/TSランタイムです。簡単に説明すると、Node.jsのイケてなかったところを改良したものがDenoになります。
4年前
記事のアイキャッチ画像
Firebase③ Cloud Storage
azukiazusa のテックブログ2
Firebase3週目の記事です。 今回は、主に画像などのデータを保存するストレージ機能を提供するCloud Storageを取り扱います。 Vue.jsを利用したブログにサムネイル画像を設定する機能をもとに説明していきます。
4年前
記事のアイキャッチ画像
JavaScript ECMAScriptとかBabelとか
azukiazusa のテックブログ2
JavaScript ECMAScriptとかBabelとか
4年前
記事のアイキャッチ画像
Firebase④ Cloud FireStore
azukiazusa のテックブログ2
Cloud FireStore(以下FireStore)とは、FireBaseの提供するドキュメント指向型 のNoSQLデータベースです。 NoSQLとしての特徴としてのスキーマレス、スケーラブルといった特徴のほかにリアルタイムアップデート、セキュリティルール、オフラインサポートといった独自の特徴を備えており、特にバックエンドを介さずにクライントサイドから直接操作できるという点が大きなポイントです。 また、β版から正式リリースされたのが2019年2月ということもあり、比較的新しい技術です。
4年前
記事のアイキャッチ画像
Firebase② Firebase Authentication
azukiazusa のテックブログ2
Firebase第二弾です。 Firebase Authenticationのメールアドレスによるログインと、FireStorageについて説明していきます。
4年前
記事のアイキャッチ画像
firebaseとは
azukiazusa のテックブログ2
Firebaseは、Googleが提供するバックエンドサービスです。 Firebaseは、バックエンドのサービスを担ってくれるので、開発者はアプリケーションの開発に専念することができ、バックエンドで動くサービスを作成、管理する必要はありません。 そのため、素早くアプリケーションをリリースるることができます。 Firebaseは、iOS/AndroidアプリからWebサービスまで幅広く使えます。 認証、データベース、ストレージなどたくさんの機能が使用できます。
4年前