【Python】プログラミング学習にBot開発をおすすめする理由





プログラミング学習に取り組んでいる人の中で、特に初心者の人はBot(ボット)開発をおすすめします。

 

Bot開発をおすすめする理由として、以下のポイントが挙げられます。

 

1. 環境が整っており初心者にもハードルが低い

2. 学習時の開発ネタを手に入れられる

3. プログラミングで重要な開発の流れを一通り学べる

4. 可視化された成果を得られる

5. 情報発信ネタにもなる

 

Bot開発ひとつであらゆる理由が挙げられますが、主に上記のようなポイントを抑えることができるため、はじめに取り組む学習目標としても、今後の学習のモチベーション維持を考慮しても効果的な内容として取り進めることができるかと思います。

 

 

今回は、そんなBot開発において初心者でもおすすめ学習の内容と、pythonにおけるLINE BotでのBot開発を解説していきたいと思います。

 


汎用性の広いPythonを0から習得するためのフロー及び実際にPythonで開発を行い開発案件を獲得するまでの筋道について解説しているチュートリアル資料と

コーディングの参考となる実際にPythonを使って作ったツールのソースコードを無料で配布していますので、こちらも併せてご覧ください。

初心者・入門者でも30日間で学習できるおすすめPython学習方法

 


おすすめのプログラミングスクールの比較・特徴をまとめた記事を執筆しております。

挫折することなく一直線にエンジニアを短期集中で目指している人はこちらから確認してください。

【比較表・無料体験あり】おすすめのプログラミングスクール3選!オンライン学習で完結!

 

Botとは何か

Bot(ボット)とは、一言で言えば作業を自動化することができるプログラムを指します。

 

 

多くのSNSでの通知などにも利用されますが、有名なもので言えばTwitterなどのBotです。

 

 

Twitterを利用されている人であれば、Twitter上で同じ内容を繰り返しツイートしているアカウントなどを見かけることがあるかと思います。

 

 

そういったツイートを自動的に繰り返し作業しているものがBotとなります。

 

 

今回取り扱うLINE Botに関しては、LINE上で自動的に返信を行うプログラムがLINE Botということになります。

 

 

様々な企業でも利用されており、配達サービスを展開しているヤマト運輸ではLINE Botを利用したサービスを提供しています。

 

 

このように、企業でも利用されるBotですが、Bot開発自体はプログラミング環境を整えることでプログラミング初心者であっても比較的簡単に取り組む始めることができます。

 

 

そのため、プログラミング学習を始めたばかりの初心者の人であっても、学習テーマ選びのひとつとしてBot開発は向いています。

 

プログラミング初心者であっても取り組める

先ほども前述しましたが、Bot開発は比較的簡単に取り組み始めることができる学習テーマとなるため、プログラミング初心者の人におすすめです。

 

 

Webアプリやスマホアプリなどを開発するよりも、現在では容易に取り組めるようになっています。

 

 

やはり、Webアプリやスマホアプリとなると学習コストが大幅に変化するため、学習の中で取り組むといってもハードルが高く設定されてしまいます。

 

 

その点、Bot開発は扱いやすい環境も整ってきているため、言語の種類にも影響はありますが「Python」「PHP」「Ruby」などの言語に触れてきている人であれば、開発することができます。

 

可視化された成果物のためモチベーション維持につながる

プログラミング学習の中で、学習自体を継続的に行うためにモチベーションの維持は重要になります。

 

 

そのため、学習時の成果をなかなか得られない環境では、学習が身についているか不安となりモチベーションの維持を図るのは困難になるかと思います。

 

 

特に学習を始めたばかりの人であれば、まずターミナルやコマンドプロンプトによるスクリプトファイル実行を繰り返し、実行画面上での結果だけを確認していることだと思います。

 

 

やはり、成果物につながる学習というのも非常にモチベーションと関わってくるため、LINE Botなどはひとつの最適な学習テーマにもなると思います。

 

 

そのため、普段利用しているLINE上でのプログラムを開発することができるBot開発は、目に見えた学習成果を得るためにもおすすめしたい学習内容になります。

 

プログラミング学習時のネタ探し

やはり多くの人がプログラミング学習において、頭を抱えるのがアウトプットするためのネタ探しだと思います。

 

「何を作れば良いかわからない。」

「学習テーマが決まらない。」

 

などの悩みを持つ人も少なくありません。

 

 

そもそもプログラミング学習を行いつつ開発までの流れに辿り着くのかという学習の幅に困惑することもあるかもしれません。

 

 

であるならば、やはりBot開発から取り進めるのもアリだと思いますし、アクションすればそのまま同じアクションを返してくれるオウム返しのようなプログラムから取り掛かりましょう。

 

 

まずは作成してみることが大事であって、一度作成したBotを改良していけば拡張機能なども作れるようになり、学習の幅も変化するかと思います。

 

 

その中で、開発の一部を理解することができてくることもあり、有用な学習テーマとして活用していただければと思います。

 

Bot開発からプログラミングを学ぶ

それでは、ここから実際にLINE Botの開発をしていきたいと思います。

 

LINE Developersへの登録

LINE Developersへの登録は、自身のLINEと連携して登録することができるので、簡単に済ませることができます。

 

 

登録が済んだら、Messaging APIという箇所を選択して、プロバイダ名とチャネルを作成していきます。

 

ここで、注意ですが筆者も”line”と”_(アンダーバー)”を利用して名前を作成していましたが、入力値として受け付けていなかったため、これら二つを取り除いた名前で作成すると、入力値を受付けてスムーズに作成することができました。

 

 

1. アプリ名
2. アプリ説明
3. 大業種・小業種
4. メールアドレス
5. プライバシーポリシーURL(任意)
6. サービス利用規約URL(任意)

 

これらの値を適切に入力していけばすぐに利用できるようになります。

 

 

作成後は、このように新規のチャネルを作成することで、利用可能な状態になります。

 

また、このチャネル基本設定の欄を利用していきます。

 

 

のちに利用することになるアクセストークンは、発行しておきましょう。

 

herokuへの登録

こちらもherokuへの登録を済ませて、アカウント作成しておきましょう。

 

 

メールアドレスとパスワードを決定すれば、簡単にアカウント作成することができます。

 

 

herokuページのPythonを選択していただけると、詳細なページにてCommand Lineという項目がありますので、そちらから自身のPC環境に合わせてインストーラーをダウンロードし、herokuが利用できるようインストールをしておきましょう。

 

PythonによるBot開発

今回利用するのが、Flaskと呼ばれるPythonにおけるwebフレームワークと、LINEが提供しているパッケージになります。

$ pip3 install flask
$ pip3 install line-bot-sdk

 

pip3を利用して各種インストールを実行しておきます。

 

デスクトップなどに今回作成するBot開発用のフォルダを作成しましょう。

 

そこにPythonの.pyファイルを作成していきます。

実装する内容を以下に記述しておきます。

main.py

from flask import Flask, request, abort

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)
import os

app = Flask(__name__)

#環境変数取得
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]

line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)

@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'


@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))


if __name__ == "__main__":
#    app.run()
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)

 

チャネルシークレットとアクセストークンの箇所は、事前にLINE Developersで発行されたものを貼り付けて利用していきます。

 

また、設定ファイルを作成する必要がありますので、各ファイルをフォルダの中に作成しておきましょう。

・runtime.txt

python-3.7.0

 

・requirements.txt

Flask==0.12.2
line-bot-sdk==1.5.0

 

・Procfile

web: python main.py

 

herokuの設定

ターミナルあるいはコマンドプロンプトを開き、特定のディレクトリまで進んでいただいた段階で、herokuへのログインを実行していきます。

$ heroku login
Enter your Heroku credentials:
Email: XXX@XXX
Password: ***

 

次にアプリケーションの登録を行います。ここで作成されたアプリケーションでは、のちにLINE Developersのチャネル基本設定にて利用するURLが発行されるので、書き留めておきましょう。

$ heroku create <アプリケーション名>

 

次に環境設定についてです。チャネルシークレットとアクセストークンの設定をしておきます。

$ heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの文字列をペースト" --app <アプリケーション名>
$ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの文字列をペースト" --app <アプリケーション名>

 

設定ファイルのデプロイ

Bot開発もあと少しとなってきました。

 

ここでは、herokuへ設定ファイルをデプロイしていきます。

$ git init
$ git add .
$ git commit -m "new commit"
$ git push heroku master

 

無事プッシュすることができれば完了です。

うまくプッシュできない場合は、設定ファイルを確認しましょう。リモートでの環境が整っていないこともあるので、都度確認しておきましょう。

 

Webhookの設定

LINE Developersのチャネル基本設定に戻り、先ほど作成したアプリケーション名を入力したURLを設定していきます。

 

LINE Botの実行

 

ここまできたら、LINE Developersのチャネル基本設定の下部にあるQRコードをLINEから読み取り、自身のLINEでトークルームを開いてみましょう。

 

そこで、テキストデータを送信して返信が返ってこれば完成です。

 

うまく返信が返ってこない場合は、ログを確認してみましょう。

 

また、HTTPステータスコードによって、エラーが起きていることが確認できるので、その都度対処方法を調べて解決していきましょう。

$ heroku logs --tail -a <アプリケーション名>

 

まとめ

いかがでしたでしょうか?

 

非常に簡単にLINE Bot開発が行える環境があるため、これを利用してオリジナルなBot開発をしてみるのも良いかと思います。

 

最後まで一読していただき、ありがとうございました!



ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、現在フリーランス活動中。 2019年2月から起業する予定。 自社サービス及び製品を開発し、売り上げを立てている。