will and way

ただの自分用メモを人に伝える形式で書くことでわかりやすくまとめてるはずのブログ

marble diagram

marble diagramとは

Reactiveプログラミングの説明に使われるあの図の名前。

f:id:matsuokah:20161109005612p:plain

RxMables#mapより転載

X軸を時間、Y軸をストリームとしていて、4つの登場人物は以下の通り

○: input data event
X: error event
|: complete event
中間の□: transformer

つまり、

データ入力イベントが発火→transformerでデータの変換→出力という一連の流れを表している。

何のために使われている?

Reactive Programmingは数多くのオペレータ(transformer)があります。その役割の説明のために使われている。

ジムに行き始めて4ヶ月が経った

健康診断で2年連続

  • LDLが高い
  • 血中脂肪が高め
  • 貧血

と言われ、男性の貧血は稀ということで精密検査まで受けたにも関わらず原因不明。この5年間風邪もひかず、全くもって健康体だと思ってたのに悔しい。

一念発起して体質改善をすべくジムに行き始めて早4ヶ月。なかなか健康体になってきたと思うので、まとめてみた。

f:id:matsuokah:20161022191353p:plain 毎週2,3回は行っていて、帰宅が遅くなったときは家でやってるので週3は筋トレする時間を確保している。

f:id:matsuokah:20161022191632p:plain

f:id:matsuokah:20161022191635p:plain

f:id:matsuokah:20161022192222p:plain

体脂肪率は11%前後、身長174cmに対し、標準体重65.8kgまでもう少し!

ジムに行き始めて変わったこと

  • 体が軽くなったとかは感じないw
  • 食生活を気にするようになった

体調のブレは少なくなったように感じる。筋力が上がったからではなく、生活習慣が変わったから。
ゲームで夜更かしすることが多かったが、程々で寝るようになった。結論、自分の体は睡眠が重要みたい。

食生活を意識する

  • フレッシュフルーツ、ドライフルーツ、ナッツ類を多く食べる
  • 定期的にプロテインを飲む
  • 常温かそれより温かい水を飲む
  • グルテンを避ける(GI値の低い物をなるべく選ぶ)
  • スナック類、カップラーメンは食べない

グルテンフリーはジョコビッチの本で知った。アレルギーではないけれど、積極的には食べないようにしている。
付き合いや出してもらったものは喜んで食べてる。ラーメンは4ヶ月位食べてない。

プロテイン事情

最初はSAVASなどのプロテインを飲んでいたが甘いのが好きではないので、最近は甘味料が入っていない無添加のプロテインを飲んでいる。 無添加なのでホエイ以外入っていない。ビタミン類も取りたいので、無糖の青汁を混ぜて飲んでいる。

プロテインだけ→低脂肪牛乳みたいな味
青汁→青臭い

プロテイン + 青汁 → 抹茶オレ

普通に美味しい。もともと、プロテインのみで飲んでたが、この記事を書く1週間くらい前に発見して、かなり感動した。

成分表

f:id:matsuokah:20161022195821j:plain
プロテイン

f:id:matsuokah:20161022195846j:plain
青汁

自宅の筋トレ

家には重さ調節が1kg~10kgでできるダンベル2個フィットネスマットだけ置いている。
フィットネスマットはなくても良いんだけど、汗を床につけたくないし、下の階の人に迷惑かけたくないという理由も兼ねて。

家で体幹トレーニングしながら動画を見るのは相性がいい。
たまった録画の消費、Youtube見ながらプランクやらV字バランスしてる

長友の本は良かった。けど、naverまとめでやり方は見つかる

来る健康診断

去年は会社の健康診断が10月〜11月頃に行われた。今年の健康診断では超健康体な結果を叩き出すんだ!!

続・Mac OSXの設定をAnsibleで9割以上自動化する

blog.matsuokah.jp

今年の1月に書いた記事では

  • Ansibleをインストールの自動化
  • Ansibleによるアプリのインストールや設定の自動化

の2つを行いました。

今回の記事では

  1. masによるアプリのインストール
  2. Ansibleのアップデート
    1. それに伴い、defaultsコマンドのv1系の実装を削除
  3. 終了後の通知
  4. その他あるべきディレクトリ構成にリファクタ

を、行いました。

1. masを使う

前回、できていなかったものが、AppStoreからアプリのインストール。

Macでの開発環境構築をできる限り自動化する。 - Qiita

という記事の中でmas-cliが紹介されていたので使ってみた。 mas-cliとはコマンドラインでAppStoreのアプリケーションをインストールできるようにしたアプリケーション。

  • 署名・審査を通過したアプリケーションソースなので安全
  • 自動的にアップデートされる

という2点の理由から、brew-caskよりもこちらのほうがなにかといい。

1. brewでmasをインストール

brewでインストールするアプリリストに追加

2. AppStoreのログイン情報を設定ファイルに記載

mas signin ${ID} "${PASSWORD}"

という形式でサインインしてから、インストールします。masのroleでは最初にsignoutし、signinしてからアプリのインストールを開始しています。

3. アプリのリストを記載

mas_applications:
  - {name: 'Slack', store_hash: 803453959}
  - {name: 'CCMenu', store_hash: 603117688}
  - {name: 'Apple Configurator 2', store_hash: 1037126344}

試しで3つだけアプリケーションのIDを列挙しました。 nameは使われないですが、hashだけだと何のアプリケーションかがわからなくなるので。

4. アップデート

自動アップデートを有効にしてれば、不要ですが

mas upgrade

で、AppStore経由でインストールしたアプリをすべてアップデートすることができます。

mas-cliを使う上でのTIPS/NOTICE

1. アプリのリストを取得する

もし、PCを乗り換えるならmasをインストールして下記のワンライナーを実行すれば、AppStore経由でインストールされているアプリ名とハッシュがgroup_varsに記載するべきフォーマットでリストされる

~/W/provisioning ❯❯❯ mas list | sed -e"s/\([0-9]*\)\ \(.*\)\ (.*/- {name: '\2', store_hash: \1\}/"
- {name: 'Apple Configurator 2', store_hash: 1037126344}
- {name: 'Xcode', store_hash: 497799835}
- {name: 'Word Writer', store_hash: 931198233}
- {name: 'Keynote', store_hash: 409183694}
- {name: 'iMovie', store_hash: 408981434}
- {name: 'CCMenu', store_hash: 603117688}
- {name: 'Evernote', store_hash: 406056744}
- {name: '1Password', store_hash: 443987910}
- {name: 'Slack', store_hash: 803453959}
- {name: 'Dash', store_hash: 449589707}
- {name: 'LINE', store_hash: 539883307}
- {name: 'GarageBand', store_hash: 682658836}
- {name: 'LadioCast', store_hash: 411213048}

2. CLI経由だとインストールできないケースがある

CCMenu

CCMenu

CCMenuというアプリケーションは何故か、AppStoreからGUIで操作しないとインストールできなかった

3. AppStoreよりもbrew caskのほうがアップデートが進んでるケースが有る。

Alfredはcaskだと最新の3系がインストールされます。AppStoreからDLすると2系になってしまいました。(2016/10/08現在)

2. 通知する

MESSAGE="Provisioning is successfull, please restart or re-login"
osascript -e "display notification \"${MESSAGE}\" with title \"osx-provisioing\""
say "${MESSAGE}'"

終わったあとこちらをフックしています。通知センターに通知して、sayコマンドで再起動を促すメッセージを喋らせてます。

f:id:matsuokah:20161008182332p:plain

いい感じだ〜

github.com

【読書】Unixという考え方 ― その設計思想と哲学

きっかけはgithubのissue

この本を読むきっかけになったのは
emacs界隈ではデファクトであるmagitvimに持ってきた
vimagitのとあるissueのやり取り。

そのissueとはAny plans to add blame command?
つまり、blameの実装予定はあるのか?という質問である。

その中でauthorは一つのことをうまくやるというUnixの哲学に基づき、その提案は棄却すると回答し、vim-fugitiveというプラグイン:Gblameを案内した上で、won't fixとして片付けている。

僕にとってこれは少しカルチャーショックを受けると同時にUnixの哲学に絶大な好奇心を抱いた。

大学の頃にそんな話を授業で聞いたけど完全に忘れてしまっていた。Amazonで調べてみるとあるじゃないか。即ポチった。

プログラムとして何に集中すべきか

この本が繰り返し伝えることは、「一つのことをうまくやること」だった。まさにissueの回答そのもの。

プログラム(プロダクト)として何が素晴らしいのか?ということは、常々、少ないバイト数、速さ、省メモリなど様々な視点があるが、
Unixという哲学では「小さいこと」が美しいと定義付けている。

それはすべてを包括しており小さいことは

  • 依存が少ない
  • 使い方がシンプルになるので、使いやすい
  • 小さいプログラムはプログラム自体が必要とするメモリへの展開が小さくて済む
  • メンテナンスしやすい
  • 組み合わせやすい

つまり、小さいものを組み合わせて大きいことをしようということだ。

Unix|(パイプ)がまさに「組み合わせで大きいことをしよう」表現している。
標準出力を次のプログラムに渡すことで、自分の好きな出力を得ることができる。

ファイルをcatしたら、grepしたいかもしれないし、sedしたいかもしれない。もしパイプという概念がなく、catがそれらを内包するしかなかったらどうなるだろう。

欲しい機能があっても、catに組み込まれない限り使えないので不便極まりない上に、installする上で依存するプログラムも大きくなるのでビルドにも時間がかかるだろう。

こう振り返ってみると、なんてよくできた哲学なんだ。。。と感銘他ならなかった。

登場した本

Unixという考え方 ― その設計思想と哲学

エンジニアはなぜ勉強し続けるの?

今日、後輩とのランチで「なぜエンジニアは勉強し続けなければならないのか?」という話題になった。

結論は 「エンジニアという職業は手段を売り物にしているから

そして、「手段」は新しいものがでてきては、古いものは使われなくなるサイクルがとてつもなく早い。

毎年のiOS/AndroidSDKのアップデートでは新たなAPIがどんどんでてくるし、
Githubにはかなりの数のライブラリが毎日、公開されてるわけで。

したがって、勉強をしないということは

  1. 「手段」を磨いたり新しいものを取り入れることが出来ない
  2. 効率的な実装の選択肢が減る
  3. 切り捨てられる技術を使い続ける
  4. 腕を磨いているエンジニアと相対的に市場価値が下がる

一言で言うと、「エンジニアとして死んでる

また、技術のアップデートは新しいものを取り入れる以外のことも必要。
例えば以下のようなもの。

  • 規格
  • 哲学
  • 概念
  • パターン

これらは使う技術が変わっても、使いまわせる財産になると思う。

腕を磨くこと、新しいものに目をキラキラさせることはエンジニアの素養の一つとして大事にしていきたい。

Intensity shuttleを使ってMacでWii Uを録画する

負けた試合の分析や、プライベートマッチでふざけてる動画がとれるのは楽しい!ということで、録画の環境を紹介。

紹介すること

  1. 最短の手順
  2. Intensity Shuttle for Thunderboltとは
  3. HDMIスプリッター USB給電タイプを購入した話
  4. 動画の録画にはOpen Broadcaster Software(通称OBS)
  5. Nintendo Creators Programについて

手順

  1. Wii U→Intensity Shuttle→TVの構成をHDMIでつなぐ
  2. Intensity Shuttle→MacをThunderboltで繋ぐ
  3. Wii Uの設定で画面解像度を720oに選択する
  4. Open Broadcaster Software(通称OBS)のMac版をインストール
  5. OBSを立ち上げて、Wii Uをソースに追加する
  6. OBSの設定
  7. 録画して、Youtubeにアップロード

述べた手順で撮った動画がこちら

youtu.be

Intensity Shuttle for Thunderboltとは

パススルー方式で、1080p30fpsや720p60fpsで録画可能なキャプチャボードです。 USB3.0方式とthunderbolt形式があり、自分はMacなので後者を選択。

手頃な値段かつそれなりの高画質(1080p60fps)を探してたんですが、はMacユーザーにとって、あまり選択肢は多くなさそうです。
ヨドバシかどこかの家電量販店のキャプチャボードランキングでも、Mac対応のものではこれが1位でした。

※パススルー方式とは、キャプチャボードを通すものの、アウトプットにラグがない形式のキャプチャボード

HDMIスプリッター USB給電タイプを購入した話

理由は2つ

MediaExpressをアクティブにしてないとTVにソース(Wii Uの画面)が転送されない

Wii U→Intensity Shuttle→TVで接続するとMacでアプリを開いて、アクティブにしておかないとWii Uのプレーができません。 MacChromeやFinderを見たりすると、画面の転送がストップしてしまう。。。

たまに暗転する

プレー中にTVが真っ暗になるケースが何回かありました。1試合に1回は起きてるかな。
録画は問題なくされてるが、プレーに響くので結構辛い

ということで、自分はHDMIスプリッター USB給電タイプ を購入しました。

USB給電式のいいところは、Wii Uから電源をとれるところ。 これで今のところ、キャプチャしたい時だけMacをつないでいます。

※スプリッタの購入と同時にHDMIケーブル1.5m を2本買うことをお忘れなく。

構成

f:id:matsuokah:20160221152529p:plain

そんなに難しくないですね。PS4を繋ぎたくなったら今度はスプリッタの前にHDMIの切替器をおいて、PS4Wii Uをつなぐのだろうか・・・?

ただし、ブラビアリンクが使えなくなるとのレビューを見かけたし、PS4はデフォルトで録画機能がついてるので、今はWii Uのみ。

mp4に変換していおいて、Youtubeをストレージとして使うのが利口なのではないかと思う。

Nintendo Creators Programについて

Youtube上のNintendoの著作物での広告売上をシェアする仕組み。もともと、任天堂の著作物を含む動画の広告売上はすべて任天堂に入ってたけど、それが投稿者にシェアされるようになった。
プログラムが適用されるソフトも決まってるのでYoutubeに動画を投稿する際には確認すべし。 公式: https://r.ncp.nintendo.net/guide/ Wikipedia: Nintendo Creators Program - Wikipedia

Splatoonの動画を取るだけで、任天堂様に貢献できるのはいいこと。イカのサポートは長くやってほしい。

OBSの設定

OBSの設定には、

  1. 全体設定(global.ini)
  2. 動画の設定(プロファイル)

の、2つがあります。

いい感じにしたファイルをGoogle Driveにあげておいたので使ってみてください。

f:id:matsuokah:20161008113809p:plain

f:id:matsuokah:20161008115223p:plain

OBS > ファイル > 設定フォルダーを表示basicといフォルダとglobal.iniというファイルを置き換えれば、1280x720の動画がmp4で取れるようになっています。

Wii Uのキャプチャに必要だったもの

SplatoonのAmiibo3種(ボーイ、ガール、イカ)ゲット!+α

f:id:matsuokah:20160131193040j:plain

やっとSplatoonAmiiboを3種類ゲットしました!!!!!!!
ミッションクリアするとギアがもらえるので、粛々とネットで調べてたんですよ。

しかしネットではびこるのは転売

元値は単体で1200円、トリプルセットで3000円なのですが、
1つ2000円くらいしてたりして、買う気になれなかった。いまは、1600円くらいに落ち着いてるけど、転売ヤーが儲かるところが気に喰わないので定価ゲットを狙ってた。

Amazonプライムなら定価だろうという謎の自信に満ち溢れてたんですが、へし折られました(笑)

1月中旬には多くの家電量販店で再販されたみたいだが即品切れのよう。
ノジマオンラインやヨドバシ.comでも売り切れだったので諦めていた。

しかし、Twitterでは「店頭に普通に売ってたー」と複数見かけたので、朝イチで渋谷のヤマダに行ってきました!

イカが残り1こ、ガール、ボーイは残り2こだったので、運が良かった!

早速、ガールのミッションをクリアしまして、イカパッチンやらヒーローチャージャーレプリカをゲットしました〜

普段、シューターの自分にとって、DJたこ将軍をチャージャーやるのは本当に辛かった。。。

ついでに

PS4のコントローラー充電器も買いました

f:id:matsuokah:20160131193911j:plain

アタッチメントを充電部分につけて置くだけ。

いままで、USBコードが1本しかなく、コントローラー1つをローテしながら使ってたが、これで解決。 ついでに、定位置に戻す、つまり片付けるようになりそうなので良さそう。

ちなみに2つおくとこんな感じ

f:id:matsuokah:20160131194131j:plain

イイネ!

お値段1900円ほど。