2014年12月26日金曜日

Twitter連携アプリをPC/スマートフォンから解除する方法

Twitter連携とは

まずTwitter連携とは何なのかを解説します.
わかってる方は飛ばして頂いて構いません.

Twitter連携とは,
アナタのアカウントを「誰か」に
ツイートしたりリツイートしたり,果てはパスワード変更したり
といった操作をする権利を与えるということです.
しかも知らないうちに与えていることもあるのです.
ここではTwitter連携で不正にツイートさせられていることを
感染と呼ぶことにします.

つまりアナタのアカウントは「誰か」に乗っ取られ操られるということです.
これはかなりキツい言い方をしていますが.

よくわからない広告をリツイートしている人をたまに見かけますよね.
ひょっとしたらアナタも知らないうちに同じことをしているかもしれません.

いや,そんなアプリ持ってないし
って思うかもしれませんがちょっと一例を見てください.(昨日みかけた実例です)


Twitterでこういうツイートが流れてきました.(フォローしてる方がリツイートしてました)
顔面崩壊,先を見てみたくなる内容ですよね.
そこでリンクを踏んでみます.


するとこういう画面がでてきました.
ここで顔面崩壊の先を見たいからといってアプリを認証するを押すと,
アナタのアカウントへの操作権を誰かに渡すことになります.
そう,顔面崩壊は騙しだったのです.
よく認証画面見ましたか?性格診断imessageってなんですか?
そもそも性格診断もまずでしょう.

何らかの人の興味を集めそうな記事(動画・画像なども)があって
続きはこちらでというふうにリンクがあって
そして感染させるというのが手口になっています.
(エロ動画につられて感染している紳士も多いとか)

ボタンを押しただけなのにアプリが登録されます.
そういうものなのです.
その後,アナタのアカウントで勝手にツイートされたり
パスワード変更されて自分では使えなくなったりされるのです.

本当は,ツイートができる/パスワードの変更ができる
などといった許可が連携アプリにそれぞれ設定されていて
アプリ側からは設定外のことはできません.
それは認証画面で表示されています.
先の例だと認証すると勝手にツイートされたりプロフィール変更させたりということを許可しています.

例を見てお分かりいただけたかと思いますが
アプリと言ってもスマートフォンにダウンロードするものとは限らないのです.

では何故このようなものが存在するのか.
全くの悪というわけではありません.
本来の意図としては
まず考えられるのがTwitterクライアントアプリのため
ついっぷるやjanetter,Twitbirdなどといったクライアントアプリで
ツイートしたり設定変更をしたりするためのものです.
次に自動ツイート機能.
定期的に同じツイートをしたり,
botのようにランダムでツイートしたりするためのもの.

正しく使えば便利な機能なのですが,
おおよそ不正な使われ方をしているのです.

この項の最後に知っていただきたいのが
アナタがTwitter連携感染していると
感染させるためのツイートを行わされて
あなたがあなたのフォロワーにも感染を広げることになる
ということです.
はい,すこぶる迷惑ですよね.


自分がTwitter連携感染しているか確認する方法

では自分がTwitter連携感染しているかをどうやって確認するかですが
簡単な方法としては自分のツイート一覧をみて
自分でした記憶のないツイートをしていたり,
自分でした記憶のないツイートをリツイートしてたりしたら
まず感染しています.
しかしその方法では確実ではありませんし,
確認したところで解除できません.

パソコンが使える場合
パソコンのブラウザからTwitterにログインして
右上の自分のアイコンを押す,設定を選択,

アプリ連携を選択

すると今登録されているTwitter連携アプリの一覧が表示されるので
とりあえず片っ端から取り消してみましょう.
必要な物はまた後から追加できます.

パソコンが使えない場合
問題はパソコンが使えない場合です.
スマートフォンしか使っていない場合は
実質はパソコンの場合と同じ手順なのですが
ちょっとややこしい手順が入ります.

ややこしいのが苦手な人は次の項を見てください.
ただしAndroidのみ.

まずChromeを開きます.
「Chrome」です.
「ブラウザ」でも「Safari」でもなく「Chrome」です.


Androidの方はスマートフォンのアプリ一覧探せばあるはずです.
なければダウンロードして下さい.
https://play.google.com/store/apps/details?id=com.android.chrome&hl=ja

iPhone/iPadの方は元から入ってないのでダウンロードしてなければダウンロードして下さい.
https://itunes.apple.com/jp/app/chrome-google-nou-ebuburauza/id535886823?mt=8

そしてTwitterへアクセスしログインしてください.
ログインできれば右上のメニューボタンをクリック,

PC版サイトを見るにチェックを入れてください.

あとはPC版と同じ手順で解除できます.
強いて言うなら
https://twitter.com
にアクセスしてください.
アプリと似た画面のモバイル版(https://mobile.twitter.com)にアクセスしても設定の確認・解除はできませんよ.


Androidでめんどくさいのが嫌な場合

Android用の連携アプリ確認・解除用のアプリを作って公開しました.
TwAppRemover
https://play.google.com/store/apps/details?id=jp.mau.twappremover
無料です.広告もありません.スマートフォンの中身も見ません.
2日間で作ったので万一動かなかった場合は諦めて上記の方法を採ってください.

1銭の儲けにもならないアプリなのでこれ以上労力をかける気もありません.
今後Twitterの仕様変更で動かなくなる場合もあるかもしれませんが.

Twitterにはさっさとスマートフォン用アプリで連携解除に対応してもらいたいものです.

2014年12月21日日曜日

Live HTTP Headersのリプレイ機能が使えない点について

FirefoxのアドオンでLive HTTP Headersというアドオンがある.
HTTP通信の送受信ヘッダを見ることができるアドオンである.

十年近くまえからこのアドオンを利用していたのだが,
久々にサーバーとの対話系アプリを作成するにあたって使ってみると
ある機能が利用できないことに気づいた.

Live HTTP Headersにはリプレイ機能といって,
送信して取得したヘッダやクッキー,POSTパラメータなどを再利用して
もしくは自分で組み直して
送信することが出来る機能がある.

どのヘッダをどうすればどうなるのかという
サーバーの反応をみるのに重要な機能だったのだが
その機能が使えない.

よくよく調べてみると
このLive HTTP Headersというアドオン,
2011/05/09の版(Ver.0.17)が最新のようで
現時点で3年以上更新がない.
現時点でFirefoxはVer.34なのだが
Version 0.17 is compatible with Firefox 4.0.
とある.

じつはFirefoxのHTTP Cache API がVer2になっており
Live HTTP Headersのリプレイ機能はAPI ver1から2になるときに
削除されたAPIを使っていたようだ.

もはやこのアドオンはサポートされていないようなので
公式のアップデートは望めないのだが
有志が公開してくれている.

手元で確認したところ,リプレイ機能が使えるようになった.
この野良アドオンについて信頼するかしないかの判断を下した上で
利用していただきたい.

http://rghost.net/58012556

リンク切れになった場合は申し訳ない.
修正方法も書いてくれているので下記リンクを参照されたし.


参考:Live HTTP Headers バグリポートページ(https://www.mozdev.org/bugs/show_bug.cgi?id=25831

2014年7月4日金曜日

【Android】NinePatchの赤い点

Androidにはボタンなどに使う背景画像を
端末サイズに合わせてただ引き伸ばすのではなく,
引き伸ばすところ,引き伸ばさないところ,を
画像に設定することでどの端末で見ても
不自然にならないようにするNinePatchという機能がある.

角丸の画像で角を拡大するとぼやけるが
直線部分だけを拡大するなら問題がない.
伸ばしたい部分と伸ばしたくない部分を設定できるのだ.
人間の長所短所にもNinePatchがあればいいのにね!

このことに関してはAndroid開発者に加え,
アプリアイコンデザイナなども知っておくべき常識となる.
ただし下手に知られていると
NinePatchルールを履き違えたアイコンが送られてきたりするので
そういう場合においては鬱陶しい常識である.

常識的なことなので
こちらに関しては他のサイトにお願いするとして

Android SDK LV19のリソースを眺めてたら
こんなNinePatch画像を見つけた.

NinePatchの最外周には黒(#000000)のみではなかったのか.
しかしAndroidのリソースに赤(#FF0000)が存在するのである.
ちなみにこの画像はEditTextで使われている画像である.
入力欄に用いるあのEditTextである.

端末によってはEditTextの背景が透過されて
レイアウトが黒いと入力した文字が見えなくなってしまう
なんでやねんということから調べ始めたのだが.

なんだろう,この赤いラインは.
と思って調べてみたら
どうやらLayout Boundsという言葉がちらほら見えてきたので
それを更に探っていくと
こちらのページに行き着いた.
凄まじく丁寧に書かれている.
さすがプロという感じだ.
↑「感じ」とか抽象的な単語ばっか使うのがプロとの大きな差なんだよなまず.

全てを把握してもここまで書けない自信しか湧き上がってこない.
要するに,従来のNinePatchでは黒い線でPadding部分を設定できたが,
新しいNinePatchはそれに加え赤い線でMargin部分の設定もできる
ということらしい.
イマイチPaddingとMarginがどちらがどちらか憶えられないうんこ
しかし,残念なことにこの機能が使えるのは
Android4.3(API Lv.18)以降のみである.
これをメインで使えるのはまだ2年は先のことであろう…
その前に地球が滅んでいる可能性も微レ存

と,結局メインのポイントも他のサイト頼りじゃないか!

こういうのがおんぶにだっこというのである,
これがこのエントリの最大のノウハウだ!

余談だが,以前のエントリで
背景画像を繰り返すときにもNinePatchに関して
NinePatchの仕様を流用してパターン繰り返せるんじゃねと思いつき
とソースコードレベルで調べていたのだが
どうやら画像を抽出するあたりは
おいそれとは手も足も出せない場所(Native)だった.
ので,断念した.

うわ,まさかの余談ですら役に立たなかった模様.

赤いNinePatchに関して情報が出回ればいいなということで.
筆を,いやキーボードを叩いた次第である.

2014年7月3日木曜日

【AndEngine】テキストの色変更

AndEngineでテキストを使う場合に注意すべきこと.

// フォントは使いまわすためにメソッドローカルじゃなくクラスフィールドでもっておこう
Font font = FontFactory.create(getFontManager(), getTextureManager(), 256, 256, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32, true, Color.WHITE);
font.load();
// テキストの作成
Text text = new Text(0, 0, font, "aaaaaaaaaaaaaaaaa", getVertexBufferObjectManager());
// 色を指定
text.setColor(Color.RED);
// 表示
attachChild (text);

で赤い文字が表示されるのだが,
上記の通りFontFactory.createメソッドで
フォントをWHITEで取っておく必要がある
後のsetColorメソッドで色を乗せるためである.

このメソッドには引数で色を指定しないものもある.
色を指定せずにフォントを取得すると黒で取れる.
黒に色を乗せても黒のままである.

自前のビットマップフォントなどを使う場合でも同様.
黒いビットマップフォントを作ると色を変更できない.
色を変更したいのであれば白いビットマップフォントを作る必要がある.

2014年6月25日水曜日

【Android】めだったー つかいかた

1.めだったーとは

めだったーはTwitterで埋もれがちなつぶやき全力で目立たせるための無料Androidアプリです.
ダウンロードはこちらから
つかいかたは
・フレームを選ぶ
・文字を入力する
・完成
の3ステップです.

できるだけ目立たせるために文の長さに合わせて文字サイズを自動調整して
一番大きいサイズで作成します.
短い文なら目立たせるためにとにかく文字を大きく

文が長くなると文字サイズを自動調整して全文入れるようにがんばります!


2.つかいかた

めだったーの使い方は前述したとおり,簡単ですが
好みで色などを調整できるのでそこを中心に説明します.

・フレームの選択

好みのフレームを選択してください.
それだけです.

・背景色の選択

背景色を好みに合わせて変更できます.

左上のボタンを押すと背景色が選べます.
左上のボタンで背景色が選べる
背景色を変更できた!

・文字色の選択

文字色を好みに合わせて変更できます.

文字入力欄を長押しすると文字色が変更できます.
文字入力欄を長押しすると文字色が変更できる
文字色が変更できた!
文字の縁取りの色は文字の色の濃さによって自動で調整されます.
文字サイズも変更できますが,アプリの趣旨的には全力で目立たせることなので最大値(60)をオススメします.

 

・画像の調整

フレームによってはスマートフォンに保存している画像をはりつけることのできるものもあります.

ここを長押し~と書いてある部分を長押しすると
画像を選択できます.
画像を選択して貼り付けられる!
位置を修正したい場合は2本指でドラッグしてください.
サイズが気に入らない場合は2本指でピンチイン・ピンチアウトしてください.
画像を選びなおす場合は再度画像の部分を長押しすると選び直せます.

・完成させる

完成の前にまずはプレビューしてどうできあがるかを見てみましょう.
左上のプレビューボタンを押してください.
色や出来上がりを確認できます.

プレビュー中は編集できません.編集し直すには左上の編集ボタンを押してください.

これでよければ右上の生成するボタンを押すと完成です.
画像が生成され,スマートフォンに保存されます.
他のアプリで開くを選んでTwitterにつぶやこう!


3.一例

こんなものが出来上がります.
俗悪な眠気をみんなに
教えてちゃんにリプライ
在庫の山ははけるのか

2014年6月12日木曜日

【Android】追記・画像をぴったり繰り返す考え方

さっきのエントリはあのまま使って嬉しい事はあまりないよね.
だからあれはああいうアイデアだから.
ソースコードもあのまま使えばいいって話じゃない.

あの考え方を転用するとこういうViewが作れる.
ほんとうはこれがやりたかった.
画像は適当に分かりやすそうなものを作った.
こんな画像だと中途半端に繰り返すと角の画像とずれるでしょ?

こういうダイアログも作れるよという例.

これをNinePatchとともにSDK側で用意してくれてると助かったんだけどな.

【Android】画像をぴったり繰り返すアイデア

前回のエントリではBitmapDrawableのsetTileModeXYメソッドを使って
画像の繰り返し配置を実現したけど
それだけじゃ一番端が切れてしまう.
前回のRepetitiveImageViewに分かりやすいように

この画像を適用させて表示した結果が以下のとおりである.


一番右端の子が途中で切れてしまっている.
特に問題ないことが多いと思うが,
どうしてもキッチリ収まってないと気になってしまう人へ

こんなアイデア.
タイル画像のサイズとView自体のサイズを取得し
繰り返す回数を計算する(Viewサイズ÷タイル画像サイズ)
余白(Viewサイズ%タイル画像サイズ)を繰り返す回数で割って
余白分だけ大きくなるようにタイル画像を少し拡大する

例を出すと
Viewの幅が100で
画像の幅が30だと仮定する.
まず繰り返す回数を計算する
100÷30 = 3
余白は100 % 30 = 10
この10を繰り返す3枚分に分け与えて
画像サイズを33.3333…にする.
そうすれば3回繰り返すと99.9999…となって
余白なく繰り返すことができる.

ん?33.3333…?
画像サイズが33.3333…?

ここで破綻する.
画像サイズはint値なので.33333なんてものは認められない.
また,TileModeの設定上全て同じサイズになるので
1枚だけ34で残り2枚を33なんて器用な真似はできない.

小数無視すればいいじゃんと考えるかもしれないが
計算しやすいように100と30という値を選んだが,
繰り返し回数が10回とかいう実際の環境だと
丸めた小数はバカに出来ないくらい大きくなり
数ピクセルの誤差が出てしまう.

じゃあ別の方法を採るしかない.
というわけで別案.
いわゆるゴリ押し.

NewRepetitiveImageViewというクラスを作ったが,
ImageViewはもはや関係もないLinearLayoutのサブクラス.

考え方としては上記のモノを引き継ぐのだが
タイル画像のサイズとView自体のサイズを取得し
繰り返す回数を計算する(Viewサイズ÷タイル画像サイズ)
ここまで一緒
繰り返し回数分LinearLayoutに子Viewを追加して
そのViewの背景画像としてタイル画像を設定
LinearLayoutには子Viewのサイズを等分割するモードがあるので
あとはLinearLayoutまかせ
という方法.

ソースコード例としてはこんな感じになる.

凄まじく御丁寧にコメントを書いたので内容はそっち読んでね.
GlaphicalLayoutが役に立たないよ.

使い方はレイアウトXMLに配置して
android:backgroundに繰り返したい画像をセットするだけ.
で,実機での動作が以下のとおり.

上が今回のNewRepetitiveImageViewで
下が前回のRepetitiveImageView.
今回のViewは枠にぴったり収まってるのがわかるね.


これダイアログの枠とかで実用的だと思うんだ.
9patchだと繰り返しができないからね.

今回は横に並べたけど
縦に並べることもできる.
OrientationをVerticalにして
widthとheightでやってることを入れ替える.

縦横配置は…
やめたほうがいい.

前回できたMirrorタイル配置はこのままではできないけど
ソースコードでBitmap展開して反転してってやるより
画像のほうで対応したほうが楽だよ.

2014年6月11日水曜日

【VR】モビルスーツの当たり判定

モビルスーツに限った話ではないが
全天周囲モニター搭載コックピットを持つ大型兵器
こいつの当たり判定(っていうか実体なんだけど)って
モニターで見るよりも広いよね.

ギリギリで避けたつもりでいたら右足が持って行かれたとか
そういうのがありそう

車だとモニターじゃなくて実風景だし
自機のボンネットがみえるからどこまで自機かというのが視覚的に把握しやすいけど
全天周囲モニターだとそういう描写がない.
人間だと自分の肩が見えるわけ.
鼻も見えるし脚も見える.
でもMSでは自機が部分的にも映るということがほとんどない.
サーベル振ったり人を乗せたりで手が前に来たときくらい?
肩や脚が映ることってないよね.

そりゃあ全天周囲モニターで下を向いたら自機の胴体で見えませんでした
なんてのは意味がないわけ.

何が言いたいかっていうと
Oculusなど向けにVRゲームを作る際に
全天周囲モニターがどのように撮影をして
どのようにモニターにマッピングしてるかを考慮しないといけないんじゃないか
ということ.

ザクみたいに一部だけが見えるってのも別にいいんだけど
せっかくヘッドトラッキングしてくれるんだから
顔の向きに合わせて様々な方角が見えたほうが楽しい.

頭部にカメラがあって胸部にコクピットがあるとする.
細いビームが直線的に頭部に向かっているのに
パイロットには胸部にビームが飛んできていると錯覚する.
バックパックのバーニアの向き的に脚方向への移動より
頭方向への移動のほうが瞬間的に反応してくれるので
バーニアをふかして頭の方に避けようとしたけど
余計にコクピットに直撃するコースになった.
そういうことにもなりかねない.

光学カメラは多種レーダーのうちのたった一つ
という場合で,
コクピットの位置が相対的に正しく表示されると仮定する.
上の例で言えばコクピットの少し上を狙って細いビームが飛んで行く
そんな場合でも一番最初に言った当たり判定がコクピットの大きさ以上にある
よかった,これは少し上を外すコースだ!と思ったら頭が吹き飛んだ.ってなりそう.
ということを前提に実装しないといけない.

自分がロボットになる
という場合は別に影響ないけどね.

【Android】画像を繰り返すImageView

先に言っておくけど別にImageViewじゃなくてもいいんだからね.

さて,ImageViewってのは指定した画像を1回だけ表示するものなんだよ.
ImageView::scaleTypeの指定によって
ImageView自体の大きさに画像をどうフィットさせるか/させないかを
指定させることはできても
Viewの中に表示される画像は1回だけなのね.
タイル配置みたいな繰り返し表示はできない.

9patchなんてものを大きく打ち出してカバーしてる一方で
androidってタイル配置に関してはそのままでは実現できない.

9patchは確かに便利なんだけど
時と場合によるよね.
繰り返しパターンには向いていない.

そこでタイル配置を実現するために
/res/drawable配下にXMLを作って
<bitmap>を作ろうっていうのがたくさん散見されるので
その場合はそちらを参考に.
新しく書く必要もない.

かといってこのエントリも新しく書く必要があるのかどうかと問われると微妙なんだけどね.

やっぱりレイアウトXMLにViewを配置して
画像リソースを指定したらタイル配置画像が表示される
っていうのがやりたいやん?
タイル画像がたくさんある場合に画像の数だけXMLがdrawable下に増えてくるのも鬱陶しいやん?
という個人的なワガママを個人的に解決.スッキリ

ImageViewを継承したRepetitiveImageViewなんていうものを作ってみた.
といっても大したことをしていないので見てほしい.


ソースの半分を占めるコンストラクタなんだけど
自作Viewを作るときはいつもこの3つをちゃんと宣言するようにしている.
引数1のコンストラクタがないとソースコードで扱う場合に面倒だし

楽:CustomView customview = new CustomView (this);
嫌:CustomView customview = new CustomView (this, null, 0);
毎回こんなの書くの嫌だよ.

引数2のコンストラクタがないとレイアウトXMLに配置したときに
GraphicalLayoutがエラーを返す.
引数3のコンストラクタは自分では基本使わないけど
何かの時に何気にやくにたつかもしれない
ということで毎回全部実装しているよ.
といっても今回は親クラス(ImageView)のコンストラクタに丸投げするだけで
なにもしていないけどね.

setImageDrawableは親クラス(ImageView)のオーバーライド.
でも親クラスのsetImageDrawableは呼び出していないよ.
見ての通りImageViewの前景画像として飛んできたDrawableを前景画像として使わずに
奪って背景画像として使っているよ.
その際にDrawableを一旦(Drawableのサブクラスである)BitmapDrawableにキャストして
BitmapDrawableのsetTileModeXYというメソッドを使ってタイル配置を実現している.

背景画像として表示しているため
最初に言ったとおり別にImageViewでなくてもViewであればなんでもいいんだよね.
FrameLayoutとかのViewGroup系でもいい.
タイルで嬉しいのは
ボーダーか背景かだと思うので
背景として使う場合はViewGroup系がいいんだろうね.
その場合はこのコードでやってることを
setBackgroundDrawableとかでやるといいんじゃない(適当)

で,使い方は
レイアウトXMLに

こんなかんじで使ってやればOK.
画像はこの画像を使ったよ.

そしてこの結果は以下のとおりになるよ.

もし↓のように書き換えると

こうなる.


両方ともmatch_parentにすると

こうなる.

圧巻

それだけで終わるのもなんなので,
setImageDrawableで指定している
d.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);

d.setTileModeXY(TileMode.MIRROR, TileMode.MIRROR);
こうすると

反転タイルになる.



TileModeにはもうひとつ,
TileMode.CLAMPなんていうものがある.
このモードがわかりやすいように使う画像を

これに変更.
CLAMPモードは画像端が引き伸ばされる.

(これやったら9patchでええやん)

2014年6月6日金曜日

【Android】テキストサイズが端末によっておかしくなる場合があるときに

Androidアプリには
/res/values/dimens.xml
という数値(サイズ)を一括で設定しておくファイルがある.


Viewの幅,高さややフォントサイズなど
ソースコード内にサイズをマジックナンバーで書くのは躊躇われる.
そんなときにこのdimens.xmlに記述して各レイアウトファイルやソースコードから呼び出す.

上で数値(サイズ)と書いたが,
ただ単なる数値(データ)は別のリソースxmlにintegerをどうぞ.

この/res/values/dimens.xmlはプロジェクト生成時に作られてるはず.
見てもらうとDIPやSP,PX等単位をつけることができるのが分かる.

dimens.xmlに記載された値をソースコードから取得するには
getDimension()やgetDimensionPixelSize()といったメソッドを使うのだが,
以下の例のような点に注意してほしい.

例:
・/res/values/dimens.xmlで↓のように定義する
 <dimen name="hoge16dip">16dip</dimen>

・Javaからそれを取得する
 getDimension (R.dimen.hoge16dip);

このときgetDimensionして得た値は16ではない(可能性が高い)

getDimensionすると,画素密度に応じてピクセルサイズに直してくれ,
その値が取得できるのである.
つまり,得られる値は以下のとおりである.
mdpi(1x): 16
hdpi(1.5x): 24
xhdpi(2x): 32
xxhdpi(3x): 48
取得できる値は画素密度倍率を計算済みのピクセルだ.

16DIPのリソースをgetDimensionして16が得られるのは端末がmdpiのときのみである.

これはバグか?
いいや,これが正しい動きなのである.
端末の解像度の差異を気にしなくていいため
このほうが殆どの場合で嬉しい動きなのだ.
そうでないとgetDimensionでサイズ値を取得した後に
画素密度倍率を取得,表示すべきサイズを計算しなくてはいけなくなる.

ちなみにフォントサイズを指定するときに推奨されている単位はDIPじゃなくてSP.
このSPという単位はDIPにさらに端末のフォントサイズ設定を反映させたもの.
これがさらに問題をややこしくさせる場合がある.
今回はとりあえず(゚ε゚)キニシナイ!!

ここまでを踏まえて以下のことに注意してほしい.
TextView::setTextSize(float size)というテキストのサイズを指定するメソッドは
このままでは引数をSP値として扱う.

<dimen name="hoge16sp">16sp</dimen>
というリソースに対して

float size = getDimension (R.dimen.hoge16sp); // テキストサイズだから16SPにしてるよ
textView.setTextSize(size);

↑こんなことはしてはいけない.

全て画角を5インチに合わせてプレビューを作ってみた.
同じ5インチでも解像度が高くなると画素密度も高くなる.
見ての通り画素密度があがるにつれフォントが大きく見えるようになる.
(何故かXXHDPIでは文字が崩れた)
こんなのでは実用に耐えない.





解決方法は
TextView::setTextSize(int unit, float size)メソッドを使うこと.
先に述べたとおりgetDimensionで得られる値はその端末用に計算されたピクセル値なので
ここでunitにTypedValue.COMPLEX_UNIT_PXを指定する.

float size = getDimension (R.dimen.hoge16sp);
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);

これで端末解像度が変わってもサイズはあまりかわらないようになった.




2014年5月29日木曜日

【Android】弱小アプリ主がAmazon Androidアプリストアに公開して分かったこと

にこちゃんねるというアプリをAmazon Androidアプリストアに公開して約3ヶ月が経った.
ご存知だろうか,にこちゃんねる.
知るわけねーわな.知名度ないもの.

というわけで,「広告を打つ力のない個人」がAmazon Androidアプリストア(以下,Amazon)に公開して
把握したことを述べていこうと思う.

その前に

先に参考として公開したアプリの情報を簡単に知っていただきたいと思う.

・にこちゃんねる(Google Play) (Amazon)
対応Ver:Android2.1以降
価格:無料
2ちゃんねるの専用ブラウザ.
2ちゃんのレスをオーバーレイで流す専用ブラウザアプリ.

・消費税計算機(Google Play) (Amazon)
対応Ver:Android2.1以降
価格:無料
消費税の計算を行う計算機.
四則演算もできちゃう.

ただし「Amazonからアプリをインストールするため」のアプリがAndroid2.3以降のためAmazonアプリストアでは2.3以降対応


Google Playのおよそ3%

それでは一番気になる結果,数について比較していこうと思う.

・にこちゃんねる
3/1 → 5/26の同期間にてGoogle PlayとAmazonで総インストール数を比較.
Amazonでの公開は3/1だが,Google Playでは先んじて2013年11月に公開済みである.
総インストール数である理由はAmazonでは総インストール数しかレポートが見れないため.
どれだけアクティブか,という情報が見れない.
なお,KindleFireHDXで動作を確認してAmazonに提出したものの,
アプリケーションの性質(オーバーレイアプリ)ゆえか,AmazonアプリストアでもKindle向けに公開されていない.(意味無いじゃん)

Google Play:250インストール
Amazon:8インストール

は…はち!
3ヶ月で1桁!
こらあかん.

・消費税計算機
4/5 → 5/26の同期間にてGoogle PlayとAmazonで総インストール数を比較.
アプリ公開が4/5で審査期間(1日)はあるもののほぼ同時公開である.
こちらはKindle向けにも公開されている.

Google Play:1,153インストール
Amazon:37インストール

以上のことから,母数こそ少ないものの
Amazonでインストールされた数はGoogle Playのインストール数のおよそ3%である.
ということが分かった.

Amazonでは審査されるということもあり,
Google PlayのAPKがそのまま利用できるならともかく,
別バイナリを用意してまでAmazon対応を行うかどうかは
規模を見てから考えたほうがよろしかろう.

大事なことだが,Amazonでは総インストール数しかわからないため
無料アプリで重要なアクティブ端末数がわからない
ということは重ねて述べておこう.


Amazonは宣伝してくれている

っぽい.
「"にこちゃんねる"」(ダブルクオーテーション囲み)で検索してみよう.
ノイズが混じるが,個人ブログなどがいくつかヒットするのがわかると思う.
何度かAmazonアソシエイトに流してくれているようだ.無料アプリなのに.
もちろん広告費を払ってるわけでもないし,そもそもKindleの対応からは外されている.
これは嬉しいことである.
但し結果は前述.

それだけで終わらせたらアレなので,
せっかく宣伝してくれているので有効に扱うためには
・アイコンを魅力的なものにすること
・タイトルで中身がわかること
が重要だと思う.
承知のことだろうが,アソシエイトではアイコンとタイトルと値段しか表示されていない
っぽい
ので,その2点がこれまで以上に重要になるのだ.


他のアプリが牽引してくれない

Google Playでは積極的に
「このデベロッパーの他のアプリ」として自社製他アプリを載っけてくれる.
つまり,何らかのアプリが注目を浴びれば
その分,他のアプリが日の当たるチャンスができるわけである.
一方のAmazonである.
Google Playであったように紹介してくれていない.
これは即ち他のアプリが注目を浴びてもどこ吹く風,ということである.


どうだっただろうか.
有料アプリを販売するのはそれなりに手間だが,
無料アプリを公開するだけならば以前記事にしたとおり,
簡単に開発者登録でき,審査期間が1日~あるもののすぐに公開できる.
今は登録も無料でできるため,労力に見合ったメリットが得られると考えるなら
Amazonに公開するのもいいかもしれない.
Google Playと比較して圧倒的に全体のアプリ数が少ないため
目立ちやすいということもあろう.

2014年5月22日木曜日

【Android】IMEを表示した時にActivityの高さがかわらない…!

IMEを表示させた時にActivityの高さがIMEを差し引いた分にならないと
Activity下部のViewにアクセスするのにIMEを閉じないといけなくなる.

例としてレイアウト構成は
LinearLayout
 ├メインView(高さ:weight=1)
 └固定高View

この場合前者のメインViewの高さが変わってくれたらいいのね.
そしたらIMEが表示されても後者の固定高Viewが見えるようになる

で,調べてみるとマニフェストのactivityのところに
android:windowSoftInputMode="adjustResize"
を設定しないとダメだよっていうのが総意らしくて
そっかー(・ω<)てへぺろ★
なんて思って意気揚々とadjustResizeを指定.
しかし変わらず.

???なんて思いつつもこれ消したらいけんじゃねっていう野生の勘経験則で
android:theme="@android:style/Theme.NoTitleBar.Fullscreen
を消したらいけました.
adjustResizeを指定したのに同様のワナでお困りの方は
FullScreenにしていないか確認してみてください.

あ,タイトルバーは
Activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
でJava上で消しました.

2014年4月30日水曜日

【AndEngine】onAreaTouchedが動かない

もしかして:SceneにregisterTouchAreaしていない

【AndEngine】スプライトのドラッグ

AndEngineで遊び始めている.
ツールを何種類か公開してみてゲームも作りたいと思い
当初はUnityをやろうかなと思ったのだが
クラス構造がいまいちよくわからなかったので
eclipse上でそのままAndroidプロジェクトとして使えるAndEngineに逃げてきた.

そこで,まず動作の確認として
Spriteを表示してタップ&ドラッグを実装しようとしてみた.
つまり画像を指で動かすということだな!

オブジェクト指向のナチュラルな考え方として
スプライトごとに動作をつける.
Sprite.setOn~~~
なんてのがあればこれが一番と思ったが
とくになさそう.

その代わり
Spriteが継承するShapeクラスにonAreaTouchedメソッドがある.
Sprite範囲内をタッチされていると呼ばれるメソッドだ.
Spriteを匿名クラスとして実装すればコレが使えるので

(_touchX, _touchYはクラスフィールド)
(sceneはSceneのオブジェクト)

こんなかんじにできあがった.
setTouchAreaBindingOnActionDownEnabled (true)がなければ ドラッグの速度が速いときにSpriteの範囲から外れてしまい
Spriteが追従してくれないことになる.

2014年4月6日日曜日

【Android】消費税計算機リリース

Android用アプリ"消費税計算機"をリリースしました.

消費税計算機はその名の通り,消費税を計算するためだけに開発されたアプリです.
税抜⇔8%税込
税抜⇔5%税込
8%税込⇔5%税込
の計算が相互に可能!

文字で見るより絵で見たほうが早いのでスクリーンショットを添付!
値段を入力すると自動的に消費税計算されて出てきます.
上段が税計算前で下段が税計算後です.
スクリーンショットで「税抜 → 8%込」と書いてあるところをタップすると
税計算の方法が選択できます.

また,小売店によっては小数点以下の扱いが
切り捨てなのか,四捨五入なのか,切り上げなのかまちまちなのですが…
本アプリではそれも心配ゴム用.設定で小数点以下の扱いをどうするか変更できます.

世の中の消費税計算機が四則演算機能がついてないものも多い中
このアプリでは四則演算ももちろんカバー!


実際に消費税が変更されてこのアプリの構想を思いついてから
苦節4日…
長く苦しい戦いだった…

他のアプリがあるだろうけど見てしまったら影響されてしまうので
全く調べずに作成,
たぶん独特なモノができたと思います.

消費税計算機
対応OS:Android 2.1以上
価格:無料

漸く公開できた"消費税計算機"よろしくお願いしました!

2014年4月2日水曜日

【Android】設定画面

PreferenceActivityとか
PreferenceFragmentとか
Androidには設定画面を簡単に作るための仕組みが存在する.

XMLで記述して(Javaを使わず)設定画面を作れるのだ.

だが,私はそれらを使ったことがない.
使おうとしたことは何度かあるのだが.


第一の理由として
PreferenceActivityはAPI Lv.11(Android3.0)でDeprecated
つまり使うなと.
PreferenceFragmentはAPI Lv.11未満では使えない.
今でもAPI Lv.7(Android2.1)を基準としてアプリを作っているため
PreferenceFragmentは論外なのである.
FragmentActivityやDialogFragment,FragmentPagerAdapterなどのFragment群は
android-support-v4サポートライブラリに含まれており
API Lv.4(Android1.6)以降で使用可能なのだが,
PreferenceFragmentはそこに含まれていない.
つまり使うなと.

使えないじゃん.
PreferenceActivityをDeprecatedにもかかわらず使う
というのが一般的なようだが.

Deprecatedをあっさり使用不可にされることが多々あるので
(そのための死の宣告としてのDeprecatedなのだが)
Deprecatedは使わないほうが宜しい.


第二の理由として
PreferenceActivity,PreferenceFragmentともに
PreferenceScreenというタグ(もといクラス)を使ってXML上で記述することになるのだが
XMLで書くということはJavaソース上のpublicでstaticなフィールドにアクセス出来ない.

設定を保存・呼び出しするためのキー
(例:背景色をKEY_BACKGROUNDというキーに保存し,KEY_BACKGROUNDを指定して設定を取得する)
を設定保存側のXMLと呼び出し側のソースコードとで別々に書くのは避けたい.
一文字スペルミスがあれば呼び出せなくなるし
キーを変更しようとしたらその文字列をコーディングしているところ全て書き換えないといけない.
キーは全て同一のオブジェクトを参照したいのだ.
仕様変更で設定そのものを消したい場合にもキーのオブジェクトを消せば
参照先が全てエラーになるのでそこを修正していくこともできる.

XMLで使うためのリソースファイルなのだろうが,
ストリングリソースはContext継承クラスからでないとアクセスできない.
設定はActivityやServiceからしか取得しないと言い切れる場合はそれでいいかもしれない.
規模にもよるが経験上,まずそんなことはないので
ストリングリソースをキーには使えない.

PreferenceScreenというタグ(もといクラス)と書いたとおり,
これはJavaソースコード上でも書けるのだが,
ソースコードで記述するならもうPreferenceScreenを使うメリットは薄いんじゃない.


他の理由としては使えるコンポーネントが限られていることか.


などという理由により設定画面はいつも通常のActivityで作っている.
これまではアプリごとに設定画面を作っていた.

自前でよくつかうコンポーネントをまとめて設定UIライブラリを作ったほうがいいと思う.

2014年3月17日月曜日

【Android/Kindle】AmazonアプリストアでAndroidアプリを公開しよう

Kindle Fire利用者はGoogle Playを利用できません.
一方で,Kindle Fire利用者は徐々に増えてきていると思います.
Androidアプリ開発者としてはKindle対応すればより多くの人に使って頂ける
それはうれしい

と,いうわけで今回はAmazonアプリストアでAndroidアプリを公開してみたので
その手順を共有していきます.
大量の画像とアプリ登録の実例を元に紹介していきます.

今のところ無料で登録できますし,
公開して放置するだけであれば登録の時間以外特にデメリットもなさそうなので
やってみるべきなのです.

※画面や文字列,ルールなどは投稿日時点のものです


その前に

Amazon FAQsはこちら
https://developer.amazon.com/help/faq/ja_JP.html

■注意すべきこと

・Kindle FireではAndroidアプリがほぼそのまま動きます
 しかし,全てがまるまるそのままというわけではありません
 75%のアプリは手を加えずにOKとのこと(微妙ですね)
・Kindle Fireではフルスクリーンモードの挙動が微妙に違います
 戻るやホームボタンも隠れますが,それを再表示させるためのボタンが画面端中央に陣取ります
  UIがそれに隠匿されないか確認して下さい(下記参照)
・有料アプリや有料追加コンテンツを配布する場合は米国に税に関する資料を提出する必要があります
 →普通はブラウザ上で完成しますが,ちょっとステップ数が多いです

Kindle Fire HDXのフルスクリーンについて

Kindle Fire HDXのフルスクリーン時はAndroidのそれと違ってナビゲーションバーが隠れます
(Androidではアイコンが点になるだけでした)
それに伴い,ナビゲーションバーを呼び出すためのボタンが画面端に表示されます.
この位置にアプリのGUIがある場合,操作性に難が出てしまいます.
参考として某有名なE●画像ビューアの例を示します.
フルスクリーン時はこんな感じで画面端中央をインターセプトする
フルスクリーンからナビゲーションバーを表示されると上下画面端で大きくインターセプトする
フルスクリーンを使わないアプリなら問題ありませんが,
ギャラリーアプリならまず間違いなく使っているはずです.確認してみてください.



■必要なもの

・apk(アプリ本体)
・Kindle本体やストアで表示されるためのアイコン(114x114PNG, 512x512PNG)
・スクリーンショット(3~10個)(Kindleで撮る必要はない)
 →800x480, 1024x600, 1280x720, 1280x800, 1920x1200の縦長/横長でJPG/PNG
必須ではないがプロモーション用画像(1024x500横長 PNG/JPG)
必須ではないが動画も上げることができる
・紹介文はGooglePlayと少し違う

■知っておくべきこと

・対応OSはAndroid OS 2.2以降
・AmazonアプリストアはKindle Fireだけでなく通常のAndroid端末も利用できる
 (→AmazonアプリストアでKindle個別対応をしようとするのは悪手)
・デベロッパー登録費用は無料(本来は年会費$99だが無料キャンペーン中とのこと)
 →無料期間が終了したらどうするか考える必要がある.
・有料アプリ,有料追加コンテンツはAmazonに30%の手数料が取られる
・Google Playと同じアプリを公開できる
・AmazonアプリストアへAPKを申請する際にAPKにつけていた証明書が消去され
 デベロッパーに割り振られたAmazon発行証明書が付け直される
 (→個別対応で元の署名のままにすることもできるらしい)


アカウントを登録しよう

何はともあれアカウントを登録しないと始まりません.
まずはデベロッパー用アカウントを作成しましょう.
え?Amazon利用しているからアカウントあるよ?という方もおられるかと思いますが,
公式に
Amazon Mobile App Distribution Program でアプリを管理するにはAmazonアカウントが必要です。
プログラム用に(お好きなAmazonアカウントをお使い頂けますが、
個人でAmazonショッピングにご利用になっているアカウントとは別の)
新しいAmazonアカウントを作成されることをお勧めします。
と仰られています(→Amazon FAQs)ので,新しく作成していきます

■Amazonデベロッパーアカウントを作成する

まずはアプリ配信用ポータルにアクセスします.

上部のサインインまたは無料のアカウントを作成などと書いているリンクを踏みましょう.
上記のような画面が表示されたかと思います.
特に説明不要でしょう.メールアドレスを入力して初めて利用しますにチェックを入れ,サインイン.

名前とパスワードを入力する画面が出てきましたので,入力し次に進みます.

すると申請画面がでてきましたね.
名前とメールアドレスはすでに入力されているはずなので
国と電話番号,開発者名とその読み,住所を入力して保存します.
国は英語順になっているので日本(Japan)はジャマイカ(Jamaica)の次にあります.
電話番号は国別コード+81から書きましょう.

次に契約承認があります.
ずらっと英語が並んでいますが,日本語(Japanese)で日本語にすることができます.
参考訳とのことで契約自体は英語のものが正しいようです.
よければ承認して続行します.

続いて,税に関する情報を入力するステータスです.
有料アプリや有料追加コンテンツを販売する場合はここからいろいろと入力する必要がありますが,
そこはまた後日.
今回は入力しません.
もちろん,あとからこの設定を変更できますので
今回はアプリを収益化しない選択で進めます.
いいえにチェックを入れて続行

税に関するインタビューというステータスに来ましたが,
有料アプリを販売しない方針に(今は)していますので,
あとで確認するを選択できます.
この項目は有料アプリや有料追加コンテンツの販売には必須となります.
無料アプリだけの場合は不要です.

以上でアカウントが作成されました!やっほい!

■複数人で開発を行っていく場合

Amazonアプリストアでは複数人で開発を行う場合にアカウントを使いまわす必要がありません.
今作成したマスターアカウントに複数のアカウントを紐付けていくことができます.
そして,紐付けられたアカウントに役割を設定することができ,
紐付けたアカウントができることを制限することができます.
詳しくは解説しませんが,設定>ユーザー権限で設定ができます.

アプリをテストしよう

アカウントを登録するとダッシュボード画面が表示されました.
ここをブックマークしておきましょう.

アプリがAmazonアプリストアで公開されるための最低限のテストを行います.
WindowsストアアプリでいうところのWACK(Windows Application Certification Kit)のようなものです.
ここで問題があればまず確実に公開されないので,登録作業の前に行っておくことをオススメします
apkをアップロードすると数秒で自動でテストしてくれます.

上記のアプリ配信用ポータル
または開発者コンソールのアプリ&サービス>アプリのテスト・サービス画面を開きます.
テストを開始を選択します.
ドロイド氏のマークのある欄にapkをドラッグ&ドロップ,もしくはブラウズを押してapkを選択してください.
ドロイド氏が両手をあげました.かわいいですね.
自動で処理が進み,テストを実行してくれます.
処理が終わるとテスト結果を表示してくれます.
今回の場合は問題が見つかりませんでした.
問題が見つかる場合を見たことがないためなんとも言えません.
きっとどこどこがどうだからNGという詳細を表示してくれると思うのでそこを見直しましょう.
NG原因がアプリの根幹仕様ならば仕様の見直しもしくは諦めましょう.


アプリを登録しよう

ダッシュボード画面下部の新規アプリを追加
もしくはアプリ&サービスから新規アプリを追加を選択します

Android向けなのか,そうじゃないのか選択肢がでてくるので
Androidを選択しましょう.

ここからは我がアプリ,にこちゃんねるを元に解説していきます.
にこちゃんねるAmazonアプリストアはこちら
にこちゃんねるについて知っているとより分かりやすいかと思いますのでぜひ使ってみてくださいね.
お願いしましたよ.

新規アプリの申請画面が表示されました.
アプリタイトルとカテゴリーが必須入力項目となっています.
カテゴリーの選択肢はGoogle Playとは違うので必要に応じ選択し直してください.

アプリSKUはそのアプリでユニークな名前が必要です.
jp.mau.nico_channelのようなプロジェクトのパッケージ名で大丈夫でしょう.
空欄でも構いません.


情報入力画面

情報入力画面がでてきました.
一般情報は先ほど入力した内容が反映されているかと思います.
となりの配信地域・価格等から始めます.

■配信地域・価格等

アプリの配信地域を限定できます.
南極大陸までありますね…
Google Playとは選択項目が違います.
Amazonは南極大陸まで配達してくれるんでしょうか?
もちろんおま国がここで設定されるわけです.
問題なければすべての国と地域でいいでしょう.

アプリの料金を設定できます.
有料にする場合は税に関する情報を届け出る必要があります.
某国だけ無性に高い金額設定がここでされるわけです.
忌々しいですね.

ですが,標準価格と書かれていることにお気づきでしょうか.
Amazonが勝手に値引き販売することがあるらしいです.
なので,ここで設定した価格が保証されるわけではないようなのでご注意を.

アプリがすでにどこかで公開されているかどうかを選択します.
我がにこちゃんねるは2013年の11月に公開済みなので
最初の公開日は…を選択して日付を入力しました.

Amazonアプリストアでの公開予定日を設定できます.
入力しないと承認次第公開されます.
注記: 時刻の表示・入力は太平洋標準時刻です。
とあるので,ローカル時間で大丈夫でしょう.
個人開発者にはあまり関係のない話ですが,
企業でアプリを登録する際には重要ですね.

本日限定 無料アプリがどうとかありますが,
もともと無料ですし,チェックしててなんもないのでそのままにしておきます.
有料アプリが無料として紹介された場合は日に数万DLが見込めるとか…
すごいですね.
無料アプリには関係ありません.
そもそも1日に1アプリなので紹介されるのはきっと難しいところです.
有料アプリの場合は1日の売上とその分のユーザー枠が消えるわけですから熟考してください.
もちろんすさまじい広告効果にはなります.

■概要


アプリの説明を書くところです
デフォルトは英語になっており,翻訳を追加しなければ英語が表示されます.
英語は必須になっています.
英語項目に日本語を入力すると文字化けする恐れがあります.

簡潔な概要(Android端末向け)と概要(PC向け)は同時に表示されないので同じ内容で大丈夫でしょう.
簡潔な概要は1200文字(日本語では400文字)まで
概要は4000文字(日本語では1200文字)まで入力できます.

アプリの特徴は3~5点の箇条書きで簡潔に書いてくれとのこと.
勝手に・が文頭に補完されます.

文字列内に特殊なシンボルは使えないようで,Google Playのように★を使ってたら怒られました.

■画像&マルチメディア

前述した必要なもののアイコン群をここで使います.
小アイコン(114x114 PNG)と大アイコン(512x512 PNG),スクリーンショット(3~10枚)が必要です.
Kindle Fireを使ってみるとわかりますが,ホーム画面でのアイコンが大きいのです.
スクリーンショットはわざわざKindle Fireで撮る必要はないようです.
Amazonアプリストアは通常のAndroid端末もアクセスするので当然ですね.

動画はYoutubeなどのリンクではなく,実ファイルをアップロードします(5個まで).
フォーマットが決まっています.
MPEG-2,WMV,MOV,FLV,AVI,h.264
最小幅720px以上で4:3か16:9
1200kbps以上とのこと.

プロモーション用画像
個人で用意するのは大変ですが,推奨とのことです.
300x146まで圧縮される可能性があるので,それでも理解できるような画像にしてください.
価格やスクリーンショット,説明文等他で使うコンテンツはプロモーション用画像に含まないでください.
画像内にアプリ名は入れることを推奨されています.
テキストは端から50px離してください.
とのことです.

■コンテンツレーティング

ユーザー保護のためのなんちゃらですね.
アプリがどのような題材を扱うかを宣言します.

専ブラだとほぼすべて扱うんだよな…
というわけでにこちゃんねるの場合は全て弱~中を選択しました.
きっとこれで承認作業のハードルが上がるんじゃないかなぁと思います.


■バイナリファイル



最後です!

AmazonDRMを適用しますか?
難読化でもしてくれるのでしょうか,DRMというものはあまり好きではありませんが
このままはいにしておきましょう.

バイナリファイル
ここでAPKをアップロードします.
巨大なファイルの場合(APKが30MBを超える場合)はFTPを使ってくださいとのことです.
マニフェストファイルが解析され表示されますので,バージョンコード等あっているか確認して下さい.
APKに付与していた証明書は外され,Amazon独自のアカウントごとに与えられた証明書で署名されます.

注意してください
DRMも証明書もそうですが,テスト部隊などから
「評価したアプリとアップロードされたアプリとでバイナリ違うぞ(゚Д゚)ゴルァ!!」
などと言われる可能性がある場合,その部隊に通知しておきましょう.
Amazonアプリストアで配布する場合はバイナリの同一性が保持できません.

端末サポートは特に対応機種を絞らない限り全チェックでいいです.

言語サポートはAPKから抜けなかったのか…と思うのですが,
手動でチェックしましょう.

輸出コンプライアンスはGooglePlayでもありましたが,
暗号化アルゴリズムを用いてるかどうかの自己申告です.
暗号化を用いている場合,一部の国には輸出できないのです.

バイナリエイリアスは複数のバイナリを管理するために用いる文字列です.
バージョン名でいいと思います.

最後のテストインストラクションは今回にこちゃんねるでは用いていませんが,
ログインが必要なアプリなどでテスト用のアカウントを記入したりするところだと思います.


自アプリ(ここではにこちゃんねる)の下の現バージョンの後ろに(申請準備完了)とつきました.
画面最下部のアプリを申請を押してアプリを申請します!


これで終わりです.
申請したアプリが承認されるのを待ちましょう!
GoogleMapsの偽アプリが大量に流れている(KindleにはGoogleMaps公式アプリがない)のを見ると,承認作業はザルっぽく見えます.


承認結果について

にこちゃんねるの場合,Amazon側での承認作業は丸一日程度でした.
承認されてもリジェクトされてもメールが届きます.

なお,にこちゃんねるはどうやらKindle fireやKindle fire HDでの動作が微妙だそうで
おすすめコーナーで紹介するには修正が必要な模様.
承認はされたのでAmazonには上がっております.

まぁ確かにアレが動くとは元々おもってませんでしたが.
Kindle fire HDXでは確認していて動作したことに驚きましたよ.