見出し画像

新刊書籍がリリースされたらLINEへ自動通知するDjangoアプリを開発しよう【後編】

【更新内容】
・book.zip内のviews.pyのコメント記載内容が一部誤っていたため修正しました。(2019/3/18修正)
・本ノート本文中の「全体コードを改めて掲載します。」以下に記載したコードでLine通知処理処理が新規ではなく既存の書籍に対して行う記載になっていたため、新規書籍登録時に通知するように記載を修正。(2019/3/18修正)


この技術ノートでは、PythonとDjangoを駆使して楽天ブックスから自分が気になっている書籍情報を自動収集して、Djangoウェブアプリ上で書籍情報を管理したり、新刊情報を自動でライン通知してくれるDjangoアプリを開発するチュートリアルとなっています。

まずは、どんなDjangoアプリが完成するかこちらの動画をご覧ください。

最終的には、Herokuと呼ばれるWEBサーバ上にDjangoアプリを実装して、書籍情報を収集するジョブを自動スケジュールするところまで行いますので、完全自動で新刊情報をお知らせしてくれる仕組みが出来上がります。

Herokuにデモサイトを公開しましたので、併せて確認してみてください。

※デモサイトは、書籍情報の参照のみ可能となっています。
なお、本チュートリアルをご購入いただくと、完成版のサンプルコードファイルをダウンロードいただけます。

【本技術ノートの目次】

・このチュートリアルで学べること
・前提条件
・サポート体制
・開発環境
・本編

このチュートリアルで学べること

具体的に、以下のようなノウハウを身に着けることができます。

①DjangoのCRUDアプリの応用事例
②楽天APIを使って楽天ブックスの書籍情報を自動取得してDjangoサイトのDBに自動登録する。
③Dangoのカスタムコマンドの実装方法(バッチ処理化)
④バッチ処理内容を実行ログに記録する。
⑤収集した楽天ブックスの書籍情報で新刊情報をLINEに自動通知する仕組みの実装
⑥Djangoで長くなったソースコードを関数化して可読性をよくする方法
⑦HerokuにDjangoプロジェクトをデプロイして、楽天API経由の情報収集~DB登録、LINE通知を完全自動化する。
⑧WEB画面上からもリアルタイムで楽天API経由の情報収集~DB登録、LINE通知を行えるUIを実装します。

前提条件


こちらのチュートリアルは、以下を理解している方を前提としています。

1. Pythonの基礎構文がわかる人。
2. DJangoで基本的なCRUD実装手順を理解している方。
 ⇒本ノートではCRUD開発に関する説明は必要最小限にし、メインである楽天APIとDjango連携部分について詳細に説明しています。
3. python、Djangoのチュートリアルはやったけどもっと応用事例を学びたい人。
4. 新刊書籍がリリースされたらLINEへ自動通知するDjangoアプリを開発しよう【前編】の内容を理解されている方。

もし、DjangoのCRUD機能実装についてい理解が薄い方は、以下のチュートリアルをやっておくと学習がスムーズに進みますので、ご購入いただくことをお勧めします。

もし、本技術ノートの前編である以下のノートを終えていない方はまず、最初に前編からトライしましょう。

サポート体制

本記事に関する質問はいつでも受け付けています。
以下のいづれかの方法でお問い合わせいただければ返信致します。

・TwitterID「@shinya_hd」にDM
問い合わせサイトから質問
※業務都合上返信が遅れる場合があります。

開発環境

Windows10/Anaconda(python3.x)
※なお、本チュートリアルはPython3.6、Django2.1.7(2019/3/4時点の最新)で動作確認済みです。
※仮想環境の作成やフォルダ作成等の説明はWindows環境に合わせた手順になっていますが、Django開発に関して特にOSを意識いただく必要はないかと思います。

本編

それでは、早速本編に入りたいと思います!

仮想環境の作成

今回は、「book」という名称の仮想環境を作成します。
MS-DOS画面が起動したら以下のコマンドを実行してください。

mkdir c:\django\venv
cd c:\django\venv
python -m venv book

続いて、作成した仮想環境を有効化(Activate)します。
先ほどのDOS画面上で以下のコマンドをコピ&ペーストして実行してください。

.\book\Scripts\activate

モジュールのインポート

Djangoで開発するためには、必要に応じてモジュールをインストールする必要があります。
今回は、以下の3つのモジュールをインポートします。

先程仮想環境を有効化したDOS画面上で以下のコマンドを実行してください。

pip install django
pip install django-bootstrap-form
pip install requests

※2019/3/9時点の最新バージョンは以下のようになっています。

Django (2.1.7)
django-bootstrap-form (3.4)
requests(2.21.0)


プロジェクトの作成

今回は、「book」という名称のDjangoプロジェクトを作成します。

以下のコマンドを実行してプロジェクトを作成しましょう。

cd c:\django

django-admin startproject book


開発サーバ起動

それでは、開発サーバを起動させてみましょう!
以下のコマンドを実行してください。

cd c:\django\book

python manage.py runserver

http://127.0.0.1:8000/にアクセスして以下の画面が表示されればOKです!

画像1

言語設定(英語⇒日本語)

以下のフォルダにあるsettngs.pyを開きます。

C:\django\books\books\settings.py

下記の通りパラメータを変更して保存してください。

LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

ブラウザを更新して表示が日本語になればOKです!

データベースの設定

データベースは、DjangoデフォルトのSqliteをそのまま利用しますので、特別な設定は不要です。


アプリケーションの作成

アプリケーション名は何でもよいですが、今回は書籍情報を管理するアプリなので、書籍コード(ISBN)の名称をとって「isbn」という名前のアプリケーションを作成することとします。

先ほど開発サーバを起動したDOS画面はそのままにして、新しく別のDOS画面を起動しましょう。

DOS画面を起動したら、まず、以下のコマンドで仮想環境を有効化することを忘れないようにしてください。

cd c:\django\venv
.\book\Scripts\activate


続いて以下のコマンドでアプリケーション「isbn」を作成しましょう。

cd c:\django\book
python manage.py startapp isbn


モデルの作成

今回は、以下の2つのテーブルを作成します。

SearchWord:楽天ブックスに対する検索ワードを管理するテーブル
Book:楽天ブックの書籍情報を管理するテーブル

SearchWordテーブルに登録されている検索ワードを使って、楽天API経由で書籍情報を収集し、Bookテーブルに書籍情報を登録する。

という構成でテーブルを作成するものとします。

それでは、モデルの定義を行っていきます。

ここから先は

85,945字 / 42画像 / 2ファイル
この記事のみ ¥ 1,980

主にITテクノロジー系に興味があります。 【現在興味があるもの】 python、Django,統計学、機械学習、ディープラーニングなど。 技術系ブログもやってます。 https://sinyblog.com/