結城浩の「コミュニケーションの心がけ」2017年3月21日 Vol.260
はじめに
おはようございます。結城浩です。
いつも結城メルマガをご愛読ありがとうございます。
* * *
連絡先変更の話。
この「結城メルマガ」のお問い合わせ先(メールアドレス) が変更になります。 以下では、" at " はアットマーク @ に読み替えてください。
これまでは、
旧: hyuki.mm at hyuki.com
というアドレスでしたが、これからは、
新: hyuki.mm at gmail.com
になります。 要するに、hyuki.com ドメインから、 gmail.com へ変更したということですね。
今回の変更は、スパムメール対策のためです。 なお、メール末尾にも記載してあります。
もっとも、このメールアドレスでなくても、 結城メルマガの内容に関するお問い合わせやご意見は、 Twitter(@hyuki)などでお送りくださっても問題ありません。
よろしくお願いいたします。
以上、連絡先変更のお知らせでした。
* * *
Web連載の話。
結城は毎週Web連載「数学ガールの秘密ノート」を更新しています。 今年(2017年)に入ってから「いにしえの数学」シーズンと題して、 紀元前の数学を題材に書いてきました。題材として扱ったのは、
・古代エジプトの数学(パピルス)
・古代バビロニアの数学(楔形文字)
・古代ギリシアの数学(タレスとピタゴラス、黄金比)
・古代中国の数学(算木と『九章算術』)
などです。 先週金曜日に公開になった第190回で「いにしえの数学」シーズンも終了。 あっというまの十週間でした! 第190回は「数の謎、いにしえの謎」というタイトルで、 プリンプトン322と呼ばれる粘土板のお話になりました。
cakesの有料会員になっていない方でも、 2017年3月23日までは無料で読めます。 謎解きが楽しいので、ぜひあなたもお読みくださいね。
◆第190回 数の謎、いにしえの謎
https://bit.ly/girlnote190
今回の十週間は、結城の個人的な事情で、 何かと大変な時期にあたってしまいましたが、 なんとか十回分、休むことなく書き続けることができました。 ほんとうに感謝なことです。読者さんの応援に感謝です!
今回も、書く分量はいつもと変わりません。 でも、古代数学史に関係した話題だったので、 調べ物がたいへんでした。 新たに学んだこともたくさんありましたね。
少し大げさにいいますと、 自分の中ですこし「新しい境地」がひらけた感があります。 自分にもまだまだチャレンジできることはあるんだな、 との思いを強くしました。
結城は自分で「歴史が苦手」という意識があったのですが、 今回のシーズンを書いてみて「食わず嫌いは良くない」 とも感じました。 調べたいこと、考えたいことがわき出てくるからです。
「数学ガール」シリーズのおもしろさの一つに、 《多数の分野がおもいがけないところでつながっている》 点があります。数学史をひもとくと、 その《つながり》があちこちに隠されているようで、 何だかわくわくしますね。
ところで「いにしえの数学」シーズンが終わったので、 数週間のお休みの後、新シーズンを始めます。 題材は何がいいでしょうね。
「数学ガールの秘密ノート」では、これまでに、 以下のような題材を扱ってきました。
式とグラフ、整数、三角関数、数列、微分・積分、 ベクトル、場合の数、統計、指数・対数、曲線、 ビット演算と束、不等式、行列、波、数の構成、 複素数、論理と証明、そして古代数学史。
Twitterなどで「結城さん、こういうのを書いて!」 と過去にリクエストされたものの一部をご紹介します。
複素平面、一次変換、確率、連分数、整数、 三角関数、巨大数、パラドックス、ゲーム理論、 曲面、暗号理論、音楽……など。
Web連載の題材ご要望は、 Twitterで @hyuki あてに送ってください。 リプでもDMでもかまいません。 もちろんメールでも大歓迎です。 参考にさせていただきます。
◆Web連載「数学ガールの秘密ノート」
https://bit.ly/girlnote
次のシーズンは第191回〜第200回となります。 もうすぐ連載200回になります!
第1回は2012年11月2日でした。 Web連載開始から丸四年と数ヶ月が経ったことになります。 早いですねえ……
* * *
書籍執筆の話。
ここ数回の結城メルマガにも書いていますが、 最近はプライベートな事情で、 仕事に掛けられる時間がだいぶ減っています。
現在取り組んでいるのは、 『数学ガールの秘密ノート/積分を見つめて』の作業です。 ほんとうはとっくに脱稿できる予定でしたが、 ずいぶんずれこんで来ています。
全体を繰り返し読んでいるにも関わらず、 いまだに第1章と第2章の絡み合いが解決できていません。 プリントアウトして、朱入れをして、 ファイルに反映するという作業を繰り返しながら、 最適解を探っている最中です。
結城は、原稿の全体を見通して読み返すときには、 A4用紙の一枚に4ページを割り当てる形式の印刷をします。 それを読みながら、フリクションボールペンの赤で、 ちまちまと朱入れをしていきます。 以下の画像のような雰囲気ですね。
これを一章分続けたら、 自分の朱入れを見ながらLaTeXファイルに修正を反映します。 そしてまたプリントアウト。
第1章と第2章の絡み合いが解決できない理由ははっきりしています。 いろんな要素を「盛り込みすぎ」なのです。 扱っている題材をバッサリ捨てきれないため、 絡み合いがほぐせないでいるわけです。 本を書く作業の中では難しいところの一つが、 この「捨てる」という作業だと思っています。
捨てられない理由を端的にいえば、
「せっかく書いたのだから削除したくない」
という気持ちがあるからです。 でも、それだけではありません。
捨てられない深い理由は、
「ほんとうに捨ててはいけないところ」
がどこにあるかを見抜けていないからなのです。 だから、捨てるのがこわい。
言い換えるなら、 その章で《読者に伝えたい、たった一つのこと》を発見するまで、 この苦悩は続くはずです。
まあ、じっくり行きましょう。
* * *
リサージュ図形の話。
Desmosで働いているLuke Walshさん(@LukeSelfwalker)が、 「多角形バージョンのリサージュ図形」をツイートしていました。 以下のリンクです。
https://twitter.com/LukeSelfwalker/status/842010282226524163
通常はリサージュ図形というと、 周期の異なるcosとsinを使って描いた図形になります(大ざっぱな説明)。 言い換えると「円」をベースにしてそれをひねった図形になります。
上のツイートで紹介されていたのは、 「多角形」をベースにしてひねったものとなります。 当然ながらその極限は通常のリサージュ図形。
変奏曲を聴いているようで、 たいへんおもしろいです。
* * *
パスワードの話。
先週の結城メルマガで「Webサービスの棚卸し」の話を書きました。 それに関連した話です。 あなたは、どんなパスワードを使っていますか。
結城は、ランダムなパスワードを生成し、それを使っています。
たとえば、コマンドラインから、
$ openssl rand 16 -hex
と入力すると、 以下のような16バイト分の乱数が16進数で表示されます。
73cac15490dda0f2f03e26f894fa65cd
もちろん、繰り返すたびに異なる乱数が得られます。
$ openssl rand 16 -hex
044563615c7e1e162ad5dc6cda088615
$ openssl rand 16 -hex
6e6257e596abfe89410bbadf89d9e2d6
$ openssl rand 16 -hex
39c70c36144fa467daa04ce879df3210
$ openssl rand 16 -hex
70ca3479cf922509ed3692a49a2d0cbb
$ openssl rand 16 -hex
badc7d0f562fd77026a4b71f6e4b743f
実行するときに -base64 というオプションをつけると、 Base64という符号化を行い、16進数ではなくASCII文字になります。
$ openssl rand 16 -base64
1soQhyAEMgxGETYwolb/8Q==
$ openssl rand 16 -base64
h81JeVP8dhli8KKi7txKPA==
$ openssl rand 16 -base64
imzjfW8wRumRUE48HtT54w==
$ openssl rand 16 -base64
aM+36htibzTIoKXyX+Ut9Q==
あるいはまた、以下のコマンドでも、 Rubyを使って簡単に予測困難な文字列を得ることができます。
$ ruby -rsecurerandom -e'puts SecureRandom.uuid'
実行結果は、たとえばこんな感じになります。
cee71175-34b8-4c87-a305-3a42805a1d73
直後に同じコマンドを入力しても、 別の文字列になります。
47f50534-0316-44e9-a529-0568c048e8d2
結城はこういったランダムな文字列を組み合わせて、 パスワードを生成し、それを使っています。
たとえば、以下のような文字列を生成し、 ここから適当に切り出した文字列をパスワードとして利用しています (もちろん、これらそのものを使っているわけではありません)。
ndVS-j+Xl-JkEL-7Jud-kW9G-ZddB-N3PE-wEIM-sdkW-+OWu
5Gi5-ShD5-pR3Z-6JpX-CKNZ-NMyT-vu4Y-aW7x-VnyE-gMvE
4140-6945-3114-7787-1842-3022-6308-5847-7148-0395
y2BdLW1RZbpwC9o1HhVS1aGqW0LwpzByRZ4Vo+p7psm
plaQ-OI70-sSbi irS+-jl63 aaNz
QIIL-4oPZ-ngVC /NCk-GUio lpg4
8UAR-Hqlg-LaqV IdiM-9pDI edtc
opensslのrandコマンドについては、 以下のページをご覧ください。
◆openssl
https://www.openssl.org
◆rand - openssl
https://www.openssl.org/docs/manmaster/man1/rand.html
また、RubyのSecureRandomモジュールについては、 以下のドキュメントをご覧ください。
◆module SecureRandom (Ruby 2.4.0)
https://docs.ruby-lang.org/ja/latest/class/SecureRandom.html
パスワード管理ツールには、安全なパスワードを作る機能があります。 そこで作っているパスワードも、乱数を用いて作成したものになります。
ちなみに、Webサービスによっては、 ユーザ名とパスワードだけではなく、 いわゆる「秘密の質問」の答えを登録させることもあります。 「母の出生地」や「ペットの名前」や「初めて見た映画」などですね。
場合によっては、 これらの「秘密の質問」がセキュリティホールになることもありますので、 結城は、これらの答えもランダムな文字列にしています。
たとえば、こんなふうに。
質問:母の出生地は?
答え:AQf2O8LEHLe7RQmbttBUMoNPLIYaIzy4VMr7HUwDsMj
質問:ペットの名前は?
答え:4jgd-yNTK-chDS-ZRCH-5QSB-n6ME-ykpw-62A8
質問:初めて見た映画は?
答え:2045-9937-6547-2667-0709-6339-7096-1248
これらの「答え」は、 正しい答えを暗号化しているわけではありません。 単なるランダムな文字列です。
結城は、こういうランダムな文字列に妙な魅力を感じるのですが、 あなたはいかがですか。
* * *
学ぶ順序の話。
どんな本を読むときでも、 何らかの前提知識は必要になります。 入門書が想定する前提知識と、 高度な専門書が想定する前提知識は違いますけれど。
一冊の本を読むときに限らず、 一つの分野を学ぼうとしているときにも、 前提知識が必要なことはあります。
高度なプログラミング技術を学ぼうとしている人は、 その前提知識として、 基本的なプログラミングを学んでおく必要があるでしょう。 さらにその前提知識として、コンピュータの基本操作や、 コンピュータの仕組みなどが必要となるでしょう。 キーボードも打てず、エディタも操作できない状態で、 高度なプログラミング技術を身につけるというのは、 あまり現実的ではありません。
つまり「学ぶ順序」が問題になるわけです。
学ぶ順序は、どんな分野でも問題になります。 ある分野Yを学ぶときには、それより先に、 別の分野Xを先に学んだ方がいいのかな。 Xを学ばなかったら、Yに取り組むのは時間の無駄かな。 そんな思いを抱くことは、誰しもあります。 自分が学ぶときの「正しい順序」が気になるわけですね。
その一方で「正しい順序」を厳密に考えすぎるのもよくありません。 Yを学ぶ前には、Xを学ぶ必要があって、 Xを学ぶ前には、Wを学ぶ必要があって……をずっと繰り返していたら、 いつまで経ってもYは学べなくなってしまうかも。
複雑な相互関連を持った分野の場合、 学ぶ順序を考えるというのは、 ネットワーク構造(つまり、網)を線型順序(つまり、列) に変換する作業をしていることになります。 全体像を見通しているなら「学ぶ順序」 を定めるのも難しくない作業かもしれません。 でも、これから学ぼうという分野の場合にはどうでしょうね。
一つ一つの分野が短期間で学べて、 しかも積み重ねになっているものなら、 正しい順序にこだわるのは大事かもしれません。 しかし、一つ一つの分野が学ぶのに何年もかかるものの場合、 正しい順序にこだわりすぎるのは賢明ではないかも。
むしろ、
「そうか、あっちの分野を先に学べばよかったんだ!」
という気付きを、
《自分の理解のインジケータ(指標)》
だと考えるのはどうでしょうか。
自分が学び、理解が進んだ証拠として、 「あっちの分野を先に学んでおけばよかった」 という発見を得たということです。
もしかしたら「あっちの分野」を先に学んでいたら、 別の気付きがあったかもしれませんしね。
人間の理解は、必ずしも線型順序ではありません。 あちこちポンと飛んだりするものです。
先取りして見ておいたことが役立つというのもよくあります。 先取りした時点では正確に理解していなくても、 後になって「ははーん、アレはこういうことだったのか!」と気付く。 それは心地よい瞬間でもあります。
学ぶ順序を考えるのは大事なことですし、 必要となる前提知識を前もって身につけようというのは悪ではありません。 でもそれにこだわりすぎるのもよくありませんね。
学ぶというプロセスは、 そう簡単には見切れるものではありませんし。
* * *
そんなところで、今回の結城メルマガを始めましょう。
どうぞ、ごゆっくりお読みください!
目次
- はじめに
- 仕事がうまく進むパターンを探ろう - 仕事の心がけ
- Webサービスの棚卸し(2) - 仕事の心がけ
- あふれそうなときの心の健康法 - 仕事の心がけ
- 文字だらけのInstagram
- おわりに