コンテンツにスキップ

HTML/オブジェクト

出典: フリー教科書『ウィキブックス(Wikibooks)』

HTMLにおけるオブジェクトは、ウェブページに画像、ビデオ、オーディオなどのマルチメディアコンテンツを埋め込むための要素です。代表的な要素には<img>, <video>, <audio>, <embed>, <object>, <iframe>, <canvas>があります。これらの要素を使用して、リッチでインタラクティブなコンテンツを提供できます。

画像の挿入

[編集]

画像はウェブページに視覚的なコンテンツを追加するための重要な要素です。HTMLでは、<img>要素を使用して画像を挿入します。

構文

[編集]
<img src="画像のURL" alt="代替テキスト">
src
画像ファイルのURLを指定します。
alt
画像が表示されない場合に表示されるテキストを指定します。

[編集]
<img src="example.jpg" alt="例の画像">

作成例

[編集]

以下は、画像を挿入する具体的な例です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>画像の例</title>
</head>
<body>
    <h1>画像の挿入例</h1>
    <p>以下は画像の挿入例です。</p>
    <img src="https://www.example.com/example.jpg" alt="美しい風景">
</body>
</html>

イメージマップ

[編集]

イメージマップは、画像の特定の領域にリンクを設定する方法です。これを使うことで、画像の異なる部分をクリックして異なるリンク先に移動させることができます。

構文

[編集]
<img src="image.jpg" usemap="#mapname">
<map name="mapname">
    <area shape="rect" coords="34,44,270,350" href="リンク先URL" alt="説明">
    <area shape="circle" coords="100,100,50" href="リンク先URL" alt="説明">
    <area shape="poly" coords="75,33,27,300,128,240" href="リンク先URL" alt="説明">
</map>

HTMLの<map>要素の<area>タグに使用されるshape属性は、クリック可能な領域の形状を指定します。以下に、shape属性の種類とその機能を表形式で示します。

shape属性の種類とその機能
shape の値 機能 coords 属性の例
default 画像全体をクリック可能な領域にする なし
rect 長方形の領域を指定する 左上の x 座標, 左上の y 座標, 右下の x 座標, 右下の y 座標
例: 34,44,270,350
circle 円形の領域を指定する 円の中心の x 座標, 円の中心の y 座標, 半径
例: 100,100,50
poly 多角形の領域を指定する(複数の x, y 座標のペア) 各頂点の x 座標と y 座標のペアのリスト
例: 75,33,27,300,128,240
具体例
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>イメージマップの例</title>
</head>
<body>
    <h1>イメージマップの例</h1>
    <img src="example-map.jpg" usemap="#example-map" alt="イメージマップの例">
    <map name="example-map">
        <!-- 長方形のリンク -->
        <area shape="rect" coords="34,44,270,350" href="https://www.example1.com" alt="リンク1">
        <!-- 円形のリンク -->
        <area shape="circle" coords="100,100,50" href="https://www.example2.com" alt="リンク2">
        <!-- 多角形のリンク -->
        <area shape="poly" coords="75,33,27,300,128,240" href="https://www.example3.com" alt="リンク3">
    </map>
</body>
</html>

MAP要素を使う場合のスマートフォンやタブレットへの配慮

[編集]

スマートフォンやタブレットのタッチインターフェースでは、alt属性に設定されたテキストが表示されないため、ユーザーが画像マップのクリック可能な領域を識別しにくくなる可能性があります。このため、画像マップを使用する際には、視覚的なヒントや代替手段を提供することが重要です。以下に、代替手段の例を示します。

視覚的なヒントを追加する

[編集]

画像に視覚的なヒントを追加して、クリック可能な領域がどこにあるのかを示します。例えば、ボーダーやハイライトを使用します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>画像マップの例</title>
    <style>
        .map-hint {
            position: absolute;
            border: 2px solid red;
            pointer-events: none; /* クリックを通過させる */
        }
        .map-container {
            position: relative;
            display: inline-block;
        }
    </style>
</head>
<body>
    <h1>画像マップの例</h1>
    <div class="map-container">
        <img src="example-map.jpg" usemap="#example-map" alt="イメージマップの例">
        <div class="map-hint" style="left: 34px; top: 44px; width: 236px; height: 306px;"></div>
        <div class="map-hint" style="left: 50px; top: 50px; width: 100px; height: 100px; border-radius: 50%;"></div>
    </div>
    <map name="example-map">
        <!-- 長方形のリンク -->
        <area shape="rect" coords="34,44,270,350" href="https://www.example1.com" alt="リンク1">
        <!-- 円形のリンク -->
        <area shape="circle" coords="100,100,50" href="https://www.example2.com" alt="リンク2">
        <!-- 多角形のリンク -->
        <area shape="poly" coords="75,33,27,300,128,240" href="https://www.example3.com" alt="リンク3">
    </map>
</body>
</html>

レスポンシブデザインを考慮する

[編集]

レスポンシブデザインを使用して、モバイルデバイス向けにデザインを調整します。例えば、画像マップを使用せずに、CSSJavaScriptを使用して同様のインタラクティビティを提供する方法です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>レスポンシブデザインの例</title>
    <style>
        .image-map {
            position: relative;
            display: inline-block;
        }
        .image-map img {
            width: 100%;
            height: auto;
        }
        .image-map .map-link {
            position: absolute;
            border: 2px solid transparent;
        }
        .image-map .rect {
            left: 10%;
            top: 10%;
            width: 50%;
            height: 30%;
        }
        .image-map .circle {
            left: 60%;
            top: 60%;
            width: 20%;
            height: 20%;
            border-radius: 50%;
        }
        .image-map .map-link:hover {
            border-color: red;
        }
    </style>
</head>
<body>
    <h1>レスポンシブデザインの例</h1>
    <div class="image-map">
        <img src="example-map.jpg" alt="イメージマップの例">
        <a href="https://www.example1.com" class="map-link rect" title="リンク1"></a>
        <a href="https://www.example2.com" class="map-link circle" title="リンク2"></a>
    </div>
</body>
</html>

JavaScriptを使用した代替手段

[編集]

JavaScriptを使用して動的に視覚的なフィードバックを提供します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>JavaScriptを使用した代替手段</title>
    <style>
        .image-map {
            position: relative;
            display: inline-block;
        }
        .image-map img {
            width: 100%;
            height: auto;
        }
        .image-map .map-link {
            position: absolute;
            border: 2px solid transparent;
        }
        .image-map .map-link:hover {
            border-color: red;
        }
    </style>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            var mapLinks = document.querySelectorAll('.image-map .map-link');
            mapLinks.forEach(function(link) {
                link.addEventListener('mouseover', function() {
                    link.style.borderColor = 'red';
                });
                link.addEventListener('mouseout', function() {
                    link.style.borderColor = 'transparent';
                });
            });
        });
    </script>
</head>
<body>
    <h1>JavaScriptを使用した代替手段</h1>
    <div class="image-map">
        <img src="example-map.jpg" alt="イメージマップの例">
        <a href="https://www.example1.com" class="map-link" style="left: 34px; top: 44px; width: 236px; height: 306px;" title="リンク1"></a>
        <a href="https://www.example2.com" class="map-link" style="left: 100px; top: 100px; width: 100px; height: 100px; border-radius: 50%;" title="リンク2"></a>
    </div>
</body>
</html>

まとめ

[編集]

<map>要素と画像マップは依然として有用ですが、モバイルデバイスやタブレットでは視覚的なフィードバックが重要です。視覚的なヒントを追加したり、レスポンシブデザインやJavaScriptを活用して、ユーザーがクリック可能な領域を認識しやすくすることが推奨されます。これにより、ユーザーエクスペリエンスを向上させることができます。

ビデオの挿入

[編集]

ビデオは、<video>要素を使用してウェブページに埋め込むことができます。

構文

[編集]
<video src="ビデオのURL" controls>
    ブラウザがビデオタグをサポートしていません。
</video>
src
ビデオファイルのURLを指定します。
controls
ビデオコントロール(再生、停止、ボリュームなど)を表示します。

[編集]
<video src="movie.mp4" controls width="600" height="400">
    ブラウザがビデオタグをサポートしていません。
</video>

オーディオの挿入

[編集]

オーディオは、<audio>要素を使用してウェブページに埋め込むことができます。

構文

[編集]
<audio src="オーディオのURL" controls>
    ブラウザがオーディオタグをサポートしていません。
</audio>
src
オーディオファイルのURLを指定します。
controls
オーディオコントロール(再生、停止、ボリュームなど)を表示します。

[編集]
<audio src="sound.mp3" controls>
    ブラウザがオーディオタグをサポートしていません。
</audio>

マルチメディアの挿入

[編集]

マルチメディアコンテンツ(音声、動画、その他のリッチメディア)は、<embed>要素や<object>要素を使用してウェブページに挿入できます。

embed要素
<embed>要素は、外部のアプリケーションやインタラクティブなコンテンツを埋め込むために使用されます。
構文
<embed src="ファイルのURL" type="MIMEタイプ">
<embed src="video.mp4" type="video/mp4" width="600" height="400">
object要素
<object>要素は、より汎用的に外部リソースを埋め込むために使用されます。
構文
<object data="ファイルのURL" type="MIMEタイプ">
    <!-- 代替コンテンツ -->
    <p>このブラウザでは、オブジェクトを表示できません。</p>
</object>
ファイルタイプの指定例
以下に、<object>要素を使用してさまざまなファイルタイプを指定する例を示します。
PDFファイル
<object data="example.pdf" type="application/pdf" width="600" height="400">
    <p>PDFファイルを表示するには、<a href="example.pdf">こちら</a>をクリックしてください。</p>
</object>
動画ファイル
<object data="movie.mp4" type="video/mp4" width="600" height="400">
    <p>動画を表示するには、<a href="movie.mp4">こちら</a>をクリックしてください。</p>
</object>
記述例
以下は、<embed>要素と<object>要素を使用してマルチメディアコンテンツを埋め込む具体的な例です。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>マルチメディアの例</title>
</head>
<body>
    <h1>マルチメディアの挿入例</h1>

    <h2>embed要素</h2>
    <p>以下は、<embed>要素を使用して動画を埋め込む例です。</p>
    <embed src="video.mp4" type="video/mp4" width="600" height="400">

    <h2>object要素</h2>
    <p>以下は、<object>要素を使用してPDFを埋め込む例です。</p>
    <object data="example.pdf" type="application/pdf" width="600" height="400">
        <p>PDFファイルを表示するには、<a href="example.pdf">こちら</a>をクリックしてください。</p>
    </object>
</body>
</html>

OBJECT要素のclassi属性は非推奨

[編集]

<object>要素のclassid属性は、かつてActiveXコントロールやQuicktimeプレイヤーなどのプラグインオブジェクトを指定するために使用されていました。しかし、ActiveXは特定のブラウザ(主にInternet Explorer)でしか動作せず、現在のウェブ標準やモダンブラウザはこれをサポートしていないため、ほとんど使われなくなっています。classid属性は非推奨となっており、代替技術としてHTML5のネイティブ要素やJavaScript APIを使用するのが一般的です。

例:classid属性を使用する非推奨の記述

[編集]
<object classid="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" width="400" height="300">
    <param name="paramName" value="paramValue">
    <!-- 代替コンテンツ -->
    <p>このブラウザではオブジェクトを表示できません。</p>
</object>

モダンな代替方法

[編集]

ActiveXコントロールやプラグインを使用せずに、動画やオーディオを埋め込むためのモダンな方法としては、HTML5の<video><audio>, <embed>, <object>要素などがあります。

動画の埋め込み例
<video src="movie.mp4" controls width="600" height="400">
    ブラウザがビデオタグをサポートしていません。
</video>
オーディオの埋め込み例
<audio src="sound.mp3" controls>
    ブラウザがオーディオタグをサポートしていません。
</audio>

OBJECT要素の用途

[編集]

<object>要素は依然として特定のユースケースで使用されることがありますが、使用頻度は他のHTML5要素に比べて少ないです。以下に、<object>要素の使用例とそのユースケースを説明します。

<object>要素の使用例とユースケース

[編集]

PDFファイルの埋め込み

[編集]

<object>要素を使用してPDFファイルを埋め込むことができます。これは特にドキュメントビューアとして有用です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>PDFファイルの埋め込み</title>
</head>
<body>
    <h1>PDFファイルの埋め込み例</h1>
    <object data="example.pdf" type="application/pdf" width="600" height="400">
        <p>PDFファイルを表示するには、<a href="example.pdf">こちら</a>をクリックしてください。</p>
    </object>
</body>
</html>

SVGファイルの埋め込み

[編集]

SVGファイルを埋め込む際にも<object>要素を使用できます。これにより、ベクターグラフィックスを表示することができます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>SVGファイルの埋め込み</title>
</head>
<body>
    <h1>SVGファイルの埋め込み例</h1>
    <object data="example.svg" type="image/svg+xml" width="600" height="400">
        <p>SVGファイルを表示するには、<a href="example.svg">こちら</a>をクリックしてください。</p>
    </object>
</body>
</html>

異なるメディア形式の埋め込み

[編集]

<object>要素は、互換性のない古いメディア形式を表示するために使用されることがあります。例えば、特定の種類のプラグインが必要な古いメディアファイルの場合です。

<object>要素の利点

[編集]
多様なメディアタイプ
<object>要素は、PDFやSVG、Flash(旧来の技術ですが)など、多様なメディアタイプをサポートします。
フォールバックコンテンツ
<object>要素内にフォールバックコンテンツを指定することで、対応していないブラウザに対しても代替の表示を提供できます。

モダンな代替方法

[編集]

HTML5では、特定のメディアタイプに特化した要素が導入されており、これらを使用するのが一般的です。

画像
<img>
動画
<video>
音声
<audio>
埋め込み
<embed>(ただし、通常は特定のプラグインやリッチメディア用)

まとめ

[編集]

<object>要素は依然として有用な場合がありますが、その使用は特定のユースケースに限られます。PDFやSVGなど、特定のメディアタイプの埋め込みに便利です。モダンなHTML5の要素を使用することで、よりシンプルで互換性のある実装が可能となります。

まとめ

[編集]

現在では、classid属性を使用することは推奨されず、HTML5の標準要素やAPIを使用してマルチメディアコンテンツやインタラクティブコンテンツを埋め込むのが一般的です。これにより、モダンブラウザでの互換性とパフォーマンスが向上します。

その他のオブジェクト要素

[編集]

HTMLには、他にもさまざまなオブジェクトを埋め込むための要素があります。

<iframe>要素
<iframe>要素は、別のHTMLページを埋め込むために使用されます。
構文
<iframe src="ページのURL" width="幅" height="高さ"></iframe>
<iframe src="https://www.example.com" width="600" height="400"></iframe>
<canvas>要素
<canvas>要素は、JavaScriptを使用して動的なグラフィックスを描画するために使用されます。
構文
<canvas id="myCanvas" width="幅" height="高さ"></canvas>
<canvas id="myCanvas" width="200" height="100"></canvas>
<script>
    var canvas = document.getElementById('myCanvas');
    var context = canvas.getContext('2d');
    context.fillStyle = 'blue';
    context.fillRect(10, 10, 150, 80);
</script>

まとめ

[編集]

HTMLを使用して画像やマルチメディアコンテンツを挿入することで、ウェブページに豊かな視覚的およびインタラクティブな要素を追加することができます。<img>要素は画像を表示するための基本的な手段であり、<video>および<audio>要素はビデオやオーディオを埋め込むためのツールです。<embed><object>要素を使用することで、さらに多様なマルチメディアコンテンツを埋め込むことができます。<iframe>要素や<canvas>要素を使用すると、別のHTMLページや動的なグラフィックスを埋め込むことも可能です。これらの要素を効果的に使用することで、ユーザーエクスペリエンスを向上させることができます。