58FLOW

Android、行動経済学、ガジェットなどが好きです。日々感じたことなんかを書きます。

Shureのイヤホンのイヤーピースをコンプライにしたら最強の耳栓になった

ここ数年ずっと Shure の SE215 Special Edition を使っているのですが、その理由は遮音性が高いためです。僕はあまり音質を気にするタイプではないのですが、カフェや電車で周りの人が立てる物音に関してはすごく敏感なので周りの雑音を遮断するイヤホンは必需品です。そのイヤホンの遮音性を更に高めるためにイヤーピースを交換しました。

コンプライの購入

数年間電車に乗る時や作業中、就寝前など、ほぼ毎日イヤホンを使っていたので流石にイヤーピースの劣化を感じてきました。

純正のイヤーピースを買おうと思ったのですが、コンプライというアメリカの軍用として使われていた低反発ポリウレタン製のイヤーピースの評判が良かったので買ってみることにしました。

www.comply.jp

タイプは一番遮音性が高いという P-type にしました。サイズは S・M・L がある中で M にしました。

f:id:flow58:20170109000612j:plain

3セット入って ¥2,910- 。結構高い。

Shure 純正イヤーピースとの比較

f:id:flow58:20170109000134j:plain

f:id:flow58:20170109000228j:plain

f:id:flow58:20170109002229j:plain

f:id:flow58:20170109001055j:plain

形状

P-type は純正のものよりも長さがあります。どうやらこの長さによってより遮音性が高まるようです。

硬さ

純正よりも少し硬く、手で潰したときにもとの形状に戻るまでの時間がかかります(低反発)。

遮音性

かなり高いです。そこら辺に売っている耳栓よりも遮音性が高く、ちょっとした物音なら殆ど聞こえません。

音質

よくわからない。

付け心地

多少圧迫感を感じますがなれると思います。

その他

音が出てくる穴の部分なのですが、純正のイヤーピースは網目状になっていて汚れが入りにくくなっているのですが、コンプライにはそれがないので汚れが入りやすそうな感じがします。

感想

買って正解でした。音楽が聞きたい時以外にも周りの音が気になるときに装着して耳栓代わりになります。周りから見ると音楽を聞いているようにしか見えないので違和感もありません。いつも使っているイヤホンが最強の耳栓になりました。

cowsay でプロ生ちゃんにしゃべってもらう

f:id:flow58:20161209094920j:plain

プロ生ちゃん Advent Calendar 2016 (9日目)の記事です

www.adventar.org

どうやらこのブログエントリーの一つ前のエントリーが昨年のプロ生ちゃん Advent Calendar なので1年間くらいブログを書いていなかったということですね。 今回は cowsay を使ってプロ生ちゃんにコンソール上でしゃべってもらいます。

cowsay とは

コンソール上に牛のAAが現れてメッセージを表示してくれるツールです

cowsay のインストールと環境

環境

今回使用した環境は Mac OS X El Capitan (10.11.6) です。windows でできるかどうかはわかりません。 また、cowsay のインストールには homebrew を使いました。homebrew のインストールはググるとたぶん出てきます。

cowsay インストール

$ brew install cowsay

確認してみます

$ cowsay hello
 _______
< hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

プロ生ちゃん用 Cow file ファイル作成

cowsay でプロ生ちゃんにしゃべってもらうには Cow file というものを作成しなければなりません。 Cow file の置き場所は cowsay -l で確認できます。

$ cowsay -l
Cow files in /usr/local/Cellar/cowsay/3.04/share/cows:
...

Cow files のところに書かれているパスに Cow file を追加します。

今回はこんな感じで作成しました。

gist.github.com

これを pronama.cow などと名前をつけて保存します。

もう一度 cowsay -l を実行すると Cow files の中に pronama が追加されています。

プロ生ちゃんにしゃべってもらう

$ cowsay -f pronama ばばーん

f:id:flow58:20161209100153p:plain

番外: Ansible でプロ生ちゃんにしゃべってもらう

個人的に運用しているサイトなどで、デプロイに Ansible を使っています。 Ansible では cowsay がインストールされている環境の場合 cowsay でメッセージを出力します。 そのメッセージのときにもプロ生ちゃんに登場してもらいます。

環境変数の設定

$ export ANSIBLE_COW_SELECTION=pronama

これだけで終わりです。適当な playbook を流してみましょう。

$ ansible-playbook playbook.yml

f:id:flow58:20161209101118p:plain

これでタスクが実行されるたびにプロ生ちゃんがしゃべってくれます。

結構じゃまです。

cssスプライト作ったけど設計に迷った

プロ生ちゃんアドベントカレンダー2015の10日目です。

www.adventar.org

プロ生ちゃんのドット絵をcssで扱ってみました

f:id:flow58:20151210151836p:plainソースコードとデモ

css設計について

今回はプロ生ちゃんドット絵をcssスプライトにしたという話なのですが、css設計にちょっと悩みました。ここではSCSSやLESSのことは考えずに書いています。

今回のcss設計

まず、今回書いたcssのスプライト全体の共通設定として以下のように各クラスを羅列して書いています。

.pronama-01-1,
.pronama-01-2,
.pronama-01-3,
/* ... */
.pronama-running{
  display: inline-block;
  white-space: nowrap;
  text-indent: 100%;
  overflow: hidden;
  background: url('https://dl.dropboxusercontent.com/u/6396527/all.png');
}

さらに縦型のスプライト用の設定は次のように追記しています。

.pronama-01-1,
.pronama-01-2,
.pronama-01-3,
/* ... */
.pronama-running{
  width: 32px;
  height: 64px;
}

この書き方は共通部分は分離しつつHTMLもシンプルにするという思想のもとに書いています。しかし、ソースを見てもらえればわかるようにクラスを羅列する部分が多くなってしまいます。

<i class="pronama-01-1"></i>

もうひとつのcss設計

もうひとつの方法として、クラス名を羅列せずに共通で使える別クラスを用意する方法も考えられます。

.icon {
  display: inline-block;
  white-space: nowrap;
  text-indent: 100%;
  overflow: hidden;
  background: url('https://dl.dropboxusercontent.com/u/6396527/all.png');
}

.standing {
  width: 32px;
  height: 64px;
}

この書き方はクラス名を羅列する必要が無くcssがシンプルになる反面、HTMLには依存するクラスを全て指定しなければならないため今度はHTMLが複雑になります。

<i class="icon standing pronama-01-1"></i>

なお、どちらの書き方でも以下のように各クラスのbackground-positionを指定している部分は変わりません。

.pronama-01-1{
  background-position: 0 0;
}

結局どちらが良いか

どちらも一長一短ありますが、僕の場合は前者の設計が好きです。僕の設計の仕方のひとつとして、使う側のインターフェースから設計し始めるというのがあります。この場合の「使う側」はHTMLのことです。HTMLとcssの実装者が違う場合はこの考え方は特に有効だと思っていて、HTMLの実装者が覚えなければいけないことを出来るだけ少ない方がいいのではないかという考えです。

だからこの場合<i class='pronama-01-1'></i>とだけ書けばいいという設計の方が好きです。

もちろん、これはプロジェクトや実装者によって考え方は変わると思います。

おわりに

最近のcss設計にはあまり明るくないのですが、こういう場合の定石ってあるんですかね?世に出回っているライブラリをざっと見ると<i class="fa fa-shopping-cart fa-lg"></i>と書くパターンと<i class="icono-cart"></i>と書くパターン両方ありました。

でも感じとしては<i class="[ライブラリ名]-[icon名] [オプション]"></i>というのが多いのかな?

SNSのアイコンと人格について

プロ生ちゃんAdvent Calendar 2015 8日目の記事です www.adventar.org

f:id:flow58:20151208100442p:plain

最近、(鍵垢では無い方の)Twitterなどでプロ生ちゃんのアイコン利用案内)を使わせてもらってます。プロ生ちゃんアドベントカレンダーという事で、無理矢理それと結びつけてSNSのアイコンが人格に与える影響ついて最近思った事を書きます。即興ネタなので後から少しずつ変更するかもしれません。

アイコンの違いは没個性化に影響するか

没個性化とはざっくりいうと、集団の中や自分が覆面をかぶった状態で他者から個人として注目されにくいときに攻撃的な行動などを取りやすくなってしまう事です(という説明で大体あっていると思う)。二次元アイコンなど顔写真以外のアイコンは没個性化に影響するかという問いに対しては、自分の顔写真を使っている場合と比べると影響はあるかもしれません。しかしTwitterなどのSNSに関していうと、個人が特定されないアイコンで、しかも匿名であったとしても、ある程度その中でのコミュニティや個人のアイデンティティーが確立しているので2chなどと比べるとそれほど影響しないと思います。

アイコンの違いはSNS上での性格に影響するか

アイコンの違いはSNS上の性格には影響すると思います。ここでの性格とは発言の内容や表現の仕方・言葉遣い・対人関係での対応の仕方などの事を意味していますが、これは役割期待・役割行動で説明できます。役割期待・役割行動は男らしさ・上司らしさ・オタクらしさ…のような「○○らしさ」に対する期待や行動です。Twitterなどではそのアイコンからその人の性格を無意識的に想像でき、不思議なことにそれがキャラクターアイコンであればなんとなくそのキャラクターが発言しているように見える事もあります。そんな中で自分のアイコンに見合った性格に近付く可能性はあります。

自分の場合、今まではマスクをつけた横顔の写真を使っていたのですが、プロ生ちゃんの笑顔のアイコンにしてからはあまりに固すぎる発言や批判的な発言は少なくなった気がしますし、語尾も若干違う気がします。

おわりに

意識高い系の人からはアニメアイコンなどは批判される事もありますが、それが個性でもあり同じような趣味の人との結びつきの機会にもなるのでいいんじゃないかと思います。

アドベントカレンダー

コマンドラインでかんたんにGIFアニメーション作成

プロ生ちゃん Advent Calendar 2015 4日目に飛び入り参加しました。

www.adventar.org

はじめに

プロ生ちゃんのサイトでドット絵があったので使ってみたいと思います。ゲームなどに使う前に動いているところが見たかったのでGIFアニメーションを作ってみました。

いろいろGIFアニメーション制作ソフトはあると思いますが、今回はコマンドラインで作ります。ちょっと調べるimagemagickというのが使えそうでした。

環境

imagemagickのインストール

$ brew install imagemagick

ヘルプは

$ convert -help

いろいろオプションがありますね

素材画像

http://pronama.azurewebsites.net/pronama/download/

ここからドット絵をお借りしました。

f:id:flow58:20151203181443p:plainf:id:flow58:20151203181507p:plainf:id:flow58:20151203181516p:plainf:id:flow58:20151203181524p:plainf:id:flow58:20151203181531p:plainf:id:flow58:20151203181536p:plain

imagemagickを試す

$ convert /path.to/input/*.png /path.to/output/anime.gif

f:id:flow58:20151203181641g:plain

あれ?

透過画像を使っているので前の画像が消えずに何か表示がおかしくなっていますね。きっとオプションで回避可能なのでしょうが、うまくいかなかった

仕方ないのでPythonで背景を作る

それぞれの画像に背景をつけてからもう一回つくることにします。プログラマーっぽくPythonを使って背景色をつけることにしました。pipやPythonが環境に入っていなかったらPhotoshopとかでいいと思います。

PILインストール

PILというライブラリを使います。pip install PILでインストールできなかったので「pyenvでvirtualenvしててPILがインストール出来ない件」を参考にインストール

PILで透過画像に背景色を付ける方法

import Image

# 32 × 64の真っ白い画像(背景)を作る
bg = Image.new(mode='RGB', size=(32, 64) color=(255, 255, 255))

# 画像を取得
img = Image.open('/path.to/input_file.png')

# 背景に画像を合成
bg.paste(img, (0, 0), img)

# 保存
bg.save('/path.to/output_file.png')

実装例

上のコードをもとにディレクトリの中身全てに背景色をつけます。ディレクトリを作ったりいろいろごにょごにょしていますが重要なところは上のコードと変わりません。

import glob
import os
import Image


def get_output_path(input_path):
    tmp = input_path.split(os.sep)
    return os.sep.join([os.sep.join(tmp[0: -1]), 'result', tmp[-1]])


def set_background(img, rgb=(255, 255, 255)):
    bg = Image.new(mode='RGB', size=img.size, color=rgb)
    bg.paste(img, (0, 0), img)
    return bg


def make_dirs(path):
    try:
        os.makedirs(os.sep.join(path.split(os.sep)[0: -1]))
    except OSError:
        pass


def make(input_path, output_path=None):
    if output_path is None:
        output_path = get_output_path(input_path)
    make_dirs(output_path)
    img = Image.open(input_path)
    img = set_background(img)
    img.save(output_path)


def main():
    base_path = '/path.to/input/*.png'
    for file_name in glob.glob(base_path):
        make(file_name)


if __name__ == '__main__':
    main()

再びimagemagickを試す

$ convert /path.to/input/result/*.png /path.to/output/anime2.gif

f:id:flow58:20151203181656g:plain

できました!

アドベントカレンダー

ドラム式洗濯乾燥機(NA-VH310L)を買ったらライフチェンジングだった

一年くらい前に引越しをしました。その時買った物の一つがドラム式洗濯乾燥機です。引越しで駅に近くなった以上にこれはライフチェンジングだったのではないかと思います。ちなみに買った洗濯機はPanasonicのNA-VH310Lという物で当時ヤマダ電気で16万円くらいだったと思います。プチドラムという一人暮らしの人にもおすすめのシリーズらしいです。2015年の後継機はNA-VH320L-Wですかね?

f:id:flow58:20151128150742j:plain

時間の節約

今までどれだけ洗濯物を干す時間に費やしていたでしょうか、一人暮らしだと毎日ではないにしろ一週間に一回くらいは洗濯すると思います。その時間が節約できるのは大きいです。終わる時間を計算して洗濯する必要もなく、出かける前や寝る前にセットしておけば気づいた時には洗濯も乾燥も終わっています。今までは洗濯物を干す作業が面倒だったからまとめて洗濯していた物も、すぐに洗濯できるので楽です。

洗濯物を干す場所を考えなくていい

前の家では広いベランダがあったのですが、いまの家には狭いベランダしかありません。また、雨が降っていたら風呂場に干すことになりますが、その間にシャワーを浴びたい時は不便です。洗濯乾燥機はそういうことも考えなくて済みます。

精神的負担の軽減

一番大きいのは精神的負担の軽減ですね。洗濯の終了時間や干す場所を考えたり疲れている中で洗濯物を干す作業をしたりと、洗濯自体が面倒な作業だと考えていましたが、今ではそれがありません。

おわりに

これ、本当にオススメです。ズボラな人や忙しい人ほど洗濯乾燥機は必須だと思います。安い買い物ではないのですが、精神的負担や時間の節約のための投資だと思って買うのもいいのではないでしょうか。

世界同時株安も落ち着きつつあるようなので自分が投資する意味について考えてみた

僕は資産の一部を現物株式として所有していますが、2015年8月21日頃から日本株にも大きな影響を与え始めた世界同時株安によって、分散していたはずの銘柄が全部同じ方向に動き含み損が出て底値で投げ売りそうになったので戒めとして改めて自分が投資する意味について考えてみました。

僕の投資状況

一時期は資産の約半分を現物株式として所有していましたが、今は約1/4程度になっています。基本的には現物以外の取引は行わず、長期で運用しています。それ以外の資産の多くは元本保証の円預金などです。積極的に投資するというよりは資産の形として株式などを保有するという感じです。レバレッジを効かせるとしても純資産を大きく上回るようなかけ方はしません。

本業と、投資する理由について

投資するのは本業のため

僕の本業はプログラマーです。僕自身やりたいことというのは現在の本業です。後々そこから発展して別のことをやる可能性もありますが、本業以外の部分でたとえ利益が出ていたとしてもここから逸脱するつもりはありません。僕が投資する意味は、例えば本業で利益が全くない状況に陥っても本業をやり続けられる資産を形成するためです。本業がうまくいかない時に別のバイトなどで稼ぐこともできますが、その時間がロスになってしまうのでそうならないようにしています。

副業もセミリタイアも興味がない

株式投資などの界隈には副業・セミリタイア・不労所得なんていう言葉がよく出てきますが、そういったものには全く興味がありません。あくまで前述した通り投資するのは本業のためです。

本業に影響が出るのは本末転倒

基本的に僕が行っているのは、インカムゲインと大きな価格差が出た時のキャピタルゲインを目標とした中・長期投資です。一度は短期取引なども挑戦していましたが投機的であるし市場が常に気になってしまっていたので精神衛生は不衛生でした。また、暇さえあればスマートフォンで株価をチェックしていたので本業に影響が出てもおかしくないと考えたためやめました。決算書と事業を見て割安だったら長期投資という基本を押さえておけば短期的な株価に一喜一憂するということもしなくていいと思います。

おわりに

このブログの投稿している時点では、株価も徐々に回復してきているのでとりあえずは自分の判断を信じようと思います。