抜き打ちテストのパラドックスとBitcoin

Bitcoinが価値を完全に失うXデーが存在するけどそれがいつだかは予測できないというのがなんだか抜き打ちテストのパラドックスに似ていると思った。

抜き打ちテストのパラドックスとはあれのことです、「来週のどこかで抜き打ちテストをする」と教師が予告した言葉を信じるなら来週のどの日にも抜き打ちテストはできないと結論できてしまうという思考実験。
金曜日に抜き打ちテストはできませんね。だって木曜夕方の時点で未実施だったらもう金曜にやるしかない=実施日が前日に判明しているなんて抜き打ちテストではないから。
金曜にできないことを前提とすると、同じ理由で木曜にもできなくなる。そして同じ論法で進めていけば月曜から金曜、すべての日に実施不可能じゃないですかと。

さてBitcoin。約10分ごとの計算量競争の勝者に新規コインが発行されるのが2140年頃まで続き、この競争に提供される計算量がBitcoinを取引履歴偽造から守ってる。つまり2140年の最後のコインの発行後は、もう計算量競争がないから取引履歴も保証されず、決済手段としての価値は完全にゼロとなる。

だったら最後のコインを獲得する計算量競争に(高い電気代を払ってまで)参加する意義はあるか? ないですよね。

となると最後の1コインを残した状態で計算量提供は途絶え、Bitcoinも価値を失うことになるわけですが、すると同じ理由で最後の一個前のコインを獲得する計算量競争も参加する意義がなくなりました。この論法を繰り返していくと…?

これは、似ているどころじゃない。抜き打ちテストのパラドックスそのものでした。思考実験でなく財産賭けたリアルのゲームで、しかもすでに始まってしまっている。

先生、あなた何曜日にテストやるんですか?



訂正 2014/04/16
すごい大事なこと見落としてました。計算量競争の勝者には新規コインだけじゃなく、期間中に発生した送金手数料がすべて与えられるから、新規コインの発行終了後も競争の報酬はなくならないです。
だからBitcoinは抜き打ちテストじゃありません。

日系パワハラのいわゆるブクマスパム問題の正しい突っ込み方

人気急上昇中のブログ「日系パワハラ」が、アクセス数を稼ぐためにはてなブックマーク上でランキング操作行為をしているのをtemtan氏が発見しました。

通常であればこれは日系パワハラが大炎上し公式謝罪へという流れになりそうなところが、今回どうも様子が違う。
temtan氏と日系パワハラ側のやりとりがまとめて公開されているのですが、
http://togetter.com/li/541121
野次馬の感想コメントではむしろtemtan氏が粘着SPAM扱いされたりしていて、五分五分どころか、本来の正義の在処からすれば劣勢になってしまっています。

僕も実際こういうコメントを残していますね。

「考えが整理されていない」と大見得を切ってしまった以上、自分なりに整理してみせるのは義務かと思い総括させていただきます次第。

とはいえその後の流れ。

日系パワハラはその後の記事で

一部ツイッターユーザーの方から、ブログ製作者側が自分のブログをはてなブックマークすることは違法行為であると指摘されました。めんどくせーので今後、自分のブログをブックマークすることは辞めます。

http://nikkeiph.com/overtime/

とむしろ面倒なクレーマーに絡まれてしまった被害者的スタンスをとってさらに優勢に(非難するコメントも来ているものの)。

そしてtemtan氏側は、追い込むはずがむしろ釈明的なブログ記事を出す羽目になります。
http://d.hatena.ne.jp/temtan/
これはこれで、数字という証拠をきっちり集めていて労作だしはてなブックマークに対する問題提起としても重要だとは思うんですが。

とはいえこれで外野の支持は傾いたか。ブックマークコメントを見る限り微妙ですね。

どうしてこうなった

この記事でも「いわゆる」とつけていますね。「スパム」という言葉をいきなり使ってしまったところが急所となっていたと感じます。

これによって、「スパムの定義とは?」「勝手に定義したスパム認定で中傷するの?」という寝技にもつれこんでしまった。

実際、ウォッチャーの皆さんのコメントを見てもブックマークスパムの定義に関心が行ってしまっているものも多々見受けられました。

こう整理したかった

スパムとは何なのか。スパムならば悪なのか。

そういう話ではないんです。
はてなブックマークが他のブログランキングと違うところは多数のユーザーのブックマーク行為から注目度を自動でランクづけているところであって、それが魅力と信頼性の根源になっているのだから、それを損なう意図的な操作行為はユーザーとして見過ごせないのです。
そして、はてなブックマークの魅力を毀損することは、それをアクセス源にしているブログ側にだって結局損なのだからやめてもらわないといけないのです。

そこを突くべきだった。初手で「スパム」という言葉を使って事実に曖昧な名前をつけてしまったところがすでに失着だったと考えます。

正しくは

  • 「日系パワハラの記事のブックマークは不自然に操作されている形跡がある」
  • 「関係者3人で一斉にブックマークすれば新着リストのトップにいきなり入ることは理解の上で、操作行為をしていたことをお認めになるわけですね?」
  • 「他の大手サイトのことは話していません。あなたがたが操作行為を意図的に行っていたかを問うています。何の問題もないとお考えでしたか?」

この辺までの問答でtogetterでまとめる。これで世論はこっちのものだった。

ここまでやってからからなら最後にクロージングとして「スパム」という言葉を使っても良くなります。すでに定義は文脈上きっちりなされたので。

教訓として

追求側。評価よりも、それを構成する事実と考察を中心に攻撃を組み立てないと思わぬ泥仕合に引きずり込まれます。
対応側。寝技を使えるようになると予想以上に粘れます。

慣用句の解釈2題:「風上にも置けない」「気の置けない」

このネタすでに書いてるだろうか。でもチェックするのも面倒なのでこのまま書いてしまう。

置けないつながりってわけじゃないんですが、この2つの慣用句、表現に納得がいかない2巨頭なんですね、僕の中で。

「気の置けない」

まず「気の置けない」。若者が誤用しているけしからん的な例に挙げられるトップ3に入る言葉だと思うんですけど、実際仕方ないと思いますよね。だって「置けない」という不可能表現である以上悪い意味としか考えられず、そうすると語感から「気を許せない」ぐらいの意味ではないかと類推するのはわりと自然な思路。

この表現、「可能動詞はれる・られるの複数の意味のうち可能の意味だけに限定したもの」という原則の数少ない例外なんですよね。可能動詞のくせに自発の意味、「気を置こうという気が起きない」なんだ。だから「遠慮のいらない」という意味になる。

でもやっぱり可能動詞は可能の意味だけで使いたい。だってそのせいで、ら抜き言葉が便利に使えるわけでしょ? 気持ち悪いので個人的には「気の置けない」は避けてますよ。

「風上にも置けない」

タイトルの順と本文の順が逆になった。まあいいか。

「風下にも置けない」が正しいんではないか? とずっと思ってました(ちなみにこう入力するとATOKには怒られる)。
「も」を使う以上は、許せない第一段階、第二段階があるってことじゃない。「風上には当然置きたくない。いや風下にだって置きたくない」となれば「風下にも置けない」です(また怒られた)。

まあ、これはあまり感覚レベルで受け入れられないんだけどこう考えるしかないのよね。



「風上に置けもしない」が「も」の移動で「風上にも置けない」に変化した姿であろうと。

空も飛べるはず」は自然に受け入れられるんだけどこちらの違和感は、うーん、なんなんだろうね。

フェルミ推定を問われたらこう答えたい

その具体的な奇問については“飛行機の中にいくつゴルフボールを積み込むことができるのか?”“マンハッタンにはいくつのガソリンスタンドがあるのか?”など。しかし、グーグルが奇問で行った「選抜」について分析をおこなったところ、まったく効果がないことが分かりグーグルとしては現在、採用試験に奇問はやめたとのことです。

Google「入社試験の“奇問”は時間の無駄だった」

流行らせた当のGoogleが意味なかったと面接で聞くのやめてしまったフェルミ推定ですが、惰性とかありますしまだまだ聞かれる機会は多い気がするんですよね。

そういう場合は、こんな感じの答え方で自分の小賢しさと面倒くささを全面的にアピールできればと思います。

  1. まず時間を稼ぎつつ推定方法を2つ以上ひねり出しておく
  2. 「このような推定をするとき、実務ではなからずもう一つ条件があると思うのです。多すぎる見積もり違いと少なすぎる見積もり違いのどちらが致命的かです。ゴルフボールが積みきれない事態を考えると多すぎる間違いが致命的だと見なして概算してみたいと思います」
  3. 推定方法1で、少なくなる方向に安全値を取りつつ概算
  4. 「もしお時間を許していただけるならもう一つ別の方法で概算し、その少ない方を採用したいと思いますが」
  5. 時間が許されればその通りに、方法だけ説明を求められれば(一番楽)推定方法2の概要を説明する

これで「こんなめんどくさいやつ勘弁してくれ」と不採用決定!

ぱちんこCRはてな村

CRはてな村はこんな感じです。

記事がツイートされたりブログで言及されたり

小当たり。しかしこれがこれから来る大当たりへの序曲でもあります。

2ブクマ

リーチ!あと1ブクマで新着ブクマ入りです。
セルクマでリーチを強制成就させるくらい、みんなやってるよね!?

新着入り

確変突入!ここから小当たり連発でブクマもアクセスもぐんぐん伸び始めます。
伸び方次第で大当たりまで届きますよ!

ホッテントリ入り

大当たり!滝のようなアクセスが流れ込んできます。
アクセス解析をリロードするたびにびびる。

Gunosy推薦記事入り

連チャンホッテントリの大波が収まったと思ったら翌朝からまさかの第二波が来ます。正直第一波と同じくらいでかいです。

そしてCRはてな村がフィーバーするとこんな感じに。

意味のわかるオブジェクト指向(1) プログラミング言語は、巨大なシステムを開発するために進化してきた

プログラムは書けるけどオブジェクト指向がどうもよくわからないという人に

オブジェクト指向の価値は多態性にある

ことを理解してもらうためにこの連載を書きます。このことが理解できたら、次はデザインパターンに触れて多態性がいかに役立つかわかるようになると、ものすごく理解が深まることでしょう(この連載の中でも、少しだけデザインパターンを紹介する予定です)。
連載では、ずっと昔のプログラミング言語の紹介から始めて、オブジェクト指向に向けて進化する中で何が変わったのかを解説していきます。この過程は(デザインパターンを学んでいくところまで含めて)まさに僕がプログラミングを学んできた過程そのものにほかなりません*1。自分では、自分はちょうどいい時代に生まれてちょうどいい段階からプログラミングを習得できたと感じているので、この過程を紹介する次第です。


プログラミングの初心者にとって、オブジェクト指向プログラミング(面倒くさいので、以下OOPと略そう)を取り入れた言語から学ぼうとすると、意味のわからない「おまじない」がとても多い。昔のマイコンのずっと原始的な言語でプログラミングを学んだ人の方が、自分が何を書いているのかよっぽどわかりやすかったはずだ。

JavaOOP言語)で書いた、「こんにちは!」と表示するプログラム
Class Hello{
  public static void main(String[] args){
    System.out.println("こんにちは!");
  }
}
※BASIC(原始的な手続き型言語)で書いた同内容のプログラム
10 PRINT "こんにちは!"

BASICのプログラムの意味は、「各命令行の頭には行番号を付けないといけない(上の例では「10」)」というルールさえ理解していればすぐに理解できる。それに対してJavaのプログラムは括弧がたくさんあり、行が字下げされていて、Class, Hello, public, static, void, main, String, args, System, out, とたくさん単語が並んでいる。こいつら、どういう意味?
やりたいことはprintln(これも、「ln」の意味がよくわからないけど……)だけなのに。println以外は全部おまじないだと思うしかない。これでは自分が何を打ち込んだのかもよく理解できない。

これらのおまじないの意味(と意義)を理解してもらうためのOOP講座なのだが、最も簡単なプログラムからこんなにおまじないだらけでは心がくじけてしまう。だからまず、心が折れないよう、次のことを頭に置いておいてもらいたい。

1.プログラミング言語は、巨大なシステム構築のために進化してきた

仕事としてプログラムを作る人たちも、昔はBASICのような原始的な言語で実務用のシステムを開発していた。しかし実務用の(複雑で巨大な)システムを開発していると、どうしても突き当たる問題というのがあった。それを解決するために言語の方が進化してきた結果が、おまじないだらけの現代の言語なのだ。簡単なプログラムは最初から念頭にないわけで、それが簡潔に書けないのはある意味当然のこと、と。

さて、そのプログラミング言語の進化のうち2大変革とも言える「構造化・モジュール化」オブジェクト指向を順を追って見ていくことにする。それを理解することで、オブジェクト指向の意味が自然に理解できるはずだ*2

次回:「スパゲティ・プログラム」

*1:過程そのもの、といっても関数プログラミングについてはまったく割愛します。またオブジェクト指向の中でもプロトタイプ型オブジェクト指向については省きました。どちらもとても面白いのですが、あしからず

*2:最後まで読んでもらうと、上のJavaのサンプルプログラムの中で、内側の括弧がモジュール化の産物、外側の括弧がオブジェクト指向の産物であることに気がつくと思います。にやりとしてください