【保存版・初心者向け】Python 目的別チュートリアル

<img width="644" alt="スクリーンショット 2018-11-09 14.34.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/195675/5bce4631-3d40-d75e-67af-ecfa17679491.png">

## はじめに

[AI Academy](https://aiacademy.jp)を開発・運営しています、[株式会社エーアイアカデミー代表の谷](https://twitter.com/tankazunori0914)です。

近年機械学習等で人気のPythonですが、Pythonで出来ることは機械学習以外にも多くあります。
そこで、初学者の方は**機械学習以外でPythonで何が出来るのか？**また、**何から手をつけて行けば目的を達成できるのか？**など疑問を持つかと思います。
この記事が多くの方々のお役に立てれば幸いです。

# AI Academy Bootcamp

[６ヶ月35,000円にてチャットで質問し放題の環境で、機械学習やデータ分析が学べるサービス](https://aiacademy.jp/bootcamp)を提供しております。
数十名在籍しているデータサイエンティストや機械学習エンジニアに質問し放題の環境でデータ分析、統計、機械学習、SQL等が学べます。AI人材に必要なスキルを効率よく体系的に身に付けたい方は是非ご検討ください！
![bootcamp_ad_72ppi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/f261ccc8-42db-a292-2511-6a742d1987f7.png)
https://aiacademy.jp/bootcamp




## この記事の対象者

・Pythonで何ができるのか知りたい方
・Pythonを使って自身のしたいことを最短ルートで実現したい方

## 対象ではない方

・普段仕事でPythonを使われている方
・Pythonに興味のない方



## なぜPythonなのか

なぜ複数あるプログラミング言語の中で、Pythonをお勧めしているかと言いますと、2つ挙げられます。

まず、**PythonはC言語などの他のプログラミングに比べ、比較的容易に習得しやすく、多くのことができること。**

次に、**機械学習のライブラリの充実に加え、様々なライブラリが豊富です。**
Web開発もできますし、Webスクレイピング、データ分析などなどです。



## Pythonでできること

Pythonでできることは、次のようなことが出来ます。

```
1. Webスクレイピング
2. 機械学習・ディープラーニング・最適化
3. テキストマイニング
4. データ分析
5. 画像認識・画像処理
6. 業務効率化プログラム
7. Webアプリケーション開発 
8. ネットワーク・サイバーセキュリティプログラミング
9. ゲーム開発
10. Androidアプリ開発
11. デスクトップアプリ制作
12. データベース操作
13. 並列化
14. インフラ構築自動化
15. グラフィックス
16. 非同期処理
```

『11. デスクトップアプリ制作』以降は他のプログラミング言語でもできる事が多いですが、それらを除いてもPython言語1つで、非常に多くのことができることがわかるかと思います。この記事では主に1~10までに関して記述していきます。


## Pythonが学べるサイトは？

全くのプログラミング初心者は、[Progate(プロゲート)](https://prog-8.com/)をお勧めします。

既に、Pythonの基本文法が既知であり、Pythonで多くの事を実現できるようになりたい方は次の動画の購入を強くお勧めいたします。

[Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする](https://www.udemy.com/python-beginner/)

最初に挙げた多くのことが網羅されており、大変わかりやすく非常にお勧めです。

また手前味噌ですが、[AI Academy](https://aiacademy.jp)も合わせてご利用頂けますと幸いです。

↓以前、学生限定でAI Academyを利用可能の際に、記事を書いて頂きました！
[Progateが終わったら次はこれ！「AI Academy」でさらにPythonを学ぶ](https://www.messyer813.com/entry/2018/10/13/101554)

他のプログラミング学習サービスとの違いは、受講者の目的に応じてカリキュラムを最適化している点です。



# どのようにPythonを学べば良いか？
先ほど紹介したProgateに加え、AI Academyで、自身の目的にあったコースを選んで頂き進めて頂けたらと思います。
そして、より詳細に学んでいきたい方はこれから紹介する項目からやりたい内容を選び参考にして頂けたらと思います。
それではPythonでできることを1つ1つ詳細に見ていきましょう。

# Webスクレイピング

Webスクレイピングとは、Web上からデータを取得することができる技術です。

・毎日発信されるAIに関するニュースをスクレピング
・会員制ECサイトに自動的にログインして、そのサイトでの直近の購入履歴を取得する

これらのことは、Webスクレイピングで実現できます。
PythonでWebスクレイピングするには、**selenium**や**beautifulSoup**といったライブラリを利用します。

[AI Academy Webスクレイピング](https://aiacademy.jp/texts/#web)

・オススメ書籍
Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

![51IiWeYB-7L._SX399_BO1,204,203,200_.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/fd5b17e8-0cc0-d854-536c-f817627f7538.jpeg)
http://amzn.asia/d/6dB1o9K

# 機械学習

scikit-learnやTensorFlowなどを扱うことで機械学習の主要なアルゴリズムを扱うことが出来ます。
機械学習における必須のライブラリは、NumPy,Pandas,Matplotlib/seaborn/scikit-learnなどがあります。
他にも画像領域ですと、keras,OpenCV,Pillow、テキスト領域ですと、mecabやGensimなども使えるようになると良いです。

AI Academyでは、下記リンクから機械学習のアルゴリズムをscikit-learnを使って、手を動かしながら学ぶことができます。
[AI Academy機械学習](https://aiacademy.jp/texts/#ml)

勉強方法など詳しくは下記記事をご参考ください。

[【2020年版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法](https://qiita.com/tani_AI_Academy/items/e47bf4d1316b66a0402b)

![スクリーンショット 2020-03-13 16.56.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/adbf3130-8aa2-9bb6-79e2-8eccccc260ee.png)

# テキストマイニング
テキストマイニングとは文字列を対象にしたデータマイニングのことで、文章などの大量のテキストデータから言語解析や統計解析などを活用し、『意味のある情報』を取り出すことでテキストデータの分析手法です。

Pythonのライブラリでは、**mecab**や**gensim**などを使うと実現できます。

SNSの投稿(Twitterのツイートなど)を分析したり、アンケートの分析が可能です。

# データ分析

Pythonでデータ分析をしたい場合は、**Pandas**というライブラリを使います。
また、matplotlibやseabornというライブラリも合わせて使えるとグラフを描画することもできます。

・オススメ書籍
Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理
![download.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/db0d2056-5cd7-5567-46fd-359543e738ce.jpeg)
http://amzn.asia/d/3jlYXKd

# 画像認識・画像処理

画像認識では、ディープラーニングが扱えるライブラリ(kerasやTensorFlowなど)を使って写真に写っている画像が何かを検出することができます。
[AI Academy 画像認識](https://aiacademy.jp/texts/#dl_experience)

画像処理をしたい場合は、OpenCVやPillowなどの画像処理ライブラリを使うと実現できます。

# 業務効率化プログラム

Pythonを使うと、先ほどのスクレイピングを使って、データを自動で収集したり、Excel処理ができたり、たくさんのフォルダを一瞬で作成したり、Twitterのユーザーを自動でフォローしたり、1000人に一括メールを送ったりなど様々なことが出来ます。

これらの内容の一部は、下記書籍で学ぶことが出来ます。

・オススメ書籍
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
![51hk+5bKNrL._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/93468749-ae32-daa2-f72f-476e81799e51.jpeg)

http://amzn.asia/d/3besjKA

チャトボットで問い合わせ自動化したい場合は、次の動画を購入するのを強くオススメ致します。

[挨拶から店舗予約まで！手を動かして学ぶAIチャットボット開発入門](https://www.udemy.com/ai-ytxof/)

[ビジネスパーソンのためのPython活用術](https://note.com/kazu_t/n/n18e24e99d6c1)


# Webアプリケーション開発

Pythonでは、FlaskやDjangoといったライブラリを使うことで、Webアプリケーション開発ができます。

具体的には次のようなことが出来ます。

```
Djangoを使ったTwitterクローン作成
FlaskとMySQLでToDoアプリを実装しよう
機械学習で花を判定するWebアプリケーションを作ろう！
```

これら全ては、[AI Academy Web開発](https://aiacademy.jp/texts/#api)を元に進めると作ることが出来るようになります。

・オススメ書籍
現場で使える Django の教科書《基礎編》
![41vG221V8dL._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/db989ea7-cff9-926b-4715-f71e3a94cc5b.jpeg)

http://amzn.asia/d/cygNnDN
# Androidアプリ開発

Pythonでは、[QPython](https://www.qpython.com)や[Kivy](https://kivy.org/#home)を用いることでAndroidのアプリケーションを開発することが可能です。

ですが、本格的なAndroidアプリ開発をされる場合は、**Java**や**Kotlin**を使う方が、ネット上に情報量多かったり、多くのAndroidアプリはJavaで開発されているのでPythonではない方が良かったりします。

# ゲーム開発
Pythonでゲームを作るライブラリは[Pygame](https://www.pygame.org/news)、[Kivy](https://kivy.org/#home)や[Tkinter](https://docs.python.jp/3/library/tkinter.html)などあります。

・オススメ書籍
ゲームを作りながら楽しく学べるPythonプログラミング 
![51vd-anoLyL._SX351_BO1,204,203,200_.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/3d083724-3314-6d5f-999b-0c13667d6333.jpeg)
http://amzn.asia/d/gni454S

# ネットワーク・サイバーセキュリティプログラミング

[Scapy](https://scapy.net)を使う事で、パケット生成や送受信が可能です。
（セキュリティ脆弱性診断に特化したKali Linux（カーリーリナックス）にはデフォルトでインストールされていたりします。）

[urrlib](https://docs.python.jp/3/library/urllib.request.html)などを使う事でGETリクエストなどが可能です。

・オススメ書籍
サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考
![518ZyCCEKGL._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/97024567-5798-2775-85dd-7dca4b141985.jpeg)


http://amzn.asia/d/4x7OMN3

# その他（人工生命）
ALife(人工生命)」は、「AI(人工知能)」の発展系として、近年改めて注目されつつある分野ですがこの分野の内容は次の書籍などが丁寧です。

・オススメ書籍
作って動かすALife ―実装を通した人工生命モデル理論入門
![516dQmDuT3L._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/f2cfcbfe-2d68-3e74-853d-2883881f4307.jpeg)

http://amzn.asia/d/6v46F2O

# 学習ロードマップ

次の図で、自身がどれに適しているか確認してみてください。

<img width="644" alt="スクリーンショット 2018-11-09 14.34.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/195675/5bce4631-3d40-d75e-67af-ecfa17679491.png">

右向き矢印の名称は各ライブラリ名になります。
ライブラリはpipなどのコマンドを使うことでインストールができます。




# まとめ

この記事ではこれからPythonを学びたい初学者に向けて、
・Pythonをこれから勉強しようと考えているが、何から手をつければ良いのか？
・何から学ぶと自分の目的を達成できるのだろう？
などの悩みを解消できればと思い執筆しました。

Pythonでは多くの事ができるプログラミング言語だという事がお分かり頂けたかと思います。是非Pythonを学んで、読まれている方々の目的が最短で実現できれば幸いです。

# その他記事

[①【2020年版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法](https://qiita.com/tani_AI_Academy/items/e47bf4d1316b66a0402b)

![スクリーンショット 2020-03-13 16.56.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/adbf3130-8aa2-9bb6-79e2-8eccccc260ee.png)

[②ビジネスパーソンのためのPython活用術](https://note.com/kazu_t/n/n18e24e99d6c1)

# AI Academy Bootcamp

[６ヶ月35,000円にてチャットで質問し放題の環境で、機械学習やデータ分析が学べるサービス](https://aiacademy.jp/bootcamp)を提供しております。
数十名在籍しているデータサイエンティストや機械学習エンジニアに質問し放題の環境でデータ分析、統計、機械学習、SQL等が学べます。AI人材に必要なスキルを効率よく体系的に身に付けたい方は是非ご検討ください！
![bootcamp_ad_72ppi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/f261ccc8-42db-a292-2511-6a742d1987f7.png)
https://aiacademy.jp/bootcamp


# この記事を書いた人

![37741205_1003841679788059_2705403151040643072_n.jpg](https://qiita-image-store.s3.amazonaws.com/0/195675/a4bad386-6700-4b9e-6a33-368a92c7ae6c.jpeg)

株式会社エーアイアカデミー
代表取締役CEO　谷 一徳 

フォローお待ちしております！
[Twitter](https://twitter.com/tankazunori0914)
[Facebook](https://www.facebook.com/takazunori)

11,000名以上が参加しいてるAIコミュニティも運営しております。
毎日AIに関する情報を提供しておりますので、こちらのご参加もお待ちしております！
[人工知能研究コミュニティ](https://www.facebook.com/groups/1892746874314837/)