Information Technology

プログラミングシーシャ

LINEの仕様との格闘 タイムアウトとセッション

From 2019/9/24 Tue. to 2019/9/29 Sun.

合宿での集中作業によりデータベースの構築が完了した我々は、ようやくLINEBotとの会話部分の検討に着手することができ、会話の流れに関する課題と向き合うこととなった。勢いづいて平日にも作業をする。

今回のアプリでは、LINEのBOTと友達になり、メンバーが参加しているグループに招待する。各メンバーか支払った金額を、金額の入力を判別するための文字列と一緒にLINEのメッセージとして順番に入力した後、プログラム側で計算し、割り勘した結果をBOTが通知してくる。この一連の処理が終わるまでの間は、それぞれのメンバーとBOTの間での会話は完結していても、全体としては金額の情報をLINEのユーザー側とプログラムのあるサーバーの間で継続して保持している必要がある。すべて済んだ上でデータベースへの書き込みを実施するためだ。

通常のWebアプリでは、このような仕組みは「セッション」によって実現されているが、今回利用するLINEBotのAPIの仕組みを通してそのようなことが実現できるかどうかが重要なポイントとなった。

これを検証するため、簡単なサンプルを作った。BOTとLINEで会話しながら、複数回金額を入力し、金額をセッションに保持しつつ指定回数に達したらBOTが返すメッセージを変えるような実装にした。メッセージが指定回数後に変わるようであれば、セッションに金額を保持しておけるということになる。こうなってくるとLINEBotのAPIやFlaskのドキュメントのサンプルコードを読みながら、試験的に実装して試すしかない。これは成功した。

セッションの実装試行

一方で誰かが会話を開始したものの、一定時間他の人が金額を入力しないなどした場合に、セッションを消去したうえでメッセージで一定時間経過したことをメンバーに通知し、会話をシステム側で終了させるような「タイムアウト」させる機能も必要となりそうだった。これには二つ課題があり、複数の利用者の時間の情報をサーバーで並行して持てるかどうかという点と、セッションを初期化させつつ、メンバーにタイムアウトを通知させ方法があるのかという点が課題となった。この機能はかなり長く検討したが、最終的には実装を見送ることにした。

「ユーザー登録」も必要だ。今回の割り勘BOTでは、BOTをお友達として旅行しているメンバーのいるグループに招待する。BOTはグループに参加した段階ではグループ名やメンバー名を持っていないので、プログラムでこれらの情報を処理するためにLINE側から取得し、heroku上のデータベースに登録させる仕組みが必要である。

いよいよ開発プロジェクト”らしく”細かい課題やタスクが発生してやることが増えてきたことから、プロダクト・バックログを管理していたTrelloに加えて、新しいプロジェクト管理ツールを導入することにした。「backlog」という課題・タスク管理アプリの導入である。我々は業務で利用していたRedimineに操作や見た目が近いという理由でこれを選定した。

バックログ

今のところ、起票されたチケットは「不定期にsession情報が想定と異なる挙動をする」「支払金額の入力方法」「timeout設定ができない」「ユーザー・グループ登録機能の実装」など。

会話の流れに関する課題をブレイクダウンしたことで、これ以降は金額入力の画面UIと割り勘の精算計算ロジックの開発に集中できるような、一つの山場を超えた感じがあった。

プログラミングシーシャ

Information Technology

【SIer勤務でもできる】アプリ開発やってみた 第七話

2021/8/22  

From 2019/9/24 Tue. to 2019/9/29 Sun. 合宿での集中作業によりデータベースの構築が完了した我々は、ようやくLINEBotとの会話部分の検討に着手することができ、会話 ...

プログラミングシーシャ

Information Technology

【SIer勤務でもできる】アプリ開発やってみた 第六話

2021/8/22  

From 2019/9/22 Sun. to 2019/9/23 Mon. 我々は土曜日朝7:30に郡山駅前にいた。秋にやってくる二度目の3連休前夜の金曜日に突然思いついて、翌日からあるワークスペース ...

プログラミングシーシャ

Information Technology

【SIer勤務でもできる】アプリ開発やってみた 第五話

2021/8/22  

From 2019/9/13 Fri. to 2019/9/16 Mon. だらだらと時は過ぎていき、お盆が過ぎて秋の夜長の季節が到来していた。 データベースが動くようになったことで、データベースの中 ...

プログラミングシーシャ

Information Technology

【SIer勤務でもできる】アプリ開発やってみた 第四話

2021/8/22  

From 2019/8/12 Mon. to 2019/8/23 Fri. 一通りチュートリアルを動かすことに成功した私たちは、次に着手するのはアプリの要件の整理とデータベースの作成だろうということで ...

プログラミングシーシャ

Information Technology

【SIer勤務でもできる】アプリ開発やってみた 第三話

2021/8/22  

From 2019/8/11 Sun. to 2019/8/12 Mon. 翌日も引き続き、開発のための環境の構築が続く。 小さく段階を踏んでいくということで、実行環境であるherokuへのデプロイは ...

プログラミングシーシャ

Information Technology

【SIer勤務でもできる】アプリ開発やってみた 第二話

2021/8/22  

2019/8/10 Sat. 早速私たちは、翌朝から自分のパソコンに開発環境をセットアップし、ネットに上がっているサンプルのおうむ返しボットを動かしてみることにした。うまく行けば、連休の間に何か出来上 ...

プログラミングシーシャ

Information Technology

【SIer勤務でもできる】アプリ開発やってみた 第一話

2021/8/22  

On 2019/8/9 Fri. 私たちはいつものように、新宿で酒を飲んでいた。 先週に出かけた岩手旅行の精算をするという理由のために。 この精算というやつは面倒の先延ばしである。 旅行先にいる時は、 ...

© 2021 OMUL EXPO Powered by AFFINGER5