プログラミング
GraphQLをサーバー側とクライアント側とで実装してみて得た意識すべきポイント3つについて。 ひとつのエンドポイント バージョン無し できるだけ薄く この3つを意識して実装するのとそれが無いのとでは実装スピードが何倍か違うと思う。特にREST脳な人の場…
個人開発ではあるが、なんとか公開にこぎつけたのはベルリンにあるシリコンバレー的文化があったことは紛れもない事実。そんな経験からアメリカのある特定の都市から革新的なIT企業が次々に現れる理由にはそういったシリコンバレー的文化が後押ししているん…
先日公開した個人開発サイトnode-node-nodeに対するご意見とその回答。全ては掲載できないので一部を抜粋してコメントと、それをいただいた後の対応状況を載せた。ご意見をお送りいただいた全ての方へ ありがとうございます!もしこれらのコメントが無ければ…
先日、個人開発して公開したウェブアプリの率直な感想を募集したら、とても親切かつ有用なコメントをいただいて「ネット文化はなんて素晴らしいんだ」と無邪気に感動してしまった。ネット上には罵詈雑言が溢れている、などと言われるが、そんな人ばかりが大…
GraphQLは実装内容に合えばタイタニックの救命ボードのように混沌から救い出してくれる。だからと言って全てのプロジェクトがタイタニックな訳ではないので、使い所が合わなければそんな救命ボードにもあまり意味は無い、という話。先日、個人開発して公開し…
サイトコンセプトはエンジニアの集合知をノードグラフにして図解するSNS。 サイト名は「node-node-node(ノード ノード ノード)」。デスクトップ版のみ。エンジニアの集合知をノードグラフで図解するSNS。 「node-node-node(ノード ノード ノード)」 http…
YAGNI (You Ain't Gonna Need It) 直訳は「そんなモン要らんって!」 YAGNIの原則は「機能は実際に必要となるまでは追加しないのがよい」とすること。後で使うだろうという予測の元に作っても、実際に使われるのはほんの一部。ソフトウェア実装において「予…
かつて「ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?」なんてモノを作った。パズルが解けたら、解答者用のコメントが入る仕組みになっていて、それが後もう少しで6000番に到達しそう。作った本人としてもまーま…
Rails 5 でモデルに条件付きbefore_destroyを設定する方法。例えばPostモデルがあって、レコードを消す前に条件判定をするとする。ステータスがアクティブだったら消さない。アクティブ以外の場合だけレコードを消してもOkとしたい。そこで以下のようなコー…
この記事はかつての私と同じように「Reduxを使った非同期処理がいまいち分かんねー」という方に向けて書いた。とりあえずはReactの公式サイト、Reduxの公式サイト、Dan氏のReduxビデオ解説を観たが、なんかスッキリしない。特にReduxの非同期処理が分からな…
今まで数々のプロジェクトマネージャーとそのプロジェクトマネージメント手法に翻弄されてきたが、現在の勤め先であるベルリンのITスタートアップで取り入れている手法が歴代の中でも一番マシ。まず工数見積がとても洗練されている。エンジニアが無理やりに…
RailsのViewをReactにする場合のお手軽な環境構築としては少し前ならreact-railsやreact_on_railsといったGemを使って統合していた。それもRail 5.1になってGem無しでもカンタンに環境構築が可能になった。もちろんGemを使えばそれらに付随する機能が使えて…
反省した。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一覧をそのクラスのインスタンス変数から取り出す方法」なのだが、何を言ってるのか書いた本人でも「?」となりがちなのでまずはやりたかったことから説明する。例えばBookクラスがあって、そこに a…
『〈インターネット〉の次に来るもの』を読んで「これはごちゃごちゃ言い訳してないで、とにかくモノ作って公開しよ」と思った。そして今、まーまー高いモチベーションでコードを書いている。たった1冊の本でここまで「やったるぞー」的な気持ちにさせる本…
毎年やってるスタックオーバーフローのIT技術者向けのアンケート結果2017版が出た。これがいつも興味深いので一部を抜粋した。 アンケートに回答があった地域 英語でアンケート取ってるのが理由だろうが、ほぼ英語圏に集中している。日本からの回答は全…
OSSなんかのプロジェクトをGitHubでフォークして自分のレポジトリに入れた場合、しばらくほったらかしにしておくとフォーク元はどんどん先に進んでいるのに自分のところのレポジトリは古いまま、となってしまう状態を避ける方法。履歴書の技術欄にRailsとか…
海外転職において最も難しいのは最初に日本から海外へ渡る際にある壁でそこを超えたら後は比較的楽勝ですよ、という話。言いたいことの結論を図にすればこんな感じ。 | | | | 高 い 壁 | | | | 日本 | シンガポール | ヨーロッパ(ベルリン)なん…
Chef client-serverモデルの入門者向け解説。いまだになぜなのかはよく分からないが、Chef-soloや Knife-soloの解説はよくあるのにChef client-server版の解説があまり見当たらない。英語で検索すればたくさんヒットするし、英語圏でChefはclient-server版が…
open-uriってちゃんと実装しないとなにかと危険な香りがしますな、という話。module OpenURI (Ruby 2.4.0)例えば外部のAPIを叩く必要があって require "open-uri" として使っていたとする。 フォームから受け取ったパラメータを入れてopen(なんやら)とする場…
ベルリンでもシンガポールでもITスタートアップのエンジニアチームで一緒に働いたチームメンバーの中に現地人はひとりも居なかった。そういう現状からITエンジニアならほぼどこでも移住できますよ、という理屈になる。現地人とはその国で生まれ育った人のこ…
前回の続き。週に1度でもサーバーにssh接続して作業するなら生のsshを使わずにsshrcにしましょう、と。普通にsshをするとvimの設定なんかの全ての設定がサーバーの設定に依存する。vimでサーバーファイルを編集していて、いつものキーバインドを使っても「…
シンガポールからヨーロッパに来てもソフトウェアエンジニアとしての職種が同じで言語も英語なので「やってることほぼ同じだな」と感じることがほとんど。そして開発の環境設定もほぼ同じ。人種国籍問わずエンジニアなら「これはやってるだろー」というよう…
エンジニアが海外転職をする際に必ず出されるのが技術問題で、それらは本当に玉石混交。いい問題もあれば、なんかしっくりこないクソ問題もある。私が現職で応募者に技術問題を出す際にはいつも「外部のネットに書いたり、人に問題の内容を教えたりしないで…
「動的計画法(Dynamic Programming、以下DP)をどんな人にも分かるように丁寧に解説する」というこれまで何人もの優秀な方々が挑戦した内容にあえてまた参戦することにした。「動的計画法」とか「Dynamic Programming」でググると山のように解説ページがヒ…
「プログラマが知るべき97のこと」の英語版がKindleに入っていて、結構な頻度で読んでいる。エンジニア向けエッセイ集で全てのエッセイが2ページほどに収まっており、スキマ時間に読むのにちょうどいいからだ。各エッセイには97人の熟練エンジニア達がそ…
天才プログラマーと自分との実力差をカンタンに測定する方法を発見しましたよ、という話。結論から言うと、いろんなところで過去に開催されたプログラミングコンテストの入賞者の結果を見て、その問題を同じ条件で解いてみること。あるウェブサイトに201…
RubyのEnumeratorとEnumerator::Lazyの使い所とベンチマークをまとめた。使うと意外と便利なのがEnumerator。 Enumeratorの基礎動作 irbを起動して配列のeachの後にブロックを渡さないでおくと、それはそのままEnumeratorオブジェクトにして返される。 ~ $ i…
ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?などというITパズルを作成して、それが解けたら解答者登録できる仕組みにしておいたら、8ヶ月かかってやっと5000件に到達した。「だからナニ?」と言われてもそれま…
「クソコード」と言っても一体なにをもってクソとするのかは難しい。さらにほとんどのコードは一応は動いている。目の前で動いているコードに対して「クソ」と判断するからにはもうちょっと分かりやすい説明があってもいいんじゃないだろうか、と考えたので…