SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

マンガで分かるプログラミング用語辞典

「ビューポート」
~マンガでプログラミング用語解説

マンガで分かるプログラミング用語辞典(275)

解説

 「ビューポート」はのぞき窓という意味で、コンピューターでは表示領域を指します。ビューポートは多くの場合、長方形です。

 ウェブページや3DCGなどでは、コンテンツをビューポートを通して見ます。

 ウェブページでは、HTMLのタグとしてビューポートの設定をおこなうことができます。スマートフォンでは、これらの値を参考にして表示を調整します。

<meta name="viewport" content="width=device-width, initial-scale=1" />

サンプル

 「ビューポート」のサンプルです。3Dで、大小2つのビューポートを重ねて表示しています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>「ビューポート」のサンプル</title>
  <style>
    html, body { margin: 0; width: 100%; height: 100%; }
    #container { width: 100vw; height: 50vw; position: relative; }
  </style>
</head>
<body>
  <div id="container"></div>
  <script type="module">
import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.184.0/build/three.module.js';

const container = document.getElementById('container');
const w = container.clientWidth;
const h = container.clientHeight;

// レンダラー
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(w, h);
renderer.setScissorTest(true);
container.appendChild(renderer.domElement);

// シーン
const scene = new THREE.Scene();
scene.background = new THREE.Color(0x2060a0);

// オブジェクト
const cube = new THREE.Mesh(
    new THREE.BoxGeometry(1.5, 1.5, 1.5),
    new THREE.MeshStandardMaterial({ color: 0xaaff00 })
);
scene.add(cube);

// 光源
const light = new THREE.DirectionalLight(0xffffff, 1.5);
light.position.set(3, 6, 5);
scene.add(light);

const ambient = new THREE.AmbientLight(0xffffff, 0.5);
scene.add(ambient);

// カメラ
const camera = new THREE.PerspectiveCamera(20, w / h, 0.1, 100);
camera.position.set(-5, 5, 2);
camera.lookAt(0, 0, 0);

// アニメーション
function animate() {
    requestAnimationFrame(animate);
    cube.rotation.y += 0.01;

    // メインのビューポート
    renderer.setViewport(0, 0, w, h);
    renderer.setScissor(0, 0, w, h);
    renderer.render(scene, camera);

    // 右上のビューポート
    renderer.setViewport(w * 0.6, h * 0.6, w * 0.4, h * 0.4);
    renderer.setScissor(w * 0.6, h * 0.6, w * 0.4, h * 0.4);
    renderer.render(scene, camera);
}
animate();
  </script>
</body>
</html>
出力結果

275_ss.png

フィードバックお待ちしております!

 ご感想、解説してほしい用語、解説内容のアドバイスなどございましたら、FacebookX(旧Twitter)などでお気軽に編集部までお寄せください。よろしくお願いいたします。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
マンガで分かるプログラミング用語辞典連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/24267 2026/08/11 08:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー