どうやって初学者がPythonを学ぶか?
この記事は、Pythonアドベントカレンダー2013 21日目の記事です。
アドベントカレンダーのシーズンが今年もやってきました。
毎年、年の瀬になると書いているアドベントカレンダーの記事ですが、他にもブログでお伝えしたいことがたくさんああります。ほとんどブログ更新出来ていませんが、元気にやっています。さらに会社としては新たな試みも始まっています。改めてご報告したいと思います。
さて、今年のPythonアドベントカレンダーは、Web関係以外ということになっています。技術系アドベントカレンダーも定着しつつあり、新たな試みを試そうと頑張っているのですが、正直私には辛い内容です。
普段からOSS CMSツールであるPloneを使った構築をメイン業務にしており、仕事のほとんどがWeb関係です。しかし、この機会にWeb以外の記事ということで書いてみようと思います。
タイトルに有るように、初学者がどのよにPythonを学んで行くか、私の経験などを交えながらご紹介したいと思います。
なお、この記事では、他のコンピュータ言語を既に使っている人には当てはまらないと思います。Pythonは難しいものではなく初学者に向いている言語とも言われています。後述する、「Pythonチュートリアル」を読めば「何が出来るのか?」「Pythonではどうすれば良いのか?」という事が理解できると思いますし、それ以上の事を知りたければ更に上位の書籍やオンラインドキュメントを見れば理解できると思います。
背景
PyConの座長をやったり勉強会を主催していると、よく質問されることととして、「Pythonを勉強したいけどどうしたら良いですか?」と聞かれます。
他にも、「Pythonの講師やTAと言われるアシスタントになってくれる人を探しているけど居ない?」という話をよく耳にします。
日本において、Pythonはマイナー言語でしたし、今でもPythonエンジニアを国内で探そうとすると苦労が多いようです。
(他の言語でも、「エンジニア居ない?」というような話は聞くので、エンジニア全般が不足しているのだとは思いますが。)
その一方、2010年にアジアで初めて行われたPyCon APAC (シンガポール)では、コンピュータ言語の初学者に学ばせるのに、以前はC言語やJavaを使って教育していたが、今はPythonに切り替えているという話がありました。Pythonは初学者に優しく教育に向いていると言われ始めています。Pythonが本格的業務で使われている例も増え、実用言語としてのPythonの地位も上がっていると思います。
私自身の勉強方法
私は元々、産業電機業界で働いていました。工場の生産設備を制御するためのシステムを作っていました。そんな私がある時知人の紹介で、Zopeをはじめることになり、そこからPythonを勉強することになりました。
もちろん、最初は何も分からず苦労ばかりでした。その時期には今のように日本語の書籍もほとんどありませんでした。
まず私は、本屋さんでPython関係の書籍を数冊買い、そこから勉強しましたが、今一歩理解が進みません。
そこで、勉強会への参加、さらにはその後の飲み会への参加をはじめました。ネット上でしか知らなかった人たちと知り合いになれ、メーリングリストでの質問や回答も徐々に分かるようになってきました。
その後は、仲間たちを集めて小さな勉強会をやり始めました。その中で個別に質問したり、一緒に学んだりすることで、自身の理解度を伸ばし、普段から様々な課題をクリアできるように自習もしました。そうすると次の勉強会で次のステップへ行けるようになってきました。
まとめると、以下の様な流れでした。
本を読む(理解できない)→勉強会に行く(知合いを増やす)→小さなコミュニティで勉強する(徐々に理解していく)→自習(だんだんわかってくる)→本を読む→小さなコミュニティで勉強会を繰り返す(理解力アップ)
いい仲間に恵まれ、継続できたことが良かったのだと思います。これはPythonに限らず、様々な物を理解することに使えるのかもしれません。逆に、これをしないとダメというい事ではなく、私に向いている方法だったのだと思います。
勉強方法
書籍・オンラインドキュメント
3種類を紹介します。(数が多くても迷うと思いますので)
これらの文書に触れるところから、はじめることをおすすめしたいと思います。
・Pythonスタートブック 技術評論社
プログラミング初学者向けに書かれた書籍として定評のあるものです。まずは読んでみて手を動かしてみてください。
・Pythonチュートリアル Web版(無料)
Pythonは公式にチュートリアルが公開されています。日本語版もWeb上で公開しています。
この公式チュートリアルでは、インタープリタの起動・実行方法から、文法の解説、制御フローやデータ構造に関する基本的な説明が書かれています。
Pythonのことを知るなら、まずは読むと良いと思います。
他の言語の経験者なら難なく読めると思いますが、プログラミング初学者には、具体例が少ないため、実際になぜこの説明があるのか? というような事への答えが無いためか、難しいと感じられるようです。
・Pythonチュートリアル(第2版) オライリー・ジャパン
Web版のチュートリアルとほぼ同様の内容が、書籍になっています。
本で持ち歩きながら読める点が便利なところです。
私もこのチュートリアルの第1版は本で読みました。
勉強会、カンファレンス
次に勉強会やカンファレンスですが、一人で勉強していると、途中で詰まったり、わからないことがたくさん出てきて先に進めないことがあります。
勉強会などに行くことで、抜け出すチャンスをもらうことは重要だと感じています。
東京では、毎月のように勉強会が開かれていますし、最近では東京以外の各地でも勉強会が開かれているようです。
一部ですが紹介をしておきます。
私も含め3名で主催しているイベントで、本日が開催日でした(私は出張で不参加となってしまいましたが)、ほぼ毎月都内で土曜日に開催されているイベント。セミナーのように講師が教えてくれるものではありませんが、同じ場所にいることで困ったときに助けを求められるところが、初学者でも参加してメリットがあるイベント。
半年に1度程度開催されている。Python使いが中心の集まりではあるものの、最近は、Pythonにこだわらず、様々な最新技術が知れるイベント。
・PyCon JP
年に一度の国際カンファレンス。お祭り的要素が大きいが、セミナー形式の発表が数多く行われるので、自分の興味のある分野の話が聞け、Pythonの今を知ることが出来るイベント。
セミナー、チュートリアル
半日や1日、講師から説明を受けながら勉強できる機会。数は少ないが、東京では数回開かれている。
一定のカリュキュラムが準備されていことがあり、ブートストラップに向いている。
開催回数が少ないので、タイミングが合うかどうかが一番の問題かもしれない。
オンラインラーニング
アメリカ マサチューセッツ工科大学の無料オンライン講座公開(OCW)の中で、1位,2位を争う人気コンテンツが、プログラミング初学者向けの講座で、Pythonが用いられているものです。A Gentle Introduction to Programming Using Python
これは英語のコンテンツですが、今後は同様なコンテンツの日本語版が出るとが望まれていると思います。日本語でPythonを学べるオンライン教材はまだ存在しないと思いますが、今後は出てくるのではないかと思います。
余談ですが、オンライン教育の業界では、MOOCsと言われる無料オンライン講義を行い、修了証明書を出し、大学間で連携しようという動きが始まっています。(この話は別途ブログで書きたいと思います)
初学者によく聞かれる質問
Pythonのバージョンはどれを選べばいいの?
Pythonの最新版は 3.3です。もうすぐ3.4がリリースされる予定です。
しかし、現状では2.7を使うことが多いと思います。2.x と 3.x では大きく変更になっている部分があり、周辺パッケージが動かない可能性があります。昨年のPythonアドベントカレンダーを参考にして下さい。
フレームワークや周辺技術が使用しているバージョンを選択する必要があります。
しかし、CentOS 5.xの標準で入っているPython は2.4です。逆に2.4では、動かないパッケージも増えつつありますので注意が必要です。
いまからはじめるのなら、Python3.4で良いと思います。
エディタは? 開発環境は?
エディタ論争が始まってしまうかとおもいきやPythonユーザでは好きなエディタを使えばいいじゃなかかという結論を聞くことが多いと思います。
もし普段から使っているというものが無ければ、PyCharmをお勧めします。(最近、コミュニティエディションが無料で公開されています)
Pythonはどんな分野に強いの?
Pythonには幅広い周辺パッケージがあり、様々な分野で使われています。
Webシステムやインストーラーなどに使われているのはよく聞くと思いますが、デスクトップアプリに採用されているケースや科学技術計算、統計・機械学習分野などへも用途は広がっています。
番外編
最後に、私が注目しているWeb外のPython関連ツールを紹介したいと思います。
NVDA
http://www.nvda.jp/
http://www.nvaccess.org/
Windows用スクリーンリーダー。Python採用されています。
こちらは開発者募集中です。興味の有る方はぜひとも。
なお、NVDAメイン開発者はオーストラリア在住の目の不自由なかたです。インデントによるブロックが目が不自由なプログラマにもわかりやすいと言うことで採用されたようです。
pandas
公式サイト : http://pandas.pydata.org/
既にこのアドベントカレンダーでも紹介されています。「Pandasを使って大阪名物たこやきのタコの大きさについて調査しました」
統計分野ではRで処理するというケースが多いようですが、このpandasを使うことで、Pythonで記述でき、Pythonであれば他の便利なパッケージとも組合せられるという大きなメリットもあり、ユーザが増えているようです。
久しぶりのブログ・エントリーとなり、とりとめのない話になりましたが、Python初学者の少しでも参考になればと思いエントリーとしました。
良いお年を。。