この記事は信州大学のものづくりサークル「kstm」のアドベントカレンダーの12/24分として書かれました。
知見
最初に得られた知見の概要を書いておきます
- GitHubEducationは最高
- テストコードを書こう
- 書き始める前にドキュメントを書こう
- モチベを上げる手段を用意しよう
はじめに
夏休み期間中暇だったので、LINEのbotを作ってリリースしてました。
MtGのカード名をダブルクオートとかコロンで囲んでチャットするとカード画像とかカードの金額とかが出力されます。
そこそこbotを動かしてみて、いろいろバグ修正や機能の追加もやりましたし、ありがたいことに300人近い利用者の方に使っていただきました。この記事ではbot運営で得られた知見and感想を書いていきます。
仕様
Python3で書かれたbotをherokuにのっけて動かしてます。
動きとしては、DMとかグループチャットで飛んできたメッセージ全部見て、もしダブルクオートかコロンで囲まれたメッセージが来たらそこだけ取り出してAPIに投げてカード画像とか持ってくる、という風になっています。
あいまい検索にも対応しており、例えば「のたうつウンパス」というカードなら、「うつ ウンパス」みたいに打ってものたうつウンパスが出力されます。すごいですね
得られた知見
GitHubEducationは最高
GitHubEducationに登録すると貰えるクーポンが最高です。2年くらいタダで使えるDynoがもらえます。
このBOTを動かしてた当初はお金がありませんでした。今もないですが...
当時はDiscordのbotも運営しており、それはherokuではなくAWSにのっけていました。herokuもAWSも無料枠の上で運用していたのですが、AWSの方がメンテが非常に面倒くさく、やってられなかったので常々herokuに移行したいなと思っておりました。でも無料枠超えちゃうし...お金ないし...というジレンマがありました。
そこでいろいろ調べてたらGitHubEducationの存在を知りました。詳細はリンク先をご覧ください。herokuじゃなくてほかのサービスの特典もあるので是非。
テストコードを書こう
このbotはいろんな関数に値をポイポイ渡して作られています。
ぶっちゃけ潜在的なバグが多く、手でデバッグしてたので抜けも多いです。
なのでいまだにポコポコとバグ報告がやってきます。
バグ報告は後述するモチベにつながるので嬉しいんですが、それだけ利用者の人が不便を感じているということなのであまり褒められたものではないです。mtgのカードはとても種類が多く、3年くらいmtgやってる僕ですら把握していないカードが多くあります。1
また、今後新しいカードタイプが発表されないとも限りませんし、今後のためにもテストコードは書いておくべきだと感じました。
書き始める前にドキュメントを書こう
テストコードを書こうってところと関係します。
何かを作るという行為には目的とゴールが必要であり、作ってる最中にそれらが歪むことがあります。このbotも途中で目的がどっかいきそうになったので、
- 作った目的
- 目標
- 関数の仕様
- 考慮すべき事案
みたいなものをあらかじめリストアップしておく必要があると考えました。
このbotでは考慮すべき事案について全く考えておらず、1で言及したカード群を入力するとbotが水面下で爆発するという残念なことになってしまいました。目下修正中です。
モチベを上げる手段を用意しよう
これが一番大事かもしれません。
モチベが維持できなければ開発なんて続きません。何故貴重な大学生活を切り崩してこんなクソコードを書いているのか?何故...人とは...人生とは...どうして...
僕はほしいものリスト公開したりtwitterのDM開放したりするとモチベが維持できました。2
厄介なバグ報告もいろいろ頂きましたが、どれも「便利です」「いつも使ってます」という温かい言葉が後ろについており、大変励まされると同時に作ったbotが誰かに使ってもらってるという実感を得ることが出来ました。ですので、何らかの手段で自分のモチベを維持するツールを用意する必要があると思いました。
最後に
GitHubEducationは最高なので皆さん使いましょう。