<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/feed.rss.xml" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>mizdra</title>
    <description></description>
    <link>https://speakerdeck.com/mizdra</link>
    <atom:link rel="self" type="application/rss+xml" href="https://speakerdeck.com/mizdra.rss"/>
    <lastBuildDate>2018-11-10 23:45:30 -0500</lastBuildDate>
    <item>
      <title>速さだけじゃない！ VoidZero ツールが移行先に選ばれる理由</title>
      <description>2026/06/02 に「フロントエンド開発はどこまで速くなるのか？〜Oxcで考えるツールチェーン〜」というイベントで話した資料です。
https://findy.connpass.com/event/391160/</description>
      <media:content url="https://files.speakerdeck.com/presentations/4c7f84632f55487c822659c34a2df8cb/preview_slide_0.jpg?39589755" type="image/jpeg" medium="image"/>
      <content:encoded>2026/06/02 に「フロントエンド開発はどこまで速くなるのか？〜Oxcで考えるツールチェーン〜」というイベントで話した資料です。
https://findy.connpass.com/event/391160/</content:encoded>
      <pubDate>Mon, 01 Jun 2026 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/mizdra/voidzero-tools</link>
      <guid>https://speakerdeck.com/mizdra/voidzero-tools</guid>
    </item>
    <item>
      <title>60分で学ぶ最新Webフロントエンド</title>
      <description>2026/04/16 に「技育CAMPアカデミア」で話したスライドです。2025 年のはてなインターンの講義資料 (https://speakerdeck.com/hatena/internship-2025-frontend) に手を加えたものになってます。

https://talent.supporterz.jp/events/b4d7e64d-d315-4e61-b6cc-319e5a541ae9/</description>
      <media:content url="https://files.speakerdeck.com/presentations/434b1aa676f144b299a54f746860589f/preview_slide_0.jpg?39121942" type="image/jpeg" medium="image"/>
      <content:encoded>2026/04/16 に「技育CAMPアカデミア」で話したスライドです。2025 年のはてなインターンの講義資料 (https://speakerdeck.com/hatena/internship-2025-frontend) に手を加えたものになってます。

https://talent.supporterz.jp/events/b4d7e64d-d315-4e61-b6cc-319e5a541ae9/</content:encoded>
      <pubDate>Fri, 17 Apr 2026 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/mizdra/geek-camp-2026-frontend</link>
      <guid>https://speakerdeck.com/mizdra/geek-camp-2026-frontend</guid>
    </item>
    <item>
      <title>機密情報の漏洩を防げ！ Webフロントエンド開発で意識すべき漏洩パターンとその対策</title>
      <description>YAPC::Fukuoka 2025 で発表した資料です。

https://fortee.jp/yapc-fukuoka-2025/proposal/c705086e-8849-4419-8dce-423f82f41327</description>
      <media:content url="https://files.speakerdeck.com/presentations/90284eb8c6d84631bfab8c65ba00a46d/preview_slide_0.jpg?37564127" type="image/jpeg" medium="image"/>
      <content:encoded>YAPC::Fukuoka 2025 で発表した資料です。

https://fortee.jp/yapc-fukuoka-2025/proposal/c705086e-8849-4419-8dce-423f82f41327</content:encoded>
      <pubDate>Sat, 15 Nov 2025 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/mizdra/web-frontend-secret-leak</link>
      <guid>https://speakerdeck.com/mizdra/web-frontend-secret-leak</guid>
    </item>
    <item>
      <title>TypeScript Language Service Plugin で CSS Modules の開発体験を改善する</title>
      <description>作ったもの: https://github.com/mizdra/css-modules-kit

---

コンポーネントに CSS を当てる手法の1つに、CSS Modules があります。広く使われている手法ですが、エディタ上の開発体験が悪いという欠点がありました。*.tsx と *.module.css の Language Server が分かれているために、*.tsx と *.module.css を横断する言語機能 (Rename,Find All References ) の挙動に問題があるのです。

長らくこの問題は解決困難と思われてました。しかし TypeScript Language Service Plugin を使うと、実は解決できるのです。この発表では、TypeScript Language Service Plugin とは何か、そしてそれを使って作ったツールについて紹介します。

- TypeScript Language Service Plugin とは
- CSS Modules Kit の紹介
- Volar.js を使って .module.css を TypeScript コードに偽装する
- Navigation 機能の実装 (Go to Definition, Rename, Find All References)
- 開発体験を改善するその他の工夫
  - tsc による型検査のサポート
  - 壊れかけのファイルのサポート
  - linter-plugin の提供
- ts-plugin の課題
</description>
      <media:content url="https://files.speakerdeck.com/presentations/a8c42573520f4b878db536bcf25433a3/preview_slide_0.jpg?35286228" type="image/jpeg" medium="image"/>
      <content:encoded>作ったもの: https://github.com/mizdra/css-modules-kit

---

コンポーネントに CSS を当てる手法の1つに、CSS Modules があります。広く使われている手法ですが、エディタ上の開発体験が悪いという欠点がありました。*.tsx と *.module.css の Language Server が分かれているために、*.tsx と *.module.css を横断する言語機能 (Rename,Find All References ) の挙動に問題があるのです。

長らくこの問題は解決困難と思われてました。しかし TypeScript Language Service Plugin を使うと、実は解決できるのです。この発表では、TypeScript Language Service Plugin とは何か、そしてそれを使って作ったツールについて紹介します。

- TypeScript Language Service Plugin とは
- CSS Modules Kit の紹介
- Volar.js を使って .module.css を TypeScript コードに偽装する
- Navigation 機能の実装 (Go to Definition, Rename, Find All References)
- 開発体験を改善するその他の工夫
  - tsc による型検査のサポート
  - 壊れかけのファイルのサポート
  - linter-plugin の提供
- ts-plugin の課題
</content:encoded>
      <pubDate>Fri, 23 May 2025 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/mizdra/css-modules-kit</link>
      <guid>https://speakerdeck.com/mizdra/css-modules-kit</guid>
    </item>
    <item>
      <title>あなたの知らない Function.prototype.toString() の世界</title>
      <description>JSConf JP 2024 の発表資料です。

---

JavaScript には Function.prototype.toString() という API があります。この API を使うと、関数本体のソースコードを文字列として取得できます。 一見すると何の使い道があるか分からないかもしれません。しかし、関数本体のソースコードを取得できるということは、実行時に関数のソースコードを静的解析できることを意味します。また、関数をシリアライズしてどこかに転送した後、デシリアライズして実行するといったことも可能です。この特徴は、JavaScript に大きな力をもたらします。 このトークでは、 Function.prototype.toString() はどんな API なのか、どういう使い道があるのか、世の中のライブラリで利用されている実用的なものから、狂った使い方まで紹介します。

- リモート関数 (puppeteer の page.evaluate())
- ネイティブコード判定
- tempalte literal を使わない複数行文字列リテラル
- etc...</description>
      <media:content url="https://files.speakerdeck.com/presentations/1cdd8ad24d254790950d7d3fedd7d972/preview_slide_0.jpg?32762242" type="image/jpeg" medium="image"/>
      <content:encoded>JSConf JP 2024 の発表資料です。

---

JavaScript には Function.prototype.toString() という API があります。この API を使うと、関数本体のソースコードを文字列として取得できます。 一見すると何の使い道があるか分からないかもしれません。しかし、関数本体のソースコードを取得できるということは、実行時に関数のソースコードを静的解析できることを意味します。また、関数をシリアライズしてどこかに転送した後、デシリアライズして実行するといったことも可能です。この特徴は、JavaScript に大きな力をもたらします。 このトークでは、 Function.prototype.toString() はどんな API なのか、どういう使い道があるのか、世の中のライブラリで利用されている実用的なものから、狂った使い方まで紹介します。

- リモート関数 (puppeteer の page.evaluate())
- ネイティブコード判定
- tempalte literal を使わない複数行文字列リテラル
- etc...</content:encoded>
      <pubDate>Fri, 22 Nov 2024 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/mizdra/the-world-of-function-prototype-tostring-you-dont-know</link>
      <guid>https://speakerdeck.com/mizdra/the-world-of-function-prototype-tostring-you-dont-know</guid>
    </item>
    <item>
      <title>React Server Components の疑問を解き明かす</title>
      <description>builderscon 2024 で発表した資料です。

動画はこちら: https://www.youtube.com/watch?v=_Prly-RAF7A&amp;list=PLZjwpOgJkJXteFpwAbcVoQXfd2f5q-OPp

---

React Server Component は、サーバーサイド上でレンダリングされる React コンポーネントです。React Server Component を用いると、コンポーネントの中から DB にアクセスしたり、ファイルシステムにアクセスしたりできます。

一方で、今までにも erb や pug といったテンプレートエンジンのように、サーバーサイド上でテンプレートをレンダリングする技術というのは存在しました。また、React でも SSR を用いれば、(Client) Component をサーバー上でレンダリングできました。そのためこれらの技術とどう違うのか、疑問を抱いている方も多いでしょう。

しかし、React Server Component は従来の技術への単なる回帰ではありません。今まで存在していたいくつもの問題を解決し、優れた開発体験をもたらす技術なのです。

このトークでは、React Server Compomnent とは何か、どんなことができるのか、そして従来の技術とどう違うのか、どう開発スタイルが変わるのかについて話します。このトークが、React Server Component に関する様々な疑問を解消する手助けになるはずです。
</description>
      <media:content url="https://files.speakerdeck.com/presentations/e02bb1cc80864bdeaaa991d47fc5b50d/preview_slide_0.jpg?31353890" type="image/jpeg" medium="image"/>
      <content:encoded>builderscon 2024 で発表した資料です。

動画はこちら: https://www.youtube.com/watch?v=_Prly-RAF7A&amp;list=PLZjwpOgJkJXteFpwAbcVoQXfd2f5q-OPp

---

React Server Component は、サーバーサイド上でレンダリングされる React コンポーネントです。React Server Component を用いると、コンポーネントの中から DB にアクセスしたり、ファイルシステムにアクセスしたりできます。

一方で、今までにも erb や pug といったテンプレートエンジンのように、サーバーサイド上でテンプレートをレンダリングする技術というのは存在しました。また、React でも SSR を用いれば、(Client) Component をサーバー上でレンダリングできました。そのためこれらの技術とどう違うのか、疑問を抱いている方も多いでしょう。

しかし、React Server Component は従来の技術への単なる回帰ではありません。今まで存在していたいくつもの問題を解決し、優れた開発体験をもたらす技術なのです。

このトークでは、React Server Compomnent とは何か、どんなことができるのか、そして従来の技術とどう違うのか、どう開発スタイルが変わるのかについて話します。このトークが、React Server Component に関する様々な疑問を解消する手助けになるはずです。
</content:encoded>
      <pubDate>Fri, 09 Aug 2024 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/mizdra/react-server-components-noyi-wen-wojie-kiming-kasu</link>
      <guid>https://speakerdeck.com/mizdra/react-server-components-noyi-wen-wojie-kiming-kasu</guid>
    </item>
    <item>
      <title>はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts</title>
      <description>BARフロントえんどう #2 「CSS Library / Framework」で発表した資料です。</description>
      <media:content url="https://files.speakerdeck.com/presentations/f34c57312f9d4d878c03ae6493c4b04d/preview_slide_0.jpg?29808976" type="image/jpeg" medium="image"/>
      <content:encoded>BARフロントえんどう #2 「CSS Library / Framework」で発表した資料です。</content:encoded>
      <pubDate>Fri, 19 Apr 2024 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/mizdra/css-modules-in-hatena-and-css-modules-missing-parts</link>
      <guid>https://speakerdeck.com/mizdra/css-modules-in-hatena-and-css-modules-missing-parts</guid>
    </item>
    <item>
      <title>大量の ESLint エラーに対処する技術 / The technology to fight with many ESLint's errors</title>
      <description>2024/01/12 の ToKyoto.js #2 で話した発表資料です。</description>
      <media:content url="https://files.speakerdeck.com/presentations/fb518a31266847a785b244a9e5a031df/preview_slide_0.jpg?28483599" type="image/jpeg" medium="image"/>
      <content:encoded>2024/01/12 の ToKyoto.js #2 で話した発表資料です。</content:encoded>
      <pubDate>Fri, 12 Jan 2024 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/mizdra/the-technology-to-fight-with-many-eslints-errors</link>
      <guid>https://speakerdeck.com/mizdra/the-technology-to-fight-with-many-eslints-errors</guid>
    </item>
    <item>
      <title>Vue Language Server から生まれた Volar.js と、それが秘める可能性</title>
      <description>Vue Fes Japan 2023 で発表したスライドです。

発表概要:
.vue でエディタの補完機能などを効かせるために、Vue Language Server というツールがあります。実はこのコアは Volar.js という OSS に切り出されています。Volar.js は "あらゆる組み込み言語" のためのフレームワークであり、Vue.js 以外にも利用できる汎用性を備えています。このセッションでは Volar.js が一体どういうものなのか、そしてその汎用性がどのような可能性を秘めているのかについてお話します。</description>
      <media:content url="https://files.speakerdeck.com/presentations/28b67731a55b428da52a6bcef0ba8fb2/preview_slide_0.jpg?27611590" type="image/jpeg" medium="image"/>
      <content:encoded>Vue Fes Japan 2023 で発表したスライドです。

発表概要:
.vue でエディタの補完機能などを効かせるために、Vue Language Server というツールがあります。実はこのコアは Volar.js という OSS に切り出されています。Volar.js は "あらゆる組み込み言語" のためのフレームワークであり、Vue.js 以外にも利用できる汎用性を備えています。このセッションでは Volar.js が一体どういうものなのか、そしてその汎用性がどのような可能性を秘めているのかについてお話します。</content:encoded>
      <pubDate>Sat, 28 Oct 2023 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/mizdra/vue-language-server-karasheng-mareta-volar-dot-js-to-soregami-meruke-neng-xing</link>
      <guid>https://speakerdeck.com/mizdra/vue-language-server-karasheng-mareta-volar-dot-js-to-soregami-meruke-neng-xing</guid>
    </item>
    <item>
      <title>マルチテナントで GraphQL を使う際の工夫</title>
      <description>2022/09/07 の Hatena Engineer Seminar #21 で発表した資料です。

動画もあります: https://youtu.be/N6iUlz4buTc?t=1636

この発表とは別に、30 分のクロストーク枠で、@hasFeature 実装の経緯の詳細や、他に検討したことについて話していますので、ぜひそちらもご覧ください: https://youtu.be/N6iUlz4buTc?t=3326</description>
      <media:content url="https://files.speakerdeck.com/presentations/e69f4fdc581d42cba9cb8e929ec709a4/preview_slide_0.jpg?22581902" type="image/jpeg" medium="image"/>
      <content:encoded>2022/09/07 の Hatena Engineer Seminar #21 で発表した資料です。

動画もあります: https://youtu.be/N6iUlz4buTc?t=1636

この発表とは別に、30 分のクロストーク枠で、@hasFeature 実装の経緯の詳細や、他に検討したことについて話していますので、ぜひそちらもご覧ください: https://youtu.be/N6iUlz4buTc?t=3326</content:encoded>
      <pubDate>Thu, 08 Sep 2022 00:00:00 -0400</pubDate>
      <link>https://speakerdeck.com/mizdra/marutitenantote-graphql-woshi-uji-nogong-fu</link>
      <guid>https://speakerdeck.com/mizdra/marutitenantote-graphql-woshi-uji-nogong-fu</guid>
    </item>
    <item>
      <title>Webフロントエンドの秩序を維持する体制を作る</title>
      <description>Hatena Engineer Seminar #15 (2020/12/23) での発表資料です。
https://hatena.connpass.com/event/198892/

動画もあります:
https://youtu.be/Xb5bPaTO7fs?t=376
</description>
      <media:content url="https://files.speakerdeck.com/presentations/1f4444289c86481a8a1693099186c8e6/preview_slide_0.jpg?16976981" type="image/jpeg" medium="image"/>
      <content:encoded>Hatena Engineer Seminar #15 (2020/12/23) での発表資料です。
https://hatena.connpass.com/event/198892/

動画もあります:
https://youtu.be/Xb5bPaTO7fs?t=376
</content:encoded>
      <pubDate>Wed, 23 Dec 2020 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/mizdra/webhurontoendofalsezhi-xu-wowei-chi-suruti-zhi-wozuo-ru</link>
      <guid>https://speakerdeck.com/mizdra/webhurontoendofalsezhi-xu-wowei-chi-suruti-zhi-wozuo-ru</guid>
    </item>
    <item>
      <title>個人開発の裏側</title>
      <description>MCCMMANCC2018 (https://uecmma.github.io/MCCMMANCC2018/) の登壇資料です.</description>
      <media:content url="https://files.speakerdeck.com/presentations/2fb6aa7d8a8b459ebd4dbe0e856a86cb/preview_slide_0.jpg?11483146" type="image/jpeg" medium="image"/>
      <content:encoded>MCCMMANCC2018 (https://uecmma.github.io/MCCMMANCC2018/) の登壇資料です.</content:encoded>
      <pubDate>Sun, 23 Dec 2018 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/mizdra/ge-ren-kai-fa-falseli-ce</link>
      <guid>https://speakerdeck.com/mizdra/ge-ren-kai-fa-falseli-ce</guid>
    </item>
    <item>
      <title>祝う2</title>
      <description>Dentoo.LT #21で発表したスライドです.</description>
      <media:content url="https://files.speakerdeck.com/presentations/dab38421d0b0437180c3871d4065029c/preview_slide_0.jpg?11196229" type="image/jpeg" medium="image"/>
      <content:encoded>Dentoo.LT #21で発表したスライドです.</content:encoded>
      <pubDate>Sun, 11 Nov 2018 00:00:00 -0500</pubDate>
      <link>https://speakerdeck.com/mizdra/zhu-u2</link>
      <guid>https://speakerdeck.com/mizdra/zhu-u2</guid>
    </item>
  </channel>
</rss>
