ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログ

Rails

GraphQLを導入してみて得た知見と雑感。GraphQLはタイタニックの救命ボードになりえるかも

GraphQLは実装内容に合えばタイタニックの救命ボードのように混沌から救い出してくれる。だからと言って全てのプロジェクトがタイタニックな訳ではないので、使い所が合わなければそんな救命ボードにもあまり意味は無い、という話。先日、個人開発して公開し…

エンジニアの集合知をノードグラフで図解するSNSサイトを作った。「ノード・ノード・ノード(デスクトップ版)」

サイトコンセプトはエンジニアの集合知をノードグラフにして図解するSNS。 サイト名は「node-node-node(ノード ノード ノード)」。デスクトップ版のみ。エンジニアの集合知をノードグラフで図解するSNS。 「node-node-node(ノード ノード ノード)」 http…

Rails 5 モデルの条件付きbefore_destroy

Rails 5 でモデルに条件付きbefore_destroyを設定する方法。例えばPostモデルがあって、レコードを消す前に条件判定をするとする。ステータスがアクティブだったら消さない。アクティブ以外の場合だけレコードを消してもOkとしたい。そこで以下のようなコー…

Rails 5.1のwebpack (gem無し)を使ってReact, Redux, Material-UIの環境構築

RailsのViewをReactにする場合のお手軽な環境構築としては少し前ならreact-railsやreact_on_railsといったGemを使って統合していた。それもRail 5.1になってGem無しでもカンタンに環境構築が可能になった。もちろんGemを使えばそれらに付随する機能が使えて…

RubyのblockやProcを分かったつもりになっていて見事にハマった

反省した。RubyのblockやProcを分かったつもりになっていて、しょうもないところでハマった。自戒を込めてブログに残しておくことにした。 $ ruby -v ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15] 例1 def method_1 if block_given? puts…

Railsの生みの親、DHHのロックな発言に惚れた

Railsの生みの親であるスゴ腕エンジニアでしかもプロのカーレーサーで、イケメンで、嫁さんは超美人で、もう金も才能も成功も全部持っていってしまっているDHHのイキな発言が心に響いた。元ネタはこちら。 https://hashnode.com/ama/with-david-heinemeier-h…

Rubyのクラスで定義されたattr_accessor一覧をそのクラスのインスタンス変数から取り出す方法

一応題名の通りで「Rubyのクラスで定義されたattr_accessor一覧をそのクラスのインスタンス変数から取り出す方法」なのだが、何を言ってるのか書いた本人でも「?」となりがちなのでまずはやりたかったことから説明する。例えばBookクラスがあって、そこに a…

テキトー実装だとハッカー攻撃の恰好の的になりがちなRubyライブラリopen-uri

open-uriってちゃんと実装しないとなにかと危険な香りがしますな、という話。module OpenURI (Ruby 2.4.0)例えば外部のAPIを叩く必要があって require "open-uri" として使っていたとする。 フォームから受け取ったパラメータを入れてopen(なんやら)とする場…

ITエンジニアの海外転職で出された技術問題をそのままここに貼り付ける - その1

エンジニアが海外転職をする際に必ず出されるのが技術問題で、それらは本当に玉石混交。いい問題もあれば、なんかしっくりこないクソ問題もある。私が現職で応募者に技術問題を出す際にはいつも「外部のネットに書いたり、人に問題の内容を教えたりしないで…

オブジェクト指向設計実践ガイド 「Practical Object-Oriented Design in Ruby」待望の日本語版がついに発売

本ブログで絶賛オススメしていた 「Practical Object-Oriented Design in Ruby」の日本語版がついに発売された。こちらの記事でオススメを書いたのだが、アクセスはたくさんあってもアマゾンのアソシエイトプログラムを通して購入にいたるケースは少なかった…

5000件の解答者登録達成!ほとんどのエンジニアには解けるパズル1

ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?などというITパズルを作成して、それが解けたら解答者登録できる仕組みにしておいたら、8ヶ月かかってやっと5000件に到達した。「だからナニ?」と言われてもそれま…

RubyのリファクタリングでNull Objectを使ってコードをスッキリさせる方法

前回、Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法という記事を書いて、いい反響をいただいたので第2弾を書いた。Ben Orenstein氏の講演で話されていた前回のとはまた別のリファクタリング方法。元…

Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その3

前回からの続き。 Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーい…

Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その2

前回からの続き。 Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーい…

Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1

Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。元ネタはこちらのBen Orenstein氏のリファクタリングで、そこに私なりの解説とコードを加えた。かなり追加したのでOrenstein氏の原型とはだいぶ違う箇所もある…

英語圏のITスタートアップにおいて日本人であることの唯一のメリットを転職で活かす方法

もうぶっちゃけて言ってしまえば英語圏のITスタートアップで働く場合に日本人であることのメリットなんてほとんど無い。日々の業務で実感できることなんて皆無だ。ほとんどの情報は英語で発信されているし、会議もランチ中の会話も英語。ジリ貧状態の日本市…

初心者でもカンタンにRailsの中身のコードをコードリーディングする方法

ここで言う「Railsの中身のコード」というのはRailsを使ったRailsアプリのコードのことではない。Railsそのもののコード。DHHが書いたRailsのコード。$ rails new AppNameとかのコマンドが動く仕組みが書かれたコードのこと。 これって職場の同僚と英語で話…

履歴書の技術欄にRailsとかのフレームワークを書くならせめて自分のGitHubアカウントにフォークしとけば多少なりとも印象あがりまっせという話

香港人の若くて可愛いインターンのJ(男)が「就職活動する時になんかいい方法ありますか?」と聞いてきて、その時なにげに答えた内容がまーまーマシな回答だったな、と思ったのでここにも書くことにした。それは「もし履歴書の技術欄にRailsって書くなら、…

RailsでMicrosoftのFace APIを使って写真の顔認識をする方法

写真の顔認識はいろんなプロジェクトで地味に実装されていて、まーまー重要な機能のひとつになってきた。いろんな方法があるが今のところMicrosoftのFace APIに一日の長を感じる。精度が高くまた無料枠でもいい感じに使えるからだ。しかしなぜかドキュメント…

海外転職の面接の時に英語で聞かれるRubyとRailsの基礎質問を徹底マスターしておく方法

海外転職の技術面談の形式に関してはこのブログに何度か書いたので、今回はその具体的な対策を書いた。ずばり「RubyとRailsに関する英語の基礎質問と解答例」書類選考をみごとに通過したら次は電話面談かもしくはオフィスでの面談になる。いづれにしても採用…

難しいと思ってたパフォーマンス・チューニングがちょっとしたことで劇的に改善できた話

前から任されたら嫌だなーと思っていたパフォーマンス・チューニングのタスクがまわってきて「ついに来たー!イヤー!」と思ったのに、ちょっとしたことで劇的にパフォーマンスが改善して一瞬で終わりましたよ、でも大して自慢にならんね、という話。そのプ…

AWSを最短でマスターするための入門者向けココロエ3箇条

これからAWSを学ぶ方へ「AWSを最短でマスターするための入門者向けココロエ3箇条」を書いた。これはあくまで入門者向け。AWSの全てを把握してバリバリにご活躍中のインフラエンジニアは除く。 AWSを最短でマスターするための入門者向けココロエ3箇条 全AWS…

RailsにGoogleのreCAPTCHAを入れる

GoogleのreCAPTCHAとはこれのこと。登録の際にロボットと人間を区別するやつ。 いまだに分かりにくいグニャっとした文字を読ませて入力する形式のCAPTCHAが使われているのが散見される。でもアレってロボットが98%の確率で正解させられるとか聞くし、ユー…

エンジニアとしての仕事観を揺さぶられる本『サッカー データ革命』

本書を読んで、エンジニアとしての仕事観を大いに揺さぶられた。もちろんいい意味で。 内容はサッカーにビッグデータの分析を持ち込んで活躍するデータサイエンティスト達の成果とその手法だ。サッカー データ革命 ロングボールは時代遅れか作者: クリス・ア…

『ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?』の結果報告

先日『ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?』なるものを作って、しばらく様子を見ていたら想像以上にパズルを解いてコメントいただけたのでその結果報告をする。内容は黒い画面にPlease call my APIs.(私の…

【パズル1】ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?

半年ほど前にソフトウェアエンジニア向けの求人募集ページに簡単なプログラミング系のパズルを出して、それが解けた人だけ応募できる仕組みにしよう、という話になった。その時期は求人を拡大募集していたのだが、あまりにハズレな人が多かった。私もいくつ…

案ずるより産むが易しのAWSのインスタンスタイプ変更

前からAWSのRDSのInstance Classが古い型のを使っていることが気になっていた。最新のに変えれば料金は安くなって、しかも性能が向上するので「スグにでもやるべき」だったのに放置していた。理由はほどんどのインフラを担当しているエンジニアさんならご理…

他人のコード読むのが好きじゃない私だが、いくつかのRailsのコードだけはよく読んで参考にしている

他人の書いたコード読むのがあまり好きじゃない私だが、いくつかのRailsプロジェクトのコードだけは自分のフォルダにクローンしてよく読んで参考にしている。「この世でもっとも理想的なRailsプロジェクトのソースコードってどんなのだ?」「どこかにそうい…

世界のエンジニアの状況を示すスタックオーバーフローの調査結果は驚きの連続だった

元ネタはこれstackoverflow.comご存知スタックオーバーフローが全世界のエンジニアの状況をアンケート調査した結果。対象はもちろん全世界。 結果は想定通りのものと「え?そうなの?」と予想を裏切るものがあった。こういうのは自分の肌感覚より精密なデー…

Devise で Sign Out が Routing Error になる問題の対処方(method の delete が get になる)Rails 4.x

RailsでDeviseを使っていて、ログアウトした際になぜかRouting Errorになったり、もしくはまったく意図していないRouteに行ってしまう問題の対処方。以下のブログにも同じ問題について言及しているが、deleteをgetにしてしまっているので、なにか消化不良が…