昨日行われたJavaScriptゲーム製作勉強会で話してきました!
定員100で満員となったようで大盛況でした。
そんな中お話させてもらい、非常に光栄です。
@hakoberaさん、リクルートエージェントさんありがとうございました。

内容はFPゲームをSP化したとき溜まった、Canvasのノウハウについてです。
結論としてはCanvas結構いけるぜ!って感じです。

講義で発表したデモも公開できれば、近日中に公開したいと思います。

【JS】単純なクラスの実装

| | Comments (0) | TrackBacks (0)
ずいぶんとブログを更新してなかった。。
職場も変わってから半年以上経過しました。。
以前はFlashどっぷりでしたが、最近はJSどっぷりです。
というわけで、JSネタ。

JSのクラス風実装っていくらでもあるし、ライブラリも沢山あるけど、
プライベートメソッド、パブリックメソッド、プライベート変数とかを含んだ物をさくっと実装したいよって時の解決法。
ちなみに継承は考えてません。
そういう複雑なOOPを実装するのであれば、def.jsとか使えばいいと思う。


var ClassA = function(){
    this.initialize.apply(this, arguments);
}
ClassA.prototype = (function(){
    //静的プライベート変数の定義
    var _propA = 0,
          _propB = "B";

    function initialize(prop){
        console.log(prop);
    }

    function _methodA(){
        console.log("private methodA");
    }

    function methodB(){
        console.log("public methodB");
    }

    //publicメソッドにしたい物だけオブジェクトとしてリターン
    //リターンするオブジェクトに含まれない関数はプライベートメソッドになる
    return {
        initialize : initialize,
        methodB : methodB
    };
}());
いままでprototypeに直接オブジェクト突っ込んだりしてたけど、即時関数でくるめばスコープ持てるから静的プライベート変数定義できるじゃん!ってだけの話です。
this._methodAとかでプライベートメソッドを呼び出すことはできません。
ちなみにこのプライベート変数は静的変数なので、インスタンス間で共有されるのでご注意を
久しぶりに技術ネタ。
iPhoneでRSSを読み込むやつを作ってるんだけど、NSURLConnectionのエラーハンドリングってどうすればいいのかいまいち分からなかったのでまとめます。



まずNSURLConnectionのdelegateには主に以下のメソッドがあります。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
HTTPヘッダーを取得したら呼び出される

-(void) connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
データを取得するたびに呼び出される

-(void)connectionDidFinishLoading:(NSURLConnection*)connection
データの取得がすべて終了したら呼び出される

-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
エラーが発生した場合に呼び出される




さて、エラーについては大まかに以下のものが考えられると思います。

1) URLが間違っている(ドメイン部分が間違っている) 
2) URLが間違っている(ドメイン以下が間違っている)
3) そもそもネットワークが利用できない状況
4) その他


4)は置いておいて、ひとつづつ見ていこうと思います。


1) URLが間違っている(ドメイン部分が間違っている)
→他のdelegateメソッドは呼ばれずに、didFailWithErrorが呼ばれる。

2) URLが間違っている(ドメイン以下が間違っている)
→404のレスポンスを受け取るため、didFailWithErrorは呼ばれずに他のdelegateメソッドが呼ばれる。

3) そもそもネットワークが利用できない状況
→他のdelegateメソッドは呼ばれずに、didFailWithErrorが呼ばれる。



以上からエラーハンドリングをする箇所が二カ所必要であることが分かります。

1. didReceiveResponse内でhtmlヘッダのチェック
2. didFailWithError内でのエラーチェック



ではどのように実装するか。

1. didReceiveResponse内でhtmlヘッダのチェック
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
	int statusCode = [((NSHTTPURLResponse *)response) statusCode];
	if(statusCode >= 400){
		//エラーハンドリング
	}
}
didRecieveResponse内でヘッダを取得し、値に応じてエラーハンドリングします。


2. didFailWithError内でのエラーチェック
-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error{
	NSLog(@"Connection failed! Error - %@ %d %@",
		  [error domain],
		  [error code],
          [error localizedDescription]);
	
	//ネットワークに接続されていない時
	if([error code] ==  NSURLErrorNotConnectedToInternet){
		[self cancelByConnection];
		return;
	}
}
上記ソースではネットワークに接続されていない時のエラーしかハンドリングしてませんが、
[error code]をNSURLErrorの定数で振り分けることでハンドリング可能です。

didFailWithError内でどうエラーハンドリングすればいいか、なかなか情報がなくて苦労しました。。

【Mac】MacでJUDE Communityを使う

| | Comments (0) | TrackBacks (0)
僕は設計時にUMLのモデリングをする時には、
JUDE Communityを使ってるのですが
家の環境はMacなのでMacでも使いたいなーと思っていたところ、
方法を発見しました!

http://seino-takahiro.blogspot.com/2009/02/jude-mac-os-x.html

jude.jpg

素晴らしい!
完璧です!
なんかJUDEからastahになったみたいだけど、judeファイルも問題なく開けます。

javaだからマルチプラットフォームではあるんだろうけど、ここまで問題ないとは。。
すげーな!感動した!


2009年のライブまとめ

| | Comments (0) | TrackBacks (0)
明けましておめでとうございます!
忘れないうちに去年行ったライブまとめてみた。

今年は自分もライブしないとな。
ライブ1年してないよ。。



2/18 LIQUIDROOM
SCREAM OUT IN JAPAN 2009

2/24 日本武道館
ERIC CLAPTON JAPAN TOUR 2009

3/5 赤坂BLITZ
IN FLAMES / LAMB OF GOD / UNEARTH

4/4 横浜アリーナ
Mr.Children Tour 2009 ~終末のコンフィデンスソングス~

5/15 日本武道館
Mr.Children Tour 2009 ~終末のコンフィデンスソングス~

6/13 CLUB CITTA'
重音楽祭

8/7 ~ 8/9 千葉マリンスタジアム&幕張メッセ
SUMMER SONIC 09

10/18 幕張メッセ
Loud Park 09

12/27 東京ドーム
Mr.Children DOME TOUR 2009 ~SUPERMARKET FANTASY~



ミスチルの年だったなぁ

テレビ出演w

| | Comments (0) | TrackBacks (0)
中本エバンジェリストchikathreesixです。

ついにやりました! 蒙古タンメン中本を食べている姿がテレビに出ました(笑)
自称エバンジェリストとしてこれほど名誉なことはないですね。

先週の日曜日に高円寺店がオープンして、そのときに撮影されたのです。
放送は22日でした。
一瞬だったようですが、うまそうに食ってるでしょ?w

6fkj.jpg

Loud Park 09

| | Comments (0) | TrackBacks (0)
久しぶりの更新!
まぁひさしぶりなんで、Loud Parkのことでも書きますよ。

こないだの日曜日にLoud Parkに行ってきたんだが、例年通りMetalの祭典とだけあって客はメタラーしかいないね!
9割くらいが黒T来てるのには吹いたw(自分も含む)

今回びっくりしたのが、サークルピットの真ん中に安全地帯ができる場合があるということ。
これにはカルチャーショックだったね。。
なんかノリが若すぎやしないか?
Slayerとかでそれやられると、さすがにしらけるからやめて欲しい。
個人的には殺伐とした感じのサークルピットの方が楽しめるんだが。。

サークルピットって何って方の為に動画をアップしたよ!
※とてつもなくうるさいのでお気をつけて

久しぶりにObjective-Cをいじった。
マイコミの記事を参考にしていたんだけど、addObserverってのが出てきてハマった。。。

厳密には違うけど、ASで言うところのaddEventListener的な使い方ができる。
NSObjectで実装されているので、なんかしらのクラスを継承してれば使えるっぽい。

タイトルの「キー値監視」とは、あるオブジェクトのプロパティの値が変化した事を他のオブジェクトに通知すること。
addObserverはその変化の通知を受け取るオブザーバを登録する際に利用するメソッドのようだ。




キー値監視を行うには、
1、addObserverで監視対象のオブジェクト、監視したいプロパティ、監視するオブジェクトを監視されるオブジェクトに登録。
メソッドは以下。

- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context

・observer
イベントを受け取る人。通知を受け取るobserveValueForKeyPathというデリゲートメソッドを実装しておく必要がある。

・forKeyPath
いろんなところで「キー値」だとかいう説明がされてたけど、要はイベントを発行するオブジェクトのプロパティ名だと思う。「キー値」じゃなんだかわかんねーっつーのw

・options
変化する前の値を受け取るか、変化した後の値を受け取るか

・context
なんだかわからないっすw


2、オブザーバにてプロパティの変化を受け取るメソッドを定義
- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object
                        change:(NSDictionary*)change context:(void*)context


3、setValueを使ってプロパティの値を変更する




これでできるはずなんだけど、どうやらデフォルトで自動通知がオフになっているらしいので、以下メソッドをオーバーライドしてYESを返す必要があるみたい。

+ (BOOL)automaticallyNotifiesObserversForKey:(NSString*)key
{
	if ([key isEqualToString:@"isFinished"])
       {
		return YES;
	}
	
	return [super automaticallyNotifiesObserversForKey:key];
}


特定のキー値の時YESを返すって感じです。

UA LABOオープン!

| | Comments (0) | TrackBacks (0)
かなりひさしぶりのエントリです!
だいぶ更新を怠ってしまっていました。。。

さてさて、弊社デベロッパーチームのブログ「UA LABO」が4月1日にオープンしました!
サイト自体もラボということで色々挑戦しています。

僕はUA LABO公式キャラクター「ラ・ボラ」君を作りましたww
MSのWordに出てくるイルカ君みたいなポジションにしたいです。
bola.jpg

UA LABOでは実験的な内容で色々書いていきます。
(こっちと若干かぶりそうだけど。。)

新年!

| | Comments (0) | TrackBacks (0)

明けましておめでとうございます!

今更ですがw

昨年は4月にこの業界に入り、それから色々と学ぶことだらけでした。

今年はさらに発展と多方面への開拓をしていこうと思います。

 

年賀ということで、弊社の年賀サイトをちょこっと紹介。

ユナイティア年賀サイト

一応自分も少し関わらせてもらえました。

 

nenga1.jpg

みんなでとにかく走りました!
もちろん自分も参加しています。


nenga2.jpg

社員全員のメッセージが見れます。
右下の入力欄に合い言葉を入れると対応したメッセージが再生されるようになっています。
「うしくん」と入れてもらえると、僕からのメッセージが見れます。


今年も頑張らないと!



Archives