ぷりどうぐ - プログラミング

ホーム > タグ > プログラミング

プログラミング

OpenSocial Host勉強会に行ってきたよーvv

26日(金)は第1回「OpenSocial Host勉強会」でした。

JavaScript初心者の俺ですが、OpenSocialに興味があったので参加してみました。…どのくらい初心者かというと勉強会に参加決めてから初めてJSの参考書を買ったくらいです。まぁ締切効果を利用してJS勉強できたので良かったっちゃあ良かった(ぉ

※参考:OpenSocialというかmixiアプリは実は簡単に作れそうな話。

ちなみにOpenSocialというのは今ベータテスト期間中のmixiアプリで採用されている技術で、これを学べば自分でmixiアプリを作って友達に使ってもらったり、PV増やして収益上げたりできるかもしれない。まだ知名度は低いけど、将来的にiモードみたいに一般的なものになる…かも?といった段階です。

OpenSocial Hostとは?

今回はOpenSocial Host(以下OSH)の勉強会でした。OSHは株式会社ハートレイルズさんが提供しているOpenSocailのアプリ開発を支援するサービス。

OpenSocialを作るためにはプログラムファイルを置くサーバが必要。けどレンタルサーバは有料だったりするのでOSHがファイル置き場を無料で提供します、というのがまず1点(※)。とはいえ、普通のエンジニアはサーバの1つや2つ持ってるのでこれだけではメリットにならない。ポイントは外部サーバのDBに簡単に書き込みできるAPIを提供している事だと思う。

※ 無料プランで1アプリにつき100ファイル、1ファイル10MB、合計500MBまで。

OpenSocialアプリと外部サーバの関係

仮にOpenSocialアプリ(mixiアプリ)で外部サーバにデータを保存しない場合でも、「永続化データ」という手法を使ってOpenSocial側(mixiのサーバ)にデータを保存することができます。ただこれが

  1. データ保存個数が限られる。gooホームの場合、1アプリに付き10個までしか保存できない。
  2. 同じアプリを入れてる人同士だと、お互いのデータが丸見え。
  3. 永続化データはユーザー毎に独立した領域に保存される。

とめちゃくちゃキツい制約あり。

例えば閲覧者の住んでいる場所を取得して明日の天気を返すだけのアプリならいいけど、日記アプリを作ろうとすると、

  1. 11個以上日記が書けない。
  2. 秘密の日記が書けない
  3. コメントの実装が大変でシステムリソースを食う。

となる。3については「永続化データはユーザー毎に独立した領域に保存される」制約が作用していて、例えばAさんの日記にBさんがコメントをつけたとしても、そのコメントはAさんのデータ領域に保存されない。つまりAさんの日記にコメントがついているかどうか調べるために、Aさんのマイミク(で日記アプリ使ってる人)を全員調べないといけない。日記一覧を表示してコメント数を表示するだけでも、大変なりソースを消費してしまうわけで。

んじゃ外部サーバにデータ保存するしかないよね、って話になるけど、OpenSocailアプリからのデータを受信するプログラムを別途書いたりしないといけないのでJS以外の知識も必要になる。

そこでOpenSocial Host

OSHならJavaScript API(※)でOSHのサーバにデータを書き込めてしまう。しかもデータに細かい権限設定ができるので秘密の日記なども作成可能。加えてアクセス解析機能も充実していて、例えばユーザーID単位でPV/UU集計できるので「あいつにアプリ紹介してやったのに全然見てねーわ」とかも分かっちゃう><

※ API使用回数:5,000,000回/月まで無料

OSHを使ったデモとして円グラフ日記を見せてもらいました。簡単そうに見えますが、最新の円グラフは永続化データで保存してHOMEビューに表示、円グラフについたコメントはOSHに保存という作りで開発には1週間かかったみたい。ただデータ保存部分をOSHで代用しなければもっと長くかかったんじゃないかな?と思います。

あと(なんでもそうですが)1個作れば使いまわして類似アプリを作れるので苦労するのは最初だけ!早いとこ自分の”フォーム”を確立しないとなーと思いました。

OpenSocial Hostで何か作ってみよう!

残り時間でOSHを使ったmixiアプリを作ってみよう!ということで、参加者みんなでOSHに登録した後、id:willnetさんの用意した雛形を使ってmixiアプリ登録→ちょこっと改造という流れ。

…だが「ボタンを押したらTodoリストを消す」という最初の課題もできない。いーよいーよ、どうせJS始めたててでDOMとかも分かってねーし(その割には各Todoにidを付与するとこまではできた)とふて腐れてたんだが、1時間経って課題を作れた参加者は2名だけでしたとさ。うーん。ここらへんは次のエントリあたりで補足予定→補足した。

OpenSocial Host 今後の予定

  • mixiモバイル対応:7月末~8月頭目標。PCもモバイルも”なるべく”同じソースを使えるように検討中。
  • データベース/ログのインポート/エクスポート機能
  • JavaScriptAPIの拡充 ** 複数コンテナ(mixi⇔goo⇔orkut)/アプリケーション間の連携支援API ** 写真や動画などのマルチメディアファイルの投稿/取得API
  • アプリの雛形となるソースの提供

感想いろいろ

まずはOSHの感想から。

正直外部サーバにデータ保存するところまでmixiアプリ作れてなかったのでOSHに興味なかったけど、永続化データの制約知った+登録簡単ですぐに使い始められるOSHはなかなかいいなぁと思いました。

あとは雛形のソースコードを充実させてほしいかな。。。例えば、普通の人がmixiアプリ作って外部サーバにデータ保存しようとした場合、まずmixi Developer Center見たり、実際にソース公開してる人探したりすると思います。

参考:mixiアプリからの署名付きリクエストの受け側を作る – プログラマー、再起動中

んで、そのやり方で作れちゃうとOSHイラネってなってしまうので、OSHを使ったmixiアプリのソースを解説付きで公開してくれるとありがたいです。まぁ僕が参考にしたいだけなんですけどね!

その他。

  • アクセス解析はいいなぁと思いました。自分で実装するの面倒だしこれに慣れるとOSHから離れられないとかありそう。有料プランなら時間も取れるとか機能強化もできるし。
  • GoogleAppEngineでmixiアプリできるよーvvという記事がいくつか上がってるので、圧倒的なブランド力に押されてtwitterに対するもごもご/wassr的な位置づけにならないか心配です。

OpenSocial周りのWebの盛り上がりについて。

これは次のエントリで。

初めての勉強会感想

オフ会の延長線って感じかな。違うのは、仲良くするのが目的じゃなく勉強/情報交換がメインなこと。例えば

  • 出欠確認なし
  • 参加者同士の自己紹介はなし
  • 名札なし
  • 名刺交換なし

って感じ。昨日だけでは判断できないけど、技術で会話するエンジニアにとってはオフ会よりやりやすい…かもしれません。けど正直1人参加は勇気がいるね。オフ会と違って普段からネットで仲良くしてる人って訳じゃないし、行ったら行ったで内輪気味な会かもしれない(昨日は違ったけど)。例えば参加者のブログ読んどいて「あの記事面白かったですね!」からきっかけ作ればいいけど、なかなかタイミングがないし(そもそもお互いの名前知らない)。

やっぱり懇親会なのかな?技術レベルが違いすぎる+Web系の人ばっかりっぽかった(私服多かった)ので参加しなかったけど、そういう所で仲良くなれれば次へのきっかけになるかもしれない…と帰ってから思った。例えばmixiアプリ作ってる人とブログやtwitterで交流する→勉強会で初顔合わせなら盛り上がったかもしれないなー。

課題出来なかった事も含めてやや不完全燃焼でしたが、mixiアプリと合わせてOSHの情報も追っかけていきたいと思います。

Web拍手&はてブ

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - OpenSocial Host勉強会に行ってきたよーvv

OpenSocialというかmixiアプリは実は簡単に作れそうな話。

mixiアプリというmixi上で自分の作ったWebアプリを動かせる仕組みが始まるようです。これは面白そうだな、と思いました。なぜなら、mixi上で動作する=マイミクの友人に使ってもらえるので、初期の集客力と開発モチベーションが全然違うからです。

Web2.0時代では、自作Webアプリをインターネットに公開しても

  • 開発者が有名
  • 開発会社が有名
  • アイディアが素晴らしい
  • 開発速度が速い

など、よほどの事がない限り注目されません。僕も以前NEWSING BOOSTERというWebサービス(のようなもの)を作りましたが、1日30アクセスくらいではてブも8ブクマしかつきませんでした。

その点、mixiアプリは作った瞬間からマイミクの何割かがユーザー登録してくれるわけです。マイミク100人なら20人~30人くらい。フィードバックも必ず貰えるので開発モチベーションも維持できる。人間、自分のためより他人のための方がより努力できる。

また、どこかのコミュニティに特化したアプリを作って、そのコミュニティのメンバーに使ってもらう手もあります。マイミクより使用率は低くフィードバックも少ないでしょうが、10000人のコミュで1%が使ってくれれば100人の初期ユーザーです。

ということでこれは是非開発しようと思って仕様書を読んでみました。

OpenSocialとか聞きなれない言葉を使わないで下さい><

「mixiアプリはOpenSocialに対応している」これを聞いて「また新しい言語を覚えないといけないのか…」と思いましたがこれは間違いでした。OpenSocialというのはアプリ利用者の

  • 友達一覧
  • 参加しているコミュニティ一覧
  • 住んでいる姓・名・地域などプロフィール
  • アイコン

などを、OpenSocialに対応しているサイトなら同じのコマンドで呼び出せるようにしたもの。だからmixiで作ったアプリをOpenSocialに対応しているgooホームなどにコピペすればそのまま動きます。ただしmixiミュージックでの再生履歴など、他のSNSになさそうor少なそうな機能はコピペで動きません(※)。

それにしても「友達一覧」とか「コミュニティ一覧」ってのは、mixiでもGREEでもSNSには必ず存在する要素だもんな。それを共通言語化するなんて…よく考えたなぁ。感心します。

※ OpenSocialのバージョンは0.9で基本的な機能しか実装していない。将来的には各SNS独自の機能もOpenSocialに盛り込まれる可能性がある。ちなみに例に挙げただけで、mixiミュージックの再生履歴は取得できません。

mixiアプリの実体はHTMLとJavaScript

ということで、OpenSocialではプロフィール情報を取得するだけ。その後はJavaScriptで動かします。こう考えると、mixiアプリ=mixiの情報を取得して使えるJavaScriptアプリと同じです。mixiの情報を取得する所はOpenSocailの書式を新たに覚える必要があるけど、mixi Developer CenterのGadget XMLとJavaScript APIのページの例をコピペすればよし。

具体的な構成

e784a1e9a18c

こんな感じです。mixiアプリ画面で自前サーバのXMLファイル(OpenSocailのGadget XML)を指定します。 e784a1e9a18c2

XMLファイル1つで完結する簡単なアプリでもいいし、画像ファイルやCSS、別出しJavaScriptファイルを使ってもOK。ここらへんは自作Webアプリと同じです。

…という感じで、特に身構えず気軽に作れるものだな、と思いました。

参考文献

スライドショー形式で長いが、内容は一番分かりやすかった。中でmixiアプリが不安定と書いているが、これは4月18日時点のもので現時点では不安定とは感じなかった。

実際の作成にあたっては公式が一番役に立つ。特にGadget XML・JavaScript API・外部サーバの呼び出しの項は必読。

最新情報のチェックはこれでOK。

その他まだ読んでないけど有用そうなリンク。

ここで問題点が。

俺、JavaScript書けません。

Web拍手&はてブ

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - OpenSocialというかmixiアプリは実は簡単に作れそうな話。

[N★B]フィルタ機能をリリースしました。

NEWSING★BOOSTER

newsingの特定の記事をフィルタした上で新着記事を表示する機能をリリースしました。

■残念ながらフィルタされちゃった人たち。

まずは言わずと知れたOhmynews。最近ウザいAskビデオ。そして名誉セルピカーwのfuwarinzさん(※1)は他のセルピクさんとは別扱いとさせて頂きました(けどフィルタ対象w)。セルピクリストは気づき次第追加していきます(※2)。Ohmynewsなんかは善意の人がpickするときもあるので、sunagimoさんの場合だけ除外するのでもいいですかねー。セルコメさんは除外するか迷いましたが、これも自推に近いものがあるなぁ…と思い隔離。

※1 いや…。記事の内容はいいと思うんですが。自推っていのうは俺の中で信頼性が低いんですよ(これについては別の機会に説明したい)
※2 そういや日常刺激ジャーナルの人、アカウント削除されちゃいましたね。

■困っていること

フィルタはフィルタでOKなのですが、当初は

「fuwaさんの記事はフィルタ。けど200pt以上の記事は表示」

みたいな事をやろうと思っていました。で、これは技術的にはできるのですが問題点があります。記事公開から時間が経って200ptを超えても表示されるのは後ろの位置なので結局気づかないのです。対策としては

「200ptを超えた時間を投稿時間とする」

ことで、擬似的に新着に表示させることはできますが、保存されているデータをいじらないといけないし今後の事を考えると付け焼き刃過ぎる対応かなぁと思いまして…。何か抜本的にな対策ないですかね?

■まぁ取りあえず

公言していた機能は全部実装しましたが、まだやりたいことあるので鋭意開発がんばりたいと思います。

…つーか自宅のクライアントPCでデータ取得してるのでたまにデータ取得できてない時があります。てごめんなさい。

■独自ptについての補足

N★Bの独自ランキングに使っている独自ptですが、今のところ

pt = 100pt+newsingのpoint/3+○コメント×30+×コメント×20
pickerが1stコメントの場合-80
n = (60×60×24-投稿時刻から経過した秒数/60×60×24)^2

として

pt×n

で出してます。nで使っている60×60×24というのは1日の秒数です。つまり記事が投稿してから1日経つと必ず人気エントリーから消えます。x軸を時間に取った1-x^2のグラフのイメージですね。

最初は48時間でやってたんですが同じ記事がTOPに残りすぎるので24時間にしました。ただ24時間だとnewsing側でコメントが伸びてるのにN★Bからは消えちゃうとかあるので、もうちょっと長いほうがいいかなぁ。今考えてるのはアクセスの少ない0時~8時は時間を進ませないようにすること。こうすれば24時間+8時間で32時間になるのでバランスがよくなりそうです。

Web拍手&はてブ

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - [N★B]フィルタ機能をリリースしました。

Webの情報が軽量言語で溢れているのは、所属メンバーの優先順位が高いから

F’s Garage:rubyとかPHPとかPerlとか。とかgnarlの日記 – webで事情に詳しくなれるのはweb業界のほんの一部だけ(それでも凄いことなんだけどさ)に関連して。優先順位=情熱or割合と置き換えてもらってもいい。

■Web業界の人は

perlやruby最高!ついでにMS氏ねとか思ってる。ネットでもリアルでもオンでもオフでもそういう環境で暮らしているので自然と頭の中で占める割合が多くなっていく。それがブログでの情報発信に繋がる。軽量言語が彼らにとって「話題」だから。

対してJavaやASP使いはそれらを仕事で扱っているだけであって特別な感情はない。プライベートで仕事の事を好んで発信する人は少ない。

これはWinとMacの話にも置き換えられて、大半のWin使いに取ってWinというのはただの道具。しかしMac使いはLoveMac、ジョブズ様のapple教。だからWeb上はシェアが低いにも関わらずMacの情報で溢れている。

■他の事にも置き換えられる

例えば創価学会。目に入ってきたネットニュースを見て一瞬だけ「創価ウザい」と思うだけでは、人生をかけて学会に尽くしている集団を止められない。対抗するためにはこちらも「反創価学会」にかける割合を増やさないといけない。本気で創価学会を嫌だと思うなら。

従軍慰安婦問題もそう。本気でなかったと思うなら、日本語のブログで仲良しごっこするだけじゃなく英語を勉強して世界に発信するべきだ。英語版wikipediaの編集合戦に勝つべきだ。

■結局

総人数じゃなくて総熱量なのである。よって(ネットに限らず)口コミを参考にする時はそこらへんを考慮する必要がある。

Web拍手&はてブ

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - Webの情報が軽量言語で溢れているのは、所属メンバーの優先順位が高いから

N★B後日談

NEWSING★BOOSTERをリリースして5日ほど経ちましたが、おかげさまでなんとか正常に動作しております。前のエントリーではリリースに伴うお知らせがメインだったので、ここではもうちょっと砕けたお話をさせて頂こうかと。

■アクセス数とか

  • 水 350
  • 木 238
  • 金 182
  • 土 95

って感じです。ぶっちゃけ思ったより少なくてがっかり25%+助かりました75%。自分自身完璧じゃないと分かっていたので、荒捜しされたりはてブで「これはひどい」とかつけられたら嫌だなぁと思いつつ、500人/dayくらいいくとは思ってたのですが…。まぁnewsingのヘビーユーザーに「こんなの作ってる」とアピールできたので先行者利益は確保できた?とか思ったり。

■データ取得の話

これは目に見えない不具合なんだけど、自宅PCでnewsingからデータ取得をしそれをFTPで転送しています。(だってサーバ上でやると一定時間でプロセス切られちゃうんだもん…)。で、何が不具合かというとPCつけっぱなしにしてるので部屋がうるさいということですね(笑)幸い、遊んでるMacMiniがあるので落ち着いたらそこに記事取得ロジックを移管。さらに知識を付けてレンタルサーバ上で記事取得ができるロジックを調査したいと思います。

■N★B作成裏話

実はこれが初めての自作CGIです。人力検索はてなでhtmlやcssの仕事をしてきた人が、プログラミング、DBの知識を付けて早起き生活みたいなサイトを作れるまでどれくらいかかりますか?という質問に対して、「週40時間と仮定して半年」「1年~1.5年」という回答がありました。

でまぁ俺は3/21(水)にボードで肩を脱臼し、3/24(土)からN★Bの作成を開始して4/4(水)にリリースしました。かかった時間は考える時間が10時間+手を動かすのに20~30時間くらいだと思います。

まぁ何が言いたいかというと別に俺が天才とかいうのでは全くなく、今までプログラミングの役に立たないと思っていたIT系の知識が今回のCGI作成に生かされた、ということです。具体的にどことは言えないけど「あーここはこの知識知らないと詰まるだろうなぁ」という箇所がいくつもありました。俺はプログラミングの知識がなかった。けどITの仕組みに対する概念理解はペーペーの頃よりも成長していたようです。

※まぁ俺の場合、一応大学でCを勉強してたし、バイトでWeb製作に関わった事もあるので全くの未経験ではなかったですが。

■スポーツに例えると

  • 小学校の頃はサッカー部で練習しててもリフティングが10回できなかったりしたけど、高校になると基礎体力や判断能力が向上して50回くらいは簡単にできるようになる。

とか。

■ちょっと調子乗ると

新しい言語を開発したり未開の分野を切り開くなら兎も角、今ある技術を習得するのはITエンジニアとしての人間的能力をアップさせるよりも断然ハードルが低いと考えます。

■またまたスポーツに例えると

  • テニスでは、教科書的な技術を習得するのは3~4年である程度できる。問題はそれを試合で生かせる判断力とメンタル力がつくかどうか。
  • スノーボードではある程度トリックができるようになったら、空中で自分なりのスタイルを出さないと一流と認めてもらえないし大会でも入賞できない。

とかとか。

■ということで、

本職には何の関係もないですが、Web系の知識もがんばって身につけようと思います。自分の限界を決めたら終わりです。100歳のおばあちゃんも言ってました。「60歳でバイオリンを始めていたら、今頃キャリア40年だったのに。」と。

Web拍手&はてブ

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - N★B後日談

Home > Tags > プログラミング

Feeds
Meta

Return to page top