Amon2を使って!DotCloudで!Facebook アプリを作りたい!(まだ試し中)

Facebookアプリ、あるじゃないですか。Facebookの中でアプリを動かしてるアレ。アレどうやってやるんだろうと思って、いろいろ試してみたメモ。まだうまく動いてない。


一応前提として、Amon2の DotCloud FlavorとBasic Flavorを使ってテンプレートを作ってます。

Amon2とFacebook APIとDotCloudと。

PerlFacebook APIを使うには、Facebook::Graphを使うのが良さそうだったので、以下のサイトを見ながらごにょごにょやってた。
Facebook APIを叩いてみる - すぎゃーんメモ
http://helloperl.com/example_facebook.permalink
でもうまくいかなかった。


で、Amon2のプラグインでAmon2::Auth::Site::Facebookっていうのがあるのがわかった。使ってみたらうまくいったよ。Amon2::Authの使い方は上、Site::Facebookを使った実例は下のリンクをご参照。
http://d.hatena.ne.jp/tokuhirom/20111017/1318805026
Amon2でFacebookAPIを使う その2 - Perl勉強メモ アルパカDiary出張版
コードは下のリンクほぼそのままで動いた。


DotCloud上で動かす場合は、プラグインの設定をconfig/deployment.plに書く。development.plにも書いてるけど、不要なのかもしれない。

Facebook内のアプリ

以下の記事(Facebook developerのCanvas Tutorialを和訳したもの)を参考に。自分で用意したwebページをiframeで呼び出す形式みたい。
Apps on Facebook.com : Facebook開発者向けドキュメントの日本語訳とTips


試しにDotCloud上で、認証用URLにリダイレクトするだけのページを作ってみたら、以下のエラーが吐かれた。

POST http://fbsample-hsksyusk.dotcloud.com/fbpage/ 403 (Forbidden)
Refused to display document because display forbidden by X-Frame-Options.

パケットを調べると、DotCloudからのレスポンスヘッダーのX-Frame-OptionsがDENYになってた。DotCloudさんの仕様?
ヘッダを上書きして、X-Frame-Optionsに適当な文字列をセットして、DENYコマンドを無効にすれば、うまくいくようになるみたい。
iframe - Overcoming "Display forbidden by X-Frame-Options" - Stack Overflow

といったところで、眠気がきたので寝ます。

2012.2.21追記
X-Frame-Optionsは、Amon2のlib/アプリの名前/Web.pmで出力してたのでコメントアウトした。
それでも403エラー。ローカルでiframeからDotCloudにアクセスしたら正常に表示されたから、たぶん呼び出し方の問題なんだろうけど、もう眠いので寝ます。
2012.2.26追記
解決しました。
Facebook内で使うタイプのアプリで認証にAmon2::Authを使う方法 - hsksnote

WindowsでMarkdownエディタを使うなら、ResophNotesくらいしかない

ゆーすけべー日記ということで、はてな記法Markdown記法が好物の私が、WindowsでもMarkdownエディタを使いたいと思って探してみたよ。

結果、お寒い状況だった

結論から言うと、リアルタイムプレビューできるアプリで使えそうなのはなかった。
使えそうなのは、ResophNoteくらい。


あとは、色々難があって使えない。せっかくなので、調べた結果を残しておく。


オンラインでもいいかもね


参考
Mastering Markdown: 30 Resources, Apps and Tutorials to Get You Started | Design Shack

iPhoneアプリを売ったときに、売り上げからいくら引かれるか

寄付アプリを考えてるんだけど、どうしてもナイーブに考えないとならないのが、課金による手数料とか上納金とかで、そのあたりを調べたメモ。あんまりまとまった情報がなかったので。

基本

iPhoneアプリを作ってApp Storeで販売して売上を得るまでに、以下のお金が取られます。

配布手数料・振込手数料を回避したい

今のところ手はなさそう。
方法としては、外部課金(迂回課金)が考えられるけど、現状はNGみたい。

ただ、食べログクックパッドが外部決済でやってる。下に課金までの流れを画像で掲載します。なんでOKなんだろうね。
あと、ソフトバンク かんたん募金って、どう見ても外部課金だよね?寄付ならいいのかしら。

外部課金ができるなら

PayPal Micropaymentsを使いたい。

PayPaliPhoneアプリもあるから、これと連携させたりできないものかね。

参考:食べログの外部課金までの流れ


普通のお店検索画面。ここで人気順を押すと。



プレミアム会員の登録へ誘導される。ボタンを押すと。



食べログにログインさせられる。ログインすると。



クレジットカードの入力画面。入力して、スクロールして。



下にあるボタンを押して確認画面へ。



カード番号とかが出る。下に確定ボタンがあって、それで登録される。
これと同じことやって審査通るの?やりたいんだけど。

ガチャ寄付のアイディアを考えてたらもっと大事なことに思い至った

UT Startup Gymに参加してから、自分でもwebサービスのアイディアをまた考えだしていて、昨日思いついたガチャ寄付というアイディアが捨て難かったので煮詰めてみたらもっと大事なことに思い至ったという話。


まずはガチャ寄付の案から。UT Startup Gymの企画会のフォーマットに沿って書いてみた。

ガチャ寄付

1回300円のガチャを引くと、NPONGOのバッヂがあたり、その団体に300円が寄付されるiPhoneアプリ

気軽に寄付ができない世の中じゃ……

寄付という行為が気軽にできない社会を変えたい。
気軽に寄付できないのはなぜか。

  • 寄付先が選べない
    • 寄付先のNPONGOが多すぎる
    • 社会問題の数も多すぎる
    • 調べるのも面倒くさい
  • お金を払うことに抵抗感がある
    • 銀行振込?カード使えるの?
    • 少額では恥ずかしい
      • 最低1,000円は払わないとかっこ悪いかな……
  • どこまでコミットしていいかわからない
    • 人生全部かけて?
    • 課題が解決するまで?
      • いつ解決するんだよ
  • 寄付した甲斐がない
    • 結果がすぐ出るわけではない
    • 結局どうなったかわからないまま忘れる

iPhoneアプリ「ガチャ寄付」が解決!

  • 寄付先が選べない→寄付先はランダム
    • 寄付先を選ぶ必要がない
    • 寄付することで、課題や団体のことを知れる
  • お金を払う抵抗感→1回300円
    • 300円が寄付の目安になる
  • 寄付した甲斐がない→すぐバッヂをもらえる
    • 寄付したことの満足感がすぐ得られる
    • バッヂがいつでも見れる
      • 寄付したことをいつでも確認できる

なぜ今か?

  • スマートフォンのアプリストアがすごい
    • ユーザーが簡単に課金できる基盤
    • 開発者が簡単に課金アプリを作れる基盤
  • NPONGOがカジュアルでも許容されやすくなってきた

「ガチャ寄付」が抱えそうな課題

  • 課題:ユーザーが寄付した以上の資金がいる
  • 解決策:ユーザーが寄付した以上のお金が寄付されることをウリに
    • スポンサーを募集
      • アプリ内で広告(CSR!)
    • Appleと提携できないか

その他、おもいついたこと

  • バッヂ集めがユーザーのモチベーションに
  • バッヂを公開することで自慢できる
    • 11連ガチャで1回サービス分
    • コンプリートボーナスとして、新しいバッジと寄付。
  • 期間限定ガチャ
    • 世界エイズデーなどの日に合わせて、その課題に取り組んでいる団体をチョイス
  • NPONGO側のアクションが、寄付を受ける率に影響する仕組みが欲しい。
  • ソーシャルゲームの面白さを取り込めないか?


ここまでが前振り。

本題

App Storeを寄付のプラットフォームとして解放してもらえないか。
今だと、有料アプリやアプリ内課金の30%?が、Appleの取り分みたいだけど、寄付に限ってはここを無料にする。ユーザーが寄付した金額がそのまま寄付先に流れるようにして欲しいのよ。
寄付アプリといえば、ソフトバンク かんたん募金がメジャーだと思うけど、これもApp Storeからの課金じゃなくて、クレジットカードを入力したりするんだよね。
これがApp Storeの課金になると、もう一段ハードルが下がると思うんだよ。
いやいや、クレジットカードでの寄付だって、PayPalの寄付だって、手数料取ってんじゃん、そういう向きもあるかもしれませんが、そこはAppleさん、先鞭を付けてくれませんかね。そのあといろんなプラットフォームが寄付の手数料を無料化したって、Appleさんに続いてっていうことになりますぜ?

スーダンのカドグリ近くの音を再生するサイトを作った。

UT Startup Gym 初心者勉強会の宿題が、「file_get_contents を使ったウェブページを作ってくる。」ということで、作った。
参考にするのはこちら。
Twitter API と file_get_contents でかんたん Twitter クライアント - utgym’s diary


題材はtwitterに限らずなんでもOKということだったので、AudioboomAPIを使うことにした。
GitHub - audioBoom/api: Documentation for the Audioboom.com API
リファレンスを参考に、APIをコールするURLを組み立てる。


つくったURLがこちら。
http://api.audioboo.fm/audio_clips/located.xml?find[latitude]=11.011971&find[longitude]=29.708748
"Search by distance from point"というAPIを使ってる。Audiobooに投稿される音にはロケーションデータが付いていて、このAPIはその情報を使って、指定した位置に近い音を検索する。
latitudeとlongitudeが緯度と経度を指定していて、ここはスーダンのカドグリです。
located.のうしろのxmlが、APIから受け取るフォーマットを指定している。参考記事とおなじjsonも受け取れるんだけど、decodeがうまくいかなかった。
上のURLのリンク先で、今回使うXMLデータがそのまま見れる。


このXMLを利用して作ったホームページがこちら。
http://exercise01-hsksyusk.dotcloud.com/utgym.php


ソースはこんな。ちゃんとHTML書いてません。

<?php
// APIコールURLの組み立て
$url='http://api.audioboo.fm/audio_clips/located.xml?find[latitude]=11.011971&find[longitude]=29.708748';
// APIからXMLデータを取得
$xml = file_get_contents($url);
// XMLデータをPHPオブジェクトとして読み込む
$arr = simplexml_load_string($xml);
echo '<h1>Sounds around Kadugli, Sudan</h1>';
// xmlの中のaudio_clipタグの中を$audio_clipに取得。
//audio_clipタグの数だけ繰り返す。
foreach ($arr->body->audio_clips->audio_clip as $audio_clip){
// $xx->xxの形で、xml構造の中のデータを指定して取り出す。
        echo $audio_clip->title . ' by ' . $audio_clip->user->username;
        echo '<br />';
//HTML5のaudio要素を使用。mp3はchromeでしか扱えない、ハズ。
        echo '<audio controls src='.$audio_clip->urls->high_mp3.'></audio>';
        echo '<br />';
        echo $audio_clip->location->distance . 'm';
        echo '<br />';
        echo $audio_clip->recorded_at;
        echo '<br />';
        echo '<br />';
}


ちなみに、このサイトは以下の記事を参考にして、dotcloud上で動かしてる。
DotCloud で PHP アプリを設置してみたときの色々 - 肉とビールとパンケーキ by @sotarok


わーい宿題できた―。

インフラ屋が酒を飲みながら話をする勉強会に行ってきた。

【キャリア☆トーク】〜アウトプットにも繋がる、エンジニアの日々の学習について〜
インフラ屋さんが集まって、いろんな話をする勉強会に行ってきた。
パソナテックさん主催なんで、具体名は避けるけど、Web系、SIer、社内インフラ見てる人など、参加者はかなりバリエーションに富んだ感じ。
あ、SIer経験者は多かったけど、現役は僕だけだったかもしんない。SIerこそ視野が狭くなりやすいから、こういうとこ出たらいいのにねー。
ペパボのインフラエンジニアの梅谷さんが講師役で、軽くお話いただいたあとは、梅谷さんの振りで参加者がそれぞれ話して、だんだん雑談風になる感じ。
勉強会や懇親会でぼっちには定評のあるこのおれも、この進め方だと初対面の人たちとも結構話せたよ。
で、いろんな話ができて、

  • OpenFlowとか、puppetとか、そういうトレンドを結構追ってる。
  • 勉強会はqpstudyとかhbstudyとかがある。
  • クラウドがきてるのでインフラの仕事が無くなるんじゃないかという危機感を持ってる。
    • これSIerこそ危機感感じるべきところだと思うんだけどなー。導入するインフラの規模で言えば、Web系に到底かなわないんだし、セキュリティとか、監査とか、そういう面でお客さんがクラウドに流れないと言うなら、それが解消されたと同時に仕事なくなるよ。
  • 構築して納めて終わりというSIer的インフラに物足りなさを感じてWeb系に転職した方「運用改善、楽しいですよ。それが醍醐味だし。」
    • すごいうらやましいんですけど。
  • インフラは動いて当たり前だから、あまり評価されない。もっと評価されていい。
  • 自分の仕事は利益を産まないので、負い目がある。(社内インフラの方)
    • SIerは納めて収入になるので、手堅い商売です。
  • Web系でも、インフラとアプリの断絶はあるところにはある。
    • SIerでは断絶どころか、要件を出してもらって納めるだけの関係だからなー。
  • 共同で作り上げていく文化も、あるところにはある。


自分は、

  • 作っては納めるだけの繰り返しでは、それこそルーチンワークになって、技術の上積みも期待できない。
  • 勉強してること、したいことが仕事と繋がっていないので、効率が悪い。焦る。
  • SIerには勉強会文化がないので、Web系の人たちの勉強っぷりを見て、焦る。

という話をしました。
あれ、ネガティブなことしか言ってねえな。