はじめに
前回は、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)【プロジェクト作成編】] (http://qiita.com/carat_yoshizaki/items/926f702198bdfe8c6bd2) |
3 | [PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(3)【アプリケーション作成・DB設定編】] (http://qiita.com/carat_yoshizaki/items/c9a5299b77b99ff07e4a) |
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のバージョン確認は以下の通りです。
$ python3 --version
Python 3.5.2
$ pip3 install django==1.10.3
$ 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
という名前のディレクトリが作成され、ディレクトリ構造は以下のようになっています。
$ 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アプリケーション作成後の設定
アプリケーションを作成した後は、諸々の設定が必要になりますが、ここでは最低限必要なもののみを紹介します。
# 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を使用していきます。
$ 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ページが表示されるか確認しましょう。
$ 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/ へブラウザからアクセスします。
まとめ
これでローカルの開発環境が整いました。
Line botはローカルではなく、リモートのサーバーにこのWebアプリケーションを置かないと動作させることが出来ません。
そこで、次回はサーバーへこのアプリケーションを同期させるところまで解説していきます。
次回の解説記事
LINE BOTの作り方を世界一わかりやすく解説(3)【Gitでサーバーとの連携編】
おまけ
フォローお待ちしています!
- Qiita: Carat 吉崎
- twitter:@carat_yoshizaki
- はてなブログ:Carat COOのブログ
- ホームページ:Carat
サービス紹介
「数学→プログラミング→Webアプリケーション」まで一気に学べる機械学習のマンツーマン家庭教師サービス「キカガク」に興味のある方はお気軽にご連絡ください。