Pythonについて

Pythonのことは検索すれば色々あるので気が済むまで調べていただきたいですが、私が感じてる特徴をザックリ書くとこんな感じ。

  1. いわゆるスクリプト言語
  2. 動的データ型
  3. ブロックをインデントで表現(カッコを使わない)ので見た目スッキリ
  4. なんか書き易い(見易い?3.のおかげか?)
  5. 標準ライブラリ&サードパーティーモジュール(パッケージ)が豊富

しっかりお勉強しなくても、ネットで検索すればある程度動くものは作れます。真面目に勉強しようかと思い、

Effective Python ―Pythonプログラムを改良する59項目

Effective Python ―Pythonプログラムを改良する59項目

 

これを読みかけてます。読むと、心なしか自分のコードがカッコ良くなった気がします。

個人的には、5.が一番気に入っていて、いわゆる車輪の再発名をしなくて良いです。「Pythonはデータ分析や、機械学習に向いている。」と言われていますが、多分5.のおかげが大きいのではないでしょうか。

Python(特に5.)の特徴を生かすために気を付けておいた方が良い点、その他の注意点を書きます。

 

英語

Pythonの情報は英語の記事の方が圧倒的に豊富です。日本ではRubyが人気でPythonを使う人が少なかったからだと思いますが、日本語の記事だけ見てPythonのことを調べても、結局英語の記事を読む羽目になります。

また、Pythonサードパーティモジュールを使用する場合は、パッケージ管理サイト PyPI - the Python Package Index : Python Package Index を読むことになります。Pythonだけではないですが、Pythonの場合は特に英語に慣れるべきです。

と書きつつ、私は英語が苦手なので、Google 翻訳 - Chrome ウェブストア これを使ってます。相変わらず英語はダメですが、機械翻訳した日本語に慣れてきました。そのせいか、先述したオライリーの直訳っぽい日本語もスラスラ読めます。

 

パッケージ管理

豊富なサードパーティーモジュール(パッケージ)群を管理するために、pipというものを使います。他にも色々あるみたいですが、まずはpipです。

pipの使い方とインストール - Python入門から応用までの学習サイト で分かり易く説明してくれてます。こちらのサイトは、pipだけでなくPython全般のことを初心者(かつWindowsユーザー)にとても親切に説明してくれてます。ありがたいです。

まずは "pip install -r requirements.txt" は使えるようにしましょう。もう少し凝りたい方は、Python アプリ依存パッケージ管理 ベストプラクティス集 - Qiita など参考にされると良いでしょう。

 

仮想環境

Pythonを始めた頃、勉強に使った色々なサイトに「仮想環境を作成しよう」と当然のように書いてあって「なんで?」と思いました。これも「パッケージを使い分けるのに便利だから」だと思います。

仮想環境を使用すると、PythonインストーディレクトリとPythonパッケージディレクトリを簡単に作成/切り替えできます。開発するアプリ毎に使用するPython(のバージョン)とパッケージをそれぞれ管理できるのです。

例えば、

アプリAでは、Python2.7でDjango1.11を使用したい。

アプリBでは、Python3.6でbottle0.12を使用したい。

場合でも、アプリAはPython2.7の仮想環境を参照し、アプリBはPython3.6の仮想環境を参照することが簡単にできるようになります。

ということで、仮想環境を使った方が便利です。仮想環境の作成/切り替えは、

Python/Djangoの開発環境構築 の際にcondaを使ってやってます。

もっと知りたい方は、

Pythonの仮想環境構築(2017年版) pyenvとpyenv-virtualenvとvirtualenvとvirtualenvwrapperとpyvenvとvenv - Qiita 

など参考にしてはいかがでしょうか?

 

 規約

当然ですが従わなくても動きます。が、新しいプログラム言語を始める際は、その言語の規約には目を通しておくべき。Javaの規約で書かれたPythonプラグラムを見たことがありますが、とても見にくかった…。

Pythonの規約は PEP8(日本語) です。

規約を守ってるかをチェックしたり、自動的に修正するツールもあります。

Python のコーディング規約 PEP8 に準拠する - Qiita

Eclipse+PyDevでPythonコーディング規約(PEP8)を準拠するための環境構築 - Qiita

使ってなかったので参考にしよう。

 

日本語(データ)の扱い

日本語データの取り扱いでハマることが何度かありました。3系では問題ないようですが、私がちゃんと使ったのは2系なのでその際の注意点を

特にハマったのはデータの文字コード変換です。機種依存文字、氏名でたまに使われる難しい方の漢字とかは標準モジュールでは変換できません。pykf 0.4 という拡張パッケージで変換できるのですが、これを発見するのとWindowsへのインストールに苦労しました。

この辺とか参考にしたような…

機種依存文字対策でpykfをインストールしてみた – BTY備忘録

それでもエラーが出て、これもインストールしたような…

Download Microsoft Visual C++ Compiler for Python 2.7 from Official Microsoft Download Center

人って嫌な記憶はなかったことになる仕組みになってるらしいので記憶があやふやで…。

 

Python Django の開発環境構築

まずはPython環境

Pythonの環境を初めて作ろうとググったら、2.x系 or 3.x系とか、仮想環境が○○とか、Pythonコミュニティ標準かAnacondaかとか…、いきなり迷う方もいると思います。

とにかく手軽に環境を作ってみて、解ってきたら後で最適な形に変更することにしましょう。まずはAnacondaを使うことをお勧めします。なぜAnacondaが便利か?とかは一旦置いといてインストールしましょう。

Anacondaのインストールと概要説明は、

Anaconda で Python 環境をインストールする - Qiita

が分かり易く、OSも3パターン(win/mac/Linux)対応で親切、コメントで「なぜAnacondaが便利か?」にも触れてる方がいて至れり尽くせりです。

私も参考にさせていただきました。

 

次はDjangoをインストー

となるところですが、上のPython環境の記事を最後まで読んだ方は、既にDjangoをインストールしています。読み飛ばした人は、もう一度最後まで読みましょう。

はい、Python/Djangoの環境が出来ました。

 

IDE / エディタ

結局は、使い慣れたのを使うのが一番効率が良いと思います。

が、感じたことを書いておくと、開発PCのスペックがそれなりならIDEが良いです。Pythonの特徴の一つに豊富なライブラリ群があり、これらを積極的に使用することで生産性が上がりますが、サードパーティライブラリには最低限の説明しかないものが多々あります。Python使ってるんだからソース読んでね。が常識なのかソースを読まないと使えない場合があります。

そんな時、IDEのデバック機能を使った方が効率的にソースが読めます。最近は、エディタでもデバック機能を拡張できるのがあるので、エディタの場合でも、デバックできるものをお勧めします。

 

お勧めのIDE/エディタ

Eclipse & PyDev

PCスペックまあまあで、OSがWinで、Python以外もやるし、無償だし、使い慣れてて学習コストがかからないいので、私はこれです。

PleiadesでUltimateかPythonを選んでEclipseインストールます。

Pythonはcondaで作った仮想環境を参照するよう設定してます。

PyCharm

Pythonはじめた頃にググったら、みなさんこれを勧めてました。有償だしPython以外に使えるか不明だったので使ってないです。

Visual Studio Code & Python拡張

PCスペックがイマイチの時にこれを使ってました。動作が軽いし、機能も充分で、感心した記憶があります。

 

Python DjangoでWebアプリをつくる

簡単なWebアプリはサクッと作れるようにしておきたい。

まずは書きたいことを並べてみて、内容を書きながら後々改善する。(予定)

目標記述レベル

何かしらWebアプリ開発経験があって、MVCフレームワークやO/Rマッパーはなんとなく知ってます。でもPython/Djangoやったことありません。ぐらいの人に、「まずはこれ読んどいて。」と言いたい。  

概要

  1. Python Django の開発環境構築 

  2. Pythonについて

  3. Djnagoについて
  4. DBについて
  5. Django管理画面について
  6. Python Django以外(クライアントサイド)の構成
  7. 認証
  8. ログ
  9. 一覧検索画面
  10. 更新系画面
  11. ORM
  12. ファイルダウンロード
  13. ファイルアップロード
  14. バッチ

はじめに

システムエンジニアです。

転職をきっかけにコードを書く時間が増えて、エンジニア魂が再燃したのか?

色々記録しておきたいと感じブログを書きます。

内容は、おもにシステム開発の技術的なこと、ときには考えごと、感じたことです。

方針

  • 技術的な内容そのものは技術系のブログに書き、ここは目次のように。
  • 「試してみた」的な内容ではなく、ある程度実用的にしたい。
  • なので、一度書いた内容も改善する。(予定)