読者です 読者をやめる 読者になる 読者になる

BuzzLog / バズログ

BuzzLog / バズログはニュースとエンターテインメントを伝えるメディアです

jupyter notebook + pandas + matplotlib で株価表示してみた

プログラミング

jupyter notebook + pandas + matplotlib でいい感じに株価を表示してみました。

データを拾ってくる

http://k-db.com/ から株価の時系列データが csv でダウンロードできます。 ここでは試しに Sony の株価を使ってみます。

[6758 東証1部] ソニー 日足 時系列データ CSVダウンロード

コード

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os

file_name = "~/stocks_6758-T.csv"

df = pd.read_csv(file_name, encoding="SHIFT-JIS")
# print(df) # 確認

# plot 設定
plt.figure(figsize=(10, 7))
plt.rcParams["font.size"] = 22
plt.rcParams["xtick.labelsize"] = 10
plt.rcParams["ytick.labelsize"] = 10
plt.rcParams["legend.fontsize"] = 10
plt.rcParams['font.family'] = 'AppleGothic' # ※ Mac 環境での日本語指定
plt.grid()

# データ選定
x_index = range(len(df))
stock = df["始値"]

# 値域指定
plt.axhline(y=0)
# plt.ylim(ymax=8)
# plt.ylim(ymin=-8)

plt.xlabel("")
plt.ylabel("始値[円]")
plt.title("SONY の株価推移")

plt.plot(x_index, stock,"r",marker="o",markersize=2)

嵌ったこと

グラフの軸に日本語入れると文字化けする

日本語フォントの利用を可能にする必要がある。
解決方法は以下の 2通り。

matplotlibrc でフォントを指定する

デフォルトでは、以下のユーザのホームディレクトリ以下( /Users/username/.matplotlib/matplotlibrc )にある matplotlibrc ファイルに以下のような感じで font.family を追記すれば OK。

echo "font.family : AppleGothic" >> ~/.matplotlib/matplotlibrc

これで rcParams[‘font.family’] を設定しなくてもデフォルトでフォント指定できる。

ところで、hogerc ってファイルたくさんあるけど、 rc の由来ってなんだろう?
答えは Run Command の意味らしい。
ソースは以下。 superuser.com

スクリプト内で明示的にフォント指定する方法

以下のコードをスクリプト内に仕込みます。

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'AppleGothic' # Mac 環境での日本語指定

上の rc ファイルを変更する方法との違いとしては、
フォント指定したいときは都度都度スクリプト側にこのコード書く必要があります。

参考

k-db.com

openbook4.me

スタートアップから始まるデザイン変革【土屋 尚史氏】@ Hack Osaka 2017

インターネット

「スタートアップから始まるデザイン変革」として、
株式会社グッドパッチ 代表取締役社長 / CEO 土屋 尚史氏の講演を聞いた。
講演の内容を思い出しつつメモしておく。

http://www.innovation-osaka.jp/hackosaka/

DeNA 南場さんの言葉:「多国籍軍を作りなさい」

シリコンバレーインターンしたきっかけとして、
学生時代に受けたDeNA 南場さんの話があった。

アメリカのスタートアップは多国籍の人で構成されている。
最初から世界市場をターゲットにしてビジネスをしている。

日本のスタートアップは日本人だけで構成され、 日本市場をターゲットにして、成功したら世界展開というのがデフォ。
めっちゃ時間掛かる。

だから、シリコンバレーのツテを大阪で探した。 サンフランシスコに渡り、btrax Inc. にてスタートアップの海外進出支援などを経験。
その後、グッドパッチを設立。  

デザイン界隈で起きていること

海外、特に US ではデザインファームの買収が相次いでいる。

Accenture が Fjord を、McKinsey が LUNAR を買収、などなど。
ちょっとググるだけでこんなの出てくるね。

blog.tayori.com

有名なスタートアップにはデザイナーceo が多いAirbnb, Pinterest, Instagram などなど。

これらの社会現象からもデザインが重要になってきていると言える。

なぜデザインが重要なのか?

デスクトップPCからスマートフォンへ。
人とデバイスの距離が近くなった。
一日に100回以上もスマホがアンロックされる。

スタートアップ差別化の要因は UI/UX。
Airbnb の Web デザインはいろんなサービスが真似している。 しかし、重要なのは、見た目のデザインではなく、
重要なのはそれ以外のところにある。

Airbnb の「ホストを知る、レビュー機能」 ユーザーがホストを信頼できるサービスデザイン、コレが本質的に重要。

昔はフォトショ・イラレつかえるだけで「デザイナー」を名乗れた。
今はユーザー体験をデザインすることもデザインに含まれてきている。

イノベーションはスタートアップから生まれる

Google で成功している最近のビジネスとして Youtube, Android とかがある。
これらはすべてスタートアップを買収してはじまっている。
変革はスタートアップから起こっている。

スマホ革命はスタートアップに有利

スマホアプリ開発は SDK がフリーで公開され、システム開発のコストが劇的に下がった。
コンピューティングリソースはクラウドサービスにより誰にでも安価に使えるものになった。
しがらみがなく、改善・意思決定のスピードが早いスタートアップに有利な環境になっている。

人生100年時代における働き方【石川 善樹 氏】@ Sansan Innovation Project 2017 OSAKA

インターネット

Sansan Innovation Project 2017 OSAKA に行ってきました。
「時代の流れに左右されず、ビジネスの可能性を広げていく、これからのビジネス社会に求められる新しい働き方」を紹介するイベントです。
中でも個人的に印象に残った以下の講演についてのメモをまとめておきます。

「人生100年時代における働き方―世界で活躍する日本人アスリートに学ぶ勝利の習慣―」

予防医学研究者/Campus for H共同創業者/Habitech研究所長

石川 善樹 氏

jp.sansan.com

アスリートに学ぶ「勝利の習慣」

根性は続かない。また漫然と続けても成果は上がらない。
オリンピアンやプロゲーマーなど世界で活躍する日本人アスリートの研究から、
継続的なパフォーマンス向上を達成するためのモチベーションの源泉とはなにか?
どうすれば長期間にわたって高い成果を上げ続けることができるのか?

これらの問いに対してどういった回答が得られるのか。

脳の仕組みを知ること

人間の脳はざっくり言って 3 つのパートに分けられる。
それぞれ好き嫌いがあるようで、、、

新しい脳 は、大きな目標を好みます。
オリンピックで金メダル!とか。
真ん中の脳 は変化を嫌います。
大きな目標を掲げろー!と言われても、変化を嫌うのでそれを却下しちゃいます。
古い脳 は「決まった状況で起こる小さなノルマ」を好みます。
細分化された小さなタスクを処理するのが好きです。

モチベーションを継続する仕組み

人の脳の特徴から、急に大きな目標を掲げても「真ん中の脳」は変化を嫌うので却下されてしまいます。
小さく細分化されたタスクに焦点を当てて取り組むことで、「継続」して習慣化することができます。
「金メダル目指して根性で努力しろ!」は続かない。
「いつかメダル獲りたいなぁ」と漫然と続けても成果は上がりません。

内的動機・外的動機を使い分ける

内的動機づけとは、好奇心や関心など自分自身の内からなる動機づけです。
外的動機づけとは、お金や物など外からの報酬からなる動機づけです。

例えばサッカー選手で言うと、
「子供に夢を与えたい!」とか「サッカーするのが心の底から楽しい」ってのが内的動機。
「1億円プレイヤーになりたい」「ワールドカップで優勝したい」ってのが外的動機。

特徴としては、内的動機は長期的、外的動機は短期的。
内的動機は外発的動機づけに比べると実施方法が明確ではない。

最初は外的動機に紐づく小さな目標設定で物事が上達する。
これはあまり意志力を使わない。
大きな目標よりも、現在地から計算した小さな目標設定が大事。
日々の小さな目標設定がうまくなれば継続することができるようになる。
しかしながら、この動機づけだけだと、そのうち限界が来る。

この時、他分野からの学びとか興味とかで内的動機づけを行うことで熟練度を向上できる。

総じて、世界で継続的にパフォーマンスを発揮できるアスリートには、
自分がいる現在地に応じて、モチベーションの源泉を時期に応じて変化させること、そして「小さな問い」を巧みに立てることが上手い。

今の時代の生き方としてのススメ

一つへの依存で生きていくのは難しい。
ほとんどの人の拠り所は、たくさんへの依存。
副業解禁もその一例。
会社だけじゃない他の拠り所も見つける。

参考図書

マネジャーの最も大切な仕事――95%の人が見過ごす「小さな進捗」の力

マネジャーの最も大切な仕事――95%の人が見過ごす「小さな進捗」の力

Heroku に Django アプリを Deploy してみた

プログラミング

Heroku で作った DjangoPython アプリをデプロイしてみました。
ここではその時のメモを残します。

追加するファイル

runtime.txt

heroku サーバー側で動作する Python のバージョンを指定するために追加する。

requirements.txt

依存するライブラリを指定するために必要。 heroku デプロイ時にこのファイルに書かれたモジュールが pip でインストールされる。

Procfile

“web: gunicorn mysite.wsgi –log-file -”

こんなおまじないを追加する。

setting.py を修正する。

 +# update db settings
 +import dj_database_url
 +db_from_env = dj_database_url.config(conn_max_age=400)
 +DATABASES['default'].update(db_from_env)
  • static ファイルの指定
 +STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
   STATIC_URL = '/static/'

 +# Extra places for collectstatic to find static files.
 +STATICFILES_DIRS = [
 +    os.path.join(BASE_DIR, "static"),
 +]

qiita.com

Deploy は Github と連携してやるのが安定

heroku toolbelt のコマンドいちいち覚えるのがめんどくさいし、
GUI ベースでポチポチすれば、リポジトリ更新時に自動で deploy もしてくれる。

サーバー側でコマンド実行するには

データベース連携する場合、テーブル生成が必要。
以下のような感じで、APP_NAME で指定したアプリ向けにコマンド実行できます。

heroku run python manage.py hoge --app APP_NAME

テーブル生成、データ注入、スーパーユーザー作成は実行する必要ありますね。

python manage.py migrate
python manage.py loaddata
python manage.py createsuperuser --user=admin

Kindle 2月の月替わりセール【電子書籍】 おすすめ本 3 選

書評 インターネット

毎月恒例の Kindle 月替わりセール。

今月もおすすめの厳選作品に絞ってご紹介します!

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

ソフトウエア開発者向けに「より良い人生戦略」を設計するためのノウハウ・スキルを凝縮したバイブル。

ソフトウェア技術者向けの書籍に見えますが、
いわゆるテクノロジーのことはほとんど書いてありません。

対人的な交渉・指導・意思疎通などのソフトスキルについての解説が詳細に綴られていてソフトウェア開発者以外にもおすすめできる本です。

大富豪が実践しているお金の哲学

大富豪が実践しているお金の哲学

大富豪が実践しているお金の哲学

著者は冨田和成さん。
筆者は元野村證券勤務で、富裕層向けのプライベートバンキング部門にて世界の大富豪と仕事をしていた経歴があります。

筆者の目線でみた大富豪の実態をつまびらかにすることによって、大富豪ならではの習慣や心構え、ひいてはその根底に流れるお金に対する哲学を教えてくれます!

筆者のブログも紹介しておきます。

ZUU社長 冨田和成の鬼速ブログ

Think Simple ―アップルを生みだす熱狂的哲学

Think Simple ―アップルを生みだす熱狂的哲学

Think Simple ―アップルを生みだす熱狂的哲学

複雑に考えて仕事する自分を、誇りに思っていないか。 「シンプル」は現代ビジネスにおける最強の武器だ スティーブ・ジョブズのもとでアップルの「Think Different」キャンペーンにたずさわり、iMacを命名した伝説のクリエイティブ・ディレクターが初めて明かす、ビジネスとクリエイティブにおける「シンプル」という哲学。 いまや世界一のテクノロジー企業となったアップル躍進の秘密とは?もちろん誰もが知っている事実がある。アップルには偉大なるビジョナリーがいた。デザインに優れ、エンジニアリングにも、製造も小売もマーケティングもコミュニケーションもすべてが優れていた。だが、それらすべてを超越した何かが、真にアップルをアップルたらしめたのだ。

月替わりセール対象作品一覧はこちら

www.amazon.co.jp

初心者ブロガー必見、アクセスアップのためのツール 3 選

インターネット

最近ブログ始めた初心者ブロガーではありますが、
参考になったな―と思うツール類をまとめておきます。
Google Analytics とか、入れてて当たり前の類はスキップしてます。

Google ウェブマスターツール

Googleウェブマスターツールは、Google が公式で提供するウェブ管理のためのツールです。
無料で使うことができ、自分のサイトの状態をカンタンに確認できます。

creive.me

あのサービスの懐かしの過去を見る、Wayback Machine

Internet Archive: Wayback Machine

Wayback Machine」とは、ウェブサイトをアーカイブしているサービスで、
過去にどのように表示されていたかを確認できるサービスです。
すべてのサイトがアーカイブされているわけではありませんが、
過去のウェブデザインなどを調べるのに重宝するかも。
ブログ記事の差分とかも見られるかもしれません。
特定のページを記録しておきたい場合は、
Wayback Machineのサイトで、「Save Page Now(今のページを保存する)」 というオプションを選択すればできます。

読者数の多いブログを読む!

ブログ界で成功している人からは学ぶことが多いと思います。
成功の指標として良さそうなのは読者数。 読者が多い人をまとめてるサイトがあるので以下にリンク貼っておきます。 はてなブログ読者数ランキング

個人的にはこのあたりの記事が好きです。
もちろん読者登録させてもらいました。

www.yutorism.jp

Django の Fixture を使ってデータ生成する

プログラミング

Django で Web アプリケーションを作っていて、
試しにデータ作成したいなぁと思うときが多々あります。
いつもいちいち /admin にアクセスして GUI でデータ作ってしまってます..
「達人プログラマー」では、

人間はコンピュータのように繰り返し作業が得意ではありません。それを期待することも間違っているのです。

という一節がありました。
とても耳が痛いです。
面倒で単調な動作はできるだけプログラムにやらせようということで、
コードベースでデータを自動生成できる仕組みを導入します。

新装版 達人プログラマー 職人から名匠への道

新装版 達人プログラマー 職人から名匠への道

結論からすると「Fixture 使え」ということになって、
Providing initial data for models を読め!
ってので終わりますが、ここでは備忘録代わりに、自分が辿った作業手順をダンプしておきます。

Fixture を直接書くのはしんどい。。

各アプリの model で定義しているデータフォーマット見て、json, yaml を直打ちするのが直接的なアプローチかと思いますが、それしんどくないですか…?

ここでは、「ファイル作成 -> データ注入 -> できた!」という順方向の思考プロセスではなくて、
「既存サイトのデータをダンプ -> ダンプされたファイルを読んで理解 -> ファイル作成」
というアプローチをとります。

admin ページからデータ生成

まずは既存サイト(ここでは Djangoチュートリアルを読み進めて出来る mysite, polls なやつ)で、admin ページから GUI ベースで適当にデータ作成します。
createsuperuser でその名の通りスーパーユーザー作ります。

$ python manage.py createsuperuser --username myname --email myname@email.com

サーバー起動して admin ページにアクセスしましょう。

$ python manage.py runserver

http://localhost:8000/admin にアクセスして適当にデータ作りましょう。

dumpdata でデータフォーマットを確認

以下のコマンドでデータ出力します。
パイプ経由で jq 使っていい感じに見やすくダンプしてみます。

$ python manage.py dumpdata polls | jq .

[
  {
    "model": "polls.question",
    "pk": 1,
    "fields": {
      "question_text": "this is a sample question1",
      "pub_date": "2017-01-28T07:54:09Z"
    }
  },
  {
    "model": "polls.question",
    "pk": 2,
    "fields": {
      "question_text": "this is a sample question2",
      "pub_date": "2017-01-28T07:54:09Z"
    }
  },
  {
    "model": "polls.question",
    "pk": 3,
    "fields": {
      "question_text": "this is a sample question3",
      "pub_date": "2017-01-28T07:54:09Z"
    }
  },
  {
    "model": "polls.choice",
    "pk": 1,
    "fields": {
      "question": 1,
      "choice_text": "sample choice 1",
      "votes": 100
    }
  },
  {
    "model": "polls.choice",
    "pk": 2,
    "fields": {
      "question": 2,
      "choice_text": "sample choice 2",
      "votes": 200
    }
  },
  {
    "model": "polls.choice",
    "pk": 3,
    "fields": {
      "question": 3,
      "choice_text": "sample choice 3",
      "votes": 300
    }
  }
]

あー、こんな風にデータ出力されるのね。
GUI ベースで入れたデータとの整合性を把握しつつ、
どこを修正すればいいかはサクッと理解できました。

loaddata でデータを注入

先程ダンプしたデータをファイルに吐いて、
今度はファイルからデータ生成してみましょう。
Django では主に json or yaml フォーマットで fixture を作成できるようです。
さっきのコマンド流用しつつ以下のコマンドでファイルにダンプします。

python manage.py dumpdata polls | jq . > polls/fixtures/polls_json.json

どうやら、ファイルは Django が認識出来るようにするため、 fixtures/ 以下に置く必要があるようです。

json ファイルからデータ注入

(ファイル名若干変だけどご愛嬌) polls_json.json に記載したデータが、
データベースに適切に取り込まれるかを以下のコマンドで確認します。

$ python manage.py loaddata polls_json

Installed 6 object(s) from 1 fixture(s)

みたいなのがダンプされれば OK /admin にアクセスしてみて確かに反映されていることを確認しました。

ついでに yaml でも

以下の内容で polls/fixtures/polls_yaml.yaml を作成します。

- model: polls.question
  pk: 1
  fields:
    question_text: this is a sample question1
    pub_date: 2017-01-28T07:54:09Z

- model: polls.question
  pk: 2
  fields:
    question_text: this is a sample question2
    pub_date: 2017-01-28T07:54:09Z

- model: polls.question
  pk: 3
  fields:
    question_text: this is a sample question3
    pub_date: 2017-01-28T07:54:09Z

# Choice ----------
- model: polls.choice
  pk: 1
  fields:
    question: 1
    choice_text: sample choice 1
    votes: 100

- model: polls.choice
  pk: 2
  fields:
    question: 2
    choice_text: sample choice 2
    votes: 200

- model: polls.choice
  pk: 3
  fields:
    question: 3
    choice_text: sample choice 3
    votes: 300

yaml ファイルからデータ注入

yaml でも取り込めることを確認。

$ python manage.py loaddata polls_yaml

参考図書

入門 Python 3

入門 Python 3

Lightweight Django

Lightweight Django