経営とソフトウェアエンジニアリングの接続

はじめに 2020年の1月から執行役員CTOに就任し、そこから数年間「CTOの役割は何か」を自問自答してきました。 就任当初から「CTOの役割とは、経営とソフトウェアエンジニアリングを接続することである」という考えはありましたが、上手く言語化できずにいま…

プログラミング言語の特性を理解するためのマトリックス

最近、7年モノのとあるWebサービスのアーキテクチャを次の10年戦えるようなそれにどう置き換えていくか、ということを考える仕事をしています。 その中でも、「既存のRuby on Railsで作られたWebアプリケーションを別のプログラミング言語・フレームワークで…

2017年の進捗

はじめに 昨年に引き続き、2017年にやったことをまとめることにした。 今年は社会人3年目の年だった。 お仕事 Strong parameters対応 これをやらないといつまで経ってもRails 5系にアップグレードできないため、重い腰を上げて対応した。 2017年になって何を…

「テスト駆動開発」の刊行に少しだけ携わらせて頂きました

今週10/14(土)に発売される「テスト駆動開発」にレビュアーとして携わらせて頂きました。 テスト駆動開発作者: Kent Beck,和田卓人出版社/メーカー: オーム社発売日: 2017/10/14メディア: 単行本(ソフトカバー)この商品を含むブログを見る 本書は、Kent …

martinfowler.com流し読み - FunctionLength

はじめに 最近、https://martinfowler.com/tags から過去の全ての投稿を閲覧できることを発見したので、新しいものから順に遡って読むことにした。 いつまで続くかはわからない。 本日のエントリ 日本語訳はこちら。 概要 あるコードを関数として切り出す際…

martinfowler.com流し読み - FunctionAsObject

はじめに 最近、https://martinfowler.com/tags から過去の全ての投稿を閲覧できることを発見したので、新しいものから順に遡って読むことにした。 いつまで続くかはわからない。 本日のエントリ 概要 第一級関数とクロージャを持つ言語では、Function As Ob…

2016年の進捗

はじめに 年の瀬に一年間でやったことをまとめておくと後になって振り返るときにいいのではないかと(急に)思い立ち、2016年にやったことをまとめることにした。 今年は社会人2年目の年だった。 お仕事 RRRSPec導入による自動テスト高速化 今年、直接・間接…

Rails 5におけるActive Record Observerの代替ライブラリを作った

はじめに 最近、Rails 5におけるActive Record Observerの代替ライブラリとして、Everettというものを作りました。 本エントリでは、このgemの紹介と作成のきっかけや工夫した点などを述べたいと思います。 Everettとは 概要 READMEの冒頭にも書いてあるよう…

react-native-router-fluxをいい感じに使う3つの方法

はじめに 最近React Nativeをいじっていて、react-native-router-flux周りの知見が溜まってきたので忘れないうちに書き留めておこうと思う。 react-native-router-fluxとは 簡単に言うと、ネイティブアプリの画面遷移をreact-routerっぽく書けるようにするラ…

codeclimate-test-reporterのv1に対応した

はじめに 自分の開発しているgemでは、自動テストの実行にTravis CI、(テストカバレッジの計測を含む)コードの品質管理にCode Climateを利用している。 先日、Code Climateにテストカバレッジの計測結果を送信するためのgemであるcodeclimate-test-reporte…

【Amazon Linux】capybara-webkitでスクリーンショットを撮った際に日本語が表示されない問題を解決した

はじめに 普段EC2インスタンス(Amazon Linux)にSSHをして開発しているのですが、E2Eテストの中で page.save_screenshot "screenshot.png" などとしてスクリーンショットを撮ると、日本語が表示されずにいました。 検索すると日本語フォントをインストール…

Chaiをやめてpower-assertを使うことにした

はじめに 前回のJavaScript速習エントリの「おわりに」も書いたんですが、ここ最近はずっとNode.jsを触っていて、最近はテストを書くのにも慣れてきました。 その過程でChaiをやめてpower-assertを使うようになったので、その理由を忘れないように書き留めて…

t_wadaさんが提案するJavaScript速習コースを実際に履修してみた

はじめに もう2ヶ月前の話なのですが、日本のTDD第一人者で、最近はpower-assert-jsの開発などJS界隈でも活躍されている@t_wadaさんが、Twitterでこんな提案をされていました。 『JavaScript: The Good Parts』と『WEB+DB PRESS Vol.87 第1特集』のあわせて2…

Railsで静的ページの管理を簡単にするgemを作った

はじめに 先月、エラーページをAsset Pipelineで管理する - WEB SALADというエントリを書いたのですが、あの後「これはエラーページに限らずもっと一般化できるのでは」と思ってgemを作ってみました。 このエントリでは、このgemの紹介と使い方を説明したい…

エラーページをAsset Pipelineで管理する

はじめに Railsでエラーページをいかに楽に書いて管理するかを模索した結果、Asset Pipelineを使う方法が良さそうだったのでまとめます。 追記(2015/08/17) このエントリで提案した手法をgem化し、その使い方を解説したエントリを書きました。 よろしけれ…

Effective Rubyを読んだので感想を書いてく

はじめに Effective Ruby、やっと読み終わった!!! ゴールデンウィーク中の課題図書だったのに、思ったよりも内容が重くて読み終わるのに一ヶ月くらいかかってしまった。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メデ…

RubyとRailsで特定のバージョン下でのみ適用したいパッチを書く方法

はじめに RubyとRailsで、特定のバージョン下において適用したいパッチを書く方法を調べたのでまとめました。 実装例 以下の通りです。 if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0') # Ruby 2系で適用したいパッチ end if Gem::Version.…

Railsで配列の要素から"A, B, and C"形式の文字列を作る時はArray#to_sentenceが便利

はじめに タイトル通りです。 最初は自分で実装しようと思ったんですが意外とめんどいことに気付き、色々探していたら該当の処理をよしなにやってくれるメソッドを見つけたのでまとめました。 Array#to_sentence Array#to_sentenceは、ActiveSupportのArray…

Railsでのpreflightリクエストの実装およびテスト例

はじめに Railsでpreflightリクエストの処理を実装する機会があったのでまとめてみました。 preflightリクエストとは CORS(Cross-Origin Resource Sharing)という、originをまたいだAjax通信の際に発生するリクエストのことです。 発生条件など、詳しくは…

Railsでidが前後のレコードを取得するメソッドを実装してみた

はじめに Railsでとあるサービスを実装しているときに、詳細画面でidが前後のレコードへのリンクをつけたかったのですが、ActiveRecordではそのようなメソッドが用意されていないようなので実装しました。 方針 基本的には次のリンク通りなのですが、5年前の…

Rubyでパス文字列を組み立てるときはPathnameクラスを使おう

はじめに Rubyで文字列操作だけでパス文字列を組み立てようとすると苦しいコードになりがちですが、Pathnameクラスを使うといい感じに書けることがわかったのでまとめました。 Pathnameとは Rubyの組み込みクラスで、パス名をオブジェクト指向っぽく扱うこと…

パーフェクトRuby on RailsのBasic認証の実装がしっくりこなかったので書き換えてみた

はじめに 現在パーフェクトRuby on Railsの10章を読んでいるのですが、そこに掲載されていたBasic認証のためのRack Middlewareの実装がしっくりこなかったので書き換えてみました。 実装 credentialsのチェックを別メソッドを切り出すことで、何をやっている…

ActiveSupportを使ってHash#camelize_keysを実装する

はじめに ActiveSupportにHash#camelize_keysってあってもよさそうなのに、ないのか、、、— yasaichi (@_yasaichi) 2015, 3月 11 先日RailsでとあるAPIを実装していたときに、Hashの各キーをlowerCamelCaseに変換するメソッドがActiveSupportにないことに気…

細かすぎて伝わらないBeamerの知見10個

TeX

はじめに TeXで書いた修論の内容をパワポに持っていくのが面倒すぎたので、 Beamerでスライドを作りました。 そのときに色々とはまった(が解決した)部分をまとめました。 細かすぎて伝わらないBeamerの知見10個 英数フォントをHelveticaに変える professio…

Rubyで総和・平均・分散・標準偏差を算出する

はじめに タイトル通り。もう何回か自作してる気がするので、そろそろメモしておく。 実装 Arrayクラスを書き換えます。 class Array def sum reduce(:+) end def mean sum.to_f / size end def var m = mean reduce(0) { |a,b| a + (b - m) ** 2 } / (size …

zsh+tmuxな環境でなぜかキーバインドが変わってしまう問題を解決した

はじめに 僕は普段zshからtmuxを立ち上げて作業をしているのですが、その時だけ「C-aで行頭にジャンプ」等のキーバインドが使えずに困っていました。 ターミナルを立ち上げた時のzshでは普通に使える、という状態だったのでしばらく放置していたのですが、さ…

scikit-learnで構築したモデルをシリアライズする

はじめに 11月となり、僕の修士研究*1も大詰めになってきました。 研究ではPythonの機械学習ライブラリであるscikit-learnを使っているのですが、先日、「(1時間かけて)訓練したモデルをシリアライズしておけば、評価用のプログラムと分割できて、色々と捗…

attr_readerとattr_accessorを拡張してto_hメソッドを簡潔に実装する

はじめに 先日Ruby on Railsであるサービスの開発を行っていた際に、自作のクラスにto_hというインスタンスメソッドを実装する必要が出てきました。 このメソッドの要件は以下の通りです。 attr_readerまたはattr_accessorで設定したgetterメソッドの名前をk…

RSenseを使ってVimをIDEっぽくする(Ruby向け)

はじめに 夏休みの間、普段とは別のバイト先でIntelliJ+Spray(Scala)で開発をしていたんですが、 IDE+静的型付け言語の組み合わせって色々補完してくれていいなあと思いました。 色々探してみたんだけど、Railsのメソッドを補完してくれるvimのプラグインっ…

乃木どこ開始5分前にYoするサービスを作った

はじめに 若干旬が過ぎた感もありますが、Yoを使った「乃木どこが始まるよ」というサービスを先日リリースしました。 本エントリでは最初にサービスの簡単な紹介をしたあと、備忘録も兼ねて苦労した点について述べていきます。 サービス概要 乃木坂46の冠番…