yamajunn21さんのtwitterから引用:
週刊将棋の記事をみて思ったのだが、▲7六歩△3四歩▲2六歩より▲2六歩△3四歩▲7六歩の進行の方が先手勝率が高いって面白すぎる。同一局面なのだから、局面の問題でなく、その手順を選ぶ棋士の問題。
.@spinel3 ▲7六歩△3四歩▲2六歩(手順1)の先手勝率0.505で、▲2六歩△3四歩▲7六歩(手順2)の先手勝率は0.599で約1割違うとのことです。本当に面白いですよねえ。
うーん不思議だ。何でそうなるのか、ちょっと考えてみよう。
対局数としては▲7六歩△3四歩▲2六歩のほうが多いだろうから公平な比較はできないが、仮に居飛車党の先手にとって▲2六歩△3四歩▲7六歩の手順が有力であるとすれば、初手26歩に対する84歩は望むところ(少なくとも、初手76歩に対する84歩よりはウェルカム)なのだろう。
※後手が振り飛車党の場合は初手がどうだろうと2手目はだいたい34歩なのだから先手は手順を工夫する必要はない。なにしろ先手は3手目に25歩とするつもりがないのだから。
よって、26歩・84歩の出だしと76歩・84歩の出だしの先手勝率を比べて前者が高いようなら
「▲7六歩△3四歩▲2六歩の局面(局面A)を目指すなら初手は26歩とすべき」ということになる。
では、仮にそういう理由で手順2を経て局面Aに至るのが有力であるとして、手順1経由より勝率が高いもっともな理由がありうるとしたら、それは何か?
結論からいうと、yamajunnさんの言うように「同一局面なのだから、局面の問題でなくその手順を選ぶ棋士の問題」であろうと考えている。つまり、手順1が伝統的な出だしであるのに対して手順2は明らかに意図的なので、それを採用するには上の議論で述べたような「何か特別な理由」が必要である。多くの棋士を集めて何回も対戦させたら手順1と2が誰の棋譜にも均等に現れるというものではない。
「何か特別な理由」を持っている特定少数の棋士だけが手順2を選ぶのであり、それはやはり意識が高い棋士のなせる技だと思われる。
JSの設定
2010年7月16日金曜日
2010年7月11日日曜日
willcomのメールフィルタリングの不自由さを解決する
いかに、携帯(PHS)に残したいメールだけ(自動的にフィルタリングして)残すかという話。
willcomのメール設定では、fromアドレスを指定してメールの受信を拒否することができる。
アスタリスクが使えるので、例えば「*@*.com」みたいな条件を設定することができるが、
正規表現までは使えないので加減が難しい。そもそも、fromアドレスだけじゃなく本文もフィルタリング条件にしたい。
これを実現するために、知人には携帯アドレスではなく例えばGMailのアドレスを伝えることにし、そこに届いたメールは一旦全て自宅サーバに転送してしまい、思う存分フィルタリングをかけた上で好きなものだけ携帯に送るようにしてはどうか。間にGMailを挟むことで可用性が向上する上、第一フィルタリングをGMailで設定することによって自宅サーバの負荷を抑えられる。
メールの種類によって読む端末を分けたい場合にも有効で、GmailならiPadやiPhoneを初めとする無線LAN対応機器を使い通信料を発生させずに読むことができる。
「思う存分フィルタリング」のやり方。
だいたいここに書いてあることと同じだが、procmailrcの内容を以下のように変えている。これにより、メールソースを渡しつつfoward.rbを実行することができる。
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
RubyDir=$HOME/scripts/ruby
TmpDir=$HOME/tmp/
LOGFILE=$MAILDIR/proc/`date +%Y-%m`.log
LOCKFILE=$HOME/.lock
VERBOSE=ON
:0 Hc :
* .
|cat > $TmpDir/mail; $RubyDir/forward.rb
メールソースをrubyで扱うのにtmailというライブラリが便利なのでこれを利用する。メールを送信するにはnet/smtpを使うが、認証がうまくいかなかったのでaction_mailerを使うことにした。
gem install tmail
gem install action_mailer
以下、forward.rb の例。
#!/usr/bin/ruby
require 'rubygems'
require 'action_mailer'
require 'tmail'
require 'kconv'
〜中略〜
mail = TMail::Mail.load(mail_path)
# 前述のprocmailrcの「cat > $TmpDir/mail」で保存した一時ファイルを指定している
subject = mail.subject
body = mail.body
〜中略〜
# 日本語文字化け対策つきメール送信メソッドの定義
class HogeMailer < ActionMailer::Base
@@default_charset = 'iso-2022-jp'
@@encode_subject = false
def hogeMessage(recipient, mySubject, myBody)
from 'from@from.com'
recipients recipient
subject '=?ISO-2022-JP?B?' + Kconv.tojis(mySubject).split(//,1).pack('m').chomp + '?='
body Kconv.tojis(myBody)
end
end
#認証とかの情報設定
ActionMailer::Base.smtp_settings = { :address => '127.0.0.1',
:port => 25,
:domain => 'XXX',
:user_name => 'XXX',
:password => 'XXX',
:authentication => :login}
#送信!
HogeMailer.deliver_hogeMessage('to@to.com', mail.subject, mail.body)
上記では単に転送しているだけだが、mail.fromやmail.bodyを正規表現などでフィルタリングしたあと
複数の宛先に投げ分ければよい。また、大量のスパムメールが直接携帯アドレスに届くような場合には、willcom側の設定で例えば「*.com」を拒否しておき、forward.rbの中でfromアドレスを「.com」→「.etc」のように書き換えた上で転送するなど、色々応用がきく。
willcomのメール設定では、fromアドレスを指定してメールの受信を拒否することができる。
アスタリスクが使えるので、例えば「*@*.com」みたいな条件を設定することができるが、
正規表現までは使えないので加減が難しい。そもそも、fromアドレスだけじゃなく本文もフィルタリング条件にしたい。
これを実現するために、知人には携帯アドレスではなく例えばGMailのアドレスを伝えることにし、そこに届いたメールは一旦全て自宅サーバに転送してしまい、思う存分フィルタリングをかけた上で好きなものだけ携帯に送るようにしてはどうか。間にGMailを挟むことで可用性が向上する上、第一フィルタリングをGMailで設定することによって自宅サーバの負荷を抑えられる。
メールの種類によって読む端末を分けたい場合にも有効で、GmailならiPadやiPhoneを初めとする無線LAN対応機器を使い通信料を発生させずに読むことができる。
「思う存分フィルタリング」のやり方。
だいたいここに書いてあることと同じだが、procmailrcの内容を以下のように変えている。これにより、メールソースを渡しつつfoward.rbを実行することができる。
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
RubyDir=$HOME/scripts/ruby
TmpDir=$HOME/tmp/
LOGFILE=$MAILDIR/proc/`date +%Y-%m`.log
LOCKFILE=$HOME/.lock
VERBOSE=ON
:0 Hc :
* .
|cat > $TmpDir/mail; $RubyDir/forward.rb
メールソースをrubyで扱うのにtmailというライブラリが便利なのでこれを利用する。メールを送信するにはnet/smtpを使うが、認証がうまくいかなかったのでaction_mailerを使うことにした。
gem install tmail
gem install action_mailer
以下、forward.rb の例。
#!/usr/bin/ruby
require 'rubygems'
require 'action_mailer'
require 'tmail'
require 'kconv'
〜中略〜
mail = TMail::Mail.load(mail_path)
# 前述のprocmailrcの「cat > $TmpDir/mail」で保存した一時ファイルを指定している
subject = mail.subject
body = mail.body
〜中略〜
# 日本語文字化け対策つきメール送信メソッドの定義
class HogeMailer < ActionMailer::Base
@@default_charset = 'iso-2022-jp'
@@encode_subject = false
def hogeMessage(recipient, mySubject, myBody)
from 'from@from.com'
recipients recipient
subject '=?ISO-2022-JP?B?' + Kconv.tojis(mySubject).split(//,1).pack('m').chomp + '?='
body Kconv.tojis(myBody)
end
end
#認証とかの情報設定
ActionMailer::Base.smtp_settings = { :address => '127.0.0.1',
:port => 25,
:domain => 'XXX',
:user_name => 'XXX',
:password => 'XXX',
:authentication => :login}
#送信!
HogeMailer.deliver_hogeMessage('to@to.com', mail.subject, mail.body)
上記では単に転送しているだけだが、mail.fromやmail.bodyを正規表現などでフィルタリングしたあと
複数の宛先に投げ分ければよい。また、大量のスパムメールが直接携帯アドレスに届くような場合には、willcom側の設定で例えば「*.com」を拒否しておき、forward.rbの中でfromアドレスを「.com」→「.etc」のように書き換えた上で転送するなど、色々応用がきく。
2010年7月4日日曜日
理由という言葉の少し変わった使い方
Twitterでmic314が言っていたことから連想した事柄を少し。
※mic314はwiiの428というゲームにでてくるタマというキャラクターによく似ているなぁ・・・と密かに思っている人。べつに親しくはない。
mic314とspinel3の会話を引用:
m: "女性は月刊、男性は週刊、って、なんでだろう、という議論中。…しかし、結論出ず。なんでなんだろーっ。"
s: "それってどういう議論ですか?"
m: "雑誌や漫画など、女性誌は月刊が多く、男性誌は週刊が多い・・・という実感があり、なぜ違うんだろう…という話をしてました!"
面白いと思うのは実はこの議論の内容そのものではなく、「なんでだろう」と理由を考えているところだ。理由という言葉は普通、ある人がなにか行動をした時の意図であったり、結果に対する原因という意味で使われる。上で問題になっているのは後者のほうなのだが、若い頃に考えていたことの後遺症か何か知らないが、理由というとどうしても意図的なニュアンスを感じてしまう。
むかし考えていたことというのは、生物の進化に関する話。
例えば世界には変わった姿形をした生物がいるが、彼らはどうしてそういう形になったんだろう?
「アリクイの鼻が長いのは何で?」と聞かれたら「アリを食べるのに便利だから」と説明する人は結構いると思うが、アリクイ自身がそう思って鼻を伸ばしたわけではない。「アリを食べるのに便利なように進化したから」と説明しても、「何で他のエサではなく"アリ"がターゲットなのか?」と聞き返されたとき困るだろう。
アリクイの祖先がいて、突然変異によって何種類かの子孫に分岐したとしよう。
その1つがアリクイで、理由もなく鼻が長くて先が細かった。それはアリを食べるのに適していて
アリは栄養価が高くてどこにでもたくさんいたのでアリクイは生き残ることができた。
仮にそうだとすると、アリクイの鼻が長い理由は、単に彼らの生態圏で生き残ることができる姿形のレパートリーに「鼻が長い、アリクイのような姿形」が含まれていただけということになる。
さて、上の理由と、「アリを食べるのに便利だから」という説明はどれくらい違うだろうか?
一見して、アリクイのような姿形が生き残りやすいために生き残ったというのなら、その姿形が生き残りやすかった理由はアリを食べやすいことなのだから、「アリを食べるのに便利だから」と言っても問題なさそうに思える。
※そしてこれが自分なりの結論なのだが、反論も思い浮かぶ。以下、それに対する自問自答。
でも、質問は「アリクイの鼻が長いのは何で?」だった。この意味が「いま目の前にいるアリクイの鼻が長いのは何で?」であれば、その答えは「そのような遺伝情報をもって生まれてきて、なおかつ無事に育ったから」となり、「何でそんな風に進化したの?」であれば「たまたま」というしかない。
なぜなら、その姿形が生き残りやすいかどうかは長い時間テストしてみなければ分からないからだ。
先祖からアリクイが分岐した時点で既にその鼻は長い。この理由と、現代のこの日にアリクイの鼻が長い理由は同じであると仮定しよう。すると、前者の時点ではその姿形が生き残りやすいかどうかなんて分からないのだから、アリクイの鼻が長い理由は「アリを食べるのに便利だから」ではありえない。分岐がランダムな突然変異で起こるのであれば、その時点でアリクイがアリクイの姿形をしているのは「たまたま」だ。よって後者の時点でも理由は同様である。
というわけで「自分なりの結論」が否定されてしまった。しかし上で仮定したことは生産的な議論を生まないので棄却するべきと思う。前者の時点でアリクイの鼻が長い理由はたまたまであるというのは確かにその通りだが、後者の時点でも同じことしか言えないとすれば、それは質問を好意的に解釈する気も、アリクイが長い時間にわたって生存してきた事実を考察の材料に加える気もないということだ。
そこで質問の解釈を変えてみよう。「アリクイの鼻が長いのは何で?」→「アリクイの長期間に渡る生存に役立ってきた重要な環境要因がいくつか考えられるとして、特にその中で、鼻が長いことに関連するものは何か?」とする。こうすれば答えは明確に決まる。つまり、「長い鼻で食べやすいアリという生物がまわりにウヨウヨしていた」ということである。
ここでもう一度注意を。上の答えは「アリクイの鼻が長い理由」ではなく、「鼻が長いアリクイが生き残ってこれた理由」である。実際、アリクイのまわりに大きいネズミしかいなかったら彼らは絶滅していただろうし、長期間に渡ってアリが彼らのまわりに居続けることなど全く保証されていなかった。アリを食べるために進化したのではなく、進化したらアリを食べざるを得なかったのだ。
私たちは、アリクイの鼻が長い理由を聞かれたらまず解釈変換を行って「長い鼻で食べやすいアリという生物がまわりにウヨウヨしていたこと」という回答を導き、さらに再変換を行って「アリを食べるのに便利だから」と答えている。一般に、質問者はなるべく解釈変換が少なくて済む発話をしなければならないが、回答者もある程度は解釈変換の努力をする必要がある。逆に言えば、多くの解釈変換が必要な発話を許すのなら、テキトーな回答も許されなければ不公平である。
※回答に変換をかけているのだから、テキトーな回答をするほうが面倒くさいのではないかというツッコミがあるかもしれないが、それは違う。テキトーじゃない回答をするのには、まず質問の解釈をどのように変えたのかから説明する必要があるからだ。
※mic314はwiiの428というゲームにでてくるタマというキャラクターによく似ているなぁ・・・と密かに思っている人。べつに親しくはない。
mic314とspinel3の会話を引用:
m: "女性は月刊、男性は週刊、って、なんでだろう、という議論中。…しかし、結論出ず。なんでなんだろーっ。"
s: "それってどういう議論ですか?"
m: "雑誌や漫画など、女性誌は月刊が多く、男性誌は週刊が多い・・・という実感があり、なぜ違うんだろう…という話をしてました!"
面白いと思うのは実はこの議論の内容そのものではなく、「なんでだろう」と理由を考えているところだ。理由という言葉は普通、ある人がなにか行動をした時の意図であったり、結果に対する原因という意味で使われる。上で問題になっているのは後者のほうなのだが、若い頃に考えていたことの後遺症か何か知らないが、理由というとどうしても意図的なニュアンスを感じてしまう。
むかし考えていたことというのは、生物の進化に関する話。
例えば世界には変わった姿形をした生物がいるが、彼らはどうしてそういう形になったんだろう?
「アリクイの鼻が長いのは何で?」と聞かれたら「アリを食べるのに便利だから」と説明する人は結構いると思うが、アリクイ自身がそう思って鼻を伸ばしたわけではない。「アリを食べるのに便利なように進化したから」と説明しても、「何で他のエサではなく"アリ"がターゲットなのか?」と聞き返されたとき困るだろう。
アリクイの祖先がいて、突然変異によって何種類かの子孫に分岐したとしよう。
その1つがアリクイで、理由もなく鼻が長くて先が細かった。それはアリを食べるのに適していて
アリは栄養価が高くてどこにでもたくさんいたのでアリクイは生き残ることができた。
仮にそうだとすると、アリクイの鼻が長い理由は、単に彼らの生態圏で生き残ることができる姿形のレパートリーに「鼻が長い、アリクイのような姿形」が含まれていただけということになる。
さて、上の理由と、「アリを食べるのに便利だから」という説明はどれくらい違うだろうか?
一見して、アリクイのような姿形が生き残りやすいために生き残ったというのなら、その姿形が生き残りやすかった理由はアリを食べやすいことなのだから、「アリを食べるのに便利だから」と言っても問題なさそうに思える。
※そしてこれが自分なりの結論なのだが、反論も思い浮かぶ。以下、それに対する自問自答。
でも、質問は「アリクイの鼻が長いのは何で?」だった。この意味が「いま目の前にいるアリクイの鼻が長いのは何で?」であれば、その答えは「そのような遺伝情報をもって生まれてきて、なおかつ無事に育ったから」となり、「何でそんな風に進化したの?」であれば「たまたま」というしかない。
なぜなら、その姿形が生き残りやすいかどうかは長い時間テストしてみなければ分からないからだ。
先祖からアリクイが分岐した時点で既にその鼻は長い。この理由と、現代のこの日にアリクイの鼻が長い理由は同じであると仮定しよう。すると、前者の時点ではその姿形が生き残りやすいかどうかなんて分からないのだから、アリクイの鼻が長い理由は「アリを食べるのに便利だから」ではありえない。分岐がランダムな突然変異で起こるのであれば、その時点でアリクイがアリクイの姿形をしているのは「たまたま」だ。よって後者の時点でも理由は同様である。
というわけで「自分なりの結論」が否定されてしまった。しかし上で仮定したことは生産的な議論を生まないので棄却するべきと思う。前者の時点でアリクイの鼻が長い理由はたまたまであるというのは確かにその通りだが、後者の時点でも同じことしか言えないとすれば、それは質問を好意的に解釈する気も、アリクイが長い時間にわたって生存してきた事実を考察の材料に加える気もないということだ。
そこで質問の解釈を変えてみよう。「アリクイの鼻が長いのは何で?」→「アリクイの長期間に渡る生存に役立ってきた重要な環境要因がいくつか考えられるとして、特にその中で、鼻が長いことに関連するものは何か?」とする。こうすれば答えは明確に決まる。つまり、「長い鼻で食べやすいアリという生物がまわりにウヨウヨしていた」ということである。
ここでもう一度注意を。上の答えは「アリクイの鼻が長い理由」ではなく、「鼻が長いアリクイが生き残ってこれた理由」である。実際、アリクイのまわりに大きいネズミしかいなかったら彼らは絶滅していただろうし、長期間に渡ってアリが彼らのまわりに居続けることなど全く保証されていなかった。アリを食べるために進化したのではなく、進化したらアリを食べざるを得なかったのだ。
私たちは、アリクイの鼻が長い理由を聞かれたらまず解釈変換を行って「長い鼻で食べやすいアリという生物がまわりにウヨウヨしていたこと」という回答を導き、さらに再変換を行って「アリを食べるのに便利だから」と答えている。一般に、質問者はなるべく解釈変換が少なくて済む発話をしなければならないが、回答者もある程度は解釈変換の努力をする必要がある。逆に言えば、多くの解釈変換が必要な発話を許すのなら、テキトーな回答も許されなければ不公平である。
※回答に変換をかけているのだから、テキトーな回答をするほうが面倒くさいのではないかというツッコミがあるかもしれないが、それは違う。テキトーじゃない回答をするのには、まず質問の解釈をどのように変えたのかから説明する必要があるからだ。
登録:
投稿 (Atom)