boostnote

はじめに

ブログをパソコンで書いていると、ファイルがどんどん増えていくと思います。
ふとしたことからよさげなエディタBoostnoteを見つけたので紹介します。

Boostnoteとは

オープンソースで開発されているプログラマ向けのエディタで、Windows, Mac, Linux版がリリースされています。
https://boostnote.io/ja/

特徴

語りだすと長くなりますが、ひとまず、以下の点が大きな特徴です。

  1. ファイル保存は不要
    スマフォやタブレットと同様にファイル保存を意識しなくてもよいので、思いついたときに書き溜めることができます。

  2. Markdownのプレビュー表示がスムーズ
    デフォルトでは、マウスフォーカスが外れるとMarkdownプレビューに切り替わってくれます。
    左右に、編集画面とプレビュー画面を表示することも可能です。

boostnote3.png

 

おすすめの設定

  1. 言語設定
    何はともあれ、言語を日本語に設定しましょう
    boostnote1.png

  2. タブ数
    デフォルトは2ですが、好みで4にします。

  3. プレビューへの移動
      Markdownのプレビューへの切り替えは、デフォルトでは、マウスフォーカスを失った時ですが、右クリックのタイミングで切り替え可能です。

  4. スニペットのデフォルト言語
      新規作成字に、"Markdown"と"スニペット"が選択できます。
     "スニペット"は、複数の文章を1つの題名で管理できます。メモを別ファイルで書き溜める場合に便利なモードです。
    "スニペット"でデフォルトの言語を、"Markdown"に設定します。

    boostnote2.png

    終わりに

     bootstnoteは、シンプルですが、非常に奥が深いエディタです。
    少しずつ、良さを伝えていければと思います。

Visual Studio Code

はじめに

VS Codeは、ファイルをクローズせずに終了すると、次回起動したときに、そのファイルを開いた状態で起動します。
確かに便利ですが、コードを書こうとゆう時にブログの下書きが開いて起動したりすると、テンションが削がれます。
ということでちょっと試してみました。

「Restore Windows」設定を変更

メニューから「ファイル」-「基本設定」ー「設定」で設定画面を開きます。

設定画面の中の「ウィンドウ」カテゴリの中の「Restore Windows」を"none"に変更します。
file

デフォルトの、"one"では、最後にアクティブだったWindowを再び開くという設定です。

 

未保存のファイルがあるときの扱い

ただし、「Restore Windows」を"none"に設定しても、未保存ファイルの場合は、クローズされず、次にVS Codeを起動したときに自動的に開いてくれます。
これは便利な機能だと思いますが、設定反映漏れが起こらないように、一般的なテキストエディタのように、未保存ファイルがある状態で、VS Codeを終了しようとした場合に、「ファイルを保存しますか?」ダイアログを出すようにすることができます。

先ほどと同じ設定画面から、「テキストエディタ」カテゴリの「ファイル」という分類の中に、「Hot Exit」という項目があります。
file
これを"none"にすると、未保存ファイルがある状態で、VS Codeを終了しようとした場合に確認ダイアログが表示されるようになります。

Docker

はじめに

はてなブログから、レンタルサーバに引っ越すにあたり、事前に、Windows上で、WordPress環境を立ち上げ移行作業を行いました。
作ったWordPressの環境一式を本番サイトに移動します。
その時の備忘録です。

docker-composeとは

docker-composeは、複数のコンテナを使う Docker アプリケーションを、定義・実行するツールです。
WordPress環境は、、WordPress本体を実行するのdockerイメージとデータベース(mysql)のdockerイメージの2つのdockerイメージを連携して実行する必要があります。
dockerコマンドを使う場合、これら2つのコンテナを個々に、起動等の制御が必要ですが、docker-composeを使用することにより、これらのコンテナをまとめて管理することができます。
docker-composeは、dockerをインストールすると、一緒にインストールされていますので、追加インストールは不要です。

docker-compose.ymlファイルの準備

docker-composeを利用するには、docker-compose.ymlファイルを用意します。
今回は、WordPressのコンテナと、mysql:5.7のコンテナを起動する定義を作成しました。
mysqlのデータベース名、ユーザ名、パスワードは、コンテナ間で一致させてください。
また、docker-compose.ymlファイルと同じディレクトリに、"sitedata"というディレクトリを作成しておいてください。
WordPressのコンテナ内の"/var/www/html/"が、このホルダにマッピングされ、作成したWordPressのsiteデータ一式がこの中に作成されます。

version: '3.1'

services:

  wordpress:
    image: wordpress
    container_name: "wordpress"
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
        - ./sitedata:/var/www/html/
    depends_on:
        - db
  db:
    image: mysql:5.7
    container_name: "wp-mysql"
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'

# https://docs.docker.com/compose/compose-file/#volume-configuration-reference
volumes:
    sitedata:
         driver: local

 

docker-composeによるサービス開始

Docker Quick Terminalから、作成した、docker-compose.ymlファイルがあるディレクトリに移動します。

以下のコマンドで、WordPress, mysqlのコンテナが起動します。
(初回はイメージのダウンロードから行われます。)

docker-compose up -d

起動が成功している場合は、ブラウザから以下のURLにアクセスしてください。

http://ipaddress:8080/

成功すれば以下のWordPressの初期設定画面が表示されるはずです。
file
ipadressは、以下のコマンドで、ログを確認し、WordPressがサービスしている、ipadressとportを確認してください。

docker-compose logs

ちなみに、サービスの起動に失敗する場合は、"-d"をつけずに、upしてみてください。
起動時にエラー出ている場合に確認がしやすくなります。

コンテナをまとめて停止するには、以下を実行してください。

docker-compose stop

また、コンテナをまとめて削除する場合は、以下を実行してください。

docker-compose rm

最後に

docker-composeにより、WordPressのような複数のコンテナをつかった環境を管理するのが楽になります。
一度、docker-compose.ymlを作成してしまえば、中身を忘れても、起動と停止はできますので。

またよろしくです。

 

Python,株式

はじめに

こんにちは、爆走ひつじです。

個別銘柄を購入する際、自分が買いの決心するための判断材料として、「みんかぶ」や「四季報」を見ていますが、もう少し自分でも決算書を分析できたらなぁと思っています。
ただ、いちいち決算書をダウンロードしてきて、エクセルに打ち込んで分析するのは面倒なので、今風に?Web上からデータを拾ってきて、自動的に分析できると良いなと思い、Pythonで少しトライしてみました。

決算書データのスクレイピング

ulletというサイトで、各上場企業の決算書を見ることができます。
スクライピングは禁止されていないようですので、今回は、このサイトで公開されている情報で試してみることにしました。

企業価値検索サービス Ullet
[http://www.ullet.com/:embed:cite]

題材として、ソニーの決算書を使ってみました。

http://www.ullet.com/%E3%82%BD%E3%83%8B%E3%83%BC/%E6%B1%BA%E7%AE%97%E6%9B%B8

このページには、「貸借対照表(B/S))、「損益計算書(P/L)」、「損益計算書(P/L)」が掲載されているのですが、今回は、「損益計算書(P/L)」から、収益性を評価するために、以下の2つの指標を算出してみました。

  • 売上総利益率(粗利率)(%)
    売り上げに占める、売上総利益の割合で、これが高いほど、高い付加価値をつけた商品を提供できていることになります。電機メーカーだと30%程度が目安です。

    計算式は、以下になります。
    売上総利益率(粗利率)(%) = 売上総利益 ÷ 売上高 x 100

  • 当期純利益率(%)
    売り上げに占める、当期純利益の割合で、その期における最終的な儲けの指標です。期によっては特別な事情が発生して、一時的に下がることがあるため、時系列で評価することが望ましいです。

    計算式は、以下になります。
    当期純利益率(%) = 当期純利益 ÷ 売上高 x 100

処理の概要

Pythonのデータ解析ライブラリであるPandasをメインに使用しています。
実行は、Jupyter notebookで行っており、Pythonコードの入力/実行、Matplotlibライブラリによるグラフ表示も、ブラウザ上で行っています。

  1. Pandasのread_html関数で決算データを、読み込み
  2. Pandasの機能を用いて、分析
  3. Matplotlibライブラリにより、時系列グラフを作成

 

実行結果

先に実行結果をお見せします。
file
2019年3月の 「売上総利益率(粗利率)(%)」(グラフ上は青い、Gross Mergin)が、100%なのは元のデータがおかしそうですが、年度を追うごとに40%近くまで上がっており、商品の高利益化が少しずつ進められていそうです。
当期純利益率は、2018年度になってようやく5%まで回復しています。
決算書の分析はまだ勉強中なので、今回おまけです...

 

実行コード

注釈をいろいろ書いているので、解説は不要だと思います。
Python,Pandasはまだ慣れていないため、日付の変換処理のコードは、以下のサイトの解説を参考にさせていただきました。

出典1 http://www.stockdog.work/entry/2016/08/28/180911
出典1 :[http://www.stockdog.work/entry/2016/08/28/180911:embed:cite]

import pandas as pd
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
%matplotlib inline

## スクライピング処理
url = 'http://www.ullet.com/%E3%82%BD%E3%83%8B%E3%83%BC/%E6%B1%BA%E7%AE%97%E6%9B%B8'
df = pd.read_html(url)

# 決算書の「損益計算書(P/L)」を参照
print(df[6])
# インデックス名が重複している一方の"当期純利益"をrename
df[6].loc[7,'決算年月日'] = "当期純利益(率)"

# 行と列変換用に、行のインデックスを名称にする 
# (行と列を入れ替え後に系列名が数字になるのを避けるため)
df_i = df[6].set_index('決算年月日')

# 行と列を変換
df_it=df_i.T
# インデックスをつけなおす
df_it = df_it.reset_index()

# 日付の修正  (この部分は出典1を参考にさせていただきました)
dates = []
for day in df_it['index']:
    day = day.replace("年", "-")
    day = day.replace("月", "-")
    day = day.replace("日", "")
    time = datetime.datetime.strptime(day, '%Y-%m-%d')
    dates.append(time)
df_it["Date"] = dates

## 「損益計算書(P/L)」の解析部分(今回はちょっとだけ)
# 粗利益率を計算
df_it['粗利率'] = df_it['売上総利益'].astype(float) / df_it['売上高'].astype(float) * 100

# 純利益率を計算
df_it['純利益率'] = df_it['当期純利益'].astype(float) / df_it['売上高'].astype(float) * 100

print(df_it)

## グラフ表示処理
# 粗利率のプロット
x = df_it['Date']
y1 = df_it['粗利率']
plt.plot(x, y1, color="blue", linewidth=1, linestyle="-",marker='.', label='Gross Mergin')

# 純利益率のプロット
y2 = df_it['純利益率']
plt.plot(x, y2, color="red", linewidth=1, linestyle="-",marker='+', label='Gross Profit Mergin')

# ラベルを追加
plt.xlabel('Date')
plt.ylabel('Profit Mergin(%)')

#グリッド線((お好みで)
plt.grid(True)
plt.grid(which='major',linestyle='dashed')
plt.grid(which='minor',linestyle='dashed')

# x軸の目盛ラベルを年単位で
locator = mdate.YearLocator()
plt.gca().xaxis.set_major_locator(locator)
plt.gcf().autofmt_xdate()

# 凡例を追加(お好みで)
plt.legend()

plt.show()

最後に

爆走ひつじは、Pythonは、初めてだったのでいろいろ戸惑うところもありましたが、数時間いろいろ試行錯誤しながら、何とか、決算書を自動で分析できそうな足がかりをつかむことができました。
といっても、まだまだ勉強は必要ですが...
初心者でも80行足らずのコードでここまでできるのは、Pythonとそのライブラリの設計の良さが相まってのものだと感じました。
ここからいろいろ発展させていきたいと思います。

またよろしくです!

Visual Studio Code

はじめに

こんにちは、爆走ひつじです。

最近、Windows上で使用するテキストエディタとして、Visual Stdio Codeを使い始めました。

ブログの文章を書くときは、Markdownで技術しています。
Markdownは簡単なルールで、見出しやナンバリング、太字や斜体を指定できるのは魅力ですね。
ただし、文字の色を指定するのが面倒なので、Visual Studio Codeで簡単に指定する方法を考えてみました。

Markdownで文字の色を指定するには

例えば、
文字の色をあかにするには、

文字の色を<font color=#FF0000>あか</font>にするには、

と記述する必要があります。
これがちょっと面倒だなーと思い、拡張機能でよいのがないか探していました。

文字色指定のショートカットを実現してくれる拡張機能

これが意外とない...
作るしかないかなーと半分あきらめモードで見つけたのが、「markdown-helper」という拡張機能です。
markdown-helper
色を指定したい文字を選択し、Ctrl + Shift + c で、以下のような文字色を指定するメニューがでます。
jacoobさん、ありがとう!

f:id:sheepX:20190525222528j:plain
文字色指定メニュー

...ただ、惜しい。
メニューが中国語です。
まぁ、だいたい、どんな色になのかわかるんですが。

 

番外編

ここからは、番外編です。
拡張機能は、javascriptで書かれているので、メニューを日本語に修正するのは難しくなさそうです。
ちょっと直してみました。

拡張機能のパス

Visual Studio Codeの拡張機能は、以下で管理されているようです。(少し自信がないのですが...)

C:\Users\"ユーザ名"\.vscode\extensions\jacoob.markdown-helper-1.1.1

この中の、"extension.js"というファイルを以下のように修正します。

f:id:sheepX:20190525222740j:plain
修正内容
f:id:sheepX:20190525222941j:plain
修正後の文字色指定メニュー

最後に

このブログの作成も、jacoobさんの拡張機能に感謝しつつ利用させていただいています。
githubにもコードが上がっているので、コードをもとに拡張機能の作り方を勉強したいと思います。
github: vscode-markdown-helper

またよろしくです。

Visual Studio Code

はじめに

こんにちは、爆走ひつじです。

最近、Windows上で使用するテキストエディタとして、Visual Stdio Codeを使い始めました。
このエディタは、Microsoftが無料で提供している軽量なコードエディタです。
最大の特徴は、Visual Studio Marketplaceから豊富な拡張機能が入手可能で、各言語に対応した入力補完、デバッグなどの開発支援など幅広い機能拡張が入手可能です。

f:id:sheepX:20190519150204j:plain
Visual Stdio Code

メニューの日本語化

Visual Stdio Codeを初めて起動したときに心の隅で思うのが、メニューが日本語化されてねーなぁ...でしょう。
英語でもいいんだけどね...と自分に言い聞かせつつ、もやもやしてしまいますよね。
コマンドウィンドウ「Ctrl + Shift + P」を表示させ、 以下のコマンドを入力します。

> configure Display Language

コマンドを入力すると、en (英語)の下に、Install additional languages... という選択肢が表示されますので、Japanese Languageを選択すると、「Japanese Language Pack for VS Code」がインストールされてメニューが日本語化されます。

f:id:sheepX:20190519145854p:plain

 

言語モードの切り替え

Visual Stdio Codeは、デフォルトではテキストエディタモードになります。
ブログを書くために、マークダウン形式で編集したい場合、一旦、拡張子(.mdなど)をつけて保存して開きなおせば、マークダウンモードとなります。
しかし、いちいち開きなおすのはめんどくさいのです。
意外と迷ったのですが、エディタ右下の、"プレーンテキスト"をクリックすると、言語モードの選択ができます。

最後に

長いことエディタは秀丸を使ってい、最近のモダンなエディタは毛嫌いしていたのですが、意外とよいかもしれないという感触を得ています。
拡張機能により、かゆいところに手が届くようにカスタマイズすることも可能だと考えています。
...しかし、このブログも、Visual Stdio Codeを使って書いていますが、まだ、わかっていないことが多くストレスが多いです。
少しずつ、育てていきたいと思います。

またよろしくです!