valid,invalid

関心を持てる事柄について

Engineering Manager Meetup をやります

詳細の確認および参加申し込みは以下のページからお願いします。早速定員になってしまったようなのですが増枠も検討中です。 connpass.com 動機 いちエンジニアリングマネージャとして、エンジニアリングマネージャ・エンジニアリングマネジメントに興味・関…

会社ブログでは固有の文脈・ユースケースにフォーカスした話を読みたい

いつもお世話になっている TechRacho の以下の記事を読んでいて気になったこと、思ったこと。 TechRacho(自社技術ブログ)に関連したあれこれ、2年毎日更新してみて感じたこと これだけ見てくれる人が増えたらちょっとは採用応募が増えるかなと期待している…

必要なときだけ Polyfill.io のCDN から polyfill を読み込むようにする

以下のような script tag を HTML の最初の script tag として埋め込む。 <script> ( function(doc){ if([].find&&window.fetch)return; var firstScript = doc.getElementsByTagName('script')[0]; var scriptToInsert = doc.createElement('script'); scriptToInse…

gem install することなく Slim, Haml, Pug を HTML に変換する

Rails の view を React で書き直したときに使った脱 Slim のやり方 各種 gem を install して手元でコマンド叩いてもできるけど面倒くさい場合に使える 結論 converter - How can I convert html.slim files to html or html.erb? - Stack Overflow この回…

「○○の経験したこと無いくせに」と経験者が語ることについて

「○○の経験したこと無いくせに」 「○○したことないからわからないんだよ」 という言説を見聞きしたり、この論旨で「論破してやったわ」みたいなの Twitter で見るたびげんなりしてしまう。 「恋愛したこと無いくせにラブストーリーとかwwww」っていうの…

⌘+shift+d で"開いているすべてのタブをブックマークとして新しいフォルダに保存する" on Google Chrome

登壇のために Google Chrome 上で開いているタブをすべて閉じて片付けたいが後で一発で戻したい。そんなときに ⌘+shift+d が使える support.google.com で見つけた。 単純に閉じて再起動すれば? => Google Slides で発表するのでブラウザを立ち上げたままに…

「Quipperが実践する、定量データに基づく意思決定と開発」という話を Rails Developer Meetup 2018 Day 3 extreme でしてきました

してきました。 techplay.jp スライド データ周りや意思決定の話は専門ではないのであまり主語を大きくして叩かれないようにわりと渋めのタイトルにしました。ちょっと局所的すぎたかもしれません。 トーク 20分のトークは初めてだったので勝手がわからず86…

monorepo 構成の Git repository の sub directory を Netlify にデプロイする

以下のように Git root directory ではなく sub directory にデプロイしたいアプリケーションが存在する場合を想定。 $ tree -L 2 . ├── .git ├── frontend │ ├── README.md │ ├── config │ ├── images.d.ts │ ├── node_modules │ ├── package.json │ ├── pu…

monorepo 構成の Git repository の sub directory を heroku にデプロイする

(追記) sub directory をデプロイしたり、いちレポジトリで multi applications のデプロイをサポートする buildpack があると元同僚の id:kamatama41 から教えてもらったので追記しました。ありがとうございます! 以下のように Git root directory ではな…

最近の構成 (backend: Rails + PostgreSQL, frontend: React + TypeScript) を docker-compose で立ち上げる boilerplate 作った

TL;DR 現プロジェクトと近似した構成で素振り出来るよう Rails + PostgreSQL による backend と React + TypeScript による frontend を docker-compose で立ち上げる boilerplate 作ったhttps://t.co/iCqMc2TWrD— 広島の粗大ゴミ (@ohbarye) July 7, 2018 g…

Roppongi.jsで『貢献できるOSSの見つけ方 -How to find "Good First Issues"-』についてLTをしてきました

第4回 Roppongi.js に参加し、『貢献できるOSSの見つけ方 -How to find "Good First Issues"-』というタイトルでLTをしました。 リンク付きの原稿はこちら https://ohbarye.github.io/slides/2018/roppongi.js-4/ 紹介したスクリプト github.com Good first …

Cybozu Meetup で聞いた各社の技術ブログ運用の話と、Quipper のブログ再開について

Cybozu Meetup で聞いた採用文脈でのブログ運用の話と、Quipper のブログ再開の話です。*1 Quipper のブログ再開 所属する Quipper でも最近プロダクトチームのブログを再開しました。 quipper.hatenablog.com 自分も早速記事を書き、本日公開されました。 q…

Roppongi.jsで『エンジニアも気にしたい色のアクセシビリティ』についてLTをしてきました

第3回 Roppongi.js に参加し、『エンジニアも気にしたい色のアクセシビリティ』というタイトルでLTをしました。 スライドのタイトルを575にしたかったものの「エンジニア アクセシビリティ 気にしよう」のような駄作しか生まれなかったために断念しました。 …

Rails のフロントエンドのレベル上げ

第15回 Meguro.rb に参加し、『フロントエンドのレベル上げ 〜Rails エンジニアが Webpacker を使う場合〜』というタイトルでLTをしました。 お気付きの通りスライドと本記事のタイトルが違いますが、スライドのタイトルを575にし忘れるという痛恨のミスがあ…

Generative Art を始めて7日間、作品を毎日公開した記録

ゴールデンウィーク(以下、GW)の途中で以下の記事を読んで Generative Art (ジェネレーティブアート - Wikipedia)*1 なるものを知り、試しに触ってみたら面白かった。 ジェネラティブアートを始めよう|なめらかサンショウウオ|note Generative Art with …

GitHub GraphQL API v4 を JavaScript から利用する

TL;DR 開発している Slack bot で発生する N+1 問題を解消するために GitHub GraphQL API v4 を利用した クライアントサイド(今回は JavaScript)側から使ってみただけだが、かなり開発体験が良かった 背景: review-waiting-list-bot について review-waiti…

babel-eslint を使って非標準仕様でも lint できるようにする

Parsing error on ESLint review-waiting-list-bot の実装中に以下のようなオブジェクトの分割代入するコードを書いたら eslint で parse error が起きるようになってしまった。 const { authors, ...conditions } = { authors: [], owner: '', repo: '' } $…

技術的負債を抱えながら突っ走る -日々15分の改善活動-

開発しているシステムが大規模かつ老朽化しかけていることもあり、最近は負債の返却を念頭に置いて普段の開発をしている。 前提として、個人的には負債を返す頻度は多いほど良い*1と考えている。 この立場に立つときに生まれる問い、「では、日々の開発のス…

package.json の dependencies を JavaScript のコード内で参照する

package.json に書かれた、依存しているライブラリの名前 (dependencies) を JavaScript のコード内で参照するやり方。 import pkg from './package.json'; const dependencies = Object.keys(pkg.dependencies) const devDependencies = Object.keys(pkg.de…

brew cleanup でディスクの空き容量を増やす

brew は古くなった formula を自動的に消してくれないので、使い続けるほどにインストールしたパッケージが積もってディスクを圧迫する。 FAQ — Homebrew Documentation に書いてある brew cleanup を試したら 4GB ほどの空き領域を得られた。 How to use br…

スプレッド構文と Object.assign の違い

JavaScript の Object の spread operator (スプレッド構文) と Object.assign の違いを調べてわかった気になるが何度も忘れるので整理 結論 実質ほぼ同じことが実現できるが互換性の問題があるので Babel や TypeScript でトランスパイルするなら spread op…

React で SVG を描画するための use タグでは xlinkHref を使う

React で use tag 使うときの躓き 結論 sprite - SVG use tag and ReactJS - Stack Overflow にある通り xlinkHref を使うとよい。 <svg> <use xlinkHref="#my-logo" /> </svg> 古いバージョンでは dangerouslySetInnerHTML を使うしか回避策が無かったようだが、今ではこの方法は避けたほうが良い。…

JavaScript が動作する Capybara の feature spec でブラウザのコンソールを確認する

結論 page.driver.browser.manage.logs.get(:browser) 調べた経緯 フォームの text input に対する fill が働かないのでどうしたかと思い、Selenium で操作中のブラウザをのぞいてみると React の component が一切 render されていなかった。 どこかで Java…

休日の成果を手放しに称賛しない

土日祝日などの勤務時間外にがんばって出した成果を「やっていき」「圧倒的当事者意識」などと手放しに称賛しない方が良いと思っている。 「いやー土日にがんばるなんてスゴイっすね〜〜〜」と褒められて気分良くなったりするんだけど往々にしてそもそも実現…

PhantomJS + Poltergeist を Selenium + Headless Chrome で置き換える (2) Teaspoon による JavaScript test 編

PhantomJS + Poltergeist を Selenium + Headless Chrome で置き換える (1) Rails + Capybara による feature spec 編 - valid,invalid の続き。 teaspoon.env の変更内容について Capybara + Selenium + headless Chrome の設定例はググると結構出てくるも…

PhantomJS + Poltergeist を Selenium + Headless Chrome で置き換える (1) Rails + Capybara による feature spec 編

レガシーに半身浴しているような、ふだんなかなか触らないけれど現役のレポジトリに潜んでいた亡霊を退治!!! Poltergeist + PhantomJS を消し去り、 Selenium + Headless Chromium に置き換えた。 このレポジトリは Rails による API バックエンドと SPA フ…

Chrome Music Lab の Song Maker で遊ぶ

Chrome Music Lab 触るだけでめちゃ面白いし、成果物をかんたんにシェアできる仕組みも web って感じで最高 ゲーム音楽っぽいの作ってみた 森 https://goo.gl/EE7HFH 村 https://goo.gl/R4NHHL 洞窟 https://goo.gl/CpWJNk

Bootstrap3 要素の順番をレスポンシブに入れ替える

Bootstrap3 のグリッドシステムでは pull / push という要素を押し込む/引っ張るためのクラスが使える。これを使うことでレスポンシブに要素の順番を入れ替えることができる。 押し込む/引っ張ると言ってもわかりづらいので実例を見たい。 要素を入れ替える…

TreasureData (Presto) で複数行をまとめて1行に集約

Oracle の LISTAGG, MySQL の GROUP_CONCAT みたいなことを TreasureData (Presto) でやりたい。 答え array_join と array_agg を組み合わせることで実現できる。 6.15. Array Functions and Operators — Presto 0.195 Documentation 例 employee : departm…

YAMLのAnchorとAliasを使ってconfigをDRYに書く

あらすじ ふだん無意識に読み飛ばしているが使おうと思ったときに出てこなかった YAML の anchor と alias を使うと色々 DRY に書ける DRYに書いた Anchor/Alias YAML では &name (Anchor) で名前をつけて *name (Alias) で参照することができる*1。 Example…