Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 29 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save reiyw/9155edf600e85417e82d2e4e4bc9e637 to your computer and use it in GitHub Desktop.
Save reiyw/9155edf600e85417e82d2e4e4bc9e637 to your computer and use it in GitHub Desktop.

言語処理100本ノックを解き始める前に

黒い画面でこの先生きのこるために

学部の授業でターミナルを触ったことはあるけどよく分からないという人が,言語処理100本ノックを進めるにあたって黒い画面で躓かないレベルにまで到達するための資料:

書籍で体系的に学ぶのであれば,大角『新しいLinuxの教科書』が良いらしい.

Python の学び方

学部で C や Java を学んだのであれば,プログラミングの基礎はある程度身に付いていると思われるので,体系的に学ぶよりは,いわゆるチートシートやクイックリファレンス的な資料を見ながらとにかく書いてみるのが良い:

あるいは,オンラインコースウェア等で基礎をさっと流すのもアリ:

基礎的な文法を一通り理解したら,この先 Python をどこまで詳しくなってどういうコードを書きたいかによって学習プランが変わる.

Python もプログラミングも詳しいことは知らなくていいけど,アイデアの実装は手早くできるようになりたい

Python はあらゆるプログラミング言語の中でもサードパーティ製のライブラリが非常に豊富なので,既存のライブラリを組み合わせるだけで(自分はほとんどコードを書かなくても)アイデアを実現できることが多い.まずは有名どころのライブラリを存在だけでも把握しておくだけで,実装のための選択肢は勿論,アイデアにも幅が出てくる.

基本的にここに載せてるようなライブラリを使いながら,Python の使い方で詰まったら周りの詳しい人に聞くか,適宜ググるかして対処しましょう.

Python らしい "良い" コードを書けるようになりたい

一般的な "良い" コードを書くための啓蒙記事や書籍は山ほどあるが,一つだけ挙げるとすれば『リーダブルコード』はやはり外せない.分かりやすい変数名の付け方,ロジックの単純化など,Python に限らない一般的なコーディングにおける原則を豊富な例と共に紹介している.

ここから出発し,徐々に Python らしさを意識していこう.他の言語の例に漏れず,Python にもコーディング規約というものがある.最も広く使われている規約は Python 公式が提案する PEP 8 である.主に syntax レベルでの良い書き方を提示している.どんなプロジェクトであれ,この規約から大きく逸脱することはまず無く,PEP 8 をベースに,プロジェクトに合わせたいくつかの改変がなされる程度である(例:Google Python Style Guide).

Python らしい syntax に馴染んできたら,次は Python 特有の機能について深く知ろう.オススメの勉強法は Python 標準ライブラリリファレンスの全てのページに目を通すことだが,一部の人以外には多少無茶な話だと思うので,Python のエッセンスが詰まった書籍を紹介しておく:

ここに挙げたような書籍を読み込み,実際のコードに落とし込む訓練を繰り返し積んでいくと良い.

内部仕様まで詳しく知りたい

と思う人は僕よりできる可能性が高いので特にアドバイスは無いが,Python 標準ライブラリリファレンス言語リファレンスCPython(Python の C 言語実装)を深掘りしていけばいいんじゃないですかね....

どうしても体系的に学びたい

と思う人も一定数いるのでオススメ書籍及び Web ページを載せておく.一通り眺めてみて自分にあっていると思うもので進めていくと良いかもしれない.

その他日本語記事

Python 以外で学んでおくべき技術

Git

言わずもがな.

科学技術計算周辺のライブラリ群

敢えて Python 以外のセクションに配置しているのは,これらのライブラリを Python と同じ感覚で扱うと痛い目を見ることが多いからである.

Jupyter notebook

Jupyter notebook は,コード断片を対話的に実行しながら,文書の形にまとめ上げていくことができるツールである.2017年現在,Python で機械学習やデータ分析に取り組む場合には必須のツールと言っても過言ではない.Jupyter notebook の真の実力は,以下に述べるライブラリ群と組み合わせた時に発揮される.

NumPy

Python で科学計算をするための全ての基盤となるライブラリ.具体的には,高速な配列処理能力を提供する.

pandas

NumPy の上に設計されたライブラリで,より高レベルなデータ構造と関数を提供する.pandas と Jupyter notebook の組み合わせが極めて強力で,データの読み込み,加工,高度な計算,可視化まで,notebook 上で対話的かつシームレスに実行できてしまう.

  • 『Pythonによるデータ分析入門』
    • pandas 開発者による NumPy, pandas, matplotlib, SciPy へのイントロダクション
    • コンテンツの大半は pandas の基礎の説明に割かれている

matplotlib

Jupyter notebook 上での可視化のための低レベルな API を提供する.ほとんどの用途では pandas や他の高レベルライブラリで事足りるが,図の細かい調整のために使うことがあるため,基礎を把握しておく必要はある.

SciPy

NumPy の上に構築された,科学計算のための高レベルなパッケージ群.よくテストされており,内部で NumPy を効果的に利用しているため計算速度にも信頼を置ける.

@eumesy
Copy link

eumesy commented Feb 14, 2017

学部で C や Java を学んだのであれば,プログラミングの基礎はある程度身に付いていると思われるので,体系的に学ぶよりは,いわゆるチートシートやクイックリファレンス的な資料を見ながらとにかく書いてみるのが良い.

ドットインストール、同じニーズで昔やって結構よかったです。本当にすぐ終わるし&日本語。
いまは Python 3 版も出ている模様:
http://dotinstall.com/lessons/basic_python_v3

@eumesy
Copy link

eumesy commented Mar 3, 2017

『リーダブルコード』に追加で:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment