URL 短縮サービスを利用した 文字列情報圧縮の新たな試み 北海道情報大学 情報メディア学部 情報メディア学科 准教授 新井山 亮 2012/10/21 電気・情報関係学会北海道支部連合大会
はじめに 各種の URL 短縮サービスが提供 – Twitter を筆頭とする,投稿文字数制限を有す る短文投稿 Web サービスの普及 代表的 URL 短縮サービスを応用した文字列 情報圧縮手法を新たに提案 情報圧縮効果の視覚化 – 2 次元バーコードによる圧縮前後の情報量比 較 2
URL 短縮サービス – 支部会公式 Web サイト shibukai/ ( / 以下)任意設定も 可 – bit.ly/hiulab129 ⇒ ゼミ公式 Web サイト – bit.ly/microsoft ⇒ goo.gl/fbsS ⇒ – goo.gl/fbsS.qr ⇒ QR code 3
文字列情報の圧縮 青空文庫 吾輩は猫である (夏目漱石) 4
URL 短縮サービスの応用 URL 短縮サービス/長尺文字列の短縮 長尺の文字列 – 「吾輩は猫である・・・」 URL エンコーディング – %B8%E3%C7%DA%A1%CA%A4%EF%A4 ・・・ 架空の長尺 URL の生成 – ・・ ・ URL 短縮 ⇒ 5
Google URL Shortener 6
URL 短縮サービスの応用 長尺文字列の伸張 (休眠中と思われる Web サーバ) ⇒ 吾輩(わがはい) は猫である・・・ 7
URL 短縮サービスの応用 URL 短縮サービス/コマンドラインからの伸 張 8
これは《情報圧縮》か?(※おことわ り) 標題は「 URL 短縮サービスを利用した文字列情報圧縮の新たな試 み」 URL 短縮 Web サーバ内 部での「ハッシュ法 」によるデータ格納 ・・・ – Xynw0 は 「キー」 – Xynw0 自体は圧縮前の 長尺文字列情報に由来 して生成されていない 「情報圧縮」ではな い – 標題:厳密性を欠く 9
情報圧縮効果の視覚化 我輩(わがはい)は~彼の掌(てのひら ) 452 bytes Version 14, 73 x 73 cells, ECC level: L 19 bytes (5 bytes) Version 2, 25 x 25 cells, ECC level: H 10
URL 短縮サービスの応用 URL 内への HTML 情報の埋め込み Google App Engine ( Official ) Google App Engine Launcher 11
URL 短縮サービスの応用 URL 内への HTML 情報の埋め込み 中央バス時刻表 札幌ターミナル ⇒ トーメン団 地 URL に HTML を埋め込 み 札幌 ターミナル ( ) か ら ・・・ %5B0%5D 中央バス時 刻表 TOP 短縮 – 12
URL 短縮サービスの応用 URL 内への HTML 情報の埋め込み 故意の Cross Site Scripting "decoder.py" ( Python ) Google App Engine Launcher ( Stop ) 13
URL 短縮サービスの応用 URL 内への HTML 情報の埋め込み Google App Engine Launcher ( Run ) ⇒ ・・・ 14
URL 短縮サービスの応用 Google URL Shortener API c/w UNIX commands URL 短縮 – > curl urlshortener/v1/url -H 'Content- Type: application/json' -d '{"longUrl": " { “kind”: “urlshortener#url”, “id”: “ “longUrl“: } Getting Started - URL Shortener API — Google Developers 15
URL 短縮サービスの応用 Google URL Shortener API c/w UNIX commands URL 伸張 – > curl ' urlshortener/v1/url?shortUrl=htt p://goo.gl/fbsS ' { "kind": "urlshortener#url", "id": " "longUrl": " "status": "OK“ } Getting Started - URL Shortener API — Google Developers 16
URL 短縮サービスの応用 Google URL Shortener API c/w UNIX commands JPEG image ↓ uuencode –m (base64) text data ↓ URL Shortner API Jyz0E,4zjNi,49CT5,75Rd E,DgcQA,…,1UHMV,mZ4 L6,YhWF3,c50Nr,9yQtL, ↓ URL Shortner API JPEG image, 512 x 512 pixels, 335KBytes 17
URL 短縮サービスの応用 Google URL Shortener API c/w UNIX commands >uuencode -m mandrill.jpg /dev/null` ; sleep $((t - 1)) ; t=$(($t * 2 )) ; done ; echo $r ) | tr -d \\n | sed -e 's|^.*goo.gl/\(.[0-9a-zA-Z]*\).*$|\1,|g' ; done ) | sed -e 's|\(.*\)| | ( read longUrl ; r="error"; t=1 ; while [[ $r =~ error ]] ; do r=`curl GnRQuQGP28jciLITHWqib1E -H 'Content-Type: application/json' -d '{"longUrl":"'$longUrl'"}' 2>/dev/null` ; sleep $((t - 1)) ; t=$(($t * 2 )) ; done ; echo $r ) | tr -d \\n | sed -e 's|^.*goo.gl/\(.[0-9a-zA-Z]*\).*$|\1|g' | tee mandrill.gus.b64.txt 1M7d9 18
uuencode (base64) format Google URL Shortener API c/w UNIX commands 7622 Lines (uuencode -m mandrill.jpg < mandrill.jpg | wc –l ) begin-base mandrill.jpg /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/... 50VOFDki6M6dOUYU5uKacJpuc7cs06dlKVKSj0/7ZSnQh7SM8LUpRhVVKSdV TVSKnTlJVo8yqSnBJ05zXLN1abbUpP8A/9k= ==== ↓... | tr –d \\n | fold –w 1980 /9j/4AAQSkZJRgABAQAAAQABAAD/2w... O21Pwf41h/Z/1HxFoVhY6R40h0u3vY... 8d/j18BZbrUz4W+Nvwuv5YoZbRrnSP... lJVo8yqSnBJ05zXLN1abbUpP8A/9k= -> 234 Lines (... | tr –d \\n | fold –w 1980 | wc –l ) 19
URL 短縮サービスの応用 Google URL Shortener API c/w UNIX commands JPEG image, 512 x 512 pixels, 335KBytes ↓ URL Shortner API Jyz0E,4zjNi,49CT5,75Rd E,DgcQA,…,1UHMV,mZ4 L6,YhWF3,c50Nr,9yQtL, ↓ URL Shortner API text data ↓ uudecode –m (base64) JPEG image 20
URL 短縮サービスの応用 Google URL Shortener API c/w UNIX commands >Echo '1M7d9' | ( read shortUrl ; r="error"; t=1 ; while [[ $r =~ error ]] ; do r=`curl " ortUrl= nGnRQuQGP28jciLITHWqib1E" 2>/dev/null` ; sleep $((t - 1)) ; t=$(($t * 2 )) ; done ; echo $r ) | tr -d \\n | sed -e 's|^.*jpn.jp/\(.*\)",.*$|\1|g' | tr ',' \\n |( while read LINE ; do echo ${LINE} | ( read shortUrl ; r="error"; t=1 ; while [[ $r =~ error ]] ; do r=`curl " ortUrl= nGnRQuQGP28jciLITHWqib1E" 2>/dev/null` ; sleep $((t - 1)) ; t=$(($t * 2 )) ; done ; echo $r ) | sed -e 's|^.*jpn.jp/\(.*\)",.*$|\1|g' | tr ',' ' ' ; done ) | fold -w 60 | uudecode -o /dev/stdout > mandrill.uud.b64.jpg 21
まとめ URL 短縮サービス “Google URL Shortener” を 利用する新たな文字情報圧縮手法を提案 し, QR コードの生成による情報圧縮効果 の視覚化を行った. 厳密には「情報圧縮」ではなく, URL 短縮 Web サーバ内部での「ハッシュ法」による データ格納/参照手法の一例. 22
提案する応用例 長尺文字列からの QR コード生成 – URL 短縮を応用,文字列を短尺化 ⇒ QR コードの小型化,誤り訂正能力強化 HTML 埋め込み長尺 URL を URL 短縮 – URL 短縮サーバのみで HTML を伸張 → 閲覧 ⇒ Web サーバの省力化,信頼性の向上 バイナリ・データのテキスト化 – URL 短縮応用手法の範囲拡大(画像,音声, etc. ) ⇒ ex. 材料に 3D data QR コード → NC 工作機械 23
想定される課題 URL 短縮/伸張の時間 – 1 件あたり 1 ~ 2 秒 ⇒ mandrill.jpg の場合 (512 x 512 pixels, 335KBytes) ・・・ およそ 5 分以上 URL 短縮サービスの永続性 – キー文字列増加,仕様変更,サービス停止, etc. ⇒ サービスの利用方法として適正かどうか 既存のクラウド・サービスの存在 – 各種クラウド・データ・ストレージ・サービ ス ⇒ 比較 → 新規性,優位性,独自性 ・・・ ??? 24