SHOEISHA iD

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

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

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

C#たんと学ぶ/わりと硬派なソフトウェア開発講座

C#たんと学ぶ/わりと硬派なソフトウェア開発講座
第1.5回「頼れ!Visual Studio」

C#たんと学ぶ わりと硬派なソフトウェア開発講座(2)


最終結果

 最終的には以下のようなソースコードになります。

using System;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
 
namespace XboxNewGames
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new WebClient { Encoding = Encoding.UTF8 };
            var html = client.DownloadString("http://marketplace.xbox.com/ja-JP/Games/All?xr=shellnav");
 
            var matches = Regex.Matches(html, @"/ja-JP/Pro[^""]*""\>(?<title>.*)\</a");
 
            foreach (Match m in matches)
            {
                Console.WriteLine(m.Groups["title"].Value);
            }
        }
    }
}

 実行結果は以下の通りです。

GUI化してしまおうか

 最後におまけでGUI化してしまいましょう。

 見てのとおり、xbox.comからゲームタイトルを抽出する部分は文字ベース(コンソール)版からのコピペで作っています。残りの部分もほとんどVisual Studioの生成するテンプレートどおりで、追加したコードは数行だけになります。

<Window x:Class="XboxNewGamesGui.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox Name="List" />
    </Grid>
</Window>
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows;
 
namespace XboxNewGamesGui
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
 
            this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
        }
 
        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            var client = new WebClient { Encoding = Encoding.UTF8 };
            var html = client.DownloadString("http://marketplace.xbox.com/ja-JP/Games/All?xr=shellnav");
 
            var matches = Regex.Matches(html, @"/ja-JP/Pro[^""]*""\>(?<title>.*)\</a");
 
            foreach (Match m in matches)
            {
                this.List.Items.Add(m.Groups["title"].Value);
            }
        }
    }
}

完成形

vbたん困惑
VBたん
でも、最初に「完成形」として見せたやつと比べるとずいぶんしょぼくない?
C#たん笑顔
C#たん
完成形、解説しだすと長くなるのでソースコードだけ置いておきますね(΄◉◞౪◟◉‵)ニコッ
C++たん驚き
C++たん
ちょ、なんか非同期CTPを使ってるコードが見えるんだけども。
CTPな機能、いいの?
C#たん笑顔
ええ、使いますが何か?
ちなみに、CTPっていうのはCommunity Technology Previewの略で、わかりやすく言うと、ベータ版より前の、超人柱版のことです。
人柱ですが何か?
C++たん困惑
出てまだ数か月のCTP、日本語情報もろくにないものなんて、初心者どころか、並の開発者もコンパイルできないわよ。
さては、最初から解説する気なかったでしょ(笑)

次のページ
まとめ

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

C#たんと学ぶ/わりと硬派なソフトウェア開発講座連載記事一覧

もっと読む

この記事の著者

C#たん ソフトウェア開発講座 制作委員会(シーシャープタン)

ソフトウェアに求められる要求の高度化とともに大きくなる開発者への負担を、開発ツールやフレームワーク、時には萌え力を頼りに軽減できないか考えるプロジェクト。C#たんは単なるマスコットかと思いきや、割と毒舌。自分のことは棚に上げて、「萌えればいいってもんじゃないですよ?」が信条。twitter: @cs...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5696 2011/06/30 11:19

イベント

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

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

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

メールバックナンバー