Vol.257 結城浩/そうせずにはいられない/過程と成果について - 仕事の心がけ/

結城浩の「コミュニケーションの心がけ」2017年2月28日 Vol.257

はじめに

おはようございます。結城浩です。

いつも結城メルマガをご愛読ありがとうございます。

 * * *

家庭の事情もあり、疲れもあり、 最近は仕事のペースが落ちてきているように思います。

若いときには仕事のペースが落ちてきたら、 その分「がんばる!」と思ったものですが、 最近は「仕事のペースが落ちるのには理由があるのだから、 やみくもにはがんばらない」と考えるようにしています。

特に「睡眠」を削ってがんばるのは賢明ではありません。 その数時間に関しては進捗があるように感じるのですが、 体調を崩したり、寝込んだりしがちだからです。

そういえば、20年も前に自分で書いた「仕事の心がけ」でも、 一番始めに「休息」と「睡眠」について書きました。

 ◆仕事の心がけ(スクリーンキャプチャ)

2017-02-27_work.jpg

 ◆仕事の心がけ
 http://www.hyuki.com/writing/sigoto.html

ということで、今週も、 しっかり睡眠を取った上で働きましょう。

何しろ、お仕事は長期戦ですからね。

 * * *

政治とメディアの話。

結城はあまり政治には関心がないのですが、 人に何かを「伝える」ことには関心があります。 なので、新聞やTVやネットでの政治の扱われ方や、 それに対する人々の反応にはそれなりに関心を持っています。

結城は、自分で本を書くときには、 「内容がきちんと読者に届いてほしいな」 ということを念頭に置きます。 内容が読者に届いた上で、 その後どうするかは読者側の問題です。 結城が著者としてできるのは、 読者をコントロールすることではなく、 読者に伝えるべき内容を伝えることです。

新聞やTVやネットなどのメディアは、 「内容が届く」以外のことも気になるようです。 特に新聞にとっては「特ダネ」や「スクープ」 が重要な意味を持っているようですね。 他紙が報じていない大きな題材を自紙だけが報じるという状況です。

その気持ちはわからなくもありません。 でも、肝心の新聞の購読者にとって、 「特ダネ」は重要なのでしょうか。 私にはそうは思えないのです。

購読者全般の話をするのはできないので、 結城個人の話をしましょう。 結城は「特ダネ」を追い求めるメディアはあまり望みません。 それよりも、

 ・事実を淡々と報道するメディア
 ・強い党派色を出さないメディア
 ・解説記事や参考リンクを示してくれるメディア

ようなものが欲しいと感じます。 無い物ねだりかもしれませんけれど。

政党名や新聞名で検索してみるとわかりますが、 記事の書き方が異なるというレベルではなく、 扱っている話題のレベルから大きく異なります。 自党に有利で他党に不利な題材を取り上げ、 自党に不利で他党に有利な題材は無視するスタイルです。

結城は、もっと党派色の薄いメディアが出て欲しいと感じます。 あと数年くらいで、人工知能によるメディアが出てくるでしょうか。 党派色が薄いか、あるいは自分の好みの党派色に応じたメディアです。 既存メディアの情報をブレンドして再編集し、 読みやすい文章にまとめて見せてくれるようなメタ・メディアでもいいです。

そのメタ・メディアでは、記事の一部をタップすると、 その箇所の根拠となるファクトや参照記事を見せてくれる。 記事ごとに「この記事は○○党に好意的です」や、 「この記事はやや疑わしい内容を含んでいます」 などのメタ情報もあるといいですね。

人間には書くのが難しそうですが、 コンピュータならどうでしょうね。

 * * *

0とnullの話。

先日、@raysato さんのすばらしいツイートを見ました。

 https://twitter.com/raysato/status/833650208642719744

トイレットペーパーホルダーが二つ並んでいて、 左側にはペーパーの空芯が入っていて、 右側はほんとうに空っぽになっている状態の写真です。

そして、@raysato さんのツイートは、

 --------
 プログラミング初心者がつまづきやすい、
 0とnullの違いを解説した画像です。
 --------

というもの。これには非常に感銘を受けました。

リツイートしたところ、 私のところに「意味がわからない」と問い合わせが来たので、 簡単に解説します。

プログラミングでは、

 ・数の0
 ・オブジェクトが何もないことを表すnull

の二つを区別する場面がよくあります。 大ざっぱな言い方をすれば、 この二つはどちらも「ない」ことを表していると言えます。 でも、プログラミングでは、 この二つを明確に区別しなくてはならないことがあるのです。

空芯が残っている状態というのは「数の0」に似ています。 空芯はペーパーの量こそ0になっていますが、 まだトイレットペーパーの形を保っていますし、 ホルダーの中にものが「ある」状態になっているからです。 これは「値が0である数が存在している」のに似ています。

それに対して、 ホルダーが空っぽになっている状態というのは「null」に似ています。 nullというのはオブジェクトが存在しないことを表すキーワードです。 それはちょうど、 ホルダーの中に何も「ない」状態に似ています。

「数の0」は値を得たり、他の数と大きさを比較したりできます。 「null」はそもそも値を得ることすらできません。

もちろん、トイレットペーパーの比喩は比喩に過ぎません。 プログラミング言語の0とnullの違いを正確に表しているわけではありません。 でも、比喩としては非常にすぐれていると思います。 ツイートした @raysato さんに拍手!

実際にトイレに入っているときには、 「紙がない状態」と「芯もない状態」とは、 その苦悩の面では違いはありませんけれどね。

そういえば、以前、 空芯をうまく利用したトイレットペーパーホルダーを見ました。 予備のトイレットペーパーが上に積まれていて、 空芯をガチャッと取り去ると、 上からコトンと予備のペーパーが降りてくる仕組みです。 空芯というオブジェクトを取り去ることが、 予備のペーパーを充填するトリガーになるのです!

 * * *

SHA-1の話。

これはセキュリティに関わる話題です。 2017年2月23日に、Googleが「SHA-1の衝突発見」をアナウンスしました。

 ◆Announcing the first SHA1 collision
 https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

 ◆SHA-1衝突攻撃がついに現実に、Google発表 90日後にコード公開 - ITmedia エンタープライズ
 http://www.itmedia.co.jp/enterprise/articles/1702/24/news067.html

SHA-1というのは、「メッセージダイジェスト」や 「暗号学的ハッシュ関数」などと呼ばれるアルゴリズムの一つです。 SHA-1を使うと、大きなファイルやデータから、 短いバイト列(20バイトのハッシュ値)を作ることができます。 このハッシュ値を元に、ファイルが改竄されていないかを確かめたり、 電子署名を検証したりするのです。

「SHA-1の衝突発見」というのは、 同じSHA-1ハッシュ値を持つ 異なる二つのPDFを作り出すことができたというアナウンスです。 異なる二つのPDFなのに同じハッシュ値を持つものが見つかるなら、 SHA-1は役に立ちません。

以前から「SHA-1はもう使わないようにしよう」 という動きは業界全体が進めていましたが、 今回初めて、実際にSHA-1ハッシュ値の衝突を実証して見せたことになります。 詳細は以下のサイトにあります。

 https://shattered.io

サイボウズ・ラボの光成滋生さんが、 今回のできごとをわかりやすいスライドにまとめていました。

 ◆GoogleのSHA-1のはなし
 https://www.slideshare.net/herumi/googlesha1

このスライドを参考にしながら、shattered.ioのサイトを読むと、 技術的な概要がよくわかります。

 https://shattered.io

この「衝突」を見つけるために、 「2の63乗個」というすさまじい個数のSHA-1を調べています。

また「等しいハッシュ値を持つ二つのファイル」を作ったのであって、 「ある特定のハッシュ値を持つファイル」を作ったわけではありません。

shattered.ioでは、 実際にSHA-1のハッシュ値が等しい二つのPDFが公開されています。 結城もダウンロードして試してみました。 確かに、どちらのPDFも3876…7f0aという値になっています。

 ◆確かにSHA-1ハッシュ値が等しくなる!(実行画像)

2017-02-25_hash1.png

PDFの後半部分は同じ内容であり、 最初の320バイトですでに衝突が発生しているということなので、 公開されているPDFをもとにして、 SHA-1ハッシュ値が等しくなる二つのファイル(320バイト) を生成するRubyスクリプトを作りました。

 https://gist.github.com/hyuki0000/1c554991e05555d23777b18c87efce03

 ◆320バイトの二つのファイルのSHA-1ハッシュ値が等しくなる(実行画像)

2017-02-25_hash3.png

たった320バイトの二つのファイルが、 等しいSHA-1ハッシュ値を持つのを見ると、謎の感動があります。

上の実行画像では shasum コマンドを使いましたが、 openssl コマンドでも確認することができます。 もちろん、SHA-1アルゴリズムでは衝突しますが、 改良版のSHA-256 アルゴリズムでは衝突しません。

 ◆opensslコマンドで確認(SHA-1とSHA-256)

2017-02-25_hash4.png

なお、メッセージダイジェストを初めとする暗号技術については、 拙著『暗号技術入門』でやさしく解説しています。

 ◆『第3版 暗号技術入門 秘密の国のアリス』
 http://cr.textfile.org/

 * * *

亜人(デミ)ちゃんの話。

毎週日曜日の夜、 アマゾンプライムビデオで「亜人(デミ)ちゃんは語りたい」を観ています。

結城メルマガでは最近毎回このアニメのことを書いています。 ほぼリアルタイムで試聴しているアニメは久しぶりなのです。

先週の第8話「亜人ちゃんは学びたい」もおもしろかった!

このアニメは学園コメディですが、 第8話にして勉強に関わる話題が出てきました。 中間テストの上位者が張り出されたり、 友達といっしょに勉強したり、赤点を気にしたり……

結城は毎回、物語の構成について学んでいます。 このアニメでは登場人物に順番にスポットが当たっていきますが、 今回はいわば二巡目。 つまり、登場人物の「これまでは見せなかった一面」を視聴者に見せています。

なるほどな、と思いました。 登場人物を描くとき、いつも同じパターンではつまらないものです。 キャラが薄っぺらな感じになってしまいますし、 視聴者に新たな驚きや興味が生まれません。

かといって、 登場人物のあらゆる側面を一度に見せるわけにもいきません。 時間的な制約がありますし、 それにあらゆる側面を一度に出したら、 混乱してしまうでしょう。

つまり、最初のうちはキャラの主要な面をしっかり見せる。 そして、ひとしきりなじんだところで、新たな側面を見せる。 そうすると、視聴者は、 「ああ、このキャラにはこんな一面もあるのか!」 という気持ちになるでしょう。新たな魅力の誕生です。

今回の第8話では、雪ちゃんの読書傾向、 早紀絵先生の過去のエピソード、 それに町ちゃんの成績などが描かれていました。

また、これまでは生徒にやさしく接し、 生徒から信頼される面が強調されていた高橋先生が、 生徒たちから責められるシーンもありました。 これは、キャラ同士の関係について、 新たな側面を描いているといえそうです。

少しずつ広がる世界を見るのは、 なかなかいいものですね。

来週も楽しみです!

 ◆『亜人ちゃんは語りたい』(アマゾンビデオ)
 https://www.amazon.co.jp/exec/obidos/ASIN/B01N4KENHZ/hyam-22/

 * * *

それでは、今回の結城メルマガを始めましょう。

どうぞ、ごゆっくりお読みください!

目次

  • はじめに
  • 「誰もいない」とは
  • そうせずにはいられない
  • 過程と成果について - 仕事の心がけ
  • 機械に任せられない問題
  • おわりに