らいむぎばたけ

つかまえなくてだいじょうぶ

非プログラマ嫁がプログラマの旦那に一泡吹かせてやろうと奮闘した話

※この記事は苫小牧高専アドベントカレンダー2018 18日目の記事です。

はじめに

2011 年度 電気電子工学科卒業のらいむです。 電電卒で、いまはどちらかというと土木・建設寄りの会社で管理系のお仕事をしていて、趣味でプログラミングの勉強をしています。今年の春に結婚して、いまは Ruby プログラマの旦那と一緒に暮らしています。

後輩のえむけーくんに、このアドベントカレンダーを声かけてもらった(?)ので、プログラミングの勉強をはじめるきっかけとなった話を書こうと思います。

きっかけ

Slack との出会い

我が家では、旦那との主なコミュニケーションに Slack を利用しているのですが、使い始めるまでは「Slack?あー、名前は聞いたことあるかな」程度でした。 Slack を使い始めて少したったある時に bot なるものの存在を知り、非プログラマの自分が作ったら、旦那は驚くかな?喜ぶかな?と思い、タイトルの通りへへへ、一泡吹かせてやるぜと思い、旦那に秘密で bot を作る事を決めました。

プログラムをかく

いざ!プログラムを書こうと思っても、何の言語を使ってどうやって書けばいいのかさっぱりわからん!と思い、まずはググる。ひたすらググる。 サーバが必要だということがわかるが、お金がかかる!うまくできるかわからないし、使い方?もよくわからないことにお金をかけるのは...と思い、お金をかけない方法で bot を作る方法を模索しました。

そして見つけた Google Apps Script!!!

初心者がGASでSlack Botをつくってみた - CAMPHOR- Tech Blog を参考にしてコードを書きました。基本はここのサイトを参考にしつつ、色々なサイトを見ながら切り貼りしていってコードを完成させました。

大変だったこと

どの言語で書くか

プログラミング!と言ってもたくさん言語がある、ことまでは分かっていましたが、この言語で書きたい!みたいなものが無かったので、言語選定を悩みました(そもそも bot 作成時点では C 言語くらいしか知らなかった)。最終的には GAS を使う事になったので必然的に JavaScript になりました。

Google Drive 上のデータの表示方法

bot のアイコン画像や、 bot の発言内容をまとめたスプレッドシートを指定する時に、表示された URL をそのまま直リンクしたところ、表示ができなかったのでググる。ただただひたすらググる。参考にしたサイトをメモしていなかったので、残念ながら詳細を忘れてしまったが、 URL の書き方を変更することで、無事に解決することができた。

テスト投稿でバレる

プログラムを一通り書ききったので、さあどんなもんだ!と思ってテストを実行!だがしかし!!テスト環境(?)なんてものは用意していない上に、 Slack のチャンネルは #general しか知らない(そもそもチャンネルの作り方を知らなかった)ので #general に投稿されました。これにより、この時点で旦那に bot が見つかるという・・・・・

bot がひとりで喋り続ける事件

Outgoing WebHooks で bot が反応するトリガーワードを、bot 自身が発言するワードと同じワードにしてしまい、 botbot にレスをするようになってしまいました。ここからは無限ループです。止まらない。終わらない。bot の発言に bot が返信をして、その bot の発言に bot が返信をして・・・・・そして Mac に入っている Slack アプリがフリーズしてしまうという。

急いで Outgoing WebHooks でトリガーワードを変更して、なんとか無限ループから脱出。この時は本当に怖かったのを今でも鮮明に思い出します。

bot の完成とお披露目

テスト投稿という名の無限ループ bot のお披露目になってしまいましたが、旦那が驚きつつも喜んでくれて、無事に一泡吹かせてやることができて本当に良かったです。

今後の頑張りどころ

当時はどの言語を選択したら良いのかわからなかった & GAS を使用したので JavaScript で書いた bot でしたが、旦那から Ruby の勉強を兼ねて、Ruby で書き直したらいんじゃないかな〜あとは Slack で部屋の電気を off/on できるようにしたいな〜〜と言われているので、頑張っているところです。7割くらいはできていて、いまは Google スプレッドシートにある bot の発言内容のリストがうまく拾ってこれなくて苦戦中...

最後に

プログラミングに興味がなかった(なんなら学生時代は大嫌いだった)私がこの Slack での bot 作成をきっかけにプログラミングの勉強を始めた話でした。今年はプログラミングとの出会いのおかげで、様々な道が拓けた一年になりました。今後も勉強頑張りたいと思います💪

明日は、学生時代に廊下で遭遇すると毎回タックルをしてきたない子ちゃんです。