便利な関数を作る関数で他人と協業する似たような機能、繰り返すコピペここまでたくさんスケッチを書いてきましたが、とある機能がいろいろな場所で必要になって、コピペを何度も使った経験はないでしょうか。具体例に触れながら進めていきましょう。ここに、図形を並べて描くスケッチがあります。リンク先からダウンロードして実行してみてください。(→shapes_template)これらの図形に、「色彩」の回で作ったオリジナルの配色を適用してみてください。以前作ったものをなくしてしまった場合は、復習がてら新たに作るか、あるいはこんな感じの配色はいかがでしょうか。実行して塗り色を決める必要がありますね。100);...コピペと微修正を繰り返すことになります。他のパレットに差し替えてみようと思い立ったら、また図形の数ぶん修正するわけです。この問題を解決してくれるのが「関数」です。先の色と図形のスケッチを会社の仕事に例えると、「お抱えのデザイナーに都度お願いして、色を設定してもらう」感じ。融通は効きますが、都度の指示(コピペ・修正)が面倒で非効率的です。「関数」は処理のかたまりです。先の例を続けるなら、いい感じに色を設定してくれる「スゴ塗りプラン」を用意している会社のようなもの。この会社さえあれば、お抱えのデザイナーに都度お願いする手間なく、このプランを利用すればよくなります。非効率な業務フローが解消しますね!関数の宣言そろそろ実際のコードを見ていきましょう。関数は、名前とどんな処理をするかのブロックを持っています。...}具体的なコードはこんな感じ。b);}関数の実行これで「いい感じに塗り色を設定する」という処理のかたまりができますが、作っただけでは実行されず、明示的に実行してあげる必要があります。スゴ塗り関数を実行fillNicely();簡単なコードで処理の流れをみてみましょう。100);}/関数の動きを理解できたら、はじめのスケッチを書き直して、効率的に図形の塗り色を決められるように改善してみましょう。100);...よく使う機能を関数として切り出すことで、コードを簡潔に書くことができるようになりましたね。パラメーターを渡す:引数スゴ塗りプランの導入によって業務フローはだいぶ簡潔になりましたが、このプラン1本だけではユーザーの要望に応えきれません。明るめの色がほしい人もいるし、暗めの色がほしい人もいる。プランにも幅を持たせたくなってきます。選べるオプションでプランに幅を持たせる関数の処理を変えるためのオプションが「引数」です。空っぽでおまじないのように付属していましたが、いよいよ出番です。この括弧の中にオプションを書いていきます。{}オプションの描きかたは変数宣言とよく似ていますね。型に続けてオプションの名前を書きます。コードをもう少し具体的にするとこんな感じ。...}引数は、関数のブロック内を有効範囲として、普通の変数と同じように使えます。数値と計算したり、if文で判定したり...自由自在です。簡単な例で処理の流れをみてみましょう。100);}/練習:引数を使ってみる先の図形を描くスケッチに引数つきの関数を組み込んで、色合いや明るさなどの色のオプションを指定できるようにしてみましょう。練習:線を描く関数を作ってみるマウスをドラッグして線を引くスケッチがあります。(→my_line_template)このスケッチには、始点のXY座標・終点のXY座標を引数として受け取り、自作の線を描く関数が組み込まれています。}}この関数を改造して、おもしろい線が描けないか試行錯誤してみましょう。使っているものにこの関数を移植して、差し替えてみましょう。「始点と終点で線を引く」という機能を関数として切り出したので、同じ機能を持つものとの差し替えが容易になりました。このような汎用的な関数を作りためておくと、表現の幅を広げる資産が増えていくのです。貯めていけばいつか最強になれるかもしれません。処理の結果を戻す:戻り値いままでの関数は、処理をお願いしたら任せきりのスタイルでした。それだけでもじゅうぶん便利ですが、成果物を作って届けるタイプの仕事があってもいいですよね。いい感じの色の絵の具を調合して届けてくれる「スゴ色調合プラン」なんてどうでしょうか。調合した絵の具を成果物としてもらえれば、これまでの例のとおり塗りに使ってもよいですし、背景色に使ったり枠線の色に使ったりと、もっと自由度が増しそうです。そんなときのための機能が関数にはちゃんと用意されていまして、実行結果を関数の実行元に戻せるのが「戻り値」です。;}スゴ色調合プランの具体的なコードを見てみましょう。型の色を作れるものです。/練習:戻り値を使ってみる先の図形を描くスケッチに戻り値で色を返す関数を組み込んで、生成した色を戻せるようにしてみましょう。線の色にも適用できていますね。いうキーワードを使ってきました。「空っぽ」、つまり戻り値なしという意味だったのです。ついているものたち、実はすべて関数だったのです。塗りを設定したり、図形を描いたり...特定の目的に沿った機能を簡単に使えるよう、Processingが関数としてまとめてくれています。プログラミング言語(この講義ではProcessing)が標準で用意してくれている関数たちを「組み込み関数」と呼びます。まとめ:関数のいいところ最後に、関数のいいところをまとめておきます。名前がついて見通しがよくなる関数には名前が必須です。関数によって処理のかたまりに名前がつくので、コードから意図が読み取りやすくなります。100);また、長々と書いていた処理がまとまるので、見通しもよくなりますね。他に転用しやすくなる汎用的な機能をうまく関数として切り出せれば、他のスケッチにも転用できます。「いい感じの配色を作ってくれる機能」「いい感じの線を描いてくれる機能」みたいなものは、幅広い種類のスケッチに活用できそうですね。練習:汎用的な関数を利用してみよう縦横にランダムなサイズの円を描くスケッチがあります。(→circles)さまざまな表情の円を描く関数を用意して、円の描画処理を差し替えてみました。使ったものがありますよね。差し替えてみてください。表情が変わるはずです。課題:汎用的な関数を作ってみよう先の線や円の例のように、汎用的な関数を作っておくことで、スケッチの描き込みを細かくするなど複雑な表情が手軽に出せるようになります。汎用的な関数を自分でも作ってみましょう。