nikkie-ftnextの日記

イベントレポートや読書メモを発信

#アイの歌声を聴かせて 非公式Twitter Bot、これまでの開発録(ソースコード公開しました!)

はじめに

私もパフェになりたい…、nikkieです。

この記事は、アイうた円盤発売アドベントカレンダー 10日目の記事です。
6日目〜9日目を竹4号さんつりはとさんしーなさんでバトンを回していただきました(後ほど詳述)。
ご参加いただき誠にありがとうございます!1

今回は、開発しているアイうた非公式Bot(harmonizer_bot)を取り上げます。

目次

アイうた非公式Botとは

nikkieが開発しているこちらのBotです。

各種カウントダウンをお願いしていまして

  • 公開から何日目か
  • Blu-ray & DVD 発売まであと何日か
  • 映画館での上映まであと何日か
  • キャラクターの誕生日まであと何日か
    • 当日のお祝いも対応

といったつぶやきをします。
また、毎日午後2時をお知らせします🌈

これまでに明かしたharmonizer_botの秘密

harmonizer_botは、Pythonというプログラミング言語で書いたプログラムを、AWS Lambdaという実行環境で定期的に動かすことで、つぶやきを実現しています。
5月のラクスさんのLT会で一部の秘密を明かしました。

「お役立ち Twitter Bot を作りながら学ぶ AWS ドリル」を読んで「Twitter Bot、簡単に作れるのかも」と思っていました。

3月の休暇で佐渡のガシマシネマさんに行くなどしたのですが、聖地巡礼をして気持ちが盛り上がり、気付いたときには『アイの歌声を聴かせて』と絡めたTwitter Botを作り始めていました。

上記の発表をきっかけに、執筆者のketanchoさんにAWSドリルのお礼を伝えられたのもよかったです!

harmonizer_bot × 技術的チャレンジ

奇しくもアヤさんの誕生日と重ねる形でソースコードを公開しました!

大好きな『アイの歌声を聴かせて』と絡めたBotなので「技術的にも今の全力を込めたい!💪」と、設計はいくつかチャレンジをしました。

  • ミノ駆動本で知ったinterfaceとMapによる条件分岐を練習
    • これを知ったことで、Pythonのライブラリで見かけるデコレータ(例:@app.route("/"))も条件分岐に見えるようになる
    • WebアプリケーションフレームワークFlaskの実装を読んで、真似して実装
  • 「おんなじような単体テスト何回も書いてるなー」
  • 機能を追加するたびlambda_handler.py(1ファイル)が大きくなる
    • harmonizer_botの機能はパッケージに切り出している(後述するリファクタリング中)
    • lambda_handler.pyはエントリポイントなので薄くする方針
  • The Art of Agile Development』で説明されているようなステップが小さいリファクタリングを練習
    • 設計が揃っていないように思われるかもしれませんが、作っての学びからよりよさそうな設計に気付き、新しく作る部分に活かしています(古い部分は次に手を入れるときに直す)

詳細は今後のアドベントカレンダーで取り上げてみたいなと思っています。

嬉しかったエピソード:爆速で仮説検証が回った🙌

他にも色々やりたいことを抱えながらBot開発をしている身なので、小さく機能追加できるように作る2が開発する上で心がけたことでした。
これが特にうまく回った経験もしました!

シオンの誕生日のカウントダウンを実装した直後のお話。

「ランダム要素」って実は私がつぶやいた時点ではセリフではなかったんですよ。
「サトミ!私が幸せにしてあげる!」3以外はプロフィールの文字起こしでした(特技は歌、星座はふたご座など)。
偶然シオンのセリフがつぶやかれたわけですが、私の投稿へのリプライを見ると、「セリフがめっちゃ喜ばれる!」というフィードバックが得られたわけです。

そこでシオンの印象的なセリフをかき集め、ランダムなセリフと一緒に誕生日までカウントダウンすることにしました。

リーン・スタートアップ』という書籍では「構築ー計測ー学習のフィードバックループ」を最小の時間で回すのが重要と説かれます(第2部の冒頭)。
皆さんの反応というフィードバックから、シオンの誕生日のツイートの方向性が決まり、それを翌日までに実装できたというのは、小さいですが印象的な成功体験です!

補足:アイうた円盤発売アドベントカレンダー 6〜9日目

6日目は竹4号さんによるイラスト!4
https://twitter.com/take4goo/status/1544436640340668417 からどうぞ!

7日目と9日目はつりはとさん!
Twitterの『アイの歌声を聴かせて』コミュニティに投稿いただきました。

8日目はしーなさんによるSS!5
https://twitter.com/sikatanaisi/status/1545064591717462021 からどうぞ!

アイうた円盤発売アドベントカレンダーはどなたのご参加も大歓迎です!

終わりに

『アイの歌声を聴かせて』に関連するカウントダウンをするBotについて大まかに紹介しました。
このたびネットに公開したので、このBotが増えたり、新しいカウントダウンが追加されたら面白いなあとワクワクする気持ちもあります。

このBotさんは現在も開発中で、今後もちょっとずつちょっとずつ機能追加していきます。
Botさんのつぶやきにいいね・RTや返信までいただき、皆さん絡んでくださってありがとうございます!

P.S. harmonizerって?

『アイの歌声を聴かせて』ファンの呼称、"アイノウター"かなーとつぶやいたところ

ハーモナイザー 爆 誕 !!

「ハーモナイザー」の響きかっこいいですよね!
英語タイトル『Sing a Bit of Harmony』から採られていますね。

以上、本日のハーモナイズ活動(アイうた円盤発売アドベントカレンダー 10日目の記事)でした。


  1. こんなにバトンが回りながら10日目を迎えるなんて想像していませんでした!吉浦監督にRTしていただくというサプライズもありました。アイうたでつながった方から記事への感想をいただくこともあり反響に驚いています。アドベントカレンダーを読んだり反応したりして参加してくださる皆さまにも、ありがとうございます!

  2. がっつり開発時間をとるというより、30分でちょっとした1機能追加、実は「寝る前にこれだけは…」と限界と戦いながらBotさんにお願いしています

  3. シオンのプロフィールに関するツイートの1つにこのセリフがあったので、プロフィールの文字起こしと同列と考えて入れました。

  4. スケール大きい! ステキなイラスト、誠にありがとうございます!!

  5. 「幸せになろうよ」にシオンの気配を感じ、「幸せになった?」でムーンプリンセスの雰囲気を感じました。 サトミが幸せそうで😭