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

58FLOW

Android、行動経済学、ガジェットなどが好きです。日々感じたこと、ちょっとだけ役に立つかもしれないことなどいろいろ書きます。

日本語文章の中の英単語の左右には半角スペースを入れるべきか

日本語の文章の中に英単語の混ざった文章を書く際に、英単語の左右に半角スペースを入れる表現方法があるようです。

プルリクエスト1で半角スペースが空いていないことが指摘されているのを見たことがあり、一時期は自分も真似して半角スペースを空けていたのですが、最近少し違和感を感じ始めたのでそのことについて考えてみました。

f:id:flow58:20170211235453p:plain

英単語の左右に空間があるのは読みやすいのか

「この MacBook Pro には HDMI ポートがついています。」

「このMacBook ProにはHDMIポートがついています。」

この文全体をデザインとして見ると、たしかに英単語の左右に空間がある方が見やすくなっているのかもしれません。とくに「MacBook Pro」という一つの製品名の中に半角スペースが入っているため、意味のまとまりを考えると「MacBook Pro」の左右には空間が空いていたほうがわかりやすいでしょうか。

英単語の左右には半角スペースを入れるべきか

英単語の左右に空間がある方が見やすくなっているのかもしれないと表現しましたが、では日本語の中に英単語を書くときに半角スペースを入れるべきなのでしょうか。自分は入れるべきだとは考えません。

その理由は大体以下のとおりです。

  • 字詰め調整としての半角スペースは大きすぎる
  • 半角スペースを入れる文化は英語の文化であり日本語の文化ではない
  • 文節が崩れる
  • 意味のまとまりが崩れる

字詰め調整としての半角スペースは大きすぎる

文章のデザインとしてはある程度の空間が空いている方が見やすくなることもあるでしょう。たとえば画像の中に英単語混じりの日本語文章を書く際にはカーニングで少し大きめに空間を入れる場合もあると思います。テキストとして書く場合はそれができないため半角スペースで代用はできますが、大きすぎます。

半角スペースを入れる文化は英語の文化であり日本語の文化ではない

デザインの観点ではなく、「英単語の左右には半角スペースが入っているのが当然だ」と考える人もいるかもしれません。しかし、それは英語の文章における文化であり日本語に当てはめる理由にはなりません。

文節が崩れる

日本語には文節という「実際の言語としてはそれ以上に分けることができない個々の部分」という考え方があります。2

「昨日の敵は今日の友」

これを分節で区切ると次のようになり、ひらがなにしてもある程度読みやすくなります。

  • 「昨日の 敵は 今日の 友」
  • 「きのうの てきは きょうの とも」

では英単語混じりの文で英単語の左右に半角スペースを入れた場合どうなるでしょうか。

  • 「私は Python を使って web サイトを作る」
  • 「わたしは ぱいそん をつかって うぇぶ さいとをつくる」

本来は次のように文節が区切られているはずです。

  • 「私は Pythonを 使って webサイトを 作る」
  • 「わたしは ぱいそんを つかって ウェブサイトを つくる」

文節の全く関係のないところに半角スペースという「文字」が入っていることに違和感を感じます。

意味のまとまりが崩れる

雑誌でもwebページでもプログラミングでも、デザインする際は意味のまとまりによって余白の大きさを変えるのが一般的です。

たとえば適当なGoogleの検索結果を見てみましょう。検索結果のタイトル・URL・内容がひとまとまりになっており、前後の検索結果との間には余白があります。また、右側のお店の営業時間の情報をみると「電話」と「営業時間」との間の余白よりも「営業時間」と営業時間に対する注意書きとの余白の方が小さくなっています。

f:id:flow58:20170211233656p:plain

「私はPythonを使ってwebサイトを作る」という文章では、「サイトを作る」という部分よりも明らかに「webサイト」という部分のほうが意味としてまとまっています。

「私は Python を使って web サイトを作る」

この表現は意味のまとまりを崩しており、違和感があります。この違和感の原因は、一つ目の理由に書いたとおり半角スペースが大きすぎるからでしょう。この余白の大きさは個々の文字同士のバランスを調整する役割の範囲を超えています。

しかし、同様の理由で「MacBook Pro」のように製品名に半角スペースが入っていると

「このMacBook ProにはHDMIポートがついています」

という文章では意味のまとまりと表現のまとまりが変わってしまいます。このあたりはまだ答えが出ていません。

議論

少し前まで自分も半角スペースを空ける派だったのですが、これらの理由から最近は半角スペースを空けないで書くことが多いです。日本語の研究をしているわけでもなんでもないのでこの指摘が正しいのかどうかはわかりません。

少なくともここに書かれていることを使って、ガイドラインなしに頑なに半角スペースを空けることを指摘するレビュアーに反論することはできると思います。

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

時間の節約

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

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

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

精神的負担の軽減

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

おわりに

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