2009年3月15日日曜日

蒟蒻畑を全力で応援します!

どう考えても悪いのは消費者なのに!
マスコミやモンペアのバッシングを見てると、
マンナンライフが憐憫で居た堪れなくなりました…。

なんとかマンナンライフを応援したい!

そう思って、みらくる☆めいぷるでは、
蒟蒻畑 応援キャンペーンを始めました!

そこで私は、みんなにキャンペーンをけしかけて
傍観しているだけってわけにも行かないですし、
私自身も何とか応援したかったので、
マンナンライフのオンラインショップで
蒟蒻畑を購入しました!

蒟蒻畑が届きましたw


うひょー、これは萌えるヾ(*´∀`*)ノキャッキャ
初めてこんな大人買いしたかも…w
3 箱セットで 1 箱よりもお得!

今回注文したのは、三つの味がセットになったお買い得セットAです。
3 箱で送料込みの 6000 円でした。
ゲーム一本我慢すれば買える値段ですね!!

しかも、12個入り x 12 袋 x 3 箱 なので、合計 432 個の蒟蒻畑が入っています!
毎日一個食べても一年以上ですねw
まぁ、一日 6 個ぐらい食べると思うので、
全然賞味期限の心配も無さそうですけどね。

カロリー気にせず小腹を満たせるのがなんといっても…(つω`*)テヘ
これからはおやつの時間にスナックを食べなくて済みますw



よくみると、スーパー専用って
書いてますw
さすがに個人で買う人は
居ないのでしょうかね?


(箱が結構つぶれぎみ…w まぁ中身に影響ないだろうからいいんですけどねw)


さて、この箱どこにおいておこうか…w
さすがにこれほどの規模は私には無理ですし…
ってか一箱の値段が、
コーラの 2000 倍だし(ノ∀`*)ペチョン




それでは、満を持して御開帳~ヾ(*´∀`*)ノキャッキャ





どーん!(ワンピース風に


どどーん!(ワンピース風に



あーもう萌えまくり(*≧∀≦) キャッキャ♪
本当に畑になりそうなぐらい蒟蒻畑がいっぱいです!!


ヾ(*´∀`*)ノ ヤッサイ!!ヾ(*´∀`*)ノ モッサイ!!







これから毎日好きなだけ蒟蒻畑が食べられます!w
みなさんも、毎日の小腹が潤う蒟蒻畑を始めませんか?ヘ(゚∀゚ヘ)








蒟蒻畑に対するバッシングの、事の顛末を
詳しく知らない方は以下をどうぞ。




巷間では、「安全性が確立されていない!」とか
「子供や老人が食べることは充分想定できたはず!」とか言って
非難されている蒟蒻畑が不憫でたまりません…・゜・(PД`q。)・゜・ 

マンナンライフの蒟蒻畑だけがなぜこんなにも
喧々囂々たる非難を浴びなければならないのでしょうか。

過去 17 年間で、こんにゃくゼリーに因る窒息事故は、
22 件あります。(2008年末段階)
マンナンライフの蒟蒻畑は、こんにゃくゼリーの中でも
最も知名度も高くシェアも大きいというのに
マンナンライフの製品による事故は 22 件中 3 件しかありません。

また、他にもマンナンライフは事故を減らす工夫を製品に取り入れています。
外袋およびポーションの蓋は固めに圧着されています。
これは、子供が勝手に開けて食べないための工夫です。

他にも、容器の形にも工夫があります。
ハート型の容器は、つまんで押し出しやすくするための形です。
つまり、吸い込んで食べる必要の無い形になっています。

そして、外袋にも注意書きが絵柄付きで示してあります。
小さい子供と高齢者には食べさせるな、と。


それを無視した上で、幼児や高齢者に食べさせるなら、
切ってから食べさせてあげるなどの配慮が必要です。
少なくとも他の食品ならそうしているはずです。


全員に目の届きにくい保育園とか、
まだ幼児とも呼べない 1 歳の子供とか、
半身麻痺の要介護の高齢者とか、
今までの窒息事故を見てると起こるべくして起こったとしか思えません。



あまつさえ、遺族はマンナンライフに対して損害賠償を請求し、
「今まで何件も事故があったんだから危険性を予見出来たはずだ」とか
「お菓子売り場においてあるんだから子供が食べることも想定出来る」とか
「袋の注意書きも小さく、充分な対策がされていなかった」とか
答弁しています。



ゼリーだろうとなんだろうと、
そりゃかまずに一口で食べようなんてものなら、
パンだって餅だって充分に喉に詰まります。

そんなことはメーカーも百は承知です。
その上で、子供が勝手に食べないように工夫したり、
袋に注意書きを書いたりしているのに、
「自己責任」というとちょっと語弊がある気はしますが、

警報機鳴ってるのに踏み切りの真ん中に立ってたら
電車に轢かれた!
安全性が確立されていない!
歩行者が通行することを想定出来たはず!
遮断機の「くぐるな」という表記も小さく
充分な対策がなされていなかった!

って言っているようなものです。


遺族が声高に非難を掲げるほどに、
亡くなった方が余計に可哀相になっていく気がします。

2009年3月9日月曜日

正規表現 ゼロ幅、先読み、後読み

正規表現で最近便利な使い方を覚えました。
タイトルにもあるとおり、ゼロ幅の(否定的)先読みです。


http://www.example.com/index/~~
http://www.example.com/list/~~

上記二つのディレクトリ以外を参照する
全ての URL についてマッチする正規表現が必要でした。

先頭が、index または list でなければいいのだから、
[^a-z] のような否定表現と、
(abc|xyz) のような論理和グループを用いて、

^[^(list/?|index/?)][\w/\.]+

とすればいいと思ってました。

ところが、それじゃ動かない…。
色々調べていると、以下のように書けば、出来るということが分かりました。

^(?!(list|index)(/|$))[\w/\.]+

これで、赤字の URL にはマッチしませんが、
青字の URL にはマッチするようになりました。
  • index
  • index/
  • index/sample/file.php
  • list
  • list/
  • list/directory/
  • detail
  • detail/
  • detail/action.php
  • index-hoge
  • list-fuga/input.php
それでは、正規表現の解説をしましょう。
まず、1 文字目の ^ は先頭を表す記号です。

次に、(?!(list|index)(/|$)) の部分ですが、
これをさらに細かく分けて解説しましょう。

まず、(list|index) の部分は、
list または index という文字列に相当する、という意味になります。

そのあとに続く、 (/|$) の部分は、
/ または 行末 に相当する、という意味になります。

これら二つを合わせると、
  • index
  • index/
  • list
  • list/
上記の四つの文字列に相当する正規表現になります。


?! の部分の説明は少し後にします。


後ろについている、[\w/\.]+ はややこしくみえるかもしれませんが、
[A-Za-z0-9/\.]+ と同じ意味です。
英数字、スラッシュ、ピリオドだけで構成される 1 文字以上の文字列、ということになります。
ちなみに、ピリオドの前の \ は単なるエスケープです。


さて、要件として必要な駒がそろいました。
  • (list|index)(/|$) に該当しない文字列
  • [\w/\.]+ に該当する文字列
上記二つの条件を同時に満たすにはどうすればいいでしょうか。


ここで、ゼロ幅というのが役に立ちます。
ゼロ幅というのは、^ や $ と同じで、
なにか特定の文字のことを表すわけではなく、
位置だけを判別するもののことです。


ゼロ幅を活用すれば、正規表現置換の際に、
「~という条件で検索するが、置換対象には入れない」という使い方が可能になります。
^ や $ もそうですよね。
検索対象にはなりますが、置換対象にはなりません。

今回は、文字列 (またはパターン) をゼロ幅として検索します。

例えば、
sample.txt というファイル名があるとします。

txt の拡張子をもつファイルのファイル名だけを置換する場合、
拡張子は変えたくないので、 (\.txt) をゼロ幅で検索する必要があります。
また、ゼロ幅とは、 ^ や $ と同じで、位置だけを判別するものです。
このケースでは、拡張子の前までを置換対象として検索する必要があります。

特定の文字列の前までを置換対象にする場合は、
ゼロ幅の先読みを使用します。
書式は以下のようになります。

.+(?=\.txt)

こうすれば、任意の文字が 1 文字以上で .txt の前まで、という正規表現になります。
条件にマッチする部分の前まで、を表します。

逆に、ファイル名はそのままで、拡張子だけを置換する場合、

(?<=.+\.)[\w]+$

こうすれば、(半角英数字 1 文字以上 + ピリオド) の後ろから行末まで、という正規表現になります。
これは、後読みといいます。条件にマッチする部分の後ろから、を表します。

ゼロ幅の先読み、ゼロ幅の後読みのそれぞれに、
さらに、肯定表現、否定表現があります。
  • (?=[a-z]+)        // ゼロ幅の肯定的先読み - アルファベット小文字の後ろから
  • (?![a-z]+)        // ゼロ幅の否定的先読み - アルファベット小文字ではない文字の前から
  • (?<=[a-z]+)        // ゼロ幅の肯定的後読み - アルファベット小文字の前まで
  • (?<![a-z]+)        // ゼロ幅の否定的後読み - アルファベットの小文字ではない文字の後ろまで


さて、ここまでが、 ?! の部分の説明になります。

元々必要だった要件は、
index にも list にも相当しないディレクトリ名の前からを対象としますので、
ゼロ幅の否定的先読みを選択します。
よって、以下のようになります。

(?!(list|index)(/|$))


よって、URL の第一階層のディレクトリ名が index でも list でもなく、
なおかつ、英数字、 スラッシュ、 ピリオドで構成される文字列を
正規表現でマッチさせるためには、

^(?!(list|index)(/|$))[\w/\.]+

このような表記になるというわけです。

Zend_Controller_Router_Route_Regex などでも活用できそうです。