Programming Social Applications

Programming Social Applications: Building Viral Experiences With OpenSocial, OAuth, OpenID, and Distributed Web Frameworks

Programming Social Applications: Building Viral Experiences With OpenSocial, OAuth, OpenID, and Distributed Web Frameworks

ようやく読了。
ゲームプログラミングと違って、サーバをレンタルしたり色々なステップが
必要になりそう。
サンプルプログラムのインストールの時点で色々と問題がある。
そういう複雑さがあるだけに内容はとても濃密だった。
FacebookのようなSNS事業者がどうやって自社のウェブサイトの媒体としての
価値を上げていこうとしているのかが、技術的な観点から理解できるようになる。
つきつめると、Facebookの外のサーバにおかれているウェブサイトの情報が
なるべくFBの中でも参照できるようにする。
Facebook内部での会員の動きは、Facebook の外でもわかるようにする。
FBの情報はFBの外でものぞける。
FBの外の情報もFBの中でのぞける。
もうすこし、補足するとFBの会員がFBの外で「活動」しようと、「中」で活動しようと、
その「情報」「軌跡」がすべてFBのデータとして、Friendが閲覧可能になるような
仕掛けであります。

ユーザは、どこにいてもまるでFBの延長上でウェブを楽しんでいるような
「錯覚」にとらわれる。実際は別々の事業者が運営しているサイトを回遊しているだけなのに。
そうすると、
FBのサーバ。
FBの会員が使っているクライアント。
FBの会員を当て込んでアプリを開発している事業者のサーバ。
この3つのコンピュータの間で情報のやりとり、共有、交換をするプロセスを
プログラムによって制御するノウハウが必要になってくる。
本書はそのプログラミングのやり方について
JavaScriptPHP,Phythonといった様々な言語を利用して、解説している。
そして開発事業者の書くプログラムの分量を「合理化」するために
なるべく、出来合いの「ライブラリ」を使用する方針で書かれています。
SNSを運営している会社のプログラマや、SNSの会員を当て込んでアプリを開発しようと
している事業者のプログラマなどが読むと有益になるかもです。
Googleは、検索エンジンという切り口でWebを手中にするというか。
世界中に点在するサーバに置かれているウェブサイトをGoogleAdwordsの媒体に
組み込んでいくという方針で、事業拡大をしているように思う。
Androidしかり。Adsenseしかり。
Facebook も、FBの外のサーバに点在している無数のウェブサイトを自社のウェブサイトの
媒体価値を上げていく「ダシ」につくりかえていこうとしている。(もちろん、外のウェブサイトの運営者はFBの会員という顧客を当て込んでいるので形式上はWinWin)
Chikirinさん的にはここまでは分析なんだと。
思考がないではないかと。
まあ、その通りなのであります。
まあ「価値判断」といえば。
こういう「雄大な事業構想」をもつ企業が日本列島からも出てきて欲しいなと思う次第。
そういうことはなさそうだなと思いながら。


第1章 ソーシャルアプリケーションの典型
ソーシャルアプリケーションといわれているものの実体は一体どういうものかについての
一般論。この手の本にしてはめずらしく、この章にはなんと1行のコードも書かれていない。
「Webアプリを開発するとき、すべて自作するのがいいのか、それとも出来合いのコードを
取り込んだらいいのか?」
FacebookのようなSNSのサービスに乗って開発するときの長所と短所はどんなものか?」
といったことに、「筆者の持論」のようなものが展開される。
ソーシャルアプリの定義のようなもの。
SNS(コンテナ)に登録している人が、写真やら日々の行動履歴やら、友人関係をどんどん
Webにアップする。アプリの開発業者は、SNSのユーザ一人、一人に彼らが公開している情報に
基づいて、個別的なサービスを提供するアプリを開発できる。」
典型的な例としてゲームアプリ(Zynga)、販売促進アプリ(Groupon)、そして位置情報アプリ(FourSquare)を取り上げる。(413文字)

第2章 Social Graph
ソーシャルアプリの開発に際しては、ネットサービスのユーザが実生活とオンライン上でどのように社交を行うのかを理解することが重要になる。ユーザのオンライン上のコミュニケーションの取り方を理解しやすくするために、モデルを設定する。
個人情報の公開先をあらかじめ公開を原則とさせるか、それともユーザの嗜好を優先するか?
フォロワーモデル(Twitter
ConnectionModel 典型的にはFacebookMixiの友達リンク
グループモデル FacebookのファンページやMixiのコミュニティみたいなもの。
どのモデルを使って、交流をしているかで、アプリを通じてのユーザへの関わり方が
違ってくる。
オンライン上でのユーザの振るまいというのは
SNSの機能や開発されたソーシャルアプリの機能などによって、実生活上とは大きく異なったものとなる。この章の最後には、HTMLとJavaScriptで、Webページに気軽に「Like」ボタンを
設置するコードの書き方も学習できるようになっている。(437文字)

Chapter 3
OpenSocialのアプリを開発したら、そのアプリが動く環境を自分のパソコンにつくって
おかないと、動作のテストができない。アプリを動く環境を設定する手順がこの章には
書かれている。
ShindigというソフトウェアとPartuzaというソフトウェアがサーバソフトウェア上で
動いているようにすると、環境の設定は成功。PartuzaはSNS構築ソフト。このインストールに
成功すると、晴れて簡易版のOpenSocialのアプリを動かすことができる。

Chapter4 Defining Features With OpenSocial JavaScript References
Flashで動く動画をアプリに埋め込む方法を学びます。
アプリのユーザに対して、Typeが異なるメッセージを表示させる方法。
データベースを使うことなく、ユーザのための単純なStateに関する情報を作成して保存してみましょう。アプリケーションのタイトルを動的に設定します。タブがついたアプリのサンプルを開発します。アプリにJavaScriptで、独自の機能を追加していきましょう。
 
Chapter5 Porting Applications, Profiles, And Friendships
FacebookのようなSNSに登録されている膨大な個人情報を、ソーシャルアプリの開発にどう利用するかを学習します。開発したアプリケーションが、ユーザから取得する個人情報の内容によって、ユーザに最適な機能を発揮できるようにします。そして、あるSNSで機能するアプリが、そのまま別のSNSでも機能するようにします。そして、SNSに登録しているアプリのユーザが有する
「友人関係」をうまく利用して、開発したアプリをより多くの人に使ってもらえるようにする仕掛けを作っていきます。
章末の方ではサンプルになるアプリのコードもついています。

Chapter6 OpenSocial Activities Sharing And Data Requests
前章に引き続き、開発したアプリを一人でも多くの人にインストールしてもらって、利用されるようにする工夫の数々を習得しようという章です。
アプリのユーザがSNSの中で行うActivityを通じて、アプリが人によって最適な機能を発揮するようにする。
SNSの中でのユーザのActivitiesを量産することで、アプリの宣伝広報を実現させていく。
ユーザがアプリをインストールすることを自動にするか手動にするかの設定の手法。
外部のデータソースなどを利用して、アプリのコンテンツを充実させる。
SNSから、個人情報を取ってくる要求をコンピュータ上でするとき、その大切な個人情報が
外部に漏洩しないための手法も学習します。

Chapter7 Advanced OpenSocial And OpenSocial Next
アプリの開発サイドの外に存在するデータベースを自社のアプリに利用する方法。
OpenSocialの開発において、すでにオンラインに流通しているプログラムライブラリが
どのような役割を果たすのかについての概説。
OpenSocialMarkUpLanguageの概要説明。
Craigslistというサービスのデータを取り込んだアプリのサンプルを開発していく
手順を説明していきます。

 Chapter8 Social Application Security Concepts
OpenSocialのアプリを開発するとき、必然的に既存のSNS事業者がもっている個人情報へ、
SNS事業者の外部に存在する開発事業者にアクセスを許すことになる。
その際に、大切な個人情報が、悪意のある開発業者の手に渡ることを防ぐための手立ての検討。
個人情報の技術的な保護と、開発事業者へのフリーハンドをどこまで許容するかという
ジレンマの検討を行う。
Caja インストールの手順から説明している。
ADSafe(ユーザに有害な結果を引き起こすプログラム部分が作動しないようにするソフト)というソフトウェアの利用を本書で説明することになる。

Chapter9 Securing SocialGraph Access With OAUTH
開発したアプリが、そのアプリのユーザのSNSの個人情報にアクセスできるようにするための
「認証」の手続き。これについて色々と書いてある。
PhythonとPHPでコードを書いてある。両方とも果たしている機能は同じ。
ユーザはたとえばFacebookで自分の個人情報にアクセスするとき、FBから付与された
USERNAMEとPASSWORDを入力することで、アクセスを可能にしている。
この章ではこのSNSとユーザのやりとりをSNSとアプリ開発事業者の間で出来るように
するための手順を説明する。

Chapter10 The Future Of Social. Defining Social Entities Through Distributed
       WebFrameWorks
あるブログのウェブサイトで「Like」ボタンを押すと、その「Activity」が
Facebookの自分のページに反映されて、それをFriendが参照することができるような
仕組み。あるブログの記事に「Like」をした人のFB上のプロフィール写真を
そのブログの下方に羅列させるようなプログラミング。
Twitterで自分がどんなことをつぶやいているのかという内容を、Twitterとは別立てで
運営しているブログに反映するようにするという仕組み。
このように、SNSとその外部にあるウェブサイトが互いの情報を他方に融通する仕組みを
どうやって構築していくのかということについて学習する。
動画、画像、コメントといった文字データのやりとり(共有)が可能になる。
WebFingerというフレームワークの使い方なども勉強します。

Chapter11 Extending Your SocialGraph WithOpenID
GoogleやYahooのサービスを使用する際に、入力の用に供しているユーザネームやパスワードを
自作した会員制ウェブサイトへの登録にも利用できるようにするプログラミング。
このような「流用」に付随して、GoogleやYahooがその「顧客」に関連してもっている「個人情報」にもアクセスできるようにする方法が書かれている。
ユーザは、いちいち、違うサイトで別々に登録作業をするということを強いられなくなる。
これもPHPのコードとPhythonのコードの両方がある。