Reminderのクラウドアプリケーションプラットフォームとして利用しているのがHerokuです。Herokuは2007年創業の企業で、2010年にセールスフォース・ドットコムに買収されたPaaSの草分け的存在です。Herokuを選んだ理由はやはり無料で使えること(アプリの総合月間利用時間が1,000時間まではクレジットカードを登録すれば無料)が一番大きかったのですが、データベースにPostgreSQLが使えること、使ったことは無かったもののDjangoというPythonで実装されたWebアプリケーションフレームワークにすごく魅力を感じたことが決め手となりました。ReminderではSendGridというメールサービスも利用しています。Herokuのダッシュボード画面(laundryroomというアプリ名にしています)Herokuの使い方を覚えるクラウドアプリケーションプラットフォームをHerokuに決めたので、Herokuの使い方を覚えなくてはいけなくなりました。」を選ぶと言語に応じたステップバイステップガイドを選択する画面になります。2017/11/06現在ぼくはPythonを使うと決めていたので迷わずへびを選びました。すると15項目からなるメニューと最初の項目「Introduction」の内容が表示されます。Introductionには、簡単なDjangoアプリをデプロイするチュートリアルを”数分”で行うこと、”もう数分”を使ってHerokuの動作の仕組みを学ぶとか書いてあるのですが、これが結構な無理ゲーでネイティブでもそんな短い時間じゃできないだろうと思える感じです。少なくても”数分”ではなく”数十分”は覚悟しましょう。Introductionにはチュートリアルを行う上での前提が書かれています。3.6がインストール済みPipenvがインストール済みPostgresがインストール済みぼくはセンサーアプリをラズパイで開発していたので、そのままウェブアプリもラズパイで開発を行うことにして、上の前提をラズパイで整えてチュートリアルを進めました。Heroku」もやって、本命のDjangoアプリの作り方を学ぶ準備を整えました。started」を行って覚えました。started」が「さぁ始めましょう。」に変わって、萎みかけていたやる気を復活させてくれると思います。」の最初のコンテンツ「Djangoの概要」をざっと見てみたら、概要よりもちょっと突っ込んだ内容になっているという印象を受けました。Djangoを知らない人は、先にWikipediaのDjangoページを読んだ方がどういうものか理解できると思います。Djangoの概要が(なんとなく)理解出来たら、ちゃっちゃとチュートリアルを始めてみましょう。この世界、習うより慣れろです!チュートリアルでは簡単な投票アプリを作るので、まずそれをローカル環境で動かせるようにして、その後Herokuの使い方で行った内容を参考にしてHerokuで動かしてみましょう。Reminderのウェブアプリを作りました。ここではDjangoのキモとなるmodels.pyとurls.py、views.pyを簡略化した形で紹介します。Reminderのメイン機能はMachineモデルだけで実現しています。センサーアプリのクラウドへのリクエストに対応するのがbuilding,floor,machine,powerフィールドです。machine_typeとlayoutは画面表示の識別用フィールドで、emailはfacebook連携で得られたメールアドレス用のフィールドです。unique_togetherはこのモデルがユニークになるフィールドの組み合わせを定義しています。ここでは説明を簡略化するために、Machineモデル以外のモデル、Adminサイト用の定義、フィールドの値の定義を省いたmodels.pyを載せています。unique_together=("building","floor","machine")urls.py説明を簡略化するために、ウェブアプリの画面表示用とセンサーアプリのリクエスト用のURLとビューの関連付けだけにしています。URLは正規表現を使用して有効なURLのパターンを記述します。<>で囲まれた文字列はリクエストの文字列が入った変数として関連付けされたビュー内で利用することができます。name='receive'),]views.py説明を簡略化するために、ウェブアプリの画面表示用とセンサーアプリのリクエスト用のビューだけにしています。どちらのビューも始めにステータスコード404を返す場合の処理を行っていて、リクエストが条件に合わない場合をはじいています。Reminderの画面情報を返しています。Djangoの仕組みでは取得できない情報があったため、SQL文を直書きしている部分があります。receiveビューはセンサーアプリからのマシンの電源ステータス(r_power)で該当するMachineモデルのデータを更新し、電源ステータスがOFFの場合はメールアドレスがあるとメールを送信します。Reminderを導入してみたい!興味がある!という方は、プロフィール欄のメールアドレスにお問い合わせください。miniの粗悪品に注意!ESP8266月別アーカイブはてなブログをはじめよう!IntellectualCuriosityさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。