破いて捨てたノート

Webやテクノロジーやそれ以外に関する思いつき

もう"UI/UX"と言わないで!弊社のエンジニアに知ってもらいたいUIとUXの基礎知識

UX

この記事は UX Tokyo Advent Calendar 2015 の18日目として投稿しています。 こんにちは、とあるベンチャーでエンジニアをしている yachibit です。 UXやHCDに興味を持ちはじめてからまだ日の浅い人間なので恐縮ですが、UX Tokyo Advent Calendar 2015 に投…

家カンバン with Trello

id:ninjinkun さんの 家カンバン - ninjinkun's diary という記事に影響を受けて、家カンバンを始めてみた。 個人的には、家でも外出先でもタスクを確認したいので、ホワイトボードではなく、Trello を使ってみた。Trello であれば、PC/スマホの両方で使用す…

日本語で 人間中心設計/HCD について雑に話せる Slack チームができたぞ!!!

HCD 界隈の方々がチャットで気軽に情報交換や議論できる場があるとよいのではと思ったので、Slack に hcd-jp というチームをつくりました。 どなたでも参加できるのでお気軽にどうぞ。 https://hcd-jp.herokuapp.com/ 追記: 2015/10/14 雑に話せるの"雑"とは…

Controller concerns のテストをRSpecで書く - Rails, Rspec Rails 3.*

Anonymous Controllerを使えばこんな感じで書けるっぽいのでメモ。 # app/controllers/concerns/foo.rb module Foo extend ActiveSupport::Concern # logic end # spec/controllers/concerns/foo_spec.rb require 'rails_helper' Rspec.describe Foo do cont…

表参道.rb #5 で人間中心設計について発表しました

表参道.rb #5 は原点に帰って、Sansan株式会社でのLT大会でした。 私は『エンジニアが人間中心設計をやってみた』というタイトルでLTをしてきました。 *.rb らしくない内容の発表なので少し申し訳ない気持ちですが、多様性は善ということでお許しください。 …

産業技術大学院大学で「人間中心デザイン」を学び始めました

産業技術大学院大学が開講している 履修証明プログラム「人間中心デザイン」 を履修することにした。 履修証明プログラム「人間中心デザイン」とは? 「人間中心設計(Human Centered Design)」の専門家を育成する文科省認定の社会人向けプログラムである。…

正直教えたくない、本当に美味しい表参道のランチ 14選

私が表参道にオフィスを構える弊社に転職してから約1年半の間に食べ歩いたランチの中から厳選した14店を紹介したいと思います。 下記に挙げたお店は金額が少々のお高めのお店が多いですが、表参道で美味しいランチを食べようと思ったら1,500円以上はかかると…

価値仮説とユーザーヒアリングによるユーザーファーストなものづくり

身の回りで沸き起こる開発に関する議論を、効率よく質の高いものにするために考えたことのメモです。 きっかけ C社やW社、I社の方の開発の進め方に関する話を聞く機会があり、感銘を受けた UIや機能の是非に関する議論は難しく、これまでの開発でうまく進め…

表参道.rb #1 を開催しました

主催者の一人として 表参道.rb #1 を開催しました。 50名近い規模のイベント主催は初めてですし、ましてや Rubyコミュニティ なんて畏れ多い。とにかく不安だらけでしたが、たくさんの方にお集まりいただいて、安堵しています。LTもおもしろい内容のものが多…

Qiita/Qiita:Team Meetup #12 での会話の雑なメモ

楽しかったです、Qiita/Qiita:Team Meetup。 Increments社の方からお話しを伺えて、とても勉強になりました。 以下は、飲みながら話したことの雑なメモです。 Reactのテストはどうしてるか みんな好きなの使えばいいじゃん? Mocha + power-assert + jsdom +…

Rails + React + ES6 のためのアセット環境構築

結論 Sprocketsの動作を維持しつつ、npmやgulpなどのモダンなパワーも取り入れた、いいとこどりな環境を構築してみた。 やりたいこと SEOのため、Reactでserver-side renderingをしたい JSコードをES6で記述したい 既存のCoffeeScriptのコードも共存させたい…

ES6を導入したいRailsエンジニアの覚書き

選定候補 CoffeeScript 現状使用している Railsとの相性がよい(デフォルトでサポートされている) ECMAScript 6(以下、ES6) 次期JavaScriptの標準仕様 ES6はいつ勧告されるの? 2015年6月予定 つまり、仕様はまだ固まっていない(が、ほぼほぼ固まってい…

Reactを導入したいRailsエンジニアの覚書き

各フレームワークの特徴(つらみ)を整理 only jQuery Viewが状態を持ってしまう拡張やテストがしづらい DOMを指定してViewの更新処理を書くのはつらい Backbone.js Viewの更新処理を手動で書かないといけないのはつらい ModelとView間のイベント管理が煩雑…

鮨物語

鮨には物語がある。 表参道の骨董通りにある江戸前寿司のお店「鮨 ます田」に訪問した。 序章 店主は「銀座すきやばし次郎」で9年間修行されているということで、前日に『二郎は鮨の夢を見る』で予習をした。 ますだフィッシュ アイナメ 鮃 縁側 赤貝 スルメ…

KPIを設定する際に参考にした情報まとめ

某WebサービスのKPIについて議論する機会があったので、その際に得た知識を簡単にまとめておきます。 KPIとは? KPIと似た用語にKGIという用語がある。両者の違いを理解しておくといろいろ捗る。 KPI: Key Performance Indicator(重要業績評価指標) 目標の…

Railsに初コントリビュート決めた

これまでRailsに何度かPull Requestを投げてはRejectされを繰り返していたが、この度、初めてcommitをmergeして頂けた。documentationの大したことないcommitだけど嬉しい。 Rails Contributors - #2125 yachibit - All time Rails Contributors - #2125 yac…

Rails の`datetime_select`でつくるセレクトボックスを「年」「月」「日」「時」「分」で区切る

日付に関するセレクトボックスを「年」「月」「日」のように日本語で区切りたいことってよくありますよね。 dateに関するセレクトボックスに関しては、 id:inouetakuya さんの「Rails の date_select でつくるセレクトボックスを「年」「月」「日」で区切る…

「Lean Analytics」原著買ったのに和訳版が発売されることになってツラいので、ここまで読んだことをまとめておく

はじめに 「Lean Analytics」に関しては、 yuku_t さんが 「全てのスタートアップ関係者が読むべき良書」という記事で大変わかりやくすまとめてくださいっています。この記事にどこを読めばいいかが書かれているので、それを参考に読み進めるとよいと思いま…

ドリップコーヒー遍歴

yaotti さんの「ドリップコーヒー環境 2015年1月」というエントリに感銘を受けたので、自分のドリップコーヒー環境についても書いてみた。 自宅で美味しいコーヒーが飲みたい ということで、Amazonで安くてそこそこ評価の良い下記の商品を購入した。 Melitta…

Rails で`find_by_id`に渡す引数はString でもいけるんだって

# 普通のやつ User.find_by_id 1 => #<User id: 1, name: "yachibit", ...> # Stringを引数に渡すと... User.find_by_id '1' => #<User id: 1, name: "yachibit", ...> # このへんも同じく User.find '1' => #<User id: 1, name: "yachibit", ...> SUGEEE!! つい最近知りました。 よくよく考えたらいつも使わせて頂いてたわけなんですが... パラメーターで渡ってくる値は</user></user></user>…

RubyでHTTPリクエストを投げて返ってくるJSONをParseするとかいうよくあるやつ with Net::HTTP, open-uri

タイトル長えw さて、HTTP リクエストするとJSON が返ってくるようなAPI でなんやかんや処理をすることが割りとよくあるのだが、すぐに忘れてしまうのでメモメモ。 https://api.example.com/smaple.json にHTTP GET リクエストを投げるとJSON が返ってくる場…

RubyのArrayとかHashのuniqueに関する挙動のメモ

RubyのArrayにはuniqってメソッドがあるじゃん? irb(main):001:0> [:foo, :bar, :baz, :foo] => [:foo, :bar, :baz, :foo] irb(main):002:0> [:foo, :bar, :baz, :foo].uniq => [:foo, :bar, :baz] この辺はあたりまえだが、 たまにお世話になる多重配列に…

.irbrcを使って、irb起動時によく使用するコードをメソッド化する

意外と知られていないようですが、irb コマンドは起動時に.irbrc というファイルを読み込みます(*1)。ここに様々な設定やメソッドを書くことができます。 例えば、自分はrails consoleでよく irb(main):001:0> User.find_by_user_name 'yachibit' というコー…

「達人プログラマー」を読み始めました

言わずとしれた古典的名著「達人プログラマー」を読んだ。(今更?というツッコミはご容赦頂きたい。) ページをめくるたびに次々とアンダーラインを引きたくなる箇所が出てるく。 気を抜くとアンダーラインで溢れ返ってしまう、そんな本だった。 本書は方法…

このコンピュータ書がすごい! Forkwell 版

元ネタは毎年、毎年年始にジュンク堂書店さんで開催されるこのイベント。 弊社の知の賢人達が 、若手社員(主に俺氏)の読むべきコンピュータ書を挙げてくださいました。 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック 達人プ…

弊社の開発の様子

弊社のPRの様子。 よい先輩の元で働けて本当に幸せである。#本心

リーン開発の現場

リーン開発の現場 カンバンによる大規模プロジェクトの運営作者: Henrik Kniberg,角谷信太郎,市谷聡啓,藤原大出版社/メーカー: オーム社発売日: 2013/10/26メディア: 単行本(ソフトカバー)この商品を含むブログ (7件) を見る

Railsでブラウザ上のエラー表示をdevelopmentとproductionで同じにする

Railsのconfigにはconsider_all_requests_localという設定項目があって、こいつをtrueにすると、すべてのエラーをブラウザに表示をするかことがでいる。逆に、falseに設定すると、ブラウザには詳細情報が表示されない。 デフォルトでは、 development環境はt…

調子のいいときこそ

調子のいいときこそ自分を崖の下に突き落とすんや 自分の中に毒を持て―あなたは“常識人間"を捨てられるか (青春文庫)作者: 岡本太郎出版社/メーカー: 青春出版社発売日: 1993/08/01メディア: 文庫購入: 58人 クリック: 968回この商品を含むブログ (245件) を…

Railsで1つのviewに複数のURLを与えるrouting

先日、少し特殊なルーティングを実装した。 viewとしては普通のnewフォームなのでURL的には/counselings/newとするのが普通なのだが、以下の理由から/counselingsというURLでもnewをrenderするようにしたいとの要望がきた。 メール等にも記載するURLなのでな…

pluckがmapより速いからと言って、いつでも使って良いわけではないそうです

Rails3.2から導入されたpluckメソッドのパフォーマンスが素晴らしい件 こちらの記事にも代表されるように、 User.map(&:id)と書くよりUser.pluck(:id)と書いたほうが方がパフォーマンスは速いと言われている。(実際速い ただ、APIをみるとpluckはArrayを返…

gitで指定期間のコミット回数や総追加行数などを取得する

Git

# コミット数 git log --since=2013-12-01 --until=2014-02-28 --author='yachibit' --oneline --no-merges | wc -l # 追加行数 git log --since=2013-12-01 --until=2014-02-28 --author='yachibit' --oneline --shortstat --no-merges | grep files | cut …

validationに`:if` optionを渡すと、viewの`requuired: true`が自動でつかなくなる?

Railsのmodelでpresence validationを書いて、 # model validates :username, presence: true そのattributeに対応するformの入力欄をこんな風に書くと # view - form_for @user = f.text_field :username だいたいこんなようなHTMLが生成される。 <input id="user_username" name="user[username]" required="required" size="30" type="text" /> validati…

甲子園

美味しそうな日本酒 甲子園 #日本酒

2014年2月に読んだ本

技術書 Crafting Rails 4 Applications: Expert Practices for Everyday Rails Development Crafting Rails 4 Applications: Expert Practices for Everyday Rails Development (The Facets of Ruby)作者: José Valim出版社/メーカー: Pragmatic Bookshelf発…

Ruby 仮引数の * と実引数の *

よく混乱してしまうので整理。 仮引数の * は可変長引数 def greet name, *messages messages.each do |message| puts "#{message}, #{name}." end end greet 'Ruby', 'Hello', 'こんにちは' # => "Hello, Ruby." "こんにちは, Ruby." # 単に引数を無視した…

列挙型の値を保存するときはintegerで保存しとけActiveRecord::Enum

列挙型とは、有限集合として持つ抽象データのことで例えばstatusなんかがそうです。 stasus: [:active, :archived] みたいなやつ。 例えば、Conversationクラスにstatusカラム(active, archived)を持っている場合を考えてみましょう。 主な保存方法として…

Rubyの`Enumerable#each_with_object`を使ってみた

attr_accessorで生やしたattributes達とそのvaluesをハッシュとして欲しいことがあり、最初はこんな感じに書いた。 hoge_attributes = {} %I(user_name first_name last_name email).each do |attr| hoge_attributes[attr] = @hoge.send(attr) end 次の日に…

【MySQL】MySQLはtrailing spaceを無視する【クソ仕様】

まずはこのコードを見てください。 User.where(user_name: 'yachibit ') User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`user_name` = 'yachibit ' => [#<User id: 1, first_name: "Bit", last_name: "Yachi", user_name: "yachibit", ... >] 予想として、'yachibit'さんは存在しますが、'yachibit 'さんはいないので、レコ</user>…

scp コマンド便利

Linuxのコマンドです。SSHを使ってリモート・ホスト間で安全にファイルのコピーができるらしいっす。 # ローカルのtrans_fileファイルをリモートのホームディレクトリへコピー $ scp trans_file user@remote.host.com:~/ # リモートのhoge/ディレクトリ以下…

Railsでsessionを空にしたり削除したり

# 空ハッシュにする session[:hoge] = {} # sessionが多重配列になっている場合、 session[:hoge][:fuga] # => nil # nilにする session[:hoge] = nil # sessionが多重ハッシュになっている場合、 session[:hoge][:fuga] # => NoMethodError: undefined meth…

Railsのmigrationでdefault valueをrollbackしたい

Railsでカラムにデフォルト値を設定するmigrationを書いた際、 class AddDefaultValueOfEmploymentTypeOnUser < ActiveRecord::Migration def up change_column :users, :employment_type, :integer, default: 1 end def down change_column :users, :employ…

RubyでArrayからHashを生成するいろいろ

Hash['hoge', 1, 'fuga', 2] # => {"hoge"=>1, "fuga"=>2} Hash['hoge', 1, 'fuga', 2 , 3] # ArgumentError: odd number of arguments for Hash array = ['hoge', 1, 'fuga', 2] Hash[array] # warning: wrong element type String at 0 (expected array) #…

left outer joinのコスト

Railsではjoinsメソッドを使ってSQLのJOINを表現できる。これは基本的にINNER JOINだが、こうするとLEFT OUTER JOINも書ける。 User.joins("LEFT JOIN bookmarks ON bookmarks.bookmarkable_type = 'Post' AND bookmarks.user_id = users.id") => SELECT "us…

HEADの代わりに@が使える、Git 1.8.5

Git

Git 1.8.5から、HEADのエイリアスとして@が使えます。 git reset @ ってな具合に。 タイプ数が3文字減って幸せです。 新しいことはいいことだ。(レガシーなバージョンのGitを使っている人は、さすがにもういませんよね Git v1.8.5 Release Notes What’s new…

2014年1月に読んだ本

2014年1月に読んだ本。 技術書 パーフェクトRuby パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/10メディア: 大型本この商品…

delayed_jobで非同期実行指定したメソッドをデバッグ時に即座に実行する

Rubyで処理を非同期実行したい場合に使うgemはいくつかありますが、自分はdelayed_job(以下、DJ)を使ったります。 DJではメソッドを常に非同期で実行したい場合、handle_asynchronouslyを使って次のように書きます。 class Device def deliver # long runn…

Webサービスが成長するために重要なこと

webサービスが成長するには、意味のあるデータをいかにたくさんデータベースに入れることができるかが重要である。 弊社プログラマのa氏が言った言葉らしく、非常に本質的だと感じた。 データベースにコンピュータリーダブルな形式でデータが入ってしまえば…

initial commit

Hello, my new bolg!