タグ

ブックマーク / blog.kyanny.me (28)

  • rbenv のメカニズム - @kyanny's blog

    rbenv 環境下で実行された Ruby プログラムの中から他の Ruby プログラムを起動するときに、 rbenv 環境をリセットしたい―要するに別のバージョンの Ruby で外部プログラムを実行したい―という事情があったので rbenv のメカニズムについて調べた。 rbenv 環境下で ruby コマンドを実行するとき、実際にコンパイルされた ruby バイナリが直接実行されているわけではない。 rbenv 環境をお膳立てした上で ruby バイナリを exec するラッパーのシェルスクリプトが実行される。こういうものを binstub と呼ぶ。 binstub である ruby という名前のシェルスクリプトの中身をみてみると、最終的に rbenv exec というサブコマンドを呼び出している。 rbenv のサブコマンドはリポジトリでいうと libexec ディレクトリ以下にある。

    rbenv のメカニズム - @kyanny's blog
  • Firefox やめた - @kyanny's blog

    blog.kyanny.me 使い物にならない、とは言わないが、おすすめしない。 遅い もっぱら毎日 GitHubGoogle Drive にアクセスしているが、どこも Chrome に比べて体感で明らかにわかるほど表示も動作も遅い 速度がウリって、いったいどこのウェブサイトなら速いわけ? 一番困ったのが Cmd+W に対する反応が遅くて(処理落ちしてる感じ)気持ち長く押してしまうのか、閉じたくないタブまで閉じる操作ミスが頻発した 開発者ツールが使いづらい 慣れの問題もあるけど、機能の少なさはこなれてなさは否めない minify された .js ファイルを prettify してブレークポイントを設定しても、そこで止まってくれない。デバッグが致命的にやりづらい 拡張がめっちゃ少ない Quantum で過去の拡張を捨て去ったので、拡張を探しても軒並み未対応 Trello の公式拡張が未

    Firefox やめた - @kyanny's blog
  • Quipper に入社して丸4年が経った - @kyanny's blog

    blog.kyanny.me 一年経ってしまった。いろいろあった。一年前はオフィスのことしか書かなかったので、今年は自分のことだけ書く。 Engineering Manager 今年の1月に会社の組織変更があり、 Engineering Manager というポジションができた。国単位・技術分野単位などで開発者をいくつかのチームに分け、それぞれに Engineering Manager がいるという、いわゆるふつうのピラミッド型の組織になった。で、俺が東京オフィスの Web Developer チームの Engineering Manager になった。 上司(CTO)から話があったのは去年の11月頃だった。プロダクト開発チームがグローバル全体で50名くらいになってきて、そろそろ CTO 一人で見るのは無理がでてきた、そこでローカルに Manager をつくり各種の業務や権限を委譲していき

    Quipper に入社して丸4年が経った - @kyanny's blog
  • Quipperで2年働いてわかった、グローバル企業で求められる英語力の現実 - @kyanny's blog

    Quipperに入社して2年経った。 転職するにあたり、最も心配だったのは英語だ。当時は英検もTOEICも受験した経験すらなく、自分の英語力がどの程度のものなのか客観的に知る術がなかった。日常的に英語を使う機会も乏しく、果たして当に外資系企業でやっていけるのか甚だ不安だった。 2年働いてみて、なんとかやってこれたと思うし、今後もやっていけそうだという手応えもある。2年間の振り返りとして、自分が体験した「グローバル企業で求められる英語力の現実」を綴ってみたい。 前提と特有の事情 仕事英語にまつわる話を見聞きするときいつも、「帰国子女とか海外留学とか長期出張・駐在とかの経験がある、とかいう人たち、元々普通に比べて英語力が高かったんだからチートじゃんか」と感じていた。自分はそういう経験が一切ない。Quipperで働き始めるまで外国人と仕事をしたことはないし、海外旅行すら一度しか行ったことがな

    Quipperで2年働いてわかった、グローバル企業で求められる英語力の現実 - @kyanny's blog
  • capybara-webkit で Invalid Date エラーが出る場合の対処法 - @kyanny's blog

    capybara-webkit は QtWebKit を使うが、 QtWebKit が Qt 4 でビルドされていると Invalid Date エラーが発生することがある。 QtWebKit を Qt 5 でビルドしなおせば解決する。 Improper date parsing · Issue #570 · thoughtbot/capybara-webkit · GitHub new Date('2013-12-31'); はエラーになる。日付はなんでもよくて、 YYYY-MM-DD というフォーマットがまずい。 new Date('Dec 31, 2013'); はエラーにならない。なお、どちらも Chrome や Firefox などの Web ブラウザではエラーにならない。 Mac OSX を使っていて Homebrew で Qt をインストールしている場合に capybara-

    capybara-webkit で Invalid Date エラーが出る場合の対処法 - @kyanny's blog
  • 不便さを我慢しないカルチャー - @kyanny's blog

    Quipper, 採用は基的に 24/7 いつでもウェルカム!なんだけど、とはいえ対外的にちゃんと求人を掲載して「募集中ですよ!」とアピールする必要もあるよね、ということで、 Wantedly でソフトウェアエンジニアと DevOps エンジニアの採用を開始した。 Quipperで新しい学びの形を創造したいエンジニアをウォンテッド! - Quipper Ltdの求人 - Wantedly https://www.wantedly.com/projects/6602 @ffu_ とチャットで「こんなことやります」欄の内容を相談していて、「改めて考えると、自分たち普段いろんなことをどうやってるんだっけ?」と考えた末にひねり出した一文がこれ。 Quipperのエンジニアリングは「生産性」にフォーカスしています。運用に人手のかかるインフラ部分はHerokuCircleCI等の外部サービスを積極

    不便さを我慢しないカルチャー - @kyanny's blog
  • Single Page Application ではない場合 JavaScript コードのエントリポイントはどこにあるべきか? - @kyanny's blog

    仕事で中規模程度の Rails アプリケーションのコードベースをいじっている。このアプリはもともと app/assets/javascripts 以下に必要に応じて JavaScript ファイルを置き、適当なテンプレートファイルから直接 JavaScript の関数を呼び出したりしていた。ごく普通の Rails アプリである。 このアプリは CMS で、いわゆる「ブログの管理画面」みたいな用途で使われている。一部の機能はそれなりに込み入った UI 操作を必要としページ遷移なしに操作できる必要があるが、旧来のやり方では JavaScript コードの管理が間に合わなくなってきたので部分的に Backbone.js を導入し始めている。 最近悩んでいるのが、 Backbone.js なコードのエントリポイントをどのように呼び出すべきなのか?ということ。そもそも自分が Backbone.js

    Single Page Application ではない場合 JavaScript コードのエントリポイントはどこにあるべきか? - @kyanny's blog
  • クライアントサイド JavaScript (AltJS) のテストを書くのは本当に難しいのか? - @kyanny's blog

    TL;DR - 最初の一人はつらいけど後続はそうでもないので先駆者は自覚と誇りを持ってオールグリーンを維持しよう このエントリはMarionette.js ベースで3ヶ月開発したアプリのカバレッジ推移をまとめてみた - @kyanny's blogというエントリの続きにあたります。未読の方は先にそちらを一読されることをおすすめします。 Marionette.js ベースで3ヶ月開発したアプリのカバレッジ推移をまとめてみた - @kyanny's blogの結論で触れたように、今回テストを書くことにこだわったのは、「クライアントサイド JavaScript (AltJS) のテストを書くのは当に難しいのか?」という問いに対する自分なりの回答を実践して検証してみたかったという理由があったからだ。 以前から「クライアント JavaScript (CoffeeScript や他の AltJS を

    クライアントサイド JavaScript (AltJS) のテストを書くのは本当に難しいのか? - @kyanny's blog
  • 例えば OSFA な API をやめる - @kyanny's blog

    OSFA == one-size-fits-all 単一の API で全てをカバーするのをやめたらどうか、ということ。 APIのバージョニングは限局分岐でやるのが良い - Hidden in Plain Sight @kenn 最近はRESTfulなエンドポイントは完全に後方互換なまま、クライアントごとにオーケストレーション層(radical versionin)を設けるという方向にシフトしようとしている。詳しくは http://t.co/zODm7mFr5B— Tatsuhiko Miyagawa (@miyagawa) February 28, 2014 この話のポイントとはちょっとずれてる && Podcast 聴いてないのですが。 Quipper プラットフォームで内部的に利用されている API も、 /v1 というパスの下にはえててごく一部のエンドポイントだけ /v2 がある、み

    例えば OSFA な API をやめる - @kyanny's blog
  • ルーク、 MongoLab を使え! - @kyanny's blog

    五月の終わりから Quipper で働いている。 Quipper は DeNA の co-founder である渡辺雅之氏がロンドンで創業したモバイル学習プラットフォームの会社で...みたいな話は長くなるし、読者の興味を引きそうにないのでやめておく。このへんの話を詳しく知りたい人は渡辺によるハーバード・ビジネス・レビューの連載をどうぞ。 ソフトウェア開発者にとって一番気になるのは、会社の事業内容とか売上利益よりも、「どんな環境でソフトウェア開発をしているのか」じゃないだろうか。どんなインフラを使っているのか、バージョン管理やタスク管理はどうしているのか、自動テストはどのくらいやっているのか、開発手法はアジャイルなのか、 Mac で開発できるのか、椅子は六万円以上か(冗談ですよ)、などなど。 こういった、ソフトウェア開発者が日々過ごす広義の「環境」について言えば、 Quipper はかなりい

    ルーク、 MongoLab を使え! - @kyanny's blog
  • curl(1) で POST する際の --data と --form の違いについて - @kyanny's blog

    調べてみた。動作確認用のサーバは plackup で立てている。 app.psgi の中身は一番最後に。 --data (-d, --data-ascii) application/x-www-form-urlencoded 形式で POST する。 @/path/to/file のように value の先頭が @ ではじまっているとファイルを読み込んで改行文字を取り除く。パラメータや @ つきで指定したファイルの中身はすべて URL エンコードされていることが期待される。つまり curl(1) は URL エンコードしてくれない。 -d を複数回指定するとすべてのパラメータが & で連結される。 @ でファイルを指定する場合、 -d 'file=@sale.txt' のようにすると中身が展開されないので注意 (file=@sale.txt という文字列が渡される) $ curl -d '

    curl(1) で POST する際の --data と --form の違いについて - @kyanny's blog
  • master ブランチにマージ済みのリモートブランチをまとめて削除する git-prune-remote-branch というスクリプトを作った - @kyanny's blog

    必要になったのでそういうものを作りました。 https://github.com/kyanny/git-prune-remote-branch パスの通ったところに置いて Git のワーキングディレクトリで実行すると master と develop にすでにマージ済みのリモートブランチを全部削除します。 --noop で dry-run モードになるので実際に消す前に確認もできます。なんで master だけじゃなく develop も?というと、僕のチームで gitflow を使っているからです。 $ git clone git://github.com/kyanny/git-prune-remote-branch.git $ git-prune-remote-branch --noop $ git-prune-remote-branchgit push --mirror じゃダメなの

    master ブランチにマージ済みのリモートブランチをまとめて削除する git-prune-remote-branch というスクリプトを作った - @kyanny's blog
  • デプロイ作業の属人化を徹底的に排除したい話 - @kyanny's blog

    ここ数カ月、デプロイとリリースについて、同僚や友人と議論したり雑談したりする機会が数多くあった。そんな折に、友人から Facebook のリリースエンジニアリングチームについて教えてもらった。曰く、 Facebook ではリリース作業を専門とするチームがあり、そこのメンバーは開発ブランチのコミットとそれに付随する ITS の議論を精査した上でリリースに値する変更をリリースブランチへ cherry-pick するのだそうだ。 2012/07/25 追記 Facebook のリリースエンジニアリングについては Facebook のリリースと文化 - Kato Kazuyoshi を参照のこと cherry-pick は無いわー、というのは置いておくとしても、リリースという極めて重要な作業が特定の人たちに委ねられている点に恐ろしさを感じた。嫌だと思うのはなぜなのかしばらく考えて、デプロイ作業の属

    デプロイ作業の属人化を徹底的に排除したい話 - @kyanny's blog
  • LimeChat for Mac を改造して社内 SNS のアバターを表示させてみた - @kyanny's blog

    ペパボには社内 SNS のタンパクというサイトがあり、ペパボスタッフはみんなこのタンパクでコミュニケーションを取っています。毎日の日報や会議室の予約、遊びや勉強会などの社内イベントの告知も全部タンパク上で行われています。そのタンパクと双璧をなす社内のコミュニケーションツールに IRC がありますが、スタッフが増えるにつれて「IRC のニックネームと名(と顔)が一致しない」という悩みがでてきました。 スタッフみんなで知恵を出しあって解決方法を考えているのですが、「IRC にタンパクのプロフィール画像が表示されたら誰が誰かもっとわかりやすくなるのになぁ」と思ったので LimeChat for Mac を改造してみました。 kyanny/limechat at showTanpakuAvatar https://github.com/kyanny/limechat/tree/showTanpa

    LimeChat for Mac を改造して社内 SNS のアバターを表示させてみた - @kyanny's blog
  • Jenkins に bundle update した上で Pull Request させる - @kyanny's blog

    皆さん bundle update してますか?ぼくは忙しさにかまけてついサボりがちなのですが先日何ヶ月ぶりかにやってみたらけっこういろんな gem がアップデートしててヒヤリとしました。 bundle update 忘れは今後もまたやってしまいそうだと思い、なにかこれを解決する方法がないか考えたところ、 マメにやるのは無理。余裕があればやるけど忙しくなったら忘れる。自分の意識が低くなっても破綻しない仕組みを作るべき 差分が小さくても Pull Request を出すのは悪くない。というか Pull Request は毎日全員が見るし放置されにくい bundle outdated の結果をメールするのもお手軽そうだけど、メールなんてどうせ見ない (pendaxes がいい例で、毎朝メールがきても痛くも痒くもない) ということで「Jenkins に毎週 bundle update したブラン

    Jenkins に bundle update した上で Pull Request させる - @kyanny's blog
  • あるウェブアプリケーションプログラマの一日 〜 ペパボ・ 30days Album 編 - @kyanny's blog

    ペパボに入社して七ヶ月経ちました。特に区切りがいい日ではないけど、ここ何日か退職とか転職の話題を多くみかけて、そういえば入社したその後のことをあまり書いてないなと思ったので書きます。 僕はホスティング事業部 30days Album チームというところに所属しています。名刺の肩書きはプログラマで、もちろん 30days Album の開発にあたるのが主な仕事です。開発、とひとくちにいっても内訳はいろいろで、文字通り新しい機能を開発するためにコーディングすることもあれば、データベースのチューニングのようなインフラ・運用寄りのこともするし、ユーザーサポートもやっています。 入社前は PerlRuby のコードを 50% ずつくらいの割合で書くことになるのかなーと思ってましたが、いまは Perl はぜんぜん書いていなくて RubyJavaScript を 50% ずつくらいの割合で

    あるウェブアプリケーションプログラマの一日 〜 ペパボ・ 30days Album 編 - @kyanny's blog
  • #isucon2 に参加しました - @kyanny's blog

    #isucon2 に参加しました。とても楽しかったです。ありがとうございました。最終スコアは五位という結果に終わりましたが、うまくいったこともダメだったこともひっくるめて自分の実力は出せたので過程には満足しています。 事前準備 昨年の isucon では雰囲気に飲まれてほとんど何もできないままタイムアップを迎え、不意な結果に終わりました。今年は去年の反省を踏まえて、チームメイトの @kentaro さんと @tnmt さんと事前にある程度の方針を決めて臨みました。 言語は基 Ruby を選ぶ。仕事で使っているし、アプリケーションサーバの運用や rbenv などの周辺ツールの扱いにも慣れているので。とにかく手に馴染んだものを選ぶ。「なんとなくはやそう」みたいな曖昧な理由で node を選んだりしない。 コードは GitHub にでも置いて、 Capistrano で一発デプロイできるよう

    #isucon2 に参加しました - @kyanny's blog
  • github に登録する公開鍵ファイルを id_rsa.pub じゃない名前で使いたい→ ~/.ssh/config で解決 - @kyanny's blog

    github_id_rsa.pub とかを別につくって git コマンドにはそっちのペアを鍵ファイルとして使って欲しいんだけどうまくいかない。 $ export GIT_SSH="ssh -i ~/.ssh/github_id_rsa" $ git clone git@github.com:XXXX/XXXX # Permission deniedGitのリポジトリにsshでアクセスする | Hiroaki's blog をみて warpper つくってみたけどやっぱりだめ。こちらは ssh コマンドがヘンになるみたい。 $ echo '#!/bin/sh shift exec ssh -i ~/.ssh/github_id_rsa $*' > ~/bin/git-ssh $ export GIT_SSH=$HOME/bin/git-ssh $ git clone git@github.c

    github に登録する公開鍵ファイルを id_rsa.pub じゃない名前で使いたい→ ~/.ssh/config で解決 - @kyanny's blog
  • ペパボの社内勉強会で Fixture Replacement について発表しました - @kyanny's blog

    ペパボ社内の RSpec 勉強会で Fixture Replacement について発表しました。実際は RSpec に限らずテストに関する話題を幅広く扱う勉強会でしたが。社外に公開しても差し支えない内容なのでスライドを公開します。 話す内容を補うために用意したスライドなので説明不足だったり例がイマイチなところもありますがご容赦ください。テスト環境まわりのツールについては自分自身まだまだ手探りで使っているので、何かの機会にぜひ識者の意見を伺いたいものです。願わくば Shibuya.rb のような場で発表させていただいて、それに対してツッコミをもらいたいですね。 以下余談です。 「このテイストは GitHub のアレだな」とピンときた方はご名答。 Zach Holman 氏のスライドを大いに参考にしました、っていうかほぼパクリました。Slide Design for Developers を

    ペパボの社内勉強会で Fixture Replacement について発表しました - @kyanny's blog
  • 最近のペパボの技術書読書会について - @kyanny's blog

    最近ペパボでは Lean とかアジャイルとか開発プロセスの改善に関する取り組みが活発で、具体的にどんなことをやっているかは antipop さんと hsbt さんのブログにたくさん書いてあるのですが、そういう全社的な取り組み以外にも有志による読書会・勉強会などもちょくちょく開催されています。 その読書会が今日ひとつ終了しました。以前このブログでも紹介した Working with UNIX Processes をかいつまんで読みました。だいたい週一のペースで一章ずつ、半分くらいの章をピックアップしたので二ヶ月ほどかけたのかな? 職場での『Working With Unix Processes読書会、日終了した。— 北市真 (@KitaitiMakoto) July 11, 2012 次は Crafting Rails Applications を早速来週から読み始めます。その後も Ra

    最近のペパボの技術書読書会について - @kyanny's blog