はじめに
一年で最も憂鬱な季節がやってきました。花粉症歴35年のDirector&EngineerのMARUです。
「WebGL」という技術をご存じでしょうか?
WebGL を使用すると、Web 上に 3D モデルを描画できます。そして、この WebGL を扱いやすくするためのJavaScript のライブラリがThree.js です。
3D を専門にしていない人でも、意外と簡単に使えるらしい…?
今回は、そんな JavacriptライブラリThree.js を簡単にご紹介します。
WebGLとは
Wikipediaの説明では以下のようなことが書かれています。
WebGL(ウェブジーエル、Web Graphics Libraryの略称)は、互換性のある任意のウェブブラウザ上で、プラグインを使用せずにインタラクティブな2次元および3次元のコンピュータグラフィックをレンダリングするためのJavaScript APIである。WebGLはウェブ標準に完全に統合されているため、ウェブページのcanvas要素上でGPUアクセラレータを使用した物理シミュレーション、画像処理、画像効果などを表現できる。WebGLの要素は、外側のHTMLと組み合わせたり、ページやページの背景の他のパーツと合成して使用できる
WebGL の後継として WebGPU が登場しているため、「今さら WebGL?」と思われるかもしれません。
しかし、2025年1月時点では Safari や Firefox が未対応のため、WebGL もまだ現役です。
近年では、React や Vue を使ってウェブサイト全体を SPA(シングルページアプリケーション) として構築しつつ、WebGL を取り入れるケースも増えています。
SPA はシームレスな画面遷移が可能なため、WebGL との相性も良さそうです。
百聞は一見にしかず。 実際に動いているものを見ていただくのが早いですね。
こちらがサンプルです。


忘れておりましたが、弊社のコーポレートサイトのトップページにも Three.js(WebGL)を使用しています。
アルファベットが 3D 空間を浮遊しながら、スクロールに連動して動くシンプルな演出になっています。

3D というと、つい気合が入り、大きなパーツをグリグリと動かしたくなります。ですが、見る側にとっては不快に感じることもあります。
あまり欲張らず、さりげなく 3D モーションを取り入れて、スタイリッシュに仕上げるのが良いでしょう。
Three.jsを使ってみる
Three.Jsを使用したサンプルは検索すると多数出てきますので、当社トップページで実装しているコードを一部抜粋して紹介します。下記の公式サイトでも多数のサンプルを見ることができます。
私の制作環境のpackage.jsonの内容を参考に一部抜粋します。webpack
でのビルドやnpm
コマンドの説明はここでは割愛します。
webpackなりViteなりTypescript使うなり、それぞれ制作環境が違うと思いますので適宜合わせてください。
Three.jsをインポートします。
import * as THREE from 'three';
今回、テキストを浮遊させますので以下もインポートしておきます。
import { FontLoader } from 'three/examples/jsm/loaders/FontLoader.js';
import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';
今回は「LAUGHSTYLE!!」という文字列を浮遊させたいので、以下のように変数に代入しておきます。
Three.jsの概念として以下の考え方があります。
現実の世界でも、舞台があり、ライトを照らし、カメラで撮影し、映像が映し出されます。
Web 上でも同じ仕組みを再現するのが Three.js です。
- シーンを作る(舞台)
- カメラ設定
- ライト設定
- メッシュやマテリアルの設定(オブジェクトの作成)
- レンダラーの作成(映像として写しだす)
また、3D オブジェクトを表現するためには、メッシュやマテリアルの設定 も欠かせません。
これらを適切に設定することで、オブジェクトの質感や動きを表現できます。
まずはシーンを作成します。
カメラを作成します。
ライトを設定します。
レンダラーを作成します。
今回はテキストを浮遊させたいので、フォントロードしておきます。
Promiseで非同期でフォントのJsonファイルをロードします。
メッシュ、マテリアル等々の設定も必要です。
他、重要な点を抜粋し、簡潔にまとめました。
あとは イベントリスナー を登録し、スクロールに応じて値を変化させることで、3D 空間上でテキストを回転させることができます。
途中割愛しており、かなりざっくりとした説明になっていますが、イメージとしてはこのような感じです。
WebGLが使用できる環境
2025年3月現在、ほとんどのブラウザでサポートされています。スマホでも動作しますので問題ありません。

まとめ
ダイナミックなモーションが取り入れられているサイトを見つけると、ついつい「このサイトは何の技術を使っているんだろう?」とソースコードを見てしまいます。そこで初めて Three.js という技術を知りました。
Three.js はあくまでライブラリなので、これをどう活かすかはセンスが問われます。
美しいデザインに動きが加わると、ユーザー体験(UX)の向上だけでなく、サイトの価値が高まると考えています。
弊社のトップページも、ハイレベルなデザインと融合させることで、ユーザー体験(UX)の向上を実現しています。
「UX を向上させたい!」という企業様、ぜひラフスタイルまでご相談ください。