Pythonを始める人への日本語情報集

@mopemopeさんからバトンを渡されました、2011 Pythonアドベントカレンダー(Python3) 16日目担当のおもけん(@doloopwhile)です。


Q「RubyPythonどちらが初心者向けでしょうか?」
A「Pythonは日本語情報が少ないので、Rubyがおすすめです」


質問掲示板などで、しばしば見かけるやり取りです。しかし、本当にPythonは日本語情報が少ないのでしょうか?

確かに、かつてはRubyの情報量の方が圧倒的だったでしょう。しかし、現在ではPythonも日本で広く使われ、Pythonプログラマーのブログも多数あります。少なくとも初心者がPythonを始めるのに情報不足ということはありません。

そこで、明日のPythonプログラマーのため、日本語情報を列挙しておきます。ワリと無難というか、常識的な資料ばかりです。

結局、何を読めばいいの?5つの日本語情報

理系らしく結論を先に書きましょう。
公式サイトからダウンロード&インストールしたら、間髪おかずにチュートリアルを読んで下さい。

次に標準ライブラリにどんなライブラリがあるか、大まかに目を通しておきます。

標準ライブラリは全てをマスターする必要はありません。自分のニーズに応じてチェックしておきましょう。

そしてこの2冊を読めば、『初心者』は卒業と言っていいでしょう。

Python クックブック 第2版

Python クックブック 第2版


エキスパートPythonプログラミング

エキスパートPythonプログラミング

ここまでは日本語で学べます。

やっぱり英語は必要

本格的なアプリを作る場合、WEBアプリならFlaskやDjango、GUIのアプリならPyQt4やwxPythonといった、サードパーティライブラリを習得していく必要があります。残念ながら、ほとんどの場合ドキュメントは英語です。

ただし、英語のドキュメントと言っても、使われるのは中学校レベルの英語です。

また、サンプルコードはPythonで書いてあり、5つの日本語情報で鍛えた基礎力があれば必ず理解できるはずです。

まぁ、なんとかなるでしょう!

Pythonってバージョン2.x系と3.x系で違うらしいけど?

Python 3 のアドベントカレンダーなので、それについても。

互換性が無いと言われますが、2.xも3.xもPythonPythonです
実際、互換性の問題になるような違いは以下の程度しかなく、2.xと3.xを両方使いこなすのは簡単です。

  • print文がprint関数になった
  • strが廃止され、代わりにunicodeがstrという名前になった
  • bytesとbytearrayが追加された
  • 辞書の .keys() .values() .items() が廃止され、代わりに.iterkeys() .itervalues() .iteritems()が, .keys() .values() .items() という名前になった
  • 暗黙の相対importができなくなった
  • ライブラリ名が一部変更された(ConfigParser -> configparser等)
  • C言語APIが変更された(これは初心者にはあまり関係ない)

もっとも、3年前にPython3.0が登場した頃は、3.x対応のライブラリがまだ少なかったため、初心者にはおすすめできないという意見もありました。(参考: Python 3.0がここ数年は初心者に非推奨なたった一つの理由)しかし、現在では主要なライブラリは対応してきているようです。

ただ、現時点で公式ドキュメントの日本語訳はまだ最新でも2.6ですし、amazon:Pythonクックブックも2.5までしか対応していません。そのため、まずは2.xで始めてある程度まで進んだら3.xとの違いを覚える、というステップが良いでしょう。

具体的にどんな違いがあるのか、当アドベントカレンダー参加記事を含む以下のページをごらんください

チュートリアル・入門

公式チュートリアル
オーソドックスかつ十分な量
Lisp プログラマのための Python 入門
あなたがS式とマクロを深く愛しているなら、まずこれを。
初めてのPython
超分厚いが超親切

初めてのPython 第3版

初めてのPython 第3版

常識的な厚さの入門書はこちら

みんなのPython 改訂版

みんなのPython 改訂版

Python入門―2&3対応

Python入門―2&3対応

実践Python~文字列操作からWebアプリケーション開発まで

実践Python~文字列操作からWebアプリケーション開発まで

ライブラリ

公式ライブラリリファレンス
とりあえずどんなモジュールがあるかだけ、ひと通り眺めておきましょう。
Python Module of the Week
Python 標準ライブラリを短いサンプルを通して学ぶチュートリアルサイトです。
[http
//pypi.python.org/pypi:title=Python Pacage Index(PyPI)](英語):PerlCPANRubyのRubyGemのようなもの。大量のサードパーティのモジュールは基本的にPyPIに登録されているので、検索すれば必要なものが見つかる(かもしれない)。
Pythonの定番モジュール集

クックブック

[http
//code.activestate.com/recipes/langs/python/:title=Popular Python recipes](英語):Pythonクックブックのネタ元になったサイト。 現在でもレシピが追加され続けています。
Pythonによるデザインパターン
RubyによるデザインパターンPythonでやってみようという記事。手前味噌。
PythonRecipe
RubyレシピブックをPythonでやってみようというサイト。

応用編

「みんなのPython Webアプリ編」のPDFが無料公開中
入門書「みんなのPython」の応用編。Webフレームワークを再発明しながら、Webアプリの仕組みを学びます。元々は紙の書籍でしたが、PDF版が無料で公開されています。(2011/12/22追記)

PythonでWebアプリ開発入門のススメ Flask/MongoDB
WSGIとPythonでスマートなWebアプリケーション開発を
web.py 0.2 チュートリアル
PyQtではじめるGUIプログラミング
入門自然言語処理
自然言語処理の本ですが、言語はPythonを使っています。

入門 自然言語処理

入門 自然言語処理

(2011/12/22追記)

その他

Python日本語メーリングリスト
Pythonでわからない事があったら、ここにメールを。先輩たちがやさしく教えてくれるでしょう。
今すぐフォローすべきPython界のスーパーエンジニア
フォローしましょう
The History of Python.jp
Pythonがどのように開発されてきたか、どうしてこういう仕様になっているのかを、Guido氏を始めとする開発者が語るブログ。即役立つものではありませんが、良いソフトウェアとは何か?という哲学を学ぶ事ができるでしょう。
Python Insider
Python開発者へのインタビューや、新バージョンについてのニュースについてのブログです。

あとがき

5+nのnの部分が大きいのは仕様です。

明日のアドベントカレンダーは@ymotongpooさんです。