CodecademyのPython講座を修了したので感想など

さて

今年の1月23日から始めたCodecademyのPython講座を先日修了したので感想などを語ってみようと思う。

f:id:iGCN:20160418175257p:plain

今までの学習の軌跡についてはこちらを。

igcn.hateblo.jp

Codecademyって?

codecademy.com

そもそもcodecademyとは何ぞやだけど、

Codecademy はHTMLやCSSなどマークアップ言語及びPython、PHP、Javascript、Rubyなどのプログラミング言語関連のコーディング講座を無料で提供しているオンラインプラットフォームである。

説明が面倒なのでWikipediaから引用しちゃったけど、まぁそういうことです。

要はブラウザ上でプログラミング言語の学習が出来るサイト。

開発環境不要ですぐ始められる

初心者がプログラミングを学習しようとした時にまず躓くのが開発環境のインストールではないだろうか。自分もPythonを始めようと思った時に、まずMacにPythonをインストールしたわけだけど、その時には「Pythonスタートブック」に書かれている通りにしてインストールすることができた。

[asin:4774142298:detail]

手元の本を読みながらの作業だったのでさほど苦にはならなかったけど、少しのことにも先達のあらまほしきものなりで、こういう先達すらない状況ではインストールするのも大変だと思う。

Codecademyの場合は、サインアップさえしてしまえばブラウザの画面にcodeをどんどん打ち込めて、codeの実行結果もちゃんと表示される*1。インストール等で悩む必要なしにすぐにコーディング学習を始めることが出来るのは大きな利点と思う。

Pythonコースの講座内容

UNIT 1: PYTHON SYNTAX  
    Lesson: Python Syntax  
    Lesson: Tip Calculator  
UNIT 2: STRINGS AND CONSOLE OUTPUT 
    Lesson: Strings & Console Output
    Lesson: Date and TIme 
UNIT 3: CONDITIONALS AND CONTROL FLOW  
    Lesson: Conditionals & Control Flow  
    Lesson: PygLatin  
UNIT 4: FUNCTIONS
    Lesson: Functions
    Lesson: Taking a Vacation
UNIT 5: LISTS & DICTIONARIES
    Lesson: Python Lists and Dictionaries
    Lesson: A Day at the Supermarket
UNIT 6: STUDENT BECOMES THE TEACHER
    Lesson: Student Becomes the Teacher
UNIT 7: LISTS AND FUNCTIONS
    Lesson: Lists and Functions
    Lesson: Battle Ship!
UNIT 8: LOOPS
    Lesson: Loops
    Lesson: Practice makes perfect
UNIT 9: Exam Statistics
    Lesson: Exam Statistics
UNIT 10: ADVANCED TOPICS IN PYTHON
    Lesson: Advanced Topics in Python
    Lesson: Introduction to Bitwise Operators
UNIT 11: INTRODUCTION TO CLASSES
    Lesson: Introduction to Classes
    Lesson: Classes        
UNIT 12: FILE INPUT AND OUTPUT
    Lesson: File Input/Output               

実際の画面

実際の実行画面はこんな感じ。
f:id:iGCN:20160418175402p:plain

画面の内容について解説すると、
f:id:iGCN:20160418223823p:plain
左側にLessonの内容と、実習内容の指示。
中央にコーディング画面。
右上のウインドウにコード実行結果が表示される。

ふり返って見たらば、UNIT 1の一番最初のコードは

print "Welcome to Python!"

と、print文を使って文章を表示させると言うどの言語学習においても真っ先に行う内容だった。

そこから徐々に変数を使ったり、ブーリアン型を使ったり、ループを作ってみたりと一歩ずつ着実に手取り足取り指導してくれる。

Lesson 6, 7あたりまで来るとリストや関数を駆使してどんどん複雑なプログラムを組み上げる内容になってくる。プログラムと言っても、各単元の指示に従って少しずつコードを積み上げて行くと最終的に複雑なプログラムができあがるようにうまく構成されている。

かかった時間

CodecademyにサインアップしてPython講座を始めたのが1月23日、修了したのが4月18日だからトータル3ヶ月弱かかった。週に2ー3時間くらいしか時間がとれなかったので3ヶ月かかったけど、集中してやれば1ヶ月くらいで終わるのではないかな。

毎日時間を決めて少しずつ定期的に進めることをお勧めしたい。

トラブルシュートは

どうしても解答のコードが分からない場合は、オフィシャルのQ&Aフォーラムもあるのだけど、むしろ講座の単元名でググった方が早い。

例えばUNIT 6で躓いたとしたら、

STUDENT BECOMES THE TEACHER, python, codecademy

のようにGoogle検索すれば、同じように「ここで躓いている」と質問を投げている人に対して回答をしているサイトがヒットするのでそれを参考に進める事が出来る。

だが、いきなりググって解答をみてしまうとあまり勉強にならないので、右上の四角の中に表示されるエラーコードを見ながらまずは自力でコード修正していく作業は必須。実はこれが大変勉強になる。

英語の勉強にも

Codecademyは全編英語なので、英語の勉強にもなる。講義内容や指示の内容は、専門用語を除けば中学生レベル(というか英文解釈に必要な英文法は全部中学で習うよね)なので、なんとなかなるでしょう。

専門用語を除けばと言ったけど、逆に専門用語の勉強にはうってつけだと思う。自分は非エンジニアだしITエンジニアの方々が日常業務でどの程度英語力を必要としているかは分からないけど、はてブで定期的に英語ネタがホッテントリ入りしているのを見ると英語力をつけることは喫緊の課題として認識されているのではないか。

業務で使う英語力は業務文書を読み書きすることでしか身に付かないと考えている。と言うのは業界特有の単語(ジャーゴン)が多数あるからで、例えば科学論文を読み書きするのに必要な英語力は、科学英語の読み書きを繰り返すことによってしか身に付かない。

エンジニアに必要な英語力もおそらく同様なのではないだろうか。

例えば以下の単語、英語でなんと言うか分かりますでしょうか。

  1. 引数
  2. (クラスの)継承
  3. 繰り返し




答えは、

  1. argument
  2. inheritance
  3. iteration

そんなん知っとるわ、舐めてんのかと思われたらごめんなさい。

ただ、「繰り返し」を英語で言うのに、例えば"repeat"とか言っちゃうと話が通じにくいのじゃないか。業界における業務用語は決められた単語を使わないといけないから、それを覚えるのは非常に役立つと思う。

やる気を高めるためにバッジをくれる

講座を進めていくとマイルストーンごとにバッジが表示されて参加者のやる気を高める仕組みは海外のサービスでありがちだけど何となく嬉しい。

f:id:iGCN:20160130094643p:plain:w300


さらに各単元を修了すると、即座にメールが送られてくる。

f:id:iGCN:20160420080002p:plain

Great job finishing !

Way to go! Ready to begin ?

Once you're done celebrating, why not pick up another course?

Happy coding,

Zach

CEOのZach Simsからのメールでモチベーションがわずかながら上がる↑(?)

デメリットは?

今までメリットばかり挙げてきたが、ではデメリットはないのかと言うと、ひとつ思い当たるのはcodecademyの講義の進め方が巧みすぎて、あたかも自分の力でコーディングが出来るような妄想を抱かされてしまうこと。実際にゼロからコードを書けと言われても出来る気がしない。

これについては更なる実践あるのみと思っている。

今後の方向性について

Python講座を修了したら、次にRubyはどうよ?ってお誘いされたけど。

f:id:iGCN:20160418175202p:plain

もう少しPythonを勉強します、というか私のPython修業はまだまだ始ったばかりだよ!*2

Codecacemy Proに登録するとexclusive contentsにアクセスできるので、それで更に勉強する手もあるけど月に19.99ドルもするのでやめておこう。

今後は「プログラマ脳を鍛える数学パズル」をPythonでちまちま解いて行こうと思っている。

学習記録のためのブログも新たに立ち上げたので合わせて応援よろしくお願いします。

Pythonで解く数学パズル

さいごに

と言うわけで、英語アレルギーのない人にはcodecademyの講座は全面的にお勧めしたい。

では

*1:講義内容に沿ったコードが打ち込めるだけで、自由にコーディングできるわけではない。

*2:他の言語をやる余裕はないけど、HTML&CSSの講座には少し興味を持っているところ