2013年2月18日月曜日

「ねちゃったー」の日本語化をクラウドワークスを使ってやってみた。

前回の続きです。

Freelancer.comを使ってインドの方に開発していただいたのでもちろん英語で納品されました。

しかし、僕自身が日本人ですし、Android版「ねちゃったー」のユーザーはほぼ日本人なので、日本語化が必須です。

最初は自分でやろうとしたのですが、ここでもObjective-Cのさっぱりさにより断念。

というわけで、クラウドワークスで日本語化してもらう方を募集しました。
https://crowdworks.jp/public/jobs/4676

ご提案内容で金額に幅はあったのですが、今回は機能のブラッシュアップやバグ修正もお願いしたかったので、それも含めてご提案していただいた方に発注しました。
https://crowdworks.jp/public/employees/1307

価格は3万円
日本語化だけならもう少し安く抑えられたと思います。

で、発注後すぐに日本語化されてきました。
慣れてる人だとすぐできるようですね。

あといくつか機能追加もしてもらいまして、予定の10日間から大幅前倒しの4日間で納品していただきました。

最初から高いクオリティでしかも超速対応。
海外との比較で価格が多少高くなろうが、こういうところに大きな価値があります。

そこを重視せず極力費用をかけないのであれば、日本語が堪能な外国人も世界にはたくさんいるようなので、海外のクラウドソーシングサービスで日本語化をするのも良いかもしれないです。

海外でアプリを作ってもらった後の日本語化について方策を検討されている方の参考になれば。

「ねちゃったー」のiPhoneへの移植をFreelancer.comを使ってやってみた。

2010年にAndroid版の「ねちゃったー」をリリースしました。
思いがけずそこそこの反応が得られていくにつれ、iPhone版をリリースしたい気持ちが出てきたのですがObjective-Cがまったく分からず諦めていました。

そんな中、今回クラウドソーシングの利用実験に参加する機会に恵まれ、「ねちゃったー」をiPhoneに移植することを題材に選びました。

予算は限られているので国内サービスの利用はできず、以前利用したFreelancer.comを利用することにしました。
こんな感じ↓で募集しました。
https://www.freelancer.com/projects/Java-iPhone/Convert-Android-app-iOS-app.html

いろんな国の人から応募がありましたが、なかなかポートフォリオの粉飾が疑われる人も散見され、それがある特定の国の人ばかりだったのでその国の方は応募内容を見ずに無条件で無視しました。
(だってさ、例えばリアルサッカー(https://itunes.apple.com/jp/app/id533391633)を開発しました!っていう人がいて、それって携わったのかもしれないけどよく聞く「アレオレ詐欺」に近いでしょw)

結局、提示価格とポートフォリオを判断基準として、インドの方にお願いすることにしました。
この方↓です。
https://www.freelancer.com/u/kantisuthar.html

価格は300ドル!(その後仕様追加により360ドルになりました。)

移植とはいえ言語が違うので実質的な新規開発であり、この値段は破格だと思います。
移植の良いところは仕様の説明があまりいらないことくらい。

で、上がってきた初版がこれ↓

正直、これはないで、というデキ。
まずどうやってアラームを追加するか分からない。
色々画面を触ってると、画面一番下のグレーのエリアをタップするとアラーム追加ボタンと設定ボタンが表示されました。

これは僕の説明不足だったせいもあり、元のAndroid版の画面がこれ↓

この場合、端末のmenuボタンを押すと画面下にアラーム追加ボタンと設定ボタンが表示されます。
つまり動作的には似てるといえば似てます。
でもそこはいくら説明不足とはいえ、OSによる操作系の違いとして、iOS標準の操作ができるようにしてほしかった。

なので、その他諸々の仕様変更をお願いしたところ、出てきたのがこれ↓

アラームのリストの一番下にアラーム追加ボタンを常に表示させるようにし、設定変更は画面上のボタンからできるようにしてもらいました。
ここまで到達するのに1ヶ月。応募時点では8日でできる、とのことでしたが。。。

納期については目をつぶるとして、最終的な成果物には満足なレベルに達しました。

そして、この人の良いところは、納品後のサポートも追加料金なしでしてくれるところ。
僕のテスト不足により納品前には発見できなかったバグを数時間で修正してくれました。
今後App Storeに出してrejectされた場合にも対応してくれるそう。
最初の成果物のクオリティにはビックリしたけど、ここまで責任感を持って対応してくれるなら安心です。

海外クラウドソーシングを使ってアプリを作ることをご検討の方の参考になれば。

※なお、まだApp Storeには上げていません。

2013年2月17日日曜日

ボクシング採点アプリ「採点しようぜ」、リリースされました!

iPhoneユーザーとの親和性など無視して、テレビでボクシングをしてたのを見たノリで作ったアプリ「採点しようぜ」が、一度rejectはされましたが、とうとうReady for Saleになりました。

https://itunes.apple.com/jp/app/score-it!/id598645424

こういうアプリは100%一般ウケしないのでどうやって認知度を広げようか考え中。

2013年2月15日金曜日

Parse.comでJavaScript SDKを使って値をインクリメントする方法

備忘録なので解説なしの超簡略版。

Documentを読んでもよく分からなかったので残しておきます。

<html>
  <head>
    <script src="http://www.parsecdn.com/js/parse-1.2.1.min.js"></script>
    <script src="jquery.min.js"></script>
    <script type="text/javascript">
      $(document).ready(function(){
        Parse.initialize(
          "操作したいアプリのApplication ID",
          "操作したいアプリのJavascript Key");
        $('#testButton').on('click', function(){
          // 操作したいクラス(テーブルみたいなもの)の準備
          var UserObject = Parse.Object.extend("クラス名");
          var userObject = new UserObject();
          // インクリメントしたいレコードの主キー(objectId)をセット
          userObject.set("objectId", "主キーの値");
          // インクリメントしたいカラム名を使ってコール
          userObject.increment("カラム名");
          // コミット
          userObject.save({
            success: function(object) {
              alert("yay! it worked");
            }
          });
        });
      });
    </script>
  </head>
  <body>
    <button id="testButton">test</button>
  </body>
</html>

2013年2月14日木曜日

Parse.comが超絶便利な件

Parse.comは、いわゆるBaaS(Backend as a Service)にカテゴライズされるサービスです。

BaaSって、要はAWSみたいなIaaSやPaaSの上に開発者が何もしなくても既にDBサーバーが動いていて、そのDBサーバーにアクセスできるAPIが提供されていて、さらにユーザー登録や認証ができるAPIも提供されているものです。
SaaSからソフトウェアを取り除いてフレームワークだけ残した感じです。

何に使うのかというと、超簡単に言うと、スマホアプリを作る際、ゲームでいうスコアボードのようなユーザー間で共有する情報の保存場所として使います。

サーバー側のサービス(アプリからのアウトプットを受け取ってDBに入れる、とか)を作るのが、だいたい動きは同じでも細かく違ったりして毎回はめんどくさいので、Parse.comのようなBaaSが便利なのです。

日本語の記事を探してもまだまだ少ないので、日本での盛り上がりは先なんでしょうけど。

2013年2月8日金曜日

In Reviewになった!しかし即reject!

午前3時ちょうどに「In Review」になった旨の通知が来てたことに今朝気づいた。
その1時間半後の午前4時31分にAppleからもう一通、「App Submission Feedback」という件名のメールが来てた。

中を見てみた。

Your app アプリ名 has been reviewed, but we are unable to post this version. For details, or to directly contact the App Review team, visit the Resolution Center in iTunes Connect.

いきなりrejectかよorz

というわけで、今からその理由を探りにiTunes Connectを見に行く。

【追記】
理由は、アプリ自身がどうのこうのではなく、全ユーザー対象のアプリで申請してるのに、広告にいかがわしいやつがあるよ、っていうことでした。
確かに出会い系サイトのバナーが出てた。
スクリーンショットを差し替えたらOKっぽいので広告が出ていないスクリーンショットにしよう。

2013年2月1日金曜日

ボクシングの採点アプリをAppStoreに申請しました。

Android版で先にリリースしていたボクシングの採点アプリをiOSに移植して、AppStoreに申請しました。
これが初iOSアプリです。
無事一発で審査に通るでしょうかね。

しかし、Androidに比べるとStoreにアップロードするまでが格段にめんどくさい!

これが2月1日の出来事。
すぐに「Waiting For Review」になったが、これが次に「In Review」になるらしい。
いつになることやら。

2013年1月25日金曜日

PhoneGapでAdMobを使う(Android版)

PhoneGapでアプリを作って広告収入でお小遣いが入ればいいな、ということで、そのやり方の紹介です。

PhoneGapでアプリを作るときに使う技術って、基本的にはHTML+JavaScript+CSSなので、ワンソースでiOSアプリもAndroidアプリも作れて、めっちゃ簡単。

でも、広告掲載みたいな外部SDKを使うとなるとワンソースじゃ無理なので、OSごとの実装が必要になります。

で、PhoneGapで作ったiOSアプリにAdMobを載っける方法はどなたかがまとめておられます。
http://webdelog.info/2012/09/iphone/cordova-phonegap-ios-admob/

それのAndroid版が日本語で見つからなかったのでここでまとめておきます。
といっても、
https://github.com/phonegap/phonegap/wiki/In-App-Advertisements
に載ってるの抜粋&翻訳です。

SDKのダウンロードとかパブリッシャーIDの発行とかは省略します。

まず、AndroidManifest.xmlのandroid:targetSdkVersionの値が"13"以上になっていることを確認して、applicationタグで囲まれた部分に、
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.ads.AdActivity"></activity>
を追加。

で、Javaの方にある○○Activity(だいたい、アプリケーション名+Activityっていう名前)に、
public class ○○Activity extends DroidGap {
    private Handler mHandler = new Handler();
    private AdView adView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
        mHandler.postDelayed(new Runnable() {
            public void run() {
                doAdMob();
            }
        }, 5000);
    }
    private void doAdMob() {
        adView = new AdView(this, AdSize.BANNER, "パブリッシャーID");
        LinearLayout layout = super.root;
        layout.addView(adView);
        layout.setHorizontalGravity(android.view.Gravity.CENTER_HORIZONTAL);
        AdRequest request = new AdRequest();
        adView.loadAd(request);
    }
}
を追加。

でもこれはLocalStorageを使う場合の実装。
広告を遅らせて表示することでLocalStorageの情報が消えないらしい。
LocalStorageを使ってない場合の実装は、参照元のページを見てください。

2013年1月24日木曜日

AndroidではAdmobメディエーションでi-mobileが使えない件 → 使えるようになりました(2013/01/24)

Admobメディエーションで広告ネットワークの追加ボタンを押したら使えるアドネットワークの一覧が表示されて、i-mobileもそこに名前が出てくる。

選んだら、設定するIDが3つあるので同じ名前の別物ってわけでもなさそう。

でも、設定してSDK入れて準備できたとおもいきや、ビルドするとAdapterクラスが見つからないというエラーが。
なるほど、アダプターを忘れてたのね、とAdMobのサードパーティのSDKやAdapterがダウンロードできるページに行っても、i-mobileが見つからない。

なので、問い合わせました。
すげー早いレスポンスで感動したんですが、回答にはがっくり。
Androidは未対応です、と。

というわけで、同じような現象が起こったらあきらめろ、という結論でお願いします。

【追記】
と書いた数時間後に、使えるようになりました。
記事を参照してください。
すみません。

[PhoneGap2.3.0]ボクシングの採点アプリ、できました。

とりあえずPhoneGapでアプリを作ってみようと思い、自分でもニーズはなかったのですが、たまたまテレビでボクシングをやってたので、それに影響されてラウンドごとに採点して記録するアプリを作りました。

昔、よく採点してたよなぁ。山本に影響されて。

それはともかく、ディープなボクシング好きなら間違いなく誰もがやっているであろう、テレビや会場で試合観戦しながらの採点。
でも、こんなにスマホを持ってる人が増えてるのにわざわざチラシの裏に書いてる。
しかも調べてみたらまともな採点アプリがない。(「ニーズがないからや」とか言わない。)

というわけで、PhoneGapの勉強がてら作りました。

興味があったらダウンロードして使ってください。

「採点しようぜ」
-Android版
https://play.google.com/store/apps/details?id=com.kyosuke25.socialboxing
-iPhone版
開発中