文系ド素人がmixiアプリを開発〜リリースするまでのまとめ
というわけで
プログラミング未経験の状態から、mixiアプリのリリースまでなんとか漕ぎ着けることができました!最近、OpenSocial界隈は盛り上がってるみたいだし、プログラミング経験はないけれど、興味ある!って人も多いと思います。そこで、所謂「ド素人」の状態からプログラミングを勉強してmixiアプリをリリースするに至るまでの僕の軌跡と、何をどう勉強すればいいのか?ってのをまとめてみました。webで調べたり、プログラマの知人に相談したりしてこれは良かった!って部分を抜き出してまとめたので、これから勉強するぞって方は参考にして頂ければ幸いです。これであなたもSAP(ソーシャル・アプリ・プロバイダー)に!
完成したアプリ
「一行リレー小説」
http://mixi.jp/view_appli.pl?id=15525
開発期間:実質3ヶ月程度
リリース日:3月24日
現在の投稿総数:7622行
現時点でのユーザー数:1112人
一日のPV数:3000超程度
サーバー運営にかかるコスト:月7000円ほど(amazonEC2/S3を利用)
という感じです。大赤字で涙目ですが、正直これくらいのユーザー数なら別にさくらの月1500円のレンタルサーバーでも捌けるはずなので、ちょこっとアプリ作りたい!って人はわざわざクラウドとか利用したりしなくても大丈夫そうな感じです!
スタート地点
・htmlとかcssはなんとなく書ける。
・レンタルサーバーを借りて、簡単なホームページは作ったことある
・でも、プログラミングは全く未経験。配列?ループ文?なにそれ、こわい。
という状態からガチでソーシャルアプリを作ることを決意。
1.サーバーサイドのお勉強をする
とにかく、素人でもPHP使えばいろいろできるんだぜ!みたいな記事をよくはてブで見ていたので、何はともあれまずPHPを勉強してみることに。(というか、この時点ではPHPとMysqlだけでmixiアプリも作れると思ってた)amazonとかブログの書評とかを見てPHPの勉強のために読んだ本が下の2冊。両方読めばとりあえず、データベース使って簡単なwebアプリなら作れるようになります!多分。

- 作者: WINGSプロジェクト,山田祥寛
- 出版社/メーカー: インプレス
- 発売日: 2004/09/22
- メディア: 単行本
- 購入: 22人 クリック: 470回
- この商品を含むブログ (26件) を見る

- 作者: Rasmus Lerdorf,Kevin Tatroe,Peter MacIntyre,高木正弘
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/10/23
- メディア: 大型本
- 購入: 16人 クリック: 329回
- この商品を含むブログ (50件) を見る
2.クライアントサイドのお勉強をする
勢いに乗って、実際にmixiアプリの開発についてググって調べたりコードを見たりしてみると・・・。あれ・・・?あれ・・・?プログラミング勉強したハズなのに、なんだか見慣れない文法や記法ばかり・・・。なんと!mixiアプリ、というかOpenSocialはPHPではなくjavascriptで動いたいたのです!いや、サーバーサイド(PHPなど)の知識も必要なのですが、メインの部分はjavascriptで書かれているのです!というわけで再びamazonのレビューやブログの書評を見たりして勉強の仕方を調べる。結論として、javascriptは以下の二冊だけやっとけばOKだという結論に至りました。javascriptの場合、下手な入門書だと本当に上っ面のことしか書いてなかったりするんで、以下の2冊を気合で勉強するのがいいと思います。

- 作者: David Flanagan,村上列
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/08/14
- メディア: 大型本
- 購入: 52人 クリック: 1,011回
- この商品を含むブログ (271件) を見る

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
- 作者: Douglas Crockford,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/22
- メディア: 大型本
- 購入: 94人 クリック: 1,643回
- この商品を含むブログ (190件) を見る
この2冊を読み終えたあと、PHPの知識と合わせてajaxで簡単なアプリを何か作ってみるといい感じです!mixiアプリは、基本全てajax(非同期処理)で書くことになるからです。あと、フレームワークの使い方も抑えておくとさらにグッドです。ちなみに、今回のアプリでは「prototype.js」というフレームワークを使用しました。
3.やっと・・・mixiアプリの開発へ!
というわけで、ようやく開発へ。で、mixiアプリについてはどうやって勉強するんだ?と思ってるかもしれませんが、mixiアプリの中身自体はjavascriptで通信部分に関してはajax的なものとPHPで書くことになるので、新しいことを学ぶ、というより今まで学んだことを生かして実際にコーディングして行くという側面が強い感じです。では、実際にmixiアプリを開発するにあたって、大枠の手順を箇条書きにしてとめてみます。
○下記アドレスの手順に従い、ディベロッパー登録をする
http://developer.mixi.co.jp/appli/pc/pc_prepare/developer_account_regist_pc
○xmlファイルを用意する
このxmlファイルがmixiアプリの本体となります。XML!?と聞いてもビビるかもしれませんが、安心して下さい。以下のアドレスにあるxmlの中身をコピーして、以下の部分にjavascriptやhtmlを記述すればいいだけです。
http://developer.mixi.co.jp/appli/pc/lets_enjoy_making_mixiapp/helloword_of_mixi_app
拡張子にビビらなくてもOK!コピペしたものの中身だけちょっと変えればほら!これでもう、あなたのアプリです!
<?xml version="1.0" encoding="UTF-8"?> <Module> 〜省略〜 <Content type="html"><![CDATA[ <!--- 以下の部分にhtmlとjavascriptでコードを記述します。 --> <h1>Hello mixi App World!</h1> <p>これはわいのアプリや!</p> <script type="text/javascript"> alert("わいのアプリなんや!"); </script> <!--- コード、ここまで --> ]]></Content> </Module>
○xmlファイルをサーバーにアップロードする
サーバーの準備に関しては次項で詳しく説明しています。サーバーのレンタル方法やFTPの使用法なんかに関しては、事細かに説明してるサイトがたくさんあるので検索すればすぐに親切な解説サイトが見つかるはずです。サーバーを確保できたらば、xmlファイルをweb上にアップしましょう。
○mixiアプリを登録する
以下のアドレスで、必要項目を入力すればとうとうあなたのアプリがmixi上で動作するようになります!ガジェットURLという項目には、先程web上にアップしたxmlファイルのアドレスを入力すればOKです!
http://mixi.jp/add_appli.pl
○さぁ、アプリ作成開始!
いよいよ、実際のコーディングです。マイミク情報を取得したり、idからニックネームを取得する、などのmixiアプリやOpenSocial固有の機能の使い方に関しては、以下のサイトを見ると参考になります。大体の疑問はmixi Developer Centerで解決するかと思います。最低限の機能はソースコードも掲載してくれているので、最悪コピペでも動作可能です。それでも分かりづらい部分や疑問があったときは、下の2サイトを見てみると同じことをより詳しくor分り易く書いてたりするので、オススメです。
・mixi Developer Center
http://developer.mixi.co.jp/appli
・goo Developer's Kitchen
http://developer.home.goo.ne.jp/
・OpenSocial API デベロッパー ガイド
http://code.google.com/intl/ja/apis/opensocial/docs/0.8/devguide.html
○補足
アプリの開発を実際に始めると、コードを変更したのになぜか反映されない!ってここが起こります。これは、mixiアプリが強力なキャッシュ機能を備えているためです。詳細と対策は、以下のサイトなんかを参考にしてみるといいでしょう。
・mixiアプリ開発日誌−mixiアプリ キャッシュを無効にする方法
http://blog.soratobu.jp/2009/04/465/
また、実際のコーディングを行う時にはFirebugなどのデバッグツールを使用すると飛躍的に効率がアップするのでオススメ(というか必須)です!それに加えて、プログラミング用のエディタを仕様するとさらに開発効率は上がると思います。僕は、次項で説明するlinux環境を用意できてからは、vimというエディタを使用して開発していました。
4.サーバー環境を整える
大体の個人アプリはサクラのレンタルサーバーで全然大丈夫だとは思うのですが、万が一大ヒット・・・なんてことがあるとmixiアプリの場合ケタ違いのアクセスが生まれるので、並のサーバーではとても持ちません。もちろん、ここまで読んでくれた方は、すでに頭の中で万が一の大ヒットのことを想像してヨダレをたらしていることかと思います。僕も、万が一のことを考え今回のアプリはamazonEC2でサーバーを構成していました。所謂、流行りのクラウドというやつです。実際の運用方法や概念については、下記の書籍が参考になりました。
下の入門書を読みながらVMwareを使って、仮想環境でroot権限の勉強をしました。まぁ、なんだかんだ言って普通にプログラミングしててもどっかでサーバー周りの話は絡んでくるので、linuxのお勉強をしておいて損することはないと思います。なお、VMwareのインストールに関しては下記のサイトを参考にしまいた。
http://bach.istc.kobe-u.ac.jp/lect/tamlab/ubuntu.html

Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)
- 作者: 高町健一郎,大津真,佐藤竜一,小林峰子,安田幸弘
- 出版社/メーカー: アイ・ディ・ジー・ジャパン
- 発売日: 2007/10/06
- メディア: ムック
- 購入: 26人 クリック: 633回
- この商品を含むブログ (48件) を見る

クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)
- 作者: 並河祐貴,安達輝雄,ITpro/日経SYSTEMS
- 出版社/メーカー: 日経BP社
- 発売日: 2009/11/05
- メディア: 単行本
- 購入: 4人 クリック: 372回
- この商品を含むブログ (18件) を見る
・RX-7乗りの適当な日々
Amazon EC2/S3を使ってみた - まとめ (Amazon Web Services関連エントリ目次)
http://d.hatena.ne.jp/rx7/20080528/p1
5.そして、公開へ!
mixiアプリの公式カテゴリ掲載の申請をすると、mixi側の審査を受けた後それが通ってれば正式公開となります。注意点としては、
・推奨環境を書いておかないと審査に落ちる
・バーチャルグラフを使ったアプリは審査は通るが18歳未満の利用が制限される
・バーチャルグラフを用いたアプリは、オススメ欄掲載は絶望的
などでしょうか。審査には大体1〜2週間くらいかかるとmixiのディベロッパーセンターには書いてあったのですが今回開発したアプリの場合、申請から3営業日での公開となりました。実際には大体2〜3日で公開されるアプリが多いみたいです。また、確信はないのですがバーチャルグラフを利用したアプリはmixiアプリのオススメの項目には掲載されないようです。さらに、どんなジャンルのアプリであろうがまず間違いなくカテゴリ「その他」に分類され導線は限りなく細くなるので、ヒットを狙うならソーシャル・グラフに絞って利用できるものを開発するのが良さそうですね。あ、それからアプリをインストールしていなくて、かつマイミクではないユーザーの個人データは取得できない仕様となっています。ここまでは良いのですが、アプリを一度入れたけれど削除してしまった人のデータも当然取得出来なくなるというのが意外と盲点なので気をつけて下さい。バーチャルグラフを利用したアプリだと、下手するとコレで致命的なバグを引き起こす可能性もありそうなので。
6.まとめ
・開発にはサーバーサイドとクライアントサイド、両方のプログラミング知識が必要
・ヒットする可能性があると思うなら、サーバー環境を大規模アクセスに耐えれるよう整えてから公開しよう
・ヒットを狙うならバーチャル・グラフは極力利用しないようにしよう
以下、技術的なお話に関するまとめでした。戦略的なお話のまとめも用意しましたので、これを読んでアプリを開発するぞ!と思った方はぜひこちらもお読み頂ければ、と思います。
http://d.hatena.ne.jp/kazu0620/20100413/1271181653
余談
というわけで、文系でプログラミングは未経験だと言う人でも数カ月かければmixiアプリは作れます。ちなみにこれは完璧余談なのですが、このアプリの公開は大学の卒業式の前夜に始まりました。おかげで、思いも知らなかったバグの修正やまだ時間的余裕があると思ってたために追加してなかった必須機能の追加などのため式の直前まで徹夜でプログラミングをするハメに・・・。とはいえ、なんとか無事式には出席できて僕も晴れてニートの仲間入りを果たすことができました。世間の噂を真に受ければ既卒なのですでに人生終了!という噂ですが・・・。これより、就職活動を開始したいと思っております。アルバイトでも構わないので何とか、仕事を見つけられれば・・・と思っています。