SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

ASP.NETで構築したWebサイトからFlickr.Netライブラリを使ってFlickrの画像にアクセスする

特定のFlickrユーザーの写真や、写真のコメントを表示

ダウンロード サンプルソース (60.7 KB)

全体を組み立てる

 この記事のサンプルコードでは、ここまでに説明したことを、以下の2つのASP.NETページにまとめています。

  • RandomPicturesByScreenName.aspx:ここでTextBoxコントロールにスクリーンネームを入力すると、ユーザーのフォトストリームからランダムに選ばれた9枚の写真が表示されます。
  • ViewDetails.aspx:RandomPicturesByScreenName.aspxでいずれかの写真をクリックすると、このページへ移動し、クエリ文字列を介して写真IDが渡されます。ViewDetails.aspxには、その写真の拡大版、タイトル、説明、コメントが表示されます。

 RandomPicturesByScreenName.aspxページには、ListViewコントロールを使ったHTMLの<table>に、 ランダムに選択された9枚の画像が表示されます。各画像は、以下の宣言型マークアップのHyperLinkコントロールで表示されます。

<asp:HyperLink runat="server" ID="lnkImage"
          NavigateUrl='<%# Eval("PhotoId", "ViewDetailsCS.aspx?PhotoID={0}") %>'
          ImageUrl='<%# Eval("SmallUrl") %>'
          ToolTip='<%# Eval("Title") %>' />

 スクリーンネームを入力してボタンをクリックすると、このコードは、前述のPhotosSearchメソッドを使って、そのユーザーの最新200枚の写真を取得します。このメソッドはPhotosオブジェクトを返します。このオブジェクトのPhotoCollectionプロパティはPhotoオブジェクトのコレクションです。上記のHyperLinkマークアップで使われているListViewのデータバインディング構文に出てくるプロパティ(PhotoIdSmallUrlTitle)は、いずれもPhotoオブジェクトのプロパティです。

 ここでは、Flickr APIから返された200枚の写真をランダムに並べ替えるため、およびListViewにバインドする前に最初の9枚の写真を取得するために、LINQの拡張メソッドを使用しました。該当するコードは次のようになっています。

// C#: Get the 200 most recent public photos from the specified user
Photos searchResults = flickr.PhotosSearch(options);

// Rnadomize the searchResults.PhotoCollection array, take the first 9, 
and bind it to lvFlickrPictures
lvFlickrPictures.DataSource = searchResults.PhotoCollection
                               .OrderBy(p => Guid.NewGuid())
                               .Take(9);
lvFlickrPictures.DataBind();


' VB: Get the 200 most recent public photos from the specified user
Dim searchResults As Photos = flickr.PhotosSearch(options)

' Rnadomize the searchResults.PhotoCollection array, take the first 9, 
and bind it to lvFlickrPictures
lvFlickrPictures.DataSource = 
searchResults.PhotoCollection.OrderBy(Function(p) 
Guid.NewGuid()).Take(9)
lvFlickrPictures.DataBind()

 配列のランダムな並べ替えは、結果を新しいグローバル一意識別子で並べ替えることで実現しています。詳しくは、「Techniques for Randomly Reordering an Array」を参照ください。OrderByやTakeなど、LINQの拡張メソッドの使用方法については、筆者のシリーズ記事「An Extensive Examination of LINQ」を参照ください。

 以下の画面図は、実行中のRandomPicturesByScreenName.aspxページです。

 これらのいずれかの画像をクリックすると、ViewDetails.aspxに移動し、写真の拡大版、タイトル、説明、コメント(ある場合)が表示されます。

まとめ

 多くのソーシャルWebサイトと同様、Flickrも、開発者がFlickrデータをアプリケーションに統合できるようにするためのAPIを提供しています。Flickr APIをASP.NETアプリケーションで使用する場合、Flickr.Netのようなライブラリを利用すると作業は大幅に簡単になります。Flickr.Netは、低水準の通信をすべて処理してくれ、使いやすいオブジェクトモデルを提供します。この記事では、Flickr.Netを使って、ユーザーのFlickrフォトストリームから、 写真、タイトル、説明、コメントを、独自のASP.NETアプリケーションに表示する方法を説明しました。ぜひサンプルをダウンロードして、コードを試してみてください。

 それでは、ハッピープログラミング!

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Scott Mitchell(Scott Mitchell)

http://www.4guysfromrolla.com/ScottMitchell.shtml

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4510 2009/11/12 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー