焼き鳥屋で刑法学者と意気投合してコインハイブ事件について書き出すだけの難儀なお仕事

JavaScript で仮想通貨を採掘するコインハイブというライブラリがありました。

コインハイブ事件というのは、この仮想通貨をマイニングするプログラムコードを自身の管理するウェブサイトに設置したところ、不正指令電磁的記録保管罪(刑法168条の3)に問われたというものです。

このコインハイブ事件に関して、「アプリ開発の実務を踏まえた不正指令電磁的記録に関する罪の一考察 -コインハイブ事件を契機としてー」というタイトルで千葉大学の紀要に書き、千葉大学のページ上で PDFでも公開されました。
https://opac.ll.chiba-u.jp/da/curator/900119535/S09127208-36-1-P056.PDF
https://opac.ll.chiba-u.jp/da/curator/900119535/

内容に入る前に、まずは、この事件に関わっている、被告人、弁護士、検察官、裁判官、調査官、書記官等の皆様に敬意を表します。すべての人々がその信じる正義に対して真摯に判断をしているのだと思います。特に、被告人の方は、望んでいない状況に突然放り込まれてそれに向き合おうとしており、公共のためを思っての行動であることを強く感じます。

私自身は刑事事件の被疑者となったことはないのですが、一度だけ会った人物が冤罪で重大事件に巻き込まれたために、刑事弁護に強い遠隔操作などのサイバー犯罪ともご縁のある弁護士を紹介するなど奔走していたことがあり、傍で見たことはあります。特にコインハイブ事件は、判例のないところを走る複雑な事件であり、意に沿わない先例を作らないようにするためには並々ならぬ労力を割かれていることと推察いたします。一般に、刑事事件は、地裁で無罪でも高裁は8割有罪と、1.3審制といわれることさえある民事事件よりもどの審級でも手が抜けず負荷は常に高いです。

そして、人的資源という意味であまり公平ではありません。検察や裁判所は官僚組織ですし、法務省の立法担当者とも話ができますからね。

ところで、このなんだか固い内容に似つかわしくないタイトルですが、これは「Twitter で医師を拾ってきて Google のソフトウェアエンジニアにするだけの簡単なお仕事(https://nuc.hatenadiary.org/entry/2021/03/31)」と対になっています。私は同時期に、この「不正指令電磁的記録に関する罪の一考察」と「簡単なお仕事」の二つを並行して書いておりまして、量もだいたい同じくらいで、問題意識もかなり共通して書かれている、私にとっては双子のような文書です。そして、その問題意識のうちの一つは「常識」です。なぜか、これを「教養」や「優秀さ」と読み違えた人が多かったようですが、専門家集団にはその集団特有の共通知識がある、という極めて当たり前のことを書いていて、そして、多くの職業人にとっては当たり前の内容であったかと思います。「簡単なお仕事」において書かれていることは、「常識」を身につけることが求められているのであって、他人にはできない「抜きん出ていること」をしようとすることではないということです。少々戯画的にいえば、あの入社試験は優等生だと通りにくいものです。

もちろん、「簡単なお仕事」に限られる問題意識もあります。どのような人物が採用されるかについて誤解が流布しているので、高嶺の花感が出てしまって、本来受けて欲しい人が受けてくれず、採用がうまくいかない、それを言いふらされるので、さらに、という悪循環の形で、古巣の人事が迷惑を被っております。ときどき一緒にコーヒーを飲むのでそういう事情を知っているにも関わらず、私は迷惑をかけるほうの片棒を間接的に担いでしまったからには、腹を切るということです。このように一般に Hiring について言及されることは企業にとって迷惑なことになりえますので繊細な配慮をしています。元同僚たちがこの点に思い至るか至らないかきれいに分かれたように見えたのは非常に興味深い現象です。あまりあからさまに書く気はなかったのですが、部署内の人間関係さえ希薄になった匂いがします。もちろん、自覚した上で踏みにじることも時には必要でしょうがね。

この点、最近入社したエンジニアに優秀さにこだわる優等生が増えてきたというのは感じるところです。先だっても、そのようなエンジニアがメンターをしているインターン生に対してほぼ初めて書いた言語でのコードレビューに際し「これを知らないとはお前は優秀ではない」「お前よりも優秀なやつはたくさんいる」などといい、一週間くらいそのインターン生は悩んでいたらしいのですが、ふと別の社員にその話を漏らしたところ、大問題になって適切に処理されたとのことです。問題となった箇所は、その言語特有の仕様で、たしかにそれをよく使っている人ならば常識的に知っているかもしれないが、使ったことがなければ知らないようなことです。「ああ、この言語を使う人達の間では一般的な知識です。今後もこの言語を使うならば覚えておくといいでしょう。ここをみるといいと思います。」その程度でいいのに、なぜか優秀かどうかの話、つまり人としての性質の話が始まりました。こういう一次元的な優秀さの尺度で人を判断することを非常に好むようになったというのが最近感じる変化です。「人間が才知を尽くして労苦するのは、仲間に対して競争心を燃やしているからだということも分かった。これまた空しく、風を追うようなことだ。(伝4:4)」また、こういうパワハラ被害者は面接官を怖がるようになるので、教えることもとてもやりにくくなりますので本当にやめて欲しいのです。

もっとも、このように、一切書かれていない、優秀さや教養について書かれていると誤って読み取るのは、分からないわけではありません。というのも、選民思想能力主義への批判が根底にあるからです。この文書は、多くの人には楽しく読めるでしょうが、人によっては何かに障るのでしょう。特に、「模擬面接をするようになってからは技術面接はほぼ通過する」という内容がどうしても受け入れられないので、防衛機制がいろいろな留保をつけようと頑張るわけです。これを書いた時点では私達が教えた人は知る限り面接は全員通ってましたからね。もっとも、私も正確に難易度を把握できていないようで、私の感覚も明らかに実際よりも難しい方にぶれています。おおまかな自分の見積りから計算される通過人数の期待値は有意に現実よりもだいぶ悲観的です。ですから少しこの通過率は下げる方向に動かさないといけないとは思っております。ある Google に通った教え子に、「簡単なお仕事」の感想を聞いたところ、楽しい文書だなあと思って読んだが、あとから激昂している人を見かけて、意味不明で怖いと思ったといわれました。しかし、そうなるのは内容上不可避なのです。これは内容が必然的に誤読を生むからです。

さて、その他の共通している問題意識が何なのかはおいおい説明していくとして、エンジニアの面接対策の活動をここ数年一緒にやっている小西さんから、最初期の競技プログラミングである第1回の UTPC 2008 の時に出した問題を皆さんに紹介して欲しいとの言付けを預かっておりますので、忘れないうちにここで紹介しておきます。
Problem K: 電波基地 https://www.utpc.jp/2008/problems/radio.html
Problem L: チクチクバンバン https://www.utpc.jp/2008/problems/toy.html
当時の遊びを思い出そうということでしょう。

話を少しもとに戻しますと、このブログを書くことにした背景には立法担当者に届けたいという気持ちがあります。最高裁は、判決を出す前に関連する解釈論を集めるようですので、最低限の形式を整え、できるだけ常識的なことを、法学系の大学の紀要に書いておけば、おそらくこの事件の係属している最高裁の第一小法廷の方々の目に紀要自体は留まるかもしれず、調査官解説で切り捨てられるかもしれませんが、それに加えて、法務省の立法担当者に読んで欲しいのです。

さて、コインハイブ事件に戻りましょう。

3,4年前にコインハイブ事件について初めて聞いたときに、技術者の感覚と法曹の感覚がだいぶ乖離するだろうなあ、と思いました。

ただ、どうも法曹側の感覚からすると、思われているよりも被告人不利な事件で、周囲の法曹に聞いてみても全力で戦って6,7割有罪という感覚です。これは、ベイズ確率とかいう話ではないもっとプリミティブな話で、1割弱勝てそうな論点が少しあって適切にクリティカルヒットで衝ければ勝てる場合があるかなくらいのところかと思います。

そもそもの前提として、法律の判断というのは基本的に決定木の形をしており、末端で利益衡量によるバランスがついている場合があるという構造をしております。人間、こういう構造でないと、たぶん、決定するアルゴリズムを共有できないのです。そして、刑事事件では、被告人側は、一箇所でも合理的な疑いを持たせることができれば勝ちという構造です。ただ、そうであったとしても、どの要件もそれなりに大変に見えるということです。

それに対して、技術者側の感覚としては、こんなもの回避できないだろうというのが正直なところかと思います。いつものように、普段使っているライブラリーと特に変わりなく使おうとするもので、反対動機を形成しなかったことに対しての道義的な非難が想定できない方も多いのではないか、と思います。少なくとも、無警告で逮捕(最高裁まで係争しているこの事件では逮捕されていませんが類似の事例ではあったようです)や起訴するような事例ではないのではないでしょうか。

怒っている技術者の方も見ました。怒りは二次的な感情であるとよく言われます。人は、なんらかの強い感情を揺さぶられたあとに現実と理想なり願望なりとの食い違いを認識すると怒り出します。

それで、この技術者の感覚を私にとって一番自然な発想で法学のディシプリンの中に入れ込んでみたというのが、この「アプリ開発の実務を踏まえた不正指令電磁的記録に関する罪の一考察」です。内容は、不正指令電磁的記録性のさらに反意図性に絞って議論し、できるだけ丹念に立法担当者の見解を読み解くと、反意図性が認められないので、無罪になるのではないか、とするものです。おおよその考え方自体は、事案を聞いたときに私ならばこう解釈すると直感的に考えた方法そのままです。

ただ、検察側の理屈があまりにもシンプルで強い。俺は難しいことは分からないが人としてやっていいことと悪いことくらい分かるといってみながハッとするみたいな紋切り型ってありますがそんな感じでしょうね。ただ、最高裁の説得が難しいにしろ、畢竟独自の解釈と切り捨てられるにしろ、20年後のために書いておかないといけない、私の確信している理屈があると思っています。

これを書くことになった背景事情ですが、久々に刑法学者の友人と会ったので、焼き鳥を食べながら、もともとはもっと広範囲の話をしていて、まあ、私のほうが法学については圧倒的に保守的な考え方をするといういつもどおりの展開だったんですが、タピオカミルクティーを飲んで、餃子屋に行くなどをしている間に、不正指令電磁的記録性の反意図性の話になり、ほぼ見解が一致したので、この内容で一本書いてみようということになりましたというところです。

うっかり書くことが決まってしまったので、別の法学者の友人に深夜に相談しました。30分位で何を考えていて何を書くつもりなのかをざっと話をして、一体どれくらいの分量になりそうかを聞くと「ひー、ふー、みー、よー、2万字かな。最低でも。」との返事をもらいました。それで、どれくらいの時間がかかるのかを聞くと、人によるが自分だったら準備ができていれば4時間位だということでした。共著者の指導教官とかだと1時間半で書くらしいですね。仮名混じり文が秒間4文字とかですか。どうしてそれができるかさっぱり分かりません。どう考えても無理ですね。というよりも無理でした。

それで、大まかな筋が半分くらいできた時点からは、定期的に、お昼過ぎに集合して共著者のお家にいって、床に座り込んで、二人で書きながら適時議論するというのを4,5回くらいやりました。とにかく負荷が高くて、2時間位すると共著者の意識が朦朧としてきて、仮眠を取り始める、そして、もう1時間位すると今度は私の意識が朦朧としてくるので、私が仮眠を取り始める、といったところです。
統一されている話ではあるが法学の論理構造になっていなかったから組み替えないといけないというのもあるのですが、とにかくコンテキストスイッチが重い。複数の分野にまたがった話をすると、境界領域であるために、普段だったら当たり前のように成立している前提が成立していない場合があるので、分野の議論の再構成を繰り返すことになります。

また、共著者はこのように説明してくれました。刑法の論文を書くというのは将棋みたいなものなのだと、ただ駒の動かし方はどこにも載っていない。だから、教えるためには、とりあえず、思うように盤面を並べて、それで、盤面を作って動かしてみせると、そんな動きしないと初めて指摘ができると。それを繰り返していくと、だんだん合法的な動かし方が分かっていくのだと。

たとえば、「この到達が認められる範囲については、ある程度、総合考慮の結果として行われざるをえないであろう。」という文を書いて、見せたところ、相手は倒れ込んでしばらく考えた後に、「反意図性は規範的に判断されると解されている以上、その下位基準もまた規範的に判断されることになる。よって、ここで述べている到達が認められる範囲については、ある程度、総合考慮の結果として行われざるを得ないことになる。」と書き換えられました。ああ、これは教育を受けないとできない。読んだときのいやらしさがまったく違う。これについて話したら、なんだか、後期ウィトゲンシュタイン味のあるいい話ですね、と法と文学の研究者にいわれましたが、私もいいセンスだなと思います。

こうやって様々な話が刑法の構文に綺麗に収まっていくというのは、なかなかに面白い経験でした。もともとの話が統一されているというのは本当に大事なことですね。

ペーパーの内容を法律の議論とは逆方向から話すと、まず、この事案は、ブラウザー上であったことがとても特殊です。たとえば、カフェで作業をしていて、席を立った途端に、外部記憶装置からバックグラウンドで動く仮想通貨のマイナーをインストールされ、それ以降気が付かないうちにマイニングをしている状況であったり、ダウンロードしたゲームの中にマイナーが仕掛けられていた状況であったりとは、倫理的に区別がある話であるように思われます。ただ、法的にこれを区別するのが難しいのです。この差異を日常用語で説明すると、インターネットやウェブの歴史的な経緯と合意から、ブラウザーJavaScript は閲覧者がウェブサイト設置者にある限度で使用を許している、というのが素直な答えではないでしょうか。インターネットやウェブの世界は標準化がなされていて、何をどのようにやっていいか、世界規模で合意が取られています。そういった技術者の感覚や歴史的経緯がにじみ出ているのが技術者の書いた説明であるから、そこから規範を読み取れば、どの程度のことまでが想定されていたのかが分かるはずです。

ただ、それだけでは、法学の議論に乗りません。法学は視野を制限するようにできています。子供の喧嘩でも見ていれば分かると思いますが、基本的に関係のないことを延々と言い続けるものですが、実は、これ民事裁判でも一緒です。だいたいの場合、自分がいかに優れているかということから始まり、まったく本題と関係のないことを延々と言い続けますが、意味はありませんし、そういったことを拾わないように法学というのはよくできていると思います。だいたい、とてもよく分かっている当事者でも、裁判をしている当事者が10言ったことを、弁護士が3くらい拾い上げて、そのうち裁判官が判決に使うのが1くらいという感覚かと思います。

そのように、法学の議論に乗せるためには何らかの決定木のどこかに潜り込ませないと、それはないことと同じなのです。

それではどこをとっかかりにしましょうか。今回選んだのは、不正指令電磁的記録に関する罪についての立法担当者の解説の反意図性のところに「使用説明書等に記載される」ことが反意図性を否定する総合考慮の材料として詳しい例示とともに挙げられているので、その箇所を文言解釈として精査すると、技術文書が入ってもいいのではないのでしょうか、というところです。

そろそろ「アプリ開発の実務を踏まえた不正指令電磁的記録に関する罪の一考察 -コインハイブ事件を契機としてー」を読んでください、という気持ちになってきましたが、簡単にまとめます。
https://opac.ll.chiba-u.jp/da/curator/900119535/S09127208-36-1-P056.PDF

まず、東京高裁の議論では、反意図性について、「プログラムの反意図性は,当該プログラムの機能について一般的に認識すべきと考えられるところを基準とした上で,一般的なプログラム使用者の意思に反しないものと評価できるかという観点から規範的に判断されるべきである。原判決は,本件プログラムコードが,その機能を認識した上で実行できないことから,反意図性を肯定しているが,一般的な電子計算機の使用者は,電子計算機の使用にあたり,実行されるプログラムの全ての機能を認識しているわけではないものの,特に問題のない機能のプログラムが,電子計算機の使用に付随して実行されることは許容しているといえるから,一般的なプログラム使用者が事前に機能を認識した上で実行することが予定されていないプログラムについては,そのような点だけから反意図性を肯定すべきではなく,そのプログラムの機能の内容そのものを踏まえ,一般的なプログラム使用者が,機能を認識しないまま当該プログラムを使用することを許容していないと規範的に評価できる場合に反意図性を肯定すべきである。」という抽象論を展開しました。

それに対してのあてはめとして「一般的に,ウェブサイト閲覧者は,ウェブサイトを閲覧する際に,閲覧のために必要なプログラムを実行することは承認していると考えられるが,本件プログラムコードで実施されるマイニングは,ウェブサイトの閲覧のために必要なものではなく,このような観点から反意図性を否定することができる事案ではない。その上,本件プログラムコードの実行によって行われるマイニングは,閲覧者の電子計算機に一定の負荷を与えるものであるのに,このような機能の提供に関し報酬が発生した場合にも閲覧者には利益がもたらされないし,マイニングが実行されていることは閲覧中の画面等には表示されず,閲覧者に,マイニングによって電子計算機の機能が提供されていることを知る機会やマイニングの実行を拒絶する機会も保障されていない。このような本件プログラムコードは,プログラム使用者に利益をもたらさないものである上,プログラム使用者に無断で電子計算機の機能を提供させて利益を得ようとするものであり,このようなプログラムの使用を一般的なプログラム使用者として想定される者が許容しないことは明らかといえるから,反意図性を肯定した原判決の結論に誤りはない。」としました。

これは立法担当者の見解と基本的な方向性は同じです。立法担当者の見解は、「意図に沿うべき動作をさせず、又はその意図に反する動作をさせる(第168条の2第1項1号)」という文言について「当該プログラムの機能の内容や機能に関する説明内容、想定される利用方法等を総合的に考慮して、その機能につき一般に認識すべきと考えられるところを基準として規範的に判断することとなる。」と述べて、あてはめの具体例として、「例えば、市販されているソフトウェアの場合、電子計算機の使用者は、そのプログラムの指令によって電子計算機が行う基本的な動作については当然認識しているものと考えられる上、それ以外の詳細な機能についても、使用説明書等に記載されるなどして、通常、使用者が認識し得るようになっているのであるから、そのような場合、仮に使用者がこのような機能を現実には認識していなくても、そのプログラムによる電子計算機の動作は、「使用者の意図に反する動作」には当たらないこととなる。逆に、フリーソフトの中には、使用説明書が付されていないものもあり得るが、その場合であっても、当該ソフトウェアの機能は、その名称や公開されているサイト上での説明等により、通常、使用者が認識し得るようになっていることから、使用説明書が付されていないというだけで、「使用者の意図に反する動作」に当たることとなるわけではない。」としています。

まず、違和感を感じるであろうところは、ブラウザ内で動く JavaScript について、本件プログラムコードという言葉で被告人が書いたコード単体を持って判断しようとしている点です。実際には高々数行のコードで、別の人の管理するサーバーからライブラリーを呼び出しているだけのはずです。そこをどのように評価するべきなのか。技術者の感覚として、あくまでも呼び出しだけなのだから、作成といえないのではないのではないかというものがあるかもしれません。ただ、法学の感覚としては、結果惹起に繋がる以上、行為の軽重によっては侵害主体性がないという議論は成立しがたいものを感じます。そうなると、複数のプログラムが協調動作をしているのだから「反意図性を判断するために必要なプログラムの範囲」について議論をする必要があり、それは、動いているものすべて、になるでしょう。そして、協調動作をしているのだからそれがどのように協調動作をするかについて「使用説明書等に記載される」内容があるはずです。それらを読み解いていけば、ある種の規範的な判断が必要にせよ、「RFC標準」や「W3C勧告」といった自然と技術文書に到達できるはずです。「使用説明書等に記載される」は「プログラムの動作について正しく記載した説明の存在」かつ「当該説明に対する一般の使用者からの到達可能性」の2つが必要だと解しました。この辺は哲学などでもする法学の概念工学的な側面ですね。

そうすると「RFC標準」や「W3C勧告」といった技術文書が、正しく動作を記載しており、そして、現在では高校の教科書にもあるようなものなのだから、一般の使用者からも到達可能だろうという議論をします。

そして、「W3C勧告」を読んでいくと、「一般に CPU の使用には制限がかかっていない」というのが現状の合意であるというのが読み取れるでしょう。Permissions API というユーザーからの許可を取る方法があるので、どのような動作について許可を取る必要があるかは書かれていて、現状ではマイニングはその制限がありません。また、Chrome 独自の機能として、2020年に導入された Heavy Ad Interventions という機能があり、広告表示にも使われることの多い iframe 内での CPU の使用には制限がなされています。開発者によると、これは、広告ネットワークによる仮想通貨のマイニングを制限することが狙いの一つということです。逆にいえば、この時点まで、仮想通貨のマイニングについての制限はなかったということでしょう。

このように、技術者の間の合意と、そして使用者に対してのインターネットとウェブがどのようなものであるかの説明が、技術文書から読み取れるはずだ、それを考慮して判断をするべきだというのが、紀要に書いた内容です。

一般に、法学のペーパーの形で、法解釈について主張をしたら、その主張を生涯続けるというのが、求められるものだと聞きます。標準となっているなんらかの技術文書から一般に禁止されるべきであると読み取れる箇所が出てきたら、それは文献調査不足であったとして意見を変えるものでしょうが、規範として「技術文書を考慮して法解釈をするべきである」という主張は単独説だとしてもしつづけるつもりです。

情報系の人にはそれなりに楽に読めるようですが、法律系の視点からは読むのが少し大変のようです。法律系の人々に聞くと、まず「一般の使用者からの到達可能性」について、擬制や評価が伴うのではないか、という疑問がでるようです。それはその通りで、もともと「一般の使用者」には評価が伴っていることは間違いがなく、その評価の線引をどうするべきかということになるでしょう。現に、法人や個人の枠を超えて人々が密なコミュニケーションをとって、よく使用できるルールにしようにしようとした結果がそこに蓄積しているのだから、刑事罰を与える水準で判断する際には、それらを丁寧に読んで理解している人物としてよいだろうという規範的な判断をしませんか、というところですね。友人の法哲学者が、この紀要をいろいろな刑法学者に送りつけて読んでもらうという遊びをしておりましたが、返ってくる結果が結構面白かったですね。みなさんもいろいろな法学部の人に送りつけてみましょう。

もう少し書いた意図を一般化すると、そもそも、裁判の証拠に採用されるのは基本的に裁判の要件や事実に関わるところであり、現状では、技術文書が参照されることはないでしょうから、技術文書を視界に入れる仕組みを用意したかったというところです。一方、たとえば、医療過誤の裁判では、医療の専門資料として診療ガイドライン等があり、それが参照されます。スポーツの試合中に怪我なりをして、裁判になったらスポーツのルールはある程度は参照されるでしょう。
ただ、情報技術では、そのようになっていないです。といっても、別に医療裁判の場合を考えてみても、医療については診療ガイドラインを参照するようにと書いてあるわけではなく、たとえば、過失の要件から読み込むわけです。判例を少し引用すれば「思うに、人の生命及び健康を管理すべき業務に従事する者は、その業務の性質に照らし、危険防止のため実験上必要とされる最善の注意義務を要求されるが、右注意義務の基準となるべきものは、診療当時のいわゆる臨床医学の実践における医療水準である」(最三小判昭和57年3月30日・裁集民135号563頁未熟児網膜症日赤高山病院事件)などと書かれております。
このように医療過誤などではガイドラインなどの専門文書が参照されますが、デジタル刑事罰ではそのような専門文書が参照される筋道が現在は見当たりません。そこで、技術文書が存在すること自体を刑法のディシプリンの枠内で主張しようというのがこのペーパーの大きな目的です。

仮に、このように技術文書の存在が、刑法学の議論の中で使えるようになると、それ自体が不正性や故意の否定においても使えるものだろうとは思います。

さて、紀要論文の周辺で本文に入らなかった話をいくつか補っておきます。一番はじめにこの事件を聞いたときに考えたことは、脚注含めてほとんど入っていて、連想していて入らなかったワードは部分社会と国際慣習法くらいです。理屈を詰めてみるとあまり関係がありませんでした。ただ、校正中に、法学者や技術者、特に Chrome 開発者たちと話して、知らなかった周辺の関係する要素があり、いくつかは本文にも反映したのですが、論理展開には不必要となったものをここにメモをしておくものです。本来ならばあるべき謝辞が間に合わなかったことをお許しください。

まず、AndroidiPhone などの他のプラットフォームで、同じ議論が成立するのか、という質問があります。注意すべきは、サンドボックス内で技術的に動くものは無条件ですべて合法だという主張ではなく、技術関係の文書などにその計算をしていいかしてはいけないか自体が書いてあるからそれを参照しよう、ということです。ですから、AndroidiPhone において、今回提案した規範を踏襲すると「Google Play Store や App Store に並んでいるソフトウェアについては、公開される前に GoogleApple によって開発者に悪名高い審査がなされており、その審査は、その下位基準に至るまですべてが公開されているかはともかく、ある程度公開された文書に書かれたなんらかの基準によっており、その文書はストアに並んでいるプログラムの動作を正しく説明しているものであるから、すくなくとも審査が正しく行われて審査に通過した場合は反意図性を否定できるであろう」ということになるでしょう。

次に、Chrome から見ると、2010年代には WHATWG が標準のメインストリームとなっていたので、2019年5月に WHATWG の検討素案が W3C 勧告となることが決まった、というのは感覚的には遅すぎる記述のようです。ただ、どこから切り替わったかを追うことは本題から外れますのでここにしました。ニュアンスは少し調整したほうがいいのでしょうか。こういうニュアンスや「てにをは」に専門性が出るんでしょうね。

ささいな忘れ物として、HTTP/2 も RFC7540 になってますね。HTTP/3も部分的にですが QUIC がそろそろです。(https://quicwg.org/base-drafts/draft-ietf-quic-http.html)
また、インターネット標準過程を定めたRFC2026をRFC6410がアップデートしているのは一言書くべきでした。

現在では、geolocation や push といった強力な機能はセキュアなページ内でのみ許すべきという方向に合意されてきています。
https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts/features_restricted_to_secure_contexts

W3C の草案段階ですがプライバシーの定義について議論がされています。
https://w3cping.github.io/privacy-threat-model/

開発者としては、ブラウザーは誰が書いたか分からないデータを表示して実行する仕組みなので、許可なしにできることはすべて安全であるべきで、ユーザーはインフラ上で実現可能ないかなり動作についても許諾している、だからユーザーから見える挙動が正常で、プライバシーやセキュリティーの問題がなければ、良いという考え方を取ることが多く、これは、CIA侵害を基準とする西貝説とも繋がります。

Heavy Ad Interventions は、広告ネットワークを狙ったものでしたが、一般に広告に対してのブラウザーレベルでの制限は多く、Feature Policy や iframe sandbox などがあります。
Heavy Ad Interventions は、service worker でのマイニングが行われる例があるため、worker intervention の必要性が議論されてますが、現状はまだないようです。

重い処理を止めるような機構が Chrome にはあり、たとえば一例としては、ネット回線が細いときの document.write() intervention です。
https://developers.google.com/web/updates/2016/08/removing-document-write

Chrome 独自の CPU リソースの使用の制限として、Tab Throttling というバックグラウンドで走るタブの中の Javascript の CPU 使用量を制限する機能があります。
https://blog.chromium.org/2020/11/tab-throttling-and-more-performance.html

RFC の MUST/SHOULD を無視した実装、たとえば、concurrent http 接続や輻輳制御の方法などを標準から変えるということの扱いはどうするべきなのか。この辺は、非常に難解な議論になると思われるのですが、その旨を別に書けばよいという話になるので、ドキュメントされていれば扱いは変わるでしょう。また、ここは客観的構成要件のうちの、反意図性に限定した話なので、不正性のあたりで切れるという議論にもなるでしょう。このあたりは、本当に不正性が例外的なものなのかということにもつながると思います。

それから、戯れに、レッシグのCODEの議論、すなわち、人は「法」「規範」「市場」「アーキテクチャ」の規制を受けるという話を混ぜ込んでみたら急に味付けが変わって刑法学でなくなったので抜きました。本当に論文のテイストが一発で変わるので、アメリカ西海岸はやっぱり日差しが強すぎるんだなと思いました。

あとは、本当は引用してみたかったのは、レヴィストロースの「野生の思考」。最後の章がサルトル批判なんですが、未開人の思考と"われわれ"の思考を比較した上で、情報理論の話をするんですね。少し引用すると「野生の思考の法則が再び支配する情報の世界の発見(la découverte d'un univers de l'information où régnent à nouveau les lois de la pensée sauvage)」「情報の世界が自然界の一部ないし一面であることの発見は、情報理論の成立のために確かに必要であった。(Pour qu'une théorie de l'information pût être élaborée, il était sans doute indispensable que l'on découvrît que l'univers de l'information était une partie, ou un aspect, du monde naturel.)」(大橋保夫訳)といったところです。

文脈としては、歴史学の哲学における特権的地位と弁証法から話を始め、進歩史観に対して疑義を挟みます。そして、文化人類学歴史学を補完する地位にあるというのです。
そして、具体的な法則から積み上げていく自然科学と、抽象からはじめる野生の思考を対比した後に、近年発見された情報理論(1962年当時)も野生の思考と同じであると断じるのです。なので、この紀要論文においては、近代国家の法律家共同体が、野生の思考と同視される情報の世界の共同体の論理を発見するという話ですね。いやはや、ゲーデルの話が出てくる書いた本人も何を書いているのか分かっているのか分からないような文をコンテキスト無視して引用するとかアクセントとしていいじゃないですか。これがおしゃれフランス文化人の正しい使い方だと思いますね。

また、民法では、約款の有効性という話題があって、それとの類似の比較もありました。約款の問題だと、多分、例えば携帯電話サービスなどが想定されていて、大会社は寡占市場なので一方的に有利な状況にあり分厚い約款を突きつけて、読もうが読むまいが同意をせざるを得ない状況であり、実際に、誰も読んでいないし、後で、滅多に起きない状況になったとしても約款を盾に大企業が守られるのは適切か、という問題かと思います。一方で、企業が作って公開しているのだから、そんな変な内容ではないだろうという感じもあるわけです。
それに対して、こちらは刑法の問題なので、こういう国際的な仕様書を読みながらコードを書いている人たちがいて、そのコードの動作を使用者が知らないといったときに、どれくらいそのコードを書いた人を救うべきか、という話なので、ちょっと違うとは思います。

刑法38条3項の法の不知という話をはじめると、いろいろな法律家の皆様に怒られると思いますので、このあたりにいたします。いやね、優等生の背理法と個人的に呼んでいる理屈があるんですよ。「私は優れている。」「私はそれを知らない。」「よって、それは私のような優れた人物が知る必要のある内容ではない。」というものなんですけれども。

プログラミングコンテスト競技プログラミングの歴史

いやはや、競技プログラミングが、競技プログラミング同好会というサークルの名前に由来し、プログラミングコンテストからどう出てきたかが知られていないようなので、簡単にまとめてみようと思います。奇しくも、コインハイブ事件も、インターネットとウェブの歴史から規範を引き出そうという話でしたし、野生の思考は史学は特権的ではないって話でしたしね。

プログラミングコンテストの分類については、2012年に shinh さんが非常によくまとめています。

shinh.hatenablog.com

審査員が評価する系
面白いゲームを作るコンテスト (アスキーのやつとか)
綺麗なデモを作るコンテスト (demo scene, mega demo)
なんか役に立つソフト作ってこい (高校生とか向きでなんか国がやったりとか)
邪悪なコードを書いて来い (IOCCC)
善意を装って悪いことをするコードを書いてこい

明確な評価軸がある系
速いコードを書け (cell/GPU challenge, topcoder marathon)
短いコードを書け (code golf, TLE)
なるべく速く正しいコードを書け (ICPC, topcoder algorithm, codejam)
強い AI を書け (imagine cup, robocode)
難しい問題に最適解になるべく近い解を出せ (topcoder marathon)
プログラムにまつわるパズルを解け (codepuzzle, python challenge)
数学的な問題を解きまくれ (project euler)

古くからあるプログラミングコンテストといえば、1980年から続く全国高校生プログラミングコンテストや1990年から続く全国高等専門学校プログラミングコンテストがあります。特に、後者のプログラミングコンテストには競技部門がありますが、これはロボコンのように長期間準備をしてAIを持ってきて戦わせる競技です。基本は「なんか役に立つソフト作ってこい」で、他に伝統的なところですと2002年から日本学生科学賞にソリューション部門(後に情報技術部門に改名)ができました。

日本における「なるべく速く正しいコードを書く」という意味での競技の嚆矢濫觴は、1994年から1997年まで続いた情報オリンピックと思われます。
http://www.f.waseda.jp/moriya/PUBLIC_HTML/joi/index.html
それ以前の学術系のオリンピックは、1990年からはじまった数学オリンピックと1992年からはじまった算数オリンピックがあります。

この時、日本は国際大会で4枚のメダルを獲得しています。余談ですが、うち3枚を獲得した2人は77年度生まれの筑駒生で、当時は、農芸部を中心として、文化系の部・同好会の連合を形成していて、学年の少なくない割合が、その中の複数のものを掛け持ちする人たちであったと聞いています。彼らが中学2年生の時に、フルアセンブルで PC98 と Towns の両方で使えるグラフィックライブラリ tcpl を作り、そこから10年間以上に渡り、パーソナルコンピュータ研究会というコンピュータの部活はその遺産で遊ぶことになります。このときの唯一の金メダリストは後に数学者になっており、現代数学ができて、システムが作れる人物は、この時代でもいたんですね。
もっと古くは、たとえばなんですが、河東教授 https://www.ms.u-tokyo.ac.jp/~yasuyuki/vitae2.htm 大島教授 https://www.ms.u-tokyo.ac.jp/~oshima/dviout/dvihist.html など、ソフトウェアを開発できる数学者というのは珍しくありませんでした。

この情報オリンピックメダリストの数学者が学生時代に初回の発表者になったのが2000年からはじまった「なんでもセミナー」です。当初は、代々木のK会でやっていたと記憶しています。
http://new.pya.jp/nandemo/
そして、2004年から「情報科学なんでもセミナー」がはじまります。
http://www.cs.toronto.edu/~kawamura/nandemo/old.html

なんでもセミナーは、レトロニムとして(情報科学のほうと区別するために)数学なんでもセミナーと呼ばれることがありました。数学なんでもセミナーは情報オリンピックのメダリスト、情報科学なんでもセミナーは数学オリンピックのメダリストが第一回発表者なのがちょっと面白いですね。この余談が挟まったのは、この時代のプログラムが書ける人たちは、他の分野にも興味を持って、広く交流を持っているのが普通であったという話をしたかったからです。

また、1995年から東工大主催で supercon (スパコン)が始まります。こちらは、「速いコードを書け」「難しい問題に最適解になるべく近い解を出せ」の系統です。
https://www.gsic.titech.ac.jp/supercon/main/attwiki/index.php

1998年に大学対抗のプログラミングコンテストである ACM-ICPC が日本国内で始まり、ここまで挙げてきたような高校生高専生向けのコンテストの出場者たちが ACM-ICPC に出るようになります。

名前がでているので、軽く見比べると、2002-2007のACM-ICPCの国際大会出場者のおおよそ半分が、情報オリンピックスパコンに出場していたようです。また、数学オリンピックや算数オリンピックと共通して出ている人もいないわけではないようですね。もちろん、これはあくまでも、国際大会出場者の話であり、その他にはアジア大会の出場者や国内予選の出場者がおりました。また、そもそもの話として、こういった「大会に出る」ということは、あくまでもいろいろな遊びをするコミュニティーがあって、その遊びの一つとして行われていたということが大事かと思います。コミュニティーが先であって大会は後だったのです。

この頃、東京大学の出場者数が、2000年には6チーム、2001年には5チームであったのが、2002年10チーム、2003年9チームとなり、さらに2004年に20チーム、2005年に23チームと急に増えました。ACM-ICPC は、大学対抗で、大学ごとに地区予選や国際大会に出場できるチームが限られていますので、急激にチーム数が増えたことにより、国内予選は、東大だけ異常な難易度となり、陰では東大予選、とも呼ばれるようになりました。

この背景には東大の情報基盤センターと総合文化研究科の先生方の尽力もありました。東大では極めて多くの学生が「電源の付け方が分かりません」という質問をするため、それに答えるためだけに教職員が呼び出されてはたまらないということで、システム相談員という学生アルバイトを用意しており、質問のトリアージをする仕事をしておりました。そして、システム相談員を統括していた情報基盤センターの先生方は学生たちへの影響力がありました。特に、情報基盤センターの田中哲朗先生の研究室には出入りが自由で、田中先生は2003年から国内予選審判(出題委員)になりました。
https://lecture.ecc.u-tokyo.ac.jp/~ktanaka/programming04/kadai1116.html
https://lecture.ecc.u-tokyo.ac.jp/~ktanaka/is06/0117.html

また、遅くとも2002年から布教に努めていたようですが、増原英彦先生や金子知適先生が、2004年から駒場ICPC に出ることを目的としたゼミを開くようになりました。
https://prg.is.titech.ac.jp/members/masuhara/classes/icpc2004/

金子先生の問題解決のためのプログラミング一巡り(2019年版)は、
https://github.com/tkaneko/icpcseminar/blob/master/all.pdf から読めます。

Aizu Online Judge (AOJ) http://judge.u-aizu.ac.jp
Peking University Judge Online for ACM/ICPC (POJ) http://poj.org
Codeforces http://www.codeforces.com/
szkopul https://szkopul.edu.pl (旧 http://main.edu.pl/en)

などを用いた練習を勧めております。(2019年度版)とありますが、2000年代の雰囲気をよく残していると思います。

少し話がずれますが、2003年からパソコン甲子園がはじまりました。これは、会津大学の主催する高校生と高等専門学校生向けのコンテストで、なるべく速く正しいコードを書けの系統の部門があります。また、綺麗なデモを作るコンテスト系のCG1枚絵を作る部門もあります。

このころプログラミングコンテストで活躍していた日本人として Shin Natori さんがいます。
2000年の IOCCC や 2005年のThe Underhanded C Contest で活躍をしたほか、2006年までの TopCoder SRM で活躍しました。
https://competitiveprogramming.info/topcoder/handle/natori
http://www.underhanded-c.org/_page_id_8.html
https://www.ioccc.org/winners.html#S
最近だと「医療や健康に関連する検索結果の改善について」名前が出てました。
https://webmaster-ja.googleblog.com/2017/12/for-more-reliable-health-search.html

また、2005年から2009年頃まで SRM で活躍した Hayato Ito さんがいます。
https://hayatoito.github.io/2017/faq/#google-hiring
https://hayatoito.github.io/2017/faq/#competitive-programming

時間は前後しますが、2012年から Endoh さんが IOCCC で入賞を繰り返しています。
https://www.ioccc.org/winners.html#E

2003年に ICPC東京大学にはじめのメダルをもたらした kinaba さんは、2004年の ICFPICPC に出ようという記事を書いています。(国際大会への初出場は1998年の京都大学。初のメダルは京都大学の2000年です。)
http://www.kmonos.net/wlog/39.php#_2206040524

2004年からは、ICPCのOB/OG会が発足し活動を開始します。また、2005年前後には、ICPC 出場チーム GNC 主催の ICPC 練習会が行われていたと記憶しております。GNC は、まさにスパコンコンテストと学術オリンピック等の出場者からなりますね。

2004年度のISの雰囲気は下から
http://is.zng.info/archive/1112196863.html.sjis

ICPCとは,大学生を対象にした世界規模のプログラミングコンテストです.
ISの先輩方には世界大会に進んで活躍なさった方もいます(IS公式ページ参照)

形式は,3人で1チームを作り,与えられた問題に対し,適切な出力をするプログ
ラムを書いて,運営側にメールで送るというものです.出題された問題のうち何
問を解けたかを競うわけです(なお,解いた問題数が同じ場合は早く解いたほう
が上位となります).

なお,国内予選の上位26チームがチームがアジア地区予選に進むことができます
.しかし同じ大学からは3チームまでという制限があり,東大は例年とても強い
ので,実質的には東大内での戦いとなります.

で,去年このような企画を教養学部の増原先生が立ち上げていらっしゃいました

http://www.graco.c.u-tokyo.ac.jp/icpc-challenge/
これを読んでいる人で参加していた人もいると思います.

この企画と同様に,週に1-2題を課題に設定してその解答を考え,解法に使った
アルゴリズムプログラミングテクニックについて議論する場を設け,ICPCで上
位を目指す(そして予選突破を目指す)企画をやりたいと思います.一緒に戦い
たい方の参加をお待ちしています.
Y.Matsumoto, Thu Mar 31 00:56:30 2005

http://is.zng.info/wiki/generic/index.php/%E7%89%B9%E5%88%A5:%E3%83%9A%E3%83%BC%E3%82%B8%E4%B8%80%E8%A6%A7

当時は PKU JudgeOnline http://poj.org/ を使って練習をしていました。

2006年に情報オリンピックが復活。

そんな中、2007年の3月に作られたのが競技プログラミング同好会です。

mayah.jp

競技プログラミング同好会は「ICPCの他国のレベルがあまりにも上がりすぎていて、このままでは日本が再びメダルを取ることはないだろう。世界大会で、再び日本がメダルを取れるようにするには、知識を受け継いでいく仕組みが必要だ」ということで競技プログラミングクラブとして活動します。なお、ymatsux は、競技プログラミングの名付け親であると同時に、ルシファー音頭のオリジナルでもあります。ymatsux は、昔、ドラえもんのオープニング曲の替え歌とともに謎の動きをしていました。ルシファー音頭は、その「あんな夢こんな夢いっぱいあるけど」の部分のオマージュです。いってみれば、ymatsux はルシファー音頭と競技プログラミングの親であり、ルシファー音頭と競技プログラミングは生き別れの兄弟なのです。

競技プログラミングは、当時は、とても違和感のある名称でした。

ああ、この inazz も、りりあんさんを Google に叩き込んだ悪いやつです。どうかこの広告に憤る読者は inazz 君に非難を加えて下さい。

当時、OB/OG会などプログラミングコンテストのための勉強会はありましたが、複数チームが定期的に集まるサークルとしてできたのがこの競技プログラミングクラブです。そして、この競技プログラミングクラブは、定期的な勉強会が主な活動でしたが、もう一つの大きな活動が UTPC (東京大学プログラミングコンテスト)です。

翌年の2008年、第1回の東京大学プログラミングコンテストが開催されます。
https://www.utpc.jp/2008/
署名としては東京大学プログラミングコンテスト実行委員会とありますが、全員、競技プログラミングクラブの人たちによるものです。出場者も、多くが競技プログラミングクラブの人たちですが、東工大や京大の人の名前も見えます。

このように「競技プログラミング同好会(競技プログラミングクラブ)」が競技プログラミングの誕生した場所でした。

UTPC は、2008年から2014年まで続き、2020年に復活しています。2008年から2013年までの ICPC の国際大会の出場者は毎年最低一人は第1回 UTPC に参加していて、2014年から2018年までも、UTPC に出ている人がいるはずです。2019年以降は知りません。

また、この頃、2006年3月に ICPC の卒業生たちを含む人々が集まって、Preferred Infrastructure ができます。後に Preferred Networks とレトリバになります。Treasure Data もここからといっていいですかね。

他に当時の学生の作ったものとしては、2007年1月から shinh さんによる、Anarchy Golf という Code Golf のサイトがあります。
https://www.slideshare.net/shinh/code-golf

当時、Short Coding がとても流行り、「ショートコーディング 職人達の技法」が Ozy さんとやねうらおさんによって書かれました。

2009年の shinh さんと2010年の pure pure code ++ のICFP優勝しています。2013年以降は Team Unagi がよく優勝しています。

2009年に UAPC 会津大学プログラミングコンテストが開催されます。
https://jag-icpc.org/?plugin=attach&refer=2011%2FCoachWorkshop&openfile=5-en.pdf
UAPC という名前は UTPC に倣ったものとのことです。実は、2008年と2003年にも教員の手で学内でプログラミングコンテストが行われていたらしいのですが、2003年のコンテストは教員によるもので、2008年は2003年と同一問題セットに難易度調整のため tayama さんが手頃な2問を作題して追加したものとのことです。この経緯からレトロニムとして、2003年や2008年に行われたプログラミングコンテストを UAPC 200{3,8} などと呼ぶようです。

2009年から会津大学の Aizu Online Judge https://judge.u-aizu.ac.jp/onlinejudge/会津大学の外にも公開されます。2005年に作られたようですが、学外に公開されたのはこのときです。コンパイラにも任意コード実行のバグがあることがあり、セキュリティーなどいろいろ難しいでしょうからね。

また、quolc さんによる Imagine Cup の公式競技の Herbert をオンラインゲームにした Herbert Online Judge http://herbert.tealang.info/ が2011年に始まりました。

学生主催のプログラミングコンテストとして、2011年には、KUPC 京都大学プログラミングコンテスト、2012年には AtCoder が始まります。どちらも主催者の大半が UTPC 第2回からの参加者のはずです。
https://www.kupc.jp/#/2011/
https://atcoder.jp/

2011年の Google Code Jam Japan が開催されます。この大会は、ICPC OB/OG会やUTPCの初期メンバーなどによるものでした。
https://developers-jp.googleblog.com/2012/01/google-code-jam-japan.html

このあたりで、UTPC の初期メンバーが「なるべく速く正しいコードを書け」系の開催側から離れていくようですので、ここからのプログラミングコンテスト競技プログラミングの歴史について書くのは、他の方にお任せいたします。

過去の用例を調べていくと、まず初出の「東京大学競技プログラミングクラブ」のウェブページはもう消えています。
https://b.hatena.ne.jp/entry/inazz.jp/utokyocpc/
inazz の管理でしたね。

2008年6月に「東京大学競技プログラミングクラブの練習会」という文字が見えます。
https://wata-orz.hatenadiary.org/archive/2008/06/07

確認できた中で一番古い、一般名詞としての競技プログラミングの用例は、kinaba-san の2008年12月の「わりと競技プログラミング的なものに時間を使った年だったかもしれない。 」という一文です。
http://www.kmonos.net/wlog/92.html
この文中では「 Project Euler, Topcoder, ICFPc, Google Code Jam 」などを総称して使われています。この「的な」という箇所に一般名詞になりきれていない時代の匂いを感じますね。

また、2009年5月には、UTPC2009の主催者の nya-san による「UTPC2009のお誘い」の中で、競技プログラミングという単語が使われています。
https://nyaasan.hatenadiary.org/entry/20090518/p1

東大生・東大OBはもちろん,学外のみなさんも紹介があれば参加可能です.

普段は競技プログラミングに参加されていない方から,コンテストで活躍されている方まで,広い層に楽しんでもらえるような問題セットを用意しています.沢山の方に参加してもらえればと思います.

ただ、これが一般名詞としての用法なのか、自分たちのサークルを指す言葉なのかは解釈に余地がよく見るとありますね。

2008年の UTPC では少なかった学外者ですが、2009年5月の第2回からは、開成や筑駒の高校生なども含めた学外の人々も広くコンテストに参加するようになり、競技プログラミングの名前をそこから受け継いでいったのです。
https://www.utpc.jp/2009/standings.html

tanakhさんの「Scala競技プログラミングを行う際に気をつけることの列挙。」が2009年の9月です。
https://tanakh.hatenablog.com/entry/20090908/p1

mayah さん主催のYUHAの2010年夏 (C78)のコミックマーケットの「競技プログラミング2010」がはじめて競技プログラミングを扱った書籍のようです。
http://yuha.jp/books/

mayah さんの「競技プログラミングという言葉の誕生」によると「自分の体験談を少し振り返ると、私が YUHA で競技プログラミングに関連する同人誌的なものを書き始めた 2008 年夏 (C74) には、「競技プログラミング」という言葉はまだ広くは知られてはおらず、同人誌中でも競技プログラミングという言葉は使われていませんでした。2010 年夏 (C78) に発行した同人誌からタイトルに「競技プログラミング」という言葉が使われ始めています。この頃売り子も自分がやっていましたが、「競技プログラミング」という言葉は全く浸透しておらず、興味を持ってもらった人に「競技プログラミング」とは何かを一から説明するような状況でした。」「それであれば、自分は卒業しているため 2007 年にその言葉を知らず、一方後輩からその言葉を知ったおかげで広く知られる前から使い始めたということで、納得ができます。」
https://mayah.jp/posts/2019/07/competitive-programming/

https://twitter.com/search?q=競技プログラミング%20until%3A2008-12-31

このように競技プログラミングという言葉は2008年から2009年にかけて一般名詞化していったものと思われます。

ここまで見てきて分かったように、1980年代から、さまざまなプログラミングコンテストというものがあり、その周辺に境界の漠然とした大きなコミュニティーが存在しました。その中で、2007年3月に ymatsu の手によって競技プログラミング同好会(競技プログラミングクラブ)の名称が生まれ、そこからスピンアウトした UTPC が日本の初期の学生主催のプログラミングコンテストとして、プログラミングコンテストのコミュニティーに浸透します。こうして、サークルの名前でしかなかった「競技プログラミング」が、2年程度でなぜかサークル外でも使われるようになっていくのです。(なお、埼玉大学のプログラミングサークル Maximum は、おそくとも2003年から学生主催のプログラミングコンテストをしていましたので、UTPC は最初の学生主催のプログラミングコンテストではありません。Maximum 杯は、とにかく自然言語の読解とテストケースが恐ろしいことで有名でしたね。)

この理由は、はっきりとはしません。一つには、世代交代によって「何その名称かっこよすぎうける」という感覚や「はじめてその奇妙な単語を聞いたときの違和感」がなくなってしまったことがあると思われるのと、それと、私は、プログラミングコンテストは「出る」ものであったのが、競技プログラミングは「する」ものである、というのが一つの理由ではないかと思っています。「出る」から「する」になったことで「する人」「できる人」といった概念ができるようになったのです。

誕生日と専攻

本当は、この後にこれらの話がどのようにつながるかを話すところなのでしょうが、おそらく分量はさらに倍になるでしょうから、大学時代に調べていた未発表のデータについて、軽く書いて今回は終わりにします。

相対年齢効果というものが知られています。たとえば、小学校入学時に、誕生日の差で、ほぼ7歳とほぼ6歳がいます。成長していたほうが、野球やサッカーには有利で小さい方が脱落するため、野球選手やサッカー選手は4,5月生まれが多くなります。これを相対年齢効果によって、野球選手やサッカー選手は4,5月生まれが多い、という言い方をします

当時、アウグスティヌスが告白の中で、親友フィルミヌスと同時に生まれた召使いの子がまったく異なる運命であったという話を引いて、星の位置や時刻で運命が決まるという議論を否定することを思い出して、では、人間の興味はどれくらい星の影響を受けるのか調べようと思い、興味と関係のあるであろう大学の専攻はどれくらい影響を受けているかを調べようと思ったのです。当時、日本である SNS が流行っており、そこには出身中学、高校、大学、学部ごとの集まる場所がありましたので、誕生日と専攻の相関を読むことができました。

結果、

  • 大学よりも中学高校のほうが相対年齢効果が効く(4月(遅)生まれに比べ3月 (早)生まれが少ない)
  • 中高一貫校は、2月3月生まれが、期待値よりも3割前後少ない
    • ただし、慶應塾高と女子高だけは相対年齢効果の影響がない
  • 女性よりも男性のほうが効く
    • これは男性の方が成長が遅いためとよくいわれる
  • 商学部・法学部・経済学部、教育学部・文学部は相対年齢効果が大きく効く
    • 1,2割程度
  • 理数系・外語は比較的影響が少ない
  • 芸術大学音楽大学はほぼ差がない

ということが分かりました。多くの中高一貫校は、4-6月生まれと2-3月生まれを比較すると、人口比で正規化した後でも、倍くらい人数が違います。とはいえ、4月2日に近ければ近いほうが有利というわけでもないようです。

注意しておかなくてはいけないのは、これはあくまでも同窓的な場所の参加者であるというだけですので、本当にそこの同窓生であることを保証するものではありません。ただ、これはアンケート調査でも同じで、アンケート結果が直接意味するところは、ある箇所に印をつけた、ということであり、その反射的効果として、何かが分かる、ということです。これは、試験などでも同じですね。出題者と思考がどれくらい類似しているか適合しているか、というのが試験であり、その反射的効果として、何かが分かる、たとえば、大学における教育を受ける準備がどの程度できているか、など、ということです。

私は、これは、非常に興味深い結果だと思っています。身の回りにどのような人がいたか、そして相対的に自分が劣っていると感じたから、自信を失う割合が誕生日によって、わずかに違い、その影響は、大学入学時点まで引きずり、それは何に興味を持つかにさえ影響を与えるのです。もちろん、4月生まれでも自信を失うことがあるが、3月生まれのほうが多いというだけなのにも関わらず、その影響は「割」の単位で統計に表れるという話ですね。

逆に言えば、物事に対する見方や考え方、言い換えれば、メンタリティーとか、マインドセットとか、人間性とか、そういう精神的なところが、できることできないことを規定しています。そして、私は、このメンタリティーが人の能力のかなり本質的な部分だと思っております。

大抵の場合、現実を見ることは苦痛で、自己愛や保存本能から、思考が適当に逃げるので、そこを乗り越える必要があり、自分がなんとなく出来ないことを出来るようになるには、メタ認知能力を注入してもらうようなことをするのがいいのでしょう。

私のこの話の好きな点は、誰にでも誕生日はあり、誰でもその影響をかなり大きく受けているのだけれども、それについて意識しておらず、能力や実力で勝ち取ったと思っているものが、思っても見なかった下駄があったと分かるところですね。

最高裁判決へのコメント

ここまでの記事は、2020年の8月頃、いまだ最高裁の弁論が決まっていない時期に書かれたものです。

2022年1月20日に、最高裁第一小法廷は、反意図性を認め、不正性を否定する、判決を出しました。山口厚裁判長は、弁護士枠ではあるものの、もともと東大の刑法学の教授で、サイバー法についての著作もありました。そして、その当時、刑法学の助教をしていた人の一人が、共著者の西貝先生です。

今回の判決の内容は、共著者が法学セミナーでした議論と類似しており、当てはめもかなり近いものです。その意味では、反意図性についてはともかく、大枠では私の考えと大きく異なるものではありません。

ただ、結局のところ、反意図性についても不正性についても大まかな利益衡量に持ち込んでおり、結論の予測可能性がないものです。マイニングの社会的価値なんか計上しなくても無罪にできたと思われるところ、わざわざそうしていて射程が狭いものとなっています。条文の出来が悪いと私の考える不正指令電磁的記録に関する罪について、あまり本質的な手当てをしないまま、判例として法律解釈における規範を残したのではないか、と考えます。

すなわち、これは、近いうちに似たような事件がふたたび起きる可能性を示唆しており、そのときまで、本質的な法規範の定立を先延ばしすることになったものかと思います。

最高裁は、各々の裁判官が個別意見の書ける唯一の裁判所です。僭越ながら、最高裁に求められていることは、深みのある補足意見であり、切れ味の鋭い反対意見であり、凄みのある意見であり、それらが法廷意見の判旨や判例の射程を検討する上で私達を導くのです。しかし、私達に与えられたものは、全会一致による予測可能性のない利益衡量に過ぎなかったと残念に思います。

あえていえば、近く、事件を担当した最高裁判所調査官が判例を解説するはずです。その調査官解説を楽しみに待ちたいと思います。

ちょくだいさん、ごめんなさい

ちょくだいさん、ごめんなさい。(ちょくだいさんが中高の後輩で、中学校一年生や中学校二年生の頃の印象からアップデートされていないことも行き違いの原因かと思いますので、この書き方にいたします。) 

nuc.hatenadiary.org

このあいだ書いた上の文章に対して、なぜか、ちょくだいさんに反論されています。

chokudai.hatenablog.com

しかし、ちょくだいさんには、かなり感謝と配慮をした文章を書いたつもりでした。

まず、前の方には、ちょくだいさんのおかげで、りりあんさんは模擬面接を受けることになったよ、ちょくだいさんがいなければ知り合うことすらなかったよ、ということが書いてあって、後ろの方には AtCoder のこのあたりの過去問(4問時代のABCのC問題)を解くといい勉強になるよ、とまで書いてあるわけじゃないですか。宣伝までしたくらいの気持ちでしたよ。

 

というわけで、ちょくだいさんが、先輩に失望したといっているのを見たときは、何を言っているんだろう、と思いました。

AtCoder

それで、しばらく首をひねっていたんですが、実は、まったく理解していなかったところがあったことに気が付きました。それは「競技プログラミング」とは「AtCoder」のことであり、「AtCoder」とは「ちょくだい」のことである、と読む人がいるということです。

競技プログラミングをしている」と言ったら、非常にありがたいことに、殆どの人がAtCoderに取り組んでいると思います。日本における「競技プログラミング」は、「AtCoder」と言い換えても、さほど問題がないかと思います。(競技プログラミングの在り方 ~「競技プログラミングを我々が終わらせる」を受けて~ - chokudaiのブログ)

これは、ちょくだいさんが blog に書いてくれたので気が付きました。なるほど。なるほど。これについては、意図せず失礼なことを書いたとお詫びしたいと思うと同時に少し背景の説明と本来の意図をご説明させてください。

 

当たり前ですけれども、あれくらいの長文を表に出すからには、あらかじめ、それなりの数の関係者に閲覧して感想をもらって修正してから投稿してます。それなりの数の先輩や後輩や同僚や教えた相手などに先に見せてます。もちろん、りりあんさんにも見せてます。

で、この「競技プログラミングを終わらせなければ」における「競技プログラミング」というのは、もともとは、今回の模擬面接をした3人の周りの人たちの間では、競技プログラミング同好会・クラブやその周辺の活動を指すわけです。

 そりゃそうじゃないですか、「競技プログラミングをする」という表現は当時はなくて、「プログラミングコンテストに出る」と言っていたわけです。だから、競技プログラミングといえば、自分たちが大学生の頃の集まりを指すわけです。「学生時代のバンドを終わらせなければ」と置き換えたら意味が通じるでしょうか。つまり、自分たちの大学生・大学院生の頃を反省して、とても大事なことをやり忘れてきたのでやり終わらなければいけない、ということです。

 少々不正確になって誤解されることを恐れずにもうちょっというと「東大理学部情報科学科に2002年から2005年ごろに進学した人々とその周辺のうちでお祭りが好きな人たちのコミュニティー」があったという話です。そして、2007年に競技プログラミングの名前が付きます。つまり「競技プログラミング」が広まり変質したというのは AtCoder ができる2012年より前の話をしています。「前競技プログラミング時代」には Gokuri-Squeeze GNC  kitsune- というような本当にすごい先輩たちがいたんですよ。ただ、競技プログラミングができた少し後あたりで、どこかで歯車を狂わせてしまったように感じております。

 

だから、あらかじめ閲覧していた人たちの中には、「競プロ終わらせるは本当にそう」といった反応をしている人も複数いました。

 

別に「競技プログラミング」という単語を商標登録していたわけでもないですから、その後、誰が使うのも自由です。ただ、さすがに、個人の代名詞や会社の代名詞のようになっていると思っている人がいることには私は気が付かなかったわけです。

それを前提に、元の文章を置き換えて、

「ちょくだい」は、東京大学「ちょくだい」同好会2007年春台湾合宿から始まります。

「ちょくだい」は変質し、その悪影響は看過できない所まで来てしまったと思います。

我々の目的の一つは、我々が始めてしまった「ちょくだい」を我々が終わらせることです。

という風に読んでいると理解すると、なるほどこれは、たしかに「抹殺する」という意味にもなりそうですし、

AtCoder」は、東京大学AtCoder」同好会2007年春台湾合宿から始まります。

AtCoder」は変質し、その悪影響は看過できない所まで来てしまったと思います。

我々の目的の一つは、我々が始めてしまった「AtCoder」を我々が終わらせることです。 

という風に読んでいると理解すると、なるほどこれは、たしかに「破産させてやる」という意味にもなりそうです。というか、それ以前に「お前たちは始めてないよ」といわれそうですよね。

そりゃそういう風にいわれたら怒ります。ごめんなさい。だけど、破産させる気も抹殺する気もありませんでした。というよりも、こう読まれるのにあらかじめ気がつけというのは、正直無理です。

僕たちは、競技プログラミングを娯楽として楽しんでいます。これを、初期にちょっとプログラミングコンテストに取り組んでいた程度で、我が物顔で「我々が競技プログラミングを終わらせる」などというのは、到底容認できるものではありません。競技プログラミングは貴方のものではない。もちろん僕のものでもないので、多様な競技プログラミングのあり方があるべきでしょう。(競技プログラミングの在り方 ~「競技プログラミングを我々が終わらせる」を受けて~ - chokudaiのブログ)

 という部分は

僕たちは、「AtCoder」を娯楽として楽しんでいます。これを、初期にちょっとプログラミングコンテストに取り組んでいた程度で、我が物顔で「我々が「AtCoder」を終わらせる」などというのは、到底容認できるものではありません。「AtCoder」は貴方のものではない。もちろん僕のものでもないので、多様な「AtCoder」のあり方があるべきでしょう。

という意味だとすると、納得がいかない理由はとてもよく分かります。なので、わざわざ、プログラミングコンテスト競技プログラミングを書き分けているということですよね。

しかし、「我々が「AtCoder」を終わらせる」というのは、容認するとかしないとか以前に、具体的に何をすることをイメージしていたんでしょうか。やっぱり、破産させるとかでしょうか。容認できないと判断できる程度には具体的にイメージできていたはずと思います。「AtCoder はあなたのもの」の具体的な意味もよく分かりません。ただ、なるほど、これはなんかとんでもないことをする計画だったっぽいですね。

しかしながら、前の文章でも AtCoder の過去問を解いてみたら、とおすすめしていることからも分かるように、サービスはあって欲しいと思います。

本当にごめんなさい。

 

5歳くらい歳が離れると一部の言葉が通じなくなることがあるのは、少し前に「アンチ」という言葉で強く実感したことがあります。これもそうなのでしょう。

 

ここまでが謝罪です。

質問

ところで、ちょくだいさんの文章、何を言っているかまったく読めないというか、全体として言いたいことはあるみたいなのだけれども、部分部分の整合性がないのではないでしょうか。局所的にころころ意見変わっているように思います。

ちょっとよければ書き直していただけませんか。

たとえば、「競技プログラミングが役に立つかどうかは企業が決めるべき」だと考えているんだったら、問い合わせなり資料を漁るなりしましょう。しかも、競技プログラミングAtCoderのことと置き換えてもいいとかいっているんだったら、AtCoder が役に立つかどうかを問い合わせましょう。

Googleはどっちかというと役立つ企業だと思ってますが……。」みたいな希望を書かれても知らんがなというしかないです。GoogleAtCoder が役に立つか問い合わせるなり、公開されている資料を探すなりすればよいでしょう。

その一方で、「AtCoder社として主張してそのまま通っているもの(注: IT就職における評価)もある」ということで、「AtCoder社が自発的に就職に役に立つと評価している」ことも書いていて、こんな短い文章で自己矛盾しちゃうのは読む方としては厳しいです。

そして、そもそも「Googleに入るのが偉い」という価値観を批判していたわけで、そういう価値観じゃないのだったら、Google 就職で役に立つかなんか、どうでもいいはずで、文章中でだらだらと一番長い章を立て語っているのは何がしたいのか不明です。役に立とうが立つまいがどうでもいい。そうなるでしょう。

 

また、私も、AtCoderGoogle 入社にまったく役に立たないと書いた記憶はなく、教える立場として「4問時代のABCのC問題とかが問題集としていいですよ」というのは生徒に対しても繰り返し言っているところです。この点、ちょくだいさんは、具体的にはどの程度まで役に立つとお考えでしょうか。「あくまで一部の要素でしかない」「勉強時間の2~3割は競技プログラミングに充てても良い」とありますが、具体的にはレーティングでいうといくらでしょうか。あるいは、どの問題を何問くらいでしょうか。

 

(ちょくだいさん向けの文章は、ここまでです。)

競技プログラミング

競技プログラミングの名前が何を指しているかという意味では、競技プログラミングの名前が付く前のプログラミングコンテストの時代で活躍された三廻部さんの以下の発言はとても示唆的だと思います。

「とっくの昔に終わっていたのではないでしょうか」っていうのはそうかもしれません。ただ、名前の付替えがどうとかそういうのはいいので、三廻部さんもお願いなので、「もしも、自分がクラスメイトなどだったら友達になってお茶をするだろうなと思う」ソフトウェアエンジニアになりたいという人を見つけて、授業なり模擬面接なりをしてあげてください。たぶん、私の言いたいことが伝わると思いますので。

Gokuri-Squeeze の川中さん(mayah さん)も同じ問題意識を持っていて、一緒に模擬面接をすることもありますけど、そういう問題意識があるんですよ。

mayah さんは、競技プログラミングのできる前の世界大会クラスのプログラミングコンテスト勢であるだけでなく、Google にもいた CEO かつ CTO で、エンジニアの教育にもボランティアで精を出していますので、ソフトウェアエンジニアになりたいならば今すぐフォローしましょう。

就職に役に立つ

なお、ちょくだいさんが、Google の人も競技プログラミングは就職に役に立つと主張している例として挙げられている下のツイートですが、私は ymatsux とは小学校3年生からの付き合いです。

これを受けて、Twitterで、現役Googleエンジニアかつ現役競技プログラマの方から、以下のような宣伝が行われていることも確認できます。

 このような事実を見ると、 競技プログラミングGoogle就職の役に立つ、というのも、そんなに間違っていない事実なのではないかと思います。(競技プログラミングの在り方 ~「競技プログラミングを我々が終わらせる」を受けて~ - chokudaiのブログ)

ymatsux も合宿のメンバーで、私は公開前にあの文章(2月の頭の時点の草稿)を見せておりました。しばらく話して、バックスラッシュが出力できないことがあることなどいくつかの例を出すと「よく見つけたなあ」などといってくれた一方、「情報系っぽい経歴がないと、レジュメのスクリーニングに通らない。しかし、競技プログラミングの成績があるとスクリーニングに通るようになる場合がある。これはとても重要な側面だが、お前は分かっていない。」という旨のことをいわれまして反省しました。そして、あの文章に書き足すのを忘れました。

状況

さて、たしかに、あの文章は思い込みがあると読めないものなので、いくつか明らかに断絶があるわけですが、これが分かると読みやすくなることを簡単に説明しましょう。

  • ゴールからかなり遠く、面接本番まで2週間しかなかったので、3人の面接官は本当に焦って、りりあんさんにリアルタイムアタックをさせることにしました。
  • コストパフォーマンスを最大にするために、手分けしながら渋谷の大きな本屋で本を探し、どの本の内容ならば常識的な内容を網羅していて、どこの章は読まなくていいかを議論しました。
  • そして、オアシスの見えない夜の砂漠のような場所を2週間走り続けてください、ぎりぎり間に合うかもしれないから、というようなひどいアドバイスをしました。

ということです。

というように、とにかく3人の面接官は慌てまくっており、あの文章では「りりあんさん」については「リアルタイムアタック」させるための「コストパフォーマンス」の話しかしていないのです。どうも人間関係資本と教養の話をしていると思う方がいるようなのですが、Google の面接に教養も人間関係資本もいりません。

具体的にイメージしやすいように伝えますと、難易度・分量的には、私は「大学受験の物理」くらいと思っていて、一緒に面接官をしている人はそれよりは多くて「大学受験の物理+化学」くらいといいます。センター試験の数学のタイムアタックだけをやりこんできた人に、「残念なお知らせがあります。2週間後に2次試験があって、科目は物理と化学の2科目だけです。聞いたことがない科目かと思いますが、4時間で自然科学の概論を教えるから、その後で知識を詰め込むために本屋行きましょうか。難しい問題はでないからなんとかなると思います。」と告知して間に合わせなくてはいけなくなった。というのが伝わる比喩でしょうか。(聞くところによると、速い人は、数学1Aは8分、2Bは17分前後で解けるらしいですよ。)

 

また、「Google 入社は、えらくもないし、すごくもないし、むずかしくもない」と我々は心から思い、言い続けています。というか「えらくもないし、すごくもないし、むずかしくもない」と思っているから、たとえば、教育制度を整えて国策として大量に人を輸出するべきだといっているんですよ。

私に対して、

とかいっているけれども、どう見ても「「Googleに入るのが偉い」という価値観」を持っているのは、ちょくだいさんのほうですよね。私には「お茶が飲めて偉い、すごい」くらいの違和感があります。

 たとえば、さっき見つけたこのツイート。

「化け物」だとか「注目が集まった」とかいうことですが、偉い、すごい、という価値観がないとでてこない説明です。

私は、このけんちょんさんのために仕方ないと思って記事を書いたのですよ。本当に面倒で書きたくなくて、他に書くものもあり、ツイッターで書こうかなと宣言して自分を鼓舞までしたのに、2ヶ月以上かかりました。

りりあんさんについては、私からすると「やりたいっていうなら手伝ってあげるけど、いくら難しくないからって、さすがに2週間前になってからなんとかなるかっていうの、最後にして欲しいんだけど。でも、2週間走りきったのよく頑張ったね。」というような感覚です。

 

たとえば、こちらの方は私の見え方に近いです。この人も合宿に一緒に行きましたね。

まじめにこれは言い訳しなくてはいけなくて、本当に申し訳ないです。教えるときに古巣の「会社のため」を毀損していないかは考えています。そして、実際に能力が偏っていると「本人のためにもならない」ことがあるのは確かです。

今回は、海外の模擬試験を自分で申し込むようなやる気で、2週間全力疾走をする伸び率が叩き出せるならば、それからも伸びるだろうから「会社の判断が取るならそれでいい」と判断しました。なのでオファーが出た後もなんか色々いいましたよ。

お知らせ

ここで残念なお知らせがあります。とある医学部教授から「読んだよー。文章はいいけど、お前が卒業生をひょいひょい適当にエンジニアにすると教授会で問題になることがあるから、するんだったら出来の悪いのにしてよね。いいね。ほんと頼むよ。特にそこにいる生徒会長みたいなのはだめだから。」ということなので、今後は、あらかじめ「出来が悪いかを問い合わせる」約束をしてきました。

列挙

ここからは、「コミュニティー」からの反応を見た範囲で列挙したものです。

chun さんに、このようなことをお伝えするのは本当にお耳汚しなのですが、散逸は意図的です。私の経験則で「誰にとっても新しい情報」のメッセージを広く伝えたいときには、「詳しい人は同意するが、そうでない人は違和感を感じる内容」を加えるんです。そうすると、人は、「新しい情報の真贋を、周囲の情報から判断しようとする」ので、一部の人に認知負荷がかけられます。こうすることで、根拠と結論が噛み合わない支離滅裂な発言も出てきて広まると認識しています。

この話の内容「かわいそうなことに、りりあんさんは、いかれた3人の模擬面接官が今まで何をやっていたんだと慌てふためいたことにより、2週間のリアルタイムアタックを宣告され、無理やりクリヤーさせられました。コスパがよかったですね。でも、こっちの胃までおかしくなるから真似しないでね。」で終わるのですが、これだけ書いてもぜんぜん広まらなさそうですよね。そこに、フィロソフィーと教育関係の問題意識の話を突っ込むとこうなります。

 我々の世代はこういう考えでしょうね。

 

Spaghetti Source を思い出して懐かしい気持ちになりました。

 

  

 

 

 普段、抑えているところを少しだけ外しました。

 

 ああ、そこは前もって閲覧してもらったときにも複数人がひっかかった箇所です。その前についている「それ以外で、」の部分に相当押し込んでいます。ただ、おそらく、主張が整理しきれていなくて、少しだけ整理し直すと

  • 戦前ならば、単純労働力として南米やカリフォルニアの農園にでも放り込めた。
  • 婚姻などの手段は変わらずあるが、仕事がいるならば、いまではなんらかのジョブ型の仕事をするスキルが必要。
  • だが、なにがスキルとなりうるのか。
  • 社内のスキルを使った社内トランスファー
  • スポーツ・芸術・音楽・料理などは国によってはスキルとなる。
  • 高等教育において徒弟的な教育を受け、理系スキルとしてのエンジニア(ソフトウェアに限らない)があるようだ。
  • 海外で徒弟的な教育を受けても良い。
  • ただ、MBA やローなどの職業訓練で海外の大学院に行っても、現地では働けないようだ。ただ、中国語などができると、そうでもないっぽい。

くらいの気持ちです。ここはコントロールに失敗しています。

元生徒その他

 

すまん、脱線はしないつもりだったが、とあるところが「死に至る病とは、絶望のことである」と構文が同じだったのでしばらく笑っていた。

  

Twitter で医師を拾ってきて Google のソフトウェアエンジニアにするだけの簡単なお仕事

はじめに

【転職エントリ】Googleに入社します|Lillian|note」という、医師から未経験で Google のソフトウェアエンジニアになった記事があります。

note.com

私は、この記事に出てくる「とある元 Google のソフトウェアエンジニア」で、面接の対策を立てました。

記事が出た当初から大反響で、私もそれなりの反応を見まして、いろいろと誤解されているなあ、と思う一方、アドバイザーはあくまでもアドバイザーだから、アドバイザーとして知りえた情報については、口をつぐむべきだと思っていました。

ただ、あまりにも誤解されており、悪影響が大きく、犠牲者も多くなってきたと思ったので、許可を得て簡単に背景を書いておこうかと思います。

これはあくまでもアドバイザー側からどう見えていたかを書いておくものですが、医学部卒だけでも3,4人 GoogleAmazon に入っていったおぼろげな記憶がありますので、他の人の話と混ざっていたらご容赦ください。

 

教えるに至った背景

動機はいろいろ複雑なところがあるのですが、以前から Google の面接対策をしておりました。はじめは履歴書の添削や教科書の紹介くらいだったのですが、授業もするようになり、ある時期から模擬面接をしてもいいことになったので、模擬面接をするようになりました。

もともと教えることは得意で、特に短時間で全体図や戦略を伝えるのが一番効果が出ていた気がします。学生時代、成績が悪くて志望校を変えろといわれたのでどうしたらいいか見てやって欲しいと言われた小学生が2人いたのですが、それぞれ開成中学桜蔭中学に入っていきました。偏差値40や50からでもなんとでもなりますね。ちなみに、筑駒だけは試験問題の内容が毎年ぶれすぎていてかなりが運です。教員がまともに生徒を取る気がないのでしょう。そして、運要素が大きいので偏差値が高くなります。

それはともかく、模擬面接をするようになってからは技術面接はほぼ通過する感じになりました。ほぼ、というのは、模擬面接はしたけれどもやっぱり受けない人や面接が終わったあとにチームが見つからなかったり辞退する人がいるため分母と分子がよく分からないのですが、面接自体は滅多に失敗しないという感覚です。

前年の2018年はインターンを含めて4人全員が技術面接は通り、2019年6月当時は、すでに2,3人見ていたが結果はまだ出ていない段階だったようです。

今年はもう1人くらい見てもいいかなと思っていたところ、ツイッターGoogle を受けると書いている人がいて、競技プログラミングサイトを運営している中高の後輩がなにか作用したので、偶然見つけました。アカウントを見ると DM が送れたので「Google 受けられるんですね。」と聞いてみたところ、6月の末に模擬面接をすることになりました。「日本から西海岸に人を輸出しようとしている」と説明しました。

Google の技術面接

Google の技術面接は、シリコンバレーのなかではそれほど難しい方ではありません。

西海岸の文化では、面接の場では仕事に関係のない能力を評価できません。このため、日本語能力は評価外です。英語能力は問われますが意思疎通が取れればよく、ここ自体が問題になることはあまりありません。仕事をする上では、どうせ英語能力は帰国子女(小学校から高校までの半分未満を英語圏で暮らしたくらい)でもまったく足りないですし働き始めると伸びます。

また、エンジニアについては、性格についての評価をあまりしないため、差別的でないかなどのポリティカル・コレクトネスを除けば、ほぼ純粋に技術的な能力だけを見ています。

そして、システマチックであるために、個人的には非常に評価をゲームしやすいと思っています(game する: manipulate (a situation), typically in a way that is unfair or unscrupulous. Oxford Languages)。正直な話、FAANG+M 内で比べてもとても対策しやすい印象です。

ポリティカル・コレクトネスについては、日本が儒教の影響下にあるため、西海岸文化でやってはいけないことがむしろ好まれていたりするので、かなり釘を差します。たとえば、長幼の序や男尊女卑などは外すのが難しく、禁忌なのでたまに事故が起きます。一番安全で簡単なルールは、相手が明確に出してきた情報以外を使って会話しないことだと思います。たとえば、目の前の人物がXXだと思っても、明確に相手が自分はXXだというまで、そうであるか分からない前提で会話をすることです。

ラッキーだったのは、リクルーターから声がかかっていたので、面接前の足切りであるレジュメスクリーニングで撥ねられることがなかったことです。東大の工学部や理学部は通るのですが、東大医学部卒は社員がリファーしてもとにかくスクリーニングに通りませんでした。

模擬面接当日

少し雨が降っていました。大きな黒板のある部屋を借りて、午後1時に集合しました。

その年からは、大学の同期で元 Google のエンジニアがもう一人講師役を務めるようになっていました。また、この日はもう一人腕の立つエンジニアが講師役で遊びに来ていて、全部で4人でした。

はじめに手続き的な流れをざっと説明してから、実際に問題を解いてもらいます。

模擬面接から受けた印象としては、このままでは通る見込みはなく、間違った方向に努力してきていて、かなり修正しなくてはいけないが、時間があまりにもないので間に合うか本当にぎりぎりというものでした。

せっかくですので、ここで本人の記述を見てみましょう。

 このタイミングで、とある元Googleのソフトウェアエンジニアの方から声をかけていただき、模擬面接をしていただけることになりました。後から思うとこの機会は私にとって本当に幸運でした。模擬面接では私がコードをすらすら書いてみせたので、ちょっと驚かれました。競技プログラミングで得られるようなアルゴリズムのコーディングスキルは、面接対策にはもう十分過ぎるほど練習済だと思うとの評価でした。

 その反面、情報科学の知識を前提としたディスカッションでは、私の知識量があまりに乏しいことに半ば呆れられました。模擬面接はその時点で終了して、一緒に近場の書店に行って、教科書を買うことになりました。ここで選んでいただいたオススメの教科書は本当に良書ばかりでCPUやOSの仕組み、ウェブの技術など、情報系の学部で学ぶと思われる情報科学の基礎をしっかりと勉強することができました。

実のところ、こちらからみると、コーディングを始めてから15分かからずに知識がほとんどないことに気がつきました。それを前提に、通る確率を最大化するような戦略を立てます。知識はあとから自習で補ってもらうとして、まず、どうやってコーディング中の応答で知識を使うかについて丁寧に説明します。質問をしたあとで、こういうことを知っていたとしたらどう答えますか、と聞き直すのです。

そして、驚いていたのはコードをプリンターのように上から書いていったことです。これは暗算のようなもので、まともなエディターのない環境や速度が本当に大事なときにやりますが、普通はやる理由がありません。ああ、競技プログラミングの価値観に浸かりすぎたなと思いました。

コードの読み書きができることが救いです。とはいえ、パースなどが絡むと迷うのは理論的バックグラウンドが弱いからでしょうか。さて、4時間で軌道修正します。

競技プログラミング

競技プログラミングは、東京大学競技プログラミング同好会2007年春台湾合宿から始まります。それまで、プログラミングコンテストは開催されてきましたが、競技プログラミングの名前が使われたのはこの合宿がはじめてで、このとき一つのジャンルが生み出されたのです。

合宿のメンバーは、プログラミングコンテストにおける世界と日本の差を感じており、世界で戦えるような後進を育てることにしました。そして、競技プログラミングが日本に広まっていくのです。

黎明期の競技プログラミングをしていた人たちは、Google に入る程度のことくらい造作ない人たちで、実際、その合宿のメンバーは12人中9人が Google で一時期働いていました。

私は情報科学を専攻しておらず、Google 本社から受けることを勧められてオファーレターをもらうまでは、国家一種経済職で官僚にでもなるつもりでエンジニアになる気がありませんでした。そして、大学院でふらふらしていたので多くの同期たちから3年遅れで入ったのですが、同期たちに通るとは思わなかったというと、「何言っているんだこいつは馬鹿か」という顔をされたあとに「いや、通らないわけないだろうけれども、まさかこういう仕事をする気になるとは思わなかった」といわれることが2,3度あってからは、なるほど馬鹿げたことを言っているんだという認識を持ちました。また、入ってみると日本(で教育を受けた程度の意味)のエンジニアの10%-20%は知り合いでした。

そして、自分も面接をするようになってから分かったのですが、たしかにこれは友達とお茶をする程度の難易度です。

大学に入ったばかりの頃、プログラミングコンテストで世界大会にも行くことになる先輩に次のように聞いたことがあります。「情報科学の自主ゼミをしている友人からソースコードと出力が同一になるプログラムが存在すると聞きましたがどのようなものなのでしょうか。」先輩は即答しました。「クワイン文ですね。クリーネの再帰定理から存在が導かれます。それくらいは常識です。たぶん、少し考えたら書けると思うので書いてみてください。」この人の専攻は理工系ではありません。
この先輩は他にもとてもいいことを言ってました。研究者ならば、どのような分野であれ、プログラミングコンテストの初級中級くらいの問題は20分位で解けるべきだが、それ以上やりすぎてはいけない。情報系を大学で専攻しないと決めた以上、圧倒的な知識の差ができるが、それでも彼らが常識としていることを常識としなくてはならない。
そういうものかと思っていたら私もまがりなりにもできるようになりました。たぶん、投入した時間は多く見積もっても半年くらいです。

このように、昔は、Google競技プログラミングは当初はとても近いところにあったのです。

今回模擬面接を受けられた方のように、競技プログラミングを熱心にして、Google に入りたいという人に会うことは多々あります。ただ、現在では昔のように造作ないとは行かないようです。

競技プログラミングは変質し、その悪影響は看過できない所まで来てしまったと思います。競技プログラミングを始めた人たちができていたことが、その少し下の世代ではみるみるできなくなっていったと思われます。少なくとも、競技プログラミングの関係者がここまで Google に通らないことはありませんでした。

というのも、競技プログラミングは面白くするために、いろいろなところが捨てられています。

面白くするためには、やはり勝ち負けはきれいな方がいいので、オーダーの正しいアルゴリズムを思いついて正しく実装できることを基準にしてあります。また、打ち込むのがあまりにも大変なアルゴリズムはでません。

一方で、プログラミング言語の選択は影響がないように作られています。このために、1000倍くらいの定数倍は無視します。

実際の現場では、計算量が遅いもののほうが速いことも多々あります。たとえば、場合によってはハッシュ値を計算している間に50くらい線形でなめられるでしょう。メモリーヒエラルキーを意識することも大切です。また、当然、プログラミング言語の選択だって、実際の現場では重要な技術的な決定の要素です。

クイックソートのようなライブラリーが提供するアルゴリズムについても詳細を聞かれません。たとえば、最悪計算量に近いときにスタックオーバーフローを起こすので、短い方から再帰して、長い方は末尾再帰最適化することなど、いくつかの常識があります。

もっと簡単なところでは、バックスラッシュを含む文字列をリテラルで書く方法は不要な知識になっているのか、かなり書けてもできない人をよく見ます。結構ホラーですよ。さらさらとコードを書くのに、どうやってその知識を避けて生きてきたんだと。

こういったものを無視することによって面白くなっているのが競技プログラミングなのです。

昔は、面白くないコンテストというのがたくさんあったのです。

たとえば、線形時間アルゴリズムの最適化のコンテストで、締め切り後にフロッピーディスク内のファイルで計算が行われることが発表され、フロッピーディスクから大きなファイルを読み込むため、非同期処理をして読込み中に計算をした人が2位にダブルスコアで勝つというコンテストがありました。騙された感じはあります。ただ、本当に勉強になりました。

その後、その当時はじめの競技プログラミングをしていた人々は、競技プログラミングの普及から足を洗っていきます。そして、競技プログラミングを広めるのがその下の世代になるにつれて、競技プログラミングは本来の意味を失い、カーゴ・カルト化してしまったのでしょう。

つまり、面白くするために作られたルールだと分かっている人たちがいなくなり、そのルールとそれによる序列が絶対的なものになってしまったということです。競技プログラミングがとてもできるのに落ちたというときに、おそらく起きていることは、バックスラッシュが出力できなかった、ということがたいていでしょう。面接官をすることに慣れている人ならば15分もすれば違和感を感じ始めるものです。まれにすりぬけるんですけどね。

感覚的なものですが、ルールの距離について、新聞記事の編集とクロスワードパズルの解答くらいの距離感と言っていた人がいました。少なくとも、将棋と詰将棋よりは遠い感覚があります。いわゆるフェアリー詰将棋でしょうか。この人も私が教えて未経験から Google でソフトウェアエンジニアをしています。

実際のところ、競技プログラミングは初期はコーディングの読み書きの能力を鍛えますが、かなり初めの方から出題者の気持ちを読む能力を重点的に鍛え始めます。

そして、いまではクリーネの再帰定理すら分からなくなってしまったのです。

今回、模擬面接を受けられた方は、ゲームをゲームと認識しないままやりすぎていたという印象でした。

ところで、ここまで書いてませんでしたが、今回の講師役のうち二人は、競技プログラミングがはじまった2007年春の台湾合宿に参加しておりました。

我々の目的の一つは、我々が始めてしまった競技プログラミングを我々が終わらせることです。

模擬面接

さて、模擬面接に戻りましょう。

面接では難しい問題はまず出ません。ただ知識の不足から知的な問題だったと感じるだけです。そしてたいていの場合、テンポが遅すぎます。よい面接は漫才のように進みます。

LeetCode とかに問題がさらされていますが、あれは、たいてい入り口で倒れているので、本体に到達していないんです。そういった足を踏み入れると深みがあるような問題が好まれます。

解答にひらめきがいるように思われていますが、だいたいの場合は、人類の100年近い情報科学の歴史の中で類題が解かれているので、それを思い出すだけで解ける話ばかりです。そのようにしなくてはいけない制限が随所にあって、それらは、いくらかは合意、いくらかは人類の技術的理由、いくらかはこの宇宙の数学的物理学的制限から来ているものです。

「何をどれくらい知っていなくてはいけないのか」と聞かれたので、ちょっと考えてから、右手を前に突き出しました。手を開いた状態で右手を伸ばしたあとに、「手を握ります」と宣言してからゆっくりと手を握ってみせました。「いま、手を握ろうと思ってから握るまでのあいだに起きたことをできるだけ詳細に説明してください。」
いままで鉄門を何人か教えてきたので、医師にはこれが一番通じると思ったのです。
前頭前野。運動野。頚椎。腕神経叢。ミオシン。アクチン。
「そうですね。H-H方程式やイオンチャンネル、骨や筋肉の名称の話をしてもいいでしょうし、答えが足りなかったら追加で聞いてきます。では、頚椎損傷で今の動きができなくなったとしたら、Cいくつの損傷を考えますか。医師でも結構忘れているので答えられなくてもいいのですが、この答えられなかったときに感じる答えられて当然という感覚を覚えていてください。その番号で人生が大きく変わった人はたくさんいますよね。」
「ヘモクロマトーシスの患者さん、いままでどれくらい見たことありますか。要するにプロというのは、数年に一度見るくらいのことは当然に知っているんです。いままで仕事で書いたダイクストラの数覚えてますか。」
同僚の8,9割が知っていることを8,9割知っていることがどの世界でも求められるのだと思います。

 採用面接は単なるコーディングスキルの試験ではなく、ディスカッションの中でのコミュニケーション(意思疎通)が非常に重要であることを強調されました。チームとして一緒に仕事をする仲間を見極めることが面接の目的であることを考えれば、実践的なコミュニケーションが重要視されるのは合理的だと思いました。

終わったあと、渋谷の本屋に寄り、徹底的に山を張ります。
面接官役3人で協議した結果、できるだけ量を減らして6冊が選ばれました。オペレーティングシステムの本は、どうするのがいいのか少し自信が持てませんでした。3人とも似たような本を読んでいたのがなかなか面白いです。

ただ、これはどの分野でも同じはずです。もっとコモディティー化している、たとえば、生理学の教科書にしても、多く数えてもせいぜい10冊くらいしか選択肢はなく、そのうちの何冊かは読んでおり、いくつかは比較のためにパラパラと見て、少なくとも友人が使ったので評判を知っているという状況になっているので、自然とこうなるのです。

「うーん、たしか、医学部医学科の教育って、これくらいの量の本を読んで、2週間位で試験をするのは普通なのでできますよね。」と聞いたところ「はい」と答えていらっしゃったのですが、あとから、内心、「間に合うのかこれは」と思っていたと聞きました。私の見積もりも間に合う確率50%くらいでした。

結局の所、知っていて当然な知識かどうかの判断をする際には、同僚のエンジニア同士が夕食時などに雑談をして、まあ、そこにいる8-9割方が知っていることならば、出題ミスではないよねとなり、それが常識とされるわけです。その量から比べたら、6冊の本ではあまりにも心もとない、しかし、4時間だけならば被弾せずに耐えきれる可能性があるだろうという読みでした。

そのあとで、面接官の1人は帰ったのですが、残りの3人でメキシコ料理を食べに行きました。

そして、勉強が終わったら応用情報技術者試験がちょうどいいと思います。応用情報技術者試験の勉強をするとクイズのようになるのでよくないですが、勉強した結果、応用情報程度の問題が明らかに感じるようになるとちょうどいいと思います、とお伝えしました。

東大理学部は、研究者による研究者養成なので、半分前後が博士課程まで進学し、そこの教育は仲間なり後継者なりの育成としてなされます。数学科の差しゼミとか顕著ですよね。教授が大学四年生を一対一で詰め続けると数学が分かるとは何かがようやく分かるようになるのです。それまでは、東大理学部数学科でもだいたい学年の半分しか分かっていないと京大の准教授がいっておりました。これでもとても高くて他の旧帝だと普通は1割と聞きますね。
そして、一廉の人物が自分の仲間になるかもしれないと思って教育をするとき、そこには莫大な常識が流れます。その常識を横から掠め取るだけでも相当なものです。医学部だって、そうでしょう。多くの教授たちは、自分が授業をしている相手がいつか、自分の部下となり同僚となり、自らが挫折したところを踏み越えていくと思って育ててたんじゃないんですかね。少なくとも、研修医が終わって医局に配属されたあたりからは、本気の教育がはじまりますよね。そして、その結果、医師同士の能力差は信じがたいほど大きい。
私は、時々、自分を育ててくれた人たちと、その人たちをどれくらい裏切ってきたかを思って、一人嗚咽することがありますよ。あなたもきっとそうでしょう。

動機

さて、このような模擬面接をしている動機についていくつか書いておきましょう。

まず、ある程度は遊びです。数時間の介入で見違えるようになり、人生が大きく変わるのですから。今回は、勉強の仕方を教わらなければ絶対に得られなかった内定だと本人にも思ってもらえているようです。ああ、まあ、分かっている人を教えることも多いんですがね。70%通るだろうという感じの人が95%通るだろうに変わるのはそれはそれで達成感があり楽しいものです。

次に、エンジニアは天然物しかいない、という信念を打破したい、と考えています。エンジニアは養殖できることを立証したいということです。
エンジニアの出身学科で一番多いのは東大理情なのですが、次が東大理物でした。理物では、情報科学教育はほとんど行われていません。ただ、出身者が多く、教育をしようがしまいが現れる、生まれつき、天性のもので、天然物しかいないという信念に繋がります。
あと学科ではありませんが多いのは京大マイコンクラブ(KMC)です。つまり、理情とKMCのようにそもそも天然物が集まる場所と、一切、教育がなされていない場所で、天然のエンジニアが発生するという考え方です。
さらに、現在は若いうちからやらないとよいエンジニアにならないという信仰もあるようです。ただ、大学教育は圧倒的なのでスタートの差が誤差になることが多いでしょう。
この信念を示す目的で行っています。

それから、中国やインドとの国力差です。Google では、およそ中華系インド系がそれぞれ全エンジニアの2割ずつを占めているというのがラフな計算です。一方で、日本の人(中学から大学までの教育の半分以上を日本で受けた程度の意味)はとても少なく、それより2桁小さいと思われます。人口が1桁少ないことを勘案しても、あまりにも少ないです。
いろいろな試算がなされたのですが、仮に日本で教育を受けた人全員がこの面接を受けても、通るのは日本で2000人くらいだろうと思われています。これはどちら方向にも3倍は間違っていないと思われます。

そして、特に Google では、ソフトウェアエンジニアを含むエンジニア職が、企画調査研究開発から設計製造流通までを握り込んでいます。しかも、日本でよくある本社が決めた内容を支社が実行する関係ではなく、全世界のエンジニアのチームがある意味で対等に近い関係である一方、エンジニアの部署とそれ以外の部署の間の情報隔壁は高いです。
実際にやっていることは、戦略を立て、データを解析し、マーケットを分析し、コードを書く仕事です。
そして、少人数で圧倒的なインパクトが出せます。インパクトといってもお金に限らず、人々にどれくらい影響を与えるかです。10兆円を売り上げる何かを触るとそれなりのものがでてきます。

現在、米国の成長を牽引している企業、たとえば FAANG+M の企業文化を知ることのできる人物があまりいないことはストレートに国益を害するでしょう。
端的に言えば、これが日本の情報科学教育の質です。特に研究者や大学教員でもあまり通らないのは問題です。

この人数を中国やインドに比する割合まであげなくてはいけません。

Google の特殊事情を差し置いても育成はエンジニアにせざるをえません。というのも、基本的に、日本人が海外で自発的に生活する手段というのはほぼないからです。たしかに他人の都合に依存して滞在する方法はあります。まず、「紐付き」で企業や官庁などがスポンサーをしてくれて海外にいるように命じている場合。次に、「結婚」で配偶者に養われている場合。芸術やスポーツなどのプロ。ほか、事実上の通訳。そういう現地の人とは異なる手段での滞在の方法はありますが、それ以外で、海外で生活している人は、大学等の研究者かエンジニアの二択です。(金融系や建築系でモデルを書くなどの広い意味で数学的工学的技能を使う人はエンジニアに含めておきます。)

私の知人では例外は、カリフォルニアで幼稚園の先生をしている人、それと、フランスでパンを焼いている人の二人です。

たしかに、アメリカなどで弁護士資格を取ってくる人いますが、ほぼ間違いなくアメリカでは働けていないはずです。日本の帰国子女程度の語学力では、弁護士資格を取ることはできても、向こうで働くことは困難なのです。まあ、いちおう、インターナショナルスクールで教育を受けてアメリカで大学とロースクールに行った知人で、アメリカで弁護士ができている知人が一人いますので、この人も例外に入れておきましょうか。ただ、中学から大学までの大半を英語で教育を受けており、さらに日本人の多い都市で働いているという留保をつけてです。

不思議なことに、日本語が第一言語でない場合は働けている人がそこそこいます。ただ、いずれにしても、日本語が第一言語の場合は、中学から大学までの半分以上を英語圏で教育を受けなければ、とても英語だけで仕事ができる能力にはならないでしょうが、エンジニアと研究者だけはなんとかなります。

つまり、日本の将来の競争力に対して、エンジニア教育はクリティカルに効くはずです。

そして、教育の格差を埋めることです。その原因のかなりが家庭と大学における教育の欠如と人間関係にあります。

まず、大学における教育の話です。

東大では、入学時から学問をするとは何かが見えている人はあまりいません。そもそも、入学当初の数学の授業についていけるのがそもそも10%程度で、基礎学力すらおぼつかない状況です。そして、そこに対して、仲間を育てる水準の教育をしようという人があまりいないため、教育を受けられる学生はそれほど多くないです。

筑駒の同期たちは、5%がアラサーのうちに准教授相当になり、1割が助教相当になりました。たしかに、学者になることを考えていそうなのにならなかった人がある程度はいますので、それぞれ学年の1割2割を占める法曹や医師がほぼ挫折していないことに比べれば難しく、運の要素もあるのだろうという感じはしますが、それでも、これはおそらく学者になることが中学受験に比べて簡単になってしまっていることを意味しています。

日本のアカデミアは多くの場所で競争がないということです。組織の大きなところ、たとえば医学部はそれでもまだ活気があります。
ただ、実際に、信頼できる友人たちは特に人文社会系の教員は3割くらいは会話が成立しないと嘆きます。
この原因はなんとなく分かります。数学科では学部のうちに教授と1対1で毎週詰めるという話をしましたが、人文社会系の多くの学科では、教員あたりの学生数が多く、それほど博士進学率が高くないために、そこまでのコストが払えません。このため、教育が大学院からはじまるのですが、指導教員にはっきりとつくために、運が悪いと教育をなされないまま、博士を取り教員になっていくことになります。

そして、懸念に拍車をかけるのが大学における人間関係が薄いことです。
囲碁や将棋には田舎初段という言葉があって、正規の訓練を受けた人からは相手にされるほど強くないが、素人になら無双できるレベルというのがあるんです。レベル5くらい、と私は時々表現します。人間関係が薄いとこれに簡単になります。

多くの能力について、初級のときに身につけるスキルとその後にずれがあります。たとえば、数学をするにしてもはじめは九九の暗唱をします。それが得意であれば、レベル5くらいまでにはなります。それをよしとするかあしとするかはともかく、大学受験までは芸大でもなければ、田舎初段で通ってしまうというのが日本の水準です。東大でも数学が得意だと名乗って証明と称するグロテスクな画像をネットにあげている人いますよね。受験数学は好きだったが数学者とカジュアルにお話をしない法学部文学部医学部あたりではよく見ますし、理学部でさえもたまにいますね。レベル5で周りから賢い人と思われるまでになったとしても、そのあとに国家試験などでふるい落としがある場合は、やり方を変える必要に気が付かないと苦しむんですが。

田舎初段になるのは、別に学問だけじゃないです。たとえば、事務でも同じことが起きます。新型コロナウイルス感染症が日本に来た頃に「マスクを医療従事者に」というクラウドファンディングを立ち上げまして、1.5億円集めて500以上の病院にマスクを寄付しました。トップページの文章はだいたい口述筆記してもらったもので、また輸入元と配布先の選定を主にやっていました。あの頃は英語や中国語が読めたら明らかにおかしいと分かるような書類や品物が飛び交っていて、かなり立場がある人や法人等でも漫然と事務をしていると偽造された書類をさっくり踏むんですよね。京都大学が苦しんでいたので身投げする気分で突っ込んだんですが、結果的には、関税局とのやり取りが面白かったので「緊急事態における手続き変更・解釈変更――マスク・手指消毒薬不足に対しての財務省の応答――」というペーパーを税法学者と書けて、自分の中では辻褄が合いました。が、それはともかく、日本の資料読解力に危機感を持ったのは確かです。専門職でジョブ型の雇用されていると事務や執行のあたりがまったく見えなくなる方は多く、その点、日本の雇用制度の定期人事異動システムはよくできていますね。

話を少し戻すと、Google の入社試験は、そういう意味では田舎初段では難しい、ただ、レベルが10あれば通る可能性がでてきて、レベルが30くらいあれば余裕というのが私の感覚です。これの恐ろしいところは、なにかの分野では一廉でも別分野では田舎初段に容易になるということです。

学者とかでも、他分野に友人が十分にいれば、そう踏み間違えないが、孤独ならばどんどんおかしなことを言い始めます。よく分かっていないことに対して一定数が陰謀論を取るのは進化論的に正しいことだと思っていて、たとえば、新しい食べ物が手に入ったら、群れの1,2割はホールドバックエクスペリメントに割り当てて、食べないようにしないと、運悪く遅効性の毒だったら群れが全滅するでしょう。でも一部が残っていれば、それがまた繁殖して増えればいいのです。だから親子兄弟ほど仲違いをし、保険がかかるようになっているのではないでしょうか。このために、人は思い込んだら説得が効かないようにできているのだと私は思ってます。

これを止められるのは、かなり簡単に狂うことを意識していることと分野を超えた人間関係があることが揃っている場合くらいでしょう。

たとえばですが、最近、ひやっとしたことがありました。とある大企業の創業者会長と散歩しながらビッグバン元素合成の話をしていました。散歩しながら自然科学の話をするのはだいたいコーディング面接と頭の使い方が同じです。そこで、陽子と中性子の存在比がおよそ7:1になる理由を口にしようとしたところで違和感を感じ、あとで京都大学の准教授に聞いたところ、宇宙の膨張率と反応率の兼ね合いで、現在の人類の理解では必然ではないことが分かりました。

こういうことがあるので、ビッグバン元素合成の話をするときには信頼できる人にちょっと見てもらうわけです。このブレーキが壊れると簡単におかしくなります。

ちなみに、ネットで有名になるためには、田舎初段であることはかなりプラスに働きます。専門性があるとある種のためらいがありますが、仲間がいないとそれがなくなります。そして、ためらいがないほうが、一般に知的に見えるんですよね。

普段から様々な分野の学者と話し合っていると、およそまともではない専門家の意見がネットで飛び交っているのがよく分かります。特に、ネット上で声の大きい医師や弁護士の意見は、医学者や法学者の集まりでは評判が悪いです。
別に学者ならば問題がない人たちであるわけではなく、ネットによく書き込んでいる大学教授がクイズの定期便扱いされていて、どう勘違いしたらこういい出しちゃうのかというクイズが解かれているのはよく見ますね。

要は、教育を受けた人たちでさえ、仲間とお茶をしていないのです。そしてそれを見抜くのはとても簡単です。

もう一つは、家庭の話です。

エンジニアの人数で男女差がないのが中国でほぼ半々ですが、日本は2%という感覚でした。
まあ、そもそも総数もとても少ないのですが、それはともかく、男女比が問題となりました。米国では、人種によるエンジニア比率も人口比と大きくずれ、エンジニアの女性率は2,3割です。

ある日、私は東大の二年生の方に話を聞きました。すると「Google が私達なんかに興味を持つのか」と聞くのです。私は意味がよく分かりませんでした。そして、しばらくして、なぜ進振りで情報系を女性は選ばないのか聞いたところ、いろいろな理由を挙がったあとに、最後に「理学部は大学院がほぼ必須なので」といわれました。
まさか戦後生まれで大学院に行くことが人生の選択肢にないことがあるとは思わなかったので、私は本当にショックでした。30を過ぎるまでこれにまったく気が付かなかった自分自身への怒りで、視界がおかしくなっていました。浅くなった呼吸を整えて、「この程度の情報科学を学び、計算とは何かについて考え、学問がもたらす景色を見ることができると思えないことは、尊厳の……尊厳の問題だと思います。」とだけいいました。

昔、母方の祖母のところに FAX が毎晩届いていました。祖母の同級生で、第二次世界大戦とその後のごたごたで高校に行けなかった人が、一念発起をして高校受験をすることにしたので、英語を見て欲しいといって、英作文を FAX で送りつけて祖母に採点してもらっていたのです。私も二三回英作文の微妙な表現などで祖母の相談にのりました。そして、干支が一周くらい下の人たちと高校を卒業し、その後大学を受験して大学も卒業していました。

少し落ち着いた後に、私は、そういった話をいくつか思い出し、なるほど、と気がつきました。これは、私にとって、être を直接触られる話なのです。そして、最後に、新約外典のペテロ行伝に、ペテロがローマに戻ろうとしているキリストの幻を見て、自らがローマに戻り十字架に架けられることを理解する話があったことを思い出しました。

小銭のために大学に行くのも悪いとは思いませんが、私は、人として生まれたからにはこの世界について知りたいと思うのは自然であると思うのです。

ただ、男女問わず、どうしても家庭の期待がエリートになることであると、家庭の考えるエリートになるために必要な修行をさせようとします。

冒頭の方で少し言及した中学受験のアドバイザーをして御三家に入れる話でも、はじめに手を入れるのは親子関係です。まずは、親を制圧します。親が抑えきれなければ、子供を精神的に切り離して影響を受けないようにします。
だいたいの場合は、親が不安を子供にぶつけているのが悪いのでそこを止めるために、どうしても親子関係に手を入れるのが必要になります。なおさら悪いのが、親が学問をしたことがない場合で子供が苦痛を感じていないと安心しない場合です。親が高学歴のエリートでも教育を受けていない場合は多く、そうなっていることがあります。
そして、わるくて無意味、よくてもレベル5のための訓練を延々と強制されるおぞましい環境が現れるのです。

このように、家庭内の人間関係と大学内の人間関係、そして教育が問題です。常識が何かを教えてくれる人がいるだけでいいのに、家庭内どころか大学内でさえもそれが見つけられないのです。

それから、私はね、教育というのは、いつか、この人は自分を踏み越えていくと思って教えなくてはいけないと思っています。同僚たちでもそうではない教え方をする人いますが、私はこんなしょうもない内容で下々の者を調教するという態度が取れるのはちょっと理解し難いですね。

いや、正直、Google はそういうのを排除しようとしていますが、それでも儒教的な価値観が言動の端々に見られることがありますからね。実感として、北米の人々も人種差別から抜けられない人がそこそこいますね。としても、少なくとも排除しようという努力をしているだけましでしょうかね。少し前に、Google で James Damore というエンジニアが、"Google's Ideological Echo Chamber" という文章を書いて首になってましたね。当時一緒に仕事をしていました。こういう内容について話すことはなかったのですが、きっとしていたら、私は教育がどれほど後天的に人を変えられるかについて話したでしょう。私の父母世代とそれから下の世代の親戚の女性は大半が理系です。そこまでは普通にそうなるものです。(参考までに Google 元幹部の応答を私が訳したものもつけておきます。: さて、グーグル社員の書いた例の文章(声明)についてだ。 - 白のカピバラの逆極限 S.144-3)

最後に、京都帝国大学の学生たちが南方で血を流したからですが、その話はまたいつか。いや、周辺のエピソードの部分だけしてしまいましょう。

昔、神学博士に会ったことがあります。数学から経済学まで話題も広く、圧倒的な視野だなと思っているとあとで祖父がこう説明をしてくれました。あの人は京都帝国大学の経済学部で学んでいて学徒動員に取られ、南方で多くの級友たちを失ったと。それで帰ってきてから、なぜ自らが生き残ったかに悩み、卒業後に神学の道を選んで、イェールで博士を取ったと。祖父は最後に余計なことを言いました。残念なことに神学も(leider auch Theologie)博士の疑問に答えたかは分からないと。

これもまた、第二次世界大戦の末期の話です。法学部の助教授が徴兵されて広島で被爆し、数日後に京都の私の祖母宅までたどり着きました。そして、そこで、歴史上類を見ないことが起きた、近代国家が近代国家の市民を明白に標的にしたと述べたというのです。私はそこに救いを見出していて、どれほど取り返しのつかない惨めな目に(im unwiederbringlichen Elend)遭おうとも、それを理解できるならば、そこに救済があると思うのです。

そして最後に。高校時代から語学に堪能な人がいました。8カ国語を操り、在学中に旧司法試験に合格し、大学教員をしていました。私はその人の授業を受けていたのですが、他大学の教員にその話をすると、あの人が本当に知的だったときのことを君は知らないだろうといわれました。ある日、ちょっとした事件があってそれ以来キレを一切失ったのだと。
ときどき、授業中にまったく関係のない話を突然する人で、ある時、授業を受けていると、とある経済史の論文を読んだ者がいるか尋ねました。たしか、明治時代の製糸業の M&Aミクロ経済学的に扱ったものでなかなか面白かったと答えると、どこで読んだのか、と聞くのです。ああ、先学期にその先生による学生二人だけの授業を受けていて、そこで取り上げられたので読みました、というと、君は本当に幸せだな、君は本当に幸せだな、といわれました。
また、ある時、先生は「ところで君は司法試験を受けるのかね。」と聞きました。いや、受ける気はないというと、「受けてみなさい。受かるから。」と言いました。その時の表情。ええ。そう言いたくなった気持ちを私は分かるように思います。
この話を法学者の友人にして、救われている(ist gerettet)のだと、私が主張すると、その学者は私をたしなめました。

最後に

この面接が、最も胃が痛かったですね。模擬面接が終わった後のフォローアップを最もしたのもこのときでした。

今回間に合ったのは、競技プログラミングをやり込んでいたのを止めたからです。本人の努力と真摯さはもちろんですが、見ず知らずの人に常識を叩きこもうとする私の狂気も貢献していました。そして、そもそも別分野で一度教育を受けたことがあったということも大きな要素です。あれは友達とお茶をする程度のものだからです。ただ、その友達は常識人でないといけないのですが。

たしかに、Google の面接も、情報技術全体からしたら一部しか切り取っていないものです。そうであるからこそ、容易に対策することができるのです。
とはいえ、技術的に最低限のことが分かっていることになるので、社内で明らかな間違いに基づく決定がほとんどないです。私が経験した明らかに不可解な結論が出た議論は、セキュリティに関すること、統計に関すること、法律に関すること、くらいで、そのときは説明しても理解してもらえずおかしな結論になったのですが、結局すべて1週間程度で修正されていました。
つまり、基礎的な土台としては十分であり、そこから社内の大量の独自フレームワークを見て、エンジニアリングとは事物や環境の構築を通じて価値を届けることだということを習い、同僚たちと雑談をし、すぐに大きなインパクトを社会に与えるのでしょう。

せっかくなので、本を紹介したときに何を話したかと、もう少し時間があったら紹介していたであろう本を追加しておきます。

どの分野であれ、ここからここまでは常識という範囲があり、特にある程度体系化された学問はそれがはっきりしています。たとえば、ACMIEEE-CS は Computing Curricula を出しているので、それを参考にするのでもいいですし、関係する学科のカリキュラムを参考にして、その授業でどのような書籍が参考に挙げられているかを見るのもいいでしょう。

情報科学は、「作ってみた」「現実はこう」「理論的制限」の本を読むとよいと思います。たとえば、交通ルールを考えてみましょう。標識の形が各国違うように、その標識の形自体はただの約束として作られたもので、さまざまな歴史的な経緯の集積の末にできあがったものです。ただ、まったく無作為に作られるものではなく、たとえば、左側通行と右側通行が同じ道で混在すると問題を起こすことであったり、見通しが悪ければ一旦停止が必要であることであったり、速すぎる速度でカーブに突入すれば曲がりきれないから速度制限がいることであったり、さまざまな数学的物理的技術的制限がかかってきて、それ自体も知る価値があります。そして、それらを分かっている人が無人島を借り切って箱庭で交通システムを作ってみることがあり、その記録を読むと、何が起きているかとてもよく分かります。作ってみた系は意外と現実についても最低限の言及がありますね。

CPUの創りかた
「作ってみた」系の本として、CPU やメモリーの構造が分かりますので、このレイヤーを俯瞰するのによいでしょう。

・32ビットコンピュータをやさしく語る はじめて読む486
古い本ですが、このあたりで現在のマルチタスク OS をサポートする CPU が完成しますので、アーキテクチャについて、知っているべきことについてだいたいカバーしていると思います。欠けているものがあるとすれば、高速化や仮想化のための技法くらいでしょうか。興味があれば「プロセッサを支える技術」あたりがそれを埋めるでしょう。

・マスタリング TCP/IP 入門編
3ウェイハンドシェイクと輻輳制御が書かれているとなると、ほとんど選択肢がありませんでした。逆に、Tier 1 network とかは知らなくていいんじゃないでしょうか。

・岩波講座 ソフトウェア科学 オペレーティングシステム
オペレーティングシステムについての本はこれでよかったかはまだ迷いがあります。

オペレーティングシステム―設計と理論およびMINIXによる実装
一緒にタネンバウムも紹介していました。

・Webを支える技術
REST にこだわりが強い本ですが、そこは軽く流すようにと伝えました。

・ふつうのコンパイラをつくろう
コンパイラの大まかな原理は聞かれることがあるかと思います。言語に特有のことは出てこないので、そこは別で補ってください。

・Modern Compiler Implementation in ML
高速化の技法の部分は過剰かもしれません。

・30日でできる! OS自作入門
この本はたしか本屋では名前が挙がっていました。OS を作ってみようという本なのですが、周辺の技術、たとえば、ハードディスクのフォーマットである FAT16 の仕様が載っているのがいいですね。

プログラミングコンテストチャレンジブック
アルゴリズムが苦手だったら入れていたでしょう。最近の模擬面接ではコードがおぼつかない感じだと思うと、なんでもいいんですが、AtCoder の ABC 4問時代の C 問題くらいを埋めることをおすすめしています。あと、コードは書けたら終わりではなくて、どの行をどう変えたらどうなるのか、どういう場合に動かなくなるのか、どう書いたらより洗練されるのか、を考えるといいと思います。

・Introduction To Functional Programming
C++ Templates: The Complete Guide
・Purely Functional Data Structures
この辺は私の趣味ですが、関数型言語はなにか触っておいたほうがいいと思いますし、C++ テンプレートはやらかしでチューリング完全なので一回目を合わせておくべきですし、純粋関数型データ構造は見ておいて、いいんじゃないでしょうか。

・エキスパートCプログラミング―知られざるCの深層
・Modern C++ Design
・Effective C++
・Exceptional C++
競技プログラミングの始祖のあたりの人たちは、C++ 使うならばこのあたり読んでいた気がします。最近の C++ はちょっと違うものですが、大切なのは、見慣れていて使役しているものが本性はおぞましいという感覚じゃないでしょうか。

言語は何でもいいと思うのです。たとえば、従妹にはじめてプログラミングを教えたときは C++ でしたが、妹には Perl + SQLite という構成で教えました。Perl は、たとえばレキシカルスコープとダイナミックスコープが両方あるなど、とても教育的にいい言語です。ただ、とにかく表層的にしか理解していない人や本であふれていて、社会的なノイズのせいできちんと理解するのが大変です。私は、大学の同期を問い詰めるまで、振る舞いが分かりませんでした。なお、その人も合宿のメンバーで Google の同僚になりました。

・入門 コンピュータ科学 ITを支える技術と理論の基礎知識
これは、最近見つけたんですが、広く書かれていて、とりあえず、これもいいんじゃないでしょうか。


必要な能力は「椅子に座れること」「四則演算ができること」「本が読めること」だと思います。

そしてできるだけ多くの人と話をしてください。


なにかあれば、Twitter の DM 開放してますのでどうぞ。

twitter.com

 

エリート二世

桜蔭、東大から弁護士資格を取って中央官庁で働いている友人がインタビューを受けていました。

そして、SNS にインタビューを受けた旨を書いて、記事へのリンク(https://blogos.com/article/164974/)を貼っておりました。以下の文章は、その SNS のコメント欄に投げ込まれたコメントです。

 

-----

 

これ、すごい「エリート二世」らしい文章だと思うのよね。

 

田中裕子さんは、日本のエリートと呼ばれるような人たちと同質のつもりだったようだが、もともと同質でなかった、というのが僕の読んだ感想。

 

沖縄で1年過ごして世界観が変わる話は、要するに、それまで田舎に行ったことがなかったってことだよね。観光で上っ面を舐める以外。

普通は家族や親戚がいて、それなりに田舎の生活というのを知っているんだ。

東大でも、半分は地方出身。東京出身でも、その親はおそらく高度経済成長期における集団就職などで出てきていて、当時、大学進学率は2割程度。都会に出てきていても多くは別にエリートではない。

 

なんで、日本のエリートと呼ばれるような人たちが経歴の自慢をするかといえば、それが本人の周囲から突出していると自分で思っているからだよ。例えば家族とかから。裕子さんは、これが分からないからそれが鼻につく。「なに東大入った程度で、エリート気取りなの?」「なぜ大学院行った程度で、エリート気取りなの?」「どうして弁護士になった程度で、エリート気取りなの?」

それが期待なのは仕方ないじゃないか。彼らには、子孫のための足場を中央に作るという人生をかけた大きな仕事があって、それが無事にできそうなのだから、それ以上余計なことをしてはいけない。

 

その上、親の世代は、多くが教育の仕方が分からなくて、多くは苦痛を与えることが教育だと思っているときている。

さらに、職業選択もかたよる。資格業を好むよね。中国の田舎の子供たちが小学校教師と郵便局員になりたがると聞いたことはないか。それくらいしか知っている職業がないんだ。

こうやって、大学をでてもまだ優等生でいらっしゃる方ができあがる。

 

でも、裕子さんにはその水準がしょうもないものに見える。

 

なんで、この水準が当然になる路線が既定路線だったのか。親でしょう。

もちろん、この路線は自分で選んだと思っているかもしれないけれども、反対を受けないという時点で刷り込まれてたのさ。

なぜ二世が親世代から「既定路線の刷り込み」がくるかといえば、そりゃもちろん、親世代は田舎の生活を知っているからで、親世代が比較して判断する能力があるからだね。親がエリート一世だから。

 

で、沖縄に行って、漁業をしてもいいと理解した割には漁業をしてなくて、中央省庁で官僚をしている。ようするに、沖縄の経験によって、下々の者の暮らしが、思い込んでいたようなひどいものではないと分かり、そして、その上で、成り上りの「日本のエリートと呼ばれるような人」と共にいることを耐えてでも、エリートとして生きることを選んだ、という話だね。

 

全体像までもう少しだ。成り上がりは、もともと下々の者から這い上がってきたという自負があるのだ。それが、「エリートと呼ばれるような人々」がどうして鼻につく連中かの理由だろう?

 

だから、これは半歩先んじた話じゃないんだ。一周先んじていた人が、ようやく相対的な半周遅れを理解した話なんだ。もう少しで一周遅れの「エリートと呼ばれる人々」も理解できるようになるよ。

困難を乗り越えて、中央の足場として死のうとしている。本当に立派じゃないか。

たまには、両足で踏んでいるものをみてよ。

組織犯罪規制法によりタバコ会社に下った命令

アメリカのタバコ会社4社が、タバコの健康への影響について広告を出さなくてはいけなくなった。6年間の裁判の末、4社は組織犯罪規制法に違反したと認められ、テレビ及び新聞で広告をすることを命じられていたのだが、その広告がとうとう出る

広告は5種類あるのだが、その内容がどれもなかなかに凄まじいので翻訳して紹介する。

タバコの健康への悪影響

連邦裁判所は、アルトリア、R.J.レイノルズ・タバコ、ロリラード、フィリップモリスUSAに対して、タバコの健康への影響について次のように広告することを命ずる

  • タバコは人を殺す。だいたい平均1200人、一日で。
  • タバコによる死者の数は多い。殺人、AIDS、自殺、薬物、自動車事故とアルコールによる死者を合わせたよりも。
  • タバコは、心臓病、肺気腫急性骨髄性白血病に加え、口腔、食道、喉頭、肺、胃、腎臓、膀胱、膵臓の癌を引き起こす。
  • それから、タバコは、生殖能力の低下、新生児の体重減少、子宮頸がんを引き起こす。

タバコとニコチンの中毒性

連邦裁判所は、アルトリア、R.J.レイノルズ・タバコ、ロリラード、フィリップモリスUSAに対して、タバコとニコチンの中毒性について次のように広告することを命ずる

  • タバコは、とても中毒性がある。ニコチンは、タバコに含まれる中毒性のある薬物だ。
  • タバコ会社は、わざとニコチンの量を調整して、タバコによってニコチン中毒になり中毒であり続けるようにしている。
  • やめらんないよ。
  • タバコを吸うと、ニコチンが脳みそを変える。だからやめるのはめちゃくちゃ大変。

低タール、ライト、ウルトラライト、マイルド、天然などのタバコが、健康に対して大差ないことについて

連邦裁判所は、アルトリア、R.J.レイノルズ・タバコ、ロリラード、フィリップモリスUSAに対して、ライトタバコが普通のタバコと同じくらい害があることについて次のように広告することを命ずる

  • かなりの喫煙者がタバコをやめずに低タールやライトタバコに切り替えているのは、低タールやライトタバコの方が害が少ないと思っているから。それ、勘違い。
  • 低タール、ライトタバコを吸っても、基本的に同じ量のタールとニコチンを吸うことになるんだ。
  • どんなタバコでも、癌、肺の疾患、心臓発作、早死を引き起こす。低タールでも、ライトでも、ウルトラライトでも、マイルドでも、天然でも。安全なタバコなんてない。

ニコチンの吸収が最大になるようなタバコの開発と合成

連邦裁判所は、アルトリア、R.J.レイノルズ・タバコ、ロリラード、フィリップモリスUSAに対して、ニコチンの暴露量を増やすようにタバコを設計してきたことについて次のように広告することを命ずる

  • アルトリア、R.J.レイノルズ・タバコ、ロリラード、フィリップモリスUSAは、わざと中毒になりやすいようなタバコを設計してきた。
  • タバコ会社は、いろいろな方法で、ニコチンをできるだけ摂取させて効かせるようにしてきた。たとえば、フィルターの形状だとか、ニコチンができるだけ摂取されるように巻紙を選んだりだとか、アンモニアを混ぜて味を柔らかくしたりだとか、物理的にも化学的にも配合をいじったりだとかしてきた。
  • タバコを吸うと、ニコチンが脳みそを変える。だからやめるのはめちゃくちゃ大変。

受動喫煙健康被害

連邦裁判所は、アルトリア、R.J.レイノルズ・タバコ、ロリラード、フィリップモリスUSAに対して、受動喫煙の健康への影響について次のように広告することを命ずる

  • 受動喫煙は、毎年38,000人以上のアメリカ人を殺している。
  • 受動喫煙によって、タバコを吸わない大人が、肺癌および冠状動脈性心疾患になる。
  • 副流煙にさらされた子供は、乳幼児突然死症候群、急性呼吸器感染症、耳疾患、重症喘息、肺機能の低下などになりやすくなる。
  • 副流煙は、どんなに微量でも安全にはならない。

裁判所による命令の原文: https://ecf.dcd.uscourts.gov/cgi-bin/show_public_doc?1999cv2496-6227

なお、タバコの危険性についての広告は、2017年11月26日日曜日よりアメリカ全土で行われる。テレビコマーシャルは、52週間に渡って週5回、平日(月曜から木曜)のゴールデンタイムに45秒枠で3大テレビネットワークに流れる。新聞広告は、43社以上の日曜版に全面広告を14週間で5回出すことになっている。スペイン語版も作り、ネットでも Flash または Javascript を用いた動画広告を出す必要がある。

もちろん、費用はすべてタバコ会社持ちである。

さすがアメリカ。やることがえげつない。

さて、グーグル社員の書いた例の文章(声明)についてだ。

Google の社員が、社内で「社員の多様性を重視するのはよくない、男女は生物学的に違う」という内容の文章を公開し、それが社外にリークされたために、世界中で問題となっている。また、その社員は2017/08/07の月曜日に解雇されたらしい。

ところで、ヨナタン・ザンガーは、素粒子理論物理学出身のグーグル元幹部(主席技術者)で、おりしも、例の文章が問題になる直前に辞めたので自由にいいたいことが書けると下の文章を公開して話題になっている。ヨナタンに連絡して、翻訳と公開の許可を求めたところ、快諾していただけたので翻訳した。なお、原文が書かれたのは2017/08/06の日曜日であり、解雇の前である。

翻訳: http://d.hatena.ne.jp/nuc/20170809/p2

原文: https://medium.com/@yonatanzunger/so-about-this-googlers-manifesto-1e3773ed1788

きっと、もうグーグル社員(偉いやつではない)が社内で公開した文書のことは聞いたと思う。女性と男性は本質的に違って、女性がエンジニアになれるようにする努力はやめるべきだ、だって努力に見合わないんだもの。そういう文章だ。

先週までなら、ぼくはこれについて表立って発言することはなかっただろう。(かなり偉いグーグル社員として、)内部でこれに対して対処しなきゃいけないことになっていただろうし、秘密保持の規則があるから外で大々的にコメントすることは難しかっただろうね。

まあ、でも、たまたま、(さすがに、こんな形で発表することになるとは思っていなかったんだけど、)実をいうと、最近グーグル辞めたんだ、あ、別に上の話は全く関係ないし、どっちかというと、めっちゃいいことがあって辞めたんだ。詳しく知りたかったらここで読めるけどね。そんなわけで、これが起きたあと、ぼくはもうみんなと同じように部外者になってしまって、単にギズモードにリークされてたからこんな文章を書いたやつがいたっていうのを知ったっていうわけなんだ。

それに、ぼくはもう部外者で、これについて知っている機密情報は何も持ってないから、もしも社内にいたら社内で公開しただろう文章をここで書こうと思う。これはグーグルだけの問題じゃなくて、技術畑にいるすべての人間に関係があることだからね。

さて、だれかさんが、内部文章でジェンダーとぼくたちの「イデオロギーのエコーチェンバー(観念形態の残響室)*1」について書いたほうがいいと思ったらしい。だから、ぼくはここでいくつかはっきりさせないといけないことがあると思う。

(1) とても権威的に書いてるけど、この著者はジェンダーについて何も知らないようだね。
(2) もっと面白いかもしれないことに、この著者はエンジニアリングというのを分かってなさそうだ。
(3) そして、もっとも真面目な話として、この著者は、これを書いたら何が起きるか、彼自身や周りに何が起きるか、見えていなかったようだ。

1.

あんまり(1)について時間をかける気はない。もしも、だれかが、この文章のジェンダーに関するひとつひとつの意見が、どれくらい盛大に間違っていて*2、ここ何十年もなされてきた研究に対して真っ向勝負を挑んでいることかについて、つぶさに挙げたいというならまかせるよ。ぼくは生物学者でも心理学者でも社会学者でもないから、他の人に譲るね。

2.

ぼくはエンジニアだから、この仕事がどういうものかについてのこんな基本的なことについて何も分かってないのにここまでやってこれたっていうことに正直びっくりしたね。あの文章には、「ペア・プログラミングや協力を増やすことで、もっと人間指向の人向けの方法でソフトウェアを作ろう」とかあるんだけど、それは「人間指向の人向けの役割とグーグルはどうなれるか」っていう根本的な限定がついているし、なにがもっと驚いたって、「共感を重視しないこと」という題の章があって、解決策としてこれを提案しちゃってるんだ。

エンジニアリングをしたことがない人、あるいは、基本的なことしかしたことがない人は、こういうふうに思っているかもしれない。エンジニアリングというものは、コンピュータの前で座って、内部のループをめちゃくちゃ最適化したり、クラスの API をきれいにすることだ、と。たしかにね、みんなそういうことはするし、(ぼくもだけど)だいたいみんなそういうことするの物凄い好きだよね。それに、エンジニアリングの初心者のあいだにする仕事のほとんどはこういう感じだ。正しいか間違っているかはっきりしていて、淡々とあるところまでこなせばよくて、基本的な技術を磨ける。

でもね、グーグルの職務階級があるところから、等級の番号から言葉になるのは偶然じゃない。そこがちょうどある意味で一番初めの訓練期間が終了するところなんだ。誰かにじっくり見てもらわなくても一人で仕事ができるようになる。そこからようやく、本当のエンジニアリングがはじまるんだ。

エンジニアリングっていうのは、装置を作る技のことじゃない。問題を解決する技のことだ。装置は手段でしかない。目的じゃないんだ。問題を解決するっていうのは、まず、問題を理解することである。そして、ぼくたちがしていることのまさに目的が、外の世界の問題を解決することである以上、人々を理解すること、そして、つくったシステムと人々がどうやって関わっていくかを理解することが、システムを作るひとつひとつの過程において本質的だ、ということなんだ。(これは本当に大事で、だからいろいろな職務階級がある。PM の階級、UX の階級、とかいう、ある種の問題に特化したやつだね。でもね、スペシャリストがいるからといって、エンジニアはそれから関係がないってわけじゃない。真逆だ。エンジニアリングのリーダーは作るもののことを深く知らなきゃいけないに決まっている。それこそが仕事において最も大事なことだ。)

そして、一度作るシステムを理解して、なにが作られるべきかきちんと決まったら、引きこもってコードを書き始めるとでもいうのかい? まあ、趣味でやってんならそうだね。でも、プロ、それも「地球規模」とか「通信事業者クラス」とかいう言葉が少しも大げさじゃないようなシステムの仕事をしていたら、連携して協力することこそが仕事のほとんどだとすぐに気がつくはずだ。二十のばらばらのシステムじゃなくて、ちゃんと一つのシステムを作っているかどうかをはっきりさせることだ。依存関係やリスクがきちんと管理されているかはっきりさせることだ。将来の変更や発展が容易になるように、どこまでが一つの部品かを正しく設計することだ。あらかじめいろいろな種類の危険を、SRE(サイトの信頼性)、セキュリティ、プライバシー、不正使用といった各種の専門家チームとともに、プロジェクトが瓦礫の山となる前に押さえ込むことだ。

本質的に、エンジニアリングというのは、きみの同僚やお客さんと、協力して、協調して、共感することがすべてだ。もしも、だれかが、きみに、エンジニアリングというのは人々や感情の相手をせずに済む分野だ、といったならば、残念ながらきみは騙されているといわなければならない。一人でできる仕事は、かなり初心者のときにしかない。それも、だいたいは上司だろうけど、だれか上級者が、長い時間をかけてチームの中に、コードを書くのに集中できる組織構造を作ってくれたからだ。

例の文章の中で、「女性」の特徴として挙げられていたどれもが、エンジニアリングにおいて成功するために一番大事な特徴だということが分かるだろう。だれでもコードを書くくらいできる。そりゃ、L7 階級くらいまで昇進するまでに、技術を基本的に完全に習得していることくらいは求められている。でも、この仕事で本当に難しいのは、そもそもどういうコードを書くのか、どの目的をどの順番で達成するかのはっきりとした計画を練ること、そして、実際にそうなるのに必要な合意を得ることだ。

ここまでの話はぜんぶ、例の文章の結論が全部逆さまな理由になっている。女性の方が、社会環境の影響で、人々の感情的な欲求に気づくのが得意なのはそうだね。でも、これは、いいエンジニアになる理由であって、逆じゃない。ぼくは、はじめはこういうことができなかった。何年も何年もかけて、へとへとになりながら、学びつづけなくてはいけなかったことだ。(あと、付け加えておけば、ぼくはめちゃくちゃ内向的だ。20年前に、毎日複雑な人間関係の問題に取り組むのに向いているか聞かれたら、気でも狂ったかと聞き返しただろうね。)でも、これが、この仕事でいちばん重要なところだから学んだんだ。これが、いちばん途方もない挑戦や実りある結果を生むところだと分かったから学んだんだ。

3.

ってことはだ。(3)が一番深刻なところだということだ。いつも以上に無遠慮にいうよ。ほら、いま人事部の決めた迷路みたいな規則から自由でさ、いつもだったらものすごい機密指定がかかっている場所でしかいえないことを自由にいえるんだ。それと、ここの部分は、特に例の文章の著者に向けたものだ。

きみがしたことは、信じられないくらい馬鹿で有害だ。きみは、きみの同僚のかなりの部分が根本的にこの仕事に向いていない、政治的な理由でこの仕事をさせてもらっているだけだ、と主張する文章を会社の中で公開した。しかも、それを考えたり、内輪で言ってみるだけではなくて、企業全体でそれを正統化しようとする方法で表にした。だから、他の人たちは立ち上がって「おい、待てよ、それでいいのか?」と言う羽目になった。

ぼくはこのことはとてもはっきりさせておかないといけない。きみが書いたことがほとんど間違っているというだけじゃない。きみがしたことは、その会社にいる人々にひどい被害を与えた。そして、その会社の機能全体を無茶苦茶にした。そして、そうなることに気がつくことも、きみの仕事の一部だ。実際、それは他の仕事であってもまさにそうだろう。ぼくはもうその会社にはいさえしないというのに、ここ一日の半分は、いろいろな人と話して、きみが引き起こした無茶苦茶を掃除しなきゃならなかった。評判に与えた被害はいうまでもないけど、どれだけの時間と感情を動かす努力がこれにつぎ込まれたか、ぼくには想像もつかない。

そして、これのきみへの影響だ。ぼくがきみと一緒に働くように誰かを配属するとき、良心が痛むことをきみは分かってくれただろうか。女性を配属して、この状況に対処させるようなことはとてもじゃないけどできない。きみと働かなきゃいけなくなったけっこうな人は、きみの顔面に向けて殴り掛かるだろう。たとえ、似たような考えの人たちを集めてチームを作れたとしても、そのチームと協調してくれる人なんていないだろう。きみは教科書にあるような敵意に満ちた仕事環境っていうのを作り出したんだ。

もしも、例の文章を書いてなかったとしたら、もしかしたら、きみが順風満帆の経歴を歩むためにはどういうことができなきゃいけないか、きみとぼくは話し合ったかもしれない。それこそがまさにきみが「女性の技能」と類型化したことだ。でも、いまとなってはまったく違う話をしなくちゃならない。きみがどんなにコードを書くのが上手だとしても、そんなことができるひとは掃いて捨てるほどいる。きみの行動によって、きみが同僚たちに与えた悪い影響は、そんなことよりも遥かに重大だ。

考えを議論することの重要性について書いてたね。「ぼくたちは Go 言語を主に使うべきだ、とぼくは思うんだ。」と「ぼくの同僚の1/3は、生物学的にこの仕事が向いてないか、そうじゃなかったとしても、向いているとおのおのすべての人が心から納得するまでは、向いてないとして扱うべきだ、とぼくは思うんだ。」の違いを学ばなきゃならない。すべての考えは同じじゃない。ある種の考えについての会話は、最低限の正統性すらない。

もしも、このことで疎外されたと感じるなら、もしも、きみの物の見方が技術畑で基本的に歓迎されないもので口に出せないようなことだと感じるなら、まあ、その通りとしかいいようがないね。この見方は、発症した組織を根源的に腐らせ、人々を追い出すものだ。こういう見方をする人を受け入れて、こういう見方に特化していないような組織はぼくにはちょっと思いつかない。もうしわけないけど、長い将来に渡って、これはきみにとって深刻な問題として残るだろう。でも、ぼくたちの会社は、すべての人にとっていい環境を提供しようと全力を尽くしている。もしも、だれかがそれを妨害していることが分かったなら、解決策はかなりはっきりしているね。*3

ここにこんなことを書いたのは、ぼくがもうあの会社に所属していないから、どんなことでもおおっぴらに言えるからなんだ。でも、これは、絶対にはっきりさせておきたい。もしも、きみがぼくの指揮系統に入っていたら、(3)のすべての内容は「これは容認できない」という一文に書き換えられる。もしかしたら、一つ上の段落の中身はつけるかもしれないけどね。(3)の内容は、きみ、きみの上司、人事部と法務部のだれかが出席する会議で聞かされることになる。建物から警備員によって連れ出され、私物は後ほど郵送すると告げられるだろう。あと、それから、きみは、これは「自由な公開討論の名のもとになされている」と思っていて、上に書いたような重大な結果にはなにひとつ気がついていない。このことは、なおわるいことだ。せめてましなことじゃない。

*1:訳者注: 残響室は、外の音が入ってこなくて、中の音が漏れずに延々と反射し続けるように作られた、音響実験や録音をするための部屋のこと。外側のイデオロギーが遮断されていて、内側ではイデオロギーが延々と聞こえ続ける様子をエコーチェンバーに喩えて、単一イデオロギーに染まりきった場所、という意味。

*2:だいたいだけど、すべてではない。例の文章の中にあるとても大事な本当のことは、男性の性的役割はとても柔軟性にかけ、これは特徴ではなく、バグだということだ。実をいうと、これこそが、この文章にあるその他すべてのことを書かせた核心部のバグなんじゃないかとすら疑っている。でも、例の文章の残りの部分は、基本的に、このバグがあることを最適にするにはどうしたらいいかについてだ。バグを最適化しちゃ駄目。直しましょう。

*3:「寛容のパラドックス」について考える読者は、詳しくはこのエッセイを読むといい。

背景

Google の社員が、社内で「社員の多様性を重視するのはよくない、男女は生物学的に違う」という内容の文章を公開し、それが社外にリークされたために、世界中で問題となっている。また、その社員は2017/08/07の月曜日に解雇されたらしい。

ところで、ヨナタン・ザンガーは、素粒子理論物理学出身のグーグル元幹部(主席技術者)で、おりしも、例の文章が問題になる直前に辞めたので自由にいいたいことが書けると下の文章を公開して話題になっている。ヨナタンに連絡して、翻訳と公開の許可を求めたところ、快諾していただけたので翻訳した。なお、原文が書かれたのは2017/08/06の日曜日であり、解雇の前である。

翻訳: http://d.hatena.ne.jp/nuc/20170809/p2

原文: https://medium.com/@yonatanzunger/so-about-this-googlers-manifesto-1e3773ed1788