<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5638054156537124187</id><updated>2024-10-05T11:02:55.627+09:00</updated><title type='text'>07FJ064 Tomo Meets A</title><subtitle type='html'>iPhoneアプリケーション開発に必要な事をメモ書きしています。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-196714390811480549</id><published>2010-09-30T06:31:00.061+09:00</published><updated>2010-09-30T07:03:06.791+09:00</updated><title type='text'>補足・チャプター３</title><content type='html'>前回の投稿で「次は4章でデバイスに流すぞ」発言してましたがちょっと気になるトコがあったので追加。&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;.sio2ファイルを書き出すときに設定するオプションと、書き出されたファイルの形式について。（卒論に書けそうなのでネタとして記述ｗ）&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;前述の通り、.sio2ファイルを書き出す際にはオプションを設定できる。&lt;/div&gt;&lt;div&gt;そのオプションが「UP、N、O、V、IP」の５つ。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;ちなみに、それぞれ設定する項目の頭文字をとっておるようです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;・UP (UPdate)&lt;/div&gt;&lt;div&gt;これは、既に出力されている.sio2ファイルに上書きする形で書き出す場合に有効なオプション。そのまま書き出すと重複するデータが出てくるので、新たに出力すべき最低限のファイルだけを書き出すようにする。そうすることによって書き出し時間の短縮になる。（今回のチュートリアルのファイルは数秒で終わったが＾＾；）&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;・N (Normal direction)&lt;/div&gt;&lt;div&gt;チュートリアルで設定したオプション。これは、通常の座標形式を書き出すようにするための設定する・・・らしい。よーわからんが。適切な照明効果を発揮するためには、SIO2側で全てのfaceの正確な方向を認識しておく必要がある。（どっちが表でどっちが裏？的な意味かな。反射に関わってくるからな。）&lt;/div&gt;&lt;div&gt;これを設定しないと正しい照明効果が得られないので、照明を使っているチュートリアルでは必要なオプションになる。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;てか、大抵のモデリングでは照明効果使うでしょうに。&lt;/div&gt;&lt;div&gt;とにかく、オンにしてれば無難なオプションてことにしておこう。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;・O (Optimization)&lt;/div&gt;&lt;div&gt;四角形のmeshを三角形に２等分する場合に設定するオプション。そうすることで、よりキメ細やかなモデルになるんですな。&lt;/div&gt;&lt;div&gt;あれ？OpenGL ESって三角形のmeshじゃないと扱わないんじゃないっけ？チュートリアルでは設定しなかったけど良かったのかなァ。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;・V (Vertex color)&lt;/div&gt;&lt;div&gt;meshに対して照明効果が適用された状態の色情報を保存するためのオプション。これを使うと「照明→反映→色の変化」っていう手順が簡略化されるらしい。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;・IP (Ipo curve)&lt;/div&gt;&lt;div&gt;Ipoカーブを書き出すためのオプション。&lt;/div&gt;&lt;div&gt;イロイロ突っ込みどころ満載だけど、今の英語＆3Dの知識ではこれで限界。&lt;/div&gt;&lt;div&gt;Ipoカーブってのは色の状態を示すカーブみたいなんだけど、、、それを保存するオプションなのか？よく分からんかった。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;さて。&lt;/div&gt;&lt;div&gt;お次はファイルの構造について。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;スクリプトにより書き出されたものは、Hello3DWorldという名前のフォルダとHello3DWorld.sio2という名前のファイル。&lt;/div&gt;&lt;div&gt;これらの中身は同じものであり、フォルダとそれを.sio2にアーカイブした結果がこの２つ。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;中には「camera、image、ipo、lamp、material、object、script」といったフォルダが存在し、それぞれの中にSIO2向けに変換された3Dシーンの要素となるファイルが入っている。&lt;/div&gt;&lt;div&gt;このファイルはテキストエディタで開けるようになっている。&lt;/div&gt;&lt;div&gt;まずはカメラオブジェクトの説明から。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;camera( &quot;camera/Camera&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;l( 0 -3.594 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;r( 0.0 360.0 360.0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;d( 0 1 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;f( 49.134 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;cs( 0.1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;ce( 100 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;たったこれだけの要素でカメラの情報が構成されている。&lt;/div&gt;&lt;div&gt;l：Blenderで設定していたカメラが位置する座標&lt;/div&gt;&lt;div&gt;r：同じく角度&lt;/div&gt;&lt;div&gt;d：カメラの位置と角度から計算される、カメラの基準となるベクトルの方向。（X, Y, Zのどの方向に＋でどの方向に−なのかってことか？）←要行列の勉強&lt;/div&gt;&lt;div&gt;f：カメラの向いている方向から計算されるアングル。レンズの値が小さいほど広角。&lt;/div&gt;&lt;div&gt;cs, ce：カメラのからの視点の有効範囲&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;そして3DオブジェクトのPlaneの中身がコチラ。&lt;br /&gt;
注意書きとして「今は四角形だけどこれから２つの三角形に分割するよ」みたいな記述があった。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;object( &quot;object/Plane&quot; )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;l( 0 5.9 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;r( 90 0 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;s( 3.35 3.35 3.35 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;ra( 5.84 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;di( 1.233 1.233 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;vb( 128 48 0 96 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;v( 1.233 1.233 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;v( -1.233 1.233 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;v( -1.233 -1.233 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;v( 1.233 -1.233 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;n( 0 0 1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;n( 0 0 1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;n( 0 0 1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;n( 0 0 1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;u0( 0 1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;u0( 1 1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;u0( 1 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;u0( 0 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;ng( 1 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;g( &quot;null&quot; )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;mt( &quot;material/Material.002&quot; )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;ni( 6 4 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;i( 3 0 1 2 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;i( 3 0 2 3 )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;l：Blender上で設定されていた位置座標&lt;br /&gt;
r：同じく角度&lt;br /&gt;
ここまではカメラ同じ。&lt;br /&gt;
ra, di：これらの値は物理演算をするときの衝突が発生した際に用いる&lt;br /&gt;
vb：vertex bufferを決定するために必要な値（Appendix Bに詳細）&lt;br /&gt;
v：ｘ，ｙ，ｚそれぞれのvertex&lt;br /&gt;
u0：UVマッピングのvertex&lt;br /&gt;
n：不明&lt;br /&gt;
ng：meshで宣言されているvertexグループの数&lt;br /&gt;
g：上記グループの名称&lt;br /&gt;
i：ポリゴンを組み立てるために必要なリストの数&lt;br /&gt;
&lt;br /&gt;
途中でNオプションを有効にすることで発生した項目もあるらしいのだが、どうもそれについてわからない。。。&lt;br /&gt;
後半戦は3Dの知識不足のせいでよー分からん内容になってしまったし。。。&lt;br /&gt;
&lt;br /&gt;
ま、今は特に使わないからスルーで！←&lt;br /&gt;
&lt;br /&gt;
SIO2のディレクトリ構造について、Appndix Cで詳しく記載されてるらしい。&lt;br /&gt;
どうしても必要ならそこから情報をいただくとしよう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
帰宅する。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/196714390811480549/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_30.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/196714390811480549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/196714390811480549'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_30.html' title='補足・チャプター３'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-7425795582466803718</id><published>2010-09-29T01:58:00.001+09:00</published><updated>2010-09-29T02:04:02.831+09:00</updated><title type='text'>続・チャプター３</title><content type='html'>&lt;div&gt;なんとか昨日の時点でテキスト通り、モデリングや照明効果を付け足すことが出来た。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;それで完成したモノがこちら。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6TbUiUPammjno1byPPifDXJvWwN0RXC6D-FlFlbxiw_EEAP9eMQbcAABgzCENcTrZMFsyKX8QqyMx_3r5IEfcbg97_M5tGKfBq0qd_OHLjh_IcYiBwRGOtymsE04yiR_RjuXekRmcUgE/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+20.47.42%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;261&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6TbUiUPammjno1byPPifDXJvWwN0RXC6D-FlFlbxiw_EEAP9eMQbcAABgzCENcTrZMFsyKX8QqyMx_3r5IEfcbg97_M5tGKfBq0qd_OHLjh_IcYiBwRGOtymsE04yiR_RjuXekRmcUgE/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+20.47.42%EF%BC%89.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;地球は青かった。。。テッカテカですがｗ&lt;/div&gt;&lt;div&gt;とりあえず、テカり防止とかの処理は後からやります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;とりあえずこの過程で勉強したことをさらっとまとめて、さっさと.sio2形式で書き出したいと思います。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;実際の作業画面はこんな感じ。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTBtrVf8ofs8C-nwjzgHyaSNF534H2wifClpBcQJLucwt70q2wRfMpz4HIsOqlQJSOmoiNg6qQK8boNCdFSjbpFM72_p1Ws1jWdOEtWf5btaw4ZG37SOLRp4w_5sxHQYRMTavabxiJrV5z/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+20.46.03%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;199&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTBtrVf8ofs8C-nwjzgHyaSNF534H2wifClpBcQJLucwt70q2wRfMpz4HIsOqlQJSOmoiNg6qQK8boNCdFSjbpFM72_p1Ws1jWdOEtWf5btaw4ZG37SOLRp4w_5sxHQYRMTavabxiJrV5z/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+20.46.03%EF%BC%89.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;UVマッピングを使用して地球の画像を貼りつけた球体のオブジェクト、カメラ、カメラから見て地球の背面に来るようにした板、異なる２種類の照明を設置した。&lt;/div&gt;&lt;div&gt;配置やオブジェクトの角度は指定された値に設定するだけなので簡単楽チンでした。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;これらの作業の中で重要になってくる要素は「UVマッピング」。&lt;/div&gt;&lt;div&gt;UVマッピングとは、オブジェクトの各面の頂点に画像上の座標を対応させるための機能のこと。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;大まかな手順は、、、&lt;/div&gt;&lt;div&gt;１、UV展開（3Dモデルを展開図にする）&lt;/div&gt;&lt;div&gt;２、UV / Imageエディタで展開したイメージを編集&lt;/div&gt;&lt;div&gt;３、編集した内容を画像として出力&lt;/div&gt;&lt;div&gt;４、実際に貼り付けを行う&lt;/div&gt;&lt;div&gt;といったもの。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;とりあえず、、、Blenderで新しく習得したテクはこんなとこです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;地球はテキストにそって作成できたが、背面の板は「地球儀と同じ方法で」しか書かれていなくて困った。。。これができないと自分でiPhoneに表示なんてできないからさぁ大変。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;最終的に何とかで攻略することができました。&lt;/div&gt;&lt;div&gt;重要なのは、板は平面なので１の手順をカットできること。そのままテクスチャを貼れちゃいます。一人で延々と「あれ、展開できないぞ」とかやってました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;さて、ココからは.sio2での書き出しについて。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;書き出すためにスクリプトが必要だと説明は以前にもしたが、その名前は「sio2_exporter.py」。Pythonのスクリプトだから.syだそうだ。&lt;br /&gt;
SIO2の公式サイトからDLしたファイル群の「script」というフォルダに入ってました。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;このスクリプトファイルをBlender.appの奥深くにコピーしておくと、Blender内部から直接スクリプトを呼び出すことが出来るようになる。（Exportの選択肢に「SIO2 Exporter v1.4 (.sio2)」という項目が追加される）&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;そして、書き出す際の手順はたったの３ステップ。&lt;/div&gt;&lt;div&gt;１、書き出したいオブジェクトは全てレイヤー１に配置し、全て選択された状態にしておく。&lt;/div&gt;&lt;div&gt;２、BlenderウィンドウのヘッダーにあるSCEという部分が保存する際のファイル名になるので、変更したい場合はへ変更しておく。&lt;/div&gt;&lt;div&gt;３、書き出し設定のオプションNを有効にして書き出しをする。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;すると、指定したディレクトリにHello3DWorldというフォルダとHello3Dworld.sio2というファイルが生成されました。&lt;/div&gt;&lt;div&gt;フォルダに中にはobjectだのcameraだの、作成したオブジェクトと思われるフォルダが含まれていて、更にその中にはテキスト形式のデータが入っています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;何かテキストのデータとオレが作ったデータに若干の誤差があるが。。。&lt;/div&gt;&lt;div&gt;まぁ気にしないでいってみよう。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;次回、チャプター４ではこれらをXcodeで読み取り、実際にiPhoneに流し込むまでの過程について取り上げます。&lt;/div&gt;&lt;div&gt;これさえ出来れば最低限の卒論くらいは書けそうな気がするｗｗｗ&lt;/div&gt;&lt;div&gt;ぶっちゃけ、それ以外の要素は自己満足みたいなとこあるしな。。。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;なんて言わず！！←&lt;/div&gt;&lt;div&gt;モチベーションはこれからも右肩上がりで参ります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/7425795582466803718/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/7425795582466803718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/7425795582466803718'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_29.html' title='続・チャプター３'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6TbUiUPammjno1byPPifDXJvWwN0RXC6D-FlFlbxiw_EEAP9eMQbcAABgzCENcTrZMFsyKX8QqyMx_3r5IEfcbg97_M5tGKfBq0qd_OHLjh_IcYiBwRGOtymsE04yiR_RjuXekRmcUgE/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+20.47.42%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-8878845094854244235</id><published>2010-09-28T01:26:00.001+09:00</published><updated>2010-09-28T01:28:09.618+09:00</updated><title type='text'>チャプター３</title><content type='html'>&lt;u&gt;Saying Hello to the Blender / SIO2 / iPhone World&lt;/u&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;前のチャプターの「A simple OpenGL Demo」については後日（もしくは今日？）、先生と話しながら読み進めていきます。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;なんせOpenGLだけではなく行列の知識も不足しがちなので１人じゃどうしよもないんです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;という訳で！！&lt;/div&gt;&lt;div&gt;今日は実際にBlenderに触れながらSIO2の使い方を勉強していきます。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;u&gt;An Overview of SIO2&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
iPhone SDKではBlenderで作った3Dモデルを扱うには、Pythonを使って.sio2と呼ばれる形式で書き出して扱う必要がある。本の画像そのそまま載せちゃいますゴメンなさい。&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuK89zls4bvtnuDxyRIMVWIXXR9rplvpBXyYGUqYwb_L7mSqbCHd7zGKI-8QxlW5Okx1ZM7if31GmBilG_hgQTYkcMS3tJ8r3SatscIssesG6IvG2JD40-YbBWpLKGeQcGkCoqjCHAm2yS/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+0.33.05%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;278&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuK89zls4bvtnuDxyRIMVWIXXR9rplvpBXyYGUqYwb_L7mSqbCHd7zGKI-8QxlW5Okx1ZM7if31GmBilG_hgQTYkcMS3tJ8r3SatscIssesG6IvG2JD40-YbBWpLKGeQcGkCoqjCHAm2yS/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+0.33.05%EF%BC%89.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;こんな感じでSIO2が働いている。&lt;br /&gt;
&lt;br /&gt;
始めに通常通りの使い方でBlenderでシーンを作成していくが、そのシーンをSIO2で使うためには決定的な違いがあるという。それは、texture channelのフォーマットが異なるということだ。&lt;br /&gt;
BlenderとiPhoneではそのフォーマットが違うらしい。。。←知識不足&lt;br /&gt;
そのBlenderのフォーマットをiPhone向けのフォーマットに変換するためのスクリプトが存在する。こういったフォーマットの変換を行ったBlenderのシーンの保存形式が.sio2である。&lt;br /&gt;
&lt;br /&gt;
作成した.sio2形式のファイルをチャプター１でも紹介したResourceディレクトリに格納する。（もちろんプロジェクトでの呼出も忘れずに。。。）&lt;br /&gt;
&lt;br /&gt;
そうすることによって.sio2のファイルがSIO2の恩恵を受けることが出来るようになる。&lt;br /&gt;
&lt;br /&gt;
・・・と。&lt;br /&gt;
SIO2の使い方の概念についてはココまで。&lt;br /&gt;
&lt;br /&gt;
次からはBlenderで3Dモデルを作っていくシーンになるが、そこまで記述するつもりはありませんｗｗ&lt;br /&gt;
&lt;br /&gt;
次の投稿はモデル作成後、如何に.sio2に変貌させるかってトコから行きます。&lt;br /&gt;
&lt;br /&gt;
さてと。&lt;br /&gt;
これから作業です。徹夜だァーイ！！&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/8878845094854244235/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_28.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/8878845094854244235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/8878845094854244235'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_28.html' title='チャプター３'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuK89zls4bvtnuDxyRIMVWIXXR9rplvpBXyYGUqYwb_L7mSqbCHd7zGKI-8QxlW5Okx1ZM7if31GmBilG_hgQTYkcMS3tJ8r3SatscIssesG6IvG2JD40-YbBWpLKGeQcGkCoqjCHAm2yS/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-28+0.33.05%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-1971690186774134306</id><published>2010-09-27T04:47:00.000+09:00</published><updated>2010-09-27T04:47:14.040+09:00</updated><title type='text'>チャプター２</title><content type='html'>&lt;u&gt;Introducing Graphics Programming in SIO2&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
そういや前回チャプターのタイトル書いてなかった。&lt;br /&gt;
これが有るか無いかではかなり分かりやすくなりますわなｗ&lt;br /&gt;
&lt;br /&gt;
今後、気をつけます。&lt;br /&gt;
&lt;br /&gt;
それと、ブログの記事の本文を分ける仕様にしてみました。&lt;br /&gt;
投稿が増えてくると重たくなりそうなので。。。&lt;br /&gt;
&lt;br /&gt;
これも一種のユニバーサルデザイン？ｗ&lt;br /&gt;
&lt;br /&gt;
さて。&lt;br /&gt;
余談はこれくらいにしておきますか。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
このチャプターでは、前回の投稿で紹介した「テンプレート」の具体的な使い方を学びながらOpenGLの使い方について学び、最終的にはテンプレートにOpenGLのコードを記述していく作業をするらしい。&lt;br /&gt;
&lt;br /&gt;
…感無量ッ。&lt;br /&gt;
&lt;br /&gt;
１歩１歩ではあるが、確実にiPhoneで3Dやるために歩みを進められそうな感じがするッ。&lt;br /&gt;
それではゴリゴリ読んでいきましょうー。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;The SIO2 Template&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
そういえば、、、OpenGLES自体も何も宣言しなきゃ使えるわけないのよね 笑&lt;br /&gt;
テンプレートはいろんなライブラリを参照してくれてるって説明は把握してたけど、OpenGLESもしっかり使えるようになってますハイ。&lt;br /&gt;
&lt;br /&gt;
初心者はAppendixから読み始めろとか言われたけど、正直今は我流で行列の変換とか勉強してる場合じゃないっす。先生と一緒に読みながらアレコレ聞かせていただこう。&lt;br /&gt;
&lt;br /&gt;
そして、いよいよtemplate.mmのコードに付いて具体的な説明がスタート。ﾜｸﾜｸ&lt;br /&gt;
&lt;br /&gt;
…初っ端から自動生成される著作権情報とファイル名の説明がッｗｗコメント文の書き方とかどうでもいいわｗｗｗ&lt;br /&gt;
まぁ、これは全てにおいて初心者に向けての本。こういうトコは割愛させていただきます。&lt;br /&gt;
&lt;br /&gt;
さて、テンプレートにはsio2.hというファイルが含まれていまして。&lt;br /&gt;
このファイルの中でsio2という名前のオブジェクトを宣言し、SIO2において使うエンジンやライブラリのインポート、構造体の宣言を行っている。SIO2を支えるという大きな役割を果たしているのだと。&lt;br /&gt;
このファイルを読むだけでかなり貴重なデータが得られそう。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; templateRender( &lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; )&lt;/div&gt;&lt;/blockquote&gt;続いてtemplateRenderというファンクションについて。&lt;br /&gt;
このメソッドではフレーム単位でのスクリーンへの描写を行っている。ここに記述した命令がすんごいスピードでループして3Dの描写をするのだそうだ。ゲームのようにフレームごとに変化を与えたい場合はこのメソッドに記述をすればいいらしい。&lt;br /&gt;
&lt;br /&gt;
デフォルトではここはOpenGLを呼び出すために最低限必要な要素のみで構成されている。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;color: #3f0b80; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;glMatrixMode&lt;span style=&quot;color: black;&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;color: #74492d;&quot;&gt;GL_MODELVIEW&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; );&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #3f0b80; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;glLoadIdentity&lt;span style=&quot;color: black;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #74492d; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #3f0b80;&quot;&gt;glClear&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;( &lt;/span&gt;GL_DEPTH_BUFFER_BIT&lt;span style=&quot;color: black;&quot;&gt; | &lt;/span&gt;GL_COLOR_BUFFER_BIT&lt;span style=&quot;color: black;&quot;&gt; );&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;ネットからの入れ知恵だと、glMatrixMode( GL_MODELVIEW )でコード内で使う座標系を行列を指定、glLoadIdentity( )で選択した行列を初期化、glClearでバッファを初期化。。。&lt;br /&gt;
何のこっちゃ。やっぱ3Dグラフィクスの基礎から勉強必要なんやね。。。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; templateShutdown( &lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; )&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;color: #1a870f; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;// Clean up&lt;/div&gt;&lt;div style=&quot;color: #37595d; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;sio2ResourceUnloadAll&lt;span style=&quot;color: black;&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;color: #558186;&quot;&gt;sio2&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #558186;&quot;&gt;_SIO2resource&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; );&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #558186;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;sio2&lt;span style=&quot;color: black;&quot;&gt;-&amp;gt;&lt;/span&gt;_SIO2resource&lt;span style=&quot;color: black;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #37595d;&quot;&gt;sio2ResourceFree&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;( &lt;/span&gt;sio2&lt;span style=&quot;color: black;&quot;&gt;-&amp;gt;&lt;/span&gt;_SIO2resource&lt;span style=&quot;color: black;&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #558186;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;sio2&lt;span style=&quot;color: black;&quot;&gt;-&amp;gt;&lt;/span&gt;_SIO2window&lt;span style=&quot;color: black;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #37595d;&quot;&gt;sio2WindowFree&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;( &lt;/span&gt;sio2&lt;span style=&quot;color: black;&quot;&gt;-&amp;gt;&lt;/span&gt;_SIO2window&lt;span style=&quot;color: black;&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #37595d; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #558186;&quot;&gt;sio2&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; = &lt;/span&gt;sio2Shutdown&lt;span style=&quot;color: black;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #c82a25;&quot;&gt;&lt;span style=&quot;color: #3f0b80;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(&lt;/span&gt;&quot;\nSIO2: shutdown...\n&quot;&lt;span style=&quot;color: black;&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;}&lt;/div&gt;&lt;/blockquote&gt;お次はこんなの。&lt;br /&gt;
SIO2エンジンを停止させるためのファンクション。これに関してはヘタに手を加えずそのまま使うことを推奨された。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; templateScreenTap( &lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; *_ptr, &lt;span style=&quot;color: #b414a1;&quot;&gt;unsigned&lt;/span&gt; &lt;span style=&quot;color: #b414a1;&quot;&gt;char&lt;/span&gt; _state )&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; templateScreenTouchMove( &lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; *_ptr )&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; templateScreenAccelerometer( &lt;span style=&quot;color: #b414a1;&quot;&gt;void&lt;/span&gt; *_ptr )&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 13.0px;&quot;&gt;}&lt;/div&gt;&lt;/blockquote&gt;そして最後にこの３つのファンクション。ここでiOSアプリケーションとの対話を行う。&lt;br /&gt;
templateScreenTapでスクリーンを指で押したり離したりしたとき、templateScreenTouchMoveでスクリーンをなぞっているとき、デバイスを振ったり傾けたりすることで加速度センサーが反応したときの３つのシチュエーションを想定して、それに応じて処理を記述する仕組みになっている。&lt;br /&gt;
&lt;br /&gt;
テンプレートの構造はこれで以上。&lt;br /&gt;
どのようにコードを追加していくかで、アプリケーションに変化をもたらすことになる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
えーと。&lt;br /&gt;
このチャプターを独学で進めることが出来るのはここまで。&lt;br /&gt;
&lt;br /&gt;
次からは実際にOpenGLのコーディングをしていくんだけどそれと一緒に行列どうこうってう知識が必要になってきます。なって来るはずです。&lt;br /&gt;
行列については付け焼き刃程度の知識しかないので、先生と共に読みすすめながら行列も勉強していたらと思う。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/1971690186774134306/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_27.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/1971690186774134306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/1971690186774134306'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post_27.html' title='チャプター２'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-728387306280140194</id><published>2010-09-27T01:11:00.003+09:00</published><updated>2010-09-27T01:16:44.639+09:00</updated><title type='text'>チャプター１まとめ</title><content type='html'>&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;前回の投稿が中途半端だったのは、その日にメンド臭くなって途中放棄したわけではない。&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;…まぁウソなんだが。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;ひとまず、チャプター１で記述してある内容についておさらい＆まとめてみようと思います。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
このチャプターはXcode、Blender、SIO2というiPhoneで3Dアプリケーションを作成する際の三種の神器の紹介。このソフトはこうっいたもので云々と、大まかな説明とインストール方法について記述してある。&lt;br /&gt;
&lt;br /&gt;
XcodeとBlenderはすでに知識として知っているところがほとんどなので、ここでは特に取り上げません。日本語のサイトでもココなんかよりよほど秀逸なサイトが勢ぞろいなのでそちらを参照してね。&lt;br /&gt;
&lt;br /&gt;
オレにとって重要なのはSIO2の記述。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SIO2ってのはBlenderで作ったモデルをiPhone上で動かすエンジンで、更に搭載されているライブラリを用いることで、そのモデルに様々物理計算や特殊効果も適用できちゃうスーパーなツールらしい。&lt;br /&gt;
&lt;br /&gt;
そして、SIO2を使って開発するためには&lt;a href=&quot;http://www.sio2interactive.com/SIO2_Free_Open_Source_3D_Game_Engine_for_iPad,_iPhone_and_iPod_Touch/SIO2_Free_Open_Source_3D_Game_Engine_for_iPad,_iPhone_and_iPod_Touch.html&quot;&gt;公式サイト&lt;/a&gt;からDLしたSIO2のファイルに含まれる「テンプレート」と呼ばれるXcodeのプロジェクトににゴリゴリとコードを記述していくとすげー楽ちん。&lt;br /&gt;
&lt;br /&gt;
なぜなら、そのテンプレートには既にSIO2で使える様々なライブラリが追加されていて、「Other Source -&amp;gt; template.mm」にコードをゴリゴリ記述するだけでそのライブラリを使えてしまうからだ。つまり、プロジェクトのメインループとなるのがtemplate.mmなのだ。&lt;br /&gt;
この本では主に、このtemplate.mmにコードを記述してく手法で開発プロジェクトのサンプルを紹介するそうだ。&lt;br /&gt;
&lt;br /&gt;
他にもSIO2のファイル群には実行するだけで起動するアプリケーションも数多く含まれていて、それだけでもSIO2のスゴさを確認することが出来るそーな。&lt;br /&gt;
確かに、赤いお猿さんや炎が出てきたり、仮想空間を移動できたりとなかなかすげーよSIO2。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ひとまずこんな所でチャプター１は終了。&lt;br /&gt;
&lt;br /&gt;
画像使ってないから見にくい！とか言わないよーに。あくまで個人メモなので。&lt;br /&gt;
&lt;br /&gt;
あ、質問とかあればコメント欄に書いてくだしあ。&lt;br /&gt;
出来るかぎり応対させていただいきます。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/728387306280140194/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/728387306280140194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/728387306280140194'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/blog-post.html' title='チャプター１まとめ'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-4319470319017540953</id><published>2010-09-25T17:30:00.000+09:00</published><updated>2010-09-25T17:30:51.778+09:00</updated><title type='text'>イライラ棒をiPheneで、しかも3Dでやることになってしまった。</title><content type='html'>とりあえず、どこから説明しようか。話せば長くなる。&lt;br /&gt;
&lt;br /&gt;
イライラ棒を画像をちょこちょこ動かすことで作ろうとしてた。&lt;br /&gt;
&lt;br /&gt;
↓&lt;br /&gt;
&lt;br /&gt;
中間報告で、イライラ棒とは！？的な議論と自分の現状（コースの絵の色で当たり判定出来るようになりましたー。）これから付けていきたい機能（色々なセンサーあるからそれ使うとオモロイと思いますぅ。）について発表。&lt;br /&gt;
&lt;br /&gt;
↓&lt;br /&gt;
&lt;br /&gt;
副査の先生より「3Dでやったら面白くね？＾＾」とご指摘。&lt;br /&gt;
&lt;br /&gt;
↓&lt;br /&gt;
&lt;br /&gt;
3Dでやることになったよー！！！！！！！&lt;br /&gt;
今までやったこと意味あったのかｗｗｗｗｗｗｗｗｗｗ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そういう訳で。&lt;br /&gt;
夏休みに入り、いかにiPhoneで3Dやるか検討開始。&lt;br /&gt;
&lt;br /&gt;
3Dてなんだよ？&lt;br /&gt;
iPhoneで3DっていったらOpenGL ES？&lt;br /&gt;
&lt;br /&gt;
調べていくうちにわかったこと。&lt;br /&gt;
&lt;br /&gt;
OpenGLだけでイライラ棒のようなコースを描写するのは無理なんじゃね？ｗ&lt;br /&gt;
不可能ってわけではないけど、コードだけそんなモノ記述したくねぇｗｗｗｗ&lt;br /&gt;
&lt;br /&gt;
さて。&lt;br /&gt;
やはりモデリングソフトとやらを探してみなきゃいけないようです。&lt;br /&gt;
&lt;br /&gt;
そしてさらに調べていくと、捜査線上にあるソフトの名前が。それが「Blender」。&lt;br /&gt;
&lt;br /&gt;
この辺ですでに夏休み4分の1終了のお知らせ。&lt;br /&gt;
他にもレポートとかあって、そこまで時間割けなかったと言い訳させてくだしあ。&lt;br /&gt;
&lt;br /&gt;
で、米国の教授にここまでの進捗を報告。&lt;br /&gt;
すると、あるテキストを紹介するあるメールが届いた。&lt;br /&gt;
&lt;br /&gt;
それがコチラ。どん&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-UaLu-Oo5Zc1y2rCz61uH-bDAQV3XCW9qN5HFy2dWp02q5ZVXSggf6VRgPK6Cc1Z4_XkBm_V4V8PyFeOx-SsoPPMtXAyCXgHXxeR-aN3-HWv_DRTI2kh6D1i-eW2A5YZJiIF09NaR-kyQ/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-24+19.49.23%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-UaLu-Oo5Zc1y2rCz61uH-bDAQV3XCW9qN5HFy2dWp02q5ZVXSggf6VRgPK6Cc1Z4_XkBm_V4V8PyFeOx-SsoPPMtXAyCXgHXxeR-aN3-HWv_DRTI2kh6D1i-eW2A5YZJiIF09NaR-kyQ/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-24+19.49.23%EF%BC%89.png&quot; width=&quot;259&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;3D for iPhone Apps with Blender and SIO2 Your Guide to Creating 3D Games&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
はい出た英語テキストー。&lt;br /&gt;
でも仕方ない。オレがやりたい事のすべてが載ってるんだものっ。てかSIO2ってナンだよ。&lt;br /&gt;
&lt;br /&gt;
やっぱり日本語のテキストは後手後手なんだよね。。。&lt;br /&gt;
今までの集大成として頑張りますかということで3D開発が本格的にスタート。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
それ以降、夏休み中はひたすらBlenderの基本的な使い方や、今まで勉強してなかった行列やベクトルについて、あるいは3Dってナンだ？ってとこから勉強してました。&lt;br /&gt;
&lt;br /&gt;
今まで授業でさえも3Dなんて扱ったことないから勉強する項目が盛り沢山。。。（MikuMikuDanceは遊びで数十分だけいじったことあるんだがね。）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そして今日。&lt;br /&gt;
ようやく全体的に勉強がキリいいとこ（その定義は定かではないが英語から逃げる時効）になったので、本腰入れて読み始めることにした。&lt;br /&gt;
&lt;br /&gt;
一章&lt;br /&gt;
主にソフトウェアのインストール方法やそれに関する説明。&lt;br /&gt;
iPhone SDKやある程度勉強してるBlenderの説明も含まれているのでその辺はショートカットして読んでいける。&lt;br /&gt;
&lt;br /&gt;
で、はじめましてSIOさん。&lt;br /&gt;
&lt;br /&gt;
まず、SIO2ってのはBlenderで作ったオブジェクトをiPhoneで読み込み＆動作させる3Dエンジンらしい。そのために.sioって形式に変換して動かすんだと。&lt;br /&gt;
&lt;br /&gt;
ほう。&lt;br /&gt;
そうなのかとしか言えない。&lt;br /&gt;
&lt;br /&gt;
んでもって、開発をするときには「テンプレート」ってのにガシガシ自分のコードを追加していっていくらしい。このコードの追加が開発の肝なんですな。&lt;br /&gt;
「テンプレート」にはその他に、いろんな計算や処理に用いるライブラリも含まれているので、単純なメソッドの記述だけでそういったものを用いることが出来る。&lt;br /&gt;
&lt;br /&gt;
８ページ。&lt;br /&gt;
&lt;br /&gt;
間違いなく教授にはSIO2ってナンだ。ってツッコミ入れられそうだけど。。。&lt;br /&gt;
1つ1つのファイルについて研究しろとか言われそうでビビッてます。&lt;br /&gt;
このへんはもう少し読んでいかなきゃいけないらしい。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/4319470319017540953/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/iphene3d.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/4319470319017540953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/4319470319017540953'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/09/iphene3d.html' title='イライラ棒をiPheneで、しかも3Dでやることになってしまった。'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-UaLu-Oo5Zc1y2rCz61uH-bDAQV3XCW9qN5HFy2dWp02q5ZVXSggf6VRgPK6Cc1Z4_XkBm_V4V8PyFeOx-SsoPPMtXAyCXgHXxeR-aN3-HWv_DRTI2kh6D1i-eW2A5YZJiIF09NaR-kyQ/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-09-24+19.49.23%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-3454189006450315914</id><published>2010-01-12T22:58:00.000+09:00</published><updated>2010-01-12T22:58:59.326+09:00</updated><title type='text'>Source File Organization</title><content type='html'>６章からは、もともと１つのファイルに記述していたファイルをクラス毎に複数のファイルに分割する手法を紹介している。&lt;br /&gt;
この要素はイライラ棒を作る上で非常に重要な要素になる。以前手を付けていたイライラ棒はmain.m１つに全てのコードを記述していたため、とても見づらいものになっていた。そこでiPhone Dev Centerで配布しているようなサンプルコードのようにクラス毎にファイルを分割して見やすいプロジェクトにすることを検討した。&lt;br /&gt;
しかし、サンプルコードのようにうまくコードを分割することができずにいたため、 こういった勉強をしたいと感じていたところだった。&lt;br /&gt;
&lt;br /&gt;
そんな前置きはさておき。。。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXAfPYgFth1dTDH6ywfuqXDfeNwQVTNgROSqAtoYnqUwOO9uOqYPOQOFQlJJj8HtM3wVroHiOkTJO3VSgA1GxGv3xa4dJemq_weTqVZkaMRjJVluI8qA1-LUQu3Y2X9dlg0C5HH0u2g0Cd/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.18.19+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXAfPYgFth1dTDH6ywfuqXDfeNwQVTNgROSqAtoYnqUwOO9uOqYPOQOFQlJJj8HtM3wVroHiOkTJO3VSgA1GxGv3xa4dJemq_weTqVZkaMRjJVluI8qA1-LUQu3Y2X9dlg0C5HH0u2g0Cd/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.18.19+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
まずはこのように記述されているTireクラスとEngineクラスを以下のようにそれぞれ分割していく。&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;Tire.h&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgEALsndYfAO_VH_e_rRgxjfpoSNfU6KZPMC84Fly6qUqD_3VEah2V2L917WnpjY6hGpYTGHlAPhbtUndpTPeZxxZgfVh7Q-jcqv06Vp1jtkcO0vRzZ0mOxa95JQG6BTZaCj1vRWWRWDer/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.22.42+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgEALsndYfAO_VH_e_rRgxjfpoSNfU6KZPMC84Fly6qUqD_3VEah2V2L917WnpjY6hGpYTGHlAPhbtUndpTPeZxxZgfVh7Q-jcqv06Vp1jtkcO0vRzZ0mOxa95JQG6BTZaCj1vRWWRWDer/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.22.42+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Tire.m&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWjEvjjarzGBnq0wXchM5jAMpOuT0XgEw7qW15jeBCn-dxrxp9NcEhpsFW5GnBvJzJQ0nWB_PM-0Vat4ELKaMKHBaOuQZsm8Q4UgMRnB4UmYOAyqwkKSzsHxb2kvOpNePnSOF_ZTAvX6xQ/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.22.58+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWjEvjjarzGBnq0wXchM5jAMpOuT0XgEw7qW15jeBCn-dxrxp9NcEhpsFW5GnBvJzJQ0nWB_PM-0Vat4ELKaMKHBaOuQZsm8Q4UgMRnB4UmYOAyqwkKSzsHxb2kvOpNePnSOF_ZTAvX6xQ/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.22.58+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Engine.h&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQRwnXhQcVCdsG9xRrvMngBeVXWHXetwYZOfLnIbDSendWprVdUanBOydHQ-iX5D4KrKZgywa_6RnaYMCPPwWpe-GL6M7zk3qimDNaqlbQm-3t2ePI7OItRTNSwrd5qRs7LBzfdddgr1ZA/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.23.12+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQRwnXhQcVCdsG9xRrvMngBeVXWHXetwYZOfLnIbDSendWprVdUanBOydHQ-iX5D4KrKZgywa_6RnaYMCPPwWpe-GL6M7zk3qimDNaqlbQm-3t2ePI7OItRTNSwrd5qRs7LBzfdddgr1ZA/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.23.12+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Engine.m&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMCaNFvTxFGvOqLMMEAx0H1vdDlKWB_zJ_x5akAAI9CHfgIzSQAk4H_kQDXMAIYTZnCKjkCZywrpwKZQwtpZrNMbojcCQVoXncEUb92xmxeqrjx65M_A_OaUHIx2a4T6F_3DHiK4KjptcT/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.23.22+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMCaNFvTxFGvOqLMMEAx0H1vdDlKWB_zJ_x5akAAI9CHfgIzSQAk4H_kQDXMAIYTZnCKjkCZywrpwKZQwtpZrNMbojcCQVoXncEUb92xmxeqrjx65M_A_OaUHIx2a4T6F_3DHiK4KjptcT/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.23.22+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
このように@interfaceを含む宣言部を.hファイル、@implementを含む実装部を.mファイルとして２つのファイルに分けて記述する。&lt;br /&gt;
この２つのファイル間の関連のことを&lt;u&gt;&lt;b&gt;Dependencies&lt;/b&gt;&lt;/u&gt;という。 &lt;br /&gt;
ここでのコツは.hファイルにでCocoa.hをインポートし、.mファイルで.hファイルをインポートすることでスーパークラスのNSObjectとCocoa.hを継承させるということだ。同じクラスの宣言と実装を違うファイルで行ったとしてもこのような継承をしっかりすれば問題ない。&lt;br /&gt;
&lt;br /&gt;
また、この組み合わせは常に.hファイルと.mファイルが１対１である必要はない。例えば１つの.hファイルを１００個の.mファイルでインポートしても問題はない。その逆もアリだ。&lt;br /&gt;
他にも、File1.hでFile2.hをインポートしてさらにFile2.hでFile3.hをインポートするというように、.hファイル内でさらに.hファイルをインポートすることも可能だ。&lt;br /&gt;
このとき最上位のFile3.hに変更があると、Xcodeはそれをインポートしている２つのファイルを再コンパイルする。そのためコンパイルには時間はかかってしまうが、そこで形成された繋がりは切れる事はない。&lt;br /&gt;
&lt;br /&gt;
こういった所でInheritanceの概念が活用されている。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/3454189006450315914/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/01/source-file-organization.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3454189006450315914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3454189006450315914'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2010/01/source-file-organization.html' title='Source File Organization'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXAfPYgFth1dTDH6ywfuqXDfeNwQVTNgROSqAtoYnqUwOO9uOqYPOQOFQlJJj8HtM3wVroHiOkTJO3VSgA1GxGv3xa4dJemq_weTqVZkaMRjJVluI8qA1-LUQu3Y2X9dlg0C5HH0u2g0Cd/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-01-05+7.18.19+PM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-2946691095357791510</id><published>2009-12-09T00:54:00.002+09:00</published><updated>2009-12-09T01:00:03.050+09:00</updated><title type='text'>Inheritance</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;３章のIndirectionの説明が終わったので、次に４章のInheritanceについて読み始めた。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;Inheritanceとは日本語にすると「継承」 。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;クラス同士で関係を持つときには２つの重要な要素があり、それがInheritanceとcomposition。Inheritanceという概念をマスターすることで、クラスを作った時にとその性質を他のクラスにも使うことができるという。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;最初の文章ではクラス同士の関係のことをInheritance、その関係を実際に構築することをcompositionと言っているようだがどうなのだろうか。うっし、実際に読み進めて行くことにしよう。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;&lt;b&gt;Why use Inheritance ?&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;まず、そもそもどうしてInheritanceという概念が必要になってくるのかということで、前回使っていたサンプルからCircleクラスとRectangleクラスの宣言を例にして解説していた。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQQckuZJBOp35umxCHsv4O2qsvcy7UElu2SeU1gJnKApjU5A9fgH48RCXjJ6zoMRIiHd_6DpjUb_aFNwvtNoHQZLAbSLNKLtUAX-0rY3zHFqe2is9zp3hqT4CQJebQzfDS6Zi2mWq63nBn/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+9.49.19+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQQckuZJBOp35umxCHsv4O2qsvcy7UElu2SeU1gJnKApjU5A9fgH48RCXjJ6zoMRIiHd_6DpjUb_aFNwvtNoHQZLAbSLNKLtUAX-0rY3zHFqe2is9zp3hqT4CQJebQzfDS6Zi2mWq63nBn/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+9.49.19+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOfQpHJVGjMzl1VdoPPGujMBOiRgLk-mhnjdjZCYGyWWS4em6YTaeKmaw-95j30hNLoN3nDBBazjYKYXWOzL-8KuEGoYDmD6I8v25YK1gbthDcHU6MC7ct-5Ff1nnFPi7Cvu54U6Y-UphP/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+9.49.35+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOfQpHJVGjMzl1VdoPPGujMBOiRgLk-mhnjdjZCYGyWWS4em6YTaeKmaw-95j30hNLoN3nDBBazjYKYXWOzL-8KuEGoYDmD6I8v25YK1gbthDcHU6MC7ct-5Ff1nnFPi7Cvu54U6Y-UphP/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+9.49.35+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ここではクラス名以外は全く同じ宣言をしている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そしてクラスの実行部でも宣言部と同様に、同じような命令を記述している。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjit66WvJQPEywihlnAoPaDcVLmHlcZsogPpPfnIgdR8CwYdrwk1vgTA_L5f5OSlKL5sqscnTntnF4eheJ_PRyxPVCAS4EO48HHxFz7cSB_nZrNi_n0yvsWNAOWoyoq1_MiG_od-dqwANHU/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+11.23.29+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjit66WvJQPEywihlnAoPaDcVLmHlcZsogPpPfnIgdR8CwYdrwk1vgTA_L5f5OSlKL5sqscnTntnF4eheJ_PRyxPVCAS4EO48HHxFz7cSB_nZrNi_n0yvsWNAOWoyoq1_MiG_od-dqwANHU/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+11.23.29+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztmm2MTX2epWZZbkBBXdxsOm8c0LIRRchVHCzWZHu0Vb4AblK7Y2TkZtn_tCcxsd-lAsen4zIBXeZZkapScle5uHlBCYsN53wwHGJqKUFonKVog7-_j388dNptKfbES9Vb5CU-vKjE5Ag/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+11.18.05+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztmm2MTX2epWZZbkBBXdxsOm8c0LIRRchVHCzWZHu0Vb4AblK7Y2TkZtn_tCcxsd-lAsen4zIBXeZZkapScle5uHlBCYsN53wwHGJqKUFonKVog7-_j388dNptKfbES9Vb5CU-vKjE5Ag/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+11.18.05+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;このように何度も同じ記述をしていると、１箇所でも記述ミスをしたときにめんどくさい。そういった問題をなくすためには、各クラスの違う箇所だけを残して、共通の宣言は他でまとめて宣言すればいい。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;つまり、このクラス宣言でいうdrawメソッドだけ残し、それ以外の宣言・実装をまとめてどこか違うクラスでまとめて行えばいいのだ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;その「Circleクラスはあそこのクラスを参考にして宣言・実装してくれ。」という命令のことをInheritanceという。代わりに仕事をさせるという意味では、これもIndirectionと言えるのか？&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;さっきから「どこかで」「あそこの」 という表現を使っていたが、Inhetitanceで参照されるクラスのことを&lt;b&gt;スーパークラス&lt;/b&gt;という。CircleクラスとRectangleクラスの宣言を行うクラスをshapeとすると、「ShapeはCircleとRectangleのスーパークラスである」と言える。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そのスーパークラスShapeを宣言することで、CircleとRectangleを宣言するときは常にsetFillColor :とsetBounds:が引き継がれることになる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;&lt;b&gt;Inheritance Syntax&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;では、このような機能を実装するために何が必要か見ていこう。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;まずは受け手側となるCircleクラスの宣言を変更する必要がある。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA1lXNsMZ40xpgBdElARg-W_4iAOhhpUNeQt5CLRyHJqoWTTeWRbqF4uwGtLBYtkvbAhhuUWoKb0oJ6JJLqar35dJDj1VSwjoa0gFNo63pPwhtjwzLjqCYAEF0KxTcjYBPBHj-wNUZNJP9/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.08.10+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA1lXNsMZ40xpgBdElARg-W_4iAOhhpUNeQt5CLRyHJqoWTTeWRbqF4uwGtLBYtkvbAhhuUWoKb0oJ6JJLqar35dJDj1VSwjoa0gFNo63pPwhtjwzLjqCYAEF0KxTcjYBPBHj-wNUZNJP9/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.08.10+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;Circleクラスの宣言についてはShapeクラスで宣言するので、ここではCircleクラスをShape型のクラスとしての宣言すれば問題ない。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そして、気になるShapeクラスの宣言だが、今までやってきた知識でまかなえるような記述だ 。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgivcHwLxq6__iCKhl49kxAU1gnZ1T34pLzRQSotSHtXpxjrFH1DFUDUfuHgi4ByH7_OAemsrVQfBxeVxPo9WzzeZ_desEf4OMBT_9qCrVmXMK1xBftJ_NhqjCQMulBZneUerKhLfNGR5FF/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.16.14+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgivcHwLxq6__iCKhl49kxAU1gnZ1T34pLzRQSotSHtXpxjrFH1DFUDUfuHgi4ByH7_OAemsrVQfBxeVxPo9WzzeZ_desEf4OMBT_9qCrVmXMK1xBftJ_NhqjCQMulBZneUerKhLfNGR5FF/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.16.14+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;クラスそのものはNSObject型で宣言し、CircleクラスやRectangleクラスで共に使う２つのインスタンス変数、３つのインスタンスメソッドを宣言する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;宣言部と同様、実装部もとても簡単な方法で記述している。まずはCircleクラスの実装部。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTt0IcmbEmAHI6ULhD8hHMP_VRcFNEzhbiA-H98KN3V4-VWG5xjyUvlu0JbUqMFjgrWdedW_4iOyx4ee6lCIJO_2wW3CyTaIVQAnnZbX2i-H5wJ5PaII9qb8b8lGRTs1zY3zOYJbF99DlN/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.28.24+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTt0IcmbEmAHI6ULhD8hHMP_VRcFNEzhbiA-H98KN3V4-VWG5xjyUvlu0JbUqMFjgrWdedW_4iOyx4ee6lCIJO_2wW3CyTaIVQAnnZbX2i-H5wJ5PaII9qb8b8lGRTs1zY3zOYJbF99DlN/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.28.24+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;drawメソッド以外は既にShapeクラスで実装されているので、ここで記述しない。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;なぜNSLogだけ残したかというと、当然のことだがコンソールに表示させたい内容はクラスによって違うためである。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そして、Shapeクラスの実装は以下のようになっている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrXUARW67WHyMTNjjXUbhd1-TTkGVYWfLvf3u5NvFMNHavqK1t3EflZJd15syu_Q8tmjP1Jn0lZ4tXnDwTr_BsEMucGo3VvRS1evOp5-TfRIWvLOepKWd6toK_2WQ0w7cn8x2itGRI1z6e/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.27.25+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrXUARW67WHyMTNjjXUbhd1-TTkGVYWfLvf3u5NvFMNHavqK1t3EflZJd15syu_Q8tmjP1Jn0lZ4tXnDwTr_BsEMucGo3VvRS1evOp5-TfRIWvLOepKWd6toK_2WQ0w7cn8x2itGRI1z6e/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-09+12.27.25+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;これも今までの知識で十分にまかなえる記述だ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;あえてコメントするなら、後ほど使うdrawメソッドを空白でここでも記述していることについて。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;drawメソッドは宣言こそ各クラスで共通して使うが、前述の通り実装方法はクラスによってそれぞれ異なる。なので本来ならばここで実装することは全く意味をなさない。しかし、Shapeクラスで宣言したからにはShapeクラスで実装しないとコンパイラが警告を出してしまう。そのため、とりあえず空白でも良いから警告を出させないためにとりあえず記述しちゃえということでこういった記述をしている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;さて。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;次からは「How Inheritance Works」ということでInheritanceが具体的にどのような働きをしているか図を用いて解説している。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ざっと見てみると「self」 という単語も出ているのでさらにOBJCの理解が深まりそうだ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;※少し雑談&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;英文の読解についてはあらゆる人の助言を受けた結果、このような結果にたどり着いた。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;u&gt;Q.英語を読めません！どうやったら読めるようになりますか？ &lt;br /&gt;
&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;u&gt;A1.ざっくり読む。翻訳するのではなく、その文章が何を言いたいのか理解する。 &lt;br /&gt;
&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;u&gt;A2.英語は読める、読めないじゃない。読む、読まない。&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ちょっと雑談になるが、去年スロベニアで出会った日本人の学生とチャットをする機会があった。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;その中で英語を読むコツを聞いたところ、２個目のアドバイスを貰った。 &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;英語では「I don&#39;t speak Japanese.」とは言うが、「I can&#39;t speak Japanese.」とは言わないそうな。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ラテン語などでも同じ言い回しをするらしい。だから「英語を喋れない」という表現をするのは日本くらい 。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;というか、自分の英語レベルでもそれくらいはなんとなく覚えていた。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;・・・確かに！！これも日本人の悪いところなのか。。。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;それを少し意識するだけで本のペースは少し早まった。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;重要そうでも分からない単語については辞書を引いているが、文章が何を訴えているのか分かるようになってきた。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;先生がいない間に少なくともあと２０ページ読んで、５章まではコンプリートしたい。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/2946691095357791510/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/12/inheritance.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/2946691095357791510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/2946691095357791510'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/12/inheritance.html' title='Inheritance'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQQckuZJBOp35umxCHsv4O2qsvcy7UElu2SeU1gJnKApjU5A9fgH48RCXjJ6zoMRIiHd_6DpjUb_aFNwvtNoHQZLAbSLNKLtUAX-0rY3zHFqe2is9zp3hqT4CQJebQzfDS6Zi2mWq63nBn/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-08+9.49.19+PM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-5332874176790472361</id><published>2009-12-01T23:09:00.001+09:00</published><updated>2009-12-01T23:16:19.995+09:00</updated><title type='text'>昨日の疑問点について</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;クラスを定義する際のメソッドの宣言でcやbといったものを使っている理由。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA_MI5El4MVSkzrpvGQwt3wWVYJYC0CtENzfSpySv9_1SWpz_Gl1rfl2aCfazKCduec7iQI7g0LZTZ9lUSB_Yv8z_Z2GMogkE4X9lW4ALPg18LPpXs0dpY0H9A-zqDfKF36ynYlD6RLjjm/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+12.39.36+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA_MI5El4MVSkzrpvGQwt3wWVYJYC0CtENzfSpySv9_1SWpz_Gl1rfl2aCfazKCduec7iQI7g0LZTZ9lUSB_Yv8z_Z2GMogkE4X9lW4ALPg18LPpXs0dpY0H9A-zqDfKF36ynYlD6RLjjm/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+12.39.36+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ここでいうcやbはダミーと言って、実際にメソッドが実行される際には関係のないもの。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;setfillColorを例にすると、このメソッドは実行されるとfillColorにShapeColor型の値を代入しろということをここでは述べている。具体的な値に関してはmain関数の方で準備されるので、ここではどのような値が入るかという例を示しているだけだ。なので、ここだけ見ると勝手にcを宣言して勝手にcを代入しているようにしか見えず、さらにこれらの命令が連続して行われるものとしてみてしまったために混乱が生じた。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ちなみに、CircleクラスのfillColorには以下の手順でkRedColorが割り当てられる。 &lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVmKLCUxhZSZpT7mTDFeeNlFH3-RS2SDqUY_PdEyeqeBToZYOz9u-t_C0gaPNmb1HS8EABjt6bt4MT6PMWkCPi3pL6RQfa6Yq5XF-mL9KoJEIGgMNbrjaFdIIyk9KW_1HOYt7L1ncmu2US/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+2.45.09+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVmKLCUxhZSZpT7mTDFeeNlFH3-RS2SDqUY_PdEyeqeBToZYOz9u-t_C0gaPNmb1HS8EABjt6bt4MT6PMWkCPi3pL6RQfa6Yq5XF-mL9KoJEIGgMNbrjaFdIIyk9KW_1HOYt7L1ncmu2US/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+2.45.09+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;main関数の中でCircleクラスのshapes[0]という構造体に対して、kRedColorという引数を用いてsetFillColorというメソッドを実行する。メソッドsetFillColorではfillColorに対してShapeColor型の値を代入しろと言っているので、与えられたkRedColorをfillColorに代入してやる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そしてもう１つの疑問点。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVsfp0Nc2PG3hyphenhyphenTjsGU9_YCmgzRN8-dheR2psjJzxM94spI9mzCY1NQ22v4sxbeDDGsEFvOECitDimlUT7VRlCXDkILB5NXh0GhoG4xJHMG7gunI1zwLtCMvJJXa1TtEL75pz9h1cO2g2T/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+1.53.46+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVsfp0Nc2PG3hyphenhyphenTjsGU9_YCmgzRN8-dheR2psjJzxM94spI9mzCY1NQ22v4sxbeDDGsEFvOECitDimlUT7VRlCXDkILB5NXh0GhoG4xJHMG7gunI1zwLtCMvJJXa1TtEL75pz9h1cO2g2T/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+1.53.46+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;main関数の最後でdrawShapes (shapes, 3)というメソッドを実行するように言っているが、そのカッコの中身の意味について。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;実際にメソッドがどのように宣言されているかチェクすればすぐに分かった。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMO2L4DfttFChyphenhyphenYuddBzkmPvG8t_ogjBYlchSgWdirrqG5QaZmOct9IBdIvzK9I7utu8_o9-Z5bFvxKpLQIwj9I-2NIfwnBARSKCm08EwLmFCWxDd9AO-CHfB0LwYqFlj1Lz_ANZxj3Yiw/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-01+10.55.18+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMO2L4DfttFChyphenhyphenYuddBzkmPvG8t_ogjBYlchSgWdirrqG5QaZmOct9IBdIvzK9I7utu8_o9-Z5bFvxKpLQIwj9I-2NIfwnBARSKCm08EwLmFCWxDd9AO-CHfB0LwYqFlj1Lz_ANZxj3Yiw/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-12-01+10.55.18+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;メソッドでは、id型のshapes[]とint型のcountに値を入れてから実行しろと言っている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;main関数で書かれていた(shapes, 3)というのはこれに割り当てるための引数だったのだ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;どのように使うかはこのメソッド内で定義している。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;for文で３回分ループさせてiを１ずつ増やし、shapes[i]をid型のshapeに代入、そのshapeを使ってdrawメソッドを実行する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;このように、メソッド間のやりとりを読み取るのに苦戦した。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;これがオブジェクト指向というものなのだろうか。自分でコードを全て記述するのは非常に困難だ。。。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;iPhone SDKの恩恵の大きさを知った。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;次回からは先生とマンツーマンで進めて行く。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;よろしくお願いします。&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/5332874176790472361/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/12/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/5332874176790472361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/5332874176790472361'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/12/blog-post.html' title='昨日の疑問点について'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA_MI5El4MVSkzrpvGQwt3wWVYJYC0CtENzfSpySv9_1SWpz_Gl1rfl2aCfazKCduec7iQI7g0LZTZ9lUSB_Yv8z_Z2GMogkE4X9lW4ALPg18LPpXs0dpY0H9A-zqDfKF36ynYlD6RLjjm/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+12.39.36+AM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-221526078582253710</id><published>2009-11-30T02:51:00.001+09:00</published><updated>2009-11-30T03:06:35.710+09:00</updated><title type='text'>Instantiating Objects</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;これまでクラスの宣言をして来たが、ここではクラスで使うオブジェクトの宣言をする。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8uV3JQ8rSFcwDhIx3W1eiW2fcAyUc23k9RE6_a3vL5BK1zEpkhdO8xOvNARXuySOtk0t-prQen1tIlEnYulQCKpwx15NIXrI0Z9W5J5cqxrz0Wa9Mo2bvpg5jeu5ZdvsewjMB-wyis2Zi/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+1.53.46+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8uV3JQ8rSFcwDhIx3W1eiW2fcAyUc23k9RE6_a3vL5BK1zEpkhdO8xOvNARXuySOtk0t-prQen1tIlEnYulQCKpwx15NIXrI0Z9W5J5cqxrz0Wa9Mo2bvpg5jeu5ZdvsewjMB-wyis2Zi/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+1.53.46+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ここで行う処理の事をinstantiatingという。（日本語直訳だと具体例を挙げる。また出たよこのindirectionみたいな要素。）&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;オブジェクトを具体的に示す（インスタンスを生成する）ためにその分メモリ領域を確保してそこに情報を格納する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;その確保する時には何らかの値を格納してメモリを初期化するのだが、その値はランダムな値ではなく一定の値が格納される事になっている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そのメモリ確保（allocation）と初期化が済んだ状態の事でインスタンスの生成が可能になる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;生成したインスタンスの値は「instance variables」 といい、「ivars」と表記する事もある。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;新しいオブジェクトを作るためにはまず、クラスにメッセージを送る必要がある。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;これはOBJCの特徴で、クラスをオブジェクトのように扱い、メッセージを送る事ができる。この事に関する英文は読めなかった。。。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;実際にコードの解説をしようと思う。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;まず最初にmain()があり、以前のサンプルShapes-Procedualでは配列を用意していたのに対し今回はidの属性を持つオブジェクト（だが中身は配列）を宣言している。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr9CVfyrAGwk-G2DY1EElLDxL0kUc0o3erSE_FerCB8qcUrQximsBwMS8YnhhQkIQI7SRlvnqRkjhD3W9GXDmQm1iKoAZ0OiFRp1nSQbqddsABJHcytS228k9NoPdqNi-Mkgz_EU60rGWY/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+2.44.14+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMXG3YZ1uYeBI-BVnAOgAFzBjnCvrjqOhe1mReDPTkQz-uQt5dFRmgv27SkHcJztLLnvmHwE7ZBQed__DM4CGYYfkwFfJTWl70_Qjolxyr_njzDribmi7koSuFtGiHXi694r92JKeTkxM/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+2.45.09+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMXG3YZ1uYeBI-BVnAOgAFzBjnCvrjqOhe1mReDPTkQz-uQt5dFRmgv27SkHcJztLLnvmHwE7ZBQed__DM4CGYYfkwFfJTWl70_Qjolxyr_njzDribmi7koSuFtGiHXi694r92JKeTkxM/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+2.45.09+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;shapes[0] = [Circle new];&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;このようにshapes[0]に対して[Circle new]というメッセージを送る事で図形ごとのオブジェクトを生成する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;さらにサンプルShapes-Procedualと違うところがある。それは図形の要素を、構造体で決められた値を使ってオブジェクトとして宣言しているところだ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;setBoundsのrect0は最初にShapeRectとして、の中でsetFillColorのkRedColorはShapeColorとしてそれぞれ構造体で宣言された値を忠実に使っている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;drawShapes (shapes, 3); &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そんな発狂するような処理（訳そのまま抜粋）を終えてこのようなコードを記述するとdrawShapesファンクションが実行されて画像描写が行われる。（最後のカッコの値はshapesの値を３つ使うという意味でいいのだろうか。。。）&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/221526078582253710/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/instantiating-objects.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/221526078582253710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/221526078582253710'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/instantiating-objects.html' title='Instantiating Objects'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8uV3JQ8rSFcwDhIx3W1eiW2fcAyUc23k9RE6_a3vL5BK1zEpkhdO8xOvNARXuySOtk0t-prQen1tIlEnYulQCKpwx15NIXrI0Z9W5J5cqxrz0Wa9Mo2bvpg5jeu5ZdvsewjMB-wyis2Zi/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+1.53.46+AM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-558846857617692298</id><published>2009-11-30T01:48:00.001+09:00</published><updated>2009-11-30T03:06:16.248+09:00</updated><title type='text'>The implementation Section</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;クラスの実装部の説明。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;@interfaceの記述はクラスのインタフェースの記述。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;この部分はAPI(Application Programmig Interface)またはTLA(Three-Letter Acronym)とも呼ばれる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;それに対してクラス内のオブジェクトの実際の仕事を@implementationで記述している。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEYPK-T-jz8wm8t9LSZPAaNLu-78fX4Xclyysg7jmoDO9-pVUN1oMVBzRFXoQPUkgZXHsqz8Ds9tW2nWQggI79DWAslV8LgRUa3A3F40DqzKZzrR9V6qxJmvUmQUsuyblnytPAYScgvTeA/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+12.39.36+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEYPK-T-jz8wm8t9LSZPAaNLu-78fX4Xclyysg7jmoDO9-pVUN1oMVBzRFXoQPUkgZXHsqz8Ds9tW2nWQggI79DWAslV8LgRUa3A3F40DqzKZzrR9V6qxJmvUmQUsuyblnytPAYScgvTeA/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+12.39.36+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&amp;nbsp; &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;@implementation Circle&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;このようにクラス名を@implementationのあとに記述する事でコンパイラに「ここがCricleクラスの肝だぞ」と宣言する。ここでは変数を扱う事が合っても「：」を付ける必要は無い。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;それ以降は具体的なメソッドの記述になるが、もちろん@interfaceで宣言したメソッドを記述できる。その際に宣言した順番と記述する順番は異なっても構わない。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;setFillColor:&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;最初のメソッドの記述。@interfaceで宣言した通り「：」 付きで宣言をする。C言語の記述のようにここでは最後に「；」を付ける必要は無い。また、変数の名前も変わっても構わない。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;この場合は内部でcという変数を使っているのでそのままにするとエラーになってしまう。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ただ、、、なぜここでわざわざcという変数を代入しているのかが分からない。。。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;その次のsetBoundsメソッドでも同じような記述はあるのだが。。。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;最後にdrawメソッドの記述。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ここではこれまでに宣言したboundやfillColorをコンソールに表示するだけ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;つまり変数を直接扱う事はしていないので、前述の通り「：」を付けないのだ。&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/558846857617692298/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/implementation-section.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/558846857617692298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/558846857617692298'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/implementation-section.html' title='The implementation Section'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEYPK-T-jz8wm8t9LSZPAaNLu-78fX4Xclyysg7jmoDO9-pVUN1oMVBzRFXoQPUkgZXHsqz8Ds9tW2nWQggI79DWAslV8LgRUa3A3F40DqzKZzrR9V6qxJmvUmQUsuyblnytPAYScgvTeA/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-30+12.39.36+AM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-8919607360112491554</id><published>2009-11-30T00:32:00.003+09:00</published><updated>2009-11-30T00:48:52.775+09:00</updated><title type='text'>OOP in Objective-C 2</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;昨日の続きから&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOQsnTqrUaQD_jvVY1Z6m2uENT049H6g5tbZ56ZTcLUHSYWHvONODnPh70iu5UsHb6s_0Nm6yOESvyGWcfIQAy5XT6Zq65JiCMRn19oQDDRx2EasvWyImJ4Jqw8N0zYB0tVnj8Vm-jdVwk/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOQsnTqrUaQD_jvVY1Z6m2uENT049H6g5tbZ56ZTcLUHSYWHvONODnPh70iu5UsHb6s_0Nm6yOESvyGWcfIQAy5XT6Zq65JiCMRn19oQDDRx2EasvWyImJ4Jqw8N0zYB0tVnj8Vm-jdVwk/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;- (void) setFillColor: (ShapeColor) fillColor;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;ここでいう「setFillClor:」はメソッド名。（：も含む）&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;それ以降の記述は返り値とその型を示す。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;fillColorはパラメータの名前。それをメソッドの本体の中でも使うことになるが、自分の好きな名前にできるのでとても便利。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&amp;nbsp;setBoundsメソッドでも同じことを言える。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;メソッドそのものが変数を扱うならば「：」を付ける、扱わなければ付けない。コレ鉄則。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;そして最後の@endで、コンパイラにCircleクラスの宣言の終了を告げる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;span id=&quot;goog_1259488136955&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1259488136956&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/8919607360112491554/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/oop-in-objective-c-2.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/8919607360112491554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/8919607360112491554'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/oop-in-objective-c-2.html' title='OOP in Objective-C 2'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOQsnTqrUaQD_jvVY1Z6m2uENT049H6g5tbZ56ZTcLUHSYWHvONODnPh70iu5UsHb6s_0Nm6yOESvyGWcfIQAy5XT6Zq65JiCMRn19oQDDRx2EasvWyImJ4Jqw8N0zYB0tVnj8Vm-jdVwk/s72-c/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-1178258661684601516</id><published>2009-11-29T00:16:00.000+09:00</published><updated>2009-11-29T00:16:06.514+09:00</updated><title type='text'>Implementing Object Orientation</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;前回のプログラムを改良したものとして03.10 - Shapes-Objectを紹介。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;まず１つ目の変更点はメソッドdrawShapesの中身だ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1VZ-qPtCd5ExoQAgMLLbXrH_sihyphenhyphenBN-iGEfdEAq3B7CGRJjLbsVkbWjk6qnyP7AOUCkyVXUuHOudKT3Z2mIuOGp9xGz79ih5Ry-TX1y2O8Z7XXDfKvUQ3NCJg95cPoDBqqxNKxbO9Te39/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-26+6.33.00+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1VZ-qPtCd5ExoQAgMLLbXrH_sihyphenhyphenBN-iGEfdEAq3B7CGRJjLbsVkbWjk6qnyP7AOUCkyVXUuHOudKT3Z2mIuOGp9xGz79ih5Ry-TX1y2O8Z7XXDfKvUQ3NCJg95cPoDBqqxNKxbO9Te39/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-26+6.33.00+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ここで変わった事は第一に、コードが短くなっていることだ。わざわざ図形ごとの処理を分けなくてもいい方法になっている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;次に、メソッドの最初に宣言しているshapes[]だ。これはid型の配列なのだが、ここでいうid型というのはオブジェクトを宣言する際に用いる。オブジェクトを呼び出す事はCの構造体を扱う事と同じような事なので、構造体へのidはポインタの１つといえる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;この場合は図形の種類を決める構造体へのポインタになる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;３つ目に変わった事は、中心のループだ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;forの内部ではまずid shapes = shapes[i]という宣言をする。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ここでは配列shapesのポインタを得て、id型のオブジェクトshapeという変数にそれを代入する。それぞれshapes[0] は赤い円のクラスCircleへのポインタ、shapes[1] は緑の長方形のクラスRectangleへのポインタ、shapes[2] は青い楕円のクラスOblateSpheroidへのポインタとなる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そして[shape draw]と表記することで、shapeというオブジェクトが drawというアクションを実行するようになる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&amp;nbsp;OBJCでは、このようにアクションがオブジェクトを呼び出すことを”アクションがオブジェクトにメッセージを送信する”と表現する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;[shape draw]で行われる処理の手順は以下のように示すことができる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;１、shapeがどのようなクラスであるか参照する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;２、コード内のどこにdrawというファンクションがあるか調べる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;３、shapeに含まれるクラスの情報を使ってdrawを実行する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&amp;nbsp;&lt;span style=&quot;font-size: large;&quot;&gt;OOP in OBJC&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;次に、これらの処理を行うために準備する重要な要素について説明。 &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;Interface：クラスの宣言。この要素を宣言することで先ほどのようにクラスCircleによってdrawというアクションが実行されるようになったりする。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;Implement：Interfaceの実装部。今回のコードの中ではdrawからCircleにメッセージを送信されたときにどのような処理をするか記述している。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJiRuhXEkUqk8CdiyPuKjNEo1urAInfno56EZhUbaHc5JNs7P8H7VA_1BZeizUHRHb2CibELl9TqEaWb0eyKnlAofrmbollwRXfOrcJHwO5_vdXpOM6LrwjqxsylYA9u4vGmeSB0eJT4Az/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJiRuhXEkUqk8CdiyPuKjNEo1urAInfno56EZhUbaHc5JNs7P8H7VA_1BZeizUHRHb2CibELl9TqEaWb0eyKnlAofrmbollwRXfOrcJHwO5_vdXpOM6LrwjqxsylYA9u4vGmeSB0eJT4Az/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;このコードはクラスCircleに関する宣言のみ行っている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;１行目：コンパイラに対してNSObject型のCircleという名前のクラスを作ることを宣言。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;２、３行目：このクラスを形成するために必要な要素の宣言を行う。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;最低限、ここまでの処理（クラスの作成、２つの要素の構成）でクラスの宣言は完了する。カッコを閉じることで宣言の終了をコンパイラに指示する。 &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;ちなみに、クラス内で自作した新たな宣言のことをクラスのオブジェクトに対するインスタンス変数という。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;以下はメソッド宣言と呼ばれるものになる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;こんな宣言をサポートしてるぞと言わんばかりに、その名前と返り値の型・名前を記述する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;OBJCのメソッドが返すことができる値として&lt;b&gt;「int, float, char, ポインタ, オブジェクトの参照, 構造体」&lt;/b&gt;があげられる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;まずは最もシンプルな- (void) draw;について。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;「-」がつくことで「これはOBJCのメソッドだぞ」という意味になる。特に返り値は持たない。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div id=&quot;greasedLightboxOverlay&quot;&gt;&lt;div id=&quot;greasedLightbox&quot;&gt;&lt;img id=&quot;greasedLightboxImage&quot; /&gt;&lt;br /&gt;
&lt;div id=&quot;greasedLightboxCaption&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;greasedLightboxMenu&quot;&gt;&lt;a href=&quot;http://shiftingpixel.com/lightbox/&quot; id=&quot;greasedLightboxTitleLink&quot;&gt;Greased Lightbox&lt;/a&gt;&lt;br /&gt;
&lt;div id=&quot;greasedLightboxButtons&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=5638054156537124187&amp;amp;postID=1178258661684601516&quot; id=&quot;greasedLightboxButtonRight&quot; title=&quot;次の画像&quot;&gt;→&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=5638054156537124187&amp;amp;postID=1178258661684601516&quot; id=&quot;greasedLightboxButtonLeft&quot; title=&quot;前の画像&quot;&gt;←&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=5638054156537124187&amp;amp;postID=1178258661684601516&quot; id=&quot;greasedLightboxButtonPlus&quot; title=&quot;画像を拡大 (+)&quot;&gt;+&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=5638054156537124187&amp;amp;postID=1178258661684601516&quot; id=&quot;greasedLightboxButtonMinus&quot; title=&quot;画像を縮小 (-)&quot;&gt;-&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=5638054156537124187&amp;amp;postID=1178258661684601516&quot; id=&quot;greasedLightboxButtonSlide&quot; title=&quot;スライドショーを開始/停止&quot;&gt;↻&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;greasedLightboxLoading&quot;&gt;&lt;img src=&quot;data:image/gif,GIF89a%80%80%A2%FF%FF%FF%DD%DD%DD%BB%BB%BB%99%99%99%FF%21%FF%0BNETSCAPE2.0%03%01%21%F9%04%05%05%04%2C%02%02%7C%7C%03%FFH%BA%DC%FE0%CA%06*%988%EB%CD%BB_%96%F5%8Ddibax%AEl%AB%A5%A2%2B%CF.%5C%D1x%3E%DA%97%EE%FF%12%1EpHT%08%8B%C8G%60%190%1DI%83%E8%20%F9a2K%CF%8FTJ%E5X%AD%A4lg%BB%EDj%BE%D7%9D%0DJ%8E%9A3%E8%B4G%BCis%DF%93%B8%9CC%CF%D8%EFx%12zMsk%1E%7FS%81%18%83%850%87%7F%8Apz%8D%29%8Fv%91%92q%1D%7D%12%88%98%99%9A%1B%9C%10%88%89%9Fy%93%A2%86%1A%9E%A7%8B%8C%2F%AB%18%A5%AE%A0_%AA%8E%AC%90%B5%B6%60%19%A3%0D%AD%BC%AF%A1%28%B2%9D%BB%C3%C4h%BF%C7%A4%C9%CA%A8%A9A%CE%0E%B4%D1%BD%7B%10%C0%0A%C2%D8%D2%C5%DB%D5%0C%D7%DF%CB%B7%13%B9%C8%97x%02%EE%02%2B%B0%D47%13%DEln%1E%EF%EF%27%F2%2B%F6Zd%3A%E8%1Bhb%9A%3Fv%F7%DAp%18%C8%90%84%C1%13%D0%C6%94%CB%C0%B0%E2%08f2%14%02%2Ce%8A%FFb%C5%86U%B4%B5%28%B3%91%A3%C0%8F%20%CD%CD%E2%08h%21%CA%94*%AD%B1l%99%EF%25%C1%98%0Bf%D2%1Ca%F3fL%9D%F8X%F4%D4g%0EhG%17C%F7%0D3%EA%23%A9%3B%5EL%818u%054%C9P%AA%2C%DF%D8%C4%FA%8F%CAK%AE%08%15Y%AC%15%F6%13%D1%A5%3Bq%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3B4%DA%F5%1B_a%7F%27%16%0D%0C%89%B0%E0h%86%13%F3%FD%A9%B8qV%95%8E%23%F7%85*%D9Me%B5%97%BB9f%1BY%AF%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%C6A%92r%D0Se1%C5%7Es8P%ED%24%26a%DF%1E2%13%EC%E4%1CUu%F7%06%12%D5wn%E0%C1%5D%0F%9FQ%1Cq%F2%83%3A1%3FO%F8Xzt%EA%C7%DB6%AFs%5D%EE%F4%95%D5%25%BEv%D1Z%7Cv%F0%BB%EB%05%CC%B8%DERz%99%BF%D5kd%11%91%C3y%F9%F3G%D4%2F%B1%DF%7E%FF%08%BC%F9%E9%F7_I%EDaW%12t%01%3EP%DE3%B3%B9g%DB%80%9A-%A8%20%84%8CAha%7C%90Q%A8%21%85%7Ea%B8%21%87%CE5%18%8C%88%E4%80%88%16%89%25%26%C8%A0%8A%19%A2%98%93%8B%11%B2%D8%21%8C1J%08%A0%89%9F%BC%97b%81%F8%C9x%A2%8F%F0%F1%D8%A3%8D%CA%E8%B8%23%91%2B%02%29%9C%92%232y%24%92%C6%A55%E4x%7E%E0H%9B%95%04%60%89%A1%22%5B%06%09%E5%8D4%9Aa%A4%97RNY%26%97X%D6x%E6%3ANv%91%A6%9ATr%D7%26%15of%19%26%99q%E6%28%A4%7Fs%929%E3Q%EE%7D%89%1Eiu%AAVhj%87%A2%96%E8i%8B%9A%D6%A8%A3%7B%AE%C6%27%A0%AE%24%21%F9%04%05%05%04%2C%0A%02W0%03%FFH%BA%DC%FE0%BE%40%83%BC8%EB%3D%2B%E5%60%28J%9E7%9E%28WVi%EBv%EB%2B%BF%EB7%DFgm%E1%3C%A8%F7%23%81P%90%FA%A1H%40k8D%19G%C9%24%8A%C9%CC%D5N%D1%E8%89%DA%1C%3DCYi%90%2B%F4%5EEa%B1%88%DC%F5%9DAi%F5%9A-%FAn%E2%CA%14%9B%E8%8E%C1%E3.%7B%21v%19x%2F%82*o%1A%86%87%88%1A%84%12xy%8Dd%89%7E%8B%803%7B%7C%19%90%10%928%8E%18%9E%0F%8C%A1t%9D%8A%91%99%3C%A2%24%AA%11%A6%AD%A8%17%A4%0C%B2%B3%B4%11%B6%0A%A0%40%0A%AE0%25%18%B8%3D%9B%B5%B0%0D%BE%BF%C0%BA%10%97%B1%AC%10%03%D4%03%81%CE%C2%C4%D2%0F%D5%D5K%D8G%DB%0D%DD%E4z%952%E2%E3%E4%E5c%5C3%E9%0C%EB%F2%EDm%E8Y%18%F2%F3se%3CZ%19%F9%FA%98%09%04%18P%E0%2F%82%EB%0C2C%C8N%21%10%86%DD%1C%1E%84HMb%0F%8A%15-%F2%C0%A8%F1%13%22%C3%8E%0F%09%82%0C%99o%E4%C4%86%26IZK%A9%21%01%21%F9%04%05%05%04%2C%1F%02W0%03%FFH%BA%DC%FEKH%01%AB%BD8%EB6%E7%FE%60%A8u%9Dh%9E%22%E9%A1l%5B%A9%92%2B%CF%04L%D1%F8i%E7%7C%B8%F7%A2%81p%C0%FA%9D%02%C8%40k8D%19E%C9%24%8A%C9%D4%C1%8EQ%A9%89%DA4%3DAYm%90%2B%F4%5E%A1a%E4%89%DC%05%7D5i%F1%98%9C%3A%83%E3K%B6%CF%BE%89%2B%F3tn%7Cpx.lD%1Fo%17%7E3%87%88%23%83%8B%8C%8Dz%1B%8A%15%93%94%95%19%97%0F%7E%7F4%87%96%91%98%859%A2%9C%A4%9E%A6%A7%9B%17%9D%0D%99%3C%A8%AF%AA%B1%AC%B3%B4%2F%B6%0B%9F%40%0B%BA%10%B0%0A%B2%40%8E%B5*%92%B8%C6%AE%C2%24%18%C5%BF%04%C1%0F%25%CAa.%DA%18%D4%28%D1%21%DB%DB%DD%812%CB%20%E2%E9%17%CD%2C%E7%1A%E9%F0%E4U8%D8%22%F0%F7%19%F39Q%26%F7%F8%D2%D2%FC%FD%03%D8C%E0%40%828%0C%C6C%C8C%A1%3A%86%09%1D%8E%83HC%E2D%8A3%2Cj%C3X%D1%14%22%C7%88%0A%3F%E6%08%29r%A4%C0%92%05%17%A2L%B9%D1D%02%21%F9%04%05%05%04%2C%3C%02BB%03%FEH4%3C%FA0%CAI%AB%9D%AD%DD%CD%7B%CD%99%27%8E%16%A8%91hj2i%3B%AE%8E%2Bo%F0l%7F%EB%ADG%B5%2B%FC%82%DD%A3%97%02%02%85%8B%5C%D1x%DC%11I%CC%A6%EE%29%8AJo%D4%8E%F5j%CBr%B6A%A1%F7%02F%26M%D0%ADy%5C%29%AF%95Z7%92%3D%91%CF%E1%1Bp%F8%8D%8E%5B%CDCx%16v%7C%20%7EQ%80%81%7Ddj%89%0At%0Az%8E%8F%82u%8D%93%90%92%93%94%21%8C%7F%9B%8A1%83%97.%01%A6%01%3B%84%28%A7%A7%3A%A4%AB%AC%AC7%AF%22%B1%B6%AEL%29%B6%BB%A9%5C%1E%BB%BC%A0%1B%C0%C1%C2%15%C4%C5%C6%12%C8%B7%CA%14%CC%B1%CE%13%D0%B2%D2%11%D4%AD%D6%D7%D8%A8%DA%10%DC%DE%CB%D0%E1%D3%C8%E4%CF%C4%E7%C7%CD%EA%EB%A6%ED%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FA%FD%FE%FF%03%024%26%B0%A0%C1%7F%A0%0E*4%B8i%A1%C3%81%93%1EJ%04%D0p%A2%C3%84%16%0F%12%CC%28%03PA%02%21%F9%04%05%05%04%2CN%0A0W%03%ECH%BA%BC%F3%A3%C9I%2B%85%D0%EA%7Dq%E6%E0%E6%7Da%29%8D%A4%A9%A2%A9Z%B2%91%BB%B2%B2%0B%D7%E6%8D%87p%BCs%BA%9F%28%28%B4%10%8B%1D%14r%A8%5CV%8ENF%2F%9A%1CQ%27%D3k%03z%E5%AA%04%60%81%91%B6%0B%87%9F%CD%9Ay%5D%C5%A8%D7%EC%B6%CF%04%AF%8F%1F%B2%BA%9D%AA%DF%3B%FB%7EH%80p%7C%83fQ%86%87%7F%89%60%85%8C%8E%86Z%89Z%0A%83%94%0B%80%97%0C%81%9A%95g%9D%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA*%01%AD%AE%AF%B0%B1%B05%B2%B5%B6%AF.%B7%BA%B6%AC%BB%BE%B8%26%BF%C2%01%BD%C3%BB%B9%C6%B7%B4%C9%B2%AB%CE%CF%D0%D1%D2%D3%D4%D52%D8%A5%D9%DC%A2%DC%DF%DA%9D%E0%DF%E2%E3%E4%94%E6%E3%E8%E9%E0Z%EC%ED%EE%EF%DD%F1%F2%D8%F4%F5%EB%F5%E1W%FA%FB%FC%F8%F9%D8%95K%17%8A%A0%B7s%A3%E6QH%21%F9%04%05%05%04%2CN%1F0W%03%E9H%BA%DC%FEn%C8%01%AB%BDmN%CC%3B%D1%A0%27F%608%8Eez%8A%A9%BAb%AD%FBV%B1%3C%93%B5v%D3%B9%BE%E3%3D%CA%2F%13%94%0C%81%BD%231%A8D%B6%9A%8F%1C%14R%9B%F2L%D6%AB0%CB%EDz%BF%E0%B0xL.%9B%CF%5C%81z%CDn%BB%DB%B3%B7%7C%CE%5E%D1%EF%F3%13%7E%0F%1F%F1%FF%02z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93%0A%01%96%01f%97%9Ac%9A%9D%98%60%9E%9D%A0%A1%A2%5D%A4%A1%A6%A7%9E%5C%AA%AB%AC%AD%9B%AF%B0%96%B2%B3%A9%B3%9FY%B8%B9%10%BE%2F%B8%15%BF%BF%C1%B0%BD%C4%C5%C6%A7%C8%C9%C07%CC%0F%CE%CA%D0%A5%D2%D3%CF%3B%B1%C3%D8b%D8%BE%DE%DDa%DF%D9_%DFc%E7%E3%E2%EA%D3%E1%EB%E6%EF%5E%E4%EE%CE%E8%F1%5D%E9%EC%F5%FA%FB%60%F9%FE%ED%E8%11%23%D3%CF%1E%B8%29%09%21%F9%04%05%05%04%2C%3C%3CBB%03%F9H%BA%DC%FEP%8DI%AB%BD6%EA%1D%B1%FF%15%27r%60%F9%8D%E8c%AEY%EAJl%FC%BE%B1%3C%BB%B5y%CF%F9%B9%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%10X%05%D4%D7u%9B%1Dm%BF%D8%AE%06%FC%15G%C8%60%B3%03MV3%D8mw%15%5E%96%CF%E9W%FB%1D%1Fv%F3%F3v%7FVz%82F%01%87%017%7FD%88%88%8AxC%8D%8D%3Bt%91%92%87%40l%96%97%89%99u%11%A1%1C%9C%98A%5C%1A%A2%A2%A4%A5O%AA%AA%1B%A5%A6L%AF%AB%B1%ADM%B5%A1%AC%B8K%BA%A3%BC%97%B9%BA%23%B2%B4%C4%22%C6%BE%C8%C9%BDH%BF%28%B2%9D%CF%CC%CD%9CJ%D0%D1%CAG%D9%DA%D7%D4%B5%2F%DBE%DD%DE%C2%DC%D5%E6%92%E8%E1%E2%E3B%E5%29%EFA%F1%F2%DFD%F5%EA%8E%E4%E9.%E7%FC%EDvLb%F7J%8F%83%7Cv%10%CAQ%E8%86%A1%1A%87%0F%0B%1A%7Ckb%83%04%21%F9%04%05%05%04%2C%1FNW0%03%FFH%BA%DC%FE0%CA7%EA%988%EB%CD%89%FD%5D%28%8E%CDg%5Ed%AAJ%A7%B9%BE%B0%D7%BAq%1D%CE%AD%ADkx%BE%FF%90%DE%09Ht%08i%C5%E4%11%94%2C.-M%E5%13%15%05N5%80%2C%E0%27%E8%0AFO%8CV%AB%F3z%C1%C7%C9x%5C3%9BIB%F5%3A%DBvwU8%C9%9C%1C%B3%9F%F1H%10%7Bt%13%01%86%01%18%7Ew%2BL%11%83%5B%85%87%86%89%8AQ%8F%90%11%92%92%13%8A%8BE%8F%18%9A%87%94%7EI%97%A1%A2%88%9C%9D%9F%83%19%A9%AA%AB%A5%40%A0%AF%A9%1A%AC%3F%B5%A8%A2%B8%95%3B%BB%BC%9A%1B%B95%A7%1A%B0%C4%C50%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%2B%D3%D4%C3%1C%CB%29%D9%DA%CF%DC%BF*%DF%12%C9%1D%DD%22%E5%E6%B7%21%E9%1C%C7%1D%E7%E8%EFX%AE%22%F3%F4%D7%1D%F7%F8%ED%22%E3B%F4%0B%91O%9F%1BokR%144%E8%89%04%1B%85%FFF%BC%A9%E2l%14%C5%28%0B%2F%FE%C8%A8Q%13%07%C7%8E5%3E%82%84%21r%E4%8Bj%26%89%84K%A9%20%01%21%F9%04%05%05%04%2C%0ANW0%03%FFH%BA%DC%0E%10%B8I%AB%BD8%B7%C8%B5%FF%E0%C7%8DRh%9E%219%A2lK%A9%A4%2B%B7%B0%3A%DF%60m%E3%3C%A6%C7%BD%E0%E4%B7%12%1A%17%C4%CEq%99%8C%2C%8FM%C8%13%DA%9CR%89%A7%806%20%1Cx%07%99dv%AB%ED%7D%BF%3E%1D%8AL%C6%9D%CF%97Z%8B%BDu%BF%BDi%25%8B%5E%BF%DD%D1qN.%7Ce%17%02%87%02%18%7FxV%04%84%5C%86%88%87%8A%8BV%8F%90%15%92%92%17%8B%8CK%8F%18%9A%88%94%7FO%97%A1%A2%89%9C%9D%9F%84%19%A9%AA%AB%A5F%A0%AF%A9%1A%ACB%B5%A8%A2%B8%95A%BB%BC%9A%1E%B98%A7%1A%B0%C4%C53%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%83%AE%1F%C9%1F%CB%7B%D9%DA%B7%20%DDc%7C%21%DB%DC%BF%DE%E5%E6%E1%E2%E9%26%C7%20%E7%E8%EF%20%D3%C8%ED%EE%D7%F6%EB%26%F3%FAo%D6%F4cW%CDD%3D%7EmP%FC%03%E8I%60%21%85%F9%0C%02jDm%18E%2B%0B%2F%0A%C9%A8%B1%12%07%C7%8E8%3E%82%9C%21r%A4%8C%82%26%8D%3C%E3%91%21%F9%04%05%05%04%2C%02%3CBB%03%F5H%04%DC%FE%F0%A9I%AB%BD%98%C6%CD%5D%FE%E0%D5%8D%5Ch%82d*%9D%AC%A5%BE%40%2BO%B0%3A%DF%F5x%EF%F9%B6%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%3D%05%AE%81%AA%0C%CB%D5%9A%B8%E0%AC7%13%06%8F%2F%E5%F0%99%92.%AF%09m%F7%3A%AE%3E%D3%CD%F6%3B%F6%AD%DF%E7%FB%7C%80%81w%3B%02%86%02Fz%85%87%86Et%3F%8C%8CDmA%91%87%8Ex%40%96%97%98WC%9B%8D%20%03%A3%03R%A0%88%A2%A4%A3P%A7%A8%19%AA%AAO%A7%21%B0%A4N%AD%B4%B5%A5M%B3%B9%B5%BC%A0%27%BA%BBK%BD%BE%B0L%C6%C7%B1J%B8%C2%BA%C5%C1%2C%C3%CD%CA%CB%B6I%D6%D7%ABH%DA%DB%C4F%DE%A9%BFG%E2%E3%C8%E1%E6%1F%D4%E9%9B%3B%ECE%D27%F0D%F23%F4%F5%91%40%F8%F9%A1%3F%FCo%26%0CH%60%60%40%83o%10%AEQx%86aCt%0410K%21%F9%04%05%05%04%2C%02%1F0W%03%E7H%BA%0C%0E%2C%CAIk%7B%CE%EAM%B1%E7%E0%E6%8Da%29%8D%A8%A9%A2%A9Z%B2%AD%CB%C1%B1%AC%D1%A4%7D%E3%98.%F2%0F%DF%0E%08%11v%88E%E3%04%A9%AC%9B%16%1C4%0A%9B%0E%7B%D6_%26%CB%EDz%BF%E0%B0xL.%9B%CF%A1%80z%CDn%BB%DB%B6%B7%7C%CEv%D1%EFs%15%7E%0F7%F1%FF%01z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93h%02%96%02f%97%9Ac%9A%9D%98%60%9E%9D_%A1%9E%5D%A4%A1Y%A7%A8V%AA%A5S%AD%A2%AF%B0%97%A9%B3%96%AC%B6%9F%B2%B3%5C%B62%03%C0%03%16%BC.%C1%C1%15%AD6%C6%C6%14%A7%3E%CB%C7%CD%B1%3A%D0%D1%D2%B7B%D5%C0b%DA%C2a%DD%DE%60%DD%DC%E3%DF%DA%E4%D5c%E5%E2%E7%E6%ED%EC%E9%EE%F1%F0%D0%E8%F5%F6%CB%F8%CC%F2%F7%F4%F9%FA%DB%D4%CD%D3wf%9F%86%04%21%F9%04%09%05%04%2C%02%02%7C%7C%03%FFH%BA%DC%FE0%CAI%AB%BD8%EB%CD%BB%FF%60%28%8Edi%9Eh%AA%AEl%EB%BEp%2C%CFt%0A%DC%40%AD%938%BE%FF%9E%5E%0FH%CC%08%7D%C5%24%E5%88T%3A%1D%CC%E6sJ%88%E6%A8X%2B%96%AA%DDN%BB%5E%A5%F5%1AN%82%CB%C41%DA%1C%5D%B3%99%EEt%3B%0E%3C%D3i%EA%BB%CE%AE%8F%E5%FB3%7C%80%12%01%85%01%21%82%83%0E%86%86%20%89%8A%0B%8C%92%1Fs%90%10%92%98%1D%95%96%8B%98%99%1BG%9C%11%9E%9E%1CC%A2%A3%A4%9F%A8%26%AA%A5%AC%AD%AE%93%B0%24%B2%B3%B4%23%B6%8C%B8%B5%BA%85%BC%22%BE%BF%C0%21%C2%C4%C1%B6%C7%B9%AE%CA%CB%A4%CD%BD%B7%D0%CE%87%D3%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%C0%02%E4%E5%E6%E7%E8%E7%DC%E9%EC%ED%E6%DA%EE%F1%ED%D9%F2%F5%EA%D8%F6%F9%02%F4%FA%F5%F0%FD%EE%D6%01L%27%AE%A0%C1%83%08%13*%5C%C8%B0%A1%C3%87h%06H%1Cq%C1%C4%8B%10%2Fj%A4%D8pP%A3F%86%1E7*%0C%E9%11%21%C9%92%07O%8A4%A8%F2%23%CB%96%13M%C2%94%98r%26%C7%970%13%CE%5C%98%93%E7I%87%24%2B%AE%ACH%23%D1%A3H%93*%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%16I%3B&quot; style=&quot;border: medium none;&quot; /&gt;&lt;br /&gt;
&lt;div id=&quot;greasedLightboxLoadingText&quot;&gt;読み込み中&lt;br /&gt;
&lt;/div&gt;&lt;div id=&quot;greasedLightboxLoadingHelp&quot;&gt;クリックでキャンセルします&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;greasedLightboxError&quot;&gt;&lt;div id=&quot;greasedLightboxErrorMessage&quot;&gt;画像が存在しません&lt;br /&gt;
&lt;/div&gt;&lt;div id=&quot;greasedLightboxErrorContext&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;img id=&quot;greasedLightboxPreload&quot; /&gt;&lt;img id=&quot;greasedLightboxPrefetch&quot; /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div id=&quot;greasedLightboxOverlay&quot;&gt;&lt;div id=&quot;greasedLightbox&quot;&gt;&lt;img id=&quot;greasedLightboxImage&quot; /&gt;&lt;div id=&quot;greasedLightboxCaption&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;greasedLightboxMenu&quot;&gt;&lt;a href=&quot;http://shiftingpixel.com/lightbox/&quot; id=&quot;greasedLightboxTitleLink&quot;&gt;Greased Lightbox&lt;/a&gt;&lt;div id=&quot;greasedLightboxButtons&quot;&gt;&lt;a href=&quot;&quot; id=&quot;greasedLightboxButtonRight&quot; title=&quot;次の画像&quot;&gt;→&lt;/a&gt;&lt;a href=&quot;&quot; id=&quot;greasedLightboxButtonLeft&quot; title=&quot;前の画像&quot;&gt;←&lt;/a&gt;&lt;a href=&quot;&quot; id=&quot;greasedLightboxButtonPlus&quot; title=&quot;画像を拡大 (+)&quot;&gt;+&lt;/a&gt;&lt;a href=&quot;&quot; id=&quot;greasedLightboxButtonMinus&quot; title=&quot;画像を縮小 (-)&quot;&gt;-&lt;/a&gt;&lt;a href=&quot;&quot; id=&quot;greasedLightboxButtonSlide&quot; title=&quot;スライドショーを開始/停止&quot;&gt;↻&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;greasedLightboxLoading&quot;&gt;&lt;img src=&quot;data:image/gif,GIF89a%80%80%A2%FF%FF%FF%DD%DD%DD%BB%BB%BB%99%99%99%FF%21%FF%0BNETSCAPE2.0%03%01%21%F9%04%05%05%04%2C%02%02%7C%7C%03%FFH%BA%DC%FE0%CA%06*%988%EB%CD%BB_%96%F5%8Ddibax%AEl%AB%A5%A2%2B%CF.%5C%D1x%3E%DA%97%EE%FF%12%1EpHT%08%8B%C8G%60%190%1DI%83%E8%20%F9a2K%CF%8FTJ%E5X%AD%A4lg%BB%EDj%BE%D7%9D%0DJ%8E%9A3%E8%B4G%BCis%DF%93%B8%9CC%CF%D8%EFx%12zMsk%1E%7FS%81%18%83%850%87%7F%8Apz%8D%29%8Fv%91%92q%1D%7D%12%88%98%99%9A%1B%9C%10%88%89%9Fy%93%A2%86%1A%9E%A7%8B%8C%2F%AB%18%A5%AE%A0_%AA%8E%AC%90%B5%B6%60%19%A3%0D%AD%BC%AF%A1%28%B2%9D%BB%C3%C4h%BF%C7%A4%C9%CA%A8%A9A%CE%0E%B4%D1%BD%7B%10%C0%0A%C2%D8%D2%C5%DB%D5%0C%D7%DF%CB%B7%13%B9%C8%97x%02%EE%02%2B%B0%D47%13%DEln%1E%EF%EF%27%F2%2B%F6Zd%3A%E8%1Bhb%9A%3Fv%F7%DAp%18%C8%90%84%C1%13%D0%C6%94%CB%C0%B0%E2%08f2%14%02%2Ce%8A%FFb%C5%86U%B4%B5%28%B3%91%A3%C0%8F%20%CD%CD%E2%08h%21%CA%94*%AD%B1l%99%EF%25%C1%98%0Bf%D2%1Ca%F3fL%9D%F8X%F4%D4g%0EhG%17C%F7%0D3%EA%23%A9%3B%5EL%818u%054%C9P%AA%2C%DF%D8%C4%FA%8F%CAK%AE%08%15Y%AC%15%F6%13%D1%A5%3Bq%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3B4%DA%F5%1B_a%7F%27%16%0D%0C%89%B0%E0h%86%13%F3%FD%A9%B8qV%95%8E%23%F7%85*%D9Me%B5%97%BB9f%1BY%AF%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%C6A%92r%D0Se1%C5%7Es8P%ED%24%26a%DF%1E2%13%EC%E4%1CUu%F7%06%12%D5wn%E0%C1%5D%0F%9FQ%1Cq%F2%83%3A1%3FO%F8Xzt%EA%C7%DB6%AFs%5D%EE%F4%95%D5%25%BEv%D1Z%7Cv%F0%BB%EB%05%CC%B8%DERz%99%BF%D5kd%11%91%C3y%F9%F3G%D4%2F%B1%DF%7E%FF%08%BC%F9%E9%F7_I%EDaW%12t%01%3EP%DE3%B3%B9g%DB%80%9A-%A8%20%84%8CAha%7C%90Q%A8%21%85%7Ea%B8%21%87%CE5%18%8C%88%E4%80%88%16%89%25%26%C8%A0%8A%19%A2%98%93%8B%11%B2%D8%21%8C1J%08%A0%89%9F%BC%97b%81%F8%C9x%A2%8F%F0%F1%D8%A3%8D%CA%E8%B8%23%91%2B%02%29%9C%92%232y%24%92%C6%A55%E4x%7E%E0H%9B%95%04%60%89%A1%22%5B%06%09%E5%8D4%9Aa%A4%97RNY%26%97X%D6x%E6%3ANv%91%A6%9ATr%D7%26%15of%19%26%99q%E6%28%A4%7Fs%929%E3Q%EE%7D%89%1Eiu%AAVhj%87%A2%96%E8i%8B%9A%D6%A8%A3%7B%AE%C6%27%A0%AE%24%21%F9%04%05%05%04%2C%0A%02W0%03%FFH%BA%DC%FE0%BE%40%83%BC8%EB%3D%2B%E5%60%28J%9E7%9E%28WVi%EBv%EB%2B%BF%EB7%DFgm%E1%3C%A8%F7%23%81P%90%FA%A1H%40k8D%19G%C9%24%8A%C9%CC%D5N%D1%E8%89%DA%1C%3DCYi%90%2B%F4%5EEa%B1%88%DC%F5%9DAi%F5%9A-%FAn%E2%CA%14%9B%E8%8E%C1%E3.%7B%21v%19x%2F%82*o%1A%86%87%88%1A%84%12xy%8Dd%89%7E%8B%803%7B%7C%19%90%10%928%8E%18%9E%0F%8C%A1t%9D%8A%91%99%3C%A2%24%AA%11%A6%AD%A8%17%A4%0C%B2%B3%B4%11%B6%0A%A0%40%0A%AE0%25%18%B8%3D%9B%B5%B0%0D%BE%BF%C0%BA%10%97%B1%AC%10%03%D4%03%81%CE%C2%C4%D2%0F%D5%D5K%D8G%DB%0D%DD%E4z%952%E2%E3%E4%E5c%5C3%E9%0C%EB%F2%EDm%E8Y%18%F2%F3se%3CZ%19%F9%FA%98%09%04%18P%E0%2F%82%EB%0C2C%C8N%21%10%86%DD%1C%1E%84HMb%0F%8A%15-%F2%C0%A8%F1%13%22%C3%8E%0F%09%82%0C%99o%E4%C4%86%26IZK%A9%21%01%21%F9%04%05%05%04%2C%1F%02W0%03%FFH%BA%DC%FEKH%01%AB%BD8%EB6%E7%FE%60%A8u%9Dh%9E%22%E9%A1l%5B%A9%92%2B%CF%04L%D1%F8i%E7%7C%B8%F7%A2%81p%C0%FA%9D%02%C8%40k8D%19E%C9%24%8A%C9%D4%C1%8EQ%A9%89%DA4%3DAYm%90%2B%F4%5E%A1a%E4%89%DC%05%7D5i%F1%98%9C%3A%83%E3K%B6%CF%BE%89%2B%F3tn%7Cpx.lD%1Fo%17%7E3%87%88%23%83%8B%8C%8Dz%1B%8A%15%93%94%95%19%97%0F%7E%7F4%87%96%91%98%859%A2%9C%A4%9E%A6%A7%9B%17%9D%0D%99%3C%A8%AF%AA%B1%AC%B3%B4%2F%B6%0B%9F%40%0B%BA%10%B0%0A%B2%40%8E%B5*%92%B8%C6%AE%C2%24%18%C5%BF%04%C1%0F%25%CAa.%DA%18%D4%28%D1%21%DB%DB%DD%812%CB%20%E2%E9%17%CD%2C%E7%1A%E9%F0%E4U8%D8%22%F0%F7%19%F39Q%26%F7%F8%D2%D2%FC%FD%03%D8C%E0%40%828%0C%C6C%C8C%A1%3A%86%09%1D%8E%83HC%E2D%8A3%2Cj%C3X%D1%14%22%C7%88%0A%3F%E6%08%29r%A4%C0%92%05%17%A2L%B9%D1D%02%21%F9%04%05%05%04%2C%3C%02BB%03%FEH4%3C%FA0%CAI%AB%9D%AD%DD%CD%7B%CD%99%27%8E%16%A8%91hj2i%3B%AE%8E%2Bo%F0l%7F%EB%ADG%B5%2B%FC%82%DD%A3%97%02%02%85%8B%5C%D1x%DC%11I%CC%A6%EE%29%8AJo%D4%8E%F5j%CBr%B6A%A1%F7%02F%26M%D0%ADy%5C%29%AF%95Z7%92%3D%91%CF%E1%1Bp%F8%8D%8E%5B%CDCx%16v%7C%20%7EQ%80%81%7Ddj%89%0At%0Az%8E%8F%82u%8D%93%90%92%93%94%21%8C%7F%9B%8A1%83%97.%01%A6%01%3B%84%28%A7%A7%3A%A4%AB%AC%AC7%AF%22%B1%B6%AEL%29%B6%BB%A9%5C%1E%BB%BC%A0%1B%C0%C1%C2%15%C4%C5%C6%12%C8%B7%CA%14%CC%B1%CE%13%D0%B2%D2%11%D4%AD%D6%D7%D8%A8%DA%10%DC%DE%CB%D0%E1%D3%C8%E4%CF%C4%E7%C7%CD%EA%EB%A6%ED%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FA%FD%FE%FF%03%024%26%B0%A0%C1%7F%A0%0E*4%B8i%A1%C3%81%93%1EJ%04%D0p%A2%C3%84%16%0F%12%CC%28%03PA%02%21%F9%04%05%05%04%2CN%0A0W%03%ECH%BA%BC%F3%A3%C9I%2B%85%D0%EA%7Dq%E6%E0%E6%7Da%29%8D%A4%A9%A2%A9Z%B2%91%BB%B2%B2%0B%D7%E6%8D%87p%BCs%BA%9F%28%28%B4%10%8B%1D%14r%A8%5CV%8ENF%2F%9A%1CQ%27%D3k%03z%E5%AA%04%60%81%91%B6%0B%87%9F%CD%9Ay%5D%C5%A8%D7%EC%B6%CF%04%AF%8F%1F%B2%BA%9D%AA%DF%3B%FB%7EH%80p%7C%83fQ%86%87%7F%89%60%85%8C%8E%86Z%89Z%0A%83%94%0B%80%97%0C%81%9A%95g%9D%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA*%01%AD%AE%AF%B0%B1%B05%B2%B5%B6%AF.%B7%BA%B6%AC%BB%BE%B8%26%BF%C2%01%BD%C3%BB%B9%C6%B7%B4%C9%B2%AB%CE%CF%D0%D1%D2%D3%D4%D52%D8%A5%D9%DC%A2%DC%DF%DA%9D%E0%DF%E2%E3%E4%94%E6%E3%E8%E9%E0Z%EC%ED%EE%EF%DD%F1%F2%D8%F4%F5%EB%F5%E1W%FA%FB%FC%F8%F9%D8%95K%17%8A%A0%B7s%A3%E6QH%21%F9%04%05%05%04%2CN%1F0W%03%E9H%BA%DC%FEn%C8%01%AB%BDmN%CC%3B%D1%A0%27F%608%8Eez%8A%A9%BAb%AD%FBV%B1%3C%93%B5v%D3%B9%BE%E3%3D%CA%2F%13%94%0C%81%BD%231%A8D%B6%9A%8F%1C%14R%9B%F2L%D6%AB0%CB%EDz%BF%E0%B0xL.%9B%CF%5C%81z%CDn%BB%DB%B3%B7%7C%CE%5E%D1%EF%F3%13%7E%0F%1F%F1%FF%02z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93%0A%01%96%01f%97%9Ac%9A%9D%98%60%9E%9D%A0%A1%A2%5D%A4%A1%A6%A7%9E%5C%AA%AB%AC%AD%9B%AF%B0%96%B2%B3%A9%B3%9FY%B8%B9%10%BE%2F%B8%15%BF%BF%C1%B0%BD%C4%C5%C6%A7%C8%C9%C07%CC%0F%CE%CA%D0%A5%D2%D3%CF%3B%B1%C3%D8b%D8%BE%DE%DDa%DF%D9_%DFc%E7%E3%E2%EA%D3%E1%EB%E6%EF%5E%E4%EE%CE%E8%F1%5D%E9%EC%F5%FA%FB%60%F9%FE%ED%E8%11%23%D3%CF%1E%B8%29%09%21%F9%04%05%05%04%2C%3C%3CBB%03%F9H%BA%DC%FEP%8DI%AB%BD6%EA%1D%B1%FF%15%27r%60%F9%8D%E8c%AEY%EAJl%FC%BE%B1%3C%BB%B5y%CF%F9%B9%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%10X%05%D4%D7u%9B%1Dm%BF%D8%AE%06%FC%15G%C8%60%B3%03MV3%D8mw%15%5E%96%CF%E9W%FB%1D%1Fv%F3%F3v%7FVz%82F%01%87%017%7FD%88%88%8AxC%8D%8D%3Bt%91%92%87%40l%96%97%89%99u%11%A1%1C%9C%98A%5C%1A%A2%A2%A4%A5O%AA%AA%1B%A5%A6L%AF%AB%B1%ADM%B5%A1%AC%B8K%BA%A3%BC%97%B9%BA%23%B2%B4%C4%22%C6%BE%C8%C9%BDH%BF%28%B2%9D%CF%CC%CD%9CJ%D0%D1%CAG%D9%DA%D7%D4%B5%2F%DBE%DD%DE%C2%DC%D5%E6%92%E8%E1%E2%E3B%E5%29%EFA%F1%F2%DFD%F5%EA%8E%E4%E9.%E7%FC%EDvLb%F7J%8F%83%7Cv%10%CAQ%E8%86%A1%1A%87%0F%0B%1A%7Ckb%83%04%21%F9%04%05%05%04%2C%1FNW0%03%FFH%BA%DC%FE0%CA7%EA%988%EB%CD%89%FD%5D%28%8E%CDg%5Ed%AAJ%A7%B9%BE%B0%D7%BAq%1D%CE%AD%ADkx%BE%FF%90%DE%09Ht%08i%C5%E4%11%94%2C.-M%E5%13%15%05N5%80%2C%E0%27%E8%0AFO%8CV%AB%F3z%C1%C7%C9x%5C3%9BIB%F5%3A%DBvwU8%C9%9C%1C%B3%9F%F1H%10%7Bt%13%01%86%01%18%7Ew%2BL%11%83%5B%85%87%86%89%8AQ%8F%90%11%92%92%13%8A%8BE%8F%18%9A%87%94%7EI%97%A1%A2%88%9C%9D%9F%83%19%A9%AA%AB%A5%40%A0%AF%A9%1A%AC%3F%B5%A8%A2%B8%95%3B%BB%BC%9A%1B%B95%A7%1A%B0%C4%C50%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%2B%D3%D4%C3%1C%CB%29%D9%DA%CF%DC%BF*%DF%12%C9%1D%DD%22%E5%E6%B7%21%E9%1C%C7%1D%E7%E8%EFX%AE%22%F3%F4%D7%1D%F7%F8%ED%22%E3B%F4%0B%91O%9F%1BokR%144%E8%89%04%1B%85%FFF%BC%A9%E2l%14%C5%28%0B%2F%FE%C8%A8Q%13%07%C7%8E5%3E%82%84%21r%E4%8Bj%26%89%84K%A9%20%01%21%F9%04%05%05%04%2C%0ANW0%03%FFH%BA%DC%0E%10%B8I%AB%BD8%B7%C8%B5%FF%E0%C7%8DRh%9E%219%A2lK%A9%A4%2B%B7%B0%3A%DF%60m%E3%3C%A6%C7%BD%E0%E4%B7%12%1A%17%C4%CEq%99%8C%2C%8FM%C8%13%DA%9CR%89%A7%806%20%1Cx%07%99dv%AB%ED%7D%BF%3E%1D%8AL%C6%9D%CF%97Z%8B%BDu%BF%BDi%25%8B%5E%BF%DD%D1qN.%7Ce%17%02%87%02%18%7FxV%04%84%5C%86%88%87%8A%8BV%8F%90%15%92%92%17%8B%8CK%8F%18%9A%88%94%7FO%97%A1%A2%89%9C%9D%9F%84%19%A9%AA%AB%A5F%A0%AF%A9%1A%ACB%B5%A8%A2%B8%95A%BB%BC%9A%1E%B98%A7%1A%B0%C4%C53%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%83%AE%1F%C9%1F%CB%7B%D9%DA%B7%20%DDc%7C%21%DB%DC%BF%DE%E5%E6%E1%E2%E9%26%C7%20%E7%E8%EF%20%D3%C8%ED%EE%D7%F6%EB%26%F3%FAo%D6%F4cW%CDD%3D%7EmP%FC%03%E8I%60%21%85%F9%0C%02jDm%18E%2B%0B%2F%0A%C9%A8%B1%12%07%C7%8E8%3E%82%9C%21r%A4%8C%82%26%8D%3C%E3%91%21%F9%04%05%05%04%2C%02%3CBB%03%F5H%04%DC%FE%F0%A9I%AB%BD%98%C6%CD%5D%FE%E0%D5%8D%5Ch%82d*%9D%AC%A5%BE%40%2BO%B0%3A%DF%F5x%EF%F9%B6%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%3D%05%AE%81%AA%0C%CB%D5%9A%B8%E0%AC7%13%06%8F%2F%E5%F0%99%92.%AF%09m%F7%3A%AE%3E%D3%CD%F6%3B%F6%AD%DF%E7%FB%7C%80%81w%3B%02%86%02Fz%85%87%86Et%3F%8C%8CDmA%91%87%8Ex%40%96%97%98WC%9B%8D%20%03%A3%03R%A0%88%A2%A4%A3P%A7%A8%19%AA%AAO%A7%21%B0%A4N%AD%B4%B5%A5M%B3%B9%B5%BC%A0%27%BA%BBK%BD%BE%B0L%C6%C7%B1J%B8%C2%BA%C5%C1%2C%C3%CD%CA%CB%B6I%D6%D7%ABH%DA%DB%C4F%DE%A9%BFG%E2%E3%C8%E1%E6%1F%D4%E9%9B%3B%ECE%D27%F0D%F23%F4%F5%91%40%F8%F9%A1%3F%FCo%26%0CH%60%60%40%83o%10%AEQx%86aCt%0410K%21%F9%04%05%05%04%2C%02%1F0W%03%E7H%BA%0C%0E%2C%CAIk%7B%CE%EAM%B1%E7%E0%E6%8Da%29%8D%A8%A9%A2%A9Z%B2%AD%CB%C1%B1%AC%D1%A4%7D%E3%98.%F2%0F%DF%0E%08%11v%88E%E3%04%A9%AC%9B%16%1C4%0A%9B%0E%7B%D6_%26%CB%EDz%BF%E0%B0xL.%9B%CF%A1%80z%CDn%BB%DB%B6%B7%7C%CEv%D1%EFs%15%7E%0F7%F1%FF%01z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93h%02%96%02f%97%9Ac%9A%9D%98%60%9E%9D_%A1%9E%5D%A4%A1Y%A7%A8V%AA%A5S%AD%A2%AF%B0%97%A9%B3%96%AC%B6%9F%B2%B3%5C%B62%03%C0%03%16%BC.%C1%C1%15%AD6%C6%C6%14%A7%3E%CB%C7%CD%B1%3A%D0%D1%D2%B7B%D5%C0b%DA%C2a%DD%DE%60%DD%DC%E3%DF%DA%E4%D5c%E5%E2%E7%E6%ED%EC%E9%EE%F1%F0%D0%E8%F5%F6%CB%F8%CC%F2%F7%F4%F9%FA%DB%D4%CD%D3wf%9F%86%04%21%F9%04%09%05%04%2C%02%02%7C%7C%03%FFH%BA%DC%FE0%CAI%AB%BD8%EB%CD%BB%FF%60%28%8Edi%9Eh%AA%AEl%EB%BEp%2C%CFt%0A%DC%40%AD%938%BE%FF%9E%5E%0FH%CC%08%7D%C5%24%E5%88T%3A%1D%CC%E6sJ%88%E6%A8X%2B%96%AA%DDN%BB%5E%A5%F5%1AN%82%CB%C41%DA%1C%5D%B3%99%EEt%3B%0E%3C%D3i%EA%BB%CE%AE%8F%E5%FB3%7C%80%12%01%85%01%21%82%83%0E%86%86%20%89%8A%0B%8C%92%1Fs%90%10%92%98%1D%95%96%8B%98%99%1BG%9C%11%9E%9E%1CC%A2%A3%A4%9F%A8%26%AA%A5%AC%AD%AE%93%B0%24%B2%B3%B4%23%B6%8C%B8%B5%BA%85%BC%22%BE%BF%C0%21%C2%C4%C1%B6%C7%B9%AE%CA%CB%A4%CD%BD%B7%D0%CE%87%D3%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%C0%02%E4%E5%E6%E7%E8%E7%DC%E9%EC%ED%E6%DA%EE%F1%ED%D9%F2%F5%EA%D8%F6%F9%02%F4%FA%F5%F0%FD%EE%D6%01L%27%AE%A0%C1%83%08%13*%5C%C8%B0%A1%C3%87h%06H%1Cq%C1%C4%8B%10%2Fj%A4%D8pP%A3F%86%1E7*%0C%E9%11%21%C9%92%07O%8A4%A8%F2%23%CB%96%13M%C2%94%98r%26%C7%970%13%CE%5C%98%93%E7I%87%24%2B%AE%ACH%23%D1%A3H%93*%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%16I%3B&quot; style=&quot;border: medium none;&quot; /&gt;&lt;div id=&quot;greasedLightboxLoadingText&quot;&gt;読み込み中&lt;br /&gt;
&lt;/div&gt;&lt;div id=&quot;greasedLightboxLoadingHelp&quot;&gt;クリックでキャンセルします&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;greasedLightboxError&quot;&gt;&lt;div id=&quot;greasedLightboxErrorMessage&quot;&gt;画像が存在しません&lt;br /&gt;
&lt;/div&gt;&lt;div id=&quot;greasedLightboxErrorContext&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;img id=&quot;greasedLightboxPreload&quot; /&gt;&lt;img id=&quot;greasedLightboxPrefetch&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/1178258661684601516/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/implementing-object-orientation.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/1178258661684601516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/1178258661684601516'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/implementing-object-orientation.html' title='Implementing Object Orientation'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1VZ-qPtCd5ExoQAgMLLbXrH_sihyphenhyphenBN-iGEfdEAq3B7CGRJjLbsVkbWjk6qnyP7AOUCkyVXUuHOudKT3Z2mIuOGp9xGz79ih5Ry-TX1y2O8Z7XXDfKvUQ3NCJg95cPoDBqqxNKxbO9Te39/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-26+6.33.00+PM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-3136770199594329417</id><published>2009-11-25T19:53:00.005+09:00</published><updated>2009-11-25T20:41:03.208+09:00</updated><title type='text'>Procedural Programming</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;Object-oriented programmming（以下OOP）においてIndirectionは重要な要素になっている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;最大の特徴はコードを呼び出すという事だ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そこで、説明のために用いていたサンプルコード「03.08 Shapes-Procedural」の解説に入ろうと思う。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9siO7OhTU-9y8aXlceZY0lOfVGH40pJaFHawSBan3GXk8ACwhNczovhgVN4woXHvYJp4JkGM1v8mtMKAct4IEpayM0HvECuvNhJv6pZ2rYYPVXG-TW4Ec4_1ODMA-2Zm1tm-YNEBhp9-E/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-25+12.35.47+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9siO7OhTU-9y8aXlceZY0lOfVGH40pJaFHawSBan3GXk8ACwhNczovhgVN4woXHvYJp4JkGM1v8mtMKAct4IEpayM0HvECuvNhJv6pZ2rYYPVXG-TW4Ec4_1ODMA-2Zm1tm-YNEBhp9-E/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-25+12.35.47+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;まず始めに 、プログラム内部で使う構造体をenum型の列挙で宣言する。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;kCircle, kRectangle, kOblateSpheroidの３つはShapeTypeという要素、kRedColor, kGreenColor, kBlueColorの３つはShapeColorという要素に含まれる。また、このプログラムでは使わないが、kCircleには０、kOblateSperoidには１といった番号が構造体に含まれる順番にバックグラウンドでは割り振られている。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;次に、ShapeRectという構造体にはint型のX, Y, width, heightが含まれる。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;このShapeRectや最後のShapeという構造体を宣言する時にenum型にしなかったのは、ShapeType型のtypeという変数のように、その内部で属性を持つ変数を定義するためである。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;コードの手順とは異なるが、次はmain関数内の説明。 &lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHU7jxXBcFtT3_p50AugTPkrcmGz0ZW16zTpwHiK9ZHd40sOjZMEjScE_w2Ist53tr0srecxg6Ws7iUkHH5U_V1rEsiPS8fqbaoq3YIAfM25ZlZX7vxSXC2DddZ88Gu8S5Xa6STJe83yCW/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-25+12.50.03+AM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHU7jxXBcFtT3_p50AugTPkrcmGz0ZW16zTpwHiK9ZHd40sOjZMEjScE_w2Ist53tr0srecxg6Ws7iUkHH5U_V1rEsiPS8fqbaoq3YIAfM25ZlZX7vxSXC2DddZ88Gu8S5Xa6STJe83yCW/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-25+12.50.03+AM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;初めに、 Shape型のshapesという変数を３つ用意する。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;ShapeRect型のrect0という変数に対して４つの値を代入する。これは先ほど宣言したint型のX, Y, width, heightに代入される事になる。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;Shape[0].type = kRectangleとなっているように、構造体型の変数に対して&quot;.&quot;をつけることでその構造体の中身を参照する事ができる。この場合はShape[0].typeということでShapeType型のtypeを参照しており、enum型のShapeTypeの中からkRectangleを参照している。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB3plJCfR0Cemm0RWy-GumJENm69-8467V16TEKNBerku6PAslID_rPz63orZzICE9bb9gvqWJ_IEBRSW7Jv7JC6Iymt0ZDfqlp8Wd3F92ieWqNWwtz7KuzwpTVo1UJoK3SaOmcSCJqNMW/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB3plJCfR0Cemm0RWy-GumJENm69-8467V16TEKNBerku6PAslID_rPz63orZzICE9bb9gvqWJ_IEBRSW7Jv7JC6Iymt0ZDfqlp8Wd3F92ieWqNWwtz7KuzwpTVo1UJoK3SaOmcSCJqNMW/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;同様の処理をして行くと、main関数の中からdrawShapesというメソッドに飛ぶ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;ここの２つの引数shapesと３はShape型の変数shapes[]とint型の変数countに代入される。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;drawShapesでは選択されたshapes[i].typeの値によって定義されている図形３つ分の処理を行う。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyHaaZZ2cZuvm2e0zD3Fxr6yJ9NIiiGYHQuRBtbunMjJJLmY-FvxY38XVbkRigyCat_GEZaDwVCpRzV8hHUby7baI1UjEUNKyUiIALEbDCRJfKCHOXGHqfni223uOQohLw_Sm_xa3qY5SW/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyHaaZZ2cZuvm2e0zD3Fxr6yJ9NIiiGYHQuRBtbunMjJJLmY-FvxY38XVbkRigyCat_GEZaDwVCpRzV8hHUby7baI1UjEUNKyUiIALEbDCRJfKCHOXGHqfni223uOQohLw_Sm_xa3qY5SW/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;shapes[i].type = kCircleだった場合はdrawCircleというメソッドで宣言されているShapeRect型の変数boundsにshapes[i].bounds（＝0, 0, 10, 30）が、ShapeColor型の変数fillColorにshapes[i].fillcolor（＝kRedcolor）が与えられる。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;同様の処理をdrawRectangleとdrawOblateSperoidにも行う。 &lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;すると、各メソッドでは以下のようなコードを実行してコンソールに実行結果を表示するのだが、ここでさらにcolorNameというメソッドが呼び出されている。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFGGP8wgUkQW99HGJmVxhBMzYC4Tx7txOJswaqO3SWt6wBojfpzcp2i1ZbWWRR977wm6WgKZslcXc3SJiy4F1wOBKxPExn9bVr4WjwVeQLy_PU0b-YpSNSCMKhRmTsUMWPtMC89fgLh9hV/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFGGP8wgUkQW99HGJmVxhBMzYC4Tx7txOJswaqO3SWt6wBojfpzcp2i1ZbWWRR977wm6WgKZslcXc3SJiy4F1wOBKxPExn9bVr4WjwVeQLy_PU0b-YpSNSCMKhRmTsUMWPtMC89fgLh9hV/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+5.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;ここでは用意されているShapeColor型のShapeColorに対してfillColorという値を与えている。ここで与えられたfillColorの値がkRedColorなら@&quot;red&quot;を返すというように、fillColorの名用によってその色の名前をNSString型として返す。&lt;br /&gt;
すると、コンソールにはこのような表示がされる。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLPN-SsF-wEGdVq4REko5QIJeIOn7tAdVqNPh8HClywWm4xfxZSe2TqpHhiRG49JVyvf4BqbebKgVFTNCye_ug8gPIlB0dmn5kMVTME13hWCJOgga_dXuIFX5RGqn5ARsnERRHqP5oaprA/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLPN-SsF-wEGdVq4REko5QIJeIOn7tAdVqNPh8HClywWm4xfxZSe2TqpHhiRG49JVyvf4BqbebKgVFTNCye_ug8gPIlB0dmn5kMVTME13hWCJOgga_dXuIFX5RGqn5ARsnERRHqP5oaprA/s400/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+4.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
このように、メソッドの中から違うメソッドを呼び出すと行った繰り返しをすることで コードを細分化し、各処理の内容を分かりやすく表記している。&lt;br /&gt;
それがIndirectionがもたらす最大の副産物ではないかと思う。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/3136770199594329417/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/procedural-programming.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3136770199594329417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3136770199594329417'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/procedural-programming.html' title='Procedural Programming'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9siO7OhTU-9y8aXlceZY0lOfVGH40pJaFHawSBan3GXk8ACwhNczovhgVN4woXHvYJp4JkGM1v8mtMKAct4IEpayM0HvECuvNhJv6pZ2rYYPVXG-TW4Ec4_1ODMA-2Zm1tm-YNEBhp9-E/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-25+12.35.47+AM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-6668962998605413384</id><published>2009-11-21T16:45:00.005+09:00</published><updated>2009-11-24T18:10:08.254+09:00</updated><title type='text'>先生への発表を通じて</title><content type='html'>&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;発表を通して確認できたことを書こうと思う。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;u&gt;１（2009/10/26のエントリーより）&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;u&gt;.hファイルで宣言しているstructure, symbolic, contants, function, prototypeについて。&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;実際の表記は&lt;br /&gt;
structs（構造体）&lt;br /&gt;
symbolic constants（記号定数）&lt;br /&gt;
function prototypes（関数原型）&lt;br /&gt;
というものだった。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;構造体→１つのArrayで１種類の型しか宣言できないのに対し、１つの構造体では複数の型を宣言する事ができる。&lt;br /&gt;
&lt;br /&gt;
記号定数→たとえばXcodeで「PI」と入力するとそれが円周率を意味するものになる。ここでいうPIが記号定数である。&lt;br /&gt;
&lt;br /&gt;
関数原型→別名プロトタイプ宣言とも言い、あらかじめ使う関数を宣言することを言う。先日紹介したサンプルコードBOOL PartyでいうareIntsDifferentのようなもの。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;u&gt;２（同上）&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;u&gt;precompiledヘッダファイルとは何か。&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;そもそもPrecompiledというのはコンパイル済みのという意味があるようで、そういうこれは既にコンパイルされたヘッダファイルという意味になる。マスタヘッダファイルがFoudation.hだとすれば、それに含まれるNSArray.hといったファイルがPrecompiledヘッダファイルという事になる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/6668962998605413384/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/6668962998605413384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/6668962998605413384'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/blog-post.html' title='先生への発表を通じて'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-1388472546099213830</id><published>2009-11-14T21:15:00.000+09:00</published><updated>2009-11-14T21:15:01.696+09:00</updated><title type='text'>Indirection</title><content type='html'>&lt;span style=&quot;font-family: Verdana,sans-serif; font-size: small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;今日はIndirectionについて書こうと思う。&lt;span id=&quot;btAsinTitle&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span id=&quot;btAsinTitle&quot;&gt;Learn Objective–C on the Macによると、「あなたは友人Aから本を借りていた。しかし、その友人は遠いところに住んでいるので返しに行くのが面倒。そんな時、隣人がAの住んでる近くまで出かけると言う。あなたは隣人にAの本を返すようにお願いした。それがIndirectionだ」と書いてあった。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span id=&quot;btAsinTitle&quot;&gt;つまり、、、人に頼んで自分の仕事をやらせるっていう解釈の良いのかな。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span id=&quot;btAsinTitle&quot;&gt;かなりの参考書を読んでみたが、それに該当するような表記が見当たらない。。。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span id=&quot;btAsinTitle&quot;&gt;次回のゼミの時に先生と相談しよう。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span id=&quot;btAsinTitle&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span id=&quot;btAsinTitle&quot;&gt;そんな中でのサンプルコード03.01 Count-1の解析。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEierFIQBlAEPrm1N3CNYHVIdoMQSvw3CTwsAmSPzJjoIGdEv0xuwE1rS-c1vIuQ6HwX8gGQtEhMU2-QcM8rgpjWLevOXjWPm7zxcELJt0gGmPEtbilFBRpBGMID_MmkXeclemT3wByAGEe0/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.06.11+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEierFIQBlAEPrm1N3CNYHVIdoMQSvw3CTwsAmSPzJjoIGdEv0xuwE1rS-c1vIuQ6HwX8gGQtEhMU2-QcM8rgpjWLevOXjWPm7zxcELJt0gGmPEtbilFBRpBGMID_MmkXeclemT3wByAGEe0/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.06.11+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMMm6bmxU8NVTSn_NEfsivKQs6kaC-JU3hjpajjE7tY4B08wLuPtMkOKGXRfH0F8knMko62VvTtleMD7kd6Dcu_GH-QJCm5x2w_98I81zpRQRNjXpzqAFj7DgBQ38X3t1aJFOdX3aF1lvv/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.06.44+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMMm6bmxU8NVTSn_NEfsivKQs6kaC-JU3hjpajjE7tY4B08wLuPtMkOKGXRfH0F8knMko62VvTtleMD7kd6Dcu_GH-QJCm5x2w_98I81zpRQRNjXpzqAFj7DgBQ38X3t1aJFOdX3aF1lvv/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.06.44+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;プログラム自体は単純なforループで、コンソールに表示した回数を文字列で表示するもの。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;ここでいう%dがキーポイントになるそうだ。ここでfor文の終了値を５から１０に変えるとコンソールに表示される値も１０になる。（最初のNSLogも表記を変えるために変更しておく。）&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;さらに、このfor文で使っている値をあらかじめint型で定義しておく事でも同じ事ができる。表示する部分は直接何も変更していないが、 それ以前の定義を変える事で出力結果も変わった。つまり、こんなとても簡単なプログラムの中でIndirectionを使っているといえるのだ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;次に、配列の文字列を読み込んでその文字数をカウントするプログラムを解析した。配列を定義してそこから文字列を読み込むものと、テキストファイルから読み込むものがあったが、今回はテキストファイルから読み込む方をピックアップしようと思う。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;まずはテキストファイル。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1amzl3QgPHrgSVj9CPpRiPb7iZfifQT5d-2WGIGOqwBVqSfSsUJl8TAuoaVFqF4huG8cBIzUjY2Vpnr4mpiFeXgpxpcn_cS2q496ftjYxiKPgtcPzY7lHZhGDB-cL-BKFtV_AGF989NNI/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.27.22+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1amzl3QgPHrgSVj9CPpRiPb7iZfifQT5d-2WGIGOqwBVqSfSsUJl8TAuoaVFqF4huG8cBIzUjY2Vpnr4mpiFeXgpxpcn_cS2q496ftjYxiKPgtcPzY7lHZhGDB-cL-BKFtV_AGF989NNI/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.27.22+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;このファイルがプロジェクトファイルと同じディレクトリに格納されてる。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;内容を編集するとプログラムにも反映される。それを示すためにtomonariという内容を加えた。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;そしてソースコードは以下の通り。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnc733TyO5aCFuG3zf2VLgAP9QpBzT4IGbmL-PCdRcX5RGieFWRsHX8etamJ4ip3rZ5dTSqVWjaXGUjM7wd3Grz45i_MO3hwS2aJx-P-z9oANuS1EwA2VXJXembecoCFCl5cJbq3-JY0sL/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.24.46+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnc733TyO5aCFuG3zf2VLgAP9QpBzT4IGbmL-PCdRcX5RGieFWRsHX8etamJ4ip3rZ5dTSqVWjaXGUjM7wd3Grz45i_MO3hwS2aJx-P-z9oANuS1EwA2VXJXembecoCFCl5cJbq3-JY0sL/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.24.46+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;FILE *wordFile = fopen (&quot;/tmp/words.txt&quot;, &quot;r&quot;);で読み込みたいファイルを指定し、char[100]で100文字まで読み込める配列を宣言。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;fgetsfgets(word, 100, wordFile)というwordFileから文字列を読み込んでwordに格納する処理をwhileの条件とし、その中では読み込んだ文字列数から１を引く処理をしている。それは、改行文字も１文字として認識されてしまうためだ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;そして最後に文字列とその文字列をコンソールに出力する。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqJlmCtSiwoKN8fiGc2IEJNLVLy-s08R96Zs79xuP-RDMQHtbtc-Rw4E4xx9saQFcZOG3ZV-MG5bkB9DvX5tRj0xI3GCpz7LXV6ebzRnwVEczSKTWw1vMPjaNUFQWH8qsxNzOpvRvpawdV/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.26.51+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqJlmCtSiwoKN8fiGc2IEJNLVLy-s08R96Zs79xuP-RDMQHtbtc-Rw4E4xx9saQFcZOG3ZV-MG5bkB9DvX5tRj0xI3GCpz7LXV6ebzRnwVEczSKTWw1vMPjaNUFQWH8qsxNzOpvRvpawdV/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.26.51+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;こういった処理がIndirectionによるものだと言えるそうだ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;また、ファイル名をプログラム内で定義しないでも同じ処理が行えるものが紹介されていた。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5l2rjtM6pXAdKXgqCPm12qCxtxbefbxNC8E8afCzqSr_Y0XRR9TFqQWZ_Nr1XS6zCr7T0-QzAQilIsw0zG0YQDPttALTrQoh-5q4zppSw5ZZdoeenK3eGNcIymTWhtR-DgZbbap9Iwtmv/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.51.34+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5l2rjtM6pXAdKXgqCPm12qCxtxbefbxNC8E8afCzqSr_Y0XRR9TFqQWZ_Nr1XS6zCr7T0-QzAQilIsw0zG0YQDPttALTrQoh-5q4zppSw5ZZdoeenK3eGNcIymTWhtR-DgZbbap9Iwtmv/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.51.34+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;変更した点は青く選択された部分だけ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;まず始めに、このプログラムは何を行うものか説明したいと思う。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;argcの値が１の場合は「you need to provide a file name」というメッセージを表示し、そうでない場合はargv[1]に含まれる名前のファイルを開く処理を行う。それ以降は前のプログラムと同じものだ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;さて、ここで注目すべき点はargcとargv[1]という項目である。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;この２つは最初のmain関数の定義の際に定義されているが、これらは何者なのだろうか。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
これは前から気になっていたが放置していた項目の１つだ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;ネットで調べてみると、C系のプログラミング言語では共通してこの項目を使っているようで 、argvはプログラムが実行する際に読み込むファイルを格納するための配列、argcはその要素の個数を示すという。argv[0]にはプロジェクトを作成した際にデフォルトで実行ファイルの名前が入るが、それ以降については自分で設定できる。つまり、ここで読み込みたいテキストファイルを指定する事で先ほどのfopen()を使わないで済むのだ。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;話を巻き戻すが、argc==1という事は配列argvに実行ファイル１つ以外格納されていないため、自分で設定しろという警告文を出していることになる。もしそうではなく何らかの項目が追加されているなら、argv[1]の内容が示すアドレスのファイルを開きなさい。といったポインタ的な考え型ができるのだ。 &lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;さっきからアドレスを指定だの何だの言っているが、それはXcodeで設定する事ができる。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;右側のリストの「実行可能ファイル」を展開する事で表示される項目をダブルクリックする事で、次のようなウィンドウが表示される。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnWwsPh8LXTi9FNjDjzokyuPQ_es_e59k_Lj85tOpEtAbdtAntfn1IvPr4yCkBVsYTzH_I46tNYjS61ZImAVXUcc4ATNFc3wrbGGha42VJNe-AxOkPcRFXq4M-cdOcbf1GJcXCDmW4vH2f/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+9.09.36+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnWwsPh8LXTi9FNjDjzokyuPQ_es_e59k_Lj85tOpEtAbdtAntfn1IvPr4yCkBVsYTzH_I46tNYjS61ZImAVXUcc4ATNFc3wrbGGha42VJNe-AxOkPcRFXq4M-cdOcbf1GJcXCDmW4vH2f/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+9.09.36+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;その中で引数のタブを選択して上の方の＋マークをクリック。そして「/tmp/words.txt」を入力して作業は完了。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;一般的な場合は分からないが、自分の場合はXcodeを再起動する事でこの設定が適用された。ちなみに「usr/share/dict/words」を追加してプログラム内で読み込み、表示させると辞書に含まれる全ての単語を読み込む事になり、エライ事になる。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;この本ではこれ以降もIndirectionについて述べている。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;さらに読み進めて行こうと思う。&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/1388472546099213830/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/indirection.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/1388472546099213830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/1388472546099213830'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/indirection.html' title='Indirection'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEierFIQBlAEPrm1N3CNYHVIdoMQSvw3CTwsAmSPzJjoIGdEv0xuwE1rS-c1vIuQ6HwX8gGQtEhMU2-QcM8rgpjWLevOXjWPm7zxcELJt0gGmPEtbilFBRpBGMID_MmkXeclemT3wByAGEe0/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-14+8.06.11+PM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-5769363489470417156</id><published>2009-11-12T23:58:00.011+09:00</published><updated>2009-11-13T00:25:16.235+09:00</updated><title type='text'>BOOL型について</title><content type='html'>&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;C言語とOBJCではブールの表記が異なる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;C -&amp;gt;&lt;b&gt; bool&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;OBJC -&amp;gt; &lt;b&gt;BOOL&lt;/b&gt; &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;といっても&lt;b&gt;大文字か小文字&lt;/b&gt;の違いのみ。Xcodeではどちらも使用できるが、&lt;b&gt;返り値が異なる。&lt;/b&gt;ここが大きな違いと言えるのではないだろうか。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;C -&amp;gt;「&lt;b&gt;true&lt;/b&gt;」or「&lt;b&gt;false&lt;/b&gt;」&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;OBJC -&amp;gt; 「&lt;b&gt;YES &lt;u&gt;(1)&lt;/u&gt;&lt;/b&gt;」or「&lt;b&gt;NO &lt;u&gt;(0)&lt;/u&gt;&lt;/b&gt;」&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;上記の通り、OBJCにおけるBOOLは水面下で「１」と「０」の返り値を扱っている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;BOOLではこういった８ビットの値を使っているが、&lt;b&gt;８ビット以上の値が返ってくると「NO」をとして扱われる。&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;サンプルプログラム「BOOL&amp;nbsp; Party」を用いたBOOLの使い方の説明があった。&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;＊コードをそのままコピペすると宣言部の山括弧がブログの仕様上、HTMLのタグとして認識されてしまうSHITな状況なのでコードは画像で貼付けた。&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: Verdana,sans-serif; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgznHZPtrAT1ZqdSdwaiy2d6qTDN8JmX13ZC9YvJrname2bE71bVQqi1sM9RpvpbA9ZKj_YkcxfcDsKzZffNt3r6RGLqG2nVd-sxq_5uxFy473ELXXp7OVLLklHw5n-9bUbw0F5xwT0-pBh/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-12+11.27.51+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgznHZPtrAT1ZqdSdwaiy2d6qTDN8JmX13ZC9YvJrname2bE71bVQqi1sM9RpvpbA9ZKj_YkcxfcDsKzZffNt3r6RGLqG2nVd-sxq_5uxFy473ELXXp7OVLLklHw5n-9bUbw0F5xwT0-pBh/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-12+11.27.51+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;u&gt;areIntsDiffent&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;ここではint型の２つの値 （thing1, thing2）を宣言、比較して&lt;b&gt;同じならNO&lt;/b&gt;を、&lt;b&gt;異なるならYESを返す。&lt;/b&gt; &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;u&gt;NSString&amp;nbsp; *boolString (BOOL yesNo)&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;BOOL型で宣言されたyesNoに対して（BOOL型として）返って来た値が&lt;b&gt;NOならばNO&lt;/b&gt;を、&lt;b&gt;YESが返って来たらYES&lt;/b&gt;を&lt;b&gt;文字列として返す&lt;/b&gt;。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;u&gt;int main...以降は主な処理。&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;BOOL 型でareTheyDifferentを宣言し、それに対して２つの値（５と５）をareIntsDifferentの処理にかける。この時点でareIntsDifferentには&lt;b&gt;BOOL型のNO&lt;/b&gt;が格納されている。それを&lt;b&gt;文字列として表示するため&lt;/b&gt;に、NSLogの内部でboolString(areTheyDifferent)とすることで&lt;b&gt;BOOL型のNOをNSString型のNOにする。&lt;/b&gt;（boolString(NO)と同意）&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;同様の処理を ２３と４２の値で行うと、最終的に&lt;b&gt;NSString型のYES&lt;/b&gt;が返ってくる。最期に０を返すことでプログラム終了。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;といった具合だろーか。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;ちなみに出力結果はコレ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: Verdana,sans-serif; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgso1i-M8yM_9Z9qCXRaYr9i0uebyxn34tGegUrMz4VE6tndv0JQIR-WK_-PQKyLIdyDk1MVnanPPFCh40Wl6edEN9o2SmCf2Zjes9j-GMWAK6zyryyt3AO0brgcj05IzYOaWF_lf_nnaOV/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-12+11.51.15+PM%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgso1i-M8yM_9Z9qCXRaYr9i0uebyxn34tGegUrMz4VE6tndv0JQIR-WK_-PQKyLIdyDk1MVnanPPFCh40Wl6edEN9o2SmCf2Zjes9j-GMWAK6zyryyt3AO0brgcj05IzYOaWF_lf_nnaOV/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-12+11.51.15+PM%EF%BC%89.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;これでBOOLの使い方に付いては終了。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;５と５は違う？　NO&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;２３と４２は違う？　YES&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;幼稚園児でも分かりますねこんなの。でも、英語の本読んでプログラムでこれできた時の爽快感と言ったら、、、くぅっ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;相変わらずペースはクソ遅いけど、順調に進んでます。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;本のペースはと言いますと、次のステップとして&lt;b&gt;Indirection&lt;/b&gt;について読んでいます。日本語に訳すと、、、回り道でいいのかな。とにかく連呼してるんで、&lt;b&gt;「Indirectionは、Indirection。」&lt;/b&gt;という風に解釈しちゃいます。問題は中身っす。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;その一環として&lt;b&gt;main (int argc, const char *argv[])&lt;/b&gt;についても理解しつつあります。&lt;span style=&quot;font-size: x-small;&quot;&gt;（やっとかよ。）&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;詳細はまた明日！すみません、寝させてくだしあ。。。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/5769363489470417156/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/bool.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/5769363489470417156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/5769363489470417156'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/11/bool.html' title='BOOL型について'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgznHZPtrAT1ZqdSdwaiy2d6qTDN8JmX13ZC9YvJrname2bE71bVQqi1sM9RpvpbA9ZKj_YkcxfcDsKzZffNt3r6RGLqG2nVd-sxq_5uxFy473ELXXp7OVLLklHw5n-9bUbw0F5xwT0-pBh/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882009-11-12+11.27.51+PM%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-4080408007117400547</id><published>2009-10-29T00:22:00.002+09:00</published><updated>2009-11-13T00:06:39.603+09:00</updated><title type='text'>本日のまとめ</title><content type='html'>&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;前回からの引き続きでもあるが、まずはXcodeで使うフレームワークのディレクトリから。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;b&gt;/System/Libraly/Frameworks/Foundation.framework/Headers&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;に含まれているようだ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;話は&lt;b&gt;NSLog( )&lt;/b&gt;について。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;Cでいう&lt;b&gt;printf( )&lt;/b&gt;と同じような物。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;OBJCでもprintf( )は使えるが、NSLog( )の方はコンソール内で&lt;b&gt;日付と改行&lt;/b&gt;を自動的に入れてくれるという点で優れている。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;b&gt;NS&lt;/b&gt; ってなんだ？&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;ー＞何らかのツールを使わなくても、それ自身がCocoaのどんな機能なのか教えてくれる接頭子。Apple社に買収されたNeXT社の名残。自分で設定する場合は会社名や個人名を用いる事が多い。ヘッダファイルに含まれるAPIのようにコレクションされている訳ではない。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;＊注意点&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;同じ識別子を使わないようにする。もし使ってしまうと残念賞。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;NSLog(@&quot;Hello world!!&quot;);&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&amp;nbsp;最初の@は「次の&quot;&quot;がCocoaのNSString の要素である」ってことをコンパイラに示すためにある。Stringが文字列を示すように、CocoaではNSStringが文字列を示すからね。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;で、NSStringの要素ってのはたーくさんあるんだって。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;文字の長さ（字数）をカウントしたり、文字列同士を比較したり、integerとかの値に変換したり。こういった作業はCの文法でいろんなことが出来る。ch8でkwsk。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;こういう&quot;NSLog&quot;とかの接頭子は見るだけでCocoaのどんな機能か検討がつくからcoooool。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;Cocoaの要素って言うのは大抵こんなモンらしい。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&quot;NSArray&quot;なら「配列なんだなー」ってスグ分かる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;で、return(0)でプログラムの終点を示して実行に移るのはCと共通。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;最期にreturnされた値が０なら正常、それ以外ならエラーというのは昔から同じみたい。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;これで、ようやくObjective-Cコードの書き方、コンパイル、実行、分析について大まかな概念に関するパートが終わった。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;#import ＜Foundation/Foundation.h＞&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;int main (int argc, const char, *argv[])&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;{&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; NSLog (@&quot;Hello Objective-C!&quot;) ;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (0);&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;}&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;この４行に関してはマスターできた、、、かと。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;実行するとただコンソールに「Hello Ocjective-C」って表示するだけ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;今まで完成品の解析ばっかやってたからこんな初歩的な事やるのは違和感あるけど、収穫があるのも事実。しばらくはこんな感じでいこう。&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/4080408007117400547/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/10/blog-post_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/4080408007117400547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/4080408007117400547'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/10/blog-post_29.html' title='本日のまとめ'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-19255100992750576</id><published>2009-10-26T03:24:00.002+09:00</published><updated>2009-11-13T00:06:52.155+09:00</updated><title type='text'>今までのまとめ</title><content type='html'>&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/1430218150/ref=sib_rdr_dp&quot;&gt;こんな本を読んで研究を進める事にしました。&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;Objective-Cについて基礎から学んでみる事にした。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;まだ卒業までは時間がある。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;そう信じて、今はひたすら基礎からキッチリ磨いていく事にしました。 &lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;ルーズリーフだとなくした時が怖いので、ココにメモします。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;b&gt;.mは実装部。&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;これが&lt;b&gt;.c&lt;/b&gt;だとC、&lt;b&gt;.cpp&lt;/b&gt;だとC++のコードだぜって意味。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;XcodeはGNU Compiler Collection (GCC)っつーコンパイラを使っていて、CもC++もObjcもコンパイルできる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;b&gt;.hは 宣言部。&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;structure, symbolic, contants, function, propertyを宣言する。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;具体的な内容に関してはまだ不明。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;コード内でヘッダファイルを呼び出すとき、&lt;b&gt;Cでは#include&lt;/b&gt;を使うが&lt;b&gt;Objcでは#import&lt;/b&gt;を使う。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;Objcでは&lt;b&gt;どちらも使う事が出来る&lt;/b&gt;が、#importを使うと&lt;b&gt;既にそのファイルが呼び出されていないか自動的にチェック&lt;/b&gt;してくれる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;#import&lt;foundation foundation.h=&quot;&quot;&gt;　＜Foundation/Foundation.h＞//＝Foundationという&lt;b&gt;フレームワーク&lt;/b&gt;に含まれるFoundation.hというファイルを見るようにコンパイラに指示を与える。&lt;/foundation&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;＊フレームワーク：ヘッダファイル、ライブラリ、イメージetcがひとまとまりになったもの。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;Cocoaは主に&lt;b&gt;２つのフレームワーク&lt;/b&gt;から構成される。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;b&gt;・Foundation&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;インタフェースの下の階層にある部分を処理。OS的な役割。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;b&gt;・Appkit &lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;インタフェースに関わるところをサポート。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;CoreAnimationやCoreImageといったものもアルヨ！&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;この２つにはかなーり&lt;b&gt;多くのヘッダファイル&lt;/b&gt;を含む。全部を#importするのはメンドイ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;そのため、それぞれ&lt;b&gt;マスタヘッダファイル&lt;/b&gt;にアクセスする事で&lt;b&gt;全てのヘッダファイル&lt;/b&gt;を使えるように出来る。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;その上、コンパイラはヘッダファイル内に含まれる全てのテキストを読み込む訳ではない。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;b&gt;Precompiled&lt;/b&gt;ヘッダを読みこむことでスピーディな処理を実現。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;つまり、一回読み取ったものを忘れずにどっかに記憶させとく的な機能らしい。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;precompiledってどゆこと。。。ワカラン。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;さて。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;これだけの内容を抽出するのに５日ほどかかった訳だが。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;オレ、どんだけ英語よえーのｗｗｗｗｗｗｗｗ&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;まじぱねぇｗｗｗｗｗｗｗｗｗ&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;でも、がむばる。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;今の苦労は、きっと将来役に立つ。&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;大金さん、まじリスペクトしてますんで。&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/19255100992750576/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/10/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/19255100992750576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/19255100992750576'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/10/blog-post.html' title='今までのまとめ'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-3062577507761139213</id><published>2009-06-04T00:37:00.003+09:00</published><updated>2009-06-04T00:45:54.671+09:00</updated><title type='text'>タイマーできた！</title><content type='html'>またもや初期化が原因でした。。。&lt;br /&gt;辞書を導入する時にも初期化をしないせいでおかしなエラーが起こっていた気が。。。&lt;br /&gt;&lt;br /&gt;http://freeek.jp/blog/iphone/117/&lt;br /&gt;ここのページを参考にして作っていった訳だが、初期化ナシでは動く訳がない。&lt;br /&gt;まねっこしようとした自分のミス。&lt;br /&gt;&lt;br /&gt;- (void)touchesBegan:の中で、startTime = [[NSDate alloc] init];の１行を追加しただけでうまくいくようになった。&lt;br /&gt;&lt;br /&gt;そしてゲームをクリアした瞬間の時刻を計測するためにNSTimeInterval saTime = -[startTime timeIntervalSinceNow];を記述。&lt;br /&gt;&lt;br /&gt;すると、このような画面に。&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSRjhErvAdWYc8d1wUDSK7sC2Z7WWmSPo5ZI1f2xkKMN-T76QSWlp5tQUpDg_7foPyIsnf3ctjMGgsHDTeKXkQkTIWc_-5Pf8sMDfVSN9Gt4TPQv-yiznsYMJaAw7SlWmUePmgiyTP3sW3/s1600-h/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 172px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSRjhErvAdWYc8d1wUDSK7sC2Z7WWmSPo5ZI1f2xkKMN-T76QSWlp5tQUpDg_7foPyIsnf3ctjMGgsHDTeKXkQkTIWc_-5Pf8sMDfVSN9Gt4TPQv-yiznsYMJaAw7SlWmUePmgiyTP3sW3/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5343127442140542274&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今日の新しく出来た事はこれくらい。&lt;br /&gt;ついに明日、出発。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/3062577507761139213/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/06/blog-post_04.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3062577507761139213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3062577507761139213'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/06/blog-post_04.html' title='タイマーできた！'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSRjhErvAdWYc8d1wUDSK7sC2Z7WWmSPo5ZI1f2xkKMN-T76QSWlp5tQUpDg_7foPyIsnf3ctjMGgsHDTeKXkQkTIWc_-5Pf8sMDfVSN9Gt4TPQv-yiznsYMJaAw7SlWmUePmgiyTP3sW3/s72-c/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-6609786958340406554</id><published>2009-06-03T03:59:00.002+09:00</published><updated>2009-06-03T04:22:22.042+09:00</updated><title type='text'>昨日は報告書を仕上げていたので報告ナシです。</title><content type='html'>タイトルの通り、昨日はコードには一切触れなかった。&lt;br /&gt;&lt;br /&gt;今日でその分を取り戻そうとしたが、どうもうまくいかない。。。&lt;br /&gt;今回の壁はNSTimer。ゲームをクリアするのにかかった時間を計測するためにNSTimerを実装した。&lt;br /&gt;&lt;br /&gt;//タイマーの宣言。0.1秒刻みで計測を行う。&lt;br /&gt;timer = [NSTimer scheduledTimerWithTimeInterval:(0.01)&lt;br /&gt;                                             target:self&lt;br /&gt;                                           selector:@selector(onTimer:)&lt;br /&gt;                                           userInfo:nil&lt;br /&gt;                                            repeats:YES];&lt;br /&gt;&lt;br /&gt;//タイマーの実装。チュートリアルを除く２回目以降のゲームで指が触れている時に処理を行う。&lt;br /&gt;- (void)onTimer:(NSTimer*)timer {&lt;br /&gt;    if(moveFlg == 1 &amp;amp;&amp;amp; gameCount != 0){&lt;br /&gt;        storeTime += 0.01;&lt;br /&gt;        statLabel.text = [[NSString alloc]initWithFormat:@&quot;%.2f秒経過&quot;,storeTime];&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;このような記述をすると、とりあえず動作した。&lt;br /&gt;しかし、指の移動するスピードが早くなると正確な時間を刻まなくなった。&lt;br /&gt;そのため、異なるアルゴリズムで時間を計測する事にした。&lt;br /&gt;&lt;br /&gt;そこで使ったのが、&lt;br /&gt;NSTimeInterval saTime = [startTime timeIntervalSinceDate:nowTime];&lt;br /&gt;という「startTime」と「nowTime」の差分を求めるメソッド。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ここで使われる引数は&lt;br /&gt;NSDate *startTime;&lt;br /&gt;startTime = [NSDate date];　//画面に触れたときに実行&lt;br /&gt;&lt;br /&gt;NSDate *nowTime;&lt;br /&gt;nowTime = [NSDate date];　//ゲームををクリアしたときに実行&lt;br /&gt;というように画面に指を触れた瞬間とゲームをクリアした時の時刻を計測したもの&lt;br /&gt;&lt;br /&gt;時間を常に更新し続けるのではなく２回しか時間を計測しない事から、前に作ったタイマーよりも処理の回数が少なくなると思ったのでこれを使おうと思った。&lt;br /&gt;&lt;br /&gt;timeIntervalSinceDateで時間の差を求める処理ができていないようだ。。。&lt;br /&gt;デバッギングしてもその時点で処理落ちしてしまう。今日はこの方法を実装するためにかなりの時間を割いてしまった。&lt;br /&gt;だが未だに実装できていない。。。&lt;br /&gt;&lt;br /&gt;WWDCまで時間もあまりないので、時間を計る違うアルゴリズムを構築するか、それ以外にも追加する機能を考えてみようと思う。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/6609786958340406554/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/06/blog-post_03.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/6609786958340406554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/6609786958340406554'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/06/blog-post_03.html' title='昨日は報告書を仕上げていたので報告ナシです。'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-5700427126668107137</id><published>2009-06-01T04:22:00.005+09:00</published><updated>2009-06-01T04:53:30.009+09:00</updated><title type='text'>外見の変更</title><content type='html'>今日は主に外見の変更をした。&lt;br /&gt;今まではイライラ棒ゲームそのものの動作に付いてコードを書いてきたが、そろそろそれ以外のジャンルにも手を伸ばす事にした。&lt;br /&gt;&lt;br /&gt;まずはdefault.pngの追加。&lt;br /&gt;具体的な構造はどうなっているかまだ分かっていないが、こういった名前の画像ファイルをプロジェクトに追加するとアプリケーションが起動する際にその画像が表示されるようになる。もはやこれはAPIうんぬんとかいう問題ではないのだろうか。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;次に、アプリケーションが起動した際の外見も変更した。&lt;br /&gt;&lt;br /&gt;- (void)applicationDidFinishLaunching:(UIApplication *)application {&lt;br /&gt;UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];&lt;br /&gt;HelloController *hello = [[HelloController alloc] init];&lt;br /&gt;[window addSubview:hello.view];&lt;br /&gt;[window makeKeyAndVisible];&lt;br /&gt;[application setStatusBarHidden:YES];&lt;br /&gt;&lt;br /&gt;UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@&quot;某テレビ番組で有名になったイライラ棒です。\nまずはチュートリアルを行ってから、、、\nゲームスタート♪ &quot;&lt;br /&gt;               delegate:self cancelButtonTitle:@&quot;工事中&quot; destructiveButtonTitle:@&quot;Let&#39;s★イライラ&quot; otherButtonTitles:nil];&lt;br /&gt;actionSheet.actionSheetStyle = UIActionSheetStyleDefault;&lt;br /&gt;[actionSheet showInView:window];&lt;br /&gt;[actionSheet release];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;このようにしてapplicationDidFinishLaunchingの中でアラートを起動させると、&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH-A6po9Kz72V5kO1KHOYDGs_QiYIEIQSwl7V_g_dTso1o9Fek392xZkJ-jP1RzSCVL3myS4U9aFB4F5NqdePvpuLFpsrBdpC22PnexOwdpZQHQg0xfcpigSOrumSlVUinvS0JTiqk77G5/s1600-h/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+4.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 173px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH-A6po9Kz72V5kO1KHOYDGs_QiYIEIQSwl7V_g_dTso1o9Fek392xZkJ-jP1RzSCVL3myS4U9aFB4F5NqdePvpuLFpsrBdpC22PnexOwdpZQHQg0xfcpigSOrumSlVUinvS0JTiqk77G5/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+4.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5342072666380086034&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;このような画面が表示されるようになる。&lt;br /&gt;今後は「工事中」の項目からオプションの機能もつけていきたい。&lt;br /&gt;&lt;br /&gt;ここからゲームを開始して、最初のコースはチュートリアルとして使っていこうと思う。&lt;br /&gt;チュートリアルとして使うために、ラベル（statLabel）を追加する事にした。&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWiLXwc6-bOxmlZAsn7s9v25YPlTEVHffqvZVNVSS_TwOy6eyuLqm5V4MW02guSJQAVoZHI1ZXyqe3crNcpUcWDFNEXg0RkbJlBDuPXnybOjVHWgYuSN-ErfxHp1R-1jufJkmRsOoBeDm0/s1600-h/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+5.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 167px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWiLXwc6-bOxmlZAsn7s9v25YPlTEVHffqvZVNVSS_TwOy6eyuLqm5V4MW02guSJQAVoZHI1ZXyqe3crNcpUcWDFNEXg0RkbJlBDuPXnybOjVHWgYuSN-ErfxHp1R-1jufJkmRsOoBeDm0/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+5.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5342073305712940178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;　statLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 100)];&lt;br /&gt;   UIFont *displayFont = [UIFont fontWithName:@&quot;Times New Roman&quot; size:22];&lt;br /&gt;   statLabel.font = displayFont;&lt;br /&gt;   statLabel.textColor = [UIColor blackColor];&lt;br /&gt;   &lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;statLabel.backgroundColor = [UIColor redColor];&lt;/span&gt;&lt;br /&gt;   statLabel.textAlignment = UITextAlignmentLeft;&lt;br /&gt;   statLabel.adjustsFontSizeToFitWidth = YES;&lt;br /&gt;  &lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt; statLabel.numberOfLines = 4;&lt;/span&gt;&lt;br /&gt;   statLabel.text = @&quot;1. Touch the cursor.&quot;;&lt;br /&gt;&lt;br /&gt;この画像は指定した範囲内でカーソルをタッチした時の状態。&lt;br /&gt;始めは１つ目の画像にもあるように、カーソルをタッチしろという記述がありタッチをすると２つ目の画像のようにラベルが切り替わる。また、画像で背景が赤くなっているのはラベルの範囲を確認するためであり、本来は statLabel.backgroundColor = [UIColor clearColor];というプロパティで透明にすることにしている。&lt;br /&gt;&lt;br /&gt;ここで苦労したのが改行についてだ。&lt;br /&gt;今回は&lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;statLabel.numberOfLines = 4;&lt;/span&gt;というプロパティの変更によりラベルは４行になり、改行をしてもそのまま文章が表示されるようになっている。しかし、このプロパティを変更しないとラベルは１行のままで、文章が途中で途切れてしまう。&lt;br /&gt;&lt;br /&gt;これからはラベルの内容に変更を加えたりアニメーションも付ける事でチュートリアルとして分かりやすいものに仕上げていこうと思う。&lt;br /&gt;&lt;br /&gt;他にも前のままだと指の現在位置が把握しづらかったので、移動させるカーソルの画像の変更もした。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;また、そろそろErica式のプロジェクトから本来のプロジェクト形式に引っ越す事も視野に入れていくことにする。&lt;br /&gt;コードの量が増えてきた事もあるが、まずはクラスを明確に分ける事でプロジェクトそのものの全体像も見えてくるからだ。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;どれだけやっても研究すべきことが出てきて止まない。&lt;br /&gt;&lt;br /&gt;空も明るくなってきたので、帰還します。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/5700427126668107137/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/06/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/5700427126668107137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/5700427126668107137'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/06/blog-post.html' title='外見の変更'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH-A6po9Kz72V5kO1KHOYDGs_QiYIEIQSwl7V_g_dTso1o9Fek392xZkJ-jP1RzSCVL3myS4U9aFB4F5NqdePvpuLFpsrBdpC22PnexOwdpZQHQg0xfcpigSOrumSlVUinvS0JTiqk77G5/s72-c/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-3190509371375767244</id><published>2009-05-31T03:54:00.004+09:00</published><updated>2009-05-31T04:14:31.951+09:00</updated><title type='text'>cocos2d-iphone-0.7.3</title><content type='html'>http://code.google.com/p/cocos2d-iphone/&lt;br /&gt;&lt;br /&gt;今日はViewを変更するための情報収集をしていた。&lt;br /&gt;その中で、こんなものを発見。通常のXcodeprojと変わらないような気がするが。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpiQdQ6Qc24bEU2NgSV4siLCttMsL1D1zigUqRKb0zph2UGKQZS_M5Svdo0V8-p1QW10BUtO16-RvMl_ou0WRkW-UDWI9uJgF2rdCvwPOzCiw157PB0q5mxSB2KW8H6IHtiM27xAlt7NLN/s1600-h/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 320px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpiQdQ6Qc24bEU2NgSV4siLCttMsL1D1zigUqRKb0zph2UGKQZS_M5Svdo0V8-p1QW10BUtO16-RvMl_ou0WRkW-UDWI9uJgF2rdCvwPOzCiw157PB0q5mxSB2KW8H6IHtiM27xAlt7NLN/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5341694681224531378&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;なんだこれは。&lt;br /&gt;どうやらオープンソースで公開しているフレームワークらしいが、とても複雑怪奇な形式をしている。&lt;br /&gt;&lt;br /&gt;その中のアクティブターゲットをそれぞれ実行すると、Viewやwindowに対して様々なエフェクトを付けている事が分かった。&lt;br /&gt;YouTubeにも動画があったので載せておこう。&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/mrhfaoMvpps&amp;hl=ja&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/mrhfaoMvpps&amp;hl=ja&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AtlasTest&lt;br /&gt;画像を拡大し、傾きで移動させる&lt;br /&gt;&lt;br /&gt;AtlasTest&lt;br /&gt;Atlas: LabelAtlas（ストップウォッチ）&lt;br /&gt;&lt;br /&gt;ChipmunkAccelTouchTest&lt;br /&gt;タッチして画像追加＋傾きで移動&lt;br /&gt;&lt;br /&gt;ClickAndMoveTest&lt;br /&gt;タッチした場所に画像が移動。背景アニメーション気になる。&lt;br /&gt;&lt;br /&gt;EaseActionTest&lt;br /&gt;画像を横方向にあらゆる速度で移動。&lt;br /&gt;&lt;br /&gt;EffectsTest, EffectsAdvancedTest&lt;br /&gt;View全てにエフェクトをつける。&lt;br /&gt;&lt;br /&gt;IntervalTest&lt;br /&gt;ゲーム中のポーズ機能&lt;br /&gt;&lt;br /&gt;MenuTest&lt;br /&gt;ゲーム中のメニュー画面&lt;br /&gt;&lt;br /&gt;ParalleaxTest&lt;br /&gt;コース画面を移動。&lt;br /&gt;&lt;br /&gt;ParticleTest&lt;br /&gt;指でなぞった軌道上にエフェクトをかける&lt;br /&gt;&lt;br /&gt;PerformanceSpriteTest&lt;br /&gt;iPhoneOS3.0では起動せず。それ以前のバージョンでは動作するが何を表すか不明。&lt;br /&gt;&lt;br /&gt;RotateWorldTest&lt;br /&gt;４枚のViewに対して同時にアニメーションをつけ、画面内で同時に動かす。&lt;br /&gt;&lt;br /&gt;SpritesTest&lt;br /&gt;画像をジャンプなどのアクション付きで移動させる。&lt;br /&gt;&lt;br /&gt;StreakTest&lt;br /&gt;左右に移動する画像に対して常に等間隔で回転するもう一つの画像&lt;br /&gt;&lt;br /&gt;Texture2dTest&lt;br /&gt;文字列：配置、フォント&lt;br /&gt;画像：拡大方法、縮小方法、形式ごとの表示　それぞれの違いを比較。&lt;br /&gt;&lt;br /&gt;TransitionTest&lt;br /&gt;Viewが変わる際の効果&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;こういったものを実行できた。&lt;br /&gt;そのなかでAtlasTestというターゲットに指定して実行した際にAtlas: LabelAtlasというストップウォッチのようなものがあったので、コードを解析する事にした。&lt;br /&gt;&lt;br /&gt;しかし、複雑すぎて意味が分からない。&lt;br /&gt;コードそのものも複雑だが、まずファイルの構造が理解できなかった。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;これをじっくり時間をかけて解析していけばかなりの技術が身に付くと思うのだが、今はあまり時間がない。&lt;br /&gt;アメリカに行くまでに少しでも多くの機能をイライラ棒に付けていかなくては。&lt;br /&gt;&lt;br /&gt;明日はcocos2dの解析をしたいところだが、ストップウォッチのサンプルを入手したのでそれの解析を行い、イライラ棒のクリア時間の計測に使えるようにしたい。&lt;br /&gt;&lt;br /&gt;それが終わってからcocos2dの解析に入ろうと思う。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/3190509371375767244/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/05/cocos2d-iphone-073.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3190509371375767244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/3190509371375767244'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/05/cocos2d-iphone-073.html' title='cocos2d-iphone-0.7.3'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpiQdQ6Qc24bEU2NgSV4siLCttMsL1D1zigUqRKb0zph2UGKQZS_M5Svdo0V8-p1QW10BUtO16-RvMl_ou0WRkW-UDWI9uJgF2rdCvwPOzCiw157PB0q5mxSB2KW8H6IHtiM27xAlt7NLN/s72-c/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-4114402495142312562</id><published>2009-05-30T02:10:00.004+09:00</published><updated>2009-05-30T02:50:11.163+09:00</updated><title type='text'>違うディクショナリ</title><content type='html'>今日は、昨日完成させたディクショナリを違う形式に改善する作業から開始した。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  NSNumber *number数字 = [NSNumber numberWithInt:2];&lt;br /&gt;  NSNumber *startXmax数字 = [NSNumber numberWithInt:252];&lt;br /&gt;  NSNumber *startXmin数字 = [NSNumber numberWithInt:195];&lt;br /&gt;  NSNumber *startYmax数字 = [NSNumber numberWithInt:45];&lt;br /&gt;  NSNumber *startYmin数字 = [NSNumber numberWithInt:0];&lt;br /&gt;  NSMutableDictionary *dict数字 = [NSMutableDictionary dictionaryWithObjectsAndKeys:&lt;br /&gt;                                number数字, @&quot;number&quot;,&lt;br /&gt;                                startXmax数字, @&quot;startXmax&quot;,&lt;br /&gt;                                startXmin数字, @&quot;startXmin&quot;,&lt;br /&gt;                                startYmax数字, @&quot;startYmax&quot;,&lt;br /&gt;                                startYmin数字, @&quot;startYmin&quot;, nil]; &lt;br /&gt;&lt;br /&gt;昨日のおさらいのになるが、他にもdict3, 4, 5,,,のように辞書オブジェクトを生成し、その中に同様のキー値に対してstartXmax3, 4, 5,,,といった値を代入していく。「数字」の部分がそれぞれ変わっていく。&lt;br /&gt;&lt;br /&gt;そこで登録した辞書を以下の方法で読み込む。&lt;br /&gt;NSMutableDictionary *dicto = [roadArray objectAtIndex:index+1];　//indexの中身はランダムで生成されたint型の数&lt;br /&gt;      startXmax = [[dicto objectForKey:@&quot;startXmax&quot;] intValue];&lt;br /&gt;      startXmin = [[dicto objectForKey:@&quot;startXmin&quot;] intValue];&lt;br /&gt;      startYmax = [[dicto objectForKey:@&quot;startYmax&quot;] intValue];&lt;br /&gt;      startYmin = [[dicto objectForKey:@&quot;startYmin&quot;] intValue];&lt;br /&gt;&lt;br /&gt;こうすることでroadArrayに含まれるindex + 1番目の辞書オブジェクトを呼び出し、startXmaxなどをキーとして値を読み出せていた。&lt;br /&gt;しかし、これら辞書に登録するキー値は違うものなので異なる辞書オブジェクトを作る必要はなく、１つの辞書にまとめて代入したほうがいいと判断。&lt;br /&gt;そこで、このような辞書オブジェクトを作る事にした。&lt;br /&gt;&lt;br /&gt;NSNumber *startXmax数字 = [NSNumber numberWithInt:252];&lt;br /&gt;NSNumber *startXmin数字 = [NSNumber numberWithInt:195];&lt;br /&gt;NSNumber *startYmax数字 = [NSNumber numberWithInt:45];　//この処理を画像の枚数分繰り返す&lt;br /&gt;&lt;br /&gt;dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:&lt;br /&gt;                               startXmax数字, @&quot;startXmax数字&quot;,&lt;br /&gt;                               startXmin数字, @&quot;startXmin数字&quot;,&lt;br /&gt;                               startYmax数字, @&quot;startYmax数字&quot;,　//この処理を画像の枚数分繰り返す&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ここまでは難なくこなせたが、辞書を呼び出す際に問題が発生した。&lt;br /&gt;&lt;br /&gt;NSString *imageNumber = [[NSString alloc] initWithFormat:@&quot;road%d.jpg&quot;, index+2];　//indexにはint型の値が含まれる&lt;br /&gt;      [contentView setImage:[UIImage imageNamed:(imageNumber)]];&lt;br /&gt;   &lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 255);&quot;&gt;        NSString *Xmax = [[NSString alloc] initWithFormat:@&quot;startXmax%d&quot;, index+2];&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 255);&quot;&gt;        NSString *Xmin = [[NSString alloc] initWithFormat:@&quot;startXmin%d&quot;, index+2];&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 255);&quot;&gt;        NSString *Ymax = [[NSString alloc] initWithFormat:@&quot;startYmax%d&quot;, index+2];&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 255);&quot;&gt;        NSString *Ymin = [[NSString alloc] initWithFormat:@&quot;startYmin%d&quot;, index+2];&lt;/span&gt;&lt;br /&gt;           &lt;br /&gt;      startXmax = [[dict objectForKey:Xmax] intValue];&lt;br /&gt;      startXmin = [[dict objectForKey:Xmin] intValue];&lt;br /&gt;      startYmax = [[dict objectForKey:Ymax] intValue];&lt;br /&gt;      startYmin = [[dict objectForKey:Ymin] intValue];&lt;br /&gt;&lt;br /&gt;やはり青で宣言した文字列で辞書に含まれるキーを指定したのがマズかったのだろうか。。。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;…………ごめんなさい。&lt;br /&gt;ココは省略して次に進みたいと思います。&lt;br /&gt;&lt;br /&gt;次はゲーム時間を計るタイマーと、メニュー画面の設置に取りかかろうと思う。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/4114402495142312562/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/05/blog-post_30.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/4114402495142312562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/4114402495142312562'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/05/blog-post_30.html' title='違うディクショナリ'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5638054156537124187.post-6932620522567257734</id><published>2009-05-29T02:26:00.003+09:00</published><updated>2009-05-29T03:06:43.998+09:00</updated><title type='text'>でぃくしょなり！！</title><content type='html'>ついに完成。&lt;br /&gt;コードは前回の通りで合っていたのだが、初期化をしないせいでエラー（配列roadArrayに読み込まれない）が発生していたらしい。&lt;br /&gt;&lt;br /&gt;roadArray =[[NSMutableArray alloc] init];&lt;br /&gt;&lt;br /&gt;このコードを忘れていたせいでどれだけの時間を無駄にした事か。。。&lt;br /&gt;&lt;br /&gt;しかし、これでコースの変更とスタート位置の設定を完了させる事ができた。&lt;br /&gt;これからはコースが変わった時にスタートできる位置とカーソルの位置も変わるようになった。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;そして、先生と話をした結果doctionaryの構造を変えた方が良いという事が分かった。&lt;br /&gt;&lt;br /&gt;今は画像ごとに１つのdictionaryを以下のように作っている。&lt;br /&gt;&lt;br /&gt;NSNumber *number2 = [NSNumber numberWithInt:2];&lt;br /&gt;   &lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;NSNumber *startXmax2 = [NSNumber numberWithInt:252];&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;NSNumber *startXmin2 = [NSNumber numberWithInt:195];&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;    NSNumber *startYmax2 = [NSNumber numberWithInt:45];&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;    NSNumber *startYmin2 = [NSNumber numberWithInt:0];&lt;/span&gt;&lt;br /&gt;   NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:&lt;br /&gt;                                 number2, @&quot;number&quot;,&lt;br /&gt;                               &lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;  startXmax2, @&quot;startXmax&quot;, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;                                  startXmin2, @&quot;startXmin&quot;, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;                                  startYmax2, @&quot;startYmax&quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 204, 0);&quot;&gt;                                  startYmin2, @&quot;startYmin&quot;, nil];    &lt;/span&gt;&lt;br /&gt;   [roadArray addObject:dict2];&lt;br /&gt;&lt;br /&gt;しかし、これは画像ごとに辞書を変えなくても緑の部分（キー）の値のみを追加していけば問題ない事が分かる。&lt;br /&gt;明日はまず始めにこの変更作業から開始し、視点を切り替えてメニュー画面の制作に取りかかろうと思う。</content><link rel='replies' type='application/atom+xml' href='http://tomonari-wwdc2009.blogspot.com/feeds/6932620522567257734/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/05/blog-post_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/6932620522567257734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5638054156537124187/posts/default/6932620522567257734'/><link rel='alternate' type='text/html' href='http://tomonari-wwdc2009.blogspot.com/2009/05/blog-post_29.html' title='でぃくしょなり！！'/><author><name>Tomonari Muraoka</name><uri>http://www.blogger.com/profile/03043784886110295229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALf7uiqRA6C2_7ZA4_kX8D34SN6uW7MyQDdjDqv4EIAKxViVLSeLy1u7zhhZN0Ize64NAq-4nXORMMAVYEcIHtuA-39rTzuUOQ5HZSVAtz7ArHr_2WCpFLtZZ9qI5fQ/s220/tomo_revolution.png'/></author><thr:total>0</thr:total></entry></feed>