130
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

LINE BOTの作り方を世界一わかりやすく解説(2)【PythonのDjangoでローカル環境にBotアプリ準備編】

はじめに

前回は、Line Bot 用のアカウントを作成していきました。
今回から本格的に Line Bot 用のシステムを構築していきます。

Line Bot のシステム構築のために、PHPで書かれている解説記事をよく見かけるのですが、今回は Python を使用したシステムの構築を行っていきます。
理由は、Line Bot のやりとりする文章を解析し、それに対して、最適な回答をするといった「自然言語処理」を使用すする予定であり、Pythonはそういった自然言語処理系のライブラリが豊富であるためです。

そして、PythonのWebフレームワークでも最も代表的な「Django(ジャンゴ)」を使用して、Bot用のアプリケーションを作成していきます。
Djangoや他のWebアプリケーションをつくったことのある人であれば、このまま進めて頂いて大丈夫かと思いますが、初学者やDjangoの使い方を知っておきたいという方は、以前書いた解説記事が分かりやすいので、ぜひご覧下さい。

No. タイトル
1 PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(1)【環境構築編】
2 PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(2)【プロジェクト作成編】
3 PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(3)【アプリケーション作成・DB設定編】
4 PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(4)【ルーティング設定・MTVデザインパターン入門編】
5 PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(5)【Django shellでDB操作入門編】
6 PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(6)【MTVデザインパターン完成編】

開発環境

  • OS: Mac OS Sierra (10.12)
  • Python 3.5.2
  • Django 1.10.3 ※ この後インストールします

Macの環境を前提として話を進めていきます。

Pythonのバージョン確認は以下の通りです。

システムのpythonのバージョン確認
$ python3 --version
Python 3.5.2
djangoのインストール
$ pip3 install django==1.10.3
Djangoのバージョン確認
$ python3
Python 3.5.2 (default, Jun 29 2016, 13:43:58)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.get_version()
'1.10.3'

Line Bot の API 用プロジェクトを作成

まず、Pythonのプロジェクトを進めるための一番大きなくくりであるAPI用のPythonの仮想環境(VirtualEnvironment)を作成します。

$ python3 -m venv api

そして、この中にプロジェクトを作成します。
こちらも名前を api としています。

プロジェクトの作成
$ cd api
$ django-admin startproject api .

これで仮想環境が出来たのではないでしょうか。
api という名前のディレクトリが作成され、ディレクトリ構造は以下のようになっています。

ディレクトリ構造の確認(bin等は省略)
$ tree -L 2 api
api
├── api
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── bin
├── include
├── lib
├── manage.py
└── pyvenv.cfg

Djangoアプリケーションの作成

この api プロジェクトの中に、linebot というアプリケーションを作っていきます。
まず、pythonのwebフレームワークである Django をインストールします。
Djangoのバージョンは現在の最新版である 1.10.3 としておきます。

そして、linebotのアプリケーションをこの api プロジェクトの中で作成していきます。

アプリケーションの作成
$ cd api
$ django-admin startapp linebot .
$ tree -L 1 .
api
├── api
├── bin
├── include
├── lib
├── linebot
├── manage.py
└── pyvenv.cfg

Djangoアプリケーション作成後の設定

アプリケーションを作成した後は、諸々の設定が必要になりますが、ここでは最低限必要なもののみを紹介します。

api/settings.py(一部)
# Application definition
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'linebot',  # 追加
)
# タイムゾーンの変更
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
USE_TZ = False  # DefaultではUTCのタイムゾーンのため False に変更

データベース(SQLite)の設定

DBの設定を行います。
今回は特に初期設定から変更無しのSQLiteを使用していきます。

DBの設定
$ python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK

  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

サーバーの起動

では、まずローカルでサーバーを起動し、初期設定のWebページが表示されるか確認しましょう。

Webサーバーの起動
$ python3 manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
November 12, 2016 - 13:04:05
Django version 1.10.3, using settings 'linebot.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Webサーバーが起動すれば、http://127.0.0.1:8000/ へブラウザからアクセスします。

スクリーンショット 2016-11-12 13.05.49.png

まとめ

これでローカルの開発環境が整いました。

Line botはローカルではなく、リモートのサーバーにこのWebアプリケーションを置かないと動作させることが出来ません。
そこで、次回はサーバーへこのアプリケーションを同期させるところまで解説していきます。

次回の解説記事

LINE BOTの作り方を世界一わかりやすく解説(3)【Gitでサーバーとの連携編】

おまけ

フォローお待ちしています!

サービス紹介
「数学→プログラミング→Webアプリケーション」まで一気に学べる機械学習のマンツーマン家庭教師サービス「キカガク」に興味のある方はお気軽にご連絡ください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
130
Help us understand the problem. What are the problem?