Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

自宅の開発環境(オフィス)を整備した話、机とかキーボードとか

自宅の開発環境を整備したので、そのお話をします。 わりと個人的な話ですが、買った机などは読んだ人が買うときの参考になれば嬉しいです。

なんで自宅の環境を整備しようと思ったか

貯蓄と資産運用のおかげもあって、ある程度まとまったお金ができました。 開業資金として最低限の目標としていた額に達して、もう少し資金など準備しつつ、あとは良い時期に良い感じに会社を作れたらなぁという次第です (そこは今の環境で学べることなどを加味して時期を決めれば良い)。

なので単に資産として持っておく以外に、お金を使っていこうかなと考えた次第です。

自宅の開発環境、使う?

会社のオフィスで働いていれば、それほど自宅の開発環境は使わないと思います。 良い環境がほしいときも、コワーキングスペースやカフェにいけば十分と思います。

ですが、僕の働いている BeProud ではリモートワークが週5でできます 。 であれば、自宅の環境をガツンと整備してより仕事をしやすくするのは悪くないと思います。

jobs.beproud.jp

僕は自宅でもプログラミングの機会はかなり多いです。 BeProudと関係ないサイドプロジェクトや、OSS活動、資産運用と、プログラミング・デスクワークになる機会はかなり多いです。 将来的に自宅を事務所にする場合にも、環境が整備済みであれば導入も楽ですしね (こう言っていると物欲を満たす言い訳をしているようですが。。)。

また、日常触れる、使う機会が多いものにお金を使うほど満足度が大きいらしいです。

どんな物にお金をまわす のかというと、シンプルに「毎日・長時間使う物」で いい。 科学的 にも「 毎日長時間 使う物にお金を多く使ったほうが幸福度が高い( = コンフォート 原則)」 ことが立証されている。

ミニマリストしぶ. 手ぶらで生きる。見栄と財布を捨てて、自由になる50の方法 (Kindle Locations 1112-1115). サンクチュアリ出版. Kindle Edition.

手ぶらで生きる。見栄と財布を捨てて、自由になる50の方法

貧乏性なので何かにつけて「そんなん要らんでしょ」と渋りガチなので、こういうとこはガツンと使っていこうと思っています。 ついでに部屋にあった要らないものを捨てたり、デスクの配置換えをして最適化しています。

整備した自宅の環境

デスクまわりの環境はこんな感じです (昔VIPとかであった部屋画像スレっぽいですが。。)。

f:id:hirokiky:20180528163914j:plain

キーボード: Barocco

買いました。初めて使う分割キーボードですが、かなり良いです。 思った以上に肩が楽です。 ErgoDoxとかは値段が高いので、肩こりひどいし分割キーボードどうかなぁ、って人はこのMistel Baroccoで良さそうです。 (キー配列も普通のキーボードのように斜めにズレているので、違和感もなく慣れました)。

僕はHappyHackingKeyboardを良く使っていましたが、使い勝手も良いです。 赤軸というものを使っていますが、タイプ感も良いです。

僕はDvorak配列なので、ハードウェアでDvorakにできるのは安心です。 とはいえ、ソフト側でDvorakにしているのでキーボードはQwerty配列のままです。 新しいVMに接続したときなどはハードウェアでのDvorak配列が活躍してくれるかなと期待しています。

トラックボール: SlimBlade

買いました。LogitechのMarbleMouseというトラックボールを5,6年使っていたので、これも新しいものにしました。 使い勝手はかなり良いですね。最初、独自のスクロールの方法(ボールを横に回す)に慣れませんでしたが、慣れれば使いやすいです。

まぁトラックボールについては投資というよりも、単に欲しかったので買っただけです。

買いました。 幅120cmで、高さが70cm程度ある机を探していました。 探してみると目的にあう机というのは意外となくて苦労しましたが、この机はオススメします。

このポイントを満たす机を探していました:

  • 引き出しがない => 膝が当たらない
  • 大きさが十分ある => 横120cmはほしい
  • 木製で、表面に加工がされている(ガラスは重い)
  • 足が4本の支柱でなく手前側に空間がある
  • 足が木の板でない
    • 無駄に重い
    • 机の横のラックが使いにくくなる
  • 背面に鉄板がついている
    • 強度が安心
    • OAタップが磁石で貼り付けられてスッキリする
  • 1万円程度

意外と、条件を満たす机はないです。3時間くらいずっと探してました。 今の僕ならオフィス用品、デスク環境コンサルにもなれるんじゃないでしょうか。

デスクの広さは言ってしまえばメモリーの量みたいなもんかもしれませんね。メモリー16GBは最低ほしいというなら、デスク幅120cmは最低ほしいところです。 メモリーもデスクも費用対効果が良いので大きくて損はないと思います。

OAタップはコレを買いました。磁石で貼り付くのでスッキリして良いです。

以前からあったもの

  • Bose Sound Link Mini 2: 音楽聴きながら仕事したいので良いです
  • 新しい新しいiPadとApplePencil: アナログノート大好きなので良いです
  • BenQのモニター: 安くて最高
  • MacbookPro(会社支給)

椅子

f:id:hirokiky:20180528164025j:plain

買いました。椅子については悩みに悩みましたが、リクライニング機能があることに重点を置きました。 僕の中で「エルゴノミクス vs リクライニング」という壮大なバトルが勃発しましたが、動画を寝転んでみたりリラックスしたかったのでリクライニングできるものにしました。

この商品にはかなり満足しています。 ですが、仕事でごりごりキータイプするとなると姿勢は崩れがちです。 寝るようにしてコードを書くか、椅子の上であぐらをかいて軽く猫背になるかどうかという姿勢です。

これについてはエルゴノミクスチェアー的なのを買えばよかったかなぁと少し思っています。 (良さそうなのは8万円とか10万円とかでひよったというのもある。。)。

椅子の材質はメッシュにしました。 合皮は加水分解してボロボロになるというのが、BeProudのオフィスの椅子で分かっていたのでメッシュです。

ホワイトボード

f:id:hirokiky:20180528163933j:plain

これは以前から自宅にあったものですが、 AmazonでB級品として買った安いホワイトボード です。 1200x900と大きいですし、重さが5kgあるので壁につけるのは少し苦労します。

ですが、ホワイトボードは大きいほうが良いです。 ホワイトボードは大きければ大きいほど発想も大きくなります。 部屋の壁全面ホワイトボードでも良いです。

壁に貼るホワイトボードシート的なやつはオススメしません。 すぐ汚れが落ちなくなりますし、書きにくいです。一回試しましたが、すぐに汚れが取れなくなったので捨てました。 それなりなホワイトボードを買いましょう。

超どうでも良いですが、ホワイトボードマーカーとイレーザーはこれを使っています。

僕はけっこうアナログ人間っぽいので、手書きのノートとかホワイトボードがあると発想が湧きやすくなる気がします。

おわりに

こんな感じで、自宅開発環境を整備したよっていう話でした。 今回使ったお金は全部で5万円ほどでした。自分なりにかなり気合を入れたわりには安く抑えた印象です (モニターアームと縦置きディスプレイも買いましょうか)。

もし 「これもオススメだよ」、「椅子コレ使ってるよ」とかあったら教えてください

感触としてはかなり良かったなという印象です。我ながらうまくやったと思うのは、事前の検討、採寸をちゃんとしたことです。 机のサイズ、椅子のサイズ、部屋のサイズや空間の配置方法などを、ある程度決めてから買いました。 おかげでほぼ思ったとおりの環境にできました。

正直、ライフハック的なのは全然好きじゃないんですが、なんだかんだそういうことをやっている気がします。 (服をひたすら断捨離して同じものを複数買ったり、ダンボールを捨てて折りたたみコンテナーにしたり、ものを断捨離しまくったり)

余談ですが、冷蔵庫の中もこんな感じで福利厚生が充実しています。

f:id:hirokiky:20180528131214j:plain

会社ではドリンクの支給が(ありがたいことに)ありますが、自宅であれば(自腹ですが)好きなものが揃えられて良いですね。 水は中硬水が良いとか、飲む飲まないに関わらずレッドブルは備蓄しときたいとか、色々めんどうな僕の性格を自宅であれば好きに満たせます。

他のオススメ記事

blog.hirokiky.org

blog.hirokiky.org

DjangoCongressの参加ブログがどれも良いのでまとめておきたい #djangocongress

先日のDjangoCongress JP 2018の参加ブログが続々公開されてて読んでいて楽しい。 どの記事も面白いのでザックリとだけどまとめておいた。あとでdjango-jaのもっと公式的な場所に書き写すかもしんない。

djangocongress.jp

ありがとう。ありがとう。 読みたいので、他にもあったら教えて。

以下、読んだブログ

最終更新: 2018年5月31日

nwpct1.hatenablog.com

blog.mtb-production.info

nikkie-ftnext.hatenablog.com

katekichi.hatenablog.com

thinkami.hatenablog.com

xaro.hatenablog.jp

blog.hirokiky.org

jumpyoshim.hatenablog.com

www.denzow.me

DjangoCongress JP に行ってきた | attakei page

nakagami.blog.so-net.ne.jp

ryu22e.org

koty.hatenablog.com

thinkami.hatenablog.com

farewell-work.hatenablog.com

tokibito.hatenablog.com

medium.com

eng.iridge.jp

medium.com

massa142.hatenablog.com

blog.xoxzo.com

DjangoCongress JP 2018ってイベントを開催した話

f:id:hirokiky:20180520174908p:plain

2018年5月19日に、DjangoCongress JP 2018というイベントを開催しました。

djangocongress.jp

これはWebフレームワーク Django のカンファレンスです。 参加者は全部で100人ほど、発表者12人、スタッフ(合計で)15人ほどのイベントでした。 めちゃくちゃ楽しいイベントでした。もうね、最高。

Togetterも作ってくれたよー togetter.com

僕は代表として、キックスタートからこのイベントを皆で作っていました。 今まで日本でDjangoだけを扱った大きなカンファレンスはなかったので、これが初めてのイベントになったなと思っています。

スタッフは〜15人ほどで開催しました。準備には2017年の11月に初めたキックスタートから初めています。

django.connpass.com

もともとsalexkiddが2017年のPyConJPのパーティーで、「そういやDjangoでカンファレンスやんねーの」と言うので、「お、じゃぁやるか」となったのがこのDjangoCongress JPです。

(これを書いている今はDay 2のSprint Dayで、DjangoへのPRが1つまとまったので休憩がてらブログ記事を書いています)。

ここではイベント開催するときに感じたことや、「こうやったのは良かったなぁ」という話をします。 あまり時系列順に語るまとめをする気もないので、感じたことを書きたいと思います。

最小のイベントを作る、みんなで盛り上がる

このDjangoCongress JPは宇宙で初めて誕生するイベントです。 去年までのノウハウやスタッフ間の繋がりもそれほどない状態からスタートでした。 なので、まずは「最小でイベントを作ること」、「5年続く1年目になること」をコアの考えた方としてイベントを作っていきました。

まずスタッフ間の「コミュニティー」も無いに近い状態ですし、Djangoでイベントをやって需要があるのかすら分からない状態でした。 その状態で「アレをやろう」「イマドキのカンファレンスはこれは絶対ある」みたいなのを闇雲に追い求めると破綻するのは当たり前だと思います。

まず、キックオフの集まりから「こういうものを作ろう」というビジョン、温度感をスタッフの間で最初に共有できていたのは良かったと思います。 とくに「やらなくていいよね」を共有できたので、すごく小さい(やる作業が少ない)けど良いカンファレンスができたと思います。 僕たちは「他で聞けない、深くて面白い発表を聞きたい」、「場所さえアレばみんなで楽しめる」ということに注力していました。

例えばランチ提供も、パーティー(懇親会)提供もしません。 チュートリアルやハンズオン、企業スポンサーにブース出典、ポスタートーク、動画配信、同時通訳もありません。 その代わり、ランチは「ランチマップ」を用意して各人に自由に行ってもらったり工夫を凝らしていました(ランチマップ作ってくれた小俣さんありがとう)。

ただ、「他のイベント(とくにPyConJP)で採用されないようなDjangoの濃い、Django内でのバラエティーに富んだ発表をしよう」という一点は貫けて良かったです。 PyConJPはイベントとして規模が大きくなっていますし、データ系や機械学習系などPythonの幅もかなり広がっています。ディープな話(例えばDjangoのデータベースドライバーの実装の話や、GeoDjangoを使った地理空間アプリの話)を発表をする機会はどうしても減ってしまうと思います。

(開催するまでは不安でしたが)上記のものなかったけどなくても良いんだなぁと思いました。 同時通訳がなくても英語の発表も聞いてる人多かったですし、動画配信もなかったけど、その分スライドのアップロードやSNSでの投稿が多かったのでそれはそれでよかったと思います(スライドは https://djangocongress.jp/ にすべてまとまっていますよ!)。 あと、みんなブログとか書いて情報を広めてくださいね。それか、同じ発表内容で再演とかしてくださいね。

「無い効果」というのは面白いなと感じていて、例えば「動画配信がある」と思うと、たとえ参加してても「昼寝してて良いかな」と思ってしまう瞬間はあると思います。 「ブログに書かなくても動画あるしなぁ」とか、「メディア記事あるしなぁ」とか、「togetherとか公式の色々もあるし良いかなぁ」って言い訳ができちゃうわけですね。 でも今回はみんな会場でのその瞬間に集中してたと思います。

Twitter#djangocongress が日本のトレンドになったりもしてて、スタッフも参加者の人もみんなで盛り上げられて良かったなぁと思います。 オープニングで「みんなブログ書いてね!!スライドアップロードしてね!!ってSNSに書いてね!!」って共有したのも良かったのかな。 提供者が提供しすぎると、参加者がより参加者になっちゃうのかもしれない。それだと寂しいし、みんなで盛り上げていこうねーってほうが僕は好きかな。

やらない、という力

「やらない」を決めると色んな懸念や作業、連携や指示、担当割りもなくなるので一気に楽になると体感できました。 たぶん、今回のイベントでそれが一番大事だったと思う。 おかげでイベント当日にも余裕があって、スタッフも含めてとてもイベントを楽しめたと思う(僕は色んな発表も聞けたし、話もできたし、すごい楽しかったよ)。 今後もし何かやることを増やすにしても、お金で解決するほうを選ぶかなぁ。

代表としてやったこと

イベントの代表として色々やったけど、僕は流れとか勢いとか場を作るのが大事なんだなぁと思いました。 あんまり自分が「長」みたいになるのが好きじゃなくて、「座長」という呼び方もあえて使いませんでした(なんかね、僕の気持ち的にですが)。 立場として、窓口として、顔として「代表ですよ」以上の意味はない(し、必要ない)と思ってます。

今回は初めてのイベントだったし、Djangoのでかいイベントをやって需要があるかも分かりませんでした。でも確実にある気はしていました。 なので、まずは「やるよ」って言うことが一番僕の大事な仕事だったんじゃないかなぁと思います。「やりたいね」じゃなくて「やるよ」と言うこと。あとはスタッフみんなで頑張りました。スタッフの僕たち、頑張ったね~。

具体的なやったことはビジョンを共有したり、定期的に作業イベントを開催したり、作業するためのツールとかスラックとかを整備したり、進捗を見たり、担当や役割をお願いしたり、色々実務的なタスクをこなしたりしていました。当日は全体の動きを見たり、オープニングスピーチとクロージングスピーチをしたり、LTの司会者をしたりしていました。でも主には人の発表を聞いたり話したりしていたんで、参加者としてもかなり楽しみました。

コアのスタッフが運営に慣れてる人が多かったのでとても助かりました。 お互いに空気感がとても伝わりやすいからですね。「~しようよ」「~いらないよね」って言ったときに「え、なんでなんですか」って根本からの説明が少なくて済むから。 あと、みんな色んなイベントを開催したり参加してる人たちだから「あれは必須だよね」とか「まぁ、あれはなくてもぶっちゃけいいよね」って気持ちが深いとこで伝わっていたと思う。

でも今までそんなに繋がりも深くない同士だったけど、かなり深まったなぁと思う。Djangoの日本コミュニティーってあるの?みたいな感じはあったけど、今ならあるって言えるよね。少なくともスタッフ同士があれだけ一緒にいいもの作って時間を共有できたってだけでも良かったです。 それが僕が今回、一番作れて良かったことかなぁ。

身近なイベント

感想を聞いてみると「みんなの顔が見えた」「warm and like family event」みたいな感想を何人かに聞いた。 それはとても嬉しくて、規模を大きくしすぎないこと、行動規範を大切にすること、みんなで楽しむことは大事にしたかったので実現できて良かった。

僕は「参加者」と「提供者(スタッフ)」に分かれたくないと思ってた。どんなイベントでもそう思う。 だってスタッフってボランティアですよ。何十時間っていう労力を無償で提供しています。一番楽しめないといけないと思う。

イベントのオープニングで「みんなが参加者、みんながスタッフ」と話しました。 「SNSにたくさん書いてほしい。スライドをアップしてほしい。隣にいる人と話したり助け合ったりしてほしい」と伝えました。 みんなイベント中によく話してたしリラックスしてるようで良かったなと思います。とくにCybozu Barはリラックスできて良かったなぁ。

行動規範についてもたっぷり時間を使って話したのが良かったのか、ビデオ録画どストリーミングがないからその瞬間を大事にしたのか、そういうのもよかったのかもしれないです。 ただ、その場にあった空気感みたいなのが、何か良いなと思っていました。

今後のイベント

たぶんDjangoCongressは参加者300人を越えるイベントにはならないと思う。今回で120人くらい。150人+2,30人くらいでいい感じかなと思っています。 今回は「参加枠増やしてください」「参加できなくて残念です」という声もいただきました。申し訳ない気持ちになったし僕も謝っていた気がしますが、でも、だからって500人とか1000人のイベントにはしないと思います。501人目は常にいるとも思いますしね。 まぁ他人を変えようとするよりも、やりたいことがあるならイベントを別に作るのも素敵だと思います。協力はどんどんしますよ!! たとえば地方でもDjangoCongressをやってほしいなら、ぜひ、「やろうぜ」って言ってみてほしいです。

内容も、今年と同じように色々と提供しないけど、発表が面白くて、みんなで色々好きに話せるようにしたいです。 究極、場所と、人と、話のきっかけがあればそれでいいと思います。 会場提供のサイボウズさん、ありがとうございました。 発表者、スタッフ、参加者のみなさんもありがとう。楽しかった?僕は楽しかったです。 また、こういうのやりたいなー。

Webpack (v4) で複数のJavaScriptファイル、CSSファイルを分けてビルドする

webpackは便利ですが設定などは慣れが必要です。 僕は面倒なので、毎度自分の過去のプロジェクトからコピーして使っています。 その内容から抜粋してブログの記事にしています。

想定としてはSinglePageApplicationとしてはアプリを作らずに、フレームワークからJSを配布するWebアプリの構成です。 すべてのページをJSで作るならよいですが、一部のみアプリケーションとしたい場合はこの記事で説明されている設定を参考にしてください。

僕の考えですが、管理用のページや設定画面など一般的なWeb+DBの画面であれば、SPAとして作るのは手間が無駄に多いと考えています。 モデル定義+フォームの自動生成や、一般的なWeb+DBの画面構成はDjangoなどのWebフレームワークをそのまま使うほうが扱いやすいと思っています。 そのうえで、CSSはビルドしたい、Web画面で共通に使うJSをビルドしたい、アプリケーションとして動作するページのJSもVue.jsやvue-loaderなどで作りたい場合はよくあると思います。

SPAで作りたい人は vue-cli を使って、そのまま従うのが良いのではないでしょうか。

免責

この記事での情報や内容の正しさは保証しません。 最大限注意していますが、間違っていたり重大なバグがある可能性はあります。 それによって発生したどんな損害にも責任は持ちませんし、保証しません。自己責任で参考にしてください。

バージョン

$ webpack --version
4.6.0

記事内で特別に書きませんが、 style-loader などのインストールも必要です。 適宜、インストールしてください。

リポジトリー構成の想定

以下のように、 client 以下にJS、CSSのビルド用のディレクトリー、 web 以下にWebフレームワークで作るWebアプリのディレクトリーを分けています。 client ディレクトリーからビルドして、 web から使えるようにします。

repo/
  - client/
    - webpack.config.js
    - src/
        - editor.js
        - webcommon.js
  - web/
    - myproject/static/dev/js/  # Webアプリから配信

複数JSファイルをビルドする

アプリケーションとしてのJavaScriptと、Web画面で使うJavaScriptを分けてビルドしています。 editor.js をアプリケーションとしてのJS、 webcommon.js を(ナビゲーションバーの操作などの)一般的な画面のJSと考えてください。

module.exports = {
  mode: 'development',
  output: {
    path: __dirname + '/../',
    filename: '[name]'
  },
  entry: {
    'web/myproject/static/dev/js/editor.js': './src/editor.js',
    'web/myproject/static/dev/js/webcommon.js': './src/webcommon.js',
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: {
          loader: 'babel-loader'
        },
        exclude: /(node_modules|dist)/
      }
    ]
  },
  plugins: []
}

これで、 ./src/editor.js をエントリーポイントにするJSファイルが ../web/myproject/static/dev/js/editor.js にビルドされます。 entry の中身を増やせばビルドするJSファイルも増やせます。

フレームワーク側でのJSファイルの扱い

JSファイルはフレームワーク側で管理できるディレクトリーに書き出しています。 このとき、開発用のJSは static/dev 以下に保存しています。 Webアプリケーションが開発環境時にはこのディレクトリー内の静的ファイルを使うように設定して、本番環境時は別のファイルを使うようにしています (CloudFrontから配信された、UglifyされたJSやCSS)。 static/dev はGit管理しないようにすることでGitリポジトリーの肥大化も防げます。

Webpack 4でCSSをビルドする

JSファイルだけでなくCSSファイルを別途ビルドしたいことがあります。 ただし今回は、「JSファイル内のCSSを別に配信する」目的ではありません。 JSファイル内のCSSはそのまま組み込むようにしておいて、別途、CSSのみをビルドする方法を説明します。

webpackではCSSファイルはビルドできません。 extract-text-webpack-plugin を使ってうまくできるようにします。

ただし、2018年5月3日時点では extract-text-webpack-plugin はWebpack4に対応していないので、インストール時は以下のようにしてBeta版を使います。

$ npm install --save-dev extract-text-webpack-plugin@next

webpack.config.js にCSSの設定を追加する

単に extract-text-webpack-plugin の設定を追加すると、既存のJSのビルドにも影響してしまいます。 上記したJSの設定とは別に、CSSをビルドする設定を書きます。

module.exports = [
  { ... },  // 上記したJSのビルドの設定
  {
    mode: 'development',
    output: {
      path: __dirname + '/../',
      filename: '[name]'
    },
    entry: {
      'web/myproject/static/dev/style/main.css': './src/main.scss'
    },
    module: {
      rules: [
        {
          test: /\.scss$/,
          use: ExtractTextPlugin.extract({
            fallback: "style-loader",
            use: [{
              loader: "css-loader"
            }, {
              loader: "sass-loader"
            }]
          })
        }
      ]
    },
    plugins: [
      new ExtractTextPlugin({
        filename: (getPath) => {return getPath('[name]')}
      })
    ]
  }
]

これで、 ./src/main.scss をエントリーポイントにするSCSSファイルが、 ../web/myproject/static/dev/style/main.cssCSSファイルとしてビルドされます。

もちろんJSファイルの設定も渡しているので、 webpack コマンドのみでビルドできます。 両者の設定で重複している部分は共通の設定にしておくと良いでしょう。

まとめ

最近作っているものは PyQ も含めてこの構成で作っています。 SPAではやりたくないなぁ、という人にはオススメしたいです。

他のおすすめ記事

blog.hirokiky.org

会話の深さと人数、コミュニケーションが苦手とは何か

会話の深さと、その会話ができる人数規模、一度に集まったときにどの深さまで話せるかと考えてみました。 たとえばコミュニティの集まりや飲み会、ビジネス上の会話や友人との会話、または配偶者の会話をする中で考えていたことです。

免責

この内容は誰かを批判するためや優劣を競うためのものではないとお伝えしておきます。 僕自身の考えた分類を紹介したいという気持ちと、悩みなんて持たなくていいんじゃないかという気持ちの共有です。

また、歴史の中で誰かがこれと似た、または同じものを語っていたとしても、とくにどうでも良いと思っています。 僕の考え方は今まで読んだ本の影響がありますので、その影響が入っているか、単に知らないだけです。 小学生がピタゴラスの定理を発見することもありますし、そういうものだと思ってください。

会話のレイヤー

考えを文字で伝えるのが大変だったので絵にしてみました。 この絵は下にいくほど「より少ない人と」、「より心に近い深い」会話ができるという構図です。 図の右には具体的にはどういった内容があるのかの例を書いています。

f:id:hirokiky:20180421140652j:plain

上にいくほど「口」で話す部分で、下にいくほど「気持ち」で話す部分なのかなとも思います。

あいさつ

単純なあいさつから、社交辞令的な会話、天気の話などがここに含まれます。 この会話ができる相手はおおよそ無限にいます。一度に数十人が円卓を囲んでもこのレイヤーの会話はやりやすいです。

なぜなら相手の好みや興味の分野(情報)と心情や思想、感性(語り)の部分に踏み込む必要がないからです。 この逆三角形は、下に行くほどできる相手が減ると考えてください。ですので人数が増えれば最小公倍数的にこのレイヤーの会話が増えます。

情報

このレイヤーは趣味や興味の分野、仕事や技術の会話です。好きな食べ物や趣味のレジャースポットの情報交換、業界や技術の動向の会話です。 たとえば僕はプログラミングやソフトウェアが好きです。Webサービスやロック音楽、バイクなども好きです。こういう「プロフィール欄」に載ってそうなことがこのレイヤーです。 また、共通の知り合いの近況の話題などもこのレイヤーに入ると考えています。 要するに、共通のコンテキストのうえのみで成り立つ会話ということですね。

技術者のコミュニティや趣味などの集まりが大切なのは、同じコンテキストを持つ人が集まるのでこの情報交換がしやすいことにあると思います。 あいさつから入って、相手と話題があうところを探す必要がないからですね。いきなり「Vue 2だけどvue-loader使ってる?emacsだとjs2モードがmmm対応していなくて〜」や「ラバーソウル以降からそれ以前にない深みがでてサージェントペパーのスタジオ以降〜」などの会話です。 この「情報」のレイヤーは、コンテキストがあえば会話もよくあいます。

ただコンテキストが共有されているからといって「情報」の話ができるとは限りません。 「技術コミュニティの飲み会はつまらないので行かない」という人は、この「情報」レイヤーの会話を強く期待しているけど、その実「あいさつ」レイヤーの会話(技術系や業界の「あるある」ネタ)に終始していて残念だった記憶があるんじゃないでしょうか。

語り

このレイヤーは自分の心情や考え方、生き方や感性、過去の生い立ちなどを語りあえる関係というレイヤーです。 ここで大切なのは 思想や宗教的に別であっても語り合える相手 というニュアンスがあることです。 相手の考えを上下や評価、優劣、同じか違うかの関係でなく、認めあって語れる相手かどうかという意味です。 政治思想が同じでも「情報」の会話や、まして「あいさつ」の会話しかできていないことは十分によくあります。

何の思想を持っているかでなく、自分の深い考え方や生い立ちを語れるかということです。 逆説的に、他愛ない会話ができるというのもこの相手だと思います。それはどのような話をしても相手と受け取りあえるという信頼があるからだと思います。

このレイヤーの会話が出来る人は、0〜多くて20人ほどだと思います。僕は5,6人くらいでしょうか。 同時にこの会話ができるのは多くて3人だと思います。人間心理的に「深い考えをさらけ出せる」と思える場はかなり少ないでしょう。

この考えの意味

これは僕なりに人との関わり合い、会話とは何かと考えてまとめたものです。 僕自身が「会話しているけど、何か物足りない」と思うときに、なぜそう感じるのかをまとめるために書きました。 僕の場合は「あぁ、もう少しこの人と深い話がしたいんだ」と気づくことや逆に、「情報交換がただただしたいと思ってたけど、これはこれで楽しいからいいか」と思うようにもなった気がします。

この図や説明自体が何かに役に立つというわけではありません。また、攻撃の材料にならないことを願っています。 ただ会話やコミュニケーションに不満や不安があるなら、自分が今どの会話をしたいのかを考え直すのに役立つと嬉しいです。

コミュニケーションが苦手とは何なのか

僕はコミュニケーションが苦手だと思います。具体的には人の上下が分からなかったり、「触れないでおこう」のような気持ちがあまり分からないのでキツすぎたり怒ってるように思われることです。ただ、あまり気にしていないです。

コミュニケーションが苦手、という場合は以下の2つの種類に分けられると思いました。

  1. 「あいさつ」レイヤーの会話ができない
  2. 相手と今どのレイヤーの話までできるか、進めればいいかわからない

オチから言うと、1,2両方なくてもいいんじゃないかなと思います。

「コミュニケーションが苦手」という論点は、多くの場合は上記の1番「あいさつ」のレイヤーの会話が苦手なだけだと思います。この部分が属に言う「コミュ力」だと思います。 たとえば会話の弾ませ方や相手との距離の測り方、面白い話の豊富さや話の展開力、リズムの良さや掘り下げ力、引き出し力やツッコミ力的な部分です。 正直、 コミュ力があるかどうかは全く気にしないとなくて良い と思います。

2つめの「相手とどのレイヤーまで話して良いか分からない」、これは話の相手がたくさんいる中で、相手とどれくらいの親密度でどの会話までできるかを測りかねることです。多くの場合は距離感がつかめずに浅めの会話で終了する場合です。逆に、急に深い話をしすぎて距離をとられてしまうという場合もあります。 ですが、 相手との距離感も別段測れなくて良いと思います 。十分見知った相手と会話できればそれで十分だからです。

上記2つ目まではなくても良いと思います。まぁ、かといって「あいさつ」レイヤーの会話は全く不要だとか、その会話ばかりする人は愚かだとか思う必要はないと思います。ただ、 不要とは言わないが思い悩む必要はまったくない と考えています。 人間社会の中で求められるケースはあると思いますが、それは狭い視野での正義でしかないので無視しましょう。

ただし、永遠に誰とも「深いレイヤーの話をしない」のは少し寂しいように思います。 属に言うコミュ力も不要ですし、深い会話ができる人を増やせる必要もとくにはないですが、いつまでも「あいさつ」や「情報」で会話を終了させようとするクセを持っていたり、優劣や競争、勝ち負けをベースに会話してしまい親身になれないのは少し残念に思います。 信用できそうな人と、上下なく少しづつ語ってみるのが良いと思います。僕も、そういう会話を大切にしたいなと思っていますが、なかなか難しいですね。

Ubuntu17.10 (Wayland環境) でLogitech Marble Mouseでスクロールする

f:id:hirokiky:20180403203020j:plain

右の小さいボタンをスクロールにする場合はターミナルで以下を実行。

gsettings set org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button 9

17.10: Mouse Wheel Emulation Fails after upgrade

X周りの設定はうまく効かなかった。

Logitech_Marblemouse_USB - Community Help Wiki

あと、 xinput --list にもLogitechMarbleMouseはでない。 WaylandとXよく分からんけど動いたから良いかという気持ち。

ニッチで新し目のプラットフォームでニッチなマウスを動かそうとするのはめんどくさいな。

Ansibleのdocker.ubuntuロールでdaemon.jsonを設定する(storage-driverとstorage-optを指定する)

AnsibleからDockerを入れる必要があるとき、Docker用のロールを使うと簡単にDocker環境を作れます。

GitHub - angstwad/docker.ubuntu: Docker role for Ansible on Ubuntu 14.04+

この angstwad/docker.ubuntu ロールでは変数を設定するだけでDocker環境のカスタムもできます。 daemon.json の設定をAnsibleの変数から指定して、 storage-driverlog-driver の設定ができます。

daemon.jsonの指定方法

以下のように daemon_json という変数を指定しておけば設定できます。 YAML内に書いておけば、 /etc/docker/daemon.json に変換してくれるので便利です。

  roles:
    - angstwad/docker.ubuntu
  vars:
    # docker.ubuntu role用の変数
    # https://github.com/angstwad/docker.ubuntu/blob/4dfee851a7dc762a48dea4bcee59aea9eb2d4e12/defaults/main.yml#L34
    daemon_json:
      storage-driver: "devicemapper"
      storage-opts:
        - "dm...=..."

Dockerの daemon.json には以下の設定ができます。 dockerd | Docker Documentation