そんな疑問を解消するために、今回はPythonでWebアプリを開発するまでにどういったことを学べばいいのか?っていうことを書いていきたいと思います。これからPythonを使って何か開発していきたいって思っている人は参考にしてみてください。
この記事で分かること
- Pythonでできること
- PythonでWebアプリケーションを動かすための知識
- Webアプリケーションを作るための学び方
読み終わるころにはどうやってアプリケーション開発をしていけばいいのか分かっていることでしょう。ではやっていきます。
Pythonでできることを知る
Pythonを使えば色々できますよね。このサイトでも少しだけど、Python使っていくつかやってきました。
ただこれらはWebアプリとして作ったわけじゃなくて、単にPythonのコードを実行して何かを行ったっていうだけです。ただ上にあげた記事だけでもできそうなことは多いですよね。
- OpenCVを使った画像処理
- ちょっとした動画編集
- 人工知能関連
- ・・・
これらはイメージしているWebアプリ開発とはちょっと違うと思うけど、Webアプリに組み込むこともできる。
初心者でPythonで何か動かしてみたいっていう方は、前にこんな記事を書いたから参考にしてみてください。
もちろんこれ以外にもたくさんのことをPythonでできて、機械学習からブロックチェーン関連・Webアプリケーション開発・画像処理・自然言語処理・作業の自動化・・などなど様々。
Pythonはバックエンドの言語
Webアプリ開発ではフロントエンド・バックエンドと別れることが多いけど、Pythonはバックエンドの言語。
Webアプリを作るならPythonを使って画面から送られてきたデータを処理したり、DBと接続してデータの取得や挿入、削除をしたりすることが多いはず。
Pythonはバックエンドの言語なので画面から入力されたデータを加工したりといったことが得意です。
PythonでWebアプリケーションを動かすために知ること
Pythonでアプリを開発するにはPythonの文法等の知識も必要だけど、それ以外にもいろんなことが必要になってくる。順番に見ていこう。
画面を作るのに必要なHTML・CSS・JavaScript
HTML・CSS・JavaScriptはフロントエンドで使うもの。JavaScriptはサーバーサイドでも使えるけど、PythonでWebアプリケーションを作る際には画面に動きをつけたりでしょう。Pythonで画面から入力したデータを処理して、それを画面に描画するっていうのが流れ。
Webアプリには画面があるものだから、その画面を作る知識がないとダメですよね。それがHTML/CSS/JavaScriptです。JavaScriptは使わなくても作れるけど、HTMLとCSSは必須だ。
データベースに問い合わせるSQL
SQLはデータベースに対してあれこれ命令することのできるやつ。データベースにデータを挿入したりデータを引っ張り出してきたりすることができる。
データベースを使わないアプリケーションならSQLを使うことはないけど、Pythonを使うならきっと使います。
DBにPythonが何かを命令するときにSQLは使われる。SQLが実行されないとデータにアクセスできないからユーザーが入力して保存したデータなどは取り出せなくなってしまう。
フレームワークであればSQLを直で書かなくても、フレームワークが用意している記述を書けばDBへの問い合わせはできる場合が多いからちょっと楽だと感じるかもしれない。
データを保存するデータベース
データベースがなければデータを保存することができません。ブラウザに保存とかもできるけどちょっと特殊です。Pythonでアプリケーションを作って、何かフォームに入力したらそのデータってどこに保存しますか?そうデータベースです。
データベースの種類もいくつかあるけど、よく使うものを挙げると以下の2つ。
- Mysql
- PostgreSQL
このどっちかを使っておけば間違いない。SQLの書き方がどっちのデーターベースを使うかでちょっと変わるけど、大して変わりはないからどっちかできればもう一つも掴めるでしょう。
個人的にはMysqlの方が好きです。PostgreSQL使うとSQL書くときMysqlでできたことができなかったりしてちょっと面倒。
Pythonのフレームワーク
Pythonでアプリケーション開発をするときに何を使って開発するか迷いますよね。フレームワークを使わなくても開発できるけど、フレームワークを使った方が最初から色々用意してくれるから楽です。
フレームワークはいくつもあるけど、Webアプリ開発を考えたときに有名なものはこんな感じ。
DjangoやFlaskなんかは有名だから聞いたこともあるでしょう。Bottleは1ファイルで構成される超絶シンプルなフレームワーク。Tornadoはちょっと違っていて長時間のポーリングやWebSockeなどを扱いたいなら良さそうですね、使う用途を選びそうです。
Webアプリを作る際には自分がどの程度のものを作りたいかによって使うものも変わってくるはずです。
作成したアプリケーションの公開先
Webアプリを開発したらそれをどこかにデプロイしてネット上に公開しないといけないですよね。AWSのサービスを使ったりGCPの何かを使ったり、VPSを使ったりHerokuのようなPaaSを使ったり選択肢はいくつかあります。
- AWSのEC2
- AWSのECS
- GCPのGCE
- GCPのGKE
- Heroku
- VPS
- ・・・
個人的には個人でちょっと作るぐらいならできるだけ難しくないものを選びたい。AWSとかGCPを使うと最初公開するのに結構しんどい思いをすると思うから公開はどこにするのかは調べておこう。
公開・運用にお金は大体かかる
静的なページだけとかだったらお金かからないようにするのは簡単だけど、Pythonでデータベース使ってとかやるとお金は基本かかります。公開サーバーもそうですけど、データベースの使用量とかもかかってきてしまう。もし無料でやりたいならHerokuなどの無料で使えるものを検討しよう。
APIとして使えば安くはできるかな
お金をできるだけ考えずにやる方法を考えると、データベースはNoSQLのものを使ってAPIを作成っていうことが浮かびます。
この方法は初心者のうちはおすすめはしないけど、APIとしてPythonを扱ってデータベースはNoSQL対応のもの、フロントは別で作成するっていう場合結構安くできる。
- AWSのLambda + dynamoDB
- FirebaseのFireStore
- GCPのCloudFireStore
- ・・・
ただAPIとして使うことになるしNoSQLかあ・・・っていうことで見送りたい気持ちになる。リレーショナルデータベースを無料でもっと簡単に使えればいいんだけどなあ・・
ちなみにHerokuならPostgresもMysqlもアドオン使ったりして無料で使える。ただ無料ゆえ使いづらい部分はあったりするよ。
Qiitafa-arrow-circle-right【クラウドDB比較】無料枠で提供されるサービスレベル
GCPの無料枠も使える
GCPでは無料枠のものがあったり、新規の登録者には300$の特典があったりするからそれらを使ってサービスを公開するのもありです。
無料で使いたいなら無料枠の範囲を超えないようにしよう。
その他知っておいた方が良いこと
最低限上で挙げたものを知っていればアプリケーションを作って公開することはできるんじゃないかな、と思います。他にもNginxやApacheなどのWebサーバー、Dockerなどなど知っておきたいことはいっぱいあるけど、開発して余裕があったら勉強してみるでもいいでしょう。
環境を作るのにDockerは便利だから余裕あったらやっておきたい感。
PythonでWebアプリを作りながら学ぶ
必要な知識がなんとなくわかったら、Pythonでアプリケーションを作成していこう。最初は画面を作るHTML/CSSと裏側の処理をするPythonが必要なんだなぐらいで大丈夫です。
- Pythonの文法を勉強する
- PythonでWebアプリケーションを作る
- 作成したアプリを公開する
作りながら色々調べつつやることになるだろうけど、諦めなければきっと作ることができる。もし個人的に作るとしたらこんな流れでやると思う。
- ProgateやUdemyでPythonの文法を学ぶ
- プログラミングスクールを検討する
- DjangoかFlaskでWebアプリケーションを作る(DBはMysqlを使う)
- 公開する(無料でやりたいからHerokuかなあ)
ネット教材ならUdemy、効率よく学習したいならプログラミングスクールを検討します。昔プログラミングスクール通ったことがあるけど良いです。
DjangoかFlaskっていうフレームワークを使ってやるかなあと思います。DBはMysql。公開先は無料で使えるものを調べてっていう感じかな。公開先は開発する前に調べておくと良いです。公開先で対応していないものを使って開発すると後で作り直しとかあるので。
独学でのプログラミング学習はきつい
独学でほとんど知らない状態でやると分からないことだらけで絶望すると思います。
- どこから勉強すればいいのか?
- 教材は何を使えばいいのか?
- 分からないところはどう解決すればいいのか?
今はサブスク型の安いプログラミングスクールなんてものもあるので、検討してみるといいです。分からないところを聞ける環境は欲しい。
ココナラでプログラミング学習を助けてもらう
ココナラでプログラミングを教えてくれる人を探すっていうのも手です。少し見てみるだけでもかなりたくさんのものがある。
- プログラミング学習を手助けします
- 初心者歓迎!プログラミング講師が教えます
- Webプログラミングで分からないところを教えます
プログラミングで検索してみると多く見つかる。
料金は出品者によって変わるけど大体数千円です。自分の分からないところや疑問点を解消してくれるものをココナラで探してみるといいですね。
本で学習する
本をメインで使って学習するのはおすすめしないけど、サブ的な位置づけで学習していくのにはおすすめです。パソコンに向き合わない時間にだらっとしながら読むことができるのでいいですよね。
以下の記事でPythonも含めてAmazonのプログラミングの人気本を紹介しているので何か探している方は参考にしてみてください。
環境構築とデプロイは鬼門
アプリケーションの開発環境とデプロイは結構苦戦しがちだから、しんどくなる確率が高いです。詰まることは何度もあるだろうけど、なんとか踏ん張っていってください。Webアプリを作っていく中でエラーに何度もぶち当たると思うけど、その壁ぶち壊していきましょう。
ほぼ必ず壁にぶち当たる
自分でやってすんなり勉強が進んで開発できればいいですけど、なかなか一人だと進まないっていうことはよくあると思います。
- どういう範囲を勉強したらいいのか分からない
- エラーが解消できない
- 実装方法が分からない
などなどいろんな思いが頭をよぎります。以下の記事で勉強法を書いたので、もしそういったことに悩んでしまったら参考にしてみてください。
PythonでWebアプリ開発まとめ
Webアプリケーションの開発にはとりあえず以下の知識が必要なことは知っておきましょう。
- 画面を作成するHTML/CSSの知識
- 裏側の処理としてPythonやDBの知識
デプロイするときのことも知っておいたら楽だけど、最初は作っていろんなことを調べつつ何とかデプロイして公開してみるといいと思います。Webアプリケーションのデプロイは鬼門なので、最初は画面を作るHTML/CSSがあってPythonはデータを処理したりするのに扱うんだなあ・・・ぐらいで良いです。
それと独学での勉強に限界を感じたら他の人や環境を作ってみるといいと思います。