SSHを使用し追加のキーボードとマウス、ディスプレイ無しでWindows PCからRaspberry Pi 3 の初期設定+セキュリティ設定をする

この記事は、Raspberry Pi Advent Calendar 2017 - Qiita17日目の記事となります。

Google Homeを買ったら意外と面白かったため、Google Homeを軸としたスマートホーム化を試みようとしました。常時起動用PCとしてRaspberry Piを使いたくなったのですが、初期設定のためだけに追加のキーボードとマウス、ディスプレイを用意するのは面倒だったので、それらを使わずにRaspberry Pi 3の初期設定をしました。またネットワークに常時接続するためセキュリティ設定もしました。

設定する環境

Raspbian Stretch Lite(デスクトップ無しの環境)+公開鍵認証方式のSSH+ファイアウォール

使うもの

  • Raspberry Pi 3 Model B
  • マイクロSDカード(8GB以上推奨、今回は16GB。ラズパイとSDカードには相性があるらしいので注意)
  • マイクロUSB Bタイプ対応のACアダプタ
  • LANケーブル
  • Windows 10 PC(試していないがmacOSLinuxからの接続も当然できるはず。一方Windowsのバージョンが古いとopensshが使えない可能性がある)
  • PowerShell
  • PC内蔵SDカードアダプタ or 外付けSDカードアダプタ(PCでSDカードを認識させるのに利用)

タイトルの通り、今回はRaspberry Piの初期設定のためだけに別途キーボードやディスプレイを用意することはありません。SDカードには注意が必要で相性があるそうです。詳しくはこちらをご覧ください。

主な参考資料

前半はHeadless Raspberry Pi Setup、後半はRaspberry Piを攻撃から守るための手順 を特に参考にしました。

Raspbian LiteのイメージをダウンロードしSDカードにイメージを焼く

英語が分かる方は下のサイトをご覧ください。

www.raspberrypi.org

まず下のサイトから"RASPBIAN STRETCH LITE"のzip版を選択しダウンロードします。

www.raspberrypi.org

次にSDメモリカードフォーマッターを使用してSDカードをフォーマットします。

SDカードをフォーマットしたら、SDカードにイメージを焼くソフトであるEtcherをインストールします。

Etcherを使用して最初にダウンロードしたイメージを用意したSDカードに焼きます。

最後にSDカードのbootパーテーションに"ssh"という名前のファイルを作成します。拡張子はつけないでください。この操作はデフォルトで無効化されているSSHを有効にするために必要です。

Raspberry Piの起動

  • SDカード
  • ACアダプタ
  • LANケーブル

Raspberry PiにつなげてRaspberry Piを起動します。

SSHRaspberry Piに接続

まず、LANにつながっているデバイスを探索するために、Advanced IP Scannerをインストールします。scanを開始し、"raspberrypi"という名前のデバイスが見つかることを確認します。

次に、WindowsからSSH接続するために、MS公式のOpenSSHモジュールを使用します。下のサイトを参考にしました。

azure.sios.jp

まずここからOpenSSH-Win64.zipをダウンロードし、任意の場所へ展開します。今回は 'C:\Program Files\' に展開しました。

PowerShellを管理者権限で実行します。その上でPowerShellの実行ポリシーをRestrictedに変更します。

PS Get-ExecutionPolicy
Restricted
PS Set-ExecutionPolicy RemoteSigned
PS Get-ExecutionPolicy
RemoteSigned

次にインストールスクリプトを実行します。

PS cd 'C:\Program Files\OpenSSH-Win64\' #展開場所に移動
PS .\install-sshd.ps1
# 環境変数を追加
PS $path = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
PS $path += ";c:\Program Files\OpenSSH-Win64"
PS [System.Environment]::SetEnvironmentVariable("Path", $path, "Machine")

そしてPowerShellを再起動すると、sshが実行できるようになるのでRaspberry Piに接続します。

PS ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           destination [command]
PS ssh pi@raspberrypi.local 
password: #初期パスワードはraspberry
pi@raspberrypi: ~ $ #SSHで接続出来た

raspi-configからの各種設定

ここを参考にします。

タイムゾーンの設定

Raspberry Piの時刻設定をGMTから東京のタイムゾーンに変更します。

"4 Localization Options" > "I2 Change Timezone" > "Asia" > "Tokyo"

パーティションの拡張

初期イメージのままではパーティション2GBのみしか使用できないので、フルに活用するためにパーティションを拡張します。

"7 Advanced Options" > "A1 Expand Filesystem"

ホスト名変更

将来的にRaspberry Pi複数運用もありえるかもしれないので、名前が重複しないように"raspi01"のようにホスト名を変更します。

"2 Network Options" > "N1 Hostname"

raspi-configを終了するとrebootするか聞かれるため、素直にrebootします。

Wi-fi設定

Wi-fiに接続します。raspi-configからWi-fiを設定するとWi-fiパスフレーズが平文で保存されるためセキュリティホールになります。

$ sudo sh -c 'wpa_passphrase SSID パスフレーズ >> /etc/wpa_supplicant/wpa_supplicant.conf'
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
# #psk="*************"の行を削除する
$ sudo reboot

Wi-fiにつながっているはずなので、LANケーブルを抜きこれ以降は無線で接続します。

アカウント設定

アカウント名:pi、パスワード:raspberryは危険すぎるので、変更します。参考はこちらです。

まず、あとで無効化するのですが、念のためpiのパスワードを変更します。

$ passwd

次にアカウントを追加し、パスワードを設定します。

$ sudo /usr/sbin/useradd --groups sudo -m user # userは好きなユーザー名に置き換え
$ sudo passwd user

ルートパスワードを設定し、piを無効化します。

$ sudo passwd root
$ sudo passwd --lock pi

ここでpiをログアウトしuserにログインすると、ログインシェルがshで非常に悲しいこととなるので、デフォルトのシェルをbashに変更します。

$ sudo vi /etc/passwd
# user:x:1001:1001::/home/newuser:
# ->user:x:1001:1001::/home/newuser:/bin/bash に変更

ここでpiからexitでログアウトし、newuserで接続します。

公開鍵認証方式での接続によるSSHの保護

平文パスワードでSSHに接続するのは危ないので、公開鍵認証方式に変更します。

公開鍵・秘密鍵の生成

まず、公開鍵、秘密鍵をPC側で生成します。

PS ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\<User>/.ssh/id_rsa): # そのままで良い
Enter passphrase (empty for no passphrase): # 秘密鍵を保護するパスワードを設定(安全な場所にメモすること)
Enter same passphrase again: # パスワード再入力

成功していれば、~/.ssh/id_rsa秘密鍵が、~/.ssh/id_rsa.pubに公開鍵が保存されます。

公開鍵をRaspberry Piに登録する

公開鍵をRaspberry Piに送り、登録します。

 cat ~/.ssh/id_rsa.pub | ssh user@raspi01.local 'mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys'

ここでsshに接続するとパスワードではなくRSAパスフレーズが聞かれるようになります。

PS ssh user@raspi01.local
Enter passphrase for key 'C:\Users\User/.ssh/id_rsa': # パスワードじゃない

SSHサーバーの設定変更

/etc/ssh/sshd_configを変更して、SSHをより強固にします。

$ sudo vi /etc/ssh/sshd_config
Port 50000 # 49152-65535のうち好きなポート番号
PermitRootLogin no
# RSAを使った公開鍵認証を明示的に使えるようにする
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
# 平文パスワード禁止
PasswordAuthentication no
# 空文パスワード禁止
PermitEmptyPasswords no
# Pluggable Authentication Modules(PAM)を無効化
UsePAM no
$ sudo systemctl restart ssh

SSHで接続できるか確認するために別のシェルで接続します。

PS ssh user@raspi01.local -p 50000

ssh configの設定

ポート番号をいちいち打ち込むのは面倒なのでssh configを設定します。

PS vi ~/.ssh/config
Host raspi01
  HostName raspi01.local
  User user
  Port 50000
  ServerAliveInterval 1
  ServerAliveCountMax 1
PS ssh raspi01 # これで接続できるはず

パッケージの更新

パッケージを更新します。

まずデフォルトの接続先設定だと極端に遅くなることがあるため、近くのサーバーを直接設定します。ミラーサーバーの一覧はこちらです。

$ sudo vi /etc/apt/sources.list
#deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi # コメントアウト
deb http://ftp.jaist.ac.jp/raspbian/ stretch main contrib non-free rpi

例えば上のようにします。

$ sudo apt-get dist-upgrade
$ sudo reboot
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get rpi-update
$ sudo reboot

時間がかかりますが、これでパッケージが更新できます。

vimのインストール

一応何もしなくてもvimは使えるのですが、デフォルトのよりも新しくインストールするほうが使いやすいそうなので、インストールします。emacs派はそっちで。

$ sudo apt-get install vim

ファイアウォールの設定(執筆中)

ufwを使います(現在作成中)。

参考資料

https://hackernoon.com/raspberry-pi-headless-install-462ccabd75d0

www.bleepingcomputer.com

qiita.com

Raspberry Pi 3 Model B をインストールしてSSH接続できるようにしてみる – CLARA ONLINE techblog

azure.sios.jp

makezine.jp

www.feijoa.jp

qiita.com

qiita.com

www.llul.info

2017年衆議院議員総選挙の小選挙区情勢調査を選挙結果と比較分析 & 独自予想方法を考える

この記事は eeic Advent Calendar 2017 の1日目の記事です。

qiita.com

選挙が行われるたびに、新聞社などの報道機関は選挙情勢を報じています。

その選挙情勢はどれぐらい当たるものなのか、気になったことはないでしょうか。

今回は、各社の各選挙区に対する選挙情勢と選挙結果の関係を統計学/機械学習の知識を勉強しつつ調べてみました。またその結果を元に独自の予想を立てるとしたらどうすればよいかも検討します。

このブログを読むと……

下の文章の意味をちゃんと取れるようになります。

自民門山と希望田嶋が互角の激戦となっている。

過去二回、比例復活の門山は自民支持層を固め、公明との連携をフル活用。自民党幹部らの応援を受け、選挙区での勝利を狙う。

民進から希望に移った田嶋は、連合加盟の労組の支援を受けるなど民進時の支持層を固めつつ、無党派層にも浸透する。

共産大野は、支持層を固めて票の上積みを目指す。維新長谷川は支持に広がりが見られず、厳しい。

衆議院議員総選挙について

f:id:nakachan94:20171125194916p:plain

衆議院議員総選挙について軽く説明します。

まず、衆議院とは国会に2つある議院の1つです。もう1つの議院は参議院です。議員定数は465人です。

各々の議員の任期は4年ですが、衆議院が解散された場合は任期満了前に失職します。2017年の前の総選挙は2014年12月にあったため、2017年9月の解散で失職した人の任期は約2年9ヶ月だったということになります。また次の総選挙は2021年10月までには必ずあります。

総選挙では、小選挙区で289人、比例代表で176人、合計465人を選出します。

その他、詳しい情報はWikipediaや書籍などをご覧ください。

衆議院議員総選挙 - Wikipedia

選挙情勢について

選挙情勢の報道で多くの人が目にしているのは、下の記事のような議席数をいくつ取るかの予想だと思います。

mainichi.jp

ですが、本ブログで分析の対象とする選挙情勢は下の記事のように各選挙区の情勢を調査したものです。

www.tokyo-np.co.jp

例えば、千葉1区の情勢はこのように書かれています。

自民門山と希望田嶋が互角の激戦となっている。

過去二回、比例復活の門山は自民支持層を固め、公明との連携をフル活用。自民党幹部らの応援を受け、選挙区での勝利を狙う。

民進から希望に移った田嶋は、連合加盟の労組の支援を受けるなど民進時の支持層を固めつつ、無党派層にも浸透する。

共産大野は、支持層を固めて票の上積みを目指す。維新長谷川は支持に広がりが見られず、厳しい。

新聞ですので、当然自然言語で書かれています。ですが、このままの状態では分析が極めて困難です。

実は既にどの言葉がどのような意味を持っているのかを調べた人がいます。

上のツイートによれば「独走」は区分S、「優勢」は区分A、「やや優勢」は区分B、 「大激戦」は先に名前が書かれているほうが区分C+後に名前が書かれているほうが区分C-、 「懸命に追い上げ」が区分D、「追い上げに懸命」が区分E、「巻き返しを図る」が区分F、「厳しい」が区分Gなどとなっています。

「独走」、「優勢」、「やや優勢」、「厳しい」ぐらいは直観的に分かりますが、「大激戦」の名前の前後や「懸命に追い上げ」と「追い上げに懸命」と「巻き返しを図る」の差などは難しいですね……

先程の千葉1区の例であれば、

自民門山→C+、希望田嶋→C-、共産大野→F、維新長谷川→G

になり、自民と希望の接戦だとより分かりやすくなります。また自然言語ではなくカテゴリーデータになるため、分析が行いやすくなります。

さらに、先程のツイートをした方が衆議院選挙における各社情勢調査の結果をまとめてくださっています。

twitter.com

このデータを用いて2017年衆議院選挙の情勢調査を分析します。とりあえず小選挙区だけでも分析します。

分析目的・内容

  • 情勢調査の精度を知る

    • 小選挙区
      • 区分(S, A, ... , F, G)と当選確率の関係
    • 比例代表(後日追記予定)
      • 区分の仕方を考える
      • 考えた区分と議席数の関係を調べる
  • 各社のデータをまとめると、よりよい結果が出るかどうかを知る

第一の分析目的は情勢調査の精度を知るという好奇心駆動型ですが、それだけでは探索範囲が広すぎるのでもう少し絞り込むために、細かい目的を設定します。

  • 議席予想
    • 趣味で行う議席予想に役立つデータが欲しい

他にも戦略選挙や選挙運動の材料などにも使えそうですが、とりあえず今回は除外します。

小選挙区の分析

それでは区分と

  1. 当選確率
  2. 当落線差

の差の順番で分析を行います。

データを打ち込む

twitter.com

上のサイトのデータ+当選したかどうか+得票率のデータを下の図のようにエクセルに打ち込みます。

情勢調査は6社8回分を用いています。最後の2回は読売新聞と日経新聞が合同で接戦区に対して行った調査です。

ただし、記述なしは'x'、解説ありは'-'にカテゴライズしています。

f:id:nakachan94:20171125195915p:plain

pythonpythonのライブラリを用いて、先程打ち込んだデータを解析しやすい形に読み込みます。

f:id:nakachan94:20171125200706p:plain

各社のデータを分析する

バブルチャート・当選確率のグラフを描く

まず、データの状況を見るために各新聞社のカテゴリーと当選したかどうか(小選挙区当選->1, 小選挙区落選->0)でバブルチャートを描きます。

f:id:nakachan94:20171125201513p:plain

Cより有利か不利かによって当選確率が結構変わってそうな感じがしますね。

区分による当選確率の変化を見るために横軸:区分、縦軸:当選確率で折れ線グラフを描きます。エラーバーは当選確率の95%信頼区間です。

f:id:nakachan94:20171125202440p:plain

少なくとも産経新聞日経新聞2以外では、C+とC-、つまり記事に書いてある順番の前後で当落確率が大きく違うようです。数値で示せば、C+で当選確率70%程度、C-で当選確率30%程度でしょうか。一方、産経新聞はC+とC-で当選確率の差はないのかもしれません。詳しいことは分かりませんが。

接戦と判断した人数を調べる

各区分の当選確率については分かりましたが、区分ごとの候補者数はどうなっているのでしょうか。もしC+やC-の数が多ければ、議席予想の幅が広がってしまいます。

ということで各社のデータから「接戦」であるC+、C、Cと「やや有利」、「やや不利」であるB、Dの数を数えます。図の中の数字のうち括弧でくくられていないのが「接戦」の数、くくられているのが「接戦」「やや有利」「やや不利」を足した数です。

f:id:nakachan94:20171127014107p:plain

読売新聞は「接戦」の数が多く、朝日新聞は「やや有利」「やや不利」の数が多いようです。それに比べて日経新聞毎日新聞産経新聞は接戦区の数を絞って表示しており、攻めた表現をしていることが分かります。

各社データ分析のまとめ

  • 「接戦」と表記された際の名前が出てくる順番で当選確率が大きく変化することが分かった
  • SからGの区分には一定の妥当性がありそうだと分かった
  • 読売新聞や朝日新聞時事通信は「接戦」「やや有利」「やや不利」の数が多少多かった

各社のデータを組み合わせ分析する

ここまでは各社のデータをそれぞれで分析してきましたが、ここからは組み合わせて分析を行います。

各社データの変形

本来、区分は順序尺度なのですが、データ処理をしやすくするためにSからxまでを4から-6までに割り当てて無理やり比率尺度に変換(-(解説あり)は処理方法がよく分からないためNaNに変換後、他社平均で穴埋め、読売新聞・日経新聞の2回目で調査が行われていない選挙区は他社平均で穴埋め)してしまいます。データよ、ごめん。

相関係数行列を見る

各社の相関を知るために相関係数行列を見てみます。

f:id:nakachan94:20171127021129p:plain

相関係数0.9超えです。全体として見たときに各社の調査結果はかなり似通っていることが分かります。

主成分分析をする

各社データをうまい形にまとめるにはどうすれば良いでしょうか。そうです、次元削減をしましょう。

次元削減でよく使われるのは主成分分析です。主成分分析については下の記事をご覧ください。

bdm.change-jp.com

ということで各社データに標準化(平均0、分散1にする操作)を施した上で、主成分分析を行います。その結果、得た主成分は

f:id:nakachan94:20171127025020p:plain

のようになります。第1主成分は固有値も大きく、寄与度も0.94(つまり全データの94%の情報がある)ことが分かります。 この主成分は各社のデータをうまくまとめたものと言えそうです。

この主成分を使って分析をすれば良さそうですが、主成分をよく見てみましょう。各社の情報が均等に配分されている…つまりこれは平均に似通っているのではないかと予想がつきます。各候補者に対して主成分と各社平均を散布図としてプロットしてみましょう。

f:id:nakachan94:20171127025422p:plain

極めて強い相関関係があります。ということで各社のデータをまとめる方法としては各社平均を使えば良さそうです。

各社平均と当選確率の関係を調べる

各社平均が当選確率とどのような関係があるかどうか調べます。ここはロジスティック回帰を使うのが良さそうです。

www.slideshare.net

精度は90%強です。各社平均が-2のとき当選確率は5%、-1で20%、0で50%、1で90%、2で95%ぐらいでしょうか。

(ちなみに-2以下でも当選しているのは東京18区菅直人さん(対自民)と神奈川6区の青柳陽一郎さん(対公明)です。2人とも立憲民主党であり、今回の立憲民主党の勢いを示しているような気がします。)

f:id:nakachan94:20171128200519p:plain

f:id:nakachan94:20171128201038p:plain

また予想当選確率を5分割(0-0.2, 0.2-0.4, 0.4-0.6, 0.6-0.8, 0.8-1.0)して、各分割での予想当選確率と実際当選確率をプロットしてみると、概ね予想当選確率と実際当選確率が比例していることが分かります。

f:id:nakachan94:20171128201620p:plain

接戦と判断した人数を調べる

接戦と予想した数も調べます。接戦の定義も難しいのですが、各社のC+、C-で70%前後、30%前後、B、Dの時当選確率が90%前後、10%前後、であることから、それらに定義を合わせると接戦(有利)は50%から85%(平均70%程度)、接戦(不利)は15%から50%(平均30%程度)、やや有利/不利は85%から95%(平均90%程度)、5%から15%(平均10%程度)とします。

f:id:nakachan94:20171128210245p:plain

産経新聞日経新聞2よりは接戦と判断した人数は多いですが、その他の予想よりは接戦数は少ない人数になっています。

各社データを組み合わせた分析のまとめ

  • 各社のデータをまとめる方法は平均で良さそう
  • まとめると接戦数を減らすことができる

各社平均を使う手法の予想精度を交差検証で調べる

K-分割交差検証を行います。比較対象として各社の予想を使います。今回は936人を5分割し交差検証します。

f:id:nakachan94:20171128233329p:plain

灰色が各社個別の結果、青色が各社平均を使った結果です。予想失敗数は各社平均を使うことによって減らせそうだと分かります。

小選挙区のまとめ

  • 「接戦」と表示された時の候補者名の前後で当選確率が大きく違う
  • 各社平均を使うと予想精度も上がりそうで、接戦数を減らせそう
    • つまり全体的に良い予想となりそう

比例代表の分析(今後追記予定)

データを打ち込む

表現の分析

使われた表現を分類する

表現と議席数の関係を調べる

今回用いる分類

各社のデータを分析する

各社のデータを組み合わせ分析する

各社平均を使う手法の予想精度を交差検証で確認する

比例代表のまとめ

感想

  • 予測・戦略投票の材料が集まったので良かった
  • 情勢調査と実際の結果は意外と違ったりする(各社平均-1から1の間であれば結果は意外と分からない)
    • 東京18区や神奈川6区は情勢調査と結果が大きく違った
  • 激戦の順番だけで当選確率が70%と30%に変化するのは予想外だった
    • 読者に分かりにくすぎないか(わざと?)
  • データの入力が1番つらい
    • 小選挙区936人×8回+比例代表11ブロック×7政党×4社のデータを打ち込む必要があった
    • どっか打ち間違えてそう
  • 自然言語クラスタリング分からなすぎる(分からなさすぎて適当にしてしまった/比例の話(今後追記予定))
  • 回帰の入り口を実践しただけだが、統計学/機械学習の奥深さをちら見できた
  • 事前にある程度予想がついてしまうが、有権者としては自分の一票で当落が決まる感が無いので面白くない
    • 予想する側としては当てたいのだが、当たったら当たったで選挙への関心を下げてしまう気がする
    • 個人的には自分の一票が議席を動かしてる感が大事だと思うのだが……

セルフツッコミ

  • カテゴリーデータを数量データに変換したのは適当すぎないか
    • でもうまくいってるように見えるし……
    • というよりダミー変数を使う方法があまりうまくいかなかった
  • 小選挙区における文言の区分は適切なのだろうか
    • でもあの区分できれいなグラフが出るということはそんなに悪くないのだろうか
  • 同じ選挙区で出馬する候補者のデータ間には相関関係があるはず→本来はモデリングに組み込むべき
    • 違う選挙区に出ている同じ政党の候補者にも相関関係がありそう→それもモデリングすべき
    • というか本当はちゃんと統計モデリングをしてベイズ統計に持っていくべきなのかもしれない
    • ただ簡易的には単純な線形回帰&ロジスティック回帰でも意外と良さげ?

参考文献

クリーンインストールしたmacOS High Sierraに0からHomebrew、LaTeX、zsh、Python、Rなどの科学技術計算開発環境を整える(2017/11版)

macOSをHigh Sierraにアップグレードをしようとしたら失敗し、クリーンインストールしました。そのため0からHomebrew、LaTeXzshPython、Rなどの環境を整えることとなったので、個人的メモも兼ねて残しておきます。

ハードウェア

MacBook ProRetina, 13-inch, Mid 2014)

macの使用目的 & Pythonなどの導入理由

  • 研究での簡単な計算、グラフ作成 → PythonLaTeX
  • 授業でのレポート作成、データ処理など → PythonLaTeX・R
  • 趣味のデータ処理、図作成 → Python
  • 普段の生活で使うコンピューターの1つ→LINE・Slack等
  • プログラミングの基盤 → Homebrew・zsh

ということでPythonzshLaTeXの環境を整えることを中心とします。

High Sierraのインストール

指示通りにiCloudを設定したりするだけなので特に書くことはありません。詳しく知りたい方は下の記事をお読みください。

wayohoo.com

Time Machineの設定

データのバックアップをさぼっていたのがクリーンインストールすることになった理由の1つなので、その教訓を踏まえて真っ先にTime Machineにバックアップを取ります。

support.apple.com

AppStoreから欲しいアプリを入れる

バックアップをしている間に、Slack・LINE・Pocket・Kindle・OneDriveなどのアプリをAppStoreを入れます。当然ですが、入れるアプリは人によって違います。

Homebrewを入れる

macOSの定番パッケージマネージャーであるHomebrewを入れます。

AppStoreからXcodeをインストール

HomebrewにはXcodeが必要なので、AppStoreからXcodeをインストールします。1時間ぐらいかかるので、待っていてください。

XCodeのCommand Line Toolsも必要なので、下のコマンドを実行します。

$ xcode-select --install

2つぐらいポップアップが出てくるのでinstallやagreeを選択します。

またライセンスを許諾する必要があるので下のコマンドも実行します。

$ sudo xcodebuild -license

Homebrewのインストール

Homebrew — macOS 用パッケージマネージャー

上のサイトからコピーしてきた下のコマンドを実行すればOKです。詳しくは上のサイトを見てください。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

その結果、

==> Installation successful !

と出れば、ひとまずはインストール成功です。またHomebrewの挙動を確認しましょう。下のコマンドを実行して

$ brew doctor
Your system is ready to brew.

となればOKです。

Homebrew-Caskを使えるようにする

Homebrew-Cask

Homebrewでインストールできるプログラムの範囲を広げるためにHomebrew-Caskを使えるようにします。下のコマンドを実行するだけです。

$ brew tap caskroom/cask

Homebrew-Caskで各種プログラムをインストールする

LaTeXzshPython等とは関係ないのですが、Homebrew-Caskを使って色々なプログラムをインストールしてみます。ここは飛ばしても問題ありません。

$ brew cask install google-chrome google-japanese-ime google-backup-and-sync
$ brew cask install visual-studio-code
$ brew cask install dropbox

文書作成環境を整備する

MacTeXをインストールする

TeX Live/Mac - TeX Wiki

LaTeXを使えるようにするためにMacTeXをインストールします。合計1時間30分ぐらいかかるので待ちましょう。

$ brew cask install mactex
#(ここでなぜか1度terminalを再起動する必要がある)
$ sudo tlmgr update --self --all
$ sudo tlmgr paper a4

Office 2016をインストールする

MacTeXのインストールとアップデートにかなり時間がかかるので、その間にOffice 2016をインストールしておきます。インストールの方法は、どのような契約を結んでいるかによって異なるので、各々お調べください。

zsh + Prezto + Solarized で使いやすいターミナルを実現する

macOSのターミナルはデフォルトで使いにくいので、zshを導入しつつ見た目も改善することによって使いやすいものに変えていきます。

zshをインストールする

mac標準のzshはバージョンが古いそうなので、Homebrewで新しいのを入れます。

$ brew install zsh

そして/etc/shellsに新しいzshのパスを追記し、起動シェルをzshに変更します。

$ sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"
$ chsh -s /usr/local/bin/zsh

ターミナルを再起動すると、zshに変わっているのが確認できると思います。最初に.zshrcなどの設定について聞かれますが、q(Quit、離脱)を選択し、設定ファイルの作成を後回しにします。

Preztoの導入

zshは設定を自分で色々変更することが可能であり、それが魅力の1つなのですが、私のような初心者には荷が重い作業です。

そのため設定管理フレームワークを導入することによって、他人が作ってくださった優れた設定を導入することとします。その設定管理フレームワークで有名なものの1つがPreztoです。

github.com

このPreztoを導入します。まずzshが動いている状態でgit cloneしてきます。

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

次に、zshの設定を書き換えます。4行を一度にコピペして実行することに注意してください。

$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

ターミナルを再起動するとこのようにマシなターミナルになります。更に設定を変えたい方は色々調べてみてください。

f:id:nakachan94:20171121172449p:plain

Solarizedの設定

色の設定があまり好みではないので、Solarized Darkに変更します。このような色設定になります。

f:id:nakachan94:20171121162756p:plain

Solarized - Ethan Schoonover

上のページの"Click Here To Download Latest Version"をクリックしてSolarizedをダウンロードします。

ダウンロードしたファイルを解凍するとosx-terminal.app-colors-solarizedというフォルダがあります。その中にあるSolarized Dark ansi.terminalを右クリック(2本指クリック)をすると「このアプリケーションで開く」という選択肢が出てくるので、そこから「ターミナル」を選択します。

f:id:nakachan94:20171121172525p:plain

すると下図のようなターミナルが新たに立ち上がります。

f:id:nakachan94:20171121172554p:plain

その状態でターミナル > 環境設定 > プロファイル を選ぶとSolarized Darkが選択されていると思うので、下のほうにある「デフォルト」をクリックし、Solarized Darkをデフォルトのプロファイルにします。

f:id:nakachan94:20171121181037p:plain

後はフォントのサイズを微調整すれば、見た目がいい感じのターミナルが出来上がります。こだわる人はさらにこだわってください。

f:id:nakachan94:20171121181100p:plain

pyenv + pyenv-virtualenv + AnacondaでPython環境を整備する

pyenv + pyenv-virtualenv + AnacondaでPython環境を整備します。詳しくは下のページを見てください。(anyenvを使うところ以外はこのとおりやればOK)

qiita.com

pyenvを入れる

github.com

systemのPythonとAnacondaのPythonが共存できるようにpyenvを入れます。

$ brew install pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ source ~/.zshrc

pyenv-virtualenvを入れる

github.com

このままAnacondaを入れると、pyenvとAnacondaのactivate衝突問題が発生するので、pyenv-virutualenvを入れます。

qiita.com

$ brew install pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
$ source ~/.zshrc

Anacondaのインストール

pyenvを使ってAnacondaをインストールします。Anacondaを使うと、科学技術計算に使用するライブラリを一度にインストールすることができ便利です。

まず、インストール可能なAnacondaのリストを表示させます。

$ pyenv install -l | grep anaconda

anaconda-1.4.0
...
anaconda3-5.0.0

ということでanaconda3-5.0.0が2017年11月21日現在で最新のインストールできるAnacondaです。これをインストールします。5分ぐらいかかります。

$ pyenv install anaconda3-5.0.0

インストールが終了したら、使用可能なPythonのリストを確認でます。

$ pyenv versions

* system ( set by /Users/(USER NAME)/.pyenv/version )
  anaconda3-5.0.0

systemのPythonとanacondaのPythonが使用可能であるということが分かります。ここでanacondaに切り替えます。

$ pyenv activate anaconda3-5.0.0
$ pyenv versions
   system ( set by /Users/(USER NAME)/.pyenv/version )
* anaconda3-5.0.0
$ python -V
Python 3.6.2 :: Anaconda, Inc.
$ pyenv deactivate
$ python -V
Python 2.7.10

以上の通りPython 3.6.2とPython2.7.10を切り替えられていることが分かります。

Rのインストール

授業でRを使うので、Rもインストールします。Homebrewを使うとgccをビルドしないといけないそうなので 公式サイトからそのままダウンロード&インストールしてきます。

R for Mac OS X

ただし、zshでRを実行しようとすると下の記事で記述がある通り、zshがデフォルトで定義しているコマンドrと衝突するので、デフォルトのrを無視するコマンドを打ちます。

qiita.com

$ echo 'disable r' >> ~/.zshrc

またRStudioもインストールします。

$ brew cask install rstudio

まとめ

環境を作り直すのはとても面倒なので、バックアップはちゃんととりましょう。

自動運転の新基準は日本政府の過剰規制じゃない

2017年10月13日にこのような記事が公開されました。

www.nikkei.com

この記事の「自動運転、手離し65秒で手動に」というタイトルをぱっと見て、

それって「自動運転」じゃないじゃん!日本のお役所がまた面倒な規制をかけちゃって……

と思った方も多いと思います。

自分も気になって調べてみましたが、結論から言えばその考えはおそらく誤解です。 この新基準はむしろ規制緩和(正確に言えば時代に合わせた規制の適正化)といってもいいかと思います。

ここでは、新基準の背景や意義について調べた内容を説明していきます。

何を調べるのか

まず調べる点をはっきりさせておきます。

  1. 「手離し65秒で手動に」という規制は過剰なのではないか
  2. この規制は国際的にみても過剰なのではないか

ということを思われた方が多いと思います。それらの推察が合っているのか調べてみます。

記事をしっかり読んでみる

まずはタイトルだけではなく、記事をちゃんと読むことにします。それを要約すると、

  • 自動運転車に関する初の安全基準導入
  • 手放し運転による事故防止が狙い
  • 国際基準に合わせ保安基準を告示
  • 65秒以上手放しで手動に切替
  • 自動駐車は10km/h以下で走行
  • 今後自動運転による車線変更に関する基準を策定

となるでしょうか。ここで大事なのは国際基準に合わせという部分です。 つまり、日本政府が国際的にみても過剰な規制をかけたわけではなく、国際基準がそういう規制になったので日本も合わせた、ということです。

これで、最初に挙げた論点のうち、国際的にみて過剰な規制なのではないかという点はどうも違うぞ、ということが分かりました。

では、次に「手離し65秒で手動に」なるのは過剰規制なのではないか、という点についてさらに調べていきます。

基準改定前の状態を確認

そもそも、改定前の国際基準では上記で述べたような自動操舵機能を時速10km超での使用することが以下のように禁止されています。

Whenever the Automatically Commanded Steering function becomes operational, this shall be indicated to the driver and the control action shall be automatically disabled if the vehicle speed exceeds the set limit of 10 km/h by more than 20 per cent or the signals to be evaluated are no longer being received.

自動命令型かじ取機能が作動しているときは常に、本機能は運転者に表示されるものとし、また車両速度が設定限度の時速10km/hを20%以上超えた場合又は評価信号を受信しなくなった場合に、当該機能は自動的に無効になるものとする。

いやレーンキープアシストシステムやプロパイロットは使われてるじゃん、と考えると思います。なぜ日本でそれらの機能が使えるかと言えば、国土交通省が国際基準の適用を猶予しているためです。

response.jp

つまり、基準改定前は、完全自動運転を議論する以前の問題として自動ハンドル操作さえ国際基準で許されないが国土交通省が特別に許している、という状態になります。

基準の中身

今回改定の基準の中身について調べていきます。

最初の前提知識となる自動運転のレベルの話から始めます。

自動運転のレベルについて

聞いたことがある方も多いかと思いますが、自動運転はシステムの介入度や責任分担によってレベル0からレベル5までの6段階に分類されています。下の2つの資料でサクッと説明されています。

http://www.kantei.go.jp/jp/singi/it2/dai71/siryou3-2.pdf

f:id:nakachan94:20171014033017p:plain

http://www.forum8.co.jp/fair/image/design-fes2016/day1/lecture02.pdf

f:id:nakachan94:20171014033029p:plain

ざっくり言うと、事故が起きたときにレベル2まではドライバーが責任を取るが、 レベル3以上はシステムが責任を取る、ということです。

現在、日本国内で実用化されているのはレベル2までです。 レベル1の具体的な機能としては自動ブレーキやアダプティブクルーズコントロール(ACC)、レーンキープアシストシステム(LKAS)、レベル2はセレナのプロパイロットなどが挙げられます。

基準の前提と対象

このレベルの話を踏まえて基準の中身を確認します。

f:id:nakachan94:20171014045930p:plain

先程のpdfには上で示したスライドがあります。

まず、今回の基準の前提条件は、レベル2です。つまりドライバーが責任を持つような「自動運転」を想定しています。

その前提の元で、運転支援システムを5つの種類、7つのカテゴリーに分けています。 その中で今回の基準化の対象になっているのは補正操舵のCorrective、自動駐車等のCategory A、ハンドルを握った状態での車線維持のCategory B1です。 それ以外は基準化さえされていません

なんとなく、分かってきたでしょうか。最初の記事で紹介された基準はハンドルを握った状態での車線維持を行える自動車に対して適用される基準なのです。 逆に言えば、その自動車で使用される自動運転技術はハンドルを握っていないと運転できないようなレベルである、少なくともハンドルを離すことは想定されていないということです。例えば、日産セレナのオートパイロットのようなものです。

車線維持をしてくれるが手離し運転はできないような自動車の国際的な安全基準は今までないどころか、上述のとおり自動操舵機能自体が禁止されていました。 しかし、それでは技術開発の進展に追いついていないということで、新たに手離しをしない車線維持機能等を認めその基準を作ることにしたのです。

f:id:nakachan94:20171014052404p:plain

車線維持機能を持つ自動車が満たすべき要件の概要は上のスライドにあります。車線維持機能の性能基準やドライバーがシステムをON/OFFできるようにすることに加えて、運転者がステアリングを握っていることを検知する機能を備えることが要件とされています。

それは手離し運転を想定していない自動車である以上当然のことと言えます。現状でも自動運転機能を過信して事故を起こすケースが起きており、そのような事故を防止する機能は確かに求められています。

そのために、手離しを防ぐハンズオフ警報を義務化し、手放しから最大30秒で警報表示と警報音が鳴り、その警報音が30秒以上続く場合にはそこから5秒以上の緊急信号で警報したうえでシステムがオフになるようにしました。確かにこの数値を合計すると65秒になり、最初の記事の数値と一致します。

報道発表資料や元の国際基準を見てみる

新聞の報道は省庁が出す報道発表資料を元にしている場合が多いので、その元ネタを探してみます。それが下のページです。

www.mlit.go.jp

このページの別紙の中に次のような文言があります。

自動操舵機能のうち、補正操舵、自動駐車、ハンドルを握った状態での車線維持機能を有する自動車は、それぞれ協定規則第 79 号に規定された各機能についての要件に適合しなければならないこととする。

じゃあその協定規則第79号ってなんだ、という話になりますが、それが下の文書です。

http://www.unece.org/fileadmin/DAM/trans/doc/2017/wp29/ECE-TRANS-WP29-1129e.pdf

これの日本語版も一応探したのですが、ありませんでした。改定前の日本語仮訳は下のページにあります。

自動車:「道路運送車両の保安基準の細目を定める告示」(平成14年国土交通省告示第619号)において技術的に引用している協定規則の日本語仮訳 - 国土交通省

その中には先程述べたCategoryの話や基準が書いてあります。その一部を紹介します。日本語訳は私が訳した拙いものです。まず定義として

2.3.4.1.2. "ACSF of Category B1" means a function which assists the driver in keeping the vehicle within the chosen lane, by influencing the lateral movement of the vehicle.

2.3.4.1.2. 「カテゴリーB1の自動操舵機能」は自動車の横方向の動きに影響を与えることによって、自動車をあるレーンの中に維持するようにドライバーを支援する機能である。

とあり、カテゴリーB1が満たすべき条件の中に次のような記述があります。

5.6.2.2.5. When the system is active and in the speed range between 10 km/h or Vsmin, whichever is higher, and Vsmax, it shall provide a means of detecting that the driver is holding the steering control.

(省略)

If, after a period of no longer than 30 seconds the driver is not holding the steering control, at least the hands or steering control in the pictorial information provided as optical warning signal shall be shown in red and an acoustic warning signal shall be provided.

The warning signals shall be active until the driver is holding the steering control, or until the system is deactivated, either manually or automatically.

The system shall be automatically deactivated at the latest 30 seconds after the acoustic warning signal has started. After deactivation the system shall clearly inform the driver about the system status by an acoustic emergency signal which is different from the previous acoustic warning signal, for at least five seconds or until the driver holds the steering control again.

5.6.2.2.5. (自動操舵)システムが動作しており、かつ速度が10km/hもしくはVsmin(システムの設計最低速度)からVsmax(システムの設計最高速度)以下のとき、そのシステムはドライバーがハンドルを保持していることを識別する手段がなければならない。

(省略)

ドライバーがハンドルを保持していない状態が30秒続かないうちに、手かハンドルのアイコンのどちらかが光って警告信号を示し、かつ警告音が鳴らなければならない。(注:カテゴリーB1の自動車では手とハンドルを示すアイコンをつける必要がある。)

ドライバーがハンドルを握るか、自動操舵システムが手動か自動かによらず無効にされるまで、その警告信号は動作していなければならない。

警告音が鳴りはじめてから30秒以上経ったあと、自動操舵システムは自動的に無効にならねばならない。 システムの無効化は先程の警報音とは異なる警報音によってドライバーに知らされなければならず、その警報音は少なくとも5秒間続くかドライバーがハンドルを握るまで続く必要がある。

確かに先程のスライドと同様のことが書いてあります。

今の車はどうなるのか

では、いま販売されている自動車は規制の対象になるのでしょうか。それは最初の記事に書いてあるとおりです。

2019年10月以降の自動運転機能を備えた新型車が対象。現在販売されている車種は21年4月から適用し、中古車は対象外とした。

今後の基準作成の方向性

ここまでで、今回の基準は手放しを前提としない車線維持機能に関する基準であることが分かりました。 では、自動車線変更の基準はどうなるのでしょうか。今後の基準作成の方向性が次のスライドに示されています。

https://www.unece.org/fileadmin/DAM/trans/doc/2017/wp1/ECE-TRANS-WP1-Automated-Vehicles-Presentation-5e.pdf

f:id:nakachan94:20171014061317p:plain

f:id:nakachan94:20171014061412p:plain

Category C(ウインカー起点の自動車線変更)を先に基準化し、次にCategory B2(手放し車線維持)とCategory D(システム判断の自動車線変更)、Category E(連続自動操舵)の議論をレベル3, 4の議論と共に行うそうです。

確かに、手放し運転の安全基準を決めるより、自動車線変更の安全基準を決めるほうが比較的簡単そうですもんね……

手放し運転だけどドライバーは運転に集中し、事故の責任はドライバーが取るっていうのは現実的なんだろうか……?

なぜ誤解が生じるか

なぜ最初のような誤解が生じたのでしょうか。主に2点の要因があると思います。

自動運転=レベル4の自動運転のイメージがついている

自動運転と聞くと、レベル4のシステムが責任を取る自動運転の話を考えがちですが、今回、基準の対象になっているのはレベル2の現時点で実用化されている程度の自動運転車です。 レベル4の自動運転を想像すると「人がハンドルを握るなんて!」と思いがちですが、「セレナは手放し運転だめだよ」と考えれば、納得できるのではないでしょうか。

元の記事にCategory B1の話がない

そもそも、基準の対象が手放しを前提としない自動車であるので、手放し運転を規制するのは当たり前です。 その前提条件や、今回の基準の先に手放しも出来るような自動車の基準の議論も進んでいることも書けば誤解が少なくて済んだのではないでしょうか。

まとめ

  • 元々国際基準では時速10km/h以上の自動操舵機能は禁止
  • 技術の進歩に伴い、新たに自動操舵機能を認めることになった
  • その第1弾としてハンドルを握った状態の車線維持機能等を基準化
  • その要件の1つがハンズオフ警報
  • 今後は自動車線変更などの基準化が進む
  • レベル3以上や手放し運転の基準化はさらに先の話

追記:システムがオフになるのは危険では?停車すべきでは?(個人的推測多)

色々反応を見ていて、なるほどなあと思ったのが

65秒経ったらシステムが止まるのは危険では?停車すべきなのでは?

という意見です。確かにそうすべきなのではと思ったのですが基準化をするには色々課題がありそうです。

65秒以内に車を停止させることは禁止されてない

まず、基準では65秒(最大30秒待機+30秒警告+5秒最終警告)でシステムを停止することを義務づけています。 ですが、システムが動いている間にシステムで車を停止させることは禁止されていません。 つまり、デッドマン装置のような機能が必要だとメーカーが判断すれば、手放し開始から65秒以内に車を停止させるようにすればいいはずです。 現状の自動車の減速度であれば、65秒以内に100km/hや120km/hから0km/hまでブレーキをかけることは技術的には当然出来るでしょう。

なぜデッドマン装置は基準化されないのか

では、デッドマン装置も基準化すればいいじゃないかという話になりますが、それは結構難しそうです。

基準を決定する人たちも決して無視しているわけではなく、デッドマン装置を検討している節があります。

f:id:nakachan94:20171014154611p:plain

上のスライドには危険最小化制御とあるのがデッドマン装置に該当する機能だと考えられます。 危険最小化制御の説明には「ドライバーが警告に応じない場合には、車を安全に停止させること」とあります。

ここで難しいと感じたのが安全にという部分です。 ただ車を停止させれば安全と呼べるのでしょうか。 例えば高速道路の追い越し車線に停止してしまっても良いのでしょうか。 だからと言ってCategory B1では自動車線変更を想定していないのですから、走行車線や路肩に車線変更して停止するというのも難しいそうです。

何をもって安全と呼べるかは様々な視点からの意見が必要となり、必ずしもコンセンサスが取れているとは言えないと思います。 だからこそ、今回の基準ではデッドマン装置(危険最小化制御)の基準化を見送ったのではないでしょうか。

追記まとめ

  • デッドマン装置は禁止されているわけじゃない(はず)
  • 基準化はまだ難しそう

調査輪講反省&感想

調査輪講の発表が終わったので、その反省をします。

調査輪講とは何か?

自分の所属しているコースだと修士1年の夏学期にある、テーマを決めてそれに関連する論文を読み、先生方と学生の前で25分(+質疑応答8分)を使い発表するものです。 テーマは自分の研究内容と完全に同じではいけません。 ただ、少しずれていれば良いということになっています。

準備しなければいけないものは、発表で使用するスライドと当日先生や学生に配布する発表資料(2カラム、8ページ)です。

自分の進め方

  1. 5月頃にタイトルを決める必要があるので、調べるテーマを「有線通信の研究動向」といった風にざっくりと決める。ちなみに私の研究テーマは(ざっくりいうと)「有線通信の高速化」である。
  2. とりあえず日程を決定。発表日は金曜日なので、その週の月曜日に研究室内での練習発表をすることにして、その前2週間を使って調査しようと決める。つまり全体で3週間使うことを想定していた。
  3. しかし、家族の急用や体調不良によって、最初の1週間が使えなくなり予定が狂う。この段階で調べる論文や詳細なテーマは決まっていない。
  4. なんとか体調を直して、輪講に立ち向かう。テーマを決めるために、ISSCCInternational Solid-State Circuits Conference、回路系のトップカンファレンス)のTrendsなどを見て有線通信の研究トレンドをつかむ。どうも「高速化」と「低消費電力化」の2パターンがあるらしい。「高速化」だと自分のテーマとかぶる可能性があるので、「低消費電力化」のほうを調査テーマとする。
  5. 低消費電力といってもパターンがありすぎるので、ISSCCのTrendから有名なパターンを調べる。どうも4つぐらいあるらしい?
  6. その4つを中心にIEEE Xploreを使ってとにかく調べていき、めぼしい論文を拾ってくる。
  7. 種類が違う低消費電力手法で良さそうなやつを4つぐらい探してくる。
  8. ここまでで1週間かかる。明らかに練習に間に合わないので、練習日を水曜に移動し、土日返上で作業することを決定する。
  9. よく考えると、学生は有線通信の基礎的な知識を有していないことに気づく。つまり発表の前半は基礎的な知識の説明をして、後半は最新研究(今まで調べた研究)という展開にする必要がありそう。
  10. 基礎的な知識のほうは、等化器と評価手法(eye diagram と bathtub curve)というものがある、というのは前から説明したかったので、その説明をすることにした。
  11. 配布資料をとにかく書きすすめる。2カラムであることもあり、これがとにかく終わらない。図を貼っても大して文書は伸びない。つらい。
  12. あまりに進捗がやばいので、月曜から水曜(練習日)にかけてデスマーチを敢行。平均睡眠時間3時間で強行突破することになる。結構鬱気味になる。
  13. 結局配布資料が最終的に出来上がったのは水曜日の早朝3時。ここから(少しは手をつけていたとはいえ)ほとんど手付かずのスライド作成に取り組む。
  14. 何だかんだ水曜日の12時までにはスライドが出来上がる。基本的には配布資料の図のコピペでOKなので、そんなに難しくはなかった。
  15. 発表練習。意外とたたかれなかったが、個人的にはあまり良くない出来だったので、いただいたアドバイスなどを活かしてスライドと配布資料を修正する。
  16. よく考えると前半と後半のつながりが薄いことが発表練習などで分かる。しかし、今更内容を変えることもできないのでこのまま発表に望む。
  17. 前日の17:00に資料提出。これで資料の編集をしなくて良くなったので、ほっと一安心。
  18. 発表。声も大きく発表することができた(超重要)のは良いポイントだった。先生や博士の学生から来る質問は単純だが鋭い質問が多く、なかなか充分な回答をするのが難しかった。発表終了後は達成感に包まれる。

反省点

良かった点

  1. 自分が研究している分野の周辺分野の知識が多少増えることによって、自分の研究分野の立ち位置に対する理解が少し深まったような気がする。
  2. 調査していくうちに、分野の面白いポイントがなんとなく分かってきて、分野のことが好きになったような気がした。ちゃんと調べて知識が増えればその分野を好きになれる性格なのかもしれない。
  3. 睡眠時間3時間を3日続けるだけで、体調不良になったのは意外だった。睡眠時間を削ってはいけないことを体感した。睡眠時間を削るカルチャーの業界には行かないようにしようと思った。

良くなかった点

  1. もう少し早めに論文調査を進めておくべきだった。調査することによってテーマに対する理解が深まり、より適切な調査ができるようになるという良い回転をもっと早い段階で生み出すほうが良かった。
  2. 前半と後半のつながりをもっと意識すべきだった。前半に等化器の話をどうしてもしたかったので、その話で結構時間を割いたが、後半で等化器は1つの論文でしか出てこなかったので、前半と後半のつながりが薄くなってしまった。実はテーマを有線通信の高速化にしていればもっと等化器の話との繋がりをつくれたのかもしれないと思った。

まとめ

苦しいことも多くあり、もう一度これをやれと言われたら辛いなあと思いますが、意外と楽しい調査輪講でした。

【自由研究】バニラ・エアで問題なのは「合理的配慮」の有無だけではない

奄美空港バニラ・エアを利用した車椅子の男性がタラップを自力で這い上がったことが問題となっています。

www3.nhk.or.jp

www.huffingtonpost.jp

mainichi.jp

SNS上では補助器具などを用意することが「合理的配慮」にあたるのかが話題になっていたような気がしますが、問題はそれだけなのでしょうか。気になったので少し調べてみました。

【注意】間違ったことを書かないよう注意してますが、私は法律や障害者問題、航空業界の素人ですので、鵜呑みにはしないでください。

障害者差別解消法(障害を理由とする差別の解消の推進に関する法律)とは何か

最初に法律と基本方針、Q&Aへのリンクをのせておきます。

障害を理由とする差別の解消の推進に関する法律 - 内閣府

障害を理由とする差別の解消の推進に関する基本方針 - 内閣府

障害を理由とする差別の解消の推進に関する法律についてのよくあるご質問と回答<国民向け> - 内閣府

目的

目的は法律の第一条に書いてあります。

この法律は、障害者基本法(昭和四十五年法律第八十四号)の基本的な理念にのっとり、全ての障害者が、障害者でない者と等しく、基本的人権を享有する個人としてその尊厳が重んぜられ、その尊厳にふさわしい生活を保障される権利を有することを踏まえ、障害を理由とする差別の解消の推進に関する基本的な事項、行政機関等及び事業者における障害を理由とする差別を解消するための措置等を定めることにより、障害を理由とする差別の解消を推進し、もって全ての国民が、障害の有無によって分け隔てられることなく、相互に人格と個性を尊重し合いながら共生する社会の実現に資することを目的とする。

一文が長いですが、「障害者の基本的人権とその尊厳が守られるように障害を理由とする差別を解消して、全ての国民が共生できる社会を作ろう」ということだと思います。

ちなみに障害者基本法の理念は、障害者基本法の第一条に書いてあります。

障害者基本法:障害者施策 - 内閣府

この法律は、全ての国民が、障害の有無にかかわらず、等しく基本的人権を享有するかけがえのない個人として尊重されるものであるとの理念にのつとり、(以下略)

この理念は憲法十三条に書かれた個人の尊重に通じるものです。

すべて国民は、個人として尊重される。生命、自由及び幸福追求に対する国民の権利については、公共の福祉に反しない限り、立法その他の国政の上で、最大の尊重を必要とする。

つまり、法律の理念の構造としては、憲法十三条(個人の尊重)→障害者基本法第一条(個人の尊重)→障害者差別解消法、というものになります。

何が差別か

障害者差別解消法が差別を解消する法律であることは分かりましたが、何が差別なのでしょうか。

基本方針には次のように書かれており、

  • 不当な差別的取扱い
  • 合理的配慮の不提供

の2つが差別であるとしてます。

法は、後述する、障害者に対する不当な差別的取扱い及び合理的配慮の不提供を差別と規定

この2つは事業者に対する位置付けが異なっています。 不当な差別的取扱いしてはならないとされており、禁止されていますが、合理的配慮の不提供努めなければならないとされ、努力義務です。

不当な差別的取扱い、合理的配慮の不提供とは何か

基本方針には不当な差別的取扱いについてこのように書かれています。

法は、障害者に対して、正当な理由なく、障害を理由として、財・サービスや各種機会の提供を拒否する又は提供に当たって場所・時間帯などを制限する、障害者でない者に対しては付さない条件を付けることなどにより、障害者の権利利益を侵害することを禁止している。

また合理的配慮の不提供についてこのように書かれています。

事業者に対し、その事務・事業を行うに当たり、個々の場面において、障害者から現に社会的障壁の除去を必要としている旨の意思の表明があった場合において、その実施に伴う負担が過重でないときは、障害者の権利利益を侵害することとならないよう、社会的障壁の除去の実施について、必要かつ合理的な配慮(以下「合理的配慮」という。)を行うことを求めている

これらの文章で問題となるのは正当な理由なく実施に伴う負担が過重でないときだと思います。この基準は法律や基本方針には具体的には書き込まれておらず、対応指針が別に作成されることになっています。

今回の事例と対応指針

まずは今回の事例を確認しましょう。

  1. 関空奄美線では、他の方の補助を受けても自力でタラップを歩いて上り下りできないお客さまから事前に連絡があった際には、搭乗をお断りしていた」
  2. 搭乗拒否の理由はタラップを使用する際の安全上の問題
  3. 事前に連絡しなかったのは門前払いされると思ったから【バニラ・エア車椅子対応問題】木島さん「スタッフが対応できなくても周囲の人に助けを頼むので、搭乗拒否するのやめて」 | キャリコネニュース

今回の事例で問題になっているのは航空機の乗降ですので、国土交通省が出している航空運送業関連の対応指針を見てましょう。

http://www.mlit.go.jp/common/001108694.pdf

今回と似たような例をあげるとこのようになります。

正当な理由がなく、不当な差別的取扱いにあたると想定される事例

  • 安全上の問題などがないにもかかわらず、障害のみを理由に搭乗を拒否する。
  • 同伴者がいないことを理由に、軽度な歩行困難な利用者の搭乗を拒否する。

障害を理由としない、又は、正当な理由があるため、不当な差別的取扱いにあたらないと考えられる事例

  • 合理的配慮を提供等するために必要な範囲で、プライバシーに配慮しつつ、障害者に障害の状況等を確認する。
  • 短時間でのストレッチャーの着脱は不可能であるため、ストレッチャー使用者が希望される搭乗便の機材上の前後の便が満席であること理由に、搭乗便の変更を依頼する。
  • ストレッチャーの取り付け可能な空港が限られているため、搭乗便の変更を依頼する。

過重な負担とならない場合に、提供することが望ましいと考えられる事例

  • 調整可能な範囲で、車いすを使用され、かつ階段の昇降ができない利用者の予約がある場合は、ボーディングブリッジのあるスポット又はリフトカー等を準備する。

ただ、今回にぴったり当てはまる事例はないので、この対応指針だけでは不当な差別的取扱いをしたのか、社会的障壁の除去の実施に伴う負担が過重なのかはわかりません。

結局は今後の検証の結果、差別かどうかが判断されるのだと思います。

【独自解釈】今回の事例は差別なのか

私は今回の事例が差別にあたると思っています。それはストレッチャーや昇降機を用意することは合理的配慮にあたると考えるからです。

まずストレッチャーや昇降機を用意することは過重な負担にあたらず、合理的配慮の範囲内だと考えます。なぜなら、今回の問題の後、バニラ・エアはそれらの補助器具を設置しているからです。本当に過重な負担にあたるのであれば、問題が発生したとしてもそれらの器具を設置することは出来ないのではないでしょうか。

一方、搭乗を拒否したことが不当な差別的取扱いにあたるかは少し微妙な側面があると思います。補助器具がなにも無い状態で、歩けない乗客にタラップを這わせたり、同伴者に車椅子を持ち上げてもらうことに、安全上の問題がある可能性は高いでしょう。しかしその安全上の問題は前述の合理的配慮を行なえば解消されるはずです。

つまり、搭乗拒否は、合理的配慮を行なえば不当な差別的取扱いになりますが、合理的配慮を行わなければ不当な差別的取扱いには当たらない可能性があります。

しかしこれでは合理的配慮を行わないほうが合法的に障害者を拒否でき追加的コストを支払わないで済むということになり、合理的配慮が広がらない可能性があります。

法律の目的を考えれば、合理的配慮がより多くの場面で行われることが望ましいでしょうから、合理的配慮を行なえば搭乗拒否せずにすむ場合に合理的配慮を行わないのは不当な差別的取扱いを行っているのと同様であると考えてもいい気がします。あくまで素人の意見です。この論理には穴が多くあると思います。

今後の話

バニラ・エア奄美空港のストレッチャーと昇降機を導入したそうですので、今後搭乗拒否をしたら、禁止されている不当な差別的取扱いをしたことにおそらくなります。

まとめ

  • 障害者差別解消法の差別は合理的配慮の不提供だけでなく不当な差別的取扱いも含む
  • 不当な差別的取扱いは禁止、合理的配慮は努力義務
  • 今回の事例が差別であるかどうかは今後の検証によって明らかになるはず
  • 私個人の意見では階段を歩けないことを理由に搭乗を拒否したことが禁止されている不当な差別的取扱いにあたるかは微妙、ストレッチャーや昇降機を用意することは努力義務の合理的配慮の範囲
  • 奄美空港にもストレッチャーと階段昇降機が設置されたので、今後は搭乗できるはず

木を見て森も見よ(大学院の会計の授業を受けての感想)

【注意】これはポエムです。

2017年度のS1タームに経済学研究科で開講されていた入門レベルの企業会計の授業を受けてきました。自分なりに面白かったのでその感想をつらつら書いていきます。

1. 会計は意外と演繹的

会計は多くの仕訳を覚えていくだけで面白いのかなあと思っていたこともありました。

実際そういう側面があることは否めないのですが、大学院の授業ということで各仕訳が採用されている趣旨も授業で取扱いました。またそれらの仕訳の趣旨が場当たり的なものではなく、発生、実現、対応の3原則や保守主義などの会計的な原則や主義に基づいていることを知りました。その意味で会計は意外と演繹的なのだと思いました。

2. 会計は「伝える」ことが目的

会計というと金勘定のイメージが強いかもしれません。

しかし国際標準の会計基準であるIFRS(International Financial Reporting Standards、国際財務報告基準)で、「財務報告」という言葉が使われていることからも分かるように、会計(財務会計)の目的は投資家や利害関係者に情報を「伝える(報告する)」ことによって適切な投資意思決定や利害調整を行えるようにすることです。

授業でも投資家がその情報を受け取ることによりどのような判断をするかまでを考えて、会計基準について話していたのが印象的でした。

3. 細部が重要

会計は細部が重要です。一般の人が知らないようなアドバンスドな細部が利益を大きく変化させてしまうことがあります。

例えば減損会計は簿記2級の商業会計では扱わないアドバンスドな内容ですが、巨額損失の大部分はこの減損という仕組みに由来していることが多いです。

また最近話題の「のれんの減損」はこの減損会計の応用版として登場します。のれんは日本基準、米国基準、IFRS会計基準の差とも絡んで面倒な論点となっていますが、利益に重大な影響を与えます。

さらに税効果会計も企業行動や利益に大きな影響をおよぼしますが、これもまた簿記2級では出てこない内容です。

このようにアドバンスドな細部が利益に重大な影響を及ぼすことがあり、細かい会計規則とその意味を覚えることも重要となることがあります。

4. システム全体で見ることも大切

ただしいくら細部が大事だからといっても、時にはシステム全体を見なければいけないことも再認識しました。

会計は会計基準だけでなりたっているわけではなく、税務や監査、証券市場の自主規制、投資家の投資リテラシーなどの様々なことがらが絡んでいます。

会計上である問題が起きたときに、会計基準だけでなんとかしようとするのではなく(当然その努力は必要なのですが)、周囲の環境も含めて変えていくことが必要なのではないかと思いました。「木を見て森を見よ」です。

5. 会計は変化する

複式簿記が出来たのは約500年前のことと言われており、会計はそれからあまり変化していないとも言われていたりします。

しかし実際には、時代に応じて会計は断続的に変化していることを理解しました。最近の主な変更として、ほんの10年前に減損会計が導入されたということを知り、意外と変わっていくのだなあと思いました。

将来も情報通信技術の進化やグローバル化の進展によって会計基準や監査、税務などが変化をしていくことになると考えています。

6. 会計は人生を左右する

会計で計算される利益が企業の実力を適切に表すものとなることの重要性を改めて認識しました。企業の価値が大きく評価され過ぎたら…バブルが起きてバブル崩壊後の経済に大きな悪影響を及ぼすでしょう。逆に企業の価値が小さく評価され過ぎたら…不要なリストラが行われ、本来悲しむ必要がなかった従業員や家族の生活を悪化させてしまうかもしれません。このように会計は人生を左右するものであることを強調されていたことが印象に残りました。

まとめ

全体を通じて、自分が受けた大学院の企業会計の授業は面白かったです。財務諸表を作成し監査する側の立場から学ぶ普段の会計士の講義も良いのですが、微妙に異なる視点、つまり基準の作成者や会計情報を利用する人の視点から会計について学ぶことができたのは良かったです。