Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Flash + Facebook /

Flash Platform と Facebook プラットフォームで開発するアプリケーションのアーキテクチャーの理解

著者 Jeanette Stallons

Jeanette Stallons
  • stallons.com

Content

  • 開発できるアプリの種類
  • Facebook上のアプリ:Non-Flashアプリの場合
  • Facebook上のアプリ:Flashアプリの場合
  • 外部サイト上のアプリ
  • デスクトップアプリ
  • モバイルアプリ
  • おわりに

更新日

15 August 2011

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

リッチなユーザ体験を開発できるFlash Platform、リッチなソーシャル体験を開発できるFacebook Platform、この2つのプラットフォームを組み合わせれば、インタラクティビティと応答性、表現力に優れ、さらにソーシャル機能も盛り込んだキラー アプリケーションを開発することが可能となります。

この記事では、Flash PlatformとFacebook Platformを使用したアプリのアーキテクチャーについて解説します。開発できるアプリの種類と、それらのアプリがどのようにサーバーやFacebookと連携するのかについて説明します。

合わせて「The technologies for building applications on the Flash and Facebook Platforms」もお読みください。

開発できるアプリの種類

Facebookと連携するFlashアプリを開発する場合、「Facebook上のアプリ」「外部サイト上のアプリ」「デスクトップアプリ」「モバイルアプリ」の4種類から選べます。

Facebookで開発できるFlashアプリの種類

Facebook上のアプリ

アプリ自体はあなたのサーバーにホストすることになりますが、ユーザはFacebook経由でアプリにアクセスします。また、アプリはFacebookのクロームを含むページの中に表示されるため、ユーザから見るとFacebook上にあなたのアプリがあるように感じます。友人からの招待やアプリ検索などで「Facebook上のアプリ」へアクセスすると、Facebookサーバーはそのリクエストをあなたのサーバーへと中継(プロキシ)し、アプリのページ(Flashアプリが埋め込まれたHTMLやJavaScriptを含む)を取得し、Facebook上に表示します。そのため、ユーザはFacebookから離れることなくアプリを利用でき、シームレスなユーザ体験を提供することができます。Flashアプリは、Facebook Graph APIのラッパーである「Adobe ActionScript 3 SDK for Facebook Platform」を使って、Facebookとデータのやり取りを行います。このようなアプリの例としては、「Who Has the Biggest Brain」やZyngaの「Texas Hold'em Poker」があります。

外部サイト上のアプリ

こちらもアプリ自体はあなたのサーバーにホストすることになります。しかしユーザは、Facebook経由ではなく、URLを介してアプリにアクセスすることになります。このようなアプリでFacebookのソーシャル機能を利用するには、Adobe ActionScript 3 SDK for Facebook PlatformとFacebook JavaScript SDKを使って、アプリやFacebookにシングルサインイン/アウトする仕組みを追加する必要があります。アプリにログイン/アウトボタンを設置し、ユーザがログインした際には、ポップアップウインドウをなどを使ってFacebookログインやアプリ認証ダイアログ(場合によっては両方)が表示されるようにします。セキュリティ面を考慮すれば、ポップアップウインドウでの表示は必須でしょう。そうすうることで、ユーザは自分自身がFacebookにログインしようとしていることを把握できるからです。 Facebookにシングルサインインすることで、アプリのログインプロセスがすっきりとするほか、ユーザのプロフィールにアクセスできるようになり、ユーザごとにサイトや体験をカスタマイズすることができます(例えば、ユーザ名や写真を表示したり、友達が購入した商品を掲載したり、友達のコメントやレビューを表示したり、ユーザのウォールや友達のニュースフィードにコメントやレビューを投稿したりするなど)。「Facebook上のアプリ」と同様にFlashアプリは、Facebook Graph APIのラッパーである「Adobe ActionScript 3 SDK for Facebook Platform」を使って、Facebookとデータのやり取りを行います。このようなアプリの例としては、「Ben and Jerry's」や「City Search」があります。

デスクトップアプリ

「外部サイト上のアプリ」と似ていますが、Flashアプリをサーバー上にホストするかわりに、デスクトップ用AIRアプリとして配布するという点が異なります。「外部サイト上のアプリ」同様に、デスクトップアプリでも「 Adobe ActionScript 3 SDK for Facebook Platform」を使って、ログイン機能やFacebookのソーシャル機能を実装します。このようなアプリの例としては、「Seesmic for Facebook」や「Nomee」があります。

モバイルアプリ

デスクトップアプリと似ていますが、アプリの配布先がPCではなくデバイスとなります。他の種類のアプリ同様に、モバイルアプリでも「 Adobe ActionScript 3 SDK for Facebook Platform」を使って、ログイン機能やFacebookのソーシャル機能を実装します。このようなアプリの例として、Zyngaの「Farmville」があります。

Facebook上のアプリ:Non-Flashアプリの場合

Facebook上のアプリにユーザがリクエストすると(例えば、http://apps.facebook.com/someapp/)、 Facebookのクロームを含むページを返します。このページ内にはiFrameタグがあり、iFrame内にあなたのアプリがロードされます(図 1)。

「Facebook上のアプリ」のアーキテクチャ:Non-Flashアプリの場合
図1 「Facebook上のアプリ」のアーキテクチャ:Non-Flashアプリの場合
  1. Facebook上でユーザがアプリにアクセスします。つまり、ブラウザーがFacebookにHTTPリクエストを行います。
  2. Facebookサーバーは、HTML/JavaScriptページを返します。このページには、FacebookのクロームとiFrameタグが含まれています。
  3. ブラウザーは、あなたのサーバーに対して、iFrame内に表示するページをリクエストします。通常、このリクエストされるページは(PHP、 ColdFusion、JSPなどの)アプリケーションサーバーページですが、HTMLページでも構いません。このページには、ユーザがFacebook にログインしているかをチェックするためのロジックを含める必要があります。ユーザがFacebookにログインすると、「fbs_applicationID」というcookieにセッションデータが保存されます。このapplicationIDは、Facebook Developer applicationにアプリを登録した際に割り振られるIDです。またcookieには「access_token」という変数があり、これを取得し、ログイン後に行うFacebook Graph APIへの呼び出し全てにおいてこの変数を渡すことになります。もしユーザがFacebookにログインしていない状態、つまりcookieに変数「access_token」が保持されていない場合は、Facebookのログインページへリダイレクトするようにしなければなりません。
  4. アプリケーションサーバーページが処理され、必要に応じて、Graph APIを使ったFacebookへのコールや、データベースや他のサーバーへのコールが行われます。FacebookのAPIをコールする際は、全てのコールにおいてセッションcookieから取得したaccess_tokenを含める必要があります。
  5. Facebookサーバーは、リクエストされたデータをJSON形式であなたのサーバーへと返します。
  6. あなたのサーバーがHTML/JavaScriptページをユーザのブラウザーに返し、iFrame内でページが表示されます。

さらにユーザがアプリを操作することで、以下のような処理が行われます。

  • アプリ内に新しいサーバーサイドページへのリンクが含まれていて、ユーザがそれをクリックした場合、ステップ3~6が繰り返されます。
  • また、アプリ内にあなたのサーバーに対する非同期型JavaScriptコールが含まれている場合、図1のステップ7~10の処理が行われます。ステップ 3~6と異なりこの場合、ユーザのブラウザーにはJSON形式で返され、ページ内のJavaScriptで処理が行われます。
  • その他にも、Facebook JavaScript SDKを使えば、ページ内のJavaScriptから、あなたのアプリケーションサーバーを介さずに直接Facebookサーバへコールすることも可能です(図1のステップ11~12)。

Note: 以前はFBMLを使ってFacebookに対してAPIリクエストを送信することができましたが、FBMLは2012年1月1日から非推奨とされています。

Facebook上のアプリ:Flashアプリの場合

Non-Flashアプリでの基本を押さえたところで、次はいよいよFlashアプリの場合について説明していきましょう(図2)。

「Facebook上のアプリ」のアーキテクチャ:Flashアプリの場合
図2 「Facebook上のアプリ」のアーキテクチャ:Flashアプリの場合
  1. Facebook上でユーザがアプリにアクセスします。つまり、ブラウザーがFacebookにHTTPリクエストを行います。
  2. Facebookサーバーは、HTML/JavaScriptページを返します。このページには、FacebookのクロームとiFrameタグが含まれています。
  3. ブラウザーは、あなたのサーバーに対して、iFrame内に表示するページをリクエストします。先程の場合、表示するページはアプリケーションサーバーページかHTMLページでしたが、ここではそれらのページ内にSWFファイル(Flashアプリ)を埋め込みます。
  4. あなたのサーバーがHTML/JavaScriptページをユーザのブラウザーに返し、iFrame内でページが表示されます。このページには、先程と同様にユーザがFacebookにログインしているかをチェックするためのロジックを含める必要があります。ただし、このチェックロジックは、Adobe ActionScript 3 SDK for Facebook Platformを使ってSWF内に実装することも可能です。また、アプリ内にcookieの変数「access token」の有無をチェックするコードを含める必要があります。もし、access tokenがない場合は、Facebookのログインページへリダイレクトするようにしなければなりません。
  5. ユーザのブラウザーはあなたのサーバーに対して別途リクエストを行います。今度はiFrame内のHTMLページに埋め込むSWFを取得するためです。
  6. あなたのサーバーはSWFファイルを返します。
  7. ユーザがアプリを操作すると、Adobe ActionScript 3 SDK for Facebook Platformを使って、Facebookサーバーへ非同期型のコールを行います。全てのAPIコールにおいてaccess tokenを含める必要がありますが、これはSDKにより自動で行われます。

Flash Playerのセキュリティ制約により、SWFファイルがデータコールを行うことができるのは、当該SWFファイルの供給元となったサーバー(つまりあなたのサーバー)、および当該SWF ファイルの供給元サーバーを記したクロスドメインポリシーファイルの配置されたサーバーに対してのみです。つまり、SWF ファイルからFacebookサーバーへ直接コールするためには、「SWFファイルにFacebookサーバーへのアクセスを許可する」クロスドメインポリシーファイルがFacebookサーバーに配置されている必要があります。以下は、Facebookのクロスドメインポリシーファイルの例です。ここでは「ワイルドカード「*」を使って、あらゆるサーバーから供給されたSWFファイルのアクセスを許可しています。

<cross-domain-policy> <site-control permitted-cross-domain-policies="master-only"/> <allow-access-from domain="*" secure="false"/> </cross-domain-policy>
  1. FacebookサーバーがJSON形式データをアプリへ返します。
  2. ユーザがアプリを操作した際に、(サーバーにデータを保存したり、何らかのサーバーサイド処理を行うなどのために)リモートプロシージャコールメソッドを使ってあなたのサーバーへ非同期型のコールを行うこともできます。リモートプロシージャコールの手段としては、Flexで開発したFlashアプリの場合、HTTP/Webサービス/Flash Remotingなどが使えます。なお、これらのうちFlash Remotingを使うと、最速かつ最軽量のコールを実現することができます。というのも、Flash Remotingは、サーバーとFlash Player間のデータ交換に、オープンソースのバイナリプロトコル「Action Message Format(AMF)」を使っているからです。
  3. 必要に応じて、Facebookサーバーとやり取りを行います。
  4. Facebookサーバーから返ってきたJSON形式データを、サーバーサイドコードで処理します。
  5. あなたのサーバーからブラウザーのFlashアプリにデータを返します。

外部サイト上のアプリ

「外部サイト上のアプリ」(図3)は「Facebook上のアプリ」と非常に似ています。主な違いは、ログインやアプリ認証の扱いです。Facebook JavaScript SDKとAdobe ActionScript 3 SDK for Facebook Platformを使えば、Facebookのログイン/認証ページへリダイレクトさせなくても、それらをポップアップウインドウで表示することができま す。FacebookログインはJavaScriptで扱いますが、通常はそのJavaScriptコードを書く必要はありません。Adobe ActionScript 3 SDK for Facebook Platformに用意されているクラスのメソッドを呼び出すだけでいいのです。ActionScript SDKのコード(特にfacebook.graph.core.FacebookJSBridgeクラスのメソッド)がFacebook JavaScript SDKのメソッドを呼び出します。そのため、FlashアプリのラッパーページにはFacebook JavaScript SDKを含める必要があります。

「外部サイト上のアプリ」のアーキテクチャ
図3 「外部サイト上のアプリ」のアーキテクチャ
  1. Facebook上でユーザがアプリにアクセスします。つまり、ブラウザーがFacebookにHTTPリクエストを行います(このリクエストの対象は、アプリケーションサーバーページやHTMLページですが、これ以降は便宜上、HTMLページとして表現します)。
  2. あなたのサーバーは、SWFファイルを埋め込むことになるHTML/JavaScriptページを返します。このラッパーページには、Facebook JavaScript SDKが含まれている必要があります。Facebook JavaScript SDKのメソッドは、Adobe ActionScript 3 SDK for Facebook Platformによって呼び出されます。
  3. ブラウザーはあなたのサーバーに対して、HTMLページ内に埋め込むSWFファイルのリクエストを行います。
  4. あなたのサーバーがSWFファイルを返します。アプリはAdobe ActionScript 3 SDK for Facebook Platformのコードを使って、このユーザとアプリのaccess tokenがあるかをチェックします。もしなければ、ブラウザーのポップアップウインドウにFacebookのログイン/認証ページが表示されます。
  5. ユーザがアプリを操作すると、Adobe ActionScript 3 SDK for Facebook Platformを使って、Facebookサーバーへ非同期型のコールを行います。全てのAPIコールにおいてaccess tokenを含める必要があります(これはSDKにより自動で行われます)。また、場合によっては、SWFファイルにFacebookサーバーへのアクセスを許可するクロスドメインポリシーファイルがFacebookサーバーに配置されている必要があります。
  6. FacebookサーバーがJSON形式データをあなたのサーバーへ返し、それをアプリが処理します。
  7. あなたのサーバーにデータを保存したり、何らかのサーバーサイド処理を行う場合は、リモートプロシージャコールメソッドを使ってコールを行います(HTTP/Webサービス/Flash Remotingなど)。
  8. 必要に応じて、Facebookサーバーとやり取りを行います。
  9. Facebookサーバーから返ってきたJSON形式データを、サーバーサイドコードで処理します。
  10. あなたのサーバーからブラウザーのFlashアプリにデータを返します。

デスクトップアプリ

次は、デスクトップアプリのアーキテクチャです(図4)。「外部サイト上のアプリ」と非常に似ていますが、アプリをインストールするとそのままユーザのマ シンに残り続けるという点と、ログインはAdobe ActionScript 3 SDK for Facebook Platformだけで実装できるという点が異なります。デスクトップアプリとして配布するには、AIRアプリとして開発する必要があります。

デスクトップアプリのアーキテクチャ
図4 デスクトップアプリのアーキテクチャ
  1. ユーザがデスクトップAIRアプリをインストールして起動します。アプリはAdobe ActionScript 3 SDK for Facebook Platformのコードを使って、このユーザとアプリのaccess tokenがあるかをチェックします。もしなければ、OSのウインドウにFacebookのログイン/認証ページが表示されます。
  2. SWFファイル内のActionScriptコードから、Adobe ActionScript 3 SDK for Facebook Platformを使って、直接Facebookサーバーに非同期型のコールを行います。各APIコールにおいて、自動でaccess tokenが渡されます。
  3. FacebookサーバーがJSON形式データをあなたのサーバーへ返し、それをアプリが処理します。
  4. あなたのサーバーにデータを保存したり、何らかのサーバーサイド処理を行う場合は、リモートプロシージャコールメソッドを使ってコールを行います(HTTP/Webサービス/Flash Remotingなど)。
  5. 必要に応じて、Facebookサーバーとやり取りを行います。
  6. Facebookサーバーから返ってきたJSON形式データを、サーバーで処理します。
  7. あなたのサーバーからデスクトップAIRアプリにデータを返します。

モバイルアプリ

モバイルアプリはデスクトップアプリの場合と似ています。インストール後アプリはユーザのデバイスに残り続けますし、ログインはAdobe ActionScript 3 SDK for Facebook Platformだけで実装できます。AndroidやBlackberry Tablet OSを搭載したデバイスの場合、アプリはAIRアプリとして配布できます(図5)。

モバイルアプリのアーキテクチャ:AndroidやBlackberry Tablet OSを搭載したデバイスの場合
図5 モバイルアプリのアーキテクチャ:AndroidやBlackberry Tablet OSを搭載したデバイスの場合
  1. ユーザがモバイルAIRアプリをインストールして起動します。アプリはAdobe ActionScript 3 SDK for Facebook Platformのコードを使って、このユーザとアプリのaccess tokenがあるかをチェックします。もしなければ、Facebookのログイン/認証画面が表示されます。
  2. SWFファイル内のActionScriptコードから、Adobe ActionScript 3 SDK for Facebook Platformを使って、直接Facebookサーバーに非同期型のコールを行います。各APIコールにおいて、自動でaccess tokenが渡されます。
  3. FacebookサーバーがJSON形式データをあなたのサーバーへ返し、それをアプリが処理します。
  4. あなたのサーバーにデータを保存したり、何らかのサーバーサイド処理を行う場合は、リモートプロシージャコールメソッドを使ってコールを行います(HTTP/Webサービス/Flash Remotingなど)。
  5. 必要に応じて、Facebookサーバーとやり取りを行います。
  6. Facebookサーバーから返ってきたJSON形式データを、サーバーで処理します。
  7. あなたのサーバーからモバイルAIRアプリにデータを返します。

iOSデバイスの場合は、Flash Builder 4.5以降やFlash Professional CS5以降を使ってAIRアプリをネイティブiOSアプリへの変換してから配布する必要があります。

モバイルアプリのアーキテクチャ:iOSを搭載したデバイスの場合
図6 モバイルアプリのアーキテクチャ:iOSを搭載したデバイスの場合

おわりに

アプリの種類ごとにそのアーキテクチャダイアグラムと処理のフローを解説しました。「Create your first Flex and Facebook application」シリーズでは、Flexを使って、デスクトップアプリ/外部サイト上のアプリ/Facebook上のアプリを開発する方法を詳しく解説しています。

More Like This

  • The technologies for building applications on the Flash and Facebook Platforms
  • Build your first Facebook application
  • 初めてのFlexおよびFacebookアプリケーションの作成 - はじめに
  • 初めてのFlexおよびFacebookアプリケーションの作成 – パート1:ローカルでのビルドとテスト
  • 初めてのFlexおよびFacebookアプリケーションの作成 - パート2:デスクトップアプリケーションとしてのパッケージ化とデプロイ
  • 初めてのFlexおよびFacebookアプリケーションの作成 - パート4:Facebook.com向けの変更とデプロイ
  • 初めてのFlexおよびFacebookアプリケーションの作成 - パート3:Webアプリケーションとしての変更とデプロイ

Tutorials and samples

Tutorials

  • Create your first Flex and Facebook application – Part 1
  • Create your first Flex and Facebook application – Introduction
  • Create your first Flex and Facebook application – Part 4

Samples

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement