connecting...
Google translation for articles :
1 NEMBER donated to you!!

1ヶ月チャレンジ/Python編『ついに環境変数に完全勝利した』 day15-day16

nem0.85xem (1) 210 0 0

今日はかいわれ大根の日です。

かいわれ大根の辛味は苦手です

 

昨日は失礼しました。本当であれば連休最終日の記事を投稿出来る予定だったんですが

その前日に購入した無線LANカードをPCがついた状態で抜き差ししてしまい、無事お亡くなりになりました。。。

 

それがだめだと気づいたのが今朝だったのできのうは帰ってきてから一日中直そうと必死だったので

何もできませんでした。すぐ治ると思ったんです。。。しかたないので今日の投稿が連休最終日の記録となります。

 

サンプルコード、動かず。

昨日はひとまず定期的に通知をしてくれる
Pythonファイルの作成に取り掛かりました
こちらです

だいたい最初にヒットするテックアカデミーさんの記事ですね。
しかし思うように動いてくれないので
直接linebotさんに記述してみることにしました。


これは現状、知識がなくて
pythonのどのエラーなのかがわからないからです。
出力方法が間違っているのか、コードが間違っているのか。

正直サンプルコードの写しなので
出力方法のミスそう→lineで試そう!ということでもあるのですが。

 

確認するためには一番手慣れているものでやったほうが
ミスの種類に早く気付けるかな?という判断です。

そこで一番最初のオウム返しbotさんに被検体になっていただくことにしました。

しかしそこで謎のミス。
エラーを吐き続けます。linebot選手。

通知をしたいので、オウム返しからどんな文にも定型文を返すアプリに変更しました。
このまま通知させようとするとユーザーの入力した情報がないので
エラーになると判断したんですね。

 

というかよく考えたら過去のメッセージの情報って生きてないんですかね?
どんなBOTと会話していても毎回リセットされてそうですよね。

 

それはおいておいて。なので配慮したからエラーは起きないと思ったら
起きました。期待を裏切りません。

 

nameerror: name 'handler' is not defined

何じゃそりゃ。handlerを使うためのimport文が消えてるかな?と
関連箇所を見ますが全く問題なし
そうか私レベルだと見落としちゃう1文字違いとかか。
oがiになっちゃってるみたいな。


と思ってほぼサンプルコードなので参考にしたサイトを一部コピペしても動かず。。

30分ほど悩んでいましたがもうやだ!!!!と諦め
昨日のコミットした部分をみて差分を確認していました

うんうん、ここは無駄だったので消したコミットだ。ここもそう。
ここm......?

なぜかapiキーを格納した変数が消されていました。
これなかったら動かないの当たり前じゃない。。。?
さすがに分かるよ?


とおそらくコミットを見るに昨日何かと一緒に消してしまったようです。

一件落着でしたが、正直素人にはこのエラー文で
ここに原因があるとは思えません、、、


1時間かからずに解消できて本当に良かった。
いつもと違うアプローチで考えられたのは良かったです😋
さあ気を取り直して本題へGo!


一昨日も書きましたが、今日またIKEAに行き直しました。
駐車場入るまでめちゃくちゃ混んでたけど
お目当てのものが決まっていたので店内は30分程度で終了。
しかし組み立てにしっかり時間がかかったので
今日はもう時間が5時間程度しかないんだ。
急げ!

schedule というモジュールが定期実行の要ということまでは理解したんですが
どうやらただ追加で記述するだけでは無理そうです。

 

実行方法判明
動きました。
先程ここ(最初の方にあった記事と同一)
のコードをまるままコピーして作っておいたファイルを


コマンドプロンプトでそのファイルがあるディレクトリに移動して、
python sample_time.py
としたら指定した時間に思い通りの記述を反映してくれました。

一番最初に動いてくれなかったのは実行方法が異なったからだったんですね。(多分)

 

残るはLINEBOTの設定
となるとあとはLINEBot側の設定です。
今のままじゃ手打ちで実行してるに過ぎないので
未だ自分で調べた方が速いです。


ただ色んなサイトを遍歴しているのですが
どこもかしこも少し複雑そうなので忌避していました。
もっと簡単なコードはねぇのかと。
悪い子を探すなまはげのように。

 

実際、新しい情報×長いコードは私の立場にとっていいことがありません。
詳細に説明してくれるひとが少ないからです。

なので忌避していました。


しかしあとはその牙城を切り崩すことのみと判明したので
ちいさな槍を持って突撃しに行こうと思います。

 

というか余談なんですけど
毎回herokuにデプロイして自分のスマホで確認するの大変なんですが
シミュレータみたいなのないんですかね?
あってもおかしくないと思うのです。

 

【速報】ついに環境変数に勝つ
技術の革新は期せずして起こることも多々あるはずです。
私にとっては今でした。不意に成功しました

PCに環境変数を直接教えないとローカルでは起動しないのですね
先程このサイトを見ていました


これによると環境変数はローカルに認識されるまでちょっとばかし手数が必要なようです。
おかげさまで環境変数に対してのエラーがいっさい無くなった、いや亡くなったということになります。
しかしPCに環境変数を教えこんだということは
違うアプリでは違うトークン名にしないとイケないということですね。
ちょっと気をつけないとですね。

 

まとめと少しの気づき
定型文で、手動で、ユーザーを名指しと制約はたくさんありますが
lineから通知を仕掛けることに成功しました。
参考にしたのはhttps://qiita.com/kotamatsuoka/items/6f56d0d0a3225160b4d0
ここではごく簡単に通知をする方法を教えてくれました。

気づいたのは最後の
if __name__ == "__main__":
main()
がないと動かないということ。(最初ここにmain()があるのに気づきませんでした。)
一体こいつはなにを請け負っているのでしょうか。
誰か教えてくれ。。。


あと実装するべきこと

・ユーザーidはapiで取得できらしい
・user_idをdbに入れる方法
・def main() の定期実行方法(時間指定による定期実行はできるけど今はまだコード自体が手動)

 

多分これだけやればお目当てのものの雛形程度はできるんじゃないかな?

ちなみに先の環境変数の下りはこのlineからの通知を仕掛けるときに
ローカルでファイルを実行する必要があったので
必要にかられてできました。準レギュラー化してる環境変数さんですが
今回は見切れ程度の出演でした。
今は彼に対して強気な態度を取れるかまたさんでした。

Why don't you get crypt currency 'nem' by posting your blog article?

nemlog is blog posting service which has donation feature by crypt currency nem.
nemlog was launched to create environment which can be donated nem among NEMbers via blog articles.
Let's get nem by posting good blogs.

Nem prize event is being held frequently, Please join us on this opportunity!

nemlog registration from here
Register

NEMber who posted this article

フリーでデザイナーやってます
[namespace:@kamata]
31896
0

Why don't you read following articles?