August 2009 Archives

Google Documentsにあるドキュメントデータに、iPhoneアプリケーションからアクセスするには、Google Data APIs Objective-C Client Libraryを使用するのが便利であることを、これまでに説明してきました。

Google Data APIのObjective-Cクライアントを動かしてみる
iPhoneアプリケーションに、Google Data APIクライアントを組込む

前回までは、準備作業のみでしたが、今回は、具体的なプログラミングについて、見ていきたいと思います。とりあえず、ファーストステップとして、Google Documentsから、ドキュメントの一覧を取得する処理を例に説明します。

サービスオブジェクトの生成

このクライアントライブラリでは、すべてのリクエストのハンドリングを、「サービスオブジェクト」と呼ばれるオブジェクトを介して行います。まずは、そのオブジェクトを生成して、通信するための準備をする必要があります。
以下に、サービスオブジェクトを生成するためのコーディング例を示します。
/**
 * サービスオブジェクトを生成します。
 * @param username ユーザ名
 * @param password パスワード
 * @return サービスオブジェクト
 */
- (GDataServiceGoogleDocs *)docsServiceWithUserName:(NSString *)username password:(NSString *)password {
    
    // サービスオブジェクトの宣言
    // インスタンスは再利用できるよう、キャッシュしておきます。
    static GDataServiceGoogleDocs *service = nil;
    
    if (!service) {
        // 初回のみ、インスタンスを生成して、必要な初期設定を行います。
        service = [[GDataServiceGoogleDocs alloc] init];
        
        [service setUserAgent:@"MyCompany-SampleDocsApp-1.0"]; // 自分のアプリに固有な名称
        [service setShouldCacheDatedData:YES];
        [service setServiceShouldFollowNextLinks:YES];
    }
    
    if ([username length] && [password length]) {
      // ユーザ名/パスワードを設定します。
     [service setUserCredentialsWithUsername:username
                                       password:password];
    } else {
        [service setUserCredentialsWithUsername:nil
                                       password:nil];
    }
    
    return service;
}


MKMapViewに表示した地図を画像(UIImage)に変換たい場合があると思います。

以下に、地図画像をUIImageに変換した上で、iPhoneのフォトアルバムに保存する際の実装例を示します。
以下の実装例では、MKMapViewには、すでに地図が表示されている前提です。

-- MyViewController.h --

-- MyViewController.m --

前回のエントリで、クライアントライブラリを入手して、サンプルアプリケーションをビルド/実行するまでの手順を説明しました。

Google Data APIのObjective-Cクライアントを動かしてみる

今回は、クライアントライブラリを、実際にiPhoneアプリケーションから利用するための手順について、説明したいと思います。
(すでに、クライアントライブラリのプロジェクトを入手済みであることを前提とします)

手順は、以下のドキュメントでも説明されています。

GDataObjCIntroduction - gdata-objectivec-client - Introduction for Objective-C Developers - Project Hosting on Google Code

具体的な操作イメージがしにくいところがあるので、以下に、補足説明します。

クライアントライブラリのソースへのリンクを張る

クライアントライブラリのプロジェクト(GData.xcodeproj)と、自分のアプリケーションのプロジェクトを、Xcodeで開きます。そこで、クライアントライブラリのソースをドラッグ/ドロップで、自分のアプリケーションプロジェクトに取り込みます。

GDataSrcLink.png
このときに、コピーではなく、「リンク」を選択してください。

ビルドオプションを設定する

メニューの、プロジェクト --> プロジェクト設定を編集で、プロジェクト情報編集パネルを開き、「ビルド」タブを選択します。そこで、以下の通り設定します。

Xcode_prj_setting1.png

Xcode_prj_setting2.png

この状態で、プロジェクトをビルドし、エラーが出なければ、組込みは成功です。
次回は、実際のコーディングイメージについて、説明したいと思います。


MapKitを使った地図の表示

| 0 TrackBacks
iPhone SDKで提供されているMapKitの機能を利用すると、簡単に地図を表示することができます。

ポイントは、以下の通りです。
  • MKMapViewを画面に配置する。
  • MKMapViewの中心座標(緯度経度)と、表示領域をsetRegion:animated:で設定する。
  • 地図のダウンロードに失敗した際のハンドリングを必ず実装。

以下に、実装例を示します。
以下の実装例では、GPSから取得した位置情報を元に、地図を表示する例を示します。

-- MyViewController.h --
 
-- MyViewController.m --

現在、Appleに申請中の、Export for Google Documentsというアプリケーションでは、Google Data APIを使用して、Google Documentsサービスに置かれているドキュメントアクセスしています。
Google Data APIのサイトで、APIの詳しい説明がされていますが、iPhoneアプリケーション開発に特化した内容は、あまり多くありませんので、開発作業の中で得たノウハウを、何度かに分けて紹介したいと思います。

Google Data APIには、さまざまなプログラミング言語のための、クライアントライブラリが、サンプルとともに提供されているので、各プロトコルの詳細を完全に理解しなくても、開発することができます。iPhoneアプリケーション開発の場合は、当然のことながら、Google Data APIs Objective-C Client Libraryを使用します。今回はそのライブラリを入手して、サンプルを起動するまでを説明したいと思います。
プロトコルやAPIの詳細な説明は、Google Data APIのサイトを参照してください。

注: 各サンプルは、MacOSXで実行するためのアプリケーションになっており、iPhoneでそのまま実行可能なサンプルは、提供されていません。


API概要

Google Data APIは、Googleが提供する各種WebサービスにアクセスするためのAPI群の総称であるとともに、各APIに共通の基本的なプロトコルの定義です。

Google Documentsの機能を利用するには、その中の、以下のAPIを使用します。
スプレッドシートだけは、他の種類のドキュメントと、扱い方が異なるため、別のAPIになっています。


現在、申請中のLocation Clipというアプリケーションでは、iPhone SDKで提供されているCoreLocationやMapKitの機能を利用して、GPSの位置情報を元に地図を表示しています。

今日から、このLocation Clipの中で実装していることを、技術トピック別に紹介していきたいと思いますので、どうぞよろしくお願いします。

それでは、今日は、表題にある通り「CoreLocationを使ったGPSからの位置情報の取得」についてです。

iPhone SDKで提供されているCoreLocationの機能を利用すると、簡単にGPSから位置情報を取得することができます。

ポイントは、以下の通りです。
  • CLLocationManagerのインスタンスを作成し、delegateを設定。delegateには、CLLocationManagerDelegateプロトコルを実装しているオブジェクトを設定すること。
  • CLLocationManagerのstartUpdatingLocationを呼び出すことで、GPSからの位置情報の取得を開始する。
  • GPSから位置情報が取得できた場合には、CLLocationManagerDelegateのlocationManager:didUpdateToLocation:fromLocation: が呼び出される。(CLLocationManagerのstopUpdatingLocationが呼び出されるまでの間、不定期に何度か呼び出される。)
  • GPSから位置情報が取得できなかった場合には、CLLocationManagerDelegateのlocationManager:didFailWithError: が呼び出される。
  • CLLocationManagerのstopUpdatingLocationを呼び出すことで、GPSからの位置情報の取得を停止する。

以下に、実装例を示します。

-- MyViewController.h --


-- MyViewController.m --


実行すると、ログには、以下のように出力されます。



このたび、弊社では、法人としてiPhone Developer Programに登録しました。
私は、個人でもDeveloper Programに登録していますが、そのときとは、勝手が違うところがいくつかありました。せっかくなので、そのあたりについて、ちょっとまとめておきたいと思います。

契約の種類

法人の場合、以下の2種類の契約形態があります。
  • Standard Company: 会社名でAppStoreからアプリケーションを配布する。
  • Enterprise: 自社内で配布するアプリケーションを開発する。

今回は、AppStoreから、アプリケーションを配布することが目的なので、"Standard Company"で登録しました。
(以降の説明も、"Standard Company"が前提となります)

各プログラムの詳細は、iPhone Developer Program - Apple Developer Connectionを参照してください。


担当者の役割について

法人で登録する場合には、役割ごとに担当者を設定する必要があります。

開発チームの代表者
基本的に、申込を行ったときに使用したAppleIDの所有者が、開発チームの代表者となります。
主な役割として、以下のようなものが想定されています。

  • 申込プロセスの過程で送られてくる確認メールの宛先となる。
  • 登録費用の立替払いをする(クレジットカード)。
  • 申込プロセス完了後の、Appleとの窓口
  • iPhone Developer Program PortalのTeam Agentロールのユーザ
  • iTunes ConnectのAdmin/Legalロールのユーザ

特に、iPhone Developer Program PortalやiTunes Connectで、管理作業の実務をする立場になるので、それを考慮して選定する必要があります。


法務担当窓口(Legal Contact)
申込の過程で、入力が必要となるので、適切な担当者を決めておく必要があります。
(これまでに、こちらに宛てて連絡が来たことはないので、今のところ、具体的な役割は確認できていません)


その他、必要な書類
申込が完了後、企業情報を確認するための書類の提出を求めるメールがADC事務局から送られてきます。それらをFAXで送付した後に、Developer Programの注文が成立し、アクティベーションコードが送られてきます。

必要な書類は、以下の通りです。

  • 申請者が企業の代表取締役により権限が与えられている事を示す書面
  • 登記簿謄本、あるいは社印の印鑑証明書のいずれか1通
※ 具体的なことは、実際に申込の時にADC事務局から送られてくる指示に、従ってください。


販売業者名について

個人(Standard Individual)の場合、AppStoreの販売業者名として使用されるのは、登録に使用したAppleIDの個人名ですが、法人(Standard Company)の場合は、企業名(Company Name)が販売業者名として使用されます。


iPhone Developer Program PortalのTeam Agentロール

iPhone Developer Program Portalは、アプリケーションをiPhoneの実機でテストしたり、AppStoreへの配布を行うため必要な手続きを行うためのサイトです。Team Agentロールを持つユーザは、iPhone Developer Program契約の責任者であると同時に、このサイトを利用する開発チームの代表者としての役割を担います。
特に、アプリケーションを配布するための証明書(Distribution certificate)や、プロビジョニングプロファイル(Provisioning Profile)については、Team Agentユーザにのみ、作成する権限が付与されています。
このあたりの作業イメージについては、以下のドキュメントを参照してください。(Apple Developer Connectionの会員のみ閲覧可能です)

iPhone開発ガイド: デバイスの管理
iPhone開発ガイド: テストのためのアプリケーションの公開







iPhone Applications

Copy & Send

  • ダウンロード終了しました

Copy & Send Lite

  • ダウンロード終了しました

Location Clip

  • ダウンロード終了しました

Export for Google Documents

  • ダウンロード終了しました