今日はこのへんで

プログラミングやプロダクト開発について。もしくはただの雑記。

Bellroyの薄い財布に買い替えた

松浦弥太郎の「日々の100」を読んだときに、財布についてのエピソードがあった。

どんな財布がいいのか、と訊くと、シンプルで、大きくて、上質で、しっかりとしていて、一歩下がったところから眺めてきれいと思うものがいい、と教えてくれた。そして、いつも手入れをしなさい、とも。財布の中身は、いつも整理整頓しておくこと。カード類は最低限にすること。革製なら週に一度は磨くこと。パンツの後ろポケットなどに入れたまま座ったりしないこと(これはお金を尻に敷くことになるから絶対駄目だと言われた)。お札の向きは必ず揃えること。できれば小銭入れを別に持つこと。ひとつの財布を二年以上使わないこと。

松浦弥太郎. 日々の100 (集英社文庫) (KindleLocations166-171)

いい話だなと思い、自分の財布を振り返ってみると、高校生のときに結婚式の引き出物かなにかでもらったものをずっと使っていることに気づいた。Amazonで見つけた同じ財布は2,000円くらいだった。

もう社会人も5年目になるし、財布くらい買い替えてもバチは当たらないだろうと思って少し探した。Bellroy(ベルロイ)というオーストラリアのブランドのNoteSleeveという製品にすることにした。


Bellroy Note Sleeve The wallet, re-engineered. Clever storage in a slim silhouette.

シンプルで、小さくて、機能的なデザイン。大きくもしっかりもしていないけど、整理整頓しやすいようにこだわって作られている感じが良かった。

まだ革も固いので、2年くらい使って馴染むと良いな、と思う。そしたらまた買い換えるかな。


f:id:Kechol:20170404025906j:plain

RSSへの回帰

最近、またRSSを使い始めた。TwitterやFacebookを使って情報収集するのではなく、自分の気になる情報をなるべく漏らさず入手したいと思ったからだ。

自分も2013年くらいまではRSSで情報収集していた。でもその頃にはRSS疲れというのか、Google Readerでも”Mark as read”を押すことが多くなっていて、その年の7月にGoogle Readerがサービス終了するのと同じくらいに使わなくなっていたと思う。

Deep Workに感化されたわけではないけれど、自分がTwitterに割く時間が多すぎるような気がしていて、もっと効率的に情報収集できたらと思った。ちょうど The Changelog でRSSについてのエピソードがやっていたのも良いきっかけだった。

changelog.com

エピソードのなかで、RSSは信頼する人からの情報を入手するのに最も適していて、嘘の情報に躍らされるのを防ぐ唯一の手段だ、ということが話されていたのが印象的だった。ちょうどUSではフェイクニュースが大きな問題になっている背景もあったのだと思う。

そういうわけでRSSフィードを一から整理したのだけど、またRSSに疲れてしまうのを防ぐために、なるべくノイズや煽りが多いメディアは避けながら、手触り感のあるフィードを選んで入れるようにした。はてなで有名なブログは TopHatenar から探して入れたし、海外のTech Blogは kilimchoi/engineering-blogs というリポジトリが便利だった。sindresorhus/awesome も各リポジトリにはResourcesの項があるので参考にした。その他は大体ググって見つけた。

GistにOPMLをあげてある。自分が興味あるのはエンジニアリングやスタートアップなので、そうしたものが多い。暮らしとか経済っぽいものも多少入っている。

https://gist.github.com/kechol/bea24131bc184154d27d95e0916a6fc9

RSSリーダーは、Reeder 3 を使うことにした。FeedlyやFeedbinはフィードが100以上になると月額課金になってしまうので、それを避けたかった。アプリは有料で、フィードの購読・更新はローカルでしか行えないけれど、相変わらず使いやすいし、移動中のスマホではKindleやPocketを読むので問題ない。

Reeder 3

Reeder 3

  • Silvio Rizzi
  • ニュース
  • ¥1,200

まだ使って一週間くらいだけど、200くらいのフィードが登録されていて、日に300件くらいが更新される。そのなかでブラウザで開くのは3,40件くらいで、実際に面白いのはそのうちの半分もないので、全部捌いて読み終わるのに30分くらい。読むのに時間のかかる記事はPocketにいれて移動中にゆっくり読むようにしているのもサイクルを乱さないことに貢献していると思う。もう少し使ってみて、フィードを減らす方向にはもっていきたい。

フィードを整理してみて思ったのだけど、RSSを配信しないメディアが増えたような気がするのは残念だ。フッターやサイドバーにTwitterやFacebookのアイコンは見つかるけれど、あのオレンジのマークが見つからないのはしょっちゅうだった。たとえばCookpadがやっているくらしのきほんや、伊藤忠都市開発のウェブマガジンCREVIA TIMESなどだ。日経新聞オンラインにRSSがないのは昔からだったか。

RSSフィードの配信は、実装コストも運用コストも低く、メディアにとってはニュースレターやFacebookページへのいいねなどと同じく、ファンを増やす仕組みの一つであるので、実装しないのは非常にもったいないと思う。もうRSSの時代ではないということではなく、間口を広く取ることがメディア運営には大切なのだから。ソーシャルで記事を拡散させることが大切だからこそ、RSSからソーシャルに流す人は全く違うクラスタに記事を拡散させる貴重な起点になるはずだ。また、バズで訪問した人をうまくRSSに登録させることでファンを増やし、定期的に訪れてもらうことで、一過性のバズが日々のベースとなるPVを上げる効果をもたらすので、ソーシャルで一記事を拡散してもらうよりも価値が高い側面もあると思う。RSSは仕組みもよくわからないし効果測定もできないというのはマーケティング担当者の怠慢だ。お願いなので黙ってRSS実装してほしい、購読するので。

もしおすすめのフィードがあったら教えて欲しいし、上記のフィードを見て気が合いそうだなと思ったらご飯に誘ってください。

「脳には妙なクセがある」読んだ

ギークでタレントの池澤あやかさんの記事 をたまたま読んで、そこで触れられていた脳科学者の池谷裕二さんに興味を持ち、著作の一つである「脳には妙なクセがある」を読んだ。

脳には妙なクセがある (扶桑社新書)

脳には妙なクセがある (扶桑社新書)

ファストアンドスローなどと被る部分もありつつ、本の内容が面白かったので少し中身を紹介しようと思う。

もっとも効果的な勉強法とは?

外国語の単語を暗記させる実験で、より効果的な方法を検証したものがある。以下の4つのグループでどのグループが一番単語を暗記できるかを検証した。

  1. 単語を学習→すべてをテスト→すべてを再学習→すべてを再テスト
  2. 単語を学習→すべてをテスト→覚えていないものを再学習→すべてを再テスト
  3. 単語を学習→すべてをテスト→すべてを再学習→覚えていないものを再テスト
  4. 単語を学習→すべてをテスト→覚えていないものを再学習→覚えていないものを再テスト

結果、1と2のグループ(すべてを再テストしたグループ)のみが単語を長期的に記憶していた。脳は、情報を何度も学習するよりも、何度も使うことで記憶を定着させると言えるみたいだ。

自分もいま英単語を勉強しているので、活かしていきたいな。

脳に良い食べ物とは?

書籍では脳に良い食べ物も紹介されている。とても良かったのは、研究結果と一緒に紹介している点だ。以下に例をあげる。

  • オメガ3不飽和脂肪酸(DHAなど)
    • (ヒト)高齢者の認知機能低下の改善、ムード障害の治療
    • (動物)動物の脳損傷による認知機能低下の改善
    • (動物)アルツハイマー病モデル動物で認知力低下の改善
  • フラボノイド(ココア、緑茶、ワイン等に含まれる)
    • (ヒト)高齢者の認知機能の向上
    • (動物)運動と組み合わせることで認知機能の増強
  • ビタミンB類(豆類・豚肉)
    • (ヒト)ビタミンB6やB12 、葉酸の補充で、広範な年齢の女性で記憶力が向上
    • (動物)こりん欠乏による認知機能低下をビタミンB12が改善

他にも色々紹介されている。ここで大事なのは、テレビなどで認知機能を向上させると紹介されるDHAやフラボノイドなども、実験では”高齢者”の認知機能の改善、向上が確認できたに過ぎず、例えば20代男性である僕が進んで摂取したとしても、同様の効果が期待できるかどうかはわからない点だ。

筆者自身も、「エンターテイメントの一環として楽しんでいる」と書いているから、僕もそうしたいと思う。

自由意志は脳から生まれない?

脳を頭蓋の外部から磁気刺激すると、被験者が”自由意志”で左右どちらかを指し示す結果が、刺激しない場合とで大きく変わることがわかった。しかも、刺激したかどうかに関わらず、被験者は「自分の意志で選んだ」と思うということも判明した。

こうした研究の結果を受けて、筆者は、意志は脳から生まれるものではなく、周囲の環境と身体の状況で決まる、としている。僕らの普段の行動の大部分は、環境や刺激、普段の習慣の”反射”でしかないということらしい。また、自分自身のことは自分では決してわからない作りになっている、とも書いている。

そういうわけで、無意識の自分、自分も知りえない自分が”正しい反射”をしてくれるかは、本人が過去にどれほど良い経験をしてきているかに依存するという。良い経験を積むことで、良い癖ができ、それが良い反射・判断につながるので、人の成長は”反射力”を鍛えることが重要、だそうだ。

有名なマザーテレサの格言もあるけれど、脳科学の視点からも、良い習慣が良い結果を生み、良い人生を作るというような意見が生まれることはとても面白いと思う。良い経験ができるような環境や自分の普段の習慣にも気をつけたい。


最近、脳科学の研究はいろんなところで紹介されているけれど、どこまでが本当なのか、正直わからない部分も多いので、こうした研究者の著作はありがたいと思う。

今回読んだ本は面白いトピックをたくさんあげているような、いい意味で俗っぽい本だった。もう少し深く読みたい人は『単純な脳、複雑な「私」』なんかを読むのが良いかもしれない。

単純な脳、複雑な「私」 (ブルーバックス)

単純な脳、複雑な「私」 (ブルーバックス)

ロボアドバイザーってどうなの?と思って素人なりに検討した

一ヶ月くらい前に、使っているSBI証券でWealthNaviの提供が開始されたので、とりあえず口座の申し込みをした。

http://www.sbigroup.co.jp/news/pr/2017/0131_10561.html

あとは入金するだけではあるんだけど、実際こうしたロボアドバイザーで資産運用するのはどうなのだろうと立ち止まって考えてみた。

先に言っておくのですが、情報の正確性については一切保証しませんし、この記事を含むサイト上の情報を用いて行う判断について責任を負うものではありません。

ロボアドバイザーの特徴

最近は証券会社各社がそれぞれ、ロボアドバイザーのサービスを出している。有名なのはTHEOWealthNaviなんかだと思うけど、基本的に、両者ともグローバルETFを中心に、資産クラスを分散しながら投資を行うことに違いはない。ポートフォリオの配分を自動的に変更(リバランス)し、リスク管理を行うことが、ロボアドバイザーとしての最大の特徴だ。

WealthNaviのホワイトペーパーから引用すると、WealthNaviでは投資対象のETFを純資産総額や流動性から選定し、2016年10月時点では株式や債権やREIT、コモディティを含む10種のETFに投資を行っている。

f:id:Kechol:20170308001237p:plain

https://www.wealthnavi.com/image/WealthNavi_WhitePaper.pdf

THEOもコモディティやREITを含めた40種類のETFに投資を行うということだが、ETF銘柄はサイトに公開されている。

https://theo.blue/portfolio

様々なロボアドバイザーが存在するけれど、1. 個人がどのようにポートフォリオを構成するか、2. 各ロボアドバイザーのリバランス機能がどれだけ賢くリスクを回避できるか、3. 信託にかかる手数料はいくらか、というのがポイントになるように思う。

どのようにポートフォリオを構成するべきか

リスクとポートフォリオ

どのようにポートフォリオを構成するかは、自分がどれだけリスクを取ってリターンを求めるかによる。

WealthNaviのホワイトペーパーからさらに引用すると、リスクの許容度に応じてポートフォリオの配分を変える例がある。リスクの許容度が上がるにつれ、リターンの分散が少なく、リスクの少ない国債の比率が少なくなり、逆に比較的リスクの高い不動産や株式の割合が高くなってくる。

f:id:Kechol:20170308001340p:plain

このグラフでは、リスク許容度が4程度だと、年率5%程度の期待リターンになるようだ。

GPIF(年金積立金管理運用独立行政法人)のポートフォリオ

巨額の資産について、長期的な運用を行うGPIFのポートフォリオを参考までに参照してみると、平成28年の第3四半期は以下のようだった。

f:id:Kechol:20170308001354p:plain:w400

平成28年度の収益実績は第三四半期だけでみると8%近いが、第一四半期は元本割れとなっている。別表に内訳があるが、収益の増減はやっぱり株式の貢献が大きい。GPIF設立後の通算でみると、収益は年率3%程度のようなので、リスクの低い債権の比率が多い分、長期的にみると期待リターンは低くなるというのは理にかなっている。

f:id:Kechol:20170308001404p:plain

http://www.gpif.go.jp/operation/state/pdf/h28_q3.pdf

リバランスはどれだけ賢いか

リバランスに期待しすぎてはいけない

各ロボアドバイザーのりバランス機能は、リスクの管理とより期待リターン向上のためにある。

THEOのサイト上の例によると、各資産の時価評価額を1ヶ月ごとに見直し、ポートフォリオの配分比率を調整するようだ。

グロース40% : インカム40% : インフレ20% のポートフォリオを構築した場合でも、1ヶ月後にはグロースが値上がりし、インカムが値下がりして、時価評価額ベースのポートフォリオの配分が グロース45% : インカム35% : インフレ20% になっているかも知れません。グロースのリスクはインカムよりも高いため、この状態は、当初の想定よりも高いリスクをとっていることになります。 そこで、余分な5%分のグロースを売却し、不足している5%分のインカムを購入することで、ポートフォリオの配分をグロース40% : インカム40% : インフレ20% に戻すのが資産運用方針のリバランスです。

https://theo.blue/automation

そして、実際にどれくらいの効果になるかがざっくりしたグラフで出ている。

f:id:Kechol:20170308001417p:plain:w400

このグラフを見る限りは、リバランスがあったとしても、元本割れするときは元本割れするし、10%も期待リターンが上がったりはしないということだ。それでも、リバランスなしよりは数%良い運用成績を残せそうではある。

WealthNaviのDeTAX(デタックス)

WealthNaviは、DeTAXという独自の機能を持っており、税制度を利用して最終的な利益を向上させることができる。

自動最適化 – よくあるご質問 | WealthNavi

配当やリバランスなどによって生じる税負担が一定額を超えた場合に、お客様のポートフォリオ組入銘柄の中に含み損がある銘柄があれば、その銘柄を一旦売却しすぐに買い戻すことによって損を実現し、益と相殺することでその年の税負担を軽減します。

リバランスによる売買益+分配金の税負担が2万円以上を目安として自動的にDeTAXが行われます。

日本だと株式の譲渡益には20%程度(所得税15%、住民税5%と復興特別税)の税金がかかるので、例えば全体で10万円の含み益が出ている場合に、2万円の含み損のある銘柄を一瞬で売買し、全体で8万円の含み益とすることで税負担を減らす(この場合だと10万円の税負担2万円が目減りして1.6万円の課税となり、実質4千円の利益となる)ということだと思われる。

https://www.nta.go.jp/taxanswer/shotoku/1463.htm

信託にかかる手数料はいくらか

ロボアドバイザーの手数料は高い?

現在の手数料を見ると、THEOの信託手数料は1%、WealthNaviは3000万円までは1%、3000万円を超える部分は0.5%であり、どちらも売買手数料、出入金手数料、為替手数料は必要ない。

この信託手数料1%が普通にETFを買う場合と比べて高いのか低いのかが問題になる。

例えばWealthNaviの投資先ETFの一つであるバンガード・トータルストックマーケットETF(VTI)だと、経費率は0.05%ととても低い。

https://www.vanguardjapan.co.jp/docs/FS_VTI_JP.pdf

また、国内ファンドの投資信託でも、例えば人気銘柄のニッセイ外国株式インデックスファンドなどは、信託報酬が0.216%以内となっており、換金手数料もかからない。

https://site0.sbisec.co.jp/marble/fund/detail/achievement.do?Param6=12931113C

平成27年度の金融レポートによると、アメリカの銘柄では平均の信託報酬は安く、販売手数料と合わせても1%未満に収まるようだ。

f:id:Kechol:20170308001443p:plain:w300

http://www.fsa.go.jp/news/28/20160915-4/02.pdf

もちろん実際にはここに為替手数料などがかかってくるので、単純比較はできないけれど、ロボアドバイザーの手数料1%にはそれなりに運用コストがのっていると考えても良さそう。

NISAと税金

手数料とともに、考えるべきなのが税金だ。WealthNaviのようなロボアドバイザーは、適宜リバランスを行うせいでNISAの利用ができないことを念頭におく必要がある。

NISAのご利用はできません。 当社のサービスは最低投資額を設定させていただいていること、年2回のリバランスが実施されることの2点から、年間累計の買い付け金額がNISAで上限となっている120万円を超えることが多いと想定されるためです。

NISAの利用はできますか? – よくあるご質問

NISAというのは、上場株式、投資信託への投資に対する配当・譲渡益について、年間120万円までの非課税枠を設ける制度。上記のように、日本では譲渡益・配当について20%程度の課税がなされるので、10万円の利益は通常8万円しか手元に残らないが、NISA枠での譲渡益であれば10万円がそのまま手元に残る。

NISA制度の概要 | 政府広報オンライン

新しい投資優遇制度「NISA(ニーサ)」がスタート!将来に向けた資産形成を考えるきっかけに:政府広報オンライン

結局自分はどうしようと思うか

投資資金が少ない自分にとって、NISAの非課税投資枠の魅力は、ロボアドバイザーの機能を補って余りあると思う。また、自分は余剰資金で投資を行うため、なるべくリスクを許容して株式の比率を多くとりつつ投資をしたいとも感じる。なので、個人的な結論としてはドルコスト平均法などの運用手法を守りつつ、ロボアドバイザーの投資対象にあるような先進国株のETFを中心に積立投資していこうかなと思う。

年間120万円以下しか投資を行わないような人にとっては、ロボアドバイザーを使わず、NISAを活用しつつETFに投資して長期運用するのが正解のような気がするし、逆に、大きな資産(退職金とか)についてなるべくリスクを抑えて運用したい場合は、ロボアドバイザーは良い選択肢かもしれない。(個人的な感想であり投資を勧誘するものではありません。また、私は判断の一切に責任を負いません。)


まぁ20代のころから投資信託するってのもつまらない話なので、ほんとはもっと自分に投資していくのがいいんでしょう。

Amazonで買わなかった日用品3つ

なんでかは自分でもわからないけど、年末くらいから、日用品をアップデートするのに凝っている。

日用品は意外とAmazonで買えなかったりしたので書いておく。

サンサンスポンジ

2017年にもなって自分で皿洗いしているので、スポンジをアップデートした。サンサンスポンジは長持ちするらしい。

使ってみると、よくあるスポンジよりも目が粗くて、水は素通りしてしまうくらいだった。繊維が固めで、ヘタりづらいのが長持ちする秘訣なんだと思う。

粘性の高い洗剤と相性が良いので、洗剤も合わせて検討するといいかもしれない。自分はいまのところ濃縮ジョイを使っている。

楽天だととても人気があるのに、Amazonには売っていなかったのが意外だった。

ヒオリエのタオル

ヒオリエのタオルは楽天ランキングでも常に上位にある人気のタオルブランド。品質の割に安くて、コスパがよいのでおすすめ。

なかでもホテルスタイルタオルというのが人気らしく、使ってみると、これまでのタオルよりも手触りがフワフワで、QoLが上がった気がする。カラーバリエーションが多く、用途ごとに色を変えられるのもポイントだと思う。

あと、これは余談なんだけど、ヒオリエは楽天の店舗とは別に公式サイト(http://www.hiorie.com/)がある。そして、公式のほうが少し安い値段がついている。

人気のスタンダードフェイスタオルは公式サイトだと340円。

(送料無料)ホテルスタイルタオル スタンダード フェイスタオル <おひとり様2枚まで> ひるおび|バスタオル・フェイスタオル・今治タオルの通販なら【ヒオリエ 本店】

楽天だと360円。

【楽天市場】【全品送料無料】日本製 ホテルスタイルタオル スタンダード フェイスタオル/タオル フェイス ホテルタオル 泉州タオル 国産 ギフト<タイムバーゲン>:タオル直販店 ヒオリエ/日織恵

Amazonでも一応販売している。こちらは442円。

Amazon|hiorie(ヒオリエ) ホテルスタイルタオル スタンダード フェイスタオル 日本製 泉州タオル ライトグレー|フェイスタオル - タオル直販店 ヒオリエ/日織恵 オンライン通販

値段の違いはAmazonや楽天経由だと手数料とられるからだろうか。公式サイトは決済も楽天とは別のECサイト用のASPを使っていて、管理がすこし大変そうではある。Amazonや楽天にとっては面白くなさそうだ。

ニトリのキャニスター

無印良品なんかと比べて、ニトリのキャニスター(保存容器)は安くてたくさん種類があることに気づいた。

なかでも、フレッシュロックシリーズ は、ミニマリスト御用達の一品になっている。

f:id:Kechol:20170305141851j:plain

フレッシュロック 白パッキンのインテリア実例 | RoomClip

もちろんAmazonや楽天でも売っているんだけど、ニトリで買うよりも非常に高い値段に設定されているものが多い。せどりを行う個人だけでなく、その店舗の商品のように売られているケースも多いみたいなので、普段ネットだけで買い物する人は簡単に騙されてしまうような気がする。


こうした日用品のソースは、発言小町とか主婦向けの本だったりする。自分は普段、主婦の方に暮らしの話を聞く機会というのは全然ないのだけど、自分と違う層の人だと、自分と買い物の仕方がこうも違うのだなぁと思う。

Amazonが万能だと思ってしまいがちだけど、そうでもなかった。こうした層を取り込んで、まだ伸びる余地はありそうだと感じた。そういう意味では楽天は、こういうところで差別化できているので、お互いもっと上手くやってほしいと思う。

煎酒(いりざけ)買ったら美味かった

最近BuzzFeedで以下の記事がバズっていた。意外と知らない調味料ってあるんですね。

このなかで、煎酒(いりざけ)という調味料が気になったので買ってみた。

煎酒(いりざけ) 小

煎酒(いりざけ) 小

(いまAmazonだと1,200円とかになっちゃってるけど、普通に成城石井で買えば700円ちょっとになるので注意。)

煎酒は梅酢とかつおだしを合わせた調味料なんだけど、基本的には醤油かポン酢の代わりとして使うのが良い。

卵かけご飯がうまい

f:id:Kechol:20170304191603j:plain

醤油の代わりに煎酒を使うとうまい。すこし梅の風味がしていい感じ。

ツナの和え物に使うとうまい

ツナ缶と三つ葉(とかオクラ、水菜など)の和え物は、すごく簡単にできて副菜として優秀なんですよ。たまに納豆やかつおぶし入れたりもする。

だいたい醤油やポン酢で味付けをするんだけど、これを煎酒にしてみても美味かったので、試してみるといいかも。


料理の引き出しが少ないのでこのへんで。とりあえずなんにでもかけて食べてみているけど、大体うまいので買ってよかった。

最近の作業用BGM

音楽を大音量で聴くと疲れを感知する機能がにぶる(*1) ってほんとなんですかね?感覚的には合っている気がするけれど。

自分は作業中によくBGMを聴くのだけど、試行錯誤しているので少し紹介したい。あわよくば「これを聴け」という知見が欲しい。

(ちなみに貧乏性なのでSpotifyやiTunes Musicといったサブスクリプションサービスは使っていません。)

YouTubeのミックスリスト

YouTubeのミックスリストは、似たテイストの曲をずっと流しておけるので良い。個人が作ったリストではなく、YouTubeが自動生成したリストは曲数が多いのでずっと聴いていられる。

ちょっと前に深夜のテレビで、たまたまリーガルリリーというインディーズのガールズバンドが紹介されていて、そこからthe peggiesとかテレキャスターストライプとかのインディーズバンドを無限に聴いていた時期があった。

初音ミクやIAも好きだけど、最近は石風呂さんの曲をずっと聴いていた。

あとはいろんな曲をカバーしているGoose houseのチャンネルはカバー曲数が多くて安定してる。

ミックスリストは、インディーズバンドや初音ミク、Goose houseなど、公式が載せているものであれば、楽しく聴けると思う。

ニコ動の作業用BGM

ニコ動の作業用BGMタグ は1時間くらいの長さのアニソンとかボサノバとかJAZZとかがあって、数年前はよく聴いていた気がする。

コメントで”マスター”とわざとらしいやりとりしてるのはニコ動らしくて微笑ましい。

SoundCloud

SoundCloud もいろいろなMixがアップロードされているので、聴いていた時期があった。曲がMixされて作業用BGMに合う感じになっているのも良かった。

SoundCloud: 音楽&オーディオ

SoundCloud: 音楽&オーディオ

  • SoundCloud Ltd.
  • ミュージック
  • 無料

“chillout"とか"anime music"とかのキーワードで検索すればいろいろでてくる。(けど正直自分も使いこなせてはいない。)

Search Results: #chillout | SoundCloud

TuneIn Radio

tunein は、基本的にはラジオアプリだけど、アニメやJAZZなんかを流し続けているステーションがいくつかある。自分は少し試してやめてしまったけど、お気に入りのステーションが見つかれば良さそう。

TuneIn Radio

TuneIn Radio

  • TuneIn
  • ミュージック
  • 無料

たとえば以下のステーションはずっとアニソンを流してる(古いアニメも多い気がする)。

Amazon Prime Music

Amazon Primeの会員であれば、Amazon Prime Music が聴ける。

Amazon Music

Amazon Music

  • AMZN Mobile LLC
  • ミュージック
  • 無料

プレイリストが「晴れた朝に聞きたい洋楽」とか「テンションが上がる映画音楽」とか雰囲気ベースになっているので、気分を合わせて聴きたいときにはいいかもしれない。洋楽が多いので洋楽が好きなひとには良さそう。

プレイリスト: テンションが上がる映画音楽 | Amazon Prime Music

ホワイトノイズ

より集中したいときや、リラックスしたいときなんかはホワイトノイズを聴くこともある。

サイトとかアプリとか調べればいくらでもでてくるけど、自分は Nozio というアプリを使っている。自分で雨音や波の音をMixできて、用途を分けられるところが気に入っている。

Noizio

Noizio

  • Kyrylo Kovalin
  • ミュージック
  • ¥240

f:id:Kechol:20170305124727j:plain:w320

集中して本を読むときや寝る前はホワイトノイズを聴いているときが多い気がする。

Youtube Live

TuneInとかと変わらない気もするけど、YoutubeにはLiveで24時間音楽を流しているチャンネルがあったりする。

以下のチャンネルは雰囲気がゆったりで邪魔にならないので、最近良く聴いている。


こういう作業用BGMは選んでいる時間がもったいないと思いつつ、ずっと聴いていると飽きてくるので悩ましい。とはいえ、最近は作業中はYoutube、本を読むときはホワイトノイズで安定してきたので、やっと整ってきた感じがする。

まぁ自分の気に入った曲を聴くのがいいよね。

f:id:Kechol:20161122211341j:plain

いまさら docker-compose

ここ数日、Railsアプリの開発環境をDockerに移行できないかなと思って触っていた。Dockerについては昔から横目でウォッチしていたものの、実際にRailsアプリの開発環境をDockerコンテナ上で作る機会がなかったので、いまさら試した。

触ろうと思って調べると、意外と日本語記事が古かったり、不満が多かったので、ここでは軽くTipsなんかをメモしておきたいと思う。

前提の環境としては

  • 既存Railsアプリの開発環境をDockerで作りたい
    • puma, webpack, postgres, redis (ActiveJob) のプロセスを起動する
  • docker -v : Docker version 1.13.1, build 092cba3
    • Docker for Mac 使ってる

今回試した結果のDockerfileとdocker-compose.ymlは以下に書き捨てた。まだ修正の余地はあると思うけど。。

https://gist.github.com/kechol/787429078865eff623e62b0ebbe78280

docker と docker-compose の関係

これは基本的なことをちゃんと理解していなかっただけなんだけど、docker-compose するときはほとんど dockerコマンドのお世話になることはない。docker-composeを使ってコンテナを作成する場合には、Dockerfileの一部(CMDとかEXPOSEとかENVとか)の内容を docker-compose.yml に移すことになり、Dockerfileが単体では動作しないものになるので、docker コマンドに対応した docker-composeコマンドを使う。

Overview of docker-compose CLI - Docker

buildだったら

$  docker-compose build SERVICE_NAME

runだったら

$  docker-compose run SERVICE_NAME COMMAND

になる。

Dockerfileのディレクトリ構成

docker-composeを使うときは複数のDockerfileを作成したり、開発環境と本番環境を分けたりするので、docker-compose.ymlをプロジェクトルートにおいて、あとは適当なディレクトリにまとめるのが良いと思う。

以下のような感じが良いんじゃないかと思う。

PROJECT_ROOT
├── docker-compose.dev.yml
├── docker-compose.prod.yml
├── .env
├── dockerfiles
│   ├── dev
│   │   ├── Dockerfile-rails
│   │   ├── Dockerfile-node
│   │   ├── Dockerfile-xxxxx
│   │   ├── entrypoint.sh
│   ├── prod
│   │   ├── Dockerfile-rails
│   │   ├── Dockerfile-node
│   │   ├── Dockerfile-xxxxx
│   │   ├── entrypoint.sh

最初 docker-compose.yml をdockerfilesサブディレクトリ以下に置こうとしたんだけど、セキュリティの都合で上の階層のディレクトリをVOLUMEとしてアタッチできないっぽかったのでルートに置かざるを得なかった。

Alpine Linuxを使う

特に開発用のDockerイメージのソースとしては、Alpine Linuxベースのものを使ったほうがいい。サイズが小さいから。いまはOfficialのソースもたいていalpineに対応しているしね。(-alpineとprefixがついていたり、タグがalpineになっている。)

$ docker images
ruby                2.3-alpine          c963a2466730        4 days ago          137 MB
node                6.10-alpine         340408be6110        5 days ago          50.3 MB
redis               alpine              0d39481626b2        12 days ago         20.5 MB
postgres            alpine              575c5e74b765        2 weeks ago         38.4 MB
busybox             latest              7968321274dc        6 weeks ago         1.11 MB

実際にイメージを見てみても、alpine ベースのイメージは100MB以下のものが多い。ubuntu とかのイメージだと、100MBくらいは余裕で使うから、ハードディスク容量を圧迫しなくて済む。

ひとつ注意点としては、パッケージ管理が apk というコマンドになっているので書き換える必要があるということだ。利用できるパッケージは Alpine packages で検索できる。

docker-compose.yml version 2 or 3 を使う

サンプルを見たいと思って色々なdocker-compose.ymlを見てみたけど、意外とver. 1の文法のままのものが多い。特に links がそのままなものが多かった気がする。よくわからずコピペしていると古い文法を使ってしまったりするので注意が必要。

なので結局、公式のリファレンスを読んで自分で組んでいくしかない。 Compose file version 2 reference - Docker

ちなみに公式にはもうversion 3のリファレンスが出ているんだけど、まだチュートリアルとかはver. 2のままだったので、今回はおとなしくver. 2を使った。

Shared Volumeを使う

DBのデータやインストールしたライブラリなどは永続化したり、コンテナ間で共有する必要があるが、その際の一般的なパターンがShared Volume、またはData-only Container Patternと呼ばれるもののようだった。

Manage data in containers - Docker

具体的にはデータを保持するためのコンテナを作っておき、そこにVolumeをアタッチするようにする。どうせVolume用のコンテナ内ではなにもしないので、イメージは小さいbusyboxを利用する。今回だと以下のような感じになった。

  datastore:
    image: busybox
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - redis_data:/data
  postgres:
    image: postgres:alpine
    volumes_from:
      - datastore
  redis:
    image: redis:alpine
    volumes_from:
      - datastore

volumes:
  postgres_data:
    driver: local
  redis_data:
    driver: local

なんだけど、実はDocker v.1.9.0から docker volume がサポートされるようになったので、実はわざわざコンテナを別で用意してvolumes_fromで参照する必要ないのかも(あんまりわかってない)。以下のドキュメントをもうちょっとよく読もうと思う。

Volume configuration reference | Compose file version 2 reference - Docker

ネットワークとデータベース接続

docker-compose でコンテナを作成すると、デフォルトで一つのネットワーク上に配置され、コンテナ間の通信がしやすいようになっている。

Networking in Compose - Docker

今回だと、データベースの接続に rails コンテナから postgres コンテナのDBを参照する必要があり、database.yml は以下のようになった。

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  host: postgres
  port: 5432
  username: postgres
  password:

development:
  <<: *default
  database: app_development

test:
  <<: *default
  database: app_test

host: postgres になっているのが一見奇妙だけど、コンテナ内でnslookupしてみるとちゃんとIPが返ってくる。

mac:~$ docker-compose run rails sh

rails:/app # nslookup postgres
Name:      postgres
Address 1: 172.18.0.3 app_postgres_1.app_default

いらないコンテナを削除する

これはDockerfileいじっている時には頻繁にやらないといけないので、エイリアス割り当てた。filter=で死んだイメージやコンテナだけを削除するのがポイント。

alias docker-clean-images='docker rmi $(docker images -a --filter=dangling=true -q)'
alias docker-clean-containers='docker rm $(docker ps --filter=status=exited --filter=status=created -q)'

deeeetさんのブログでもいろいろ紹介されている。 Dockerを便利に使うためのaliasをつくった | SOTA

Dockerコンテナをデバッグする

Dockerコンテナのプロセスが意図せず終了してしまう時、docker-compose logsでログみてもよくわかんないことがある。

そういうときはシンプルに docker-compose run SERVICE_NAME sh を実行して中に入り、コマンドを実行してみたりして動作を確認するのが良い。

Docker自体の挙動を追いたいときには、docker events & を実行したターミナルでdockerのコマンドを叩けば、コンテナが作成される様子などが逐一ログに流れてくるのでおすすめ。

ログがたくさん流れてくると動いていることがわかって安心するのは僕だけだろうか。

Entrykitについて

Dockerfileでは基本的に、CMDやENTRYPOINTで一つのコマンドしか流せないので、entrypoint.shstart.sh なんかを用意してコマンドをまとめて流す、というようなことをする。

それをより簡単にするEntrykit というツールがあるのだけど、今回は使うのをやめた。最初、コンテナを分けるのがむしろめんどくさいような気がして、nodeとrailsのプロセスを一つのコンテナに入れようかと思って検討していたのだけど、結局分けたほうが綺麗に収まるし、Entrykit自体の使いみちともずれるような気がした。

Entrykitを使った記事が英語だとそんなにでてこないので、実際どれくらい使われているかはわからないけど、テンプレート化したConfigファイルを配置したりするのに使えるのは確かに便利そうなので、本番のDocker環境構築なんかではまた検討するかもしれない。

余談:開発環境をDocker化するのはいいことか

んで、ここまでやっておいてなんだけど、ちょっと開発環境をDocker化するのはやめておこうかなぁとも思い始めた。

RailsとWebpackのログが一緒にでてきてしまうし、整形もされないのですごく見にくい。rails cなどのコマンドもdocker-compose run経由で叩かなければならず、遅いしコマンド打つのがなんとなく面倒に感じる。

(まだDockerに慣れておらず不安定だからだとも思うけど、)ローカルの開発環境のつもりなのに、Docker上で動かない原因は結局ローカル(Mac)上で確認しなければいけない状況なんかが生まれてきて、結局Macの開発環境を手放すわけにもいかない。なぜ僕はローカル環境のデバッグをローカルでしているのか、という気分になる。

あと単純に、Dockerで開発環境を作ると、コンテナやイメージで簡単に数GBを消費するのが辛い。複数のプロジェクトに関わったりしていて、それらをすべてDocker化したと思うとノートPCのHD容量がそれだけでパンクしてしまいそうだな、と思う。

Dockerを使っているというと、なんとなくクールだな、とか、本番環境もBlue-Green Deploymentでイケてる感じなんだろうな、とか思うし、今回手を動かして得た知見にも満足しているけど、どうしようかなぁ、というのが今回の結論だった。

ほんとはサービスをECSでデプロイしてお手軽に運用するところまでやりたかったのだけど、ちょっと触ってから置いておくのも手かもしれない。

なにか快適に開発するための良い知見があれば知りたいな。

その他参考にしたサイト(日本語記事とか)

Docker入門

Docker入門

f:id:Kechol:20140703080750j:plain