情報システム設計論II ユーザインタフェース(1)

Similar documents
情報システム設計論II ユーザインタフェース(1)

Microsoft PowerPoint - 第03回_JavaScript.ppt [互換モード]

コンテンツメディアプログラミング実習2

JavaScript 演習 2 1

第7回 Javascript入門

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21

JavaScript演習

PowerPoint プレゼンテーション

NetworkApplication-12

情報システム設計論II ユーザインタフェース(1)

情報システム設計論II ユーザインタフェース(1)

Microsoft PowerPoint _2b-DOM.pptx

情報システム設計論II ユーザインタフェース(1)

第7回 Javascript入門

情報システム設計論II ユーザインタフェース(1)

Webデザイン論

教材ドットコムオリジナル教材

PowerPoint プレゼンテーション

JavaScript演習

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

Webプログラミング演習

NetworkApplication-09

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

CMP2-JQuery

医療者のための情報技術入門第 9 回プログラムがはたらくしくみを学ぶ (2) 日紫喜光良 概要 1. はじめに- 具体例から ここから Javascript のプログラミング入門 次はどうする--

SmartBrowser_document_build30_update.pptx

JavaScript プログラミング 4.Web ブラウザのオブジェクト 4-4 window オブジェクト 4-5 location オブジェクトと history オブジェクト 4-6 link オブジェクト 08T4082A 野太樹

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 演習名 使用するフォルダ 演習 1 Z: Web データ管理 演習

JavaScript 1.! DOM Ajax Shelley Powers,, JavaScript David Flanagan, JavaScript 2

Microsoft Word - no06.doc

フォームとインナー HTML を使って動的にページ内の文章を変更しよう 問題 1. つぎの指示と画面を参考に HTML を組みなさい 仕様 テキストボックスに任意の文字を入力し [ コメント ] ボタンをクリックすると 下部の文章がテキストボックスの内容に置き換わる フォーム名 : f1 テキストボ

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Webプログラミング演習

untitled

情報システム設計論II ユーザインタフェース(1)

PowerPoint プレゼンテーション

Web プログラミング 1 JavaScript (4) (4 章 ) 2013/7/17( 水 ) 日時 講義内容 4/10 ( 水 ) ガイダンス Web (1 章 ) 4/17 ( 水 ) HTML+CSS (1) (2 章 ) 4/24 ( 水 ) HTML+CSS (2) (2 章 ) 5

Si 知識情報処理

PowerPoint プレゼンテーション

Webデザイン論

Microsoft PowerPoint - ruby_instruction.ppt

PowerPoint プレゼンテーション

Prog2_12th

SOC Report

目次 更新履歴... 1 ファイル構成... 3 main.js( エクステンションのパネル側 ) の処理... 4 hostscript.jsx の関数の呼び出し... 4 evalscript() のコールバック関数... 5 hostscript.jsx(illustrator 側 ) の処理

1

ページ閲覧を計測する 手順 1: カスタム HTML タグ からタグを設定する まず タグタイプを選択 の画面で カスタム HTML を選択します タグの設定画面が開くので ユーザグラムで発行されたタグを HTML 欄に直接貼り付けてください document.write をサポートする はオフのま

NetworkApplication-11

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード]

サンプル CSS web ページを開くと同時にピエロの玉乗りが動き出すアニメーションを作ってみましょう AnimeAuto の説明 HTML の記述 (AnimeAuto.html) ピエロの画像に pierrot という id を 玉の画像に ball という id を付けておきます <!DOCT

Microsoft Word - PHP演習資料.doc

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

テキストファイルの入出力1

AJAXを使用した高い対話性を誇るポートレットの構築

WEBシステムのセキュリティ技術

paper.pdf

合宿事前講座 Web 開発の基本編その 2 情報研究会モブ 薗田海樹 The. H.30 情報研究会 1

メディプロ1 Javaサーブレット補足資料.ppt

19 ステップで 2 大人気スクリプト言語を学ぶ GUI のあるアプリを作る STEP11 から STEP12 までまとめ 1.Python での GUI アプリ作成 Python は標準ではグラフィックスの機能を持ちませんが ライブラリを使うことで GUI のアプリを作成することができる そこで

Prog2_15th

JavaScript の使い方


PowerPoint プレゼンテーション


第7回 Javascript入門

Microsoft Word - PaLearn_manual_05c.doc

d_appendixB-asp10appdev.indd

brieart変換設定画面マニュアル

JC/400でポップアップウィンドウの制御&活用ノウハウ!

SmallTown 日付オブジェクト 日付オブジェクトを使ってページ内にいろいろな仕掛けをつくってみよう 1. 日付オブジェクトとは JavaScriptではいろいろなオブジェクトを扱えますが 日付オブジェクトもその一つです 手順としては 1 日付オブジェクトを作成する2そのオブジェクトから日にちや

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

情報システム設計論II ユーザインタフェース(1)

C:\Apache Software Foundation\Apache2.2\htdocs\sample\login.html サンプルプログラム passworddisc.php <head><title> ログイン </title></head> $user=$_post['user']; $

Microsoft Word - データ保管サービス操作マニュアル(第二版).docx

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Web データ管理 JavaScript (3) (4 章 ) 2011/12/21( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/18

目次 0. 計測タグ設置の基本 4 このマニュアルについて... 5 計測タグ設置の流れ... 6 必ず確認していただきたいこと 計測タグの種類 8 共通タグ イベントタグ コンバージョンタグ 計測タグの設置方法 16 計測タグを設置する際の

スライド 1

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

触覚マウスライブラリを使った 触覚付き Web ページの作り方 ver 富士ゼロックス株式会社 -1-

Microsoft Word - XOOPS インストールマニュアルv12.doc

Microsoft Word - JavaScript基礎講座Web Speech API.docx

第 1 章 JavaScript/jQuery JavaScript とは JavaScript( ジャバスクリプト ) は HTML や CSS また PHP などでは実現することの難しい さまざまな効果を Web ページ上で実現できるスクリプト言語です 一時期 Web ページ作成に

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

Webプログラミング演習

Microsoft Word - tutorial3-dbreverse.docx

プログラミング入門1

情報システム設計論II ユーザインタフェース(1)

携帯電話でGoogle Mapsを使う

タグの設定方法 手順 1: カスタム HTML タグ からタグを設定する まず タグタイプを選択する際に カスタム HTML を選びます タグの設定画面が開くので HTML 欄にウェブアンテナで発行されたタグを直接貼り付けて保存すれば設定が完了します このとき document.write をサポー

<4D F736F F D A957A A A8FEE95F18F88979D DEC90AC E646F63>

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

PowerPoint プレゼンテーション

1. WebShare(HTML5 版 ) 編 1.1. ログイン / ログアウト ログイン 1 WebShare の URL にアクセスします xxxxx 部分は会社様によって異なります xxxxx 2 ユーザー名 パ

Microsoft PowerPoint - widget.ppt

ページ閲覧を計測する 手順 1: カスタム HTML タグ からタグを設定する まず タグタイプを選択 の画面で カスタム HTML を選択します タグの設定画面が開くので ウェブアンテナで発行されたタグを HTML 欄に直接貼り付けてください このとき document.write をサポートする

JC/400でWebAPI活用 Google Chart APIでグラフを作成しよう!

5回目(JavaScript1)

Microsoft Word - manual

Transcription:

中村研究室ゼミ Web 関係色々 中村聡史 1

Web でユーザの操作を取得 テキスト入力していないのに送信ボタンを押さないで! ユーザが入力する前には入力例を示しておいて, 入力開始しようとしたら消したい! リアルタイムに値を取得して表示したい! ユーザが地図上で操作をしたら, 表示内容を変更したい! 2

基本的に JavaScript はなにかイベントが発生した時に, どうするのかということを記述する言語 もちろんそれだけではありませんが, そういうのに適している言語 3

JavaScript 例えばテキストボックスに文字が入力されるまでや, チェックボックスが入力されるまで送信ボタンを押させたくない 4

JavaScript Netscape Communications が開発した言語 ユーザの操作にあわせて処理を変える <script type="text/javascript"> <!-- document.write( こんにちは!!"); // --> </script> 5

Processing と JavaScript 同じ所 : プログラミング言語なので変数, 計算, 条件分岐, 繰返し, メソッド, クラスなど同じ 12345の約数の数を数えるプログラム int i = 1; int count = 0; while( i <= 12345 ){ if( (12345 % i) == 0 ){ // 12345 を i で割った余りが // 0 だったら count を増やす count++; } i++; } println( " 約数の数は "+count ); 6 <script type="text/javascript"> var i = 1; var count = 0; while( i <= 12345 ){ if( (12345 % i) == 0 ){ // 12345 を i で割った余りが // 0 だったら count を増やす count++; } i++; } alert( " 約数の数は "+count ); </script>

7 JavaScript 超入門 スクリプトタグで囲う 変数の定義は var 変数名 int とか float とかの型はない 行の最後にはセミコロン 関数の定義は function 関数名 ( 引数 ); 引数の定義にはvarは不要 返り値は return で!( 一緒 ) 変数とか文字列をくっつける際は + ifとかforとかwhileとかは一緒

8 もし ~ だったら if( 条件 A ){ 条件 Aのときの動作 } else if( 条件 B ){ 条件 Bのときの動作 } else { どの条件にもあわなかったときの動作 } ---------------------------------------------------------------- 等しい == より大きい > より小さい < など

JavaScript 超入門 JavaScript は単体でも動作するけれど,HTML 内部で何かのユーザ操作が行われた時に, リロードせずにページ上で動作するためのもの クリックされた! じゃあ... 文字入力された! じゃあ... マウスカーソルが上に来た! じゃあ... マウスカーソルがどこかに行った! じゃあ... などなど 9

alert( ' ほげほげ ' ); ほげほげと表示 JavaScript 超入門 onclick: クリックされた時に発生 <input type=button onclick="alert(' こんにちは ');"> onfocus: フォーカスがあったときに発生 onblur: フォーカスが離れた時点で発生 10

11 関数を呼び出す <script type="text/javascript"> function kansu() { } </script> alert("ok! "); --------------------------------------------------------------------- <input type="button" value= OK" onclick="kansu()"> OK ボタンが押された時に kansu() が呼ばれる

重要なこと : DOM ツリー DOM とは Document Object Model HTML や XML をアプリケーションから利用するための API のこと HTML や XML の任意のタグの情報を取得したり, 差し替えたりすることができる DOM ツリーとは,HTML や XML の木構造情報 木構造の情報 12

DOM の情報を取得する ほげほげ と表示されている. この ほげほげ をクリックすると, ひげひげ という文字に変更したい!(onclick はクリックされた時という意味 ) 13 <script type="text/javascript"> function change(){ var node = document.getelementbyid("hoge"); node.innerhtml = " ひげひげ "; } </script> <div id="hoge" onclick="change()"> ほげほげ </div>

14 ツリー情報へのアクセス document.???? document は HTML や XML の文書自体 document.getelementbyid("hoge"); document から,id が hoge の Element( 要素 :DOM ツリーのノード ) を取得 var node = document.getelementbyid("hoge"); 変数 node に取得した Element( ツリーのノード ) を代入 node.innerhtml = ' ひげひげ '; node の内部 HTML を ひげひげ に変更 node.style.backgroundcolor = '#f00'; 背景を赤色に設定する

15 DOM の情報を取得する 他の実装方法 引数として this( 自分自身 ) を渡す ここで this はそのタグ ( ノード ) 自体になるので node.innerhtml = " ひげひげ "; とできる <script type="text/javascript"> function change( node ){ node.innerhtml = " ひげひげ "; } </script> <div id="hoge" onclick="change( this )"> ほげほげ </div>

演習 テキスト入力ボックスと送信ボタンを用意し, 入力ボックスに focus が入った時, 外れた時に入力内容をチェックして何も入力されていなければ送信ボックスを押せないような状態にし, 何か入力されていたら送信ボックスを押せるようにせよ! また, 入力ボックスに nakamura と入力されていたら, 送信ボックスのボタンを イイネ と変更するようにせよ 16

手順 フォームタグやテキストボックス, 送信ボックスを用意し, それぞれに ID を付与する 送信ボックスを最初利用不可にする disabled テキストボックスのフォーカス / アンフォーカスの時に, 何か入力されていたら送信ボックスの disabled を false にし, 何も入力されていなかったら disabled を true に設定する テキストボックスのフォーカス / アンフォーカスは onblur や onfocus で取得できるので, テキストボックス内で onblur, onfocus 時の処理を書く! 17

JavaScript は別ファイルへ HTML と JavaScript が混在しているとぐちゃぐちゃになってしまう (PHP と JavaScript が混在すると恐ろしいことに ) 可能な限り JavaScript ファイルは別ファイルへ main.js などに保存し script タグで呼び出し <script src="main.js"></script> 18

おまけ ( ランダムな占い ) <script language="javascript"> uranai = new Array( " 大吉 ", " 大凶 ", " 小吉 " ); uranainum = 3; num = Math.floor(Math.random()*uranaiNum); document.write(uranai[num]); </script> 19

JavaScript の開発 Google Chrome を使おう! ツールのデベロッパーツールを利用する! エラーが赤文字で表示される! 20

Ajax: Rich User Experiences Web 上での豊かな体験 (Ajax などによる ) http://maps.google.com/ 21 http://mail.google.com/

Ajax のインパクト サーバとやり取りしながら動的に変化 22 Fuyuko Ito

これまでと Ajax 以降 23 Fuyuko Ito

Ajax Asynchronous JavaScript + XML XMLHttpRequest という JavaScript のクラスを利用 動的にページを変更することが出来るため, ストレス無くユーザは使うことが出来るように! 開発がチト面倒 24

JavaScript めんどい そもそも JavaScript は色々と面倒くさい もっと楽したい アプリケーションフレームワーク! 25

アプリケーションフレームワーク Prototype.js jquery Google Web Toolkit などなど 26

jquery を導入しよう http://jquery.com/ にアクセスして最新版のファイルをダウンロード public_html に直接おいても良いが, できれば機能で整理した方が良いため, 新たに lib というフォルダ ( 他のフォルダ名でも良い ) を作成し, そこに入れたほうが良い lib はライブラリの意味 <script src="lib/jquery-2.1.1.min.js"></script> 27

jquery + main.js + HTML <html> <head> <script src="lib/jquery-2.1.1.min.js"></script> <script src="main.js"></script> </head> <body> <div id="hoge" class="text"> ほげほげ </div> <form action="test.html" method="get" id="input_form"> <input type=text name="msg" id="msgbox"> <input type=submit name="send" id="sendbutton" disabled> </form> </body> </html> 28

main.js というファイルを作成 main.js というファイルの中に下記のプログラムを書いてみよう $(function(){ プログラム }); で jquery に関するプログラムを書く ( そういうものだと思って下さい ) $('# クラス名 ').on( ' イベント名 ', function(){ イベント時の処理 }); 29 $(function(){ $('#hoge').on('click', function(){ $('#hoge').css('background','#f00'); }); }); クリックされた時に色を変更する

main.js というファイルを作成 以下だけだとちゃんと動作しない $('#hoge').on('click', function(){ $('#hoge').css('background','#f00'); }); コードが読み込まれた時点では,id=hoge の div タグを読み込んでいないため $(function(){ プログラム }); は, とりあえずコードを全部読み込んでから ~ という意味になる 30

Element(Node) の指定方法 element を選択するには id : $("#idname") class : $(".classname") tag : $("tagname") name: $("[name=target]") 31

32 イベント一覧 mouseover: 要素にマウスが乗った時 mouseout: 要素からマウスが離れた時 mousedown: 要素上でクリックボタンが押された時 mouseup: 要素上でクリックボタンが離れた時 mousemove: 要素上でマウスが動かされた時 click: 要素がクリックされた時 dblclick: 要素がダブルクリックされた時 keydown: 要素にフォーカスした状態で, キーボードのキーが押された時 keyup: 要素にフォーカスした状態で, キーボードのキーが離された時 focus: 要素にフォーカスがあたった時 blur: 要素からフォーカスが外れた時 change: 入力内容が変更された時 resize: 要素がリサイズされた時 scroll: 要素がスクロールされた時

Element(Node) の操作 $( 指定 ). css( ' プロパティ名 ', ' 変更後の値 ' ); スタイルシートを変更する $( 指定 ). attr( ' 属性名 ', ' 変更後の値 ' ); 属性値を変更する $( 指定 ). on( ' イベント名 ', その時の動作 ); その時の動作は function(){... } で書かれる $( 指定 ). animate( アニメーションの指定 ); アニメーションの指定では最初に {} で CSS の内容を指定し, カンマでミリ秒を指定する 33

main.js を編集 $(function(){ $('#hoge').on('click', function(){ $('#hoge').css('background','#f00'); }); $('#msgbox').on('keyup', function(){ if( $('#msgbox').val() == ""){ $("#sendbutton").attr("disabled", "disabled"); } else { $('#sendbutton').removeattr("disabled"); if( $('#msgbox').val() == 'nakamura' ){ $('#sendbutton').attr( 'value', " いいね " ); } } }); }); 34

name や class でも指定できるよ $(function(){ $('.text').on('click', function(){ $('.text').css('background','#f00'); }); $('[name=msg]').on('keyup', function(){ if( $('[name=msg]').val() == ""){ $("[name=send]").attr("disabled", "disabled"); } else { $('[name=send]').removeattr("disabled"); if( $('[name=msg]').val() == 'nakamura' ){ $(' [name=send]').attr( 'value', " いいね " ); } } }); }); 35

アニメーションさせてみよう クリックされたらほげほげという文字を大きくしてみる! $(function(){ $('#hoge').on('click', function(){ $('#hoge').animate( { color: '#f00', fontsize: '100px' }, 1500 ); }); }); 36

もう一つアニメーション $(function(){ $('#msgbox').on('keyup', function(){ if( $('#msgbox').val() == ""){ $("#sendbutton").attr("disabled", "disabled"); } else { $('#sendbutton').removeattr("disabled"); if( $('#msgbox').val() == 'nakamura' ){ $('#sendbutton').attr( 'value', " いいね " ); $('#sendbutton').animate( { opacity: 0, fontsize: '0px' }, 3000 ); } } }); }); 37

jquery で WebAPI から情報取得 38 ボタンを押されたらウェブから情報を取得して表示してみよう! $.ajax を利用することで Web から情報取得 $.ajax({ url: ' 取得する Web API の URL', type: 'get か post', datatype: 'xml か json', timeout: タイムアウトするまでのミリ秒, success: 成功した時にどうするか? });

jquery で WebAPI から情報取得 39 ボタンを押されたらウェブから情報を取得して表示してみよう! $(function(){ $("#send").on("click",function(){ $.ajax({ url:'http://webapi.suntory.co.jp/barnavi/v2/shops?key=95315b1507e3a1ee6 15bebdf97fb73f7121b41d9b504011e7570e282dc4389c3&pattern=0&pref=13&a ddress= 中野区 &url=http://nkmr.io/', type:'get', datatype:'xml', timeout:1000, success:parse_xml }); } });

parse_xml と show_result function parse_xml(xml,status){ $(xml).find('shop').each( show_result ); } function show_result(){ // 各要素を変数に格納 this は each で var $name = $(this).find('name').text(); 見つかった shop var $address = $(this).find('address').text(); //HTMLを生成 $('<p>'+$name+'<br>'+ $address+'</p>').appendto('#hoge'); } 40.text() で内容取得 find はノードを探すためのメソッド each は 1 つずつという意味取得結果を 1 つずつ処理.appendTo() で埋め込み

jquery で WebAPI から情報取得 $.ajax で目標とする XML や JSON を取得 取得し終わったら, 指定のメソッド A へジャンプ 指定のメソッド A で取得した XML のノードを,find で指定し each で順次取得 each で取得された結果を指定メソッド B へ 指定のメソッド B で取得したノードから, 目的とするノードを find で指定し値を取得 取得した結果を appendto で Web ページに挿入 41

何にせよ jquery 色々使ってみてください 42

jquery + Google Maps gmaps.js をダウンロードして lib にでも放り込む http://hpneo.github.io/gmaps/ <script src="lib/jquery-2.1.1.min.js"></script> <script src="http://maps.google.com/maps/api/js?sensor=false"></script> <script src="lib/gmaps.js"></script> <script src="main.js"></script> 地図用の HTML 要素を用意 ( サイズは適当 ) <div id="map" style="width:400px;height:300px"></div> 43

jquery + Google Maps main.js に下記のコードを書いてみましょう! $(document).ready(function(){ map = new GMaps({ div: '#map', zoom: 15, lat: 35.7066, lng: 139.6633, }); }); 44 http://taklog.info/2013/07/26/googlemaps/

地図上にパスも描けるよ! $(document).ready(function(){ map = new GMaps({ div: '#map', zoom: 15, lat: 35.7066, lng: 139.6633, }); 45 var path = [ [35.706821, 139.659765], [35.706839, 139.663305], [35.705854, 139.665719] ] map.drawpolyline({ path: path, strokecolor: '#f00', strokeopacity: 0.6, strokeweight: 6, }); });

他にも色々 マーカーを立てる 適当な画像を表示する ポリゴンで囲う などなど 詳しくは下記サイトへ http://hpneo.github.io/gmaps/ http://taklog.info/2013/07/26/googlemaps/ 46

Web API を作る データを追加, 削除するような API を作成することで, 他から情報を取得したり, 登録したりすることが可能に!XML という形式出出力する 47 <?xml version="1.0" encoding="utf-8"?> <monsters> <monster> <name> ピカチュウ </name> <weight>6</weight> <height>40</height> </monster> <monster> <name> フシギダネ </name> <weight>6.9</weight> <height>70</height> </monster> </monsters> GET のオプションで条件を受け取り結果を XML のコードを PHP で出力する

宿題 48 2~3 人でグループを組み, システム開発 発表会は6 月 27 日, 発表 8 分, 質問 2 分 それぞれのウェブページからリンクを貼ること データベース,Web API,JavaScript,PHPは使う事 グループ分け情報三輪 & 菅澤佐藤 & 土屋 & 上出室 & 工藤 & 田村豊崎 & 力石 & 川村黒川 & 渡邉 & 和田