私はとくったーの事業のなかのとくったーアプリを制作している.先日β版を配ったりもした.詳しくはリンクを見て下さい.
アプリの出来はまだまだ動作が不安定でアプリが落ちる.最初から作り直していいアプリを作りたい.しかし,私は大学4年だ.卒論もある.もう一つバイトでアプリを頼まれている.どうしたものか…後輩に任せようかな^^
アプリはチームで作っていた.チームでものを作るのはこんなにもむずかしいのかと思った.もう少しノウハウを勉強しないと.会社とかだとちゃんとあるのだろうが俺たちにはなかった.意見を出すだけだしてまとまらなかった…
ドラッガーとか読んだほうがいいのかなぁ.iTunesで購入しようか
また,自分はまだまだだと痛感した.プログラムのプの字もわかってないね.もっと勉強しよう.キレイなコードというものを書いてみたい.
とりあえずこれもうすぐ発売されるので頑張る
以上.
2010年10月15日金曜日
2010年10月5日火曜日
2010年9月30日木曜日
2010年9月16日木曜日
学歴早見表のアップデート目標
最近学歴早見表をアップデートしようと思っているのだけどバイトやら学業で全然手をつけてない.というよりアップデートするヤル気が出ない^^;
そこで目標立ててとりあえず自分を追い込みます
目標:10月5日までに最新バージョンを作成する
内容:浪人、留年対応
これでどうでしょうか.9月は発表会があってすべて頭がそっちに行ってますのでムリっす^^;
なのでこれで勘弁してください.作成するのであって審査が通るのがいつになるかわからないですがよろしくお願いします.
派生アプリも少し考え中です.
2010年7月23日金曜日
if文,for文など・・・
if文
if文の形は
if(条件式){
条件式に合う場合の処理
}else{
条件式に合わない場合の処理
}
です.ifとはもし・・・ならば・・・という意味で
もし条件式に合うならば・・・をしろということです.
ちなみに条件式に当てはまる場合は1(真:true)を当てはまらない場合は0(偽: false)を返します.
条件式は算術演算子ではなく等価、不等価、関係演算子を使います
以下は条件式で使われる演算子です
等しければ、という条件は = ではなく == とイコールがふたつ続くことに注意してください
= は算術演算子の「代入」なので意味が違います。条件式で「等しければ」という意味の演算子は == です
例
if(i == 2){
NSLog(@"2になった");
}else if(i == 3){
NSLog(@"3になった");
}else{
NSLog(@"それ以外!!");
}
for文
for (初期化;条件式;変化式){
実行する処理1;
実行する処理2;
実行する処理3;
...;
}
例を見せたほうが早いと思うので
例
for (j = 0; 10 > j; j++) {
NSLog(@"j:%d",j);
}
出力結果
j:0
j:1
j:2
j:3
j:4
j:5
j:6
j:7
j:8
j:9
if文の形は
if(条件式){
条件式に合う場合の処理
}else{
条件式に合わない場合の処理
}
です.ifとはもし・・・ならば・・・という意味で
もし条件式に合うならば・・・をしろということです.
ちなみに条件式に当てはまる場合は1(真:true)を当てはまらない場合は0(偽: false)を返します.
条件式は算術演算子ではなく等価、不等価、関係演算子を使います
以下は条件式で使われる演算子です
演算子 | 内容 |
---|---|
a <> | aがbより小さければ |
a <= b | aがbと同じか小さければ |
a > b | aがbより大きければ |
a >= b | aがbと同じか大きければ |
a == b | aとbが等しければ |
a != b | aとbが等しくなければ |
((a) && (b)) | 式aと式bが真ならば |
((a) || (b)) | 式aまたは式bが真ならば |
!a | aが真なら偽、偽なら真 |
等しければ、という条件は = ではなく == とイコールがふたつ続くことに注意してください
= は算術演算子の「代入」なので意味が違います。条件式で「等しければ」という意味の演算子は == です
例
if(i == 2){
NSLog(@"2になった");
}else if(i == 3){
NSLog(@"3になった");
}else{
NSLog(@"それ以外!!");
}
for (初期化;条件式;変化式){
実行する処理1;
実行する処理2;
実行する処理3;
...;
}
例を見せたほうが早いと思うので
例
for (j = 0; 10 > j; j++) {
NSLog(@"j:%d",j);
}
出力結果
j:0
j:1
j:2
j:3
j:4
j:5
j:6
j:7
j:8
j:9
HelloWorldのコード
HelloKouchiViewController.h
#import
@interface HelloKouchiViewController : UIViewController {
// IB(Interface Builder)上のコントロールと結びつけるためのアウトレットを宣言
IBOutlet UILabel *label;
IBOutlet UIButton *helloButton;
// バラーメータの宣言
NSInteger i;
}
// プロパティ名を宣言
@property(nonatomic, retain) UILabel *label;
@property(nonatomic, retain) UIButton *helloButton;
/*
IBActionと記述することによってInterface Builderでこのメソッドactionとしてを認識できるようになります
helloButtonボタンを押した時のアクション
*/
- (IBAction) helloAction;
@end
HelloKouchiViewController.m
#import "HelloKouchiViewController.h"
@implementation HelloKouchiViewController
@synthesize label;// UILabel
@synthesize helloButton;// UIButton
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
i = 0;// 初期化
}
#pragma mark - IBAction
- (IBAction) helloAction{
if ( i % 2 == 0) {// !!!:もし i を 2で割ったときにあまりが0なら
self.label.text = @"Hello World!!";
NSLog(@"self.label.text:%@",self.label.text);
i++;// i = i + 1;
}else {
self.label.text = @"";
i++;
}
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
[label release];
[helloButton release];
}
@end
#import
@interface HelloKouchiViewController : UIViewController {
// IB(Interface Builder)上のコントロールと結びつけるためのアウトレットを宣言
IBOutlet UILabel *label;
IBOutlet UIButton *helloButton;
// バラーメータの宣言
NSInteger i;
}
// プロパティ名を宣言
@property(nonatomic, retain) UILabel *label;
@property(nonatomic, retain) UIButton *helloButton;
/*
IBActionと記述することによってInterface Builderでこのメソッドactionとしてを認識できるようになります
helloButtonボタンを押した時のアクション
*/
- (IBAction) helloAction;
@end
HelloKouchiViewController.m
#import "HelloKouchiViewController.h"
@implementation HelloKouchiViewController
@synthesize label;// UILabel
@synthesize helloButton;// UIButton
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
i = 0;// 初期化
}
#pragma mark - IBAction
- (IBAction) helloAction{
if ( i % 2 == 0) {// !!!:もし i を 2で割ったときにあまりが0なら
self.label.text = @"Hello World!!";
NSLog(@"self.label.text:%@",self.label.text);
i++;// i = i + 1;
}else {
self.label.text = @"";
i++;
}
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
[label release];
[helloButton release];
}
@end
2010年7月19日月曜日
UIActionSheetにUIPickerViewを組み込みたい
2010年7月17日土曜日
学歴早見表ver1.0をリムーブしました.
一旦学歴早見表ver1.0をリムーブしました.
レビューでのコメントは最もです.速やかに対処しユーザの要望がある程度クリアできたと思った時点でリリースしたいと思います.
レビューでのコメントは最もです.速やかに対処しユーザの要望がある程度クリアできたと思った時点でリリースしたいと思います.
2010年7月16日金曜日
2010年7月14日水曜日
2010年7月13日火曜日
URLから画像を表示させる
NSURL *url = [NSURL URLWithString: [imageUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *data = [NSData dataWithContentsOfURL: url];
[imageView setImage:[UIImage imageWithData:data]];
imageUrlは画像のURL。URLがNSString型なのでエンコードさせてNSData型に変換して
imageWithDataで表示させる。
しかし、これは激遅なので注意しましょう。
2010年7月11日日曜日
2010年6月26日土曜日
[Objective-C]プロトコル メモ書き
プロトコルはJavaでいうところのinterfaceだと思います。
説明としては、「実装が期待されてるメソッドの定義集」って感じでしょうか。
でもこの代理人の証さえあれば、 自分のメソッド内から呼び出したUIAlertViewのdelegateを自分自身(self)にすることで、ユーザーの反応結果を受け取ることができます
プログラマメモ2
説明としては、「実装が期待されてるメソッドの定義集」って感じでしょうか。
でもこの代理人の証さえあれば、 自分のメソッド内から呼び出したUIAlertViewのdelegateを自分自身(self)にすることで、ユーザーの反応結果を受け取ることができます
プログラマメモ2
autoreleaseとrelease
リリースのタイミングなどについて
・何回も繰り返されるループの中で、ローカル変数に対してautoreleaseを使うことは避ける
・autoreleaseを使ったコードを何度もループせざるを得ない場合には、NSAutoreleasePoolで適切な頻度で解放する
autoreleaseを使うと本当に遅くなる?という疑問を実測しながら検証中です
・何回も繰り返されるループの中で、ローカル変数に対してautoreleaseを使うことは避ける
・autoreleaseを使ったコードを何度もループせざるを得ない場合には、NSAutoreleasePoolで適切な頻度で解放する
autoreleaseを使うと本当に遅くなる?という疑問を実測しながら検証中です
メモリ管理
UIImage* img1 = [[UIImage alloc] initWithContentsOfFile:imgPath1];
UIImage* img2 = [[UIImage alloc] initWithContentsOfFile:imgPath2];
NSLog( @"A cnt %d %d\n", img1.retainCount, img2.retainCount );
imageView1.image = img1; //img1はここでretainされる
NSLog( @"B cnt %d %d\n", img1.retainCount, img2.retainCount );
imageView1.image = img2; //im1はrelease img2はretainされる
NSLog( @"C cnt %d %d\n", img1.retainCount, img2.retainCount );
imageView1.image = nil; //img2がreleaseされる
NSLog( @"D cnt %d %d\n", img1.retainCount, img2.retainCount );
[img1 release]; //ここでretainCount 0となり解放(dealloc)される
[img2 release]; //ここでretainCount 0となり解放(dealloc)される
==========出力結果========================
A cnt 1 1
B cnt 2 1 ←セットしたimg1がretainされてる
C cnt 1 2 ←img1はreleaseされ、セットしたimg2がretainされる
D cnt 1 1 ←img2がrelease、両方ともセットする前に戻る
セットしたオブジェクトの参照を解きたければ、nilをセットするとよい。(セットした先のクラスがreleaseの面倒までみてくれる)
参考文献iPhoneSDK + ObjectiveCにおけるメモリ管理のはまりところ
2010年6月25日金曜日
用語メモ
忘れやすいのでメモ
ガベージコレクション・・・プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。「ガベージコレクション」を直訳すれば「ゴミ収集」となる
アトミック・・・プロパティへのアクセスがスレッドセーフであるという意味
スレッドセーフ・・・あるコードがスレッドセーフであるという場合、そのコードを複数のスレッドが同時並行的に実行しても問題が発生しないことを意味する。
アクセサメソッド・・・オブジェクトの状態を取得または設定するインスタンスメソッドです。Cocoaの用語では、オブジェクトの状態を取得するメソッドを「getアクセサ」または「getter」、オブジェクトの状態を変更するアクセサを「setアクセサ」または「setter」と呼びます。「インスタンス変数にアクセスするメソッド」
ガベージコレクション・・・プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。「ガベージコレクション」を直訳すれば「ゴミ収集」となる
アトミック・・・プロパティへのアクセスがスレッドセーフであるという意味
スレッドセーフ・・・あるコードがスレッドセーフであるという場合、そのコードを複数のスレッドが同時並行的に実行しても問題が発生しないことを意味する。
アクセサメソッド・・・オブジェクトの状態を取得または設定するインスタンスメソッドです。Cocoaの用語では、オブジェクトの状態を取得するメソッドを「getアクセサ」または「getter」、オブジェクトの状態を変更するアクセサを「setアクセサ」または「setter」と呼びます。「インスタンス変数にアクセスするメソッド」
プロパティ
この自動的に付けられる名前以外に、自分で名前を指定することもできる。そのために使われるのが、属性のgetterおよびsetterだ。getterは読み込み、setterは書き込みのためのアクセサの名前を指定する。次のように使う。
@property (getter=isEnabled, setter=makeEnable:) BOOL enabled;
getterメソッドは、引数はなしで、プロパティの値を返すもの。setterメソッドは、プロパティの型の引数を1つ取り、返り値はvoid型になるものになる。注意してほしいのは、setterは引数を取るので、最後にコロンを付けておかなくてはいけないことだ。Objective-Cでは、引数は必ずコロンの後に来る。このコロンを忘れると、コンパイルが通らない。
参考文献ダイナミックObjective-C
2010年6月17日木曜日
2010年6月16日水曜日
2010年4月10日土曜日
URLスキーム
NSString *mailto = [NSString stringWithFormat:@"mailto:body=%@",
[textField.textstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [NSURL URLWithString:mailto];
[[UIApplication sharedApplication] openURL:url];
これでメールにいけます.
詳細は以下
mailto:info@example.com?subject=件名&body=本文
その他のURLスキームは
iPhoneで主婦の小遣い稼ぎ
でだいたい分かる
URLスキーム対応のアプリをつくるなら
強火で進め
を見ればわかる
俺は自アプリ→他アプリ→自アプリになるようにしたいんだがそこら辺がよく分からない。
他アプリにコールしてもらわなきゃいけないからムリなアプリもあるだろうがメールならイケるとおもうだけどな・・・
わかる方はいませんか?
UIViewアニメーション
animeViewを0.1から1.5の大きさにするアニメーション
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5f]; //1.5秒でアニメーションする
[UIView setAnimationCurve:UIViewAnimationCurveLinear];//等速度で進行します
[UIView setAnimationDelegate:self]; //デリゲート
[UIView setAnimationDidStopSelector:@selector(someAnimationDidStop:finished:context:)]; // アニメーション終了後
[UIView setAnimationRepeatAutoreverses:YES]; // リバース動作
CGAffineTransform transform1 = CGAffineTransformMakeScale(0.1, 0.1);
CGAffineTransform transform2 = CGAffineTransformMakeScale(1.5, 1.5);
[self.animeView setTransform:transform1];
[self.animeView setTransform:transform2];
[UIView commitAnimations];// 終わり
//アニメーション完了のイベント処理
- (void)someAnimationDidStop:(NSString*)animationID finished:(BOOL)finished context:(void*)duration {
NSLog(@"アニメーション完了");
}
参考文献------
スマッシュを作ってみた(1)
『支出管理』サポート
UIViewで手軽にアニメーションを実行する方法
iPhoneSDKのUIViewアニメーション
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5f]; //1.5秒でアニメーションする
[UIView setAnimationCurve:UIViewAnimationCurveLinear];//等速度で進行します
[UIView setAnimationDelegate:self]; //デリゲート
[UIView setAnimationDidStopSelector:@selector(someAnimationDidStop:finished:context:)]; // アニメーション終了後
[UIView setAnimationRepeatAutoreverses:YES]; // リバース動作
CGAffineTransform transform1 = CGAffineTransformMakeScale(0.1, 0.1);
CGAffineTransform transform2 = CGAffineTransformMakeScale(1.5, 1.5);
[self.animeView setTransform:transform1];
[self.animeView setTransform:transform2];
[UIView commitAnimations];// 終わり
//アニメーション完了のイベント処理
- (void)someAnimationDidStop:(NSString*)animationID finished:(BOOL)finished context:(void*)duration {
NSLog(@"アニメーション完了");
}
参考文献------
スマッシュを作ってみた(1)
『支出管理』サポート
UIViewで手軽にアニメーションを実行する方法
iPhoneSDKのUIViewアニメーション
2010年4月5日月曜日
ローカライズする
文字列出力部分にNSLocalizedString() を利用する
NSString* string = NSLocalizedString(@"hoge", @"comment");
@"hoge"が出力したい文字列で@"comment"が@"hoge"に対するコメントとなる。
Localizable.string ファイルを生成する
まず、翻訳ファイルLocalizable.stringを作成する。
Xcode>どのファイルでもいいのですがファイルの場所で右クリック>追加>新規ファイル
>Mac OS X「Resousers」>Strings File で名前を付ければ作成でる。
手動で作り上げることもでるが、便利なコマンドがある。
ターミナルでプロジェクトファイルがあるところで
genstrings -a $(find . -name "*.m")
をすればいい。-a をしないと上書き保存になってしまうので注意が必要。
Xcode に Localizable.string ファイルを取り込む
Xcode にドラッグ&ドロップして追加します。グループは Resource にでも入れておけばよいかと思います。Xcode に取り込んだ後、ローカライズの設定が必要です。Localizable.string ファイルを右クリックして「情報を見る」を選択します。表示されウィンドウの「一般タブ」の左下にある「ファイルをローカライズ可能にする」をクリックし ます。再度 Localizable.string の情報を見るを選択すると左下に「ローカリゼーションを追加」というボタンをあるのでクリックして追加したい言語を選択します。選択できるのは English, Japanese, French, German です。それ以外は手動で追加する必要があるようです。
翻訳する
Xcode から Localizable.string の下に出来ている言語ファイルを選択して翻訳したい言語ファイルを開いて編集していきます。このときに、NSLocalizedString() でコメントを入れておくと
/* comment */
"hoge" = "hoge";
"hoge" = "hoge";
となっているはず。
これをJapaneseだと
/*comment*/
"hoge" = "ホゲ";
"hoge" = "ホゲ";
に変更したりすればいいかと思う。
注意事項
Localizable.string ファイルは UTF-16 で保存しなければいけません。iPhone シュミレータではローカライズされているのに、実機でローカライズされていないときはだいたい文字コードの問題が多いです。
2010年3月25日木曜日
Macのアプリケーションについて
Macのアプリはたくさんありますが私がおすすめするアプリを紹介したいと思います。というか私が入れているやつを紹介するので良さそうなやつは入れてみてください。
Growl- これがあってのMac!!有無を言わずに入れてみてください。ついでにGrowlMailもよろしく
動画
MPlayer - メディアプレイヤー。10秒早送りや巻戻しができるのが好き
VLC - メディアプレイヤー。あんまり使っていない
Perian - これさえ入れておけばだいたいのコーデックが再生可能なQuickTimeコンポーネント
Flip4Mac - 拡張子のwmvとwmaが見れるようになれます
Twitter
夜フクロウ - twitterやるならこれが簡単で便利だと思う
Tweetie - 私は副垢を持っているので副垢はこれを使っています
開発
Xcode - ソフトウェアを開発するためのアップルの統合開発環境 (IDE) 。iPhoneアプリ作るんならこれを入れろ!!
eclipse - 統合開発環境(IDE)の一つ。IDEの中ではおすすめだと思いますが機能がありすぎて私は使いこなせていません
CotEditer - テキストエディタ。Macではmiが有名らしいけど私はこれを進めておく。何かと設定できていいはず
ブラウザ
Firefox - インターネットブラウザ。これを知らないやつはいないでしょ
Google Chrome - インターネットブラウザ。上に同じ
BathyScaphe - 2ch用のブラウザ。2ch見る人はどうぞ
IM
Skype - P2P技術を利用したインターネット電話サービス。友達との連絡にどうぞ
Adium - インスタント・メッセンジャサービスをまかなってくれます
iTunes
iTunes - とりあえず入れときましょ
LyricsMaster - 歌詞を見つける。iTunesと組み合わせて使用
オンラインストレージ
Dropbox - オンラインストレージ。無料で2GBだけど十分だろ。物足りなかったらお金払ってください
Evernote - メモ管理用システム。複数台に入れておけば共有できるのでよい
デスクトップカスタマイズ
GeekTool - デスクトップカスタマイズツール
NerdTool - デスクトップカスタマイズツール。GeekToolとかなり似ています。お好きなほうをどうぞ
DockLibrary - dockカスタマイズツール。暇な方はどうぞ
その他
Thunderbird - メーラー。MacにはMail.appというメーラーがデフォルトで入っているのでそっち使ったほうがいい気がする
Cyberduck - FTPクライアント
DiskAid - iPhone/iPod touch内のファイルをエクスプローラ風に管理できる。私はi文庫アプリの時だけ使用した
Growl- これがあってのMac!!有無を言わずに入れてみてください。ついでにGrowlMailもよろしく
動画
MPlayer - メディアプレイヤー。10秒早送りや巻戻しができるのが好き
VLC - メディアプレイヤー。あんまり使っていない
Perian - これさえ入れておけばだいたいのコーデックが再生可能なQuickTimeコンポーネント
Flip4Mac - 拡張子のwmvとwmaが見れるようになれます
夜フクロウ - twitterやるならこれが簡単で便利だと思う
Tweetie - 私は副垢を持っているので副垢はこれを使っています
開発
Xcode - ソフトウェアを開発するためのアップルの統合開発環境 (IDE) 。iPhoneアプリ作るんならこれを入れろ!!
eclipse - 統合開発環境(IDE)の一つ。IDEの中ではおすすめだと思いますが機能がありすぎて私は使いこなせていません
CotEditer - テキストエディタ。Macではmiが有名らしいけど私はこれを進めておく。何かと設定できていいはず
ブラウザ
Firefox - インターネットブラウザ。これを知らないやつはいないでしょ
Google Chrome - インターネットブラウザ。上に同じ
BathyScaphe - 2ch用のブラウザ。2ch見る人はどうぞ
IM
Skype - P2P技術を利用したインターネット電話サービス。友達との連絡にどうぞ
Adium - インスタント・メッセンジャサービスをまかなってくれます
iTunes
iTunes - とりあえず入れときましょ
LyricsMaster - 歌詞を見つける。iTunesと組み合わせて使用
オンラインストレージ
Dropbox - オンラインストレージ。無料で2GBだけど十分だろ。物足りなかったらお金払ってください
Evernote - メモ管理用システム。複数台に入れておけば共有できるのでよい
デスクトップカスタマイズ
GeekTool - デスクトップカスタマイズツール
NerdTool - デスクトップカスタマイズツール。GeekToolとかなり似ています。お好きなほうをどうぞ
DockLibrary - dockカスタマイズツール。暇な方はどうぞ
その他
Thunderbird - メーラー。MacにはMail.appというメーラーがデフォルトで入っているのでそっち使ったほうがいい気がする
Cyberduck - FTPクライアント
DiskAid - iPhone/iPod touch内のファイルをエクスプローラ風に管理できる。私はi文庫アプリの時だけ使用した
登録:
投稿 (Atom)