はてなブックマークに追加

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
はてなブックマークに追加

素敵BOXという名のフォルダ


僕のデスクトップの左上にはいつも
素敵BOXという名のフォルダがある。

sutekibox1.jpg

その名の通り、このフォルダの中には素敵なものがいっぱい詰まっている。
画像だったり、動画だったり、本のタイトルだったり。

sutekibox2.jpg

子供のおもちゃ箱みたいなものだ。
中身が整理されていないところも、また然り。


整理するということは、ものに属性をつけ、カテゴリで縛ること。
そうやって、整理していけば、
どんどん自由度が失われて、どんどん不自由に、
そしてどんどん明快になっていく。


人は分かりやすいことが大好きだから
整理することが大好きだ。
頭のいい人は、本質を抽出する能力に長けている。
ふたことめには、「その本質は・・」だ。
そういうのは、あまり好きじゃない。


すべてを曖昧なまま、
そして、自由なままにしておきたい。
そうすれば、いろんな物がいろんな次元で繋がり始める。
それは、とても綺麗なこと。
このインスピレーションは本質からは決して得られない。


素敵BOXの中はあらゆるものが部分であり、
部分があらゆるものを構成している。
部分は創発をくりかえし、
そしてインスピレーションへと収束する。


綺麗であるということと
余分ということは同義なのかもしれない。





はてなブックマークに追加

iPhoneアプリ開発のための参考書Top3


iPhoneアプリを作りたいんですけど、どの参考書で勉強したらいんですか?
という単純明快な問に対して、参考書マニアの僕が答えましょう(笑)

実は、大学の図書館に今発売されているiPhoneの参考書がほぼ揃っているんですね。
そして、僕はそれをすべて読んだわけですよw(さすが参考書マニア。別名暇人)
その上で、コレは読んどけ!を3冊ピックアップしてみましょう。


1冊目

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩
赤松 正行
秀和システム
売り上げランキング: 3045


これ以上の入門書は、もう出てこないんじゃあないかと思わせるぐらい
素晴らしい本です。僕のゼミでもテキストとして使用しています。
ゼミと言っても、この本を最初から最後まで5回読ませるというスパルタゼミですが(笑)

1周目は理解しながらプログラムを打つ、
2周目は考えながら、本を見ながら打つ、
3周目以降は打つべし!打つべし!打つべし!です(笑)

ゼミをやる方は、この本を使えばとっても楽ですよ☆
ゼミをやられる方は、この本を使えば天国と地獄が見えますよ☆


2冊目

Beginning iPhone 4 Development: Exploring the iOS SDK
David Mark Jack Nutting Jeff LaMarche
Apress
売り上げランキング: 63492


こちらも洋書ですが、文句なしの良書です。
日本語に訳された本が出ていますが、ゴミですので注意してください。

この本の特徴は洋書ならではの丁寧な説明。
日本の参考書みたく「ページの関係上割愛します」ってのがない。
洋書は分厚くなっても良いから丁寧に説明するという風潮があるようです。
ちなみに「ページの関係上割愛します」と書いてある参考書は大概、ゴミ予備軍です。
(僕の経験上w)

こちらはアプリにまで仕上げるというよりも
各部品の使い方や説明などが丁寧にされています。
上で紹介した「iPhone SDKの教科書」とあわせて読めば
鬼に金棒でしょう(表現がFULLすぎる)


あらら。
2冊紹介したところで、無敵になっちゃいましたね。
実際、この2冊+Appleのリファレンスがあればなんとかなります。
ということで、ページの関係上3冊目は割愛しますか(笑)



3冊目


iPhone SDK Programming Manual
iPhone SDK Programming Manual
posted with amazlet at 10.09.24
株式会社テクノロジックアート
ソーテック社
売り上げランキング: 282587



この本は上の2冊とはちょっと毛色が異なっていて
どちらかというとiPhoneアプリのバックグラウンドというか
InterfaceBuilderが裏で何をやっているかといった内容に重点をおいて書かれています。

こういう、他の参考書ではあまり紹介されていないところが
しっかり説明してあったので、おっ!と思ったわけです。
今、パラパラ見返してみたんですけどXMLパースのサンプルとか載ってますね(笑)

全くこの本を見ずに
iPhoneネットワークプログラミング その5
書いてましたがw


ということで、これが僕のオススメ参考書Top3でした。
3冊目はエキストラな感は否めませんが、読んでも絶対損はしない一冊になっています。
くれぐれも2冊目は洋書で読んでくださいね(くどい)



はてなブックマークに追加

iPhoneアプリ:RSSリーダを作る




サイトを移行しました。
iPhoneアプリと、そのプログラム



iPhoneネットワークプログラミングの第4回と第5回
iPhoneネットワークプログラミング その4
iPhoneネットワークプログラミング その5
のまとめとして、今度はRSSリーダを作ってみましょう。

今回作るRSSリーダは、
プログラム内にハードコーディングされたRSSフィードから情報を読み取り、
iPhone上に記事のタイトルを表示し、各記事のタイトルをタップすると
Safariでその記事が読める、という非常に高機能な仕上がり(笑)
役に立たない度合いは、前回作成した画像ビュアといい勝負w
iPhoneアプリ:画像ビュアを作る

完成図はこちらです。
今回はプログレスバーすらついておりませんが・・

rssreader1.jpg rssreader2.jpg


さて、ではXcodeで開発を進めていきます。
毎度おなじみの手順ですが、今回はプロジェクトの種類をNavigation-Basedで作成しています。

Xcodeの「新規作成」-> 「ファイル」->「新規プロジェクト」を選択。
プロジェクトの種類「Application」でテンプレート「Navigation-based Application」を選択。
プロジェクト名は「RssReader」にします。

今回はIB側での操作はありません。
早速、Xcodeにプログラムを書いていきましょう。
といっても、ほとんどが概出のものですので、理解はしやすいと思います。

RootViewController.h
@interface RootViewController : UITableViewController 
{
NSXMLParser * xmlParser;
NSMutableArray *titles, *links;

NSString *currentElement;
NSMutableString *currentTitle, *currentLink;
}
@end


今回のプログラムでは記事のタイトルの他に、記事へのURLが必要なので
第4回の内容に加えて、currentLinkという変数を追加しています。
また、記事のタイトル、URLをそれぞれtitles, linksという名前のNSMutableArray に格納します。
図示すればこんな感じです。

rssreader3.jpg

はい、まともなプログラマならNSDictionaryを使いますね(笑)
今回は、サンプルプログラムということで分かりやすさ優先で。

次にRootViewController.mにxml用のデリゲートメソッドを追加していきます。
内容は第4回とほぼ同じですね。
didEndElementのなかで、記事タイトルとURLをそれぞれの配列に格納しています。

- (void)viewDidLoad {
[super viewDidLoad];

NSURL *xmlURL = [NSURL URLWithString:@"http://iiphoneapp.blog51.fc2.com/?xml"];
xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];

// 領域確保
titles = [[NSMutableArray alloc] init];
links = [[NSMutableArray alloc] init];

// 各種設定
[xmlParser setDelegate:self];
[xmlParser parse];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];

if ([elementName isEqualToString:@"item"]) {
currentTitle = [[NSMutableString alloc] init];
currentLink = [[NSMutableString alloc] init];
}
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
} else if( [currentElement isEqualToString:@"link"]) {
[currentLink appendString:string];
}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
[titles addObject:currentTitle];
[links addObject:currentLink];

[currentTitle release];
[currentLink release];
}
}


ここまでで、RSSのパースは完成です。次にTableViewの設定を行ないます。
下記の各プログラムをRootViewController.mに追加or編集してください。

まずは tableView:numberOfRowsInSectionメソッドを次のように変更してください。
ここでは、テーブルに格納する行数をタイトルの記事の数と指定しています。

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section {
return [titles count];
}


次に、tableView:(cellForRowAtIndexPathメソッドの最後(return cell; の前)に
下記の2行を追加してください。このように記述することで、テーブルカラムに記事のタイトルを設定できます。

int index = [indexPath indexAtPosition: [indexPath length] - 1]; 
cell.textLabel.text = [titles objectAtIndex:index];



さて、最後にセルがタップされた時のアクションを設定します。
1行目でタップされたセルの行数をindexに格納します。
2行目でlinks配列から当該URLをとりだし
3行目で改行文字の削除
4行目でSafariを開いています。

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
int index = [indexPath indexAtPosition: [indexPath length] - 1];
NSString * link = [links objectAtIndex:index];

[link stringByPaddingToLength:([link length]-3) withString:@"" startingAtIndex:0];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:link]];
}


ここまで記述できたら、実行して動作するか確認してみてください。
なお、この記事作成にあたっては、ここを参考にさせていただきました。
あわせて御覧ください。

はてなブックマークに追加

パステル!ぱすてる!バス出る!


iPhoneアプリ「ぱすてる」を本日リリースいたしました。
読み込んだ画像をパステル調に変換するiPhoneアプリです。

pastel1.jpg


例えば、こんなコスモスの写真を読み込むと・・

pastel2.jpg

こういうふうに変換されて出力されます

pastel3.jpg


もう一例。神戸はモザイクの写真です。

pastel4.jpg

こちらも、こんな感じに変換されます。

pastel5.jpg


画像の色合い、リアリティ、明度は自分好みに変更できます!
ぜひ、このアプリを使って、カメラロールの写真をパステル調にしてみて下さい☆

ご購入はこちらから。
banner.png
はてなブックマークに追加

iPhoneネットワークプログラミング その5




サイトを移行しました。
iPhoneアプリと、そのプログラム



第5回はiPhoneでXMLの解析をしてみたいと思います。

XMLの解析をするためには、XMLパーサが必要なのですが、
大きく分けて2種類のパーサが存在します。

それがDOM(Document Object Model)とSAX(Simple API for XML)です。
DOMでは、全てのXML情報を一度メモリに読み込み木構造に展開します。
それに対してSAXでは、シーケンシャルに情報を読み込んでいきます。
雰囲気的にはC言語でいうfgetsとgetcの違いみたいな感じです。

iPhoneではメモリの制約が厳しいため、DOMではメモリ不足が起こる可能性があります。
そこで、Cocoa標準のSAXパーサであるNSXMLParserクラスを使用します。

次に、RSSファイルのXMLの構造を見てみましょう。
itemタグで囲まれた部分が一つの記事に相当します。
ひとつの記事は、タイトル、概要、アドレス、更新日時などの情報から構成されています。

nsxmlparser1.jpg


ではNSXMLparserクラスを使って上のXMLを解析していきます。
View-Based ApplicationのViewControllerクラスにプログラムを追加していきます。

sampleViewController.h

@interface sampleViewController : UIViewController
{
NSXMLParser * xmlParser;
NSString * currentElement;
NSMutableString *currentTitle;
}
@end


sampleViewController.m

- (void)viewDidLoad {
[super viewDidLoad];

NSURL *xmlURL = [NSURL URLWithString:@"http://feeds.feedburner.com/TheAppleBlog"];
xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[xmlParser setDelegate:self];
[xmlParser parse];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
currentTitle = [[NSMutableString alloc] init];
}
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
NSLog(@"adding story: %@", currentTitle);
[currentTitle release];
}
}


viewDidLoadメソッドの中でNSXMLParserのインスタンスを作成し、
その初期化処理を行っています。具体的にはRSSのURL登録とデリゲートの設定です。
viewDidLoad以下の3つのメソッドがそのデリゲートメソッドになります。

まず一つめのデリゲートメソッドでitemタグの入りを見つけます。
itemタグが見つかればタイトルを格納するための文字列領域を確保します。

nsxmlparser2.jpg

2つ目のデリゲートメソッドで、実際のXMLファイルの解析をします。
今回のプログラムではタイトルの文字列を取得し、currentTitleに繋げていきます。
タイトルなどの文字列はサーバから一度に送られてくるわけではなく、分割されて送信されてくるので、
このように、iPhone側でappendStringを用いて再構成する必要があります。

nsxmlparser3.jpg

最後のデリゲートメソッドは解析終了時にコールされます。
今回のプログラムではここでタイトルを表示しています。

nsxmlparser4.jpg


実行してみて、実際にブラウザで見ることが出来るものと
タイトルが一致しているかどうか、確認してみてください。

開発アプリ

iDOF 色影 ラテアート ぱすてる

プロフィール

hokuson

Author:hokuson
京都在住。iPhoneアプリ「色影」や「iDOF」の開発者。アプリのレビューとかもしてみる。博士後期課程@R大学。ついに就職活動なるものをしなければいけないらしい。誰か雇ってください。笑。

カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
カテゴリ
最新コメント
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。