Paradigm Shift Design

ISHITOYA Kentaro's blog.

1タップで写真&動画を共有できるカメラ、tottepost1.2リリース

前回のアップデートから日が開きましたが、tottepostのバージョン1.2をリリースしました。

tottepostは写真や動画を撮ったその場で手軽にアップロードするためのカメラアプリです。Facebook/Dropbox/Picasa/Flickr/Twitterなど主要なWebサービスに対応しています。詳しくは、iTunes App Storeをご覧ください。


今回は、
1, 動画撮影
2, 写真と動画の解像度選択
が主な変更点です。


動画に関しては、画面左下にあるスイッチをタップ(スライドしなくても変わります)すると、写真と動画を切り替えることができます。
解像度に関しては、設定画面から変更してください。Photo解像度はそのカメラの最大解像度になります。
動画はHighだとiPhone4、4SおよびiPad3で1080pが、iPod Touch 4thでは720pが撮影できるようです(機種ごとに違うので、設定画面に表示していません…)、が!ファイルサイズが大きくなりすぎるのでMedium(デフォルトです)で撮影されることを推奨します。


なお、LITE版もリリースしました。
LITEでは、解像度選択、アルバム選択ができなくなっています。


というわけで、今後ともtottepostをよろしくお願い致します!


ご購入はこちら!
1タップで写真共有 - tottepost - ISHITOYA Kentaro

ソーシャルゲームの健全化というはなし

「なんでソーシャルゲームってパチンコと同列にされるんですかね」
って、後輩が言う。


「ソーシャルゲームってデジタルコンテンツを売る仕組みじゃないですか。今までのデジタルコンテンツ屋さんができなかった、少額決済でデジタルコンテンツをお金に変える仕組み作ったじゃないですか。すごいことですよ。」



うん。僕もそう思うよ。でも、「ソーシャルゲームとパチンコが同一視されるのは仕方がないよ」とも思う。


DeNAの財務状況GREEの財務状況http://www.cyberagent.co.jp/ir/reference/chg/:CyberAgentの財務状況を見ればこれまでに売り上げが急激な勢いで伸びていて、DeNA、通期売上高134%増の1,127億円。2014年度売上高5,000億円を目指す :ベンチャーニュース:Venture Now(ベンチャーナウ)にもあるように今後もユーザー数、業績ともに一段の伸びが予想されていることは、共通認識としておいていいよね。


どの会社も業績が伸びててユーザー数が増える事が予想されるから、パチンコと同一視されるんだよ。
っていうのは刺さんなかったみたい。後輩は、あんまり納得してない顔をしていた。


なぜ、人は携帯ソーシャルゲームに嫌悪感を持つのか。 | More Access,More Fun!とか、ソーシャルゲームは金を搾取して、運営会社がモラルにかけている場合が多く嫌い - First Loungeとかよく言われてる事だよね。


まぁ、弱者をターゲッティングしてる"と思われてる"から問題になるんだよ。
ってのも刺さんなかったみたい。やっぱり後輩は、あんまり納得してない顔をしていた。


あんまりにもあんまり納得してない顔をされたので、どうやら論理的に伝える事ができていないようだ、と、そこでちょっと立ち止まって考えてみたという話。


そもそも、ソーシャルゲーム批判ってどんなの?

批判記事とか読んでみるといくつか類系があるんじゃないかな。

  • 妬み系
    • 儲かってるからむかつく
    • 働くのは俺たちで儲かるのはあいつらだよ(中の人)
  • 賭博法に抵触する系
    • 射幸心煽り過ぎ
    • 法に抵触するような事を公然とやってるのはどうなの
  • 犯罪の温床系
    • RMTとか
    • 青少年とか、PTAとか
  • 搾取かっこわるい系
    • 情報弱者、社会的弱者から薄く広く集金してる構造が悪い
    • 情報弱者に注意喚起するべきだ
    • ソシャゲーとか頭の悪い奴がやるもんでしょ
    • コンテンツの質が低い
  • ゲーム理解できない系
    • コンテンツの社会的認知度が低い
    • 非生産的
    • ゲーム脳とか
    • 共感できない

みたいな感じ。感じだからミッシーかどうかは気にしないで。

妬みは論外だけど。

まぁ、犯罪の温床、賭博法云々はいいのさ。それはシステムや運用で改善できる問題だから。
グリー株式会社 | ニュースリリース | プレスリリース 2012年 | プラットフォーム事業者6社によるソーシャルゲームの利用環境向上等に関する連絡協議会を設置
がうまく機能すれば自浄作用が働いて業界が健全化するさ。
しなければ、グリー、週刊誌に「摘発検討」と報じられる 「犯罪行為、一切ない」と反論が検討じゃなくて、実際に行政が介入して健全化の方向に持って行くよ。


で、他の批判にどうやって応対するかっていうと、今まではさ、


『「搾取かっこわるい」ってのは、第3者的な批判だよね。搾取されているといわれている人たちは、ゲーム内のその何かにお金を払うだけの価値を感じてるんだから。「ガチャ回してカードとって集めるだけとか、昔のRPGとかに比べてゲームの質が低いのに、そんなものにお金払うとか信じられない」とかいう人は、あなたの思う質の高いゲームについて、俺だってソーシャルゲームなんか作りたくねーよ! とかスクエアエニックスホールディングスの財務ハイライトとかを読んで考えたら良いとおもう。


だいたい、情弱だから社会的弱者だからソーシャルゲームやってるんだとか、大衆は無駄な時間使うもんだとか、そんな批判、無意味。誰がどんなものに価値を感じようとも問題ないでしょ。自分の金払って、楽しんで何が悪い訳?


だれか、パチンコをやっている奴は馬鹿だ、ギャンブルやっている奴は馬鹿だ。パチンコもギャンブルも社会的価値が低くて非生産的で、無駄な行為だ。って考えているひとに、ソーシャルゲームをパチンコやギャンブルと同列に扱うんじゃねぇ!って伝えて納得してもらう方法を、ぼくに伝授してくれさい。


多分、無理だよね。価値観が違うから。


分かってもらう必要なんかないよ。本人たちは楽しんでお金払ってるんだから、気にしなくて良いよ。価値観の違う人は、頭が固いし、ムリだって。


価値観は多様。多様な価値観は許容しなきゃいけないよね!*1


みたいな、価値観多様、分かんないなら分かんなくていいよでなんとかなってたわけっすよ。

で、最初に戻るわけ

世界で10億ユーザー目指して、ゲームで世界を幸せにしようぜ!っていってるわけじゃん。ソーシャルゲームが一般化しようとすればするほど、あるユーザーが感じている価値がみんなに理解できるようにならなきゃいけないんだよ。


「ガチャ回してカード集めてコンプリートする」っていう行為に対して10万円払うことが、「ぼくはそれに10万円払わないけれど、きみがそれにお金を払うことは理解できる」っていう程度に理解できるようにならないといけない。「ぼくはクルマに20万円かけてアルミホイール買う事はしないけれど、きみがアルミホイールを買う事は理解できる」程度に。


そうでなければ、いつまで経ってもパチンコと同じ。なんだか、怪しげで、無価値で、分かる人にしか分からないのに、金だけもうけてて。健全じゃねぇ!みたいな非難を甘んじて受けて行かなければならないよね。そういう意味で、ソーシャルゲーム業界に就職する人たちは、どことなくお金と引き換えにみたいな感じなんでしょ。


だから、健全化っていうのは、警察のお世話にならないように、犯罪を助長しないようにするってことと、ソーシャルゲームに対するイメージを良い方向に変えるってことの2軸になるんだとおもう。

ま、そういうわけだからして

南場智子氏の講演内容のsho_yokoi氏によるまとめ - Togetterで南場さんがいってる、

南場氏「DeNAで成し遂げたい事を三つ挙げたい。1つ目。social gameは悪者扱いされがちだが、これを→entertainment→culture、あるいは、→edutainment→education、あるいは、→ramificationとしていきたい」

って日本語でOKな言葉は、ゲームが文化として受け入れられなければ、モバイル50億の端末をターゲットにしたプラットフォームで世界一を目指す事なんてできないってことだよね、ってことで。


もうさ、二郎とかゲームじゃん。スーパーのスタンプもゲームだし、山崎パンの白い皿だってゲームだよね。そういうのお店の人がゲーム化できるプラットホーム作ればいいんじゃない?おばちゃんも500円券もらえるなら文句いわないよ。


あるいは、ゲーム内のカードが現実世界で使えるとかすればいいんじゃない?クーポンとかつまんないじゃん。敵と戦って手に入るのがネイルサロンの2000円引きクーポンなら、自称セレブも文句いわないよ。ガチャ回して手に入るのカードがゴルフ場で1ラウンド!なクーポンとして使えるならおっさんも文句いわないんじゃね。ゲームとの親和性が問題か。


まぁ,ソーシャルゲーム自体を理解してもらうってよりもページが見つかりません - MSN産経ニュースみたいな、野球界に寄付して知名度と信用を勝ち取るというコーポレイトハックてきなことでどうにかしてかなきゃいけないんだよね。


立ち止まって、考えただけで、まとまってなくて申し訳ありません。もう、眠くて面倒くさいので、書きっぱなしでいきます…。


せんでん

1タップで写真共有tottepost
カメラのついたiPad/iPhoneで撮った写真を、その場でFacebook/Mixi/DropboxなどのサービスにアップロードできるtottepostというiOSアプリを開発しています!詳しくは、iTunes App Storeをご覧ください。


ご購入はこちら!
1タップで写真共有 - tottepost - ISHITOYA Kentaro

*1:ぼくは、「多様な価値観」って言葉で物事を済ませる事を、ただの無関心だと思っています

最新iOSデバイス(iPhone4S, iPad2/3, iPod Touch 4th)の写真/動画解像度

tottepostの実装で撮る写真や動画の解像度を指定できるようにしたいと思ったんですが、AVCaptureMovieFileOutputやAVCaptureStillImageOutputを使う場合、AVCaptureSessionのsessionPresetプロパティにAVCaptureSessionPresetPhotoのような定数をセットする仕組みで、幅とか高さを指定するもんじゃないんですね。


で、設定画面に「Photo(2592x1936)」とか出したいじゃないですか。AVCaptureSessionから実行時に取得できないもんかなーと思って探したんですがたどり着かず、静的なデータで一覧になってないかなーと思って探しても、iPhone4やそれ以前のデータはAVFoundation Media Captureという公式のドキュメントやというサイトに載っているんですが、iPhone4S、iPad2/3*1iPod touch 4thのカメラの解像度が見つからなくて困っていました。


というわけで手作業で調べた結果をリストにします。幅的な都合で3Gは割愛します。
3GS/4/4SはiPhoneです。P2/P3はiPadです。T4はTouchです。

写真解像度

Preset 3GS(B) 4(B) 4S(B) P2(B) P3(B) T4(B)
Photo 2048x1536 2592x1936 3264x2448 960x720 2592x1936 960x720
High 640x480 1280x720 1920x1080 1280x720 1920x1080 1280x720
Medium 480x360 480x360 640x480 640x480 640x480 640x480
Low 192x144 192x144 640x480 640x480 640x480 640x480

Low/Mediumの4S/P2/P3/T4に自信がありません、なんか値が変わらない...。しかし、iPad2のカメラしょぼすぎる...。


動画解像度

Preset 3GS(B) 4(B) 4S(B) P2(B) P3(B) T4(B)
High 640x480 1280x720 1920x1080 1280x720 1920x1080 1280x720
Medium 480x360 480x360 480x360 480x360 480x360 480x360
Low 192x144 192x144 192x144 192x144 192x144 192x144


バックカメラの解像度のみです。
動画の場合はMediamとLowは基本同じです。iPhone4、iPad2とTouch4thは720pで、4SとiPad3は1080pのようですね。


AVFoundationのsessionPresetにこれらの値をセットする事で解像度を変える事ができます。

session_ = [[AVCaptureSession alloc] init];
[session_ beginConfiguration];
session_.sessionPreset = AVCaptureSessionPresetPhoto;
[session_ commitConfiguration];

みたいな感じですね。


以上メモでした。

せんでん

1タップで写真共有tottepost
カメラのついたiPad/iPhoneで撮った写真を、その場でFacebook/Mixi/DropboxなどのサービスにアップロードできるtottepostというiOSアプリを開発しています!詳しくは、iTunes App Storeをご覧ください。


ご購入はこちら!
1タップで写真共有 - tottepost - ISHITOYA Kentaro

*1:あえて3と呼びます

tottepost1.1.1リリース!iPad2以降でも使えます。

tottepost1.1.1がReady for Saleになりました!
今回は基本的にバグフィックスです。tottepostの詳細については1.0のリリースをご覧ください。

  • iPad2以降のサポートを追加。
  • 自動補正機能を追加
  • 進行中のアップロードの個数がおかしくなる問題を修正
  • Twitterで140文字以上入力してアップロードに失敗する問題を修正
  • TwitterでGPSをONにしても場所情報が埋め込まれない問題を修正
  • Fotolifeでログインがうまくできない事がある問題を修正
  • 選択中のアルバムを示すチェックマークの描画がおかしい問題を修正
  • MinusとMixiでアルバムを選択していないとアップロードできない問題に対処

1タップで写真共有 - tottepost - ISHITOYA Kentaro


アップデート直後にアップデート前にログインしたサービスが使えなくなる場合がありますので、その場合はログアウトしてから再度ログインしてください。


自動補正とか付けてみましたが、あまり補正されない気がします...

問題があればフィードバック、このエントリへのコメント、FacebookTwitterなどでご連絡ください!

GithubのIssues


ちなみに、次のリリースでは動画が扱えるようになります!

ARC / 非ARCソースファイルのコンパイル時に設定が適合しない場合、エラーを出す方法

PhotoSubmitterというライブラリを作っています。

このライブラリ自体はARCなのです。
でも、サードパーティライブラリがARCだったり非ARCだったりして、"-fno-objc-arc"フラグを設定すべきファイルがどれなのかわからなくなってしまっていました。


SO先生に聞くと、コンパイラフラグでコンパイル時に正しく設定されているかを確かめる方法を教えてくれました。以下のコードのいずれかをどこかに埋め込むと、コンパイル時にエラーを出せます。


非ARCコードの場合

#if __has_feature(objc_arc)
#error This file must be compiled with Non-ARC. Use -fno-objc_arc flag (or convert project to Non-ARC)
#endif

ARCコードの場合

#if ! __has_feature(objc_arc)
#error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif

で、これをproject.pbxprojに書いてある情報を元にソースコードに埋め込むコードをかいて設定しました。
Objective-c ARC/Non-ARC compiler flag adder for tottepost — Gist


ってわけで、メモでした。



せんでん

1タップで写真共有tottepost
カメラのついたiPad/iPhoneで撮った写真を、その場でFacebook/Mixi/DropboxなどのサービスにアップロードできるtottepostというiOSアプリを開発しています!詳しくは、iTunes App Storeをご覧ください。


ご購入はこちら!
1タップで写真共有 - tottepost - ISHITOYA Kentaro

Xcode4.3にすると出るカテゴリに関する警告の消し方

Xcode4.3にすると、

Category is implementing a method which will also be implemented by its primary class

というワーニングが出てうざったいです。カテゴリを親クラスのメソッドをオーバーライドするために使うなという警告のようです。


自分で書いたコードなら直せば良いですが、そうでないなら

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
- (void)addRoundedRectToPath:(CGRect)rect 
                     context:(CGContextRef)context 
                   ovalWidth:(CGFloat)ovalWidth 
                  ovalHeight:(CGFloat)ovalHeight {
#pragma clang diagnostic pop

とかしておけば、警告が消えます。


しかし、このwarningの種類とフラグの対応ってどこで見つければ良いんだろう...


参考:
New Xcode 4.3 compiler warnings - categories - iPhone Dev SDK Forum

せんでん

1タップで写真共有tottepost
カメラのついたiPad/iPhoneで撮った写真を、その場でFacebook/Mixi/DropboxなどのサービスにアップロードできるtottepostというiOSアプリを開発しています!詳しくは、iTunes App Storeをご覧ください。


ご購入はこちら!
1タップで写真共有 - tottepost - ISHITOYA Kentaro

iOSアプリ開発者が知らないと損するライブラリ7選

こういうキャッチーな*1タイトル付けてみたかった!

tottepostの開発中に役に立ったライブラリを7つ列挙します。
かなりジャンルバラバラですが紹介&メモって事で許してください。全部tottepostで使ってます。

1, SVProgressHUD

UIActivityIndicatorViewって出したり消したりするのにインスタンスの管理が面倒で、見た目も微妙ですよね。
SVProgressHUD*2は、扱いが簡単でカッコいいUIActivityIndicatorViewです。


http://f.cl.ly/items/231Y2A0t0t1J0B0r3N0p/svprogresshud3.png:image:w600


リポジトリは、samvermette/SVProgressHUD · GitHub。ライセンスはMIT。

作者のSamさんの記事はSVProgressHUD

2, AAMFeedback

これ、まじで便利です。ユーザーからの問い合わせを受け付けるフォームです。
開発者の痒いところに手が届く感じはさすがfladdictさん。


f:id:kent013:20120310162140p:image:w200:leftf:id:kent013:20120310162139p:image:w200


しかもコードは

AAMFeedbackViewController *fv = [[AAMFeedbackViewController alloc] init];
fv.toRecipients = [NSArray arrayWithObject:@"kentaro.ishitoya@example.com"];
fv.bccRecipients = [NSArray arrayWithObject:@"ken45000@example.com"];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:fv];
[self presentModalViewController:nvc animated:YES];

これだけ!


送られてくるメールは

サブジェクトは選んだトピック
フィードバック本文
Device:
iPhone 4S
iOS:
5.0.1
App:
tottepost 1.0

こういうメールになります。


リポジトリは、fladdict/AAMFeedback · GitHub。ライセンスは不明。

fladdictさんによる記事は、iPhoneアプリに、ユーザーフィードバックのフォームをつけるライブラリを書いてみた。 | fladdict

3, appirater

"Rate this app”ってアラートよく見ますよね。見ません?あれを出すライブラリです。
ユーザーがアプリを30日以上使っていて、15回以上起動していたら自動で下のようなポップアップがでてきます。


f:id:kent013:20120310163848p:image:w240


それだけでなく、ボタンを設置してそのハンドラに、

[Appirater rateApp];

のようなコードを書くと、直接AppStoreに飛んでくれます。

英語、日本語、フランス語、ドイツ語に対応しています。


リポジトリは、arashpayan/appirater · GitHub。ライセンスはMIT。

作者のArash Payanさんによる記事は、 Presenting, Appirater - Arash Payan | Blog

4, FBProgressView

iOS SDK標準のプログレスバーって、でかいですよね…

もう少し狭い領域にプログレス出したいんだけど…

もうちっとかっこいいのがほしいんだけど…

って時は、これです。


f:id:kent013:20120310163849p:image:w200


tottepostでは写真アップロードのプログレス表示に使っています。


リポジトリは、dev5tec/FBProgressView · GitHub。ライセンスはMIT。

作者のHashigami Hiroshiさんによる記事は、Cocoaの日々: [iOS] カスタムプログレスバー公開

5, HPGrowingTextView

UITextViewって文字数増えると、全部が見えなくなるし、スクロールしなきゃいけないので大きめの領域を確保しなきゃいけなくて微妙ですよね。

そこへいくと、SMSのエディットボックスは、文字数が増えるとサイズが変わって使いやすいです。


で、これ、それです。


Multi-line UITextView similar to SMS from Hans Pinckaers on Vimeo.


リポジトリは、HansPinckaers/GrowingTextView · GitHub。ライセンスはMIT。作者のHans Pinckaersさんの記事は、Multi-line/Autoresizing UITextView similar to SMS-app | Hans Pinckaers

6, FBNetworkReachability

Reachabilityライブラリ、ありますよね。
appleのやつ。正直使い勝手が悪いんですね。

Reachabilityでも同様の事はできますが、FBNetworkReachabilityはそのあたりをラップしてくれているので、とても簡単に使えます。


リポジトリdev5tec/FBNetworkReachability · GitHub。ライセンスはMIT。

作者のHashigami Hiroshiさんによる記事は、 Reachabilityがバージョンアップされて使い方が少し変更されていた - Tomute’s Notes

7, ScreenStatus

iOSは画面がロックされると、画面の向きを知る方法がなくなるんです。僕らが困るような事はもうすでに誰かが困ってる訳で。
ScreenStatusは、画面がロックされていても

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

ってやると、加速度センサを使って画面の向きを教えてくれます。


いや、マジ助かりました!
tottepostでは画面ロック時にインターフェースと写真を回転するのに使ってます。


作者のMitsuharu Emotoさんによる記事は、iPhone:iOS4.0の回転ロックでハマったこと | mthr Blog+

ライセンスは隣人に飯をおごる事。

しょかん

SDKもそうですが、3年前に比べると様々なライブラリが公開されていて、機能を自前で実装する前にgithubで検索すると、ある程度のライブラリは見つかるようになりました。良い時代ですね。


ただ、正直言ってそういったライブラリは、"こなれていない"ことも多くて、作者の想定した使い方をしないときちんと動かない事が多いです。
そういうライブラリに手を加えて作者にメールを送るのが昔はスタンダードでした。でもそんなの今は昔。


githubってすごいな。LinusさんLinuxよりもすごい物を世の中に出したのかもしれないと3周回遅れぐらいで思いました。
良いライブラリがあったら、教えてください。


というわけで、この記事は、@ken4500に飯をおごった事を報告する記事でした。

せんでん

これらのライブラリをすべて利用したアプリ、tottepostはAppStoreで公開しています。


また、tottepostのために作ったライブラリPhotoSubmitterも、tottepostから分離して独立させました。

是非cloneして試してみてください!


よろしくおねがいします!

*1:あざとい

*2:なんでこれをHeads Up Displayというのかは分かりません…