ブログ納めとしてマイクロサービスをやっていく上で参考にした(い)記事をざっくりまとめました。 現状、がっつりマイクロサービスをやっているわけではないけれど、考え方を取り入れたりはしているし、来年の今頃はどこかでがっつりやっていったりもするかも…
チーム開発を行う際、スクラムのような手法に準拠し、レトロスペクティブでKPTなどで振り返りを行うことが多いと思います。良かったこと、良くなかったことを振り返って、TRYするアクションを決め、次のスプリントに活かし、また評価するサイクルを回す感じ…
Auth0 の Silent Authentication (サイレント認証)と Refresh Token Rotation (リフレッシュトークンローテーション)を完全に理解したい気持ちが急に高まってきたので書きます。 全体の流れとして React SPA with Auth0 での認可フローについて Silent Authe…
手軽に PlantUML をいじれる環境が欲しかったけど、軽く調べた結果、Mac での環境構築が悩ましかった。 色々検討した結果、ひとまず Docker で環境構築する方法をとった。 候補 ローカルでbrew install graphviz, brew install plantumlする 変な依存ライブ…
最近はなにがし.fm みたいな番組がめっちゃ増えてきましたね。 普段、移動時間やジョギングする時とかに Podcast をよく聴いているけど、何をどういう目的で聴いているか自分で整理するためにもジャンル別に聴いている番組をまとめてみました。 Tech 系 Rebu…
最近、GraphQL を勉強するために「初めての GraphQL」という本を読んで、理解のために自分でも本の中で実装されているサンプルアプリを作ってみました。 初めてのGraphQL ―Webサービスを作って学ぶ新世代API作者:Eve Porcello,Alex BanksオライリージャパンA…
最近は GraphQL やっていきな感じです。ただスキーマ設計が色々と悩ましく、設計の参考にするためにGraphQL Schema Design @ Scale (Marc-André Giroux) を観たのでかなり雑にメモ。 ※ 英語のプレゼン動画をさくっと観ただけなので、正しく理解できていない…
最近、PostgreSQL を使用している Rails プロジェクトでCREATE INDEX CONCURRENTLYする機会があったのでメモ。 CREATE INDEX CONCURRENTLY とは 通常のインデックス作成処理では、処理が完了するまで対象テーブルへの書き込みはロックされる(読み取りはロッ…
bash や zsh にはプロセス置換 (Process Substitution)という機能があるのだが、あまり使うことがなく頻繁に忘れるのでメモ。 プロセス置換 (Process Substitution)とは コマンドの結果をファイルのように扱うことができる機能。以下のように書く。 <(list) …
今、自分の所属する会社では外国籍のエンジニアも働いていて、彼らとは普段英語でコミュニケーションを取っています。 具体的には Slack 上でのチャットや彼らが参加するミーティング、1on1 などを英語で行っていて、全く流暢ではないですが、現状問題なくコ…
最近、DB の存在しない Rails プロジェクト下で API を作る機会がありました。 外部から fetch してきたデータから PORO (Plain-Old Ruby Object)を作って、 active_model_serializersでひたすらシリアライズしまくるみたいな感じです。 特にテストまわりで…
たまたまこういうことをする必要があったのでメモです。 (例) すでに運用中の bar リポジトリの既存のコミットを initial commit として、新規に foo リポジトリを作成するケース $ cd /path/to/bar $ git remote add foo {foo's URL} # Add foo's remote re…
最近、Golang (+echo) で REST API サーバを開発する機会があったのですが、テストを書いたら API ドキュメントを自動生成するような仕組みを作るために試行錯誤したのでメモです。 方針 API ドキュメントの生成にはtest2docを利用 テストを実行すると API B…
最近、Golang で Enum をフィールドに持つ struct をいい感じに json エンコード / デコードしたい衝動に駆られた事があったので、その時のメモです。 普通に json.Marshal する 例えば、以下のような Userの struct を定義したとする。 type UserRole int c…
最近、Rails アプリでパンくずリストをいい感じに実装するために、breadcrumbs_on_railsという Gem を使用してみました。 すでにネット上に使ってみた的な記事はちらほら見受けられましたが、自分なりにどのように使ったかなどを書いておきたいと思います。 …
最近、Grape + Rails (v4.2.6)で REST な API を開発する機会があったのですが、今回はその開発の中で悩んだ、「Grape のエンドポイントとエンティティのテスト」について書きたいと思います。 前提として Grape ののエンティティは grape-entity、テストフ…
{ :foo => "bar", :hello => { :world => "Hello World", :bro => "What's up dude?", }, :a => { :b => { :c => "d" } } } みたいなネストした Hash があったとして、これを { :foo => "bar", :"hello.world" => "Hello World", :"hello.bro" => "What's up…
完全に出遅れた感満載だけど、最近 Golang の勉強を始めました。 ちょうど昔、node.js の勉強で画像をアップロードして表示するだけのアプリをつくったことがあったので、今回はそれの Golang 版をつくってみました。 成果物はこちら。 初期表示 とりあえず/…
Swift では protocol がサポートされていて、protocol extension もできるようになりましたが、抽象クラスは 2015 年 11 月現在サポートされていません。 僕は抽象クラスがほしいなーって思うときがたまにあって、例えばtypealiasを使用している protocol を…
ひさしぶりの投稿です。気づけば iOS の開発を始めて半年近く経ち、ようやく半人前になってきたかもしれません。 最近は流行りのリアクティブプログラミングに興味津々なので、今回はその勉強がてらRxSwiftを使って GitHub のおすすめユーザーを表示するアプ…
(2015/11/7 追記)Swift2.0 に対応しつつ、リネームやリファクタリングなど修正を加えたものをGitHubにあげております。この記事内で説明している通りに実装しても動作しないと思うので、もしよろしければ GitHub のコードも参考にしてみてください。 僕は普…
最近、仕事で Web スクレイピングの機能を実装する機会があって XPath を使う必要に駆られました。そこで Chrome で XPath が正しく機能しているかテストする便利な技があったことを知ったのでメモです。 $x を使用する Chrome のコンソールから、$xを使えば…
Ruby の Proc オブジェクトはKernel#proc(またはProc#new)で作るパターンとKernel#lambdaで作るパターンがありますが、それらは地味に結構挙動が違っていたりします。 そこで今回はこのKernel#procとKernel#lambda でつくった時の Proc オブジェクトの挙動…
今回は Ruby の case 文についてです。 Ruby の case 文はどのように値を比較するか Ruby の case 文では case 節に比較対象となる値を、when 節に case 節の値と比較する値を記述します。 んで、when 節の値をレシーバとして、===メソッドによって比較が行…
今回はパーフェクト Ruby で「Ruby のメソッド探索」について学んだのでそのメモです。 オブジェクトに対してメソッド呼び出しが行われる際、どのようにメソッドが呼び出されているのか、書いてみたいと思います。 自身のメソッドを呼び出した時 class BaseC…
Ruby のクラスには インスタンス変数 クラス変数 クラスインスタンス変数 があって何かとややこしい。。 特にクラス変数とクラスインスタンス変数の違いについてはいまいち理解しきれていなかったので、今回は頭の整理もかねてメモです。 それぞれの特徴につ…
最近、Rails プロジェクト内で使用しているfakerのバージョンを最新(v1.4.3)に上げたら、今まで通っていた spec が壊滅したので、その際のメモです。 状況把握 こちらの記事に記述されているものと全く同じ状況に陥ったと思われます。 プロジェクト内の loca…
今、僕の仕事環境では「エンジニアそれぞれが作業用ブランチを切って開発を進め、Github に pull-req を出してレビューもらって、それが通ったらマージされる」、といったよくありがちなフローで開発を進めています。 で、今までは自分が開発をしている最中…
gem のソースって今まで基本 Github から確認していたのですが、実はエディタから手軽に確認できる方法がありました。地味に知らなかったです。 こちらの記事を参考にさせていただきました。 エディタの設定 環境変数EDITORにあらかじめどのエディタを開くの…
Rails でユーザー登録、認証機能を実装する際、deviseを使用することはわりと一般的かと思います。 またユーザーの論理削除を実現するための gem としてはparanoiaが有名かと思います。(Rails3 時代によく使われていた acts_as_paranoid をよりシンプルにし…