はてなキーワード: ワイルドカードとは
例えば、
という場合を想定してみましょう。
普通想像するのは、IF関数の条件として「*」(アスタリスク)などのワイルドカードを使う方法ですが、これをIF関数で表すことはできません。
B1セルに「=IF(A1="*東京都*","○","×")」と入力し、下方向にオートフィルすればよいような気がしますが、これでは実際にはA1が「*東京都*」という文字列の場合のみ結果が「◯」となります。「*」(アスタリスク)が文字として認識されてしまうためです。
次のようにIF関数とCOUNTIF関数を組み合わせることで可能となります。
B1セルに
と入力します。(※「>」は正確には半角です。ここでは匿名ダイアリーの特性で全角としています。)
COUNTIF関数は、第1引数で指定された範囲の中から、第2引数で指定した条件に合致するセルの個数を数えてくれます。「*」(アスタリスク)はここではワイルドカードと認識されるます。
複数の関数を組み合わせないといけなかったり、IF関数とCOUNTIF関数で「*」(アスタリスク)の扱いが異なっていたりとややこしいですが、覚えてしまえばこちらのものです。
映画レビューの信頼度を測って順位付けとか映画好きとして看過できない記事を見かけた。
結論から言えば、言葉の使い方から数字の使い方までテキトウで、普通に侮蔑になっててヒドイ。
(たぶん自分が何をしたいのかよく判って無いまま数字を弄ったからだと思うけど)
みんなも、自分の感性に似てるレビュアーを見つけるようにしてみよう!
映画は感性に大きく左右されるので、万人に正解があるレビューは存在しない。
端的に言えば、アンパンマンが好きな人と、チャイルド・プレイが好きな人とで、レビューの読み方は違う。
どんなに高評価だろうが、子連れがポルノの帝王「ドン・ジョン」みちゃダメなのだ。
どんなに高評価でも、ゴア好きがモキュメンタリーホラー「ブレア・ウィッチ・プロジェクト」はダメだろう。
なので、映画のレビューの優劣を決めよう、成功や失敗を検定しようというのは、無意味な行為だ。
「オレが映画を観る参考にする為に、ある人のレビューが利用できるか知りたい」なら別に問題ない。
これは言い換えると「オレの感性に最も近いレビュアーを探したい」と言う意味だからだ。
そこで、自分の映画評とマッチングさせるにはサンプル数が少なくて使いづらいので、
自分の感性の近似として「Filmarks」スコアを用いる、なら良いと思う。
これは「Filmarks」の評価集積に良く近似するレビュアーを見つける事になるからだ。
(これなら、近似しないレビュアーが別に劣っているわけではないことは自明だ)
故障率とか、稼働率を出す際に利用されている、工業的な用語だ。
(ある業界内の定義通りに使えという意味ではなく、キチンと意味付けして使う必要があるってことだ)
「Filmarks」が2点以下なのにレビューが4点以上なら「故障」と意味づける、ならまだ判る。
Filmarksの低スコアを高スコアにしちゃう人、つまりオレの地雷判定とは違う≒壊れている、だ。
(それだって相当失礼な表現だが。本来この手のは第一種過誤と第二種過誤(偽陽性・偽陰性)の話だ)
ある値(真値)に近いかどうかを示すのは、「正確度(accuracy)」と呼ぶ。
1点を1点と言うか、4点を4点と言うか、ということだ。マッチングだね。
計測値に再現性があるかどうかは、「精度(precision)」と呼ぶ。
2点の映画を1点と言ったり3点と言ったりバラつきが無いか、ということだ。
元々やりたかったことが「地雷を踏みたくない」なら、信頼度(故障率)を測るべきだ。
件の雑な記事では、正確度を測ろうとしている。しかも測り方が輪をかけて雑だ。
そもそもの「地雷を踏みたくないから、低評価映画を高評価付けられたら困る」なら、
「Filmarksで低評価を付けられてる作品に、何点付けたか?」を数え上げないといけない。
件の記事のFilmarksスコアで2点以下は、「ワイルドカード」ただ一本である。(2.9点)
そうすると「地雷避けレビュアーを探す」意味では、コレと比較しないと無意味だ。
(4点を4点と評価してても、2点も4点と言っていれば、地雷避けにならない)
一本しかないので誰でもすぐ判る。
- 中山 治美(2点):こんなジェイソンはイヤだ!
- 森 直人(3点):意外にもオフビートな面白さ
- くれい響(3点):ハゲがハゲを嘲笑する深い意味。
- ミルクマン斉藤(3点):強引に派手な展開を狙わない余裕のステイサム映画。
- 相馬 学(4点):ハードボイルドな味が活きたステイサム最新作
- なかざわひでゆき(4点):これぞ男が惚れる“男の映画”
(http://www.cinematoday.jp/movie/T0019688 短評順序は引用者入れ替え)
同率2位が、3名。Filmarksで低評価なのに4点が2名。
件の記事では中山 治美が7位、相馬学、なかざわひでゆきが4位と、
地雷避けには全く使えない順位になっていることが、ひと目で分かる。
あのランキングでは、ワイルドカードは観るべき映画になるのではないか?
(そもそも1本で検証する滑稽さは伝わると思うが、10本でも同じであるのはお分かりいただけるだろうか?)
目的を忘れて地雷避けにすら使えないランキングをドヤ顔で載せるぐらいなら、
レビュアーのお名前を書いた紙飛行機を飛ばして、飛距離順に並べたほうがマシである。
ミルクマン斉藤さんがFilmarks近似である(その他の方がFilmarksと乖離がある)と主張する件の記事は、すぐに取り下げるべきだと思う。
タイトルに「【検証】シネマトゥデイ映画短評ライター信頼度調査 ~映画評論ライター9人の頂点は誰だ?」としているのは、即取り下げて謝罪すべきレベルの侮辱記事であると思う。9名全員を愚弄している。
(最低でも【お遊び】【ジョーク記事】と入れるべきだし、調査や頂点という単語を使うべきではない。はてなブックマーク - 【検証】シネマトゥデイ映画短評ライター信頼度調査 〜映画評論ライター9人の頂点は誰だ? - YU@Kの不定期村に冷静なブコメが付いているのが不幸中の幸いだ)
基本アウトなのをどこまで見逃すかって話なんだからよ。
たまに不思議なコメントが沸くからクギ刺しとかねえとなあ、とか思うわけなんだが。
そりゃまあ、普通に考えて捕まるだろ。というか、これ何をどう考えたらOKだと思ってたんだ?
というかまあ、正直言えばこのボートはギリOKだった可能性が高い。というか、摘発されないっぽい気配がする。
「わいせつ物頒布等の罪」ってさ、「自由」と真っ向対立するワケよ。表現とか信教とか。
大事なことだからもう一回言うけど、「猥褻物かどうかは、国が決める」わけだ。
これな、ポイントは「普通人」とか「善良な」とか入ってるところな。
要は、「国の秩序を乱すような行為はアウト」だって言ってて、やりすぎだって判断すると警察が出てって逮捕すんの。
なに堂々と配ってんだオマエそれ通報受けたら逮捕しないと警察がOKしたとか判断されたら困るのよ。
昔ならOKでも今はアウトとか、今はアウトでも昔はOKだったとか、あるの。世論によるの。
んでな、「じゃあAVは」とか「電車の中吊りが」とか「週刊誌が」とか馬鹿が言うだろ?
あのな、それって先生にイタズラ見つかって叱られてるときに、「あいつとあいつもやってました!」って密告と同じなの。
なに?全部規制して欲しいの?
つーか、AV業界や水商売を人身売買で、AKBを児童ポルノで、外圧受けましたっつって摘発して欲しいのか?
警察も検察も中世かもしれないけど、人権意識もおそろしく低いんだよ。
あのな、悪法も法って言ったあの人は偉かったよ。
いまは、単に摘発されてないだけなの。AVとかオールアウトなの。
いやなら法律を変えるしかないぐらいのワイルドカードなんだよ。つうか、そうだろ。
だからさ、ちくちく密告とかしてないで、ちゃんと法改正に向けて動けって。
せめて天下りが居たビデ倫が潰された経緯とか、調べて話せよ。良くゲームプレイ動画でお察し下さいとか言ってんだろ。
結構マジで、そろそろ紅白とかTVで未成年が働いてんのもよく考えた方が良いぞ。麻痺してるぞオマエラ。
あとな、法には不遡及って大原則があるから、明治40年より前から有る男根信仰についてはセーフな。
祭だからつってやり過ぎると、めんどくせえなあと思いながら摘発に動くと思うからほどほどにしとけ。
便所でクソ垂れてても誰も文句は言わねえが、電車ん中でやりゃマズイだろ。
人間は誰しも寝るっつったって、国会の会期中に寝てりゃ当然批判されるし。
性欲もおんなじなの。酒に薬混ぜて、産めよ増やせよ地に満ちよは捕まるの。
喰う寝る出すヤる全部人間だから当然するだろうけど、TPOを弁えろって話だよ。
ただまあ、その辺は承知の上でギリギリを攻めて「普通人の正常な性的羞恥心」とか「善良な性的道義観念」を社会に問うていこうとする活動家とか、
単なるお笑い好きの素人さんなので、単純に面白かった、面白くなかった、
異論は認める。そんなもん人それぞれだ。評価辛めで。
俺いつも思うんだけど、こういう類のショーレースってちょっとだけ、何か?
を感じずにはいられないんだよね。いつも。優勝にふさわしいか?どうかなんて
とやかく言わないけど、視聴者が面白かった!っていうのと審査員の評価ってやっぱり別なのよね。と思った。
正直なぜ?決勝に残ったのか?というのが良くわからないんだけど、
ワイルドカードの流れ星の方が面白かったし・・・別に二人とも嫌いでは
ないけれどそれぞれピンでやっていて、コンビになったらこんなにも生きない
というのもなかなかだな。と見てて思った。
HGが先に売れて好感度的には高そうだけど、正直ツッコミ下手だと思う。
他の先輩芸人の方がよっぽどRG上手く使う。後脱ぎネタってのも引っかかった。
普段脱いでる人が脱いでも面白くない。
もっと笑ったと思う。
きっともっとやりようがあったと思うんだよな。
そのあたりの練度が足りなかったと思う。
良かった。正直予選突破はここかと思っていた。
去年のダジャレネタをちゃんとねって進化していたし、欲を言えば、
ツッコミの暴走をどう止めるか?というところが一番の大きな「オチ」だと
思うのだけどそこが弱かったと思う。
いやハマる時もあるんだけど今年は全然ハマらなかった。
審査員としてはやっぱりこういう「新しい系」とか個性がある感じの漫才
って受けるのかな。。。と思った。
でもそんなに会場も湧いてなかったように自分は感じたし、
そう考えるねぇ、なんかやっぱり千鳥に対する評価が高すぎる気がして
ならない。
中くらいの笑いがずっと続いてそのまま。そんな感じ。
そこは面白かった。
緊張とかそんなのもあるんだろうな。リズムの悪さを感じた。
4分だから難しいんだけど、もう少しだけ最初もっと「ゆっくり」を
緊張とかもあるんだろうなぁ。。
好きです。俺はオーソドックスが好きなんだなと、再確認。好みです。
特に「マイク」生なので仕方がないけどちょっと「聞きにくかった」
後緊張もあると思うんだけど滑舌がいつもより悪くなっていたように思う。
という基本さえ押さえれば、、、もっと面白かったんだけどなぁ。。。
ノンスタはそういうの上手いと思う。常にマイクを意識している。
遠くでしゃべる時は意図的にしているのも感じる。
銀シャリは好きなのでまた頑張ってほしい。
正直バイトリーダーのイメージしかなかったから、ネタ自体が新鮮だったのと
客の盛り上げ方知ってたよね。くらいかな?拍手とかさ、別に面白くて叩いた
わけじゃないと思うよ。盛り上がりで拍手ってあるでしょ?それも入ってたと思う。
良いとは思うんだけど、どっちかというと1人漫談に近い。もちろん内容は相方が
いないと成立しない内容だけど、もう少し掛け合いを生かしてもよかったのではなかろうか?
とも思います。予選的にはこのグループなら突破ですが、AとかCなら危うい感じ
だったと思うよ。1本目としては。下手したら銀シャリに負けてる。
正直全然ハマりませんでした。面白い時ものすごい面白いんですけどね。
それだけ。
漫才という中での「技術」とか「リズム」で言ったら、ここが一番じゃないか?
ただ、世間や先輩がそろそろ井上のフォローに回り始めているので嫌われてるネタは
そろそろやめて、違うことして欲しいね。
でも基本面白いし、見ていてテンポがいいからやっぱり引き込まれる。
M-1とってるし、やっぱりすごいよね。と思った。
俺、これ好きなんですよ。なんかわかんないけど。
天竺鼠とは反対で、ハマった。
今度はもっとボケがすごいはっちゃけて、二郎さんが冷静に突っ込むいつもの
パターンが見たい。本人たち飽きてるかもだけど、意外と認知されてない
と思うんだよね。このパターン。まだいけると思うから是非やってほしい。
俺が好きなだけかもだけど。
ノンスタがいたのが不運だけど、組合せによっては予選突破もありえたかと。
でもなんだろうね、すごい「練習」が見えるんだよね。
特にツッコミの人。ツッコミ上手かったらなぁ・・・って思った。
ハマカーンもそうなんだけどね、神田が正直ツッコミ上手くない。
で、いつもの下衆の極みで受けないから、女子っぽさから、神田がツッコミを「捨てて」
浜ちゃんが結局全部ある程度を請負ながらの漫才が完成して、これがハマったように、
新しいスタイル考えたらもっといいかもね。それかツッコミもっと上手くなれ。
自分はツッコミが好きなタイプです。だからそっちサイドをよく見てしまうのだけど、
生かすも殺すも、ネタが跳ねるかしぼむか?笑いの種をまくのはボケだし、その後やっぱり
ごっそり笑いを収穫するのがツッコミだと思ってるので、種をたくさん撒ける人はそれだけ
笑いの総量を多く作れる、でも結局その後バーンと刈り取れるか?ってツッコミ次第だと思う。
銀シャリはウナギさんがあんまり種をまけないけど、刈取りがものすごいうまいから、面白い。
ノンスタは種をまくのがものすごくうまいから総量が多いし、刈取るタイミングが良いから、
テンポが良い。そんな感じに思っている。
え?優勝者の話?んー・・・なんだろうね。決勝ネタはまぁ、面白かったかな。
でも、正直これで優勝?という感じ。
相方を嵌めていくパターンのネタだというのはわかるんだけど・・・
もう少し相方のセリフがあっても良いのかなと、言い争いとかその辺。
決勝ではちょっとあったよね。それが変化になって1本目との差ができてよかったのかな。
他二組はそこで差があまり大きくなかった。ネタ自体は面白いんだけどね。
こういうショーレースだと、やっぱりそういう差が効いてきたりするのかなぁと思った今年のTHE MANZAIです。
以上、すべての芸人さんに愛をこめて。
いつも笑いをありがとう。
メジャーリーグのワールドシリーズがついに始まりましたね。そこで、5日ほど前のものですが、アメリカ3大ネットワークの1つNBCによる上原の記事を翻訳してみました。誤訳があったらご指摘ください。
ウエハラ・フェノメノン
http://hardballtalk.nbcsports.com/2013/10/18/the-uehara-phenomenon/
さて、君もおそらく、今年のボストン(レッドソックス)の上原浩治が、野球史上の全投手と比べて、最も塁に出るのが難しい投手だったということをご存知だろう。それはとてもいいことだ。ここにWHIP(1イニングあたりの被安打と与四球の合計。少ないほど出塁されていない)の歴代トップ10、少なくとも50イニング以上を投げた投手のリストがある。
2. デニス・エカーズリー, 1989年, 0.607
3. デニス・エカーズリー, 1990年, 0.614
8. J.J.プッツ, 2007年, 0.698
興味深い小ネタを2つほど――リストの11位はまたも上原で、2011年のことだ。12位は? ペドロ(ペドロ・マルチネス)だ。それは2000年のことで、WHIPは0.737であった。彼がほかの選手の3倍のイニングを投げたことを考えると(訳注:ペドロ・マルチネスは先発投手)、彼の三振四球比(K/BB)が284割る……まあ、多くの人々が、ペドロの2000年のシーズンこそ野球史上で最高のシーズンであったと信じるのも、驚きではないだろう。
とにかく、トップ10を見れば君も気づくだろう……クローザー(抑え投手)だ。いや、そのうちの2人――ベノワとメレディス――はセットアップマン(セットアッパー、中抑え)だが、残りは全てクローザーである。歴代のWHIPトップ10のうち8人がクローザーだという事実は「9回はアウトを奪うのが最も難しいイニングだ」という神話に小さな短剣を投げつけるかも知れない。だが、今日のポイントはそこではない。我々が焦点を絞っているのは上原だ。
上原がキャリアをスタートさせたのは日本である――大阪大学(訳注:大阪体育大学の誤り)を出て、ドラフト1位で指名されたのだ。上原は1年目に20勝を挙げて、読売ジャイアンツの先発投手として活躍。また、オリンピックやWBCなどでは、日本代表の先発投手としてめざましい活躍を遂げた。2007年、32歳のときに、上原は読売のクローザーになり、そこでも周囲を圧倒した。2008年のシーズン終了後、上原は先発投手としてボルチモア・オリオールズと契約する。(しかし2009年)彼はもがき苦しんだ。彼は故障した。翌年、オリオールズは上原をブルペンに送った(リリーフに転向させた)。上原は驚くべきコントロールを見せ(44イニングで与四球は5個)、いくつかの試合では実際にボルチモアのクローザーもつとめた。だが、誰も彼に熱狂することはなかった。
そして2011年、当時は誰も驚異とは考えなかった驚異のトレードが行われることになる。
オリオールズは上原と幾ばくかの金銭をテキサス・レンジャーズに送った。レンジャーズはトミー・ハンターという悩める先発投手と、クリス・デービスというマイナーリーグの一塁手を送り返したのである。
私は、彼らが言うことも正しいと思う。将来の50本塁打男(訳注:デービスは今年のアメリカンリーグ本塁打王・打点王)と、年間WHIPの史上最少記録保持投手を、小さなトレードが生むことになるなんて知るよしもない。OK、それがことわざだかどうかは分からない(訳注:ここら辺ちょっと自信なし)。上原はレンジャーズでいい投球をしたが、怪我なしで居続けることはできなかった。テキサスでのWHIPは驚天動地の0.685。純粋に安打を打たれなかったし、四球も出さなかった。だが、1年半でたった54イニングしか投げなかった。そしてともかく、ただ1つ、誰もが本当に注目したのは、上原が2011年のポストシーズンの3試合で苦しんだということだった。それはおおむね1試合のことだ。2011年の地区シリーズ、タンパベイ(レイズ)との一戦で、上原は7対3でリードする7回に登板。すぐさまデズモンド・ジェニングスに四球を与えると、B.J.アップトンにライナー性の安打を打たれ、エバン・ロンゴリアに本塁打を打たれた。そして降板させられた。
上原はまた、デトロイト(タイガース)とのアメリカンリーグチャンピオンシップシリーズにおける、次の二度の出番でも失点を許した。しかし私は、それが酸っぱい後味を残した初めての出番だったのではないかと思う。上原はそれまで、アメリカの野球ファンたちの心に、何一つ印象を残してこなかった。無地のスレート(屋根葺き用の石板)のようなものだったのである。ロンゴリアの惨事のあと、誰もが皆、上原に(悪い)印象を持った。翌年、上原はボルチモア(オリオールズ)とのワイルドカード決定戦に、レンジャーズがすでに3対1で負けている状況で登板。トレード相手のクリス・デービスを三振に仕留めた。アダム・ジョーンズも三振に仕留めた。マット・ウィータースも三振に仕留めた。だが、それは大事な局面ではなかったし、ロンゴリアの記憶を消し去るのに十分ではなかった。
レッドソックスは、425万ドル(約4億2500万円)という以前と同じくらい少額の契約で、上原と1年契約を結んだ(とはいえ、今では2年契約になっている。付与オプションが有効になったからだ。ボストンにとって大変嬉しいことだろう)。上原はクローザーではなく、セットアップマンでもなく、セットアップマンのためのセットアップですらなく、単なるチームの6イニングの選択肢になろうとしていた。レッドソックスの本来のクローザーは剛速球投手のジョエル・ハンラハンであった。ハンラハンは9試合で肘を破裂させ、トミー・ジョン手術を受けた。
そこで全員1つずつ繰り上がった。つまり、今やアンドリュー・ベイリーがクローザーになったということだ。ベイリーはアスレチックスのクローザーとして2009年に新人王を獲得し、翌年もまた周囲を圧倒していたが、その後はあらゆる怪我と辛苦を経験していた。ベイリーはレッドソックスのクローザーを3カ月弱つとめ――そして肩を故障した。6月26日、レッドソックスは上原をクローザーに指名した。
ではここで、上原の残りのシーズン(クローザー指名後)の成績をご紹介していこうと思う。拍手喝采は紹介が終わるまでお待ちいただきたい。
投球回:44 1/3
被安打:14
ふざけてるよな:分かるよ。
失点:3
被本塁打:1
三振:59
与四球:2
待った、今すぐ止めろ:2四球。よく見ろ。
被打率:.094
被長打率:.152
早く言えよ:ちゃんと頼め。
WHIP:0.358
紳士淑女の皆様、ご来場ありがとう。気をつけてお帰りください。
どうやって? OK、これはたった44回1/3でサンプルとして少なすぎるし、クローザーは1試合でたった1イニングしか投げないし……、どうやって?? 上原浩治は剛速球を投げない。Pitch f/xは上原の速球が平均で89.2マイル(143.6キロ)だと示しており、これは彼が日本から来たときとだいたい同じままだ。上原のマネーピッチ(決め球)、スプリットフィンガー・ファーストボールは約81マイル(130.4キロ)。102マイル(164.1キロ)の速球の世界で、一体どうすれば上原は対戦相手に出塁するのが無理だと証明できたのだろうか?
もちろん、コントロールの話から口火を切ることができるだろう。これはマリアノ・リベラの栄光の輝きの中で、常に最も過小評価されてきた部分の1つである――そう、リベラは対戦したみんなのバットをへし折ってきたし、同じ球を繰り返し繰り返し投げ続けてきたが、四球で自滅することはまずあり得なかった。リベラの最高のシーズンはおそらく2008年だ。彼は70回2/3で6人の打者にしか四球を出さなかった。
上原は、大リーグでのキャリアを通じて常に、気が狂うほどコントロールが良かった。2012年のレンジャーズでは、わずか36イニングしか投げなかったが、四球を出したのはたった3人だ。我々は、キンブレルの代名詞である剛速球を投げるようなクローザーと恋に落ちている(訳注:ここら辺自信なし)。しかし、剛速球を投げない代わりに、ピンポイントコントロールと多くの惑わし(投球術)で成功した名クローザーたちは、これまでにも多数――デニス・エカーズリーを筆頭とするが、偉大なるダン・クイゼンベリーとダグ・ジョーンズも含まれる――存在した。上原も明確にそれらを備えている。
2つめはこれだ:上原の投球――特に、ツーシーム・ファーストボールとスプリッター――が非常に鋭く動き、メジャーリーグの打者たちはしばしば当てるのに失敗しているということ。それがストライクゾーン内であったとしても。これは重大だ。大リーグの打者はストライクゾーン内のボールにバットを振るとき、一般に大成功を収めるものである。今年、打者がストライクゾーン内でスイングした上原のボールは、31.1%が空振りだった。これはいうまでもなく球界で最高のパーセンテージだ。
ストライクゾーン内のボールで打者を空振りさせた投手のトップ5は:
2. エルネスト・フリエリ, 26.9%
3. アロルディス・チャップマン, 25.6%
さて、同じトップ5の速球の平均急速は:
ああ、そうだ。君にも違いが分かるだろう。彼らは打者のバットを吹き飛ばす。上原は打者のバットの上下を通り抜けるのだ。上原には、大きく違う方向に動く2つの球種がある。ツーシーム・ファーストボールは右打者に向かって突っ込んでくるかのように見えるし、左打者を引き剥がす――リベラの代名詞カッターの逆バージョンのようなものだ。そして、スプリットフィンガー・ファーストボールはチェンジアップのように機能する傾向がある(速球より8マイル遅い。これは理想的な差に近い)上、遅くになって急降下する。打者の観点からすると、これは見たところ(飛び回る)スズメバチと、地中から現れるゾンビの手に、攻撃されるかすら定かではないまま、草原に踏み入れるようなものらしい。打者はどこを見ればいいのか分からないのだ。
全力の上原を前にしては、今や逃げ場などどこにも存在しないのだ。
特に、上原は今38歳で、レッドソックスは上原をクローザーとする前に2人の男たちを試していたということを考慮すると、これは極めて異例な才能の行列である。ここまでのポストシーズンで上原は7試合に登板し、そのうちの1試合でタンパベイのホセ・ロバトンにサヨナラホームランを許した。ほかには、落ち着く前にタイガースの2人から安打を打たれたが、失点は許さずにイニングを終わらせた。木曜日、上原は1回2/3をパーフェクトに抑えた。
全体として、このポストシーズン、上原は8イニングを投げて安打を4本で抑えた。WHIPは0.500。ここまで、一人の打者にも四球を出していない。
今日プロジェクトの打ち上げがあったのだが、とあるサプライズ……三ヶ月前に寿退社した先輩との再会に思わず涙ぐんでしまい、ひどくばつが悪い思いをしている。今も顔の火照りが抜けてくれない。アルコールは抜けたのに。彼女はかつてSQLの魔女と呼ばれていた。
今から遡ること一年前、私は辞令を貰い、二年目にして事業部ごと変わるという波乱をようやく乗り切って、業務系のSEの仕事内容、特にWebのアプリレイヤーについてOJT形式で学んでいた。そこで先生にあたる方として付いたのが、ちょうど手待ちだった先輩である。初めてお会いした時の先輩に対し、私は正直ちょっと物足りなく感じていた。
初日に行ったPCのセッティングでは、これやってと先輩から資料を渡されたのだが、外部にネットが繋がらない。先輩に相談して弄ってもらったのだけど繋がらず、今日は社内ネットで我慢して、と言われてから二日後、資料が古かったことが判明。
与えられた課題を終えるごとに、コードを提出するのだが、見たよ〜出来てると思う、頑張ったね〜と言われた後で、そのプロジェクトを下敷きに発展課題に足を進めたら、でっかいバグがあったり。
万事その調子で、今やってる課題放り出して、プロジェクトオイラーの問題でも解いてた方がよっぽど楽しいなぁと若干サボりたいと思い始めた頃、炎上プロジェクトへ先輩と二人テスターとして出向するよう、上司から命じられた。炎上プロジェクトのリーダーから手待ち要員いない?と声がお上に届き、降りて来た結果先輩と自分がいたわけだ。
前の事業部ではずっと同じ客先にいたわけで、頭では分かっていても鼻先三寸で飛ばされることには不安がつきまとった。
「これから行く先はどうなんでしょうね?」
先輩へ問うと、
「基盤にいたんでしょ。メインフレームが扱えるなら大丈夫だよ〜」
豆腐すらぷるぷる震えそうな声が返ってきた。
この時の私は、まだ事業部を転属して間もなかったし、プライドばかり高くて奢ってたように思う。事業部を変える→入社して以来の経験値がまた0に、と失うことに対する不満ばかりで、それが拗れて数少ない基盤系経験アプリ開発者、そんな肩書きばかりを強調する変人に成り果てていた。自己紹介で、どうも、基盤から参りましたと、そこだけは大きい声が、今思い出したけどマジで恥ずかしい。
だから、だろう。このゆるふわな先輩とドナドナされることに密かに感じていた屈辱には、出向いた先で押された駄目テスターという烙印によって罰があたることになった。
その理由は、私がSQLを全く使えなかったことにある。テスターとして行うことになったのは表示画面の統合テストで、UIの検索結果とデータベースに直接SQLを打ち込んで得たレスポンスを目で確認していく作業だった。UIは、境界値さえ気をつけて、仕様通りに実施すれば何とかなる。しかし、SQLで再現が出来ない。この仕様はどうやったらコマンドに落とし込めるんだよ。頭を抱える中で思い出したことがあった。
教育過程でJavaサーブレットを学んだが、その一つにJDBCも勿論習った。そこで私は何をしたか?mysqlに繋げればそれでいいやと、エグゼキュートで実行する際に渡す魔法の文字列……つまりSQLの中身は、すべてコピペで済ませていたのだ。社内教育資料を内部作成するにあたり参考にしたと思われるネットから……構文チェック効かないし、ここは手を抜いてもいいだろう、これが要領の良さというものさ……アホーアホー私のアホー。
三日目の午後二時、進捗を確認しに来たPMにすべてを告白すると、ちょっと来てとPMが連れ出したのがあの先輩の席だった。
「申し訳ないけど今やってるテストは止めて、これから定時いっぱい最低限テストが出来るように彼にSQLを教えてやってくれ。」
良いのですか?と顔をあげるとPMは何を勘違いしたのか、やにわに私の肩を叩くと、
「彼女はSQLの魔女と呼ばれている。半日でお前も即戦力だよ。」
と去っていった。顔を先輩へ戻すと、あのPMさんは嘘つきだから信じないほうがいいよといつものふわふわした声でにっこり。
宜しくお願いします。ノートパソコンを横に私は型通りの挨拶。四時間後、私は傲慢さを、尻の毛まで抜かれることになる。
私はSQLの深さを知った。SQLのQとは何だ?Queryであります、サー!!今も時々夢問答を繰り返す。そう、全ては問い合わせ次第なのだ。今思えば、あの時やったことはT2テストを使ったSQL文の作成と添削、しかもSELECTによる条件抽出のみだったが、そこに全てが詰まっていた。
DISTINCTとORDER BYの共存で詰まってわけがわからなくなったコードは、もっとシンプルにいけるよと副問い合わせに書き換えられて。ネストとワイルドカードを多用してスパゲティになったコードを、先輩はLEFT JOINとWHEREとORで全てをすませた。
なんということでしょう。マニキュアが塗ってある長い爪からは想像もつかない早さで直されていく構文に脳内で途中から匠の曲が流れ始めたのを覚えている。本当に、なんということでしょう。先輩はSQLの魔女だった。
翌日、先輩の教えはしっかり自分に身に付いていた。すらすら書けるSQL、サクサク進むT2テスト。条件設定に悩んで、エクセルに吐き出してからリストとコピペで逐一加工してた時間が馬鹿みたいだった。先輩のところへ、帰りしなに昨日のお礼と作業進捗に激震が走ったことを伝えると別にお礼なんていいよーといつものふわふわした顔で微笑んでくれた。
それから先、配属先が決まるまでの条件付きでテスターとして入っていたはずだったが、T2試験が終わり、T3試験が始まってもなぜか私はそのプロジェクトにいたままだった。DB担当者として。もともと基盤だったわけだし、バッチファイル処理でスクリプトがそこそこ書けたというのもあるけど、SQLが書けたというのはすごく大きい。昼休み、いつのまにか私はプロジェクトオイラーの問題に代わって、名著「SQLパズル」を解くのを日課としていた。
先輩は仲良くなる暇もなく、その後すぐにプロジェクトを移り、メーリングリストで寿退社を知った。炎上したプロジェクトは、なぜか横展開を経て今に至り、私は相変わらずここにいる。だが、あの時SQLの魔女がかけた呪いは今もしっかり私に根付いている。
何年か前から大量の情報が一つのパソコンに保存出来るようになりました。
一度失った情報は二度と戻ってきません。
復旧するにしても面倒なことが多いですよね。
そこで大切なのがバックアップです。
外部メディアやアップローダーなどにバックアップしておけばいつパソコンが壊れても安心ですね。
しかし…1箇所にバックアップしたい情報がまとめて置いてあれば楽なのですが現実にはパソコン内のあっちこっちに散らばっていることが多いものです。
一つ一つバックアップするのも面倒だし…という理由でついサボってしまう。
そんな人も多いのではないでしょうか。
そんな人のために今日はROBOCOPYによる簡単バックアップを紹介します。
ROBOCOPYとはコマンドプロンプト上で使えるファイルをコピーするコマンドです。
Windows限定ですのでご注意ください。
※XPの方は標準ではROBOCOPYは入ってないようなので↓のページからダウンロードしてC:\Windows\System32あたりにぶちこめばいいと思います。
バッチファイルとはいろいろな動作をまとめてできるファイル(拡張子bat)のことです。
バッチファイルについて解説しているページはたくさんあるので見てみてください。
とりあえず私のパソコンのマイドキュメントのファイルををC:\Documentsというフォルダにコピーしてみます。
以上です。
バッチファイルがきちんと動いているかどうか確認できたら消して大丈夫です。
他の部分は後で解説します。
ROBOCOPY "コピー元フォルダ" "コピー先フォルダ" [ファイル名]
以上です。
それぞれの間の空白はすべて半角スペースで。全角スペースだとうまく動かないことがあります。
エラーが出ることがあります。
ファイル名は指定しなくても構いません。
ファイル名を指定しなければフォルダ内のすべてのファイルをコピーします。
拡張子がtxtのファイルだけをコピーしたいときは*.txtです。半角スペースで区切ることでいくつでも並べることができます。
/MIRをつけるとツリーも含めて完全にミラーリングしてくれます。
/XOをつけると更新があったファイルだけコピーしてくれます。(いわゆる差分コピー)
よく意味が分からなかったらこの2つをつけておくのをお勧めします。
いままでの要領でいろいろなフォルダをバックアップするバッチファイルを作ってみましょう。
1箇所に大事なファイルを集めておけばバックアップもラクラクです。
ROBOCOPYの後ろの方についている/XOや/MIRなどをスイッチと言います。
たくさんスイッチがありますがその中から一つスイッチを紹介します。
「/XD "除外したいフォルダのパス"」を付けることであるフォルダを除外できます。
他にもたくさんスイッチがあるので気になったら調べてみてください。
http://dailymemos.cocolog-nifty.com/blog/2009/04/robocopy-b019.html
tSkeltonプラグインはVimのプラグイン(Vimスクリプト)で、ファイルを新規作成したときにそのファイル名(バッファ名)に応じてあらかじめ用意したテンプレートの内容を貼り付けてくれる。便利。
インストール等は
http://d.hatena.ne.jp/cooldaemon/20090403/1238750443
を参照。
vimfiles/skelton/templates/GROUP/以下のテンプレートファイルはそのファイル名がプラグインに解釈され、適用されるテンプレートの選択に用いられる。形式は
[ファイルタイプ] [パターン]
間に半角スペースが必須な点に注意。[ファイルタイプ]はvimのfiletypeに該当。[パターン]はファイル名、あるいはファイルパスのマッチングに使用される。
手動でのURLEncode/Decodeについてはこちらのページが参考になる。
http://www.programming-magic.com/file/20071227231138/urlencode.php
<+CURSOR+> | ファイルを開いたとき、この位置にカーソルを移動する。 |
<+input(VAR,QUERY)+> | 入力プロンプトを呼び出し、その結果をVARで指定した変数に代入しつつ、タグの位置にも挿入する。VARの末尾に!が付いていた場合、タグの位置への挿入は行われない。 |
Webアナリストになりたいんです!っていう人が出てくるほど、Webアナリストという職が世の中に浸透しているとは思えませんが、なりたいって思ってる人がいるかもしれないので書いてみます。といっても、自分もまだまだWebアナリストとしてはヒヨッコなんですけどね。
めちゃくちゃ必要です。
Webアナリストは常にExcelを起動していると言っても過言でないくらい、Excelと向かい合って仕事しています。
関数は基本的なものはもちろん、マクロ・VBAに関しても使えた方が良いです。
ちなみに私はVBAは作れません。
勉強せねば・・・。
ここでは最低限押さえておいてほしい関数や機能をあげてみます。
当たり前ですが、これは必要です。
用語の意味とその数値がいいのか悪いのかを判断できるようにならないといけません。
まずは下記の用語と意味を覚えてください。意味は自分で調べてください。
Webアナリストの仕事は、解析をして、ここが悪いと指摘するだけじゃダメなんですね。具体的な改善提案を示すことが必要です。
ここで改善提案を示すのに必要になるのが、サイト制作の知識なわけです。
あえてサイト制作とばっくりとした書き方にしたのは、サイト制作がデザインとか、ユーザビリティとかそういった言葉を内包しているからです。
ここについては素養として制作の知識を持っていれば持っているほど、深みのある提案ができると思います。
私はここの知識が乏しいので、なかなか厳しいと日々感じています。
アナリストが行う分析は大きく2つに分けられます。
1つはサイト内部の分析、もう1つは集客(広告効果測定含む)の分析です。
じゃあ集客の知識って何があればいいのって話ですが、こんな知識をつけておくと役に立ちます。
数値が良くないと気づき、なんとなく打つべき施策はわかったとしても、この施策を打てば本当に現状より良くなるのか、確証が持てないことがあります。
そんなときに行うべきテストの方法を知っておくと便利です。
A/Bテストや多変量テスト、リスティングのT&Dローテーションなんかがテストの一例です。
あぁ、またこれかよ、と思われそうですが、これは主に2つの理由で結構必要だったりします。
1つは自分が3や4の知識が乏しくて改善提案を示せないときに、デザイナーやマーケ担当の人とコミュニケーションを図って糸口を見つけ出すことが必須だからです。
もう一つは自分が改善提案をしたものが裏目に出てしまった場合。
いかに角を立てずに説明できるかがポイントになったりします・・・。
当然ですが、自分が解析した知識は共有しないと全く意味がない訳で。
だって方針を決めるのはディレクターだし、手を動かすのはデザイナーやプログラマーな訳で。
で、上層部は「うちのサイトはどうなんだぁ?」というすごく抽象的な説明を投げかける訳で。
そういったキーマンたちにきっちり説明するために、プレゼンテーションの知識は必要になります。
これは6とも通じるところですね。
最後に。
アクセス解析はやろうと思えばどこまでも際限なくできてしまいます。
でも時間は有限なわけで。
どこかで線引きをしないといつまでたっても終わりません。
このときまでにここまでの数字を出そうと心に決めて、できれば手帳に書いて、仕事を進めることが
とーーーーーっても大事です。
ちなみに、本格的に勉強したいなーってひとがいたら、最近発売された
「ウェブ解析力 ROI(投資対効果)を最大化するアクセス解析の実践的ノウハウ90」
という本は一度目を通してみると良いと思います。
これだけじゃなく、アクセス解析に関する本は少ないので、一通り目を通してみても良いかもしれません。
いかがでしょうか?
■吸ってしまった・・・
ある事がきっかけで先月4月28日から2ヶ月半程やめていたタバコを吸ってしまった事からこの記事を書き始める。
かれこれタバコとは3年以上の付き合いであったが、吸い始めた当初から「いつか止めるであろう」と思っていたので退職をきっかけにタバコを止めたのである。
タバコを止めてからの2ヶ月は他のモノに依存する事でその場を凌いできた。
例えば朝
・喫煙時代 まず起きてタバコに火をつけ、気持ち悪くなったきっかけで起きる
・禁煙時代 まず起きてコーヒーを落とす、コーヒーを落とす作業により起きる
例えば職場
例えば夜
■なぜだ吸った?
今回、なぜタバコを吸ってしまったかと一言で言うと失恋だ。(以下つまらないので飛ばして結構)
補足すると、以前は付き合いがあり、その後友達関係になった女性(以下M)と連絡を絶つ事を決意したからだ。
友人関係はとても長く、お互いが居て当たり前の楽な関係になってしまっていた。
今回も退職を理由に頻繁に連絡を取るようになり(ついでにタバコを辞めた時期)、週に1度、夜から飲みに行くような関係に戻ってしまった。
将来なんらかの形で責任を取ろうと・・・
いや単純に寂しかったのだろうと今は思うが、素直に復縁したい旨を伝えたが
「一緒にいて楽しいからなんとなく一緒にいた、私は次の恋ができそうだからあなたとの将来は考えられない」
だそうな・・・
泣きました。 ええはい泣きました。
お互い共通していたのは、楽な関係 のただ一点だけだったのかと・・・
その時ふと2ヶ月ぶりにMの持っていたタバコに火をつけてしまい、なんとなく吸ってしまった、というのがタバコをまた吸い始めてしまった理由だ。
それからというもの、夜中になると決まってMに電話していた時間は、もう電話ができず、とてもじゃないが辛いのでタバコを吸ってしまうのである。
タバコに限らず、食べ物や女性に依存しないと自分は生きていけないのだ。(もちろん改善したいからこうしてだらだらと駄文を書いているのだが)
「タバコを辞めたい」
と思っている人間が今回のように理由をつけてタバコを吸うのはとてもタチが悪い。
そう思っている人間は、タバコを辞めるために相当のストレスが付き纏い、辞められたとしてもまた他のものに依存し、結果戻ってくる。
タバコを辞めるという事は(タバコ以外にも悪い生活習慣を直すという事は)、自分と正面から向き合う事であり、日々の積み重ねであると強く感じた。
タバコへの依存というのは検索でいうワイルドカードのようなもので、なにものにも替えられる。
しかしかといって検索でワイルドカードを使うたびにファイルが一つ消えてしまうようでは使い物にならない。
タバコを辞めるというのは、その他全ての悪癖への依存を改善するという事なのだ。
しかし、何年も付き合ったものを2つ同時に自分の決断で無くすというのは相当辛い。
■今この状況でタバコを辞めるためには
まず自分がとっても弱い事を認め、改善する努力をする という考えを強く持つ事にした。今のままでは絶対にダメだ と強く思うのだ。ここ結構重要
マイベストはロマサガ2で次点がサガフロ2だった。歴史ファンタジーなゲーム好きだし。
割と万人向けに作られてたのはサガフロかな、あれは人にサガ勧めるとっかかりに良かった。
アンサガはハマれたら面白そうだったけどシステムに慣れるまでが辛くて投げてしまった。
人がプレイしてるの見てると楽しい。再チャレンジしたくなる。で、また投げる。
GB1は文句なしに面白かった。2も、色々賛否両論あるが3も。
ロマサガ1は頑張ったけど当時子供だった自分には無理だった。ミソはミソで面白いなぁ。
3も面白かったけど、やっぱり2かな。
サガフロ2は本来の開発日程で作られてたら化けてたんじゃないかと思う。
何かの体験版付けるために予定繰り上げざるを得なくなったらしいから。もったいない。
ワイルドカードはあれみてるとアンサガの原型がそこに有ったんだろうなぁと思う。あと吉田絵最高すぎ。
サガはなんだかんだいって人を選ぶ。
どのゲームでも人を選ぶと言ったらそれまでだけど。
例えば社会全体が母親賛美一色で、メディアはどのチャンネルもどの番組も、
寝ても醒めても「最新家族」「no母noライフ」とかばっか。これ母親に愛情持てなかったらちょっとうんざりするよね?
で、周囲の人間もやたらと話題は母親ばっかりで、全ての人間が母親に愛情あるっていう前提で話してきて、
「ねえ、どんな母親が好き?」とか聞いてきやがる。
「母親には興味ないから」って言おうものなら
「えー!母親にぜんぜん愛情ないの?絶対おかしい!人生損してるよ、何かプレゼントあげてみなよ!」
とか言われたらそりゃあ愚痴の一つも吐きたくなるでしょ。
それで母親に愛情あったらあったで、自分なりの母親との接し方を見つけたとするよね?
「そんなやり方絶対おかしい!母親とのあり方はこういうもの!」
ってしつこくしつこく人のやり方にまでケチつけてくる人もいたら嫌でしょそれは。
http://anond.hatelabo.jp/20090313190837
母親・子供・生命・健康・愛情などを、絶対神聖のワイルドカード視するやつは多いからな…。そんなの状況によりけりじゃないか。
「はじめての正規表現」がホッテントリ入りしていますが、
導入としては、何に使うのかがわかりやすくて良いのではないかと思います。
あれを見て、基本機能をまとめてみたくなったので、正規表現の基本的な機能について書いてみます。
(正規表現が初めてという人は「はじめての正規表現」を先に見たほうがいいと思います。)
例では「検索」か「置換」をするものとして話を進めていきます。
(「はじめての正規表現」が実例を中心にしたのに対して、こちらは機能を中心に書きます)
正規表現は、プログラミング言語やその他のツールなど、それぞれで微妙な違い(方言)があるので、その点には注意が必要です。
(表記法が違ったり、ここに紹介する機能がサポートされていなかったり、逆に紹介していない機能をサポートしていたりする場合があります)
メタ文字とは機能を持つ文字で、『.
』『*
』『*?
』といったものが当てはまります。
リテラル文字は「文字それ自体」と解釈される文字で、『
』『a
』『<
』といったものです。
「検索する文字列:『egg
』 置換する文字列:『chicken
』」
などとすれば、正規表現を使わない置換と同じ効果になります。
なお、検索して検索文字列が当てはまることを「マッチする」と言います。
メタ文字に使われている文字を検索したい場合は、直前に『\
』を置きます。(これを「エスケープ」と呼びます。)
『.*?^$()[]{}
』などがメタ文字です。
『$100
』を検索したければ、『\$100
』とすればいいということになります。
(『\
』は環境によって、半角の『¥』『\』のどちらかになります。)
言語、ツール、モードなどによっては『@/#
』もエスケープが必要です。
また、『\
』自体は常にエスケープが必要です。
メタ文字 | 意味 |
---|---|
? | 直前の文字を0回または1回繰り返す |
* | 直前の文字を0回以上繰り返す |
+ | 直前の文字を1回以上繰り返す |
{n} | 直前の文字をn回繰り返す |
{n,} | 直前の文字をn回以上繰り返す |
{n,m} | 直前の文字をn〜m回繰り返す |
これらのメタ文字は「量指定子」といって、直前の文字の繰り返しを意味します。
『*
』は「任意の文字を0回以上繰り返す」とありますが、
「0回以上繰り返す」とは、「全く何もなくてもいいし、いくらあってもいい」という意味です。
よって、『?
』は「あってもなくてもいい」、『+
』は「1つ以上あればいい」と解釈できます。
『colou?r
』は『u
』があってもなくてもいいので「colorかcolour」ということになります。
『{n}
』は、たとえば『-{15}
』なら、「ハイフン(-)が15個続くもの」となります。
『-{10,}
』なら「ハイフン(-)が少なくともは10個続くもの(多いのはいくらでも)」、
『-{10,15}
』なら「ハイフン(-)が10〜15個続くもの」となります。
また、複数の文字を繰り返したい場合は括弧で囲みます。
『(Gang){2}Dance
』は『GangGangDance
』と同じ意味になります。
メタ文字 | 意味 |
---|---|
? | 直前の文字を0回または1回繰り返す(欲張り) |
* | 直前の文字を0回以上繰り返す(欲張り) |
+ | 直前の文字を1回以上繰り返す(欲張り) |
?? | 直前の文字を0回または1回繰り返す(非欲張り) |
*? | 直前の文字を0回以上繰り返す(非欲張り) |
+? | 直前の文字を1回以上繰り返す(非欲張り) |
「欲張り」とは、「なるべく多くの文字に適用しようとする」、
「非欲張り」とは、「なるべく少ない文字に適用しようとする」という意味です。
すると、検索する文字列が『a+
』なら『aaa bbb ccc
』、
検索する文字列が『a+?
』なら『aaa bbb ccc
』が置換対象となります。
(「すべてを検索/置換」する場合は当てはまりません)
「『a
』を1回以上繰り返す」ということは、『a
』でも『aa
』でも『aaa
』でもマッチすることになりますが、
「欲張り」かそうでないかで実際のマッチは変わってくるわけです。
文字クラス | 意味 |
---|---|
[abc] | a、b、cのいずれか |
[a-z] | a〜zのいずれか |
[^a] | a以外の文字(改行文字を含めaを除いた全て) |
[^a-z] | a〜z以外の文字(改行文字を含めa〜zを除いた全て) |
文字クラスは『a
』や『<
』などの代わりに文字の種類を指定するものです。
a〜eのどれかの1文字という指定をしたい場合に『[abcde]
』や『[a-e]
』といった指定ができます。
また、文字クラス内の最初に『^
』をつけて『[^abc]
』などとすれば、
「a、b、c以外の何の文字でもいい」とすることができます。
間違いやすいのが「そこにaもbもcも存在しなければいい」という意味ではないということです。
文字クラスは「なんらかの1文字の身代わり」なので、それは何か1文字を表しています。
『-
』は範囲を表すのに使用します。そのため、『[;-%]
』で「; - %のどれか」を表現することはできません。
『-
』を含める場合は必ず最初に持ってきます。すると『[-;%]
』という風になります。
「; - %以外の文字」としたいならば『[^-;%]
』とします。
『[
』や『]
』、『\
』を文字クラスに含めたい場合は直前に『\
』を置いてエスケープします。
「『[
』または『]
』」であれば『[\[\]]
』となります。
『^
』やその他の記号は先頭に置かなければいいので、エスケープの必要はありません。
『.
』は「改行以外のすべての文字」を表しています。
改行は『\n
』で表されるため、『.
』は『[^\n]
』と等価です。
(ただし、正規表現のモードによっては「改行も含めすべての文字」を表す場合もあります)
文字クラス | 意味 | 同等の表記 |
---|---|---|
\w | 記号や空白ではない文字すべて | [a-zA-Z0-9_] |
\W | 記号や空白ではない文字以外 | [^a-zA-Z0-9_] |
\d | 数字 | [0-9] |
\D | 数字以外 | [^0-9] |
\s | タブや改行など、空白類とされる文字 | [ \t\n\r\f\v] |
\S | タブや改行など、空白類とされる文字以外 | [^ \t\n\r\f\v] |
(*間違って『\s
』の同等の表記にも『^
』がついていたのを修正しました)
(『\t
』はタブ、『\v
』は垂直タブ、『\r
』はキャリッジリターン(CR、改行の一種)、『\f
』は改ページ)
これらは『[a-fA-F\d]
』のようにすることで、文字クラスのブラケット(角括弧)内に含めることができます。
「同等の表記」と書きましたが、文字をユニコードして扱うツールの場合は、上記が同等の表記にはならず、
たとえば『\d
』であれば漢数字が含まれてしまったりするので注意が必要です。
『(A|B)
』は「AまたはB」という意味です。(これを「選択」と呼びます)
『(A|B|C)
』なら「A、B、Cのどれか」という意味になります。
『(gray|grey)
』は『gr[ae]y
』とほぼ等価となります。
『[ae]
』は「1文字のaまたはb」という意味になるので結果的に、ほぼ同じ効果が得られるわけです。
(ただし、これはgrayとgreyの違いが1文字だけだったためで、そうでない場合はこうはなりません)
気をつけなければならないのは、その順番です。
『(Java|JavaScript)
』で検索すると、対象文字列内に存在する『Java
』と『JavaScript
』すべてマッチするように思えますが、
『JavaScript
』は選択肢の前(左)のほうにある『Java
』が当てはまってしまうため、
『Script
』部分にはマッチせず、『JavaScript
』というマッチになってしまいます。
選択では左側が優先されるので、『(JavaScript|Java)
』とすることでこの問題は防げます。
(言語、ツールによっては、この問題が起こらない=順番関係なく長いほうを適用しようとするものもあります)
メタ文字 | 意味 |
---|---|
^ | 行頭 |
$ | 行末 |
\b | 単語境界 |
\B | 単語境界以外 |
リテラル文字や文字クラスが「文字自体」にマッチするのと違い、アンカーは「位置」にマッチします。
検索する文字列が『^
』、置換する文字列が『>
』なら、「行頭に『>
』を挿入する」という意味になります。
単語境界とは、「単語を構成する文字=『\w
』に相当する文字」と「単語を構成しない文字=『\W
』に相当する文字」の間の位置のことです。
『regular expression.
』なら『^regular^ ^expression^.
』の4ヶ所に当てはまります。
『\b.*?\b
』とすれば単語すべてにマッチさせることができます。
しかし、「単語構成文字」が基準なので、『JavaScript
』は1単語でも、『L?K?O
』は1単語とは見なされません。
アンカーは位置にマッチするので、文字クラス内に含めることはできません。
『^
』や『$
』を文字クラスに含めても、その文字自体という意味になります。
つまり、『[^$]
』なら「行頭または行末」ではなくて、「『$
』文字以外」ということになります。
また、『\b
』は文字クラス内のみ、バックスペース文字を表す場合が多いようです。
正規表現には、大抵「大文字と小文字を無視する」というオプションがあります。
これが入っていないと「『to:
』で検索しても『To:
』にマッチしない」といったことが起こります。
言語、ツールによっては、正規表現の一部にのみ大文字と小文字を無視する機能があるものもあります。
例えばRubyでは『(?i:foo)
』という形式を使用できます。
『(
?i:Ruby) Python
』という表現なら、『ruby Python
』や『RuBy Python』にはマッチしますが、
『RUBY PYTHON
』にはマッチしない、ということになります。
括弧内に入れた文字列は、ある場所に記憶されます。(「キャプチャ」と呼びます)
これは『\n
』という表記を使って呼び出すことができます。(nは数字)
同じ単語が2連続で出てくるもの(『merry merry
』みたいなもの)を探すという場合、
『\b(\w+)\b \1
』とすることができます。(ここで使った『\1
』を「後方参照」と呼びます)
こうすると、『\1
』の部分は、『(\w+)
』を使ってマッチしたものと同じものがあるものとして解釈されることになります。
括弧を何個も使う場合は、左の括弧から順に『\1
』、『\2
』、『\3
』となります。
また、後方参照は置換文字列にも使うことができます。
つまり置換文字列内に『\1
』と書けば1番目の括弧、
『\2
』と書けば2番目の括弧でキャプチャされたものがそこに入ることになります。
この場合、言語、ツールによっては『\n
』ではなく『$n
』を使う場合もあるようです。
括弧は『(foo|bar)
』という選択や、『(humbert){2}
』というグループ化など、キャプチャ以外にも使われます。
そのため、キャプチャに使われた数字をわかりやすくするために、キャプチャしない括弧もあります。
それには『(?:foo)
』という表記を使います。
前の例であれば『(?:foo|bar)
』と『(?:humbert){2}
』になります。
「その位置の続くものを確認する」というのが「先読み」です。
対象文字列を『JavaScript Java Applet』として考えてみましょう。
『Java(?=Script)
』は「『Script
』が後に続く『Java
』」にマッチします。
『(?=Script)
』の部分が、「『Script
』が後に続くかどうか」をチェックしているので、
後ろに『Script
』が続かない単なる『Java
』にはマッチしません。
『(?=Script)
』の部分は「後に『Script
』が続く位置」にマッチしていることになります。
この例のマッチは『JavaScript Java Applet』となります。
逆に、『Java(?!Script)
』とすれば、「『Script
』が後に続かないかどうか」をチェックするので、
後ろに『Script
』が続かない単なる『Java
』にマッチさせることができます。
こちらは「否定先読み」と呼びます。
この例のマッチは『JavaScript Java Applet』となります。
言語、ツールによっては、「その位置の前にあるものを確認する」という「戻り読み」「否定戻り読み」がサポートされているものもあります。
(これは『(?<=foo)
』『(?<!=bar)
』という形で使います)
先読みや否定先読み、戻り読みなどをまとめて「前後読み」と呼びますが、
前後読みは位置にマッチするため、戻り読みは先読みとは通常書くべき位置が逆になります。
『(?<Mozilla )Firefox
』とすれば、『Mozilla
』に続く『Firefox
』のみにマッチします。
メタ文字 | 意味 |
---|---|
?+ | 直前の文字を0回または1回繰り返す(強欲) |
*+ | 直前の文字を0回以上繰り返す(強欲) |
++ | 直前の文字を1回以上繰り返す(強欲) |
上のほうで?、*、+は「欲張り」だと書きましたが、「欲張り」な量指定子も“ゆずる”ことがあります。
対象文字列が『"something"
』だとして、検索文字列『".*"
』はこれにマッチします。
しかし、強欲な量指定子『*+
』に置き換えて『".*+"
』とするとマッチしません。
これはなぜかというと、「欲張り」な量指定子を使った『.*
』の部分は、
最後の『"
』がなければ『something"
』にマッチすることになりますが、
正規表現の最後に『"
』があるために、対象文字列の最後の『"
』をゆずっているのです。
『.*+
』の部分が『something"
』にマッチしてしまい、
強欲な量指定子をサポートしていない言語、ツールでも、「アトミックなグループ」というものが使える場合があります。
アトミックなグループでは『(?>foo)
』という表記を使います。
『\w?+
』なら『(?>w+)
』、『\w*+
』なら『(?>w*)
』、『\w++
』なら『(?>w+)
』で代替できます。
『*
』の「直前の文字の0回以上の繰り返し」はよく気をつけないと、間違ったものにまでマッチしてしまいます。
リテラル文字と文字クラスは「文字自体」にマッチすると書きましたが、
『-*
』というような表現は、『-
』や『--------
』だけでなく、
なぜそうなるかというと、「0回以上」ということは「なくてもいい」ということだからです。
空文字列へのマッチは、実質上「位置」へのマッチと似たようなものになります。
検索文字列を『-*
』として一括置換すると、
『-
』や『--------
』が置換されるだけでなく、
『-
』が存在しないすべての場所に置換文字列が挿入されてしまうことになります。
正しい正規表現を書くためには、「どう書けばマッチするか」だけでなく、
「どういう場合にマッチしなければいいか」についても考えてみる必要があります。
*
』≒正規表現の『.*
』とありますが、これは厳密には微妙に違います。
ファイルグロブでは《*
》は「任意の文字を1回以上繰り返す」
つまり、1文字以上あればなんでもいいということになります。
この意味だと、《*.*
》は "foo." や ".bar" は当てはまりません。
しかし、「0回以上」であればマッチすることになります。
正規表現では「1回以上繰り返す」は、《+
》なので、
「任意の文字を1回以上繰り返す」は『.+』となります。
よって、《*.*
》とほぼ等価な表現は『.+\..+
』となります。
これは私の勘違いでした。miauさんご指摘ありがとうございます。
「*.*」は foo. にマッチするはずだし、.bar にマッチしないのは、「*」がドットファイルにマッチしないっていう特殊ルールがあるから・・・ですよね?
ファイルグロブの《*
》は、「0回以上繰り返す(ただし例外として、一番最初のドットは表せない)」ということのようです。
《*.*
》とほぼ等価な表現は、正しくは『(?!\.).*\..*
』となります。
正規表現を使うにあたっては、検索対象がどのようなものか知っておくことが重要です。
『\d{4}[-/]\d{1,2}[-/]\d{1,2}
』で日付と思われる文字列を検索することができますが、
これは『00-0000-00-00
』というものにもマッチしてしまいます。(『00-0000-00-00
』)
しかしこれを厳密にしようと思えばかなり複雑な正規表現になってしまうので、
どの程度の厳密さが必要かを把握しておくことが肝要と言えるでしょう。
冒頭にも書きましたが、正規表現は、言語やツールによって微妙な違いがあるので、
その辺りについては各言語、ツールの説明を参照してください。
本格的に学びたい場合はオライリーの「詳説 正規表現」がおすすめです。
(ただ、この本はプログラミングのことを多少は知らないと難しいかもしれません)
また、PHP正規表現チェッカーですぐに試せるようです。
b:id:K-Onoさんの
について。
実ははてなダイアリーもある(d:id:sleepwlk)んですが、長いこと書いてなかったので、
匿名ダイアリーのほうが多くの人に見てもらえるのではないかと思ってこちらに書いてみました。
*2008-09-23 誤記の修正と、一部加筆しました。
*2008-09-24 ワイルドカードの記述を修正しました。
*2008-09-24 文字クラスの記述の間違いを修正しました。b:id:FunnyBunnyDizzyさんご指摘ありがとうございます。
はてブとかで児童ポルノの単純所持へのうんたらが盛り上がっているなあとボーッと見ていたら、どうにも絵やマンガなどの創作物への規制が大きな論点になっていて、おいおいそうじゃねえだろ、と思ってしまいました。
これはアレだ、詐欺でよくある手口に似ているなあと思いました。最初に現実的でない要求を突きつけたあとで、譲歩するふりをして実際の要求を通すというよくあるも、有効であるといわれる手口です。
絵やマンガの規制というのは正直なところ問題提起される時点で危険だとは思いますが、一方で賛成するにせよ反対にするにせよ、多くの人の感情に訴えるというのは、よくわかります。感情論的なところに立脚して賛成することも出来るし、表現への規制的な部分から反対することも出来る。
実写の児童ポルノの単純所持の違法化に反対することよりも、絵や漫画等の児童ポルノの単純所持の違法化に反対する方が、やりやすいため議論がそこに集中してしまっているように思えます。
でも、たとえ実写であっても単純所持を違法にするのは、現実に即しているとは思えません。この問題はダウンロード違法化にほぼ近いと思います。そして予想される罰則を考えるとダウンロード違法化より余程恐ろしい。
PCなんかを使っていると、結局自分、というより自分が使っている情報機器がどういう情報を手に入れたかも、どういう情報を持っているかも、どういう情報を発信しているかも、必ずしも明確ではありません。誰にとっても。
あるいは意図してその情報を入手するにしても、その敷居はものすごく低い。たとえばほんのちょっとの好奇心でも十分です。
その結末が性犯罪者として告発され、罰せられることかと、疑問に思います。
そしてこういったワイルドカードに近い法律が成立した後、適切な運用がなされることが全く期待できないのは、昨今の京都府警の行状からもハッキリしています。
創作物の児童ポルノへの規制に賛成する人、反対する人もどちらも真剣ではあるのでしょうが、結果として詐欺的な論点ずらしの片棒を担いでいるように思われます。
実際のところ一番問題なのは単純所持であるので、それを前提として何を規制するかを考えるのではなく、単純所持の是非についてこそ、焦点を当ててみんな考えるべきではないでしょうか。
実写の児童ポルノについては被害者がいる以上、写真やビデオのこれ以上の拡散をとめるべく対策をとるべきではないか、というのはわかります。しかしそうはいっても、立派なお題目を掲げ、重大な副作用のあるわりには、実効性の全く期待できない規制を作るのは、正義感の短絡的で危険な発露に思われます。
実際の被害の実態について詳しいわけではないのですが、個人的には児童の被害は経済的な問題が下地にあるのではないかと思っています。親が子供を脱がせるのも、お金が入るからやるのでしょう。
貧困層にある親子をどう救済するか。迂遠であるように見え、相当大変だと思いますが、それを解決することこそが、児童がこれ以上被害にあうことを防ぐ一番の近道ではないでしょうか。