RoadMovie

write down memos or something I found about tech things

【最終章】 リファクタリングを通してチームを強化していく

※ この記事は「Railsのリファクタリングに立ち向かうための教科書」シリーズの最終章になります(5/5) 【序章】 問題はどうして起こるのか ~ 方針とアーキテクチャについて 【第1章】 ModelとServiceを紐解く 【第2章】 ApplicationServiceの導入 【第3章】…

【第3章】 外部サービスとの連携 - マイクロサービスを見越した実装

※ この記事は「Railsのリファクタリングに立ち向かうための教科書」シリーズの第3章になります(4/5) 【序章】 問題はどうして起こるのか ~ 方針とアーキテクチャについて 【第1章】 ModelとServiceを紐解く 【第2章】 ApplicationServiceの導入 ★【第3章】…

Railsのリファクタリングに立ち向かうための教科書

今回は、Railsのリファクタリング手法を紹介しようと思います。これまで私自身数仕事として数多くのリファクタリングを手伝わせていただいてきましたが、基本的に方針としては毎回ほとんど同じことを実践しています。ですので一度、どう進めればよいのかとい…

【第2章】 ApplicationServiceの導入

※ この記事は「Railsのリファクタリングに立ち向かうための教科書」シリーズの第2章になります(3/5) 【序章】 問題はどうして起こるのか ~ 方針とアーキテクチャについて 【第1章】 ModelとServiceを紐解く ★【第2章】 ApplicationServiceの導入 【第3章】…

【第1章】 ModelとServiceを紐解く

※ この記事は「Railsのリファクタリングに立ち向かうための教科書」シリーズの第1章になります(2/5) 【序章】 問題はどうして起こるのか ~ 方針とアーキテクチャについて ★【第1章】 ModelとServiceを紐解く 【第2章】 ApplicationServiceの導入 【第3章】…

【序章】Railsのリファクタリングに立ち向かうための教科書

※ この記事は「Railsのリファクタリングに立ち向かうための教科書」シリーズの序章になります(1/5) ★【序章】 問題はどうして起こるのか ~ 方針とアーキテクチャについて 【第1章】 ModelとServiceを紐解く 【第2章】 ApplicationServiceの導入 【第3章】 …

aliasを使ったJS開発 & VSCodeでaliasエラーになる時の解決法

下記の環境での話をしますが、特に全てに当てはまらなくても解決できると思います VSCode webpack babel typescript React alias(エイリアス)について 簡単にaliasについて説明します。JSを書いてると、importして他のコンポーネントを使うということがよく…

【Jest, enzyme】 useSelectorやuseDispatchを使ったFunctionComponentをうまくテストする

ReactのテストでJestやenzymeを使うことは多いと思うのですが、React v16.8以降でFunctionComponentでの書き方を使う機会が増えたにもかかわらず、useSelectorやuseDispatchあたりをclassでなくFunctionComponentで使ったテストケースがあまり見つからず困っ…

StorybookをReact, Typescriptな環境に導入する

StorybookをReact, Typescript, Atomic Designな環境に導入する手順を紹介します。 Why Storybook? Frontendの開発を行っていると、再利用性を高めたいという意識が湧いてくると思うのですが、それをチーム間で共有したり、デザイナーさんと認識を合わせるの…

【実践: 詳しくわかる】TerraformでCircleCIを通してAWSにECS環境を自動構築する方法

まず最初に今回の記事で扱う内容を書かせていただきます。 1. docker-composeで開発環境を構築し 2. masterにpushした時のみCircleCIでECRにDockerイメージを構築し 3. 同時にCircleCIからterraformで本番環境のインフラをAWSにECSで整え 4. Deployを完了す…

Reactでドロップダウンメニューを実装する

Reactでドロップダウンメニューを作成する機会があったのですが、いくつかハマりポイントがあったので書いておきます。まずはじめに要件としては下記のことがあげられます。 ボタンを押すとdropdownメニューが開く ドロップダウンメニュー以外の場所を押すと…

Ectoチートシート(データ取得系)

EctoとはORマッパーで、DBとのインターフェースになってくれるものです。RailsでいうActiveRecordです。 Phoenix/ElixirはわかりやすいけどEctoで躓く、という方向けのチートシートになります。Rails使いでPhoenix書いてみてる方が多いと思うので、Rails(Ac…

Elixir on PhoenixでDBConnectionエラーでアプリが落ちる場合の解決策

環境: Elixir 1.9.1, Phoenix 1.4を使用 エラー内容は下記の通り。mixにライブラリを追加した後に起こる。急にDBConnectionと言われてDB周りのバグかと思い調べたがそうではなく、mixの書き方の問題だった。 web_1 | web_1 | Generated your_app app web_1 |…

Rails + webpacker on Dockerの環境をdocker-composeで構築する

dockerは知識として入れてはいましたが、実際にdocker上で開発をしたことはなかったので、勉強がてらやってみました。そんなにハマりどころもなく、便利なので今後はこれを基本にしていくと思います。 まず前提として、今回はdocker-composeで開発環境を作る…

bundle installでmysql2(5.7)のインストールに失敗する問題

mac OS MojaveでRails開発中に gem install mysql2 がなかなか成功しなかったのでメモ。 Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load ... ld: library not found for -lssl みたいなログが出てま…

Androidアプリを定期的に再起動してメモリをリセットする

C向けのサービスではあまりこういうことはしないと思いますが、B向けのサービスではこうした定期的にアプリを再起動するニーズがあるかもしれません。 アクティビティの再起動とアプリの再起動の二種類あるかと思うのですが、アクティビティ再起動はググれば…

AndroidアプリのonResumeとonPause

かなりラフな記事になるけど、Androidでアプリがforeground(起動中)の時とbackgroundにある時とでの挙動に手を加えたかったり、そうなるタイミングで何か処理を行いたいということがあると思う。 Lifecycleを調べると、onResume と onPuase がそれぞれforegr…

Kotlinで知ってると便利なTips

もともとはRubyをメインで書いていたのですが、最近Kotlinを使うようになって便利だと思ったTipsをいくつか紹介します。 data class Ref: https://kotlinlang.org/docs/reference/data-classes.html 何もしないけどデータだけ持たせたい時に使えるクラスです…

Kotlinで新たに使えるようになったCoroutineで非同期処理

Coroutines Overview - Kotlin Programming Language 2019/01/16現在、まだexperimentalなのですが、使い勝手が良いので私が手伝っている会社でも取り入れ始めている、というより全面的にcoroutineで書き直しています。 基本的に launch の使い方と async, a…

redashでデータドリブンなチームを構築

こんにちは。 あなたの会社では分析ツールやダッシュボードなどを使っていますか?もしまだ使ってない、あるいは現状のツールに満足していないのであれば、redashが代案になるかもしれません。redashはとてもシンプルで簡単ですし、分析に必要十分なツールだ…

ReactNativeでプッシュ通知を実装する方法

ReactNativeでのプッシュ通知の実装方法を紹介しています。AWS SNSを使って実装しており、いくつかサンプルコードも載せています。

ReactNative - "Could not get BatchedBridge, make sure your bundle is packaged properly”

ReactNativeでAndroidをリリースしようとした時に起こったエラーの対処法です。 Android Studioから Build > Generate Signed APK で app-release.apk を作ろうとしました。 この方法はローカル環境ではうまくいっているように見えるのですが、PlayStoreから…

React.js & redux-form のテストをmocha & chai で書く

こんにちは。この記事ではredux-formをReact.jsで使った際のテストについて紹介したいと思います。 話をシンプルにするために、簡単なcomponentとreducerのテストを見せます。 下記がテスト用に使っているライブラリになります。 mocha chai enzyme sinon ※…

Elixir/Phoenixで作ったアプリの簡単なデプロイ方法 by ansible

こんにちは! Ruby/Railsプログラマーの方がElixir/Phoenixにチャレンジしていると、「Capistranoみたいに簡単にデプロイする方法ないの?」と思うかもしれません。 私が調べたところ、完璧にCapistranoの代替になるようなライブラリはなさそうでした。そこ…

中規模Railsアプリのアーキテクチャ設計

Railsでアプリを作っていますか?設計に問題を抱えている、あるいは悩んでいませんか?もしそうであればこの記事が役に立つかもしれません。 アプリケーションが大きくなっていくに連れて、コードがカオスになってきたり、どこで何が起こっているのか追いに…

redux-formでwizard実装

最近onBoardingページにReact.jsをredux, redux-formと使い始めました。 今回はその際に私が躓いた3つのポイントを紹介します。 デフォルト値の設定方法 ラジオボタンを使ったラベル選択方法 ユーザーが次のフォームに移った時にどうやって自動的に値を設定…

【メール送信エラー】Net::SMTPAuthenticationError

メール送信周りでちょっとはまりかけたのでメモ。 ponyというgemを使ってSMTPでメール送信をしようとしてました。 サイトからユーザーが申し込みしてきたら、申込完了メールをユーザーに送信するイメージです。 ★環境 ・Ruby ・pony on sinatra ・Gmailで送…

Mechanizeでページ遷移しながらスクレイピング

ちょっとダルいポイントが有ったのでメモ程度に。 スクレイピング対象サイトとスクレイピングの流れは ページャで何ページか一覧ページがある 一覧ページのタイトルをクリックすると詳細ページが見れる 詳細ページの一部を使用 また他のタイトルをクリックし…

Supervisor経由でunicornを立ち上げている環境にCapistrano3で自動デプロイ

前回の続きです。前回はCapistrano3の導入について書きました。 【入門】Capistrano3で自動デプロイ ★★★ 私の環境ではsupervisor経由でunicornを監視しているのですが、supervisorをリスタートしてしまうとhot deploy出来ない問題がありました。 そちらに関…

【入門】Capistrano3で自動デプロイ

※この記事はcapistrano3についてです。capistrano2.x系には対応していません。 ちょこちょこ新規開発しているのですが、毎回リモートサーバーにsshで入って pullして手順見ながらbundleなんちゃらして・・・。 みたいなのが非常にめんどくさいので、capistra…