プログラミングの
ことはじめ
Manabu Murakami
2016.05.07
ちいさな互助会
20160507
バージョン
目次
ことはじめ
・このスライドについて
・プログラミングとは?
・プログラミングのポイント
・プログラムをおぼえよう
読み物
・参考書籍
・参考サイト
3P
21P
13P
Mayaでプログラム
・Mayaの良し悪し
・Mayaヘルプを使いこなす
・実践
ことはじめ
このスライドについて
スライドの作者
• テクニカルアーティスト。(パイプライン)
• プログラミング歴は約10年程。システムエンジニア出身。
• 特定の業種や技術に特化ではなく、業務ロジックのシステム化に特化している。
• これまでの仕事では、VB系/C#/MaxScript/Pythonなどなど複数の言語を使用。
• 問題解決の手段としてプログラミングを使っているイメージ。
スライドの目的
プログラミングに興味がある人、とにかくやってみてはいるけど…
という人達に、プログラミングの勉強方法や汎用的なTIPSを伝えるのが目的です。
ターゲットは、メインのお仕事がプログラマーじゃない人。
そして、付加価値としてプログラミングを身に着けたい人を対象にしています。
プログラミングとは?
プログラミングとは何でしょうか?
プログラミングとは、やりたいことをコンピューターが実行できるように、
論理的な言葉で命令文を書くことだと言えます。
プログラミングには2つの技術が必要です。
• プログラムコードを効率的に記述する、プログラムを書く技術
• やりたいことを適切にフロー化する、プログラムを設計する技術
コンピューターは自然言語が理解できないため、
曖昧な命令をイイ感じに処理してくれることはありません。
意図した動きをしてくれるのは、命令が上手に設計できているからです。
裏を返すと、上手にプログラムを書けなくても、
設計(デザイン)ができていれば意図したとおりにコンピューターを動かせるわけです。
まずは動かすことを考えましょう。上手なプログラムを書くことは2番目で良いのです。
プログラミングのポイント
プログラミングをするときのポイント
プログラミングをはじめるとき、次のようなポイントを意識してみましょう。
1. 何をさせたいのか?ゴールを決めよう
2. コードの実行方法を把握しておく
3. テストとデバッグの方法を把握しておく
4. どういった場所に知りたい情報があるか把握しておく
5. やりたいことを分解する
プログラミングのポイント(1)
何をさせたいのか?ゴールを決めよう
プログラミングをやりたいと思った理由は何でしょうか?
• 自分の作業の一部を自動化したい?
• ツールを作って他の人に貢献したい?
プログラミングはあくまで手段です。
目的がはっきりしている方が物事はスムーズに進みます。
まずは自分で使って試せるものを作るのがオススメです。
ついでに自分の抱える課題が解決できるといいですね!
プログラミングのポイント(2)
コードの実行方法を把握しておく
プログラムを書いたら動かせないと何の意味もありません。
特に動くものを作るのであればなおさらです。
プログラムコードの実行方法が複数存在している事があります。
たとえば、「選択しているコードだけを実行する方法」
実行方法は、扱うプログラミング言語や
プログラミング環境によっても変わってきます。
自分の扱う道具を把握しておくことは非常に重要です。
プログラミングのポイント(3)
テストとデバッグの方法を把握しておく
プログラミングに触れて間もない場合、
「テスト」や「デバッグ」という言葉が耳慣れないものかもしれません。
「テスト」というのは、プログラムコードが意図通り動くか動作確認をすることです。
「デバッグ」というのは、テストに合格しなかった理由を調べることです。
テストとデバッグは、それだけでカンファレンスが開かれるほど重要なものです。
シンプルなものから専用のシステムを必要とするものまで手法も様々です。
まずはベーシックな手段である「Printデバッグ※」を使ってみましょう。
※Pythonで学ぶ 基礎からのプログラミング入門 (35) デバッグの手法について知ろう | マイナビニュース
プログラミングのポイント(4)
どういった場所に知りたい情報があるか把握しておく
プログラミングをする上で、何も見ずに進めるのは不可能だと思います。
インターネット上に多くの情報がありますので調べておきましょう。
使用するプログラミング言語にもよりますが、
Pythonだとメジャーな言語なのでかなり多くの情報が見つかるはずです。
プログラムの素晴らしいところは、
知らない国の誰かが書いたコードでも読めば理解できる点です。
積極的に母国語以外でも調べてみましょう。
プログラミングのポイント(5)
やりたいことを分解する
何かプログラムを作ろうとした時、きっと複数の処理を含むと思います。
Aの処理をした後に、Bの処理を行う。さらにCの処理を…
最初からすべてをいっきに処理するプログラムを組むのは難しいことです。
やりたいことを出来るだけ分解するクセをつけましょう。
仮に自分で行う一連のGUI操作をプログラムで行いたい場合、
一つ一つの操作をプログラミングするイメージです。
何かを1行~3行程度の短いプログラムを書いて動かす。
これをつなげることで個々の挙動を理解しながら全体を構築できます。
できるだけ小さく、そして少しずつやりましょう。
プログラムをおぼえよう
最初におぼえておくべきこと
どのようなプログラムを扱う場合にも共通していることが多くあります。
まずはプログラムの汎用的な存在(文法)をおぼえておきましょう。
• 変数(メモリ)
• 関数(再利用性)
• 分岐(フロー制御)
• ループ(繰り返し)
例題:
1から100までの値を1から順番に加算していきます。(1+2+3+…+100)
加算の途中、それまでの合計値が1000よりも大きい場合は、次に加算する値を2倍にして足します。
100まで加算し終わったら、合計値から1000を引いてください。
※Paiza.IO:ウェブ上でプログラミング!(手元に環境がない場合はこういうサイトでためそう)
Mayaでプログラム
Mayaの良し悪し
Mayaでプログラミングを行うのは実際どうなの?
Mayaでプログラミングの勉強をするメリットは多くあります。
• 3Dデータも扱えるので視覚的に結果がわかりやすいプログラムが書ける
• スクリプトログがあるので、GUI操作からスクリプトコードを見ることができる
• シェルフを使うことで、プログラムを簡単に使う事ができる
• インターネット上に参考にできるスクリプトがたくさんある
逆にデメリットもあると思います。
• MELが独特で若干とっつきにくい(PyMELがあるけど…)
• Mayaが無いと動かないプログラムになりやすい
総合的に考えると、普段からMayaを使うひとにとっては、
勉強するのには良い環境ではないかと思います。
Mayaヘルプを使いこなす(1)
じゃぁMayaでやってみようとなったら?
Mayaの場合は命令となるコマンドの理解が非常に重要です。
手動でMayaの画面を操作した場合、実はその裏で大量のコマンドが実行されています。
Mayaでプログラムを書くというのは、
それらのコマンドを拝借し、組み合わせて意図した処理を作ることになります。
これからコマンドの説明が書いてあるヘルプを読むポイントを簡単に解説します。
Mayaヘルプを使いこなす(2)
コマンド一覧
気になったコマンドは調べる。最終的に全てのコマンドヘルプを読む。(link)
3種類の方法でコマンドの絞り込みができる。
MアイコンがあるものはMELにしかないコマンド
Mayaヘルプを使いこなす(3)
コマンド説明ページ(概要)
概要が書いてある。正直日本語訳がよくわからないページもある。
説明が難解なものもあるので、よくわからなければ読み進める。
MEL/Pythonの切り替えが可能
コマンドに使えるフラグ(引数)の説明など
Mayaヘルプを使いこなす(4)
コマンド説明ページ(フラグ)
コマンドは与えられたフラグで挙動を変える。
Mayaの場合はfileコマンドのように大量のフラグが存在しているものもある。
GUI操作した際の挙動を把握しているとフラグの理解も早い。
作成モード、照会モードなど組合せも重要
フラグ名、特にショートネームは重要
Mayaヘルプを使いこなす(5)
コマンド説明ページ(サンプルコード)
全てのフラグに関して記載されていないが、コマンドのだいたいの使い方がわかる。
一部のフラグは指定方法がわからないこともあるので、
そんなときはネットから似たようなコードを探してみよう。
MEL/Pythonを切替えることでサンプルコードも変わる
実践
あとはひたすら実践あるのみ!
自分で調べることができるようになったら、
あとは作りたいものを決めて、ひたすら考え・悩み・調べ・作るのみです。
一度自分でプログラムを作れたら、もっと良くしたいと思うはずです!
どのようなプログラムにすればいいのか?
どんな機能を作ればもっとよくなるだろうか?
たとえプログラムを実際に書く時間がとれなくても、
そういったことに頭をつかうことで「動かす力」が伸びていきます。
まずは小さなことから初めて徐々に大きくしていきましょう。
読み物
参考書籍1
プログラマの考え方を知り、コーディングの美学に触れてみよう
• プログラムはこうして作られるプログラマの頭の中をのぞいてみよう (amazon)
• リーダブルコード (amazon)
• きれいなコードを書くための鉄則 (amazon)
• ゲームを動かす技術と発想 (amazon)
参考書籍2
Mayaスクリプティング
• MEL教科書 第2版 - Mayaプログラミング入門 - (amazon)
• Maya Python 完全リファレンス(amazon)
参考サイト
プログラマの世界に触れる
• プログラマが知るべき97のこと (link)
• 4コマまんが「がんばれ!アドミンくん」連載目次 - @IT(link)
• Rebuild.fm (link)

プログラミングのことはじめ 互助会 20160507 バージョン

Editor's Notes

  • #10 デバッグに関してはこちらが役立つかも。 [Unite 2016 Tokyo]Unity上級者を目指すなら知っておくべきデバッグテクニック集 https://www.youtube.com/watch?v=u1Pu6ZCwhg0
  • #13 例題の答えはたぶんこんな感じになる。(超ストレートに書けば) sum = 0 for i in range(101): if sum >= 1000: sum += i * 2 else: sum += I sum -= 1000 print sum --8065