第07講 RSSリーダー
印刷を御希望の方はページ一番下の「印刷用ページ」より印刷してください。
PDFファイルとして保存したい場合も「印刷用ページ」より保存できます。
見出しに「★」マークがついた箇所は説明動画がございます。
第7講のポイント
- RSSの概念理解
- TBXMLライブラリーを用いたXMLの取得とパース
- 非同期処理の概念理解
- Table Viewの利用
はじめに
前回の「Gesture Flash」では、ジェスチャーの検知手法やNSTimerを用いた割り込み処理、精密な時間計測手法等を扱いました。
第7講のアプリは「RSSリーダー」となります。「RSSリーダー」は最新のYahoo! ニュースの一覧を取得し、見出しをユーザーに提示するアプリです。ユーザーは見出しをクリックすることで、ニュースの本文を提示するウェブページをSafariで開くことができます。

それでは、早速開発を始めて行きましょう!
プロジェクトの立ち上げと設定
新しいアプリを作る際は、まず、新規プロジェクトを立ち上げとアプリの設定を行います。
新規プロジェクトの立ち上げ
第1講と同じ要領で、新規プロジェクトを立ち上げます。その際、使用するテンプレートは「Single View Application」となります。
Product Name |
RSSReader |
Organization Name |
RainbowApps |
Company Identifier |
com.rainbowapps |
Class Prefix |
(入力なし) |
Devices |
iPhone |
Use Storyboard |
チェックを入れる |
Use Automatic Reference Counting |
チェックを入れる |
Include Unit Tests |
チェックを入れる |
アプリの設定
新規プロジェクトを立ち上げたら、アプリの設定を行います。ここで、アプリのアイコンやアプリの表示タイトル(Bundle Display Name)、サポートするデバイスの向き(Device Orientation)を設定します。
外部素材のインポート
今回使用する外部素材ファイルを一気にインポートしてしまいましょう。
今回使用する素材は以下の通りです。
icon.png |
アイコン画像 |
TBXML.h |
TBXMLライブラリー用ファイル |
TBXML.m |
TBXMLライブラリー用ファイル |
TBXML+HTTP.h |
TBXMLライブラリー用ファイル |
TBXML+HTTP.m |
TBXMLライブラリー用ファイル |
アイコン設定とサポートするデバイスの向きの設定
素材のインポートが完了したら、Project Editorを開き、アイコンをRetina Displayと書かれたエリアの上にドラッグします。
サポートするデバイスの向きとアプリの名前は以下の通り設定します。
Bundle display nameの設定
アプリの表示タイトルを決めている設定項目「Bundle Display Name」を変更します。
Project Editorの「info」タブをクリックして「Bundle Display Name」の項目を次のように変更していきます。
Bundle Display Name |
RSS Reader |
画面のデザイン
アプリの設定が完了したら、画面のデザインを行なっていきます。
Autolayoutの無効化
画面レイアウトを3.5インチ(iPhone4S以前)と4インチ(iPhone5以降)に対応させるための設定を行います。
まずはXcode4.5からデフォルトで有効になっているAutolayoutを無効にします。
※Autolayoutはまだ不安定ですので本講座はAutolayoutを無効にして画面デザインを行っていきます。
下記のように①View Controller全体を選択し、②「File Inspector」に変更して、③「Use Autolayout」のチェックを外してください。
Navigation Barの設置
画面上部に、Navigation Barを設置します。ライブラリーエリアから、Navigation Barを選択し、画面の上部にドラッグします。
Bar Button Itemの設置
その次に、「更新」ボタンをNavigation Bar上に設置します。これまで使ってきたRound Rect Buttonではなく、今回はBar Button Itemを利用します。
次に、「更新」ボタンの見た目を変更します。ボタンを選択した上で、インスペクターから、今回は通常のViewの上にTable Viewを設置していきます。ライブラリーエリアから「Identifier」を「Refresh」に変更します。これによって、ボタンの見た目が変更されることを確認してください。
この後、Navigation Barのタイトルを「Yahoo! 最新ニュース」に変更します。現状で「Title」と書かれている所をダブルクリックし、書き換えます。
Table Viewの設置
次に、Table Viewを設置します。ライブラリーエリアからTable Viewを選択し、画面を一杯に広げます。
次に、セルのフォーマットをカスタマイズします。
まず、TableViewを選択した状態で、Protootype Cellsを「1」にします。
今回は、「Prototype Cells」と記されたエリアに2つのラベルを配置します。同時にセルの大きさも少し広げます。
次に、これら2つのラベルにTag番号を設定します。まず、「タイトル」と書かれたラベルを選択し、インスペクターから以下のとおり、Tag番号を「1」とします。

同様に、「時刻」と書かれたラベルも同じようにTag番号を設定します。こちらのラベルのTag番号は「2」とします。
最後に、セルそのものに、Identifierを「NewsCell」に設定します。
これにて、画面デザインは完了となります。
RSSとHTTP通信
今回は、「RSSリーダー」を作成しますが、そもそもRSSとは何でしょうか?知っている方も多いかもしれませんが、知らない方のために少し解説します。
RSSの概要
簡単に説明すると、RSSとは、ニュースやブログなど各種のウェブサイトの更新情報を簡単にまとめ、配信するための幾つかの文書フォーマットの総称です。このフォーマットは標準化されていて、様々なウェブサイトで採用されています。
ユーザーはGoogle Reader等のアプリを使い、これらを集め、最新のニュース等を網羅的に見ることができます。また、iOSやAndroidアプリとしても、シンプルなものから高機能なものまで、様々なRSSリーダーが公開されています。
RSSのフォーマット
RSSのフォーマットですが、ファイル形式としてXMLファイルとなっています。
XMLファイルとは、Extensible Markup Language(エクステンシブル マークアップ ランゲージ)の略称で、個別の目的に応じたマークアップ言語作成のために、汎用的に使うことができる仕様、および仕様により策定される言語です。このような難しい表現を聞いてもイメージしづらいと思うので、実際のYahoo! ニュースのRSSフィードのXMLファイルを見てみましょう。
XMLファイルはタグと呼ばれるもので、構成されています。このタグは常に開始タグと終了タグのペアになっています。
これら、開始タグと修了タグの間には、別のタグを組み込むこともできます。例えば、各ニュース記事を含む「<item>」タグの中には、記事のタイトルを含む「<title>」や実際のリンクを含む「<link>」などのタグを内包しています。
今回は、このようなRSSフィードを実際にiOSアプリ上から取得し、解析し、Table View上に見やすく列挙します。
HTTP通信
HTTP通信は、Webサイトを閲覧する時に使用する通信方式です。HTTP通信は、昨今のインターネット通信において、最も利用されている方式であるといっても、過言ではないでしょう。
今回もRSSフィードを取得するにあたって、このHTTP通信を利用します。詳しい動作の仕組みの説明は割愛しますが、興味のある方はぜひ調べてみてください。
バックグラウンド処理
今回扱うHTTP通信の速度は、データの大きさやインターネット回線の状況に左右されます。故に、大幅な遅延も容易に想定できます。
特段説明はしませんでしたが、これまで様々な処理を実装して実行する際、フロント側(UIスレッド)で行うようにコードを記述してきました。基本的には、これで問題はないのですが、HTTP通信等、時間のかかってしまう処理をフロント側でやってしまうと、処理が修了するまでは、あたかもアプリが壊れたかのように固まってしまいます。
そこで、このように時間のかかる処理はバックグラウンド側(別スレッド)で処理する必要があります。詳しい技術的な説明は割愛しますが、レストランで食事を注文した後、料理が完成するまでは、お客さんが談笑できるように、料理そのものは裏手の厨房で行われます。それと同じように、プログラミングにおいても、「重たい処理は見えないところでやる」というイメージを持ってもらえれば結構です。このような処理方式を「非同期処理」といいます。
TBXMLライブラリー
今回は、このXMLファイルをHTTP通信によって取得し、解析するにあたって、「TBXML」という外部ライブラリーを使用します。このライブラリーは非同期のHTTP通信を用いて、所定のXMLファイルを取得し、解析するところを担当してくれる非常に優れたライブラリーです。TBXMLライブラリーの使用法は、コーディングをする段階で解説します。
HTTP通信やXMLの解析処理などは自分で実装することも可能ですが、非常に複雑で煩雑なコーディングが伴います。そこで、自分のアプリを作成するときも、このような外部ライブラリーを積極的に活用していきましょう。
コードの記述
ここでは、「RSSリーダー」のコードの記述をしていきます。
Newsクラスの実装
まずは、ニュースのタイトルやリンク、日時等を包括的に扱うNewsクラスの実装から行います。
新規クラスの作成
これまでと同じ方式で、Xcode上で「News」というObjective-Cの新規クラスを作成しましょう。

正しく行った場合、News.hとNews.mという2つのファイルが出来上がるはずです。
Newsクラスのコーディング
Newsクラスは、包括的にニュース記事の情報を扱うための非常にシンプルなクラスです。以下のとおり、メンバー変数を宣言し、外部クラスからの参照ができるように、プロパティの設定を行います。
News.h
@interface News : NSObject
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *url;
@property (nonatomic, strong) NSString *date;
@end
|
View Controllerのコーディング
次にView Controllerのコーディングを行います。
メンバー変数の宣言
まずはメンバー変数の宣言から行なっていきます。
ViewController.m
@implementation ViewController {
//XMLオブジェクト
TBXML *rssXML;
//最新ニュースを格納する配列
NSMutableArray* elementList;
//Table Viewインスタンス
IBOutlet UITableView *table;
//Safariに渡すURL
NSURL *urlForSafari;
}
|
ここで、TBXMLクラスを利用するために、インターフェースファイル(ViewController.h)に以下のような記述を行います。
ViewController.h
#import <UIKit/UIKit.h>
#import "TBXML.h"
#import "TBXML+HTTP.h"
|
ここにあるTBXMLクラスが、今回XMLファイルの取得と解析を行うためのものです。このクラスのインスタンスの「rssXML」を用いることで、XMLを取得から解析まで、包括的に扱えるのです。
Newsクラスの利用準備
次に、View ControllerからNewsクラスを利用するためにインターフェースファイル(ViewController.h)に以下のような記述を行います。
ViewController.h
#import <UIKit/UIKit.h>
#import "TBXML.h"
#import "TBXML+HTTP.h"
#import "News.h"
|
XMLの取得
まずはXMLを取得する処理を実装します。以下の通り、ViewController.mにメソッドを記述して下さい。
ViewController.m
//HTTP通信を利用してXMLを取得
- (void) getXML {
NSString *urlString = @"http://rss.dailynews.yahoo.co.jp/fc/rss.xml";
NSURL *url = [NSURL URLWithString:urlString];
//成功時のコールバック処理
TBXMLSuccessBlock successBlock = ^(TBXML *tbxmlDocument) {
NSLog(@"「%@」の取得に成功しました。", url);
//XMLを解析
[self parseXML];
};
//失敗時のコールバック処理
TBXMLFailureBlock failureBlock = ^(TBXML *tbxmlDocument, NSError * error) {
NSLog(@"「%@」の取得に失敗しました。", url);
};
//ステータスバーのActivity Indicatorを起動
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
//URLで指定したRSSのXMLをバックグラウンドでダウンロード
rssXML = [TBXML tbxmlWithURL:url success:successBlock failure:failureBlock];
}
|
まず、Yahoo! ニュースの最新記事のRSSフォードを取得するためのURLは、以下のとおりです。
http://rss.dailynews.yahoo.co.jp/fc/rss.xml
|
|
TBXMLクラスで、URLを引数として「tbxmlWithURL」メソッドを呼び出します。これによって、非同期のHTTP通信が行われ、所定のXMLファイルが「rssXMLに格納されます。この際、失敗したら「failureBlock」のコールバック処理が呼ばれ、成功したら「successBlock」のコールバック処理が呼ばれます。
コールバック処理は、非同期処理に用いられる典型的なテクニックです。非同期処理は表側からは様子を伺うことができないため、何もしないままでは、成功したか、失敗したかを把握することができません。そこで、このようなコールバック処理を用いることで、バックグラウンドでの処置が完了、または失敗した際に、表側に割り込みをかけて、所定の処理を実行することができます。
次のセクションで、ここにある「parseXML」という、XMLの解析処理を行うメソッドを呼び出します。
また、XMLを取得中は、画面最上部のステータスバーにNetwork Activity Indicatorを設置します。
これを用いることで、ユーザーにネットワーク通信を行なっていることを示せます。その具体的な手法は以下の通りです。
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; |
XMLの解析処理
XMLは生データのままでは、単純な文字列のままです。これを処理することによって、タグ毎に切り分け、求める情報を抽出していきます。この作業を「パース」といいます。
まずは、以下のとおりViewController.mに記述します。
ViewController.m
//取得したXMLをパース(解析)
- (void) parseXML {
//elementListを初期化
elementList = [[NSMutableArray alloc] init];
//XMLの最初の要素<rss>を取得
TBXMLElement *rssElement = rssXML.rootXMLElement;
//<rss>以下の<channel>を取得
TBXMLElement *channelElement = [TBXML childElementNamed:@"channel" parentElement:rssElement];
//実際のニュース項目を記録した<item>を取得
TBXMLElement *itemElement = [TBXML childElementNamed:@"item" parentElement:channelElement];
//<item>の数だけ繰り返し
while (itemElement) {
//<item>以下の<title>を取得
TBXMLElement *titleElement = [TBXML childElementNamed:@"title" parentElement:itemElement];
//<item>以下の<link>を取得
TBXMLElement *urlElement = [TBXML childElementNamed:@"link" parentElement:itemElement];
//<item>以下の<pubDate>を取得
TBXMLElement *dateElement = [TBXML childElementNamed:@"pubDate" parentElement:itemElement];
//それぞれの要素のテキスト内容をNSStringとして取得
NSString *title = [TBXML textForElement:titleElement];
NSString *url = [TBXML textForElement:urlElement];
NSString *date = [TBXML textForElement:dateElement];
NSLog(@"%@ %@", title, url);
//新しいNewsクラスのインスタンス生成
News *n = [[News alloc] init];
//nにタイトル・URL・日時を格納
n.title = title;
n.url = url;
n.date = date;
//nをelementListに追加
[elementList addObject:n];
//次の<item>要素へ移動
itemElement = itemElement->nextSibling;
}
//バックグラウンドでの処理完了に伴い、フロント側でリストを更新
[self refreshTableOnFront];
}
|
少し長いコードですが、順を追って説明します。その前に、もう一度今回解析するYahoo! ニュースのRSSフィードを見て行きましょう。
今回扱っているYahoo! ニュースのRSSフィードは以下のような、階層構造となっています。
<rss>
└ <channel>
├ 様々なメタ情報
├ …
├ <item>
│ ├ <title> タイトル
│ ├ <link> リンク
│ ├ <pubDate> 日時
│ └ <guid> ID
├ <item>
├ …
└ <item>
|
|
この中から、各「<item>」の「<title>」と「<link>」、「<pubDate>」を得るためには、以下の戦略をとります。
- <rss>タグの中身を抜き出し…(ア)
- (ア)から<channel>の中身を抜き出し…(イ)
- (イ)から<item>の中身を1つずつ抜き出し…(ウ)
- Newsクラスのインスタンス「n」を生成…(エ)
- (ウ)から<title>と<link>と<pubDate>を抜き出し、「n」に格納…(オ)
- 「n」を「elementList」に追加
以上の「<item>」の数だけ、(エ)と(オ)の処理を繰り返します。このように、XMLをパースし、必要な情報をNewsクラスのインスタンスに格納し、ニュースをとりまとめた「elementList」という配列を構築します。
Table Viewの利用
ここまでの処理で、XMLの取得と解析ができました。次にTable Viewの扱い方を解説します。その前に、Table Viewを利用するための準備を行います。以下のとおり、ViewController.hにプロトコルの設定を記述して下さい。
ViewController.h
【変更前】
@interface ViewController : UIViewController
↓
【変更後】
@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
|
次に、Table Viewが表示されるために必要とする3つのメソッドを実装していきます。
ViewController.m
//Table Viewのセクション数を指定
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
//Table Viewのセルの数を指定
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [elementList count];
}
//各セルにタイトルをセット
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//セルのスタイルを標準のものに指定
static NSString *CellIdentifier = @"NewsCell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//カスタムセル上のラベル
UILabel *titleLabel = (UILabel*)[cell viewWithTag:1];
UILabel *dateLabel = (UILabel*)[cell viewWithTag:2];
//セルにお気に入りサイトのタイトルを表示
News *f = [elementList objectAtIndex:[indexPath row]];
titleLabel.text = f.title;
dateLabel.text = f.date;
return cell;
}
|
まず、最初に1つ目のメソッドでテーブルのセクションの数を設定し、2つ目のメソッドでセルの個数を設定します。これらを元に、セルが準備されるので、3つめのメソッドでセルの内容を埋めます。
3つ目のメソッドでセルの内容を埋める際に、Cell のIdentifierを指定している点に着目して下さい。このIdentifierが、Interface Builder上で設定したものとなっています。
static NSString *CellIdentifier = @"NewsCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
|
また、タイトルと日時をラベルに流しこむ際に、Tag番号を指定しているところにも着目して下さい。
//カスタムセル上のラベル
UILabel *titleLabel = (UILabel*)[cell viewWithTag:1];
UILabel *dateLabel = (UILabel*)[cell viewWithTag:2];
|
なおラベルに関してですが、今回はこの段階で、Tag番号を用いた関連付けを行なっているため、Interface Builder上で関連付けを行う必要はありません。
ここで、一点、RSSの標準の日時に形式は、以下の通りとなっています。
Sat, 11 Feb 2012 11:51:52 +0900 |
RSSフィードでは、世界標準時で日時として記載されます。今回はこの形式のままラベルに表示させますが、余力がある場合、ぜひこれを日本標準時に直してみて下さい。
Table View表示内容更新処理
ここまでで、Teble Viewへデータを流しこむところまで出来ました。通常、この処理は「viewDidLoad」等の初期処理が完了した直後に呼ばれます。一方で、今回は非同期処理を用いてRSSの取得と解析を行なっているので、初期処理が完了した時点で必要なデータが揃っているとはかぎりません。そこで、データの呼び込みの修了と同時に、リストの内容を更新し、最新の内容を反映する処理を実装して行きましょう。ViewController.mに以下のようなコードを記述して下さい。
ViewController.m
//フロント側でテーブルを更新
- (void) refreshTableOnFront {
[self performSelectorOnMainThread:@selector(refreshTable) withObject:self waitUntilDone:TRUE];
}
//テーブルの内容をセット
- (void)refreshTable {
//ステータスバーのActivity Indicatorを停止
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
//最新の内容にテーブルをセット
[table reloadData];
}
|
これら処理によって、Table Viewが最新の情報を用いて書き換えられます。先程実装した、XMLのパースを行う「parseXML」というメソッドで、パース処理が完了した際に、「refreshTableOnFront」が呼ばれるようになっています。今一度、コードを確認してみてください。
その段階では、ネットワーク通信は完了しているので、ここで、ステータスバーのNetwork Activity Indicatorを非表示にするメソッドを呼びます。その上で、リストを更新する「reloadData」というメソッドを呼びます。
特質すべきことは、今回、これら処理を強制的にフロント側で行わせるために、「performSelectorOnMainThread」メソッドを用いて、Table Viewを更新していることです。
Table Viewのセル選択時の処理
今回の「RSS」リーダー」では、セルをクリックすると、該当するニュースの本文を記したウェブページへSafariで開くよう、誘導するようにします。
まずは、セルがクリックされた時に呼ばれるメソッドから記述していきます。以下のように、ViewController.mに記述して下さい。
ViewController.m
//リスト中のお気に入りアイテムが選択された時の処理
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//選択された項目のURLを参照
News *n = [elementList objectAtIndex:[indexPath row]];
NSString *selectedURL = n.url;
urlForSafari = [NSURL URLWithString:selectedURL];
//Safariを起動するかどうかを確認
[self goToSafari];
}
|
ここでは、選択されたセルに該当するニュースのURLを参照し、Safariで開くようにしています。次に、実際にSafariを呼び出すメソッドを実装していきます。
ViewController.m
//本当にSafariにを起動するかを確認するalert View表示
- (void)goToSafari {
//メッセージを表示
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Safariの起動"
message:@"このニュースをSafariで開きますか?"
delegate:self cancelButtonTitle:@"いいえ"
otherButtonTitles:@"はい", nil];
[alert show];
}
|
ここでは、Safariでページを開くかどうかを聞くUIAlertViewを立ち上げています。UIAlertViewとは、iOSアプリで表示されるポップアップ通知です。

先程記述した「goToSafari」メソッドが呼ばれた際、このようなポップアップが表示されます。しかし、これだけではSafariは開かれません。UIAlertViewのボタンを検知する必要があるからです。
そこで、以下のように、UIAlertViewのボタンが押された時に呼ばれるメソッドを記述します。
ViewController.m
//alert View上のボタンがクリックされた時の処理
//「はい」が押されたときはSafariを起動
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"いいえ"]) {
NSLog(@"Safari起動キャンセル");
} else if([title isEqualToString:@"はい"]) {
NSLog(@"Safari起動");
//アプリからSafariを起動
[[UIApplication sharedApplication] openURL:urlForSafari];
}
}
|
このように、自分のアプリから、Safariを起動する際は、以下のようなメソッドを呼び出します。この時、開くべきURLも指定することができます。
[[UIApplication sharedApplication] openURL:【サイトのURL】]; |
View Controllerの初期処理
ここで、View Controllerの処理を行うべく、「viewDidLoad」の内容を以下の通り編集します。
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
//XMLを取得・解析
[self getXML];
}
|
ここで、XMLの取得、解析、及びTable Viewの更新を行うべく、「getXML」メソッドを呼びます。
RSSフィードの更新
今のままでは、一度アプリが起動してRSSフォードが読み込まると、更新する手段がありません。そこで、「更新」ボタンが押されたときに呼ばれるIBAction型のメソッドを実装し、更新機能を付け足します。
以下のとおり、ViewController.mを指定して下さい。
ViewController.m
//フィードを更新
-(IBAction)refreshList:(id)sender {
//最新のRSSフィードを取得
[self getXML];
}
|
「更新」ボタンが押されると、初期処理の時と同様、XMLを取得、解析し、Table Viewを更新する「getXML」メソッドが呼ばれるようにします。
UI画面とコードの関連付け
ここまでで、基本的にコードの記述は全て完了となります。そこで、これまでに設置したUI画面上の部品とコード上の処理を関連付けます。
Table Viewの関連付け
以下のとおり、Table Viewの関連付け設定を行います。

まず、Referencing Outletsとして、Table ViewをView Controller上の「table」と関連付けます。その後、Outletsの「dataSource」と「delegate」を、それぞれ「View Controller」に設定します。
「更新」ボタンの関連付け
最後に、「更新」ボタンを関連付けます。「Sent Actions」以下にある、「Selector」をView Controllerの「refreshList」と関連付けます。
ビルドと動作試験
これにて、すべての作業は完了となります。編集内容を全て保存し、ビルドを行なってください。このテキストの内容をすべて正しくやった場合、特に問題なくアプリが動作するはずです。
起動時にRSSが正常に取得され、Table Viewのリスト上に表示されることを確認して下さい。また、セルをクリックすると、アラートが表示され、「はい」を押すとSafariが起動し、ニュースのページが表示されることも確認して下さい。さらに、少し時間を置き、「更新」ボタンを押すと新しいニュースがロードされることも確認して下さい。
まとめ
第7講では、RSSやXML、HTTP通信、非同期処理の概念を得るとともに、TBXMLライブラリーを用いたXMLの取得と解析(パース)を学びました。また、Table Viewの利用法やUIAlertViewを用いたアラートメッセージの表示、さらにはSafariの呼び出し手法等を取り扱いました。
今回扱った内容も、よく使われているテクニックばかりです。XMLの取得やパース等の具体的なテクニックも重要ですが、今後アプリを作成する上で、外部ライブラリーの使用や、非同期通信の概念の理解も大切となってきます。この際に、理解を深めるようにしましょう。
次回も、同じように通信を扱うアプリとなっています。また、新しい考え方として、「リレーショナルデータベース」というものを扱っていきます。引き続き頑張って行きましょう。