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

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

プログラミング

ReactのRedux非同期処理がサルでも分かる超解説

この記事はかつての私と同じように「Reduxを使った非同期処理がいまいち分かんねー」という方に向けて書いた。とりあえずはReactの公式サイト、Reduxの公式サイト、Dan氏のReduxビデオ解説を観たが、なんかスッキリしない。特にReduxの非同期処理が分からな…

フィボナッチ工数見積は「完成させます!(徹夜で)」という無理ゲーによる弊害を最小化するプロジェクトマネージメント手法

今まで数々のプロジェクトマネージャーとそのプロジェクトマネージメント手法に翻弄されてきたが、現在の勤め先であるベルリンのITスタートアップで取り入れている手法が歴代の中でも一番マシ。まず工数見積がとても洗練されている。エンジニアが無理やりに…

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…

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

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

『〈インターネット〉の次に来るもの 未来を決める12の法則』書評

『〈インターネット〉の次に来るもの』を読んで「これはごちゃごちゃ言い訳してないで、とにかくモノ作って公開しよ」と思った。そして今、まーまー高いモチベーションでコードを書いている。たった1冊の本でここまで「やったるぞー」的な気持ちにさせる本…

「世界のITエンジニア向け調査結果 スタックオーバーフロー2017」はいつも興味深い

毎年やってるスタックオーバーフローのIT技術者向けのアンケート結果2017版が出た。これがいつも興味深いので一部を抜粋した。 アンケートに回答があった地域 英語でアンケート取ってるのが理由だろうが、ほぼ英語圏に集中している。日本からの回答は全…

GitHubでフォークしたリポジトリを最新状態に保つ方法

OSSなんかのプロジェクトをGitHubでフォークして自分のレポジトリに入れた場合、しばらくほったらかしにしておくとフォーク元はどんどん先に進んでいるのに自分のところのレポジトリは古いまま、となってしまう状態を避ける方法。履歴書の技術欄にRailsとか…

海外転職では最初の壁を超えてしまえば後は楽勝。ただしある条件は付く

海外転職において最も難しいのは最初に日本から海外へ渡る際にある壁でそこを超えたら後は比較的楽勝ですよ、という話。言いたいことの結論を図にすればこんな感じ。 | | | | 高 い 壁 | | | | 日本 | シンガポール | ヨーロッパ(ベルリン)なん…

Chef client-server入門 <男は黙ってChef client-server>

Chef client-serverモデルの入門者向け解説。いまだになぜなのかはよく分からないが、Chef-soloや Knife-soloの解説はよくあるのにChef client-server版の解説があまり見当たらない。英語で検索すればたくさんヒットするし、英語圏でChefはclient-server版が…

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

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

まともなコードが書けるエンジニアならどこでも海外移住できるという単純な理由

ベルリンでもシンガポールでもITスタートアップのエンジニアチームで一緒に働いたチームメンバーの中に現地人はひとりも居なかった。そういう現状からITエンジニアならほぼどこでも移住できますよ、という理屈になる。現地人とはその国で生まれ育った人のこ…

Web系エンジニア必須の環境設定 <その2>ssh接続 は全てsshrc

前回の続き。週に1度でもサーバーにssh接続して作業するなら生のsshを使わずにsshrcにしましょう、と。普通にsshをするとvimの設定なんかの全ての設定がサーバーの設定に依存する。vimでサーバーファイルを編集していて、いつものキーバインドを使っても「…

Web系エンジニア必須の環境設定 <その1>dotfilesをGitHubで管理

シンガポールからヨーロッパに来てもソフトウェアエンジニアとしての職種が同じで言語も英語なので「やってることほぼ同じだな」と感じることがほとんど。そして開発の環境設定もほぼ同じ。人種国籍問わずエンジニアなら「これはやってるだろー」というよう…

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

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

動的計画法(Dynamic Programming)をサルでも分かるように説明する - その1(フィボナッチ数列)

「動的計画法(Dynamic Programming、以下DP)をどんな人にも分かるように丁寧に解説する」というこれまで何人もの優秀な方々が挑戦した内容にあえてまた参戦することにした。「動的計画法」とか「Dynamic Programming」でググると山のように解説ページがヒ…

「プログラマが知るべき97のこと」はやたらリピート率の高いキンドル本

「プログラマが知るべき97のこと」の英語版がKindleに入っていて、結構な頻度で読んでいる。エンジニア向けエッセイ集で全てのエッセイが2ページほどに収まっており、スキマ時間に読むのにちょうどいいからだ。各エッセイには97人の熟練エンジニア達がそ…

天才プログラマーと自分との実力差をカンタンに測定する方法

天才プログラマーと自分との実力差をカンタンに測定する方法を発見しましたよ、という話。結論から言うと、いろんなところで過去に開催されたプログラミングコンテストの入賞者の結果を見て、その問題を同じ条件で解いてみること。あるウェブサイトに201…

RubyのEnumeratorとEnumerator::怠惰(Lazy)の使い所とベンチマーク

RubyのEnumeratorとEnumerator::Lazyの使い所とベンチマークをまとめた。使うと意外と便利なのがEnumerator。 Enumeratorの基礎動作 irbを起動して配列のeachの後にブロックを渡さないでおくと、それはそのままEnumeratorオブジェクトにして返される。 ~ $ i…

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氏の原型とはだいぶ違う箇所もある…

はっきり言う。コードレビューが嫌いだ。そしてその理由が分かった

だいたいどこでもコードレビュー絶賛中だ。「コードレビューで知識を共有できる」「クオリティが上がる」「開発者が成長できる」といいことずくめみたいに言われている。そうしたメリットを分かった上で言う。コードレビューが嫌いだ。コードレビューはとに…

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

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

特殊文字の英語表現は英語圏の職場ではよく使うけど、普通の英語学習では出てこないので対策しておくべし

特殊文字の英語表現は勉強して覚えたってよりも、シンガポールで働き出して職場の同僚が何度も話すのを聞いて自然に覚えた。最初の頃はその辺りが慣れていなくて「『#』って入れて」言いたいのにどう表現すれば分からないから、キーボードに手を伸ばして「…

英語圏のエンジニア職への転職応募で書類選考を5割以上合格させる3つのポイント

英語圏のエンジニア職への転職応募において最初の関門は書類選考になる。その書類選考でどこかの会社に10通履歴書を送ったら5通以上は合格させる方法を書いた。就職活動において書類選考漏れというのは妙に精神的にヘコむ。特にある程度キャリアを積むと…

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

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

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

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

履歴書は良かったのに書類選考で落ちてしまった人の原因はGitHubだった話

半年ほど前にエンジニアの募集をしていた時、履歴書の上ではまーまー立派な感じだった応募者がGitHubのおかげで書類選考漏れしたことがあった。応募者からの履歴書とカバーレターが人事を通して各担当のエンジニアに転送されてきた。英語圏ではエンジニアの…

Reactのコード事例から学ぶ初心者向けReact入門と事例集

Reactを使い出した時にまず思ったのが「もっと動いている事例を見せてくれんかな?」だった。事例が少なく感じたので、自分で入門者向けに事例集を作った。 初学者が勉強する時はまずは公式サイトのチュートリアルが一番よくできていると思う。それでも誰も…

Googleロンドンで働く友人を「うらやましいー」と思ったり思わなかったり

ずっと一緒に働いていた職場の同僚エンジニアAが数ヶ月前にロンドンのGoogleに転職した。転職してからしばらく経ったので久しぶりに連絡をとって、ロンドンの様子やGoogleの働き方について聞いたみたら、なかなかに興味深い話が聞けた。その中のひとつがスタ…

「世界のITエンジニア調査結果2016」は年収から人気のプログラミング言語まで興味深いデータがいっぱい

毎年スタックオーバーフローから世界中のITエンジニアを調査対象とした調査結果が出る。基本は英語圏のエンジニアに向けた調査になっているので、日本のエンジニアの現状とを比較する際にはとても参考になる。 人気のテクノロジー この手の調査結果ではいつ…

世界の凄腕エンジニア達からのプログラミングに関するお言葉集は不思議にココロを打つのでした

世界の凄腕エンジニア、科学者が講演や本で語ったプログラミングに関する言葉を集めた、「凄腕エンジニアのお言葉集」は不思議にココロを打つのでまとめた。たった一言でもその言葉を発するまでに作ってきた製品や打ち出した理論の上にある、と思うとなにか…

知識ゼロからTensorFlowを使った機械学習で人工知能を作るー入門編1

今、機械学習が熱い。そんな機械学習に手を出したいけれど、いまいちこれまでの技術的バックグラウンドが畑違いで「どうしよう?」と考えている方向けにTensorFlowを使った機械学習の入門書を書いた。実は私自身が機械学習がやりたくてしょうがないけど、ま…

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

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

エンジニアのハマり時間とその技術的難易度の相関関係

めちゃくちゃにハマったからと言って、その問題は技術的難易度が高い訳ではないんじゃね?という話。 ここで言う「ハマる」とはなにかに没頭することではない。バグとかエラーがあって、なかなか解決できなくてそのために時間を割かれてハマる、の「ハマる」…

公開鍵暗号とRSA暗号の仕組み

公開鍵暗号の仕組みをまとめることにした。 先日作成して公開したエンジニア向けのパズル8は公開鍵暗号の仕組みを使っている。RSA暗号のコード書いてデバッグして、暗号の仕組みをかなり理解したので、せっかくだからまとめた。 公開鍵暗号 金庫の中にに大…

エンジニアのタイプはスピード重視派と慎重派とかじゃなく、できる奴とできない奴だけじゃね?

エンジニアのタイプを表現する時にスピード重視派とか慎重派とかいう表現がしっくりこない。結局はできるか、できないか、だけの差しかないな、という話。こちらのスタートアップではまっさらのゼロ状態から「明日までに完成させてくれ!」というむちゃな要…

【パズル8】ほとんどのエンジニアには解けるパズル8(Puzzle-M)

ほとんどのエンジニアには解けるパズルの8作目を公開した。 タイトルは「Puzzle-M」 タイトルのMが何を示しているかは、サイト自体は公開済みなのでアクセスいただいてご確認いただきたい。トップページはこれ。(できればPCで見てください。スマフォはキツ…

パズル7を最速で解いていただいたスゴ腕エンジニアTop10と結果データの公表

パズル7を公開後スグに解いていただいたスゴ腕エンジニアTop10の方々へのお礼。1位 flicknote Wow... So tricky! I like this challenge. Cool graphics too!!おめでとうございます!なんとこのflicknoteさんは公開後1位で解いただけではなく、アカウン…

【パズル7】ほとんどのエンジニアには解けるパズル7(CUBES)

エンジニア向けのパズルシリーズの7作目を公開した。今回のタイトルは「CUBES」。サイトにアクセスいただくと、読んで字のごとくCUBESがズラッとある。(スマフォで見るのはちょっとキツいかも) 前回までのパズルに挑戦いただいた方から「ミスマッチを防ぐ…

パズル6を最速で解いていただいたスゴ腕エンジニアTop10

パズル6を公開後スグに解いていただいたスゴ腕エンジニアTop10の方々へのお礼を書く。カンタンなパズルとは言っても今回のパズル6は歴代の中で最も難しい。それをこんなに素早く解いていただいた方達は誰もが優秀な方だということを信じて疑わない。実は…

【パズル6】ほとんどのエンジニアには解けるパズル6

エンジニア向けのパズルシリーズの6作目を公開した。サイトにアクセスするとタイトルとパズルへの入り口が出る。 タイトルは「Hackipedia(Hackipediaはハッカーのための無料の百科事典)」とした。前回のパズル5が大失敗だった。パズル5はめちゃくちゃカ…

公開したパズル5がみごとにスベった

公開したパズル5がみごとにスベったのでその反省点を書く。 パズルを公開した後、あまりのアクセスの無さと解答者数の少なさを目の当たりにして非常に反省させられた。ただこの失敗から多くの学びを得たのでここに書く。まず最も大きなスベった原因のひとつ…

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

パズルシリーズの5作目を公開した。どんなエンジニアであっても誰にでも解けるパズルだ。 エンジニア向けと言ってるが、本当の対象は誰でもだ。なんだったら小学生でも解ける。それぐらいカンタンなパズル。パズルサイトのトップページ (e-チケットの入場…

パズル4を最速で解いていただいたスゴ腕エンジニアTop10

パズル4は1/31の午後10時に公開しますよ、と事前告知をした。公開後スグに解いていただいたトップ10を紹介する。公開前は「本当にパズルサイトに来ていただけるのか」と、とても不安だったが、開始5分前からcurlでAPI叩いてくる人達のログが見てとれて…

【パズル4】ほとんどのエンジニアには解けるパズル4

エンジニア向けのパズルシリーズの4作目を公開した。パズルサイトにアクセスするとNo Hacking「ハッキング禁止」のタイトルとDO NOT kick my APIs「私のAPIを蹴るな」とだけ出る。 プログラム言語を問わず、どんな技術を担当しているエンジニアであってもほ…