子ども向けプログラミング寺子屋『CoderDojo熊本』第1回目に来ていただいた方より、
こんな意見をいただきました。
その後しばらくして、とある出来事があり、
という想いがフツフツと沸き起こり、いざやってみることにしました。
正直なところ、
普通にホームページを作るだけならPython(パイソン)なんて使わず、
- HTML(エイチティーエムエル)
- CSS(シーエスエス)
- JavaScript(ジャバスクリプト)
で作った方がなにかと楽なんですが、
今回はスクレイピング(とあるサイトから情報を取ってくる)が目的で、
- スクレイピングやるならPython(パイソン)が慣れている
- 僕ではなくて同僚に使ってもらうのが目的
ということで、無料でWebページがつくれる『Heroku(ヘロク)』を使うことにしました。
※この記事ではプログラミングコードは出てきません。
Python(パイソン)でホームページをつくる前提知識
もし、まったくのIT初心者の方がPython(パイソン)でホームページをつくろうとすると、
こういった前提知識が必要になるかなと思います。
- ホームページとサーバーの関係 →書きました
- サーバーにファイルを移す方法(FTP(エフティーピー)/telnet(テルネット)/SSH(シェル)/Git(ギット)
- 仮想化:Vagrant(ベイグラント)またはDocker(ドッカー)
- パッケージ管理システム Git(ギット)
- Pythonが動くサーバー(Heroku(ヘロク)やVPS(ブイピーエス))
当初は順番に書くつもりだったのですが、
だったので、
先にこの記事を書くことにしました。ご了承ください。
Python(パイソン)でホームページをやるならフレームワークがめっちゃ楽
Python(パイソン)でホームページなりwebサイトをつくろうとしたら、
もちろん最初から一つずつ作り込むという方法もあると思うのですが、
偉大な先人達が、
Python(パイソン)をホームページ表示するための便利道具
を作ってくれているので、
それを再利用した方が効率的かなと思います。
Python(パイソン)をホームページ表示するための便利道具はいくつかあるのですが、
代表的なところだと、『Flask(フラスク)』と『Django(ジャンゴ)』があげられます。
無理やり弁当に例えるなら、
- Flask(フラスク)はのり弁当
- Django(ジャンゴ)は幕の内弁当
といった感じで、
『Flask(フラスク)』はホームページを表示させる最低限の機能だけ持っていて、
『Django(ジャンゴ)』はもっと多機能になっているようです。
ちなみに、他のWeb言語だと、
- PHP(ピーエイチピー)ならLaravel(ララベル)
- Ruby(ルビー)ならRubyOnRails(ルビーオンレイルズ)
という運動会ででてくる豪華な重箱みたいな便利道具があるのですが、
Python(パイソン)の弁当箱はそこまで多機能ではないようです。
個人的には、
という状態で、いきなり『Django(ジャンゴ)』だと覚えることが多いようだったので、手始めに『Flask(フラスク)』を選ぶことにしました。
Python(パイソン)でホームページを表示させる手順
今回はWindowsを想定しています。
ざっくりの流れは以下。
- VirtualBox(バーチャルボックス)インストール
- Vagrant(ベイグラント)をインストール
- Vagrant(ベイグラント)内にPython(パイソン)をインストール
- pip(ピーアイピー)やflask(フラスク)、virtualenvなどインストール
- flask(フラスク)の設定、ローカルで表示確認
- プロジェクトフォルダでGit(ギット)設定
- Heroku(ヘロク)プロジェクト作成
- Heroku(ヘロク)用にファイル作成
- Heroku(ヘロク)にファイルをアップロード
- Heroku(ヘロク)側で表示確認
もう初心者の方はわけわからんと思います。
僕も当初はわけわからず、とにかくググって調べ続けて、
ようやくwebページ構築できるようになりました。
参考にしたページはこちらです。
プログラミングコードはほぼこの記事をコピーすればOKです。
詰まったところが3箇所あって、
- ローカル表示できない-> http://localhost:3050 でOK
- heroku(ヘロク)にアップ後表示されない -> app.runのport設定を変更でOK
- heroku(ヘロク)にアップ後表示されない -> Procfileの記載ミス・訂正でOK
実はどうしても3番目がうまくいかず、『teratail(テラテイル)』というプログラマーの知恵袋的なサイトに質問したりしました。
その後自己解決。
当初は苦戦しましたが、ググって調べていくうちに少しずつ壁を乗り越え、
どうにかWebページが表示されるようになったので、
これからスクレイピング用のコードを書いていこうと思います。
さいごに
Python(パイソン)でホームページを表示させるというのは、なかなかマイナーなのか、
ほとんど書籍がないので、
とにかくググって仮説検証して前に進むしかないと思っています。
*繰り返しますが普通にホームページ表示させるだけならPython(パイソン)使わなくていいです。
Python(パイソン)でホームページを表示させることに限らず、
今まで自分がやったことのない未知の分野に挑戦するときは、
とにかくググって調べて1cmでも前に進むという体験が必要で、
これを小学生の時から当たり前のように繰り返していたら、
そりゃあこれからの時代に必須といわれる『創造的思考力』も身につくよなぁと思います。
今回の記事でいうと、
- 目的:同僚が使いやすいスクレイピングページをつくる
- 手段:Python(パイソン)とVagrant(ベイグラント)とFlask(フラスク)とHeroku(ヘロク)
という構造で、目的あっての手段なので、
手段を暗記するというよりもまず『何がやりたいか』ということが最優先なんだろうなと思います。
何がやりたいかを決めた上で、わからない事が出て来たら都度調べるというクセをつけるのが成長の近道なんじゃないかなと思います。
これからの時代はググるスキルも大事になってくるんでしょうね。
追記:この記事を書いた後で、ローカル環境とVagrant(ベイグラント)環境の同期で手間があり、
Anaconda(アナコンダ)+heroku(ヘロク)で対応の方がいいかもと思ってたりします。
ベストと思える環境は常に変わっていくので、都度 調べていくしかないかもしれませんね。
『Python』関連ではこんな記事も読まれています。
1. 【Python】手軽に試す方法2つとwebフレームワークについて【初心者向け】2. 【Python(パイソン)】でできる事の実例 じゃらんや楽天トラベルからデータをとってゴニョゴニョできちゃうんです
3. 【Python(パイソン)】でホームページをつくった時の話【Flask/Vagrant/Heroku】
4. 【Python】Flaskのチュートリアルがもっとわかるようになるまとめ【初心者向け】
5. 【Python】用語集まとめてみた。~Webサービスをつくりたい人向け~【初心者向け】※随時更新中
6. 【Python】でWebアプリをがっつりやるならDjango一択な4つの理由【初心者向け】
7. 【Python/Django】Webアプリのテンプレートなら『cookiecutter』がよさげ【簡単で安心】
8. 【Python/Django】mysqlとの接続があまりにあっさりしすぎて拍子抜けした話
9. 【Python/Django】webフレームワークを使う6つのコツ〜最短距離でアプリをつくるために【初心者向け】
10. 【Django】Webアプリのフォルダ構成のアイデア〜違うアプリで同じテーブルを使いたい!
11. 【Django】【Laravel】【RubyOnRails】を比較してみた【初心者向け】【体験談】
アオキのツイッターアカウント。