さいごに「Firebase」と「Heroku」についてPythonによって動かすことができるFlaskですが、Djangoほど大規模なアプリを開発する必要はなく、簡単なAPI処理などを考えれば一つのアプリ開発の選択肢として考えられると思います。この記事では、話題のFirebaseをデータベースとしてFlaskアプリをHerokuへとデプロイするまでの手順を紹介します。モダンな技術を使っているので、今風の実装方法といって良いでしょう。本題に入る前に、「Firebase」と「Heroku」について軽くご説明したいと思います。Firebase(ファイアーベース)とはFirebaseとは、アプリケーションを運用する土台となるソフトウェアとなります。データベース作成から何かエラーが起きたときのレポート作成までさまざまな機能が搭載されており、バックエンドエンジニアの役割を担っているといって良いでしょう。「ウェブ」「IOS」「アンドロイド」「Unity」のバックエンドに対応しています。最初は「Ruby」のみの対応でしたが、現在では「Java」「Node.js」「Scala」「Python」「PHP」など様々な言語に対応しており、アプリのデプロイ先として幅広く使われています。Githubでの管理となるので扱いやすいという点もあります。Firebaseの設定それでは、Firebaseの設定から始めていくとしましょう!ログインGoogleアカウントでログインすると、設定画面が下記の画像のように表示されます。Platformとの連結は有料となります。project」をクリックすると以下のようにProjectnameとLocationを指定することができます。ロケーションは、「デフォルト」で良いと思います。project」をクリックし、プロジェクトを作成します。次に、データベースの設定をします。プロジェクトのメイン画面に移動し、「Database」をクリックします。database」をクリックします。node」を「Enable」にしてデータベースへのアクセスに関するセキュリティルールを設定します。これでデータベースへのアクセスが可能になります。settings」をクリックして、アプリケーションと統合させます。今回は、ウェブなので左から3番目のスクリプトボタンをクリックします。アプリの名前を入力します。無事、スクリプトを得ることができました。このスクリプトが認証キーとなりデータベースにアクセスすることが可能になります。基本的には、これをHTMLに貼り付けることで、データベースを操作できます(CRUD)。今回はテストなので、全てのIPからアクセスできるようになっていますが、アクセス制限をするなどのカスタマイズももちろん可能です。次に、自分のローカルコンピュータにいきます。Airを使用しているため、ターミナル(ウィンドウズだとコマンドプロンプト)で以下のようなディレクトリを構成します。この通りにディレクトリを構成しないと、Herokuへのアップロードの際にエラーがでるので気をつけてください。今回作るアプリは、先ほどを作ったデータベースを使ったTodoリスト作成です。今回の記事は、「モダンな技術を使ったアプリ開発とデプロイまで」というテーマなので、Flaskについては詳細に解説はしませんが、各スクリプトにコメントしていきたいと思います。Procfileまず、Procfileですが、以下のような設定がされています。UNIXと定義されており、Webサーバーとアプリケーションを接続させるためのインターフェースです。バインドするソケットの指定をします。(任意のIPv4アドレス)でデフォルトのポート番号5000をしています。appは、メインファイル名を指定します。app:appREADME.mdREADME.mdは、プロジェクトの詳細が書かれています。メインのコードとなりますまず、Firebaseで作成したデータベースのConfigをコピー&ペーストします。"*************"}次に、Configのデータを引数としてfirebase変数で初期化し、dbに接続します。箇所は、簡単にデータベースに書き込める例として表示しました。db.child("names").push({"name":"take"})コメントを外して実行すると、firebase側では以下のように書き込まれます。次に、Flaskの実行処理に移ります。基本的にはコメントで記載した通りの処理を実行します。Firebase上で、CreateとDeleteを使ったことになります。処理自体は非常にシンプルですが、応用すれば基本的なアプリは作れるのではないでしょうか。'__main__':#処理の実行app.run(debug=True)requirements.txt次のファイルは、requirements.txtです。ここには、必要なライブラリを置いておきます。herokuでも使われるので、重要です。runtime.txtruntime.txtは、Pythonのバージョンを指定しています。これも、Herokuで読み取られるファイルで置く必要があります。templatesフォルダtemplatesフォルダには、index.htmlが置いてあります。見た目は、BootstrapのCDNを使っています。以下の箇所で値を表示させています。endfor%}</div>これでファイルは全てとなります。実際に実行すると、firebaseと連携してプログラムが動きます。Herokuへのデプロイ準備として、Githubにコードをあげます。レポジトリはプライベートでもパブリックでも構いません。注意すべき点として、パブリックであげる場合は、Firebaseの認証キーを削除するようにしてください。Herokuへのデプロイ最後にHerokuへとデプロイします。基本的には、ファイルを同様に構成してチュートリアルにある通りにやれば問題なくデプロイできます。流れHerokuへのログインスクリプトをユーザー:herokuへとpushするこれで終了となります。さいごにFirebaseとHerokuを使うことによってかなりのリソースが節約されることがよくわかります。これまでデータベースの環境構築・設定などに使っていた時間を減らし、アプリの開発により注力できるようになると思います。Flaskは今後メンテナンスがされない予定になっているフレームワークです。(今の所Flask代替の筆頭で話題になっているのはResponderです。)Firebaseも最近はリアルタイムデータベースではなくFirestoreを使うのが主流になってます。社長と一杯飲みながらお話してみたい方はこちらミツオカフリーランスエンジニア様の募集はこちらにゃんこ師匠その他、お問い合わせはこちらミツオカお気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!一緒に働いてくれる仲間を募集しております!ライトコードでは、仲間を募集しております!当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。rightcodeエンジニア大募集中!私たちライトコードでは、エンジニアを募集しております。私服大歓迎のカジュアルな職場なので、お気軽にご応募ください!また、フリーエンジニアの方も募集しております。