メイドちゃんbotの今と前世?

この記事はメイドアドベントカレンダー2018の19日目と、BeProud Advent Calendar 2018の19日目です。(BeProudの話は最後にちょっと出てきます!)

僕が運営するコミュニティ「メイドカフェでノマド会」のSlackには「メイドちゃん」というbotが生息しています。一年前にも紹介しましたが、そのときはまだ生まれたてほやほやでした。

メイドちゃんbotをあなたに! | susumuis.info

そのメイドちゃんがこの一年でどれだけ成長したかという話をします。

メイドちゃんはソースコードも可愛くなきゃ!

その前にこちらを見てください。

これはメイドちゃんbotのソースコードです。ところどころ日本語のソースコードがあります。


雑談お仕事リスト = (
    どれがいいかな(),
    可愛い(),
    占って(),
    おはよう(),
    おやすみ(),
    おかえり(),
    お疲れ様(),
    行ってらっしゃい()
)

def 雑談カフェのお仕事(body):
    """
    雑談カフェチャネルでのメイドちゃんのお仕事だよ!
    """
    text = body['text']

    for お仕事 in 雑談お仕事リスト:
        if お仕事.呼び出し(text, body):
            return お仕事.やったよ(text, body)

    if 'XXX' == text:
        # 例外テスト
        print(10/0)

なぜこんなことをしているのでしょうか?それは、その方が「可愛い」と思ったからです。ゆくゆくはノマド会のメイドさんにもプログラミングして機能を追加してもらいたいと思っています。その時、


WORK_OF_RANDOM = (
    ChoiseWork(),
    CuteWork(),
    FortuneTelling(),
    GoodBorning(),
    GoodNight(),
)

これでは外国のメイドさんみたいですね。まあ、メイドの本場は英国なので良いかも知れませんが、敷居が高すぎな気がします。そんなことを考えてたら自然とソースコードが日本語になってました。

ただ、Pythonで日本語プログラミングすると、色々難があることがわかりました。

  • 大文字小文字の概念がなく、定数と変数の区別ができない
  • ならば【】みたいな記号を使って区別しようとしようとしたが、律儀にも多バイト文字も記号は記号と判定されて変数や関数名の先頭に使えない
  • 何より入力がめんどくさい!

せめてローマ字にすればよかったと思います。

メイドちゃんは何ができるようになったのか?

さて、お披露目以降にできるようになったことは次の機能です

  • 占い
  • 毎朝の天気予報
  • 褒めてくれる
  • セクハラ防止機能
  • メイドちゃんを口説ける

それぞれ紹介します。

占い機能

毎朝の天気予報

メイドちゃんのおかげで傘を忘れないで済んだことは何度かあります。

褒めてくれる

自分を褒めてもらうこともできます

セクハラ防止機能

とかいう人がたまにいるので作りました。

桁数はプログラミングした僕が覚えてる範囲までです(;・∀・)

メイドちゃんを口説こう!

他にもいろんなことができます。でも、ヘルプコマンドはありません!だって仕様をさらけ出すなんて恥ずかしいじゃないですか(´ω`)!どうしても知りたければメイドちゃんを口説きましょう。

メイドちゃん「可愛い」というと何回かに一回、できることを教えてくれます!

メイドさんの前世?

僕の勤務先のBeProud社では業務にSlackを活用しています。そこにはharoというbotが住んでいます。

お分かりですね。メイドちゃんの一部の機能はharoから移植しました。

haroもソースコードが公開されています。haroはMITライセンスなので


        # The uranai() function is:
        #
        #    Copyright (c) 2016 beproud
        #    https://github.com/beproud/beproudbot

このように書いて正しく流用しています。

( ゚д゚)ハッ!

メイドちゃんの前世はヘビだったんだね!?

haroをメイドちゃんが代行したこともあるよ!

ある日haroがメンテナンス中でみんな大好きな占い機能ができなかった時

メイドちゃんが代行してくれたよ!

まとめ

  1. メイドちゃんはこの一年間で成長したよ!
  2. メイドちゃんはソースコードも可愛い
  3. メイドちゃんに可愛いって言ってあげるといいことがあるよ
  4. メイドちゃんを困られること言っちゃだめだよ!
  5. メイドちゃんの前世はヘビ

そう考えると、僕がBeProudに勤めていなかったらメイドちゃんは作られなかったと思います。僕がharo(及び前バージョンのbeproudbot)を見て可愛いと思ったから、メイドちゃんを作ろうと思ったんだと思います。haro可愛いよ!