【初心者向け】pythonの勉強何がいい?失敗しない方法を徹底解説
「pythonを勉強しようと思っているけど、どう勉強すればいいか迷っている」
「始める前に知っておくと得することってある?」
これらは、python初学者によくある悩みですが、pythonには学び方や教材を正しく選び学習することはとても大切です。
この記事では、私がpython未経験から勉強した経験から、「これだけは抑えておいた方がいいこと」「勉強法での注意点」を余すことなく記載しました。
これから、pythonを勉強していく人はこの内容をよく読み、最短経路を選んで学習を進めていってほしいと思います。
目次(クリックで読みたい部分にジャンプできます)
pythonでwebアプリの制作をしてみるべし
さてpyuthonの勉強方法をいろいろ探していると思います。
結論から言うと、pythonの勉強方法としてwebアプリを作るというのをおススメします。
利点には以下のようなものがあります。
- 作りながら学べる
- 成果物ができる
- 挫折しづらい
作りながら学べる
pythonを始めてやる初心者のとる行動として、まず入門書などを買うのではないでしょうか。
そこでは、pythonで使われている文法やら使い方やらが解説されていると思います。
それではとてももったいない!と思うのです。
どうせなら、使える技術・知識をそのまま学んでみませんか?
入門書は、教科書のように一通りの知識を解説することが多いです。なので、そこから使う知識を選んで、実用レベルまでにするには、また一つのステップがあります。
webアプリは実際に身近にあるYoutubeやInstagramなどにも使われている技術を作りながら学ぶことができます。
つまり、この「入門書→実用レベルにする」というステップをwebアプリを学ぶことで一緒に始めることで、学習の効率が飛躍的に向上します。
Done is better than perfect(完璧を目指すよりまず終わらせろ)の言葉のように、まず知識を完璧にすることよりも、自分で実用レベルを作ってしまうことが大事です。
<COLUMN>
webアプリ作成の難易度は?
でも、python初心者が初めからwebアプリをやるなんて難しくない?
これは決して難しくありません。
簡単なwebアプリは画面にサイトを表示するだけになりますが、これはpythonで2-3行で終わります。
単純なものを作るだけなら、難易度は本当に高くないのです。
そして、そこから学んで成長していくことで、webアプリに肉付けできるようになります。
つまり、webアプリは自分のレベルに合わせて作成でき、学習するにはもってこいの方法なのです。
挫折しづらい
皆さんの挫折理由を聞いている中の一つに「自分が成長しているかわからない」といったものがあります。
これは、入門書でただ知識を入れているだけの人に起こるものではないかと思っています。
確かに知識だけいれているのは退屈です。知識だけ入れて、その通りになるかどうか確かめるという作業はとても退屈です。
これでは挫折してしまうのも無理ないでしょう。
webアプリを作りながら学ぶことで、これは解消できます。
先述しましたが、webアプリを作りながら学ぶことで、実際に使えるwebアプリを作ることができます。
これは、自分が知識をつけるごとに、自分のwebアプリは進化していくことになります。
だから、自分の成長が目に見えてわかるということなので、やる気につながり、次を学ぶモチベーションにもつながるわけです。
僕もpython未経験からwebアプリを作り始めました。躓くこともありましたが、それを乗り越えてwebアプリに機能を実装できた時は、とっても嬉しかったです。
以下の記事では、私がプログラミングを継続できたコツをご紹介しています。併せて読んでみてください。
成果物ができる
pythonを学んでいる過程で作ったwebアプリはずっと残ります。
これは、あなたの実績になります。
これから学ぼうとしている人に対し、githubに公開して教材としてみるのもいいのではないでしょうか。
また、簡単に今の自分のレベルを表せる指標になります。「私はこのくらいのレベルのものを作ることができます」と言うだけでなく、成果物があることで説得力が増すことでしょう。
このようにwebアプリを通して学ぶことで、知識をつけながら、自分の実績も同時に作ることができるのです。
ここまでは、pyuthonの勉強方法としてwebアプリを作るということをご紹介してきました。
ただその勉強する前にも、必ず知っておいてほしいことがあります。以下ではそれについて説明していきます。
pythonの勉強方法を選ぶ前に知っておくべきこと
pythonの勉強方法を選ぶ前に必ず知っておくべき知識があります。
それは、以下のようなものです。
- 最低限のHTML/CSSの知識が必要
- どのフレームワークを使うか
最低限のHTML/CSSの知識が必要
pythonの勉強で、webアプリをやるにしろ、必ずHTMLの知識は必要になります。CSSの知識はあれば役に立つという程度です。(ただ知っておくに越したことはありません。)
ちなみにここでは、HTML/CSSをよく知らない人のために簡単に解説します。(もう大丈夫だよ。って人は読み飛ばしてください)
HTML/CSSとは
HTMLとは
HTML (Hyper Text Markup Language ) はwebページを記述するための言語です。
いま私たちが、PCやスマートフォンで見ているページのほとんどは、HTMLで記述されています。
別ページへのリンクや、画像や動画などのマルチメディアを挿入したり、見出しや段落といったドキュメントの構造も表現できます。
以下が最も単純なHTMLファイルです。
<!DOCTYPE html>
<html>
<head>
<title>サイトのタイトル</title>
</head>
<body>
<h1>見出し</h1>
<div>ここにコンテンツ</div>
</body>
</html>
CSSとは
CSS (Cascading Style Sheets) とは、HTMLやXMLの要素をどのように装飾するのかを支持する仕様の一つです。
CSSを使うと、HTMLの文章要素の表示方法をカスタマイズできます。以前はHTMLにデザイン要素も書き込まれていました。
しかし、文章構造から装飾とデザインを分離させるという理念のもと実現されました。
h1 {
backgorund-color: black;
color: white;
}
このようなHTMLCSSはwebで表示されているものほとんどに使われています。
pythonを学ぶ上で必要な知識となるので、必ず覚えておくことをおススメします。
どのwebフレームワークを使うか
pythonを学ぶ利点として、「豊富にあるライブラリを活用できる」ことがあげられます。
ライブラリの中にwebフレームワークも含まれています。このフレームワークを通してpythonを学習することで、webアプリの制作に大いに役立てることができます。
ここでは、webアプリの制作を支援するwebフレームワークの代表的なものをご紹介します。
代表的なwebフレームワークには以下のようなものがあります。
- django
- flask
- Bottle
- Tornado
結論から言うと
どのフレームワークがおススメか
初心者がこれからpythonを始めるのに適しているのは、「Flask」だと言えます。
初めはいろいろな種類の小さなwebアプリを作ることが多いと思います。
また、フレームワークを使うために学習量が多いと、その分実際に動かすまでの時間が長くなり、結局webアプリを作ろうと思った意味が薄れてしまいます。
Flask は
- 学習量が少ない
- シンプルで手軽にプロジェクトを開始できる
- 設定ファイルや決まり事が少ない
などの利点があります。
つまり、初心者が初めて触るにはとても適しているフレームワークだと言えます。
私はpython未経験から、初めのフレームワークをflaskから勉強しました。
その経験から、flaskを学ぶ欠点も挙げておきます。
flaskを学ぶ上で、日本語の書籍があまり多くないということです。
なので、私は基本書籍で、+解説しているサイトを見たりして補っていました。
(書籍の中にも初心者におススメの書籍、買ってはいけない書籍があります。
ただ、今回それも書くと冗長になるので、別ページに記載しようと思います。m(__)m)
Django
Django(ジャンゴ)とは、webアプリケーションの開発で必要な様々な機能を実現した、フルスタックのwebフレームワークです。
Instagram や Pinterest , Mozilla, Nasam Bitbucket など多くの有名webサービスがDjangoを採用しています。
そのため資料が多く学びやすい環境は整っていると思います。
Flask
Flaskは、必要最低限の機能を備えたフレームワークです。
最低限と言いつつも、テンプレートエンジンや、開発用のサーバーやデバッガ、ユニットテストのサポートなど、基本的な機能を一通り備えています。
余計な機能がないので見通しが良く軽快に動作することがメリットです。
Bottle
「bottle.py」という1ファイルで成り立っているシンプルで超軽量なフレームワークです。
それでも、URLルーティング機能やシンプルなテンプレートエンジンといった機能を持っています。様々なプラグインが用意されており、機能を拡張することもできます。
1ファイルなので、フレームワークの仕組みを学ぶのにも適しています。
Tornado
Tornadoは非同期処理に優れたネットワーク処理のためのフレームワークです。
WebSocketsを利用したリアルタイム通信や、大量のリクエストに対応する非同期通信が可能です。
そのため、チャットアプリなど継続的にユーザとやり取りが発生するアプリの開発に利用されます。
まとめ
今回は、「pythonの勉強法は何をすればいいか」について解説いたしました。
以下の記事では、flaskを用いた簡単な「ログイン機能」を実装&解説しています。ぜひ併せて読んでみてください。