4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RubyAdvent Calendar 2016

Day 23

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

Last updated at Posted at 2016-12-23

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

なお、これでも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

4
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?