日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2010年1月8日金曜日

スクリプティング学習における第三の壁

第一の壁:なにもできない状態。
これを突破して初めて、スクリプトを使って何が可能なのか、わずかながら見えてきたように思う。
この壁を越える前までは、何をやりたいのかも漠然としてわからなかったが、壁を越えた後は、
仕事をしていても、それをスクリプトを使ってやるにはどうすればよいかと考えられるようになった。
(もしかしたら第一の壁以前に、もうひとつ壁「スクリプトの学習に抵抗がある」があったかもしれない。)

第二の壁:なにを勉強して良いかわからない
ここでは、なにを目的にして勉強すればよいのかが、みえなかった。
何を勉強しても良いのだが、興味が無いことを勉強するのは苦痛であり、興味があるところをさがそうにも、まだ問題意識が薄く、具体的な何かに興味を特定することもできないでいた。
自分の場合は、仕事で、あるスクリプトを書いたことがきっかけで、GUIの必要正を認識したことが興味を駆り立てることにつながり、それを勉強したことが突破口になった。
また、若干の経験がたまってきたので、ヘルプファイルを理解することができるようになってきた。
そのため、曖昧だった知識を整理し、明確にすることが出来るようになった。
また、情報の調べ方にもなれてきた。
そのためコマンドを知らなくても、調べればなんとかなるのではないかと楽観視できるようになってきた。




----------------------------------------
ここまでで、基本的なスクリプト作業ができるようになった。
まだコマンドのボキャブラリは少ないが、
●ヘルプファイルの活用方法
●スクリプトの検証方法
がわかりはじめたので、知らないコマンドでもある程度の時間をかければ使えるようになるという感じを持っている。


では、この次に待ち構える第三の壁は何かを考えてみた。


第三の壁:実際に活用したり、完結したスクリプトができない。
ここまででスクリプトの基本、そしてパーツとなるいくつかのコマンドは理解できた。
どんなスクリプトを作りたいのか、基本的なアイデアはなんとかもてるようになってきたので、そのアイデアを実際にスクリプトにしてしまう過程を習得する必要がある。
しかしながらパーツを組み合わせて何かを構築していくという技術はまだまだ未熟であり、
ちゃんと動く物をつくるのにも時間がかかるし、挫折することも多い。
しかしこの壁をクリアするのはさほど難しくないと思う。
まず「やりたいこと」を見つけ、
それを「スクリプト」にする。
これを2~3回行うことで自信につなげることが出来ると思う。
ここまでできれば自分は、「スクリプトをやる」とResumeに書いても後ろめたさは感じなく低良いだろうw。



----------------------------------------
前回のエントリ「個々のパーティクルの特性は何で決まるか?」では、個々のコマンドや関数、そしてその使い方を暗記するのではなく、それを使う根底にある考えをさぐり、普遍的な要素を抽出することを試みた。
そうすることによって、スクリプトにおける考え方をみにつけようとした。

スクリプトを構築していくときに「時間」、「サイクル」と言ったキーワードをコマンドや関数の代わりに用いることで、考えを整理する。
そして、スクリプトの考えがまとまったところで、そのキーワードに沿ったコマンドや関数と入れ替えていくという方法をとってみてはどうかと考えた。
ようするに考える段階では具体的なコマンドや関数を出来るだけ用いないで自然言語で考える方法である。

これは、自分でもまだあいまいなところがあるのだが、あるブログでこれに似た興味深いエントリを見つけたので引用したい。


ブログ:毎日操縦不能「プログラミング初学者にはどうデータ化するかをしっかり訓練させる
アルゴリズム以前に、考えているものがどういうデータでできるか、という部品のところを考えること。
初学者には、アルゴリズムの問題よりも、どういうデータが必要かということは結構考えつかない。

(略)・・・必要なデータが何かを書き留めて整理しながら書くと楽になる。

初学者に教えるときには、
最初と最後の状態
各状態をどういうデータをもって表現するか

を大まかにつかませる、

それでも足りなければ一ステップの変化を追い、そこで必要な細かなパラメータやフラグを足す。
さらに方向を変えて、人がそれを実行する場合にはどうするか、自然言語でアルゴリズムを伝え、どういうデータをいじるかをこれもまた自然言語で伝える。
あとはコードの書き方のコツなどを加え、そこで必要なデータや、うまくコードを回すためのデータとその使い方に触れる。
ここまでやると大抵の場合は、もうほとんど答えとなる。

これを読むと、前回の、着眼点は間違いではなかったように思う。
特に上記で箇条書きにした部分は、現段階では重要に思う。

「最初の状態」とはスクリプトを適用する前の段階で、
「最後の状態」とはスクリプトが実行された後の段階
のことをさしていると思う。
ようするに「何がやりたいかということを明確にする」ということとイコールだと思う。
そして「それぞれの状態」を実現するために必要な「データ」が何かを明確にするということは、「スクリプトで操作する対象をつきとめる」こととイコールだと思う。



また以下のページはプログラミングの流れについて、重要なステップを書いているが、これも上記のアイデアに似ている。

情報通信ベンチャー支援センターの「ソフトウェア著作権関連判例集」ページにある
■技術的な背景
プログラムというものは,何か特定の仕事をするために作られるものである
プログラム製作の第1段階は,プログラマーが解決すべき問題は何かということを見つけだすこと

プログラマーが問題をよく判るようになるにつれて,段々に解決法をおおまかに描けるようになってくる。

プログラムの構造が洗練されてくるに従い,プログラマーが決定しなければならないものとしては
どういうデータが必要か
プログラムの操作手順のどこでデータが入れられるべきか
データはどのようにインプットされるべきか
それが他のデータとどう一緒にされるべきか
といったことなどがある。

コンピュータ・プログラムを作るに際して,もっと費用と困難さを要する部分は,プログラムの構造と論理を開発する部分であり・・・(以下略)


どちらにしても先が少し見えてきた気がする。
  

0 件のコメント:

コメントを投稿