K4750.NET

Mistel Barocco MD600 試し打ち感想

Cherry MXキーを採用した、セパレート式メカニカルキーボード「Mistel Barocco MD600」が日本でも販売開始されたので、秋葉原のツクモeX.にて試し打ちしてきた。


1.外観・作りについて

  • キーの配列は、英語87テンキーレスから、ファンクションキーやカーソルキー等の周辺キーを単に省略した配列(分かりづらい^^;)。HHKBと形状は似ている(?)が、HHKBの英語配列版ほどには、変則的な英語配列ではない。
  • ESCキーは、英語87テンキーレスで言う「`~」キーの位置にあり、「`~」キーは「FN + ESC」で入力可能のようだ。
  • 高級感はあまりないが、安っぽさもなく。個人的には、シンプル&コンパクトな形状は好みの部類であった^^;
  • CherryMXの4軸(赤、青、茶、黒)はあるけど、、静音(Majestouchで言うピンク軸)がないのが残念。職場では使えないかな(黒は・・・重すぎて^^;)

英語87テンキーレスキーボード好きであり、周辺キーを廃し過ぎたコンパクトすぎるキーボードは(Windows環境でぬるく生活している自分からすると)実用性の面で購入するのは躊躇してしまう。英語87テンキーレスを単純に左右に分割した形状のキーボードが出ればなぁ・・・(もちろん、ピンク軸で)。


2.打鍵感

  • CherryMXの赤軸モデルが店頭に展示されていたので、打鍵してみた。赤軸だった^^;
  • 左右分割した形状で打鍵してみたが、ErgoDoxのような変則極まりない^^;形状ではなく、通常のキーボードを左右に分割しただけのキー並びなので、ほとんど違和感なく打鍵できた。

違和感なく打鍵できたので、、仮に今後販売が途切れても・・・通常の英語配列のキーボードに戻ってきやすそうだ。左右分離キーボードを使ってみたいが、ErgoDox や Matias Ergo Pro はちょっと・・・という人は、検討に値するキーボードかと思う。個人的には、英語87テンキーレスキーボードを単純に左右に分割せい!と思う(しつこい^^;)。


3.価格

  • 秋葉原のツクモeX.では ¥15,700(税別)だった。
  • Amazon.co.jp を見てみると・・・赤軸は¥30,000オーバー・・・他の軸は¥16,801(税込み・送料込み)なんだこりゃ?
  • 楽天(アーキサイト@ダイレクト)は ¥17,454(税別)。

MiSTEL BAROCCO MD600 分離式 メカニカルキーボード 英語配列 62キー CHERRY 青軸 PBTキーキャップ ブラック MD600-CUSPLGAA1
Amazon.co.jp での取り扱い開始日: 2016/10/24
【MISTEL】コンパクトなのに分離型!エルゴノミクスキーボードの進化系 CHERRY MXスイッチ搭載 左右分離型メカニカルキーボード Barocco MD600-WUSPLGAA1
楽天 アーキサイト@ダイレクト

Matplotlib on Ubuntu on Windows

Python 用グラフ描画ライブラリ「Matplotlib」を Ubuntu on Windows 環境で動かしてみた。


1.Ubuntu on Windows のインストール

まずは「Windows Subsystem for Linux」をインストール。その後、開発者モードを有効化の上、Bash+Ubuntuをインストールする。以下がとても詳しい。

Bash のインストールが終わったら、上記サイトを参考に Bash 上で初期設定およびパッケージの最新化を行う。

$ sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'
$ sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
$ sudo apt update
$ sudo apt upgrade

それにしても、、Windows上でネイティブなLinuxディストリビューションが動作するなんて・・・なんて キモチワルイ 驚きな!


2.各種 Ubuntu パッケージのインストール

Matplotlib のインストールに必要な各種パッケージをインストールする。Python3 を使いたいので、基本的には Python3 用をインストールする。

$ sudo aptitude install python3-pip
$ sudo aptitude install libfreetype6 libfreetype6-dev
$ sudo aptitude install pkg-config
$ sudo aptitude install cython
$ sudo aptitude install python3-tk

3.Python 用モジュールのインストール

Python3 用の各種モジュールは pip3 を使ってインストールする。

$ sudo pip3 install setuptools
$ sudo pip3 install ipython
$ sudo pip3 install cython
$ sudo pip3 install pandas
$ sudo pip3 install matplotlib

なんか時々ビルドに失敗しているように見えるが・・・試しに ipython を起動してみる。

$ ipython
Python 3.4.3 (default, Sep 14 2016, 12:36:27)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

ipython は問題なく起動するようだね!


4.Matplotlib 動作確認

肝心な Matplotlib は・・・

import matplotlib
matplotlib.use('Agg')

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5,4,3,2,1])
plt.savefig('graph.png')

ファイル「graph.png」が作れたようだ。

作成した graph.png を Windows から開いてみる。Ubuntu 環境の home ディレクトリは、例えば k4750 ユーザだと、以下のような場所に存在する。

C:\Users\k4750\AppData\Local\lxss\home\k4750
Matplotlib で描画したグラフその1

\(^o^)/


5.notebook は動作せず・・・

なお、、ブラウザから ipython を使うための notebook モジュールを試してみたが・・・

$ sudo pip3 install notebook

インストールはできた(?)けど、ブラウザからアクセスして対話的に python 言語を処理させようとするも、うまく動作せず^^; 同じ手順で、Ubuntu on VMWare でインストールしたら問題なく動作したので、、Windows 上では(今のところ)無理ってことなのかな。

kindle voyageで通勤快読

kindle voyage 化粧箱

通勤時間片道2時間弱・・・長時間のバス・電車通勤を有意義に過ごすためには、快適な読書デバイスが不可欠である。


1.読書デバイスの条件

バス・電車通勤という利用シーン(および個人的需要)を考えると、、

  • 片手操作可能なこと(吊革手すりにおつかまりください!)
  • 方手持ち故、軽いこと(首・肩が凝るのですよ)
  • 軽さは重要だが、ある程度の解像度・画面サイズは必要(最近小さい文字が見辛くて・・・)

あたりが必須条件となる。


2.なぜ kindle voyage を選んだか

自分の場合はkindle本の蔵書が既に1,500冊以上あるので、読書デバイスは結局、最新kindleシリーズの何れかになる。

  • kindle
    ページめくりボタンがない。解像度(167ppi)が他(300ppi)と比較して低い。極端に軽いわけでもない(161g)
  • kindle paperwhite
    ページめくりボタンがない。重さ200g越えは(個人的には)NG
  • kindle paperwhiteマンガモデル
    メモリ32GB、Wi-Fiモデルのみ。重さはノーマルpaperwhiteに同じ
  • kindle voyage
    少々割高だが、ページめくりボタン(進む・戻る)が両端にある。重さは実測177gとギリギリ許容範囲
  • kindle oasis
    voyageよりさらに¥10,000程高価だが、ページめくりボタンあり(片端のみ)。重さ130g程度と最軽量だが、バッテリー機能が一部カバー(107g)にあり、装着時は許容範囲外の重さ

oasis の軽さは魅力的ではあるが・・・ちと高い^^; ノーマル kindle は美しさ(ppi)に難があり、片手操作のしやすさでは、ページめくりボタンがあった方がよいので、重さがギリギリ許容範囲の voyage を使用している。


3.許容可能な重さについて

過去使用したことのある端末の重さ(実測)を調べると、、kindle 4(第4世代kindle)は重さ的には全く問題なかった(166g)のだが、Nexus 6 (197g)は、手にした感覚も「ずっしり」で、本当に肩こり・首張りな端末だった^^; voyage の 177g は若干不安だったが、Nexus 6 よりも全然軽く感じ、実際に使用してみた感じは kindle 4 の使用感と変わらない。

  • 136g – Xperia Z1 compact
  • 166g – kindle 4
  • 177g – kindle voyage
  • 197g – Nexus 6 + 液晶保護フィルム
  • 336g – Nexus 7 (2012)

個人的な許容範囲は170g~180gあたりが限界と結論。


4.voyage のページめくりボタンについて語る

タッチセンサーや物理ボタンとも違う、voyage の「感圧フィードバック(haptic feedback)方式」のページめくりボタンは、軽く押すと「ブブッ・・・ブブッ・・・」と微かなフィードバック(振動)があり、ボタンを押せたことが分かる仕組みとなっている。タッチセンサーのみだと、画面上を指でなぞったり、タップしながらの操作になるが、voyage のボタンの上に常に指を置いたまま「ブブッ・・・ブブッ・・・」と押下し続ける感触は、、新鮮で心地よい^^;

※ voyage はタッチセンサーで操作することも可能。
※ 感圧フィードバックの強弱は端末の設定で変更可能。
※ 進む・戻るボタン両方が左右それぞれに配されているので、片手で進む・戻るを操作可能。


5.無料3Gは必要か

Wi-Fi版を購入したのだが、、Wi-Fi+3G版にすればよかったと後悔。

  • コンピュータ関係の技術書を読んでいると、電子書籍上のURLがWebサイトへのリンクとなって押下できるようになっており、無料3Gなら気軽にアクセスして参照できるのだなぁ・・・と羨ましく思う。
  • kindleでは英単語等を端末内蔵の辞書で引くことができるのだが、Wikipediaでリアルタイムに検索することもできる。この場合は当然3Gが必要であり・・・技術書等の専門用語はWikipediaの方が充実しているので、気軽に検索できないのは少々残念。

次にkindleを新調するときは、絶対に3G付きにしようと思った^^; (8g 重くなるけどね・・・)


Kindle Voyage Wi-Fi + 3G、電子書籍リーダー
【 Kindle Voyage 保護フィルム 】Digio2 液晶保護フィルム フッ素コーティング 反射防止 抗菌 気泡レス加工 2枚入り
Amazon.co.jp での取り扱い開始日: 2016/3/2
Amazon Kindle Voyage用ORIGAMIカバー
Amazon.co.jp での取り扱い開始日: 2014/9/16
Amazon Kindle Voyage用ORIGAMI本革カバー
Amazon.co.jp での取り扱い開始日: 2014/9/16
【リミテッドエディション】Amazon Kindle Voyage用ORIGAMI プレミアムレザーカバー
Amazon.co.jp での取り扱い開始日: 2015/1/30

タイムズカープラス車両台数等推移

タイムズカープラスの会員なのだが、最近、よく使用していた最寄りのステーションが閉鎖されてしまい、若干不便になってしまった。閉鎖された理由は不明だが、、もしや業績的な問題か?と考え、タイムズカープラスの業績を調べてみた。


1.車両台数等推移

タイムズカープラス車両台数等推移
  • タイムズカープラスの車両台数、ステーション数、会員数をグラフ化
  • データはパーク24 月次業績状況(2011年10月期~2016年10月期)より
  • 左の縦軸は車両台数(台)およびステーション数(件)、右の縦軸は会員数(人)
  • パーク24全体の財務状況は知らないけど・・・このグラフだけ見るとカーシェア事業は順調なように見える・・・というか勢い衰えず。株でも買うか? ^^;

2.結論

近隣のステーションが閉鎖されたのは・・・運が悪かったということね! ^^;

DjangoインストールからHelloWorldまで

Python で実装された Web アプリケーションフレームワーク「Django」で Hello, World! を表示するまでのメモ。


1.前提

Djangoを動作させる環境は以下のとおり。

  • Ubuntu 14.04 LTS
  • Python 3.4.3
  • Apache 2.4.7

2.インストール前準備

Django の INSTALL 方法を確認し・・・

# wget https://www.djangoproject.com/m/releases/1.10/Django-1.10.2.tar.gz
# tar xvfz Django-1.10.2.tar.gz; cd Django-1.10.2
# more INSTALL

いざインストールコマンドをたたくと「setuptools」というモジュールがないことが分かったので・・・

# python setup.py install
Traceback (most recent call last):
  File "setup.py", line 5, in 
    from setuptools import find_packages, setup
ImportError: No module named 'setuptools'

Python3 用の setuptools をインストールする。

# aptitude search setuptools
...
p   python3-setuptools     - Python3 Distutils Enhancements
p   python3-setuptools-git - plugin for setuptools that enables git integration
v   python3.4-setuptools   -
# aptitude install python3-setuptools

3.インストール

Django の setup.py を使ってインストールを実行する。

# python setup.py install
...
Installed /usr/local/lib/python3.4/dist-packages/Django-1.10.2-py3.4.egg
Processing dependencies for Django==1.10.2
Finished processing dependencies for Django==1.10.2

Django のバージョンを確認してみる。

# python
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
1.10.2

以下の方法でも確認が可能だ。

# python -m django --version
1.10.2

4.開発用サーバ(Development server)の動作確認

本家のチュートリアル を参考に、まずは Django 付属の開発用サーバを動かしてみる。

最初に「プロジェクト」を作る。名前は「mysite」とする。

$ cd /pathto/sitedir/
$ django-admin startproject mysite
$ find
.
./mysite
./mysite/manage.py
./mysite/mysite
./mysite/mysite/settings.py
./mysite/mysite/__init__.py
./mysite/mysite/urls.py
./mysite/mysite/wsgi.py

作成した「mysite」へ移動し開発用サーバを起動する。

$ cd mysite
$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

October 08, 2016 - 02:14:31
Django version 1.10.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

lynx http://127.0.0.1:8000/ を実行して、動作しているか確認してみる。

It worked!

Congratulations on your first Django-powered page.

   Of course, you haven't actually done any work yet. Next, start your first app by running python manage.py startapp [app_label].

   You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs. Get to work!

ページは表示された。先ほど開発用サーバを起動したコンソールを見てみると・・・

...
Quit the server with CONTROL-C.
[08/Oct/2016 02:19:09] "GET / HTTP/1.1" 200 1767

アクセスログが出力されている。問題なく動作しているようだ。一旦Ctrl + Cで開発用サーバを停止しておく。


5.Django で Hello, world!

開発用サーバの動作が確認できたので、Django アプリケーション「helloworld」を作ってみる。

$ python manage.py startapp helloworld
$ find
./helloworld
./helloworld/admin.py
./helloworld/models.py
./helloworld/migrations
./helloworld/migrations/__init__.py
./helloworld/apps.py
./helloworld/views.py
./helloworld/tests.py
./helloworld/__init__.py

まず、ファイル helloworld/views.py を以下の内容へ書き換え、HTTPレスポンスとして「Hello, world!」を返す「index」関数を定義する。

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world!")

続いて、helloworld/urls.py を以下の内容で新たに作成し、URLのパターンと「index」関数の紐づけを定義する。

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

さらに、mysite/urls.py を編集する(1行目書き換え、5行目追記)。ここではURLパターンと上記「helloworld」アプリケーションとの紐づけを定義している。

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^helloworld/', include('helloworld.urls')),
    url(r'^admin/', admin.site.urls),
]

再度、開発用サーバを起動し・・・

$ python manage.py runserver

lynx http://127.0.0.1:8000/helloworld/ を実行してみる。

   Hello, world!

\(^o^)/


6.Apache + mod_wsgi + Django で Hello, world!

開発用サーバをインターネットに晒すわけにはいかないので、Apache 経由で動作するよう設定する。

Apache 経由で Django を使用するためには、橋渡しとなる Apache モジュール「mod_wsgi」が必要になる。mod_wsgi は Ubuntu 用のパッケージとして提供されていないように見えるので、、mod_wsgi をコンパイル・インストールするのに必要な各種パッケージをまずはインストールする。

# aptitude install apache2-dev
# aptitude install python3-dev

次いで、コンパイル・インストール。作業には このあたり が参考になる。

$ wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.7.tar.gz
$ tar xvfz 4.5.7.tar.gz; cd mod_wsgi-4.5.7
$ ./configure
$ make
$ sudo make install

Apache の httpd.conf に以下を追記する(「/pathto/sitedir」は適宜読み替えてください)。

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

WSGIScriptAlias /django /pathto/sitedir/mysite/mysite/wsgi.py
WSGIPythonPath /pathto/sitedir/mysite

<Directory /pathto/sitedir/mysite/mysite>
  <Files wsgi.py>
    Allow from all
    Order deny,allow
  </Files>
</Directory>

Apache を再起動し・・・

$ sudo service apache2 restart

lynx http://app.k4750.net/django/helloworld/ を実行してみる。

   Hello, world!

\(^o^)/


7.DEBUGモードの無効化

インターネットに晒す場合のもう一つの注意点として、DEBUGモードがある。先ほど作成した mysite プロジェクトの mysite/settings.py を見ると・・・

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []

DEBUGモードが有効(DEBUG = True)になっているので、無効化する。その際「ALLOWED_HOSTS」も設定する必要があるようだ(設定しないと、全てのページで「Bad Request (500)」表示されるようになるハズ)。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['app.k4750.net']

これで、Djangoアプリケーションをインターネットへ晒す準備が整った。\(^o^)/