今後とも宜しくお願いします。Apps2014年11月28日金曜日UIActivityViewControllerからのツイートで、iOSのバージョンによって文字数計算が違うTweetゲームアプリのスコアを周りの人にシェアする機能の手頃な実装方法として、iOSではUIActivityViewControllerがあります。こちらを使えばユーザーの環境に合わせて、Message、Twitter、Facebookなどで、スコアやスクリーンショット画像をシェアできるので、実装する側としては大変助かります。『ごはんよそって2』でも、以下のような文面のテキストとスクリーンショット画像をシェアできるようにしていました。http://goo.gl/5qMdTcこのテキストをTwitterでツイートしようとすると、文字数制限の140文字を超えていないはずなのに、超えていると判定されて困ってしまいました。SDK7.1を入れる。6.1をインストールしました。7.1が使用できなくなるのを知ってたので、まあ、いろいろ面倒くさかったのです。Xcodeをメジャーバージョンアップすると旧SDKが選択できなくなるという状況は、過去から続いているようですが、これは新Xcodeの導入を遅らせてる要因でもあると思うのですが、Apple的にはどういう思惑なんでしょう?旧SDKも入れといてくれるか、あとからコンポーネントとしてインストールできるようにしといてくれると楽なんですが。Xcode2014年11月25日火曜日Androidでもよそってね。ごはんよそって2、Android版をリリースしましたTweetiOS版をリリースしていました『ごはんよそって2』ですが、この度、Android版もリリースすることができました。初のAndroidアプリなので、ちょっとドキドキしています。Playへのアプリ申請手順に関してですが、以下の記事が大変参考になりました。Connectよりも全体的にスッキリしていて、個人的にとても分かりやすかったです。5でArchiveした後のValidationに失敗するようになりました。エラーの意味が分かりませんよ。『ごはんよそって2』iPhone/iPad版でましたTweet『ごはん』をよそって『梅干し』にくっつけるとクリアという、ごはんパズルアクションゲーム『ごはんよそって2』のiPhone/iPad版がリリースされました。すみません、ごはんパズルアクションというネーミング、今思いついて書きました。前作『ごはんよそって』をプレイしてくれた方は、ルールがかなり変わっておりますので、また新鮮な気持ちで楽しんで頂けたらと思います。『ごはんよそって2』リリース予告Tweet久しぶりのアプリ、初めてcocos2d-xで開発したゲーム『ごはんよそって2』が、もうじきリリースされます。v3.2で新規プロジェクトを作成すると、iOSアプリとMacアプリ共用のInfo.plistファイルには、CFBundleIconFileの設定がされています。なんか久しぶりに見た設定だったので、思い出すために以下のAppleのドキュメントを見てみました。Keysそれによると、CFBundleIconFileは古いアイコンの設定方法で、Macアプリにはまだ必要らしいですが、iOSアプリだけなら必要ない設定らしいです。Issue(問題なし)と出たので、やはり設定を削除しても構わないようでした。Xbox2014年11月10日月曜日AdMobのバナーサイズをcocos2d-xのOpenGLビューのサイズに変換するTweetAdMobのバナー型広告の裏に、cocos2d-xの描画領域に広告エリアとしてスプライトを表示するようにしたのですが、Android(Nexus7)での広告サイズの計算にちょっとはまりました。上図のようになって、バナーサイズの高さと、広告エリア用スプライトの高さが合わないのです。スクリーンショットを撮って調べてみると、バナーの高さは66pxと、変換式がよくわからないサイズで描画されていました。SDKにテスト用デバイスを登録して安全に開発するTweetアプリの開発中にAdMob広告を誤クリックしてしまうと、最悪、アカウントの停止を受けてしまいますので注意したいです。SDK側にテスト用デバイスを登録するシステムがあるので、そちらを利用するのが良いと思います。6.12.0の導入に必要なフレームワークはドキュメントによりますと、以下のような、ずらーっと長いリストになっています。AdSupportAudioToolboxAVFoundationCoreGraphicsCoreTelephonyEventKitEventKitUIMessageUIStoreKitSystemConfigurationちょっと前と比べるとずいぶん増えたなぁ、どこまで増えるんかいなと不安になります。メディエーションを使用する場合は、組み込む広告SDKによっては、また更に必要なフレームワークが増えます。Xcode2014年10月2日木曜日Automatorで作成したサービスの保存場所は?TweetMacのサービス機能を活用していますでしょうか?Finderでファイルかフォルダを右クリックした時にでるアレです。Automatorを使ってこのサービスをいくらでも作れるので、日頃面倒に感じていた定形作業をサービス化できないか検討してみるのもいいかもしれません。v3.2に組み込む(iOS版)TweetLWFを既存のアプリプロジェクトに組み込んでみたので、その導入方法を書き残しておきます。その他のライブラリAutomatorのシェルスクリプトの実行で、rvmでインストールしたRubyを使用するTweetRuby環境をrvmで構築するようにしてから、いくつかのAutomatorで作成したフォルダアクションが動かなくなってしまいました。動かなくなったフォルダアクションにはRubyスクリプトを含ませていましたが、AutomatorではシステムインストールされているRubyを使おうとするので、いろいろ不具合を引き起こしていたようです。Ruby2014年9月26日金曜日LWFのサンプルデモをAndroid(実機)で動かすTweet昨日からLWFというフレームワークを試してます。CSをオーサリングツールとして利用して、2Dアニメーションのシーンを生成することができます。現在では、Unity、cocos2d-x、HTML5などでデータを利用できるようです。触ってみた感じでは、LWFはゲームキャラクターを制御する目的のものではなく、シーン全体(例えばデモ、動きのある演出など)を構築するのに適しているように思いました。導入方法などについては、以下のサイトで分かるかと思います。あるので試してみたのですが、案の定、Android(実機)で実行できなかったので、修正点を書き残しておきます。cocos2d-x2014年9月23日火曜日cocos2d-xのrunActionメソッドを使って遅延実行処理を簡潔に書くTweetcocos2d-xで一定時間後に何か処理を行わせたい時、方法はいろいろあると思いますが、簡単な方法として、NodeクラスのrunActionメソッドとラムダ式を使えば簡単に記述できました。矢印の消し方Tweet毎度忘れて困ってしまうのでメモ。8.1を使っていて鬱陶しいのが、画面左や右に出てくるでかい矢印です。「スワイプしてなんとかかんとか〜」ってメッセージが出るものの、マウスでスワイプっぽいアクションをしても消えてくれません。いう時、UIってなんだろう...って本気で考えてしまいます。消すにはこれ↓↓↓マウスカーソルを画面左上に移動して、デスクトップの縮小サムネイルが表示されたら、クリックせずにマウスを下に動かすと消えてくれます。v3系でLayerのタッチイベントを設定するのは、旧来(v2系)の方法も残っているようですが、今後はEventDispatcherを使って設定するのが推奨されています。1つのタッチ毎にイベントが飛んでくる方式(TouchOneByOne)の場合ですと、Layerサブクラスのinit()メソッドなどの中で、以下のような設定をします。GameSceneというのは自分で作ったLayerサブクラスの名前です。7)ではクリッピングされない現象が起こりました。予期しないところで問題が起こるので、毎度びっくりします。バッファが無効になっているのでクリッピングできていませんでした。バッファが無効になっている事があるのかということになりました。Stencilバッファが無効になっている事があるようです。描画速度、Stencilバッファ未対応のデバイスなどの問題を意識しての仕様かと思われます。バッファは必ず有効にされています。Stencilバッファを有効化してやりました。2には沢山の拡張テーマがあって、気に入ったひとつを選ぶのに困りますね。テーマ全体は結構満足してても、一部分だけ変更したいということもあるでしょう。Schemeを使用しています。Schemeは、コメントの色が暗くてとても読みづらいのが難点でした。Schemeを編集する方法を調べました。v3系で開発するようになってまだ日が浅いので、これまでEclipseの機能を殆ど知らずにやってきました。したってコード補完機能がなければ、やってられないよという気分になりましたので、ちょっとその辺りを調べました。v22.6.2-1085508)CDTキーボードショートカットによるコード補完機能としては、以下の2つの機能を抑えておけば、なんとかなりそうです。devicesでリストアップされない時にすることTweetMacにAndroidデバイスを接続してUSBデバッグを開始しても、adbに認識されない時がよく起こります。原因なのでしょうか?まあだいたいUSBケーブルを一度抜いてから挿し直すと認識してくれるので、まあいっかという感じですが、ごく稀に数十回抜き挿ししても直らず、ムキッ〜ー!となる時が訪れます。SpriteStudioという、スプライトアニメーション制作ツールの事を最近知りました。Landscapeモードになっているので、これをPortraitモードに変更する方法を調べました。Downに対応するようにしました。iPadアプリでは、デバイスを逆さにした時にスクリーンを回転するようにしないと、リジェクトされた苦い思い出があります。v3系に搭載されている通知処理を試してみました。NotificationCenterというクラスで通知をしていたみたいですね。使うことが推奨されています。Notification(通知)から、Event(イベント)と名前が変わっているので混乱するかもしれませんが、内容的には同じだと思います。logcat、適度に不要なログをdiscardするフィルタスクリプトTweetAndroid開発で、logcatをターミナルで表示している時に、適度に不要なログをdiscardするフィルタスクリプトを作ってみました。Androidで開発を少し経験してきて、結局logcatのログには不要なログなど無いという結論っぽいものが見えかけてきてはいます。バグを追いかけている時には。́ω`)でも、アプリの製作中、軽くログをチェックしたい時には、ある程度情報を絞りたいのも事実です。僕の場合は、Eclipseのlogcatと、ターミナルでフィルタ表示させるlogcatを併用して、その時々で観る方を変えるようにしています。電卓にまつわる思い出話しTweet長年愛用してきた電卓の液晶が黒ずんできて、文字が読みづらくなったので、新しくfx-915ESという電卓を購入しました。安いのに、なんかやたらと高機能ですごい奴なんですが、この電卓のことはまたいずれ。僕がプログラマーになった頃はアセンブラでプログラムを組んでいたので、2進、16進計算をするために専用に電卓を用意していました。その時に、僕の回りで評判が良かったのが、CASIOのCM-100。触らせてもらってから、なるほど使いやすい!という事で、僕も早速購入しました。開発2014年7月24日木曜日フォルダ階層のローカルファイルをUIWebViewで表示する時のお約束TweetiOSのプロジェクトで、リソースにHTMLファイルなどのUIWebView用コンテンツを持つ際に、フォルダ階層にして持っておくと便利ですね。リソースにフォルダを渡す場合、Xcodeの場合は、以下の2つから選ぶことができます。folders一つはグループという、見せかけのフォルダ(!)で、もう一つは、ホントのフォルダです。Navigatorでは、それぞれ黄色のフォルダと青色のフォルダで表されます。touchの場合、UIViewControllerが2つあって、Aの上にBをオーバーレイしたいんだけど、Bが保持するビューを透明にしても、Bのトランジションが完了すると同時にAは消えてしまうので悩んでました。結局のところ、こういう使い方はイリーガルなんだと思いますが、いろいろ調べた結果分かった事を覚え書きしておきます。通常は以下のようなコードを書いて、ビューの管理をcontroller_bへ移行してます。Storeから配信停止しました。Retinaに対応しておらず、iPhone5などの縦長画面にも対応していませんでした。対応しないとAppleの審査が通らないので、長らく放置していましたが、Retina用の素材を新規に作るのが困難なため、配信を停止することに決めました。デバイスにダウンロード済みのものは、そのままご利用できます。コンソールウィンドウに表示されますが、これ表示順番がおかしなことになってるんですよね。(ターミナルで実行する時は、正しい順番で表示されていました)最初ビルド工程そのものが変になってるんじゃないかと疑いましたが、どうもprint文の出力がバッファに溜まっていて起きる現象のようです。print文と、os.system()でコマンドを実行した時があります。os.system()で実行したコマンド結果は、直ぐにコンソールに反映されますが、print文の出力はバッファに溜まったままになっている事があって、直ぐにコンソールに反映されません。Eclipse2014年7月9日水曜日EclipseのConsoleのUTF-8対応TweetEclipseのConsoleへ、UTF-8の文字列を出力すると、文字化けしてしまいます。デフォルトの設定ではUTF-8になっていないようでした。設定を変えるには、eclipse.iniを書き換えれば良いということです。rc0がリリースされたので、v3.1.1から移行するために試しています。v3.2系は先にalpha版が出ていましたが、僕はその辺すっとばしてきたので、その辺りはご留意してお読み下さい。llvmに移行した点でしょうか。r9dのgnustl系スタンダードライブラリのstd::regex(c++11)問題が解決すればいいのですが、まだ、試していません。ビルドを通すところから。v3.1.1で作成したプロジェクトに、ユーザーの作成したスタティックライブラリをビルド&リンクする方法を調べました。NDK_MODULE_PATHに、モジュール群が格納されているパスを設定して、Android.mkの中で、以下のような感じでモジュールのビルドを行うことができました。logcatコマンドで指定タグのみ表示して、それ以外は表示しないオプションTweetAndroid開発で、EclipseのLogCatは、なんだか不安定な感じがします。フィルタを設定してても、表示されなくなったりすることがあるし、Applicationの項にパッケージ名が表示される時と、されない時があって、なんだかよくわかりません。デバッグに大切なログ出力がこんな感じでは、精神的にもよくありません。Mac2014年7月1日火曜日Macでjava系コマンドの日本語メッセージをUTF-8で表示させるTweetJNIのヘッダファイルを作成しようと、ターミナルからjavahと打ったら、文字が化けまくるじゃないですか!デフォルトがShift-JISなようです。君か!なので、.bash_profileに以下の設定をしたらうまく行きました。v3.1、Macでキー入力を試すTweetcocos2d-xのMac用プロジェクトで、キー入力を試してみました。スマホのバーチャルキーボードが出るやつじゃなくて、ゲームとかでよく使う、特定のキーが押されたかを検知する方です!以下の環境で試しました。Mac2014年6月7日土曜日CALayerのアニメーションがアプリがバックグラウンドに行った時に削除されてしまうTweetCALayerに追加したCAAnimationって、アプリがバックグラウンドに行くと削除されてしまうんですね...。う〜ん、知りませんでした。Androidプロジェクトの設定。v.3.1のAndroidプロジェクトの設定を調べ中です。今回は、生成した新規プロジェクトのAndroid.mkファイルを修正してみました。v.3が出た辺りから、いろいろ四苦八苦しています。ビルドできない問題にぶち当たり、v.3.1の正式版がリリースされたので、じゃあもうそっちでやるよ的に安易に移行したら、stdライブラリ系の名前解決が一切できなくて、「えっ!?そこからですか?」的に、Eclipseをぜんぜん分かってないで触っている僕は途方に暮れたのでした。Tools2014年5月23日金曜日Finderで開いているフォルダーをカレントディレクトリとしてターミナルを起動する方法TweetFinderで開いているフォルダーを、カレントディレクトリとして新たにTerminalを起動したい場合、僕はかなり昔からOpenTerminalHereというソフトを使わせて頂き、重宝しておりました。Xのキーボードショートカットから似たような機能を実現できることを知り衝撃を受けました。Lionの頃から搭載されてたようですね。複数同時にリソースファイルをローカライズ設定する方法Tweetこれまでリソースファイルのローカライズをする時、XcodeのファイルインスペクタのLocalizationで、対象の言語をチェックしてから、ローカライズ済みのファイルをコピーしてました。わせると1000個以上)もプロジェクトに追加しなければならなかったので、もっと楽に追加する方法を調べました。Xcode2014年4月12日土曜日iPhoneゲーム『シンプル・スモール・サッカー』をリリースしましたTweet約1年ぶりになりますが、iPhoneゲームを本日リリースしました。作ってたら、こんなに時間がかかっちゃいました。ボールをフリックしてシュートするサッカーゲームです。One向けのインディーデベロッパを大募集していますね。One、略してID@Xboxと言って、その内容がなかなか太っ腹ですよ。Oneまでついてくるそうです。パソコンと、やる気と、アイデアがあれば、直ぐにでも開発を始められるわけですね。開発2014年4月10日木曜日alDeleteBuffers()がAL_INVALID_OPERATIONを返して困ったらTweetOpenALでサウンドデータ(バッファ)を解放しようとするときには、alDeleteBuffers()を使用します。全てのサウンド再生が終了しているのを見計らって、いざalDeleteBuffers()を実行しても、エラーコードAL_INVALID_OPERATIONで失敗してしまうというのは世界中よくやるミスのようです。Argumentsで、NSLocalizedStringで得られる文字列を2〜3回に繰り返して、長い文字列になった時のUI崩れをチェックできるオブションが紹介されていて、目から鱗が落ちました。Qiita日本語は文字数としてはかなり圧縮できますが、英語では文字数が2〜3倍ぐらい、中には4〜5倍ぐらいにもなる言語があるということですから、ローカライズには気をつけたいものです。ArgumentsはXcodeからアプリを起動しないと使えないので、テスターにチェックしてもらう時などは困ります。Xcode2014年2月3日月曜日sortedArrayUsingDescriptorsを使ってソートTweet以前に、sortUsingComparatorを使って配列内にあるオブジェクトのソートをしました。sortedArrayUsingDescriptorsを使ってソートしてみます。NSArrayのソートとしては、こちらの方が楽かもしれません。Objective-C2014年2月2日日曜日アプリ内課金のコンテンツアップロードでexecutableなんちゃらと怒られるTweetiPhoneのアプリ内課金では、非消耗型プロダクトのコンテンツデータをAppleのサーバーにホスティングしてもらうことができます。テストで作ったコンテンツファイル(.pkg)をXcodeのオーガナイザーでvalidateしたところ妙なエラーが出ました。Xcode2014年1月29日水曜日staticでconstなNSString、NSArray、NSNumberポインタTweet気が付くと2014年も1月の終わりになってました。はやい!とあるクラスの中だけでNSString、NSArray、NSNumberなどを定数として使用したい場合は、クラスの@implementationブロック内に、staticなconstポインターを作成しておくと良いです。HamkenDevelopMac,iPhoneのネイティブアプリ開発。Flashアプリの開発をやっています。このブログを検索マイアプリPOLYZANTHショート・ショート・ゲームの迷宮リラックス。ゲームをクリアすれば、先へ進むことができます。じきに慣れるでしょう。Rebirth程よいランダム感で繰り返し遊べます。iOS版:https://goo.gl/pLxhgEAndroid版:https://goo.gl/IjxKhB右脳でございます記憶力の鍛錬をしながら「右脳くん」キャラクターを収集。新トレーニングも追加しました。iOS版:https://goo.gl/AOEtYzAndroid版:https://goo.gl/MAocZU不安なさかな不安症な魚がよみあげる短歌を楽しむアプリです。してらんない動きまわる文字から、単語を読み取るゲームです。SDK7.1を入れる。(もしくはXcode5.1.1と6.1の共存)Androidでもよそってね。logcat、適度に不要なログをdiscardするフィルタスクリプト僕とCM-100。Androidプロジェクトの設定。(13)人気の投稿iPhoneのメッセージの吹き出しが突然青から緑になったらiPhoneのメッセージが便利すぎて、最近、iPhone同士の相手とはメールをほとんど使わなくなりました。GameObjectの非表示2つの方法と削除GameObjectをスクリプトから、一時的に非表示にする方法を試してみました。Unityでは、以下の2つの方法が一般的なようです。Unityアセット9選Unityを使っていると、次々とすばらしいアセットがリリースされて、その情報を追いかけるだけでも大変です。いったような事にならないようにしたいですね。