3.1415.jp

してみんとてす

Dataquest mission 113 - FiveThirtyEight college-majors

FiveThrtyEight が提供する college-majors データの分析。

データを読み込む

import pandas as pd

# 全ての年代と、近年のデータをそれぞれ読み込む
all_ages = pd.read_csv('all-ages.csv')
recent_grads = pd.read_csv('recent-grads.csv')
recent_grads.head(5)
Rank Major_code Major Major_category Total Sample_size Men Women ShareWomen Employed ... Part_time Full_time_year_round Unemployed Unemployment_rate Median P25th P75th College_jobs Non_college_jobs Low_wage_jobs
0 1 2419 PETROLEUM ENGINEERING Engineering 2339 36 2057 282 0.120564 1976 ... 270 1207 37 0.018381 110000 95000 125000 1534 364 193
1 2 2416 MINING AND MINERAL ENGINEERING Engineering 756 7 679 77 0.101852 640 ... 170 388 85 0.117241 75000 55000 90000 350 257 50
2 3 2415 METALLURGICAL ENGINEERING Engineering 856 3 725 131 0.153037 648 ... 133 340 16 0.024096 73000 50000 105000 456 176 0
3 4 2417 NAVAL ARCHITECTURE AND MARINE ENGINEERING Engineering 1258 16 1123 135 0.107313 758 ... 150 692 40 0.050125 70000 43000 80000 529 102 0
4 5 2405 CHEMICAL ENGINEERING Engineering 32260 289 21239 11021 0.341631 25694 ... 5180 16697 1672 0.061098 65000 50000 75000 18314 4440 972

5 rows × 21 columns

学部毎の卒業生数:過去、現在

# 学位のカテゴリ(学部に相当する)の一覧を作成する
major_categories = all_ages['Major_category'].value_counts().index

# 学位カテゴリ毎の総人数
all_ages_major_categories = {}
recent_grads_major_categories = {}

# 与えられたデータフレームのカテゴリ毎の総人数を求める
def calc_total_for_major_category(df):
    major_categories = df['Major_category'].value_counts().index
    totals = {}
    for major_category in major_categories:
        totals[major_category] = df[df['Major_category'] == major_category]['Total'].sum()
    return totals
 
# 過去の全データと、近年のデータ、それぞれで学位カテゴリ毎の総人数を求める
all_ages_major_categories = calc_total_for_major_category(all_ages)
recent_grads_major_categories = calc_total_for_major_category(recent_grads)

低賃金に甘んじている学位取得者の割合は?

low_wage_percent = recent_grads['Low_wage_jobs'].sum() / recent_grads['Total'].sum()
print(low_wage_percent)
0.0985254607612
=> およそ10%

学位毎の失業率は増えている?

majors = recent_grads['Major'].value_counts().index

all_ages_ordered = all_ages.sort_values('Major')
recent_grads_ordered = recent_grads.sort_values('Major')

all_ages_are_better = all_ages_ordered['Unemployment_rate'] < recent_grads_ordered['Unemployment_rate']
recent_grads_are_better = all_ages_ordered['Unemployment_rate'] > recent_grads_ordered['Unemployment_rate']

all_ages_lower_unemp_count = sum([1 if better == True else 0 for better in all_ages_are_better])
recent_grads_lower_unemp_count = sum([1 if better == True else 0 for better in recent_grads_are_better])

print(all_ages_lower_unemp_count)
print(recent_grads_lower_unemp_count)
128
43
=> 近年は43の学位で失業率が低い。悪化している。

深圳という都市

中国本土で最も平均所得が高いといわれるほど経済発展した深圳ですが、1980年代までは寂れた漁村でした。香港に隣接しているという地の利を生かして、鄧小平によって初の経済特区に指定されてから急速に発展した、意図的に作られた近代都市です。

深圳市の面積は約2000k㎡で東京都とほぼ同じ。形も東西に長く、東京都のようです。そこに3000万人超とも言われる人々が暮らしています。全国から人が集まって出来た深圳は、広東省の海側中心部にありながら、広東語ではなく普通語が話されています。香港は広東語ですので、深圳は、広東語圏にぐるっと囲まれた、普通語都市です。

縮尺を揃えた東京都と深圳市

人口は20代、30代の若い人が中心です。深圳市中心部の居住区は、それぞれが柵で囲われていて、警備員が24時間、門の開け閉めをしています。といっても治安が悪いわけではなく、むしろ日本と同等ともいえる治安の良さを誇ります。スリなどは多少あるものの、女性が真夜中に一人で歩いていても、身の危険を感じることはないでしょう。

前回僕が滞在した場所では、柵で囲われた広大な敷地に、30階建てくらいの高層マンションを100本くらい立てて、その中に小学校を1つ、中学校を1つ、幼稚園を2つ作っていました。そういう巨大マンション群が、数え切れないほどある。それが深圳中心部です。

ショッピングモールと商店街

深圳にも、カルフールやウォルマートといった、大規模スーパーやショッピングモールがあります。それと隣接して、巨大な商店街が広がっています。イオンやダイエーに駆逐されてしまった日本のパパママストアとは違い、深圳の個人商店は膨大な人口に支えられて賑わっています。大きなショッピングモールの周囲を、それ以上に大きな商店街が、無数の個人商店や飲食店を擁して取り囲みます。

深圳のスーパーでは、野菜は量り売りが主流でした。店内に計測用のカウンターがあり、そこに野菜や果物を持っていくと重さを測り、値札シールを貼ってくれます。魚も活魚が多く、小さなスーパーであっても、水槽の中に魚を泳がせています。カルフールでは生薬の量り売りをしていました。さすが漢方(中国医学)発祥の地です。書店でも本草綱目(ほんぞうこうもく)という、中医薬学の根幹となる400年前の本が目立つところに置かれていて、生活に根付いていることをうかがわせます。

緑豊かなガーデンシティ

何もないところに人口的に作られた都市のため、深圳中心部は大きな公園が数多く点在しています。地図でみると、公園の多さに驚かされます。その一つひとつが、管理の行き届いた非常に綺麗な公園です。休日ともなると、たくさんの人が公園に繰り出します。大きな音で伝統音楽を鳴らしながら散歩をする老人、ダンスをする集団、歌っている人、バドミントンをする人など、思い思いに過ごしています。禁止事項の多い日本の公園よりも、市民との距離が近いようです。

中国では、他の人が何をしているかは、誰も気にしません。人に迷惑をかけないようにしようという日本人の発想とは違い、隣の人が何をしていても気にしない、だからみんなが自由に過ごせる。それが中国の文化であるように思います。

日中の公園内では、常にスタッフが掃除をしています。ゴミがあるから掃除をしているというよりは、ゴミがほとんど落ちていない中で、わずかなゴミを探して拾い集めています。

公園外にも、ゴミはほとんど落ちていません。街のいたるところに、リサイクル用とそれ以外に分別されたゴミ箱が設置されているため、ゴミを捨てるのに困ることはありません。ゴミ箱の設置密度は東京以上で、むしろ東京の方が、ゴミを捨てるためにコンビニなどを探す必要のある、ゴミ捨て難民になりがちです。

書店、図書館

深圳市の中心、少年宮駅の近くにある深圳書城中心城と、深圳図書館を訪れました。深圳書城中心城は、深圳でおそらく最大の大きさを誇る書店です。地上2階、地下1階で東西に長い形をしています。ハードウェアの都市だけあって、ハードの本は、質、量ともに、日本より上だろうと感じました。例えば、ハイエンド3D CAD である CATIA や SolidWorks の本の2015年版の翻訳書が、2000円ほどの価格で発行されています。日本では需要がないので出せないし、出しても7000円、8000円といった定価をつけることになるのではないでしょうか。図書館には、さすがに最新の本は見当たらなかったものの、書店から一年遅れくらいの、日本の図書館では考え難い新しさの本が並んでいます。

日本では見られない本として、各種電気製品の修理マニュアル本が売られています。液晶テレビ、エアコンなど、いろいろありますが、圧巻は iPhone の修理本です。日本で iPhone を修理するといったら、割れたタッチパネルを交換する程度のものでしょう。深圳は違います。iPhone を回路図レベルで解説してくれます。

その一方、ソフトウェアは東京より弱い印象です。Ruby on Rails でウェブサービスを作ることの多い僕は、ついつい Rails や Ruby の本を探してしまうのですが、深圳最大の書店に、Learn RUBY the HARD WAY と Metaprogramming Ruby 2 の、2点しか見つかりませんでした。深圳のソフトウェアエンジニアは、Ruby を使わないのでしょうか。Node.js は、5-10点くらいあったように思います。

深圳には、自助図書館なる、本の自動貸出返却機があります。深圳では、日本のようなジュースの自動販売機は見かけませんが、ワインの自動販売機、モバイルバッテリーの自動貸出機など、特色のある機械がありました。

図書館でソフトウェアの本を探したものの、日本のウェブエンジニアが関心を持つような本は無く。探し方が悪いのか。深圳には、WeChat を作っている Tencent などの巨大企業があるので、ソフトウェアエンジニアもそれなりにいるはずなのです。みんなどうしているんだろう。中国のソフトウェアの中心は上海だそうなので、上海の書店や図書館も覗いてみたいです。

日本の図書館では見られない分類として、武器工業がありました。

この図書館は、日本の建築家、磯崎新の手によるものだそうです。蔵書400万冊、利用者席数2500の、巨大な図書館です。

茶館

深圳の居住区には「◯◯茶館」という店がたくさんあります。ただのお茶屋さんではありません。マージャン屋さんです。店の奥は小部屋に分かれていて、人々がマージャンに興じています。疲れると部屋から出てきて、食事をとったり、お茶を飲んだりします。日本と同様、中国も基本的にマージャンはお金を賭けるものですが、勝った人が食事を奢るなどして、皆が楽しんでいるようです。

昔の茶館は、お茶を飲む店だったようです。今でも、お茶だけを飲むことができます。一杯のお茶を注文することもできますが、「一道」で注文すると、無限にお茶が飲めます。ポットのお茶が減ってくると注ぎ足してくれます。

トイレ

深圳の街中では、洋式よりも、しゃがむタイプ(便宜上ここでは和式と呼ぶ)が圧倒的に多く、数少ない洋式にもウォシュレットはついていません。和式はほとんどが水洗トイレですが、中国のトイレットペーパーが水に溶けにくいのと、紙を流す前提の設計になっていないため、紙は備え付けのゴミ箱に捨てます。

紙がないことも多いため、ティッシュペーパーや、芯を抜いたトイレットペーパーの持ち歩きは必須です。中国にもテッシュペーパーは売っていますが、日本人が期待するサイズのものがないため、日本から多めに持っていくほうがいいでしょう。ティッシュを持ち歩かないと、深圳では生きていけません。

水洗には、こんなタイプもあります。

第4回深圳観察会で行った工場の一つには、個室トイレのドアがありませんでした。ドアのないトイレに出会ったのは、ここが最初で最後です。

雨に弱い街

深圳では土砂降りの雨が多いようなのですが、都市の排水能力が不十分で、雨のあとは街のいたるところに水溜りができます。人工的に作られたため中心部はとてもきれいな街並みなので、この点は残念です。僕はずっと CROCS で過ごしていました。僕は日本でも、ヨソ行きのときと車を運転するとき以外は CROCS を愛用しています。

電動自転車、電動バイク

深圳中心部では、人力の自転車をほとんどみかけません。ほとんど電動自転車です。日本の電動アシストとは異なり、電気の力でスーっと走ります。こぐ必要がありません。路駐や駐輪場の自転車を見ると、人力自転車も数の上ではそこそこありますが、街中を走っている自転車は圧倒的に電動の方が多いです。一方、中心部から離れて郊外に行くと、足漕ぎ自転車も多くなります。

車の運転

深圳は、車がとても多い。めっちゃ多い。とはいえ、深圳観察会に参加していたバンコク在住の @kaolynn さんが言うには、バンコクのカオスよりはマシとのことです。

車の運転は、日本と比べると荒いです。急な車線変更は当たり前です。隙間があれば突っ込みます。クラクションをバンバン鳴らします。朝の通勤時間帯だと、5秒に1回はクラクションを聞きます。誇張ではありません。でも、不思議と事故は少なく、安全運転です。計15日の滞在で、事故を見たのは一度だけでした。クラクションを鳴らすことで、積極的に注意喚起をして、事故を防いでいるようです。運転思想が根本から違うのですね。

第4回 ニコ技深圳観察会 2016年4月

2016年4月12日から4月15日までの間、ニコ技深圳観察会に参加してきました。一足早く4月9日に香港経由で深圳入りし、4月17日まで9日間滞在しました。実は1月にも7日間滞在しているので、そのときの経験も踏まえて、深圳という魅力的な都市についてまとめます。

ニコ技深圳観察会

ニコ技深圳観察会というのは、チームラボの高須さんが主催している深圳のハードウェアスタートアップ、工場、世界最大の電気街華強北のツアーです。2014年8月から始まり、今回で4回目を数えます。

4月12日の朝9時に華強北のケンタッキー前にいること、という現地集合、現地解散の、比較的参加のハードルが高い催しにもかかわらず、今回は30名弱の方が参加されました。企業や所属機関からの出張よりは、自腹の方が多い印象です。

当然、世間の平均から比べると、いい意味で変わった人々、尖った人々が集まります。深圳そのものの魅力もさることながら、このような方々と知り合い、刺激をたくさんもらえるというのも、ニコ技深圳観察会の大きな価値です。

僕は一ヶ月くらい遅れて、ようやくこの原稿を書いているのですが、観察会終了後のみなさんのFacebookやTwitterを見ていると、よくもまあ、これだけアクティブに行動するものだと、驚きを隠せません。このフットワークの軽さがあるからこそ、ニコ技深圳観察会に参加されたのでしょうね。

深圳という都市

中国本土で最も平均所得が高いといわれるほど経済発展した深圳ですが、1980年代までは寂れた漁村でした。香港に隣接しているという地の利を生かして、鄧小平によって初の経済特区に指定されてから急速に発展した、意図的に作られた近代都市です。

深圳市の面積は東京都とほぼ同じ。形も東西に長く、東京都のようです。そこに3000万人超とも言われる人々が暮らしています。全国から人が集まって出来た深圳は、広東省の中にありながら、広東語ではなく普通語が話されています。香港は広東語ですので、深圳は、広東語圏にぐるっと囲まれた、普通語都市です。

続きを読む

Let's encrypt で ELB のSSL証明書を作る

AWS の ELB(Elastic Load Balancer)用のSSL証明書を、AWS Certificate Manager でタダで作りたかったのですが、残念ながら東京リージョンに対応していません。CloudFront では使えるのにっ。

そこで、無料SSL証明書が作り放題の Let’s encrypt (https://letsencrypt.org/) を使うことにしました。今までのSSL証明書発行と根本的に違うので、最初とまどいました。でもわかってしまえば簡単。単に、SSL証明書を発行したいドメインのWebサーバ上で Let’s encrypt のツールを動かすだけなのです。

https://example.com/ の証明書を発行したい、とします。ウェブサーバを1台用意して、example.com の DNS をこのウェブサーバに向けます。既に稼働しているサーバの場合は、Apache や Nginx が動いていることでしょう。その場合、Let’s encrypt は自動的にこれらのサーバのドキュメントルートにファイルを作成し、そのファイルを Let’s encrypt のサーバからアクセスしてもらって疎通確認をします。新規のドメインだともっと簡単で、新しいウェブサーバ上でスタンドアローンの Let’s encrypt を動かすだけです。ウェブサーバを内包しているんですね。

で、このドメインに任意のコンテンツを置けるということは、このドメインの所有者であるということだから、SSL証明書を受け取る資格を持っているということなのです。Google Webmaster tools などのドメイン所有者確認方法と一緒です。

ELB用のSSL証明書を発行する場合、ELB上では Let’s encrypt を動かせませんから、使い捨てのサーバを1台用意してやります。なんでもいいけど、AWS で microインスタンスを新規に立ち上げます。そして、DNS の設定で、発行を希望するドメインをそのインスタンスに向けてやる。

というわけで Let’s encrypt。

$ sudo su

# yum install git

# git clone https://github.com/letsencrypt/letsencrypt

# cd letsencrypt/

# ./letsencrypt-auto --help --debug
(いろいろ自動でインストールしてくれる。Amazon Linux のサポートは experimental なので --debug をつけないと起動しない)

# ./letsencrypt-auto certonly --standalone -d example.com
(昔懐かしのブルーバックの画面で連絡先メアドを聞いてくる。あとライセンスへの同意)

# ls /etc/letsencrypt/
accounts  archive  csr  keys  live  renewal

# ls /etc/letsencrypt/live/
example.com

# ls /etc/letsencrypt/live/example.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem

できました。ELB にアップロードしましょう。ここで一つ大事な話があります。AWS Console を使う場合、Certificate Chain の chain.pem を「Certificate Chain」欄に入力してはいけません。Public Key Certificate欄に、cert.pem、chain.pem を上下につなげてこの順番でコピペしましょう。

ところで、Let’s encrypt の SSL証明書は 90日で期限切れになるのです。90日ごとにこんな作業やっていられません。そこで、作成して ELB に自動投入、というスクリプトを作っている方々がちらほらいらっしゃいます。

でも、僕は怠惰なので、AWS Certificate Manager が東京リージョンの ELB に対応するのを待つことにします。

Visa Developer - 決済処理プラットフォームのオープン化

Visa が決済処理プラットフォームを開発者に公開するプログラム「Visa Developer」を始めました。数年で決済代行業者の淘汰が進みそうな破壊力を感じさせます。

CyberSource Payments は、RESTful な決済API。Stripe や WebPay と比べると、パラメータが煩雑ですが、プラットフォーム自身はこんなデータまでサポートしているのか、と感じさせてくれます。利用にはクレジットカード会社との加盟店契約が必要なので、誰でもすぐに本番環境で使えるわけではありませんが、開発は自由にできます。なお、決済代行会社とは違い、クレカ情報は保存してくれません。

Visa Checkout では、ユーザのカード情報と配送先をVISAが保存します。ユーザはVISA Checkout にログインします。ECサイトへのユーザ登録などがなくても使えます。Facebookログインのようなものと捉えることもできるし、ECサイトがVISAショッピングモールの店子になるようなものと捉えることもできます。モールサイトは存在しないけど。

Visa Direct の Watch List Screening API がステキです。経済制裁されてる国の企業や、テロリスト、麻薬密売人などの氏名、住所とどれだけ近いかを示すスコアを返してくれます。ついでにカード決済が承認されるかどうかも。

Visa Direct API を使うと個人間送金を実装できるのですが、国や地域による制約があって、たとえばアメリカとの間では使えません。そういう法律があるんでしょうね。そしてこのサービスを提供する事業者は PCI DSS を満たさなくてはならない。数千万かかるともいわれているので、スタートアップが手を出すには重いなあ。

魅力的な Visa Direct API ではあるけれども、個人間の国際送金を実現するなら、クロスボーダー部分はビットコインで実装するのが一番よさそうです。こちらも、いろいろと規制されていくだろうけど。

決済代行業者は5年くらいかけてバタバタ倒れるか吸収合併されるんじゃないでしょうか。決済代行業者そのものは「クレカ情報を保存する箱」として、あるいは複数の決済手段に対して統一APIや統一画面を提供する役割として、存在意義があると思うんです。

既存の決済代行業者はすでに重いシステム投資をしているので、こういうライトに使えるAPIがVISAや銀行から提供されてしまうと、安いシステム投資だけで済む新興の決済代行業者に、手数料などの面で対抗が難しくなるんじゃないか、と思います。銀行もAPIの提供に前向きな姿勢ですし。

統一決済APIとして面白いなと僕が注目しているのは Komoju(こもじゅ)。クレカ情報を保存する箱として面白いのはトークン決済の Stripe です。