84
Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク Web アプリ クライアントサイド開発 まつ本 真佑 佐伯 幸郎 中村 匡秀 神戸大学

CloudSpiral 2013年度 Webアプリ講義

Embed Size (px)

Citation preview

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

Webアプリクライアントサイド開発

まつ本 真佑

佐伯 幸郎

中村 匡秀

神戸大学

柗本 真佑

シュノーケリング

メタル・ロック

プログラミング

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 2

On-demand self-service いつでも好きなときに資源を利用可能

Broad network access ネットワークを通じて多様なクライアントから利用可能

Resource pooling 需要に応じた動的な計算資源の割り当て

Rapid elasticity 迅速なスケールアウト・スケールイン

Measured service 測定可能なサービス

クラウドの定義 (by NIST)http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 3

Broad network access

Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs)

http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 4

システムの機能 ネットワークを通じて利用可能

標準的なメカニズム(?)でアクセスできる

Thin/Thick問わず様々なクライアントから利用できる

Broad network access

Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs)

http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 5

スタンドアローン

メモ帳/マインスイーパ/…

動作プラットフォームが限定的

Windows/Macアプリ

Android/iPhoneアプリ

通信プロトコルが非「標準的」

Skype …

BNAを満たさないシステムの例

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 6

Webアプリがデファクト (=標準的なメカニズム)

Webアプリのアーキテクチャ クライアントサイド

サーバサイド

BNAを満たすシステムとは?

動作環境:ブラウザ

動作環境:anyApache+Perl+CGITomcat+Java+DWR…

プロトコル :HTTP通信データ :HTML/CSS/JavaScript

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 7

非クラウド型 (Thunderbird/Outlook)

クラウド型 (gmail)

メールアプリの例

SMTP/POPネイティブアプリ

メールサーバ

Webサーバ

メールサーバ

SMTP/POPブラウザ

HTML

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 8

「研究会への投稿&発表」

開発環境 : Cloud9 IDE/Eclipse Orion

発表申し込み・投稿 : Easychair

原稿執筆・コンパイル : Google Drive + Latexlab

スライド作成・発表 : Google Drive

音楽・動画 : Amazon MP3/Youtube

Webアプリが可能にすること

!

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 9

Webアプリが可能にすること

アプリ/データ計算資源(CPU/HDD…)

どこからでも

何からでも

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 10

Webアプリが可能にすること

どこからでも

何からでも

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 11

様々なデバイスへの対応が必須 特にモバイル端末,ウィンドウサイズが定まらない

様々なブラウザ

デザインの考慮

ユーザビリティ 使いやすさ,見やすさ

アクセシビリティ どんな人でも利用可能か?

技術進歩の嵐

クライアントサイド開発の難しさ

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 12

クラウド時代のソフトウェア=Webアプリをどのような技術を使って,どう開発するか

クライアントサイド開発あれこれ

今日やること

HTML5セマンティクス 演習A

Geolocation API 演習B

WebSocket 演習C

CSS3レスポンシブWebデザイン

Bootstrap 演習D

デザインデザインの基本4原則

ユニバーサルデザイン

総合演習tinychat

HTML5セマンティクス 演習A

Geolocation API 演習B

WebSocket 演習C

CSS3レスポンシブWebデザイン

Bootstrap 演習D

デザインデザインの基本4原則

ユニバーサルデザイン

総合演習tinychat

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 15

<html><head><title>CloudSpiral</title>

</head>

<body><h1>CloudSpiral</h1><a href="about.html">about</a><a href="news.html">news</a>

</body></html>

構造化された文章を記述するマークアップ言語

W3C (World Wide Web Consortium) 策定

他のドキュメントへのハイパーリンク

HTML

aboutnews

CloudSpiralブラウザでレンダリング

ハイパーリンク

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 16

ティム・バーナーズ=リーがWWWを考案

HTTP/HTML/URLを開発

「構造化文章の整理」が目的

HTMLの能力

「文章の構造化」と「ハイパーリンク」

HTML歴史 1989年

http://en.wikipedia.org/wiki/Tim_Berners-Lee

1990 1995 2000 2005

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 17

HTML2が勧告される

「画像」 利用への要求

CSS1が勧告

「装飾」 したいという要求

NetscapeがJavaScriptを開発

「処理」 したいという要求

HTML歴史 1995-1996

aboutnews

aboutnews

CloudSpiral

CloudSpiral

1990 1995 2000 2005

▼…

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 18

HTML4.01が勧告

しばらくWebのデファクトに

構造化文章はHTML・装飾はCSS

以降Webの激的な変化

HTML歴史 1999

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

1990 1995 2000 2005

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 19

W3C

XHTML1.0を推進

「XML遵守」という思想

WHATWG

ブラウザベンダ (Apple/Mozilla/Opera) が設立

Web Applications1.0を推進

「Webアプリ構築」という思想

HTML歴史 1999以降

<br> → <br /><HEAD> → <head>

1990 1995 2000 2005

▼…………………

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 20

「マルチメディア」への要求が拡大

→ ブラウザプラグインとして実現 Flash(Adobe)/Silverlight(MS)/アプレット …

「オープンなWeb」という思想との齟齬

「Webアプリ機能」への要求

位置情報の取得やローカルデータベースなど Google Gears

HTML歴史 2000年代

1990 1995 2000 2005

▼…………………………

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 21

HTML5 ドラフト策定 (2014に正式勧告予定)

Web Applications1.0が前身 (XHTML2.0は打ち切り)

「マルチメディア」と「Webアプリ機能」をサポート Flash/Silverlight

後方互換性の保証 HTML1~4(strict/transitional/frameset) XHTML1.x(strict…)

“Living Standard” ブラウザベンダやデザイナのフィードバックを受けて継続的に仕様を更新

HTML歴史 2008年

1990 1995 2000 2005

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 22

HTML DTD 利用率の変化

XHTMLtransitional

HTML5

HTML4.01transitional

2010/10 2013/08

HTML4.01transitional

HTML5

XHTMLtransitional

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 23

文章の構造表現の強化 セマンティクス

マルチメディア機能の強化 audio/video/Canvas

より高度なAPIの追加 Geolocation/WebSocket/Web Storage/Web Workers/クロスドキュメン

トメッセージング/オフラインアプリケーション/アプリケーションキャッシュ/ドラッグ&ドロップ/ファイルAPI/バッテリーAPI/…

HTML5の拡張ポイント

ブラウザ ≠ 文章の閲覧ツールブラウザ = アプリケーションプラットフォーム

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 24

HTML5 Webcam Toy (カメラ)http://webcamtoy.com/

CSS 3.0 Maker (CSSジェネレータ)http://www.css3maker.com/

Clipping Magic (画像処理)http://clippingmagic.com/

Tear-able Cloth - CodePen (布シミュレータ)http://codepen.io/stuffit/pen/KrAwx/

HTML5で作成されたWebアプリ

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 25

HTML5の対応状況は各種ブラウザによって様々

HTML5はJavaScriptの利用が前提

将来どうなるかは誰にもわからない

Flashも健在

Web2.0 is dead. HTML5は? クラウドは?

注意点

HTML5セマンティクス 演習A

Geolocation API 演習B

WebSocket 演習C

CSS3レスポンシブWebデザイン

Bootstrap 演習D

デザインデザインの基本4原則

ユニバーサルデザイン

総合演習tinychat

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 27

ネット上の情報に「意味=セマンティクス」を付与することで,より便利なWebを実現する考え

セマンティックWeb

文字意味

文字意味

文字 文字

現在のWeb セマンティックWeb

文字 文字文字意味

文字意味

文字意味

文字

文字による検索 文字 + 意味による検索

k3万円以下の良いタブレットは?

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 28

ページ全体の構造の意味付けが標準化

HTML5のセマンティクス例1

<div>

<div> <div>

<div>

~HTML4・XHTML1.0

<header>

<nav> <article>

<footer>

HTML5

<header>

<nav><article>

<footer>k

フッタに[email protected]が含まれるページは?

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 29

inputフォームの意味が拡張

HTML5のセマンティクス例2

~HTML4・XHTML1.0 HTML5名前: <input type="text">年齢: <input type="text">メール:<input type="text">誕生日:<input type="text"><input type="submit" value="登録">

名前: <input type="text">年齢: <input type="number">メール:<input type="email">誕生日:<input type="date"><input type="submit" value="登録">

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 30

inputフォームに適切な意味付けをすることで,ブラウザがその意味にあった処理をしてくれる

使いやすい入力フィールド,入力チェックなど 従来はJavaScriptやライブラリでごりごり実装

セマンティックWebのメリットの一つ

HTML5は意味の使い方を定義しているだけ

ブラウザが賢く処理している

開発者は適切に意味をつけるだけでよい

意味付けのメリット

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 31

利用可能なinput type属性

search 検索テキスト

date 日付

month 月

week 週

time 時間

datetime UTCの日時

HTML5で追加

text 1行テキスト

password パスワード

submit 登録ボタン

tel 電話番号

url URL

email メールアドレス

number 数値

range 数値のレンジ

color 色

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 32

inputフォームが列挙された input.html を作成し,ブラウザで動作を確認しなさい

ワークスペースは trial でよい

HTML5ファイルのテンプレート (コピペ推奨) http://git.io/cspiral2013 から

html5-template.html を開く

演習A1

<form><input type="text"><input type="tel"><input type="submit" value="登録">

</form>

全input要素はform要素で囲うこと

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 33

A2:required属性をつけてsubmitを試しなさい

A3:placeholder属性をつけて見やすくしなさい

演習A2~A3 (オプショナル)

<input type="text" required><input type="email" required><input type="tel">

<input type="text" placeholder="お名前" required><input type="email" placeholder="メールアドレス" required><input type="tel" placeholder="電話番号">

required: 必須入力項目であることを示す

placeholder: 入力時のユーザへのヒントを表すテキスト

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 34

ユーザの現在地情報を取得するAPI

WiFi/携帯基地局/GPS/IPアドレスなどから算出

JavaScriptから呼び出す

モバイルアプリとの相性が良い

プライバシーの問題もあるのでオプトイン型

ユーザの許可が必須

Geolocation API

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 35

JavaScriptからの座標の取得方法$(function(){if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(

show_location, show_error);} else {alert('not supported');

};});

function show_location(position) {var lat = position.coords.latitude;var lon = position.coords.longitude;$('#latlon').val(lat + ' ' + lon);

}

function show_error(error) {:

1234567891011121314151617

▼ geolocation API対応のブラウザか調べる

▲座標を取得する

-成功したら show_location 関数を呼ぶ-失敗したら show_error 関数を呼ぶ

▲取得した緯度と経度を <input id="latlon"> に書込む

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 36

座標を取得する geolocation.html を作成しなさい

ソースは以下より取得 (コピペ推奨) http://git.io/cspiral2013 より2つのファイルが必要

geolocation.html

js/geolocation.js

ワークスペース上のフォルダ構成も上記と同じようにすること

演習 B1

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 37

現在地のGoogle Mapsを表示する geomap.html を作成しなさい

演習 B2 (オプショナル)

<script src="//maps.google.com/maps/api/js?v=3&sensor=false"></script>

Google Maps APIの読み込み (HTML)

緯度35:経度135の地図を表示 (JS)function show_map(position) {var latlng = new google.maps.LatLng(35, 135);var opts = {zoom: 6, center: latlng};map = new google.maps.Map(document.getElementById('map'), opts);

}

<div id="map" style="width:400px; height:400px"></div>地図表示領域の作成 (HTML)

HTML5セマンティクス 演習A

Geolocation API 演習B

WebSocket 演習C

CSS3レスポンシブWebデザイン

Bootstrap 演習D

デザインデザインの基本4原則

ユニバーサルデザイン

総合演習tinychat

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 39

HTTPによるブラウザ・サーバ間双方向通信技術

そもそもHTTPはクライアントからのPULL型 クライアント 「データよこせ」 サーバ 「はいよ」

サーバ側からのPUSH通信可能 サーバ 「データ送るわ」 クライアント 「OK」

リアルタイムなWebアプリが可能に

ゲーム/チャット/監視システム…

WebSocket

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 40

一般的なHTTP通信

Ajax

比較 HTTP & Ajax

リクエスト後即時応等PULL型

リクエスト後即時応答PULL型非同期での通信ブラウザの更新が不要EventSpiral

サーバのイベント発生

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 41

Comet

WebSocket

比較 Comet & WebSocket

リクエスト後に応答を保留必要なタイミングで応答疑似PUSH型通信実はPULL型

一度サーバと接続確立必要なタイミングでサーバ

から通信PUSH型効率的な双方向通信

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 42

JavaScriptでWebSocketを使うws = new WebSocket('ws://133.30.159.3:8080/...');

ws.onopen = function() {//接続成功時の処理

}

ws.onmessage = function(message) {...

}

ws.onerror = function() {//接続エラー発生時の処理

}

ws.onclose = function() {//切断時の処理

}

123456789101112131415

▲ 接続先サーバアドレスを指定してWebSocketオブジェクトを生成する

サーバからのPUSHメッセージを取得した場合の処理を定義する▲

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 43

WebSocketを利用した簡単なチャットWebアプリ

サーバサイドシステム は神戸大に設置

グループごとにサーブレット(受け口)を用意

tinychat

hellotinychat

神大サーバ

tinychat01

クライアント

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 44

WebSocketを利用した簡単なチャットWebアプリ

サーバサイドシステム は神戸大に設置

グループごとにサーブレット(受け口)を用意

tinychat

tinychat01hello

tinychat

hello hello

神大サーバクライアント

tinychat02

tinychat03

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 45

Tinychat のひな形ワークスペースのクローンを作成しなさい

別紙 「Cloud9 IDEの使い方.pdf」 を参照

クローンするリポジトリのURL https://github.com/shinsuke-mat/tinychat

演習C1

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 46

グループ内でチャット可能なように修正しなさい

各班のtinychatサーブレットへの接続先

演習C2

1班: ws://133.30.159.3:8080/tinychat01/send

2班: ws://133.30.159.3:8080/tinychat02/send

3班: ws://133.30.159.3:8080/tinychat03/send

4班: ws://133.30.159.3:8080/tinychat04/send

5班: ws://133.30.159.3:8080/tinychat05/send

6班: ws://133.30.159.3:8080/tinychat06/send

7班: ws://133.30.159.3:8080/tinychat07/send

8班: ws://133.30.159.3:8080/tinychat08/send

9班: ws://133.30.159.3:8080/tinychat09/send

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 47

ブラウザを閉じた際に "bye" というメッセージを送信するように修正しなさい

動作確認の際には複数タブを立ち上げればよい

演習C3 (オプショナル)

HTML5セマンティクス 演習A

Geolocation API 演習B

WebSocket 演習C

CSS3レスポンシブWebデザイン

Bootstrap 演習D

デザインデザインの基本4原則

ユニバーサルデザイン

総合演習tinychat

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 49

CSS: HTML文章を「装飾」するための記述

CSS3で装飾能力が大幅に強化された

グラデーション/変形/アニメーション/Webフォント…

CSS 3.0 Markerhttp://www.css3maker.com/

CSS3

.element {background: orange;border: solid 1px #666;

}

1234

▼ セレクタ: 「class=“element”」 の全要素に対して…

このスタイルを適用する▲

<div class="element">...</div>1

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 50

画面サイズに合わせて自動的にレイアウトを調整

マルチデバイス対応策の一つ

レスポンシブWebデザイン

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 51

NTT Datahttp://www.nttdata.com/

CAAAAAAAAAAThttp://roxik.com/cat

AWWWARDShttp://www.awwwards.com/

CloudSpiralhttp://cloud-spiral.enpit.jp/

百聞は一見に如かず

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 52

CSS3のメディアクエリを使用 (一つのやり方)

レスポンシブの実現方法

.line {width: 100%;border: solid 1px #666;

}

@media screen and (min-width: 200px) {.line {

background: cyan;}

}

@media screen and (min-width: 300px) {.line {

background: magenta;}

}

▼ class="line" に対するデフォルトのスタイル(枠線を書いているだけ)

▼ 幅200px以上

12345678910111213141516

▼ 幅300px以上

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 53

ワンソース・マルチデバイスの思想

利点

運用が楽

未知の端末でも対応可 画面サイズだけで制御するため

欠点

通信量が大きい

メンテナンスが大変

端末ごとの細かい調整ができない

利点・欠点

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 54

Twitter社が開発したCSSフレームワーク

手軽に見栄えをよくできる

レスポンシブWebデザインに対応

HTML要素の class="xxx" の部分に特定の値を指定するとかっこよくなる

Bootstrap v3.0.0を使う

2系列と大幅に変わっているので注意

Bootstrap3http://getbootstrap.com/

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 55

準備 (HTML)<!DOCTYPE html><html lang="ja"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>Bootstrapテンプレート</title><link rel="stylesheet" href="css/bootstrap.min.css"><link rel="stylesheet" href="css/bootstrap-theme.min.css">

</head>

<body>

<script src="//code.jquery.com/jquery.js"></script><script src="js/bootstrap.js"></script>

</body></html>

1234567891011121314151617

▲ Bootstrapのスタイルシート2つをロード

▲ BootstrapのJavaScriptライブラリをロード

<-- この部分を自由に記述する -->

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 56

label要素を試す<body><span class="label label-default">Default</span><span class="label label-primary">Primary</span><span class="label label-success">Success</span><span class="label label-info">Info</span><span class="label label-warning">Warning</span><span class="label label-danger">Danger</span>

12345678 ▲ classに "label" と "label-xxx" を指定する

Bootstrapなし

"label" → 白文字に"label-xxx" → xxxのコンテキストにあった背景色に

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 57

table要素を試す123456789

<body><table class="table table-hover"><tr>

:</tr><tbody>

<tr class="success"><td>shinsuke</td>

▲ table要素のclassに "table" と "table-hover"を指定する

▼ shinsukeの発言だけに "success"を指定する

Bootstrapなし

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 58

CSSの切り替え

公開されているCSSテンプレートを取得し,bootstrap.min.css を上書きするだけ http://bootswatch.com/

他にも

http://bootswatch.com/cyborg/ http://bootswatch.com/flatly/

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 59

演習D1 tinychatのチャットメッセージ領域を,bootstrapのテーブル装飾を

利用して改善しなさい

演習D2 (オプショナル) ステータス領域を改善しなさい

演習D3 (オプショナル) 入力領域を改善しなさい

演習D1~D3

D1

D2

D3

HTML5セマンティクス 演習A

Geolocation API 演習B

WebSocket 演習C

CSS3レスポンシブWebデザイン

Bootstrap 演習D

デザインデザインの基本4原則

ユニバーサルデザイン

総合演習tinychat

http://www.flickr.com/photos/dubblethinkdesign/3579519738/

Vincent van Gogh, The Starry Night, 1889

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 63

デザインは難しい ?

たくさんの考慮が必要

ユーザビリティ/アクセシビリティ/効率/満足度/間違いにくさ/学習しやすさ/…

認知科学の問題

善し悪しの判断が難しい

好みの問題?

そもそもセンスの問題?

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 64

デザイン≠アート

アート 自己表現のための行為

他者に理解される必要はない

デザイン 他者に伝えるための行為

デザインは理論的に解決できる部分がある

「デザインの基本4原則」

「ユニバーサルデザイン」

Good News

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 65

要素を揃えて配置する

見えない糸で揃える

統一感や要素同士の視覚的なつながりを生む

基本4原則: 整列

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 66

関連する要素を近くに配置する

視覚的に構造化する

基本4原則: 近接

cloud1 cloud2

cloud1 cloud2

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 67

近接+整列

Cloud Specialist Program Initiative for Reality-based Advanced Learning

Cloud Spiral

http://cloud-spiral.enpit.jp

TEL: 06-6879-4395

[email protected]

Cloud Specialist Program Initiative for Reality-based Advanced Learning

Cloud Spiral

http://cloud-spiral.enpit.jp

TEL: [email protected]

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 68

全体を通して一貫して似た要素を使う

テンプレートやテーマカラーを決める

統一感を生む+特別な要素を目立たせる

基本4原則: 反復

enPiT-Cloud(分野・地域を越えた実践的情報教育協働ネットワーク・クラウド分野)の 取り組み、Cloud Spiral のWebサイトがオープンしました。Cloud Spiral は、西日本9大学、…

2013/03/11 by masa-n

Cloud SpiralAbout News Event Misc

2013年3月9日~11日の日程で、CloudSpiralの若手教員が集結して合宿形式のFD(Faculty Development)活動を行いました。 今回参加した教員は、阪大,神大,和大,京産…

2013/03/11 by masa-n

どーもー CloudSpiral,講義広報担当のさちをです.早い物でCloudSpiralの講義も3回目を迎えました.1年目ということで,毎回準備にドタバタしていますが,ぼちぼち慣…

2013/09/03 by sachio

enPiT-Cloud(分野・地域を越えた実践的情報教育協働ネットワーク・クラウド分野)の 取り組み、Cloud Spiral のWebサイトがオープンしました。Cloud Spiral は、西日本9大学、…

2013/03/11 by masa-n

Cloud SpiralAbout News Event Misc

2013年3月9日~11日の日程で、CloudSpiralの若手教員が集結して合宿形式のFD(Faculty Development)活動を行いました。 今回参加した教員は、阪大,神大,和大,京産…

2013/03/11 by masa-n

どーもー CloudSpiral,講義広報担当のさちをです.早い物でCloudSpiralの講義も3回目を迎えました.1年目ということで,毎回準備にドタバタしていますが,ぼちぼち慣…

2013/09/03 by sachio

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 69

異なる要素ははっきりと違わせる

強調したい部分に強いコントラストを加える

基本4原則: コントラスト

Cloud Specialist Program Initiative for Reality-based Advanced Learning

http://cloud-spiral.enpit.jp

TEL: 06-6879-4395

[email protected]

Cloud Spiral

どーもー CloudSpiral,講義広報担当のさちをです.早い物でCloudSpiralの講義も3回目を迎えました.1年目ということで,毎回準備にドタバタしていますが,ぼちぼち慣… 2013/09/03 by sachio

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 70

誰でも同じように利用できるデザインのこと 文化/言語/国籍 老若男女 障害/能力の差

アクセシビリティ確保のための考え方

Webサイトでのユニバーサルデザイン (抜粋)

読みやすさの配慮 小さすぎないフォントサイズ/狭すぎない行間

使いやすさの配慮 小さすぎないボタン/混乱しない操作/理解しやすい用語

カラーユニバーサルデザイン

ユニバーサルデザイン

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 71

色覚異常者にも間違いなく情報が伝わるようなデザインのこと

色覚異常の種類

赤~緑の識別が困難 (男性4.5%, 女性0.2%)

青系の識別が困難

全色の識別が困難

カラーユニバーサルデザイン

赤 青緑

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 72

コントラストを確保する

明度差と色差の2つを考える

カラーユニバーサルの考え方1

色差 ×明度差 ×

色差 ×明度差 ○

色差 ○明度差 ×

色差 ○明度差 ○

色差確保

明度差確保

文字の色(■)を固定して明度差と色差を変更

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 73

色だけで情報を伝えない

カラーユニバーサルの考え方2

東京都 都内地下鉄路線図http://www.metro.tokyo.jp/SUB/SUBWAY/

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 74

グラフの見せ方

応用例

A

B

C

D

E

F

G

A

B

C

D

EF GA

B

C

D

E

F

G

黒線によるコントラスト確保

色による凡例の説明を回避

Excelのデフォルト

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 75

シミュレータhttp://colororacle.org/

カラーユニバーサルデザイン推奨配色セットhttp://jfly.iam.u-tokyo.ac.jp/colorset/

コントラストの計算式http://www.w3.org/TR/AERT#color-contrastWCAG

コントラスト計算ツールhttp://snook.ca/technical/colour_contrast/colour.html

デスクトップの色取得http://www.vector.co.jp/soft/win95/art/se350616.html

ツール

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 76

BNAの観点でクラウドの性質を満たすシステム? HTML/CSS/JavaScriptで作られたWebアプリ

HTML5・CSS3で色々できるようになった ブラウザ ≠ 文章閲覧ツール

= アプリケーションプラットフォーム

デザインはアートではない 人に伝えるための方法,軽視すべからず

クライアントサイドの開発も大変 花形ともいえる

まとめ

HTML5セマンティクス 演習A

Geolocation API 演習B

WebSocket 演習C

CSS3レスポンシブWebデザイン

Bootstrap 演習D

デザインデザインの基本4原則

ユニバーサルデザイン

総合演習tinychat

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 78

tinychatのクライアントサイドを改善しなさい

まず改善の方針を決めること

何が問題でどう改善するかを記述すること クライアントサイドでの機能拡張

・ Google Mapsとの連携

デザインの改善・ レスポンシブWebデザイン化,レイアウト・見た目の改善・ ユーザビリティの改善 (入力しやすく,チャットを見やすく)・ アクセシビリティの改善 (色彩設計等)

改善方針とCloud9登録アカウント名を書込むこと http://goo.gl/qZcvZ1

総合演習

分野・地域を越えた実践的情報教育協働ネットワーク

Cloud Specialist Program Initiative for Reality-based Advanced Learning

参考資料

Cloud Specialist Program Initiative for Reality-based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2013 2013/9/3 80

Tinychatサーバサイドのソースコード

@WebServlet(value = { "/send" })public class CMainServlet extends WebSocketServlet {

private static final long serialVersionUID = 6946416208261279049L;private static final Set<ChatMessageInbound> inbounds =

new CopyOnWriteArraySet<ChatMessageInbound>();@Overrideprotected StreamInbound createWebSocketInbound(String subProtocol,

HttpServletRequest request) {return new ChatMessageInbound();

}class ChatMessageInbound extends MessageInbound {

@Overrideprotected void onOpen(WsOutbound outbound) { inbounds.add(this); }@Overrideprotected void onClose(int status) { inbounds.remove(this); }@Overrideprotected void onBinaryMessage(ByteBuffer message) throws IOException {}@Overrideprotected void onTextMessage(CharBuffer buffer) throws IOException {

for (MessageInbound socket : inbounds) {socket.getWsOutbound().writeTextMessage(buffer);buffer.position(0);

}}

123456789

101112131415161718192021222324

That's all!

最古のWebサイト

http://info.cern.ch/hypertext/WWW/TheProject.html

http://info.cern.ch/hypertext/WWW/TheProject.html

とそのソースコード

http://www.flickr.com/photos/dubblethinkdesign/3579519738/

I woke up today and thought about what the worst design would look like. I think I got pretty close with this one.

Craig Keeling

朝起きて最もクソなデザインについて考えてみたんだ.たぶんこんな感じじゃないんかな.