知的 Web のためのマッシュアッププログラミング presentation data logic JavaScript JavaScript JavaScript 図 -1 マッシュアップの分類 マッシュアップの分類 3-1 presentation, data logic 3 presentat

Similar documents
Webプログラミング演習

Web SOAP Internet Web REST SOAP REST 3 REST SOAP 4

untitled

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

untitled

第7回 Javascript入門


従来型 Web Ajax ー Webサー ー Webサー M M に M ージを M M ク イ ント JavaScript を イン M を ー に ータ 力 Submit タンを Submit の ージ る XX X 力 ータ M ータの によ に る M を に の プリに対 キー ー スによ

untitled

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

template.dvi

Testing XML Performance

第7回 Javascript入門

1 Google

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

Delphi/400を使用したWebサービスアプリケーション


SmartBrowser_document_build30_update.pptx

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

SOC Report

PowerPoint プレゼンテーション

Webプログラミング演習

<4D F736F F F696E74202D208A778F708FEE95F197AC92CA82F08EC08CBB82B782E98B5A8F E97708B5A8F70816A5F94D196EC8D758E742E >

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

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

wpEnterpriseSvr.doc

07_経営論集2010 小松先生.indd

B 20 Web

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


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

自己紹介 XSS のほうから来ました author of jjencode, aaencode

PowerPoint プレゼンテーション

IC RDFOWL PIM DB ID GIS RFID 2 ID ID ID XML web.xml GIS,PIM G-XML OWL RDF XML WSDL REST XML ID

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

Microsoft PowerPoint _2b-DOM.pptx

paper.pdf

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

allows attackers to steal the username-password pair saved in the password manager if the login page or other pages in the same domain are vulnerable

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携

卒論タイトル

XML Week Web 2.0 Day (1) SOA2.0 KM2.0? REST API + XSLT Amazon hon. hon.jp API XML Consortium XML ( ) REST(GET)API Amazon.co.jp hon.jp REST

PowerPoint Presentation

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

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

Web Web Web 2

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

FW APIServer 設定ガイド Version 年 2 月 3 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

Web2.0 REST API + XSLT Amazon hon.jp API XML Consortium XML ( ) REST(GET)API hon.jp Amazon.co.jp Google Map Exif to RDF(kanzaki.com) REST +

Web のしくみと応用 ('15) 回テーマ 1 身近なWeb 2 Webの基礎 3 ハイパーメディアとHTML 4 HTMLとCSS 5 HTTP (1) 6 HTTP (2) 7 動的なWebサイト 8 クライアントサイドの技術 回 テーマ 9 リレーショナルデータベース 10 SQL とデータ

4. Webブラウザのオブジェクト

JavaScript 演習 2 1

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

25 About what prevent spoofing of misusing a session information

携帯電話でGoogle Mapsを使う

Lotus Domino XML活用の基礎!

Webデザイン論

Webデザイン論

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

DTD Reference Guide

World Wide Web =WWW Web ipad Web Web HTML hyper text markup language CSS cascading style sheet Web Web HTML CSS HTML

2.2 Reflected XSS 攻撃攻撃者の用意した悪意のあるリンクとターゲットサーバが同じホストである場合の Reflected XSS 攻撃を, 本稿では Reflected XSS 攻撃と呼ぶ. 例えば, サーバ A の target.php に Reflected XSS 脆弱性があった

7_16.dvi

Oracle Secure Enterprise Search 10gを使用したセキュアな検索

Microsoft PowerPoint - 04WWWとHTML.pptx

2009 2

<4D F736F F D BC696B18F88979D939D90A782F08D6C97B682B582BD A DD975E8AC7979D CC8D5C927A2E6

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

Oracle SALTを使用してTuxedoサービスをSOAP Webサービスとして公開する方法

e10s におけるプロセス間通信の基本 219 HACK #34 Components.manager.removeBootstrappedManifestLocati on() function shutdown(adata, areason) { const IOService =

医療者のための情報技術入門第 10 回プログラムがはたらくしくみを学ぶ (3) 日紫喜光良 概要 1. はじめに- 具体例から- 2.Javascript のプログラミング入門 ここから 足りないものは借りてくる-Javascrip

00vb10-CONT-deitel.indd

WebGL *1 DOM API *1 X LR301 Kageyama (Kobe Univ.) Visualization / 37

5-5_arai_JPNICSecSemi_XssCsrf_CM_ PDF

ArcGIS for Server 機能比較表

IPSJ SIG Technical Report Vol.2014-HCI-157 No.26 Vol.2014-GN-91 No.26 Vol.2014-EC-31 No /3/15 1,a) 2 3 Web (SERP) ( ) Web (VP) SERP VP VP SERP

Ajax-ch00

WebRTC P2P Web Proxy P2P Web Proxy WebRTC WebRTC Web, HTTP, WebRTC, P2P i

ohp.mgp

第2回_416.ppt

PowerPoint プレゼンテーション

PowerPoint Presentation

ArcGIS for Server での Web マップの作成方法

ArcGIS API for JavaScript スタートアップ ガイド

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

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

Delphi/400開発ノウハウお教えします Googleマップ連携によるリッチなGUIアプリ開発

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

スライド 1

Web2.0 LL Framework Ruby on Rails / TurboGears / CakePHP Atlas Web2.0 XML Selenium / JMeter 3 Ajax Web 2.0 UI Ruby on Rails Web 2. ASP.NET AJAX,

勉強会の流れ Google API の概要 デモ curl で実際に体験 Copyright 2010 SRA OSS, Inc. Japan All rights reserved. 2

(a) (b) 1 JavaScript Web Web Web CGI Web Web JavaScript Web mixi facebook SNS Web URL ID Web 1 JavaScript Web 1(a) 1(b) JavaScript & Web Web Web Webji

2015 9

SVG資料第10回目(その2) Ajaxによる同期通信と非同期通信の違い

Wiki

Microsoft Word - no04.doc

自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ テクノロジー技術顧問 OWASP Kansai Chapter Leader OWASP Japan Chapter Advisory Board member

Microsoft Word 応_シラバス.doc

Microsoft Word - no03.doc

SAS Web XML * ** * ** Web Data Analysis with SAS Input and Output of XML Data and Application to Real Estate Valuation Map Junnosuke Matsushima*, Hiro

Transcription:

解説 知的 Web のためのマッシュアッププログラミング 新谷虎松 大囿忠親 ( 名古屋工業大学大学院情報工学専攻 ) 本稿では知的なユーザ支援のための知的 Web を実現するための Web アプリケーション開発技法として, マッシュアップに基づく Web プログラミングについて紹介する. ここでは, マッシュアップに基づく Web プログラミングをマッシュアッププログラミングと呼び, マッシュアッププログラミングの背景となる Web プログラミングの基礎,Web API, および, 既存のマッシュアッププログラミング支援ツールについて紹介する. さらに, 知的な Web アプリケーションを構築するための, マッシュアッププログラミングの具体例を示すことで, マッシュアッププログラミングにおける課題とその解決方法を説明する. また, マッシュアッププログラミングにおけるセキュリティ上の注意点と対策方法について述べる. 最後に, 今後のマッシュアッププログラミングに関する展望について紹介する. 知的 Web とマッシュアップ Web Web Web Web Web Intelligence Web2.0 Web Web Web Web Web XML Web 1 IEEE/WIC/ACM International Conference on Web Intelligence WIC Web Intelligence Consortium 1 Web Web Web Web API Web Web Web 1 Web Web Web Web API Web API Web Web HTML Web Web Web API Web JavaScript 1 http://wi-consortium.org/ 444 情報処理 Vol.50 No.5 May 2009

知的 Web のためのマッシュアッププログラミング presentation data logic JavaScript JavaScript JavaScript 図 -1 マッシュアップの分類 マッシュアップの分類 3-1 presentation, data logic 3 presentation Web igoogle My Yahoo! HTML data logic Web マッシュアップの実装方法 Web 2 Web Web Web Web JavaScript Web マッシュアップ支援環境 Web Web Yahoo!Pipes 2 Microsoft Popfly 3 Web Yahoo!Pipes Yahoo! Yahoo!Pipes Web API Pipes Editor 4 & -2 Yahoo!Pipes 2 Microsoft Popfly Microsoft -3 Yahoo!Pipes Popfly Silverlight 5 2 3 4 5 http://pipes.yahoo.com/ http://www.popfly.com/ Yahoo!Pipes のパイプは,UNIX のパイプと類似している.UNIX で は 2 つのプログラム p と q を p q のように ( パイプ ) で接続することで,p の出力を q に入力できる. Web ブラウザ上でのマルチメディアコンテンツ再生環境.http:// www.microsoft.com/silverlight/ を参照. 情報処理 Vol.50 No.5 May 2009 445

解説 図 -2 Yahoo!Pipes の実行例 図 -3 Microsoft Popfly の実行例 Web API Web API Web API マッシュアップの基礎知識 Web API 適切な Web API の発見 Google Amazon Yahoo! Web Web Web API Web API Web Google Google Maps 6 Amazon Amazon Web 7 Yahoo! Web API 8 YouTube Web API Web API Web API ProgrammableWeb 9 2009 2 1,154 Web API 3,718 Web API Web API Web API 10 2 Web API Web API 2 REST Representational State Transfer SOAP Simple Object Access Protocol Web API REST SOAP Web API REST REST HTTP GET Web API URL REST Web API XML JSON SOAP HTTP POST 11 SOAP XML 6 http://code.google.com/intl/ja/apis/maps/ 7 http://aws.amazon.com/ 8 http://developer.yahoo.co.jp/webapi/jlp/ 9 http://www.programmableweb.com/ 10 http://www.api-match.com/ 11 SOAP1.0 では HTTP のみであったが,1.1 以降では SMTP,FTP を用いた送受信も可能である.1.2 以降では REST のような GET メソッドを使用した呼び出しも可能となった. Web API の利用 REST Web API API "http://zip. cgis.biz/xml/zip.php?zn=4668555" -4 URL zn=4668555 466-8555 446 情報処理 Vol.50 No.5 May 2009

知的 Web のためのマッシュアッププログラミング <?xml version="1.0" encoding="utf-8"?> <ZIP_result> <result name="zipsearchxml" /> <result version="1.01" /> <result request_url="http%3a%2f%2fzip.cgis.biz%2fxml... <result request_zip_num="4668555" /> : <value company_kana=" " /> <value state=" " /> <value city="" /> <value address=" " /> <value company="" /> </ADDRESS_value> </ZIP_result> 1:<html><body> 2: <form method="get" action="http://www.google.com/search"> 3: <input name="q"> 4: <input type="submit"> 5: </form> 6:</body></html> 図 -4 郵便番号検索 API の実行結果 図 -5 form を用いた Web アプリケーション 466-8555 -4 Web API zn=4668555 4668555 関数名 機能 document.createelement(tag) 要素 tag を生成 x.appendchild(y) 要素 x に要素 y を追加 x.removechild(y) 要素 x から要素 y を除去 document.getelementbyid(id) ID が id である要素を取得 表 -1 DOM 操作関数の一部 Web プログラミングの概要 JavaScript Web Web Web JavaScript JavaScript API DOM Document Object Model 12 Web XMLHttpRequest 13 Ajax 単純な Web アプリケーション <form> Web 12 http://www.w3.org/dom/ 13 http://www.w3.org/tr/xmlhttprequest/ 14 興味のある読者は removechild 関数を使って検索結果を消すプログラムを作成してみるとよい. Web -5 <form> HTML HTML 2 5 <form> Google JavaScript DOM Web 効果的 Web アプリケーション HTML DOM API DOM -1-6 -1 14 DOM Web Web 情報処理 Vol.50 No.5 May 2009 447

解説 図 -6 1:<html><body> 2:<script type="text/javascript"> 3:function search() { 4: var q = document.getelementbyid("q"); 5: var x = document.createelement("iframe"); 6: x.width = "200"; x.height="250"; 7: x.src = "http://www.google.com/search?q=" + q.value; 8: document.body.appendchild(x); 9:} 10:</script> 11:<input id="q"> 12:<input onclick="search();" type="button" value=" "> 13:</body></html> DOM を用いた Web アプリケーション Web presentation <iframe> iframe JavaScript Web -6 HTML JavaScript 12 3 9 search search ID q 4 200 6 Google 7 iframe 5 7 Web iframe 8 15 DOM Web Web -6 15 4, 5 行目の var は変数宣言を表し,6 行目の x.width はオブジェク ト x の属性 width を表す. 16 http://www.ietf.org/rfc/rfc4627.txt 実用的マッシュアップのための要素技術 JavaScript eval eval 16 JSON JavaScript Object Notation eval eval JavaScript XMLHttpRequest (XHR) XHR XML XHR XHR JSON JSON JSON JavaScript JSON JavaScript eval JSON key i, value i key 1 : value 1, key 2 : value 2, key i value i JSON var json = {"name": "Sano", "age": 20} ; var obj = eval("(" + json + ")"); obj.name = "Goto"; json JSON name Sano age 20 eval JSON obj name obj. name = "Goto" 448 情報処理 Vol.50 No.5 May 2009

知的 Web のためのマッシュアッププログラミング マッシュアップにおけるセキュリティ Web Web Web ブラウザのセキュリティモデル Same origin policy 17 XMLHttpRequest -2 <iframe> <img> <script> Web 17 タグメソッド利用法 <iframe> GET,POST 非表示状態で生成する. <img> GET 画像をサーバに要求すると, 画像の読み込み後に,onload イベントが発生するので, これにより受信完了を判定する. サーバは送信したいコンテンツをクッキーとして送り, ブラウザでは JavaScript でクッキーを読むことで送受信する. クッキーのデータ量の制約により送信可能なデータ量も制限される. <script> GET 動的に生成しスクリプトをサーバから読み込むことで送受信する. スクリプトの読み込み後,JavaScript が実行されることで受信完了を判定する. 表 -2 クロスサイト対応のタグ 厳密には, ホスト名と URI スキームの対であり, ポート番号を含む場合もある. 本稿では, 単純にドメインと呼ぶ. 18 http://dev.w3.org/html5/spec/ Web Web HTML HTML5 18 クロスサイトスクリプティングへの対策 XSS : cross-site scripting 2) XSS Web Web XML Web Web HTML Web API HTML JavaScript SQL iframe を用いた安全なマッシュアップ 4iframe Web iframe Web <iframe> <iframe> Web iframe iframe DOM Web 情報処理 Vol.50 No.5 May 2009 449

解説 図 -7 location 属性を利用した iframe 間通信 iframe Web Burke 19 location fragment identifier iframe 20 Web #identi fier 21 iframe JavaScript Dojo 22 IFrame Proxy location.hash iframe iframe URL location iframe location URL location iframe 23 location Web location.hash location.hash Web -7 iframe mashup.com/app.html Document Web servicea.com/api.html iframea 19 http://tagneto.blogspot.com/2006/06/cross-domainframecommunication-with.html 20 window.name を利用した方法もある.http://www.sitepen.com/ blog/2008/07/22/windowname-transport/ 参照. 21 http://domain.com/search?q=query#test の #test 部分. 22 http://www.dojotoolkit.org/ 23 ただし, 読み込みはできない. 24 http://code.google.com/intl/ja/apis/maps/ 25 Google Maps API を利用するためには API キーが必要である. 本プ ログラム中では 2 行目の KEY が API キーを表す. serviceb.com/api.html iframeb iframe JavaScript JavaScript a, b, x, y JavaScript iframe iframe iframe mashup.com/tunnel.html iframeta iframetbiframe P iframe Q P Q P Q location -7 iframea iframeb iframeta iframetb JavaScript a b location a b location.hash JavaScript x y y JavaScript a b x Document iframea iframeb x iframe location x iframea iframeb location.hash a b location.hash iframe 知的 Web のためのマッシュアッププログラミング例 Web クライアントサイドマッシュアップ例 Google Maps API 24-8 Google Maps API 25 Google Maps API -8 8 GLatLng 34.659546 135.005665 9 6 <div> 10 setcenter() 8 1 2 Google Maps API JavaScript 450 情報処理 Vol.50 No.5 May 2009

知的 Web のためのマッシュアッププログラミング 1: <head> 2: <script src="http://maps.google.com/maps?file=a pi&v=2&key=key" type="text/javascript"> 3: </script> 4: </head> 5: <body> 6: <div id="map" style="width:640px;height:480px"/> 7: <script type="text/javascript"> 8: p=new GLatLng(34.659546,135.005665); 9: m=new GMap2(document.getElementById("map")); 10: m.setcenter(p,13); 11: </script> 12: </body> 1: <?xml version="1.0" encoding="utf-8"?> 2: <result> 3: <version>1.1</version> 4: <address> 東京タワー </address> 5: <coordinate> 6: <lat>35.658587</lat> 7: <lng>139.745425</lng> 8: <lat_dms>35,39,30.913</lat_dms> 9: <lng_dms>139,44,43.53</lng_dms> 10: </coordinate> 11: <url>http://www.geocoding.jp/?q= 東京タワー </url> 12: <needs_to_verify>no</needs_to_verify> 13: <google_maps> 東京タワー </google_maps> 14: </result> 図 -8 Google Maps の使用例 図 -10 Geocoding API の返り値 サーバの 結果 XML) の の要求の生成 から り API に を要求 ブラウザの を表示 サーバサイドマッシュアップ例 ランドマークの名 XML Geocoding API に を要求 XML の名 -9 Web Web logic data Geocoding API 26 Google Maps API に を要求 図 -9 最寄り駅マップ におけるマッシュアップ 結果 XML) を JSON に変 JSON の名 Web API API 27 Web API Google Maps API Google Maps API Geocoding API API XML Web Geocoding API API REST Web API Geocoding API URL REST http://www.geocoding.jp/api/?v=1.1&q= 東京タワー -10 XML <lat> <lng> XML API XML XML Google Maps Google Maps JavaScript JavaScript JSON JSON 26 http://www.geocoding.jp/api/ 27 http://www.ekidata.jp/tools/api_station_c.html 情報処理 Vol.50 No.5 May 2009 451

解説 図 -11 最寄駅マップの実行例 -11 JavaScript Google Maps 知的なマッシュアップ支援に向けて Web API Web API の発見 Web API Web API Web API Web API Web API Web API Web API Web API Geocoding API API Geocoding API API Web API XML latitude lat Web API Web API Web API Web API Web API Web API Web API Web API Web API UDDI Universal Description, Discovery and Integration WSDL Web Services Description Language Web UDDI Web WSDL XML Web Web Web Web 1 Web API の利用 Web API Web API 100 WSDL Web API Web API Web Web API Web API XML RSS Atom REST SOAP XML- RPC 452 情報処理 Vol.50 No.5 May 2009

知的 Web のためのマッシュアッププログラミング Web API Web API Web API Web API Web API Web API Web API Web API Web API 1 Web API Web API 1 Web API Web Web API 参考文献 1) McIlraith, S. A. et al. : Semantic Web Services, IEEE Intelligent Systems, pp.46-53 (2001). 2) Web2.0 Vol.50, No.1, pp.44-54 (Jan. 2009). 3) Dornan, A. : Mashup Basics : Three for the Money, Network Computing, http://www.networkcomputing.com/showitem.jhtml?articleid=201804223 (2007). 4) Keukelaere, F. D. et al. : SMash : Secure Component Model for Cross- Domain Mashups on Unmodified Browsers, WWW2008, pp.535-544 (2008). 21 3 2 今後の展望 Web API HTML Web API 新谷虎松 tora@nitech.ac.jp 1982 1993 Web 2004. 大囿忠親 ozono@nitech.ac.jp 2000 2004 Wisdom Web 情報処理 Vol.50 No.5 May 2009 453