題名からしてネタにするつもり満載ですが、ネタです。
なお、これでもRuby Advent Calender2016 23日めのネタになります。申し訳ありません。
コメントいただいて中身を少し変えました(12/25)。
かしゆか様誕生日おめでとうございます
12月23日:今日はなんの日?
「かしゆかの日」
1988(昭和63)年12月23日に、かしゆか(樫野有香)生誕されたことを祝し、平成元年12月23日 (かしゆか満1歳) より、国民の祝日として制定される。今年で 28回目。
樫野有香 from Wikipedia
ということで、かしゆかの誕生日だけに反応するモジュール
を準備してみました。
このモジュールを組み込んで、Kashiyuka.birth
をコールすると、返り値として、かしゆかおめでとうメッセージが返ってきます。
12月23日しか反応しません。それ以外はnilです。潔いです(追記:12/25現在、試したら、ほんとにnilしか返ってこなくて、ちょっと悲しい)。
#!/usr/bin/env ruby
# coding: utf-8
require 'date'
module Kashiyuka
BirthYear = 1988
def self.birth
case Date.today.to_s
when /^(\d{4})-12-23$/
"キューティクルの神様、かしゆか #{$1.to_i - BirthYear}歳の誕生日!"
end
end
end
なぜ、わざわざ case
文を使っているのかというと、module名を Perfume
にしたら、3人分使えるなーという発想があったので、今後はそのように拡張していけたらいいなとか考えています!(ぉぃ
C言語の呪縛が長らく続いているので、「関数はreturnしなきゃ!!」みたいな強迫観念がありますが、Rubyだと大半の処理が式として処理されて、それなりにうまいことやってくれるので、一所懸命 return
しなくても良いです。が、個人的には素人向け・素人さんはつけておいたほうがしばらくは安心だと思います。わたしの場合は、ただの強迫観念です。C言語怖い。return
ないと落ち着かない病です。
言い訳だけすると
ホントは、何も考えずにRubyの文字コードについて何も考えずに、変数内にUTF-8な文字列が含まれてしまったときに、自分のケースではとんでもない挙動を起こしてしまうことの回避策・パターンをいくつか編み出したつもりになっていたら、ほんとに編み出したつもりだっただけで動いたり動かなかったり、恐ろしい出来事になってしまったので、封印しました。
この点については、Ruby M17N の設計と実装にて理解した上で、まとめておきたいと考えてます。
Salesforce の Force.com Canvas という機能では、スケルトンとして Java と Ruby だけが準備されていて、フロントエンドの JavaScript と署名要求をやり取りするときに、この文字コード問題がわんさか発生するので、これにあわせてまとめてあげたら、良いステマになるんじゃないかと考えていましたが、それとは別に Force.com Canvas については来週まとめておきます。JavaScript 怖い。
追記
Perfume
タグつけるような変態は一人で十分だと思ったら、もう一人いました。素晴らしいです。
更に追記(12/25)
無駄に github に置きました
https://github.com/sho7650/perfume.git