質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

1回答

1331閲覧

先行実装とは(ベンダープレフィックス)

syakade-su

総合スコア1

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2020/09/19 05:10

ベンダープレフィックスはなぜつけるのかなと調べていたら、先行実装という語句がでてきました。
この「先行実装」というのはどういう意味なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

CSS 2.2

ベンダー接頭辞(Vendor prefix)の呼称はやや古い気がしますが、CSS仕様を遡ると、CSS 2.2には名残が見られます。

Selectors Level 4

Selectors Level 4になると、Vendorを含む呼称はなくなり、**無効な選択子(Invalid Selectors)**と記載するに留まっています。

3.8. 名前空間 接頭辞の宣言法

一部の選択子は,名前空間 接頭辞をサポートする。 名前空間 接頭辞を 宣言 する仕組みは、 Selectors を利用する言語により指定されるべきである。 言語が名前空間 接頭辞の宣言の仕組みを指定しない場合、いかなる接頭辞も宣言されない。 CSS においては、名前空間 接頭辞は @namespace 規則 [CSS3NAMESPACE] により宣言される。

部分的な実装

作者が前方互換な構文解析規則を活用して,フォールバック値をあてがえるようにするため、 CSS 具現化器は、自身が実用レベルでサポートしないどの[ at-規則, プロパティ, プロパティ値, キーワード, 他の構文上の構成子 ]も,無効なものと扱って適切に無視するものとする。 特に,UA は、複数成分からなる値をとる単独のプロパティ宣言の中で,自身がサポートする値のみ尊守しつつ, 未サポートな値を選択的に無視してはならない。 いずれかの成分が無効と見なされる場合(未サポートな値はそう見なすものとする)、それを含む宣言全体を無視することが CSS から要求される。

不安定/プロプライエタリな特能の実装

将来の安定的な CSS 特能との衝突を避けるため、 CSS WG は,[ CSS 用の[ 不安定な特能/プロプライエタリ拡張 ]を実装する際には, 最善な実施に従う ]ことを推奨する。

勧告候補レベルの特能の実装

仕様が勧告候補の段階に達したならば、実装者は,仕様に則って正しく実装できた勧告候補レベルの特能について、接頭辞無しの実装をリリースし,その特能の接頭辞付き変種を公開するのは避けるべきである。
実装間の CSS の相互運用能を確立し, 保守するため、 CSS WG は、試験的でない CSS 具現化器が接頭辞無し CSS 特能の実装をリリースする前に,W3C に実装報告を(および,必要に応じて実装報告に利用されたテスト事例も併せて)提出することを要請する。 W3C に提出されたテスト事例は、 CSS WG による考査と訂正の対象になる。
テスト事例, および実装報告の提出法についての更なる情報は、 CSS WG web サイトの https://www.w3.org/Style/CSS/Test/ にて見られる。 質問があれば, public-css-testsuite@w3.org メーリングリスト宛に寄せられるべきである。

MDN

Firefox開発サイトのMDNには、ベンダープレフィックスの説明があります。

ブラウザーベンダーは、実験的な機能にベンダー接頭辞をつけることをやめるようになってきています。ウェブ開発者は、実験的な機能であるにもかかわらず、実運用のウェブサイトで使用し続けてきました。これはブラウザーベンダーが互換性を維持して、新しい機能を導入することを困難にしてしまいました。これはシェアの小さなブラウザーにとっても有害で、有名なウェブサイトを読み込むために他のブラウザーの接頭辞を追加せざるを得ない結果になりました。

最近は、実験的な機能をユーザーが制御するフラグや設定によって隠して追加するようにし、より早く安定状態になるようにより小さな仕様を作成する傾向があります。

まとめ (ベンダープレフィックス)

「ベンダープレフィックス」は各ブラウザベンダーが勝手に呼称している用語です。
CSS実装における実体は名前空間プレフィックス(Namespace Prefixes)を利用して、Web標準APIに存在しない接頭辞を付与することで、標準APIとの衝突を防止しているに過ぎません。
使われ方は「Selectors Level 4」「MDN」で説明されているので割愛します。

※JavaScript APIでも、Vendor Prefixを使用したAPIを各ブラウザが実装していますが、これも使われ方は変わらず、MDNに説明があります。

先行実装

先行実装

[1] 以前は、 CSS3 などの原案段階の仕様を勧告化に先立って実装することを先行実装などと呼んでいました。
[2] 現在は Webブラウザーの開発と標準仕様の開発が並行して協調しながら進められることが一般的になり、 「勧告」というステータスの意味がなくなっているので、「先行実装」という言い方はあまりしなくなりました。 平成23(2011)年1月2日(日) 17時45分45秒

どこまで信頼できるのか分からない個人サイトですが、私の認識とも概ね一致します。
「勧告前の不安定な仕様を実装すること」を先行実装といいます。

現在ではLiving Standardな仕様が明文化されつつあるので、先行実装を唱えられる事は少なくなりましたが、知識として覚えておくのは良いと思います。
HTML/CSS/JavaScript等のクライアントサイド言語には依然として、クロスブラウザの問題があります。

Re: syakade-su さん

投稿2020/09/19 15:20

編集2020/09/19 15:56
think49

総合スコア18189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/09/19 19:24

「先行実装」は定義のある言葉じゃなくて、ただの日本語(というかただの英語の日本語訳)な気がしますね。
think49

2020/09/20 01:00 編集

そうですね。 策定前の仕様を「先行」して「実装」する、言葉通りの意味だと思います。 CSSの機能としてなら、「Namespace Prefixes」「前方互換性」「後方互換性」をセットで覚えて欲しいですね。 JavaScriptの先行仕様のメソッドは「機能テスト」をしなければ「前方/後方互換性」を担保できないので、事情が変わりますが…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問