2010年1月15日金曜日

第1回 Twitterへアクセスする最小限のプログラムを作ってみる

このblogでは比較的初心者の人でも、
プログラムって面白いということと(思っているよりは)簡単なんだなーということを
感じていただけるように書きたいなぁと思っています。
間違えていることを書いてたらごめんねっ、的なスタンスで書いていきますのでご了承ください。

まず、Visual Studio 2008を用意してください。
無料のExpress Editionで十分です。
というか、それ以外のバージョンでは
以降の説明といろいろと異なるかもしれません。

初回はTwitterのデータをとってくるだけのごく簡単なプログラムを作りたいと思います。
第1回ということで、すごく細かいところまで説明したつもり。

・Visual Studioで新規にプロジェクトを作成してください(WTwitterという名前にしました。)
・Window1.xamlとWindow1.xaml.csがあると思うので
それぞれ以下のように記述してください

Window1.xaml


<Window x:Class="WTwitter.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
 Loaded="Window_Loaded">
 <DockPanel>
  <TextBox x:Name="ContentTextBox"/>
 </DockPanel>
</Window>




Window1.xaml.cs


//デフォルトのusing略

using System.Net;
using System.IO;

namespace WTwitter {
 ///
 /// Window1.xaml の相互作用ロジック
 ///
 public partial class Window1 : Window {
  public Window1() {
   InitializeComponent();
  }

  private void Window_Loaded(object sender, RoutedEventArgs e) {
   string url =  "http://twitter.com/statuses/user_timeline/yuki1090.xml";
   HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
   HttpWebResponse response = request.GetResponse() as HttpWebResponse;

   StreamReader reader = new StreamReader(response.GetResponseStream());
   string content = reader.ReadToEnd();

   reader.Close();
   response.Close();

   ContentTextBox.Text = content;
  }
 }
}




これだけでビルドして実行すると
以下のような画面が表示されると思います。



Unicodeなので日本語は変に表示されますが、
英語のところとか読むとちゃんとデータをとってきているのがわかると思います。
自分のデータをとってくるにはソースコードの中のurlの文字列を自分のIDに変更してください。

今回のプログラムは以下のサイトを参考にさせていただきました。

簡単な解説
■Window1.xaml
~.xamlはウィンドウの配置などを指定するファイルです。
今回書いたのは、ウィンドウ領域全体の大きさのテキストボックスをおいて、
ウィンドウが読み込まれたときにWindow_Loadedが呼ばれるようにしているだけです。
・Loadedを指定することで、ウィンドウが読み込まれたときに呼び出されるメソッドを指定しています。
・デフォルトで入力しているに変更しました。
 DockPanelにすると、中のもの(今回はTextBox)を領域に最大化します。
・TextBoxは~.cs(コードビハインドと呼ばれます)からアクセスできるように
x:NameでContentTextBoxと名前を付けました。

■Window1.xaml.cs
動作を指定するファイルです。
.xamlファイルでLoadedイベントを作った時に
こちらのWindow_Loadedメソッドは自動で作られたと思います。ここを書きます。
・Webへのアクセスはサーバーへ要求(request)を出して応答(response)を得るだけです
・要求は、URLを指定してCreate()するだけ
・応答は要求のGetResponse()を呼び出すだけ
・応答を要求したらデータが流れてきますのでStreamReaderで読みます。
 Streamというのは、ファイルとかウェブとかいろんなデータを同じような方法で読み書きするための
 便利なクラスという感じです。
・string content = reader.ReadToEnd()で流れてくるデータを文字列として取り出します。
・リソース(今回はResponseやStream)は使わなくなったらClose()します
・最後に取り出した文字列を.xamlで作ったTextBoxにセットしています。
Close()の説明を入れようと思いましたが、これだけは長くなりそうなので略。。

※注意
私自身初心者なので、この連載は最後まで続くことを保証できません。。
また、いろいろと間違ったり紆余曲折すると思います。
わからないところは遠慮なくコメント、twitter等で質問してください。

第1回のソースコード

2 件のコメント:

  1. 今日、これを見ながらやらせていただきました。
    過去にプログラミングの経験はあるけど、もう素人ですw

    素人目線から見て引っかかったところを2点だけ。
    (他に引っかかる素人がでないためにもw)
    VisualStadioはC#
    新しいプロジェクトで選択するのはWPFアプリケーション
    であってますか?

    返信削除
  2. そうですー。
    がんばってください!

    返信削除