こんにちは! 今回は、自分でオリジナルのLINEボット(自動でお返事してくれるアカウント)を作ろうとしたら、映画のような大どんでん返しと格闘することになったお話です。
プログラミング初心者の僕が、最新のクラウドサーバーとLINEのシステムを繋ぐ中で体験した、ハラハラドキドキのトラブルシューティング(犯人探し)の全記録をお届けします。
これから開発に挑戦する人の(笑える)参考になれば幸いです!
始まりは順調だった。「準備万端、いつでもこい!」
ネットの解説記事を見ながら、パソコンの黒い画面(ターミナル)に呪文を打ち込み、サーバーの準備は完了。
LINEとサーバーをガッチャンコさせて、画面には「ログ(通信の記録)を待っています…」の文字。 これでスマホからLINEを送れば、サーバーがそれを受け取ってオウム返ししてくれるはず!
意気揚々と、スマホから「テスト」と送信しました。
試練1:返事がない。ただの屍のようだ。
スマホの画面を見つめる僕。 ……あれ? 1分待っても、2分待っても返事が来ない。
でも、パソコンの画面を見ると「LINEからメッセージが届きました!中身は正常です!OK!」と記録が出ているんです。
「届いているのに、返事だけが来ない」
荷物は無事に届いたのに、配達員さんがハンコをもらえずに帰っていったような状態です。 ここから、僕と見えないエラーとの孤独な戦いが始まりました。
試練2:まさかの、サーバー会社が力尽きる
「LINEが何に怒っているのか、本音を吐き出させるプログラム」に書き換えて、もう一度サーバーにアップロードしようとしたその時。
画面に真っ赤な文字で「503 Service Unavailable(サービスが利用できません)」の大合唱。
なんと、僕のコードが悪いのではなく、使っていた世界的なサーバー会社(Cloudflare)のシステムが一時的に混雑して休憩に入ってしまうという、まさかのタイミングの悪さ。 これには「そっちがバテるんかい!」とツッコミを入れつつ、画面の前で「がんばれ…」とお祈り。
数分後、サーバー会社がシャキッと復活してくれたので、なんとか次のステップへ進めました。
試練3:LINEの門番「お前のデータ、なんか怪しい」
気を取り直して、LINEが怒っている理由をのぞき見する機能をONにして、もう一度スマホからメッセージを送信!
すると、LINEのシステムから返ってきたのは「エラーコード 400」。
これはLINEの門番から「送ってきたデータの中に、受け付けられない不正なものが入っているぞ!」と突き返されている状態です。でも、どこがダメなのかの詳しい理由は教えてくれません。
「プログラムの書き方は完璧なはずなのに、何が不正なんだ…?」 完全に迷宮入りしかけました。
運命のオチ:お前…1文字しかなかったのか…
そこで僕は、最後の手段に出ました。 LINEのシステムに入るための「秘密の鍵(パスワード)」がちゃんとサーバーに届いているか、安全に文字数だけを数える罠をプログラムに仕掛けたのです。
LINEの鍵は、本来なら100文字以上ある、めちゃくちゃ長い暗号のような文字列です。
いざ、罠を張ってLINEを送信! パソコンの画面に映し出された、衝撃のログがこちら。
「チェック結果:あなたの登録した鍵の長さは【 1文字 】です」
1文字ぃぃぃぃぃ!!!?????
思わず画面二度見しました。 そう、前日に長い鍵をコピーしてパソコンに貼り付けたとき、うまくコピーできていなかったのか、押し間違えたのか、「ただのスペース(空白)1文字」が最強の鍵として登録されていたのです。
そりゃあLINEの門番も「こんな1文字の鍵で入れるか!」って激怒しますよね。
結末:本物の鍵を持たせたら……
原因が100%わかったので、LINEの管理画面から100文字以上の「本物の長い鍵」をコピーして、今度こそ慎重にサーバーに登録し直しました。
そして、運命の瞬間。 スマホから「テスト」と送信。
画面に「通信成功(Status 200)」の文字が出た次の瞬間……
スマホがブブッと震えて、「テスト」と健気にオウム返しが返ってきました!!!
「かえってきたあああああ!!!」と思わず部屋で叫びました。
まとめ:トラブルも含めて、ものづくりは最高に楽しい
今回は「コピペミスで鍵が1文字になっていた」というズッコケなオチでしたが、動かない原因に対して仮説を立て、プログラムを書き換えて、犯人をあぶり出すプロセスは、まるで探偵になったみたいで最高にエキサイティングでした!
一見難しそうなプログラミングですが、エラーの声をちゃんと聴いてあげれば、必ず答えを教えてくれます。
もし皆さんもLINEボットを作るときに動かなかったら、まずは「鍵の文字数」を疑ってみてくださいね!(笑)
最後まで読んでいただき、ありがとうございました!

コメント