元気のGは来年から本気出すのG
2014年のid:zonu_exeは2013年のid:zonu_exe氏を超えられなかった。私からは以上です。
去年はPHPとHTTPをやったので、今年はなんじゃろ。
こんにちはこんにちは、好きなプリキュアはキュアパッションです。
この記事は プリキュア Advent Calendar 2014 - Adventar の14日めです。
このアドベントカレンダーの主宰でもある id:sue445 が作った プログラミング言語における代表的プリキュア実装 である Rubicure に何度か貢献してるので、本日はそれぞれのパッチについて紹介します。
プログラミングに興味のない型はごめんなさい ヾ(〃><)ノ゙
以前、Rubicureに学ぶメタプログラミングといふ内容を社内勉強会で発表したので、興味があればこちらも参照ください。
Feature/define operators by zonuexe · Pull Request #7 · sue445/rubicure
precure = Rubicure::Girl.find(:passion) case precure when Precure.dokidoki puts "#{precure.name}はドキドキプリキュアだよ!" when Precure.fresh puts "#{precure.name}はフレッシュプリキュアだよ!" else puts "#{precure.name}はドキドキでもフレッシュでもないよ" end
こんな風に case-when
を使った分岐を書きたかったがために演算子を定義しました。
Remove last linebreaks of transform_messages by zonuexe · Pull Request #8 · sue445/rubicure
重箱の隅です。付けるのは簡単だけど取るのはめんどくさいよね。
ruby -rubycure
Add `ubicure' by zonuexe · Pull Request #22 · sue445/rubicure
コマンドラインで ruby -r json
と書くと、ソースコード内に require "json"
と書いたのと同じ意味を持ちます。
このパッチを送る前から ruby -r rubicure
と書けば同じことができたのですが、これで ruby -rubicure
と書けるようになり、 Rubyにrubicureコマンドを追加した …ように見えます。 (錯覚)
もともとRubyには library un といふライブラリがあって、 ruby -run
のように利用することができたことに触発されました。
irb -rubicure
や pry -rubicure
も、もちろん可能です。
どうでもいい逸話として、今年幸せゲットして kyon_mm * kaori_t_spica 結婚祝いLT大会 in Tokyo #kyon_kao_wedding といふ内輪向けイベントで幸せの嵐が吹き荒れてたんですけど、会場係の id:sue445 が忙しそうだったのでその間にプルリクエストを送ったらイベント終了前にマージしてくれたといふ経緯がありました。
Feature/specific transform by zonuexe · Pull Request #36 · sue445/rubicure
% ruby -rubicure -e'Cure.passion.change!' チェインジ!プリキュア・ビートアップ! 真っ赤なハートは幸せの証! 熟れたてフレッシュ、キュアパッション! レッツプリキュア! % ruby -rubicure -e'Cure.beat.send("レッツプレイ! プリキュア・モジュレーション!")' レッツプレイ!プリキュアモジュレーション!! 爪弾くは魂の調べ! キュアビート! 届け4人の組曲!スイートプリキュア! % ruby -rubicure -e'Cure.lemonade.metamorphose!' プリキュア!メタモルフォーゼ! はじけるレモンの香り、キュアレモネード! 希望の力と未来の光! 華麗に羽ばたく5つの心! Yes!プリキュア5! % ruby -rubicure -e'Milky.rose.metamorphose!' /path/rubicure/girl.rb:136:in `method_missing': undefined method `metamorphose!' for #<Rubicure::Girl 美々野くるみ> (NoMethodError) from -e:1:in `<main>' % ruby -rubicure -e'Milky.rose.translate!' スカイローズ・トランスレイト! 青いバラは秘密のしるし! ミルキィローズ!
中立的なプリキュアの変身メソッドには Girl#transform
がありますが、プリキュア固有の変身メソッド、つまりはフレッシュプリキュアは「チェインジ(change!
)」したいし、プリキュア5は「メタモルフォーゼ(metamorphose!
)」したいものです。そこで、設定ファイルにデータを追加することで、それぞれのプリキュアに固有の変身メソッドを定義することができるようになりました。
実際にはメソッドを動的に定義するわけではなく、Girl#method_missing
で待ち受けて、そのプリキュアの変身メソッドかどうかをチェックします。正しくない変身メソッドだったら、変身はしません。
ちなみにメソッド名の !
のあるなしは故意に曖昧にしてたのですが、 Girl#humanize
は Girl#humanize!
が正式になって前者は WARNING
が出るようになってしまいました…
Add Cure.peace.pikarin_janken (singleton method) by zonuexe · Pull Request #39 · sue445/rubicure
説明は不要かと存じますが、キュアピースは変身するときにじゃんけんを挑んできます。それがピカリンジャンケンです。
プリキュア同士の勝ち負けを出すべきか、などいろいろ妄想はあるのですが、キュアピースが一方的にじゃんけんを挑んでくる原作を踏襲して、sleep
で適度に待ちながらランダムに標準出力に書き込むだけです。キュアピースが出す手のパターンは、これも原作の頻度を踏襲して居ります。
sleep
する時間は調節できるから良いのですが、「標準出力に書き込む」といふ挙動が、Rubicureを利用したWebアプリを実装したときに障害になりはしないかといふ杞憂はあります><
Girl#to_s
Add Girl#to_s (alias of #name) by zonuexe · Pull Request #59 · sue445/rubicure
さっきマージされたばっかりの新鮮なプルリクエストだよ!
上のサンプルコードにあった puts "#{precure.name}はフレッシュプリキュアだよ!"
が冗長だと思ったので puts "#{precure}はフレッシュプリキュアだよ!"
で済むようになりました。
「プログラマは誰でもプリキュアを実装れるのよ」とは id:sue445 の名言ですが[要出展]、プリキュアといふ概念をプログラミング言語に転写するのはおもしろいので、やってみると楽しいですよ ヾ(〃><)ノ゙
プリキュアとは関係ないのですが、Rubicureに触発されて同僚たちと虹のコンキスタドールといふアイドルグループを実装したところ、三者三様になっておもしろかったといふ知見があります。データの互換性なんかありゃしない ヾ(〃><)ノ゙
プリキュアの世界もkan/p5-acme-prettycureとかdrillbits/pycureとかkaosf/clocureとかいろいろあるのですが、言語間の相互運用性などないので、やはり三者三様です。
そして二年が経ったとさ p(ixi)v
PHPたのしい ヾ(〃><)ノ゙
具体的に言ふとアレなことも多いのですが、
まとめると「PHP」なのですが、一年前の記事に「セキュリティ」とか書いてたのは、まあ、さういふことです。地道にこつこつとやってきたことが生きてる感じはします。シェルスクリプトも思ったより書いたしね!
zonuexe/php-http-accept-languageなんかは仕事中に調査したことを、きちんと実装してみた感じです。まあ主要サービスのコードには入れてないんですけど。
いままでずっと新入りのつもりだったのですが新しく入ってきたひとたちも多くて、しっかりしなきゃなあみたいな感じあります。あと英語わからんちんって言ってるのはやっぱりつらいので、もうちょっとコミュニケーションとれるようにしたい。
仕事でやりたいことはたくさんたくさんある。さしあたっては来年もpixivとアプリとAPIにご期待ください ヾ(〃><)ノ゙☆
最初の年はRuby、今年はPHP、みたいな感じでやってきたから、次はどうしよう。JavaScript?
なんか年末にエンジニア向け pixiv開発のbugリストからの脱出!エンジニア職インターンとかやるみたいなので、来るといいです。僕がどの程度まで関与するのかはよくわかんないけど、握手はできるよ!
東亜飯店で飯を食べた - Line 1: Error: Invalid Blog('by Esehara' )
褪色です pic.twitter.com/snHkbNpRBH
— 303 See Other (@tadsan) 2014, 10月 2
東亜飯店、予約もちゃんとしてくれてありがたいし、安いし美味いし、いきなりやってきた粗暴な人達にも快く対応してくれたり、写真も撮らせて貰えたので、退職関係なく秋葉原に来たら積極的に利用するべき店だということがわかった。最高だった。
— 似非原重雄 (@esehara) 2014, 10月 2
泥酔してトイレに立ったタイミングで東亜飯店のシェフを発見した瞬間が次元の壁が崩壊して最高の体験だった。
— Roland TB-303 (@tadsan) 2014, 10月 2
東亜飯店うまくて安くてフレンドリーな最高の店だったので行くといいですねという感じの会だった
— ここには小銭しかない (@fuba) 2014, 10月 2
東亜飯店、いい店だったけどいとおちゃんなどの人材をほいほい連れていって、ついでに褪色されては困る。次行ったら例の肉食べたい。
— Roland TB-303 (@tadsan) 2014, 10月 2
私自身の褪色退職は当面なさげです。トラストミー。
しもめぐろのともだちと会ってきた。ハッカソンが終ったあとは目黒駅近くで飲んできた。
僕は Precure Textbook なるものを作るべく、ちくちくと rails g
を繰り返してたらいつの間にか9時間が経過してたでござる、って感じで進捗だめです。
本当は「phprecure!」なるものを作りたかったのだけれど、その前段階として言語に依存せずに利用できるデータが欲しいよねと思ってJSON形式のプリキュア教科書のデータ構造設計に着手し、データ間の関連を見てるうちにActiveRecordで作ってJSON吐いた方が楽じゃね? となってi18nを考慮したいと欲が出てきて… みたいな現状。
そんなこんなで自分の進捗がいまいちだったので、帰ってきてからRubicureに機能を実装してPull Requestを送ってみた 。前々から「チェインジ」とか「メタモルフォーゼ」したいよね、と思ってたのを形にした感じ。 実装方法はすごい適当。
毎度のことながらsueさんお疲れさまです。
自分のコード書けなさに絶望し、卒業研究を投げ出して大学をやめることしか考へてなかった。
大学を辞めたい気持ちもおさまったところでイシキが高まってTDD Boot Camp 札幌 2.0に参加した縁で id:nakayoshix と仲良くなり、通学しながらアルバイトをはじめた。
もろもろの事情により仕事もなくなり、自宅警備をしてた。Twitterで高くなったイシキを持てあまして計算機プログラムの構造と解釈 第二版を読んだりしてた。
そろそろ求職しないといけないと思って東京を放浪してた。10日ほど放浪してたけど、野宿はしてない。ぷらぷらしながら電源のとれるカフェに居坐ってた気がするけど、何をしてたのかよくわからない。
8月18日に、就職ではないが、糊口をしのぐための仕事は決まった。
決まったあとでRuby開発経験を盛るための成果物が必要だといふのでzonuexe/tenarai-sdjreaderを書いた。いまみるとひどいし、なんのアピールになるのかよくわからない。初めてRubyで動くgemっぽいものを書いた気がする。
東京に転居し最初の仕事の契約を終了され現職に就職し代々木に転居し現在に至る。
なんか時空がすごく歪んで申しわけないんですけど闇 Advent Calendar 2013です。
闇っぽいこと二週間以上いろいろ考へてたら全然まとまらなくって長文を何度も書いたり消したりしてたら生活に支障をきたしてる感じがしたので、気分転換に架空の契約書と注文でも書いてみたら結構楽しかったのです ヾ(〃><)ノ゙☆
契約書は著作物?|著作権 侵害・違反を考えるで紹介された判例によれば、土地売買契約書の記載内容は、思想又は感情を創作的に表現したものであるとはいえないから、著作物ということはできない
らしいですよ。へー。
僕は善良な市民だから、いたいけな若者を相手にこんな阿漕な契約を結ぶ会社が実際に居るのかよく知らないんですけど、みなさんは真似しちゃだめですよ ヾ(#><)ノ゙
最後に労働者派遣事業の適正な運営の確保及び派遣労働者の保護等に関する法律を貼っておきますね。
第二章 労働者派遣事業の適正な運営の確保に関する措置
第二節 事業の許可等
第二款 特定労働者派遣事業
(特定労働者派遣事業の届出)
http://law.e-gov.go.jp/htmldata/S60/S60HO088.html#1000000000002000000002000000002000000000000000000000000000000000000000000000000
- 第十六条 特定労働者派遣事業を行おうとする者は、第五条第二項各号に掲げる事項を記載した届出書を厚生労働大臣に提出しなければならない。この場合において、同項第三号中「一般労働者派遣事業」とあるのは、「特定労働者派遣事業」とする。
第五章 罰則
http://law.e-gov.go.jp/htmldata/S60/S60HO088.html#1000000000005000000000000000000000000000000000000000000000000000000000000000000
- 第六十条 次の各号のいずれかに該当する者は、六月以下の懲役又は三十万円以下の罰金に処する。
- 一 第十六条第一項に規定する届出書を提出しないで特定労働者派遣事業を行つた者
- 二 第二十二条又は第四十九条の三第二項の規定に違反した者
- 三 第四十九条の規定による処分に違反した者
会社と労働者の関係が正規雇用でも請負契約でも準委任契約でも、特定または一般労働者派遣事業の許可なしに労働者を他社に派遣して他社の指揮系統のもとで働かせることはできませんよ。当然じゃないっすか^^