2014年11月12日水曜日

重いEclipseを快適になるように努力する

引き写しも含めいろいろ
  • 実行ファイルと同じ場所にあるeclipse.iniを編集してjvmにメモリを多く割り当てる。サンプルはいっぱいあるのでeclipse.iniでgoogle検索してみよう。
  • 「一般設定」の「エディタ」で無制限にタブを開くようになっているのをやめさせる。タブは10個くらいで十分。スタートアップ時の復元も止める。ヒープ表示してみれば分かるが使ってないエディタは大量にメモリを使ってる。
  • 「一般設定」の「バリデーション」(構文チェック)からよくわかってないもののチェックを外す。バグのあるものも含まれている。まあHTMLとかは必要だ。
  • 「一般設定」からヒープ状態を表示するようにしてメモリを消費してきたらゴミ箱ボタンを押すようにする。
  • ウィルス対策ソフトの検索対象からワークスペースとEclipseフォルダを外す。まあ諦めよう。
  • 使ってないプロジェクトはビルドが走らないようにまめに閉じるようにする。

2014年9月13日土曜日

iOS8世代におけるiTunes Connectからの申請

  • iOS8がもう来週でるということで慌てて対応を行って申請しました
  • なので箇条書きで感想と行った作業をログっておきます。結構問題がでてきたので長い箇条書きになる予定。
  • 結論からいうと今から対応してもiOS8のリリースには間に合わないでしよう。今申請からリリースに10日かかります。
  • うちも間に合わなかった組です。
  • 数日前からiTunes Connectの画面がものすごい変わっていて混乱
  • 今まで複数の画面に分かれていたものがひとつの画面に統一された、縦に長くなって入力しづらいよこれ!
  • いままで英語以外で情報を表示できていなかったがちゃんと日本語訳がついた
  • とりあえずiOS8対応。XCode6を落としてコンパイルしたら一発で通って一見問題もないようで安心。
  • iPodの新しいのを買ってきてiTunesからGM版のiOS8を導入、あんまり変化ないなー。
  • つなげてインストール、実機でも制作部分については動作について問題なし。
  • だが広告のSDKについては最新版に差し替えたり、表示方法を調整したりする必要があった。
  • 具体的にはウィンドウのサイズを取得する関数がいままでオリエンテーションを考慮してなかったのが考慮するようになっていた。
    UIScreen mainScreen boundsをとって横置きの開始と縦置きの開始を比較するとわかる。
  • iOS7までは考慮しないという仕様だったので対応するにはバージョン分岐が必要。
    ただこのレベルの問題って仕様じゃないのかなあとは思うのでさくっとAPIの挙動を変えるのは、ちょっとおかしいですね。ツール系のアプリが来週だいぶ画面崩壊するはず。
  • 他にはメッセージボックスの仕様が変わってたりとかで心配したがこちらはiOS7のときのような問題はなく、既存のAPIも互換して使えていた。
  • といわけで広告SDKにまつわるコンパイルエラーを直して申請
  • 動画がアップできるというのでGoogle Playと同じものをアップしてもらおうと考えた。あとなんかアイコンが透過を許さなくなっているというので、透過もなくしてもらった。
  • いままでのバージョンではバイナリをアップするとメタデータが編集できなくなっていたので、申請ボタンを押すのは躊躇された。まあこのことは問題とは関係ない。
  • 今回バイナリをいつのタイミングでもアップロードできるようになっているというのでアップする。
  • 警告 : IDFAの使い方がiTunes Connectで指定されてない由が、Validateの段階で出る。IDFAの指定はメタデータの送信のときに出た記憶があるので、これは指定できなくて仕方がない。とこの警告を無視してアップロード。
  • バイナリはビルドとしてiTunesにたまっていく。今回、バージョンとビルドにバージョンの定義がわけられ、同じバージョンの複数ビルドをアップロードできるようになっている。
  • メタデータを送信するタイミングでビルドを指定する必要があるので上記のIDFAの警告は必ず目にしなくてはならない。
  • さて、動画の完成を待ってアップロードしようとしたが。Mac OS XとSafariの環境でしかアップロードできません。試してみたが、アップできない。よくよく見ると
  • Mac OS X 10.10上のSafariからアップロードしてくださいって、おい。まだ出て無いじゃん。マック潰して一台潰してベータ版いれろというのか。却下。
  • というわけで、アップロードしたバイナリを指定して申請しようとしたが。Processingとなっていて指定ができない。これ申請してから1時間くらいかからないと指定できるようにならない。なので申請にかかってた作業の時間は膨らむね、これから。
  • 1時間待つと指定できるようになっていたので、申請。いつものIDFAとか暗号化に関する質問を回答して送信。よし終わったちょつと他の仕事して帰ろう。
  • アップルからメール着信、IDFAの使い方が指定されてないので、バイナリリジェクトして再アップしろよ。とValidateの時と同じ文句を言われる。いや、指定しましたけど? あれバイナリをアップした段階で指定されてないといけないのかな? でもバイナリアップした段階では、ビルド指定できないんだからどうあがいてもこのエラーでるよね? あれ
  • キレて帰宅。
  • 寝て、自宅で作業継続。夜中の2時。というわけで2つ目のバイナリを送信。XCode6でビルドを変更してアップする必要がある。Validateしてみたところ、なんかエラーが出て出来ない。のでそのままアップする。 はいIDFAの警告はなくなってるね。
  • そして1時間待ち。ちょこちょこ確認するがなかなか反映されない。メタデータ関連の質問に再度回答して申請完了。
  • これで、ひととおりiOS8への対応が完了したけど、心配がないではない。iPhone6とiPhone6 Plus用の解像度があったけどこちらのスクリーンショットはアップしてない。多分今回はなんもいわれんのじゃないかとは思うけど。今後は指定する必要があるわけで、また手間が膨らんだな!
  • ワークフローと警告の出方が明らかにおかしいことを除いても、今回のiOS8とiPhone6は開発者にとって悪夢の類だと思う、ほんと、アップデートごとに地獄が訪れるのはやめてもらいたい。

2014年8月5日火曜日

XCode(iOS)でコードの署名まわりでエラーがでる場合の手順

備忘録。いつも何すればいいのかわからなくなるので。

■XCodeの署名まわりはトラブルが多い、代表的な事例は以下の二例 
> Code Signing Error...実機で起動しなくなった。
> Coudnot launch faile to get...とか出てデバッグできなくなった。

基本的に設定を変えたあとの変更ミスだと思うのだが、どうも直感的でない。
Adhocとかで人様にテストアプリ渡したあとだとかならずひっかかるのでなんというかとてもイライラする。
環境によるのかもしれないがこの正しく設定していてもエラーが発生することがあって。その場合は下記の手順でなおることがある。いわゆる、おまじない。

■Code Signing Errorが消えない場合の対処
1.コードのサインを指定する箇所は下記の二カ所がある
両方確認して修正すること
>PROJECT(xCodeのアイコン) 
>TARGET(アプリケーションのアイコン)

2. 署名の指定をなくしてクリーンビルド。エラーが出ることを確認
> Provisioningの指定をNone,Code Signの設定をDon’t Code Sign

3. 正しく指定をする。
>つまりReleaseのところにはDistributionプロファイルの設定、
DebugのところにはDeveloperのCodeSignとしてTeamプロファイルを指定する   
4. 再ビルドして動作するか確認。うまくいかなかったらXCodeを再起動とか

■ Could not launch failed to get the task for processの対処
> Runに対するSchemeが確認用にReleaseになっているのかもしれない
    Product > Scheme > Edit Schemeで設定を確認 Runの対象をDebugビルドにする
   => ただしリリース前にはReleaseでの確認を推奨

> 上記の署名まわりの修正手順をためしてみる

2014年6月14日土曜日

ユーザー視点から見るアプリ内広告

バナクリお願いでござるよ!! というフレーズが昔ありましたが。

ここしばらくアプリでバナクリお願いする立場になりまして、それでユーザー視点でこうした広告にどのようにつきあっていくべきなのかなということをまとめてみようと考えた次第。

アプリに関していえば、バナー広告、全画面広告、アイコン広告、CPIウォール、リワードウォールなどいろいろございます。個別での説明はユーザー視点ではまったく意味がないので興味があれば調べましょう。

広告うざいですよね。では、なぜこうしたものが張られているかというとまあないと稼げないからですね。継続的な更新やなんか次回が見たいと思ったのならクリックしてもらえると開発側は嬉しい。だけどクリックを強制するようなことは倫理的にできない(倫理観低いベンダも多いですが)

 話がちょっと逸れました。ではユーザーは気に入ったアプリがあった場合、広告とどのようにつきあうべきか。個別にみてみましょう。

------------------------------------------------------------------------

◆バナー、アイコン広告について

バナーとかアイコン広告に気に入った商品かあったらクリックして購入、インストールしてください。成果を出してください。でなければあまり貢献にならないのでクリックは適度にしましょう。 

実際バナー広告についてはクリックにたいして2%~20%くらいが成果になってます。逆にクリックされるけど成果がこれの数値より低いと、その広告枠は安い枠として買い叩かれるように成ります。

ウォールなどのインストール型広告について

最近よくみる「おすすめゲーム」ボタン、クリックするとなんかランキングっぽいページが表示されたりします。あれはあそこからアプリをインストールすると検知してメディアの報酬になる仕組みです。
海外だとChartBoostとかRevMob、国内だと、GameFeatが有名ですね。

これについては、そこからインストールしてもらうとそのままメディアにとってかなりの額の報酬になります。安定すればアプリ内課金よりもよいくらいで。気に入ったアプリ経由で気に入ったほかのアプリをインストールしてもらえるとデベロッパ的にはとても嬉しいですよ。

特にアメリカ、日本中心での動きですが、大手デベロッパはランキング上位にはいるためにもインストールをとりたいわけです。1インストールに彼らがかける額は$3~$5くらい。おそらくそのだいたい半分くらいがメディアに入ってきます。まあこうした上位獲得に必至な巨大資本さまからお金を頂くという筋の話ですね。

キャ○ク○とか○ラッシュオ○クラ○とかナ○コ、スク○ニ、グ○ーあたりのゲームをインストールすることは、彼らにとって数百円の価値があるのです。信じがたいことに。

リワード広告について
Appleからも嫌われてるみたいだし、やめていこうな。上のウォールに対してゲームで使える報酬を支払う形のものです。効果的だとは思いますけど触れません。

------------------------------------------------------------------------

お気づきになった方も多いと思いますけどリワード以外は、メディア側としては離脱を促してるわけでもあるので、けして広告出すのもよいことだけではないです。

体感だいたい30万DLくらいされるとこうしたバナー広告やウォールなどでもそこそこ人雇える程度の収益が得られるようになってきます。逆にいうとそのくらいいってるアプリでないと、広告張ってあるだけというのは全然ペイしてないんですね。

というわけで世の中ででてる1%程度のアプリしかバナーで儲けてはないので嫌儲 の人もご安心ください。けっこう作ってますけど、ほんと無料で稼げたなんて一握りですよ。

ウェブサイトに比べてアプリ内広告は効率がとても悪いです、あまりターゲティングの精度が細かくないからです。
※Admob+Adwordsあたりで制御すれば結構よくなってくるとは思いますがあんなもんむしろ金がなきゃ制御できんよね

まあこーした広告があってこそ、ゲームも無料でプレイできることが、なきにしもあらずですのでうまく広告とつきあっていこうよと考える次第。

2014年6月7日土曜日

アプリ界隈の苦労話

・身バレすると面倒なので伏せますが。というかそもコメント欄開いてないんでいいっちゃいいんだけど。今回作成したゲームですが、順調に10万DLとかはいけそうな感じです。
・あーあとまあ顔知ってる人はダウンロードして遊んでください。お会いしたときに、お食事代くらいはステマ費用として払います。
・ですがいままで関与したソフトで一番DLされたのは30万くらい落ちてるらしく、やっぱり女性の乳関係のソフトはダウンロードのびますよね。いいね乳。
・どの程度関わったかというと、企画受けて、デザインしてプログラムして、絵とか、ロゴとかアイコンまで作って、チュートリアルのシナリオ書いて、というかチュートリアルのシステム作って。
・画像素材は当然クリンナップしていただきましたし、声優様にももちろん演技いただいていますので一人でというのは嘘でいろんな人が関わってこその製品ですが。指定とか細かいロゴとか音関係とかやってるので、進行役は雑用であるというのの実に証左ですね。
・俺が人望ないんではともいいますが。どこかのどなたがやるときには、こうコマネズミのように働く方をサポートするように人をつけてあげてくださいね
・逆にディレクターを称する人が働いてないで、分業の2人、3人体制とかなるとまあうまくいく可能性は低いですよねー(匿名希望)。よほど導入が魅力的で課金構造がきれいにできてれば話は違ってきますが、あそこの分野はあそこの分野で猛烈に血の海ですからね。
・ そもそもiPhoneの無料カテゴリは血の海というか金の海です今。○ャンデ○クラッシ○とか六本木で巨大な看板立てたり。○ラッシ○オブクラ○車両が埼京線走ってたり。あーん今はやってるんだあダウンロードしてみようっと。はまるわー。
・ なぜこんなことになってるかというと、日本とアメリカでゲームアプリの分野が過熱してるからですね。日本、アメリカ、ついで韓国で、平均的な諸外国よりも2倍~10倍くらい加熱度が高いです。ここらへんは広告費に現れている。
・ アメリカで成功したアプリは、同じような高収益市場である日本にも当然莫大な広告費をつぎこんでくると … これは推測ですね。
・事実としてひとつあるのは日本人はゲームというものが現れてから、あの手のバタくさい洋ゲーにはたとえヒットアプリだろうとひたすら目を背け続けてきたというあたり。
・艦これより人気があるわけがない。
・で熱心と、海外サイトでの旧聞ですが基本無料のアプリに対して、1インストール$5くらいまでなら払うというような感じ(日本でも同じくらいと推測ください)。つまり1万人インストール発生させたら500万の金が動く。100万人であれば、5億の金が動く。
・ まあみんな艦これに夢中なので無理ですけど
・ あとは国内でもiPhoneのランキングは、基本時間あたりのダウンロード数で決まっているので見たこともないアプリが突然ランキングの一位にあがってきたりします。そしてアクティブ率が低くすぐに消えていく。インセンティブ付の広告による、ブーストプロモーションというやつですね。
・あやしいアプリ1 : iPhoneのサイトでレビュー数と☆の数があまり変わらない。あんな面倒なUIでコメントつけてくれる人なんて、DL数によりますが1/5~1/20くらいなもんですよ?!
・あやしいアプリ2 : 日本以外で落ちていない。人気がでればそこそこアジア圏の他の国でもおちるもんです。まあがっつり日本語が必要というのならそれは話違いますけど。
・あやしいアプリ3 : ネガティブコメントを打ち消すようなコメントは別にあってもよいんだが、コメントが「楽しかった」とか「あ」とか「話し相手募集 電話番号」になってるもの
・appanieあたりに登録してアプリを検索すれば簡単にわかるといったらわかる話でもありますが
・プレスと広告、あとブログとかは効果あります。みなさまも気に入ったゲームが出来て、みんなにプレイしてもらいたいなあと思ったら、口コミで広めてあげてくださいね。
・金がないからいうわけではないですが、金ジャブの構造は娯楽として存在すべきエンタメの分野では、なんとか脱却しないと不健全だと思います。
・なにしろ近頃はリワード系お小遣い稼ぎアプリがトップをとったりしてますからね。露骨です。
・なので、みんな有料アプリを買ったり作ったりしようぜ

2014年3月25日火曜日

ImageMagick : 画像の特定の色の変更


 

久しぶりにImageMagickによる便利ネタ。

特定の色を他の色に変更したい場合。 ケースとしては単色の濃淡で作られたアイコンに限定する。FaceBookとかTwitterみたいな。白と青二色のアイコンみたいなのにも有効。

こうしたアイコンはたいていまとまった数があるのでluaかpythonかbashかまあなんでもいいので、バッチでも組んで一括で変換したい。

さて、下記は検索で見つけた例。

convert -fill #00FF00 -opacity 0xFF0000 a.png b.png

のように、すると緑の部分が、赤くなるよということだが。
これだと通常画像にはアンチエイリアスがかかってるのでうまくいかない。
(昔風の1色で構成されたドット絵なら話は別だが…)

でそれを解消するために-fuzz 50%とかかけると、エッジがぎざぎざになったり、画像が膨らんだりしてしまってさらに泥沼になる。というわけで、convert -fillの方針は大抵の場合よくない。

上記のような問題を回避するためには、以下のように、RGBチャネルのうち一枚を切り出して、一度グレイスケールにしたのち、黒い部分をlevel-colorsで変更したい色にするといい。

下記の例の場合#253578を赤(#FF0000)に変更している。

convert a.png -background #253578 -alpha background -alpha off -channel B -separate +channel -alpha on bw.png

convert bw.png +level-colors #ff0000, b.png

綺麗に濃淡が変換されるわけではないので注意。RGBチャネルの一枚を切り出しているので、色が薄いなと思ったら -channel Bとなってる個所を-channel Gとかしてあげると色が濃くなる。
他にはグレースケールの時点で明度をいじるとかすればよくなるかも。



2014年2月17日月曜日

Unityの問題点という題名の愚痴

多分問題点なんてなくて、とてもいまリソースが集まっていて旬で
さくさく3D使ったインタラクティブなアプリが作れる、最高の開発環境に違いないのだ。

でも金がなくて使えないので、悔し紛れにUnityを使わない理由を書く。

①払う金額で利用できる技術が差別される
  Unity PROでないとLODもAudio FilterもStencil Bufferもない
②Unity用のC#とかJavaScriptとか覚えても世の中が飽きた後職に困る
③Unityテクノロジーズに囲い込まれるうえクローズドソースだ
④結局コンパイル言語なのでスクリプトベースのものより開発ループを回すのに
  時間がかかる。LuaとかJava scriptとか使おうよ。
⑤それなりに広い知識が要求され難しいうえに、
  それで育った人間の知識は中途半端に潰しの利かないものになる。
⑥そも3Dまではいらない事例のが身の回りに多い。

いつかUnityがなくなるなんてことはなかなかないと思う。
納得いかないのは①だ。端末に備わってる機能を使うのに金余計に払うとか馬鹿らしい。

スマホ開発に関してもOSの更新に対して即応性はない。一時期マルチ開発でTitaniumの採用事例があったが、
広告をいれるのにコストが余計にかかるせいで、標準的な仕様で作り直してるなんて事例もある。
(Titaniumについては、ぶっちゃけ「分かる人があんまりいないので」避けたほうが無難だ。
 やってみたけどTitanium用のプラグイン開発なんてCOMプログラム思い出すくらい手間)

いやTitaniumなんて、わざわざ出さなくても、Unityプロジェクトの破綻事例はいくつか目にしてる。
体制を整えて乗り込まないと、危険というのは事実っぽい。

①Unityを作れば3Dゲームが簡単に⇒3D以外のところとかUnity固有の問題、ローカライズの問題にぶちあたり、プロジェクトが盛大に座礁。
②Unityをつかってゲーム作りました⇒開発者がいなくなってコンパイルできない
③とにかくUnity(Unreal Engineでも可)を使える人材が欲しい⇒いない

Unityを使うことで得られるのはUnity社の知見でありUnity社の知見を理解できて使いこなせる人がいないとまあどうにもならない。

もしくは、頭のいい根性のある子に、時間とUnityを与えて好きに作らせるとかですね。

2014年2月14日金曜日

cocos2d-x 2.2.1とかそのあたりでandroid向け/armeabi-v7でコンパイルすると大量に警告

はい

cocos2d-x 2.2.1でarmeabi-v7でコンパイルするとワーニングが大量にでてコンパイルできない問題。2.2.2は知らない。3系はためしてないが多分解決している。リリース用にコンパイルすべとv7をいれた途端コンパイルできねえとなるので、とても困る。

再現が面倒なので細かいメッセージは省くが、ワーニングを見るとlibcurlが含まれているのが確認できるはず。これは配布ファイル内のlibcurl.aがstripされてるのが原因とのこと。
$(cocos2dx_home)\cocos2dx\platform\third_party\android\prebuilt\libcurl\libs\armeabi-v7a\libcurl.a

これをgithubの3.0の配布ファイルに含まれてる下記のURLにあるものに置き換えれば、ワーニングは消える。

https://github.com/cocos2d/cocos2d-x/tree/develop/external/curl/prebuilt/android/armeabi-v7a/

2014年2月5日水曜日

Flash : FLAファイルのライブラリから音声ファイルを抽出したい場合

FlashもCCになったので、なんとなく触ることもすくなくなってきたんだけど
あまり情報がないやつ

Flashにはライブラリの機能があって、動画や画像、音声など、いろいろな
要素をつっこんでおける。

素材は基本的にはflaファイルと同じ場所にディレクトリを掘っておいて置
くものなのだがこれを紛失した場合も画像と動画に関してはflaファイルの
ライブラリから直接取り出すことが可能だ。

基本的に素材のまま格納されてるので素材を紛失してもflaファイルがあ
ればなんとかなったりする。
 ただUIを追う普通のやり方だと音声ファイルだけはFlashのライブラリから
取り出すことができない。
元の素材なくしちゃったけどflaファイルだけある場合取り出す方法は下記

swfファイルからもツールを使って取り出すことは可能ではあるが、これは
画像も音声もswfにする際にflashが圧縮するので微妙になる。

で手順。

①空のFlaファイルを作成し、対象の音声をライブラリにコピーする
②音声をステージにドラッグドロップするとタイムラインができる
③タイムラインを音の収まる範囲まで広げる
④ファイル⇒書き出し⇒ムービーの書き出しでwavファイルとして出力

元ファイルではないが、FlashCS6で圧縮する前の音声を取り出すことができた