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

2016年12月23日金曜日

Pythonスタートブックにたどり着くまで

※この記事は12/23に書いたのですが、12/27に手違いで全文失念してしまいました。
原文も履歴も失われていたため、草稿を基に新たに書き起こしました。
そのため、オリジナルの内容とは大きく変わってしまいました。


前回「Pythonスタートブック+Progate」は、たまたま自分には内容があっていたのと、タイミング的に良かったのだと思います。


Pythonの入門は、これまでも何度もトライしてきました。
ただ書籍ではなくWebサイトばかりです。
日本語の書籍を購入する際、近くの書店に置いてないので中身を確認する手段がないのと、 購入すると送料含めて1.5倍以上の値段になってしまうので手軽に手が出せるのは、Webサイトしかないのが理由です。


ネガティブな評価になっていますが、そもそも自分の目的に添わなかっただけで、そのサイト自体が悪いとは限りません。人によっては全然問題ないものも多いと思います。

Pythonを勉強するにあたり、自分がもっていた目的は以下のようなものです
1)オブジェクト指向がシンプルに理解できる。
2)Pythonの基本構文を必要最低限のシンプルな形で学べる
3)専門用語が少ない。
4)難易度が徐々に適切な程度で上がっていく。
初期のころは「Mayaで使う」という目的もありましたが、今はその目的は二次的





<これまでの経歴>
MayaでのPython利用を目的としたチュートリアル。
元々はMelのチュートリアルが主流で、Melの勉強の時には大変お世話になったサイトです。
説明も丁寧でわかりやすい。

Melの時はなんでも目新しかったのですが、ある程度スクリプトをかけるようになっていたので、ジオメトリを作ったり並べたりのチュートリアルは退屈で興味が持続しなかった。
MelでできることをなぜわざわざPythonでやらなくてはいけないのか?
その意義が見いだせずやる気を失う。



細かいことまで、詳しく説明。
正確に記述するために専門用語が多用される典型的なパターン。
基本的にはそれらの用語は理解しているものとして話は進んでいく。

ある程度プログラミング用語を理解している人なら、問題ないと思うが、自分には理解不能な言葉が多かった。
また一つの説明が多岐にわたるため、ある程度全体が理解できるようになるには時間がかかりすぎると思い、やめた。



有名なサイトですね。
サイトトップに「Python超入門」という書籍が紹介されているということはこの著者さんのサイトでしょうか。
「入門編」「基礎編」「応用編」とカテゴリ分けされていて、ステップ通りやっていけばかなりのことができるような気がします。

「基本構文」のエンコード宣言が自分の環境では正常動作せず、その後の例でもこの「エンコード宣言」が続けてつかわれているので、うまくいく気がせず、やる気がなくなった。
実用面では必要なのだとは思うが、初心者には、はっきり言って不要なようにも思う。
(Python2.7で日本語を使うには避けられないが…)
いきなり文字コードの処理で躓いては入り口で拒否されたような気分になる。
段階的に難易度の高い説明が初めのころにあったり、専門用語の説明が足りない気もした。



MayaでのPython使用について書いていあるTips的解説
プログラム恐怖症のアーティストにもわかりように丁寧にステップ毎に書かれている。
Tips的内容なのでこれだけで入門になるかどうかはわからないが、ちょっとコマンドをつかってみるだけなら十分いける。

自分はもうすこし、プログラミングの基本がしりたかったので、ちょっと試しただけでやめてしまった。



インタラクティブ、かつ豊富なイラストレーションで学べるアプリということでこれなら頭固い自分でも理解できるのではないかと思い、Kickstarterで購入。
非常にきれいな構成になっているし、イラストもシンプルで美しい。

比喩で使われているイラストの必然性が理解できず、わかりづらく、すぐにやめてしまった。

著者がそのイラストで伝えいたい要素を読み手が必ずしも、著者と同じように理解するとは限らない。イラストが適切でなく解釈のしかたに、幅があると特ににその食い違いが大きくなるように思う。
普通の人ならすぐに理解できることが、理解できないのかもしれない、だとしたらADHD傾向があるのかな??



1つ1つのステップがシンプルでわかりやすい。
解説のお兄さんの声も心地よい。
動画だが説明をタイピングして文字で見せてくれるので聞き逃しがない。

ステップが細かすぎてある程度のことができるようになるには非常に時間がかかる気がした。
無料のステップでは、基本的な条件分岐の説明にも至らない。
CG業界でのスタンダードはPython2.7だがドットインストールはPython3.0なので、やってどうなる?という迷いが生じた。


個人的に、初心者は簡単なタイプミスや、基本構文を忘れたりしてエラーに悩まされることが多々あるので、そういったことは、繰り返し入力するだけで向上すると思う。
考える必要もなく、ただひたすらドリル形式で繰り返す訓練を自分は体力系と呼んでいる。
このサイトはそういう繰り返しのエクササイズがあるし、ほかのチュートリアルとは目の付け所が異なる。(良いかどうかではなく異質)
たとえあ論理演算を単語帳に書いて、その計算結果がTrueかFolseかを即答できるようにする訓練とか。
ステップごとに一つか二つのことをとりあげるだけでシンプルにしてあるのは好感がもてるが、説明は必要最低限のことしか書かれておらず、ググれが基本か。
場合によってはこのページを見ているよりも、ググっている時間が長かったりした。
エクササイズも、あまり面白いエクササイズではない。非常に時間がかかり、場合によっては1つのエクササイズに1週間をかけたりもする。
Pythonを習うというよりは、プログラマーの訓練という感じ。
Ex37で完全にやる気をなくした。


楽しくできれば、長続きできると思いやってみたが、そもそも萌え系のアドベンチャーゲームに興味はないのでゲーム要素が邪魔でイライラしてくるという本末転倒な状況に。
肝心のコードの勉強はペースが遅く感じる。



-------------
他にもいろいろと試したものがあるのですが、今思い出せるのは以上です。
また思い出したら後日追加するかもしれません。


振り返ってみて思うのは飛行機に例えると、滑走路を走っているのが入門書を読んでいる段階で、その後ある程度自信をもって基本的なことができる段階に問うと断つするのが「離陸」だとするとその離陸に至るまでの時間が非常に重要に思います。

滑走路が凸凹(難解)だったり、長すぎたり(各段階のステップアップが適切に設定されていない)して離陸までに時間がかかりすぎると、途中で失速(やる気の喪失)になってしまい離陸に至ることができないように思います。


今回は今まで試してみたチュートリアルサイトで、なぜ自分の場合はうまくいかなかったのかを書いてみました。
人によっては、上記のサイトでも、全然問題ないかもしれませんが、私のようなケースもあるということで何らかの参考になればと思って書いてみました。


次回は学習者としての基本事項「動機」について書いてみたいと思っています。



2016年12月22日木曜日

Pythonスタートブック + Progate

ひさしぶりの投稿です。
Melの勉強は、もうほとんどしてないのでブログ・タイトルも変えました。
(*Melとは3DCGソフト「Maya」で使われるスクリプト言語Maya Embedded Languageの頭文字です。Mayaのメニューから操作できるコマンドはほとんどがMelで実装されており、製作作業の効率化やより複雑な処理をするためにアーティストやエンジニアによって使われます。
MayaにPythonが実装されてからは徐々にPythonが一般化しつつあります。)

プログラミング言語でいうと、Arduinoとか、Processingを触っていましたが、最近はPython一択となりました。

そのきっかけとなった本が「Pythonスタートブック」だったのですが、なかなかの良書だったので感想含めて、おすすめな理由などを書いておきたいと思います。


Pythonの入門書の定番というと「Pythonスタートブック」と「みんなのPython」です。
どちらを選べばよいか悩む人も多いと思います。
       

「みんなのPython」はAmazonの書評で見て誤字誤植の多さが指摘されているとともに無料公開されている「みんなのPython Webアプリ版」を少し読んでみたのですが、後述するように専門用語が多すぎる感じがしました。
(ちなみに最近、みんなのPython 第4版が出版されたようです。)
プログラミングをある程度経験している人でPythonをいじるなら「みんなのPython」でも問題ないと思います、むしろそのほうがまわりくどくないかもしれません。

ただ自分の場合はできるだけ小さなノイズは取り除いたものを理想としていました。
少し迷ったのですが、@spx808さんのおすすめもあり、「Pythonスタートブック」に決めました。
この本は自分が今まで読んだプログラミング言語入門書では一番良かったです。
その理由は以下の二点です。
1)専門用語をむやみに使わず、平易な言葉で書いてある
2)必要な専門用語は概念的理解ができるようにしている。

普通の入門書では説明がされなしで、専門用語が使われていたり、あっても数行でおわることがほとんどですが、専門用語は初心者には鬼門だと思っています。
専門用語がしっかりと把握できてないことで学習に大きな影を落とすことは少なくないです。

このことを理解してない入門書は意外と多いというか、ほとんどがそうだと言っても過言ではないかも。
読む側も、解説する側も、一冊ですべてを解説できるとも思ってないようですし、ほかのサイトや書籍でわからないことを補っていくという勉強は不可欠という暗黙の了解もあるような気がします。

解説する人はその業界で慣れているので、当たり前の前の前ぐらいの言葉なんでしょうけど、
初心者には、そうでないってことがわからなくなっている人も多いようで、温度差は感じます。

この本では複雑になりがちな解説を、要点を絞り、段階を踏んで解説してあるので、理解しやすいです。
自分はこの本のおかげで長年の謎であった「オブジェクト」について少し理解ができました。
「オブジェクト」を使いこなせるようになったわけではありませんが、しっぽはつかめた感じがします。


あと「たとえ話」がわかりやすかった。
読む側に伝わらない「たとえ」は、定義の揺らぎがあったりするのですが、何度読んでもつかみどころがない場合は、だいたいそこから読み進めることができなくなります。
この本では、そのあたりも注意深く「例」を選択している印象があります。


この本の前半は、初心者にも手取り足取り解説してくれます。
後半はやや加速しますがでてくる新しいコマンドをひとつひとつりかいしていけば9章までは理解しやすいと思います。
10章は数学的な知識が必要となる事例がでてくるので、そこはネットなどで調べる必要があるかもしれません。


<補助教材>
難点をいえば、説明が丁寧なのでその、理論的な部分の説明が多くなり実践的な部分は比較的弱い感じがします。
それを補うためにProgateというオンラインプログラミング学習サービスを利用しました。

似たようなオンラインサービスはたくさんあるのですがProgateを選んだのは
1)1つのステップの内容が簡単明瞭
2)スライド式
3)図解がわかりやすい

ステップをよく考慮して、一つ一つのステップで要点をしぼってあり、簡潔にまとめてあるのは
「スタートブック」と似ています。
ただ解説は必要最低限で、アプリを作る作業を通して学んでいくやり方でちょうど真逆で、お互いに足りないところを補ってくれます。
ダブっている部分もありますがそこは簡潔なので読むのは苦にならない程度なのもよいです。

順番としては「スタートブック」で勉強して「Progate」で復習というのが一番良いように思います。
逆もやってみましたが、自分の場合は理解が進むのは、まず「スタートブック」でした。

「スタートブック」でもコードを入力したりするのですが、本を読みながらやるのとみないでやってみなさいというのは大きな差があります。
カッコの使い方ひとつとっても、いざやるとなると細かなルールを覚えておらずエラーになったりします。
そのあたりを「Progate」で確認しながら学習することもできました。


ただループや分岐の解説がでてくるタイミングはやや異なります。
おおよその対応は以下のような感じです。
スタートブック1~3章 : Progate PythonI
スタートブック4~5章 : Progate PythonII
スタートブック6~9章 : Progate PythonIII
(ProgatePythonIVは2017年公開予定)

PythonII以降は有料になりますがプラス会員なら一ヶ月で980円と安いです。


Progate自体の利点は開発環境を気にすることなくいつでも始められる。
動画ではなくスライドなので、見たい場所へのアクセスが素早くできる。
スライド1ページあたりの情報量が1~2点にしぼってあり、理解しやすい。よみやすい
イラストがわかりやすい。

問題点としては例題の文字列を一文字打ち間違えただけで、答えあわせはエラーになってしまうことです。
Print文で表示するだけならその内容は何であれ構文があっていれば通常はエラーになりません。
Progateでは回答の文字列は厳密に一致してないと不正解になりますが、それが「エラー」という形で帰ってくるので、最初の内は間違いをさがすのに見当違いなところばかりを見ていて時間がかかりました。
エラーが出たら構文だけでなく、出題との文字列の違いも確認したほうが良いです。
運営サポートにも連絡をしましたがそこは認識されているようで、近々修正されるかもしれません。



以上のように「Pythonスタートブック」+「Progate」で勉強を進めましたが、個人的には非常に良かったです。
これでプログラムが、作れるようになったかというと、そんなことはありません。
まぁFor文やIf文をつかった10数行のものならできますが、きちんとしたものを作れるようになるには、まだまだいろいろな方面の勉強が必要です。
今は別の方法で、そのあたりを強化していっています。

「Pythonスタートブック」+「Progate」からの一番の成果は、これまで見てもよくわからなかった、Webや書籍にあるPythonに関する解説が理解できるようになったことでしょうか。
少しづつですが前に進むようになったという感じです。

そんなわけで、「Pythonスタートブック」おすすめです。

次回「Pythonスタートブックにたどり着くまで」は以前にやってきた(そして失敗した)「Python」の勉強履歴を公開します。