• Tidak ada hasil yang ditemukan

NTTテクノクロス株式会社

N/A
N/A
Protected

Academic year: 2023

Membagikan "NTTテクノクロス株式会社"

Copied!
100
0
0

Teks penuh

(1)

HTML5プロフェッショナル認定試験 レベル1 ポイント解説無料セミナー

講師

:

石井博幸

NTTテクノクロス株式会社

2019年11月

(2)

自己紹介

石井博幸 ( いしいひろゆき )

NTT

テクノクロス株式会社

( HTML5

アカデミック認定校

)

ビジネスソリューション事業部所属

W3C CSS Working Group(

2014)

レベル

1,2

認定取得

HTML5

周辺技術を利用した、テレコム開発

/

スマートフォン・

Web

アプリ開発

/

クラ

ウド基盤開発などを担当

レベル 2 試験対策本執筆 ( 株式会社マイナビ出版 )

(3)

この辺 を重点

的に

本日お話すること

試験について

試験概要・範囲

試験範囲のポイント解説

Web

の基礎知識

CSS

要素

レスポンシブ

Web

デザイン

API

の基礎知識

学習の進め方

(4)

試験について

(5)

試験概要

公式サイトに情報があります

http://html5exam.jp/outline/objectives_lv1_v2.html

JavaScript は出ません

ただ、 JavaScript が何なのかや、使い方などは範囲に含まれる

ので、知っておいた方がよいでしょう

Ver2.0 では API の種類とできることの知識が問われます 2.0

(6)

試験範囲

公式サイトに情報があります、が

http://html5exam.jp/outline/objectives_lv1.html

長っ

(7)

試験範囲は広い

時間も限られていますので、本日は広い試験範囲を学 習する上でのとっかかりとなる情報とポイントを持っ て帰ってもらうことを目的とします

(X)HTML4.01/CSS2.1 までも試験範囲には含まれます

が、ここでの解説は一部を除き省略させていただきま

(8)

0. HTML5 とは

(9)

HTML5とは

HTML4.01 までは、静的な Web ページを作成するため のものであった

しかし、 Web の世界は、リッチなマルチメディアが多 種多様なデバイスで実行されるアプリケーションのプ ラットフォームとなることが求められていた

HTML5 はそれを実現するために策定された仕様

歴史

(10)

HTML5 狭義と広義

狭義の HTML5 は、 W3C が勧告した HTML5 仕様のみ

A vocabulary and associated APIs for HTML and XHTML http://www.w3.org/TR/html5/

広義の HTML5 は、狭義 HTML5 仕様にとどまらず、関 連する CSS や各種 JavaScript API 群を含んだもの

あまりにも広大なため、

W3C

では技術分野を

8

つに分類して整理

セマンティクス

/

マルチメディア

/

オフライン

&

ストレージ

/3D,

グラフィックス

,

エフェクト

/

デバイスアクセス

/

パフォーマンス

&

インテグレーション

/

コネク ティビティ

/CSS3

(11)

1. Web の基礎知識

(12)

Webの基礎知識について

一見 HTML5 と関係が薄いように思えますが、 HTML5

によって、デザイナ / コーダ・ Web プログラマ・サー

/ ネットワークエンジニアは、自分の担当部分だけ

でなく自らの領域を越えた知識やスキルが必要とされ

ています

(13)

障害が発生した場合は?

一般的なWebアプリケーション構成

ブラウザ搭載端末

Webアプリケーションサーバ DB

F12

押してコンソールログ? サーバ上でログの確認?

(プロキシサーバ)

(14)

ポイント

Web サイトがどのような仕組みで Web ブラウ ザに表示されるかを把握

IP, DNS, TCP, HTTP

プロキシ 2

Ver2.0 では HTTP(s) のみ対象 2.0

(15)

登場人物など

PC:

Web

ブラウザ

: PC

やスマホ上で動作する、

Web

サイト閲覧用ブラウザ

(

以降ブラウザ

)

サーバマシン

:

サーバアプリケーションが動作するコンピュータ機器

Web

サーバ

:

サーバマシン上で

Web

サイトを提供するサーバソフトウェ

ざっくり概要で説明します

PC

サーバマシン

Webサーバ

ブラウザ

(16)

まず対象のWebサーバへアクセスしたい

対象の Web サーバをどう識別する ?

ネットワーク上には無数のサーバが存在

IP アドレスを使う

192.0.43.10 のような数字の羅列

IP アドレスを住所代わりにして目的のサーバにデータを送信この仕組み ( 機器同士の通信 ) を規定しているのが IP(Internet

Protocol)

IP は情報を目的地まで届けるためのプロトコル

Webサーバ

ブラウザ

192.0.43.10

!

(17)

君はIPアドレスを覚えているのか?

普段

IP

アドレスを入力してませんよね

DNS(Domain Name System)

を使う

"example.com"

のようなドメイン名と呼ばれる名前を付け、

IP

アドレ スと紐づけて覚えやすくする

(

この仕組みが

DNS)

DNS

サーバに聞けば紐づいた

IP

アドレスがわかる

(

名前解決

)

詳しくは

JPNIC

の「ドメイン名のしくみ」

https://www.nic.ad.jp/ja/dom/system.html

PC

サーバマシン

example.com Webサーバ

ブラウザ

192.0.43.10

です

example.com

? DNSサーバ

(18)

Webサーバはどれですか?

Web

サーバ以外にもサーバプログラムが

サーバマシンには

SSH

などのサーバプログラムも動作しており、

IP

ドレスだけでは

Web

サーバを識別できない

ポート番号を使う

サーバごとに既定のポート番号を指定

(Web

サーバは

80

)

このあたりのアプリケーション間通信の仕組みを規定しているのが

TCP(Transmission Control Protocol)

TCP

IP

を利用し通信路を確立、そのうえで情報をやりとりする

TCP

にはエラーチェックや再送など、情報を確実に送る仕組みがある

PC

サーバマシン

Webサーバ(80)

ブラウザ

80

通信路確立

(19)

ポート番号、指定してますか?

普段はポート番号を入力しないですよね

URL

で通信プロトコル

(

ポート番号

)

を指定している

"http://example.com/"

http://

で、

HTTP(HyperText Transfer

Protocol)

を使っての通信を宣言している

HTTP

80

番ポートを使用する

(

前述の

Web

サーバは

80

番と同意

)

80

番ポートを指定したことになる

これでブラウザと

Web

サーバが無事つながった

PC

サーバマシン

example.com

Webサーバ(80)

ブラウザ

http://example.com/

!

80

通信路確立

(20)

つながったのでコンテンツのデータを取得

HTTP

でコンテンツを取得する

1.

確立された

TCP

通信路上で、ブラウザから

Web

サーバへ、

x.html

をくださいというリクエストを送信する

2. Web

サーバはブラウザへレスポンスとして

x.html

の中身を返す

3. TCP

で確立した通信路を閉じる

4.

ブラウザは

x.html

を表示する

PC

サーバマシン

Webサーバ(80)

ブラウザ

http://example.com/x.html

x.htmlください x.htmlです

見えた!

x.html

(21)

HTTPメッセージのポイント(1)

HTTP

メッセージはヘッダとボディに分かれる

ヘッダはリクエストやレスポンスがどのようなものかを示す情報が格納されている

クライアントやサーバの処理に必要な重要情報

ボディはデータ送信時にデータを格納する箇所

リクエストで使用可能なメソッド

(

ヘッダに書かれる

)

メソッド名 説明

GET

サーバから指定

URI

のリソースを取得

POST

クライアントからサーバへデータを送信

送信後サーバからデータが送られることもある

PUT

サーバの指定

URI

にデータを保存

HEAD GET

と同様だがヘッダのみ取得

OPTIONS

指定

URI

がサポートするメソッドを取得

DELETE

指定

URI

のリソース削除

TRACE

サーバまでのネットワーク経路チェック

CONNECT TCP

トンネル接続

(

プロキシ利用時の

SSL

トンネリングなどに使う

)

(22)

HTTPメッセージのポイント(2)

レスポンスのステータスコード ( ヘッダに書かれる )

リクエストの結果がどうだったかの情報が、

3

ケタの数字で書かれている

ステータスコード 概要と代表例

1xx

サーバ側の情報

100: Continue

2xx

成功

200: OK

3xx

転送

301: Moved Parmanently / 304: Not Modified 4xx

クライアントからのリクエストエラー

400: Bad Request / 401: Unauthorized / 403: Forbidden / 404: Not Found 5xx

サーバでのリクエスト処理エラー

500: Internal Server Error / 503: Service unavailable

(23)

プロキシ2種

プロキシは

Web

ブラウザ等クライアントと

Web

サーバとの通信を中継

Web

プロキシ

(

クライアント側に配置

)

クライアントのインターネット直接続防止

キャッシュによる速度向上

リバースプロキシ

(Web

サーバ側に配置

)

Web

サーバのインターネットからの直接続防止

Web

サーバの負荷分散処理

クライアント

(webブラウザ) Webプロキシ

内部ネットワーク 内部ネットワーク

リバースプロキシ

外部ネットワーク

Webサーバ

(24)

2. CSS3

(25)

CSS3について

http://html5exam.jp/outline/objectives_lv1_v 2.html#lv1_12

CSS3 はもちろんのこと、 CSS2.1 以前も対象

となっています

(26)

学習のポイント

CSS2.1 を押さえたうえで、 3 への変更点を学ぶ

CSS2.1 のポイント

カスケード

ボックスモデル

CSS3 で何が変わったの?

画像が必要だった修飾

(border:

枠修飾など

)

CSS

で可能に

便利セレクタの大幅追加

簡単にマルチカラムレイアウト実現

のみで変形、アニメーション実現

(27)

カスケード

カスケード処理

継承などで

1

つの要素に対し複数の指定が起こりうるが、基本的に優 先度は直接指定

>

継承

(

近い指定の方が強い

)

それが同じ場合の優先度判断をするのがカスケード処理

優先順位づけルールその1: CSSの種類

文章作成者CSS > ユーザCSS > ブラウザ標準CSS

ユーザCSSは、利用者がWebブラウザに対して指定するCSS

ブラウザ標準CSSは、Webブラウザの持つデフォルトのCSS

ただし、CSSの値に”!important”をつけると最優先される

!important付きユーザCSS > !important付き文書作成者CSS >

文章作成者指定CSS > ユーザ 指定CSS > ブラウザ標準CSS

まとめると

p { font-size: 1em !important; }

例: pの文字サイズ指定に!importantを使用する

(28)

カスケード

優先順位づけルールその 2: セレクタタイプ

CSS

の種類が同じである場合、セレクタをタイプ別に分類し、それぞ れの個数を数え、点数

(

詳細度

)

を算出し、高い方を優先する

セレクタのタイプ

タイプ 対象

A style

属性に記述した

CSS

B ID

セレクタ

C

クラスセレクタ、属性セレクタ、疑似クラス

D

要素セレクタ、疑似要素

詳細度は個数を連結した”A.B.C.D”と書くとわかりやすい

Aが0つ、Bが1つ、Cが2つ、Dが1つの場合の詳細度は”0.1.2.1”

比較方法は後述

詳細度の算出

(29)

カスケード

詳細度からの優先度算出

A>B>C>D

の順で優先度が高い

優先度が高いセレクタタイプの点数が高い方が優先される

#id {

装飾

A } →0.1.0.0 ul li.class {

装飾

B } →0.0.1.2 ui ol+li {

装飾

C } →0.0.0.3

詳細度からの優先度算出の例

この場合の優先度順は装飾A>装飾B>装飾Cとなり、装飾Aが適用される

Specify Calculatorは詳細度を算出してくれるので参考に

demo

(30)

カスケード

優先順位づけルールその 3: 出現順

詳細度による優先度も同じ場合、後に出現した

CSS

が優先される

#id {

装飾

A }

#id {

装飾

B }

出現順からの優先度の例

この場合は後に出現した装飾Bが適用される

(31)

ボックスモデルとボックスサイズ算出

文書内の全要素は四角形の領域を形成

コンテンツ領域、

padding(

ボックス内側の余白

)

border(

境界線

)

margin(

ボックス外側の余白

)

4

つから成り立つ

margin border padding

コンテンツ領域

(テキスト・画像)

ボックスサイズの算出

幅ならコンテンツ領域の幅(width)+padding+border

プロパティbox-sizingの値をborder-boxにすると、ボックスサイズが

widthもしくはheightで指定した値となる

(32)

CSS3で可能になった修飾の例

ボックスの角丸

border-radius

プロパティ

(http://www.w3.org/TR/css3-background/#corners)

グラデーション

linear-gradient, radial-gradient(http://www.w3.org/TR/css3- images/#gradients)

ボックスに影

box-shadow

プロパティ

(http://www.w3.org/TR/css3-background/#the-box- shadow)

demo

(33)

便利セレクタの大幅追加(以下は一部)

属性セレクタに前方

/

後方

/

部分一致が追加

[attr^="val"], [attr$="val"], [attr*="val"]

http://www.w3.org/TR/css3-selectors/#attribute-substrings

結合子に兄弟セレクタ

"~"

が追加

http://www.w3.org/TR/css3-selectors/#attribute-substrings

構造を利用した疑似クラスが大幅追加

nth-child(), nth-of-type(), last-child

など

http://www.w3.org/TR/css3-selectors/#general-sibling-combinators

demo

(34)

簡単にマルチカラムレイアウト

Multi-column Layout Module

で、複数段組みレイアウトを簡単に実現可能

column-count, column-gap

プロパティなど

http://www.w3.org/TR/css3-multicol/

Flexible Box Layout Module

で、

float

を使わずにボックスを横並びにできる

display: flex

flex-direction

プロパティなど

http://www.w3.org/TR/css-flexbox-1/

CSS

によるレイアウトの自由度が増しています

(35)

CSSで変形、アニメーション

transform プロパティでボックスを移動・変形できる

translate(), rotate(), scale(), skew()

など

http://www.w3.org/TR/css3-transforms/

transition 関連プロパティで、要素の変化を滑らかにできる

例えば、

:hover

での変化を滑らかにするなど

http://www.w3.org/TR/css3-transitions/

animation 関連プロパティで、要素の変化を連続して行える

@keyframes を指定するのが特徴

http://www.w3.org/TR/css3-animations/ demo

(36)

3. 要素

(37)

要素について

http://html5exam.jp/outline/objectives_lv1_v2.html#l v1_13

HTML5 はもちろんのこと、 HTML4.01 以前も対象とな っています

Ver1.0 HTML5 Ver2.0 HTML5.1 が対象です

2.0

(38)

学習のポイント

HTML4.01 を押さえたうえで、 5 への変更点を学ぶ

何が変わったの?

定型句がシンプルになっている

要素に意味づけがされている

(

セマンティクス

)

スタイル的な機能は排除されている

新しいインタフェースや機能が使えるようになっている

2.0で

重要に

(39)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE html>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta charset="UTF-8">

定型句がシンプルに

文書型宣言

文字エンコーディング

他にもありますが、いろいろ楽になりました

HTML4.01 Transitional

HTML5

HTML4.01 Transitional

HTML5(

一例

)

(40)

定型句がシンプルに

たとえばこのような感じです

<!DOCTYPE html>

<html lang="ja">

<head>

<meta charset="UTF-8">

<title>

タイトル

</title>

<link rel="stylesheet" href="css/style.css">

<script src="js/script.js"></script>

</head>

<body>

コンテンツ

</body>

</html>

(41)

要素に意味を持たせられるように

セクションを明示する要素によりアウトラインを意識した作 成が可能に

セクションとは

文書の一区分

アウトラインでは一階層を形成

アウトラインとは

HTML

文書では目次のようなもの

アウトラインのイメージ

1.

あああ

2.

いいい

1.

いいいのあああ

2.

いいいのいいい

(42)

セクションを明示する要素

以下の要素でセクションが明示される

セクション明示はないが関連する要素

要素名 説明

section

一般的なセクションを表し、見出しとセットで使用

article

単体で完結できるセクション

(1

フィードに含める内容

)

aside

あるコンテンツに関係しているが、切り離せるもの

サイドバー、広告など

nav

主要なナビゲーション

body body

要素名 説明

h1~h6

セクションの見出し

header

セクションのヘッダ

footer

セクションのフッタ

(43)

セクション関連要素の配置例

header

footer nav

article aside

section

section

body

(44)

アウトライン生成の例

以下の HTML があったとする

アウトラインを確認してみよう

<body>

<h1>Apples</h1>

<p>Apples are fruit.</p>

<section>

<h2>Taste</h2>

<p>They taste lovely.</p>

<section>

<h3>Sweet</h3>

<p>Red apples are sweeter than green ones.</p>

</section>

</section>

<section>

<h2>Color</h2>

<p>Apples come in various colors.</p>

</section>

</body>

demo

(45)

意味づけのメリット

構造がページの読解の助けとなる人々に大きな利点をもたら

いわゆるアクセシビリティの向上

これがオープンなプラットフォームとして提供されているの が大きなポイント

誰でも使える!

構造はこうしなければダメ!という答えがあるわけではない

構造には作成者の主張が反映される

判断の参考になるものとして

HTML5 Doctor

HTML5 Sectioning

Element Flowchart

がある

(46)

スタイル的な機能の排除

HTML

5の要素からは、要素および属性によるスタイル指定機能は排除 されている

スタイル指定は基本

CSS

でやることに

廃止された要素例

: big, center, font, strike, tt

排除された主要な理由は以下

アクセシビリティの低下

メンテナンスコストの増加

文書サイズの増大

残ったのは

style

要素および属性

スタイル的機能の要素の一部は機能を再定義されているのもポイント

(47)

新しいインタフェースや機能

フォームの input 要素で使える type 属性が大幅増加

http://www.w3.org/TR/html5/forms.html#states-of-the- type-attribute

HTML だけでマルチメディアコンテンツを再生できる audio 要素 /video 要素

プラグインを使用せずビットマップ画像を描画できる canvas 要素

demo

(48)

他のポイント

HTML4.01 から HTML5 での変更点を押さえておく

新規追加された要素

変更となった要素・属性削除された要素・属性

各要素のカテゴリを把握しておく

http://www.w3.org/TR/html5/dom.html#kinds-of-contenthttp://www.w3.org/TR/html5/index.html#element-content-

categories

できればコンテンツモデルも覚えておけるとよいですが、なか なか大変です

http://www.w3.org/TR/html5/index.html#elements-1

2.0で

不要に

(49)

他のポイント

HTML4.01からHTML5での変更点を押さえておく

新規追加された要素

変更となった要素・属性削除された要素・属性

各要素のカテゴリを把握しておく

http://www.w3.org/TR/html5/dom.html#kinds-of- content

http://www.w3.org/TR/html5/index.html#element- content-categories

できればコンテンツモデルも覚えておけるとよいですが、なか なか大変です

http://www.w3.org/TR/html5/index.html#elements-1

2.0で

不要に

(50)

4. レスポンシブ

Web デザイン

(51)

レスポンシブWebデザインについて

http://html5exam.jp/outline/objectives_lv1_v2.html#l v1_14

タイトルはレスポンシブ Web デザインですが、スマー

トデバイスに特化した内容も盛り込まれているので要

注意

(52)

学習のポイント

レスポンシブ Web デザインがどういうものか を押さえる

実現方法を押さえる

(53)

レスポンシブWebデザインとは

多種多様なデバイスが登場し続ける状況の中、デバイ スごとに対応サイトを開発するのはコストがかかり、

また将来登場する端末への対応も不明

そこで、レスポンシブ Web デザインと呼ばれる Web サイト開発手法が登場

広い意味では利用中であるユーザの状況や環境に合わせ、そのユーザ により良い体験を提供しようという考え方

手法を表す場合には、

1

つの

HTML

で、デバイスの特性

(

主に画面横幅

)

に応じてレイアウトやデザインを変更する手法を指す

(54)

デバイス特性に応じてレイアウトを変更する方法

レスポンシブ Web デザインでは、デバイス特性を利用して CSS を切り替える Media Queries を利用し、デバイスごとに レイアウトを変更する

demo

スマートフォン

タブレット

PC

HTML

CSS

CSS

CSS

(55)

メリットとデメリット

メリット

将来登場するデバイスも見越して対応可能

URLが同じとなるため、SEO的に有利

リダイレクトが発生しないため読み込み時間を短縮可能

HTMLが1つで済むのでコストを削減できる(可能性)

デメリット

設計・製造の難易度が高い

逆にコスト高になることも

モバイル向けには動画や画像も切り替える必要

モバイルは回線が不安定で画面は小さい

画面フローの変更には対応できない

スマホ用にPC向けサイトを表示できない

HTML/CSSのサイズが増加し、ページ表示や動作が重くなる可能性

(56)

レスポンシブWebデザインの実現手法

Media Queries( 前述 )

Fluid Grid

画面サイズにあわせてグリッドの幅を変更する

Fluid Image

画面サイズに合わせて画像サイズを変更する

これ以外にもあるが基本はこの 3

フレームワークをベースに作ることも多い フレームワ

ークを紹介

(57)

5. API の基礎知識

(58)

API

マルチメディア・グラフィックス系 API

Canvas/SVG/MediaSourceExtensions

・・・

デバイスアクセス系 API

Geolocation/DeviceOrientationEvent/TouchEvents

・・・

オフラインストレージ系 API

WebStorage/IndexdDatabaseAPI/Application cache/WebWorkers

・・・・

通信系 API

XMLHttpRequest/WebSocketAPI/

Server-Sent Events/WebRTC

一部抜粋

して説明

(59)

マルチメディア・グラ フィックス系 API

( 重要度 :5)

(60)

マルチメディア・グラフィックス系API

http://html5exam.jp/outline/objectives_lv1_v2.html#l

v1_151

(61)

Canvas

Canvas 2D Context

HTML

JavaScript

のみで簡単にブラウザ上に絵を描ける

<html>

<head><script type="application/javascript">

function draw() {

var canvas = document.getElementById("canvas");

var context = canvas.getContext("2d"); //

コンテキスト取得

context.fillRect (20, 20, 60, 60); //

四角形の描画

}

</script></head>

<body onload="draw();">

<canvas id="canvas"></canvas>

</body>

</html>

(62)

Drag and Drop

Drag and Drop

Web 上で要素をマウス操作で移動可能

(63)

デバイスアクセス系 API 概要

( 重要度 :4)

(64)

デバイスアクセス系API

http://html5exam.jp/outline/objectives_lv1_v2.html#l

v1_152

(65)

Geolocation API

Geolocation

ブラウザ上で位置情報 (GPS) を取得する API

無線

LAN

WiFi

・携帯電話基地局・

GPS

IP

アドレスなどから位置情 報を取得する

(66)

オフラインストレージ API

( 重要度 :8)

(67)

オフラインストレージ系API

http://html5exam.jp/outline/objectives_lv1_v2.html#l

v1_153

(68)

学習のポイント

概要と

マニフェスト

(69)

オフラインWebアプリケーションとは

ブラウザがオフラインでも静的コンテンツを閲覧可能な

Web

アプリケ ーション

ブラウザは、キャッシュマニフェストというファイルを読み取り、キ ャッシュマニフェストに指定されたコンテンツをローカルに保存

この仕組みによりオフライン閲覧が可能

サーバ クライアントからのリクエスト

ファイルダウンロード 一部コンテンツは

ローカルに保存 クライアント

(Webブラウザ)

(70)

オフラインWebアプリケーション利用時の動作

次回からは、ローカルへ保存したコンテンツを閲覧

オンラインでなくてもコンテンツを閲覧できる

オンラインであってもサーバアクセスが不要

クライアント サーバ

(Webブラウザ)

(71)

メリットとデメリット

メリット

オフライン状態でも

Web

アプリケーションを閲覧させることが可能

(2

回目のアクセス以降

)

ローカルファイルはネットワーク経由のファイ

ルより速く読み込まれる

全ファイルをサーバから取得しないため、サーバ負荷の軽減が可能

デメリット

サーバ側のファイルを更新した場合、ユーザのローカルキャッシュフ ァイルも更新が必要

キャッシュマニフェストの記述を誤った場合、変更ファイルが更新さ れないことがある

(72)

実現のために必要な作業

Web サーバの設定

".manifest"

MIME

タイプを

"text/cache-manifest"

これがないとキャッシュマニフェストファイルが認識されない

キャッシュマニフェストファイルの作成

どのファイルをキャッシュする

/

しないをなどを設定する

書き方は後述

キャッシュ対象 HTML ファイルでの manifest 属性指定

html

要素の

manifest

属性に利用するキャッシュマニフェストファイル のパスを指定

HTML

ファイルのみでよい

(CSS/JavaScript

等は不要

)

Apache

.htaccess

の設定

ファイルを作成し

Web

サーバに 配置

HTML

に追記

(73)

キャッシュマニフェストファイルの記述方法

CACHE MANIFEST

#

先頭文字を

#

で始めることにより、コメントを記述可能

#

本例ではパスをキャッシュマニフェストからの相対パスで記載

#

ここは

CACHE:

セクションと同様 下記は省略可能

CACHE:

#

このセクションにはローカルキャッシュするファイルを記載

index.html

app.js NETWORK:

#

このセクションにはキャッシュしないファイルを記載

submit.cgi

FALLBACK:

#

このセクションには代替ファイルを記載

/ offline.html

SETTINGS:

#

キャッシュの利用方法を設定可能

prefer-online

(74)

通信系 API 概要

( 重要度 :3)

(75)

通信系API

http://html5exam.jp/outline/objectives_lv1_v2.html#l

v1_154

(76)

サーバ間通信(XMLHttpRequest)

サーバ間通信には複数 API が存在

XMLHttpRequest(Level1/Level2)

Web

ブラウザ搭載のスクリプト言語

(JavaScript

)

から呼び出し可能は

HTTP

通信 を提供する

API

Level2

からクロスドメイン間通信が容易に

サーバ クライアントからのリクエスト

レスポンス クライアント

(Webブラウザ)

(77)

サーバ間通信(Server-Sent Events)

Server-Sent Events

Web

サーバからブラウザへのデータプッシュを受信するためのイン タフェース

サーバ

TCP接続

サーバプッシュ クライアント

(Webブラウザ)

(78)

サーバ間通信(WebSocket)

WebSocket

サーバ・クライアント間での双方向通信を容易に

サーバ

TCP接続

双方向通信 クライアント

(Webブラウザ)

(79)

音声・映像通信(WebRTC)

WebRTC

Web

の世界でプラグインなしでリアルタイムコミュニケーションを 実現するための技術

サーバ

TCP接続

音声・映像 クライアント

(Webブラウザ)

(80)

最後に : 学習の進め方

(81)

学習の進め方

実際に試してみよう

JSFiddle

JS Bin

ならブラウザから書いてすぐ確認できる

特に

CSS

は動かして確認することで理解が深まる

仕様書を見よう

CSS

のプロパティなどはそうするのが確実

全部を見る必要はありません

暗記も必要

合格ラインは

70%

であることも考慮して効率的に

受験中にあせらない心構えを

70%

なので少々わからなくても平気

(82)

役に立つ情報源など

Mozilla Developers Network MDN )の Web technology for developers

https://developer.mozilla.org/ja/docs/Web

ここから

HTML

CSS

の技術情報が見られる

かなり日本語化されています

W3C CSS プロパティ一覧

http://www.w3.org/Style/CSS/all-properties

プロパティに関連する仕様とその標準化進行状況がわかる

資格関連情報

公式サイト

http://www.html5exam.jp/

(83)

ふりかえり: 本日お話したこと

試験について

試験概要

試験範囲

試験範囲のポイント解説

Web

の基礎知識

CSS

要素

レスポンシブ

Web

デザイン

API

の基礎知識

学習の進め方

(84)

おまけ

(85)

ベンダプレフィックス

CSS

で標準化の進む機能がブラウザで先行実装された場合、プロパティや 値の先頭にベンダプレフィックスと呼ばれる特定の接頭語を付ける必要が ある

例えば、

Firefox

のベンダプレフィックスは以下

どのようなベンダプレフィックスがあるかはベンダ固有の話なので、試験にはで ないと思われます

現状は次のようになっている

Mozilla

Google

は今後ベンダプレフィックスをつけないと表明

ベンダプレフィックスは標準化がある程度進むと外すことが推奨

ただ昔のブラウザを対象にすることはある

現状はベンダプレフィックスあり

/

なしを併記しておくのがよいでしょう

-moz-

プロパティ

A:

;

(86)

ブラウザでの対応状況調査方法

各ブラウザにおける要素や

CSS

機能の対応状況、ベンダプレフィック スの有無などは頻繁に変更される

自分で調べているとつらい

caniuse

で調査するとよい

http://caniuse.com/

使い方は検索フォームで使いたい機能を検索するか、一覧から選択

ぱっと調べるには非常に便利です

試験には出ません

(87)

Open the Future with HTML5.

ご清聴ありがとうございました。

■お問い合わせ■

NTTテクノクロス ソフト道場

URL:https://www.ntt-tx.co.jp/products/soft_dojyo/

e-Mail:[email protected]

(88)

2019/11/02 開催

デモ用資料

(89)

フレームワーク類の紹介[1/3]

BootStrap

フロントエンド

Web

アプリケーションフレームワーク

(90)

フレームワーク類の紹介[2/3]

Ionic/Cordova

ハイブリッド開発フレームワーク

(91)

フレームワーク類の紹介[3/3]

Chart.js/D3.js

グラフ描画

/

動的コンテンツ系の

JS

ライブラリ

(92)

フロントエンドエンジニア

フロントエンドエンジニアの単金は安い?

ただ物を作るだけでは安くなりがち

どうすれば?

フロントエンドの知識だけでなく、関連するテクニカル領域のスキルも重

LinuxOS/DB/

クラウド

(

プラットフォーム

)/

セキュリティ

/

フレームワーク

/etc

(93)

2019/11/02 開催

デモ用ソース

(94)

スライド28 CSS カスケード

<!DOCTYPE html>

<html lang="ja">

<head>

<meta charset="UTF-8">

<link href="./css/cascade.css" rel="stylesheet">

<title>CSS Cascade</title>

</head>

<body>

<h1 style="color:red;">AAAAAAAAAA</h1>

<h1 id="B">BBBBBBBBBB</h1>

<h1 class="C">CCCCCCCCCC</h1>

<h2>DDDDDDDDDD</h2>

</body>

</html>

HTML

/* IDセレクタ */

#B { color: blue; }

/* クラスセレクタ */

.C { color: green; }

/* 擬似クラス */

.C:hover { color: black; }

/* 要素セレクタ */

h2 { color: purple; }

/* 疑似要素 */

h2::after { content: "AFTER"; color: pink;}

CSS

画面

(95)

スライド31 CSS Box

<!DOCTYPE html>

<html lang="ja">

<head>

<meta charset="UTF-8">

<link href="./css/box.css" rel="stylesheet">

<title>Box</title>

</head>

<body>

<h1 class="box-content">コンテンツ</h1>

<h1 class="border-radius">RADIUS</h1>

<h1 class="linear-gradient">GRADIENT</h1>

<h1 class="box-shadow">SHADOW</h1>

</body>

</html>

HTML

/* margin */

.box-content {

border: 1rem solid;

margin: 10rem;

background-color: brown;

}

/* padding */

.box-content:hover { padding: 3rem;

}

.border-radius { border: 1rem solid;

border-radius: 2em;

}

.linear-gradient {

background: linear-gradient(white, black);

}

.box-shadow {

box-shadow: 1rem 1rem 1rem rgba(0,0,0,0.4);

}

CSS

画面

(96)

スライド33 CSS セレクタ

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport"

content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible"

content="ie=edge">

<link rel="stylesheet" href="./css/selector.css">

<title>Selector</title>

</head>

<body>

<h1 custome-attr="1st">1st</h1>

<h1 custome-attr="2nd">2nd</h1>

<h1 custome-attr="3rd">3rd</h1>

<h1 custome-attr="4th">4th</h1>

<h1 custome-attr="5th">5th</h1>

</body>

</html>

HTML

/* 先頭 */

h1[custome-attr^="1"] { color: red; } /* 末尾 */

h1[custome-attr$="th"] { color: green; }

/* 兄弟 (2ndより後方のh1)*/

h1[custome-attr="2nd"] ~ h1{ font-style:

italic; } /*

奇数行

*/

h1:nth-child(odd) {

background-color: purple;

color: white;

opacity: 0.5;

}

CSS

画面

(97)

スライド35 CSS アニメーション

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<link rel="stylesheet"

href="./css/animation.css">

<title>Document</title>

</head>

<body>

<div class="box rotate"></div>

<hr>

<div class="box scale"></div>

<hr>

<div class="box skew"></div>

</body>

</html>

HTML

.box {

margin: 4rem;

width:40px;

height:40px;

background:red;

}

.rotate {animation: rotate 4s infinite; }

@keyframes rotate {

0% { transform:rotate(0);animation-timing-function:linear; } 100% { transform:rotate(360deg); }

}

.scale { animation: scale 4s infinite; }

@keyframes scale {

0%, 100% { transform:scale(2, 0.5); } 50% { transform:scale(0.5, 2); }

}

.skew {animation: skew 4s infinite; }

@keyframes skew {

0%, 100% { transform:skewX(-45deg); } 50% { transform:skewX(+45deg); } }

CSS

画面

(98)

スライド47 CSS canvas[1/2]

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

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

<meta http-equiv="X-UA-Compatible"

content="ie=edge">

<link rel="stylesheet" href="./css/canvas.css">

<title>Canvas</title>

</head>

<body>

<canvas id="canvas" class="canvas-field"

width="400px" height="400px"></canvas>

<br>

<button onclick="drawCircle();">〇</button>

<button onclick="drawSquare();">

</button>

<button onclick="doClear();">C</button>

</body>

<script src="./js/canvas.js"></script>

</html>

HTML

.canvas-field {

border: solid 1rem;

}

button {

height :4rem;

width: 4rem;

font-size:2rem;

}

CSS

(99)

スライド47 CSS canvas[2/2]

JavaScript

画面

var canvas = null;

var ctx = null;

window.onload = function() {

canvas = document.getElementById("canvas");

ctx = canvas.getContext("2d");

}

function drawCircle() { ctx.beginPath();

ctx.arc(200, 200, 100, 0, 2 * Math.PI, false);

ctx.stroke();

}

function drawSquare() { ctx.beginPath();

ctx.moveTo(150, 150);

ctx.lineTo(150, 250);

ctx.lineTo(250, 250);

ctx.lineTo(250, 150);

ctx.lineTo(150, 150);

ctx.stroke();

}

function doClear() {

ctx.clearRect(0, 0, canvas.width, canvas.height);

(100)

スライド54 MediaQuery

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<link rel="stylesheet" href="./css/mediaquery.css">

<title>MediaQuery</title>

</head>

<body>

<h1>MediaQuery</h1>

</body>

</html>

HTML

@media screen and (max-width:768px) { h1 { color:green; }

}

@media screen and (min-width:768px) and ( max-width:1024px) { h1 { color:red; }

}

@media screen and (min-width:1024px) { h1 { color:blue; }

}

CSS

画面

Referensi

Dokumen terkait

■資格体系の変更点 ・「ビジビリティ」を「グラフィックス」に変更しました。 ・「オフライン Web アプリケーション」を「通信・デバイスアクセス系 API」に変更しました。 レベル 1 では、HTML5、CSS、レスポンシブ Web デザインなどの基礎的なマークアップ技術を対象範囲にしています。 レベル 2 では、レベル 1

録後初の平成25年の登山者数は31万人で過去5年と変わらなかった。登山者が増加した要因として挙 げられるのは、山小屋、トイレの環境水準の上昇である。それに伴って、ツアーや外国人の登山者が急 増したとみられる。また、近年の健康ブームに便乗して、30~40歳の中高年の登山者も増えているとい う。 3.登山者の増加に伴う問題に対する改善案