blog

紫陽花

プロダクトの改善と意思決定について

プロダクト改善について 意思決定 長期で勝つためには数字に基づいた意思決定が絶対 事業会社において組織の強さとは何か? 強さは回せる仮説の量と質で決まる。 仮説検証のサイクルが早く、精度の高い仮説の改善を積み重ねることができる組織が強い 最善の…

Rubyで小さなツールを作る時のtips

メインファイルの作成 main.rbを用意し処理を1ファイルにまとめます。 実行する同一処理の増加などによってはオブジェクト指向の考え方に則って構造化していきます。 走り出しから構造化を意識してコードを書くのではなく、とりあえず処理を実行できるところ…

SEO 学習 memo

SEO memo SEO 「Search Engine Optimization」 検索エンジン最適化 検索結果でWebサイトがより多く露出されるために行う一連の取り組みのことを指す Googleが掲げる10の事実 ユーザーに焦点を絞れば、他のものはみな後からついてくる。 1つのことをとことん…

インフラ 学習 memo

インフラ で学んだことを雑にmemoしていく サーバー サーバーとは、「Linux」や「Windows Server」など、サーバー用のOSインストールしたコンピュータ 「サーバーにどのようなミドルウェアをインストールするか」によってサーバーの用途が変わる。 Webサーバ…

unicorn-worker-killerを導入

Railsのプロダクトでサーバーのメモリが足りなくなる問題が頻発しました。 構成はnginx + unicorn unicornのワーカープロセスは、起動後ユーザーからのリクエストを処理し、再起動されることがありません。 長期間の運用を続けるとメモリが徐々に食いつぶさ…

AmazonCloudFrontでRailsのAssets周りにある静的ファイルをCDN配信する

AmazonCloudFrontでRailsのAssets周りにある静的ファイルをCDN配信する RailsでアプリのassetsをCloudFront経由で配信した時の話 問題と解決 Railsのアクションキャッシュ導入時、Webサーバ内からassetsの配信を行っていた。 その場合、Deploy時にassets pre…

Rails Routing Constraints

Constraintsとは Railsのroutingに存在する機能 routingに制限を設けることができる デフォルトで定義されている カスタムで制約を作成することも可能 セグメントの制限 get "books/:id" => "photos#show", constraints: { id: /[A-Z]\d{5} } 上記はconstrai…

社会人1年目

無事3月に大学を卒業し、今日から社会人になりました。 都内のWeb系の企業でRailsアプリの企画と開発をやっていきます。 まだまだひよっこエンジニアなので日々精進していきたいです。 今年の目標は、去年よりもブログ記事を多く書くことなので、日々の開発…

Rails includes joins eager_load preload merge

INNER JOIN (内部結合) 結合する両方のテーブルどちらにも同じキーが存在するレコードのみを残し、それ以外は切り捨て。 OUTER JOIN (外部結合) 結合する両方のテーブルどちらにしか存在しないキーがあっても切り捨てずに取得する。 どちらのテーブルのレコ…

Rails ActionCacheを導入する

Webアプリケーションのパフォーマンス改善として、RailsのActionCacheを導入しました。 Railsのキャッシュに関する概要はRailsGuidesが一番わかりやすかったです。 Rails のキャッシュ: 概要 「キャッシュ(caching)」とは、リクエスト・レスポンスのサイク…

Rails CarrierWave アップロード画像を良い感じに圧縮するGem作った

Rails CarrierWave アップロード画像を良い感じに圧縮するGem作った Railsで画像アップロードを行うGemにCarrierWaveがあります。 そのCarrierWaveのextension的位置付けの圧縮機能を簡単に実装するGemを作りました。 carrierwave-optimize_image Ruby Gems …

オブジェクト指向のこころ 読んだ まとめ

オブジェクト指向のこころを読み終えました オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章出版社/メーカー: 丸善出版発売日: 2014/03/11メディア: 単行本(ソフトカバー)この商品を含…

Reactでテストを行う まとめ その2

実際にテストを書いていきたい 前記事で紹介したツール。 React enzyme Mocha sinon power-assert chai jsdom アサーションライブラリは好みで選ぶ。今回はpower-assertを使ってみる。 前提 今回はReactのコンポーネントに対してのテストを行います。 かつ、…

Reactでテストを行う まとめ その1

Reactでテストを行う まとめ Reactのテスト環境を構築する際に色々と調べた結果。 もうツールとか色々ありすぎてわけがわからん。 となったので。 もし自分と同じ境遇にいる人がいたら少しでも手助けになれば良いなと思い、自分が調べたことをまとめておく。…

Rails Validationについて

データ管理はしっかりやりたい DBにデータが保存される時に、そのデータが正しいかどうかを検証する仕組みをバリデーションという。 バリデーションのトリガー バリデーションが走るメソッド群 create create! save save! update update! 上記のメソッドはオ…

Rails, Carrierwave, MiniMagick, Piet, 画像アップロード, 画像圧縮

Railsで画像をアップロードし、かつ画像圧縮も行いたい時の実装をメモで残す。 環境 Macbook OSX 10.11.6 Rails 5.0.0 Ruby 2.3 Carrierwave Piet MiniMagick Gem 実装に必要なGemをインストール gem "carrierwave" gem "piet" gem "mini_magick" bundle ins…

リファクタリング:Rubyエディション 読んだ

「リファクタリング:Rubyエディション」 読みました。 リファクタリング:Rubyエディション作者: Jay Fields,Shane Harvie,Martin Fowler,Kent Beck,長尾高弘出版社/メーカー: アスキー・メディアワークス発売日: 2010/02/27メディア: 大型本購入: 9人 クリッ…

あけましておめでとうございます 2017

2017年もよろしくお願いします。 4月からはついに社会人としてスタートします! イケてるRubyエンジニアになれるように頑張ります!

Rails ActiveRecordで値が変更する前後の値を取得する

ActiveRecordで値が変更する前後の値を取得することがあったのでメモ Rails 2.1あたりからActiveRecordの変更前後の値を取得する機能が備わっている。 method 意味 changed? 変更されているかどうか changed 変更されているattribute名の配列 changeds 変更…

Singletonパターン Ruby

シングルトンパターンとは 作成したクラスのインスタンスが唯一であることが保証される 唯一であるがゆえに、生成した1つだけのインスタンスにアクセスすることができる。 実装 Rubyにはsingletonと呼ばれるモジュールが定義されているためこれをrequireし、…

acts_as_listとjQueryで並べ替えを実装する

jQueryのsortableを用いて並べ替えを実装する Rails acts_as_list モデルの並び順を簡単に操作できるようにするGem 昔のRails1系あたりでは標準で搭載されていたらしいが、 途中でGemとして切り離されて現在は独立したGemとして存在する。 Rails 1.x の時代…

Compositeパターン Ruby

Compositeパターン コンポジットパターンとは あるものが同じような下位のもので作られているという考え方 大きなオブジェクトが小さな子オブジェクトから構成されていて、その子オブジェクトもさらに小さな孫オブジェクトでできていたりする 階層構造やツリ…

開発での小ネタ その2

開発での小ネタ その2 普段の開発で得た知見を書き留めておく YouTubeへのリンクでクエリを付加するロジック DBにURLが保存してありすでに存在すればそのまま。タグが付いていなければ付加する こちらを参考にしました。 def youtube_url uri = URI.parse("h…

Observerパターン Ruby

Observerパターン オブザーバーパターンとは Observerとは「観測者」 あるオブジェクトの状態が変化した際に、そのオブジェクト自信が「観測者」に「通知」をする仕組み。 オブザーバーは3つのオブジェクトで構成される。 サブジェクト(subject):変化する側…

Strategyパターン Ruby

Strategyパターン ストラテジーパターンとは 抽象的な処理と具象的な処理を分離することで、 変化に強い構造を実現する。 委譲を用いてアルゴリズムを変更可能にする。 目的の部分としてはテンプレートメソッドパターンと似ているが、 問題に対する解決のア…

TemplateMethod パターン Ruby

TemplateMethodパターン テンプレートメソッドパターンとは 抽象的な処理と具体的な処理を分離することで、 変化に強い構造を実現する。 2つのオブジェクトによって構成される。 骨格としての「抽象的なベースクラス」 実際の処理を行う「サブクラス」 用い…

Rubyを用いてデザインパターンを学ぶ

オブジェクト指向には設計原則とデザインパターンが存在する。 デザインパターンとは Gang Of Four(GoF)が定義したもの Javaで書かれた本がある。 「オブジェクト指向における再利用のためのデザインパターン」 1999/10 出版 プログラミングにおいて繰り返し…

オブジェクト指向設計 実践ガイド 読んだ

「オブジェクト指向設計 実践ガイド 」を一通り読み終えました。 オブジェクト指向設計実践ガイド ?Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz出版社/メーカー: 技術評論社発売日: 2016/09/02メディア: Kindle版この商品を…

MySQL5.7 JSON型の使い方メモ

MySQL5.7から実装されたJSON型 使い方メモJSON型のテーブルを作成する CREATE TABLE `blocks` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(120) NOT NULL, `content` varchar(200) NOT NULL, `meta` json DEFAULT NULL, PRIMARY…

ReactのVirtualDOM componentDidMount

React.jsを使っていてVirtualDOMに対してライブラリを適用させたい場面がありましたVirtualDOMなのでライブラリを適用させるタイミングに肝心のDOMがまだレンダリングされていないという状況に遭遇。 Reactの動きは崩さず、VirtualDOM群がレンダリングを終え…