Monthly Archives: 12月 2018

メイドちゃん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可愛いよ!

ビープラウドに入社して2年間で一番学んだこと

この記事は BeProud Advent Calendar 2018 の3日目です。

さて、何書くか考えてなかったまま担当の日を迎えてしまいました。そう言えばちょうど2年前の昨日ビープラウドに入社してから、技術者として転職エントリ書いてなかったと思うので今更書こうと思います。(非技術者向けの転職エントリは書いています

何で転職したんだっけ?

前職ではメイドが原因で失脚しました。というのは半分面白くするための冗談です。今から7年前、前職は小さな会社でしたが「これから大きくなるぞ!」という勢いがありました。その時技術リーダーだった僕は発言権もそこそこあり「良い技術チームを作りたい」という意欲に燃えていました。しかし結果的によくある保守的な階層組織になってしまい、気づいたら発言権も失い、大変憂鬱な気持ちになっていました。

「当初色々意見を言えたのに、思ったのと違う結果になったのはなぜだろう。」「いっそ自分が作りたかった雰囲気に近いチームに、自らが飛び込んでみたら分かるのではないか?」「じゃあ、それに一番近いのはどこだろう?」そこで注目したのがビープラウドでした。実は、7年前の僕が参考にウォッチしていたいくつかの会社の一つだったんです。

幸い採用ページを見るとこう思いました。

Python以外のスキルセットはぴったりカバーしているじゃん!!

Pythonが書きたくてビープラウドに入ったわけじゃなくてごめんなさい!ガチガチのJava屋さんだったので入社するまでPythonは全然書いたことがなかったです。Pythonは勉強しました。PyQっていうサービスで! Dog feeding!?

ビープラウドに2年いて学んだこと

流石に2年もいたんだから何か掴めたはずです!入社以来僕を変えたことを、大きかった順に書いてみようと思います。

1. 時間を大切にする

「susumuisは話が長い、文章が長い」とはめっちゃ言われました。

入社して最初の自己紹介では1時間以上話し続け、その後も社内勉強会で20分の枠に40分話すなど時間配分がとにかく苦手でした。また、文章を書くと「susumuisの文章は長くて読みづらい」とめっちゃ言われました。

人の時間は貴重です。説明が長ければそれだけ相手の時間を奪ってしまいます。相手の時間を尊重する、自分の時間も大切にするという感覚が欠如してたんですね。

2. わかりやすく伝える努力をする

「もっと分かりやすい図を書いて」みたいな指導をけっこうされました。

「仕様書は行間読め」僕はそんな文化で感じの人でした。汲める人が偉い人そう思っていました。ところが、この会社の人たちめっちゃ丁寧に設計するし、図で説明するのが上手い人が多いです。

考えてみると、業務の大半って、人から人へ自分の考えを伝えることなんですね。そこを「汲んで」とかやると、意思伝達のミスが多発して、最後はおかしなことになるのだと思います。

3. 根拠を示す

入社してから公式ドキュメントを読むことが増えました。社内ではレビューが盛んに行われます。そこでは、その技術判断をした根拠が必要です。まさか「よくわからないけどQiita読んで適当にやってたらできましたー(・_・)ノ」じゃダメですよねw

意見を言う時に根拠がないと、こう言うしかありません。

「俺が正しい。俺を信じろ!」

それで付いてくる人は少なくともエンジニアじゃなさそうです。。。

なぜsusumuisは熱い想いを実現できなかったのか!

自分がダメだったのは、この逆だったからです/(^o^)\

頭の中にあった「熱い想い」が、実はちっとも伝わってなかったんですね!それは失脚するわけです!

まとめ

susumuisがビープラウドに入社して2年を振り返りました。

  1. 「良い技術チームを作りたい」という熱い思いが実現できなかった悔しさを持って転職した
  2. その結果学んだのは次のことだった
    1. 時間を大切に。説明は簡潔に。
    2. 相手に伝わりやすく伝える努力をする
    3. 根拠を示して説明する
  3. たとえ熱い想いがあっても伝える努力をしなければちっとも伝わらない

もっと技術的な記事になるかと思ったけど、意外な結果だったなと思います。もちろん技術も学びました。Pythonは不安なく書けるようになったし、機械学習も学びました。でも技術は前提として、致命的な問題によってそれが活かせてなかったのかもしれません。

BeProudコミュニケーションガイド

現在社内でライフスタイル・コミュニケーションを作成中です。まだ策定中のβ版ですが、リポジトリは公開されています: beproud-guide 。読んでみると結構この記事で書いたことと近いことが書かれていると思います。