5度のRejectを経て、気になる子の「キス顔」が撮れるiPhoneアプリをリリース!

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

AppStore_SS_4inch_01.png

ホントにハゲそうでした!
Appleに5度もRejectされたのは初めてだーーー。

 

 

2chやまとめサイトで話題になった気になるあの子の「キス顔」がナイショで撮れるアプリがiPhoneに登場!

キス顔カメラはiPhoneのマイクに向かって息を吹きかけるゲームを利用して、プレイした人のキス顔を撮影することができるアプリです。
1月も終わり、卒業シーズンが近くなってきました。
このアプリを使って、好きな子が片思いでも最後にキス顔くらいはゲットしよう!!

AppStore_SS_4inch_02.png AppStore_SS_4inch_03.png

AppStore_SS_4inch_04.png AppStore_SS_4inch_05.png

今すぐダウンロード!
 
 
 
iTunes-Connect.png

2chにスレが立ったのが2013年12月8日。
完成したのが2013年12月12日。
AppleにSubmitしたのが12月13日。
そこからあれよあれよと5回もRejectされ、最終的には「使い方分からねーから動画くれ」と言われ操作説明動画まで作り、ようやくReady for Saleになりました!
やはり、音がならない仕様のカメラは難しく、結局シャッター音を出す方向で調整しました。
今後、小さくできればアップデートで音を小さくしていきます!
 
ぜひ、遊んでみてください!
 
 
今すぐダウンロード!
 
 
 
元ネタ
すばらしいアプリ考えたったwwwwwwwwwwwwwww
http://hayabusa.2ch.net/test/read.cgi/news4vip/1386497088/
 
 
 
 
おまけ
 
Yahoo!に先を越されて激おこでしたw

Android SDK TextViewを「あいうえおかき…」と省略して1行にまとめる

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

android:scrollHorizontallyをtrueにしろ、android:linesを1にしろ、android:maxLinesを1にしろ、そして、android:ellipsizeを設定しろ、とネット上にいろいろと情報がありますが、なぜか僕の環境だと「…」を表示してくれませんでした。
その解決方法がわかったのでメモ。

<TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:singleLine="true"
        android:textColor="@drawable/menu_right_text" />

このように、singleLineとellipsizeを設定したらいけました。
ちなみに、ellipsizeには以下の設定ができます。

例:あいうえおかきくけこ

指定値 デフォルト 動作
none 何もしない
start …おかきくけこ
middle あいう…くけこ
end あいうえおか…

Android SDK Bitmapをあらかじめ縮小してから読み込む(OutOfMemory対策)

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

今の端末だと10Mピクセルを越えるカメラを搭載した端末が普通になってきており、そのファイルサイズも数MBに及びます。
AndroidでBitmapFactoryを利用してフォトライブラリーから画像を読み込んだりすると思いますが、そのままその画像を読み込んでしまうと、しばしばOutOfMemoryとなりアプリが強制終了してしまいます。
そこで、実際に画像を読み込む前にある程度縮小してから読み込むことで、メモリが足りなくなることを防ごうというのが今回のネタです。

BitmapFactory.OptionsのinSampleSizeを指定して画像を縮小した状態で読み込む

処理の流れ的にはまず画像のサイズを取得して、サイズが大きかったら縮小指定してから読み込もう、という感じです。

InputStream inputStream = getContentResolver().openInputStream(data.getData());

// 画像サイズ情報を取得する
BitmapFactory.Options imageOptions = new BitmapFactory.Options();
imageOptions.inJustDecodeBounds = true;
BitmapFactory.decodeStream(inputStream, null, imageOptions);
Log.v("image", "Original Image Size: " + imageOptions.outWidth + " x " + imageOptions.outHeight);

inputStream.close();

// もし、画像が大きかったら縮小して読み込む
//  今回はimageSizeMaxの大きさに合わせる
Bitmap bitmap;
int imageSizeMax = 500;
inputStream = getContentResolver().openInputStream(data.getData());
float imageScaleWidth = (float)imageOptions.outWidth / imageSizeMax;
float imageScaleHeight = (float)imageOptions.outHeight / imageSizeMax;

// もしも、縮小できるサイズならば、縮小して読み込む
if (imageScaleWidth > 2 && imageScaleHeight > 2) {	
	BitmapFactory.Options imageOptions2 = new BitmapFactory.Options();

	// 縦横、小さい方に縮小するスケールを合わせる
	int imageScale = (int)Math.floor((imageScaleWidth > imageScaleHeight ? imageScaleHeight : imageScaleWidth));	

	// inSampleSizeには2のべき上が入るべきなので、imageScaleに最も近く、かつそれ以下の2のべき上の数を探す
	for (int i = 2; i < imageScale; i *= 2) {
		imageOptions2.inSampleSize = i;
	}

	bitmap = BitmapFactory.decodeStream(iStream, null, imageOptions2);
	Log.v("image", "Sample Size: 1/" + imageOptions2.inSampleSize);
} else {
	bitmap = BitmapFactory.decodeStream(inputStream);
}

inputStream.close();

BitmapFactory.OptionsのinSampleSizeに2のべき上を入れ、それを指定して画像を読み込むことで、2のべき上で縮小された画像を読み込むことができます。
たとえば、inSampleSize=2であれば、 1/2に縮小された画像が、inSampleSize=4であれば、1/4に縮小された画像が読み込まれます。
inSampleSizeには2,4,8,16と2のべき上を入れます。

読み込む画像の階調を指定して読み込む

読み込む際の画像サイズの縮小は解像度だけでなく、階調を変えることでサイズを落とすこともできます。

BitmapFactory.Options imageOptions = new BitmapFactory.Options();
imageOptions.options.inPreferredConfig = Bitmap.Config.ARGB_8888;

設定できる階調は以下です。

  • ARGB_8888:alpha/R/G/B 各8bit ー 8*4 = 32bit = 4byte / pixel
  • ARGB_4444:alpha/R/G/B 各4bit ー 4*4 = 16bit = 2byte / pixel
  • RGB_565:R(5bit)/G(6)/B(5) ー 5+6+5 = 16bit = 2byte / pixel
  • ALPHA_8:αのみを8bit ー 8bit = 1byte / pixel

体感的にはアルファー値の無い写真などは、RGB_565とかはそこまで劣化が気にならない程度でサイズが半分になるのでおすすめです。

まとめ

画像取得系はメモリを消費して大きい画像を取得するとすぐにOutOfMemoryで落ちるので、読み込む前にサイズを小さくしよう!

KeyRemap4MacBookでControl+hjklをカーソル移動に設定して快適コーディング

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

みなさん、プログラミングをするときや、ブログの文章、レポート、はたまたKobitoでQiita向けにTipsを書いているとき、カーソルの移動ってどうしていますか?
僕は、例えばXcodeやeclipseでコーディングするときはキーバインドの設定を変更してCtrl+hjklをカーソル移動に割り当てています。
これで、わざわざカーソルキーに手を移動しなくても、ホームポジションに手を置いたままカーソル移動ができるわけです。
このようなキーバインドの設定をXcodeやeclipse、Sublime Textなどエディタごとにいちいち設定していたのですが、もうこれならシステム全体でCtrl+hjklをカーソル移動に割り当ててしまおうと。
そうすると、わざわざ設定する手間が省けるばかりか、ブログの文章を書いているときなど、ブラウザからテキストを編集しているときや、そもそもキーバインド設定が出来ないエディタを使ったときでもこの設定を使うことができます!
では、さっそく。


KeyRemap4MacBookをインストール


KeyRemap4MacBook – OS X用のソフトウェア
公式ページからKeyRemap4MacBook をダウンロード、インストールしましょう。


Control+hjklをカーソル移動に設定する


スクリーンショット 2013-06-13 12.50.31.png


KeyRemap4MacBookを起動し、


  • Vi Mode → Control_L+hjkl to Left/Down/Up/Right

をクリックしてください。
これで終わりです!


Macのcaps lockキーをControlキーにしよう


番外編として。


スクリーンショット 2013-06-13 12.12.23.png


MacのUSキーボードでは非常に打ちやすい位置に、一番使用することがない、いや、むしろ誤動作の原因になるcaps lockキーが配置されています。
これを、Controlキーに変更することで、今回設定したControl+hjklカーソル移動がより快適になります。


スクリーンショット 2013-06-13 12.31.39.png


  • システム環境設定 → キーボード → 修飾キー

ここから変更することができます。


まとめ


デフォルトの設定は結構クソなのでいろいろいじろう!

SublimeText Control+hjklでカーソル移動

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

スクリーンショット 2013-06-13 12.12.23.png


僕はMacのUSキーボードでcaps lockキーをControlキーに割り当てなおして運用しています。
一番小指で押しやすいキーがなんでcaps lockなんだよ、という感じですが、これをControlなどに変更するとコーディングが劇的に快適になって、例えば、今回のネタのようにカーソル移動のキーバインドをControl+hjklなどに設定するといい感じになります。
ということで、Sublime Text 2において、Control+hjklを使ったカーソル移動を実現するためのキーバインド設定ネタです。


キーバインドを変更する


Sublime Text 2 → Preferences → Key Bindings – User
と選択すると、キーバインドを設定するための設定ファイルがエディタ上に表示されます。そのファイルに以下の設定テキストを挿入して保存してください。


[
{ "keys": ["ctrl+l"], "command": "move", "args": {"by": "characters", "forward": true } },
{ "keys": ["ctrl+h"], "command": "move", "args": {"by": "characters", "forward": false } },
{ "keys": ["ctrl+j"], "command": "move", "args": {"by": "lines", "forward": false } },
{ "keys": ["ctrl+k"], "command": "move", "args": {"by": "lines", "forward": true } }
]


設定は以上です。


Macのcaps lockキーを無効化し、別のキーに設定する


スクリーンショット 2013-06-13 12.31.39.png


システム環境設定 → キーボード → 修飾キー
ここから変更することができます。