ここに置いてある解説とMacOS X Cocoaプログラム例は、私の研究室の4年生、M1の新メンバーにMacOS
Xのプログラミングにできるだけ速く慣れてもらうために作ったものです。 Cをある程度知っていれば、C++と違ってObjective-Cは簡単なので30分あれば、例題を理解できるようになります。Objective-Cをしっかり理解してから等ということは要求せずに必要最小限でスタートし、とにかくできるだけ速く、Viewにグラフをプロットしたり、視覚刺激を生成して表示する例を作ってみて、
あとは自分でやって行くうちに理解を深めてもらうことを想定しています。よくある、データベースのクライアントappを想定してといった例は一般のプログラマ向けとしては最大公約数的に良いとは思いますが、どうもまどろっこしく思えます。自分が教えてもらうとしたら、こんなことをすぐできるようになりたいと自分で思うような例題としました。CocoaでHello
Worldの例題作っても意味無いですよね。前提として、C言語は授業で大体知っている人を対象にしています。(基礎工学部システム科学科生物工学コースではCの基礎と応用で演習を2科目くらいはとっているのが普通なので。ただ、こうした授業・演習以外に自分でプログラミングをしたことのある人はほとんどいない。)
オブジェクト指向プログラミング、Objective-C、Cocoaのクラス階層等のさらに詳しい説明は他を見てください。それから、ここにある例題は簡単なので、コントローラとなるオブジェクトを使った、いわゆるMVC(Model-View-Controller)の構造にはなっていません。複雑なプログラムになれば どうしても必要になるMVC構造について、できるだけ早いうちに自分でよく見ておいてください。(Borland C++Builder等では作ったクラスの多くがTFormのサブクラスになってしまう傾向が有るようだけど、プログラムでやることを全部Viewでやってしまうようなプログラムは書かないで。)
例題は以下の順番で別のページになっています。上の表にあるリンクから各ページに飛んでください:
・1. 加色法によるRGBの色の混合 (RGB sliders -> View)
・2. NSViewにグラフのプロットやテキストを描画する。
・3. 極座標(2次元)コントロール(PolarControl)を作る。(空間周波数/方位のコントロールを想定)
・4. ダイナミックランダムドットの動画の生成と表示(ビットマップとタイマー)
・5. Plaid(2つの二次元サイン波の重畳)の動画を生成/表示する (Adelson & Movshon 1982)。
先に作ったPolarControlsを使い、任意の空間周波数と方位、コントラストをもつ2つのサイン波を重畳しドリフトする Plaidパターンの動画として表示する。
注意事項: 各ページあるZIPファイル(*.app.zip)には、解凍すればそのまま動くアプリケーションが入っています。 MacOS X 10.4 Tigerで作ったので、それ以前のシステムでは動かないかもしれません。 練習のため、主なクラスファイル (*.m, *.h) しか置いてありません。 ただし、DynamicRandomDotとPlaidMotionについては、プロジェクト全体がZIPとして置いてあります。(プロジェクトを開くにはXcode 2.xが必要。クラスファイルそのものはTiger以前のOS/Xcodeでもいけると思う。)これらの例題はそのままの形で視覚研究のための刺激とするには不適当です。ディスプレーのガンマ補正、movieのフレーム提示の正確なタイミングの保証が全く考慮されていません。あくまでもデモとしての利用に留めてください。
References:
・Adelson EH, Movshon JA. (1982) Phenomenal coherence of moving visual patterns. Nature. 300(5892):523-525. (PMID: 7144903)
・Smith MA, Majaj NJ, Movshon JA. (2005) Dynamics of motion signaling by neurons in macaque area MT. Nat Neurosci. 8(2):220-228. (PubMedID: 15657600)
コピーポリシー:Materials here are licensed under:
Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
http://creativecommons.org/licenses/by-nc-sa/2.5/ |