基本情報ではじめる Python (9) import 文とライブラリの活用


2021-12-09 更新

error

この記事は基本情報技術者試験の旧制度( 2022 年以前)の記事です。
この記事の題材となっている「午後問題」は現在の試験制度では出題されません。 ご注意くださいませ。

この連載では、プログラミングの入門者を対象として、基本情報技術者試験の出題範囲にテーマを絞って、 Python の言語構文とプログラムの読み方を説明します。

今回のテーマは、 import 文とライブラリの活用です。このテーマをマスターすれば、試験の出題範囲をほぼ網羅できたことになります。

  • (10)ライブラリの活用

     問題解決のために適した代表的な標準ライブラリ又は外部ライブラリを利用し,プログラムを作成する。

    修得項目

    import 文,モジュール,パッケージ など

出典基本情報技術者試験シラバス Ver.7.2 より

モジュールと import 文

Python には、様々なプログラムから利用できる関数やクラスが数多く用意されていて、それらを「ライブラリ」と呼びます。

それらの中で、一般的な Python の開発環境をインストールすれば、すぐに利用できるものを「標準ライブラリ」と呼び、必要に応じて後から追加して利用するものを「外部ライブラリ」と呼びます。

ライブラリの実体は、関数やクラスなどが記述されたファイルです。このようなファイルを「モジュール」と呼びます。

 

前回(第 8 回)で説明した「組み込み関数」は、何の設定もせずに利用できましたが、標準ライブラリや外部ライブラリを利用するには、 import 文を使ってモジュールをインポートする(モジュールを利用することを設定する)必要があります。

標準ライブラリである math モジュールを例にして、 import 文の使い方を説明しましょう。 math モジュールは、数学関連の様々な関数を提供します。ここでは、引数の平方根を返す sqrt 関数を使います。

 

math モジュールを利用するには、プログラムの先頭で import math を実行します。これによって、 math.関数名(引数) という構文で、 math モジュールの関数を呼び出せます。

図 1 では、 import math を実行してから、 math.sqrt(2) を呼び出して、 2 の平方根を求めています。

この記事では、 Python の対話モードでプログラムを実行します。説明のために、プログラムの中にコメントを記入した部分がありますが、実際にプログラムを作って動作を確認するときには、これらのコメントは不要です。

infoお手元に Python の環境がない場合、ブラウザからオンラインで実行できる「 JupyterLab 」で、文中のコードをお試しください。 play_arrow ボタンを押すか [ Shift + Enter ] で実行できます
code図 1  import 文の使い方
>>> import math     # mathモジュールをインポートする
>>> math.sqrt(2)  	# mathモジュールのsqrt関数を呼び出す
1.4142135623730951  # 関数の戻り値が表示される

import 文のバリエーション

import 文の使い方には、いくつかのバリエーションがあります。先ほどの例では、 import math で math モジュールをインポートして、 math.sqrt(2) という構文で sqrt 関数を呼び出しました。

もしも、関数名の前に「 math 」を付けることを面倒だと感じたら、

from math import sqrt

というバリエーションを使ってください。これは、

math モジュールから sqrt をインポートする

という意味です。これによって、関数名の前に「 math 」を付けずに sqrt(2) という構文で sqrt 関数を呼び出せます。

図 2 に例を示します。

info編集部注: スマートフォンでご覧の際は、プログラムは横スクロールすると全文をご覧になれます
code図 2  import 文の使い方のバリエーション(その 1 )
>>> from math import sqrt # mathモジュールからsqrt関数をインポートする
>>> sqrt(2)               # sqrt関数を呼び出す
1.4142135623730951        # 関数の戻り値が表示される

モジュールの中には、「 matplotlib.pyplot 」のように長い名前になっているものもあります。もしも、長いモジュール名を使うことを面倒だと感じたら、

import matplotlib.pyplot as plt

というバリエーションを使ってください。これは、

matplotlib.pyplot モジュールをインポートして plt という別名を付ける

という意味です。これによって、 matplotlib.pyplot という長いモジュール名を、 plt という短い別名で使えるようになります。プログラムの例は、この記事の最後に示します。

パッケージ

ここで、再び「 matplotlib.pyplot 」というモジュール名に注目してください。

「 matplotlib 」と「 pyplot 」が、ドット( . )でつながれています。これは、

matplotlib パッケージの pyplot モジュール

という意味です。「パッケージ」とは、複数のモジュールをまとめたものです。 Windows では、パッケージは、複数のファイル(モジュール)を格納したディレクトリです。

ライブラリの中には、パッケージの形で提供されるものもあります。これは、複数のモジュールを、まとめて提供するということです。

matplotlib パッケージは、グラフの描画に関する複数のモジュールを、まとめて提供します。図 3 に示したように、 matplotlib というディレクトリの中に、 pyplot.py, quiver.py, rcsetup.py など、複数のファイルがあるのです(それぞれのモジュールは、拡張子が .py となったファイルですが、インポートするときには、拡張子を省略します)。

図 3  Windows では、パッケージはディレクトリであり、モジュールはファイルである

パッケージの中にあるモジュールをインポートするときには、 matplotlib.pyplot のように「パッケージ名.モジュール名」という構文でモジュールを指定します。

matplotlib.pyplot を利用したサンプルプログラム

基本情報技術者試験のシラバスには、標準ライブラリや外部ライブラリの具体的な名前が明記されていません。したがって、何らかのライブラリを利用したプログラムが出題される場合には、モジュールの機能の説明が示されるはずです。

情報処理推進機構 ( IPA ) が公開している Python のサンプル問題(現時点で、公式に公開されているのは、このサンプル問題だけです)では、 matplotlib.pyplot モジュールを利用したプログラムが出題されています。

モジュールの機能は、図 4 に示したようにコメントとして示されています。

code図 4  サンプル問題では、ライブラリの機能をコメントで示している
import matplotlib.pyplot as plt  # グラフ描画の外部ライブラリ
 :
plt.xlim(-320, 320)  # x軸の表示範囲を設定
plt.ylim(-240, 240)  # y軸の表示範囲を設定
 :
# (x1, y1)と(x2, y2)を結ぶ線分を描画
plt.plot([x1, x2], [y1, y2], color='black', linewidth=2)
 :
# 描画結果を表示
plt.show()
IPA が公開した 基本情報技術者試験(FE)午後試験 Python のサンプル問題picture_as_pdfより

実際に、 matplotlib.pyplot モジュールを使ってみましょう。

図 5 では、

(-300, -200),
(0, 200),
(300, -200),
(-300, -200),

という 4 つの点を結んだ線分で、三角形を描画しています(ここでは、サンプル問題のプログラムとは違うコメントを記入しています)。

code図 5  atplotlib.pyplot モジュールを利用したプログラム
# matplotlib.pyplotをインポートしてpltという別名をつける
import matplotlib.pyplot as plt

# グラフのx軸とy軸の表示範囲を設定する
plt.xlim(-320, 320)
plt.ylim(-240, 240)

# x座標のリストとy座標のリストの点を結ぶ線分を描画する(画面には表示されない)
plt.plot([-300, 0, 300, -300], [-200, 200, -200, -200], color='black', linewidth=2)

# 描画の内容を画面に表示する
plt.show()

plt.plot の 1 つ目の引数には、点の x 座標のリストを指定し、 2 つ目の引数には点の y 座標のリストを指定します。

図 5 のプログラムの実行結果の例を図 6 に示します。


matplotlib.pyplot モジュールを利用すると、このように短いプログラムでビジュアルにグラフの描画ができます。実際の試験問題でも、 matplotlib.pyplot モジュールが使われる可能性は、大いにあるでしょう。

第 1 回から第 9 回(今回)までの連載で、基本情報技術者試験の Python の出題範囲をほぼ網羅しました。

次回は、総仕上げとして、試験問題レベルの Python のプログラムを読むことにチャレンジします。もしも、理解が不十分なテーマがあれば、これまでの記事を読み直して復習しておいてください。

それでは、またお会いしましょう!

 

label 関連タグ
科目A試験は、
免除できます。
独習ゼミで科目A試験を1年間免除して、科目B試験だけに集中しましょう。
免除試験を受けた 74.9% の方が、
科目A免除資格を得ています。
科目A免除試験 最大 2 回の
受験チャンス !
info_outline
科目A免除試験 最大 2 回の
受験チャンス !
詳しく見てみるplay_circle_filled
label これまでの『基本情報ではじめるPython』の連載一覧 label 著者