アルゴリズム建築コース 第5日目

 

こんにちは。

前田紀貞建築塾【アルゴリズム建築コース】の講師兼TAの殿村勇貴です。

今日で早くも5回目を迎えました。受講生もすっかりこの塾の雰囲気に慣れて、盛り上がってきました^^

 

***

それでは早速5日目の授業の様子をご紹介します!

 

アルゴリズム建築講義】13:30〜14:30

この日は塾長が出張のため、プログラミング講師である辻による臨時講義が行われました。

いつもとは違う雰囲気で、受講生も改めて気を引き締めて講義を聞いていました。

 

【プログラミング演習】14:30〜16:00

f:id:maedajuku_algorithm10:20140805014016j:plain

 

この日のプログラミング演習は、Processing第一の山場「forループ」に続いて、第二の山場「配列Array」の講義でした。この「配列Array」はなかなかの強敵で、ここから急にコードが複雑になってきます。逆に言うと、これを乗り切れば、いわゆるコードらしいコードが書けるようになるのです。

 

 

さて、「配列」という言葉は、CADや3Dモデリングソフトを使っている人であれば、「配列複製」などでよく目にする言葉だと思います。複数のオブジェクトが均等に列となって配置される機能ですよね。このように複数のデータを扱う、という点では、Processingでの「配列Array」も基本的に同じイメージで考えることができます。

言葉で説明すると「配列とは、同じ意味を持つ複数の変数を1つにまとめて扱うための手段」となります。

言葉だけの説明だと分かり辛いので、この「配列Array」を使うとProcessingでどのようなことができるのか、簡単な例をいくつかお見せしましょう。

 


array01 - YouTube

 


array02 - YouTube

 


array03 - YouTube

 

上の動画のように、複数の円を異なるスピードで大小に拡大縮小させたいとき、それぞれの円の半径には変化の速さを表す変数が1つづつ与えられています。例えば、1つ目の円は1秒に20ピクセル、2つめの円は1秒に15ピクセル…のような感じですね。これを

配列Arrayを使わずに単純にプログラミングすると、それぞれの円の半径を表す4つの異なる変数(r1・r2・r3・r4)についてその増減を計算するコードを別々に書かなければなりません。4つならまだ何とかなりそうですが、例えば1000個の円を異なるスピードで動かしたいとなると、単純に1000行の変数のコードをプログラミングしないとならないということですね。また、計算のルールを少しでも変えたくなったら(例えば変化のスピードを2倍にしたい、など)、また全ての行に「×2」を書き加えていかなければならず、かなりの根性と気長さが必要になります(><;)。。

 

そんな時にコーディングをグッと効率的にしてくれるのがこの「配列Array」です。

動かしたい円が4個だろうと1000個だろうと100,000個だろうと(コンピューターの処理能力が及ぶ限りで、ですが)この「配列Array」と前回説明した<forループ>を組合せて使えば、全ての円の半径を表す変数を一つにまとめることができ、円の個数に関わらずほんの数行でコーディングできるんです。

驚きですね(*゚∀゚)!

 

f:id:maedajuku_algorithm10:20140805014405p:plain

前述の円の例で具体的にいうと、<半径>と名前をつけた仕切り箱を用意して、この箱の中に実際の値をどんどん入れていくイメージになります(図参照)。こうすることで、個々の変数を一つ一つ呼び出す代わりに「<半径>という箱の◯番目に入っている値」という形で呼び出すことができ、コーディングがずっとシンプルに、分かりやすくなるんです。

 

※専門用語では、この箱を「配列」、それぞれの値(要素)に順番につけられた番号を「インデックス」といい、<配列名+インデックス>で要素(データ)を呼び出す、ということになります。また、全要素を一気に処理したい場合(例えば全ての要素に2を掛けたい)ときには、個々の要素ではなく箱(配列)に直接演算を施すこともできるので、1,000個の要素に2を掛ける処理がたった1行でできてしまうのです。

 

 

 

このように、プログラム内で同等の性質・意味を持つ複数の変数をまとめて扱いやすいように管理する機能(考え方)が「配列Array」で、Processingのみならずほとんどのプログラム言語に実装されている基本機能です。

Processingで複数の変数を扱うときに「配列Array」なしでプログラミングすることも可能ですが、その場合とんでもない行数のコードを書かなければならず、変更・修正の都度膨大な手間がかかるので、プログラミングを学ぶならば早い段階で必ず習得すべきものの一つなんです。

 

こんな便利な「配列Array」ですが、考え方と文法がちょっと独特なので“良薬は口に苦し”とはよく言ったもので、すぐに理解するのがなかなか難しい部分なんです。それまで余裕の表情を見せていた塾生たちもこの「配列」には苦戦(-_-;)していて、授業中何度も質問が出ました。

しかし、これは誰もが通る道なのです!講師である私たちも同じ経験をしたからこそ、この部分は特に、できるだけ丁寧に、全員が分かるまで説明します^^

 

塾生たちは第一の難関「forループ」を乗り越えているので、きっとこの第二の山場も乗り越えられるでしょう。

たくさん復習して乗り切りましょう^^

 

 

いかがだったでしょうか?次回はお待ちかね、アルゴリズム建築コースの設計課題「弔いの場」のエスキスが始まります!設計課題「弔いの場」と塾生たちの戦いをご紹介します。お楽しみに^^

 

また、この前田紀貞建築塾アルゴリズム建築コースへの入塾を検討したい方や、もうちょっと詳細知りたいなという方は、下記URLからこのコースの詳細をご覧下さい↓↓

前田紀貞建築塾【アルゴリズム建築コース】http://www5a.biglobe.ne.jp/~norisada/SCHOOL/course/index.html - 4

 

 

 

前田紀貞アトリエ 殿村勇貴

 

f:id:maedajuku_algorithm10:20140805014405p:plain