2017年3月30日

このWeb日記にはsitemapを出力する機能が一切なかったので、 kjvarga/sitemap_generator を使ってsitemapを作るようにしていた。

URLを組み立てるために、DSLの中でhelperをincludeしたかったんだけどうまくいかなくて悩ましい。Rails力の低まりを感じる…

Reactive Programming with RxJSを読み始めた

pragprogの積読がたまるいっぽうなので、少しずつ読んでいくという気持ちを高めて取り組み始めた。帰りの電車で「What Is RxJS?」あたりまで。

Callback、Promise、Event Emitterのそれぞれの課題と、Reactive Programmingはどういうアプローチなのかが整理されていて導入としてはとてもよかった。

Reactive Programming with RxJS: Untangle Your Asynchronous JavaScript Code by Sergi Mansilla | The Pragmatic Bookshelf

息子のエレクトーンの発表会

で一回休み。

聞いていると、小学校低学年まではレベルに合った曲やパートで楽しく、小学校高学年までが背伸びしたい感じ、中学校まで続けてるとさすがにレベルが上って安定してる、という印象。

まだまだ続けたいそうなので、来年度も頑張ってほしいところ。

2017年3月27日

昨日のWeb日記で、ConoHaの母艦作りなおすのだるいという話を書いたら、同僚が VPS(ConoHa)を docker-machine で操作する - kumak1’s blog というのを書いてくれた。便利そう。

Web日記のDocker化とhttps化

このWeb日記は kenchan/tdnm: tdnm is simple weblog tool という自作のRailsアプリで、さすがにそろそろhttps化しないと恥ずかしいのでついでにDocker化もしてみた。

Docker化する

RailsアプリのDocker化については、jokerさんのQiita が参考になると思う。

最初は開発環境もDockerにしようかと思っていたのだけど、Gemfile にpath指定したいときに困る&Dockerの旨味がなくなると感じたので、開発はローカルでやることにした。(2017年をキャッチアップする 三種の神器 / ghq_gem-src_and_bundler // Speaker Deck)

本番環境のイメージについては、静的ファイルの扱いを一旦おいておいて、bundle installrails assets:precompileをしたイメージを作ることにした。

ベースのイメージは ruby:2.4-alpine にして、必要な依存関係をとかをバシバシいれていく。

  • nativeビルドで必要なものは事前に入れておく
  • bundle install --deployment オプション便利
  • bundle installとgccやmake等のインストールをワンラインでやるとイメージは小さくなるが、nativeビルドに失敗した時にやり直しに時間かかる

というあたりが発見だろうか。

現時点で最終的なイメージが130MBくらい。

kenchan/tdnm - Docker Hub

https-portalでhttps化する

https化は docker で全自動 Let's encrypt - Qiita がめちゃくちゃ便利だった。

特に何も考えなくてもローカルでのオレオレ証明書での検証と、本番でのLet's encryptでの運用ができる。

一回ハマったのは、FORCE_RENEWオプションをつけたまま本番で何回かビルドしなおしたせいでLet's encrypt側の制限で証明書の取得が失敗するようになってしまったところ。たまたま過去のコンテナを雑に消したあとだったのでめっちゃ困った…結局、Railsを80番で直接出すことで1週間ほどをしのいだ。

docker-composeとデプロイ

ここはめっちゃ雑にやっている。dockerだけをインストールしたVMをConoHaに立てていて、その中に本番用のdocker-compose.ymlがある。

デプロイは、瞬断しても困らないのでイメージをpullしてrestartという感じ。

Docker Cloud使ってみたかったんだけど、母艦をArch Linuxで立ててしまったのでサポート外だと言われて使えなかった…Ubuntuで作り直そうかな…

バックアップとか

まだ特に何もやってないので、今壊れると何日か分のWeb日記消失することになる。これから考える。

まとめ

先月から少しずつDocker化、Ruby2.4化、https化を進めてみた。モダンな感じには程遠いが、実際自分で試してみると辛いポイントや工夫のしどころがわかって勉強になった。

2017年3月25日

昼前くらいに起きてお昼を食べて、息子が3時から公園で友達と約束しているからというので引率。

ポケモン交換をしたいとのことだったが、時間になっても友達はこなかったので別の子と1時間くらい遊んでおしまい。

公園行くだけだったら勝手に行かせてるんだけど、DS持っていくとなるとまだ心配なので一応ついていっている。他の家はこのあたりどうしてるのかなぁ。友達の家に持っていくなら全然気にしないけど、外だとちょっと心配。

2017年3月24日

星さんと1on1っぽいもの

星さん(@glover) と久しぶりにいろいろ話して、ECに来てから感じていた課題や、やらないことを決めようということについて、たぶん1時間くらい話していた。

見えるものが多くなると気が散ってしまうことが増えたり、自分のほうがうまくやれると思いこんで手を出してしまうことが多くなりがちなので、定期的にやってることや、続けるべきかどうかというのを見直さないといけない。

ショップオーナーさんとお話

たくさん面白いお話が聞けてよかった。また、正攻法では難しいと感じていた機能やアプローチについてヒントを見つけられたので収穫がとっても多かった。

カラーミーショップのお客様は「インターネットで何かを売っている」という以上の共通点はないので、個別のカスタマイズというのはなかなか難しい。ただ、その課題と解決方法を抽象化して機能として提供することで、より多くの価値が生み出せるというのが、こういうサービスに関わっている醍醐味とも言えるだろう。

汎用的な機能と個別のカスタマイズ、これを両立できるようにアーキテクチャと機能を練っていく。やっていくしかない!

送別会

春は出会いと別れの季節。今後のご活躍をお祈り申し上げます!

庄やの二階の治安が壊滅していたし、終電ダッシュして辛かった…

WordPressの初期パスワード生成のコード

コードは https://github.com/WordPress/WordPress/blob/96b2923e625606aa174f3a2dc845e5483571dccd/wp-includes/pluggable.php#L2158のあたり。

なんてことはないシンプルな実装。random_passwordフィルターはコアでは登録されていないようなので、このfilterを加えるとパスワードの生成ロジックをいろいろいじれるっぽい。

ランダムなパスワードを雑に生成して、それと強度と一緒にユーザに提示するというのは確かによいロジックのように思った。ついついちゃんと文字種が入っているかとかチェックしたくなってしまうんだけど、強度を見せておけばバリデーション自体はゆるくしておいてもいいのかもな、と。

2017年3月21日

Nougat 7.1.2

5Xに降ってきた。最近すこぶる調子が悪いので安定してくれるといいな。周りでは文鎮化してる人も増えてきたので毎日ドキドキしてる。

yatteiki.fm 21 & dex.fm 20

itopoidさんが盛り上がっている様子がよかった。中村氏の生活レベルの高さがやばい。京都行きたい。

メルカリのA/Bテストフレームワークの話( mercari/siberi-android: A/B testing library for Android )と、iPhoneは(?)振るとデバッグモードに入るというのが面白かった。モバイルアプリ全然わからんのでまずいなーと毎回聞きながら思う。

大江戸Ruby会議06

大江戸Ruby会議06 という素晴らしい会に参加してきたので感想等。

Docker時代の分散RSpec環境の作り方

Docker時代の分散RSpec環境の作り方 // Speaker Deck

起床に微妙に失敗したので途中から。

jokerさんの新作の紹介。テストの分散実行は、以下の3点がポイントだと考えている。

  • アプリケーション(とテスト)の実行環境のポータビリティ
  • テストを分散させるルール
  • テスト結果の集約

それらの課題について、まずはDockerを前提とすることでポータビリティを確保。その上で、ECS・スポットインスタンス・S3をうまく利用することによって、分散ルールを単純にした上で妥当な金額の金で殴るという発想が面白かった。

My Open Source Journey

My Open Source Journey // Speaker Deck

3月から恵比寿に住むC社のjuanitoさん。

自身がどのようにOSS開発とか関わってきたのかを踏まえて、4つのフェーズ(?)においてどのように振る舞うとよいか・何を気をつけるべきかというのがとても参考になった。

また仕事とOSSについて、オープンにできるところを見つけて積極的にやっていくことは価値があり、今の自分にも求められているところだなと強く感じたのでやっていこう。

Text Editing in Ruby

shugo/oedo06: Slides for oedo06

(宇宙の均衡のために)Rubyでエディタを作っていて、プレゼンも自作エディタのプラグインという圧倒的な実装力を目の当たりに。

自分がほしいと思ったものをすぐに手を動かして作り、その過程でRubyの知らなかった機能を見つけたり、処理系への改善提案までやれるという、圧倒的で理想的な開発だなと強く感じた。

Ruby考古学II 1993~1997

基調講演のsorahさんが産まれるまでのRubyの歴史を掘り起こすということだったが、初期のRubyの文法は今のものはかなり違っていたというのがとても興味深かった。

今の文法になった時期や、コミッタ陣がMLに現れた時期など、こういう機会でないと知ることができない歴史ばかりで大満足。

また、yuguiさんの以下のツイートはとても考えさせられた。

多相型、推論、Ruby

多相型、推論、Ruby // Speaker Deck

Rubyに型を入れるために「何を犠牲にするのか」というのを、理想の型システムから考えて落としところを見つけていく過程がとてもおもしろかった。

とても丁寧に説明してくださっていたので、自分でも型がちょっとわかった気になってしまった。

その中でも、「anyを導入した上で型を絶対に書かないということは、anyの広がりをとめることができない」という話は、それこそ言われればその通りなんだけどなるほど~と口に出しそうになってしまった。

esaとRubyistと私

esaとRubyistとわたし // Speaker Deck

pplog、いつもお世話になっています!

デザイナーとしてというよりは、PdMとしてとても大事なことがたくさん詰まっているように感じて、資料公開されたら社の人たちに配って歩きたい。

Rationalを(もうちょっと)最適化してみた

こういった改善が日々のRubyの速度改善を支えてると思うと「本当にありがとうございます」という気持ちが溢れてくる。

Rationalは日常的には使わない側の人なので、直接の恩恵は受けられないとのことだったが、改善のプロセスを含めて勉強になった。

フルタイムコミッター対戦

超難問早押しクイズ大会。難しすぎるけど、コミッタ陣が唸る姿を眺めて楽しかったw

このために作ったシステムも面白そうだ。asakusarb/hayaoshi: 大江戸Ruby会議06の『フルタイムコミッター大戦』で使用した早押しクイズアプリ

高濃度雑談

thats-done-2017-03-20-oedork06-ujihisa - Google スライド

タイトルと導入の通りかなりのカオス。Cooking for Geeks と 発酵の技法 はやっぱり読まねばなと思った。

会場に thincaさん がいたそうなので、いつも一方的にお世話になっているとご挨拶したかった…次の機会に。

Ruby 2.4 Internals

笹田さんのドヤリングタイム。

Cは全くかけないといってもいいので理解が追いつかないところがおおいけど、いつか少しはわかるようになりたいな。

如何にして若き天才コミッタは生まれるのか

内輪のノリの中にしっかりとしたメッセージがあって、内容だけじゃなくてそのスタイルにもとても感動した。

育成においては、「密度を上げて時間でなぐる」というのは本当にそのとおりだと強く感じたので、身近なところからはじめていこうと思った。

あと、マジで優秀な若者たちは本当にやばいという危機感が強く残った…

Keynote

Keynote (Oedo RubyKaigi 06) // Speaker Deck

sorah氏の自慢話。rosylilly氏の話と合わせて聞くことで、ただの自慢ではなくて、正しく半生のふりかえりになったように思った。

インターネットを始める話、すごすぎて振り切られたけど応援していますw

まとめ

生活発表会という大江戸Ruby会議のコンセプト(?)はとても最高で、いつも最高の発表が聞けてありがとうございます。

そう。生活の中でこれだけのことをやっている人たちがいるってのをたまに忘れてしまうことがあるので、自分も生活発表できるような生活をしていかないとなと参加する度に思う。

去年くらいからいろいろやって軸がなくなってきたり、なんか文章やコードを継続的に書くこともできていないので、このあたりで一回リセットしてやりなおしていくぞ!

毎回ですが、こんな素晴らしい会をひらいてくれているAsakusa.rbのみなさんありがとうございました!

2017年3月18日

黒いカプ・コケコ

ゲームで! カードゲームで! カプ・コケコ キャンペーン開催! | ポケットモンスターオフィシャルサイト

息子と一緒にセブンイレブンにいって受け取ってきた。セブンスポット限定だと勘違いしていて、買い物の帰りというとくに買うものもない状態で入店してしばらく居座ってしまった。

掃除と出品

開かずの間とは言わないけど、それなりに雑多なものを投げ込んでいる収納を整理して、いくつかメルカリに出したりしていた。

はじめて自分で買ったPC(Dynabook SSの最初の方のやつ)とか、Qiの充電器とかいろいろ。

無接点充電また盛り上がってこないかなぁ。