# 【Python独学勉強法】Python入門を３ヶ月で習得できる学習ロードマップ

> 当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。

- URL: https://toukei-lab.com/python-learn
- 公開: 2022.11.29 / 更新: 2026.10.28
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例とあわせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。
:::

こんにちは！

事業会社でのデータサイエンティストを経て現在は会社経営をしているウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です。

今では毎日何時間もPythonを触ってる僕ですが、<mark>Pythonを勉強しようとして結局投げ出してしまった過去もあります。</mark>

プログラミング学習って特に初心者は学び方を間違えるとなかなか続かず挫折してしまうんですよね・・・

この記事では、そんな僕が圧倒的にオススメするPythonの勉強ロードマップやオススメサービス・教材を徹底的に解説していきます！

数あるサービスを使ってきましたが、Python学習におすすめできるサービスはこちら！ドドン！

<table class="table">
<thead>
<tr>
<th>サービス名</th>
<th>オススメ度</th>
<th>価格の安さ</th>
<th>サポート体制</th>
<th>どんな人におすすめ？</th>
<th>公式サイト</th>
</tr>
</thead>
<tbody>
<tr>
<th><a href="#テックアカデミー" rel="noopener noreferrer">テックアカデミー</a></th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中2.5点" data-value="2.5"></span></td>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td>パーソナルメンターが欲しい</td>
<th><a href="https://techacademy.jp/" target="_blank" rel="noopener nofollow">テックアカデミー</a></th>
</tr>
<tr>
<th><a href="#pyq" rel="noopener noreferrer">PyQ</a></th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中1.5点" data-value="1.5"></span></td>
<td>環境構築せずとりあえずPythonを触ってみたい</td>
<th><a href="https://af.moshimo.com/af/c/click?a_id=1419635&#x26;p_id=1166&#x26;pc_id=1793&#x26;pl_id=20541&#x26;guid=ON" target="_blank" rel="noopener nofollow">PyQ</a></th>
</tr>
</tbody>
</table>

:::talk{who="umatan"}
これであなたもPythonをマスター！！
:::

この記事で取り上げているのは以下の3つです。

:::point
**・Pythonで習得すべき要素と出来ること**\
**・Pythonで出来ることをまとめたコードの公開**\
**・Pythonを効率よく勉強できるサービス**
:::

この記事で紹介している初心者勉強のロードマップを参考に進めてみてください！

紹介しているコードを参考に、カスタマイズした機械学習ロジックを用いたWebアプリケーションを作っていただけると学習がはかどるかと思います。

:::talk{who="robotan"}
Webアプリケーション作成まで出来るのか・・・
:::

:::talk{who="umatan"}
データ分析だけの言語だと思ったら大間違い！実際にPythonを習得しやすいお題に対してコーディングしていくよ！
:::

ちなみにデータ分析の文脈においては[Signate](https://signate.jp/)や[Kaggle](/kaggle)、僕が開設した[DataDojo](https://data-dojo.org/)などの[データコンペ](/data-competition)を使ってガシガシ学んでいくことをオススメします。

また僕の経験を詰め込んだデータサイエンス特化のスクール「[スタアカ（スタビジアカデミー）](https://toukei-lab.com/achademy/)」を運営しておりますので興味のある方は是非チェックしてみてください！

:::box
**[業界最安級AIデータサイエンス特化スクール：スタアカ（スタビジアカデミー）](https://toukei-lab.com/achademy/)**
:::

## Pythonの特徴

![pc python](/wp-content/uploads/2019/08/Work-time-amico-min.png)

まずは簡単にPythonのイメージについて見ていきましょう！

ちなみにPythonの勉強法については以下の動画でも解説していますので、あわせてチェックしてみてください！

::youtube{#Wh5WJfHu15o}

Pythonはどうしても**データ解析のイメージが強い**です。

もちろん<mark>お馴染みの機械学習手法から流行りの手法まで幅広く実装することができますが、それであればRでも問題ありません。</mark>

現に大学院時代はRで困ったことはありませんでした（Rはグラフ描画や多変量解析手法に強いイメージがあります）。

以下の記事でPythonとRなどデータ解析用のプログラミング言語を比較しているのでよければご覧ください！

<https://toukei-lab.com/statistics-programming>

Pythonの真骨頂は、**Webアプリケーション開発。**

FlaskやDjangoと言ったモジュールを用いることで簡単にWebアプリケーションを開発することができるのです。

<https://toukei-lab.com/flask-django>

つまり<mark>**クライアントサイドからデータをもらい、そのデータに対してロジックを回し、クライアントサイドに返すといったことを一気通貫で出来てしまうのです！**</mark>

それでいて変数宣言等が必要なく、簡易的なコーディングで実装できる初心者にも優しい言語なのです！

:::talk{who="robotan"}
なんだその最強の言語は・・・
:::

:::talk{who="umatan"}
出来ることの幅の広さと分かりやすい記述方法で非常に人気なんだよー！
:::

Pythonでできることはまだまだたくさんあります！以下の記事で解説しているので是非チェックしてみてください！

<https://toukei-lab.com/python-can>

## 初心者がPythonで勉強すべき基礎・応用

![python ](/wp-content/uploads/2019/08/Admin-amico-min.png)

Pythonで出来ることはたくさんあるのですが、その分初心者にとっては何から手を付けようか迷うかと思います。

そのため、まずは<mark>自分がPythonを使って何をしたいか明確にしておく</mark>と良いです。

もし詳しくPythonで出来ることに具体的なイメージをつかみたい！という方は手前味噌ですが以下の僕の書籍で小説形式で分かりやすく解説していますので是非チェックしてみてください！

::product[【入門】Pythonを覚えてエリートリーマンへ！落ちこぼれリーマンの逆転劇]{url="https://www.amazon.co.jp/dp/B08YXH5LY4?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/41Wecy7znOL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/B08YXH5LY4?tag=statistic08-22&linkCode=ogi&th=1&psc=1" kindle="https://www.amazon.co.jp/dp/B08YXH5LY4?tag=statistic08-22&linkCode=ogi&th=1&psc=1"}

ストーリー形式でPythonを使ってどんなことができるかまとめていますので、<mark>最初にこの本に目を通していただけると学習がスムーズに進むかと思います。</mark>

価格は300円ちょっとですし、[Kindle unlimited](https://www.amazon.co.jp/kindle-dbs/hz/subscribe/ku?ref_=dbs_p_ebk_r00_pbcb_diupu0_hpe3p0\&passThroughAsin=B089FHMJMB&_encoding=UTF8\&shoppingPortalEnabled=true&_encoding=UTF8\&tag=statistic08-22\&linkCode=ur2\&linkId=6234f336129dd97c7c7749d98135bc96\&camp=247\&creative=1211)であれば無料で読めるのでぜひチェックしてみてくださいね！

概要を掴んだ後、実際に手を動かすパートでは、僕自身が講師を務めている以下の講座で色んな出来ることを実装しているのでよければ見てみてください。

:::box
**[【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース](https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084)**
:::

この記事ではPythonを勉強する中でこれだけはおさえておきたい内容を**基礎編と応用編**に分けてまとめていきます！

![Pythonを勉強する内容](/wp-content/uploads/2022/11/92-1024x576.jpg)

勉強のスケジュールは以下を目安にすることをおすすめします。

最初の1ヶ月でPythonの基礎を学んで、その後Pythonで出来ることを一つずつ習得していきましょう！

:::memo
**・【1ヶ月目】Pythonでの基本的な記述方法が分かる**\
**・【1ヶ月目】関数・クラスが作れる**\
**・【2ヶ月目】データ解析が出来る（機械学習モジュールが使いこなせる）**\
**・【2ヶ月目】スクレイピングが出来る**\
**・【3ヶ月目】Webアプリケーションが作れる**
:::

### 【基礎編】勉強すべき基本要素

ここでは何を作るにしろ共通して習得しておいた方が良い基礎要素をまとめていきます。

#### Pythonでの基本的な記述方法が分かる

![Coding](/wp-content/uploads/2017/11/Coding-amico-e1617441754417-1024x921.png)

まあこれは、他の言語をある程度触ったことのある人ならそれほど苦労しない部分かもしれません。

ただ若干記述の方法が違ったり、Python独自の概念もあるのでしっかりと学びましょう！

<mark>[Numpy](/numpy)や[Pandas](/python-pandas)、[Matplotlib](/python-matplotlib)などデータ加工や描画に関するモジュールの使い方を覚えましょう！</mark>

理論を学ぶのは書籍をオススメしているのですが、Pythonの勉強には書籍はおすすめしません。

基礎文法の習得には[PyQ](https://af.moshimo.com/af/c/click?a_id=1419635\&p_id=1166\&pc_id=1793\&pl_id=20541\&guid=ON)というオンライン学習サービスを利用しましょう！

<https://toukei-lab.com/pyq-review>

<mark>基本的な文法から勉強することができPythonに特化しているのでクオリティが高い！価格は3000円/月なので書籍1冊ほどのお値段です！</mark>

なかなかPythonに特化してここまで教えてくれるオンライン学習プラットフォームはありません。

クエスト形式で進んでいくので<mark>達成感もありますし価格も安め！</mark>

ただ、実際に開発環境を作るのではなくPyQが用意してくれたプラットフォームを使うのでPyQだけやっても実務で回すときはまた違う設定が必要になります。

![PyQ　インターフェイス](/wp-content/uploads/2019/09/pyq4.jpg)

実際に自分で[Jupyter notebook](/python-how)を立ち上げたりコマンドプロンプトから入力して実装してみることを忘れないでください。

#### 関数・クラスが作れる

![Data Trends](/wp-content/uploads/2020/12/Data-Trends-amico-min-e1615808046774-1024x913.png)

関数・クラスの概念も他のプログラミング言語触ったことのある人なら問題ないかもしれませんが、<mark>初心者には非常に取っつきにくいところです。</mark>

一旦理解してしまえばそれほど難しくはありません。後ほど紹介する書籍に分かりやすく書いてあります。

昔、Javaのオブジェクト指向でつまづいてプログラミング投げ出した記憶があります笑

ここのフェイズでも[PyQ](https://af.moshimo.com/af/c/click?a_id=1419635\&p_id=1166\&pc_id=1793\&pl_id=20541\&guid=ON)で学習してきましょう！

チームで開発する上でのクラスや関数・モジュールの扱い方に関して<mark>ここまで詳しく解説している教材は見たことないです。</mark>

データ解析では関数・クラスは一見いらなそうですが、オートメーションに組み込む際などは必要になってきます。

### 【応用編】Pythonで出来ること

ここまでは、基本的にPythonを使用する上で誰しもある程度必要になる基礎要素をお伝えしてきました。

ここからは、<mark>自分がPythonを使ってやりたいことを明確にしてどれかつまみ食い的に勉強して大丈夫な領域</mark>です。

まあ色々出来た方がPythonを使用する意味は高まるのでなるべく色々できるようになることをオススメします。

:::talk{who="robotan"}
出来ることの幅が広くてどのように勉強すればよいか迷っちゃいそうだなー・・・
:::

:::talk{who="umatan"}
出来ることを実際に見ていくから参考にしてぜひ自分の目指す姿を明確にしてね！
:::

#### データ解析が出来る（機械学習ライブラリが使いこなせる）

![stories pc](/wp-content/uploads/2021/01/All-the-data-bro-e1613475965440-1024x789.png)

データ解析を行う上でのライブラリは比較的たくさんありますので、それが使いこなせるようになっておきましょう！

手前味噌ですが、データ解析に関しては僕自身が作っているUdemyコースがオススメです！

:::ref
[**【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座**](https://www.udemy.com/course/python-data/?referralCode=06466D9A805A034B1A97)
:::

このコースは、**なかなか勉強する時間がないという方に向けてコンパクトに分かりやすく必要最低限の時間で重要なエッセンスを学び取れるように**作成しています。

**アニメーションを使った概要編**と**ハンズオン形式で進む実践編**に分かれており、概要編ではYoutubeの内容をより体系的にデータ分析・機械学習導入の文脈でまとめています。

実践編で題材にした中古マンション価格予測のコンペはもともとNishikaで開催されていたもので、Nishikaは2026年3月にサービスを終了しましたが、今はDataDojoの「[中古マンション価格予測チャレンジ](https://data-dojo.org/competitions/0aedc9c6-9bb1-45a5-a4b6-a1be3002dbd3)」で同じコンペに参加でき、データのダウンロードもできます。予測結果のCSVを提出すると自動でスコアが付くので、講座とあわせて挑戦してみてください！

正直、Pythonは最新の手法であれライブラリとしてインポートし使用することができるのでアルゴリズムを精緻に理解する必要はありません。

しかし、<mark>まるっきり分からないと結果の解釈を誤ってしまう可能性があるのである程度の理解はしておくべき。</mark>

統計学や機械学習に関して不安な方はそちらも学んでおきましょう！

<https://toukei-lab.com/statistics-freshman>

<https://toukei-lab.com/machine-learning-study>

また、さらに深く[ディープラーニング](/deep-learning)等を学びたいのであれば、[テックアカデミー](https://techacademy.jp/)のAIコースがオススメです。

テックアカデミーは、<mark>なかなかモチベーションが保てない人におすすめ！</mark>

パーソナルメンターが寄り添ってくれるので挫折せず学習を進めやすいです。

体験記事を挙げているので参考にしてみてください！

<https://toukei-lab.com/techacademy-review>

::button[Pythonコースを見てみる]{href="https://techacademy.jp/course/python" note="＼今すぐ試す／"}

ディープラーニングの勉強方法については以下の記事でも詳しくまとめています！

<https://toukei-lab.com/deep-learning-study>

#### スクレイピングが出来る

![Visual data](/wp-content/uploads/2020/12/Visual-data-amico-min-1024x1024.png)

スクレイピングとは、Web上のデータを抽出する作業。

スクレイピングに関してはUdemyの以下の講座がおすすめ！

:::ref
・[【初心者向け】Webスクレイピングを学ぼう！PythonのBeautifulSoupで様々な応用プログラムを作ろう！](https://www.udemy.com/course/python-scraping-beautifulsoup/?referralCode=90D17CC80F9B80FD6FCA)

[・【入門から実践まで】Webマーケティングの全体像とデータ活用を短時間で学び実際にSEO集客ツールを作ってみよう！](https://www.udemy.com/course/web-marketing-for-beginner/?referralCode=2F55DB2D1A30C8F41E4F)

[・【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース](https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084)
:::

<mark>スクレイピングを自動的に行えばネットに落ちている様々な情報を一挙に吸い上げることが可能です。</mark>

:::talk{who="umatan"}
スクレイピングが出来ると幅が広がるから是非マスターして欲しい！
:::

スクレイピングをする上では、**インターネットの構造とHTMLやCSSの理解**が必要になります。

正直HTML・CSSを0から書ける必要はありません。

クロームのディベロッパーツールを使ってWebブラウザを見ながら構造を勉強するとよいでしょう！

<https://toukei-lab.com/developper-tool>

またスクレイピングすることができるレベルのHTML・CSS・Javascriptを学ぶ本として以下の書籍が<mark>超超超名著なので読んでみてください。</mark>

Kindle版しかないみたい。

**「WEBマーケターのためのテクノロジー入門：Webマーケターにとって必要十分なプログラミング・テクノロジーの基礎を解説」**

::product[Webマーケターのためのテクノロジー入門: Webマーケターにとって必要十分なプログラミング・テクノロジーの基礎を解説。]{url="https://www.amazon.co.jp/dp/B06ZY6W6D4?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/51iVfIHfXYL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/B06ZY6W6D4?tag=statistic08-22&linkCode=ogi&th=1&psc=1" kindle="https://www.amazon.co.jp/dp/B06ZY6W6D4?tag=statistic08-22&linkCode=ogi&th=1&psc=1" rakuten="https://af.moshimo.com/af/c/click?a_id=858168&p_id=54&pc_id=54&pl_id=616&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FWeb%25E3%2583%259E%25E3%2583%25BC%25E3%2582%25B1%25E3%2582%25BF%25E3%2583%25BC%25E3%2581%25AE%25E3%2581%259F%25E3%2582%2581%25E3%2581%25AE%25E3%2583%2586%25E3%2582%25AF%25E3%2583%258E%25E3%2583%25AD%25E3%2582%25B8%25E3%2583%25BC%25E5%2585%25A5%25E9%2596%2580%2F%3Ff%3D1%26grp%3Dproduct"}

<https://toukei-lab.com/technology-for-webmarketer>

#### APIを利用できる

![Mobile Marketing](/wp-content/uploads/2020/07/Mobile-Marketing-amico-e1613688956758-1024x837.png)

世の中には<mark>たくさんのサービスが提供してくれているAPI</mark>が存在します。

APIを利用することで自分で0から作り込まなくても様々なことができるんです！

APIをPythonで利用する方法については以下の記事で詳しく解説していますので是非チェックしてみてください！

<https://toukei-lab.com/api>

#### データベースを操作できる

![Site Stats](/wp-content/uploads/2017/11/Site-Stats-amico-e1632354780601-1024x959.png)

Sqlite3というライブラリを使用すれば<mark>SQLと同様なカタチでデータベース操作を行うことができます。</mark>

もちろんSQLの記法が分かっていないといけないので以下の記事も参考にしてみてください。

<https://toukei-lab.com/sql%E3%82%AA%E3%82%B9%E3%82%B9%E3%83%A1%E6%9C%AC>

#### Webアプリケーションを開発できる

![Stories](/wp-content/uploads/2021/08/Google-sitemap-pana-min-1024x1024.png)

ここがPythonの特徴でもあるのですが、今までサーバーサイド言語を扱ったことのない人にはハードルの高い部分かもしれません。

僕もサーバーサイド言語はノータッチでした。

実際に<mark>Webアプリケーションとして落とし込むにはHTML・CSS・Javascriptの知識も必要になってくるので同時に学習しましょう！</mark>

PythonでWebアプリケーションを開発するなら以下のUdemy講座がオススメ！

:::ref
Flask: **[【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース](https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084)**\
→楽天の在庫情報をスクレイピングしてそれをAPIを使ってSlackに通知するプログラムをFlaskでWebアプリケーション化していきます
:::

Flaskは軽量で簡易的なWebアプリケーションを開発するのにオススメですが、本格的なWebアプリケーションを実装するのであればDjangoがオススメです。

<https://toukei-lab.com/django-study>

FlaskとDjangoの違いは以下の記事でまとめています！

<https://toukei-lab.com/flask-django>

また、PythonでのWebアプリケーション開発について詳しくは以下の記事でまとめていますよー！

<https://toukei-lab.com/python-webapp>

## 初心者がPythonを習得するための勉強課題

![Coding](/wp-content/uploads/2017/11/Coding-amico.png)

先ほどのPython習得におけるいくつかの要素。

それらを同時に習得できるプログラムを作っていきましょう！笑

僭越ながら、少し前までPython初心者だった僕でもこんなの作れるんだぞ！という証明も含めて解説していきます。

:::talk{who="umatan"}
そんなのあるのか！？
:::

正直無理やり感ありますが・・・

今回作っていくのは、

:::box
**Webフォーム上にURLを入力すると、スクレイピングによってテキスト情報を抽出し、そこから形態素解析を行いテキスト類似度を算出し、データベース（これはおまけ）に格納、最終的にフォームに入力したURL同士のテキスト類似度を表示するWebアプリケーション**
:::

です。

![Python　テキスト](/wp-content/uploads/2019/08/fcfbedfa1f0c4f94b2e995299c8b478b.jpg)

URLを入れると・・・・

![Python　テキスト](/wp-content/uploads/2019/08/a221e20d2db8f1b52eb0c4963b230422.jpg)

類似度が算出されます！

まさにこれを作れば、先ほどの様々な応用要素が習得でき・・・そう・・・？

ガツンとコードだけ先に載せちゃいます。

PythonファイルとHTMLファイルを作成していきます。

```python title="sr_all.py"
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#ライブラリーインポート
import requests
from bs4 import BeautifulSoup
import sys
import MeCab
from time import sleep
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
import sqlite3
from flask import Flask, redirect ,request,render_template,jsonify
from flask_bootstrap import Bootstrap
import json

#スクレイピングして文書加工
class Scr():
    def __init__(self, urls):
        self.urls=urls
#スクレイピング
    def geturl(self):
        all_text=[]
        for url in self.urls:
            r=requests.get(url)
            c=r.content
            soup=BeautifulSoup(c,"html.parser")
            article1_content=soup.find_all("p")
            temp=[]
            for con in article1_content:
                out=con.text
                temp.append(out)
            text=''.join(temp)
            all_text.append(text)
            sleep(1)
        return all_text

#メカブで形態素解析
def mplg(article):
    word_list = ""
    m=MeCab.Tagger()
    m1=m.parse(article)
    for row in m1.split("\n"):
        word =row.split("\t")[0]#タブ区切りになっている１つ目を取り出す。ここには形態素が格納されている
        if word == "EOS":
            break
        else:
            pos = row.split("\t")[1]#タブ区切りになっている2つ目を取り出す。ここには品詞が格納されている
            slice = pos[:2]
            if slice == "名詞":
                word_list = word_list +" "+ word
    return word_list

#文書類似度計算
class CalCos():
    def __init__(self,word_list):
        self.word=word_list
#tf-idf＆cos類似度で文書類似度算出
    def tfidf(self):
        docs = np.array(self.word)#Numpyの配列に変換する
        #単語を配列ベクトル化して、TF-IDFを計算する
        vecs = TfidfVectorizer(
                    token_pattern=u'(?u)\\b\\w+\\b'#文字列長が 1 の単語を処理対象に含めることを意味します。
                    ).fit_transform(docs)
        vecs = vecs.toarray()
        return vecs

    def cossim(self,v1,v2):
        return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))

#データベースアクセス
class Db():
    def __init__(self,dbname):
        self.db=dbname

    def db_input(self,article):
        #値をデータベースに格納
        conn=sqlite3.connect(self.db)
        c = conn.cursor()
        # executeメソッドでSQL文を実行する
        create_table = '''DROP TABLE IF EXISTS article_match;
                        create table article_match (text_1 verchar,text_2 verchar,match_rate double)'''
        c.executescript(create_table)
        # SQL文に値をセットする場合は，Pythonのformatメソッドなどは使わずに，
        # セットしたい場所に?を記述し，executeメソッドの第2引数に?に当てはめる値を
        # タプルで渡す．
        sql = 'insert into article_match (text_1, text_2, match_rate) values (?,?,?)'
        c.execute(sql, article)
        conn.commit()
        c.close()
        conn.close()

    def db_output(self):
        #データベースから値を抽出
        conn=sqlite3.connect(self.db)
        c = conn.cursor()
        select_sql = 'select * from article_match'
        c.execute(select_sql)
        match_rate=c.fetchone()
        conn.commit()
        c.close()
        conn.close()
        return match_rate

#こっから実装
nc = Flask(__name__)
bootstrap = Bootstrap(nc)

@nc.route("/")
def check():
    return render_template('sr_all.html')

@nc.route('/output', methods=['POST'])
def output():
    #json形式でURLを受け取る
    url1 = request.json['url1']
    url2 = request.json['url2']

    word_list=[]
    url=[url1,url2]
    sc=Scr(url)
    texts=sc.geturl()
    for text in texts:
        word_list.append(mplg(text))

    wl=CalCos(word_list)
    vecs=wl.tfidf()
    match_rate=wl.cossim(vecs[1],vecs[0])
    #DB格納
    article = (url[0], url[1], match_rate)
    dbname = 'article.db'
    db=Db(dbname)
    db.db_input(article)
    match_rate=db.db_output()

    return_data = {"result":round(match_rate[2]*100,1)}
    return jsonify(ResultSet=json.dumps(return_data))

@nc.route('/output2', methods=['POST'])
def output2():
    #json形式でURLを受け取る
    text1 = request.json['text1']
    text2 = request.json['text2']
    word_list=[]
    texts=[text1,text2]

    for text in texts:
        word_list.append(mplg(text))

    wl=CalCos(word_list)
    vecs=wl.tfidf()
    match_rate=wl.cossim(vecs[1],vecs[0])
    #DB格納
    article = (texts[0], texts[1], match_rate)
    dbname = 'article.db'
    db=Db(dbname)
    db.db_input(article)
    match_rate=db.db_output()

    return_data = {"result":round(match_rate[2]*100,1)}
    return jsonify(ResultSet=json.dumps(return_data))

if __name__ == '__main__':
    nc.run(host="127.0.0.1", port=8080)
```

```html title="sr_all.html"
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>テキスト分析</title>
    <!-- <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}" /> -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1>
<br>テキスト分析</h1>
<h2 class="text-info">
</br>1.urlから抽出</h2>
  <div class="form-group">
    <label>URL1</label>
    <div class="row">
      <div class="col-md-6">
        <input class="form-control" type="text" id="url1" name="url1" placeholder="URL1" required/>
      </div>
    </div>
  </div>
  <div class="form-group">
    <label>URL2</label>
    <div class="row">
      <div class="col-md-6">
        <input class="form-control" type="text" id="url2" name="url2" placeholder="URL2" required/>
      </div>
    </div>
  </div>
  <button class="btn btn-info" id="button1">類似度を算出</button>
  <div></div>
  &nbsp;
  <font color='696969' size=5><div id="match1" >類似度は</div></font>
</br>
<hr color='696969' size="9">
<h2 class="text-info">
</br>2.テキストをそのまま入力</h2>
  <div class="form-group">
    <label>text1</label>
    <div class="row">
      <div class="col-md-6">
        <textarea class="form-control" type="text1" id="text1" name="text1" placeholder="テキストを貼り付けてください" required></textarea>
      </div>
    </div>
  </div>
  <div class="form-group">
    <label>text2</label>
    <div class="row">
      <div class="col-md-6">
        <textarea class="form-control" type="text2" id="text2" name="text2" placeholder="テキストを貼り付けてください" required/></textarea>
      </div>
    </div>
  </div>
  <button class="btn btn-info" id="button2">類似度を算出</button>
  <div></div>
  &nbsp;
  <font color='696969' size=5><div id="match2" >類似度は</div></font>
  &nbsp;
  <div class="hide" id="loading"></div>
  </div>
  <!-- CSS -->
  <style type="text/css">
  /* 隠すためのやつ */
  .hide {
  display: none;
  }
  /* ローディングGIF */
  #loading {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0,0,0,.5);
  background-image: url(../static/images/325-88.gif);
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-position: center center;
  background-size: 50px 50px;
  }
  </style>
  <!-- Javascript -->
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
  <!-- temp -->
  <script type="text/javascript">
  $(function(){
    $("#button1").on("click", function(){
      var textData = JSON.stringify({"url1":$("#url1").val(),"url2":$("#url2").val()});
      $.ajax({
        type:'POST',
        url:'/output',
        data:textData,
        contentType:'application/json',
        //リクエストが完了するまで実行される
        beforeSend: function(){
          $('#loading').removeClass('hide');
          },
        // 非同期通信が成功したら実行される
        success:function(data){
          $('#loading').addClass('hide');
          var result = JSON.parse(data.ResultSet).result;
          $("#match1").text("類似度は"+result+"%です");
        }
      });
     });
    $("#button2").on("click", function(){
      var textData = JSON.stringify({"text1":$("#text1").val(),"text2":$("#text2").val()});
      $.ajax({
        type:'POST',
        url:'/output2',
        data:textData,
        contentType:'application/json',
        //リクエストが完了するまで実行される
        beforeSend: function(){
          $('#loading').removeClass('hide');
          },
        // 非同期通信が成功したら実行される
        success:function(data){
          $('#loading').addClass('hide');
          var result = JSON.parse(data.ResultSet).result;
          $("#match2").text("類似度は"+result+"%です");
        }
      });
     });
   });
  </script>
  <!-- temp -->
</body>
</html>
```

:::talk{who="robotan"}
な、何が何だか、、、
:::

いきなり長ったらしいコードが現れましたが安心してください。

順番に見ていきましょう！

### Pythonのスクレイピングを習得

まずは、<mark>Pythonでスクレイピングを習得していきます。</mark>

スクレイピングを行うにはbeautifulSoupというモジュールを使います。

Pythonにおけるスクレイピングに関して詳細は以下の記事をご覧ください！

<https://toukei-lab.com/python-scraping>

スクレイピングの部分だけ抜き出して見ていきます！

```python
#スクレイピングして文書加工
class Scr():
    def __init__(self, urls):
        self.urls=urls
#スクレイピング
    def geturl(self):
        all_text=[]
        for url in self.urls:
            r=requests.get(url)
            c=r.content
            soup=BeautifulSoup(c,"html.parser")
            article1_content=soup.find_all("p")
            temp=[]
            for con in article1_content:
                out=con.text
                temp.append(out)
            text=''.join(temp)
            all_text.append(text)
            sleep(1)
        return all_text
```

スクレイピング用のクラスを作成しています。

article1_content=soup.find_all(“p”)でpタグを指定して抽出しています。

ここを変えれば別のタグの中身を抽出することが可能です。

### Pythonで形態素解析をしてテキスト類似度計算

続いて、MeCabを使って形態素解析を行い、td-idfとcos類似度を用いて<mark>テキスト類似度を算出していきます。</mark>

MeCabをPythonで使うには少し設定が必要だったりするのですが、詳しくはこちらの記事をご覧ください。

<https://toukei-lab.com/python-mecab>

形態素解析・テキスト類似度の部分だけ抜き出して見ていきます！

```python
#メカブで形態素解析
def mplg(article):
    word_list = ""
    m=MeCab.Tagger()
    m1=m.parse(article)
    for row in m1.split("n"):
        word =row.split("t")[0]#タブ区切りになっている１つ目を取り出す。ここには形態素が格納されている
        if word == "EOS":
            break
        else:
            pos = row.split("t")[1]#タブ区切りになっている2つ目を取り出す。ここには品詞が格納されている
            slice = pos[:2]
            if slice == "名詞":
                word_list = word_list +" "+ word
    return word_list

#文書類似度計算
class CalCos():
    def __init__(self,word_list):
        self.word=word_list
#tf-idf＆cos類似度で文書類似度算出
    def tfidf(self):
        docs = np.array(self.word)#Numpyの配列に変換する
        #単語を配列ベクトル化して、TF-IDFを計算する
        vecs = TfidfVectorizer(
                    token_pattern=u'(?u)bw+b'#文字列長が 1 の単語を処理対象に含めることを意味します。
                    ).fit_transform(docs)
        vecs = vecs.toarray()
        return vecs

    def cossim(self,v1,v2):
        return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
```

ここでもそれらのクラスを作成しています。

形態素解析をして得られた結果から名詞だけを抜き出して、助詞等を除いています。

td-idfとcos類似度は<mark>numpyと[scikit-learn](/scikit-learn)を用いれば簡易的に計算することが可能</mark>です。

### Pythonでデータベースを操作する

続いてはPythonを使ってデータベースを操作していきます。

詳しくは以下の記事にまとめていますのでご覧ください！

<https://toukei-lab.com/python-sqlite3>

データベース操作部分だけ抜き出して見ていきます！

```python
class Db():
    def __init__(self,dbname):
        self.db=dbname

    def db_input(self,article):
        #値をデータベースに格納
        conn=sqlite3.connect(self.db)
        c = conn.cursor()
        # executeメソッドでSQL文を実行する
        create_table = '''DROP TABLE IF EXISTS article_match;
                        create table article_match (text_1 verchar,text_2 verchar,match_rate double)'''
        c.executescript(create_table)
        # SQL文に値をセットする場合は，Pythonのformatメソッドなどは使わずに，
        # セットしたい場所に?を記述し，executeメソッドの第2引数に?に当てはめる値を
        # タプルで渡す．
        sql = 'insert into article_match (text_1, text_2, match_rate) values (?,?,?)'
        c.execute(sql, article)
        conn.commit()
        c.close()
        conn.close()

    def db_output(self):
        #データベースから値を抽出
        conn=sqlite3.connect(self.db)
        c = conn.cursor()
        select_sql = 'select * from article_match'
        c.execute(select_sql)
        match_rate=c.fetchone()
        conn.commit()
        c.close()
        conn.close()
        return match_rate
```

細かい処理が必要なのですが、<mark>基本的にはsqlite3.connect（）でデータベースを作成し、executeメソッドでSQLを実行していきます。</mark>

### PythonでWebアプリケーションを作成

ここの部分が一番重いですね。HTMLも作成するのでPython以外の知識もある程度必要になってきます。

こちらの記事をはじめに読んでいただくと理解が進みやすいと思います。

有意差を算出してくれるWebアプリケーションを作成しています。

<https://toukei-lab.com/python-flask>

今回のプログラムで特別行っているところはローディング時にローディングのgif画像を差し込むという処理です。

```css
/* ローディングGIF */
  #loading {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0,0,0,.5);
  background-image: url(../static/images/325-88.gif);
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-position: center center;
  background-size: 50px 50px;
  }
```

```javascript
$.ajax({
        type:'POST',
        url:'/output',
        data:textData,
        contentType:'application/json',
        //リクエストが完了するまで実行される
        beforeSend: function(){
          $('#loading').removeClass('hide');
          },
        // 非同期通信が成功したら実行される
        success:function(data){
          $('#loading').addClass('hide');
          var result = JSON.parse(data.ResultSet).result;
          $("#match1").text("類似度は"+result+"%です");
        }
      });
```

これがあるとユーザーにとっては計算中なんだなということが分かり親切ですが、あってもなくても構いません。

```python
nc = Flask(__name__)
bootstrap = Bootstrap(nc)

@nc.route("/")
def check():
    return render_template('sr_all.html')

@nc.route('/output', methods=['POST'])
def output():
    #json形式でURLを受け取る
    url1 = request.json['url1']
    url2 = request.json['url2']

    word_list=[]
    url=[url1,url2]
    sc=Scr(url)
    texts=sc.geturl()
    for text in texts:
        word_list.append(mplg(text))

    wl=CalCos(word_list)
    vecs=wl.tfidf()
    match_rate=wl.cossim(vecs[1],vecs[0])
    #DB格納
    article = (url[0], url[1], match_rate)
    dbname = 'article.db'
    db=Db(dbname)
    db.db_input(article)
    match_rate=db.db_output()

    return_data = {"result":round(match_rate[2]*100,1)}
    return jsonify(ResultSet=json.dumps(return_data))
```

Flaskを使ってWebアプリケーションを作成する部分は少し複雑ですが、こういうもんだと思って覚えるしかありません。

HTMLとの整合性が合うように命名等気を付けましょう！

これで終了！

Flaskを使う場合は<mark>pythonファイルと同じディレクトリにtemplatesフォルダを作成し、その中にhtmlファイルを置かないといけないので注意しましょう！</mark>

画像ファイルはimgフォルダ、css・jsはstaticフォルダと決まっています。

ちなみに今回はURLでもテキストでもどちらを入力しても判定できるようなUIにしました。

おまけですが、最後に作ったWebアプリケーションをHerokuというサービスでデプロイするステップを記事にしています！

<https://toukei-lab.com/heroku-python>

Webアプリケーションを作ったら色んな人に見てもらいたいですよね！

そんな時はぜひ<mark>Herokuを使ってみてください！</mark>

:::warn
昔はHerokuには無料プランがあったのですが、現在は無料プランがなくなってしまっています。もし簡易的にアプリを作って共有したい場合はngrokというツールを使うとよいでしょう！

以下にGoogle Colabにて[ngrok](/ngrok)を使って類似度アプリを実行するコードを置いていきますので参考にしてみてください。

途中のAuthtokenは自分でngrokに登録して取得し記載する必要があります。

<https://colab.research.google.com/drive/1ZkmyE6_2vQttOVQKfmpiDwb7vUtQjuLO?usp=sharing>

ngrokに関しては以下の記事をチェックしてみてください！

<https://toukei-lab.com/ngrok>
:::

このスクリプトをまねて何かWebアプリケーションを勉強がてら作ってみてくださいねー！

:::talk{who="umatan"}
これが出来ればPythonの勉強は一通り出来たことになるよ！
:::

## Python勉強におすすめのサービス

最後にこれらの<mark>Python勉強を進めるおすすめサイト・サービス</mark>を紹介していきます。

ある程度、本で学ぶこともできますが<mark>正直しっかり学ぶならサービスを利用した方が効率が良いです。</mark>

何回か登場しているサービスもありますが、最後にまとめておきましょう！

<table class="table">
<thead>
<tr>
<th>サービス名</th>
<th>オススメ度</th>
<th>価格の安さ</th>
<th>サポート体制</th>
<th>どんな人におすすめ？</th>
<th>公式サイト</th>
</tr>
</thead>
<tbody>
<tr>
<th><a href="#テックアカデミー" rel="noopener noreferrer">テックアカデミー</a></th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中2.5点" data-value="2.5"></span></td>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td>パーソナルメンターが欲しい</td>
<th><a href="https://techacademy.jp/" target="_blank" rel="noopener nofollow">テックアカデミー</a></th>
</tr>
<tr>
<th><a href="#udemy">Udemy</a></th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中4.5点" data-value="4.5"></span></td>
<td><span class="stars" role="img" aria-label="5点中2.5点" data-value="2.5"></span></td>
<td>特定の領域を深堀りして独学で学習したい</td>
<th><a href="https://www.udemy.com/courses%2Fsearch%2F%3Fq%3DPython" target="_blank" rel="noopener nofollow">Udemy</a></th>
</tr>
<tr>
<th><a href="#pyq" rel="noopener noreferrer">PyQ</a></th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中1.5点" data-value="1.5"></span></td>
<td>環境構築せずとりあえずPythonを触ってみたい</td>
<th><a href="https://af.moshimo.com/af/c/click?a_id=1419635&#x26;p_id=1166&#x26;pc_id=1793&#x26;pl_id=20541&#x26;guid=ON" target="_blank" rel="noopener nofollow">PyQ</a></th>
</tr>
<tr>
<th><a href="#スタアカ">スタアカ</a></th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
<td><span class="stars" role="img" aria-label="5点中4.5点" data-value="4.5"></span></td>
<td>データサイエンスをガッツリ学ぶなら</td>
<th><a href="https://toukei-lab.com/achademy/">スタアカ</a></th>
</tr>
</tbody>
</table>

### PyQ

[![PyQ　トップページ](/wp-content/uploads/2019/09/python-title.jpg)](https://af.moshimo.com/af/c/click?a_id=1419635\&p_id=1166\&pc_id=1793\&pl_id=20541\&guid=ON)公式サイト：[https://pyq.jp](https://af.moshimo.com/af/c/click?a_id=1419635\&p_id=1166\&pc_id=1793\&pl_id=20541\&guid=ON)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>3040円/月～</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
</tbody>
</table>

[PyQ](https://af.moshimo.com/af/c/click?a_id=1419635\&p_id=1166\&pc_id=1793\&pl_id=20541\&guid=ON)はPythonに特化したサービスです。

完全オンライン学習サービスで、<mark>定額制で全ての講座を受講することができます。</mark>

実際に手を動かすことをかなり重視しているので、<mark>楽しくモチベーションを保ちながら進めることが可能</mark>です。

インターフェイスが使いやすくてサクサク進められます。

![PyQ　インターフェイス](/wp-content/uploads/2019/09/pyq4.jpg)

プランはプロに質問ができて過去の質問も閲覧できるスタンダードプランと講座の受講だけできるライトプランがあります。

不安ならスタンダードプランをオススメしますが、ライトプランでも問題なく進められます。

:::tweet{url="https://twitter.com/yukisuzu66/status/1215860881159933954?ref_src=twsrc%5Etfw"}
Pythonの勉強してる時いろんな書籍とかProgateとか試したけど、PyQが一番よかったなぁと思う。料金もそんなに高くないし。最短で学びたいならPyQがオススメ

— yukisuzu (@yukisuzu66) [January 11, 2020](https://twitter.com/yukisuzu66/status/1215860881159933954?ref_src=twsrc%5Etfw)
:::

正直Pythonを素早く身に付けて実装してみたい！かつお金も安く済ませたい！ならPyQ一択です。

ただ完全自力なので、<mark>モチベーションが続かないと厳しいです。</mark>

以下の記事で[PyQ](https://af.moshimo.com/af/c/click?a_id=1419635\&p_id=1166\&pc_id=1793\&pl_id=20541\&guid=ON)の体験を基に詳しくレビューしています。

<https://toukei-lab.com/pyq-review>

::button[PyQ公式を見る]{href="https://af.moshimo.com/af/c/click?a_id=1419635&p_id=1166&pc_id=1793&pl_id=17949&url=https%3A%2F%2Flanding.pyq.jp%2Fml%2F"}

::button[価格・プランを比較する]{href="https://af.moshimo.com/af/c/click?a_id=1419635&p_id=1166&pc_id=1793&pl_id=17949&url=https%3A%2F%2Fpyq.jp%2Fpricing%2F%23personal"}

### Udemy

[![Udemy](/wp-content/uploads/2020/01/udemy-min-scaled.jpg)](https://www.udemy.com/courses%2Fsearch%2F%3Fq%3DPython)

公式サイト：[https://www.udemy.com/](https://www.udemy.com/courses%2Fsearch%2F%3Fq%3DPython)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>1200円～（コース売り切り型）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
</tbody>
</table>

Udemyは様々な専門知識が学べる世界最大の教育プラットフォーム！

Pythonに特化したプラットフォームではありませんが、<mark>Python関連の講座も大量にあります。</mark>

実際にPython関連のコースを20個以上受講して比較した記事を以下にまとめています！

<https://toukei-lab.com/udemy-python>

ちなみに僕自身がデータ分析×PythonやPythonで出来ることを網羅した講座を公開していますので是非こちらもチェックしてみてください！

:::ref
・[**【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座**](https://www.udemy.com/course/python-data/?referralCode=06466D9A805A034B1A97)\
・[**【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース**](https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084)\
・[**【入門から実践まで】Webマーケティングの全体像とデータ活用を短時間で学び実際にSEO集客ツールを作ってみよう！**](https://www.udemy.com/course/web-marketing-for-beginner/?referralCode=2F55DB2D1A30C8F41E4F)
:::

Udemyでは、<mark>好きな講座を売り切り価格で購入することができるので自分のレベルに合った講座だけをつまみ食いして勉強することが可能</mark>です！

また講座別の評価も明記してあるので、選びやすいです！

自分のレベルややりたいことにあわせて受講することが可能なのがいいですねー！

僕自身が講師のUdemy講座に関しては以下の記事で限定クーポン（最大90%オフ以上の割引価格）を配布しているのでチェックしてみてください！

:::box
[**Udemy講座の限定クーポン（最大90%オフ以上の割引価格）**](/my-udemy-course)

![Udemy講座一覧](/wp-content/uploads/2023/12/8e4dc268c674c6b0aefcf7b5865a1ef3.jpg)
:::

::button[UdemyのPythonコースを見てみる]{href="https://www.udemy.com/courses%2Fsearch%2F%3Fq%3DPython" note="＼30日以内なら返金無料／"}

### テックアカデミー

[![テックアカデミートップページ](/wp-content/uploads/2019/10/ccf2e2d6b257f0e31dafaf31b44c3999.jpg)](https://techacademy.jp/)

公式サイト：[https://techacademy.jp/](https://techacademy.jp/)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>163,900円～</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
</tbody>
</table>

[テックアカデミー](https://techacademy.jp/)は、<mark>オンライン学習ですが現役エンジニアのパーソナルメンターがつくので分からないところも解消しやすく書籍などで進めるよりは圧倒的に進みが早い</mark>です。

![テックアカデミー　価格表](/wp-content/uploads/2019/10/techachademy-price-min.jpg)

価格が高い分お尻に火が付きます。

<mark>メンターのレベルは非常に高いので自分のやる気さえあれば教材の範囲を超えた内容をガツガツ学ぶことが可能！</mark>

僕自身3か月のコースを1か月で終わらせて、応用をガツガツ学んでました。

やる気があって良い意味でメンターを使い倒せる自信があるのであれば[テックアカデミー](https://techacademy.jp/)は非常にオススメです！

※メンターは変更を願い出れば変えられます。

:::tweet{url="https://twitter.com/ayakapython/status/1067765508605263872?ref_src=twsrc%5Etfw"}
テックアカデミーのAIコースの先生、超美人！！だけどすごくしっかりしていて、進め方も的確だしこれはかなり力がつくという確信があります

— ayaka\@python (@ayakapython) [November 28, 2018](https://twitter.com/ayakapython/status/1067765508605263872?ref_src=twsrc%5Etfw)
:::

Python関連のコースは以下の3つがあります。

:::box
**・[Pythonコース](https://techacademy.jp/course/python)**\
**・[AIコース](https://techacademy.jp/course/ai)**\
**・[データサイエンスコース](https://techacademy.jp/course/datascience)**
:::

Pythonが全くはじめての場合はPythonコースを受講して、その後に画像認識などAIの活用まで踏み込みたいなら**AIコース**、機械学習などを使った予測やデータ分析を深めたいなら**データサイエンスコース**に移りましょう！

複数コースを並行して学習するセットパックもあります。

[テックアカデミー](https://techacademy.jp/)については　以下の記事で体験談をまとめていますので是非チェックしてみてください！

<https://toukei-lab.com/techacademy-review>

無料体験は事前に出来るので不安な方は試してみることをオススメします！

::button[テックアカデミーの公式サイトはこちら]{href="https://techacademy.jp/" note="＼今すぐ試す／"}

### スタアカ

[![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)](https://toukei-lab.com/achademy/)

公式サイト：<https://toukei-lab.com/achademy/>

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

ここで紹介した意外にもPythonを勉強できるスクールやサイトはあります。

以下の記事でまとめていますので是非こちらも参考にしてみてください！

<https://toukei-lab.com/python-school>

<https://toukei-lab.com/python-site>

## 初心者がPython勉強を挫折しないためには

![Feeling bad](/wp-content/uploads/2020/08/Feeling-Blue-amico-min.png)

最後にPython学習を挫折しない方法を少しだけお話しておきましょう。

初心者にとっては最初はわからないことだらけで不安なことが多いと思います。

:::talk{who="robotan"}
確かにプログラミングって結局勉強し始めても挫折しちゃうことが多いんだよ・・・
:::

:::talk{who="umatan"}
分かる分かる！ちょっとだけTipsを伝えておくよ！
:::

プログラミング勉強において重要なのは、<mark>**目的を明確にしておくことです。**</mark>

なんとなく惰性でプログラミングを勉強しようとしてもそう簡単には上手くいきません。

実際、大学院時代に流行りの手法だからとPythonに取り組んでみましたが結局上手くいかず・・・

今回のように実際に実装したいモノが明確にあれば習得しやすいです。（作りたいモノに対する熱量にもよります）

仮にPythonでできることのイメージを掴むためにはぜひ以下の書籍に目を通してみてください！

::product[【入門】Pythonを覚えてエリートリーマンへ！落ちこぼれリーマンの逆転劇]{url="https://www.amazon.co.jp/dp/B08YXH5LY4?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/41Wecy7znOL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/B08YXH5LY4?tag=statistic08-22&linkCode=ogi&th=1&psc=1" kindle="https://www.amazon.co.jp/dp/B08YXH5LY4?tag=statistic08-22&linkCode=ogi&th=1&psc=1"}

::product[俺たちひよっこデータサイエンティストが世界を変える]{url="https://www.amazon.co.jp/dp/B089FHMJMB?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/31GBCi--NDL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/B089FHMJMB?tag=statistic08-22&linkCode=ogi&th=1&psc=1" kindle="https://www.amazon.co.jp/dp/B089FHMJMB?tag=statistic08-22&linkCode=ogi&th=1&psc=1"}

手前味噌で恐縮なのですが、僕自身が書籍を出版しています。

Pythonで出来ることやデータサイエンスの業務イメージをつけてもらうのに最適だと思います。

ストーリー形式で分かりやすく書いていますので、ぜひ最初に目を通していただけると具体的な目標のイメージが湧くと思います。

価格は300円ちょっとですし、[Kindle unlimited](https://www.amazon.co.jp/kindle-dbs/hz/subscribe/ku?ref_=dbs_p_ebk_r00_pbcb_diupu0_hpe3p0\&passThroughAsin=B089FHMJMB&_encoding=UTF8\&shoppingPortalEnabled=true&_encoding=UTF8\&tag=statistic08-22\&linkCode=ur2\&linkId=6234f336129dd97c7c7749d98135bc96\&camp=247\&creative=1211)であれば無料で読めるのでぜひチェックしてみてくださいね！

もし、<mark>**実装したいモノが特にない場合、ある程度強制的に目標を作ることをオススメします！**</mark>

強制的に目標を作るにはやはり先ほど紹介した[テックアカデミー](https://techacademy.jp/)や[スタアカ](https://toukei-lab.com/achademy/)などのプログラミングスクールに通うことをオススメします！

基本的にはオンライン学習コンテンツを進めていくものになりますが、<mark>現役エンジニアのメンターがついて分からないことは素早く対応してくれます。</mark>

正直かなりの大金を払うことになるのでやらざるを得ない状況に追い込まれますしメンターチェックが入るのでお尻に火がつきます。AIコースを受講しましたが割と大変でした・・・

**教材というよりメンタリングにお金を払っているイメージ**です。

プログラミングを習得するのにオススメな方法について以下の記事でまとめています！

<https://toukei-lab.com/programming-keepstudy>

## Python勉強でよくあるFAQ

![Social strategy](/wp-content/uploads/2020/07/Social-strategy-amico.png)

最後にいままでの内容を簡単にPython勉強でよくあるFAQとしてまとめておきましょう！

:::details{title="Pythonを勉強するのにどんなサービスがあるの？"}
独学なら[Udemy](#udemy)や[PyQ](#pyq)がおすすめで自力はしんどいなら[プログラミングスクール](#python勉強におすすめのサービス)がおすすめです
:::

:::details{title="Pythonの勉強を挫折しないようにするためには？"}
なぜPythonを勉強したいのか、Pythonを習得して何がやりたいのか、目的を明確にしておくことがまず大事です。「[Python勉強を挫折しないためには](#初心者がpython勉強を挫折しないためには)」
:::

:::details{title="Pythonでどんなことができるの？"}
データ分析はもちろんのこと、スクレイピングやWebアプリケーション開発もできます。「[Pythonで勉強すべき基礎要素・応用](#初心者がpythonで勉強すべき基礎応用)」
:::

## 初心者のPythonの勉強法　まとめ

長々と書いてきましたが、結局のところPythonは手段でしかないので<mark>目的がないと習得もクソもありません。</mark>

なかなか続かないなー強制力が欲しいなーという人は[テックアカデミー](https://techacademy.jp/)や[スタアカ](https://toukei-lab.com/achademy/)などのプログラミングスクールに挑戦してみることをオススメします！

<https://toukei-lab.com/python-school>

どれを選ぶかは人それぞれですが、必ず<mark>Pythonを使って何を達成したいのかは念頭においておくようにしましょう！</mark>

<table class="table">
<thead>
<tr>
<th>サービス名</th>
<th>オススメ度</th>
<th>価格の安さ</th>
<th>サポート体制</th>
<th>どんな人におすすめ？</th>
<th>公式サイト</th>
</tr>
</thead>
<tbody>
<tr>
<th><a href="#テックアカデミー" rel="noopener noreferrer">テックアカデミー</a></th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中2.5点" data-value="2.5"></span></td>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td>パーソナルメンターが欲しい</td>
<th><a href="https://techacademy.jp/" target="_blank" rel="noopener nofollow">テックアカデミー</a></th>
</tr>
<tr>
<th><a href="#udemy">Udemy</a></th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中4.5点" data-value="4.5"></span></td>
<td><span class="stars" role="img" aria-label="5点中2.5点" data-value="2.5"></span></td>
<td>特定の領域を深堀りして独学で学習したい</td>
<th><a href="https://www.udemy.com/courses%2Fsearch%2F%3Fq%3DPython" target="_blank" rel="noopener nofollow">Udemy</a></th>
</tr>
<tr>
<th><a href="#pyq" rel="noopener noreferrer">PyQ</a></th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中1.5点" data-value="1.5"></span></td>
<td>環境構築せずとりあえずPythonを触ってみたい</td>
<th><a href="https://af.moshimo.com/af/c/click?a_id=1419635&#x26;p_id=1166&#x26;pc_id=1793&#x26;pl_id=20541&#x26;guid=ON" target="_blank" rel="noopener nofollow">PyQ</a></th>
</tr>
<tr>
<th><a href="#スタアカ">スタアカ</a></th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
<td><span class="stars" role="img" aria-label="5点中4.5点" data-value="4.5"></span></td>
<td>データサイエンスをガッツリ学ぶなら</td>
<th><a href="https://toukei-lab.com/achademy/">スタアカ</a></th>
</tr>
</tbody>
</table>

:::talk{who="robotan"}
なんだかワクワクしてきたよ！！Pythonを勉強したい！
:::

:::talk{who="umatan"}
是非Pythonをマスターしようー！
:::

Pythonを習得しつつも統計学・機械学習・ディープラーニング、そしてデータサイエンティストになるための勉強は続けていきましょう！

ぜひ以下の記事を参考にしてみてくださいね！

<https://toukei-lab.com/statistics-freshman>

<https://toukei-lab.com/machine-learning-fresh>

<https://toukei-lab.com/deep-learning-study>

<https://toukei-lab.com/data-scientist>

:::box{title="本記事で紹介したサービス"}
・[Udemy](https://trk.udemy.com/kOqmZL)\
・[PyQ](https://pyq.jp/)\
・[テックアカデミー](https://techacademy.jp/)\
・[スタアカ](https://toukei-lab.com/achademy/)\
・[Signate](https://signate.jp/)\
・[DataDojo](https://data-dojo.org/)
:::

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Pythonを勉強するのにどんなサービスがあるの？",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "独学なら<a href='#Udemy'>Udemy</a>や<a href='#PyQ'>PyQ</a>がおすすめで自力はしんどいなら<a href='#i-6'>プログラミングスクール</a>がおすすめです"
    }
  },{
    "@type": "Question",
    "name": "Pythonの勉強を挫折しないようにするためには？",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "なぜPythonを勉強したいのか、Pythonを習得して何がやりたいのか、目的を明確にしておくことがまず大事です。「<a href='#Python-10'>Python勉強を挫折しないためには</a>」"
    }
  },{
    "@type": "Question",
    "name": "Pythonでどんなことができるの？",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "データ分析はもちろんのこと、スクレイピングやWebアプリケーション開発もできます。「<a href='#Python-2'>Pythonで勉強すべき基礎要素・応用</a>」"
    }
  }]
}
</script>