SHOEISHA iD

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

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

iPhone+Ruby on Rails連携テクニック

iPhoneとRuby on Railsを超簡単に連携する ObjectiveResource
- iPhone編


  • X ポスト
  • このエントリーをはてなブックマークに追加

 Ruby on Railsで構築したサーバーと連携してデータを表示するiPhoneアプリを作ります。iPhone編の本稿では今回作成するiPhoneアプリの実装方法について解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 Ruby on Railsサーバーアプリと連権するiPhoneアプリを超簡単に書けるObjectiveResourceに付いて書かせて頂きます吉田裕美です、宜しくお願いいたします。

 この記事は、iPhoneアプリを開発には詳しくないWebアプリを主に開発しているプログラマーと、Webアプリの開発には詳しくないiPhoneアプリのプログラマー両方の方に読んでいただけるよな構成になっています。

  • iPhone開発経験者の方は
    • iPhone編(本稿)は「ObjectiveResourceとは」を読んだら「iPhone開発入門は」さっと目を通し、
    • Ruby on Rails編はじっくりと読んでください。
  • Ruby on Rails開発経験者の方は
    • iPhone編(本稿)はじっくりと読んでください。
    • Ruby on Rails編はRuby on Railsとは」と「Ruby on Rails開発入門」さっと目を通し「ObjectiveResourceを使う」を読んでください。

ObjectiveResourceとは

 ObjectiveResourceはホームページに、

 ObjectiveResource is a framework for the iPhone that makes

 interacting with Ruby on Rails applications dead simple.

 と書かれているように、iPhoneアプリとRuby on Railsで作られたサーバーアプリを超簡単に連携するフレームワークです。iPhone SDKにあるAPIだけ使ってサーバーと連携する場合、サーバー側にはXMLやJSONでやり取りができるサービスを構築し、iPhone側からはHTTPプロトコルを使い情報を送ったり、受け取ったりします。

 例えばiPhone側でHTTPプロトコルを使った通信を行うには、以下のようなコードを書く必要がります。

  1. NSURLRequestでリクエストを作成
  2. NSURLConnectionで通信
  3. 通信エラーの処理
  4. 受信XMLデータをパース。XMLのパースにはNSXMLParserを使ったSAX風パーサーを書く必要があります。また、JSONを使う場合は、iPhone SDKにはJSONライブラリが無いので、オープンソースのライブラリを探してくる必要があります。

 ObjectiveResourceは、こういった面倒なサーバーとの通信処理を、データをやり取りするためのシンプルなクラスを用意するだけ実現できます。

 以下は、TODO、いつ(due)、何を(task)行うかの情報をObjectiveResourceを使って通信する際に用意するTodoクラスのインターフェース定義です(コードの詳細は後述します)。データを格納するだけのシンプルなクラスを定義し、そこにObjectiveResourceのヘッダーファイルをimportし、オブジェクトのIDを格納するインスタンス変数、ここではtodoIdを追加しただけです。

#import <Foundation/Foundation.h>
#import "ObjectiveResource.h"

@interface Todo : NSObject {
        NSString *todoId; 
        NSDate   *due;
        NSString *task;
}
@property (nonatomic , retain) NSString *todoId;
@property (nonatomic , retain) NSDate   *due;
@property (nonatomic , retain) NSString *task;
@end


@implementation Todo
@synthesize todoId, due, task;

- (void) dealloc
{
        [todoId release];
        [due release];
        [task release];
        [super dealloc];
}
@end

 なお、以下のようなサーバーの情報を与える初期設定を書くだけで、アプリがアクセスするサーバーを指定できます。

[ObjectiveResourceConfig setSite:@"http://localhost:3000/"];

 また、サーバーから全Todoデータを取得するには以下のように記述し、

NSArray *todos = [Todo findAllRemote];

 新規データをサーバーに登録するには以下のように記述するだけで簡単に行えます。

Todo *todo = [[Todo alloc] init];
todo.due = [NSDate date];
todo.task = @"コンサートの予約";
[todo saveRemote];

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
iPhone開発入門

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
iPhone+Ruby on Rails連携テクニック連載記事一覧
この記事の著者

吉田裕美(ヨシダユウミ)

有限会社 EY-Office 取締役CADのベンチャー企業でCADのコア部分や図面管理システムなどの開発に従事した後、独立しJava,Ruby,PerlでWebアプリを中心に開発してきた。現在は殆どの開発はRuby on Rails。ここ数年はソフトウェアエンジニアの教育に興味をもち、従来の知識偏重な教育ではなく現実の問題を解決できるエンジニアを育てる教育に注力している。またLisp等に関心...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5126 2010/04/22 15:50

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング