<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>シェーダー on Data Visualization Japan</title>
        <link>https://data-visualization.jp/tags/%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC/</link>
        <description>Recent content in シェーダー on Data Visualization Japan</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja-jp</language>
        <lastBuildDate>Fri, 29 Dec 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://data-visualization.jp/tags/%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>LT：清水 正行／シェーダーを使ったWeb地図のカスタマイズ</title>
        <link>https://data-visualization.jp/lt-shader-webmap/</link>
        <pubDate>Fri, 29 Dec 2023 00:00:00 +0000</pubDate>
        
        <guid>https://data-visualization.jp/lt-shader-webmap/</guid>
        <description>&lt;p&gt;Data Visualization Japan Meetup 2023（2023年12月29・30日開催）における、清水 正行さんのLTです。3Dプログラミングで使われる「シェーダー（shader）」という技術を使って、Web地図をカスタマイズする例を紹介します。&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/RhnQ8kkK_xk&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.google.com/presentation/d/1FEdwmLyqzCDcRgRSNu8qd8hXATO6FWv1jUs83TWqDIQ/edit#slide=id.p&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;スライド&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;「シェーダーを使ったWeb地図のカスタマイズ」というタイトルになります。&lt;/p&gt;
&lt;h2 id=&#34;自己紹介&#34;&gt;自己紹介
&lt;/h2&gt;&lt;p&gt;清水正行と言います。群馬県高崎市に住んでいて、2015年から2020年までは日経に在籍していました。現在はフリーランスで、データビジュアライゼーションや Web技術のエンジニアをやっています。&lt;/p&gt;
&lt;p&gt;こんな感じで地図を使ったコンテンツを作ったりしています。地図の比較ができるようなツールなども制作しました。&lt;/p&gt;
&lt;p&gt;ほかにブログもやっています。最近あまり更新できていないのですが、地図などに関するサンプルコードや解説記事を載せています。&lt;/p&gt;
&lt;h2 id=&#34;シェーダーとは&#34;&gt;シェーダーとは
&lt;/h2&gt;&lt;p&gt;さて、今回の本題です。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;シェーダー&lt;/strong&gt;とは、3次元コンピューターグラフィックスにおいて&lt;strong&gt;シェーディング（影をつける作業）をするコンピュータープログラム&lt;/strong&gt;のことです。スケッチで質感をつけることを「シェーディング」と言いますが、これを 3DCG で行うための仕組みがシェーダーと呼ばれています。&lt;/p&gt;
&lt;p&gt;シェーダーは専用の言語を使って書く必要があります。WebGL（フロントエンド）で使う場合は &lt;strong&gt;GLSL&lt;/strong&gt; という言語が用いられます。GLSL は C言語に似た書式で書くもので、一般的な JavaScript とは別の言語です。&lt;/p&gt;
&lt;h2 id=&#34;なぜ地図でシェーダーなのか&#34;&gt;なぜ地図でシェーダーなのか
&lt;/h2&gt;&lt;p&gt;実は、&lt;strong&gt;最近のモダンな地図ライブラリは、地図を描画する際にほとんど WebGL という技術を用いています&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;そして地図ライブラリの中には、開発者がシェーダーを使って独自にカスタマイズできる API を提供しているものがあります。今回はその中でも、シェーダーを使ったカスタマイズがしやすい &lt;strong&gt;deck.gl&lt;/strong&gt; を使った例を紹介します。&lt;/p&gt;
&lt;h3 id=&#34;deckgl-とは&#34;&gt;deck.gl とは
&lt;/h3&gt;&lt;p&gt;Uber 社がオープンソースとして公開していたデータビジュアライゼーションのフレームワークです。現在は Linux Foundation 傘下の組織に移管されて管理されており、WebGL を用いて&lt;strong&gt;大規模なデータセットの視覚化&lt;/strong&gt;が行えるライブラリになっています。&lt;/p&gt;
&lt;p&gt;シェーダーを使うと、&lt;strong&gt;画面全体にエフェクトをかけたり、レイヤーごとにエフェクトをかけたり&lt;/strong&gt;することができます。&lt;/p&gt;
&lt;h2 id=&#34;-画面全体にシェーダーを適用するポストエフェクト&#34;&gt;① 画面全体にシェーダーを適用する（ポストエフェクト）
&lt;/h2&gt;&lt;p&gt;まず、画面全体にシェーダーを適用する例です。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;チルトシフト&lt;/strong&gt; — 画面の上と下をぼかすことで、ミニチュアっぽい見え方にする処理です。このエフェクトは「ポストエフェクト」という機能でシェーダーを使ってかけています。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;レトロなテレビ風&lt;/strong&gt; — 先月やった「30 Day Map Challenge」の時にも作ったものですが、Google の 3D フォトリアルタイルを使い、エフェクトをかけて古いテレビ風に見せています。&lt;/p&gt;
&lt;p&gt;実装手順はいくつかステップがありますが、時間の都合で簡単に説明します。サンプルコードを載せていますので、関心がある方はご覧いただければと思います。GLSL を書いている部分は、&lt;strong&gt;JavaScript のテキストとしてコードを書く&lt;/strong&gt;という形になります。&lt;/p&gt;
&lt;h2 id=&#34;-レイヤーごとにシェーダーを適用する&#34;&gt;② レイヤーごとにシェーダーを適用する
&lt;/h2&gt;&lt;p&gt;次に、レイヤーごとにシェーダーを適用する例です。&lt;/p&gt;
&lt;p&gt;ポリゴンのサーフェスにシェーダーでアニメーションをつける、といったことができます。&lt;/p&gt;
&lt;p&gt;さらに、deck.gl には ArcLayer や LineLayer といったラインを表示するレイヤーがありますが、&lt;strong&gt;それらには「線が伸びていく」ようなアニメーションを作る機能がありません&lt;/strong&gt;。ですがシェーダーを使えば、こうしたアニメーションを独自に実装できます。&lt;/p&gt;
&lt;p&gt;応用例として、ArcLayer をアニメーションさせて&lt;strong&gt;世界各国の空港の行き来を表示&lt;/strong&gt;するものも作りました。これもシェーダーでアニメーションさせて表示させています。&lt;/p&gt;
&lt;p&gt;レイヤーのエクステンションの使い方についても、スライドを公開しますのでそちらをご覧ください。サンプルコードも載せています。ポストエフェクトとレイヤーエフェクトでは書き方が少し違うのですが、その理由の細かい説明は割愛します。&lt;/p&gt;
&lt;h2 id=&#34;どうやって学ぶか&#34;&gt;どうやって学ぶか
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GLSL&lt;/strong&gt; については、YouTube で講義を行っている方がいるので、それを参考にするのがいいと思います。Udemy などにもシェーダーの書き方のコースがあります&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;deck.gl&lt;/strong&gt; の公式ドキュメントにも、シェーダーの書き方を説明したページがあります&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そういったものを参考にすると、シェーダーを使ったカスタマイズがいろいろ作れるのではないかと思います。&lt;/p&gt;
&lt;p&gt;以上です。&lt;/p&gt;</description>
        </item>
        
    </channel>
</rss>
