iPhoneアプリ開発日記1[とにもかくにも動かしてみた編]

Posted by Hiroaki.S | Posted in 未分類 | Posted on 01-08-2010

0

この夏はiPhoneアプリに挑戦してみようということで,
早速数日前にSDKを入れてみま...

SDK4以降はSnow Leopardでなきゃだめなのね.
ということでようやくアップグレード.
初代Airだからかインスコ中にkernelバグか何かでものすごい遅くなった.
結局一晩中インストールし続けることに.朝起きたら成功してた.よかった.
4本指の動きが気持ちイイ.なんかヤラシイ.

それにしてもCoolBook+smcFanControl快適.特にCoolBookは10ドルの価値あり.
まだこのAirたんも現役でいけそうです.

さて,SDKも入れ終わったのでようやくiPhoneアプリの話に.
XCodeでプログラミングを行うのはOpenCVを試した以来だ.というか実質ない.
そもそもObjective-C自体が全くノータッチなので今後うまく進んでいけるのか心配.
筆者の信条は「プログラムはフレームワークが浮かんだら勝つる!」なのですが,
Objective-Cでは何がどう出来るのかいまいちわからないので勝てない.
まぁ,とりあえずやってみましょう.

まずはお決まりのHello Worldから.
[新規プロジェクト]から[View-based Application]を選択.
これで素地は完了らしい.ちなみに今回のプロジェクト名は[HelloWorld].

Classes内にあるファイルに注目.
HelloWorldViewController.h,HelloWorldViewController.mがある.
どうやらこれをいじるらしい.

- (void)viewDidLoad {
この部分のコメントを外して,中に処理を書く.
名前からしてこれはアプリが読み込まれたら行う処理なんでしょうかね?

// ちょこっと調べたらviewが呼ばれてインスタンスが生成された時に行われるそう.
// てことは一回だけとは限らないのか.

さてこの中に以下を書きました.

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
 textView.text = @"Hello World";
 textView.textAlignment = UITextAlignmentCenter;
 textView.font = [UIFont fontWithName:@"Arial" size:24.0f];
 textView.backgroundColor = [UIColor clearColor];
 [self.view addSubview:textView];
 [textView release];

UITextViewはクラス,だよな?C++やってても完全なOOPではないのでJAVAとかそういうのに慣れない.
もっと勉強しておくんだった.

まぁなんにしてもUITextViewクラスであるtextViewってインスタンスを生成.
次のカッコは・・alloc?? newみたいなもんか.
その後ろは分かりやすいね,テキストエリアの大きさと位置を初期化するんだな.
CGRectMake(0, 0, 320, 460)の前の二つは開始のx,y座標で後ろが大きさだな.

こんな調子じゃ長くなりすぎるwww
ここからはある程度割愛して,

二行目は表示する文字ね.
“”でくくるのはおなじみだとして,@は何?
// 調べたらObjective-Cでは文字列前に@をつけてオブジェクト扱いとするらしい.
// ここはCと違うところだね.文字の時はいつも付けておけばいいのかな?

次々!
文字配置とフォントね.
見ればわかるんだけど,このUITextViewクラスはいったいどんなメンバ変数と関数で出来てるんですか.
クラス便利なんだけど,仕様みないとどのクラスがどんなこと出来るか把握できないんだよな.
あとで下読む.
UITextView Class Reference

// パッと見,中に書くtext,font,fontColor,書き換え可不可,配置...とか.
// 関数はまだ見てない.

次!5行目.
あれ?メンバにbackGroundColorとかいるし.何やってるかは一目瞭然として,こんなメンバいたっけ?w
と思って見てみる.継承ですかそうですか.これ自体はUIViewのメンバ.これを継承してるから使えると.
こんなとこまで見てたら日が暮れるー.

6行目.ん,よくわかりませんwww
調べておこう.selfはthisみたいなもんか?

最後は開放と.どうやらObjective-Cでは大カッコ[]が重要のようですね.
ここらへんも後ほど勉強と.

実はこの後ボタンやテキストフィールドを使ったBMIを計算するというサンプルも
つくってみたのだけれど,長くなりそうなので次回.

やってしまった

Posted by Hiroaki.S | Posted in 未分類 | Posted on 14-11-2009

0

今週の火曜日は研究室の大学院ゼミでした.
一か月に十数の論文をむさぼり,
英語と格闘し,数学に泣かされ,
社会人の先輩を呼び出してまで挑んだゼミ.

結果は惨敗.
話し方や論の進め方といった次元ですらなく,
ただただ数式のフォローができなかった.

今になって思えば,
発表前まではこれだけ準備したから大丈夫だろうと
できた”つもり”になっていた.

自分の認識が如何に甘かったかがよくわかるし,
サボっていたこともよくわかった.

バイトでは自分のほうが年齢も経験も上,
どこで手を抜けるかも,ごまかしもいくらでもできる.

でも研究ではそうはいかない.
ヒエラルキーも知識も一番下な私が
教授やドクター相手に数式をごまかそうっていうのがおかしい話.

自分がやったと思っても,
世間がやってないと言えば意味がない.
やったっていう自己満足で終わってもいいのかもしれないが,
そのあとに成長は見込めない.

後輩からすごいといわれようと,それは当り前.
上の人間をうならせてこそ自分の能力を測ることができる.

”久々に”悔しいということは,最近あまり大きな壁相手に挑んでなかったんだと実感.
また,同時にこのレベルであぐらをかいていた自分の器の小ささを痛感.
偏差値のように,自分の能力は数字で把握ができない今だからこそ
こういった経験をチャンスだと思って,次につなげたい.

”一流選手はあらゆる努力をはらって速やかに立ち上がろうと努める、
並の選手は立ち上がるのが少しばかり遅い、
そして敗者はいつまでもグラウンドに横たわったままである”
ダレル・ロイヤル

また今日も研究室で頑張ろう.

やってしまった

Posted by Hiroaki.S | Posted in 未分類 | Posted on 29-10-2009

0

家のルータをいじることがあり,設定をリセットはいいものの

プロバイダ情報がどっかいった\(^o^)/
これは研究室に引きこもれということなのか.

話は変わって.

自分の周りのツールをもう少し整理していきたい.
特にアナログとデジタルの融合.
最近でこそ流行りになってきたけれど
まだまだ,デジタルに一元化できないなぁ.

iPhone買えってか.

エルザジャパン GPUコンピューティングセミナー2009

Posted by Hiroaki.S | Posted in 未分類 | Posted on 11-09-2009

0

エルザ主催のCUDAセミナーに出てきました.
GPUコンピューティングがいかに速いかということを紹介しつつ,
CUDAのインストールやアーキテクチャについても盛り込んだ内容になっていました.

やっぱり速いですね,GPU.
個人的にはCベースで書くことができるというのがうれしい.

勉強が必要だと感じるところは,GPUのアーキテクチャ.
ホストとGPUのアクセスの部分が重要.
ハード的な知識が通常のプログラミングよりも必要ですね.
(ブロック,スレッド単位の挙動)

CUDAプログラミングのポイント

  1. CUDAはCPU側プログラム + GPUプログラム(kernel関数)で動く.
  2. CPU側プログラム
    • ホストPCで実行されるプログラム
    • 拡張子 .cu
    • ほぼ普通のC言語と同じ
    • GPUへのデータ転送やkernel関数の起動
  3. kernel関数
    • GPUで実行されるプログラム
    • ホストPCに呼び出されて実行
    • _global_を宣言につける.
    • 引数は利用可,値の返却は不可 => void型
  4. nvccを用いて,コンパイル

千葉大学の増田信之先生の発表から引用させていただきました.

ここで重要なのがkernel関数がvoid型だということ.
GPUからCPU(ホスト)に値が返却できない.
そこを解決するのがglobalメモリ.
このglobalメモリがCPUとGPU間における唯一の橋.
(実際にはConstant MemoryやTexture Memoryもあるが,
大体Global Memoryなので割愛)

CUDAまとめ

  1. 速い(プログラムにもよるが,大体あがる).
  2. 特に並列処理が格段に速くなる.
  3. 3DCGの知識がなくても扱える.
  4. フーリエや行列のライブラリを実装.

他色々.

最後にnVIDIAの方の講演がありましたが,nVIDIAも魅力的な会社だなと感じました.