ブックマーク / blog.jxck.io (88)

  • なぜブラウザエンジンは 1 つではダメなのか? または Ladybird への期待 | blog.jxck.io

    Intro Ladybird は、他のブラウザエンジンをフォークせず、企業との取引に頼らず、寄付だけで作ることを宣言した新しいブラウザエンジンだ。 Ladybird https://ladybird.org/ これがいかに価値のある取り組みなのか、 Web を漫然と眺めてきた筆者による N=1 の妄言を書いてみる。 ブラウザエンジンとは ブラウザは、「ブラウザ UI」と「ブラウザエンジン」と、大きく二つの構成要素に分けて考えることができる。 ブラウザエンジンとは、いわゆる Web 標準の技術を片っ端から実装した、ブラウザの土台となるものだ。 ビルドすれば、入力した URL からネットワーク経由でリソースを取得し、パースしてレンダリングして表示できる。そのための IETF RFC や WHATWG HTML や ECMAScript が実装されている、標準技術の結集だ。 その上に、例えばタブ

    なぜブラウザエンジンは 1 つではダメなのか? または Ladybird への期待 | blog.jxck.io
    yug1224
    yug1224 2024/07/07
  • 「1 分 de Web 標準」のやり方 at Web Developer Conference 2024 #wdc2024 | blog.jxck.io

    Intro 9/7 開催予定の Web Developer Conference 2024 では、 「1 分 de Web 標準」という LT 大会を予定しています。 CFP も募集中ですが、(筆者の周り以外では)聞き馴染みのないやり方だと思うので、この LT のやり方を解説します。 プロポーザル | Web Developer Conference 2024 - fortee.jp https://fortee.jp/web-dev-conf-2024/proposal/all 1 分 de Web 標準 「Web 標準」な何らかのトピックについて、 1 人 1 ページ 1 分で LT するというものです。 Slide スライドはこちらで用意する Google Slides を共有し、そこに割り当てられた 1 ページのみを使えます。 その 1 ページは、マスターで振るページ番号以外は、ど

    「1 分 de Web 標準」のやり方 at Web Developer Conference 2024 #wdc2024 | blog.jxck.io
    yug1224
    yug1224 2024/06/27
  • URL.parse を Chromium で Ship するまで | blog.jxck.io

    Intro Chrome 126 で筆者が実装した URL.parse が Ship された。 Chromium にコントリビュートしたことは何回かあったが、単体機能を Ship したのは初めてだった。 invalid URL の処理 new URL() によって、文字列の URL をパースすることができるようになって久しいが、この API は invalid な場合に例外を投げる。 例外処理をするよりも、先に URL としてパース可能かどうかを知るための URL.canParse() が提案され、先に実装が進んだ。 URL.canParse(str) // boolean しかし、これでは二回パースが必要になるため無駄が多い。 if (URL.canParse(str)) { // 1 回目のパース return new URL(str) // 2 回目のパース } そこで、失敗したら

    URL.parse を Chromium で Ship するまで | blog.jxck.io
    yug1224
    yug1224 2024/06/15
  • Web Developer Conference 2024 開催告知 #wdc2024 | blog.jxck.io

    CFP CFP の募集には fortee を使ってみようと思います。まだ慣れてないので色々と失敗すると思いますが、多めにみてください。(参加募集は fortee ではなく、慣れてる connpass を使う予定です) また、採択は fortee のプロポーサルのスターを第一基準にするので、聞きたいのはスターしてください。(なので、多分応募は早い方が有利です) プロポーザル | Web Developer Conference 2024 - fortee.jp https://fortee.jp/web-dev-conf-2024/proposal/all 募集は Session と LT の 2 枠です。 Session 40 分枠 x 12 Web 開発に関わることならなんでも可 終わったら感想戦会場に移動、そこで QA CFP を Fortee で募集 基は Fortee のスター数

    Web Developer Conference 2024 開催告知 #wdc2024 | blog.jxck.io
    yug1224
    yug1224 2024/06/13
  • Reverse HTTP Transport が描く新しい Web サービスデプロイ構成 | blog.jxck.io

    Intro IETF の httpbis で、 Reverse HTTP Transport という仕様が提案されている。 Reverse HTTP Transport https://www.ietf.org/archive/id/draft-bt-httpbis-reverse-http-01.html この仕様は、 Origin サーバの前に何かしら Intermediaries (Loadbalancer, Reverse Proxy, CDN etc)があるのが一般的な現代の Web サービス構成において、非常に革新的なアイデアを取り入れたプロトコルと言える。 まだ v01 という初期段階ではあるが、発想が非常に面白かったので、読書メモを残す。 登場人物 ベースとして HTTP の話にはなるが、登場人物が多いため Client/Server という「相対的な役割」で話をすると、紛

    Reverse HTTP Transport が描く新しい Web サービスデプロイ構成 | blog.jxck.io
    yug1224
    yug1224 2024/05/12
  • Referrer-Policy の制限を強めると安全になるという誤解 | blog.jxck.io

    Intro Referrer-Policy は、送信される Referer の値を制御することが可能だ。 このヘッダの副次的な効果をよく理解していないと、「no-referrer にして送らないのが最も安全だ」という誤解を生むことになる。 では、複数あるポリシーの中でどのような観点で、どのディレクティブを採用するのが良いのだろうか? 前提として前回の記事の「リクエストの出自をチェックすることは現代の実装のベースプラクティスである」という点を踏まえて考えてみる。 令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io https://blog.jxck.io/entries/2024-04-26/csrf.html Referer とアナリティクス Referer は、リクエストに対してその前のページの URL を送るところから始まった。 GET / H

    Referrer-Policy の制限を強めると安全になるという誤解 | blog.jxck.io
    yug1224
    yug1224 2024/05/09
  • 令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io

    Intro CSRF という古の攻撃がある。この攻撃を「古(いにしえ)」のものにすることができたプラットフォームの進化の背景を、「Cookie が SameSite Lax by Default になったからだ」という解説を見ることがある。 確かに、現実的にそれによって攻撃の成立は難しくなり、救われているサービスもある。しかし、それはプラットフォームが用意した対策の質から言うと、解釈が少しずれていると言えるだろう。 今回は、「CSRF がどうして成立していたのか」を振り返ることで、当にプラットフォームに足りていなかったものと、それを補っていった経緯、当にすべき対策は何であるかを解説していく。 結果として見えてくるのは、今サービスを実装する上での「ベース」(not ベスト)となるプラクティスだと筆者は考えている。 CSRF 成立の条件 例えば、攻撃者が用意した attack.examp

    令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io
    yug1224
    yug1224 2024/04/29
  • RFC の URL はどのドメインで貼るのが良いか | blog.jxck.io

    Intro IETF の RFC は、いくつかの場所で同じものが公開されている。 どの URL が最適なのか、という話。 結論は www.rfc-editor.org だ。 RFC Hosting Site 例えば RFC 9110 - HTTP Semantics で言うと、以下の 4 つがある。 https://tools.ietf.org/html/rfc9110 https://datatracker.ietf.org/doc/html/rfc9110 https://www.rfc-editor.org/rfc/rfc9110.html https://httpwg.org/specs/rfc9110.html まずは、これらの違いを簡単に解説する。 tools.ietf.org IETFホストする RFC は、 tools.ietf.org だった。 RFC 2616: H

    RFC の URL はどのドメインで貼るのが良いか | blog.jxck.io
    yug1224
    yug1224 2024/03/28
  • Chromium にコントリビュートするための周辺知識 | blog.jxck.io

    Intro Chromium にコントリビュートするためには、ソースコードを理解する以外にも、もろもろ必要な周辺知識がある。 ドキュメントはかなり整備されている方ではあるが、そのドキュメントにたどり着くのが難しい場合もある。 レビュアーなどが親切に教えてくれるものをローカルにメモしているが、それも散らばってきたため、ここにまとめることにする。 まずは初期状態で公開するが、どんどん更新していき、長くなっても分割しないで追記を繰り返そうと考えている。 関連サイト 始めて取り組もうとすると、まずどこを見ればわからないところから始まる。 似たようないくつかのサイトがあり、使い分けがされているからだ。 code search https://source.chromium.org/chromium/chromium/src コードをインタラクティブに検索するためのサイト Workspace 風の U

    Chromium にコントリビュートするための周辺知識 | blog.jxck.io
    yug1224
    yug1224 2024/03/27
  • mozaic.fm 10 周年記念イベント開催後記 | blog.jxck.io

    Intro 2014 年 3 月に開始した mozaic.fm が、気づいたら 10 周年を迎えた。 これを機に、 10 周年記念イベントとして、初のオフラインイベントをゲンロンカフェで開催した。 Podcast でのみ告知し、当日まで情報制限をかけていたにもかかわらず、チケットもグッズも無事完売することができた。 イベントを振り返りつつログを残す。 10 周年記念イベント mozaic.fm は 2014 年 3 月に配信を開始したが、これまで一度もイベントのようなことをやってこなかった。 2022 年 8 月の ep100 を記念して、一度くらいはオフラインイベントをやってみるかという計画があったが、コロナ禍であったためキャンセルになった。 今回は、そのリベンジも兼ね、リスナーのみに向けたイベントとして開催した。 当日の模様は録音し、一部を mozaic.fm で公開している。 ep1

    mozaic.fm 10 周年記念イベント開催後記 | blog.jxck.io
    yug1224
    yug1224 2024/03/14
  • Promise.withResolvers によるイベントの Promise 化 | blog.jxck.io

    Intro Promise.withResolvers() は、 Stage 4 であり ES2024 の候補となった。 すでにブラウザでの実装も進んでいるため、その活用方法を解説する。 イベントの Promise 化 JS では、非同期処理 API は長らくイベントリスナベースで定義され、それを組み合わせるフロー制御で処理されてきた。 しかし、 Promise が定義されて以降は、標準 API も Promise を返すようになり、 async/await によって処理されるのが一般的になってきた。 結果、イベントリスナベースの API を Promise 化するような場面も増えた。 例えば以下のようなものだ。 async function request() { return new Promise((resolve, reject) => { document.querySelect

    Promise.withResolvers によるイベントの Promise 化 | blog.jxck.io
    yug1224
    yug1224 2024/02/11
  • TC39 に新設された Stage 2.7 について | blog.jxck.io

    Intro TC39 の Stage 2 と Stage 3 の間に、新たに Stage 2.7 が追加された。 これはなんだろうと思った人が、検索で辿りつけるよう、その経緯と目的をまとめる。 TC39 Stages TC39 は、 ECMAScript (つまりまあ JS) の新機能を議論する Task Group だ。 ここでは、比較的自由に新機能の提案がなされ、定期的に行われるミーティングでの議論や、実装からのフィードバックを経て、 Stage が上がっていく仕組みをとっている。 旧来の Stage は 0~4 まであった。ざっくり言うと以下のようなものだ。

    TC39 に新設された Stage 2.7 について | blog.jxck.io
    yug1224
    yug1224 2024/02/06
  • Apple によるブラウザエンジン規制の緩和 | blog.jxck.io

    Intro 以前から騒がれていた Apple によるサイドローディング周りの緩和について、正式な情報公開があった。 Apple announces changes to iOS, Safari, and the App Store in the European Union - Apple https://www.apple.com/newsroom/2024/01/apple-announces-changes-to-ios-safari-and-the-app-store-in-the-european-union/ ストアやペイメントの緩和もあるが、ここでは WebKit に関する部分だけを抜粋し、どのような条件があるのかをまとめておく。 筆者が公開情報を読んで解釈したものなので、内容は保証しない。 前提 iOS/iPadOS に入れられるブラウザには、 WebKit を用いる必要が

    Apple によるブラウザエンジン規制の緩和 | blog.jxck.io
    yug1224
    yug1224 2024/01/28
  • Web 技術年末試験 2023 講評 #web_exam2023 | blog.jxck.io

    Intro 2023 年の Web 技術を振り返る試験として、「Web 技術年末試験 2023」を実施した。 その問題と想定解答、平均点などを公開する。 Web 技術年末試験 この試験は、「去年の Web にはどんな変化があったか」「どんな新しい技術が出てきたか」などを、試験形式で振り返るコンテンツを作ってみたことに端を発している。 2022 年はこれを狭い範囲で実施したが、思った以上に評判が良かったため、 2023 は受験者を一般募集してみることにした。 試験形式であるため点数は出るが、目的は「今年はこんなことがあった」を振り返ることや、「こんなことがあったのは知らなかった」という取りこぼしに気づく機会になることである。 解答用紙/想定回答 [解答用紙]: Web 技術年末試験 2023 https://docs.google.com/document/d/1jdN0NsM-PAnYRl

    Web 技術年末試験 2023 講評 #web_exam2023 | blog.jxck.io
    yug1224
    yug1224 2024/01/24
  • 2023 年を振り返る | blog.jxck.io

    Intro 例年通り 2023 年を振り返る。 blog 今年書いたのは全部で 43 。今年はアドベントカレンダーを一人でやったため、過去最高のエントリ数になった。 Entry ブログは 15 書いた。 2023-01-07: 次世代 CSS 仕様が与えるコンポーネント時代の Web への影響 2023-02-28: 誇りを被った仕様の針に意図を通す 2023-03-24: OpenAI API を用いた文書校正(誤字脱字検出) 2023-05-02: 技術書籍をシンタックスハイライトする話 2023-05-17: IETF RFC における ABNF と Parsing Algorithm の関係 2023-05-28: URL バーの表示の変遷 2023-06-01: AbortSignal.any(), AbortSignal.timeout(), そして addEvnetLis

    2023 年を振り返る | blog.jxck.io
    yug1224
    yug1224 2023/12/31
  • 3PCA 最終日: 3rd Party Cookie 亡き後の Web はどうなるか? | blog.jxck.io

    Intro このエントリは、 3rd Party Cookie Advent Calendar の最終日である。 3rd Party Cookie のカレンダー | Advent Calendar 2023 - Qiita https://qiita.com/advent-calendar/2023/3rd-party-cookie ここまで、 3rd Party Cookie との 30 年に渡る戦いと、 ITP 以降それが Deprecation されるに至った流れ、そして Privacy Sandbox の API について解説してきた。 最終日は、ここまでを踏まえて、来年以降の Web がどうなっていくのかを考えていく。 「Web 史上最大の破壊的変更」の意味 筆者はこのアドベントカレンダーの最初に、これを「Web 史上最大の破壊的変更」と言って始めた。 Web で破壊的変更と言え

    3PCA 最終日: 3rd Party Cookie 亡き後の Web はどうなるか? | blog.jxck.io
    yug1224
    yug1224 2023/12/30
  • 3PCA 27 日目: FedCM | blog.jxck.io

    Intro このエントリは、 3rd Party Cookie Advent Calendar の 27 日目である。 3rd Party Cookie のカレンダー | Advent Calendar 2023 - Qiita https://qiita.com/advent-calendar/2023/3rd-party-cookie 今日は、散々壊れるユースケースとして解説してきた「認証連携」をカバーする FedCM について解説する。 Federated Credential Management 認証連携 あるサイト(RP)の認証を別のサイト(IDP)の認証で行いたい場合、両者の連携は 3rd Party Cookie で行われてきた。 例えば、 RP に IDP を <iframe> で埋め込み、 IDP に対するログイン済みの Cookie があれば、その情報を JS で R

    3PCA 27 日目: FedCM | blog.jxck.io
    yug1224
    yug1224 2023/12/29
  • 3PCA 26 日目: Related Website Sets | blog.jxck.io

    Intro このエントリは、 3rd Party Cookie Advent Calendar の 26 日目である。 3rd Party Cookie のカレンダー | Advent Calendar 2023 - Qiita https://qiita.com/advent-calendar/2023/3rd-party-cookie 今日からは、 Privacy Sandbox の「広告」以外の API を解説していく。 同一組織の別ドメイン グローバル企業であれば、各国の ccTLD でローカライズされたサービスを提供するのは一般的な運用だ。 google.co.jp google.co.uk google.de google.fr etc 他にも、例えば用途毎にドメインを分ける運用も一般的だろう。 google.com googleusercontent.com fonts.gs

    3PCA 26 日目: Related Website Sets | blog.jxck.io
    yug1224
    yug1224 2023/12/28
  • 3PCA 25 日目: Measurement | blog.jxck.io

    Intro このエントリは、 3rd Party Cookie Advent Calendar の 25 日目である。 3rd Party Cookie のカレンダー | Advent Calendar 2023 - Qiita https://qiita.com/advent-calendar/2023/3rd-party-cookie 今日は、広告の測定について解説する。 広告の効果測定というユースケース 広告ビジネスは、広告枠を売る媒体主と、それを買い出稿する広告主で成り立つ。 最終的には表示した広告が「どのくらい表示されたか」「どのくらいクリックされたのか」「どのくらい購買につながったか」などを計測し、その結果に応じて対価が支払われるのだ。 ここが測れなくなると、広告ビジネスというもの自体が成り立たなくなる。 他とは違い、 Chrome だけでなく Safari や Firefox

    3PCA 25 日目: Measurement | blog.jxck.io
    yug1224
    yug1224 2023/12/27
  • 3PCA 24 日目: Retargeting | blog.jxck.io

    Intro このエントリは、 3rd Party Cookie Advent Calendar の 24 日目である。 3rd Party Cookie のカレンダー | Advent Calendar 2023 - Qiita https://qiita.com/advent-calendar/2023/3rd-party-cookie 今日はリターゲティングをカバーする Protected Audience API について解説する。 Retargeting 他のサイトで見た商品が、別のサイトで表示されるのがリターゲティングだったが、このユースケースをカバーするために提案されたのが Turtledove とくくられたいくつかの API だ。 その 1 つが Fledge で、今は名前が変わって Protected Audience API となっている。 turtledove/FLED

    3PCA 24 日目: Retargeting | blog.jxck.io
    yug1224
    yug1224 2023/12/27