[Ruby] かしゆかの誕生日!

  • 4
    Like
  • 2
    Comment

題名からしてネタにするつもり満載ですが、ネタです。

なお、これでも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しか返ってこなくて、ちょっと悲しい)。

perfume.rb
#!/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 タグつけるような変態は一人で十分だと思ったら、もう一人いました。素晴らしいです。

Atomをstyle.lessの記述のみで光らせる

更に追記(12/25)

無駄に github に置きました

https://github.com/sho7650/perfume.git