Pythonの基礎

第
3
章
Python の基礎
この章では Python の基礎について説明します。Rapsberry Pi では、さまざまなプログラ
ム言語を使うことができますが、その中でも習得しやすく便利な言語として Python はオスス
メです。ここでは Python のプログラムをつくりながら、プログラミングの基本を身につけま
しょう。
3.1
Python ってなに?
Python(パイソン)は 1990 年にリリース(公開)されたプログラミング言語で、オランダのグイド・
ヴァンロッサムという人が開発しました。プログラミング言語としては、もっとも古いとされている
Fortran(フォートラン)のリリースが 1954 年、あるいは現在、幅広い分野で使われている C 言語のリ
リースが 1972 年であることを考えると、比較的新しい言語といえます。
(1)Python の特徴
Python は、気軽に学ぶことができる一方、商業システムを含むさまざまな分野に活用できるため、
近年人気が高まっています。Python には次のような特徴があります。
●●
仮想マシンによる実行
たとえば C 言語では、書いたプログラムを「コンパイル」という処理をして、コンピュータが実行で
きる「機械語」に変換してから、その「機械語」のファイルを実行するという手順をとります。一
方 Pythonで書いたプログラムは、コンパイルを行うことなく、いきなりプログラムを実行できます。
Pythonでは、プログラムのファイルを通常「ファイル名 .py 」という形式で保存しますが、実行
時にこのファイルがバイトコードというファイルに変換され、これが Python の仮想マシン [1]「PVM
(Python Virtual Machine)」に引き継がれて実行されます。これらの処理は、Python 内部で自
動的に行われるので、外部からは見えません。OS や環境ごとに、それぞれに適した仮想マシンが用
意されているおかげで、特定のプラットフォーム(Raspberry Pi、Windows、Macなど)で作成した
プログラムが、別のプラットフォームでも同じように動作するのです。
Python のバイトコードは、「Python のプログラム」とコンピュータが直接実行できる「機械語」の中
間となるコードで、機械語のようにコンピュータを動作させることができ、さらに比較的高速に実行で
きます。そのため、コンパイルの手間を省きつつ、一定の処理速度を確保しています。
[1] 仮想マシンとは、あるコンピュータ上で別のコンピュータのようにふるまうソフトウェアのことをいいます。プログラミングにお
ける仮想マシンは、プラットフォームごとの違いを吸収し、プログラムをそのプラットフォームで実行できるようにする働きをし
ます。
80
3.1 Python ってなに?
●●
豊富なライブラリ
たいていのプログラミング言語では、よく使われる処理は、すでにひとまとまりのプログラムとして用意
されていて、自分がつくるプログラムで自由に使えるようになっています。この汎用的なプログラムの
ことを、ライブラリといいます。
Python にも豊富なライブラリが用意されており、
これらは異なるプラットフォームでも同じように動作し
ます(ただし一部のライブラリは、特定のプラットフォーム上でしか動作しません。たとえば、第 4 章で
紹介するGPIO やカメラ制御のためのライブラリは、Raspberry Pi の端子を使うので、Raspberry
3
Pi 上でなければ動作しません)
。プログラミングをするときは、これらのライブラリをいかに使いこなす
かが大事なポイントとなります。
Python
図 3.1.1 に、Python のライブラリ群を示します。ライブラリの数は膨大ですが、本書で紹介するの
はほんの一部のみです。プログラミングをしていて「こんな処理が必要だけど、どう書けばいいかな」
P
P
P
と思ったら、まずはPython のサイト(http://www.python.jp/)で、ライブラリ紹介のページにアク
セスしてください(図 3.1.2)
。
図 3.1.1 Python のライブラリ
Python 標準ライブラリ
そのまま使える
組み込み型
GUI インターフェイス
(Tkinter)
組み込み関数
時刻データへのサービスとアクセス
(time)
組み込み定数
組み込み例外
インストールが必要なライブラリ
(第 4 章で説明)
I2C
(smbus)
SPI
(spidev)
コンテナデータ型(第 4 章で説明)
(collections)
GPIO 制御の拡張
(RPIO)
GPIO の制御(第 4 章で説明)※
(RPi.GPIO)
カメラの制御(第 4 章で説明)※
(picamera)
インポートして使う
その他の膨大な数のライブラリ
テキスト処理サービス バイナリデータ処理 いろいろなデータ型
数値と数学モジュール 関数型プログラミング用モジュール
ファイルとディレクトリへのアクセス データの永続化 データ圧縮とアーカイブ ファイルフォーマット 暗号関連 汎用オペレーティングサービス
並行実行 プロセス間通信とネットワーク インターネット上のデータ操作
構造化マークアップツール インターネットプロトコルとサポート マルチメディアサービス
言語・地域対応 プログラムのフレームワーク 開発ツール デバッグとプロファイル Python ランタイムサービス カスタム Python インタプリタ モジュールのインポート Python 言語サービス
※Raspbian にインストールされている Raspberry Pi 特有のライブラリ
81
図 3.1.2 Python のサイト
(http://www.python.jp/)
日本語ドキュメン
トをクリック
ライブラリリファレ
ンスをクリック
●●
オブジェクト指向言語でありながら、手続き型でも書ける
オブジェクト指向とは、プログラムのつくり方の一種であり、まとまった機能のプログラムとデータをオ
ブジェクト(=モノ)という単位でくくり、複数のオブジェクト同士がメッセージを交わして連携すること
で、全体の機能を実現させるという考え方に基づいています。オブジェクト指向言語とは、このような
方法でプログラミングできるようにつくられたプログラム言語のことであり、通常はその言語に用意さ
れているライブラリも、オブジェクト指向に基づいて書かれています。
Pythonはオブジェクト指向言語なので、当然オブジェクト指向でプログラムを書くことも可能ですが、
どんなときでもオブジェクト指向を使うのがベストとは限りません。オブジェクト単位でプログラムを書く
「オブジェクト指向」に対し、処理の手順どおりにプログラムを書くスタイルを「手続き型」といいます
が、本書で紹介するプログラムは、ほとんどが小さなサンプルプログラムなので、この「手続き型」の
スタイルを採っています。このように、プログラムの規模や目的に合わせて、柔軟なスタイルを選択で
きる点もPython の特徴といえます。
82