社会人の常識として、チャット上の挨拶をきちんと行う
近況
部屋の本が爆発しそうだったので、職場に並べたらカオスになった事例。
はじめに
ログバーでは、コアタイム・フレックス制であって、その為に割りと出社時間に関してはマチマチだったりする。自分とかは、フラっと12時くらいにやってくる、みたいなダメな生活をやっており、社会人的にはダメなのだが、そういうゆるい感じで働けるので、働く環境としては、とても良い感じとなっている。
そこで、社会人といえば挨拶だろう、という勝手な偏見があるので、職場では「おはようございます」と「お疲れさまです」というのを言うようにしていていて、仕事を始めるときには、Slackに以下のようなシェルを流し込んで、仕事を始めたことを通知してりしている(別にリモートだからというわけではないのだけれど)。
curl "https://slack.com/api/chat.postMessage" \ -d token=$SLACK_TOKEN \ -d channel="#random" \ -d text="Good Moning!! Hello!" \ -d as_user="true"
とはいえ、定型文でいつも「Good Moning!! Hello!」というのも味気ないので、そういえば過去に作ったRubyのgemがあったなーということを思い出したので、紹介がてら、ランダムに言葉を出して、毎日の挨拶にハリを出したいな、と思ったのが、今回の記事である。
シンプルな人工無能の為のGem - SIMPLE MUNOU
というわけで、そういうシンプルな文章を生成するライブラリがsimple_munouというライブラリになる。
元々は、『実用Common Lisp』のELIZA実装の章を見て、こういうパターンマッチ的なテンプレートが出来ないかなーと思ったのだけれど、気がついたら、特にそういうものではなくなってしまったし、Ruby的にも冗長な実装となってしまった(これについてはあとで書く)。

実用 Common Lisp (IT Architects’Archive CLASSIC MODER)
- 作者: ピーター・ノーヴィグ,杉本宣男
- 出版社/メーカー: 翔泳社
- 発売日: 2010/05/11
- メディア: 大型本
- 購入: 3人 クリック: 476回
- この商品を含むブログ (20件) を見る
考え方
READMEを見れてみればだいたいわかると思うのだけれど、配列をto_munou
というメソッドを利用して、テンプレート化するという仕組みになっている。
このテンプレートに対して、words
に[文字, 種類]
というタプルを渡してやることによって、テンプレート記入された数字の部分を、適当にそのwords
に入ってきた文字列からランダムにピックアップして、say
で出力でいるようになっている。
要するに、ある文字列と種類を渡して、それをテンプレートの何処に利用するか、みたいな組み合わせを簡単に実現できる。
require 'simple_munou' def hello greeding = [1, 2].to_munou greeding.words = [ ["おはようございます!", 1], ["Hello, Good Moning! ", 1], ["おはよう!", 1], ["今日も一日がんばろう〜", 2], ["バリバリやっていくぞ〜", 2], ["頑張ってまいりますぞ", 2],] greeding.say end puts hello
問題点
いきおいで、こういうGemを作ってみたものの、下のコードとどう違うのかという問題は出てくる。
def hello def greeding [ "おはようございます!", "Hello, Good Moning! ", "おはよう!" ].sample end def message [ "今日も一日がんばろう〜", "バリバリやっていくぞ〜", "頑張ってまいりますぞ", ].sample end "#{greeding}#{message}" end puts hello
ちゃんとメソッド化して、名前をつけて、そのうえで、文字列の中で展開してあげるほうがRubyっぽいといえばRubyっぽい気がする。わざわざ、配列で文字とその種類をセットにするのは筋が悪い気もする(元々はテンプレートもランダムに選択できるようにする、みたいな野望があったので、そういう風にしている)。
まとめ
実は、先日は朝早く来ることが出来て、「ラッキー!早起きは三文の得だ」と思ってたら、会社の電話が鳴って、対応をやってみたところ、ボロボロで「ちょっと社会人というか、ビジネス的な常識がなさすぎるのでは……」と見ている言われたりしていた(内部の人を「いらっしゃらない」という変な敬語を使ったりするという基礎的なところがダメだった)ので、挨拶だけでは社会人はやっていけないという学びを得たりしていた。