Jaybanuan's Blog

どうせまた調べるハメになることをメモしていくブログ

HTML Living Standardとかの「Living Standard」って何?

はじめに

Web系の仕様を確認する必要があって、HTML Living StandardとかDOM Living Standardとかを調べていたが、「Living」というキーワードが馴染みがなかったので、調べてみた。

まずはliving documentについて

例えばWikipediaのような、継続的にアップデートして最新状態にしていくドキュメントのことを言うらしい。 書籍のような、完成版があるドキュメントと対比される。

同様に、継続的にアップデートしたり、時代に合わせて新しい解釈をしたりするものを「living」という接頭辞を付けて呼ぶことがあるようだ。

参考:WikipediaのLiving standardのページ

Web系の標準仕様における経緯

先に少し経緯を書いておく。

標準化団体にありがちだが、Web系の標準化団体であるW3Cも例に漏れず、動きが遅くて標準仕様の更新が停滞していた。 一方、ベンダは自身のプロダクトに継続的に新機能を追加し、日進月歩で磨き上げていくので、W3Cの歩調に合わせていられない。

そこでベンダは2004年にWHATWGという団体を立ち上げて、W3Cの標準仕様で足りないものや曖昧なものに対して、W3Cとは別に改善を行っていった。 これにより、HTMLを含むWeb系の仕様のいくつかが分裂してしまった。

しかしながら、両団体の歩み寄り(?)の結果、2019年にHTMLとDOMについて「Living Standard」という呼び方で、WHATWGの下で仕様を決めていくことで落ち着いた。

Living Standardとは

WHATWGのFAQのWhat does "Living Standard" mean?を見ると、回答の前半で以下のようにある。

The WHATWG standards are described as Living Standards. This means that they are standards that are continuously updated as they receive feedback, either from web developers, browser vendors, tool vendors, or indeed any other interested party. It also means that new features get added to them over time, at a rate intended to keep the standard a little ahead of the implementations, but not so far ahead that the implementations give up.

邦訳すると以下。

WHATWG標準仕様はLiving Standardと言われています。これは、Webデベロッパ、ブラウザベンダ、ツールベンダ、そしてその他のいかなる利害関係者からをもフィードバックを受け付け、継続的にアップデートしていく標準仕様であることを意味します。また、これは時間の経過とともに標準仕様に新機能を追加していくことも意味しますが、標準仕様が実装よりも少し先行している状態を保つような速度であり、実装が取り込みを断念してしまうほどにまで先行することはありません。

つまり、継続的にアップデートしていくliving documentとして、WHATWGが提供する標準仕様のことを「Living Standard」と呼称しているようだ。

そして、FAQの回答の後半で、標準化を優先して歩調を合わせて行くことを丁寧に説明しているのは何とも興味深い。 過去の過ちは繰り返さないという気持ちが滲み出ている。

ちなみに、単語の先頭がそれぞれ大文字になっているので、WHATWGは「Living Standard」を名称(固有名詞)として取り扱っていることが分かる。

蛇足

Standard of Livingと書くと、生活水準という意味になるらしい。

Web IDL

はじめに

Web IDLというものがあることを初めて知ったので、概要をメモしておく。

仕様

こちら。

www.w3.org

正式版の公開が2016年と結構前なので、もしかすると最近のWebブラウザの実装状況は以下の最新のドラフト(?)の方が近いのかも(ただの推測)。

webidl.spec.whatwg.org

仕様に記載してある概要

以下に、仕様書に記載してある概要の原文を引用する。

Abstract

This document defines an interface definition language, Web IDL, that can be used to describe interfaces that are intended to be implemented in web browsers. Web IDL is an IDL variant with a number of features that allow the behavior of common script objects in the web platform to be specified more readily.How interfaces described with Web IDL correspond to constructs within ECMAScript execution environments is also detailed in this document.It is expected that newly published specifications reference this document to ensure conforming implementations of interfaces are interoperable.

原文を訳してみたので、以下に記しておく。

概要

このドキュメントでは、Webブラウザで実装するインタフェースを記述するために利用する、Web IDLというインタフェース記述言語を定義します。Web IDLは、Webプラットフォームで一般公開するスクリプトオブジェクトの挙動をより簡単に明示するための多くの機能を備えている、IDLの一種です。Web IDLで記述したインターフェイスが、ECMAScriptの実行環境の中の構成物にどのように対応付けられるかについても、このドキュメントで詳説します。今後新規に公開する仕様に対しては、このドキュメントを参照して、インタフェースに従う実装が相互運用可能だと確認することを期待します。

仕様に記載してあるイントロダクション

以下に、仕様書に記載してあるイントロダクションの原文を引用する。

1. Introduction
This section is informative.

Technical reports published by the W3C that include programming language interfaces have typically been described using the Object Management Group’s Interface Definition Language (IDL) [ OMGIDL]. The IDL provides a means to describe these interfaces in a language independent manner. Usually, additional language binding appendices are included in such documents which detail how the interfaces described with the IDL correspond to constructs in the given language.

However, the bindings in these specifications for the language most commonly used on the web, ECMAScript, are consistently specified with low enough precision as to result in interoperability issues. In addition, each specification must describe the same basic information, such as DOM interfaces described in IDL corresponding to properties on the ECMAScript global object, or the unsigned long IDL type mapping to the Number type in ECMAScript.

This specification defines an IDL language similar to OMG IDL for use by specifications that define interfaces for Web APIs. A number of extensions are given to the IDL to support common functionality that previously must have been written in prose. In addition, precise language bindings for ECMAScript Edition 6 are given.

原文を訳してみたので、以下に記しておく。

1. イントロダクション
このセクションは参考情報です。

W3Cが公開している技術レポートの中で、プログラミング言語インターフェイスについて言及しているものは、大抵の場合はObject Management Groupのインターフェイス定義言語 (IDL:Interface Definition Language) [ OMGIDL ] を利用して解説しています。このIDL は、言語に依存しない方法でインターフェイスを記述する手段を提供します。通常、このようなドキュメントは追加の言語バインディングの付録を含んでおり、その付録でIDLで記述したインターフェイスが特定の言語の構成物にどのように対応するのかを詳しく説明しています。

しかしながら、Web で最も一般的に利用されている言語である ECMAScript に対しての、これらの仕様(訳注:前出の付録のことと思われる)におけるバインディングは、相互運用性の問題が発生するような低い精度で始終記載されています。さらに、それぞれの仕様は同じような基本情報を記述する必要があります。例えばECMAScriptのグローバルなオブジェクトのプロパティに対応付けられるIDLで記述したDOMインターフェイスや、IDLのunsigned long 型からECMAScriptのNumber型へのマッピングなどです。

本仕様は、Web API(訳注:Webブラウザが提供するJavaScriptから呼び出すAPIと思われる)のインターフェースを定義する仕様が利用するための、OMGのIDLによく似たIDL言語を定義します。以前は普通の文章で書かざるを得なかった共通機能(訳注:前出のDOMインタフェースやunsigned logのマッピング等と思われる)に対応するために、IDLは多くの拡張機能を提供しています。さらに、ECMAScript Edition 6の正確な言語バインディングを提供しています。

その他情報

www.slideshare.net

Ubuntu 22.04でKindleを使う

はじめに

Linux版のKindleはないので、Linux環境だとKindle Cloud Readerを使うのが公式だが、これだと表示できない書籍がある。 今回、Wineを利用してWindows版のKindleを動かすことができたので、そのメモ。

Wineのインストール

最新のWineを使うため、以下のWine公式サイトの通りに安定版のWineをインストール。 Ubuntuに含まれるWineは若干古いためか、Kindleの起動に失敗した。

wiki.winehq.org

実行したコマンドは以下の通り。

$ sudo dpkg --add-architecture i386 
$ sudo mkdir -pm755 /etc/apt/keyrings
$ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
$ sudo apt update
$ sudo apt install --install-recommends winehq-stable

今回インストールされたWineのバージョンは以下の通り。

$ wine --version
wine-7.0.1

Kindleのインストール

このサイトからWindows版のKindleをダウンロードする。

今回はKindleForPC-installer-1.39.65383.exeというファイル名のインストーラがダウンロードされた。 そして、以下の通り、Wineでこのインストーラを実行する。

$ wine KindleForPC-installer-1.39.65383.exe

途中、以下のようなポップアップが表示されたので、ボタン「インストール」をクリックする。

さらに、以下のようなポップアップも表示されたので、同様にボタン「インストール」をクリックする。

しばらく待つと、Kindleが起動されて以下のような画面が表示されるので、Amazonにログインする。

ログインが成功すると、無事自分が購入した書籍が表示されており、閲覧が可能になる。

Kindleからは、WineがWindows 7に見えているようだ。

upcallとdowncall

はじめに

Linuxカーネルの機能を調べているときに、upcallとdowncallという言葉を見つけた。 普通の辞書には載っておらず、専門用語のようなので、メモを残しておく。

upcall

ここの辞書に掲載されていたので、以下に引用する。

(computing, programming) A call from a lower-level subsystem, such as a kernel or framework, to a higher-level subsystem, such as user code.

downcall

同じく、ここの辞書に掲載されていたので、以下に引用する。

(computing, programming) A call from a higher-level subsystem, such as user code, to a lower-level subsystem, such as a kernel or framework.

upcallとdowncallの図示

ここのサイトで分かりやすく図示されていたので、以下に引用する。