webプログラミング素人がmixiアプリ公開する為に最低限 必要だったこ

何度も言うけど、mixiアプリマイミク大喜利>を公開したよ!

ひたすらマイミク大喜利をPRしたいけど、それは後回し。
今回は、自分の開発をふりかえってみて mixiアプリを公開するために最低限 勉強しなければならなかったことをまとめます。

はじめに

mixiアプリ開発のまとめ記事には、有名な記事が数多くあります。


当時わたしはアプリを開発していたので、記事はすべて読みました。
ただ、「勉強すること多すぎ」と思ってしまったのも正直な感想です。
なんたって素人ですから。


だもんで、今回はmixiアプリを公開するのに必要だった技術にしぼって勉強方法をまとめてみようと思います。
あわせて、ほかの記事にはあんまり書いてないmixiアプリ公開申請についても審査に何度も落ちたので(腹いせに)まとめます。


わたしと同様、webプログラミング素人だけどmixiアプリ作ってみたいって人の参考になればうれしいです。

もくじ

・クライアント
  ・JavaScript
  ・OpenSocial
・外部サーバ
  ・Ruby on Rails
  ・rackspace cloud
mixiアプリ公開申請
  ・企画についてのガイドライン
  ・ガイドライン上のアプリの制限事項
  ・公開後のアプリのカテゴリー
・書かなかったこと
  ・jQuery
  ・opensocial-jQuery
  ・jQuery UI
・さいごに

クライアント

mixiアプリにはクライアントプログラムが不可欠です。

JavaScript

マイミク大喜利のクライアントはJavaScriptで作りました。
JavaScriptをこれから学ぶ人には<Head first JavaScript>がおすすめです。
わたしは<JavaScript 第5版>で始めましたが、とっかかりとしては難しく感じました。
Head First JavaScript ―頭とからだで覚えるJavaScriptの基本


<Head first JavaScript>がよかったのは、
説明がわかりやすい・そして JavaScriptのしくみを教えてくれるという2点です。
カンタンな本になるとただのサンプル集だったりして コピペしかできなかったりしますが
<Head first JavaScript>はそこまで難しくないのにコードが書けるようになると思います。
しかも、DOMやAjaxなどmixiアプリ開発に必要な技術もわかりやすく説明してあります。


ただ<Head first JavaScript>では説明していないこともあるので
必要なものは他で補う必要があると思います。
*1

そうそう。弾さんもおすすめしてましたよ。わたしなんかより説得力あるわー。
http://blog.livedoor.jp/dankogai/archives/51092934.html

OpenSocial


mixiアプリOpenSocialコンテナからマイミク情報を取得します。
コンテナとのやりとりの規格がOpenSocialです。


OpenSocialを学ぶには、<mixi Developer Center>の<技術仕様>で十分と思います。
当時は内容こんなに充実してなかったよね?なんだかなあ。
http://developer.mixi.co.jp/appli


ただ<技術仕様>だとAPIの詳細が知りたくなったときに困るので
必要に応じて<OpenSocial API リファレンス>を参照していました。
http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/


先に勉強しておけばよかったと後悔したのは、mixiパーミッションモデルです。
mixiでは、ユーザの情報のうちアプリが取得できる情報を制限しています。
たとえば、Viewerがアプリをインストールしていない場合 Viewerのマイミク情報を取得できません。
パーミッションモデルを理解していないことで、何度かハマってしまいました。
http://developer.mixi.co.jp/appli/spec/pc/permission_model

外部サーバ

mixiアプリには外部サーバも不可欠です。
外部サーバはアプリのデータを保存しておくのに使います。

Ruby on Rails


外部サーバのwebフレームワークには、Ruby on Railsを使いました。
理由は、RubyRailsをかじったことがあったからです。それだけ。
ちなみに、JavaPythonPHPもできないのは内緒です。


サーバサイドはいくつか選択肢があるので、
なじみの言語とフレームワークを使うのが手っ取り早いはずです。


開発事例の多さで言うと JavaSlim3(とGoogle App Engine)
*2,*3で、
PHPZend Framework*4,*5の事例がわたしの読んだかぎり多いです。

rackspace cloud


外部サーバは試行錯誤の末、rackspace cloudを選択しました。
http://www.rackspacecloud.com/cloud_hosting_products/servers/
当初はさくらのレンタルサーバーを使っていましたが、
Railsの起動にたびたび失敗するため乗り換えました。


クラウドサービスのなかでもrackspaceを選んだのは、
費用が安い・Railsでデータベースを使いたかったからです。
実際のところ rackspaceにいくらかかっているかというと
1ヶ月あたり $10 - $11 (最小構成時)で済んでいます。


ただ難点もあります。日本語ドキュメントが少ないことです。
そこで参考にさせていただいた日本語の導入事例を紹介しておきますね。


サービス申し込みの手順
http://d.hatena.ne.jp/rackspace/20100119/1263905011


CentOSの初期設定
http://maeda.farend.ne.jp/blog/2010/01/13/rackspace-centos-initial-setup/


apacheの設定
http://d.hatena.ne.jp/rackspace/20100121/1264081209


FTPサーバの設定
http://d.hatena.ne.jp/rackspace/20100213/1266035100


イメージのバックアップ手順
http://d.hatena.ne.jp/rackspace/20100121/1264059046


Railsの立ち上げ
http://maeda.farend.ne.jp/blog/2010/01/16/rackspace-centos-rails-setup/


余談。
rackspaceと契約すると ネイティブから身元確認の電話がかかってくるという噂がありました。
わたしも契約後しばらく身構えていたのですが、母からお見合いしないかという電話がかかってきただけです。
ネイティブからはいちどもかかってきていません。英語が苦手な人も臆せず、rackspaceしてみてください。


そのほかにもrackspaceはサーバ拡張もカンタンだし・サーバイメージの自動バックアップもできるし、
なんだか流行りのクラウドっぽいし(?)、とにかくおすすめです。

mixiアプリ公開申請


公開申請を通さないとアプリは新着のページに掲載されません。
しかも、公開申請しないとアプリを他のユーザが使うのに開発者がいちいち承認しないといけません。


ずばり mixiアプリ公開の最大の難所は、公開申請だと思っています。いやホントに。

企画についてのガイドライン

mixiアプリ公開の難所は公開申請だというのは
審査でNGになり アプリをいくつか公開できなかったからです。


特に、NGとなる理由が企画自体に対する指摘だと かなり厄介です。
プログラムの実装に対する指摘であればバグを直せばいいだけですが、
アプリの企画、それも趣旨にかかわる指摘だとアプリをお蔵入りさせてしまうことになります。


とにかく企画のガイドラインは、開発の最初に読んでおくべきと思います。
http://developer.mixi.co.jp/appli/policies/apps/guidelines


そしてアプリの企画がガイドラインに沿っているか見極めるには、まず類似の機能を持つアプリを探すのがよいです。
もし、類似の機能を持つアプリが見つかったら 企画的にはOKなはずです。
いっぽう類似のアプリがない場合は、作りこんだ末公開NGになるリスクをつぶすために
なるはやでアプリを公開申請するのがいいと思っています。


というのも、アプリを作りこむ前に公開申請をかけて結果的にうまくいった経験があるからです。
マイミク大喜利は作りこみ前に公開申請をかけて、いちど申請NGになっています。
しかし、NGになった理由が実装に不備があるというものだったため
企画的にはOKという自信をもって開発を進めることができました。これが結果的にはよかった。


ただ”早くリリースすることも大事なのですが、多少の時間をかけてでも内容的に満足をしてもらえるものを作ることも大事だと思います*6”という面があるので
類似のアプリがない場合は公開申請にかける期間と公開直後の完成度のトレードオフを見極めないといけないんです。

ガイドライン上のアプリの制限事項

アプリ上ユーザに個人情報を入力させることは、ガイドラインで禁止されています。
ですので、他のwebサービスのID・パスワードをアプリ上で入力させることはできません。


このように、技術的には可能であってもアプリの機能がガイドラインで制約されることがあります。
ガイドラインにはアプリの制限事項も記載してあるので、要チェックです。

公開後のアプリのカテゴリー

アプリがどのカテゴリーに掲載されるかは、多くのユーザーに使ってもらう上で重要です。
もし”その他”のカテゴリーに掲載されてしまうと、ユーザー数の伸びは期待できません。


アプリを”エンターテインメント”などのカテゴリに掲載してもらうには、次の2つがポイントです。
・アプリの機能を、マイミク同士のコミュニケーションに限定する
・公開後 カテゴリー変更を申請する


マイミク以外のユーザー間でのコミュニケーションが行えるアプリは
その他カテゴリーに掲載すると、ガイドラインには記載あります。


ただ、ガイドラインを守ったとしてもアプリが”そのほか”に掲載されることがあります。ややこしい。
それでも、あきらめるのはまだ早い!
カテゴリ変更申請すると、別のカテゴリーに移してもらえます。
http://developer.mixi.co.jp/appli/com/change/category
実際、マイミク大喜利もこの申請をしたあと ”エンターテイメント”のカテゴリに掲載してもらえたのです。


せっかくアプリを作ったんだから、多くのひとに使ってもらいたいたい!って人は
公開後のカテゴリーにも気を配ったほうがよいと思います。

書かなかったこと

ここまで、わたしがmixiアプリを開発し そして公開するために最低限 勉強しなければならなかったことをまとめました。
ただ、必要最小限なことだけでは 開発において不自由なことがあるのです。残念ながら。


特に、個人開発では少ない作業時間でどれだけ効率よく開発できるかが重要だとさいきん実感してます。
そして効率よく開発するには、ライブラリの活用が必須というのがわたしの結論です。


ここからは、効率よく開発するためにいまやっていることで・本エントリに詳細に書かなかったことを挙げておきます。

jQuery


JavaScriptのDOM操作はjQueryを使うと、コードが簡潔になります。
また、jQueryやっておくとopensocial-jQueryjQuery UIの前提となる知識が身について
他のライブラリのとっかかりがラクになります。

opensocial-jQuery


opensocial-jQueryのTemplateを使うと、gadget.xmlとjsの依存関係を少なくできます。
UIを微調整してもjsをあまり修正しなくてすんだので、おすすめです。
作者はなかじまんの中嶋さんです。ドキュメントは日本語でおk。すばらしい。
http://code.google.com/p/opensocial-jquery/

jQuery UI

男子もmixiアプリも見た目は大事です。たぶん。
マイミク大喜利では、UIをカッチョよくするのに jQuery UIを使っています。

さいごに

わたしが作ったmixiアプリをそろそろ紹介させてください。後生ですから。


マイミク大喜利>といいます。
いわゆる「写真でひと言」をマイミク同士で楽しむアプリです。


このアプリを通して、ボケることが楽しいんだってことを
もっとみんなに知ってほしいもらえたら うれしいです。

というわけで

もし<マイミク大喜利>に興味をお持ちの方がいらっしゃいましたら

alsokumapo+ohgiri[atmark]gmail.com

までご連絡ください。
グッドルッキング女子からのご連絡も大歓迎です!たぶん

*1:クロージャや継承は説明なかったと思います。ちゃんと読んでないだけかも><

*2:http://d.hatena.ne.jp/kaw0909/20101027/1288137380

*3:http://d.hatena.ne.jp/funyamora/20100419/1271633548

*4:記憶スケッチ

*5:ようこそマイキッチン

*6:http://d.hatena.ne.jp/funyamora/20100419/1271633548