PythonとLINE Notifyで単語暗記!レンタルサーバーで自動通知!?

どうも、Champignon(きのこ)です。Champignon

今回は、プログラミングのお話です。

この記事を読んでいただきたい方
●Pythonを英語(TOEIC)やフランス語など語学に活かしたい方。
●Pythonでレンタルサーバーを活用したい方。

英語やフランス語などの語学、
特に単語暗記が習慣付かない私のような人に
お勧めの内容になっています!!

2021年8月30日追記

バージョンアップさせた記事を投稿したので合わせてご覧ください!

Python・スクレイピング・LINE Notifyでリーディングの習慣化。レンタルサーバー活用法




この記事を読むと
どんなことができる?

自動で、暗記したい単語がLINEに届くようになります!

LINE Notify
LINE Notify

このように、
苦手な単語・熟語を、定期的にLINEに通知させることができます!
(私の場合、2時間ごとに通知させるようにしています!)

スマートウォッチを使うとより効果的!
時計にLINEの通知がくるので、半強制的に勉強できますw


これを実践する方法を、
次の章からステップバイステップで解説していきます!

必要な知識・もの

これを行うために必要な知識・ものは以下の通りです。

  • Python(初級程度)
  • レンタルサーバー(私が使っているのはConoHa WINGです。他のサーバーでもPythonが使えるのであればたぶん行けます。LINE Notifyを使う上では、herokuを使っている方が多いように見受けられます。)
  • LINEアカウント
  • ちょっとした根気

LINE Notifyを使おう

LINE Notifyとは

Webサービスからの通知をLINEで受信

できるサービスで、
GitHubその他のLINE Notifyと提携しているサービスの通知をLINEで受け取れるというものです。

提携しているサービスを使うだけでなく、
発行されるトークンを用いて、テキストをLINEに送信できたりします。

しかもそれが、
Pythonを用いてできるのです!!

送信する部分のPythonコードはこんなに簡単なものです。
(全ソースコードは後半にあります。)

payload = {"message" :  message}
requests.post(url ,headers = headers ,data=payload)

LINE Notify活用のアイデア

そこで私は、

「Pythonで実行した結果をLINEに送れれば、
いろいろできそうじゃない!?」

「しかも、
WordPress用に”ConoHa Wing”のレンタルサーバー借りてるから、
サーバー上で定期的に実行させるとかもできるんじゃない!!??」

と、めっちゃテンションがあがりました。

そこで、手始めに、
英語やフランス語その他の言語の勉強に役立ちそうな
プログラムを作ってみることにしました。

英語やフランス語その他の言語習得において、毎日こつこつと継続することが大切と言われますが、なかなか難しいですよね。。。

その一因として、
勉強を開始するためには、能動的に動かないといけない
(自分で単語帳を開いたり、学習アプリを開いたりetc.)、
というのがあると思います。

しかし、それが例えば、
1時間に1回、覚えるべき英単語がLINEに届いたらどうでしょうか?

さすがにLINEで通知まできたら、その単語くらいは覚えよう!ってなりそう!!

単語を覚えた後、
そのまま英語の勉強を始めるきっかけにできそう!!

そう思いませんか???

しかし、いざ取り組んでみると、結構大変だったので、ステップバイステップでこの方法を共有したいと思います。

[Step 1]
LINE Notifyのセットアップ

アカウント作成と簡単なPythonのコード(コードは後述)を記述するだけです。
詳細の手順はこちらの記事を参考にさせていただきましたので、こちらをご参考いただき、アカウントを作成してください。

[Step 2]
レンタルサーバーのセットアップ

私がサーバーの知識がほとんどなかったからかもしれませんが、
ここが一番大変でした。。。

この中でもいくつか段階がありますので、1つ1つ見ていただければと思います。

SSHへアクセスする

サーバー上でPythonのコードを動かすために必要なライブラリをインストールするために、行うものです。

ConoHa Wingは標準でサーバー上でPythonを用いることができます。
しかし、Python標準のライブラリには搭載されていないライブラリ(今回であれば、”Requests”は別途主導でインストールする必要があります。

そのインストールを行うために、SSHへ接続します。
(”pip”を使わずにライブラリをインストールする方法があれば、もしかしたらこの工程はいらない。もしご存知であれば教えていただきたいです!)

SSHへの接続方法は、
公式サイトをご確認いただき、アカウントを作っていただいたうえで、
こちらのサイトをご参考に、コマンドプロンプトから入ってください。

SSHでやること

ここでやることは以下の2つです。

①ライブラリ置き場を作る

SSHに接続したとき、ディレクトリは、

/home/ユーザーごとに違いますので、確認してください!/

です。
ここで、

mkdir 任意の名前

で、インストールしたライブラリを格納するフォルダを作ってください。
(この後、Pythonコードでここにパスを通します。)

②ライブラリをインストールする

ライブラリ用のフォルダが作成できれば、
次はライブラリのインストールです。

pip install requests -t ~/ライブラリ用のフォルダ名

でOKです。

FTP
FTP

[Step 3]
単語帳を用意しよう。

このあとのPythonのコードをご説明するときにも言及しますが、
この記事のゴールは
サーバーからLINE Notifyで通知することではなく、
英語やフランス語学習を習慣化することです。

そのため、自分が苦手な英単語・フランス単語を準備する必要があります。

その方法は、
TOEIC800点!一瞬で単語を調べて覚える方法【リーディング対策】【自作単語帳】

最強のフランス語の読解・単語学習法(Comprendre Lire)!第二外国語の単語暗記に最適!!
などをご参照ください。

これらの方法を使えば、
リーディングの勉強しながら、自分が苦手な英単語・フランス単語を収集することができます。

ここで作った単語のCSVファイルをこの後使います。

[Step 4]
Pythonのコードを書く

まだまだ改良の余地はありますが、今回はとりあえず動かすことが目的だったので、参考程度にご覧ください。


#!/opt/alt/python36/bin/python3.6
# -*- Coding: utf-8 -*-
import sys
sys.path.append("PATH")
import random
import requests

url = "https://notify-api.line.me/api/notify"
access_token = 'トークン'
headers = {'Authorization': 'Bearer ' + access_token}

def go_line():
    with open("PATH", encoding="utf-8") as f:
        text = f.read()
    text = text.split("\n")
    message = ""
    for _ in range(n):
        message += "\r\n\n" + text[random.randint(0,n)]

    payload = {"message" :  message}

    l = requests.post(url, headers = headers ,data=payload)


if __name__ == "__main__":
    go_line()

これで、
単語が入っているCSVファイルを読み込む
→ランダムで選び出す
→LINEに通知する
ということができます!
(うまく動作するかローカルで試してみてもよいと思います。)

※1
このコードは、[Step 3]で紹介した方法を用いて、CSVファイルが、
「単語, その訳」(単語ごとは改行(“\n”)で区切られている)
という構成になっていることが前提です。

※2
上記ソースコードの補足をしておきます。

  • 4行目:
    “requests”をインストールしたフォルダのパスを入力してください。
  • 9行目:
    “トークン”はLINE Notifyで発行されたトークンを入力してください。
  • 13行目:
    “PATH”は、Step 3で作成したCSVファイルをFTPでサーバーに置いた後、置いたところのパスを入力してください。
  • 17行目:
    “n”は一度にLINE NotifyでLINEに送る単語数です。
  • 18行目:
    “n”はCSVファイルに存在する単語数です。単語をランダムでLINEに送信するために、ランダムで出力した数字の行数に存在する単語を送るためです。

[Step 5]
ジョブスケジューラを設定しよう

ジョブスケジューラ
ジョブスケジューラ

いよいよ最後です!

ご自身のConoha wingにアクセスして、
「サーバー管理」から「ジョブスケジューラー」へ進みましょう!

ここの設定はこちらの記事を参考にさせていただきました。

私は、「2時間に1度」LINEに通知したかったので、
“cron”を用いて、上記の写真のように設定しました。
“cron”を用いる場合、さきほどの記事にコマンドが説明されているので、ご参考ください。

後はコマンドに、
「Pythonパス」「半角スペース」「Pythonコードのパス」
を入力すれば完了です。


「Pythonパス」は公式サイトに掲載されています。

さいご

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

はじめて取り組むときは結構苦戦すると思いますが、
一度環境を作ってしまうと、他にもいろいろ応用する余地があると思います。

是非トライしてみてください。




このブログを書いている奴

どうもー Champignonです。

このブログでは、法律プログラミング英語・フランス語をメインに、私が学んだことをシェアしていきたいと思います。