Spells and Charms

プログラミング(呪文学)の学習記録。

ブートキャンプのテクニカルインタビュー

 

今日テクニカルインタビューを受けたので、もらったアドバイスをメモしておきます。

  1. キーバリューの練習不足
  2. テスト不足
  3. まず先にロジックの組み立てをする

 

1については圧倒的に納得です。
次回のインタビューが1週間後なので、できるだけ時間をみつけてやります。

 

練習問題をとくにあたって、これまでの振り返りを含めたメモ。

まだまだ初心者の自分なので、ひとつひとつ理解することも大事です。
このブートキャンプ自体も答えをみないで自力でやることを割と強く推奨しています。

ただ、自分の性格上の問題だと思うのですが、
真面目に従った結果、1問にかける時間が長くなりすぎたと思います。

もう少しサクサクすすんで「数をこなす」ことに注力してもいいかなと思います。

バランスが難しいですが、自分の場合は、くそ真面目な傾向があるので、
完全に理解していないと次に進むのはよくない、と思ってしまうのですが、
もちろんそれはある意味ではただしいのですが、
それで最終目標である「理解が深まっているか」を振り返ってみないとだめです。

 

時間がかかりすぎるということはつまり、
細切れに問題を解くことになります。

時間を捻出して勉強しているわけなので、
永遠にできるわけではありません。

そう考えると、うんうん唸って同じ問題にずっと取り組んでいるわりには、
得られる理解度は労力の割には少ないのではないかと思います。

 

 

 

他にも、真面目すぎることの弊害がありました。

ここ数日自分が熱心にやっていたEloquent JavaScriptは、
そのブートキャンプがこれをやりこむこと!!というブログ記事を書いていたからです。

 

しかし、実際インタビューを受けてみると、
「読むのも大事だけど練習量をこなすこと」のほうが重要視されている感じがしました。

 

たしかに。
アウトプットに勝る勉強法はないですしね。

というわけで、サクサク型に切り替えてあと1週間やってみます。

 

 


おすすめの 練習サイトとして以下も教えてもらったので、これを中心にやる予定です。

https://javascript30.com/
http://coderbyte.com
http://pythontutor.com/javascript.html#mode=edit

 

 

 

明日へのバトン

・問題サクサク。1問30分以内くらいで。
・コードを書き始めるまえに、コメントで組み立てを先にやる

・都度デバックを忘れずに。

・インタビュー内容振り返り できなかった問題を考える

eloquent javascript 2nd edition chapter 4 Data Structures: Objects and Arrays

Exercises

The sum of a range

The sum of a range

 The introduction of this book alluded to the following as a nice way to compute the sum of a range of numbers:

 1
 
 
 

 Write a range function that takes two arguments, start and end, and returns an array containing all the numbers from start up to (and including) end.

 Next, write a sum function that takes an array of numbers and returns the sum of these numbers. Run the previous program and see whether it does indeed return 55.

 As a bonus assignment, modify your range function to take an optional third argument that indicates the “step” value used to build up the array. If no step is given, the array elements go up by increments of one, corresponding to the old behavior. The function call range(1, 10, 2) should return [1, 3, 5, 7, 9]. Make sure it also works with negative step values so that range(5, 2, -1) produces [5, 4, 3, 2].

 

 ひとつめのfunction.

function range(start,end){
var array=[];
  for(i=0; i<end-start+1; i++){
  array[i]= start+i;
}
  return array;
}

コンソール確認したら正しそうなので次に。

function sum(arr){
  var sumArray = 0
  for (var j = 0; j < arr.length; j++){
    sumArray += arr[j] 
  }
  return sumArray
}

これもコンソールで確認したら大丈夫そうだった。ので次。
次のはさっきかいたrangeをアレンジするもののよう。

 

ちょっと迷走。

 

 

できたっぽい!

function range(start,end,step){
  var array=[];
  if(step === undefined || null){
   step = 1
  }
  
  if(step<0){
   for(i=1; i<=start-end; i++){
    array[0] = start; 
    array[i] = array[i-1]+step;   
   }
 }else{
   for(i=1; i<=end-start; i++){
    array[0] = start; 
    array[i] = array[i-1]+step;   
   }
}
  return array;
}

function sum(arr){
  var sumArray = 0
  for (var j = 0; j < arr.length; j++){
    sumArray += arr[j] 
  }
  return sumArray
}

 

回答はpushをつかってましたが、

あまりまだ自分は多用してないのでforループで地道に書きました。

 

エクササイズはまだありますが、もうすぐテクニカルテストなるものを受けるので今回はここまでです。

eloquent javascript 2nd edition chapter 3 Function

Excercise

Minimum

The previous chapter introduced the standard function Math.min that returns its smallest argument. We can do that ourselves now. Write a function min that takes two arguments and returns their minimum.

これは結構すぐできた。
変に勘ぐってifの条件をa-b>0にしたけれど、a>bでよかったと思う。
そのほうが計算がいっこ少ないし。

function min(a,b){
if(a-b>0){
return b
}else{
  return a
}
}

 

Recursion

これはそもそもなにをreturnしたらいいのかあんまりわからなかった。。

returnがBoolean になるやつ、思いつかない傾向。
true falseを返すんだけど、条件の書き方がパッと思いつかない。

 

この問題は、何をreturnしたらいいのかわからずしばらく立ち往生。

We’ve seen that % (the remainder operator) can be used to test whether a number is even or odd by using % 2 to check whether it’s divisible by two. Here’s another way to define whether a positive whole number is even or odd:

  •   Zero is even.

  •   One is odd.

  •   For any other number N, its evenness is the same as N - 2.

 Define a recursive function isEven corresponding to this description. The function should accept a number parameter and return a Boolean.

 Test it on 50 and 75. See how it behaves on -1. Why? Can you think of a way to fix this?

問題よくよくよんでいたら、コンソールにかいてるじゃないですか。。。

console.log(isEven(50));
// → true
console.log(isEven(75));
// → false
console.log(isEven(-1));
// → ??

しかもよく考えたら関数名もisEven。
ということで、偶数ならtrue奇数ならfalseだったみたいでした。

途中経過のこんなかんじ。

function isEven(n){
if(n===0){
return true
}else if(n===1){
return false
}else return isEven(n-2)
}

n=-1のとき、無限になっちゃってます。

RangeError: Maximum call stack size exceeded (line 1 in function isEven) 

 

ネタバレですがヒントにもそうかかれていました。

When given a negative number, the function will recurse again and again, passing itself an ever more negative number, thus getting further and further away from returning a result. It will eventually run out of stack space and abort.

0より小さい値が与えられた時の条件を足せばいいのかということで、こういうコードに。

 

function isEven(n){
  if(n>=0){
	if(n===0){
      return true;
	}else if(n===1){
      return false;
	}else 
      return isEven(n-2);
	}
  else{
      return isEven(-n);
	}
  }

 

コンソールの回答はあってたけども、
回答の方がスコープがひとつ少なかった。

function isEven(n) {
  if (n == 0)
    return true;
  else if (n == 1)
    return false;
  else if (n < 0)
    return isEven(-n);
  else
    return isEven(n - 2);
}

 

 

補足)recursionでわかりやすかった動画。

 

 

 

Bean Counting

You can get the Nth character, or letter, from a string by writing"string".charAt(N), similar to how you get its length with "s".length. The returned value will be a string containing only one character (for example, "b"). The first character has position zero, which causes the last one to be found at position string.length - 1. In other words, a two-character string has length 2, and its characters have positions 0 and 1.

 Write a function countBs that takes a string as its only argument and returns a number that indicates how many uppercase “B” characters are in the string.

 Next, write a function called countChar that behaves like countBs, except it takes a second argument that indicates the character that is to be counted (rather than counting only uppercase “B” characters). Rewrite countBs to make use of this new function.

 

パッと思いついたコードはこれ。paizaとかkataとかでも似たようなものをみた記憶。

function countBs(str){
  var count = 0;
 for(var i = 0; i<str.length; i++){
   var b = str.charAt(i);
   if(b="B"){
     count +=1;
   }
   return count;
 } 
}

これだと数字はでてくるものの、forループがちゃんとまわっていない模様。
デバックをくりかえす。

 

変数いらないとおもって削除、などちょこちょこいじってなんかできた。

function countBs(str){
  var count = 0;
 for(var i = 0; i<str.length; i++){
   if(str.charAt(i) === "B"){
     count ++;
   }
 } 
   return count;
}

 

問題は2つの関数をかけということだったので次のcountChar

まずは前出のcountBs をほぼほぼぱくってこちらのコード。

function countChar(s,x){
var count = 0 ;
  for(var j = 0; j < s.length-1; j++){
    if(s.charAt(j)===x){
    count++
    }
  }
  return count;
}

 

しかし数字があまりただしくでない。デバックをくりかえす。
jの範囲設定まちがってました。

< つかってるので、s.length-1 ではなく、s.length でよかった。

function countChar(s,x){
var c = 0 ;
  for(var j = 0; j < s.length; j++){
    if(s.charAt(j) === x){
    c++;
    }
  }
  return c;
}

 

 

個人的にはRecursionが一番とっつきにくかった。

 

追記、最後の問題ちゃんと問題最後まで読んでなかった。
countBsつくりなおせってかいてあった。あはは!

 

function countChar(s,x){
var c = 0 ;
  for(var j = 0; j < s.length; j++){
    if(s.charAt(j) === x){
    c++;
    }
  }
  return c;
}

function countBs(s,c){
  return countChar(s,'B')
};

 

回答はこんなかんじ。自分のとほぼ一緒だけど{ }が端折られてるぶん短くすっきり。

このほうがいいのかな?

function countChar(string, ch) {
  var counted = 0;
  for (var i = 0; i < string.length; i++)
    if (string.charAt(i) == ch)
      counted += 1;
  return counted;
}

function countBs(string) {
  return countChar(string, "B");
}

eloquent javascript 2nd edition chapter 2 Program Structure

今回からは気になるところだけメモしていくことにしました。

 

whileとdo-whileのちがい
while(a){
//何らかの処理
}

do{
//何らかの処理
} while (a)

条件aに関わらずdo-whileは最低1回は実行されてしまう。

 

 

**以下エクササイズのネタバレありです**

 

 

 

 

 

 

Exercise

Looping a Triangl

Write a loop that makes seven calls to console.log to output the following triangle:

#
##
###
####
#####
######
#######
for(var i = '#'; i.length<=7; i += '#'){
console.log(i)
}

 

 

FizzBuzz

Write a program that uses console.log to print all the numbers from 1 to 100, with two exceptions. For numbers divisible by 3, print "Fizz" instead of the number, and for numbers divisible by 5 (and not 3), print "Buzz" instead.

 When you have that working, modify your program to print "FizzBuzz", for numbers that are divisible by both 3 and 5 (and still print "Fizz" or "Buzz"for numbers divisible by only one of those).

 

I wrote a simple for-loop.

for(var n = 1; n <= 100; n++){
console.log(n)
}

Then added if expression.

for(var n = 1; n <= 100; n++){
 if(n%3 === 0){
	n = 'Fizz';
 }if(n%5 === 0){
	n += 'Buzz';
 } 
console.log(n)
}

But if I ran this, the result was below.

1
2
Fizz

 

What was wrong?

 

 

 

I forgot to add else?

for(var n = 1; n <= 100; n++){
  var result = '';
  if(n%3 === 0){
    result = 'Fizz';
  }if(n%5 === 0){
  	result += 'Buzz';
  }else{
  	result = n;
  }
  console.log(result); 
}

It showed like below.

1
2
3
4
Buzz
6
7
8
9
Buzz
11
12
13
14
FizzBuzz

 Almost there!!
The only thing was 'Fizz' should be appeared, when n%3 ===0.


Spoiler alert!I  saw the hint.

It said use || operator!!   

 

This is my final answer.

for(var n = 1; n <= 100; n++){
  var result = '';
  if(n%3 === 0)
    result = 'Fizz';  if(n%5 === 0)
    result += 'Buzz'; 
  console.log(result||n); 
}

 

eloquent javascript 2nd edition chapter 1 Values, Types, and Operators

Values

Numbers

Arthmetic
+ //addition

- //subtraction

* //muitiplication

/ //devision

% //reminder of dividing

 

special numbers
infinity

-infinity

 NaN //not a number

 

String

Strings cannot be divided, multiplied, or subtracted, but the + operator can be used on them.

 

Unary Operator

It takes only one value.

typeof

produces a string value naming the type of the value you give it.

 

 FYI,  Binary Operator

 It takes two values. - can be both, unary and binary opertor, minus and negative.

 

Boolean Values

true
false

produce true or false

comparison
<

>

<=

>=

===

!==

 

Other similar operators are >= (greater than or equal to), <= (less than or equal to), == (equal to), and != (not equal to).

Strings can be compared.

The way strings are ordered is more or less alphabetic: uppercase letters are always “less” than lowercase ones, so "Z" < "a" is true. 

 

 

logical operators
&& //and

|| //or 

! //not

 

Conditional Operator

true ? a : b

ternary, it takes three values.

pick one of two values based on a third value.

console.log(true ? 1 : 2);
// → 1
console.log(false ? 1 : 2);
// → 2

 

Undefined Value

undefined
null

that are used to denote the absence of a meaningful value. They are themselves values, but they carry no information.

The difference in meaning between undefined and null is an accident of JavaScript’s design, and it doesn’t matter most of the time.  

 

 

この章はエクササイズなし。

この動画も並行してみると理解が早い。
ただし英語が聞き取りにくいのと、
かなり遅いので、2倍速再生字幕付きでみました。 

 

 

ちょっと考えた事。

 logical operator を眺めていて、ふと思った事。
or のオペレーター、

a||b

って、

if(a){

}else if(b){

}

と同じなのかしら?と思ったのだが結論は、
似ているけどちがう

var x = a || b // aがundefinedとかnullならxにbを入れる
var x = if (a) a else b // こうは書けない

 

変数代入の右側は絶対にじゃないとダメ

var x = a + b
var x = a - 10
var x = 1 + 10
var x = 2 * 2 * 3.14

var x = a || b // <-これは "aがundefinedとかnullとか''とか0じゃなければa、それ以外ならb"という

var x = if (a) a else b // これは右辺が文なのでダメ。if else とかswitchとかforは

 

 

意味合いは似ているけれど、文法的には決定的に異なる。
だから、同じものではない。

 

 

ということでした。

配列の要素数を数えて連想配列にするやりかた

テキストボックスに入力された値を、種類ごとにわけて連想配列にしたいというもの。

 

大まかな流れとしては

  1. 入力値を配列にする
  2. 空の連想配列を用意
  3. forループで仕分けして行く

という3ステップ。

 

自分はまだes6と呼ばれる次世代バージョンのJavaScriptは学んでいないのでまだforループです。

ネットに情報は溢れているものの、結構このes6をつかったものが多かったです。

 

入力値 
taro
taro
hiroko
taro
hiroko
akira
taro

 

得たかった結果
{
taro : 4 ,
hiroko : 2 ,
akira : 1 , 
}

みたいなかんじ。

 
JavaScriptコード
function nameCounter(){
    var loadedList = document.getElementById('list').value;
    var nameArray = loadedList.split('\n');
    var dic_count = {};
    for(var i=0 ; i < nameArray.length; i++){
        if(dic_count[nameArray[i]] === undefined){
            dic_count[nameArray[i]] = 1;
        }else{
        dic_count[nameArray[i]] +=1;
        }
        }
        return dic_count;
    }

 

 

振り返り

入力値を改行でsplitして、配列にするところまでのアイディアはあったものの、
そこから先、

連想配列をどうやってつくるんだー!というのが一番の謎でした。

 

自分がやりたかったことは、
配列の各要素を数えて連想配列にしたい

ということ。


連想配列というのはkeyとvalueの組み合わせのストック。
つまり、key名はわかっていて、その個数をvalueとしたかったわけなのです。

 

 

連想配列は以下のような形をしている。

{
key1名:value1名,
key2名:value2名,
key3名:value3名,
key4名:value4名,
key5名:value5名,
}

 

今回入力値はkey名にあたり、重複する個数がvalue名にあたる。
つまり、forループをつかって、配列を頭から(もしくはお尻から)みていけば、
key名はarray[i]で表すことができる。

 

そしてさらに、

連想配列名[key名]

でvalue名も表すことができる!
今回自分の中ではこの表現が突破口となりました。

 

 

コードに少し追記すると以下のようになります。

function nameCounter(){
//入力値を取得 var loadedList = document.getElementById('list').value;
//入力値の配列を作成 var nameArray = loadedList.split('\n');
//空の連想配列を用意 var dic_count = {};
//forループで配列の頭から順番に一つずつ要素をみていく for(var i=0 ; i < nameArray.length; i++){
//例)i=0の時。もし、連想配列のkeyが入力値の配列の1番目の値だった時のvalueがundefinedだったら if(dic_count[nameArray[i]] === undefined){
//value値がundefinedということは新しい種類のkey名である。なのでvalueに1をセットする。 
dic_count[nameArray[i]] = 1;
//それ以外。つまりvalueに何かしらの値がすでにセットされている場合はそれに1をたす。 }else{ dic_count[nameArray[i]] +=1; } }
//連想配列を戻り値として返す return dic_count; }

 

 

  参考になった動画 

このおじさんテンポよくてわかりやすくて楽しくて本当に好き。

 Wikipediaからrainbowの説明をとってきてword数をカウントするという動画。
built-in functionを使っている場面が結構あるのですがその辺りは無視して使えそうな考え方の大枠を取り込む感じで視聴しました。

開始50秒くらいから10分30秒くらいまでが関連性が高い。

時間がない人は4分13秒くらいからみたらいいかなと思います。

隣の工事の人がかけてるラジオ音量がすごすぎてキツイという話から派生して匿名ダイアリーの耳栓話からの会田誠訴えられるの件からの義務教育でディベートの授業を必須にしたらいいのにという話

こんにちはあほちゃうよです。

自分があほちゃうよっていいたいわけじゃなく、
吉本新喜劇の内場勝則さんのギャグです。ただそれが好きなんで拝借しています。

一応人間なんで、できれば阿呆よりはかしこを目指したいかな、という感じ。でも阿呆になることもかしこの一部だと思います。

なんの話や。

 

 

で、あほちゃうよはいまカナダに住んでいるのですが、
隣がめっちゃ工事をしていて、ものすごくうるさいんですね。
薄い壁一枚。

ほんとに薄いです。話し声とかぜんぶはっきりくっきり聞こえます。

 

工事の音はまあいいんです。
うるさいけど仕方がないし我慢できる。

 

ただ辛すぎるのが、奴がラジオを爆音で7時間再生することなんですね。
昼の12時から夜7時まで。

 

時間帯からみれば文句言える時間帯じゃない。
外で働いていないときは家の中で働いてたりするので、
これが結構つらいのです。集中できない。

 

 

個人の問題なのですが、あほちゃうよは音楽をかけながら勉強ができないタイプの人間です。無音がいいんです集中するときは。

 

なのでちょっと辛いんですね。

 

耳栓してその上から耳あてをして帽子をかぶるという3層構造に加えて
自分の部屋でも自然音とか流したり、
それでも足りなかったんでPCで、youtube3タブ開いて現在のスマホと旧スマホの計5台体制で対抗しても負ける、、、

 

というかそもそも無音がいいので、
自分で音を流すのですら疲れるし集中しづらい。

 

 

そんでノイズキャンセリングのイヤホンのこととか調べていたら、
この記事にあたりました。

 

anond.hatelabo.jp

 

 

かなり過去記事です。

 

自分が思ったのは、これ書いた人は書いたとき疲れてたんだろうなと思う、まずはそこ。
元の人となりとか知らないんでそこは自分がなにか言えることではない。
けど疲弊したらばこういう思考になりやすいだろうなと想像はできた。そんなかんじ。


で、次に笑顔まで求めるって、
一体あなたどこまで他人に無償でサービスを求めるのだ?という違和感。

 

カナダはチップのある文化ですが、
笑顔とかそういうのって、、、チップに値します。
要するに国が違ったとすれば、お金を払ってやってもらうことだったりするレベル。

 

でも国は日本なので、
話がそれてしまったので戻ります。

 

で、この人だって、疲れてなかったらば、
そういうことは思わなかったのかもしれないけれど、
いろいろあってしんどいから他人からの善意がほしかったんだろうなと。
やっぱこの人疲れてんだなって思いました。

コメント、全部読んでいないですが、そういったコメントもみかけました。

 

この人の訴えには全然賛同できないし耳栓くらいさせてくれよな、と思うけど、
でもこのお母さんはきっと疲れてたんだろうね。
で、それを誰かに気づいて欲しくてさらに、いたわって欲しかったんだろうね。
赤の他人からでさえも。(やっぱり相当疲れてたんだろうな、、、)

 

あと、あほちゃうよは子育て経験がないのでそう思うのかもしれません。
やや一方的な見方をしてしまっている可能性は否定できません。それも一応いっておきます。

 

 

一応ついでに自分の考えをいうと、間接的には子育てのサポートをしているつもりです。育休や産休で不在になる人のカバーだってそれは当たり前のことだとしてやっているし、街で手伝えそうなことがあったら手伝ったり譲ったりします。
子供が泣いてうるさいと思ったって、自分だってそうやって大きくなってきたわけだから、別に苦情をいったりしませんし、必死で泣き止ませようとしている大人の人にこれ以上の心の負担をかけないように振る舞うにはどうしたらいいかなとか考えながらじっとしています。子育て、とまではいってはいけないかもだけど、間接的サポートくらいになっていたらいいなとは思い、やっております。

 

 

はい。
で、あほちゃうよは子育てしたことないのですが、
その理由の一つが「この状態」に自分がなりたくない、というのがあります。

 

この状態というのは、
要するにこのお母さんの状態です。すみません。

言わずもがなですがパーソナリティやこの人個人を否定したいわけではないです。

 

この状態というのは、

「疲れすぎて他人が善意を与えてくれていないこと自体に違和感を感じる」その心理です。

 

ものすごく短くいうと、
疲れすぎたくない、ってことかもしれません。

 

わがままですかね。。

 

でも本音です。
どう考えても無感情のロボットでない限り避けて通れなさそうです。
すごくこのお母さんと同じ気持ちを抱いてしまいそうです。

想像ができます。

 

しかしその状態は嫌なのです。

 

自分がもし子育てに参加することがあったなら、
自分の子が泣き喚いたら、ものすごくハラハラすると思います。

まずその音そのものだけでもハラハラしま。
人に迷惑をかけているという思いでさらにかなりストレスフルでしょう。


でちょっと考えてみたのが、
もしそうなったら、自分だって耳栓なりノイズキャンセリングして、
まず自分のストレスや疲弊を軽減するようにしよう、ってことです。

 

そこで思いつく新しい不安としては、
親のくせに自分の子が泣いて耳栓してやがる、、、
みたいな他人の目です。

 

人に耳栓ってバレない耳栓とか、なんかそういうのでひっそりと試してみたいです。

 

 

自分のウィークポイントや予め想像が容易い心の負担があるなら、
対策しないのは、変に感じます。
それで他人に無償の善意を求めるよりましかなって。

 

 

 

そんなことを考えていた時に、会田誠さんが訴えられた記事みました。

これまた違和感でした。

そもそもこの原告の人がヌードモデルやPRモデルをしており、アート界に片足をつっこんでいる状態で会田誠さんの作風をしらなかった、といっているので、
もともと情報感度が低め人のようです。

 

あほちゃうよがびっくりしたのは彼女の手段です。
訴えるという手段になったことがびっくりでした。

 

 

これ、授業なので、
女という性別と自分の職業柄、こういうインパクトのある絵を見るのは不快です、とまずその授業でいってみたらどうだったのかなと思いました。(言ったのかもしれないけど、知らない前提で勝手に自分の意見をいっております)

 

そこから議論がうまれて、逆におもしろかったくらいかもしれません。
というかこの授業にわざわざ時間とお金を割いていっている人たちなら、それに対する会田誠さんの回答はほぼまちがいなくおもしろいと思います。すごい価値。

 

まったく同じ画像だけど、被写体が男だったら皆が思う感情はどうかわったのか、とか。男性がレイプされている絵や、勃起している写真を見るとか。そういうのでもおもしろいのかも。すでに授業でそういいうことはされていたかもしれませんね。

 

 

ちなみに、授業内容はこちら。

講座概要

ヌードを通した芸術作品の見方を見につける

ヌード。なによりも身近で、深遠で、儚くて、永遠のもの。時代や地域ごとに取り扱いや表現に差異はあるものの、芸術家にとっては正面から挑むべき大きなテーマです。それは美を捉えたいという欲望、愛の形象化の結果だからでしょうか。ヌードの歴史はまた、批判や論争や取締がつきまといます。今回、英国テート美術館の名品来日を機会にして、ヌードを切り口に 西洋美術史を概観すること、さらに活躍中の芸術家の方々に話を聞こうという講座です。

スケジュール

04/10(火) 19:00〜21:00東京外苑キャンパス 第1回:篠山紀信とNUDE
篠山紀信NUDE 最新作『処女(イノセンス)の館』を中心に すべてのNUDE 作品について語り、すべての質問に対して答えます。
( 篠山紀信×鈴木芳雄) 
〔担当講師: 鈴木 芳雄 、 篠山 紀信 〕
05/08(火) 19:00〜21:00東京外苑キャンパス 第2回:ザ・ヌード~理想的身体イメージの追求~
古代ギリシャ以来、西洋美術の重要な主題のひとつを形成してきた〈理想的な身体〉イメージ。紀元前7世紀に遡る歴史をひもとき、近代から現代に至る流れまでを概観します。
( 藤原えりみ×鈴木芳雄) 
〔担当講師: 鈴木 芳雄 、 藤原 えりみ 〕
05/15(火) 19:00〜21:00東京外苑キャンパス  第3回:ヌードあれこれ話
ヌード、あるいは女性像を画題にした自作を中心に話します。たぶん芸術と対立概念になりがちなポルノの話や、第二次性徴期の話、フェミニズムの話なども避けては通れないでしょうね。
(会田誠×鈴木芳雄) 
〔担当講師: 鈴木 芳雄 、 会田 誠 〕
05/29(火) 19:00〜21:00東京外苑キャンパス 第4回:「ヌード」展を通して裸体表現の変遷をみる
横浜美術館で開催される企画展「ヌード 英国テート・コレクションより」について、コンセプトや出品作品について解説します。
(沼田英子×鈴木芳雄) 
〔担当講師: 鈴木 芳雄 、 沼田 英子 〕
06/12(火) 19:00〜21:00東京外苑キャンパス 第5回:日本・近代・恋愛の起源
日本人にとって近代は大きな転換点だった。そのとき我々が切り捨てたものは何か。ヌード表現とセクシュアリティの関係を歴史を振り返りながら再考します。あと、自作についても少し。
( 鷹野隆大×鈴木芳雄) 
〔担当講師: 鈴木 芳雄 、 鷹野 隆大 〕

藝術学舎 | 京都造形芸術大学がおくる社会人のための公開講座 より。

 

 

メンバーやこの内容を読むだけでも、まあ想像できそうなものですけどね。。。

 

 

あほちゃうよはアート詳しいわけではないですけど、
美しさで勝負するアーティストだけがアーティストではないでしょう、と思っているのと、アートの境目って難しそう、とはわからないなりに思っています。

 

 

講座内容にちゃんと「たぶん芸術と対立概念になりがちなポルノの話や、第二次性徴期の話、フェミニズムの話なども避けては通れないでしょうね。」って書かれているし。。

 

 

 

 

とひとり脳内であーだこーだ考えていたところで、
自分は小学校のころ、ディベートの授業があったことをふと思い出しました。

 

ディベートってただ単に言いたいことをまくし立てるものではなくて、
ある議題に対して、論理を通す力を学ぶ授業です。

 

誰に対してもわからないといけないし、

もちろん個人攻撃はだめだから、感情を排した上ではなしを進める。
感情がファクターの一つになりうる場合には、それをきちんと説明した上で、
要素として登場させる。みたいなそんなことです。

 

そもそも議題に対して賛成か反対かは自分で選べないし。
与えられた立場で論理を構築していくかんじ。

 

それから、カナダにて就活するときや、
英語の授業を受けるときに、おもしろかったのが、

レジュメでも文章でも「型」が決まっていることでした。

 

作文といっても、
argumentative, narrative, discriptive, persuasive,,, and so onってかんじで、
スタイルが色々あって、まずそれを決め、それぞれ書き方がきまっています。

 

 

ディベートや作文の話をもちだして何が言いたいかというと、
要するにアウトプットの方法を教えてくれるのはすごくいいんじゃない?ということ。

アウトプットの方法を習うということは、
自分の言いたいことをまとめる力だけでなく、
自分と言う人間が発信した場合におこる相手の反応も考慮に入れた上で発信内容を構築することも学べるわけです。

つまり、立ち位置を把握したうえでの発信。

 

今の日本の学校教育全然しらないので、
もうすでにディベートとか必修なのかもしれません。そうだといいな。

 
国民の大半が上記のような「アウトプットの基本型」を知っていたら、
それは個人にとっても、すごく助けになりそうだなということを思いました。

 

 

匿名ダイアリーのお母さんも、
まず自分が疲れすぎている前提でこういう考えになっている、という前提を把握することができたかもしれませんし(できている上で書いてたかもしれませんが)、

 

会田誠さんを訴えている原告の人も、
そもそも自分の立ち位置を把握していたら、訴える以外のアウトプットをしたかもしれません。この授業のコンセプト、自分はそれにわざわざ参加している側の人間、講師となっている人たちの作風、なぜこの人たちが講師に選ばれたのか、などです。

 (この人には別の意図がある、とか当たり屋だ、とかも言われているので、その場合は短期的にはある意味成功してそうですが?)

 

そうこうしているうちに隣の工事がはじまりました。
これ書いてる間だけでも静かでよかったかな、、、

 

 

では耳栓などをして、今日も頑張ってプログラミングの練習をしたいと思います。

 

ここまで読んでくださった方がいらっしゃったとしたら、
ありがとうございました。