Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python×LINE

 Python×LINE

2023/10/9 10:00から行われたイベント「Python×LINE」のスライド資料です。
動画と併せてお使いください。
https://youtu.be/GfpQv1rXmSI?si=BdnM1yxLwyxjs57t

EngineerCafe

October 09, 2023
Tweet

More Decks by EngineerCafe

Other Decks in Programming

Transcript

  1. Colaboratoryとは何か Google社が、機械学習の教育・研究を目的として開発した、 Pythonコードを記述するためのノートブック。 Jupyterをベースにしているため、 Jupyter愛用者にはありがたい存在。 Googleドライブの仮想環境内で動くので、ダウンロードやインストールの手間がだいぶ省けるものとなっています。 最大の特徴は無料で GPUが使えること。深層学習や機械学習などに非常に重宝します。 最大使用容量制限もありますが、自分のスキル学習に用いる程度であれば特にストレスなく使えます。 しかしながら、90分ルールと12時間ルールというものがあるため、学習用の域を出ない事に注意が必要です。

    つまりは、本運用には向いていません。 ・90分ルールとは コードの実行が始まった時からカウントする。 90分の間PCに触らずにいる、あるいはタブを開いたまま何もしないと、自動的に停止します。 ・12時間ルールとは 同じくコードの実行が始まった時からカウントします。 折りに触れてPCに触る、あるいはシャットダウンしない仕組みを導入するなどしても、 12時間経つと強制的に初期化 されます。学習したデータもリセットされるので、その前に保存することをおすすめします。 保存すれば、そこから実行することができますので、また 12時間学習させることができます。
  2. 最初のコードボックスには以下の通りに記述してください。 # LINEのチャネルシークレット LINE_CHANNEL_SECRET = '#' # LINEのチャネルアクセストークン LINE_ACCESS_TOKEN =

    '#' # ngrokのAuthtoken NGROK_AUTHTOKEN = '#' #の部分は後から差し替えます。 シングルクォーテーションはダブルクォーテーションでも OKです。
  3. # LINEのチャネルアクセストークン LINE_ACCESS_TOKEN = '#' 取得した値を#と差し替えます。 アイコンと名前 次にngrokのAuthtokenについて。 ngrokのwebサイトを開き、ログインします。 左側にあるメニューから、

    「Your Authtoken」を開き、 値をコピーしてください。 # ngrokのAuthtoken NGROK_AUTHTOKEN = '#' 同じように、こちらも#をコピーした値と差し替えます。
  4. 次に、チャットボットを作成するためのパッケージをインストールします。 しかし、このパッケージは、現在 (2023年9月時点)tensorflowとtyping-extensionsの最新バージョンでは 依存関係が競合するバージョンとなっています。 このままではエラーが発生し、正常に動きませんので、まず先にグレードダウンする必要があります。 新しいコードボックスを「+コード」から開き、 次のように記述してください。 !pip uninstall tensorflow

    !pip install tensorflow==2.12.0 次に、もうひとつ新しいコードボックスを増やして次のように記述します。 !pip uninstall typing-extensions !pip install typing-extensions<4.6.0 記述したら、どちらも実行します。 途中、アンインストールしてもいいか?と尋ねられますので、文字列横をクリックして「 Y」を入力し、エンターキー で決定して実行結果を待ちます。
  5. どちらも正常にグレードダウン出来たのを確認できたら、次にラインでのチャットボットを作るための ライブラリ、line-bot-sdkをインストールします。 また、今回はFlaskという、小規模のWebアプリ作成のフレームワークを使用しますので、 そちらも併せてインストールします。 次のように記述してください。 !pip install flask !pip install

    line-bot-sdk 次に、ngrokの初期化を行います。これにより外部からのアクセスを可能にします。 新しいボックスではなく、そのままコードを記述してください。 !pip install pyngrok !ngrok authtoken $NGROK_AUTHTOKEN 記述できたら実行します。
  6. 次に、新しいコードボックスを追加して次のように記述してください。 import os from pyngrok import ngrok from pyngrok.conf import

    PyngrokConfig os.system('kill -9 $(pgrep ngrok)') webhook_url = ngrok.connect(addr='127.0.0.1:5000', pyngrok_config=PyngrokConfig(start_new_session=True)) print (webhook_url) 解説は次のページで!
  7. これは、pythonでngrokを制御するためのコードです。 import os from pyngrok import ngrok from pyngrok.conf import

    PyngrokConfig os.system('kill -9 $(pgrep ngrok)') webhook_url = ngrok.connect(addr='127.0.0.1:5000', pyngrok_config=PyngrokConfig(start_new_session=True)) print (webhook_url) 標準ライブラリのosモジュールをインポートし、 ngrokの設定を管理するクラスを呼び出しています。 そして、ここでngrokのプロセスを強制終了しています。 そうすることで、ログが残っていた場合に誤作動することを防ぎます。 それから新しくngrokでトンネリングを行い、外部からのアクセスを可能にします。 生成した公開URLをここで表示させます。これが Webhookとなります。
  8. 次はこちら。 これは、Flaskアプリケーション内で特定の URLパスに関連付けられたビュー関数を定義しています。 具体的には、”/test”パスに対するHTTP GETリクエストが送信された場合に test関数を呼び出し、 格納している文字列 ”TEST OK”を返します、というような動きをします。 例えばhttp://localhost:5000/test

    にアクセスすると、ブラウザに "TEST OK" というテキストが表示されます。 ちなみに@から始まるのは「デコレータ」と呼び、 Pythonの特定の機能や振る舞いを、変更・拡張するために使用される概念です。 デコレータは、他の関数やクラスに装飾を追加するために、関数やクラスに適用される特別な関数です。デコレータ は、コードの再利用性、可読性、保守性を向上させるのに役立ちます。
  9. handlerオブジェクトに対し、 MessageEvent と TextMessage タイプのメッセージを処理するハンドラー関数 を定義します。 上記のデコレータで定義された条件を満たすイベントが発生した場合、この関数が呼び出されます。 event パラメータは、受信した LINEメッセージイベントに関する情報を含むオブジェクトです。

    受信したメッセージに対する応答を生成するコードです。 この場合、TextSendMessage を使用して、同じテキストメッセージを返信するように設定されていま す。 これにより、ユーザーが送信したテキストメッセージに対して、同じメッセージが返信されます。
  10. いかがでしたか? コードを見返してみれば、意外と短くスリムであることが分かります。 また、JupyterやColaboratoryで記述した場合、特にランサーバーを立ち上げたままにしたい場合、 何度も読み込む手間もなく、 Webhookは一度の設定でできます。 Colaboratoryはgoogle社の提供するアプリケーションのため、 スプレッドシートをデータベースの代わりにして動かすことも可能です。 データベースの導入に関しては知識が必要だったり、追加するソフトも多いなど障害も多く立ちはだかりますが、学習 やテスト程度であれば googleの機能だけで完結します。

    こういった導入の簡単なものから学習を始め、徐々にスキルアップしていくことで、 挫折することなく続けていけると思います。 勉強を続けるうえで大事なことは、「難しい問題に立ち当たった時、誰かに相談する環境があること」です。 エンジニアカフェでは、いつでもご相談に応じています!! 専門的な分野に関しても、現役エンジニアによる「 ハッカーサポータ―」への相談も可能です! まずは一度、エンジニアカフェにお越しください! また、Discordで「オンライン・エンジニアカフェ」 も運営中! 定休日(毎月最終月曜日と年末年始 )以外の10時から21時まで受付スタッフが常駐していますので、 ぜひご参加ください!