この記事の要点
- 初学者がWEBサービスの仕組みを理解するのに最適なフレームワーク
- bottle.pyという1つのファイルで構成されていて、シンプルで理解しやすいために開発のハードルが低い
- 小規模の開発が得意であり、動作が速くてシンプルな構造WEBアプリの仕組みを理解するのに適している
以前、Pythonで初心者が作れるもの5つのうちの1つ、簡単なWEBアプリを制作するの中で使用するフレームワーク(フレームワーク:アプリケーションの開発に必要な機能を備えたソフトフェア)としてBottleを紹介していました。
Pythonのフレームワークには、Webアプリを作るために必要な部品がまとまっているので、使用することで書くコードの量を大幅に削減できるため初心者におすすめです。
Bottleは、小規模開発が得意なWEBアプリケーションフレームワークであり、WEBアプリの仕組みを理解するのに適しています。
今回はBottleの特徴をメリット・デメリットを知り、実際に簡単なサイトの表示からログインフォームの実装を通して理解してみましょう。
目次
PythonフレームワークのBottleとは?
マルセル・ヘルカンプ氏によって開発された個人開発規模に効果を発揮するWEBアプリケーションフレームワークであり、初学者にとってはWEBフレームワークの学習にとても適しています。
Pythonで一番小さいWEBフレームワークとも言われ、たったの1ファイルから構成されています。
簡単に実装でき、処理も軽いことから人気のあるマイクロフレームワークです。
Bottle公式ドキュメント
https://bottlepy.org/docs/dev/
Bottleのメリット・デメリットと他のPythonフレームワークとの違い
これまでFlaskやDjangoをご紹介しましたが、今回はBottleについてわかりやすく解説します。
Bottleは、Flaskと同じように小規模の開発が得意であり、動作が速くてシンプルな構造であるため初学者がWEBアプリの仕組みを理解するのに適したフレームワークだと言えます。
簡単にサイト間での値の送信やサイトのテンプレート化を行うことができ、他のフレームワークと比較して、とてもシンプルな構造が特徴です。
Flaskについてはこちらを参考にしてください。
反対に大規模開発で活躍するDjangoの特徴を振り返りましょう。
Djangoは管理画面が基本の機能として実装されており、ユーザー認証が可能でした。さらにMTVモデルを採用しているため、共同開発での効率化を可能にします。
Bottleではこのようなルールは存在しないため、個人開発を考えている方やWEBアプリの仕組みを理解したい方はBottleやFlaskの学習がオススメです。
Djangoについてはこちらの記事を参考にしてください。
まだ、Tornado(トルネード)というフレームワークは「WebSocket」がサポートされ、リアルタイム通信に適した高速に動作します。
それぞれの特徴があり、開発したいアプリの特徴に応じて使い分けましょう。
メリット
Bottleはbottle.pyという1つのファイルで構成されたフレームワークです。
シンプルで理解しやすいために開発のハードルが低くなります。
Pythonの標準ライブラリ以外に依存関係がないため完全に1つのファイルでWEBアプリを開発できる点も魅力です。
またシンプルさゆえに実行速度が速く、「Simple Template Engine」という独自テンプレート機能によってHTMLを簡素的に表示することができます。
デメリット
必要最低限であるため、必要な機能があれば自分で実装する必要があります。
例えばユーザー管理やデータベースの作成にはあまり適していません。企業が開発するような大規模なWEBアプリはフルスタックフレームワークであるDjangoを利用する方が良いでしょう。
また、インターネット上にあまり情報がなく、調べることが難しい点もデメリットだと言えます。
公式ドキュメントを読むのは初学者にとっては難しいかもしれません。Flaskと構造がとても似ているため、先にFlaskを学習してからBottleを学習すると共通点などが見え、WEBアプリ開発への理解が深まります。
Bottleのインストールからログインフォームまでの流れ
注意点:他のサイトではBottleを仮想環境にてインストールし、アプリの開発を行うといった流れがありますが、これは複数人での開発を前提としているためです。
Bottleについて理解を深めることが目的である本記事では理解しやすさを考慮し、仮想環境なしで構築します。
インストールとルーティングの方法
ターミナルを開き、次のコマンドでインストールします。
pip install bottle
これでインストールができました。
では、サンプルアプリを開発するためにapp.pyというファイルを作成します。
# インポート from bottle import route, run # 「.../sample」にアクセスされた場合 @route('/sample') def sample(): return 'sampleにアクセスしました。' # 開発用サーバーで実行 run(host='localhost', port=8000, debug=True)
ターミナルに記載されているように、「ctrl+c」でプログラムを終了できます。
「http://localhost:8000/sample」にアクセスすると”sampleにアクセスしました。”という文字列が表示されると成功です。
静的ファイルの表示
静的ファイルを扱い、HTMLファイルをルーティングに設定するためにapp.pyを次のように書き換えます。
今回は静的ファイルをviewsというフォルダに格納します。
app.pyの内容を次のように変更します。
from bottle import route, run, static_file @route('/static/') def static(file_path): return static_file(file_path, root='/.../views') if __name__ == "__main__": run(host='localhost', port=8000, debug=True, reloader=True)
これで静的ファイルのルーティングが設定されました。
file_pathを変数とし、views内におけるURLを返します。
また、run関数の引数であるreloaderをTrueに設定することでファイルを書き換えた際に自動的に再起動を行うため、検証・開発をスムーズに進められます。
注意点として、static_file関数の引数であるrootはローカル環境で実装している場合フォルダの絶対パスとなります。
例えば「/Users/tarou/Desktop/...」といったパスの指定になります。
では、静的ファイルを格納するviewsという名前のフォルダを作成しましょう。
このフォルダ内にindex.htmlというHTMLファイルを作成します。
<title>サンプルアプリ</title> <h1>ログインフォームの実装</h1>
このように中身を書き換え、app.pyを実行して「http://localhost:8000/static/index.html」へアクセスするとindex.htmlが表示されると成功です。
ログインフォームの実装
少し発展になりますが、ログインフォームをbottleで実装する方法をご紹介します。
まずはHTMLファイルにログインフォームを追加します。
<title>サンプルアプリ</title> <h1>ログインフォームの実装</h1> ユーザーネーム:<br> パスワード :<br>
次にapp.pyの中身を次のように書き換えます。
from bottle import route, run, static_file, request @route('/static/') def static(file_path): return static_file(file_path, root='/Users/ejimaatsuhiro/Desktop/仕事/pythonライティング/Bottle/views') @route('/login', method='POST') def login(): # ログイン処理 username = request.forms.get('username') password = request.forms.get('password') if username == 'admin' and password == 'sampleApp': return 'ログイン成功です。' else: return 'ユーザーネームもしくはパスワードが異なります。' if __name__ == "__main__": run(host='localhost', port=8000, debug=True, reloader=True)
フォームを利用するため、requestをインポートしておきます。
ログイン処理であるloginへアクセスがあった場合にusernameとpasswordを照合してその結果を文字列として返しました。
これにデータベースを追加し、実際のユーザーデータに書き換えることでログインフォームの実装が完了します。
Bottleの学習におすすめの書籍
Bottleに関する情報は他のフレームワークと比較すると少ないため、どのように学習すれば良いのかがわからなくなってしまいます。
インターネット上だと不正確な情報があり、それによるエラーで学習が捗らない可能性があるため、なるべく書籍での学習が良いと思います。
そこで今回は初学者におすすめのBottleの書籍を2つご紹介します。
Bottle入門
機能を少しずつ実装し、最終的にsqliteを利用したWEBアプリを開発します。
Bottleが動く仕組みやデータベースまでを扱うため幅広い知識が得られます。
付録としてVisual Studio Codeのインストールと設定もあり、プログラミング初心者には適した書籍だと言えます。
1日で理解するbottleの使い方 bottle超基礎入門
テンプレート・スタティックファイルの取り扱いやログイン処理まで行うアプリを自分で開発できるようになります。
短期間で学習できるため、フレームワーク選びに悩んでいる方や簡単に基本的なことを学習したい方にはオススメの書籍です。
Amazonで「1日で理解するbottleの使い方 bottle超基礎入門」を見る
もし書籍での学習が難しいと感じる場合は、プログラミングスクールも検討してみましょう。
「わからない点をすぐに質問できる」「学習の進め方の相談できる」などの理由で途中で挫折することなく、PythonやPythonフレームワークを習得できるでしょう。
テックジムでは、Pythonで簡単なゲームを作る講座をオンライン(無料)で開催していますので、プログラミングスクールを体験してみたい方は参加してみるといいでしょう。
ゼロから始めるPython入門講座(オンライン・無料)+【テックジム】
まとめ
今回はPythonのWEBフレームワークのBottleをご紹介しました。
Flaskと同様に非常に軽量かつシンプルな構造のため初学者がWEBサービスの仕組みを理解するのに最適なフレームワークだと思います。
ただ、Flaskよりは情報が少なく書籍も限られるため、Flaskの方が理解はしやすいかもしれません。
フレームワークは開発したいサービスや自分のスキルに合わせて選んでみましょう。
そして、WEBアプリを制作するのに慣れてきたら、ポートフォリオを作ってみましょう。
参考になるポートフォリオの例や、転職やフリーランスで作成するときのコツなど紹介していますので、参考にしてください!