2018/04/01 ブログのテーマをcocoonに変更しました。
スポンサーリンク

【建築学科向け】短期設計出題プログラム!![JavaScript]

スポンサーリンク

JavaScriptの勉強を始め、はや2か月ほどでしょうか……。

僕の初心者向けJavaScript講座はコチラ(Part.1)コチラ(Part.2)からどうぞ。

 

さて、今回の記事は、『設計課題が苦手な建築学科生に送る、短期設計出題プログラム』です!!

 

 

作った背景……

今回、これを読んでいるのは建築学科の人だと思ってお話しします。(違う方でも読んでいただけたら嬉しいです。)

 

まず、なぜこんなものを作ろうと思ったか……。それは僕自身が『設計課題が苦手だから』に他なりません。

他の大学はわかりませんが、僕の大学ではおよそ7週間で一つの設計課題を完成させます。

「結構長いじゃないか。」と思われるかもしれませんが、なかなかしんどいんですよこれが。

  1. 最初の2週間で出題された敷地について考え、コンセプトをまとめ
  2. 次の3週間で教授に意見を賜りながら設計を進め
  3. さらに次の1週間で完成にこぎつけ
  4. 最後の1週間は発表

という感じになっています。まぁこれでも「ん?やっぱり時間はたっぷりあるのでは?」と思う方もいると思います。そこは感じ方の違いでしょう。

僕が特筆したいのはⅱ。『教授に意見を賜りながら』というところ。

建築学科の教授はとにかく学生に手を動かしてほしいと考えています。そのため教授によっては、持って行った案がそれほど悪くなくてもボツにして、違う案を持って来させ、新しい案がそれほど良くなかった場合は結局初めの案で進めさせるなんてことも……。リセマラかよ……。

僕はこの流れが本当に苦手でした。『一つの案が浮かぶとそれ以外の形が浮かばなくなる』タイプの僕には、新しく持っていくということがとても難しいのです。しかも持って行ってもまたやり直しだなんて……。(そもそも案自体がよくないことは事実ですが……。)

逆に短期設計のように、その日に課題を出されその日に完成させる課題、言い換えると『一つ案を出して形にすればいい課題』は比較的得意でした。なぜなら出てきたその一案を突き詰めればよいのだから。

 

様々な設計課題をなんとかやり遂げた時、もしも、案を浮かべ、それを形にする時間を洗練し短くしたら、どれほど自分の案を丁寧かつ自信を持って、アウトプットすることができるだろうか。と、考えるようになりました。

そんなときに学んだJavaScript(プログラミング言語です)。これを使って自分のような学生を助けることができたら、そして自分自身の力にもなればと思い、作ってみました。

 

こんな人向け

・一案が浮かぶと、その他の案に頭が行かなくなる人。

・設計のスピードをとにかく早めたい人。数をこなしたい人。

・与えられた少ない条件に、何かを見出す力が欲しいと思っている人。

・ちょっと設計というものに手を出してみたい人。

 

プログラム

正直不完全ですが、こちらになります。

いかがでしょうか?ちょっといろいろボタンを押してみてください。

上のボタンで敷地をランダムに提案します。長方形しかできませんが敷地を少し湾曲させてもかまいません。

下は条件になります。自分で設定してもかまいません。なにより何を入れたらいいか思い浮かばず、そんなに条件がありません……。

 

敷地ボタンの解説

住宅は8*8m²~23*23m² 。集合住宅は20*20m²~70*70m²。(但し、600~2500m²にしました。)公共施設は20*20m²~70*70m²。

建蔽率と容積率はそれぞれ、40,50,60,80と、100,120,150,200(単位は%)のどれかにランダムで示されます。(種類によっては出ないものもあります。)

それぞれ東西南北に、道路か建物を配置。すべて道路orすべて建物にはなりません。

 

条件ボタンの解説

全てのボタンに周囲の状況。住宅は人数。集合住宅は世帯数。公共施設は内部に入れて欲しい施設をランダムで表示。

条件は自分で決めてもいいと思うので、使うか使わないかはおまかせします!

 

一応コード

長いので読み飛ばしてもらって構いません! 感想の項へ

Math.floor(Math.random() * ○) をまたしてもたくさん使っています。乱数便利。

<div><script> //敷地指定
function click1(){
var w1 = Math.floor(Math.random() * 15) + 8;
var w2 = Math.floor(Math.random() * 15) + 8;
var area1 = w1 * w2;
if (area1 < 120) {
var kennpei = ["60%","80%"];
var youseki = ["120%","150%"];
var i1 = Math.floor(Math.random() * 2);
var i2 = Math.floor(Math.random() * 2);
} else {
var kennpei = ["40%","50%","60%"];
var youseki = ["100%","120%","150%"];
var i1 = Math.floor(Math.random() * 3);
var i2 = Math.floor(Math.random() * 3);
}
var ar = ["道路","住宅"];
var n = 0,s = 0,w = 0,e = 0;
var sum1 = n + s + w + e;
while (sum1 == 0 || sum1 == 4) {
n = Math.floor(Math.random() * 2);
s = Math.floor(Math.random() * 2);
w = Math.floor(Math.random() * 2);
e = Math.floor(Math.random() * 2);
sum1 = n + s + w + e;
}
document.shikiti.tarea1.value="以下は、住宅の敷地。\n南北に" + w1 +"m、東西に" + w2 + "m。面積は" + area1 + "m²。\n建蔽率は" + kennpei[i1] + "、容積率は" + youseki[i2] + "。\n北に" + ar[n] + "、南に" + ar[s] + "、西に" + ar[w] + "、東に" + ar[e] + "がある。";
}
function click2(){
var area1 = 0;
while (area1 > 2100 || area1 < 600) {
var w1 = Math.floor(Math.random() * 50) + 20;
var w2 = Math.floor(Math.random() * 50) + 20;
area1 = w1 * w2;
}
var kennpei = ["40%","50%","60%"];
var youseki = ["100%","120%","150%"];
var i1 = Math.floor(Math.random() * 3);
var i2 = Math.floor(Math.random() * 3);
var ar = ["道路","住宅"];
var n = 0,s = 0,w = 0,e = 0;
var sum1 = n + s + w + e;
while (sum1 == 0 || sum1 == 4) {
n = Math.floor(Math.random() * 2);
s = Math.floor(Math.random() * 2);
w = Math.floor(Math.random() * 2);
e = Math.floor(Math.random() * 2);
sum1 = n + s + w + e;
}
document.shikiti.tarea1.value="以下は、集合住宅の敷地。\n南北に" + w1 +"m、東西に" + w2 + "m。面積は" + area1 + "m²。\n建蔽率は" + kennpei[i1] + "、容積率は" + youseki[i2] + "。\n北に" + ar[n] + "、南に" + ar[s] + "、西に" + ar[w] + "、東に" + ar[e] + "がある。";
}
function click3(){
var w1 = Math.floor(Math.random() * 50) + 20;
var w2 = Math.floor(Math.random() * 50) + 20;
var area1 = w1 * w2;
var kennpei = ["40%","50%","60%","80%"];
var youseki = ["100%","120%","150%","200%","300%"];
var i1 = Math.floor(Math.random() * 4);
var i2 = Math.floor(Math.random() * 5);
var ar = ["道路","建物"];
var n = 0,s = 0,w = 0,e = 0;
var sum1 = n + s + w + e;
while (sum1 == 0 || sum1 >= 3) {
n = Math.floor(Math.random() * 2);
s = Math.floor(Math.random() * 2);
w = Math.floor(Math.random() * 2);
e = Math.floor(Math.random() * 2);
sum1 = n + s + w + e;
}
document.shikiti.tarea1.value="以下は、公共施設の敷地。\n南北に" + w1 +"m、東西に" + w2 + "m。面積は" + area1 + "m²。\n建蔽率は" + kennpei[i1] + "、容積率は" + youseki[i2] + "。\n北に" + ar[n] + "、南に" + ar[s] + "、西に" + ar[w] + "、東に" + ar[e] + "がある。";
}
</script></div>
<input type="button" value="住宅" onclick="click1()">
<input type="button" value="集合住宅" onclick="click2()">
<input type="button" value="公共施設" onclick="click3()"><br>
<form name="shikiti"><textarea name="tarea1" rows="4" cols="45"></textarea>
</form>
<div><script> //条件指定
var joken = ["周囲の景色がいい","周囲は高層の建築が多い","近くに大通りがある"]
var joken1 = ["4人家族","2世帯住宅","5人家族","夫と妻のみ"]
var joken2 = ["4~7世帯","7~10世帯","10~15世帯"]
var joken3 = ["コワーキングスペース有","カフェスペース有","公演ができる場所有","ショップ有(内容は任意)"]
function click4(){
document.shikiti2.tarea2.value="以下は、住宅の条件。\n" + joken[Math.floor(Math.random() * 3)] + "\n" + joken1[Math.floor(Math.random() * 4)];
}
function click5(){
document.shikiti2.tarea2.value="以下は、集合住宅の条件。\n" + joken[Math.floor(Math.random() * 3)] + "\n" + joken2[Math.floor(Math.random() * 3)];
}
function click6(){
document.shikiti2.tarea2.value="以下は、公共施設の条件。\n" + joken[Math.floor(Math.random() * 3)] + "\n" + joken3[Math.floor(Math.random() * 4)];
}
</script></div>
<input type="button" value="住宅条件" onclick="click4()">
<input type="button" value="集合住宅条件" onclick="click5()">
<input type="button" value="公共施設条件" onclick="click6()"><br>
<form name="shikiti2"><textarea name="tarea2" rows="4" cols="45"></textarea>
</form>

書いてみて、インデント(文頭のスペース)もう少し開いていたほうがいいなと思った……。見にくいよね少し。

乱数のところ、配列の数(○○.length)使った方がのちのち変更掛けやすそうだし、無駄が多い!やはり!

そして変数の名前わかりにくすぎる……。

 

コードについてもご意見いただけたら嬉しいですね。

 

感想

さて、いかがでしたでしょうか。

自分でもまだ実践してないので、近いうちに3種類作って記事にしましょうかね。

一つあたり……図面とコンセプトシートのみなら6時間くらいで行けるかな……。

住宅だけは模型も作ってみようかな。

 

こんな大口叩くと実践しなかったときに痛い目を見るので、この辺にしましょう……。

誰か作ってみたら教えてください。オサダ、きっと喜びます。

 

 

The following two tabs change content below.

オサダ

様々なジャンルの記事を書いていきます。
興味がないのに読んでしまう。そんな記事を目指して。
言葉を介してあなたのもとに。言葉がなくともあなたと共に。
連絡先:osada@routecompass.net

コメント