iPhoneアプリ開発学校に通う生徒のおおまかな学習日報

Objective-C初心者。iPhoneアプリ開発学校に通う落ちこぼれです。授業の内容を記録しているのですが時間の都合でおおまかに書いてます。投稿内容は参考にしちゃだめです。

【月曜日】ムービーの再生のつづき

睡眠時間8時間くらい。

先週の金曜日は学校をお休みしました。
バックグラウンドタスクの続きとムービーの再生の勉強をしたらしい。

AppDeligate.mの意味について生徒から質問がきたらしく先生の解答があったのでメモメモ。(早くてついていけなかった)
AppDeligateはアプリケーション自体のデリゲート先のクラス。そっち系はAppDeligate.mに書くらしい。
ViewController.mは無くても大丈夫だけどAppDeligate.mはViewController.mのデリゲートらしい。
UIApplicationはIOSフレームワークの中で勝手にできているものなんだけど、アプリケーションに対してイベントが発生したときにUIApplicationに対するデリゲート。
デリゲートを使うとイベントを感知したりアプリがバックグラウンドにいったことを感知したりできる。
らしい。うーん。


で、ムービー再生の授業の続き。
ムービーを再生するには、「MediaPlayer.framework」が必要。

先週の金曜日にHTTP通信やテーブルビューなどのいろんな応用を含んだムービーを再生する課題をやっていたらしく、まだ途中らしく、その続きをよーい、どん。

悩み中。。。

で、午後の授業開始。
いろんな応用がパッと思い出せず苦戦中。

タイムリミットが来てしまい、先生の解説が始まった。
わからなすぎてヤバい!
一日休むだけでこのダメージのデカさ…
ぎゃふん。
そして、眠い。たくさん寝たのに眠い。


次にUIViewアニメーションの勉強。
教科書に記載されたコードを打ってるところで本日の授業終了。


以下、要復習。
・テーブルビューを復習しましょう(配列を使ったやり方と使ってないやり方)

【木曜日】サウンドの再生のつづきとバックグラウンドタスク

睡眠時間5時間くらい?

▼昨日、居残りしてここまでやった 課題はこれで完成(黒い鍵盤のほうを作るのは任意で)
f:id:jaam:20131024144418p:plain

-(void)viewWillLayoutSubviews

は、実機を横にしたときの情報をきちんと得るためのメソッド?なのかな?

そして、先生の解説。

▼画面の向きでおかしいことが起こったここを確認したほうがいい
f:id:jaam:20131024144424p:plain

▼ファイルが無いような雰囲気になったらここを確認したほうがいい
f:id:jaam:20131024144429p:plain

先生の作ったコードではNSArrayで”ド”から”ド(高い)”までの配列を作ってfor文を使っている。
同じことの繰り返しだもんね。
難しいので私は長々とコードを書いている。


話は変わるけど、家のxcodeとのバージョンの違いでプロジェクトが開けなくなったときはここを確認するらしい。

▼ここを確認
f:id:jaam:20131024144435p:plain

▼あと、たしか、ここも確認
f:id:jaam:20131024144440p:plain


話を戻して、黒い鍵盤のバージョンは先生の作ったコードであとで確認してみること。


次に、バックグラウンドタスクとローカルノティフィケーションの勉強。

アプリを使っていてホームボタンを押すとアプリがバックグラウンドに移る。
バックグラウンドにいるということはメモリを持っているし、すぐに復帰できる状態になっている。らしい。

-(void)didReceiveMemoryWarning

というメソッドはメモリが少なくなった際に呼び出される。
お行儀のいいアプリは使ってないアプリを破棄したりするらしい。

普通のアプリケーションはバックグラウンドでずーっと長く動けないらしい(音楽再生とかナビとか一部除く)。
10分以上は動けないらしい。

で、教科書に記載されたコードを打つ打つ打つ。

打ち終えたけど実行すると落ちてしまうので先生に教えてもらったり、お昼休みに友達に教えてもらったりしてできた!

▼できた! 本題はここではないので地味な画面です
f:id:jaam:20131024144445p:plain

▼ホームボタンを押してアプリをバックグラウンドへ持ってくと、通知が出る
f:id:jaam:20131024144450p:plain

▼でもって、通知センターに通知が残る
f:id:jaam:20131024144455p:plain


その他、通知に音を付ける勉強や30秒後に通知と音を出す勉強をしました。

【注意点】
サウンドのファイルを入れ替えした場合はアプリをアンインストールしましょう。削除したはずの音がまだ再生できてしまうので。

授業終了。



以下、要復習。
・黒い鍵盤をつけてみる

【水曜日】サウンドの再生

睡眠時間7時間。
昨日は学校を休みまして今日は午後から出席してます。
最近、たるんでおります。


サウンドの再生の勉強。
教科書に記載されたコードを打つ打つ打つ。

▼できました BGM再生/停止をタップすると軽快なEマイナー調(てきとうに言ってます)の音楽が流れました
f:id:jaam:20131023150319p:plain


次に長めの曲を再生する勉強。
ボタンをひとつ増やしました。

▼MP3再生ボタンをタップするとショパンのノクターンとやらが流れます
f:id:jaam:20131023150326p:plain

▼コンソールに秒数を出したりも勉強しました
f:id:jaam:20131023150332p:plain


次にピアノを作る課題。よーい、どん。

▼ここまでできた 音も鳴ったけど
f:id:jaam:20131023150344p:plain

で、-(void)viewWillLayoutSubviews を使ってなにかするらしいんだけどよくわからない…

本日の授業終了。
続きは明日わかる はず。

【月曜日】カメラとフォトアルバムの続きとアドレス帳へのアクセス

睡眠時間5時間半。
午前の授業開始。

写真にフレームをつける(プラス、文字も入れる)勉強の課題の続き。

▼できました 写真に秋のフレームと「香り高い」という文字が重なった
f:id:jaam:20131021145640p:plain


次に、アドレス帳へのアクセスの勉強。
アドレス帳へのアクセスには、AddressBook.frameworkを使うそうです。
あと、AddressBookの利用時にはCoreFoundation(FoundationをC言語で記述し直したもの)が出てくるそうな。
うーん、わかったようなわからないような。

そして配られたプリント用紙に書かれたコードを打つ打つ打つ。
打ち終わったけどやってる内容がよくわからない…


午後の授業開始。
今度は教科書に記載されたコードを打つ打つ打つ。

▼こんなん出てきました(懐かしいと思う人はいるかな…)
f:id:jaam:20131021145650p:plain

▼クリックするとアラートが(シミュレーターでは電話できないので)
f:id:jaam:20131021145656p:plain


次に、アドレス帳ユーザーインターフェースフレームワークという勉強。
配られたプリント用紙に書かれたコードを打つ打つ打つ。

▼今回はクラスは作らないのでこれを選択します
f:id:jaam:20131021145728p:plain

▼こんなん出ました
f:id:jaam:20131021145808p:plain

▼タップするとこういう画面が出た ん?表示される項目が減ってる?
f:id:jaam:20131021145759p:plain


詳細は明日。
授業終了。



以下、要復習。
・キャストってなんだっけ?

【木曜日】位置情報の取得の続きとカメラとフォトアルバム

睡眠時間5時間くらい。眠い。
午前の授業開始。

昨日やった位置情報の2つのピンを画像にしてみるの巻。
一部メソッドを追加した。

▼こんなかんじ。でけーし!
f:id:jaam:20131017144426p:plain

▼タップするとこんなかんじ
f:id:jaam:20131017144434p:plain

▼こっちもタップ
f:id:jaam:20131017144440p:plain


次に、カメラとフォトアルバムの勉強。
教科書のコードを打つ打つ打つ。
このコード、実は、ものすごく珍しく家で事前に打ってきたというのに、ファイルを保存する場所を間違えたようで見当たらず…
せっかく打ったのに悔しい!

午後の授業開始。
さっきの続き。

▼今回はiPadにも対応させるためデバイスをユニバーサルに変更する
f:id:jaam:20131017144448p:plain

▼でけました
f:id:jaam:20131017144455p:plain

▼カメラをタップするとこうなります。シミュレーターではカメラは動作しないらしい。
f:id:jaam:20131017144502p:plain

▼フォト読み込みをタップすると写真が選べる
f:id:jaam:20131017144509p:plain

▼選択した写真(これは画像だけれど)がでてきた
f:id:jaam:20131017144516p:plain

あとは、フォト書き込みをタップすると写真がフォトライブラリーに保存されました。


▼わー、ウトウトしていたら画面が… 寝不足です
f:id:jaam:20131017144522p:plain


次に、読み込んだ写真に画像を合成する勉強。
ソースをコピペする。

▼できたできた。手前の茶色いやつ。意外とかわいいではないか
f:id:jaam:20131017145748p:plain

▼うんうん、かわいいので保存しとこう
f:id:jaam:20131017145755p:plain


次に、写真にフレームをつける勉強の課題よーい、どん。
と、ここで途中で授業終了。

うーん、眠かった。



以下、要復習。
・リークってなんだっけ?

【水曜日】位置情報の取得

午前は台風の影響で遅刻して午後の授業から出席しました。

位置情報の取得の勉強。
午前中は教科書のソースを打ってその解説を受けたらしい。
そして今はそのソースにプラスして、以前教わったマップビューを追加してみるの巻。
少しだけ隣人に教えてもらって解きました。

▼こげなかんじ(心はまだ朝霧JAMなのね…的な)
f:id:jaam:20131016154111p:plain

※あ、これをやるときはシミュレーターのデバッグの位置を”位置情報をカスタマイズ”にすること ね

過去にやったコードをコピってくるのにも結構慣れたなぁ。
今更ながらどこらへんを持ってくればいいかがわかってきたぞ。

次に、マップの上に目印を付けてみるの勉強。

▼目印を立てた
f:id:jaam:20131016154119p:plain

▼もう一本立てた
f:id:jaam:20131016154152p:plain


てなかんじで授業終了。
短時間…


ここでエラーのメモを書いておきます。

↓というエラーが出た

'Invalid Region <center:+138.72777800, +139.69842100 span:+0.00600000, +0.00600000>'

↓そしたら、ここが間違ってた。どっちも緯度にしているので怒られた!緯度が書いてない!そんな細かいことで怒るのか。

coordinate.latitude =138.727778;
coordinate.longitude =139.698421;


↓これは「かぶってますよ〜」という意味らしい

Redefinition of 'coordinate'

あっという間に授業終了した。
今週はあと1日行けば週末だったりして。
ラクぅ〜♪

【火曜日】加速度センサーの続き

睡眠時間7時間。

加速度センサーの続きから。
手振れなどにより一瞬だけ力がかかってしまうのを除去するのがローパスフィルタ。
常にかかっている重力などの影響を除去するのがハイパスフィルタ(強く振ると感知してくれる)らしい。

↓こういうコードを入れた

// 加速度通知時に呼ばれる
-(void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration {
    
    // 加速度にローパスフィルタをあてる
    _aX=(acceleration.x*FILTERING_FACTOR)+(_aX*(1.0-FILTERING_FACTOR));
    _aY=(acceleration.y*FILTERING_FACTOR)+(_aY*(1.0-FILTERING_FACTOR));
    _aZ=(acceleration.x*FILTERING_FACTOR)+(_aZ*(1.0-FILTERING_FACTOR));
    
    // ハイパスフィルタ適用
    float ahX = acceleration.x -_aX;
    float ahY = acceleration.y -_aY;
    float ahZ = acceleration.z -_aZ;
    
    if(ahZ > 2) {
        NSLog(@"Z軸で2を超えた!");
    }
    
    // ラベルの更新
    NSMutableString* str=[NSMutableString string];
    [str appendString:@"加速度センサーだよ\n\n"];
    [str appendFormat:@"X軸加速度:%+.2f\n",_aX];
    [str appendFormat:@"Y軸加速度:%+.2f\n",_aY];
    [str appendFormat:@"Z軸加速度:%+.2f\n\n",_aZ];
    [str appendFormat:@"ハイパス後X:%+.2f\n",ahX];
    [str appendFormat:@"ハイパス後Y:%+.2f\n",ahY];
    [str appendFormat:@"ハイパス後Z:%+.2f\n\n",ahZ];
    [str appendFormat:@"端末の向き:%@",_orientation];
    _label.text=str;
    [self resizeLabel:_label];
}

▼こういった画面
f:id:jaam:20131015151134p:plain

実機を強く振った際に床に落とした生徒がいたぞw


次に、加速度センサーを使って強く振られた場合のみに画像を変化させる課題。
(そんでもって、変化させた画像を3秒間表示させたままにする。あと、30回ほど強く振ったら何かイベントを表示させる)
よーい、どん!

…………………しばらく考えたけどわからなかったので先生にヒントをもらった。
そのあとは、自力で解けた。

▼最初の画面
f:id:jaam:20131015151206p:plain

▼強く振ると(ハイパスフィルタをかけた値(X軸、Y軸,Z軸いずれか)が1.3を超えたら)画像が変わる
f:id:jaam:20131015151213p:plain

▼3秒たつと画像が戻る(私はaccelerometerメソッドに入る回数をカウントして、その数が約3秒間になるようにしたりしたけど、もっとスマートなやり方がありそう)
f:id:jaam:20131015151220p:plain

▼30回強く振ったらイベントが(文字が表示されるようにした…地味だけど)
f:id:jaam:20131015151226p:plain


次に、iPhoneの回転に関係するUIViewControllerのメソッドの勉強。
iPhoneを90度回転したときに画面の中のレイアウトをどうするか、とか、そこらへん。


終了時間がきた。
今日はこれまで。