Hatena::ブログ(Diary)

None is None is None このページをアンテナに追加 RSSフィード

2011-12-15

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

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


Q「RubyPythonどちらが初心者向けでしょうか?」

A「Pythonは日本語情報が少ないので、Rubyがおすすめです」


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

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

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

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

理系らしく結論を先に書きましょう。

公式サイトからダウンロードインストールしたら、間髪おかずにチュートリアルを読んで下さい。

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

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

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

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

やっぱり英語は必要

本格的なアプリを作る場合、WEBアプリならFlaskやDjangoGUIアプリなら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 Module of the Week
Python 標準ライブラリを短いサンプルを通して学ぶチュートリアルサイトです。
Python Pacage Index(PyPI)(英語)
PerlCPANRubyのRubyGemのようなもの。大量のサードパーティのモジュールは基本的にPyPIに登録されているので、検索すれば必要なものが見つかる(かもしれない)。
Pythonの定番モジュール集

クックブック

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

応用編

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

f:id:doloopwhile:20111222105350j:image:medium

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さんです。