• 検索結果がありません。

Twitterクライアントに学ぶASP.NETアプリ

N/A
N/A
Protected

Academic year: 2021

シェア "Twitterクライアントに学ぶASP.NETアプリ"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

わんくま同盟 東京勉強会 #24

Twitterクライアントに学ぶASP.NETアプリ

2008.09.20

初音 玲

(2)

わんくま同盟 東京勉強会 #24

index

Twitter API

Linq to XML

WEBアプリ

Twitter APIの弱点対策案

(3)

わんくま同盟 東京勉強会 #24

index

Twitter API

Linq to XML

WEBアプリ

Twitter APIの弱点対策案

(4)

わんくま同盟 東京勉強会 #24

今日の前提

• 取得フォーマットはXML前提

– json,rss,atomの説明はなし

• 必要なAPIのみ説明

– 例)IM関連の説明はなし

Twitterクライアント

Twitter

BASIC認証 http http (XML)

(5)

わんくま同盟 東京勉強会 #24

Twitter API

• Status

:ステータス関連

• User

:ユーザ関連

• Direct Message :DM関連

• Friendship

:フレンド関連

• Account

:アカウント関連

• Favorite

:お気に入り関連

• Notification

:IM関連

• Block

:ブロック関連

• Help

:補助関連

(6)

わんくま同盟 東京勉強会 #24

ステータス関連

• public_timeline

• friends_timeline

– http://twitter.com/statuses/friends_timeline.xml

?since=日時?page=ページ

• user_timeline

• show

• update

– http://twitter.com/statuses/update.xml?status=・・・・

• replies

• destroy

(7)

わんくま同盟 東京勉強会 #24

ユーザ情報関連

• friends

• followers

• featured

• show

friendsと

followersは違う

friends

新しい用語「following」

(8)

わんくま同盟 東京勉強会 #24

お気に入り関連

• favorites

– http://twitter.com/favorites.xml?page=ページ

• create

– http://twitter.com/favorites/create/id.xml

• destroy

– http://twitter.com/favorites/destroy/id.xml

(9)

わんくま同盟 東京勉強会 #24

index

Twitter API

Linq to XML

WEBアプリ

Twitter APIの弱点対策案

(10)

わんくま同盟 東京勉強会 #24

DEMO

(11)

わんくま同盟 東京勉強会 #24

ステータス(発言)を取得

Dim culture As New CultureInfo("en-us", True)

Dim client As New System.Net.WebClient

client.Credentials = _

New NetworkCredential("hogeID","hogePass")

client.Encoding = System.Text.Encoding.UTF8

url = _

"http://twitter.com/statuses/friends_timeline.xml"

& _

"&since=" & _

System.Uri.EscapeUriString(( _

Now.AddHours(-24)).ToString( _

"

ddd, dd MMM yyyy HH:mm:ss +0900

", culture))

xml = XElement.Parse(client.DownloadString(url))

(12)

わんくま同盟 東京勉強会 #24

ステータス取得結果(xml)

<statuses type="array"> <status>

<created_at>Sat Sep 13 04:03:14 +0000 2008</created_at> <id>919769975</id> <text>ぜっぺりあのお肉~♪</text> <source><a href="・・・・・・">Tween</a></source> <truncated>false</truncated> <in_reply_to_status_id/> <in_reply_to_user_id/> <favorited>false</favorited> <user> <id>14565539</id> <name>はつね</name> <screen_name>hatsune_</screen_name> <location>Tokyo, Japan</location> <description>初音玲は・・・・・・・</description> <profile_image_url>・・・・・・・</profile_image_url> <url>http://blogs.wankuma.com/hatsune/</url> <protected>false</protected> <followers_count>224</followers_count> </user> </status> </statuses>

(13)

わんくま同盟 東京勉強会 #24

ステータス取得結果の解析(Linq to XML)

Dim usr = _

From status In xml.Descendants("status") _

Order By status.Element("id").Value Descending _ Select New TStatus With { _

.ID = status.Element("id").Value, _ .ScreenName = status.Element("user"). _ Descendants("screen_name").Value, _ .Text = status.Element("text").Value, _ .Published = DateTime.ParseExact( _ status.Element("created_at").Value, _ "ddd MMM dd HH:mm:ss +0000 yyyy", _ culture.DateTimeFormat).AddHours(9), _ .Favorited = (status.Element("favorited").Value = "true")}

(14)

わんくま同盟 東京勉強会 #24

DEMO

(15)

わんくま同盟 東京勉強会 #24

発言(ステータス更新)

Dim client As New System.Net.WebClient

client.Credentials = _

New NetworkCredential("hogeID","hogePass")

Dim byt As Byte() = client.UploadData( _

"http://twitter.com/statuses/update.xml"

& _

"?status=" & _

System.Uri.EscapeDataString("やほー")

, _

"

POST

", _

System.Text.Encoding.Default.GetBytes(""))

・どの発言(status-id)に対する発言なのかを指定するパラメタがない。 ・誰に対する返信なのかは、@id指定・どの発言(status-id)に対する発言なのかを指定するパラメタ in_reply_to_status_id

(16)

わんくま同盟 東京勉強会 #24

index

Twitter API

Linq to XML

WEBアプリ

Twitter APIの弱点対策案

(17)

わんくま同盟 東京勉強会 #24

Webアプリ

ブラウザ Twitter Webアプリ

(18)

わんくま同盟 東京勉強会 #24

画面間の情報の受け渡し方法の検討

• URLパラメタ

– 情報はURLとして記録

– URLの一部なので、refererで記録される危険性

• Session

– 情報はサーバーに記録

• Session IDのみCookieに記録 • Cookie使えない場合、SessionIDをURLパラメタを利用

– セッション情報の有効期間

ログイン ログイン処理 タイムライン

(19)

わんくま同盟 東京勉強会 #24

DEMO

(20)

わんくま同盟 東京勉強会 #24

Visual Studio 2008におけるMobileコントロールの問題

VS2005

• 携帯用のMobileコントロールがある

• UAごとにレンダリングするhtmlが変わる

VS2008

• 携帯用のMobileコントロールがない!

• VS2005のコントロールを使う方法もあるけれど

• 標準的なhtmlをレンダリングするように注意して

aspxファイルを作成

(21)

わんくま同盟 東京勉強会 #24

WebサイトとWebアプリ

Webサイト

• VS2005以降で作成可能 • [ファイル]-[新しいWebサイト]で新規作成 • *.aspx.vbファイルを実行時ビルド可能 • *.vbファイルはApp_Codeフォルダに配置 • 事前ビルドして配置も可能

Webアプリ

• VS2005以外で作成可能(VS2005SP1は可能) • [ファイル]-[新しいプロジェクト]-[Web]-[ASP.NET Webアプリケーション] で新規作成 • *.aspx.vbファイルは事前ビルドし、dllをbinフォルダに配置 • *.vbファイルは事前ビルドし、dllをbinフォルダに配置

(22)

わんくま同盟 東京勉強会 #24

imoTwitのソリューション構造

imoTwit Webサイト Login.aspx Regist.aspx [MasterPage] Default.aspx Replies.aspx Direct.aspx binフォルダ TwitterTimelineクラスライブラリ App_Codeフォルダ TwitterRegistクラス

(23)

わんくま同盟 東京勉強会 #24

TwitterTimelineクラスライブラリ

• プロパティ

– UserAccount

• メソッド

– Dispose

– GetDirectMessageList

– GetFriendsTimelineList

– GetLimitStatus

– GetRepliesTimelineList

– IsLoginOK

– SetDeFav

– SetDirectMessage

– SetFav

– SetUpdate

(24)

わんくま同盟 東京勉強会 #24

DEMO

(25)

わんくま同盟 東京勉強会 #24

index

Twitter API

Linq to XML

WEBアプリ

Twitter APIの弱点対策案

(26)

わんくま同盟 東京勉強会 #24

Twitter APIの弱点(主にステータス関連)

• Repliesは、先頭に指定されたときのみ

• Friends_Timelineに取得回数制限がある

相手(@hogehoge)Timelineへの表示 No 自分のみの 相手側表示 相手のみの 相手側表示 両想い

@hogehoge こんにちは Repliesのみ Friends_Ti

melineのみ

@hogehoge @hoge こんにちは Repliesのみ ○

@hoge @hogehoge こんにちは × Friends_Timelineのみ

こんにちは、@hogehoge × Friends_Timelineのみ

. @hogehoge こんにちは × Friends_Timelineのみ

. @hogehoge @hoge こんにちは × Friends_Timelineのみ

. @hoge @hogehoge こんにちは × Friends_Timelineのみ

(27)

わんくま同盟 東京勉強会 #24

対策は?

• Repliesだけではなく、Friendsも必要

– Linq To XMLで取得したIListをConcat

• message = replies.Concat(friends).ToList

• Friends_Timelineに取得回数制限がある

– APIを使わずにhtml解析

(28)

わんくま同盟 東京勉強会 #24

対策案:Webサービスの提供

ブラウザ Twitter Webサービス FW Webアプリ WMアプリ FW

(29)

わんくま同盟 東京勉強会 #24

Q&A

http://blogs.wankuma.com/hatsune

参照

関連したドキュメント

 本研究では,「IT 勉強会カレンダー」に登録さ れ,2008 年度から 2013 年度の 6 年間に開催され たイベント

年間約5万人の子ども達が訪れる埋立処分場 見学会を、温暖化問題などについて総合的に

試料の表面線量当量率が<20μ Sv/hであることを試料採取時に確 認しているため当該項目に適合して

東京電力パワーグリッド株式会社 東京都千代田区 東電タウンプランニング株式会社 東京都港区 東京電設サービス株式会社

東電不動産株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区 東京パワーテクノロジー株式会社 東京都江東区

東京電力パワーグリッド株式会社 東京都千代田区 東電タウンプランニング株式会社 東京都港区 東京電設サービス株式会社

東電不動産株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区 東京パワーテクノロジー株式会社 東京都江東区

東電不動産株式会社 東京都台東区 東京発電株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区