新しいPCからherokuのクローンまで

あたらしいPCかって、
久しぶりにherokuで開発する際

まっさらなPCに
すでにあるprojectをcloneするまでのメモ

rails,heroku,git,rakeとかをインストール

この辺がわかりやすい
Herokuではじめる 初心者のためのRuby on Rails3入門

ローカルPCのrsa keyの作成

$ssh-keygen -t rsa

herokuにログイン

 $  heroku login
 Enter your Heroku credentials.
 Email: (登録に使ったメアドを入力!)
 Password (typing will be hidden): (パスワードを入力)
 Authentication successful.

keyの追加して

$heroku keys:add ~/.ssh/id_rsa
$ git clone git@heroku.com:アプリ名.git

2014年は20代で一番苦労したと言える1年に

年始なので去年の振り返り、今年の目標を書き留めておくことにしました。
年末にみたときに恥ずかしくならないよう

2013年振り返り

・フルマラソンを走ると宣言
 →33kmでリタイア(年間総距離 360km)
・あっといわせるソウルフルなアプリを出す
 →webアプリ一つ、iPhoneアプリ一つ最高で音楽ランキング10位くらい
・体調不良で人生初の胃カメラを飲む、食べ過ぎのみ過ぎが原因と言われる

大きな不幸もなく、充実した1年でした。
エイプリルフールに出したサービスはGIGAZINEにて紹介いただき、
1日だけでしたが、多くのかたに使っていただけました。

また夏に出したフェスアプリでは多くのメディアに紹介いただき、今までになかったフェスアプリとして
少しだけ喜んでもらえたのではないかと思います。

ただ、日々の記述の情報収集におおきな変化がなく
今までのような新鮮なインプットができていなかったのではないかと思います。
いい意味でも悪い意味でも”平坦”な1年だったのではと思います。

「20代で一番苦労したと言える1年に」

それをふまえて今年の目標、
サービスをつくるだけでなくもっと明確な目標をたてたいと思います。
アップルストア総合一位になる話題性と利便性で人々を頼ませるサービスの開発
また、今までインプットした情報を今度は少しでも周りに伝えられるような行動を
LT,技術書,ブログなどもっとアウトプットすることで得られる力を今年はつけてゆきたい。

30歳を目の前に、今まで以上に前進して
自分なりの価値を世の中に提供できるようにがんばります。

その他目標
休肝日をもうける(週2日)
・ダイエット(-5kg)
・フルマラソン完走
・年間走行距離500km
・貯金する

カマン!2014年!

2013年あけましておめでとうございます

あげましておめでとうございます

2012年はみんな健康だったし、

いいお知らせもいっぱい聞けたし、最高にハッピーな年でした

レコ屋の試聴機もたくさんとりあげていただきすっごいうれしかったです

ですが、これで満足してもしょうがないので

うぬぼれは置き去りにして

またいちから、がんばりたいです

2013年の目標はフルマラソンにでることと、紅白の美和さんのごとくソウルフルなサービス(アプリ)を出し続けることです。

よろしくお願いします

音楽試聴アプリ「レコ屋の試聴機」を作りました

2012/11/09

音楽試聴アプリ「レコ屋の試聴機」をリリースしました。

日本版「レコ屋の試聴機」

英語版「Listening.Sta」


リリース日のうちにこちらのアプリがどんだけすばらしいか書留ときます

なんとなく巷で流行っている曲が知れる

それほどテレビなどのメディアをチェックしていないと、なかなか最近のはやりがなんなのかわからないと思います。
年をとるにつれ、「昔のがかっこいい」とか「ファーストが一番よかった」とか偉そうなこといって、最近の曲を知ろうとしない輩が私を含め増えてきます。
でもそれじゃいかんのです、

という、温故知新てきな意味で作りました。

USAのiTuneStoreがききたい

洋楽が好きな人がひとがたまにいうのが
「日本のiTuneStoreは古すぎる」ということ

確かに、あんまり洋楽に詳しくないわたしでも
半年前にクラブで流れていたような音楽が
平気で今でもiTuneチャート10位圏内にはいっていたりする。

やっぱり洋楽好きには現地で今一番流行っている曲がしりたいので
とりあえずアメリカいれとけば間違いないだろう的な意味でいれました。

あとでききたい

ラジオとか聞いていると
「これ、なんの曲????」
ってことがあると思います。
なのであとで聞けるクリップボタンをつくりました。
ぼんとにダラダラきいて、たまにきになったらクリップしていただいて
あとはiTuneさんで再試聴するなり購入すればいいのです

こんなアプリ、最近なにが流行っているのか知りたい
というひとには楽しめると思います。

無料なので、是非使ってみて下さい

CoffeeScript インストールまでのまとめ

まずnode.jsとnpmをいれる

サーバサイドJavaScriptの本命「Node.js」の基礎知識

シンプルでわかりやすいインストール手順
Setting Up Your Mac OS X CoffeeScript Development Environment

$ sudo npm -g install coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/coffee-script
/usr/local/share/npm/bin/coffee -> /usr/local/share/npm/lib/node_modules/coffee-script/bin/coffee
/usr/local/share/npm/bin/cake -> /usr/local/share/npm/lib/node_modules/coffee-script/bin/cake
coffee-script@1.4.0 /usr/local/share/npm/lib/node_modules/coffee-script

PATHととおす

$export PATH=$PATH:/usr/local/share/npm/lib/node_modules/coffee-script/bin/
$ coffee -v
CoffeeScript version 1.4.0

CoffeeScriptの文法やお作法
今日から始めるCoffeeScriptAdd Star
JavaScriptをシンプルに書けるCoffeeScript使ってみた

2012上半期appleにおこられたことまとめ

今後同じことなきように
今まででrejectされたことをまとめときます。
私の経験上なのですべてに当てはまるわけではありません

簡単すぎるわ

走った距離や時間を共有するランニングアプリみたく
息ととめた時間をfacebookに投稿するという健全なアプリを作ったとき。
「そんなもんHTML5でつくれよ」とおこられます

2.12: Apps that are not very useful, are simply web sites bundled as apps, or do not provide any lasting entertainment value may be rejected

2.12:利便性を提供しないアプリ、”単にwebサイトをバンドルしただけのアプリ”、 継続的にエンターテイメントを提供できないアプリはリジェクトされる可能性があります。

まとめ

  • webviewだけでもだめ
  • timerをつかったストップウォッチのような簡単なものでもだめ
  • 意味がなくてもだめ(今回の場合、息をとめるという一見して意味があるものでもアプリとして意味がないとだめ)

犯罪の匂いがするわ

簡単すぎてだめだといわれたので、息を止めるだけでなく
最高タイムをはかったり、過去のタイムと比較してどれだけ息止めるタイムがあがったのかいった機能を追加
「これでappleさんもぐうのねもでないだろ」とおもっていたらrejectされたのがこの理由

22.3 Apps that solicit, promote, or encourage criminal or clearly reckless behavior will be rejecte

犯罪を促進、勧誘、または助長するものや、明らかに非常識なアプリはリジェクト

まとめ

  • これやったらきけんだなってものはだめ
  • stay foolishといえど、超えちゃいけないライン考えろ

Siriの声使うなよ

妄想電話ににたようなアプリをつくっていてのこと。
再生される声を音声合成アプリ(SayKana)をつかった音声ファイルを再生していた。

Please remove Siri audio file from your app as well.

Siriたんの声消してください

まとめ

  • 今回はSayKanaで作成した音声ファイルをSiriっぽく利用していたのがよくなかった

 明示的に説明分に書かなければ許してほしい

クリアできないから動画で見せてよ

外国の審査のかたがやってもクリアできないゲームを申請してしまったとき
例えば、日本限定のゲームで日本の現在地情報がないとクリアできないようなとき、
審査しててもクリアできないからクリアしてる動画みせてよ、といわれました。

We began the review of your app but are not able to continue because we need access to a video that demonstrates your app in use.

You can provide a link to a demo video of your app in iTunes Connect. Go to "Manage Your Applications," select your app, click "Edit Information," then scroll to the "Review Notes" section and add the demonstration video access details.

ちょwwムリゲーwww
クリアできないからアプリの説明欄にクリアしてる動画つけてよw

まとめ

  • DetailViewのReview Noteに動画のリンクをつけておく
  • 動画はSumilatartで動かしたやつをYouTubeでアップとかでいいらしい

参考サイト http://shiffon.dtiblog.com/blog-entry-67.html

CALayer を使ってアルバムアートワークのような反射したUIImageを作成する

アルバムのアートワークとかでよくみるような、画像が反射してしている見せ方。


CAAnimationとかで標準であるのかなと思ったけれど、
公開されている人様のソースコードをみてみると

反射用のレイアを実際に作成して表示させた。

大きな手順としてはこんな感じ

・実物となる画像のレイア(imageLayer)を作成
・実物を逆さにした薄めのレイア(reflectionLayer)を作成
・reflectionLayerがさらに高さごとに薄れていくレイア(gradientLayer)の作成
実物となる画像のレイア(imageLayer)を作成

ここでは"mountains.png"という画像のCALayerを生成する

ReflectionViewController.m

	UIImage *image = [UIImage imageNamed:@"mountains.png"];
	
	// Image Layer
	CALayer *imageLayer = [CALayer layer];
	imageLayer.contents = (id)image.CGImage;
	imageLayer.bounds = CGRectMake(0, 0, image.size.width, image.size.height);

        //x = 160, y = 130のpositionで生成する
	imageLayer.position = CGPointMake(160, 130);
	imageLayer.borderColor = [UIColor darkGrayColor].CGColor;
	imageLayer.borderWidth = 1.0;
	[self.view.layer addSublayer:imageLayer];
実物を逆さにした薄めのレイア(reflectionLayer)を作成

最初に作ったimageLayerと同じcontentsで作成する。
さらにtransform.rotation.xで180反転させる。

ReflectionViewController.m

	// Reflection Layer
	CALayer *reflectionLayer = [CALayer layer];
	reflectionLayer.contents = imageLayer.contents;
	reflectionLayer.bounds = imageLayer.bounds;

        //x = 160, y = 330のpositionで生成する
	reflectionLayer.position = CGPointMake(160, 330);
	reflectionLayer.borderColor = imageLayer.borderColor;
	reflectionLayer.borderWidth = imageLayer.borderWidth;

   //opacityを半分にする
	reflectionLayer.opacity = 0.5;

	//x軸で反転させる
	[reflectionLayer setValue:[NSNumber numberWithFloat:DEGREES_TO_RADIANS(180)] forKeyPath:@"transform.rotation.x"];
reflectionLayerがさらに高さごとに薄れていくグラデーション(gradientLayer)の作成

最後にreflectionLayerと同じcontentsでgradientLayerを作成する。
さいごにreflectionLayerのmaskとしてこのグラデーションを設定。
最後にviewに追加する。
ReflectionViewController.m

	// グラデーションレイアの作成
	CAGradientLayer *gradientLayer = [CAGradientLayer layer];
	gradientLayer.bounds = reflectionLayer.bounds;
	gradientLayer.position = CGPointMake(reflectionLayer.bounds.size.width / 2, reflectionLayer.bounds.size.height * 0.65);
	gradientLayer.colors = [NSArray arrayWithObjects:(id)[[UIColor clearColor] CGColor],(id)[[UIColor whiteColor] CGColor], nil];
	gradientLayer.startPoint = CGPointMake(0.5, 0.5);
	gradientLayer.endPoint = CGPointMake(0.5, 1.0);

	// maskとしてこのグラデーションを追加
	reflectionLayer.mask = gradientLayer;

        // viewに追加する
	[self.view.layer addSublayer:reflectionLayer];