勉強してこなかった人がとりあえず英語を勉強したいならNHKラジオを聴くのが一番いいと思う

英語学習って常に新しい本が出たり学習教材出たり、で不安を掻き立ててくるけれど、英語の勉強、特定のテストの点数をあげるのが目的じゃなければ、NHKラジオの英会話番組は一度は聴くのがなんだかんだで一番良いんじゃないかって思う。

低コストだけど豊富なコンテンツ

英語の勉強って書籍代だけならばともかく、英会話教室などは数十万かかることも多い。だけど、無料である海外PodcastやTEDの動画は初心者にはレベルが高い。その点、NHKラジオは解説が豊富のものが多いのでちょうどいい。

聴くための環境が揃っている

NHKラジオの番組を聴く方法はいろいろある。

  1. FMラジオで聴く(無料)
  2. らじる★らじる(無料)
  3. NHK語学で聴く(前週無料)
  4. CDを購入する(有料)
  5. 語学アプリのアプリ内課金で購入する(有料)

www3.nhk.or.jp

らじる★らじるは、NHKラジオ版radiko。それぞれ番組は週に2〜5回やっている。 基礎英語1〜3 と ラジオ英会話は 毎日平日 朝6時台から15分ごとに行われていて、生活のリズムに取り入れやすい。

www2.nhk.or.jp

特定の時間にまとめて聴きたい人は、NHK語学でアカウントを登録すれば無料で前週の番組をストリーミングで聴くことができる。

www.nhk-book.co.jp

お金を出しても良いのならば、CDを購入したり、ネットで購入することもできる。自分は語学プレーヤーで購入している。再生スピードの変更や、テキストも一部載っているので、ここで購入すればテキスト買う必要がない番組もあったりする。

おすすめの番組

基礎英語3

www2.nhk.or.jp

基礎英語1、2、3 は今年からリニューアルされた。基礎英語3はコーパス言語学が専門。中学生3年生レベルだけど、ジングルのテンションがものすごい高かったり、日々のストーリーに出てくるロボコーパスが1コーナー持っていたり、飽きさせない仕掛けが多くて好印象。週5回放送。

攻略!英語リスニング

www2.nhk.or.jp

1つのスクリプトを2回に分けて、リスニングを強化を目的とした番組。テーマが広めで、背景知識を予習してから聴くことをお勧めしている。2016年7月のテーマならば、「ロミオとジュリエット」「皇帝ネロ」「グリネッジ・ヴィレッジ」「プレートテクトニクス」と範囲が広くて雑学的。講師の語学学習に対してのストイックさが見え隠れするのも、妙な魅力。

ゆるく長くつづけるには最強

blog.tinect.jp

持続的に学習を続けるには、モチベーションを上げて一気にやるのではなく、とにかく生活のリズムに取り込むことが大事。それをするのに定期的に新しい番組が聞けるラジオは最適だと思う。もちろん、ずっと聴き続けていても、英語がマスターできるとは限らないけど。

本の探し方の話 - BRUTUS 特別編集・読書入門 読んだ

BRUTUS特別編集 合本・読書入門。 (マガジンハウスムック)

BRUTUS特別編集 合本・読書入門。 (マガジンハウスムック)

3年分のBRUTUSの本特集をまとめたムック本。 こういうのを見ると本の探し方って難しいよなって思ったりする。 自分は本を探す場合、結構使い方を分けてたりする。

Amazonで探す

とにかく電子書籍としてKindleで読みたいので、基本的に読みたい本があったときはまずAmazon Kindleストアで探す。 なければ、普通の本で探す。どういう本を読みたいかはハッキリしているときに使う。 最近だと サーバントリーダーシップ について読みたいって思ったときに、それを検索して使う。

サーバントリーダーシップ

サーバントリーダーシップ

ブックオフで探す

たまに中古本屋(要はブックオフ)にも行く。近所のブックオフはすぐ売られた自己啓発本が多いのだけど、あまり定価と離れていない。なので少し古めの古い新書を購入することが多い。最近はマンガを含めて立ち読みできない本が増えて探す効率が悪くなってしまったのであまり行かなかったりする。

ゾウの時間 ネズミの時間―サイズの生物学 (中公新書)

ゾウの時間 ネズミの時間―サイズの生物学 (中公新書)

こういう名著といわれる古い新書とか探すの便利な気がする。

本屋で探す

本屋も場所によって趣向が違うので、いろいろな本屋に行って、自分と趣向があう本屋を決めておく。とりあえず困ったら 池袋のジュンク堂丸の内の丸善新宿の紀伊國屋書店。同じく新宿のコクーンタワーにあるブックファースト に行けば良いと思う。

本屋の陳列の合う、合わないは自分の趣向やそのときの気分によって移り変わりが激しいと思う。ヴィレッジヴァンガードとかまさにそれで、何かこじらせたときはヴィレッジヴァンガード行けばいいと思う。

とか絶対置いてあるイメージ。

もうひとつ、カフェ兼本屋みたいなところにいくと、普段の本屋で奥のほうにあるようなのが目立つところにあったりする。なんでこんな本置いているんだろ、売れるとか売れないとか気にしていないだろ的なところにあるので、それに乗っかてみるのも一興。

クマにあったらどうするか: アイヌ民族最後の狩人 姉崎等 (ちくま文庫)

クマにあったらどうするか: アイヌ民族最後の狩人 姉崎等 (ちくま文庫)

図書館で探す

図書館は本屋と陳列の仕方が違い、ジャンルではっきり分かれている。あと書庫に入っていることも少なくないので意外とふと本を探すには難易度が高いところだと思う。だけど特定のジャンル(統計とか)を読みたいとはっきりしているならやはり便利。カーリル | 日本最大の図書館蔵書検索サイト で読みたい本を検索して、在庫があること確認してから行くのが良い。

国立国会図書館―National Diet Libraryは全て書庫に入っているので、自分で検索して取り寄せないといけない。だけど全部あるので、自分の感度次第なのも良い。

Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)

Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)

絶版本とか国会図書館で読んでた。

あと通常の図書館形式ならば 広尾にある東京都立図書館が良かった。技術書が予想以上にある。

人のおすすめから探す

とはいえ、自分で探しつづけると限界があるし、思考が自分の都合の良いほうに寄ってきてしまう。似たような本を何度も読んでしまう。 なので人がおすすめしている本を鵜呑みにするのは、定期的にやったほうが良いと思っている。

そういうところに入ってくるよな、BRUTUSは。すごいなぁ、と。

エンジニアミーティングポッドキャスト vol.63 プロジェクトの立て直し方

soundcloud.com

vol.63 プロジェクトの立て直し方

公開。

普段は該当のサービスに属しているのではなく、 何か短期的に達成しなければいけないミッションが起きたときに 責任者として立つというちょっと変わったサービスの関わり方をしている板敷さんとのお話。

プロジェクトに属し続ける立場とはまた違う視座になっています。

ショベルナイトをクリアした

www.nintendo.co.jp

ショベルナイトクリアした。プレイ時間だいたい6時間くらい。

www.youtube.com

宣伝でレトロゲーを売り文句にしている通り、プレイ感覚はロックマンに近い。 ショベルを武器にステージを進んでいく。

アクションは、あまり多くなくジャンプ中の下突きで敵を踏んでジャンプするのが中心。 代わりに、ステージ中には隠し部屋などが多数あり、ショベルで掘ると入り口が現れるアドベンチャーが強め。

ファミコンと見せかけて、演出が豪華。ファミコンレベルではない。 スーパーマリオ3のようなフィールドマップがあり、 ハンマーブロスみたいなのが出てくるのも狙っている感じがある。 難易度もファミコン時代のように難しさのようで、要所要所ウェポンを使えば難易度高くなかったりする。

演出にすごいこだわりがある分、アクション部分がジャンプアクション比率高め。 ロックマンのような武器を切り替えて攻略するところは少なめ。 だけど、ゲーム展開に勢いがあるので一気にプレイ出来ると思う。

いつの間にかre:dashの設定が簡単になってた(Dockerを使えば)

v0.8.2-rc の頃に一回入れたことがあったのだけど 当時は中途半端だったDockerサポートがきちんと整備されていて使えるようになっていた。

http://docs.redash.io/en/latest/setup.html#docker-compose

要は、postgres イメージと Dockerイメージがあれば動きますよって話。

https://github.com/getredash/redash/blob/master/Dockerfile にあるので、 まずは自分の手元でDockerイメージを作成する。

$ git clone git@github.com:getredash/redash.git
$ cd redash
$ docker build -t redash .

docker-compose.yml もサンプルもredashのリポジトリに入っているので、それを使えばひとまずお試しができる https://github.com/getredash/redash/blob/master/docker-compose-example.ym

$ mv docker-compose-example.yml docker-compose.yml

docker-compose-example.yml の中身はこれ。

redash:
  image: redash/redash:latest
  ports:
    - "5000:5000"
  links:
    - redis
    - postgres
  environment:
    REDASH_STATIC_ASSETS_PATH: "../rd_ui/dist/"
    REDASH_LOG_LEVEL: "INFO"
    REDASH_REDIS_URL: "redis://redis:6379/0"
    REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
    REDASH_COOKIE_SECRET: veryverysecret
redis:
  image: redis:2.8
postgres:
  image: postgres:9.3
  volumes:
    - /opt/postgres-data:/var/lib/postgresql/data
redash-nginx:
  image: redash/nginx:latest
  ports:
    - "80:80"
  links:
    - redash

ただし、アカウントの登録などの初期化処理が setup/docker/create_database.sh にまとめられている*1ので そちら経由でdocker-compose upを行う。

$ setup/docker/create_database.sh

初期化が終わったあといくつかのコンテナが抜けているのであらためて docker-compose up を実行。 2回目以降は普通に docker-compose up が使える。

f:id:taizo_onexone:20160702120722p:plain

dockerの動いている環境にポート80でアクセスすれば、Re:dashが試せる。 (アカウントの初期値は admin/admin。create_database.sh に書いてある )

環境変数について

環境変数はドキュメントの記載があまりないので、コードを直接見るほうが早い。 自分がさわったやつ。

変数名 説明
REDASH_STATIC_ASSETS_PATH assetsのpath
REDASH_LOG_LEVEL ログレベル
REDASH_REDIS_URL redis の向き先
REDASH_DATABASE_URL postgres の向き先
REDASH_COOKIE_SECRET cookieのsecret
REDASH_GOOGLE_CLIENT_ID google OAuth を使うときのclient id
REDASH_GOOGLE_CLIENT_SECRET google OAuth を使うときのclient secret
REDASH_GOOGLE_APPS_DOMAIN google OAuthでログインを特定のドメインのみにしたい時に使う
REDASH_ALLOW_SCRIPTS_IN_USER_INPUT クエリーの説明部分でフォームを設定したい場合に入れる

自分らが実際に利用する環境を用意する場合は、nginxとredash だけ docker化して、 redisとpostgres の向き先だけ別のものにしている。 後はGoogle OAuth でログインすると権限管理が楽なのでREDASH_GOOGLE_* を設定している。 REDASH_ALLOW_SCRIPTS_IN_USER_INPUT は便利そうなのでいれてる。

注意

上はgithubから直接落としてきたけれど、Docker Hubにあるタグがついているイメージを使ったほうが良いと思う。

https://hub.docker.com/r/redash/redash/tags/

参考

IT人材白書2016 ざっくり読んだ

www.ipa.go.jp

育成のところがちょっと気になった。

  • EUでeリーダーシップというスキルが提唱されている
    • ビジネス、デジタル、組織的なリーダーシップを育成する
  • 日本ではIoT分野の立ち上げに技術力とビジネスアイデア構想力の必要性が高まっている
    • R&D部門と営業がセットになった組織体制を取ったりしてるんだとか。

f:id:taizo_onexone:20160629235719p:plain http://eskills-lead.eu/fileadmin/lead/reports/lead_final_report.pdf

上がeリーダーシップスキルトライアングル。 eリーダーに必要な能力要件がまとまっている。

日本ではIT融合人材ってやつみたい。 www.ipa.go.jp

いろいろあるんだなぁと。

OpenCVを使ってカメラの映像を顔認識をしてみる

Python,OpenCV3を使ってカメラの映像からざっくり顔認識してみる。 Mac環境で、パッケージ管理はanacndaを利用。

インストール

brew install pyenv
$ xcode-select --install
$ pyenv install anaconda3-4.0.0
$ pyenv global anaconda3-4.0.0
$ pyenv rehash
$ pyenv version
anaconda3-4.0.0 (set by /Users/username/.pyenv/version)

env を設定

export PATH="$HOME/.pyenv/shims:$PATH"
export LC_ALL='ja_JP.UTF-8'

condaのアップデート

$ conda update conda
$ python --version
Python 3.5.1 :: Anaconda custom (x86_64)

OpenCV3のインストール

condaを使ってインストール。

$ conda install -c https://conda.binstar.org/menpo opencv3

エラーになる場合

libhdf5でエラーになる時がある。

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import cv2, matplotlib
ImportError: dlopen(/Users/username/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages/cv2.cpython-35m-darwin.so, 2): Library not loaded: @rpath/libhdf5.10.dylib
  Referenced from: /Users/username/.pyenv/versions/anaconda3-4.0.0/lib/libopencv_hdf.3.1.0.dylib
  Reason: Incompatible library version: libopencv_hdf.3.1.dylib requires version 12.0.0 or later, but libhdf5.10.dylib provides version 11.0.0

libhdf5 をインストールしたりアップデートしたりする。

$ brew tap homebrew/science
$ brew install hdf5
$ brew search 
$ conda update libhdf5

OpenCVのバージョンを確認

python
>>> import cv2
>>> print(cv2.__version__)
3.1.0

必要なパッケージをインストールしておく。

$ conda install numpy matplotlib

カメラから映像を取り込む

cv2.VideoCapture() を使うとisightカメラをそのまま使える。

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
cap.set(3, 640) # 横サイズ
cap.set(4, 480) # 縦サイズ

while(True):
    ret, frame = cap.read()
    if ret == False:
        break

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # グレースケールに変換

    cv2.imshow('fram', gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.dstroyAllWindows()
  • 毎フレームごとに読み込んで、cv2.imshow() に設定する

実行するとカメラの映像を白黒にしたプレビューが表示される。

送られてきた映像から、顔認識をする

パフォーマンスを気にしないで、ざっくりと顔認識を体験したいとする。 顔認識は、cv2.CascadeClassifier() を使う。

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)

cascade_path = "/Users/username/.pyenv/versions/anaconda3-4.0.0/pkgs/opencv3-3.1.0-py35_0/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"
cascade = cv2.CascadeClassifier(cascade_path)
color = (0,0,255)

cnt = 0
while(True):
    ret, frame = cap.read()
    if ret == False:
        break
    else:
        if (cnt % 10) == 0:
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            facerect = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))

        cnt += 1

        if len(facerect) > 0:
            for rect in facerect:
                cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), color, thickness=4)

    cv2.imshow('fram', frame)

cap.release()
cv2.dstroyAllWindows()
  • 全てのフレームに cascade.detectMultiScale() をかけるとCPU負荷がかなりかかるので適当に10フレームごとに確認をする
  • cascade.detectMultiScale() はグレースケールの画像を使って精査する
  • 顔認識の結果を cv2.rectangle() を使って毎フレームごとに枠線を書き込むようにする

結果

f:id:taizo_onexone:20160627143923g:plain

仗助の顔を識別してくれない。

参考

postd.cc qiita.com