【最新】東京の満員電車の混雑率を可視化してみた

目安時間:約 10分

東京へ出向を言い渡されて、真っ先に気になるのが、電車の混雑率である。

 

東京の満員電車はヤバい、ヤバすぎるという声をよく聞くので、

 

無意識のうちに恐怖を植え付けられているのだが、

 

実際にどれくらい満員電車がすごいのか、

 

満員電車じゃない電車もあるのか、

 

東京に住んでいない人にとっては、まったく見当がつかない。

 

そこで、ネット上で得られる情報から、

 

東京の満員電車のすごさを調べてみることにした。

 

 

 

満員電車の定義

 

まず、満員電車とはどのような状態なのか。

 

国土交通省が下記のようなわかりやすい絵を作成している。

 

三大都市圏の主要区間の平均混雑率の推移(国土交通省鉄道局都市鉄道政策課)

 

名古屋の満員電車は、通常時では150%ほど、

 

遅延などで遅れているときで180%くらいだろうか。

 

東京のイメージは常時200%のイメージがあるが、

 

実際のところはどうなのだろうか。

 

 

 

【最新】2017年度版 東京 電車 混雑率ランキング

 

これまた国土交通省鉄道局都市鉄道政策課が、

 

2018年の7月17日に「平成29年度の混雑率データ」

 

つまり去年一年間の混雑率をデータ化してくれている。

 

東京圏で混雑率180%超の路線が12路線から11路線へ ~都市鉄道の混雑率調査結果を公表します~

 

これによると、混雑率180%越の路線が11路線も存在するとのこと!

 

しかもこの混雑率は、最混雑時間帯の1時間の平均なので、

 

実際には200%を超えているときもあるということ。

 

さすが東京の満員電車である。

  • 東京地下鉄東西線:199%
  • JR東日本総武緩行線:197%
  • JR東日本横須賀線:196%
  • JR東日本南武線:189%
  • JR東日本東海道線:187%

6、 東京都日暮里舎人ライナー:187%
7、 JR東日本京浜東北線:186%
8、 JR東日本埼京線:185%
9、 東急田園都市線:185%
10、JR東日本中央快速線:184%
11、JR東日本総武快速線:181%

 

 

 

地図屋といえば可視化

 

しかしである。東京になじみのない私としては、

 

上記のデータを見ても、実際にどの辺を走っている電車なのか、

 

さっぱりわからないのである。

 

そこで、地図屋としては、このようなデータを入手したら、

 

地図上に可視化をして、わかりやすく見えるようにしたいのである。

 

背景にラスタ地図を表示して、路線をベクトル地図として重ね合わせることをしたい。

 

このようなときに便利なのが、みんな大好きLeafletである。

 

Leaflet.js

 

LeafletはWeb地図のためのJavaScriptライブラリである。

 

オープンソースでライセンスはBSD-2-Clauseで非常に使いやすいのである。

 

Leafletに関する導入記事は山ほどあるので、他のサイトに任せるとして、

 

今回は自分で路線情報を描画するために、Leaflet.Drowプラグインを使用することにした。

 

Leaflet.Drawプラグイン

 

これを導入すると、ほぼコーディングなしで、

 

リッチなお絵かきツールが作成できてしまうという優れものである。

 

こちらを導入すると、Leafletのマップ上にこのようなアイコンが表示される。

 

 

こちらで上から、ポリライン、ポリゴン、矩形、円、マーカー、点を作図することができる。

 

 

さらにすごいのが、一度入力したオブジェクトを編集することもできるのだ。

 

 

編集ボタンを押すと、オブジェクトの各補間点をピックすることができるようになり、

 

補間点ごとに移動することができるのだ。

 

また、補間点の追加と削除もできてしまう。

 

なんと便利な!!

 

 

 

混雑率の高い路線の可視化

 

ということで、Leaflet.Drowを利用して、東京の電車の混雑率の高い路線が

 

どこを通っているのかを可視化してみた。

 

それが以下である。

 

 

東京の電車に詳しくないため、

 

路線の絵が間違っている場合は指摘をお願いします。

 

これを見るとどうだろうか。。。

 

東京へ行くにはどこから行っても混んでいる

 

ということがおわかりいただけただろうか。

 

横浜方面から行っても、埼玉方面から行っても、千葉方面から行っても。。。

 

 

 

主要区間の混雑率の可視化

先ほどの結果では、路線をすべて同じ重みで描画しているので、

 

実際に199%となっている区間がどこかわかりづらい。

 

そこで、これもまた国土交通省鉄道局都市鉄道政策課のデータで、

 

「三大都市圏の主要区間の混雑率」という、

 

路線ではなく区間で表現したデータがあるので、

 

こちらも地図上に可視化してみる。

 

三大都市圏の主要区間の混雑率

 

先ほどの11路線に限定し、上記の資料に記載の区間を太く描画する。

 

その結果が以下である。

 

 

実際にパーセントの値が算出された調査対象の区間が上記の区間ということになる。

 

この部分を通過する際は注意ということだ。

 

しかし、ここで一つ疑問が残る。

 

なぜ国土交通省はこの区間を調査したのだろうか。

 

もう少し東京駅寄りの区間を調査してもいいと思うのだが、

 

東京駅寄りは混んでいるのが当たり前だから調査していないのか?

 

それともあまり混んでいないのか。

 

この辺りは実際に電車に乗っている人でないとわからない。

 

 

 

 

とりあえず今回の調査で、

 

東京へ向かう電車はどれも満員電車で混んでいるという残念なことが判明したため、

 

私が満員電車から逃れることはできないということが分かった。

 

 

だとすれば、家選びの基準として、

 

電車の込み具合は捨てて、駅から近いとか、

 

治安がよいとか、お店がそろっているとか、

 

そっち方面を重視していこうかと思う。

 

どこに住むか決めたらまた連絡しようと思う。

まずは単語を4000個覚える

目安時間:約 2分

瞬間英作文や文法のトレーニングをしつつ、

 

少しでも知っている単語を増やしていかねばと思い、

 

単語を覚え中。。。

 

しかし、なかなか覚えられない。。。

 

個人的に覚えにくい単語をメモ

  • express:表現する
    • 新幹線のexpressカードを思い出してしまって、表現するにたどり着けない。。。
  • deal:対処する
    • うーん、なぜか覚えられない
  • waste:浪費する
    • ウエスト(waist)を思い出してしまう
  • feed:えさを与える
    • えっ、そうなのか
  • regard:~とみなす
    • 覚えられない
  • aim:努力する
    • 英語できる人になるためにaim、aim、aim
  • suffer:苦しむ
    • 全然苦しんでる感がない

カテゴリ:英語  [コメント:0]

TCPサーバプログラムの改修(SO_LINGERオプションの利用)

目安時間:約 4分

TCPのサーバ側プログラムを改修する機会があった。

 

時々ではあるが、アプリケーション起動時に、サーバ側プログラムで

 

2分ほどの待ちが発生するとのこと。

 

TCPの知識はほとんどなかったため、この機会に勉強をした。

 

以下のサイトが分かりやすかった。

 

http://www.ne.jp/asahi/hishidama/home/tech/socket/tcp.html

 

このサイトは、以前JavaやScalaの学習をした際にもお世話になっている。

 

サイトの作者は相当熱心な勉強家であることがうかがえる。

 

技術者として尊敬している。

 

 

そちらに下記のように書かれている。

 

 

たしかに今回サーバー側から先に切断しており、サーバー側がアクティブクローズ側になっている。

 

そしてサーバー側でnetstatコマンドで調べてみると、

 

利用しているポートがTIME_WAIT状態になっていた。

 

 

そしてその対策として、

 

とのこと。

 

SO_LINGERオプションにより、強制的にclose状態にできるようだ。

 

だが、筆者も書いている通り、あまりよい方法とは言えないようだ。

 

以下のサイトなども、SO_LINGERオプションは推奨された方法ではなく、

 

本来あるべき姿は、クライアント側から切断するようなアーキテクチャにすることとのこと。

 

https://code.i-harness.com/ja/q/3954e9

 

 

 

ただ、すぐにでも解消したかったので、

 

今回は、とりあえずSO_LINGERオプションを使ってみることにした。

 

下記のサイトを参考に実装。

 

https://www.ibm.com/support/knowledgecenter/ja/SSLTBW_2.3.0/com.ibm.zos.v2r3.bpxbd00/setopt.htm

 

その際に、LINGERを以下のように設定した。

 

 

SO_LINGERをONにして、タイムアウトを0にした。

 

その結果、確かにTIME_WAIT状態に遷移しなくなりました!!!!

 

 

副作用がないのか心配ですが、とりあえずSO_LINGERオプションをONにして

 

様子をみたいと思います。

タグ: 

カテゴリ:TCP/IP  [コメント:0]

Wiresharkでパケットを検索する方法

目安時間:約 4分

最近WireSharkを使用することが多くなってきた。

 

地図を載せた組み込み系のソフトから、

 

正しく地図情報が送られてきているかの確認に使用することが多い。

 

WireSharkとは

 

WireSharkは高機能なパケット取得・プロトコル解析ソフトで、

 

ネットワークに流れるパケット情報をリアルタイムで調査することが可能だ。

 

ネットワークエンジニアには必須のツールであるといえる。

 

※最も私はネットワークエンジニアではないが

 

 

WireSharkは以下からインストールすることができる。

 

https://www.wireshark.org/download.html

 

 

インストール時に特に困ることはなかった(と思う)。

 

 

起動すると、キャプチャしたいインタフェースを聞かれるので、

 

ダブルクリックして起動する。

 

 

キャプチャを開始すると、メイン画面に次々とパケットが表示される。

 

フィルタリング

 

たくさんのパケットが次から次へ流れてくるため、

 

フィルタしないと見づらい。

 

そこで、下記の表示フィルタに検索条件を入力して絞り込む。

 

 

 

IPを指定して検索

 

たいてい、確認したいパケットの

 

SourceのIPやDestinationのIPが分かっていると思うので、

 

それらを指定して検索。

 

 

 

ポートを指定して検索

 

これもかなり使う。

 

指定したポートで通信できているかを確認するときに使う。

 

 

 

TCP制御フラグを指定して検索

 

地味に使うことが多い。

 

SYNが飛んでいるのか、ACKが返ってきているのかなど、

 

疎通確認時に有効。

 

 

以上です。

タグ: 

カテゴリ:TCP/IP  [コメント:0]

【メモ】C++からC言語を呼び出すための方法

目安時間:約 2分

C++で書いているけど、Cのソースコードを読み込みたいときがある。

 

しかし、普通にC++からCの関数を呼び出すと、

 

というエラーになってしまう。

 

 

調べてみると、C++コンパイラは、マングル(mangle)と呼ばれる仕組みがあり、

 

オーバーロードの実現のためなどに、引数の型やクラス・名前空間名を使って

 

修飾された一意の名前を作成して、引き当てに使っているらしい。

 

しかしCコンパイラはマングリングしないため、

 

マングル前の素の名前になっている。

 

それで引き当てに失敗してしまうということだ。

 

対策としては、C++コンパイラに対して、

 

Cの関数であることを明示し、マングリングしないようにさせる必要がある。

 

 

そのためには、以下のようにするだけで、Cのソースコードを利用できるようになる。

 

 

いいね!

 

■参考

http://www.wagavulin.jp/entry/2017/02/09/215036

 

カテゴリ:C++  [コメント:0]

ページの先頭へ