ええ、タイトルの通りです。
如何ともしがたい事情ができたので、予約投稿をしなければなりません。
なので、そのテストなりー。
2012年11月27日火曜日
2012年10月14日日曜日
抜歯
現在、大体週に一回のペースで親知らずの抜歯を行っています。
元々は、前職の有給消化中にあまりにも歯が痛くなり、酷い虫歯になったものだと思いながら近所の新しい歯医者に電話をしました。
中学生、いや、もしかしたら小学生以来かもしれない歯医者でしたので行くのも億劫でした。
そこで簡単に見てもらいましたら、歯槽膿漏になりかけていたとのことでした。
そのため、歯磨き指導をしてもらい、今も続けてその磨き方をしているとそのような痛みは無くなってきました。
検査をしてもらっている時に先生がにこやかにこう言いました。
「親知らずが中途半端に生えていて、しかもその所為で一部の歯の歯並びが悪くなっているから、取ってしまおうね」
目の前が真っ暗になりました。
よく、親知らずを抜く時の痛みは凄まじいということを聞くので、恐がりな私はそれだけで憂鬱になっていました。
抜歯当日。
あまりにも気が落ちていてげんなりしながら、徒歩で行ける距離の歯医者に向かいます。
麻酔の駐車でも少し痛くなってしまい、麻酔後の痛みがどれほどのものなのかと考えるだけで震えてしまいます。
最初は右奥上の親知らずです。
この歯は若干外側に向かって生えていたのですが、あっさり先生は抜いてくれました。
抜歯そのものの時間は5分もかからなかったと思います。
私は下の親知らずも抜かれると覚悟をしていましたが、どうやら一回に一本ずつ抜く方針だったようで、あれだけ恐怖を感じていたのに肩すかしを食らいました。
麻酔が切れた後の痛みは薬のおかげかそれほどでもありませんでした。
ただ、難を言えば穴に食べ滓が入ってしまうので、念入りにくちを漱ぐことでしょうか。
さらにしばらくして、今度は右奥下の親知らずの抜歯です。
この日はちょうどさいたま勉強会と重なっていましたので、抜歯を行いそのまま蕨に直行する予定です。
この日の抜歯は切開も行いました。
なぜかと言いますと、親知らずを半分程覆うように歯茎が乗っていたためです。
これがぴろぴろ動くなら切開をしなくても良かったのですが、あいにくそのようには動いてくれなかったため切開をすることになりました。
この日の抜歯は前回に比べて、
「メリメリ!」
という音がよく聞こえてきました。
抜歯自体の時間も前回よりも長いです。
なんとか抜けたと思いましたが、切開をしたため縫合することになりました。
ただ、この次の週は病院側が休みであるため、2週間後の土曜日に抜糸及び抜歯をすることになりました。
口の中を血だらけにして蕨に向かったのも今ではいい思い出です。
そして痛みが引きにくかったため、焼き鳥をもりもり食べることが出来なくて残念でした。
この抜糸及び抜歯を行ったのが昨日です。
抜糸自体はすぐに完了しました。
先生のチェックでは傷の治りも順調とのことでした。
確かに、最初の頃に比べて食べ滓が穴に入りにくくなったような気がします。
そしてこの日行ったのは左上の親知らずの抜歯です。
こちらも最初の抜糸と同じく、それほど時間はかかりませんでした。
痛みも薬のおかげかそれほどありません。
最後に残すのは左下の親知らずのみです。
こちらは抜糸後の痛みが大きそうですので今から憂鬱です。
早く心置きなく美味しい物が食べられるようになりたいです。
元々は、前職の有給消化中にあまりにも歯が痛くなり、酷い虫歯になったものだと思いながら近所の新しい歯医者に電話をしました。
中学生、いや、もしかしたら小学生以来かもしれない歯医者でしたので行くのも億劫でした。
そこで簡単に見てもらいましたら、歯槽膿漏になりかけていたとのことでした。
そのため、歯磨き指導をしてもらい、今も続けてその磨き方をしているとそのような痛みは無くなってきました。
検査をしてもらっている時に先生がにこやかにこう言いました。
「親知らずが中途半端に生えていて、しかもその所為で一部の歯の歯並びが悪くなっているから、取ってしまおうね」
目の前が真っ暗になりました。
よく、親知らずを抜く時の痛みは凄まじいということを聞くので、恐がりな私はそれだけで憂鬱になっていました。
抜歯当日。
あまりにも気が落ちていてげんなりしながら、徒歩で行ける距離の歯医者に向かいます。
麻酔の駐車でも少し痛くなってしまい、麻酔後の痛みがどれほどのものなのかと考えるだけで震えてしまいます。
最初は右奥上の親知らずです。
この歯は若干外側に向かって生えていたのですが、あっさり先生は抜いてくれました。
抜歯そのものの時間は5分もかからなかったと思います。
私は下の親知らずも抜かれると覚悟をしていましたが、どうやら一回に一本ずつ抜く方針だったようで、あれだけ恐怖を感じていたのに肩すかしを食らいました。
麻酔が切れた後の痛みは薬のおかげかそれほどでもありませんでした。
ただ、難を言えば穴に食べ滓が入ってしまうので、念入りにくちを漱ぐことでしょうか。
さらにしばらくして、今度は右奥下の親知らずの抜歯です。
この日はちょうどさいたま勉強会と重なっていましたので、抜歯を行いそのまま蕨に直行する予定です。
この日の抜歯は切開も行いました。
なぜかと言いますと、親知らずを半分程覆うように歯茎が乗っていたためです。
これがぴろぴろ動くなら切開をしなくても良かったのですが、あいにくそのようには動いてくれなかったため切開をすることになりました。
この日の抜歯は前回に比べて、
「メリメリ!」
という音がよく聞こえてきました。
抜歯自体の時間も前回よりも長いです。
なんとか抜けたと思いましたが、切開をしたため縫合することになりました。
ただ、この次の週は病院側が休みであるため、2週間後の土曜日に抜糸及び抜歯をすることになりました。
口の中を血だらけにして蕨に向かったのも今ではいい思い出です。
そして痛みが引きにくかったため、焼き鳥をもりもり食べることが出来なくて残念でした。
この抜糸及び抜歯を行ったのが昨日です。
抜糸自体はすぐに完了しました。
先生のチェックでは傷の治りも順調とのことでした。
確かに、最初の頃に比べて食べ滓が穴に入りにくくなったような気がします。
そしてこの日行ったのは左上の親知らずの抜歯です。
こちらも最初の抜糸と同じく、それほど時間はかかりませんでした。
痛みも薬のおかげかそれほどありません。
最後に残すのは左下の親知らずのみです。
こちらは抜糸後の痛みが大きそうですので今から憂鬱です。
早く心置きなく美味しい物が食べられるようになりたいです。
2012年5月22日火曜日
cocos2d-xのHeloo Worldの表示の違いについて考えてみた
先日、Twitterやcocos2dのグループに投稿しましたらページビューが一気に上がりまして小躍りしていました。
また、T-01C(REGZA phone)ではこのように表示されます。
上下に並べるとわかりやすいですが、文字と画像の表示サイズが異なります。
次に、中央に表示されている画像はこのように書かれていました。
Androidで考慮するべきdpiの概念が全くされていないですね…。
位置に関してはセンタリングのみですので、この書き方でいいでしょうが、サイズに関しましてはdpiのことを考慮に入れるべきなのではないかと思いました。
実際、T-01CとSC-04Dとでは見た目の大きさが異なっていますので、このままゲームを作っていきますと端末毎にゲームの表示される大きさが異なるようになっていって寂しいことになっていきそうです。
というかよろしくないです。
2Dゲームならアスペクト比が一定になるように描画をしていくようにして作成していく方が作りやすそうではあります。
ただし、使われない画面スペースも出てきますので、その辺りの塩梅をどのようにするかは考え中です。
うーん、Android対応は難しいですね。
ぐぬぬ。
【追記】
dpiの値に関してですが、
こんなに行くとは思いもよらなかったので、SNSの威力を身に染みて感じました。
さて、タイトルの件ですがこっそりと会社のSC-04D(Galaxy Nexus)に入れてみますと、下記のように表示されました。
![]() |
| fpsがT-01Cの2倍です |
![]() |
| 残念なfpsを叩き出すT-01C |
上下に並べるとわかりやすいですが、文字と画像の表示サイズが異なります。
読み込んでいるaplファイルは同一の物を使用しています。
では、何故このようなことが起きるのかを見ていきたいと思います。
まず、Hello Worldと記載されているラベルの部分はこのように書かれていました。
CCLabelTTF* pLabel = CCLabelTTF::labelWithString("Hello World", "Arial", 24);
// ask director the window size
CCSize size = CCDirector::sharedDirector()->getWinSize();
// position the label on the center of the screen
pLabel->setPosition( ccp(size.width / 2, size.height - 50) );
次に、中央に表示されている画像はこのように書かれていました。
CCSprite* pSprite = CCSprite::spriteWithFile("HelloWorld.png");
// position the sprite on the center of the screen
pSprite->setPosition( ccp(size.width/2, size.height/2) );
Androidで考慮するべきdpiの概念が全くされていないですね…。
位置に関してはセンタリングのみですので、この書き方でいいでしょうが、サイズに関しましてはdpiのことを考慮に入れるべきなのではないかと思いました。
実際、T-01CとSC-04Dとでは見た目の大きさが異なっていますので、このままゲームを作っていきますと端末毎にゲームの表示される大きさが異なるようになっていって寂しいことになっていきそうです。
というかよろしくないです。
2Dゲームならアスペクト比が一定になるように描画をしていくようにして作成していく方が作りやすそうではあります。
ただし、使われない画面スペースも出てきますので、その辺りの塩梅をどのようにするかは考え中です。
うーん、Android対応は難しいですね。
ぐぬぬ。
【追記】
dpiの値に関してですが、
- T-01C=1.5
- SC-04D=2
だったと思います。
hdpiとxhdpiの差が生まれていますね…。
そういえば、解像度に合わせての画像の種類はどう切り分けるのでしょうかね?
Resourcesフォルダを見ても切り替えられるようにディレクトリが振り分けられていないです。
これはもしかして、コード側で切り替えになるんでしょうかね?
もう少しこの辺りは追っていきます。
Androidでcocos2d-xをやり始めた その2
前回はcocos2d-xをビルドしてAndroidアプリとして動かすところまで行いました。
今回は実際にコーディングを行うC++のクラス類の読み込みのところから行っていきます。
何故このようなことをすると言いますと、JavaもC/C++も一緒にビルドが行えるらしいのです。
なんと便利。
いちいちコマンドを打たなくても一緒にビルドが出来るのなら楽をしたいじゃないですか。
というわけで、ちみちみと設定を行っていきます。
参考にしたURLは前回記載したURLと同じですので、そちらを参考にしてください
まず、cocos2d-xとして作成してEclipse内に作ったプロジェクトを右クリックして、「New→Others→C/C++→COnvert to a C/C++ Project(Adds C/C++ Nature)」を選択します。
そうしますと、次にこのようなダイアログが表示されます。
私の場合、「MegTest」で作っていますので、
記入が終わりましたら、Applyを選択し、OKを選択します。
そして、プロジェクトをビルドして、ログに出力されればビルドに成功しています。
気になったのは、こちらとログの種類が異なっているんですよね…。
前回と同じ注意なのですが、パスはそれぞれの環境に合うように通してください。
まだまだエラーが出ているので設定を弄り倒したいと思います。
まず、「#include "AppDelegate.h"」の箇所でエラーが出ています。
これもパスの問題らしいので、それを修正していきます。
プロジェクトの「Properties→C/C++ General→Paths and Symbols」を開きます。
その中のSource locationタブのLink Folderを選択します。
そうすると、新しくダイアログが表示されます。
そのダイアログのLink to a folder in the file systemにチェックを入れて、Browseで「cocos2d-x/プロジェクト名/Classes」のフォルダを選択します。
そしてこのダイアログのOKボタンを押すと小さなダイアログは消えます。
次の元々表示されていたダイアログがありますので、いつも通りApplyを選択して、OKを選択します。
そうしますと「#include "AppDelegate.h"」の箇所でエラーが出なくなりました。
ただ、EclipseでのC++のヘッダファイル読み込みはあまりよろしくないために、エラーが吐かれているらしいです。
なんてこったい。
というわけで、コード解析の設定を弄ります。
「Properties→C/C++ General→CodeAnalysis」を選択します。
ワークスペース全体に対して設定を行いたいのなら、「Use workspace settings」にチェックを入れて、Configure Workspace Settingsを選択します。
Syntax and Sematinc Errorsのチェックを外せばエラーが出なくなります。
今回は実際にコーディングを行うC++のクラス類の読み込みのところから行っていきます。
何故このようなことをすると言いますと、JavaもC/C++も一緒にビルドが行えるらしいのです。
なんと便利。
いちいちコマンドを打たなくても一緒にビルドが出来るのなら楽をしたいじゃないですか。
というわけで、ちみちみと設定を行っていきます。
参考にしたURLは前回記載したURLと同じですので、そちらを参考にしてください
まず、cocos2d-xとして作成してEclipse内に作ったプロジェクトを右クリックして、「New→Others→C/C++→COnvert to a C/C++ Project(Adds C/C++ Nature)」を選択します。
![]() |
| この箇所をクリック |
この時に「Project type」の「Makefile project」は「Other Toolchain」を選択してFinishボタンを押します。
次にC/C++プロジェクトのビルド設定を行って行きます。
![]() |
| このように選択すればOK |
次にC/C++プロジェクトのビルド設定を行って行きます。
プロジェクトを選択し、「Properties→C/C++ Build→Builder Settingsタブ」を選択し、「Use default build command」のチェックを外します。
それから、Build commandに
bash ${workspace_loc:/プロジェクト名}/build_native.sh NDK_DEBUG=1 V=1と記入します。
私の場合、「MegTest」で作っていますので、
bash ${workspace_loc:/MegTest}/build_native.sh NDK_DEBUG=1 V=1と記入します。
記入が終わりましたら、Applyを選択し、OKを選択します。
![]() |
| このように記入します。 |
![]() |
| ログがずらずらと。 |
うーん、バージョンの問題なんですかね…。
とりあえず、放置しておきます。
ファイルを開くとわかりますが、WarningやErrorが大量に入っています。
これらを取り除く作業を行います。
プロジェクトの「Properties→C/C++ General→Paths and Symbols」を開きます。
その中のIncludesタブ内のGNU++を選択します。
そして、AndroidNDK内にある今回選択したプロジェクトターゲットのパスとcocos2d-xのパスを追加します。
/Applications/android-ndk-r8/platforms/android-8/arch-arm/usr/includeパスを追加したらApplyを選択して、OKを選択します。
/Applications/cocos2d-1.0.1-x-0.12.0/cocos2dx/include
前回と同じ注意なのですが、パスはそれぞれの環境に合うように通してください。
まだまだエラーが出ているので設定を弄り倒したいと思います。
まず、「#include "AppDelegate.h"」の箇所でエラーが出ています。
これもパスの問題らしいので、それを修正していきます。
プロジェクトの「Properties→C/C++ General→Paths and Symbols」を開きます。
その中のSource locationタブのLink Folderを選択します。
そうすると、新しくダイアログが表示されます。
そのダイアログのLink to a folder in the file systemにチェックを入れて、Browseで「cocos2d-x/プロジェクト名/Classes」のフォルダを選択します。
![]() |
| このように設定します。 最初の物をキャプチャし忘れたので、エラーになっています…。 最初はエラーにならないです。 |
そしてこのダイアログのOKボタンを押すと小さなダイアログは消えます。
次の元々表示されていたダイアログがありますので、いつも通りApplyを選択して、OKを選択します。
そうしますと「#include "AppDelegate.h"」の箇所でエラーが出なくなりました。
ただ、EclipseでのC++のヘッダファイル読み込みはあまりよろしくないために、エラーが吐かれているらしいです。
なんてこったい。
というわけで、コード解析の設定を弄ります。
「Properties→C/C++ General→CodeAnalysis」を選択します。
ワークスペース全体に対して設定を行いたいのなら、「Use workspace settings」にチェックを入れて、Configure Workspace Settingsを選択します。
![]() |
| ワークスペース全体に対して設定を行うため、このような表示になる。 |
ちょっと怖いですが、とりあえずこれで進めようかなと思います。
設定に関しては、プロジェクト毎にも設定できますので他の物に対して影響を出したくない場合は、プロジェクト毎に設定を行うのが良いでしょう。
この状態でEclipseでビルドを行いましてアプリを端末に入れましたところ、アプリの変更点(Hello WorldをMegTestに変えた程度です)が反映されていました。
これでコマンドを打たなくてもビルドが行えるようですので良かったです。
まだ、続きがあるのですがそちらは後日に書ければ良いなと思っています。
これでコマンドを打たなくてもビルドが行えるようですので良かったです。
まだ、続きがあるのですがそちらは後日に書ければ良いなと思っています。
2012年5月17日木曜日
Androidでcocos2d-xをやり始めた
さて、巷では「cocos2d!cocos2d!」と騒がれています。
しかし、この話は専らiPhoneアプリのお話です。
私もAndroidでcocos2d使いたい!
けど、cocos2d for Androidは死んでいるみたいな噂話もあるからどうしよう…。
そんな私に朗報です。
Androidでも使えるcocos2dがあります。
その名もcocos2d-x。
cocos2d-xはクロスプラットフォームで行えるのでとっても便利です。
そして、こまめにアップデートやメンテナンスもされていて素敵です。
これを使うしかないな!ということで使いたいとなって環境構築のお話です。
書いていく言語はC/C++なのがネックですが、頑張ります。
ちなみに参考にしたのはこちらです。
Facebook内のcocos2d Developers Japanというグループで紹介されていた記事
そして我らが@yoichinejiさんがブログに書かれていた記事
この二つを読み解いて、少しずつ環境構築を行っていきましょう。
注意!
私は開発に関わるものは基本的に/Applications内に入れるようにしています。
そのため、サンプルで上げているパスが/Applications始まりになっていますが、パスは各自の環境に合わせて修正をしてください!
1.cocos2d-xをインストールする
まず、Androidでcocos2d-xを使うとなると、AndroidのSDK環境だけではなくNDKの環境が必要となります。
C/C++で書いていきますからね。
AndroidのNDK環境の環境構築に関しては、先達の素晴らしい方々がブログに記事を残していますので、そちらを参考にしてください。
cocos2d-xの箇所から書いていきたいと思います。
まず、cocos2d-xのダウンロードページから、zipファイルを落としてきます。
私は現時点で、最新の安定板としてcocos2d-1.0.1-x-0.12.0.zipを落としてきました。
落としてきたzipファイルを任意の箇所に展開します。
そして、コマンドでcocos2d-xのフォルダに移動します。
$ cd /Applications/cocos2d-1.0.1-x-0.12.0
この中にcreate-android-project.shというファイルがあります。
このファイルを編集しなければならないのですが、このように編集します。
![]() |
| CotEditor好きなんです |
- NDK_ROOT_LOCAL="/Applications/android-ndk-r8"
- ANDROID_SDK_ROOT_LOCAL="/Applications/android-sdk-macosx"
というものです。
これは各自の環境に合わせてパスを指定してください。
よくAndroidSDKですと、「/Applications/android-sdk-macosx/tools」まで指定することがありますが、今回は必要ないです。
何故かと言いますと、cocos2d-x側で補完してくれます。
この箇所は注意してください。
これでできる!と思ったのでcreate-android-project.shを実行しましたところ、多いにエラーが吐かれました。
しかも,
「AndroidSDKのtools/androidがないよ!」
と怒られていました。
確認したところありました。
うーんうーんと唸りながら色々見ていますと、create-android-project.sh内にNDK_ROOTなるものがあります。
なんだろう?と思いながら、.bash_profileファイルにAndroidNDKのパスをNDK_ROOTに設定しまして、create-android-project.shを実行しましたところ動きました。
よくわからないです。
2.cocos2d-xをビルドしてみる
1の段階で少し触れましたが実際にどのようにビルドを行うのかを書いていきます。
まず、前述した通りにコマンドでcocos2d-xのフォルダに移動します。
次に、create-android-project.shを実行します。
実行コマンドは下記の通りです。
$ ./create-android-project.sh
実行しますとこのようにターミナルに表示されます。
Input package path. For example: org.cocos2dx.exampleと出ていますので、使用するパッケージ名を入力していきます。
ただ、ここで注意したいのはNDKを利用しますので途中でパッケージ名を変えますと、Java側だけではなく、C/C++側に記載したパッケージ名の変更も発生します。
SDKからNDKのメソッドを呼び出すには、NDK側で呼び出されるメソッド名がパッケージ名から始まるのです。
例えば「jp.co.megmegfive.startGame」といったメソッド名にしないと呼べなかったと思います。
そのため、パッケージ名を変更するとなるとリファクタリングの量が多くなってしまいます。
SDKからNDKのメソッドを呼び出すには、NDK側で呼び出されるメソッド名がパッケージ名から始まるのです。
例えば「jp.co.megmegfive.startGame」といったメソッド名にしないと呼べなかったと思います。
そのため、パッケージ名を変更するとなるとリファクタリングの量が多くなってしまいます。
一気にリファクタリングができるかあやふやですが、後々のことを考えますとこの段階でパッケージ名を決定させておくと後々楽になるのではないかとおもいます。
一度NDK周りでこのパッケージ名の変更でとんでもなくはまったことがありますからね…。
あんな思いはしたくないです。
閑話休題。
![]() |
| ずらずらと出てきました! |
これはAndroidSDKでインストールしている内容ですので、それぞれが違うと思います。
input target idとありますので、リストで表示されたidを入力します。
ターゲットを入力しますと、input your project name:と表示されますので、任意のプロジェクト名を入力して下さい。
![]() |
| 表示されたidを入力します |
![]() |
| idとプロジェクト名を入力しました。 |
ここまで辿り着くまでがとても長かったです。
3.Eclipseに読み込む
ビルドが通りましたので、今度はEclipseに読み込んでapkファイルを作成していきます。
先ほどビルドしたものは、cocos2d-x直下に記載したプロジェクト名でフォルダが作成されています。
フォルダの中はこのような構成になっています。
![]() |
| シンプル |
最初にやってしまいましたが、このままandroidフォルダでプロジェクトを作成しましてもエラーがあるためビルドが通りませんでした。
よくよくみますとlibs/armeabiフォルダがありません。
NDKの場合ですと、この中にある.soファイルを読み取ってAndroidSDKと連携を取っていきます。
では、どうやって.soファイルを作るかと言いますと、まず、コマンドでプロジェクトのandroidフォルダに移動します。
次に、
./build_native.sh
というコマンドを実行します。
このコマンドを実行しますと、nativeのビルドが実行されていきます。
ものすごくログは長いです。
![]() |
| この前に大量のログがあるので一部割愛しています。 |
.soファイルの生成に成功したようです。
よかったよかった。
さて、本題のEclipseへの読み込みです。
右クリックをして、
New→Android Projectを選択。
ダイアログが表示されますので、先ほど書きましたプロジェクト名を入力します。
それからCreate project from existing sourceを選択しまして、
cocos2d-xのフォルダ/プロジェクト名/android
をLocationとして選択します。
をLocationとして選択します。
![]() |
| こんな感じで入力します |
異なるビルドターゲットを選んで齟齬が起きるんじゃないかと思ってこうしています。
実際はわからないですが、揃えられるのなら揃えていた方が安全な気はします。
![]() |
| 私はAPI Level8のものを選んだので、それにしています。 |
これでEclipseへの読み込みは完了です。
4.Eclipseからアプリをインストール
ここから先は通常のAndroid アプリと同じです。
新規作成したプロジェクトですので、念のためProject→Cleanを選びます。
これでクリーンビルドは完了です。
次に、プロジェクトを選択してRun As→Android Applicationを選択します。
そうしますと、先ほどビルドを行ったapkファイルが端末にインストールされます。
![]() |
| T-01Cだからfpsが残念すぎる…。 |
これでcocos2d-xで開発ができますね!
5.まとめ
家でおおいにターゲット一覧が出なくてハマった理由の解消法としまして、
さて、cocos2d-xやcocos2dもほとんどわかっていないので、これからも情報発信はしていきますが、かなり遅くなると思います。
- AndroidSDKを置いているディレクトリ名を変更した(android-sdk-mac_x86からandroid-sdk-macにしました)
- パス指定の修正
2番目は凡ミスとしましても、1番目はなんでダメだったんでしょうかね?
よくわからなかったです…。
さて、cocos2d-xやcocos2dもほとんどわかっていないので、これからも情報発信はしていきますが、かなり遅くなると思います。
C/C++もさっぱりわかっていないので、さらに時間がかかりそうではあります。
それでも少しずつやっていこうかと思っていますので、よろしくお願いします。
とりあえず、どなたかに簡単に開発の基礎を教えていただければ嬉しいです!
そのためにもcocos2dのあのイベントには参加しなければ…!
登録:
投稿 (Atom)
















