忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/25 21:24 】 |
アプリのリリース前に
確認すべきこと

ビルド構成をReleaseでリビルドして、ワーニングやエラーが無いか?

当然のことながら、バグは無いか?

iPhone/iPad/iPod、どのデバイスで動作するアプリかを正しく設定したか?

動作確認したデバイスとOSのバージョンは控えた?

バックアップを取った?

アプリのタイトルを決めた?

Icon.png(72x72)を描いてプロジェクトに追加した?

データを確認した?
セーブデータを空にした状態で問題なく動いた?

無用なデータを載せていないか?(もう使っていない画像ファイルとか)

広告は載せた?(必要なら)


スクリーンショットを撮る
XCodeのオーガナイザで。


xxxx-info.plistの記入

xxxx-info.plist の Bundle display name に記入する。無記入だと、プロジェクトの名前がアプリ名になる。
これがアプリ固有の識別名になる。
ここの名前を変えてビルド実行すると、別のアプリとして作られる。実機iPhone上にも新たなアイコンが出て別のアプリとして起動するし、シミュレータ実行すれば、iPhone Simulatorディレクトリ下に新たにディレクトリが追加される。
ゲームを最初の状態から開始したいときは、名前を変えちゃうのが楽で確実。
履歴を残す意味で、バージョン管理ツールでいうタグのようなつもりで、ときどき名前を変えていてもいいかも。

xxxx-info.plistの Icon file にファイル名を追記する。(ファイル名をIcon.pngのままにするなら書いてなくても良い)
Localization native development region を Japan に。
Bundle identifier の yourcompany の部分を自分固有の名前に。




問題ないなら、次はDeveloper Centerへ行っての作業に成ります。

PR
【2011/05/31 05:08 】 | iPhone | 有り難いご意見(0) | トラックバック()
bugzilla
バグジラのページ(日本)
http://bugzilla.mozilla.gr.jp/

バグジラのページ(本家)
http://www.bugzilla.org/

バグジラ(Wikipedia)
http://ja.wikipedia.org/wiki/Bugzilla


Mozillaが使っているバグ管理システム。

使ってみたけど、欲しいところの機能はちゃんとそろっていて便利な感じ。
バグのseverityとpriorityを両方使うまでする必要は無いんじゃないかとか、
blockerって何?とか思ったけど、(どうやら、他のバグを直す前にまず直さなきゃ成らないバグ、ということみたい)
使い勝手は良さそう。
メールサーバがないと運用しづらいというところは気をつけないといけないけど。
ただ、自分で自分担当のバグを報告したときに自分にメールが来ないのは不便じゃないのかなと思った。
【2011/05/29 21:41 】 | Web系 | 有り難いご意見(0) | トラックバック()
gmailのエイリアス機能
gmailでは、

myaddress@gmail.com
というメールアドレスがあるとき、

myaddress+alies@gmail.com
という書き方をしても同じアドレスに届く。

エイリアスが自由に付けられるということだが、これが何の役に立つのかというと、
多分、自分がメールを受け取ったときのフィルターが正しくかけられるということではないかと思う。

メールの件名でフィルターをかけると、たまたま同じ文字列を含んでいた別のファイルまで巻き添えでフィルタリングされることもあるが、
メールアドレス自体に含んでいれば、そういうことが起こらない。
【2011/05/29 21:24 】 | Web系 | 有り難いご意見(0) | トラックバック()
mercurialバージョン管理からコンパイル、署名まで
よくある質問集。
http://mercurial.selenic.com/wiki/JapaneseFAQ
なかなか便利。
push,pullの概念とか、サーバにpushしたら自動でupdateがかかるようにする方法とかが書いてある。


///////////////////////////////
コミットする前に
pullする
hg pull ssh://username@XXX.jp//dir/dir/
ssh以下のオプションを書かないと、html認証で入ろうとしてしまう
先に、mercurialとは関係なくssh認証でログインしておく必要がありそう
updateする
hg update
 場合に依ってはマージを行う


/////////////////////////////////
コミットする
hg commit
コミットコメントを記述
a で編集モード
最終行を改行で終わらせ、
Esc :wq
で編集終了

サーバにプッシュ
hg push ssh://username@XXX.jp//dir/dir/trunk
先に、mercurialとは関係なくssh認証でログインしておく必要がありそう

サーバに入る
cd /dir/dir/trunk

hg update
*files updated,,,
と出ればOK


/////////////////////////////////
コンパイルする
cd trunk
javac -classpath lib/*.jar src/*.java -d ../bin
 この時点で、bin/*.classが更新されているはず

jarにまとめる
cd bin
jar cvf XXX.jar *.class YYY.jar
adding: ****と出る

署名
jarsigner -keystore XXXkey XXX.jar mykey
パスワード入力
 で、
 Warning: The signer certificate will expire in six month
と出たら成功。

実行してテストしてみよう。


【2011/05/24 02:59 】 | Web系 | 有り難いご意見(0) | トラックバック()
Swingスライダー追加
スライダーを追加する方法。


import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

class MyClass implements ChangeListener{
JSlider slider;

public void init(){
slider = new Slider(SwingConstants.HORIZONTAL, 1, 20, 3); //orientation, min, max, defaultValue
slider.addChangeListener(this);
}

@Override
public void stateChanged(ChangeEvent e){
if (e.getSource() == slider){
//....
}
}
};



簡単だね!

【2011/05/24 01:14 】 | Java | 有り難いご意見(0) | トラックバック()
swingでお絵描きソフトを作る
参考ページ
http://d.hatena.ne.jp/pyridoxin/20071231/1199065420


実際に保存する内容は、これになるらしい
private BufferedImage canvas;


マウスの動きに応じて線描
マウスイベントを受け取るには


import java.awt.event.MouseEvent;
import javax.swing.event.MouseInputListener;


class *** extends JPanel implements MouseMotionListener{ //リスナー実装

//リスナー登録
***(){
addMouseMotionListener(this);
addMouseListener(this);
}

//イベントのオーバーライド
@Override
public void mouseEntered(MouseEvent e) {} //範囲にマウスが入った
public void mouseExited(MouseEvent e) {} //範囲からマウスが出た
public void mouseMoved(MouseEvent e) {} //範囲内でマウスが動いた
public void mouseDragged(MouseEvent e){} //範囲内で、クリックしたままマウスが動いた
public void mousePressed(MouseEvent e) {} //マウスボタンを押した瞬間
public void mouseReleased(MouseEvent e) {} //マウスボタンを離した瞬間
public void mouseClicked(MouseEvent e) {} //マウスボタンをクリックした瞬間

}

【2011/05/21 14:13 】 | Java | 有り難いご意見(0) | トラックバック()
twitterAPIを使うには(途中)
twitter公式のAPIドキュメントページは以下。
http://apiwiki.twitter.com/w/page/22554679/Twitter-API-Documentation
http://dev.twitter.com/doc

日本語で参考になるWikiのページ
http://usy.jp/twitter/index.php?Twitter%20API#y369b038



主に、
public_timeline 全twitterの最新20件
home_timeline あるユーザのつぶやきと、フォローイングしてる人のつぶやき20件
friends_timeline あるユーザの友人(フォローイング)リスト
user_timeline あるユーザの最新つぶやき20件
がある。

Javaの場合、
例えば、public_timelineを使いたいときは、

String requestUrl = "http://api.twitter.com/1/statuses/public_timeline.xml";
URL accessURL = new URL(requestUrl);
URLConnection con = accessURL.openConnection();

とリクエスト送信すれば、全つぶやき(全世界のtwitter登録者のツイート)の最新20件がxml形式で取得できる。
(xmlの他、json,atom,rss形式が可能)

user_timelineを使いたいときは、ユーザの名前をmynameとすると、

String requestUrl = "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=myname";
URL accessURL = new URL(requestUrl);
URLConnection con = accessURL.openConnection();

とするとxmlで取得できる。

ここまでは非常に簡単。
認証が不要。


次に、home_timelineが欲しい場合。
これはOAuth認証が必要になる。

説明(公式英語)
http://dev.twitter.com/pages/auth

このページで、自分がtwitterAPIを使うアプリケーションを登録する。
http://twitter.com/apps/new

JavaでOAuth認証してtwitterAPIを使う参考ページ
http://blog.unfindable.net/archives/788


OAuthのライブラリ(.jar)をダウンロードして追加する。
OAuthCommunicationExceptionが発生して巧く行かず。

【2011/05/15 18:47 】 | Web系 | 有り難いご意見(0) | トラックバック()
JavaでHTTPリクエストの方法
単純にリクエストするだけなら、
URLConnection
を使うのがらくちん。

//リクエストURL作成
String requestUrl = "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=myname";
URL accessURL = new URL(requestUrl);

//接続
URLConnection con = accessURL.openConnection();

で、openConnectionから戻ってきたときは、すでにサーバからの返答がconに入っている。
con.getInputStreamをhtmlないしXMLで解釈すればよい。
openConnectionというメソッドを使っているが、closeConnectionというメソッドがあるわけではない。


basic認証とかするなら、
URLHttpConnection
を使う。

//URL,その他セット
URL url = new URL("http://www.debian.org/");
HttpURLConnection urlconn = (HttpURLConnection)url.openConnection();
urlconn.setRequestMethod("GET");
urlconn.setInstanceFollowRedirects(false);
urlconn.setRequestProperty("Accept-Language", "ja;q=0.7,en;q=0.3");

//接続
Urlconn.connect();

//接続解除
urlconn.disconnect();

ちなみに、中身を表示するなら
connectとdisconnectの間で

Map headers = urlconn.getHeaderFields();
Iterator it = headers.keySet().iterator();
System.out.println("レスポンスヘッダ:");
while (it.hasNext()){
String key= (String)it.next();
System.out.println(" " + key + ": " + headers.get(key));
}

System.out.println("レスポンスコード[" + urlconn.getResponseCode() + "] " +
"レスポンスメッセージ[" + urlconn.getResponseMessage() + "]");
System.out.println("\n---- ボディ ----");

BufferedReader reader =
new BufferedReader(new InputStreamReader(urlconn.getInputStream()));

while (true){
String line = reader.readLine();
if ( line == null ){
break;
}
System.out.println(line);
}

reader.close();

とする。

参考ページ
http://x68000.q-e-d.net/~68user/net/java-http-url-connection-2.html




【2011/05/15 17:23 】 | Java | 有り難いご意見(0) | トラックバック()
OpenGLESを使ったゲームの作成までの流れ
XCodeで

まず、新規プロジェクトの作成。
OpenGLES使用したプロジェクトを選択。



いったんビルド。
グラデーションのかかった四角形が上下に揺れる。




ついで、コードの書き換え。

最初からあるファイルの拡張子を.mから.mmに変更。

また、既存のプロジェクトからソースをコピー。
***AppDelegate.h/mm
***ViewController.h/mm
の4ファイル。
(main.mm, EAGLView.h/mm は不要)

ビルドエラーが起きるので、不要なインクルードは削除。
また、必要なファイルがいくつか必要になるのでコピー。
debug.h/mm
common.h/mm
ios_interface.h/mm
GLDraw.h/mm
GameMain.h/mm

さらに、シェーダも書き換える。
Shader.vsh
Shader.fsh

そして忘れがちなところで、
coregraphics.frameworkを追加する。


この状態でビルド。


すると、ファイル読み込みに失敗して終了する。


読み込みが必須である、
white.jpg
earth.jpg
をプロジェクトに追加。


この状態でふたたび実行。

すると、画面が(0.5,0.5,1.0)一色に表示される。
これで完成!




コードをコピーしないで、プロジェクト生成時に自動でできるようにしたい。
また、切り分けがちゃんとできるよう、ファイルを芋づる式にコピーする必要がないようにしたい。

例えば、
デバッグ出力などは、
DEBUG_PRINTF()
を使うと、debug.hをインクルードする必要がでてしまうので
#if DEBUG
NSLog();
#endif
とするとか。
数は多くないし、そんなに読みづらくはならないだろう。

io_iosがInput.hを見ているが、これは逆にすべき

【2011/05/14 03:38 】 | 自作エンジン | 有り難いご意見(0) | トラックバック()
iAdを組み込む
iAdを組み込む方法。


まず、iOS4以降であること。

XCodeを開く

iAdフレームワークを追加
プロジェクトビュー→Frameworks→右クリック→追加→既存のフレームワーク→iAd.framework

viewController.h に以下のように追記

#import

@interface mylViewController : UIViewController
{
//iAd
ADBannerView *adView_;
}


viewController.mm に以下のように追記

- (void)viewDidLoad
{
//super
[super viewDidLoad];

//iAd
adView_ = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView_.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
[self.view addSubview:adView_];
}

- (void)viewDidUnload
{
//iAd
[adView_ removeFromSuperview];

//super
[super viewDidUnload];
}


で、オシマイ。なんとこれだけ。
1分で終わる。

【2011/05/08 16:24 】 | iPhone | 有り難いご意見(0) | トラックバック()
<<前ページ | ホーム | 次ページ>>