Using Hex coded characters inside Ruby regex character classes

I ran into a (bug? | annoyance) in Ruby 1.8.6 on MacOS X.

Run all following code with

$KCODE = 'u'

Working with the hex coded em-dash character.

puts "xE2x80x94"
output: 

I can successfully use the hex coding to generate a simple regular expression.

puts "—" =~ /xE2x80x94/
output: 0

However, this doesn’t work if I put the hex coded character inside a character class.

puts "—" =~ /[xE2x80x94]/
output: nil

I can work around this by evaluating the hex coded character and generating a UTF-8 character, before putting into the character class brackets.

puts "—" =~ /[#{"xE2x80x94"}]/
output: 0

To see what’s happening, I inspected the regex objects.

/[xE2x80x94]/.inspect
output: "/[xE2x80x94]/"
/#{"xE2x80x94"}/.inspect
output: "/—/"

It looks like if I want to reliably use unicode within Ruby regular expressions, using the hex code inside of the regex is a bad idea. I should evaluate the hex code and generate a unicode character before sticking it into the regex.

経済危機と生物学の間

分子生物学の実験でPCRや細胞培養をやっていると、たった一つの指標で成果を選別することの危うさが身に染みます。

例えばPCRであれば、増幅しにくいあるいは量が少ない遺伝子をたった一つのプライマーセットで増幅しようとすると、非常に高い確率で目的以外の遺伝子がとれてしまいます。したがって、プライマーセットというたった一つの指標ではなく、シークエンス解析などをして上で、目的の遺伝子が増幅されたと最終的に確認しないといけません。

細胞培養であれば、遺伝子を導入して安定形質転換細胞を作り上げるときは、まずはハイグロマイシンなどの薬剤で選択を行います。しかし遺伝子が細胞増殖に悪影響がある場合は、ハイグロマイシン耐性細胞の多くは目的の遺伝子を発現していません。予想のつかない現象で薬剤耐性を獲得した、目的と全く異なる細胞がかなり多く生き残るのです。ここでもやはり薬剤耐性というたった一つの指標ではなく、ELISAなどの全く別の指標で最終確認を行う必要があります。

分子生物学ではこのようなことを踏まえて、たった一つの指標による判断が強く戒められています。学術論文にてある結論を導こうとするとき、その結論を裏付ける独立の実験を最低2つ、通常は3つぐらい行う必要があります。例えばある遺伝子の量的変化を証明したい場合は、DNAアレイ、リアルタイムPCR、ウェスタンブロットなどをやらないといけません。

一方でアメリカの金融業界の破綻の原因は、ルールを極力無くした上での利益追求と言われています。金融業界をコントロールするような規制を敷くのではなく、自由に利益の最大化を追求させれば、自ずと良質の企業が生き残るという、レーガン・サッチャー以来の考え方です。

同様に、ここ数年間は株主至上主義が日本の経済界に吹き荒れています。堀えもんやスチールパートナーズなど、株価や株主が非常にクローズアップされ、企業としての本当の社会貢献よりも、利益、株価、そして時価総額の方がクローズアップされました。

証券会社に長く勤めていた私の父は「それでも最終的には株式は企業の価値を正しく反映する」と信じて疑わないのですが、PCRや細胞培養の実験でさんざん苦しめられてきた私としては、とてもそうは思えません。

企業の価値を少数の数字的な指標で判断することはできないだろう。数字的なものよりも、もうちょっと感覚的な何かで裏付けられなければ、全く誤った判断をしてしまうということを、私の分子生物学の実験経験は訴えます。

そもそも生物学実験において、数字的に出てきたデータほど怪しいものはありません。例えばウェスタンブロットのバンドの濃さを数字化してデータを見せられても、実際のウェスタンブロットの画像を見ない限り、まともな研究者は全く信用してくれません。同じように企業活動を売上げだとか利益、そして株価という数字で抽象化した姿は、全くの虚像である可能性が高いと思います。

現在の経済危機の中、レーガン・サッチャー以来の自由主義が見直され、金融をより強く規制する流れになっています。また雇用が不安定化する中、企業の社会責任も強く言われ、利益追求よりも安定して雇用を守ることが要求されています。そして成果主義の見直しもあちらこちらで議論になっています。

今朝の朝日新聞には『「ノルマなし」が営業力に』という記事があり、ネッツトヨタ南国(高知市)で営業ノルマがなくなったことが紹介されています。その代わりに50項目からなる営業マンの売り方の「質」を評価する独自のシステムが構築されているようです。まさに、数値化しやすい「ノルマ」で評価するのではなく、数値化しにくい多数の視点で評価するやり方です。

僕はもう分子生物学の研究から離れて久しいのですが、その中から得たものの考え方に世の中の流れが向かっている気がしてなりません。

一方で、竹中平蔵元経済財政政策担当大臣などが「実験」をたくさんやっていれば、新自由主義グローバリズムの考え方がもう少し成熟したものになっていたのではないか、セーフティーネットはもっと早め早めに構築されていたのではないかと考えてしまいます。

やっぱり、必要なのは「実験」でしょう。
(ちなみに汚いシークエンスデータと格闘するバイオインフォマティシャンも、立派に手をドロドロにしているという意味では、実験科学者だと思います)