■サンプルファイルのダウンロードについて
本書掲載のサンプルファイルは、一部を除いてインターネット上のダウンロードサービスからダウンロードすることができます。詳しい手順については、本書の巻末にある袋とじの内容をご覧ください。
なお、ダウンロードサービスのご利用にはユーザー登録と袋とじ内に記されている番号が必要です。そのため、本書を中古書店から購入されたり、他者から貸与、譲渡された場合にはサービスをご利用いただけないことがあります。あらかじめご承知おきください。

・本書の内容についてのご意見、ご質問は、お名前、ご連絡先を明記のうえ、小社出版部宛文書（郵送または E-mail）でお送りください。
・電話によるお問い合わせはお受けできません。
・本書の解説範囲を越える内容のご質問や、本書の内容と無関係なご質問にはお答えできません。
・匿名のフリーメールアドレスからのお問い合わせには返信しかねます。
本書で取り上げられているシステム名／製品名は、一般に開発各社の登録商標／商品名です。本書では、™ および ® マークは明記していません。本書に掲載されている団体／商品に対して、その商標権を侵害する意図は一切ありません。本書で紹介している URL や各サイトの内容は変更される場合があります。

はじめにOpenCV（Open Source Computer Vision Library）は、膨大な関数を用意した画像処理ライブラリ集です。一般的な二次元の画像処理、ヒストグラム処理、テンプレートマッチング、オ
プティカルフローおよびオブジェクト認識など、多様なアプリケーションを開発できる関数群を用意しています。また、様々な技術の発展もあり、QR コードの認識や Deep Learning（Deep
Neural Network）によるオブジェクト認識などのモジュールも OpenCV 4 で追加されています。
OpenCV を利用すると、数行のコードを記述するだけで簡単な画像処理プログラムを開発できます。このような環境は、単に OpenCV だけがもたらしてくれた訳ではなく、ハードウェア
やオペレーティングシステムの進歩と相まって提供されています。
OpenCV は当初、
C/C++ 言語用に用意されていました。しかし、今では Java や Python といった言語もサポートしています。OS についても、Windows、Linux、macOS、Android、iOS に対応しており、様々な環境で利用できます。本書は、OpenCV が用意している Python 用のライブラリを使用し、Python から OpenCV を利用する方法を紹介します。Python については、
ある程度の知識があることを前提としています。もし、Python をまったく学習していない場
合、先に Python の入門書を読むことを勧めます。
本書では、単純な画像処理のプログラムの他に、OpenCV での画像処理を 1 つの機能として実装した Web アプリケーションや、Deep Neural Network を用いたオブジェクト認識を実行するプログラムなども開発します。Web アプリケーションや Deep Neural Network の知識が無くても開発できるように解説をしていますが、それらの知識があればより理解が深まるでしょう。
本書は技術書に分類される書籍です。さらに細かく分類すると、専門的な知識が身に付いていない方向けの入門書と言えます。入門書には多くの役割がありますが、個人的に重要な役割
は、●環境の導入を分かりやすく解説すること●

技術の魅力を実感させることの二点だと考えています。

iii

本書は、Anaconda のインストールによる Python での開発環境の実装方法と、Anaconda への OpenCV のインストール方法の解説を掲載しているため、環境の導入は問題なく行えます。
OpenCV の基本的な使い方から Deep Neural Network を用いたオブジェクト認識、Web ア
プリケーションの開発などを解説しているため、技術の魅力を多少ではありながら実感させることができると考えています。
本書に刺激を受けて OpenCV の道を邁進する読者が現れることを期待しています。

対象読者●

Python から OpenCV 4.x、OpenCV 3.x を使用したい人●

画像処理・動画処理プログラミング入門者●

Python と OpenCV の概要を知りたい人●

Flask を使用した Web アプリケーション作成の概要を知りたい方

謝辞
出版にあたり、お世話になった株式会社カットシステムの石塚勝敏氏に深く感謝いたします。
2021 年初秋 北山直洋

iv

参考文献、参考サイト、参考資料
1.

OpenCV ドキュメント（http://docs.opencv.org/）

2.

NumPy ドキュメント（http://www.numpy.org/）

3.

Matplotlib ドキュメント（https://matplotlib.org/stable/index.html）

4.

Flask ドキュメント（https://flask.palletsprojects.com/en/2.0.x/、

		

https://msiz07-flask-docs-ja.readthedocs.io/ja/latest/index.html）

5.

Anaconda インストーラのダウンロードページなど（https://www.anaconda.com/）

6.

Anaconda パッケージなど（https://anaconda.org/）

7.

OpenCV ダウンロードファイルに含まれる大量のサンプルやドキュメントなど

8.

本田崇智（2018）「ゼロから Flask がよくわかる本 : Python で作る Web アプリケーショ
ン開発入門」Kindle 版

本書の使用にあたって
開発環境および実行環境の説明を行います。

■

プラットフォーム
OpenCV はマルチプラットフォームをサポートしています。今回は、Windows を開発・実行環境とします。

■

Windows バージョン
Windows バージョンへの依存は特にありませんが、開発や動作チェックを行ったシステム

は主に Windows 10 です。

■

Linux 環境
本書の末尾に付録として、Linux 環境でのプログラム実行方法とインストール方法を解説し

ています。

■

OpenCV のバージョン
OpenCV 4.5.2 を使用しました。

v

■Anaconda と Python のバージョン
Anaconda 2021.05、Python 3.8 を使用しました。

■

Flask のバージョン
Flask 2.0.1 を使用しました。

■

Spyder のバージョン
Spyder 5.0.0 を使用しました。

■

Visual Studio Code のバージョン
Visual Studio Code 1.56.2 を使用しました。

■

例外処理
関数の引数に間違った値を指定するなど、プログラムに誤りがあると、プログラムが異常終了することがあります。より安全なプログラムとする場合は、自身で異常処理に対応した機構を組み込んでください。また、異常処理への対応を簡略化した理由は、プログラムをシンプルにするためです。

■

ソースコードの文字コード
ソースコードの文字コードは UTF-8 を採用します。

■

ソースコードの 1 文が長い場合の改行
ソースコードで 1 文が長い場合は、文の途中で改行しています。なお、インデントを揃えているため、1 文であるのか、複数の文であるか分かるようにしています。

■

URL
URL の記載がありますが、執筆時点のものであり、変更される可能性があります。リンク先が存在しない場合、キーワードなどから検索してください。

■

関数の説明
OpenCV の関数は基本的に cv2.imread のように「cv2.」の後に関数名が続く形となります。

しかし、OpenCV の公式のドキュメントでは、cv.imread のように「cv.」の後に関数名が続く

vi

形で記述されています。このため、本書では、「cv.」と「cv2.」が混在しています。実際のコードを記述する際は「cv2.」と読み替えてください。

用語
用語の使用に関して説明を行います。

■

ディレクトリとフォルダ
基本的に「フォルダ」をメインで使用します。
「フォルダー」と表記されることも多いですが、最後の「ー」を使用せず「フォルダ」と表記します。

■

画像と配列
画像を保持する場合、NumPy などを使用します。これらは基本的に配列を管理します。このため、画像を配列と表現する場合と、その逆の場合もあります。ただし、これらは同じものを指します。

■

ソースリストとソースコード
基本的に同じものを指しますが、ソースリストと表現する場合ソース全体を、ソースコードと表現する場合、ソースの一部を指す場合が多いです。

■

オブジェクト
インスタンスと表現した方が良い場合でも、オブジェクトと表現している場合があります。

両方を、厳密に使い分けていませんので、文脈から判断してください。あるいは、オブジェク
トと表現した場合、物体を指す場合もありますので文脈から判断してください。

■

映像とフレーム
カメラから取得した画像を映像と表現する場合とフレームと表現する場合が混在しますが、同じものを指します。これらは文脈から判断してください。

■

モジュールとパッケージ
モジュールとパッケージを混在して使用しています。import などではモジュールを、インストールなどではパッケージを使用している場合があります。厳密に使い分けていませんので

vii

何を指すかは、文脈から判断してください。

■

配列や list について配列と表現した場合、tuple、list そして numpy.ndarray などを指しています。このように混在した理由は Python、NumPy、そして OpenCV を同時に説明しているためです。これらの表
現が何を指すかは文脈から分かるようにしています。

ライセンス
OpenCV も、一般的なオープンソースに漏れず、下記に示すライセンスが示されています。
以降の内容に同意できない場合、OpenCV のダウンロード、コピー、インストール、および使用はしないでください。
ただ、通常のオープンソースのライセンス同様、難しい使用条件は付帯されていません。通常、本ライセンスが OpenCV 使用の制限になることは考えられません。ただ、必ず全文に自身で目を通し、内容を確認して使用してください。OpenCV のライセンスについては、パッケー
ジ内の OpenCV インストールフォルダにある LICENSE に記述されています。
また、OpenCV 4.4 までは BSD ライセンスを採用しており、OpenCV 4.5 では Apache v2 ラ
イセンスを採用しています。

■

以下原文（改行などから読みにくいですが、原文をそのまま掲載しています）
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and allother entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,viii

"control" means (i) the power, direct or indirect, to cause thedirection or management of such entity, whether by contract orotherwise, or (ii) ownership of fifty percent (50%) or more of theoutstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanicaltransformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by acopyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which theeditorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposesof this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionallysubmitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf ofthe copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited tocommunication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, theLicensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution.""Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor andsubsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,ix

worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute theWork and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,worldwide, non-exclusive, no-charge, royalty-free, irrevocable(except as stated in this section) patent license to make, have made,use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including across-claim or counterclaim in a lawsuit) alleging that the Workor a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of theWork or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, andattribution notices from the Source form of the Work,excluding those notices that do not pertain to any part of
the Derivative Works; and(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least oneof the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,within a display generated by the Derivative Works, if andwherever such third-party notices normally appear. The contentsof the NOTICE file are for informational purposes only anddo not modify the License. You may add Your own attributionxnotices within Derivative Works that You distribute, alongsideor as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications andmay provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, orfor any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies withthe conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Workby You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executedwith Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing theorigin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and eachContributor provides its Contributions) on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditionsof TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining theappropriateness of using or redistributing the Work and assume anyrisks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor beliable to You for damages, including any direct, indirect, special,incidental, or consequential damages of any character arising as aresult of this License or out of the use or inability to use theWork (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and allother commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,and charge a fee for, acceptance of support, warranty, indemnity,xi

or other liability obligations and/or rights consistent with thisLicense. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalfof any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reasonof your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONSAPPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that afile or class name and description of purpose be included on thesame "printed page" as the copyright notice for easieridentification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions andlimitations under the License.

なお、本書で扱うソフトウェアにはサードパーティやオープンソースで提供されているものが多数あります。使用において問題が起きそうなものは見当たりませんが、ライセンスが異なる場合がありますので、ライセンスに関しては、一通り目を通してください。

xii

目

目次

次

はじめに................................................................................................................................ iii

第1章

開発環境の準備 .................................................... 1

1.1

Anaconda のインストール................................................................................ 2

1.2

Spyder.................................................................................................................... 8

1.3
1.4

第2章
2.1

1.2.1

Spyder の起動-----------------------------------------------------------------8

1.2.2

表示言語の日本語化------------------------------------------------------- 10

1.2.3

Python プログラムの実行確認------------------------------------------ 14

OpenCV のインストール.................................................................................16
Visual Studio Code.........................................................................................23
1.4.1

インストール---------------------------------------------------------------- 23

1.4.2

表示言語の日本語化------------------------------------------------------- 29

1.4.3

Python プログラムの実行確認------------------------------------------ 32

はじめての OpenCV プログラム.......................... 37
OpenCV 3、OpenCV 4 の特徴と変更点....................................................38
2.1.1

OpenCV 3------------------------------------------------------------------- 38

2.1.2

OpenCV 4------------------------------------------------------------------- 41

2.2

NumPy..................................................................................................................422.3

画像を生成するプログラム...............................................................................44

2.4

画像の読み込み・保存を行うプログラム......................................................53

第3章

GUI ................................................................. 57

3.1

トラックバーを使用した色空間の表示..........................................................58

3.2

トラックバーを使用した閾値処理..................................................................64

3.3

マウス操作によるペイント...............................................................................73

xiii

第4章

ヒストグラム...................................................... 83

4.1

グレースケール画像のヒストグラム..............................................................844.2

カラー画像のヒストグラム...............................................................................89

4.3

マスクを適用したヒストグラム......................................................................91

4.4

ヒストグラム平坦化...........................................................................................94

4.5

適応型ヒストグラム平坦化...............................................................................98

4.6

二次元ヒストグラム........................................................................................102

4.7

動画を用いたヒストグラム表示...................................................................105

4.8

ヒストグラム逆投影法....................................................................................110

4.9

GUI を用いたヒストグラム逆投影法...........................................................118

第5章

基礎的な画像処理 ............................................. 125

5.1

ハフ変換による直線検出................................................................................126

5.2

確率的ハフ変換................................................................................................134

5.3

ハフ変換による円検出....................................................................................136

5.4

画像ピラミッドを使用した画像のブレンディング..................................139

5.5

輪郭.....................................................................................................................148
5.5.1

xiv

輪郭の描画----------------------------------------------------------------- 149

5.6

モーメント、面積、周囲長............................................................................158

5.7

輪郭の近似.........................................................................................................1615.8

外接矩形.............................................................................................................1635.9

最小閉塞円.........................................................................................................167

5.10

輪郭を用いたトリミング................................................................................168

5.11

透過画像.............................................................................................................1735.12

楕円と線のフィッティング............................................................................175

5.13

平均色、最大値、最小値................................................................................1785.14

端点.....................................................................................................................1805.15

凸性の欠陥.........................................................................................................184

5.16

点と輪郭線の最短距離....................................................................................187

5.17

輪郭の階層情報................................................................................................192

目 次

第6章

画像解析.......................................................... 205

6.1

テンプレートマッチング................................................................................206

6.2

複数物体のテンプレートマッチング...........................................................211

6.3

オブジェクト除去............................................................................................212

6.4

ダメージ補修.....................................................................................................214

6.5

コーナー検出.....................................................................................................2196.6

特徴点検出.........................................................................................................221

6.7

オブジェクトのマッチング............................................................................2286.8

顔検出.................................................................................................................230

6.9

オブジェクト検出............................................................................................236

6.10

ハイダイナミックレンジ（HDR）................................................................237

6.11

watershed アルゴリズムを使った画像の領域分割................................246

6.12

GrabCut アルゴリズムを使用したインタラクティブな前景抽出.......254

第7章

QR コード ...................................................... 263

7.1

QR コード生成.................................................................................................2647.2

QR コード検出.................................................................................................267

第8章

動画処理.......................................................... 271

8.1

カメラのパラメータを表示............................................................................272

8.2

動画を表示.........................................................................................................275

8.3

URL から動画を表示.......................................................................................277

8.4

動画の顔検出（Cascade）............................................................................280

8.5

動画の顔検出（Deep Learning）................................................................283

8.6

meanshift アルゴリズムを用いたオブジェクト追跡.............................291

8.7

Camshift アルゴリズムを用いたオブジェクト追跡...............................301

8.8

オプティカルフロー........................................................................................306

8.9

密なオプティカルフロー................................................................................316

8.10

背景差分.............................................................................................................324

xv

第9章

Web アプリ .................................................... 333

9.1

Flask...................................................................................................................334

9.2

起動環境の作成................................................................................................337

9.3

設定ファイル.....................................................................................................341

9.4

MTV フレームワーク......................................................................................343

9.5

Template の作成.............................................................................................344

9.6

View の作成......................................................................................................346

9.7

Model の作成...................................................................................................351
9.7.1

データベースに反映----------------------------------------------------- 354

9.7.2

ブログ作成機能の実装-------------------------------------------------- 356

9.8

デザインの実装................................................................................................361

9.9

記事関連の各機能とログアウトの実装.......................................................368
9.9.1

ログアウトとログイン要求--------------------------------------------- 368

9.9.2

記事の画像アップロード機能の追加--------------------------------- 373

9.9.3

記事の詳細表示機能----------------------------------------------------- 377

9.9.4

記事の編集機能----------------------------------------------------------- 380

9.9.5

記事の削除機能----------------------------------------------------------- 386

9.10

画像処理機能の実装........................................................................................387

9.11

ストリーミング機能........................................................................................395

9.12

学習済みモデルを利用した画像のクラス分類..........................................403

付 録Linux 環境 ....................................................... 413

A.1

本書のプログラムを Linux 環境で動作させる..........................................414

A.2

Linux 系への Anaconda、OpenCV のインストール............................417

索  引.................................................................................................................................420

xvi

1
開発環境の準備Python と OpenCV を利用するための環境を整えます。

第1章

開発環境の準備1

開発環境の準備

1.1 Anaconda のインストール
Anaconda のインストール

Anaconda を Windows にインストールする手順を紹介します。
Python には様々な開発環境があります。Python の本家（https://www.python.org/）から、Python のみをインストールし、必要な機能を実装するために、後から個別にライブラリ（パッケージ）をインストールする方法も良いでしょう。本書では、Python でよく利用されるライ
ブラリがパッケージされ、広く使われている Anaconda という Python パッケージを使用します。以降に、Windows へ Anaconda をインストールする手順を示します。
Anaconda インストーラのダウンロードページにアクセスします（https://www.anaconda.
com/products/individual）。

図1.1●Anacondaインストーラのダウンロードページ

ア ク セ ス す る と、 図 1.1 の よ う な ペ ー ジ が 表 示 さ れ ま す。 下 に ス ク ロ ー ル す る か［Download］ボタンを押下し、「Python 3.x version」の［Download］ボタンをクリックすると 64 ビット用のインストーラがダウンロードされます。32 ビット用のインストーラのリン
クもあるので、明示的にビット数を選びたい場合は、そのリンクをクリックしてダウンロード
してください。

21.1

Anaconda のインストール

1
2
3
4
5
6
7
図1.2●インストーラのリンクをクリック

8

ダウンロードが完了したら、ブラウザの下部に表示されるインストーラをクリックします。

9

図1.3●ダウンロードしたインストーラを起動

インストーラが起動すると、Anaconda のバージョンやビット数の表示も行われますので、目的の Anaconda であることを確認し、［Next >］ボタンをクリックして次の画面に進みます。

図1.4●起動したインストーラ

3

1

開発環境の準備

ライセンスの確認画面が表示されるので、最後までスクロールしてライセンスを確認し、［I
Agree］ボタンをクリックして次の画面に進みます。

図1.5●ライセンスに同意する

ユーザーとしてインストールするか、全ユーザーへインストールするかを選択する画面が表示されます。ユーザーとして（Just Me）インストールすることが推奨されています。複数の人でパソコンを共用し、全員が同じバージョンの Anaconda を使用するような特殊な環境の場合のみ、「All Users」を選択してください。それ以外の場合は「Just Me」を選択したまま、［Next >］ボタンをクリックして次の画面に進みます。

図1.6●ユーザーとしてインストールする

インストール先を選択する画面が表示されます。特別な理由がない限り変更する必要はないでしょう。インストール先を確認・選択して［Next >］ボタンをクリックして次の画面に進みます。インストール先を変更したい場合は、［Browse…］ボタンをクリックし、別の場所へイ

4

1.1

Anaconda のインストール

ンストールしてください。

1
2
3
4
5
6
図1.7●インストール先を選択

7

インストールのオプションを選択する画面が表示されます。特に変更の必要はありませんので、このまま［Install］ボタンをクリックし、インストールを開始します。
「Add Anaconda to8

my PATH environment variable」は、環境変数 PATH に Anaconda のフォルダを追加するか否9かを決める選択肢です。最初の方に「Not recommended …」と記述されており推奨されていません。これをチェックしなくても、コンソールを使用したいときは「Anaconda Prompt」を使用すると Python へのパスは通っています。また、「Register Anaconda as my default Python
3.8」は「Anaconda をデフォルトの Python 3.8 として登録するか」の選択肢です。これにチェックを付けておくと、インストールした Python がシステム上のプライマリとして扱われますので、他の開発ツール、たとえば Visual Studio などが、この Python（Anaconda）を自動で認識します。詳細は表示されているメッセージを参照してください。

図1.8●インストールオプションを選択

5

1

開発環境の準備

しばらくインストールが続くので、完了を待ちます。

図1.9●インストール中の様子

インストールが完了すると、次のように「Completed」という表示に変わります。
［Next >］
をクリックして次の画面に進みます。示した画面は［Show details］ボタンをクリックした状態です。クリックしない場合は、インストール状況は表示されません。

図1.10●インストール完了時の様子

PyCharmPro の説明とダウンロードのリンクが表示されます。ダウンロードは任意なので、必要であればダウンロードしてください。
また、Anaconda のバージョンによっては、PyCharmPro ではなく他のソフトウェアが表示される場合がありますが、同じように必要であればダウンロードしてください。

6

1.1

Anaconda のインストール

1
2
3
4
5
図1.11●関連するダウンロードの案内

6

インストール作業が終わったことを表す画面が表示されます。
［Finish］ボタンをクリック

7

し、インストーラを終了させます。2 つのチェックボックスにチェックしているので、学習用の画面が立ち上がりますが、必要なければ閉じてください。いずれにしても Anaconda はイン

8

ストールされています。

9

図1.12●インストーラを終了する

7

1

開発環境の準備

1.2 Spyder

Spyder

1.2.1 Spyder の起動プログラムのコーディングや実行を行う際に利用する Spyder を起動する方法を説明します。
本書では他に Visual Studio Code の起動方法も説明しています。1.4 節「Visual Studio Code」
で紹介しているため、好みの開発環境を使用してください。
Anaconda のインストールが完了すると、スタートメニューに Anaconda のフォルダが追加されます。この中に各種ツールを起動できる Anaconda Navigator があるので、Anaconda
Navigator を起動します。Anaconda Navigator は、Anaconda のフォルダだけでなく、スター
トメニューの「最近追加されたもの」にも表示されるので、そちらから起動しても構いません。

図1.13●スタートメニューからAnaconda Navigatorを起動

8

1.2

SpyderAnaconda Navigator が 起 動 す る と、 左 側 に、Environments、Learning、Community や

1Documentation などが存在します。これらは有益なものですが、本題からそれるので説明を割
愛します。

2

Spyder の欄にある［Launch］ボタンをクリックし、Spyder を起動します。環境によっては［Install］ボタンとなっている場合があります。その場合は［Install］ボタンをクリックしてイ

3

ンストールしてから、起動してください。

4
5
6
7
8
9

図1.14●Anaconda Navigator9

1

開発環境の準備

しばらくすると Spyder が起動します。起動前に、ファイアーウォールの警告が出る場合があるので、その場合は通信を許可してください。

図1.15●Spyder

1.2.2 表示言語の日本語化
Spyder のメニューなどが日本語で表示されるように設定します。
なお、本作業は必須ではありません。英語のままで開発を進めたい場合は本項を飛ばしてく
ださい。

10

1.2

Spyder［Tools］メニュー→［Preferences］を選択します。

1
2
3
4
5

図1.16●［Tools］-［Preferences］を選択する

6

左側のペインから「Application」を選択し、「Advanced settings」タブを選択します。

789

図1.17●「Advanced settings」タブ

11

1

開発環境の準備「Language」を日本語に設定し、［OK］をクリックします。

図1.18●「Language」を日本語に設定する

日本語化の設定を適用するために、Spyder を再起動するか確認されます。
［Yes］をクリッ
クし、Spyder を再起動します。

図1.19●Spyderを再起動する

12