<

WebComponentsでoEmbedのコンポーネントを開発して、学んだこと

WebComponents で、oEmbed コンポーネントを開発し、公開しました。

開発していく上で、学んだことを列挙しようと思います。

スターターキット

Web Components を開発する場合、次のどちらかのスターターキットを使うのが良さそうです。

これらを使わずとも、Web Components を開発できるのですが、Typescript で書いたり、テストをしたりするには、 それなりに準備が必要です。そのため、開発の初速を高めたいなら、スターターキットを使いましょう。

もしくは、先にスターターキットを使わず素の Javascript だけで Web Components を作ってみて、その後にスターターキットを使うと良さを実感できるかもしれません。

個人的に、open-wc をお勧めします。なぜなら、以下のツールが揃っているからです。

  • Testing
  • Demoing
  • Building
  • Linting

もちろん、Typescript もサポートしています。

キャッチアップ

Web Components ってどういうものなのか、キャッチアップするには MDN のサイトが参考になります。

また、日本語で WebComponents(Custom Elements)の仕様書もあります。

Chrome の中にある Chromium におけるレンダリングエンジン blink の実装コードも、公開されています。

ベストプラクティス

Google より、Custom Elements のベストプラクティスが公開されています。

Custom Element Best Practices  |  Web Fundamentals  |  Google Developers

例えば

Always accept primitive data (strings, numbers, booleans) as either attributes or properties.

にあるように、プリミティブなデータのみ HTML の属性に渡すようにしましょう。 オブジェクトや配列のようなリッチなデータは、シリアル化する必要がありオブジェクト参照がなくなってしまう欠点があります。

テスト

Web Components のテストを書くには、Shadow DOM に対応する必要があります。 JSDOM のように、ブラウザ API をラップするライブラリを使っても良いのですが、ヘッドレスブラウザを使ったほうが妥当です。 そこで、@web/test-runnerが便利です。 このテストライブラリは、open-wc と同じ Modern Web というモノの 1 つです。 @web/test-runner には、Puppeteer、Playwright、Selenium の 3 つをサポートしています。

Publish

作成した Web Components を Publish したい場合、次の記事を読むと良いです。

Developing Components: Publishing: Open Web Components

特に、してはいけないことを読むと、なるほどな〜ってなります。

❌ Do not optimize
❌ Do not bundle
❌ Do not minify
❌ Do not use .mjs file extensions
❌ Do not import polyfills

詳しくは、上記の記事を読んでください。

終わりに

Web Components をプロダクションレベルで使えるようになりたいなと思います。

Tags

Micro Frontendsで組成するフラグメントをWeb Componentsで定義してModule Federationで共有する

2022-05-28

Micro Frontends(以降、MFE)で組成するフラグメントを Web Components で定義して Module Federation で共有する方法を、ざっくり紹介します。...

OEmbedとOGPのWebComponentsを作ったので、自分のブログサイトに使う

2022-04-11

次の 2 つの Web Components を作成しました。背景 自分のブログで、埋め込みコンテンツを表示したいな〜って思ってました。iframely というサービスを使っていましたが、自前で作りたいなというモチベーションが生まれました。そこで、OEmbed と OGP の表示ができるように、Web Components を独自に作成しました。...

Web Componentsの良さ

2022-03-01

Web Components を人にお勧めしたいんです。メリット・デメリットをかんたんにまとめたいと思います。Web Components is 何https://www.webcomponents.org/specs より引用します。...

Markdownで執筆するなら、WebComponentsが使えるSSG、Rocketがオススメ!

2021-12-24

Markdownでブログやドキュメントを書いていますか?執筆活動に集中したいのに、Markdownだけだとかゆいところに手が届かないもどかしさ、感じたことありませんか?そんな方に、MarkdownとWebComponentsがシームレスに統合できる静的サイトジェネレータ(以降、SSGと呼ぶ)、Rocketをおすすめします。...

技術書典7 で「はじめてのWeb Components入門」を初出版します!

2019-08-30

この度、初めて書籍を出版することになりました!「はじめてのWeb Components入門」本を技術書典7で販売します。...

OEmbedとOGPのWebComponentsを作ったので、自分のブログサイトに使う

2022-04-11

次の 2 つの Web Components を作成しました。背景 自分のブログで、埋め込みコンテンツを表示したいな〜って思ってました。iframely というサービスを使っていましたが、自前で作りたいなというモチベーションが生まれました。そこで、OEmbed と OGP の表示ができるように、Web Components を独自に作成しました。...

[覚書]Reactを業務で使い始めて知ったこと

2022-06-25

私は、これまでプライベートでしか React を使っていませんでした。最近、業務で React を使う機会が増えたので、学んだことを残そうと思います。...

Reactを学ぶ前に歴史を知る

2022-03-11

これは何? Reactは、どうして生まれたのか歴史について簡単に紹介します。(ちょっと調べただけ) 背景 最近、Reactを学び始めました。その過程で、どうしてReactって学ぶべきなのか、どういう特徴があるのか気になった次第です。...