yoppa.org


アプリケーションの開発(1):iPhone開発の概要と開発環境の設定、iProcessingを使ってみる

サンプルファイルのダウンロード

この回でとりあげた全てのサンプルは、以下からダウンロードできます。

開発体制の準備

ADC (Apple Developper Center) メンバー登録

  • この講義では「iPhoneユニバーシティプログラム」に加入して開発を行う
  • まず初めに個人でアップルデベロッパとして登録する必要あり(無料)
  • Apple開発者登録のページにアクセス
  • 登録画面の「Get Started」ボタンを押す
  • Do you have an existing Apple ID you would like to use? の質問には Create an Apple ID を選択して Continue
  • 登録フォームがでてくるので、必要事項をすべて 半角英数字 で入力 (日本語を使用すると後で苦労します…)
  • アンケートフォームに移行するので、答えても良い部分には回答
  • 登録したemailアドレスに、確認メールがくるので、そこに表示されているリンクをクリック
  • 登録完了!!

デバイスIDの確認

  • 履修者でiPhoneを所持者のデバイスを、ユニバーシティプログラムに登録
  • XCodeを起動 (Macintosh HD → Developper → Application)
  • オーガナイザを表示 (メニューバーから ウィンドウ → オーガナイザー)
  • オーガナイザの画面の左側のリストからiPhone端末を選択
  • Summaryタブに表示されているidentiferの文字列をコピーして、記録しておく


XCodeのオーガナイザでのデバイスIDの表示画面

iPhoneユニバーシティープログラムへの参加

  • ADCに登録が完了したら、久保田さん、山本さん、田所を宛先に、登録した名前とemailアドレスを連絡してください
  • Subject:ADC
  • 本文:登録した名前(半角英数字)、登録したemailアドレス、使用しているiPhoneのデバイスID
  • チームへの追加する招待メールが届きます

iProcessingをつかってみる

iPhone開発の最初の一歩

  • 最初から本格的なiPhoneアプリを作成するのはハードルが高い
  • まずは、簡単な開発環境を使用してXCodeやiPhoneへの書き出しなどの手順に慣れる
  • 手始めに、Processingの文法でiPhoneアプリが作成できる、iProcessingを使ってみる
  • iProcessingのWebページ からダウンロードしておく


iProcessing

そもそもProcessingとは?

  • MITの博士課程で研究していた、Ben FryCasey Reasによって開発されたプログラミング開発環境
  • John Maedaの率いるMIT Media LabのACG (Aesthetics and Computation Group) グループ
  • もともとは、John MaedaのDBN(Design as Numbers)を基盤にしている
  • シンプルな文法だが、拡張性に冨んでいる
  • ビジュアルデザイン、メディアアート、インタラクションデザインなどに特化
  • プログラム初学者の学習、プログラムのスケッチ、プロトタイピングなどに便利
  • 本格的なプロジェクトにも対応可能


Processing

iProcessingのサンプルを起動してみる

  • iProcessingのフォルダ「0004」→「examples」の中に様々なサンプルが入っている
  • その中のXCodeプロジェクトファイルを開く:例「Animator」→「Animator.xcodeproj」
  • XCodeのIDE(統合開発環境)が起動する
  • メニューバーの「概要」のタブからビルドする環境を選択
  • アクティブSDKを「iPhoneシミュレータ3.1.3」アクティブな構成を「Debug」に
  • 「ビルドと実行」ボタンを押す
  • iPhoneシミュレータが起動して、アプリの実行結果をシミュレートできる
  • ちなみにOSX 10.6 SnowLeopardだとアクティブSDKを「iPhoneシミュレータ3.2」にしてiPadでの起動の様子も確認可能


アクティブSDKの選択


iPhoneシミュレータで起動した様子


iPadシミュレータで起動した様子

iProcessingプログラミング – どのファイルをエディットするのか?

  • iProcessingで使用するファイルは一つだけ!
  • XCode左側コラム、グループとファイルからファイルを選択
  • [プロジェクトのアイコン] →「Resorces」→「main」→「main.pde」
  • 「main.pde」ファイルを選択して、メニューのエディタボタンを押す
  • これがiProcessingのプログラム


main.pde

新規プロジェクトを用意する

  • 既存のプロジェクトをフォルダごとコピー – 例「Animation」
  • フォルダの名前を任意のものに – 例「TestProject」
  • XCodeプロジェクトの名前もフォルダ名にあわせる – 例「TestProject.xcodeproj」
  • プロジェクトを開く
  • main.pdeを開き、中身を全て消す
  • アプリケーション名の変更 – 「ターゲット」→ [アプリの名前] を右クリックして「名称変更」を選択
  • アプリの名称を任意のものに – 例:「Test」
  • 試しにビルドしてみる – 空白のプログラムが実行されるはず


アプリケーション名称の変更

iProcessingの画面の位置を指し示す – 座標系

  • iProcessingの座標系
  • 左右の位置をX座標と呼ぶ、上下の位置をY座標と呼ぶ
  • 単位はピクセル
  • X座標とY座標の組み合わせを、(X,Y)と表記 – 例:X=120, y=200 だったら (120, 200)
  • 左上が原点(0,0)
  • 右にいくほどXの値が増える、下にいくほどYの値が増える
  • iPhoneの画面サイズは、(320,480)


iPhoneの座標系

簡単な図形を描いてみる

  • とりあえず以下のプログラムをmain.pdeに入力

[code language=”java”]
size(320,480); //画面のサイズを320×480に
background(127); //背景を127の明るさのグレーに
stroke(255,255,0); //線の色を黄色に
fill(63,127,255); //塗りの色を水色に
ellipse(160,240,200,200); //中心(160,240)の位置に直径200の円を描く
[/code]

  • ビルドすると以下の図形が表示されるはず


実行結果

Processingの命令

  • Processingで形を描くには、命令(= 関数)を指定していく
  • 画面のサイズを指定する関数、色を指定する関数、形を定義する関数など
  • 全ての関数は「; (セミコロン)」で終了する
  • 関数の細かなパラメータを指定するには、引数というのを用いる
  • 引数の数は関数の種類によって異なる、複数ある場合には「,」で区切って列挙していく
  • Processingの全ての関数は、ProcessingのAPIリファレンスに説明されている


Processingの関数の書式

いろいろな形を描く

  • いろいろな形を描いてみる

[code language=”java”]
size(320,480); //画面のサイズを320×480に
background(0); //背景を黒に
noStroke(); //線を描かない

fill(255,0, 0,127); //塗りの色を透明な赤色に
rect(40,80,150,150); //四角を描く

fill(63,127,255,127); //塗りの色を透明な水色に
ellipse(150,240,180,240); //楕円を描く

fill(255,255,0,127); //塗りの色を透明な黄色
triangle(150,240,140,460,300,380); //三角形を描く
[/code]

  • 実行結果


四角形と楕円と三角形を描く

アニメーションの準備 – プログラムの構造化

  • アニメーションを作成するには、プログラムの構造化が必要
  • 「setup()」と 「draw()」という二つのブロックに分ける
  • setup:初期化する場所、プログラムを実行したときに最初に1回だけ実行したい命令を記入
  • draw:メインループ、プログラムを実行中は指定した速度(fps)でたえず更新し続ける
  • 全体の構造は下記のようになる

[code language=”c”]
/*
* プログラム全体に必要な変数(値を記憶する箱)はここに記入
*/

void setup(){
/*
* 初期化
* プログラム起動時に1回だけ実行される
* 画面のサイズ、色の設定、スピード(FPS)など
*/
}

void draw(){
/*
* メインループ
* 指定したスピードで常に画面を更新していく
* ここで指定した動きがアニメーションとなる
* 座標を更新して、形を描く
*/
}
[/code]

アニメーションさせてみる

  • 円を左右に揺らしてみる
  • 左右に揺れる動き – sin関数を利用してみる
  • 画面の中心を基準にsin関数にそって、X座標を変化させる

[code language=”java”]
float x; //x座標を記憶する「箱」
float y; //y座標を記憶する「箱」
int counter; //カウンターを記憶する「箱」

void setup(){
size(320,480); //画面のサイズ(320,480)
frameRate(30); //30fpsで画面を更新
noStroke(); //線を描かない
fill(31,63,255); //塗の色を水色に
}

void draw(){
background(0); //背景黒
x = width/2 + sin(counter*0.1)*100; //x座標をsin関数で変化させる
y = height/2; //y座標は画面の中心
counter++; //カウンターを更新
ellipse(x, y, 40, 40); //計算した場所を中心に円を描く
}
[/code]

iTamabi lecture material #1 from Atsushi Tadokoro on Vimeo.

  • 円を上下にも揺らしてみる
  • 上下の揺れはsinではなくcos関数にしてみる
  • cos関数は、ちょうど90° (1/2π) だけsin関数とずれている (直交している)
  • 結果円軌道を描くことができる!!

[code language=”java”]
float x; //x座標を記憶する「箱」
float y; //y座標を記憶する「箱」
int counter; //カウンターを記憶する「箱」

void setup(){
size(320,480); //画面のサイズ(320,480)
frameRate(30); //30fpsで画面を更新
noStroke(); //線を描かない
fill(31,63,255); //塗の色を水色に
}

void draw(){
background(0); //背景黒
x = width/2 + sin(counter*0.1)*100; //x座標をsin関数で変化させる
y = height/2 + cos(counter*0.1)*100; //y座標をcos関数で変化させる
counter++; //カウンターを更新
ellipse(x, y, 40, 40); //計算した場所を中心に円を描く
}
[/code]

iTamabi lecture material #2 from Atsushi Tadokoro on Vimeo.


コンピュータ&ネットワーク入門

導入:コンピュータと仲良くなるために

  • 参考資料:山形浩生「コンピュータ (あたらしい教科書 9)」
  • コンピュータの「常識」を学び、多くの人で共有する必要性

    自動車の運転をしている人がすべて、ボンネットを開けてエンジンの修理をしたり、パンクしたタイヤを取り替えたりできるわけではありません。でも社会の中で多くの人が車はガソリンや軽油を燃やして走っているのだとか、排気ガスを出すとか、急にはとまれない、といったことを理解していることが、道路についての政策や自動車開発の方向性をある程度左右しています。この本で伝えたいのは、コンピュータについてのそのくらいの常識なのです。でも、それを多くの人が共有すれば、たぶんコンピュータをめぐる社会の環境はーそしてコンピュータが不可欠となっているぼくたちの生活はー完璧ではないにせよ、大きく間違えることはなくなるはずです。(山形浩生「あたらしい教科書 – コンピュータ」p3)

情報芸術コースのコンピュータ環境について

  • 104教室のiMacを使用して、コンピュータ操作の基本を学ぶ

起動

  • 電源ボタンを押して、電源を入れる
  • iMacの場合はモニタ裏面の左下 (※ 電源ボタンの位置は、機種により異なります)

終了

  • アップルメニューから、システム終了を選択

強制終了

  • [command + option + esc]キーで強制終了するアプリケーションを選ぶダイアログが表示、終了したいプログラムを選択して終了する
  • 「応答なし」になっているプログラムをドック上のアイコンを[option]を押しながらマウスで長押し、表示されたポップアップメニューから強制終了を選択する
  • 何も反応しなくなってしまった場合は、電源ボタンを数秒間押しっぱなしにすると電源が落ちる

Macintoshの基本操作

Apple Webサイトのムービー「Macの基本操作」を視聴

  • デスクトップ
  • ドック
  • Finder
  • メニューバー
  • Finderとその機能
  • サイドバー
  • 表示の切り替え
  • 検索
  • ヘルプ

ファイルの操作の練習

  • ファイルの作成
  • フォルダ作成
  • ファイルの移動、コピー、削除、リネーム

テキスト入力

文章を入力してみる

  • 「テキストエディット」を起動
  • 文字を入力してみる

かな漢字変換「ことえり」の使用法

  • 入力モードを切り替えるには、[Command + Space]
  • 文章を入力
  • 変換対象の単語の下の下線が太くなる
  • [Space]押すと、変換候補が順番に表示される
  • 正しい変換候補が表示されたところで、[Enter]
  • 変換する文節を移動するには、[←]と[→]、もしくは[Control + F][Control + B]
  • 変換したい文節を広げたいときには、[Shift + →]、もしくは[Control + O]
  • 変換したい文節を広げたいときには、[Shift + →]、もしくは[Control + O]
  • かんたんな自己紹介の文章を入力してみる
  • 参考:Mac ことえりのキーボードショートカットまとめ(50種類)

入力した文章をコンピュータにしゃべらせてみる

  • 入力した文章をマウスで選択し、「編集」→「スピーチ」→「読み上げを開始」
  • ただし、日本語には未対応
  • 英文を入力して、読み上げ機能をためしてみる

学内ネットワークの利用

情報デザイン学科ITサポートのページを閲覧 (https://idns.idd.tamabi.ac.jp/)

  • 学内ネットワークの利用に関しての情報が全て掲載されている
  • まずログインしてから利用
  • このページが自分のアカウントの管理のための機能もはたしている
  • パスワードは自分自身の責任で管理すること
  • 学内ネットワーク利用にあたっての、ルールと禁止事項の確認


ログイン画面

ファイルサーバーへの接続

  • ファイルサーバー、個人専用のロッカーのようなもの
  • ITサポートのページを参照しながら、ファイルサーバーに接続する
  • ファイルのアップロード、ダウンロードを試してみる
  • 席を移動して、別のMacからも同じデータが閲覧できることを体感してみる

共用のコンピュータを使う際の注意

  • 共用のコンピュータには個人ファイルを残さない
  • 残したいデータはファイルサーバにアップする
  • 共用コンピュータに保存したファイルが無断で消されていても本人の責任

Email

  • PCのEmailアカウントをもっているかの調査
  • 携帯のアドレスしかない人は、Gmailでアカウント作成
  • Emailを送受信してみる
  • 授業のMLへの登録

Twitterで遊んでみる

Twitterとは

  • 個々のユーザーが「トウィート(つぶやき)」を投稿することでゆるいつながりが発生するコミュニケーション・サービス
  • 全世界でのユニークユーザは2010年4月14日のTwitterの発表では登録ユーザーは1億500万人、Twitter.comへのユニークビジター数は1億8000万人、1日に30万人の新規ユーザーを獲得 (CNET – Twitterの過去と未来–共同設立者から開発者に向けたメッセージより)

Twitterのアカウントを作成

  • アカウントが無い人はアカウントを作成
  • 作成にはEmailアドレスが必要

Twitterの基本機能

  • トウィート – ユーザーからの140字以内の投稿
  • フォロー – 他のユーザーの投稿を自分のタイムラインで表示できるように、ユーザーを登録すること
  • リプライ- 他のユーザーに宛てた投稿のこと。「@ユーザー名 投稿」の書式で投稿すると、そのユーザー宛の返信扱いとなる
  • ダイレクトメッセージ – フォローされている特定のユーザーに、第三者から見ることができないメッセージを送る
  • リトウィート – 周知を目的とした公式RT(発言元がそのまま表示される)と、ユーザーが「RT @username 引用文」といった書式に編集して投稿する非公式RTがある
  • ハッシュタグ – 特定のトピックに関する投稿を、公式のTwitter検索から一覧して見ることができるように、キーワードの前に#を置いて投稿する
  • 検索 – キーワードを含んだ投稿がリアルタイムで、タイムラインに表示される

授業のハッシュタグを使ってみる

  • この授業のハッシュタグを、「#idd_medilite」とする
  • 全員で授業のハッシュタグに投稿してみる
  • 検索で授業を履修している人のアカウントを抽出する
  • お互いにフォローしてみる

ADCの会員登録と必要ファイルのダウンロード

ADCの会員登録手順

  • 登録は無料です
  • Apple開発者登録のページにアクセス
  • 登録画面の「Get Started」ボタンを押す
  • Do you have an existing Apple ID you would like to use? の質問には Create an Apple ID を選択して Continue
  • 登録フォームがでてくるので、必要事項をすべて 半角英数字 で入力 (日本語を使用すると後で苦労します…)
  • アンケートフォームに移行するので、答えても良い部分には回答
  • 登録したemailアドレスに、確認メールがくるので、そこに表示されているリンクをクリック
  • 登録完了!!

iPhoneSDKのダウンロード

Snow Leopad (Mac OSX 10.6) ユーザの場合

  • 再度、iPhone Dev Center (iPhoneの開発者センター)にアクセス
  • Login ボタンをクリック
  • 登録したemailアドレスとパスワードで、サイン・イン
  • 会員用ページが開く
  • タブから、iPhone SDK 3.2を選択し、Downloasメニューを選択
  • 表示された Snow Leopard Downloads から「XCode 3.2.2 and iPhoneSDK 3.2」を選択してダウンロード
  • ダウンロードが完了したら、ディスクイメージをマウントし、中にあるインストーラーを起動
  • 指示に従って(デフォルトの設定のままでOK)インストールを完了

Leopard (Mac OSX 10.5) ユーザーの場合


トレーニング近況

そういえば、トレーニング日記をサボっていたのだが、頻度はあいかわらず週に1〜3回くらいしか行けていないもののコンスタントに続けてはいる。しばらく記録をつけてなかったので、まとめて記入。4月11日の記録は、たぶん間違い。そんなスピードで走れるわけがない。

3月30日

  • ランニング
  • 60.05分
  • 9.04km
  • 731カロリー  

4月6日

  • ランニング
  • 59.45分
  • 9.03km
  • 729カロリー

4月11日

  • ランニング
  • 60分
  • 16.44km? ← たぶん誤検知
  • 912カロリー? ← これもたぶん誤検知

4月14日

  • ランニング
  • 60.27分
  • 9.06km
  • 736カロリー

Processing入門

人工言語(= プログラミング言語)とは何か?

なぜプログラミングを学ぶのか

もしプログラミング言語がなかったら…

  • コンピュータはただの箱と化す
  • コンピュータだけでなく現代文明を構成するほとんどの機器が使えなくなる
  • 電話、ATM、飛行機、電車、CD、
  • いまこうして便利な生活ができるのはプログラミング言語のおかげ

プログラミング言語の誤解

  • 数学ができないから無理? → そんなことはない。プログラミングはロジック(論理)を組み立てる作業。考えようによっては、文系寄りの知識。
  • 将来役に立たない? → プログラミングをする際の思考法は様々な分野に応用可能。
  • プログラミングはつまらない、無味乾燥 → プログラミングはとても楽しい作業! 自分の書いたプログラムが思い通りに動いた時の感動は大きい。

プログラミング言語を学ぶと

  • コンピュータをもっと根本から理解できる
  • コンピュータがもっと好きになる
  • プログラミング自体が楽しい!
  • 論理的、抽象的な思考法が身に付く

人工言語(= プログラミング言語)とは

  • コンサート、運動会などで用いられる進行表(プログラム)

運動会のプログラムの特徴

  • 一連の行動を記述
  • 上から下へ、活動する順番に並んでいる
  • 条件分岐:「雨天の場合は〜」
  • 運動会に必要な手続をわかりやすく記述している
  • これがプログラム
  • 手続 = アルゴリズム
  • 記述方法 = プログラミング言語

プログラミング言語の歴史

ENIAC (1946)

  • 世界最初のコンピュータとされるENIAC (1946) にはプログラミング言語がなかった
  • 毎回配線をやり直して特定の計算を行っていた!

EDSAC(1949)、EDVAC(1951)

  • ジョン・フォン・ノイマンが、自分の名前でEDVACの仕組みについて発表
  • その仕組みに刺激されて、EDSAC誕生(1949)
  • 実際にEDVACが完成したのはその後(1951)
  • 世界最初の実用的なプログラム内蔵方式の電子計算機

人工言語 (= プログラミング言語) とは何か

  • 一連の手順を記述したもの(運動会のプログラムと同様)
  • 一連の手順 = アルゴリズム (algorithm)
  • アルゴリズムをコンピュータに伝えるための記述がプログラミング言語(= 人工言語)
  • 運動会のプログラムの書き方がいろいろあるように、プログラミング言語はいろいろある
  • しかし、基本的な手続 (アルゴリズム) はみな共通

プログラミング言語と自然言語の違い

  • プログラミング言語 = 人間がコンピュータに命令を指示するために作られたもの
  • 曖昧さがない (コンピュータが理解できない)
  • 厳密な文法、合理的
  • 自然言語:自然に発生して、時代と共に変化していく(誤用、流行)
  • プログラミング言語:言語設計者によって設計され、設計者の意図と作業によってのみ変更される

アルゴリズムの基本

  • 基本となる3つのアルゴリズム:連続、分岐、反復

プログラミング言語の種類1:低級言語

低級言語:コンピュータ(CPU)自身が理解できる言語

機械語

  • 機械(CPU)が直接理解し実行する言語
  • ビット(0, 1)だけで表現される
  • 人間が理解することは困難:CPU毎に異なる
  • もっと分かり易い言語に変換する必要あり

アセンブリ言語

  • 機械語を直接記述するのではなく、機械語の意味を表す略語で機械語を記述する
  • 代表的な低級言語 → 機械語に近い言語 (劣っているという意味ではないので注意!)
  • 機械語をそのまま変化しているので、機械語と同様CPU毎に異なる

コンパイラ、インタプリタ

  • 機械語を人間が理解するのは非常に困難
  • より人間にわかりやすく翻訳する言語が必要 → 高級言語 (= 人間寄りの言語)
  • わかりやすいプログラミング言語でプログラミングをして、それを機械語に翻訳してコンピュータに実行させる
  • コンパイラ:プログラミング言語で書かれたプログラムを、コンピュータが直接実行可能な機械語のプログラムに変換する。高速
  • インタプリタ:プログラミング言語で書かれたソースコードを逐次解釈しながら実行する。速度はコンパイラと比較すると劣る

高級言語

  • 記述レベルが実行レベルに比べて抽象度の高いプログラミング言語
  • 人間にとってわかりやすい
  • CPUに依存した処理を書かなくてよい
  • メモリ制御、IO制御等CPUレベルの操作を意識しなくてよい

プログラミング言語の種類

  • 手続き型:一連の手続きとして表現 – FORTRAN, COBOL, PL/I, Pascal, C, BASIC など
  • 関数型:関数呼び出しの形で定義 – LISP, Haskell, Scheme, LOGO など
  • 論理型:規則と事実に基づいて推論を行う – Prolog など
  • オブジェクト指向:オブジェクトを基本要素とする – SmallTalk, Java, Objective-C, C++, Python, Ruby, Javascript, C# など

プログラミング言語発展の歴史

Processing入門

プログラミング上達の近道

  • よくできた他人のプログラムを読む、盗む: Processingに付属してくるサンプルは、とても良い教材
  • トライ&エラー、失敗 (バグ) を恐れない:プログラムを書いて、そのまま動くことはめったにない、プログラムを書く → 実行 → 修正 → 実行 → 修正…. → 完成、熟練したプログラマーでも一緒
  • 読みやすく、明快に:しばらく経ってからでも意味がわかるように、コメント、インデント、命名の規則など

さっそくサンプルプログラムを眺めてみる

  • サンプルの中身(プログラム)を観察してみる
  • 何か法則はあるか?
  • 文字の種類は?
  • 文末は?
  • 色の規則
  • いろいろな括弧
  • 本文とコメント

Processingプログラミングの基本

  • 実行の順序:上から順番に読みこまれていく
  • 半角の英数字 (全角はダメ) のみを使用すること
  • 文末にはセミコロン “;” を入れる
  • いろいろな括弧が入れ子構造になっている
  • おなじ括弧に囲まれている部分がひとつのブロック

関数

  • 関数 (function) とは:引数と呼ばれるデータを受け取り、定められた通りの処理を実行して結果を返す一連の命令群。
  • Processingは、ビジュアルプログラミングのための関数の集合体
  • 関数名とその引数(パラメータ)から構成される
  • 引数の数は関数によって異なる

関数の書式

[code language=”java”]
関数名(引数1, 引数2, 引数3…);
[/code]

コンピュータで絵を描くということ

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

  • コンピュータ画面は、縦横沢山のピクセルから構成された巨大なエクセルの表のようなもの
  • 例:1024 x 768 の液晶画面:横に1024列縦に768行ならんだ巨大な表
  • それぞれのセルにR,G,B,A(アルファ値)が格納されている

座標

  • 座標 (Cordinate):点の位置を明確にするために与えられる数の組のこと
  • コンピュータの画面の1点を指定するためには、いくつのパラメータが必要か?
  • 2つの数字 (横と縦): (x, y) – 2次元平面における直交座標

Processingの座標系

  • 左上が原点 (0, 0)
  • 右に行くほどx座標の値が増える
  • 下に行くほどy座標の値が増える

例:100 x 100の平面の座標系

Processing はじめの一歩

キャンバスを用意する

  • 形を描いていく、画面 (キャンバス) を用意する
  • size関数:ウインドウの大きさを指定

[code language=”java”]
size(ウインドウ幅, ウインドウ高さ)
[/code]

– 例:幅320pixel, 高さ240pixelのウィンドウを開く

[code language=”java”]
size(320, 240);
[/code]

コメントアウト

  • プログラムにコメントを入れることで、分かり易く

[code language=”java”]
//一行だけのコメント

/*
複数の行にまたがる
コメント
*/
[/code]

点を描く

  • point関数:点を描く

[code language=”java”]
point(X座標, Y座標);
[/code]

  • 例:X座業100, Y座標120の位置に点を描く

[code language=”java”]
point(100, 120);
[/code]

直線を描く

  • line関数:直線を描く

[code language=”java”]
line(X座標始点, Y座標始点, X座標終点, Y座標終点);
[/code]

  • 例:

[code language=”java”]
line(10,10,200,180);
[/code]

長方形を描く

  • rect関数:長方形を描く

[code language=”java”]
rect(X座標, Y座標, 長方形の幅, 長方形の高さ);
[/code]

  • 例:

[code language=”java”]
rect(10,10,200,180);
[/code]

楕円を描く

  • ellipse関数:円、楕円を描く

[code language=”java”]
ellipse(X座標, Y座標, 楕円の幅, 楕円の高さ);
[/code]

  • 例:

[code language=”java”]
ellipse(10,10,200,180);
[/code]

色の指定

  • R(赤) G(緑) B(青)の三原色で指定する
  • 加法混色 (光の三原色であることに注意) ←→ 色料の三原色

3つの色の属性

  • 背景色 background関数

[code language=”java”]
bacground(background(Rの値, Gの値, Bの値);
[/code]

  • 線に色をつける stroke関数

[code language=”java”]
stroke(background(Rの値, Gの値, Bの値);
[/code]

  • 塗りの色をつける fill関数

[code language=”java”]
fill(background(Rの値, Gの値, Bの値);
[/code]

Processingの色の塗りかたの規則

  • 色や線、塗りつぶしの設定は、それ以降すべての描画に使われる
  • 色を変えるには改めて別の色を設定する命令を入れる
  • 背景色、塗りつぶしの色、ストロークの色の指定の例

[code language=”java”]
//背景色
background(128); //グレースケール

//塗りつぶしの色
fill(128, 64, 32); //RGB

//塗りつぶしの色
stroke(128, 64, 32); //RGB
[/code]

実際に絵を描いてみる

  • ここまでで学習した関数を駆使して、色をつけた絵を描いてみる

点を描く

[code language=”java”]
size(200,200);
background(0,0,0);

//1つ目の点
stroke(255,0,0);
point(50,100);

//2つ目の点
stroke(0,255,0);
point(100,100);

//3つ目の点
stroke(0,0,255);
point(150,100);
[/code]

直線を描く

[code language=”java”]
size(200,200);
background(0,0,0);

//線1: line(x1, y1, x2, y2);
stroke(255,255,255);
line(0,0,60,60);

//線2: line(x1, y1, x2, y2);
stroke(255,255,0);
line(40,50,190,200);
[/code]

図形を描く

[code language=”java”]
size(200,200);
background(128);
fill(31,63,255);
stroke(255);

//長方形の描画:rect(x,y,width,height);
rect(40,40,140,140);

//楕円の描画:ellipse(x,y,width,height);
ellipse(80,80,80,120);

//三角形の描画:triangle(x1,y1,x2,y2,x3,y3);
triangle(12,180, 120,15, 160,60);
[/code]

クイズ 1

  • この図形を描いてみましょう
  • 画面の大きさは、400 x 400 pixel

答え

[code language=”java”]
size(400,400);
noFill();

ellipse(200,200,400,400);
ellipse(100,200,200,200);
ellipse(300,200,200,200);
ellipse(200,100,200,200);
ellipse(200,300,200,200);
[/code]

クイズ 2

  • この図形を描いてみましょう
  • 画面の大きさは、400 x 400 pixel

答え

[code language=”java”]
size(400,400);

fill(0);
rect(40,40,160,160);
rect(200,200,160,160);

fill(255);
rect(40,200,160,160);
rect(200,40,160,160);
[/code]

クイズ 3

  • この図形を描いてみましょう
  • 画面の大きさは、400 x 400 pixel

答え

[code language=”java”]
size(400,400);
noStroke();

fill(0);
rect(40,40,160,160);
rect(200,200,160,160);

fill(255);
rect(40,200,160,160);
rect(200,40,160,160);

ellipse(120,120,160,160);
ellipse(280,280,160,160);

fill(0);
ellipse(280,120,160,160);
ellipse(120,280,160,160);
[/code]


アニメーション入門 1:アニメーションの原理、動きの表現

アニメーションのしくみを学ぶ

DVD「ノーマン・マクラレン作品コレクション」パイオニアLDC、より「ノーマン・マクラレンのアニメーション講座 1」を視聴

  • 映画のフィルムとコマ
  • あるコマと次のコマの違いが「動き」となる
  • 撮影台を使用した、アニメーション撮影の手順
  • 直線AからBまで移動するアニメーション
  • 何回の動きでAからBまで移動するのか
  • アニメーションの重要な要素「テンポ」
  • 2地点間の分割数によるテンポのスペクトラム
  • 「動きの距離」がアニメーターにとってとても重要

従来のアニメーションとFlashでのアニメーションの違い

  • 基本的な原理は従来のアニメーションと同じ
  • あるコマと次のコマとの差が動きとなる
  • しかし、より効率的に、なめらかなアニメーションが作成できるよう工夫されている
  • 同じ動作を何度もくりかえすのはコンピュータが得意とすること
  • その部分は人間がやるのではなく、自動化する

トゥイーンとは

  • トゥイーンという概念が重要
  • もともとはアニメーション用語、主要アニメーターが重要なフレーム (主要な変更を含むフレーム) だけを描画し、アシスタントがその間のフレームを描画するという工程を指したもの
  • Flashでも同様に、主要となるコマ(キーフレームと呼ぶ)を描くだけで、あとはアシスタント(コンピュータ)が残りのフレームを自動的に描いてくれる
  • モーショントゥイーン:「動き」のトゥイーン、ステージに配置したもの(インスタンス)を、移動、拡大、縮小、回転などすることができる
  • シェイプトゥイーン:「形」のトゥイーン、ステージに配置したもの(インスタンス)の形状を変化することができる

実際にアニメーションを作ってみる

A地点からB地点まで直線移動するアニメーションを作成する

  • 「Flashファイル(AS3.0)」で、新規作成

  • ツールボックスの楕円ツールを選択して、ステージ上に円を描く

  • 矢印ツールで描いた円の全体を選択する。網点で選択範囲が表示される

  • メニューから「挿入」→「シンボルに変換」を選択。ダイアログボックスが表示されるので、このエレメントの名前をつけ、タイプを「グラフィック」にして[OK]ボタンを押す

  • 作成した物体(インスタンス)が選択された状態で、メニューから「挿入」→「モーショントゥイーン」を選択

  • 自動的に1秒分の長さのモーショントゥイーンが作成される

  • 最終フレームを選択した状態で、物体(インスタンス)を移動する。移動経路(モーションパス)が表示される。

  • モーションパスは変形することも可能、いろいろな動きを作ってみる

  • 最後のフレームの右端にマウスポインタを重ねて、マウスポインタが「←→」という表示になった状態で左右にドラッグすると、アニメーションの長さ(テンポ)を変更できる

  • メニューから「制御」→「再生」または、[Enter]キーで、アニメーションを再生する

拡大、縮小、回転

  • 自由変形ツールを使用すると、移動だけでなく、拡大、縮小、回転することも可能
  • 表示される枠の周囲8箇所にあるコントロールポイントで、拡大、縮小、変形することが可能
  • 枠の角にマウスポインタを近づけて、矢印が回転する表示になったポイントで、物体を回転することができる
  • 変形、回転を使用して、いろいろな動きを試してみる

自由変形ツール

レイヤーの活用

  • 複数のシンボルをアニメーションさせるには
  • ひとつのモーショントゥイーンには1つのシンボルしか使用してはいけない
  • 2つ以上のシンボルがあると、トゥイーンは生成されないはず
  • 複数のシンボルをトゥイーンするには、レイヤーを活用する
  • レイヤー = 層、ステージ上に複数の透明なセルが積み重なっているイメージ
  • レイヤーを重ね合わせることで、複数の動きを同時に表現可能
  • レイヤーの追加は、タイムラインの左下にある、レイヤーの追加ボタンから


イントロダクション、Max/MSP Jitter入門

サンプルファイルのダウンロード

この授業で説明したプログラムは下記からダウンロードできます。

イントロダクション

この授業について

  • 春学期の前期の第1クォーター(4月12日〜5月24日)に行います (授業回数は6回)
  • 教室は206教室
  • 選択必修

この授業の構成

  • 全体の統括、久保田さん
  • 月曜担当:田所 – 主にソフトウェアによる音響プログラミング(Max/MSP)担当
  • 火曜担当:矢坂さん – 主にデバイス(Arduino)を使用したコントローラ制作を担当

最終的な目標

  • オリジナル「楽器」を作る
  • 物理的なコントローラをArduinoで制作
  • ソフトウェアによる音響合成をMax/MSPで行う
  • 最後の講評会では、自作楽器によるパフォーマンスを行います

月曜授業のおおまかなスケジュール

  1. 04/12:イントロダクション、Max/MSP入門
  2. 04/19:Max/MSPによる音響合成
  3. 04/26:Max/MSPによるサンプリング&プレイバック
  4. 05/10:インタフェイスについて、Max/MSPと外部デバイスの連携
  5. 05/17:個人制作プレゼンテーション
  6. 05/25 (※火曜日と統合):最終発表会 (自作楽器パフォーマンス)

Max/MSP Jitter入門

Max/MSP Jitterとは?

  • Max/MSP Jitter:サンフランシスコのソフトウェア企業Cycling ’74が開発・保守している音楽とマルチメディア向けのグラフィカルな統合開発環境(ビジュアルプログラミング言語)
  • Max:グラフィカルな音楽プログラミング言語
  • MSP:MAXにデジタル信号処理(DSP)機能を追加 → 直接音響を生成、操作することを可能に
  • Jitter:2D、3Dグラフィック、マトリクス操作を可能にするオブジェクト群 → 映像の生成、操作を可能にする

簡単な歴史

  • 専用ハードウェアの自体 1:1981年、Miller PucketteがパリのIRCAMで、Sogitec 4X というデジタル音響処理専門のワークステーションをコントロールするために使用する専門のソフトウェア「Pathcer」として開発。
  • 専用ハードウェアの時代 2:1991年、音響処理のための専用ボード、ISPW(IRCAM Signal Processing Workstation)+Max/FTSとして、NeXTコンピュータに移植される。しかし、その後NeXTがハードウェア事業から撤退。
  • パーソナルな環境への移行 1:1991年 Macintosh版MAX – MIDIの処理を中心にした機能。DSP(デジタル信号処理)には未対応。
  • パーソナルな環境への移行 2:1997年 MSP発売 – MaxにDSP機能を追加。Macintosh単体で音響生成が可能に。
  • マルチメディアプログラミング環境へ:2002年 Jitter発売 – グラフィカルプラグラミングのためのオブジェクト群。
  • 現在もバージョンアップをしながら開発は継続している。2010年4月現在の最新版はMax 5 (ver 5.1.3)。


4X


NextコンピュータとISPWボード

Max/MSP Jitterの兄弟たち

  • pd (PureData):Miller Pucketteが開発し、オープンソースプロジェクトとして発展。
  • jMax (jMax Phoenix):IRCAMで開発された、Maxと類似したビジュアルプログラミング環境。


pdとjMax

Max/MSPを利用した作品例

とりあえず起動してみる

  • “MaxMSP.app”を起動する。
  • 注意:“MaxMSP Runtime.app” ではないRuntimeは既にできあがったプログラム(パッチ)の実行専用、Runtimeはフリーでダウンロードできる。

Max/MSPの基本構成

  • Maxウィンドウ:処理結果やエラーなどのテキスト情報を表示。
  • Patcherウィンドウ:ここにプログラムを作成する。
  • オブジェクトパレット:Patcherウィンドウの画面をダブルクリックすると出現。分野別に整理された「道具箱」のようなもの。


Maxウィンドウ


Patcherウィンドウ


オブジェクトパレット

簡単なパッチを作成してみる

  • 四則演算をするパッチ

オブジェクトの種類

  • プログラムの処理をする単位
  • Maxでは、このオブジェクトを接続していくことで、プログラムを構築していく


基本的なオブジェクト


GUIオブジェクト

インレットとアウトレット

  • 上についている「ポッチ」がインレット。オブジェクトに値を入力する。
  • 下についている「ポッチ」がアウトレット。オブジェクトから値を出力する。
  • 数値や信号などが、上から下に流れ落ちていくイメージ

インレットとアウトレット

音を出してみる

  • Sin波を生成する簡単なパッチ(プログラム)を作成する
  • 「cycle~」:Sin波の信号を生成するオブジェクト。オシレータ。
  • 「dac~」:音を出力するオブジェクト。Digital Analog Converter
  • cycle~ と dac~ を繋いでいるパッチケーブルが黄色と黒の縞模様になっているところに注目。この線の中にシグナル(つまり音響信号)が流れていることを表現している。

sin波を出力(※大音量で再生されるので、ボリュームに注意!!)

音程(周波数)を変化させる

  • 方法1:「cycle~」の箱のなかに数値を直接記入する
  • 方法2:「cycle~」の第1インレットに数値を入力する


sin波を出力

周波数を変化させる

音量を変化させる – 音のかけ算

  • 音量を調整するには? 全ての音の信号に一定の値をかけ算する
  • 「*~」オブジェクト:シグナルのかけ算 (※単独の数値のかけ算「*」との違いに注意)


音量を変化させる

2つの音を混ぜる – 音の足し算

  • 2つの音を混ぜるには、信号の足し算
  • 「+~」オブジェクト:シグナルの足し算 (※単独の数値の足し算「+」との違いに注意)
  • 複数のパッチケーブルを同じインレットに繋ぐことでも表現可能


音を足し合わせる

音を見る

  • 音の波形を表示してみる
  • 「scope~」を使う
  • scope~ オブジェクトを配置して接続した後、オブジェクトを右クリックして「Inspector」を選択
  • Valueタブを選択。Buffer Sizeを100に、Buffers per pixelsを2に設定


scope~ オブジェクトの設定


波形の表示

宿題!!

  • 来週までに以下のパッチを作成して発表する
  • 課題:4つ以上のオシレータを用いたソフトウェア楽器(Max/MSPパッチ)をデザインせよ

課題制作のヒント

キーボードで音程を変化させる

オシレータの音量を別のオシレータで変化させてみる(AM)

オシレータの音程を別のオシレータで変化させてみる(FM)

音量を時間的に変化させる(エンベロープ)


オリエンテーション:iPhoneアプリの世界とその拡がり

授業の概要

  • この授業ではiPhoneアプリケーション(iPhoneアプリ)の開発手法を学ぶ
  • 独自の機能を活用したソフトウェア・アート作品の制作や、インターフェイス・デザインの可能性
  • 外国の諸大学で活用されているさまざまなiPhoneアプリをリサーチ
  • 多摩美術大学のキャンパス用のiPhoneアプリ「iTamabi」のデザインを試みる

キャンパス専用iPhoneアプリ事例

創造的なiPhoneアプリ

iPhoneアプリ開発環境について

  • 王道:iPhone SDK + XCodeを使用、Ovjective-Cをプログラミング言語として使用して開発
  • Objective-Cをいきなり学び始めるのは、なかなか大変
  • まずは、導入のハードルが低い環境で開発に慣れていきたい

開発環境 1 :iProcessing

  • iProcessing – Processingの開発環境を、iPhoneに移植
  • ProcessingとはCasey ReasとBen Fryによる、オープンソースのインタラクティブデザイン、ソフトウェアアートのための開発環境。Javaをベースにしている。
  • iProcessingは、Processing.jsというJohn ResigによるProcessingをJavascriptに移植した環境を利用
  • iPhone固有の機能を利用可能 – マルチタッチ、加速度センサ、方向センサ、位置情報、サウンド入出力

iProcessingデモ

  • いくつかサンプルを実際にiPhoneで動かしてみる

開発環境 2 :openFrameworks

  • openFrameworks – クリアイテイヴなコーディングのための、オープンソースのC++のライブラリ群
  • Zach Lieberman、Theodore Watson、Arturo Castroを中心に、世界中の開発者の協力のもと開発している(DIWO)
  • Processingの影響
  • iPhone版も用意されている
  • iPhone固有の機能を利用可能 – マルチタッチ、加速度センサ、方向センサ、位置情報、サウンド入出力、地図、iPhoneのGUI、カメラ

openFrameworksデモ

  • いくつかサンプルを実際にiPhoneで動かしてみる

最終受講者の確認


備忘録:Mac OSXからWindowsへの画面共有

iMacを購入してから、授業などで出先で使用する以外では出番が減ってしまったMacbook Proの有効活用として、BootcampでWindowsを起動していおいて、それを画面共有してあげると便利ではないかと思い試したところ、思いの他便利だったので備忘録としてまとめてみる。なお、試した環境は、MacがOSX 10.6.3、WindowsはXP Home Edition sp3です。

画面共有(VNC)のためのソフトをインストール

Mac側には最初からVNCのための環境が揃っているので、特になにもする必要はなし。Windows側にVNCのための環境を整える。Windows用のVNCサーバーやクライアントはいろいろあるみたいなのだが、一番メジャーそうだった「RealVNC」というソフトを選択した。いろいろバージョンあるのだが、単純にMacからWinを画面共有するだけであれば、Free Editionで全然問題ない。というわけで、下記からダウンロード。

インストーラーの言われるがままに、標準環境でそのままインストール。

Windowsファイアウォールの設定

Windowsのデフォルトの設定だと、VNCのためのポートが開いていないので、手動で設定する必要あり。「コントロールパネル」→「Windowsファイアウォール」を開き、「例外」のタブを選択する。「ポートの追加」ボタンを押して、編集画面で名前を「VNC」に、ポート番号を「5900」に設定。プロトコルは「TCP」を選択。

接続!

あとは接続するのみ! Windows側でRealVNCサーバーを起動しておき、Mac側から接続する。接続するには、Finderメニューから「移動」→「サーバーに接続」を選択し、サーバアドレスを入力する。たとえば、Winのマシン名が「hoo」だったら下記のようになる。5900はVNCのポート番号。

  • vnc://hoo.local:5900

そうすると、自動的に「画面共有.app」というアプリケーションが自動的に起動し、スクリーンが表示されるはず。便利!!


iPadに触らせてもらった

DSC_7190

今年度から千葉商科大の授業は、多摩美と重なってしまったので、月曜から水曜に移動してもらった。そして春学期に担当するコマが1つ増えて、1限、3限、4限という3コマになった。コマが増えることは喜ばしいことなのだが、1限終了の10:30からと3限開始の13:10まで間、2時間40分も時間のあきができてしまう。その間に昼食をとったとしても、1時間以上時間が余る。

ボーっとしていても仕方がないので、いままであまり利用していなかった非常勤講師の控室で作業することに。なぜ今まであまり利用していなかったかというと、非常勤講師は基本的に語学の先生が多く、部屋は都心のアイリッシュパブのように外国人が多数派で、なんだか肩身が狭いのだ。とはいえ、部屋はきれいでソファーや電源もあり善意のカンパで成りたっているらしいフリーのコーヒーもある。折角なので利用することにした。

ネットと電源を確保して、iPhoneをUSBから充電しながら講義スライドの修正していたら陽気な英語担当の先生が近付いてきて、「お、お前iPhone使ってんの?」みたいにきかれた。突然のことにうろたえながら「イ、イェー」と答えたら、突然脇からiPadを取りだした。写真では何度も見たが、実物を見るのは初めて。触っても良いというので、少し触らせてもらった。

iBookで本を開いたり、動画を再生したり、Google Map見たりといった基本的な機能をさらっと見ただけなのだが、それでも俄然欲しくなってしまった。細かな動作がいちいち気持ち良い。かなりの完成度。きっとジョブスが偏執的にダメ出ししたに違いない。スペック的な部分ではなく、こうした細かな操作感にこだわり抜く姿勢は、やっぱりAppleは凄いと素直に感心してしまった。

その場で作業をする必要がないようなプレゼンだけの用事であれば、iPadだけを持って出掛けて、その場でプロジェクタに繋いでプレゼンなんて十分に可能そう。SuperColliderがiPhoneで動くのだから、きっとiPadでも動くはずで、そうするとiPadだけでライブということも可能なのではないだろうか。うーん、いろいろ夢が拡がる。はやく日本で発売しないかなあ。