bonotakeの日記

元・ソフトウェア工学系研究者、今・AI系エンジニア

Facebookのバグ自動修正ツール "SapFix" とは何ぞや?

前回の記事↓で国内ソフトウェア工学事情を勢いに任せて書いたら思いのほか炎じょ……バズってしまい、しかも身内のソフトウェア工学の先生方に火をつけまくってしまいまして、いやはや。関係者の皆様すみませんでした*1
フォローの記事も書こうと思ってたんですが、少々タイミングを逸してしまった感。でも少し誤解を与えたところもあるんで、また時間ができれば書こうかと思います。 bonotake.hatenablog.com

しかし、それから一週間くらい経ちまして、今度はソフトウェア工学に関わる人間としてはなかなか嬉しいニュースが。
それで、つい以下のようなツイートをしたところ、これも軽く話題になってるようで、今もまだ通知が止まらない感じです。

バグの自動修正(automatic repair)はここ数年ソフトウェア工学の国際会議ではかなり盛り上がってる研究トピックです。
これをFacebookがツール化した、というので、やはりこの分野の人間としては大変気になるところ。話題としてもキャッチーですしね。
しかも、この開発リーダーを務めたMark HarmanのFacebookへの投稿を読むと、

I am really delighted and also very proud that we are, today, announcing the first industrial-strength scaled-up automated program repair, now in continuous integration and deployment at Facebook.

とあって、社内の開発フローにさっそく組み込まれた模様。
ちなみにこの Mark Harman、ソフトウェア工学の世界ではプログラム解析の大御所として著名な研究者で、UCL(ロンドン大学)の教授でありながら、最近はFacebookの Engineering Manager (エンジニアの統括マネージャー?)を務めています。

research.fb.com

こういったあたり、海外のソフトウェア工学分野は産学が上手く結びついてるんだなぁ、というのを感じさせますねぇ。

で、そのMark Harmanが陣頭指揮を取って開発した自動バグ修正ツール "SapFix" なんですが、Facebookのブログに簡単な解説記事があります。
code.fb.com

ということで、この記事では残り、このブログ記事を元に、SapFix がどんなツールなのかを簡単に解説していきます。
ちなみにざっと読んだところ、実はそんなに凄いことはしていません。

Androidアプリを対象に、まず自動テストツール "Sapienz"を使って自動テストをかけます。なおこのSapienzも、search-based testing という、最近研究が盛んな技術を元にMark Harmanの研究室で開発された自動テストツールなんですが詳細は省略。ご興味ある方は(+論文読める方は)以下の論文をば。

で、このテストでクラッシュが観測されるとSapFixが稼働するわけですが、その内容とは

  1. 過去の修正から人手で作った修正パッチのテンプレートを、そのまま持ってくるか、あるいはそれがハマらなければミューテーションを使ってテンプレートを変形してパッチを作成。
  2. 上で出来上がったパッチを元に、さらに複数のパッチを生成。
  3. 生成したパッチがコンパイルを通るようなら、さらに開発者が人手で書いたテストとSapienzで生成したテストを流して、このパッチでもうクラッシュが起こらないか+別のクラッシュが発生しないかチェック。
  4. チェックを通ったパッチは人間がレビューして、良さそうならそのパッチを適用。

なお1. で使われてるミューテーションっていうのは、文法に従ってプログラムを適当に('+' を '-' にしたり、変数名を入れ替えたり)書き換える……というもので、元々はわざとバグを埋め込んでテストがそれを見つけられるかを診る、テストを評価するために生まれた技術なんですが、早い話、要はデタラメに書き換えてるだけです。

いかがでしょう。ぶっちゃけ全然凄いことしてません*2。むしろ「えっ、これでホントにバグ直るの??」ってレベルです。

ただ、個人的には結構感心しました。まぁこれが実用上使いものになるかどうかはこれからの評価を待たないといけなさそうですが、これで本当に使えるんならすごいなと。
automatic repair には例えばプログラムの意味まで踏み込んで理解し、バグの内容をちゃんと解析した上で然るべき修正パッチを生成する、なんて手法も研究されてます。で、第一線の研究者が開発に携わってるんで、そういうアプローチも知らない訳はないと思うんです。
でもそういうの敢えて使わずに、簡単な解析だけど軽くて実用のソースコードのサイズに耐えうる技術を使ってるんじゃないですかね、これ。 そういう、研究者の独りよがりでない「現場で使えればいいじゃん」っていう割り切りが凄いなと。

あとはこう言ったら言葉が悪いですが、こんな簡単な解析+自動修正を「数撃ちゃ当たる」的にやっても効果が出ちゃうほど、現場ではしょうもないバグが頻発してるってことなんだと思います。
これも勝手な推測なんですけど、FacebookみたいなDevOpsベースの企業では超短期開発でひたすらアップデートをかけ続けてるはずで、開発+リリース前テストに手間隙かけるよりは、実装はなるたけ簡素に済ませて、CI使って物量でバグを短期間に潰す、ってスタイルを採ってるのかな、と想像します。それならこの手法でも十分効果あるんではないかと。

ということで、最新鋭の技術とかを駆使してるわけでもなければ、理論的に凄い技術も使ってない、でも自らの開発現場に見合った、実用上もっとも効果がある技術を採用しているってことなのかな、と思った次第。
それでも実際の開発フローに組み込めるまで持っていくあたり、相当な作り込みをしてるんじゃないかな、とは想像しますが。これで本当に効果あったらすごいですね。

先のブログ記事によると、もうちょい手を入れた後でこのSapFix(と、テストツールSapienz)はオープンソースにする予定だそうで、ぜひ、中身を覗いてみたいです。

p.s. ……と、この記事をちょうど今書き終わろうかってところで、当の Mark Harman からFBで友達申請が来ましたw びっくりしたー。ツイート見られちゃいましたかね。

追記) 一晩明けてちょい読み返して思ったんですが……全体的にものすごく簡単な技術で構成してるのは事実だと思うんですが、絶対どこか一工夫は入れてると思います。特に怪しいのはパッチを複数作成するところ。脚注には元々書いてますけど。
ここは多分論文書いてどこかに投稿中なんで、まだ明かせないんだと思います。もしその論文が入手できたら補足記事を書きます。

*1:悪びれずに書くと、それなりの問題提起はできたんじゃないかと思ってます。ただあまり本質的でない、余計なところでご迷惑をかけた方面がいくつかあったようで、その点は大変申し訳なかったのでした。

*2:ただ、2. の手順でどう複数のパッチを生成してるか、元のブログには書いてません。おそらくここらへんがこのツールのミソで、詳しくは論文になるまでわからないかも。

最近のソフトウェア工学に思うこと

なんかこのブログに記事書くの、ほんと久々だなと思うんですが。
最近ずっと思ってたことがあったので、つい勢いで書きなぐってしまいました。若干炎上商法かもしれませんが、まぁたまには?いいや。
長文ですがお付き合いください。特に、ソフトウェア工学の研究している皆さん。


昨日、とあるソフトウェア工学のシンポジウムにて、機械学習モデルをWebサービスにデプロイするためのハンズオン、という企画がありました。
僕が運営委員やってるMLSEとの共同企画で、僕は発案者の1人ですが、当日は1人の参加者として中に混じっていました。

4人グループに分かれての作業だったんですけども、僕以外の3人は、いずれもソフトウェア工学の研究をしている修士の学生さんでした。

で、ハンズオンも後半になって「Dockerの使い方」の演習になったのですが、その3人ともDockerに触ったことがなさそうな雰囲気でした。いちいち確認したわけではないので勘違いだったら申し訳ないのですが、少なくとも僕の隣に座った学生さんはインストールで四苦八苦していました。

ただ正味な話、いまソフトウェア開発やっててDockerを全然使わないって、想像しづらいなぁ、とか思います。

いや、いうて僕も前職では業務では使ったことはなかったですし、所詮は単なるツールなんで、使い方を知らなければ覚えればいいだけで、それ自体は問題でも何でもないんです。

ただ、Dockerを知らない・わからないとなると、まず今流行のKubernetesなんて知らないだろうし、何するものかも理解できないですよね。 というかそもそも、「コンテナ」って概念もわからないと思うんです。

そういや(少なくとも日本語の)ソフトウェア工学の論文で「コンテナ」なんて単語、見たことないんですよね。
それどころか、「運用」「デプロイ」といった単語すら、みかけることは稀です。
そもそも運用やデプロイを主題として扱った論文なんて、国内のソフトウェア工学の論文ではたぶん1本もないです。僕の知る限り。

一方、それこそKubernetesの勉強会が都内で開催されたら、結構な数のエンジニアが集まるはずです。「これが俺の考えたさいきょうのデプロイ環境だ」的な話をする発表者もたくさん現れるのではないですかね。

何が言いたいかというと、今の(少なくとも日本の)ソフトウェア工学って、今のソフトウェア開発現場と相当乖離しているように思うんです。最近のソフトウェア開発現場で採用されてる開発形態・開発プロセスを全く想定していないし、だから実務家が持ってる課題意識を、今のソフトウェア工学の研究者は全く把握できてないし、把握しようともしてない感がすごくあります。

ぶっちゃけますが、特に今年になって、ソフトウェア工学関連の学会やイベントの参加者数、論文投稿数が激減してます。特に企業勢の参加が相当減ってるイメージです。

そんでもって、今参加している学会で発表されてる論文、ざっと眺めましたが、申し訳ないけどレベル低いなーと思います。基本的に小粒な研究ばかりだし、発展すれば実務でそのうち役に立ちそう、と思わせる論文がほとんどありません。アカデミックな観点から、新しい領域にチャレンジするようなheavyweightな論文もありません。どこを目指して研究しているのか、さっぱりわからない論文も多々あります。

まぁ、国内学会というか日本語論文のレベルが下がっているのはソフトウェア工学分野に限らなくて、最近はみんな、研究で良い成果が出たらすぐ国際会議にチャレンジする傾向にあるので、それもむべなるかな、というところもあるのですが。
ただソフトウェア工学の場合、日本人がトップカンファレンスで論文採択されることも非常に稀なんですよね。ICSEに日本人の論文が採択されることって、数年に1本あるかないかとか、そんなレベルです。 まぁ要するに、国内のレベルが低いんです。

そういうのもあって、学会への参加者が顕著に減ってるように思います。一方、IT勉強会はどこも大盛況です。
アカデミアの人はもしかすると「エンジニアの参加する勉強会と研究者の集う学会では扱う内容の質が違う」と思ってる人も多いかもしれませんが。
実際のところ、トップカンファレンスで発表された論文の輪講会をやる勉強会とかたくさんありますし、そうじゃなくても、「〇〇で発表された論文を参考に、自分達でこういう工夫をしてみました」なんて発表もしょっちゅう聞きます。ガチガチに最新の論文サーベイして、それに基づいてる発表なんかもあって、結構学術的にもレベル高いですよ。
そもそも、そういう場で発表する人、最近はPhD持ってる人も多いですしね。

要するに今のソフトウェア工学の研究会って、日本のそこかしこで開催されてるIT勉強会に客食われてるんじゃないかと思います。実際、企業人だとそっちの方が面白いしためになるし、と言う気がします。

研究者の全てが開発現場での流行を追う必要はないとも思いますが、誰も追わないってのもソフトウェア工学という学問の特性上まずいと思いますし、追わないなら追わないなりに、基礎研究としてレベルの高いものを見せてほしいんですが、そういうのも(国内では)ありません。

これは僕だけが抱いている「危機感」ではなくて、同じような話を複数のソフトウェア工学に携わる企業人から聞いてます。昨日も、終了後にある人と話してて、「このまま行くと、日本のソフトウェア工学の研究会って数年以内に消滅するんじゃないか」という話をしていました。

なので、国内にいるソフトウェア工学の研究者の皆さん、ぜひ、一度ゼロベースで、色々考えてみてほしいんです。 あなたは誰の方を向いて研究してますか?

追記で注) 既にいくつか頂いているブコメの中に、ちょっとズレてるなと思うものもあったので、一応書いておきます。
僕は1年前までソフトウェア工学の研究者で、情報処理学会ソフトウェア工学研究会 の運営委員も数年務めていました。 今は転職して本業ではなくなりましたが、副業として研究は続けていますし、国内学会のプログラム委員も複数務めています。
要するに、これは外野がギャースカ言ってる話ではなく、内部告発です。

もいっこ追記えーと、国内のソフトウェア工学研究者を表面上disってるように書いてはいますけど、僕の気持ちはそういうdisにあるのではなく、現実問題として、国内のソフトウェア工学研究が寂れつつある(客観的に数字で確認できる)ことへの危機感です。

阿部幸大氏の何が「ウソ」かを説明しておく

前回のブログ記事で、僕はこう書いた。

僕は、本当はこの場で、彼と彼の記事について色々語ろうと思っていた。
でも、この2日くらいですっかりその気は失せてしまった。
(略) (その理由の1つは)同記事への反応をネット上の様々な媒体で眺めていて、軽く絶望したからだ。 絶望した理由、それは、「どんなに正しい主張でも嘘や誇張を混じえて語ってはいけない」という、誰にも否定し得ない絶対的なルールだと僕が信じていたことを否定する人達が数多くいたことだ。(略)結局、「嘘・誇張はダメでしょ」という批判は「ダメじゃない」と思っている人には何も響かない。 なので、すっかり徒労感に襲われて、彼を真面目に評する気も更々なくなった。

なので、今もあんまり彼の論評を長々とする気は正味ないのだけど、一部でまだ、僕や、僕が作ったまとめに反発してくる人もいるので、とりあえず最低限のことだけ書き残しておこうと思う。
なお、この話題についてはもう散々議論したし、僕自身はこの話題からはフェードアウト気味なので、この文章に対する再反論を誰かが行ったとしても、反応を返すかどうかは保証できない。その点は了承してほしい。

記事の解釈で揉めた経緯

僕は最初、ザリガニ氏(前回の記事参照)の指摘は傾聴に値すると感じて、彼のツイートをtogetterにまとめた。
その際に、僕はタイトルに「阿部幸大氏のウソ」と入れた。

しかしそのコメント欄で、ザリガニ氏や僕に反論してくる人もそれなりにいた。曰く、ザリガニ氏は「誤読」しており、僕のつけた「ウソ」というタイトルは誤りだ、というのだ。

僕は最初何のことかわからず、ザリガニ氏のツイートと、阿部氏の元記事を何度も見比べた(後述するが、これは彼が文章に施した「トリック」のせいで、かなり苦痛を伴う作業だった)。結果として、「誤読」だという指摘は、決してデタラメを言っているわけではなさそうだ、とわかってきた。
しかし、これは僕の元々想定していた話より、よほど根深い、と考えるようになった。

何が問題なのかを例を挙げてまどろっこしく説明する

ということで、その記事がどう根深い問題を孕んでいるのか、その一例を出しておく。
(以下、現国の問題に対する解説を更に長々引き伸ばしたような、かなりまどろっこしい、かつどうでもいい人にはどうでもいい議論をしている。なので、そういうのを読むのが苦痛という人はこのセクションをすっ飛ばして、『何が問題なのかをまとめる』まで飛んでほしい。)

以下は1つめの記事の2ページめにある、書店・CD店に関する記述である。

釧路のように地理的条件が過酷な田舎では「街まで買い物に行く」ことも容易ではないので、たとえば「本やCDを買う」という日常的な行為ひとつとっても、地元の小さな店舗で済ませる以外の選択肢がない。つまり、まともなウィンドウ・ショッピングさえできないのだ。

したがって、私が関東に引越して自宅浪人しはじめたとき、まっさきに行ったのは、大きな書店の参考書売り場に通いつめることであった。見たこともない量の参考書が並んでいる東京の書店で、はじめて私は「釧路では参考書を売っていなかったのだ」ということを知り、悔しがったものである。

これに対し、ザリガニ氏はこう指摘した。

(「15分以外」は「15分以内」の誤りだろう。)

つまり、下記の「コーチャンフォー釧路店」が彼の通った高校の程近くにあるじゃないか、という指摘だ。この店はtogetterまとめで頂いた情報によると2001年にできたそうなので、それを信じれば、阿部氏の高校時代には存在していたようだ。また、これもtogetterまとめで頂いた情報だと、近くに進学校があったことなどから、参考書の類はそれなりに充実していたようだ。

www.coachandfour-kushiro.jp

なので、先に挙げた文章の反例になるのでは、と思われる*1のだが、そうではない(あるいは、意味のある反例にならない)と主張している人もいる。
例えば、次のブログ記事だ。

blogs.itmedia.co.jp

こちらは図を例に出して議論を進めているので、こちらでもその図を引用させてもらう。

http://blogs.itmedia.co.jp/doc-consul/assets_c/2018/05/capture180503-022626-200-thumb-500x633-29314.png

こちらでその主張を要約すると、以下のような話になる。

  • 該当の文章の1段落目は「釧路のように地理的条件が過酷な田舎」が主語であり、つまり①の、市街地に簡単にアクセスできる子供と、②③の、市街地から遠く離れて住んでいるので大人に連れて行ってもらわないとアクセスできない子供がいることが想定されている
  • 一方、上記書店の存在は「高校生の時の阿部氏は①の環境にあったはずだ」と指摘しているに過ぎず、②③の反論にはなっていない

しかし、だ。そう解釈すると2段落めが問題になってくるのだ。

したがって、私が関東に引越して自宅浪人しはじめたとき、まっさきに行ったのは、大きな書店の参考書売り場に通いつめることであった。見たこともない量の参考書が並んでいる東京の書店で、はじめて私は「釧路では参考書を売っていなかったのだ」ということを知り、悔しがったものである。

これは主語が「私」で、阿部氏個人の、高校時代から浪人生活のため上京した際の体験談だ。そして段落の始めが「したがって」となっている。
接続語「したがって」をWeblioで引くと、こうある。

前に述べたことからの必然的な結果として以下のことが起こることを表す。それゆえ。だから。その結果。

つまり、1段落めは2段落めを結果とする条件、状況を指す。つまり高校時代の阿部氏は『地元の小さな店舗で済ませる以外の選択肢がな』かったので、その後上京して『東京の書店で、はじめて』『「釧路では参考書を売っていなかったのだ」ということを知り、悔しがった』と解釈せざるを得ない。これは、ウソだ。

しかし、1段落め(あるいはそれ以前)だけを読むと、間違ったことは言っていないようにも読めてしまう。「釧路のように地理的条件が過酷な田舎」が主語の一般論として読むと、市街地に大型書店があっても、市街地に簡単にアクセスできない僻地に住んでいる人にとっては関係ない話だ。
一方で、「したがって」の接続語込みで、1段落めと2段落めを合わせて読むと、トータルでは阿部氏個人の高校時代の体験となり、矛盾が生じる。

こうした、読む人によって解釈がコロコロ変わる箇所が、件の記事にはそこかしこに散りばめられている。

何が問題なのかをまとめる

阿部氏の2つめの記事で、彼はこう述べている。

まずは、謝罪しなくてはならない点がいくつかある。具体的には、釧路を含めた田舎にある店舗や施設、あるいは個人などを、あたかも存在しないかのごとく記述したことについてである。
(略)
ただし、私は本文で「田舎」と「釧路」と「私」という主語を使い分け、一般論、釧路の例、個人的体験などを慎重に腑分けした書き方をしているつもりである

確かに、段落レベル、あるいは文レベルで主語が「田舎」「釧路」「私」とコロコロと変わる。なので、「田舎」一般の話をしている箇所と、「釧路」や「私」つまり阿部氏個人の体験をしている箇所が細かく書き分けられている。
しかし、先の例でも述べたように、段落レベルで細かく書き分けられていても、文全体の構成を考えるといろいろ解釈不能、あるいは人によって解釈が変わる箇所がそこかしこにある。なので人によっては「ウソ」だと思え、別の人には、それはただの「誤読」だと思えるのだ。

更に問題なのは、「田舎」と「釧路」あるいは「私」の書き分けの内容である。
普通の論説文で一般的な事実と個別具体例を出す場合、一般的な事実から演繹されるものが具体例でなくてはならない。彼の文で言うなら、「田舎」の特徴として挙げられる事項がすべて「釧路」に当てはまらないといけない。
しかし、彼の文章はそうはなっていない。彼が「田舎」の特徴として書いているもののうち、「釧路」または「私」には当てはまらないものがかなりある。つまり「釧路」にはあるはずのものを『田舎にはない』と論じている箇所が多々あるのだ。一般的な事実として示される「田舎」が、彼の体験した釧路より過酷なのだ。
よって(最初に読んだときの僕を含め)読む人にとっては、釧路がとてつもない僻地にも読める。それが読む人によってはウソ・誇張・脚色と解釈されるゆえんなのだ。

早い話、彼の記事は論説文のセオリーに全く沿っていない「悪文」なのだ。
僕は、このトリックに気づいたとき、彼は故意にやっているのか、あるいは致命的に文才がないかのどちらかだと思った。しかし上記のとおり、彼自身がその「書き分け」を意図してやっている、と書いたので、これは故意なのだ、と確信した次第である。

「消防署の方から来ました」という「ウソ」

僕は、友人の例えをそのまま借りて、彼の文章を「消防署の方から来ました」話法、と呼んでいる。
「消防署の方から来ました」という有名な訪問販売の手口があるが、彼の文章はこのトリックに近い。確かに訪問販売員は『消防署から来た』とは言ってない、なので論理学的にはウソではない。しかしでは、訪問販売員は、ウソをつく意図がなかったと言えるだろうか。
阿部氏は、悪意があるかどうかはわからないが、その意味では故意に「ウソ」をついている(上記の「書き分け」がその証左だ)。

なぜウソをつくのか、は個人的な推測になるので敢えて語らない。
しかし彼は、上記のような「主語の書き分け」に腐心するより前に、もっと気を配るべき点があったと思う。自己の体験したことのみを誠実に語るなり、あるいはそれ以上のことが語りたければ、もっときちんと構成を練ったり、あるいは他の「田舎」も調査して、より一般的な田舎について語れるようにすれば良かったのだ。
あるいは、「これは釧路には当てはまらないが〜」といった注釈を適宜挟むだけでも随分違ったかもしれない。
国語がよほど苦手な人物ならともかく、彼の経歴からして、その程度の作文は、彼にできてもおかしくなかったろう、と思う。

*1:コーチャンフォー釧路店が「小さ」いかどうかでも実はtogetterまとめで揉めたのだが、その問題はとりあえず置く。今は、同店のホームページが「超大型店」で「道東最大にして全国最大規模の超大型複合店」と謳っていることから、「小さな店舗」には当てはまらない、としておく。

「底辺校出身の東大生」は本当に「底辺校出身」なのか

既にご存じの方も多いと思うが、「文学研究者」を名乗る、東大の博士課程に所属する阿部幸大氏による以下の記事が、色々な意味で反響を呼んでいる。何でも200万PVを越えたとのことで。

gendai.ismedia.jp

「色々な意味で」と書いたのは、この記事が文字通り賛否両論だったからだ。当初は特に釧路出身者から、「話を盛っているのでは」という指摘が多くなされた。
このうち、阿部氏が在籍した高校の元教員を名乗る@winecology氏(以降、ザリガニ氏)の批判をまとめたのが、以下。

togetter.com

まとめたのは、何を隠そう(?)僕だ。当初は、単にザリガニ氏の連続ツイートの仕方が読みにくかったので個人用にまとめただけだったのだが、こちらも思わぬ大反響を呼び、20万PVを軽く越えてしまった。

あまりの反響に阿部氏の記事は連載となり、続編も公開された。上記批判への反論なども綴られている。

gendai.ismedia.jp

で僕は、本当はこの場で、彼と彼の記事について色々語ろうと思っていた。
でも、この2日くらいですっかりその気は失せてしまった。

その理由は、1つには、阿部氏と同じ釧路出身の西智弘氏によるブログ記事が真っ先に公開されたからだ。

tonishi0610.blogspot.jp

僕が書きたかったことが、冷静な筆致で、僕が書くよりも簡潔にまとめられている。
なので、敢えて書くべきことはあまりなくなってしまった。最後の締めくくりはやや異論があるが、それ以外はほぼ、僕の言いたいことを代弁してくれている。

もう1つは、同記事への反応をネット上の様々な媒体で眺めていて、軽く絶望したからだ。
絶望した理由、それは、「どんなに正しい主張でも嘘や誇張を混じえて語ってはいけない」という、誰にも否定し得ない絶対的なルールだと僕が信じていたことを否定する人達が数多くいたことだ。それも、教職、出版社の出版プロデューサー、そして某研究所の教授。本来は「嘘を書いてはいけない」と指導するべき立場の人達も含まれていた。

この話もいずれ別にまとめたいが、結局、「嘘・誇張はダメでしょ」という批判は「ダメじゃない」と思っている人には何も響かない。
なので、すっかり徒労感に襲われて、彼を真面目に評する気も更々なくなった。

「底辺校」は本当に「底辺」なのか

ということで、本当は色々書きたいことはあるのだが、とりあえず1つだけ、西氏のブログへの補足として書く。

先日、Facebookで僕がこの話題を書いたところ、とある知人が、次のようなコメントを残した。

アイスホッケーやっていたものとしては、釧路はアイスホッケーの一流大学を占めるむしろエリート排出の場所だったわけですが。釧路弁が闊歩。 (原文ママ

そう。阿部氏が「田舎」と称し、地域格差の低流に位置すると「思い込んでいる」釧路は、実は立場が変われば地域格差の上流だったのだ。

更に補足すると、阿部氏の記事で「底辺校」と書かれる彼の出身中学・釧路鳥取中学校は、アイスホッケーの「名門校」だ。
特に、阿部氏が中学生だった*1辺りの、2001〜2004年には4年連続で全国大会優勝を果たしている。 詳しくは以下を参照されたい。 www.jihf.or.jp

上記まとめのコメント欄にも、次のような証言があった。

鳥取中学に入りたいから小学校6年で親類の家に住民票移して越境入学狙う子供がいたくらいには名門でしたよ。なにせ部活成績優秀な子供は高校からは釧路以外の名門校に推薦で行くこと多くて、そのステップとして必須なのが中学部活での活躍でして、まあ公立の場合生徒数多いほうが課外活動では有利なのでどうしても人気が一部に集中しがち。そういう理由で、鳥取中学が釧路トップかどうかは微妙だけど人気度でベスト3には確実に入りますね。
https://togetter.com/li/1222112#c4909098

つまり、国内の競技人口から考えて、日本の総人口から較べれば少数ではあろうが、日本のアイスホッケー関係者にとっては鳥取中学校はむしろ、ヒエラルキーの上位に位置しているのだ。
阿部氏がもしアイスホッケーの道を歩んでいれば、彼は筑駒*2に勝る「特権階級」の地位を、彼が「底辺校」と称する釧路鳥取中学校でたやすく手に入れていたことになる*3

結局、彼がアイスホッケーに目を向けることもなく、勉学の道を選択したことで、東大を頂点とするヒエラルキーの中に囚われ、未だそこから抜け出せていないだけなのだ。だから、彼の視点が有効であることを否定はしないが、視野が極めて狭いし、単一的で、画一的だ。
僕も東大に院生として長い間属していたので気持ちはよくわかるが、ぶっ飛んだ天才・秀才に囲まれながら、果てなき青天井へ挑戦し続ける途上でもがき苦しんでいると、それ以外のものが全然見えなくなる。彼はまだその状態から抜け出せていない。「東大」「東京」が頂点のヒエラルキーの外にも世界があることが、彼には未だ「見えていない」。

彼は「田舎」「都会」のまともな定義も線引きもしないまま、「田舎の状況の改善のために、(田舎者は)団結し連帯しなくてはならない」と記しているが、一体どう「改善」すれば彼は満足するのだろう。それは今後、彼が連載の中で明らかにしていくのかもしれないが、僕は、彼が今の画一的な、「東京」を頂点とするヒエラルキーのみを意識し続ける限り、まともな解決法を見つけることはできないと思う。
本当の答えは、彼がより多様な価値観を学び得た先に出てくるのではなかろうか。

[追記] 続き bonotake.hatenablog.com

*1:記事中で、阿部氏は「2000年に中学に入学」と記している。

*2:筑波大学附属駒場中学校・高等学校。阿部氏が記事中で「私が東大に入学し、なかば憤慨したのは、東大と同じ駒場東大前駅を最寄り駅とする中高一貫校が存在し、その東大進学率が抜群に高いということだった。なんという特権階級だろう!」と評した学校である。

*3:こう考えると、今回の騒ぎですっかり「底辺校」のレッテルを貼られた釧路鳥取中学校の関係者の方々が不憫でならない。

QA4AIコンソーシアムの初会合がありました

今日、発起人に名を連ねているQA4AIコンソーシアムの初会合があり、とりあえず顔を出してみるなどしました。会社の会議があったので途中で抜けましたけど。

えーまず、30名ほどの参加者があり、それだけで圧倒されましたw(機械学習工学研究会、通称MLSEは主査+運営委員の8人だけで回してます……)

また同様の活動をしているMLSEでは、ベンチャーや新興企業のメンバーが多くてTシャツでも全く抵抗ないのですが、こちらは製造業・伝統的内資企業の方々が多く、年齢層高め+背広で、自分のTシャツ・ジーンズにジャケットがちょっと申し訳なかったり。
(などと言いつつ、もうこの格好でいろいろな場所に出向くのに慣れつつある、元製造業・伝統的内資企業の自分がいたりしますが……)

それに「発起人に声をかけるのは最初だけ」と石川冬樹先生(MLSE主査 兼 QA4AI運営副委員長)から聞いていたので、顔見せ程度の気分で気楽に参加したのですが、がっつり「活動しよう!アウトプットを出そう!」的ノリだったので更に申し訳なかったです。はい。

まぁ、僕にはどう考えてもMLSEとQA4AIのアクティブな活動の両立は当座無理だと思うので、後者は皆さんの頑張りに任せて、僕はゴマメ(関西弁)でいようと思います。

MLSEとQA4AIの住み分けですが、僕はMLSEについては「機械学習工学の認知・普及」と、皆さんへの「活動の場の提供」「研究・実践のファシリテーション」が主な役割だと認識しているので、MLSE運営が主体的に何かを発信していくとかアウトプットを出すとか、は当面ないと思っています。たぶん。

とはいえ活動趣旨は結構似通ってはいるので、適度に連携を取れればいいなとは思っています。

冨山和彦の国立大学への提言が酷かったのでメールを送ってしまいました

kyoiku.yomiuri.co.jp

僕はこの冨山和彦という人物は初めて知ったのだけども……何だこりゃ、というのが正直な感想。
というので、感想をしたためて読売新聞に送りつけてしまいました。本文にも書いたけど、散漫でまとまりがなく、残念な文章になってしまったけども、敢えてまとめ直す気力も時間もなかったのでそのまま送信しました。

以下、そのメール。多少このブログ向けに最適化しています。

読売新聞に送りつけた感想のような何か

読売新聞 松本美奈

貴紙記事『異見交論43 国立大への税金投下に「正当性なし」』を拝読しました。
既にネット上では、この記事は軽く「炎上」しており賛否両論で溢れかえっておりましたが、私も貴紙にぜひ直接意見を申したく、こうして筆を取りました。
ちなみに、私は現在、小さなAI系ベンチャーで働く1人のエンジニアで、大学人ではないことをここに明記しておきます。

言いたいことは山ほどあります。全てを書き出したらキリがないのですが、まず一言で言えば、冨山氏の提言は時代遅れであり、今の時代にはそぐわない、ということです。
特に以下、冨山氏の提唱する「L型大学」と、そこで教えられるとされる「職能教育」「教養」について書かせて頂こうと思います。

職能教育のレベルが低すぎる

冨山氏は、より実践的な職能教育を行うL型大学の必要性を訴えます。
これ自体の是非は取り置くとしましょう。総論として、そういう意見も一理あるかもしれません。
ただし、細かく記事を拝読するに、氏のいう「職能教育」は、ハッキリ言って程度が低すぎます。

氏の提案では、L型大学の経済学部で会計ソフト「弥生」の使い方、工学部ではTOYOTAの最新鋭の工作機械の使い方を教えろ、とあります。
これを読んで、私は呆れ返りました。氏は日本企業を馬鹿にしているのではないかとさえ思いました。
こんな案を、氏は文科省有識者会議で提案したのでしょうか。これは大学人だけでなく、今時のまともな企業人からも反発されるでしょう。

私はエンジニアですので、エンジニアリングを例にして話をしたいと思いますが……
仮にTOYOTAの工作機械の使い方を学んでも、それが役に立つのはTOYOTAの工場のラインに立つ工員だけではないでしょうか。
それは大学で4年もかけて学ぶべきことでしょうか。工業高校で十分ではないですか。

ではそのTOYOTAで、自動車の設計をする人はどういう職能を大学で学ぶべきなのでしょうか。
最新鋭の設計ツールの使い方を学べばいいのでしょうか。
違いますよね。自動車の動作原理を理解するための機械工学や制御工学、また最近は電気自動車にどんどん移行しつつありますから、電気電子工学の知識も必須です。スポーツカーなら、空力抵抗を理解するための航空工学も要るでしょう。
そうでなければ、どんなにいいツールを使っても、まともに動く、最新鋭の自動車を設計できるはずがありません。
そして、これら各種工学を学ぶためには、力学や電磁気学解析学線形代数微分方程式なども予め学んでおく必要があります。

また、その「TOYOTAの最新鋭の工作機械」は誰が開発すればいいのでしょうか。
どれだけ工作機械を使いこなす技能があっても、その工作機械の性能がまともなものでなくては、精度の良い仕事など誰にもできません。
正確で緻密な工作を行える機械を作るためには、その機械を緻密に設計する技能が必要です。
そのためには、工作機械そのものの仕組みと、工作する対象となる自動車部品の性質を十分に知る必要があります。
それを学問として体系的に学ばなければ、「最新鋭の工作機械」など作れないと思いますが、いかがですか。
それとも、氏は「最新鋭の工作機械」は、日本には東大と京大の一部にしかない「G型大学」で開発すればいい、と思われるのでしょうか。
それではとても手が足りず、日本企業はたちまち国際市場で勝てなくなってしまうと思いますが。

応用の利かない職能教育なんてすぐ使えなくなる

また氏の想定する「職能教育」は、即物的すぎて、応用が全く利かないもののように思えます。
これについては、氏が記事の中で「最先端のAI」と統計について少し触れていますし、私もAIベンチャーで働いていますので、この数年でAI業界、IT業界に起こったことを例にお話します。

この数年、世界的にAIブームが起こって以来、日本中のITエンジニアの多くが、突然線形代数と統計を真剣に学ぶ必要に迫られました。
それまでのIT業界において、線形代数も統計も、一部の例外を除いて、それほど必要とは思われていませんでした。
これが突然「必須科目」となったことで、慌てふためくエンジニアも多かったのです。周囲でもそういう人達を見てきましたし、かくいう私自身、統計は元来あまり得意科目ではなく、苦労した思い出があります。

しかし本来ならば、線形代数も統計も、大学の教養課程で真面目に勉強していれば自然に身についたことです。
こうして日本国内のITエンジニアが泡を吹くのを尻目に、米国や、最近成長著しい中国のIT企業はどんどんAI分野で新しい技術開発を進め、今も成果を出し続けています。

とはいえ、今から「AIのための職能教育」コースを大学に準備していては遅いのです。この分野の現在の技術進歩は非常に速く、1年で知識が劣化します。
これについていくには、一般のエンジニアでも毎日次々とpublishされる論文に目を通し、新しい技術にキャッチアップしてそれを取り入れ、更に自分たちなりの技術をそこに上積みしていくしかありません。そうしないと世界に勝てないのです。

それに今から「AIのための職能教育」コースを作ったとして、効果が出るまで3〜5年かかるでしょうが、その頃には全く別の新技術が世界を席巻しているとも限りません。
そういう時、AIの職能教育しか受けていない人間は対応できません。数年前に日本のIT業界で起こったことが再び起こるだけです。
そういう人材しかいない企業が国際市場で勝てるはずがありません。

Preferred Networks というAIベンチャーをご存知でしょう。
AI*1に関しては東大をも凌ぐ研究開発力を持ち、昨年トヨタから100億の出資を受けた、日本で現在3社しかないと言われるユニコーン企業の1つです。
彼らが人材募集の応募要件に「コンピュータサイエンスのすべての分野に精通していること」と掲げていたのは有名な話です。
それは、新しい分野で技術開発をするには、それについていくだけの学術的な柔軟性と応用力を技術者が持ち合わせている必要があるからです。
実際、彼らは前身の Preferred Infrastructure では検索エンジンの開発をコアコンピタンスにしていました。
それが、AI技術が花開いたとみるやすぐに舵を切り、現在の業態にシフトして、4年程度で今の地位を築いています。

こうした、新技術にもすぐ対応できる「基礎体力」を今の企業人は欲しているのであって、その修練は大学にしか期待できないことです。
その基礎体力こそが「教養」です。冨山氏の「教養」は教養でもなんでもありません。
我々は専門バカが欲しいのではなく、きちんと体系だった学問に基づく広範な知識を大学で身に着けて欲しいのです。
今すぐは要らないと思われる知識も、数年後に突然世界中から求められるようになるかもしれません(現に、AIブームでそれが起こりました)。
冨山氏のような「普通の人には統計は関係ない」から統計を勉強しなくていい、などという態度ではやっていけない時代なのです。
同様のことは、先の Preferred Networks の西川CEO*2も言っていますので、その言を引用します。

一つの分野を知っているだけではもはや強みを出すことはできない時代になってきています。どのような分野と分野を融合したら新しい技術が生み出されるのか、最初から予見するのは難しいことです。私たちには、最先端の技術を切り拓いていくミッションがあります。そのために、すべての分野へ精通するべく、技術を追求していくことが極めて重要だと考えています。

追記

更に付け足すなら、これはG型大学でやればいいとか、L型大学ではやらなくていいとか、そういう問題ではないとも感じます。
高校レベルでの勉強の出来は、社会に出てからの仕事面での能力とは必ずしも直結しません。
にも関わらず、G型L型と分けることは、いわば大学入試で、高校レベルでの勉強の出来で才能を振り分けてしまうことになります。学歴社会もとうに終わろうとしているのに、これは時代に逆行する施策です。
高校で埋もれていた才能をきちんと発掘するためにも、レベルの高い教育を、日本全国どこでも受けられる環境は非常に大事だと思います。

また、もう1ついえるのは「競技人口」の話です。
私の友人のある優秀なITエンジニアは、プログラミングのことを「競技」と称します。
そして彼は「競技のトップレベルは、裾野の人口で決まる」と言います。私も、彼の意見に賛成です。
そしてこれは、一般の学問や科学技術にも言えることです。
G型とL型を分けるのは「裾野の人口」を無為に削る行為であり、ひいては日本の科学技術レベルを貶す行為であり、愚策だと思います。

以上、好き放題書かせて頂きました。読み返すと散漫な文章ですが、時間も限られるのでこの辺で筆を置きます。
乱文失礼致しました。

*1:正直、AIって言葉は好きじゃないし、PFNもAIという言葉は避けているように思うけど、いちいち言い換えるのも面倒なのでそのままにしました。

*2:そういや西川氏も冨山氏も筑駒出身ですね。まぁどうでもいいか。

イーロン・マスクがテスラ社員に指示した社内コミュニケーションの方法が素晴らしすぎる件

gigazine.net

眠れず何となくネットサーフィンしてて、この記事を発見。
凄く良い。痺れた。早速会社のSlackにも貼り付けた。
僕はイーロン・マスク信者ではないけど、これを社員に指示したってのは流石だと思う。
以下、メールの抄訳を一部転載。

会社の中において情報がどのように流れるべきであるかについては、2つの流派がある。これまでの最も一般的だったものは、常に直属の上司を介してコミュニケーションが行われる指揮系統の方法だ。この方法の問題は、上司の権限が強くなる一方で、個人が会社に対して貢献できなくなるというところにある。

(略)

テスラで働く全ての従業員は誰でも、最速で問題を解決して会社に貢献できると考えた相手に対し、直接メールや口頭でコンタクトを取ることができるし、そうすべきだ。直属の上司の許可なしに、その上の上司に話を持って行っても良い。他部署の統括マネージャーにコンタクトを取っても良いし、私(マスク氏)に接触しても良い。誰にコンタクトを取る場合であっても、誰からの許可も必要としない。さらに、物事が正しい方向に進むまで、自分にはその義務があると考えて良い。重要なのは、これは単なる世間話をするためではなく、テスラが超迅速に物事をうまく進められるためであることを認識してもらいたい。テスラが、既存の自動車関連の大企業に正面からぶつかることは明らかに不可能である。そのため、テスラはインテリジェンスとアジリティ(敏捷さ)で勝負する必要がある。

一応、今の会社で僕は話したいと思った人に直接コンタクト取ってたけど、それは規模の小さい零細ベンチャーだったからこそ可能だったのであって、会社が急速に大きくなっていく中でそれができなくなるのでは、と危惧してた。 階層を重視しすぎた組織の意思決定の遅さは前職で痛感していたし、今の会社が今そんなことやってたら確実に潰れるので。

今の、階層があっても事実上フラットなコミュニケーションを維持・徹底することが、スピード感を上げていくためにも必要なんだと教えてもらった気分になった。

ということで、今後も直属の上司を気にせず、ガンガンコミュニケーション取っていきます。上司のSさんスミマセンw

【追記】ただし、これは全ての社員が自立して、責任持って行動するのが大前提です。
常に上司の判断を仰ぐのは、上司に責任を負わせて自分は責任を回避する、ということでもあるので。そのマインドでイーロン・マスクのこのやり方はできないです。 【追記おわり】

【追記2】コレ読んだ Ariga(@chezou)さんから、関連して以下の本を勧められました。

異文化理解力――相手と自分の真意がわかる ビジネスパーソン必須の教養

異文化理解力――相手と自分の真意がわかる ビジネスパーソン必須の教養

早速ポチって合間に読んでます。
【追記2おわり】

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。