いっしきまさひこBLOG

AI・機械学習関連、Web制作関連、プログラミング関連、旅行記録などなど。一色政彦。

読書感想『ダントツになりたいなら、「たったひとつの確実な技術」を教えよう』

書籍紹介

 1カ月前ぐらいに読んだ本です。Kindle Unlimitedで読めます(※2019/11/17時点)。あとAmazonだと単行本が買えなくなっています...。

 オーディオブックの再生時間は6時間6分。短めですね。

概要紹介と感想

 内容としては、ノルウェーでオリンピック選手やトップクラス経営者を顧客にメンター(=仕事上の助言者)で活躍する著者「エリック・ベルトランド・ラーセン氏」による方法論を説明するもの。どうやれば人は100%の実力が出せるのかを、例を挙げながら説明しています。

  • パート1 日常生活を変える
  • パート2 [実践篇]本番力をつける

という2部構成で、パート1で理論を学び、パート2であたかも著者にコンサルティングを受けてるかのような形で読める内容となっています。そのため、理論を自分自身にも応用しやすいかもしれません。

 以下、引用しながら、私自身が気に入った内容をまとめていきます。

人生を俯瞰で見る=自分の「価値観」と「欲求」を正確に知ること

 まずは序章で、

自分が思っているよりも、はるかに上に行けるのだ!

とガツンとかましてきます。そして「ダントツの人」とそうでない人は何が違うのかという疑問に対して、それは驚くほどわずかな違いでしかなく、

ひと言でいうと、日常の小さな『正しい決断』を下すのが上手なのだ

と説明。つまり「ダントツの人」は、才能ではなく、小さな選択の積み重ねでできていると言っているわけです。そのためには、

自分に「正しく質問する」習慣をつけること

が大切だそうです。つまり自問自答しろと。例えば朝起きたら「あと5分寝るか?」「今日は何をしようか?」など。そういった質問をしたり回答をしたりするためには、自分自身がどんな価値観と欲求を持っているかを見つめ直す必要があります。

最初にすべきなのは、己を知り、自分の価値観と欲求を知ること

 これがこの本の根幹的なメッセージの一つなのだと諭しています。自分の価値観と欲求を知るには、まずは自分の「現在位置」をはっきりとさせる必要があります。

「まず人生を俯瞰で見てください」

 当然でやっている人も多いと思いますが、まずは自分の人生全体を見つめ直し、その中で今の自分はどのあたりかを考えてみることが大事ですよね。

人間は、本質的に変化を嫌う生きもの

 だからこそ、変化を引き起こすには人生を俯瞰で見ることが大切。それによって正しい選択ができるようになります。それだけでなく、「急いで実施しよう」という意志力も生まれます。人生は無限ではないのだから、

人生を俯瞰で見て、いつかは終わるという意識を持つ

ことが大事です。

成功に備える=意識のトレーニング

 価値観や欲求に基づく夢や目標が打ち立てられたら、そこに向けて努力していきます。とはいっても、不安や失敗への恐れなどが沸き上がってくるものです。それは人間が持つ自然な感情なわけですが、「ダントツの人」になるにはその感情をコントロールしていく必要があります。これに対し著者は、

私が行うトレーニングのうち、20パーセントは最悪のシナリオへの備えであり、80パーセントは成功に備えるものである

と答えています。つまり不安に備える代案も用意しておけと。そうすることで夢や目標に、より効果的に進めると著者は主張しています。

目標を具体化するには

 では、その目標をどうやって設定すればよいのか。目標設定は企業が得意です。

あなたが本気で自分を変えたいなら、まず、あなた個人を「ひとつの会社に見立てる」ことを試してほしい。重役会議にあてる時間をつくり、業務明細表を作成し、ゴールを決めて戦略計画を立てる。そして、あなた自身の「理念」を決める。そうすると、よい目標を設定して、そこに到達するために必要なステップを踏むことが、より簡単になるだろう。

目標に到達するためのプロセス

 著者は、目標に向かって進むためには、努力を「自動化」、つまり習慣化することが大切だと説きます。

私はこの局面を「段取り中」と呼ぶ。いわば、あなたが目標にたどりつくまでに通過しなければならないすべての平日だ。

 目標へのプロセスは、地味で粘り強さが求められる局面です。だからこそ、

目標を常に思い出し、自分が何と戦って、何を手に入れたいのかを、確認する

のが大事で、週に一度は絶対にこれを確認すべきだとしています。自己啓発本では、よく張り紙するだの、目標を毎日見て確認するだの、があると思いますが、そういったたぐいのことはあらためて重要だということですね。

どんな分野でも優秀になれる

 この本で「1万時間の法則」というのを知りました。最近、オーディオブックで買いやすいので自己啓発本を何冊か読んだら、有名な話みたいでよく出てきます。

グラッドウェルが著書のなかで何度も立ち戻っているのが「1万時間の法則」である。どんな分野でも成功の鍵を握るのは鍛錬であり、1万時間を費やせば、平凡な人間でも、特定の分野において世界レベルの能力を得られる、というのだ。

 1万時間はかなりの時間です。毎日10時間、目標に向かって努力すると、1000日(=2年と9カ月)、つまり3年もかかります。確かにそれだけ専念してやれれば、人より頭一つ飛び抜けられるんだろうなとは思います。

 この本は、目標を毎日意識して、長期に渡って自分を律しながら不屈の努力を粘り強く続けることの大切さを、色んな表現で説得してきます。それによって、「自分が思っているよりも、はるかに上に行けるのだ」と、自らの体験(序章の話)を通して力説しています。

この本のオススメ度

 上記の内容に納得して、その概念や意識を自分の中にすり込みたいという人は買ってもよいと思います。

 ただし、内容は浅いなというか、(人生を俯瞰するとか目標設定とか)よくある話の印象で、この本自身がダントツではない気がします。かつアスリート寄りの内容も多く、パート2で「三大ツール」という手法が出てくるのですが普通の人には使いづらい気がします。

 「1万時間の法則」は気に入りました。基準が明確になって、努力しやすい気がするので。でも言葉一つなので、それを理由にあえて本を買うほどまでではないのかなと……。この本に関してはこういう評価です。

読書感想『スタンフォードのストレスを力に変える教科書』

書籍紹介

 最近、本を大量に読んでいるのですが、文字でひたすら読むのはつらくて、オーディオブックで耳でも聞きながら読んでいます。そうやって最近、読んだ中で、一番ボリュームがあったのがこの本です。

 再生時間は11時間18分。1.5倍速で読んだので、約7時間30分ぐらいかかりました。ネットで検索したら、4~5時間で読んでいる人がいるのですが、読むの速いですね...

概要紹介と感想

 内容として、「ストレスは体に悪い」という情報そのものによって、ストレスが体に悪く作用するという実例や研究を徹底的に実証的に説明している本です。エッセンスだけ抜き出すと、シンプルなのですが、研究の説明などが入るのですごいボリュームに。このなかなか進まない感じが挫折しやすい本だなぁと感じます。みんな最後まで読めているのでしょうか。

 確かに思い起こしてみると、受験のようなストレスがあるから勉強するのだし、そうやって頑張るから達成感が得られます。「ストレスは悪者」と一律に決めつけるのはおかしいですね。むしろ、レジリエンス(=立ち直る力)を高めるために、進んでストレスを探すのもよい。つまり「ストレスを利用して自分を成長させるきっかけにすればいい」と。最後の方はそういう主張にまで持っていっていました。

 それでメモっておきたい内容があったので、「引用」ということでここに紹介しておきます。

ストレスを力に変えるエクササイズ

 本文中にちょこちょことエクササイズが出てきます。たくさん出てくるのですが、これはメモっときたいと思ったものだけです。次のエクササイズは227~228ページに掲載されています。

【引用】1日にひとつ、誰かの役に立つ

 行き詰まったときには、毎日していること以外に、誰かのためにできることを探してみましょう。「そんなひまも余裕もないのに」と思うかもしれませんが、だからこそ、あえてそうすべきなのです。それを毎日の習慣にしてもよいかもしれません――1日にひとつ、誰かの役に立てる機会を見つけるのです。そうすれば、あなたの体と脳は積極的によい行動を起こせるようになり、勇気や希望やつながりを実感できます。
 どうせならより大きな効果を得るために、ふたつの方法があります。ひとつは、毎日同じようなことを繰り返すのではなく、なにか新しいことや意外なことをすること。そうすれば、脳の報酬系への刺激がよけいに大きくなります。
 もうひとつは、スピーチのときに身ぶり手ぶりを大きくするのが効果的なのと同じで、ささいなことが大きな効果をもたらすので、誰かの役に立てる機会をただ待っているのではなく、小さなことでも自分にできることを見つけること。
 わたしは学生たちには、周りの人のためにどんなことができるか、柔軟な発想で考えるように勧めています。たとえば、誰かに感謝の気持ちを伝えるとか、相手の話にしっかりと耳を傾けるとか、相手の言葉を善意に解釈するとか、そんなことでもいいのです。
 これまでに見てきた、マインドセットを変えるための方法(「自分にとって大切な価値観を思い出す」「心臓がドキドキするのは、体が行動を起こす準備を整えているしるしだと考える」など)と同じで、わたしたちの小さな選択が思いがけない効果をもたらし、ストレスの感じ方が大きく変わります。

その他、思ったこと

 結局は、モノの捉え方、考え方次第で、いろいろと好転して、逆に自分の力に応用できるということだ思います。日本語で「苦境」とかではなく、全部「逆境」と捉えるといいのかなと思いました。「苦境」は苦しい状況が続くイメージですが、「逆境」はあくまで進んでいる中で出てきた障害という感じです。「逆境」だと捉えるマインドセット(=心理状態)で考えて行動すれば、結果的に取る行動がまったく異なってくることが何となく想像できますよね。

 あとは、本当に苦しい状況や孤独な状況にある場合は、それが自分だけだと考えないことが大切みたいです。他の人も同じようにつらい体験をしていると考える。これは「コモン・ヒューマニティ」というらしいです。好きなテレビ番組にテレ東の「家、ついて行ってイイですか?」があるのですが、家についていって話を聞くと、まったく想像できないような苦しいことや楽しいことなどを人々はさまざまに抱えているものだと分かります。顔を見るだけでは分からないんですよね。

 もし本当に苦しいストレス状況になった場合は、コモン・ヒューマニティを思い出してください。あなたは1人ではない。あなたは他の人とつながっている存在であり、あなた個人よりもっと大きなものの一部だと考えて逆境に立ち向かうことが、大いに役立つとのことです。

オーディオブック版の特典:著者インタビュー

 オーディオブックでは最後に、著者のケリー・マクゴニガルさんにインタビューした音声が収録されていました。最初全部英語か~って思ったら、後で日本語翻訳音声も入っていました。

 その中でも特に気に入った発言があったので、最後にそれも引用しておきます。

【引用】1日1分で確実にレジリエンスを高めるためのエクササイズ

 「自分の基本的な価値観は何か?」「自分にとって最も大切なことは何か?」を考えてみることをお勧めします。私自身が毎朝ベッドから起き上がる前に、これをやっています。これならとても簡単なので、1分でできます。
 それは「あなたが何を大切しているのか?」を振り返り、心にそれを覚えさせておくということです。これを行うと、日々のストレスと向き合う中で、「自分が一体何を気にしているか?」が分かるのです。
 1日に1度でもこの作業を行っている人は、多忙なビジネスパーソンが直面するようなストレスに対しても、自分をコントロールできていると実感し、希望を持ち、可能性を感じられることが研究によって明らかになっています。

統計学に入門するノート

勉強中の統計学の内容を個条書きでまとめたノートです。長いです。 今後、母比率、二項分布、ポアソン分布、統計的検定などを追記予定。

個人的な目標としてまずは統計検定2級の取得を目指しています。9月は他にやりたいことがあるので10月から...。

個人的に全体像を理解するのに特に役だったコンテンツは、以下です。

予備校のノリで学ぶ「大学の数学・物理」【確率統計】再生リスト

ただ、これだけでは統計学の取りこぼし部分が大きいし、試験問題などの応用力が身につかない感じで、この後、どの本で学んでいくか検討中です。 ベイズ統計学とか因子分析とか勉強し出したら切りがないんだけど、取りあえず統計検定2級の範囲内をマスターしようとしています。

■記述統計学

●分布

  • 分布Distribution): データセット内の各データがさまざまな数値を取ること。
  • 縮約Contraction): データを整理・整頓・要約して意味のある情報を抽出すること。具体的には、グラフ化して分布の特性・特徴・くせを捉えたり、データを代表する基本統計量を取得したりする。

●グラフ

  • 散布図Scatter plot): データを点々としてプロットした図
  • ヒストグラムHistogram): 縦長い棒をすき間無く横に並べたグラフ。

●基本統計量

  • 基本統計量Basic statistics): データの基本的な特徴を表す値。代表値と散布度がある。
  • 代表値Averages): 統計量の代表を表す数値で、主に以下がある。
    • 平均値$M$Mean): $μ$ミュー、ギリシア文字)と表記。算術平均のこと。
      • 算術平均Arithmetic mean): 全データを足して、データ数で割る。相加平均 とも呼ぶ。
      • 幾何平均Geometric mean): 全データを掛けて、データ数の累乗根で割る。相乗平均 とも呼ぶ。
      • 調和平均Harmonic Mean): 逆数の平均の逆数。行き(4 km/h)と帰り(6 km/h)の時速を平均($\frac2{\frac14 + \frac16}=\frac2{\frac3{12} + \frac2{12}}=\frac{2×12}{5}=4.8$ km/ h)する場合などで使う。
      • 加重平均$ω$Weighted arithmetic mean): 各データに重み(Weight$ω$)を掛けて全データを足し、重みの合計値で割る。東証株価指数(TOPIX)はこれで、時価総額加重平均と呼ばれている。 $\overline{x}=\frac{\sum_{i=1}^nX_iW_i}{\sum_{i=1}^nW_i}$ 。
    • 中央値Median): データ数の真ん中を指す。
    • 最頻値Mode): データ数が最も多いものを指す。
  • 散布度Dispersion): 統計量の分布を表す数値で、主に以下がある。
    • 分散$S^2$Variance): $\sigma^2$ シグマ2乗、ギリシア文字)と表記。母集団分布のばらつきを表す。$S^2=\frac1n\sum_{i=1}^n(x_i-\overline{x})^2$
      • 偏差$d$diviation): 各データと平均値の差のこと。$d_i=x_i-\overline{x}$
      • 標本の場合は 不偏分散Unbiased Variance): $U^2$ と表記。標本(標本数=$n$)分布のばらつきを表す。ズレを調整するため「$n-1$」する必要がある。$U^2=\frac1{n-1}\sum_{i=1}^n(x_i-\overline{X})^2$
    • 標準偏差$S$$SD$Standard Deviation): $σ$ミュー、ギリシア文字)と表記。2乗されている分散の値の縮尺を、累乗根により元データと同じレベルに戻した値。母集団分布の標準偏差。$S=\sqrt{\frac1n\sum_{i=1}^n(x_i-\overline{x})^2}$
      • 標本の場合は 不偏標準偏差$U$Unbiased Standard Deviation): $U$ と表記。標本分布版の標準偏差。$U=\sqrt{\frac1{n-1}\sum_{i=1}^n(x_i-\overline{X})^2}$
    • 平均偏差Mean deviation):2乗して累乗根するのではなく、偏差の絶対値を使う方法。標準偏差の法が数学的に扱いやすいのでほぼ使われない。$\frac1n\sum_{i=1}^n|x_i-\mu|$
    • 歪度わいどSkewness): 分布の非対称性を表す数値。0より上なら左に偏っている、0より下なら右に偏っている。
    • 尖度せんどKurtosis): 分布の尖(とが)り具合を表す数値。3より上なら尖っている、3より下ならなだらか。
    • 標準誤差$SE$Standard Error): 母平均と標本平均のズレ(推定量の推定精度)。中心極限定理により算出可能。

●度数分布表の基本用語

  • 階級Class): データを整理するために設定する区間。例えば体重の区間を小~大まで10階級に分けるなど。
  • 階級幅Class width): 各区間の上限~下限の範囲(Range)。例えば50kg60kgなど。
  • 階級値Class value): 各階級幅の中央値のことこ。例えば50kg60kgのクラス幅なら55kgなど。
  • 度数Frequency): 各階級に入れるデータの個数。ヒストグラムにできる。
  • 累積度数Cumulative frequen): 度数を階級を進めるごとに累積していく。折れ線グラフにできる。
  • 相対度数Relative frequency): 全階級で100%(=1.00)としたときの、各階級の割合のこと。ヒストグラムにできる。
  • 累積相対度数Cumulative relative frequency): 相対度数を階級を進めるごとに累積していく。折れ線グラフにできる。

●分布の種類

  • 度数分布: 身長の棒グラフ(ヒストグラム)などがその例で、同じ階級や度数などごとにデータをまとめた分布図・分布表のこと。
    • この分布図は、多くのケースで正規分布図のような 一峰性(←→ 多峰性)となるので、主に正規分布を基準に統計処理を行う(後述)。
  • 累積度数分布: 走行距離の折れ線グラフなどがその例。
  • 確率分布Probability distribution): 度数分布を割合ごとに並べて、度数分布の合計が100%になるように調整した分布図・分布表のこと。

●確率分布

  • 注意点(念押し)として、一部の標本ではなく、全データ(母集団)を網羅している必要がある。
  • 例えばサイコロで、出る目を$X$(確率変数 と呼ぶ)、確率 を$P(X)$とするならば、$P(X)=\frac{X}{6} (X=1,2,3,4,5,6)$という式が成り立つ。
  • 確率密度: 正規分布の縦軸。
  • 確率密度関数: 確率変数($X$)がある値をとる確率(確率密度)を表す関数。確率密度を積分していけば、面積になり、推測時の確率(相対度数)が分かる。
  • 連続型確率分布Continuous probability distribution): 確率変数が連続的(つまり量的データ)である場合に取る分布。$E[X]=\int_{\omega}X(\omega)dP(\omega)$
    • 正規分布normal distribution):後述。
    • 指数分布Exponential distribution
  • 離散型確率分布Discrete probability distribution): 確率変数が離散的(つまり質的データ)である場合に取る分布。$E[X]=\sum_{i=1}^{\infty}x_iP(X=x_i)$
    • 二項分布Binomial distribution):後述。
    • ポアソン分布Poisson distribution):後述。
    • 幾何分布Geometric distribution

●正規分布

  • 標準化変量Standardized Variables): 平均$\mu=0$標準偏差$\sigma=1$ になるように標準化された変数のこと。
    • 計算式: 確率変数:$X$が、
       正規分布: $N(μ,σ^2)$に従う場合に、
        標準正規分布: $N(0,1)$ に変換する。
       つまり 正規分布を標準化する式 (=標準化変量の式)は、$Z=\frac{X-μ}{σ}$
    • 「$X-μ$」は、「位置の中心化」。つまり、ずらして中心を0にしている。
    • 「$\frac{1}{σ}$」は、「サイズの標準化」。つまり、グラフ全体を縮小/拡大して、サイズを標準正規分布に合わせている。
  • 標準正規分布平均値$\mu=0$分散$\sigma^2=1$$N(0,1)$ と表記)の正規分布のこと。結果的に、標準偏差$\sigma=1$ となる。
  • 標準正規分布表: 面積の出し方に応じて何種類かある。
  • 中心極限定理CLTCentral Limit Theorem): 標本平均の確率分布が、確率変数の数($n$)が増えるにつれて、正規分布に収束する性質のこと。推測統計で重要になる原則。詳細後述。
  • 正規分布の確率密度関数 は、$f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}$
    • これはヒストグラムの縦の長さを計算していると考えられる
    • 正規分布の確率密度関数の覚え方:「このルートにパイと押しグルマで、ラインの上の位置につけ。いいね、まぁナイスな嬢たち。2つの押しグルマに嬢を乗せよう。その上、カッコえークッションから、まぁナイスなミュージックまで、に嬢は感激。」
  • 標準正規分布の確率密度関数 は、$f(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}$
    • 当然、正規分布の確率密度関数の、$\mu$に0、$\sigma$に1、を代入した計算式になる。
  • 標準正規分布の累積分布関数 は、$f(x)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}e^{-\frac{x^2}{2}}dx$
    • $\int_a^b$(インテグラル)は、$a$から$b$まで積分するという意味。
    • $dx$(ディファレンシャルx)は、「$x$で極限まで小さく微分する」という意味。
    • つまり、確率密度関数(微分)で縦の線を作り、それを横に積分してくことで、正規分布のグラフ面を作成している。
  • $\sigma$倍ごとの確率(相対度数)は決まっている。$1\sigma$は「$68.3%$」、$2\sigma$「$95.5%$」、$3\sigma$「$99.7%$」。
    • 覚え方: 「ロバさんの、救護請う。緊急なの」
  • 推測統計で使う 95%/99%信頼区間 を、$\sigma$倍で表現すると「$1.96\sigma$$2.58\sigma$」。
    • 覚え方: 「救護は一苦労。緊急に今夜」

■推測統計学

●手法

  • 推測統計学(統計的推定)には推定と検定の2つの手法がある。
  • 推定Estimation): 母集団(後述)の特徴を、標本の特徴から推測すること。
  • 検定Test): 全体の平均値が想定した値と違うか、2つの群で平均値に差(有意差)があるか、を決定すること。

●母数

  • 母集団Population): 対象のすべての値を含むデータセット。
  • 母集団は、有限母集団と無限集団に分けられる。
    • (a)有限母集団: 人口数などデータ数に限りがある集団
    • (b)無限母集団: 工場製品などデータ数が無限に広がる集団
  • 母数Number of population): 母集団のデータ数。
  • 母平均$\mu$Population mean): 母集団の全データを足して、データ数で割る。
  • 母分散$\sigma^2$Population variance): 母集団分布のばらつきを表す。$\sigma^2=\frac1n\sum_{i=1}^n(x_i-\overline{x})^2$
  • 母標準偏差$\sigma$Population standard deviation): 母集団分布の標準偏差。$\sigma=\sqrt{\frac1n\sum_{i=1}^n(x_i-\overline{x})^2}$
  • 標本平均から予測した母平均$\hat{\mu}$
  • 標本分散から予測した母分散$\hat{\sigma^2}$
  • 標本分散から予測した母標準偏差$\hat{\sigma}$

●標本統計量

  • 標本統計量Sample statistics): 標本データの基本的な特徴を表す値。
  • 標本平均$\overline{X}$$m$Sample mean): 全標本データを足して、標本データ数で割る。
  • 標本分散$S^2$Sample variance): $S^2$ と表記。標本(標本数=$n$)分布のばらつきを表す。$S^2=\frac1n\sum_{i=1}^n(x_i-\overline{x})^2$。この数値は基本的に使われない。
  • 標本の場合は 不偏分散$U^2$Unbiased Variance)を使う: $U^2$ と表記。標本(標本数=$n$)分布のばらつきを表す。ズレを調整するため「$n-1$」する必要がある。$U^2=\frac1{n-1}\sum_{i=1}^n(x_i-\overline{x})^2$
  • 標本標準偏差$S$$SD$Sample standard deviation): $S$ と表記。2乗されている分散の値の縮尺を、累乗根により元データと同じレベルに戻した値。母集団分布の標準偏差。$S=\sqrt{\frac1n\sum_{i=1}^n(x_i-\overline{x})^2}$
  • 標本の場合は 不偏標準偏差$U$Unbiased Standard Deviation)を使う: $U$ と表記。標本(標本数=$n$)分布のばらつき(※単位が元に戻っている)を表す。

●中心極限定理

  • 中心極限定理CLTCentral Limit Theorem): 標本平均の確率分布が、確率変数($n$)の数が増えるにつれて、正規分布に収束する性質のこと。

「平均$\mu$、分散$\sigma^2$、で正規分布する母集団から無作為に標本を抽出した場合、
 標本$\overline{X}$の数「$n$」が増えれば増えるほど、
平均$\mu$、分散$\frac{\sigma^2}{n}$の 正規分布 に近似していく。」

  • 【参考】標本平均の式: $\overline{X}_n=\frac1n\sum_{i=1}^nX_i$(=母集団から$n$個サンプリングして、$1$~$n$個まで全部足し合わせてから、それを単純に$n$個で割る)。
  • 標本平均の分散が$n$で割られていることに注意。$\frac{1}{n}$倍。
    • $n$が大きければ大きいほど、ばらつきが小さくなる(=正規分布が細高くなる)ことを意味する(= 中心限定定理)。
  • 同様に、母集団の標準偏差は$\sigma$なのに対し、標本平均の標準偏差は$\frac{\sigma}{\sqrt{n}}$になる。$\frac{1}{\sqrt{n}}$倍。
  • 例題:「新成人の平均身長を推定したい。母集団から100人分をランダムに抜き出して標本の平均身長を調査した。標準偏差が10と見積もる場合、この標本の平均身長は、母集団の平均身長(真値)とどれくらい ずれ ているか(標本標準誤差SEMStandard Error of the Mean: 母平均と標本平均のズレ)を答えよ。」
    • $n=100$、$\sigma=10$となり、標本平均の標準偏差の式「$\frac{\sigma}{\sqrt{n}}$」により、$\frac{10}{\sqrt{100}}=1$となる。
    • これが意味するのは、母集団と標本で$\pm1$程度しか ずれ ていないということ。
    • $n$の値が大きくなるとさらに分母が大きくなるので、ずれ はさらに狭まっていく(大数の法則)。
  • このように、中心限定定理の存在意義は「誤差(ずれ)を数学的にしっかりと評価するためにある」と言える。

●推定の種類

  • 推定には、点推定と区間推定がある
  • 点推定Point estimation): ピンポイントで母数を予想すること。例えば「ずばり、母数は25でしょう」のような感じで。
  • 区間推定Interval estimation): 区間で母数を予測すること。例えば「95%の確率で、母数は10~25の区間でしょう」のような感じで。

●点推定

  • 点推定: ピンポイントで母数を予想すること。例えば「ずばり25でしょう」のような感じで。
  • 推定量: 確率変数のこと。
  • 母数$N$): 母集団の大きさ。母集団に含まれるデータの総数。
  • 標本数$n$): 標本の大きさ。抽出した標本の総数。
  • (1)平均の点推定(○標本平均を利用): 母集団は無理だから、ランダムサンプリングした標本で平均を取ること、つまり標本平均。$\overline{X}=\frac{X_i+\cdots+X_n}{n}=\frac{1}{n}\sum_{i=1}^nX_i$。確率変数$X_i+\cdots+X_n$の総和を、総数$n$で割ると、標本平均$\overline{X}$(当然、これも確率変数になる)が求まる。
  • (2-1)分散の点推定(×標本分散を利用): 母集団は無理だから、ランダムサンプリングした標本で分散を取ること、つまり標本分散。$S^2=\frac{(X_1-\overline{X})^2 + \dots + (X_n-\overline{X})^2}{n}$。確率変数$X_i+\cdots+X_n$の各値と標本平均の差を二乗した偏差の総和を、総数$n$で割ると、標本分散$S^2$(当然、これも確率変数になる)が求まる。
  • (2-2)分散の点推定(○不偏分散を利用): 標本分散は$n$が小さいときにズレが大きいため、$n-1$の 不偏分散 を使う必要がある。$U^2=\frac{(X_1-\overline{X})^2 + \dots + (X_n-\overline{X})^2}{n-1}=\frac{n}{n-1}\frac{(X_1-\overline{X})^2 + \dots + (X_n-\overline{X})^2}{n}=\frac{n}{n-1}S^2$。確率変数$X_i+\cdots+X_n$の各値と標本平均の差を二乗した偏差の総和を、総数より1小さい値$n-1$で割ると、不偏分散$U^2$(当然、これも確率変数になる)が求まる。この式は、標本分散を$\frac{n}{n-1}$倍したものと見ることもできる。
    • 分母を$n-1$にする理由: 下記の3つの性質を有しているため、推定量として好ましいから。ここで、母数を$\theta$(真の値)、推定量を$\hat{\theta}$(確率変数)と置く。
      • (a)一致性: $n$が大きくなれば、すなわち標本の数が増えれば、推定量$\hat{\theta}$は母数$\theta$に限りなく近づくという性質(確率収束)。
      • (b)有効性: 推定量の分散が小さいほど、精度が良いという性質。
      • (c)不偏性: 推定量$\hat{\theta}$の期待値は母数$\theta$と等しくなるという性質。$E[\hat{\theta}]=\theta$。これを使って上記の点推定の式を解いていく。
        • 標本平均の期待値は、$E[\overline{X}]=\mu$。$E(X_i)$は、真の母平均そのものであること($E(X)=\mu$)を意味する。
        • 標本分散の期待値は、$E[S^2]=\frac{n-1}{n}\sigma^2$。$E(S_i)$は、真の母分散$\sigma^2$を$\frac{n-1}{n}$倍したものであること($E(S_i)=\frac{n-1}{n}\sigma^2$)を意味する。これだと、特に標本数$n$が少ないとき、真の分散を過小評価してしまうことが分かる。よって標本分散ではなく不偏変数を使う。
        • 不偏分散の期待値は、$E[U^2]=\sigma^2$。$E(U_i)$は、真の母分散$\sigma^2$そのものであること($E(U_i)=\sigma^2$)を意味する。
        • 不偏分散を使う直観的な理由: 最小~最大まですべてそろった母数の平均よりも、その範囲内からランダムに抽出した標本は、当然ながら範囲が狭まっているわけで、ばらつき(分散)を過小評価することになる。

●区間推定の基礎

  • 区間推定Interval estimation): 区間で母数を予測すること。例えば「95%の確率で、母数は10~25の区間でしょう」のような感じで。
  • 信頼区間confidence interval): ありうる母数の入るべき区間。
  • $\sigma$倍ごとの確率(相対度数)は決まっている。
    • $1\sigma$区間に収まる確率は「$68.3%$
    • $2\sigma$区間に収まる確率は「$95.5%$
    • $3\sigma$区間に収まる確率は「$99.7%$」。
    • 覚え方: 「ロバさんの、救護請う。緊急なの」
  • 95%信頼区間: $\sigma$倍で表現すると「$1.96\sigma$」。
    • 算出される信頼区間のうち、95%が母数(母平均など)を含む、ということ。
    • 覚え方: 「救護は一苦労」
    • 「99%」信頼区間 を$\sigma$倍で表現すると「$2.58\sigma$」(覚え方: 「緊急に今夜」)
  • 母集団データのみでの95%信頼区間: $f(x) = -1.96 \leq \frac{(x-\mu)}{\sigma} \leq 1.96$
    • これは、データ$x$をズレ中心化&サイズ標準化して標準正規分布に従わせた上で、平均からの距離(標準偏差$\sigma$の倍数)で範囲値を出している、ということ。$95%$なら、左右に$1.96\sigma$の距離になる。

●中心極限定理を使った区間推定

  • 条件1: 母集団が正規分布している
  • 条件2: 母分散($\sigma^2$)/母標準偏差($\sigma$)が既知
  • 条件3: 母平均$\mu$)が「未知」←これを区間推定する
  • 中心極限定理より、標準偏差は$\frac{1}{\sqrt{n}}$倍となる。
    • よって「母数(この場合、母平均$\mu$)の95%信頼区間」を求めるための統計量 $Z$ の計算式は以下のようになる。
    • $Z=\frac{(\overline{X}-\mu)}{\frac{\sigma}{\sqrt{n}}}$
  • 標本データにおける95%信頼区間: $-1.96 \leq \frac{(\overline{X}-\mu)}{\frac{\sigma}{\sqrt{n}}} \leq 1.96$
    • これは、標本データの標本平均$\overline{X}$をズレ中心化&サイズ標準化して標準正規分布に従わせた上で、平均$0$からの距離(標準偏差$\sigma$の倍数)で範囲値を出している、ということ。$95%$なら、左右に$1.96\sigma$の距離になる。
  • 母分散($\sigma^2$)/母標準偏差($\sigma$)が分かっていれば、この計算式から、母平均($\mu$)の値を算出できる。

●T分布を使った区間推定

  • 条件1: 母集団が正規分布している
  • 条件2: 母分散($\sigma^2$)/母標準偏差($\sigma$)が「未知
  • 条件3: 母平均$\mu$)が「未知」←これを区間推定する
  • 母平均 を調べたいとき、母集団に関して何も分からなければ、T分布を使う。そのための、 統計量 $T$ を計算する式は以下のようになる。
    • $T = \frac{(\overline{X}-\mu)}{\frac{U}{\sqrt{n}}}$
    • 統計量 $Z$ の「$\sigma$」が「$U$」に置き換わっただけ。不偏分散$U$であることに注意。
      • 標本分散で、$T = \frac{(\overline{X}-\mu)}{\frac{S}{\sqrt{n-1}}}$としても同じ意味。
  • 標本データにおける95%信頼区間: 統計量 $T$ でT分布の数値を調べる。
    • 自由度が $n-1$ になることに注意する。
  • この計算式から、母平均($\mu$)の値を算出できる。

●カイ二乗分布を使った区間推定

  • 条件1: 母集団が正規分布している
  • 条件2: 母分散$\sigma^2$)/母標準偏差($\sigma$)が「未知」←これを区間推定する
  • 条件3: 母平均($\mu$)が「未知
  • 母分散 を調べたいとき、母集団に関して何も分からなければ、カイ二乗($\chi^2$)分布を使う。そのための、 統計量 $W$ を計算する式は以下のようになる。
    • $W = \frac{(n-1)U^2}{\sigma^2}$
    • 公式のように「$(n-1)$かける不偏分散$U^2$、オーバー、母分散$\sigma^2$」と覚えるとよい。
      • 分子の$(n-1)$は、不偏分散計算時の分母$(n-1)$との調整(=かけると$1$)をしているため。
      • あとは、母分散、分の、不偏分散、で統計量を出している。
      • 標本分散で、$W = \frac{(n)S^2}{\sigma^2}$としても同じ意味。
  • 標本データにおける95%信頼区間: 統計量 $T$ でT分布の数値を調べる。
    • 自由度が $n-1$ になることに注意する。
  • この計算式から、母平均($\mu$)の値を算出できる。

Visual Studio Code+Markdownでチャート/グラフ/図を描画するには?

日ごろ、原稿以外のすべてのテキストをMarkdownフォーマットで書くようになってしまっているのですが、数式はLaTeXコマンドで書いています。数式があると、棒グラフや折れ線グラフも書きたくなるケースは多いと思います。「どうやって書くんだろう?」とググりまくってみて、なかなか解決策がヒットしなかったので、同じように時間を無駄にしないように、ここで情報提供しておきます(※自分が書き方とかを見返すための忘備録でもありますが)。

Markdown Preview Enhanced拡張機能と数式(LaTeX)

そもそも、数式のLaTeXコマンドは$<数式のLaTeXコマンド>$ の形で自然に書いていたのですが、これは、

という拡張機能のおかげでした。。例えば、

f:id:misshiki:20190816152900p:plain
LaTexコマンドによる数式の例

のように書くと(※一見、難しそうなコマンドに見えますが、いったん覚えると書き方の法則はシンプルで難しくないです)、Markdown Preview EnhancedによるそのMarkdownプレビューは、

f:id:misshiki:20190816153049p:plain
LaTeXで数式を書いた場合のMarkdowプレビューの例

のような表示になります(※なお、背景が黒いのは、自分が黒いスタイルシートを設定しているためです)。

Markdown Preview Enhanced拡張機能によるグラフ描画

このMarkdown Preview Enhanced拡張機能で図も書けることは何となく知っていましたが、折れ線グラフのようなチャートもデフォルトのままで書けます。それを紹介します。

続きを読む

ML @ Loft #3 Recommendation 聴講ノート

※これはセミナー聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

LT形式で話の展開が速くあまりメモれず。

ML @ Loft #3 Recommendation - 2019/06/21(金) 19:00〜

7:00PM–7:05PM はじめに

  • 対象:普段から手を動かして機械学習するのが好きで、機械学習運用における課題を持っている人

7:05PM–7:45PM LTセッション (10分×4セッション)

Graph Convolutional Networksを使った推薦システム

AbemaTVを支える推薦システム

  • 株式会社サイバーエージェント 前田英行 氏
  • AbemaTVにおいて運用している推薦システムについて紹介し、実運用上の課題などについて述べる
  • AbemaTVとは? 各種コンテンツを楽しめるインターネットテレビ。テレビは無料。ビデオ(オンデマンド)は一部が無料
  • 推薦機能: ビデオ番組を推薦する機能。「こちらもオススメ(見た番組から)」「視聴履歴からのオススメ(ユーザーから)」
  • 推薦システム: 大きく分けて推薦候補生成処理とリランキング処理で構成される
  • 2段階処理にすることで推薦候補を絞り計算時間を削減したりしいている
  • 課題: アクセス急増、未来の番組推薦、有料・無料の番組がある場合、シリーズものはシリーズ/エピソードのどちらを推薦するかなど

Gunosyにおけるパーソナライズシステム

  • 株式会社Gunosy 小澤俊介 氏
    • キュレーションサービスの開発やデータ分析部
  • ニュースサービスのパーソナライズを支える仕組みと課題について紹介します
  • ニュース推薦の特徴: 更新性の高さ、価値が時間減衰。→ 既存アルゴリズムは適用できない
  • 記事&ユーザーベクトルの更新、推薦API、:
    • 記事(アイテムベクトル)とユーザーベクトルをリアルタイムに更新
    • 推薦API(リスト表示):ユーザーからリクエストが来たらユーザーベクトルを取得して興味ベクトルなどをスコアリングし、記事を生成
  • 推薦システム更新の課題: ...
  • 推薦アルゴリズムの課題: コールドスタート問題、オフライン実験、遷移/時系列の問題

ユーザエンゲージメントを良くするためのターゲットの設定

  • ウォンテッドリー株式会社 久保長礼 氏
  • Wantedly Visitのレコメンデーションシステムの全体像を話をした後、ユーザエンゲージメントを良くするためのターゲットの設定方法についてお話します
  • レコメンデーションの場所: 最初のおすすめ募集、フィルタリング、キーワード検索
  • 2年前に、レコメンデーションチームが発足し、機械学習によるレコメンデーション機能を実装してきた
  • Wantedly Visitのレコメンデーション:
    • データタイプとしては、「ユーザー行動」と「ユーザーやアイテムのデータ」がある
    • ユーザーエンゲージメントスコア: サービスに対する愛着を示すスコア、、など
  • ランダムウォークで類似性を取得している
  • レコメンデーションにおけるターゲット(ランキングがユーザーにとって良かったか悪かったかを判断するための数値)

7:50PM–8:40PM ラウンドテーブル (25分 x 2テーブル)

  • 相談会・ディスカッション (LTerがファシリテーターとなり、参加者全員での技術トークの時間です。)
  • 最大6人/1テーブルほどにわかれて相談や議論など。

第42回WBA若手の会勉強会 Human-like AI実現に向けた認知科学的アプローチ 聴講ノート

※これは勉強会聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。

第42回WBA若手の会勉強会 Human-like AI実現に向けた認知科学的アプローチ - connpass

【余談】自分の大学在学中の専攻は認知科学の一翼である認知心理学で、今回の話は「認知科学」の話だったので何となく懐かしく感じました。ちなみにその当時、認知科学つながりでニューラルネットワークに興味を持ったんだけど、大学卒業からだいぶたってそれをまた学んでいるとは。

メモっているけど、スライドの内容そのままです。 あと全部はメモれていないです。興味がある人はスライドをご参考に。

講演「Human-like AI実現に向けた認知科学的アプローチ ~人間の思考過程をリバースエンジニアリングする~」

  • Cognitive science for the development of human like ai
  • 講演者:南井 優希さん(認知科学に最も興味を持っている)
  • AIに対する期待と現実(認知科学的な視点)
    • 【期待】近年、AIは騒がれており、AIが社会を変えるという認識が高まっている
    • 【現実】しかし、AIで実現できないがいろいろとあることも認識されるようになってきた
    • 機械側からではなく、人間側からアプローチすることで解決できるのでは? それが認知科学に興味を持った理由
  • 認知科学とは? ……人間の認知能力を数理モデルなど科学的に研究する学問
    • その一つのアプローチが、人間をリバースエンジニアリングする:
      • 人間の認知能力を計測して
      • 人間の認知能力を計算モデル化
      • 計算モデルを機械に実装
    • 機械は分類と回帰。しかし人間は世界を解釈・説明する
      • 例えば馬に引きずられている人間の写真を見て……:
        • 機械はあらかじめ決められた範囲でしか答えを出せない
        • 人間は物事をさまざまな確度から考え、多くの情報を理解する
  • 人間の認知的基盤例:
    • 直観心理学: 人間が直観的に行動の意図を推測できること
    • 直観物理学: 人間が瞬時的に物理学をイメージして行動すること
    • 構成性: カメラを分解した図の例。それらを組み合わせて考えられること
  • 直観心理学について:
    • 例えば書類を持っている人が困っている動作をすると、1才そこそこの赤ちゃんが行動の意図を理解・推測して、ドアを開けたりして助けてあげる
    • 例えば○のブロックが山を登る際に、△のブロックは助けるが、□のブロックは邪魔する例を赤ちゃんに見せる。すると、△のブロックを好んで選ぶ(他社の気持ちが理解できる)
    • ではこのとき、人間の頭の中では何が起きているのか? その研究例を示す
      • 心の理解: 人間は、他者の行動に基づき、その心を推測することができる
      • 信念と欲求に基づいた行動計画をモデル化:
        • 例えば……:
          • 行動:Aくんは日曜日に図書館に行った
          • 欲求:本を借りたい
          • 信念:借りた本は図書館にあるし、日曜日も図書館は開いている
        • 仮想シナリオを設計。それを人間の被験者と機械学習のモデルで学習させて、欲求や信念を予測させる。それらを比較した
        • 結果としては、ベイジアンモデルによる推測結果が、人間の推測結果と強く相関していた
    • ……(急な作業が発生してこのあたりメモれず)……
  • 直観物理学について:
    • ……(急な作業が発生してこのあたりメモれず)……
  • 構成性について:
    • 人間は物事を要素に分解して考える:
      • 例えばセグウェイ。ハンドルと支柱と車輪に分解して考えることで、動作を推測できる
      • 同じ物体の識別、新しい例の生成、新しい概念の生成などを、人間はできる。これを検証した論文がある
      • 新しい文字の学習: 同じ文字の識別、新しい例の生成、新しい文字の生成を検証した結果、人間と遜色のないベイジアンモデルが作れた

質疑応答

  • 認知科学の対象領域は、以前と比べると広がっている
  • 参考文献では、ベイジアンモデルで、直観心理学&直観物理学&構成性という基盤が提案されていただけで、これが認知科学の共通アプローチというわけではない
  • ベイジアンモデルで精度が良いが、人間はベイズなのかという点についてはまだ議論があり、科学的に実証できる段階ではない
  • 人間の内面をモデル化することで、なぜ世界を解釈できるのか? このモデルは、世界を解釈するためのツールの1つであると理解している
  • 人はバイアスがあるが、今回の参考文献では考慮されていない。認知科学では、属性ごとに区切って実験することはある
  • 人はモデルを持っているとして、それは意識とどういう関係があるのか? 意識や感情については認知科学ではなく別領域で研究されており結びついてはいない

Visual Studio CodeのRemote-SSH機能で、リモートのコードを触る方法

 2019年6月6日に、Visual Studio Code(VS Code)のMay 2019 (version 1.35)【安定版】がリリースされ、リモート開発(プレビュー版)拡張が利用できるようになりました。これはどういう機能かというと、サーバー上のファイルを、あたかもローカルにあるファイルのように編集できる機能です。

f:id:misshiki:20190615201409p:plain
図01 Visual Studio Code リモート開発の実行イメージ

 利用ケースを挙げるなら、例えば「機械学習でGPU付きのUbuntuサーバーやクラウド環境を利用したい。でもその開発・実装は、普段使いのWindows上のVS Codeで行いたい」といった場合に便利です。機械学習ではJupyter Notebookでも、リモート上のファイルの編集はできるので開発には困らないのですが、VS Codeを使ってコードを書きたいという場合に、この機能が役立ちそうです。

 わたし自身は、JetBotのコードとかもVS Codeで触れたらいいなぁと思って試したのですが、JetBotの基盤であるJetson Nanoの「Linux aarch64」には、このリモート開発機能が対応していなかったです(参考:Remote SSH: Support Linux aarch64 · Issue #60 · microsoft/vscode-remote-release)。残念...。

 とりあえず、Ubuntu 18.04のコンピューターにリモート接続してみました。まだ、世の中にある手順の情報などが洗練されていないようなので、わたしが実行した手順と注意ポイントを、このブログエントリでは紹介します。接続にはSSHを使うので、リモート側にSSHサーバーのインストールが必要です(その手順は割愛)。

(1)Remote Development拡張をインストール

 まずは、作業したいローカル環境(筆者の場合はWindows)上のVS Codeに、Remote Development拡張をインストールします。

f:id:misshiki:20190615201428p:plain
図02 Remote Development拡張のインストール(Webページから)

 上記リンク先から、もしくは次のようにVS Code上からインストールできます。

f:id:misshiki:20190615201444p:plain
図03 Remote Development拡張のインストール(VS Codeページから)

 インストールが完了したら、SSH接続先のホストを構成ファイルで指定します。

(2)SSH構成ファイルで接続先ホストの指定

 Windowsであれば[F1]キーを押すか、左下の[管理](歯車)タブ-[コマンド パレット]から、コマンドパレットを出して、「remote-ssh」などと入力。リストに出る[Remote-SSH: connect to Host...]、[Cofigure SSH Hosts...]、[~/.ssh/config]の順にクリックしていきます(※「~/.ssh/config」以外にSSH構成ファイルを置くこともできますが、ここでは典型的な場合として説明)。

f:id:misshiki:20190615201503p:plain
図04 SSH構成ファイルを開く手順

 これにより、SSH構成ファイルが開かれるので、Host(管理用の名前)、HostName(ホスト名)、User(ユーザー名)、IdentityFile(公開鍵認証で使う秘密鍵のファイル)を指定します。

f:id:misshiki:20190615201517p:plain
図05 SSH構成ファイルの設定内容

 私の場合は以下のように入力しました。

Host masa-i@dapc86-ubuntu.d-advantage.com
    HostName dapc86-ubuntu.d-advantage.com
    User masa-i
    IdentityFile ~/.ssh/id_rsa

 ここでは公開鍵の設定が済んでいる前提で手順を書きましたが、すんでいない場合の手順を(3)で示しておきます。ちなみにパスワード認証も可能でしたが、推奨は公開鍵認証のようです。

(3)SSHの公開鍵認証について

SSHクライアントのインストール

 まずはローカルOSに、SSHクライアントをインストールします。PuTTY for Windowsを使おうとしたらサポートされていなかったです。Windows 10であればWindows OpenSSH Clientを下記リンク先を参考にインストールしてください。

 OpenSSHのインストール状況を確認するため、Windows 10の[スタート]メニューを右クリックして、[アプリと機能]-[オプション機能の管理]を開いたところ、自分の場合はインストール済みでした。

f:id:misshiki:20190615201531p:plain
図06 OpenSSHのインストール状況の確認

 SSHクライアントがインストールできたら、公開鍵(id_rsa.pub)&秘密鍵(id_rsa)を生成します。

SSHの公開鍵(id_rsa.pub)&秘密鍵(id_rsa)の生成

 PowerShell(管理者モード)を使って生成する手順を紹介します。

 まずは[スタート]メニューを右クリックメニューから[Windows PowerShell(管理者)]を実行します(※設定によってはここが[コマンド プロンプト]になっていますが、PowerShellを何とかして開いてください...)。

 あとは、順番にコマンドを打ち込んでいきます。次の画像のようになりますが、その下に、わたしが打った内容を参考までに載せておきます。

f:id:misshiki:20190615201545p:plain
図07 SSHの鍵を生成しているところ

 ディレクトリを移動。

PS C:\WINDOWS\system32> cd ~\.ssh

 SSHの鍵を生成。鍵を保存するファイルはデフォルトの「~/.ssh/id_rsa」のままで。上書き(Overwrite)と出た場合はすでにあるので、注意してください(※上書きすると他に影響が出ます)。パスフレーズ(passphrase)は空にせずに何か入力した方がいいです。

ssh-keygen -t rsa -b 4096

 鍵ができたら、公開鍵(id_rsa.pub)をリモート接続先にアップロードします。

リモートコンピューターへのSSH公開鍵(id_rsa.pub)のアップロード

 この作業も引き続き、PowerShell(管理者モード)を使いました。

 上記のとおりに鍵を生成した場合は、以下のコマンドを順番に打ち込んでいきます。

 以下のコマンドは、以降で使うパスなどの文字列を作っているだけです。masa-i@dapc86-ubuntu.d-advantage.comは、<ユーザー名>@<ホスト名>で各自のものを入力してください。

$UserAtRemoteHost = "masa-i@dapc86-ubuntu.d-advantage.com"
$LocalSourcePublicKey = $env:UserProfile + "\.ssh\id_rsa.pub"
$RemoteTargetPublicKey = $UserAtRemoteHost + ":~/tmp.pub"

 下記のコマンドで、公開鍵をアップロードしています。途中でリモートコンピューターにログインするためのパスワードが聞かれるので、各自のものを入力してください。

scp $LocalSourcePublicKey $RemoteTargetPublicKey

 次のコマンドは、リモートコンピューター上で、アップロードした公開鍵を有効にしています。

ssh $UserAtRemoteHost "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"

 以上の手順で、わたしが打った内容を参考までに載せておきます。

f:id:misshiki:20190615201603p:plain
図08 SSHの鍵をアップロードしているところ

 念のため、実際に接続できるようになったかを、次のコマンドでチェックしてみてください(※masa-i@dapc86-ubuntu.d-advantage.comは、<ユーザー名>@<ホスト名>で各自のものを)。ログインできたら、exitなどと打ってログアウトしたら完了です。

ssh -i ~/.ssh/id_rsa masa-i@dapc86-ubuntu.d-advantage.com

 以上で準備は終わりのはずなんですけど、何度かやってみて、「ログインターミナルの表示」を設定した方がトラブルが少なかったので、(4)を説明しておきます。

(4)「ログインターミナルの表示」の設定

 メニューバーの[ファイル]-[基本設定]-[設定]から[設定]ページを開き、[設定の検索]欄に「remote ssh」と入力。左側のツリーから[拡張機能]-[Remote - SSH]を選択して、右側の設定内容にある[Remote.SSH: Show Login Terminal]にチェックを入れてください。

f:id:misshiki:20190615201617p:plain
図09 [Remote.SSH: Show Login Terminal]の有効化

 これで準備万端です。実際に、リモートファイルを開いてみましょう。

(5)Visual Studio Codeによるリモート開発

 (2)と同じ手順でコマンドパレットを開き、[Remote-SSH: connect to Host...]をクリックします。今度は、(2)のSSH構成ファイルで設定したHost管理名(この記事の場合は「 masa-i@dapc86-ubuntu.d-advantage.com」)が表示されますので、これをクリックしてください。

f:id:misshiki:20190615201632p:plain
図10 SSH接続したいリモートホストを選択しているところ

 すると途中で、[ターミナル]ウィンドウが立ち上がり(※(4)の設定をしないと立ち上がらない)、鍵のパスフレーズの入力が求められますので、各自のものを入力してください。パスフレーズが聞かれるのがこれ一回かと思いきや、何度も聞かれます(今後、改善してくれると信じています...)。

f:id:misshiki:20190615201702p:plain
図11 鍵のパスフレーズを入力しているところ

 接続に成功すると、別ウィンドウでVS Codeがもう一つ立ち上がり、[フォルダーを開く]ボタンからリモートコンピューター上を簡単に探索できます。

f:id:misshiki:20190615201713p:plain
図12 リモートコンピューター上のフォルダーを開いているところ

 あとは、リモートコンピューター上のフォルダー内のファイルが、あたかもローカルファイルのように編集できます。

f:id:misshiki:20190615201723p:plain
図13 リモートファイルをローカルファイルのように編集しているところ

 ちなみに、この状態で拡張機能をインストールしようとすると、当然ながら、ローカル環境ではなくリモートコンピューター上にインストールされます。

f:id:misshiki:20190615201734p:plain
図14 リモートコンピューター上にmarkdownlint拡張をインストールしようとしているところ

 以上です。一度つながれば快適です。