読者です 読者をやめる 読者になる 読者になる

Line 1: Error: Invalid Blog('by Esehara' )

または私は如何にして心配するのを止めてバグを愛するようになったか

>> Zanmemo

あと何かあれは 「esehara あっと じーめーる」 か @esehara まで

社会人の常識として、チャット上の挨拶をきちんと行う

近況

f:id:nisemono_san:20150624111251j:plain

部屋の本が爆発しそうだったので、職場に並べたらカオスになった事例。

はじめに

ログバーでは、コアタイム・フレックス制であって、その為に割りと出社時間に関してはマチマチだったりする。自分とかは、フラっと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)

実用 Common Lisp (IT Architects’Archive CLASSIC MODER)

考え方

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っぽい気がする。わざわざ、配列で文字とその種類をセットにするのは筋が悪い気もする(元々はテンプレートもランダムに選択できるようにする、みたいな野望があったので、そういう風にしている)。

まとめ

実は、先日は朝早く来ることが出来て、「ラッキー!早起きは三文の得だ」と思ってたら、会社の電話が鳴って、対応をやってみたところ、ボロボロで「ちょっと社会人というか、ビジネス的な常識がなさすぎるのでは……」と見ている言われたりしていた(内部の人を「いらっしゃらない」という変な敬語を使ったりするという基礎的なところがダメだった)ので、挨拶だけでは社会人はやっていけないという学びを得たりしていた。