プロトソリューション エンジニアブログ

プロトソリューションで開発しているWebサイト、iPhone、Androidアプリの開発情報などを発信していきます

AWS LambdaでMeCabを動かし、雑談APIを使って雑談するLINEBOTを簡易的に作る -- Part.1 --

入社10年目の横田です。

社内では、主にスマートフォンアプリ開発に携わり、スタートアップのプロジェクトでのシステム開発や、研究開発などもさせてもらうことが多いです。

私個人のことを、お話しさせて頂くと、いろんな分野に興味を持っていて、なんでもやりたがりの性格なので、Adobeソフトを使っての簡単なロゴ作成から、アプリ・フロント・サーバーサイドの開発や、カジュアルゲームからソーシャルゲームの開発まで行えたり、とにかくなんでもかんでもやるフルスタックのスキルを持っています。

今回は、自社のサービスである「Keep」のLINEBOTを作ってみたので、その紹介とともに、開発事例を紹介させていただこうと思います。

LINEBOT自体の開発方法については、いろいろな方が公開しているので、そこは割愛し、LINEBOT自体の作り方ではなく、ポイントを絞って説明させていただこうと思います。

今回は、下記のような内容になります。
※記事が長くなるので、数回に分けて説明します。



概要

今回は、簡易的なLINEBOTを作成するので、Lambdaだけで完結できるようにします。
当方の作業環境は、Macです。
Lambdaに置くプログラムソースは、Pythonで書いています。
Pythonの環境構築および、Pythonの文法を知っている前提で話を進めますので、ご了承ください。
全体の構成は、こんな感じです。
f:id:pdcokinawa:20170313012411p:plain
本来は、大量アクセスなどを考慮し、メッセージキューの仕組みなどが必要になります。
AWSで、メッセージキューの仕組みを組むのであれば、こうなります。
f:id:pdcokinawa:20170313012418p:plain

LambdaでのPythonサードパーティのライブラリの組み込み方法について

LambdaでPythonのサードパーティのライブラリを使うには、ちょっと特殊な作業が必要です。
Lambda では pip を使ってライブラリをインストールすることが、できないので、サードパーティのライブラリをzipパッケージにして、アップロードすることで、Lambdaに置いたPythonのプログラムからライブラリを使えるようになります。

例えば、以下のようなソースをLambdaで動かすとします。

import requests

def lambda_handler(event, context):
    res = requests.get("http://www.yahoo.co.jp/")
    return res.status_code

この場合、以下のようなディレクトリ構成のzipファイルを作成し、requestsのライブラリを含めて、アップロードする必要があります。

ソースディレクトリ
├─ lambda_function.py         # Lambda 関数
├─ requests                   # requests ライブラリディレクトリ
└─ requests-2.13.0.dist-info  # requests ライブラリディレクトリ

Python の HTTPライブラリである requestsをディレクトリに含めるには、以下のコマンドを実行します。

pip install requests -t .

tオプションをつけることで、ライブラリのインストール場所をカレントディレクトリにインストールします。

次に、zip コマンドを使って、すべてのファイルを圧縮します。

zip -r upload.zip *

upload.zipという名前のzipファイルができます。
このzipファイルをAWS Lambdaにアップロードし、実行してみると、Pythonのrequestsが使えるようになっているのが確認できるはずです。

今回は、ここまでです。
次回は、以下の内容を掘り下げて、説明していきます。

MeCabをAWS Lambdaで使う

雑談APIを組み込む

KeepBotの紹介

Keepの紹介

ご意見・ご感想あれば、コメントを頂ければ、お答えいたします。
では!また次回の更新をお楽しみに!

広告を非表示にする