83
プログラム初級講座 -メディア芸術をはじめよう 2014年2月16日 第17回メディア芸術祭ワークショップ

プログラム初級講座 - メディア芸術をはじめよう

Embed Size (px)

Citation preview

Page 1: プログラム初級講座 - メディア芸術をはじめよう

プログラム初級講座 -メディア芸術をはじめよう2014年2月16日 第17回メディア芸術祭ワークショップ

Page 2: プログラム初級講座 - メディア芸術をはじめよう

プログラミングを始めよう!

Page 3: プログラム初級講座 - メディア芸術をはじめよう

コードが書けると、楽しい!!

Page 4: プログラム初級講座 - メディア芸術をはじめよう

コードが書けると、かっこいい!!

Page 5: プログラム初級講座 - メディア芸術をはじめよう

メディア芸術とプログラミング‣ code.orgプロジェクト (http://code.org/)

Page 6: プログラム初級講座 - メディア芸術をはじめよう

メディア芸術とプログラミング‣ コードアカデミー (http://www.codecademy.com/ja)

Page 7: プログラム初級講座 - メディア芸術をはじめよう

メディア芸術とプログラミング‣ コードアカデミー高等学校 (http://code.ac.jp/)

Page 8: プログラム初級講座 - メディア芸術をはじめよう

プログラミングを始めよう!‣ ワークショップの内容 ‣ 「プログラム初級講座-メディア芸術をはじめよう」 !

‣ Raspberry Pi (ラズベリー・パイ) という小さなコンピュータをつかって、プログラムを体験!!

Page 9: プログラム初級講座 - メディア芸術をはじめよう

プログラミングを始めよう!‣ 手元に置いてある箱を、開けてみましょう!!

Page 10: プログラム初級講座 - メディア芸術をはじめよう

Raspberry Pi (ラズベリー・パイ) 登場!

Page 11: プログラム初級講座 - メディア芸術をはじめよう
Page 12: プログラム初級講座 - メディア芸術をはじめよう

Raspberry Pi

Page 13: プログラム初級講座 - メディア芸術をはじめよう

小さい、安い、シンプル、 かわいい、そこそこ速い!!

Page 14: プログラム初級講座 - メディア芸術をはじめよう

今一番熱いコンピュータ!

Page 15: プログラム初級講座 - メディア芸術をはじめよう

改造して、楽しむ!!

Page 16: プログラム初級講座 - メディア芸術をはじめよう
Page 17: プログラム初級講座 - メディア芸術をはじめよう

Raspberry Pi = 自分の楽器 改造して自分だけのものに

Page 26: プログラム初級講座 - メディア芸術をはじめよう

Raspberry Pi を使ってみよう!

Page 27: プログラム初級講座 - メディア芸術をはじめよう

Raspberry Pi を使ってみよう!‣ 図を参考にしながら、順番に設定していきます。

Page 28: プログラム初級講座 - メディア芸術をはじめよう
Page 29: プログラム初級講座 - メディア芸術をはじめよう

SDカードを挿入

Page 30: プログラム初級講座 - メディア芸術をはじめよう

ディスプレイに接続 (HDMI)

Page 31: プログラム初級講座 - メディア芸術をはじめよう

マウスとキーボードを接続

Page 32: プログラム初級講座 - メディア芸術をはじめよう

ネットワークケーブルを接続

Page 33: プログラム初級講座 - メディア芸術をはじめよう

電源ケーブルを接続 (Power ON!)

Page 34: プログラム初級講座 - メディア芸術をはじめよう

準備完了 いよいよ、システム起動!

Page 35: プログラム初級講座 - メディア芸術をはじめよう

システム起動!‣ しばらく、起動画面が表示される (いろいろ設定中…)

Page 36: プログラム初級講座 - メディア芸術をはじめよう

システム起動!‣ 設定が完了すると、自動的に起動する (はず) ! ‣ 今回のワークショップのためのスペシャルバージョン!

Page 37: プログラム初級講座 - メディア芸術をはじめよう

Linux‣ Raspberry Pi の中身は? ‣ → Linux (リナックス)

Page 38: プログラム初級講座 - メディア芸術をはじめよう

Linux‣ リーナス・トーバルズを中心にコミュニティで開発 (1991 ~) ‣ オープンソースのOS

Page 39: プログラム初級講座 - メディア芸術をはじめよう

Linux‣ Raspberry Pi には、Linuxを最適化した Rasbian OS が搭載

Page 40: プログラム初級講座 - メディア芸術をはじめよう

プログラミングを始めよう!

Page 41: プログラム初級講座 - メディア芸術をはじめよう

プログラミングを始めよう!‣ いよいよ、プログラミングに挑戦! ‣ Processing というプログラミング環境をつかいます

Page 42: プログラム初級講座 - メディア芸術をはじめよう

Processingに触れてみる‣ まずは起動してみる ‣ Processingの起動画面

Page 43: プログラム初級講座 - メディア芸術をはじめよう

Processingに触れてみる‣ メニューの解説 !

‣ Run (実行) ‣ Stop (停止) ‣ New (新規スケッチ作成) ‣ Open (ファイルを開く) ‣ Save (ファイルを保存) ‣ Export (プログラム書き出し)

Page 44: プログラム初級講座 - メディア芸術をはじめよう

コンピュータで絵を描くということ‣ コンピュータの画面はどうなっているのか? ‣ コンピュータの画面を拡大していくと... ‣ 縦横に並んだ点の集合 → ピクセル (Pixel) ‣ 一つのピクセルは赤、緑、青の三原色から成り立っている

Page 45: プログラム初級講座 - メディア芸術をはじめよう

コンピュータで絵を描くということ‣ コンピュータ画面は、縦横沢山のピクセルから構成された巨大なエクセルの表のようなもの

‣ 例:1024 x 768 の液晶画面 ‣ 横に1024列縦に768行ならんだ巨大な表 ‣ それぞれのセルにR,G,B,A(アルファ値)が格納されている

RG

BA

Page 46: プログラム初級講座 - メディア芸術をはじめよう

座標‣ 座標 (Cordinate): ‣ 点の位置を明確にするために与えられる数の組のこと

!‣ コンピュータの画面の1点を指定するためには、いくつのパラメータが必要か?

‣ 2つの数字 (横と縦) !

‣ 横の位置 → x座標 ‣ 縦の位置 → y座標

Page 47: プログラム初級講座 - メディア芸術をはじめよう

Processingの座標系‣ 左上が原点 (0, 0) ‣ 右に行くほどx座標の値が増える ‣ 下に行くほどy座標の値が増える ‣ 例:100 x 100の平面の座標系

(0, 0) (100, 0)

(0, 100)

Page 48: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ 形を描いていく、画面 (キャンバス) を用意する ‣ size関数:ウインドウの大きさを指定 !size(<ウインドウ幅>,<ウインドウ高さ>);

!!

‣ 例:幅640pixel, 高さ480pixelのウィンドウを開く !size(640, 480);

Page 49: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ ウィンドウが表示される!

Page 50: プログラム初級講座 - メディア芸術をはじめよう

点を描く‣ point関数:点を描く !point(<X座標>,<Y座標>);

!!

‣ 例:X座業200, Y座標200の位置に点を描く !point(200, 200);

Page 51: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ 点が描かれる

Page 52: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ 点が描かれる

ココ

Page 53: プログラム初級講座 - メディア芸術をはじめよう

直線を描く‣ line関数:直線を描く !

line(<X始点>,<Y始点>,<X終点>,<Y終点>); !!‣ 例: !line(80,40,400,380);

Page 54: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ 線が追加

ココ

Page 55: プログラム初級講座 - メディア芸術をはじめよう

長方形を描く‣ rect関数:長方形を描く !

rect(<X座標>,<Y座標>,<幅>,<高さ>); !

!‣ 例: !rect(300,200,200,180);

Page 56: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ さらに四角形が追加

ココ

Page 57: プログラム初級講座 - メディア芸術をはじめよう

楕円を描く‣ ellipse関数:円、楕円を描く !

ellipse(<X座標>,<Y座標>,<楕円の幅>,<楕円の高さ>); !

!‣ 例: !

ellipse(400,200,150,200);

Page 58: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ 楕円形が追加

Page 59: プログラム初級講座 - メディア芸術をはじめよう

色の指定‣ 色を指定するには? ‣ R(赤) G(緑) B(青)の三原色で指定する !

‣ 加法混色 (光の三原色であることに注意) ←→ 色料の三原色

光の三原色 色料の三原色

Page 60: プログラム初級講座 - メディア芸術をはじめよう

色の指定‣ 3つの色の属性 ‣ 背景色 background関数

! bacground(background(<Rの値>, <Gの値>, <Bの値>); !

‣ 線に色をつける stroke関数 !

stroke(background(<Rの値>, <Gの値>, <Bの値>); !

‣ 塗りの色をつける fill関数 !

fill(background(<Rの値>, <Gの値>, <Bの値>);

Page 61: プログラム初級講座 - メディア芸術をはじめよう

size(640, 480); !background(0, 0, 127); stroke(255, 127, 63); fill(63, 127, 255); !point(200, 200); line(80,40,400,380); rect(300,200,200,180); ellipse(400,200,150,200);

色の指定‣ 背景色、線の色、塗りの色を追加してみる

Page 62: プログラム初級講座 - メディア芸術をはじめよう

キャンバスを用意する‣ 色が指定された!

Page 63: プログラム初級講座 - メディア芸術をはじめよう

クイズ: 形を描いてみる

Page 64: プログラム初級講座 - メディア芸術をはじめよう

この形を描いてみよう!‣ 会場のあちこちにある、この図形

Page 65: プログラム初級講座 - メディア芸術をはじめよう

size(640, 480); background(255, 255, 255); stroke(255, 0, 0); noFill(); !ellipse(320, 240, 10, 10); ellipse(320, 240, 20, 20);

この形を描いてみよう!‣ ヒント!

Page 66: プログラム初級講座 - メディア芸術をはじめよう

解答例!

Page 67: プログラム初級講座 - メディア芸術をはじめよう

size(640, 480); background(255, 255, 255); stroke(255, 0, 0); noFill(); !ellipse(320, 240, 10, 10); ellipse(320, 240, 20, 20); ellipse(320, 240, 30, 30); ellipse(320, 240, 40, 40); ellipse(320, 240, 50, 50); ellipse(320, 240, 60, 60); ellipse(320, 240, 70, 70); ellipse(320, 240, 80, 80); ellipse(320, 240, 90, 90); ellipse(320, 240, 100, 100); ellipse(320, 240, 110, 110); ellipse(320, 240, 120, 120); ellipse(320, 240, 130, 130); ellipse(320, 240, 140, 140); ellipse(320, 240, 150, 150); ellipse(320, 240, 160, 160);

ellipse(320, 240, 170, 170); ellipse(320, 240, 180, 180); ellipse(320, 240, 190, 190); ellipse(320, 240, 200, 200); !stroke(0, 0, 0); line(250, 250, 450, 350);

この形を描いてみよう!‣ たとえば、こんな感じ

Page 68: プログラム初級講座 - メディア芸術をはじめよう

この形を描いてみよう!‣ たとえば、こんな感じ

Page 69: プログラム初級講座 - メディア芸術をはじめよう

size(640, 480); background(255, 255, 255); stroke(255, 0, 0); noFill(); !strokeWeight(4); !ellipse(320, 240, 10, 10); ellipse(320, 240, 20, 20); ellipse(320, 240, 30, 30); ellipse(320, 240, 40, 40); ellipse(320, 240, 50, 50); ellipse(320, 240, 60, 60); ellipse(320, 240, 70, 70); ellipse(320, 240, 80, 80); ellipse(320, 240, 90, 90); ellipse(320, 240, 100, 100); ellipse(320, 240, 110, 110); ellipse(320, 240, 120, 120); ellipse(320, 240, 130, 130); ellipse(320, 240, 140, 140);

ellipse(320, 240, 150, 150); ellipse(320, 240, 160, 160); ellipse(320, 240, 170, 170); ellipse(320, 240, 180, 180); ellipse(320, 240, 190, 190); ellipse(320, 240, 200, 200); !stroke(0, 0, 0); line(250, 250, 450, 350);

この形を描いてみよう!‣ さらに、線の太さを変えてみる

Page 70: プログラム初級講座 - メディア芸術をはじめよう

この形を描いてみよう!‣ 出来た!

Page 71: プログラム初級講座 - メディア芸術をはじめよう

この形を描いてみよう! - 応用編‣ もっと、プログラムをスマートに! ‣ 円を少しずつ大きさを変えながら書いている部分 ‣ より少ない記述で実現可能 !

‣ 10ピクセルずつ直径を増加させながら、円を描いている

Page 72: プログラム初級講座 - メディア芸術をはじめよう

ellipse(320, 240, 10, 10); ellipse(320, 240, 20, 20); ellipse(320, 240, 30, 30); ellipse(320, 240, 40, 40); ellipse(320, 240, 50, 50); ellipse(320, 240, 60, 60); ellipse(320, 240, 70, 70); ellipse(320, 240, 80, 80); ellipse(320, 240, 90, 90); ellipse(320, 240, 100, 100); ellipse(320, 240, 110, 110); ellipse(320, 240, 120, 120); ellipse(320, 240, 130, 130); ellipse(320, 240, 140, 140); ellipse(320, 240, 150, 150); ellipse(320, 240, 160, 160); ellipse(320, 240, 170, 170); ellipse(320, 240, 180, 180); ellipse(320, 240, 190, 190); ellipse(320, 240, 200, 200); !

この形を描いてみよう!‣ この部分

Page 73: プログラム初級講座 - メディア芸術をはじめよう

for(int i = 0; i < 10; i++){ ! くりかえす命令 !}

この形を描いてみよう! - 応用編‣ くりかえしの構文 ‣ 「for文」をつかうと、繰り返しを指定できる !

‣ 例えば、10回繰り返すという場合は

Page 74: プログラム初級講座 - メディア芸術をはじめよう

size(640, 480); background(255, 255, 255); stroke(255, 0, 0); noFill(); !strokeWeight(4); !for (int i = 0; i < 20; i++) { ellipse(320, 240, i * 10, i * 10); } !stroke(0, 0, 0); line(250, 250, 450, 350);

この形を描いてみよう!‣ くりかえしの構文「for文」で、こんなにスッキリ!

Page 75: プログラム初級講座 - メディア芸術をはじめよう

この形を描いてみよう! - 応用編‣ 「for文」の中で、いろいろ操作してみる !

‣ 色の変化 ‣ 線の太さ ‣ 縦横の比率 ‣ …etc

Page 76: プログラム初級講座 - メディア芸術をはじめよう

アニメーションさせてみよう!

Page 77: プログラム初級講座 - メディア芸術をはじめよう

アニメーションさせてみよう!‣ サンプルプログラムをみながら、解説していきます !

‣ 物体が動くアニメーション ‣ たくさんの物体が同時に動くアニメーション

Page 78: プログラム初級講座 - メディア芸術をはじめよう

アニメーションさせてみよう!‣ アニメーションを理解するための、Processingの基本構造

setup

draw

準備

描画 くりかえし

Page 79: プログラム初級講座 - メディア芸術をはじめよう

さらに先に進むには?

Page 80: プログラム初級講座 - メディア芸術をはじめよう

さらに先に進むには?‣ デスクトップをカスタマイズしてみよう!

Page 81: プログラム初級講座 - メディア芸術をはじめよう

さらに先に進むには?‣ 自作ケースを作ってみよう!

Page 82: プログラム初級講座 - メディア芸術をはじめよう

さらに先に進むには?‣ センサーやデバイスを繋げてみよう!

Page 83: プログラム初級講座 - メディア芸術をはじめよう

Rapiroデモンストレーション!