モンキーPython (Python3対応): 第1回 プログラミング初めの一歩 前編

この文書は、Linux magazine 2005年1月号〜3月号に掲載された連載の草稿を、(株)アスキーLinux magazine編集部の許可を得て公開するものです。校正前の原稿なので読みづらいところもあるかと思いますが、不明な点などありましたらコメントをお送りください。


この連載は、プログラムを作ったことがない人を対象に、簡単なプログラムが書けるようになるまで、プログラミングの基礎の基礎から解説します。Linuxのシステム設定プログラムなどにも使われているPython(パイソン)というプログラミング言語で、プログラミングの初歩から学んでいきましょう。

文:堀川 久 Text: HORIKAWA Hisashi

(2012.9) Python 2.7で動作することを確認。

今回の目次:

多くの人が日常的にコンピュータに触れています。しかし、プログラミングしようという人は、表計算ソフトでマクロを作ったりする場合を含めても、ごく僅かです。

プログラミングは、決して特別な技術ではありません。コツさえつかめば、誰でもできるようになります。

プログラミングができると、毎回手でしていたことを自動化できるようになります。例えば、ファイルとして保存されているデータをいろいろな方法で集計したり、加工したりできるようになります。いちいち手作業でデータを操作したりするのが面倒だと感じるなら、プログラミングを覚える価値があります。

プログラムをつくる

(2015.6.24 更新)

プログラムはどうやって作るのでしょうか。

プログラムを作るには、まず、設計を作ります。

プログラムの設計は、例えば、こういう入力があったらこのように計算する、このような操作があったら、画面にこれこれを表示する、このボタンが押されたら何か出力する、というような、コンピュータに対する指示をまとめたものです。

この設計を「コンパイラ」というプログラムに通すと、PC 上で実行できるプログラムができあがります。このとき、元の設計のことを「ソースコード」といいます.

ソースコードを読み込んで、その場で内容を解釈して実行するプログラムもあります。このプログラムのことを「インタプリタ」といいます (図2)。

図2 コンパイラとインタプリタ

インタプリタに渡すソースコードを「スクリプト」ということもあります。コンピュータに対する指示、という意味では同じものです。

プログラミングでは、ソースコードを書き、ファイルとして保存します。

01-01.py

Python
[RAW]
  1. a = 10 * 2
  2. print( "10 * 2 => ", a )

インタプリタで実行します。ソースコードの指示にしたがって、コンピュータが計算と出力をおこないます。

$ python3 01-01.py
10 * 2 => 20  

プログラム (のソースコード) を書くには、

  • 文法
  • 命令の単語(ボキャブラリ)
を覚えていかなければなりません。

計算のさせ方、どのような順序でソースコードを解釈するのか、など一定の文法があります。加えて、計算する命令、データファイルを開く命令などの, いろいろな決められた単語があります。

ただ、文法も, 命令の単語も、最初から一から十まで完全に覚えなくても大丈夫です。必要なときにマニュアルで調べることもできますし、使っているうちに覚えてきます。

プログラミングの学習に当たっては、ソースコードを書くつど, その場ですぐ実行できたほうが、試行錯誤しやすく、手軽です。この連載では、インタプリタを使い、コンパイラで実行形式に変換することはしません。

Pythonについて

プログラム (のソースコード) を書くための文法とボキャブラリを併せたものを「プログラミング言語」といいます。

プログラミング言語は一つだけではありません。世の中には星の数ほどプログラミング言語があります。これらは、目的 (製作したいプログラムの種類) によって得手不得手があるため、使い分けられています。例えば、Windows用ですが、HSP (HSPTV!) というゲーム作成のための言語は、ゲームを作るための便利なボキャブラリが揃っていて、威力を発揮します。

とはいうものの、作るプログラムごとに毎回別の言語を覚えるのは大変です。そのため日常的には、汎用的なプログラミング言語を使います。

この連載では、「Python(パイソン)」というプログラミング言語を使います。

Pythonの特徴、どのように使われているか、などを簡単に説明します。

■Pythonの特徴

Pythonは、1990年代初頭に登場した、比較的新しい汎用的なプログラミング言語です(新しいといっても、すでに10年以上になりますが)。

Pythonは、便利で直感的な文法は採り入れるが、複雑な文法の拡張は行わない方針で開発されています。そのため、シンプルで明確な文法であり、習得が容易です。他人が書いたプログラムであっても、かなり読みやくなっています。

プログラミング言語の優劣の基準の一つは、どのぐらいプログラムが簡潔に書けるか、です。同じことをするプログラムを2種類のプログラミング言語で書いてみます。これは、あらかじめ用意した1, 5, 10という数値を順番に表示するプログラムです。

C言語で書くと、次のようになります。

#include <stdio.h>
int main() {
    const int ary[] = {1, 5, 10, -1};
    int i;
    for (i = 0; ary[i] != -1; i++)
        printf("%d\n", ary[i]);
}

一方、Pythonで書くと次のようになります。

01-02.py

Python
[RAW]
  1. for elem in (1, 5, 10):
  2. print( elem )

実行結果は、いずれでも同じです。

1
5
10

このように、Pythonは非常に簡潔に書けます。読みやすさとのバランスが優れています。

Pythonには次のような特徴があります。

  • オープンソース (OSI Certified) である。オープンソースについては http://www.opensource.org/ を参照。
  • 多くの環境で動作する (Linux, Windows, MacOS, ...)
  • オブジェクト指向など現代的な各種機能
  • 豊富なライブラリ

特に、ライブラリの充実は重要で、標準ライブラリとして HTML解析、CGIライブラリ、eメール操作、XML操作などが添付されています。また、標準添付されない追加ライブラリについても、様々なものが開発されています。

ツールというものはある程度メジャーなものを使ったほうが便利なことが多いものです。プログラミング言語でも同じで、その使い手が多いと、インタプリタの改良が早く進み、追加ライブラリの開発も活発になり、より使いやすく、強力になっていきます。その点、Pythonはどうでしょうか。

The RedMonk Programming Language Rankings: January 2015 – tecosystems は、定期的に、プログラミングのランキングを出しています。

メジャーなプログラミング言語;

2015年1月 2014年6月
1. JavaScript ↑ 1. Java
2. Java ↓ 1. JavaScript
3. PHP 3. PHP
4. Python 4. Python
5. C# 5. C#

Python は上位で安定していて、十分メジャーです。別の観点で、いい salary の見込めるプログラミング言語ランキングでも、Python は上位です。

■Pythonで作られたもの

Pythonで書かれたソフトウェア (プログラム) には、次のようなものがあります。ほんの一例;

Mailman Mailman, the GNU Mailing List Manager
メーリングリスト管理プログラム
MoinMoin MoinMoinWiki - MoinMoin
Wikiプログラム

デスクトップ向けのソフトウェアからサーバ構築のものまで、多岐に亘るものがあります。そのほか、GIMPのプラグインなど、プログラムの拡張モジュールとしてもよく使われています。

Linuxでは、知らず知らずのうちにPythonで書かれたプログラムをよく使っています。Linuxディストリビューションのひとつ、Fedora Core (フェドーラコア) では、次のものがPythonで書かれています。

インストーラ
Anaconda Installer
各種ツール
system-config-printerコマンドなど
パッケージ更新プログラム
yum

Pythonは幅広く使われており、特にLinux使いにとっては、とても馴染み深いものです。

Pythonのインストール

大抵のLinuxディストリビューションでは、あらかじめPythonインタプリタがインストールされているので、自分でインストールする必要はありません。

例えば, Fedora 17 Linux には, バージョン2.7.3があらかじめインストールされています。2012年現在、バージョン2.7.xと3.2.xの二つがリリースされていますが、普通に使う分にはバージョン2.7.xがいいでしょう。

(2015.6.25) Fedora 22 には, Python バージョン3.4.2 とバージョン2.7.10 がインストールされています。バージョン2.7がバージョン2系列の最後のバージョンで、今後改良されることはありません。バージョン3.0は2008年にリリースされ、すでに成熟しています。今から選ぶなら、バージョン3.xでしょう。

Red Hat Enterprise Linux / CentOS / Fedoraでは, 次のようにすれば、インストールされているかどうかとインストールされているバージョンを確認できます。

$ rpm -q python
python-2.7.10-1.fc22.x86_64
$ rpm -q python3
python3-3.4.2-4.fc22.x86_64

もしインストールされていない場合は、使っているディストリビューションのサイトからダウンロードし、インストールしてください。

この連載では、ウィンドウを表示させたりするため、Tkinter というパッケージも必要です。インストールされているかどうかは、Python3 を起動し (後述: 対話的に使う)、「import tkinter」と入力することで確認できます。インストールされている場合は、画面2のように何も表示されません。インストールされていない場合は、画面3のようにエラーが表示されます。

画面2 Tkinterパッケージの確認
$ python3
Python 3.4.2 (default, Jan 12 2015, 12:13:20) 
[GCC 4.9.2 20150107 (Red Hat 4.9.2-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> 
  
画面3 Tkinterがインストールされていない場合
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'tkinter'
  

インストールされていないときは、rootユーザになり、次のようにしてインストールします。

$ su
# yum install python3-tkinter

なお、yumコマンドを使うときはインターネットに接続されている必要があります。

対話的に使う

コンソールで単に python3 コマンドを実行すると、対話モードで起動します。対話モードとは、1行1行ソースコードを打ち込み、そのつど実行されるモードです。エラーがある場合は、その場で指摘されます。ちょっとした動作確認や簡単な計算に便利です。

「>>>」がプロンプト(入力を促す文字)です。ここに直接ソースコードを入力していきます。Enterを打つと, すぐその結果が表示されます。試しに簡単な式を入力してみます(画面4)。

画面4 Pythonを対話的に使う
>>> 1 + 2            --- 計算式を入力
3                    --- 答が表示される
>>> 

対話モードから抜け、pythonを終了させるには、Ctrl-Dキーを打ちます。

テキストエディタや開発環境

対話モードは手軽ですが、その場限りでプログラムは消えてしまいます。何度も使用するプログラムを書くのには向いていません。通常は、ソースコード (スクリプト) をファイルに保存し、それをpythonコマンドで実行します。

スクリプトを書くには、テキストエディタまたは開発環境が必要です。

テキストエディタ;

  • gedit
  • KWrite
  • Emacs

開発環境;

最初は、テキストエディタでいいのでは、と思います。