Comments
Description
Transcript
実践報告 Python で学ぶ Processing.py 入門
10 実践報告 Python で学ぶ Processing.py 入門 東京都立つばさ総合高等学校 主幹教諭 横枕 雄一郎 1. はじめに 語である。教育用として,プログラミングを学びた コンピュータはツールであり,道具として利用す い人向けであり,オープンソースであり,フリーで ることに意味がある。ソフトウェアの操作習得に重 入手可能なプログラミング言語である。 点を置いたり,決められた枠の作業にのみ集中する 生徒に簡単に体験してもらう導入として,コマン ことが可能である反面,クリエィティブな仕事,新 ドプロンプトより python と打ち込み,インタラク しいことを生み出すことに利用するためには,それ ティブモードにて なりの準備,段取り,企画など高度なことが必要と >>>2**10000 なってくる。そのための学習,課題解決能力を身に と実行すると,2 の 1 万乗が表示される。電卓では 付けていくことが目標となる。 表示できないので驚きの声が上がる。 本校は総合学科である。情報科では,様々な工夫 や,使っていくことの楽しさが伝わるような教材開 発ができないか検討してきた。 平成 25 年度より 1 年次に必修科目「社会と情報」 (2 単位)を設置している。学校設定科目として 8 つの 「情報演習」 (各 2 単位)を設けている。様々な課題に 対応し解決していく力を身に付けて行けるように, (1)Python の長所 ① ク ロ ス プ ラ ッ ト フ ォ ー ム で あ る。Windows, MacOS X,Linux で使用できる。 ② 記述性が高い。他の言語と比べてコードの行数が少 ない,シンプルに組める。豊富なモジュールがある。 ③ Python は可読性が高い。読みやすくなってい 様々な教材を利用している。 る。大きな特長としてコードブロックはインデ また情報科の夏期講習では「フリーソフトウェア ントを使って表すことになっている。インデン Blender」 「3ds max 3DCG アニメーション」 「CG プロ トをタブまたは半角スペースで表すが,混在は グラミング」を開講している。ディズニー・ピクサー・ エラーとなる。授業では半角スペース 4 つをイ アニメーションで利用されている CG アニメーショ ンの基礎基本的な技術である RenderMan について ンデントにするようにしている。 例えば下記のようにインデント(半角スペース 体験学習を行っている。ディズニー・ピクサーの映 4 つ) を使う。例:反復処理 画 「カールじいさんの空飛ぶ家」でも使用されたオー for i in range(10): プンソースの物理シミュレーション ODE を使って print i python cgkit による再現もできた。興味・関心があ る生徒にとっては,進路選択のきっかけになるよう 比較処理をインタラクティブモードで記述すると, に紹介している。 >>> a=10 今 回, 多 く の 教 育 現 場 で 利 用 さ れ て い る >>> if a<0: Processing を Python で 記 述 す る processing.py を ... 紹介する。主な利点として,①手続きが簡単,②可 ... elif a==5: 読性が高い,③集中して取り組めるなど,視覚的に ... 興味・関心・意欲を引き出す教材である。 ... else: 2. Python のすすめ ... print "red" print "green" print "blue" ... 様々なプログラミング言語がある中で,Python 結果:blue は,ユーザがしたいことを効率的に助けてくれる言 となる。 11 (2)Python で簡易 Web サーバ 4. 授業実践 Python は ラ イ ブ ラ リ が 豊 富 で あ り, 様 々 な 本校の学校設定科目「情報演習 D(プログラミン モ ジ ュ ー ル を 利 用 で き る。 コ ン ピ ュ ー タ 教 室 に グ) 」 の授業でプログラミングの学習・体験を行った。 Python をインストールすれば,ネットワーク接続, 1 学期に Excel VBA を利用して簡単な流れを学び, HTTP 処理のためのライブラリが標準装備されてい 2 学期中旬から Python を実習として取り入れてい るので,ディレクトリ(フォルダ)内のファイルを共 た。しかし,エディタとコマンドプロンプトを使っ 有可能な Web サーバを簡単に構築できる。方法は ての Python の実習に,取り組めない生徒がでてき 1 行のコマンドを実行するだけである。 た。単にソースを打ち込むだけにとどまり,与えら コマンドプロンプトを開き,ローカル Web サーバ れた課題のみこなす。自分で考えない, 工夫しない, の root ディレクトリにしたいフォルダまで移動後, 面倒と感じるといったことだけになり,プログラミ >python -m SimpleHTTPServer ングについて難しいと感じている生徒がいた。そこ を実行する。 で,何かしら取り組めるきっかけを与える授業が必 本校の授業「情報演習 C(ネットワーク)」におい 要と感じ,Processing の python モードを利用する て,HTML・CSS を理解する実習に利用している。 ことにした。 コンピュータ教室の中で,各生徒同士の Web ペー 現在,3 種類の python モードの方法がある。 ジをお互いに確認でき,リンクを作成し,楽しく実 習ができる。 Python は,ビジネスでも使われており,Google や映画制作を行っている Industrial Light & Magic や Pixar などの CG 業界で多く利用されている。 ① processing.exe を起動して開発環境 IDE で切 換える python モードを利用する方法 ② Jonathan Feinberg 氏が開発した processing.py を エディタとコマンドプロンプトで利用する方法 https://github.com/jdf/processing.py (web ページ中段からダウンロードできる。 ) (3)Python の短所 ① Python は実行速度が他の言語より低速である。 ② Python では型はオブジェクトに関連付けられ, ③ Python の モ ジ ュ ー ル と し て 開 発 さ れ た pyprocessing を利用する方法 https://code.google.com/p/pyprocessing/ 変数には関連付けられていない。多言語を経験 していると戸惑う。ミスマッチしている型エ この中で授業に導入しやすいのは①の開発環境 ラーについては修正していくことができる。 IDE であるが,今回は,②のエディタとコマンドプ ③また様々なバージョンがあり,主に Python2.7 ロンプトを用いた processing.py の実習を検討した。 での記述と,Python3 以降では,微妙に異なる。 ①②は,java で開発された Processing の豊富な既 互換性は完全ではない。モジュールも各バージョ 存ライブラリを利用することができる。これはとて ンに合わせたものを使用しなければならない。 も便利であり,様々な試みを実践できる。③につい 3. Processing でのビジュアル・デザイン Processing は,MIT メ デ ィ ア ラ ボ で 開 発 さ れ, ては Python にモジュール pyglet をインストールし なくてはならない。pip を利用すると楽にインストー ルできる。 視覚的な表現を得意とするプログラミング言語であ る。美術系の大学や多くの高校で利用されており, プログラミングを学ぶ初心者にとって最適なツール (1)エディタとコマンドプロンプトで processing. py の利用 である。記述は java をベースとしているが,現在 はじめにコマンドプロンプトでどこでも起動でき 公開 (ver2.2.1)されている Processing では,java モー るようにするためには,環境変数 PATH にインス ドから python モードに変更することができる。開 トールした processing.py のディレクトリを追記し 発環境 IDE で Add Mode で python モードを追加す ておかなければならない。 ることができる。エディタ部分に記述し,実行ボタ 例えば,C:¥processing.py-0202 を PATH に追記す ンを押すだけで描画される。 る。起動確認はコマンドプロンプトから 12 >processing-py と実行することで,画面全体がグレーで白い円をマ ウスで描画できれば,processing.py が起動できてい る。まずは Processing の入門サイトや付属のサンプ ルを動かしてみると良い。エディタでソースを記述 し保存,コマンドプロンプトから下記を実行する。 >processing-py sample.py エラーと出力情報は,テキストファイル(err.txt と out.txt)で毎回出力される。また Processing につい ての参考書籍もたくさん出ており,python モード で記述しなおして確認すると文法の勉強になる。基 本図形や 3 次元モデルを描画すると面白くなる。 (2)タートル・グラフィックス シ ー モ ア・ パ パ ー ト は プ ロ グ ラ ミ ン グ 言 語 LOGO を開発した。学習者が抽象的な概念を学習 する上で「シンボルの活用」として「タートル・グラ フィックス」を用いた。タートル・グラフィックス c1 = color(0, 0, 255) fill(c1) #create Terrapin t = Terrapin(this) def draw(): global t t.setLocation(50,350) t.setRotation(-90) print t.x,t.y,t.getRotation() haba=20 for i in range(5): square(haba) haba=haba*2 save("terra06.jpg"); を processing.py で試すことができる。 ライブラリの Terrapin.jar をダウンロードし, 1) (3)2 次元物理シミュレーション C:¥processing.py-0202¥libraries に コ ピ ー し て お く PC・スマートフォン等のゲームでも利用されて と,タートル・グラフィックスが可能となる。次の いる物理エンジン Box2D を簡易的に扱える Fisica プログラム 1 は,1 行目でライブラリを呼び出し, を利用することで様々な事象について試みることが 辺の長さが 2 倍となる正方形を描画する。最後に描 できる。processing.py には標準で Fisica のサンプ 画した正方形を画像(jpeg)として保存している。 ルが付属しているので体験してみると良い。物体落 下のシミュレーション後,マウスを使ってドラッグ プログラム 1 from terrapin import Terrapin def square(haba): 移動することができるので興味・関心を高めるライ ブラリである。注意点としては Fisica と他の物理ラ イブラリ (box2d_processing)が同じ libraries フォル ダにあると Fisica は動かない。 for i in range(4): t.forward(haba) t.right(90) def setup(): global t size(400,400) colorMode(RGB,256) background(0) strokeWeight(6) タートル・グラフィックスで作成した正方形(左)と 2 次元物理シミュレーション(右) (4)授業感想 ・かめがすぐに動いて楽しかった。すぐに動作が確 認できるのっていいなと思った。文字を打ち間違 13 えてちゃんとプログラムが起動しないときも,ど ・Python で書きました。楽しい。打ち直したりす こが間違ってるのか書いてあったから,間違えを るのが面倒くさいなと思った。マークを作るのが 見つけられた。 難しい。でもできた時は達成感がすごい。 ・点とか線とかがいっぱいでてくるのが面白かった です。でもすぐ引数がどうとかエラーが出て,い 5. 今後の課題 くつかはちゃんとできませんでした。pu ?とか Processing は,世界中で様々な表現活動として wa ?など,今までやってきたやつよりも,書く 使われている。教育現場での利用は,まず自学自習 ことがわかりにくい気がします。 できるリソースが豊富にある。様々な事象や原理を ・全然終わりませんでした・・・カメの現在の位置 理解する道具として使えば,面白いことができると からいくつ移動する&回転するという感覚の違い 感じている。3 次元コンピュータグラフィックスで にひっかかり,なかなか進みませんでした。居残っ 取り扱うデータを,タートル・グラフィックスを てがんばります。 使って出力させてみたり,群集シミュレーションの ・今回はなんか慣れ始めたのかわからないけどミ データを作成し,可視化させることも可能であろ スったところなど自分で見つけることができまし う。応用範囲はたくさんあると思う。総合学科高校 た。ちょっとこれは進歩だなとすこし思いました。 で MSWLogo を授業実践した藤川氏 は次のように ・今回も新しいものをやった。個人的には,今まで 2) 述べている。 やった中で一番面白く感じたので,暇があったら, 「英語マニュアルを使って,基本的な使い方を英 家でもやってみたいと思った。世の中にはいろい 語で学習することも貴重な経験になる。今まで学ん ろな面白いものがあるのだなと思った。 だ英語の知識が,他の授業で役に立つということを ・いろいろと数字を変えたりしながらやった。うま くいかないこともあったけど,楽しかった。 ・最初はなかなか理解するのが難しかったけれど, 体験することも,学習意欲を高めるためのひとつの 方法と考えることができる。 」 2) 「プログラムを英語で書くことは,英単語のもつ だんだん慣れていくにつれてできた時のうれしさ 深い意味を知ることとも密接に関係している。教科 や感動することができました。 書の中で覚えた英単語の意味とプログラミングに使 ・細かい作業でとてもしんどかった。ゲーム制作者 われる英単語の意味の違いを学んだり,文学的な表 やプログラマーなどはこのようなことをしている 現で使われる単語の意味と,理科系の文書に現れる のだと思うと大変だなと思い,自分は消費者のほ 単語の意味の違いを理解することも,知識を得るだ うがいいと思った。 けでなく文化の違いをも理解する総合的な学習に ・最後の課題が,さまざまな数字を変えることで面 なってくる。 」 2) 白い形を作ることができたのでとても面白かった。 こんなことが実現できないかどうか検討し,実際 ・前半は曲線や円を用いて,さまざまな絵を描いた。 にできたときの喜びは,次のステップへと進んでい ・人生でプログラミングを初めてやったが,自分が入 く力となる。 成長するための道具として, 今後も様々 力し,それをコンピュータが計算するという一見 な気づきを与えてくれる教材開発をしていきたい。 簡単そうに見えてとても根気のいる作業だったの 生徒が何を表現し,考え,形あるものを制作し,納 でなかなか大変でした。1 学期はほとんど打つだ 得できるようサポートしていきたいところである。 けで簡単だったが 2 学期になると Python で新しく やることが増えて少し大変だった。こういう機会 はその道に行かない限りあまりできない内容だっ たので少しやれただけでもよかったと思います。 ・周りの人がすごいなと思った。 ・課題作成では,色がそれぞれついたものを作ろう と思っていた。なかなかうまくいかず,適当に引 数で数字を入れて何とか作ることができた。 参考 URL 1)http://terrapin.sourceforge.net/ 2)藤川清一「Logo & Physics」, 元東京都立晴海総合高等学校 ,2003, http://web.archive.org/ web/20030726181131/http://fjkw.zive.net/logo/