まずはやっぱり、「Hello World!」から始めよう
プログラミングのスタートとは、なんといっても「Hello World!」を表示するアプリケーションですね。まず初めに自分のプロフィールページに「Hello World!」を表示するOpenSocialアプリケーションを作成してみましょう。
OpenSocialアプリのソースコード書式
OpenSocialでは、SNSに設置するアプリケーションは決められたXMLの形式にしておく必要があります。実はこの形式は前述のGoogleガジェットと同一なのです。
「Googleガジェット全部がSNS上で利用できるようになるのか!?」と考えると、わくわくしてきますね。実際のソースコードは下記のような形式になります。
<?xml version="1.0" encoding="UTF-8"?>
 <Module>
   <ModulePrefs title="Sample App">
     <Require feature="opensocial-0.7" />
   </ModulePrefs>
   <Content type="html">
   <![CDATA[
     Hello, world!
   ]]>
   </Content>
 </Module>
こうして考えると、OpenSocialは「Googleガジェットにソーシャルな機能を追加し、SNS上で動作できるようにしたもの」と考えることもできます。
以下のような、で囲まれた部分がアプリケーションの本体です。
  <![CDATA[
     Hello, world!
   ]]>     
ソースコードにはいろいろ書いてありますが、このアプリでは実際のソースコード部分はたった1行です。ここにHTMLやJavaScriptを記述していきます。
hi5で動作確認
次に、作成したアプリを実際に動かしてみましょう。hi5で実際にアプリを設置する手順を解説します。実はこの「Hello World!」アプリは、hi5がすでにサンプルとして準備しているものとほとんど同じです。
このアプリは、Hi5のデベロッパーサイト内の「サンプルアプリケーションの作成」ボタン一発で作ることができます。しかし、ここはOpenSocialの本質である「SNS とアプリケーション開発者の分業」を正しく理解するためにも、SNSとアプリを別々のサーバで設置する、正式なやり方でアプリケーションを動作させてみましょう。
- ソースコードを作成
 先ほどのリスト1のソースコードをテキストエディタで記述
- ソースコードを自分のWebサーバにアップロード
 作成したソースコードをインターネット上から「http://os.pne.jp/hello.xml」のような形式で閲覧可能なWebサーバにFTPソフトなどでアップロードする。hi5のサイトにアップしなくてもいい点がポイント。SNSの運営者とアプリケーション開発者は互いに独立している
- hi5にURLを登録
 hi5側にアプリを追加。この作業はhi5のデベロッパーサイト内で行う。
図5の入力欄に、アップしたURL「http://os.pne.jp/hello.xml」を入力
4.動作確認
  アップロードが終わったら「プレビュー」を押して動作確認。図6のように表示されれば成功
SNSの日記やフレンド情報を取得するには?
「Hello World!」アプリの動作は確認できましたが、これだけでは単なるHTMLをSNS内に埋め込んだだけにすぎず、SNS内の人間関係や日記などの情報を生かした「ソーシャル・アプリケーション」とはとてもいえませんね。次はSNS内の各種情報の取得にチャレンジしてみましょう。
SNS内のデータにアクセスするには?
単なるHTMLを「ソーシャル・アプリケーション」に変えるためには、SNS内の情報との連携が近道です。アプリケーションからSNS内のデータにアクセスしてみましょう。しかし外部サイトに置いたアプリケーションは、一体どのような方法でSNS内のデータへのアクセスを行うのでしょうか? 複雑ですので、じっくり見ていきましょう。
以下は、SNS内のデータにアクセスするアプリのソースコードです。
<?xml version="1.0" encoding="UTF-8"?>
 <Module>
   <ModulePrefs title="Sample App">
     <Require feature="opensocial-0.7" />
   </ModulePrefs>
   <Content type="html">
   <![CDATA[
   <script>
     gadgets.util.registerOnLoadHandler(init);
 
    function loadFriends() {
         alert("サンプルアプリがロードされました。")
         var yesno = confirm("続いて、コンテナにフレンドリスト情報取得リクエストを送りますか?");
         if(yesno){
             var req = opensocial.newDataRequest();
             req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
             req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'),
                 'viewerFriends');
             req.send(onLoadFriends);
         }else{
             alert('サンプルアプリ終了');
         }
     }
 
    function onLoadFriends(data) {
         alert('コンテナからフレンドリスト情報が返答されました。');
         var viewer = data.get('viewer').getData();
         var viewerFriends = data.get('viewerFriends').getData();
 
        html = new Array();
         html.push('<ul>');
         viewerFriends.each(function(person) {
             html.push('<li>' + person.getDisplayName() + "</li>");
         });
         html.push('</ul>');
         document.getElementById('friends').innerHTML = html.join('');
     }
 
    function init() {
         loadFriends();
     }
 
  </script>
   <div id='main'>
     あなたのフレンドは<div id='friends'></div>
   </div>
   です。
 
  ]]>
   </Content>
 </Module>
順を追ってソースコードの解説をしていきましょう。
SNSデータ取得の流れ
    gadgets.util.registerOnLoadHandler(init); 
こちらは、OpenSocialによって用意された関数で、「HTMLがWebブラウザに読み込まれたら、init()関数を実行してしてね」という意味を持っています。Webブラウザのロード完了とともに、すぐ下の「init()」関数と、続いて「loadFriends()」関数が呼び出されます。
次のコードは、データ取得リクエストの作成です。
            var req = opensocial.newDataRequest();
            req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
            req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'),
                'viewerFriends'); 
SNSサーバに対して、「閲覧者情報」「閲覧者のフレンドの情報」を要求するリクエストを作成します(この時点ではまだ予約しただけで、実際にリクエストは送信されていません)。最後の下記でSNSサーバにリクエストが送信されます。
            req.send(onLoadFriends); 
この間に、WebブラウザとSNSサーバの間でAjaxによる通信が行われ、要求したデータをWebブラウザに返信します。SNSサーバから、リクエストに対しての返事が返ってくると、自動的に次のonLoadFriends()関数が呼び出される仕組みになっています。
onLoadFriends()関数内では、以下のコードで、SNSサーバから返ってきたフレンドリスト情報を取得します。
        var viewer = data.get('viewer').getData();
        var viewerFriends = data.get('viewerFriends').getData(); 
その後、以下の部分で、それぞれのフレンドリストの名前を取得し、表示用のHTMLを作っています。
        html = new Array();
        html.push('<ul>');
        viewerFriends.each(function(person) {
            html.push('<li>' + person.getDisplayName() + "</li>");
        });
        html.push('</ul>');
        document.getElementById('friends').innerHTML = html.join(''); 
最後に、出来上がったHTMLをWebブラウザ上に表示します。画面上にフレンド一覧が表示されていれば、成功です。
次ページでは、OpenPNEでOpenSocialアプリケーションを動かす方法を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.




