Powered by Google

2010年10月18日月曜日

創作活動日記 iPhoneアプリ開発編4

今回はフレームワークについて
iPhoneアプリ開発において、フレームワークの知識およびそれを使いこなすことは非常に重要ですので、重点的に複数回に分けて記載していきます。

まずフレームワーク(Framework)とは、アプリケーションを開発する際に頻繁に使用するクラスやライブラリをまとめたものです。フレームワークは特定のOS向けから、ウェブアプリケーション構築用まで様々なものが存在します。

MacOSのFinder(windowsのエクスプローラのようなもの)を使用して

 [Macintosh HD] => [システム]=>[ライブラリ]=>[Frameworks] 

の順番に進むと
.framework と付いたフォルダが並んでいます。これらのフォルダはアプリケーション作成に便利なプログラムの集まりで、利用することでアプリケーション開発が容易になります。

iPhoneアプリの開発では「Cocoa Touch フレームワーク」というフレームワークが使用されています。
Cocoa Touchフレームワークは大きく2つに大別することができます。

・Foundation フレームワーク:データ処理を行うためのフレームワーク
・UIKitフレームワーク:GUIを構築するためのフレームワーク

Foundationフレームワークについて

Objective-Cには文字列や配列を扱うクラスがありません。基礎的なクラスはFoundationフレームワークにより提供されます。Foundationフレームワークが扱う範囲は広く、文字列、配列、日付・時間、数値、ファイル管理、ネットワークなど色々とあります。

Foundationフレームワークに含まれる主なクラスとしては NSString(文字列)、NSArray(配列)、NSDiCtionary(辞書)などがあります。どれも「NS」で始まり、これがFoundationフレームワークのものであることをあらわしています。

NSStringについて
NSStringは文字列を扱うクラスです。NSStringクラスは文字列を代入すると、文字列を編集することはできません。そのため編集可能な文字列を作る場合は、NSStringのサブクラスでNSMutableStringクラスを使用します。

文字列の代入
NSString *stringText = @"Hello,World"; <==== @が必要です。
NSMutableString *stringMText = [NSMutableString stringWithString:@"Hello,World"];



C言語のprintfと同様に書式指定して文字列を作成する場合にはNSStingのstringWithFormatを使用します。

文字列の標準出力
int a = 1;
int b = 2;
NSString *stringText = [NSString stringWithFormat:@"%02d:%02d",a,b];

            ↑この場合はstringTextの値は "01:02"となります。


文字列の連結
文字列と文字列を連結するにはstringByAppendingStringメソッドというものを使用します。
NSString *str1 = @"Hello";
NSString *str2 = @"World";
NSString *str3 = [str1 stringByAppendingString:str2];

//書式指定して連結する場合は
NSString *str4 = [str2 stringByAppendingFormat:@" %d.%d", 1,2]
            ↑この場合はstr4の値は "World 1.2"となります。



文字列の比較
文字列が等しいかどうかなどの比較する場合には次のようにします。
NSString *strA =@"ABC";
NSString *strB =@"DEF";
NSString *strC =@"ABC";

BOOL result;

result = [strA isEqualToString:strB];
↑この場合はresultにはFALSEが返ります。

result = [strA isEqualToString:strC];
↑この場合はresultにはTRUEが返ります。

//部分一致比較する場合 文字列頭から比較
result = [strA hasPrefix:@"AB"];
↑この場合はresultにはTRUEが返ります。

//部分一致比較する場合 文字列後ろから比較
result = [strA hasSuffix:@"EF"];
↑この場合はresultにはFALSEが返ります。



文字列操作は、どのようなアプリ開発をする上でも関わってくることが多く、且つ不具合が紛れ込みやすい処理箇所でもあります。そのためNSStingの扱いには早めに慣れておいたほうがいいかと思います。

本日はここまで。

2010年10月11日月曜日

スクラッチ!

つい先日、ちょっとした資料としてスクラッチ宝くじを買う機会がありました。

宝くじなど買ったことが無いので、売り場で平静を装いながらあたふたと購入。
ちかくにいたおばちゃんに「私の分まで当ててや!」と言われつつ、慣れない手つきでスクラッチョ。
すると、な、なんと・・・!


それはともかく、私は宝くじというのは利益率が50%で、かつ、技術介入度が皆無なギャンブルということで今まで避けてきました。
しかし、今回の機会を契機に本当にそうなのか?ということを少し調べてみました。


宝くじの種類

調べてみると地方限定のものがあったりで思ったより種類が多かったのですが、大まかに分けると次の4つに分けれます。


ジャンボ宝くじ

所さんとかが宣伝してるやつです、一番有名なんじゃないでしょうか。
一枚300円で一等前後賞合わせて3億円です。
遊び方は、購入して発表日に新聞を見て一喜一憂するだけです。単純至極。


スクラッチ宝くじ

種類は色々あるようですが、ラッキー3というのがメジャーなようです。
今回購入したのはこのタイプです。
一枚200円で一等100万円。
遊び方は、購入してすぐにスクラッチ部分を硬貨で擦って丸裸に。
同じ絵柄が3つ出れば当たりです。絵柄によって等級が違います。


ロト

数字をいくつか選んで、当選番号と同じ数字が多いほどラッキーです。
ロト6とミニロトの二種類があります。
ロト6は1~43の数字を6個選択、ミニロトは1~31の数字を5個選択します。
当選者が複数いた場合は賞金を山分けするため、当選賞金は固定ではありません。
理論上の1等の賞金はロト6で1億円のようです。
当選者がいなかった場合は、賞金が次回に持ち越される場合があり、それをキャリーオーバーと言います。


ナンバーズ

ナンバーズ3とナンバーズ4があります。
ナンバーズ3は3桁の数字を選択し、ナンバーズ4は4桁の数字を選択します。
当選確率はそのまま 1/1000 と 1/10000 、当たりかハズレかどっちかしかありません。
こちらも当選者が複数いた場合は山分け方式で、理論上の当選賞金は前者が9万円、後者が90万円です。
ボックスやセットといった、数字の組み合わせで纏めて買う方法があります。


さて、これらの宝くじですが、いざ買うとなればどれが良いのでしょうか?
どうせ買うなら得なやつを買いたいですよね。

簡単に計算してみました。


ジャンボ宝くじ VS スクラッチ宝くじ VS ロト6 VS ナンバーズ3

ジャンボ宝くじ
参考:サマージャンボ宝くじ2010第587回(1ユニットで計算)

スクラッチ宝くじ
参考:スクラッチ(ラッキー3)題2294回近畿宝くじ
ロト6
ナンバーズ3


いかがでしょうか?
どれも期待値が50%よりさらに下回ってることがわかりました。
それはともかく、ジャンボ宝くじが一番期待値が高いですね。

ずばり結論!!
宝くじを買うならジャンボ宝くじ!!


まぁ私は買わないですけどね。


ちなみに、冒頭の宝くじはハズレでした。

2010年10月4日月曜日

祝!!Google検索順位1位

おめでとうございます。ありがとうございます。

ついに、Googleでの「ミソログ」の検索順位が1位になりました。
目標達成です。名実ともに「ミソログ」に恥じないものになりました。
今日から「ミソログ」→「I'm Feeling Lucky」でこのブログにジャンプできます。



ちなみに、Bingでも「ミソログ」の検索順位は1位です。



これも参加者全員の不断の努力と研ぎ澄まされたセンスのおかげです。

お祝いしてゲストライターを招待しましたので(少しフライングしましたが)
楽しみにしていてください、よろしくお願いいたします。

モンスターエンジン

みなさん、モンスターエンジンはご存知でしょうか?

吉本の芸人のことではありませんw

モンスターエンジン(The Monster Engine)というのは
Dave Devries氏の作品や活動のことを指します。

モンスターエンジンHP
http://www.themonsterengine.com/

私がモンスターエンジンを知ったのは2005年頃のことです。
友人がちらっと教えてくれたのをきっかけにHPを見に行って面白いなと思い
英語がわからないながら辞書を片手にDevries氏にメールをしてみました。


そしたら何と作品集の本をわざわざ贈ってくれました。

彼の作品は、子供達の描いた絵をリアルなモンスターの絵に変えてしまいます。

その発想には驚きました。

子供が描いたペットや人物画をリアルにすることで作品としてしあがっていきます。


  

























元ネタを子供達の絵を利用するという観点に感心しました。
子供の発想は固定概念がないというか自由奔放な点に気づいて利用しています。

クリエイティブな活動をゼロから100%仕上げるのではなく、最初の発想の部分をお手軽に手に入れ、昇華していくというのが斬新だと思いました。(もちろん昇華させる画力があること)

分野は全然違いますが、創作活動をする上で、元ネタはいろんなところにあるという点とすべてを自分の手でやろうとするのではなく、利用できるものは何でも利用するという参考に非常になりました。

2010年9月27日月曜日

創作活動日記 iPhoneアプリ開発編3

フレームワーク使用の前に、まだ知っておくべき事項があるので
今回は開発言語のObjective-Cの特徴について

新規プロジェクトを作成するとプロジェクト名.m、プロジェクト名.hというファイルが自動生成されます。

それぞれのファイルはデフォルトでコードが書かれていますので今までのプログラミング経験によって、人それぞれ、C言語に似ている、さっぱりわからん、などの感じ方は違うと思います。

拡張子「.h」ファイルは定義記述するヘッダファイルとなります。
拡張子「.m」ファイルは実際の処理を実装するファイルとなります。

Objective-Cソースコードには「@」という、他の言語では見慣れない記号があります。
これはコンパイラディレクティブというもので、クラスの宣言や実装をコンパイラに対して明示するために使用します。

@interfaceで始まり、@endで終わるというのが基本形式です。

用途別にコンパイラディレクティブは用意されていますが、たとえば

@interface ・・・ クラスやインターフェースの定義を開始
@implementation ・・・ クラス実装の開始
@protocol ・・・ プロトコル宣言の開始
@end ・・・ クラス、プロトコルの宣言・定義を終了

@private ・・・ インスタンス変数の有効範囲をクラス内に限定
@protected ・・・ インスタンス変数の有効範囲をクラス内と派生クラス内に限定
@public ・・・ インスタンス変数の有効範囲について制限なし

その他にも例外処理をサポートする@try、@throw、@catchなど排他処理の制御に@synchronizedなどあります。その辺りは実装する上で調べてみてください。

クラスの定義は次のような構造をとります。

@interface クラス名 : 親クラス名
{
インスタンス変数宣言
}
メソッド宣言
@end


クラスの実装については
@@implementation クラス名
メソッド定義
@end

のように実装します。

他にもメソッドの呼び出し方やプロパティについてなどの「-」記号によるインスタンスメソッドなどの理解が実装する上での前提条件として必要になります。

とりあえず今日はここまで。

2010年9月24日金曜日

ジガゾーパズル

うわさのジガゾーパズルをやってみました。

ジガゾーパズルは300ピースの組み合わせで地球上の誰の顔でも作れる画期的なパズルです。Village Vanguardにて1890円で購入しました。
パズルのピースにはうっすらと模様がプリントされています。このパターンがプリントされた解答図を見ながらパズルを組み立てることになります。

解答図はサンプルの6種類の他に、写メールを送ることで自分自身の顔など好きなパズルも作れます。
早速作ってみます。白と黒の汎用的なパターンの300種類のピースの組み合わせでどんな顔でも作れると聞くとワクワクします。

しかもビックリしたことに、300ピース全部使いきってパズルが完成します。

パズルはバラせば色んな画像で何度でも楽しめます。
完成まで30分くらい。このパズルが汎用的なピースだけでできてしまうとはオドロキです。

作ってみると分かるのですが、単純に濃度だけで計算して並べているのではなく、黒と白のグラデーションの境界をうまく利用して目や鼻のスジを表現しています。

そういえば、Flickrの写真をたくさん集めて一つの画像を作るという技術を見たことを思い出しました。アレと同じ技術ですね。スゴいっと思ったけれど枯れた技術ですね。

でも、モノとして出来上がる楽しさはかえがたいので、買って損ナシです。

次は自分の写真でやってみようかな。
Posted by Picasa

2010年9月20日月曜日

謎の技術

謎の技術

それはニコニコ動画に付けられるタグの一つである。

謎の技術とは (ナゾノギジュツとは)
謎の技術とは、どうやって作ったか分からないハイクオリティな映像作品に付けられるタグである。
また、コメントが不自然な動作をする動画にも付けられる。
誰か俺にも分かるように説明してくれ。
(ニコニコ大百科より抜粋)


このタグが付けられた(中には付いてないモノもありますが)動画の中で、映像的・技術的に興味を持ったものを備忘録をかねていくつか紹介したいと思います。



エイプリルフールに数学教師がやったジョーク

先日、映像を作成するための試みをやってみたりしたこともあり、こういう動画は気になります。
アイデアと根気があればこういう面白いのを作ってみたい。



Wii リモコンで頭の位置を認識する VR システム

画面の外の人間の動きに連動して3Dに動く画面がおもしろい。
任天堂3Dは外部機器無しでこういう感じに見えるのだろうか?



アッチの世界を覗ける窓を作ってみた

上記の関連動画。
こういう形にすれば大きなお友達がお金を落としてくれそうです。



ARToolKitで距離を表示してみた

AR系。表示がカッコ良い。
ActionScriptならARとセンサー類との連携が比較的簡単に出来るようなので、いずれこういうのも作ってみたい。
ARの欠点はカメラを通してでないと見れないこと。



【ARカプセル】ついにモニタから出てきてくれた (裸眼AR)

こちらもAR系。
制限や機器の準備は必要なものの、カメラを通さずに映像が見れるところが良い。



謎の技術「双方向レーザー」

猫が喜びそうなレーザー。
子供や年配の方でも遊べるゲームが作れそう。



炊き合わせ作ってみた【料理】

料理系。色々と感動したのでついでに張ってみる。


こういう動画を見ていると創作意欲が刺激されます。
個人的にはARを用いたモノを何か創ってみたいですね。
面白そうなアイデアありませんか?