ローカル開発環境のweb serverをthinからnginx + passengerにしてみた

Railsの重いアプリを動かしている際に、開発環境が遅かったので、使っていたthinからnginx + passengerに変えてみました。 rack-mini-profilerで測った結果、2倍位速くなった感じ。

時々nginx + passenger の組み合わせはやるんだけど手順を忘れがちなので、今回はメモしておくことにします。

参考にしたのは Local Rails Development with Nginx, Passenger 4, and Ruby 2 on Mac OS X | The Wayward Traveller だった気がするんだけど、色々つまみ食い的に読みながらやったので他にもあったはず...

前提

  • Mac OS Yosemite 10.10.4を使っています
  • rbenv、homebrewを使っています
  • すでに手元に開発中のRailsのプロジェクトがあります
    • 今回はVersion 3系でした

1. passengerを入れる

% brew install passenger

2. nginxを入れる

% brew install nginx --with-passenger

3. /usr/local/etc/nginx/nginx.confを編集する

http{ 内にpassenger_rootとpassenger_rubyを追加

http {
    include       mime.types;
    default_type  application/octet-stream;
    passenger_root /usr/local/opt/passenger/libexec;
    passenger_ruby /Users/{username}/.rbenv/versions/{your ruby version}/bin/ruby;

http{ 内にserver{} を追加、root 〜 access_logには自分が開発しているrails appの各ディレクトリを指定する

   server {
      rack_env development;
      listen 8080;
      server_name {yourapp.local.com};
      root /Users/{username}/project/{yourrailsapp}/public;
      access_log /Users/{username}/project/{yourrailsapp}/log/nginx_access.log;
      error_log  /Users/{username}/project/{yourrailsapp}/log/nginx_error.log;
      passenger_enabled on;
    }

4. /etc/hostsを編集する

  1. server{}内に追加したserver_nameを指定する
127.0.0.1 {yourapp.local.com}

5. nginxを起動し、動作確認

nginxを起動

% nginx

ブラウザでhttp://yourapp.local.com:8080にアクセス => 自分のRailsアプリが起動していることを確認する

rvmからrbenvに移行した話

今までずっとrvmを利用してきました。Railsを使う際には必ずgemsetを作り、bundle execなどとtypeしなくて良い環境にしておきました。

最近手元の環境が不安定になり、どうも自分の環境だけrspecが通らない、ということがありました。環境を構築しなおすのであればこの際、rbenvに移行してしまえ!ということで、実行してみたのです。

「rbenv rvm 移行」とググると記事はたくさん出てくるので、それらを参考にさせて頂きつつ粛々と実施。 (rvm implode実施時は、数年分のrvmのgemsetを一気に消すと思うとドキドキしました)

sstephenson/ruby-build · GitHub sstephenson/rbenv · GitHub RVMからrbenvに移行した手順まとめ · GitHub

githubへの記載や各方面のblogなど通りにやれば問題なくできたので詳細は省きます。が、1点詰まってしかも解決できなかったことがあったのでメモ。

rbenvでruby-2.1.1 を入れようとすると、

% rbenv install 2.1.1                                                                                                                                        [~]
Downloading ruby-2.1.1.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/c843df31ae88ed49f5393142b02b9a9f5a6557453805fd489a76fbafeae88941
Installing ruby-2.1.1...

BUILD FAILED (OS X 10.10.4 using ruby-build 20150803)

Inspect or clean up the working tree at /var/folders/_3/tbzctkwd5ndbyv_y0fq6mys40000gn/T/ruby-build.20150814163548.8417
Results logged to /var/folders/_3/tbzctkwd5ndbyv_y0fq6mys40000gn/T/ruby-build.20150814163548.8417.log

Last 10 log lines:
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for cd using physical directory... cd -P
checking whether CFLAGS is valid... yes
checking whether LDFLAGS is valid... no
configure: error: something wrong with LDFLAGS="-L/Users/kouno/.rbenv/versions/2.1.1/lib "
make: *** No targets specified and no makefile found.  Stop.

うーん、何故でしょうねぇ......

brew doctorで怒られた箇所を全部直すとか、xcode入れ直すとか色々やったんですけど、結局解消しませんでした。 結局2.1.2を入れたら難なく入ったので、そのまま使っています。

rbenv とtypeするのに慣れておらず時々ひっかかってますが、とりあえず問題なく開発を続けることができております。

ヘルシープログラマを読んだ感想を少しと、個人的な健康維持活動について

購入当時Amazonでは在庫が無かったのですが、早く読んでみたかったので、紀伊国屋書店の少ない在庫を取り置きしてもらった上で買ってきました。

ヘルシープログラマ ―プログラミングを楽しく続けるための健康Hack

ヘルシープログラマ ―プログラミングを楽しく続けるための健康Hack

食事の管理や運動による健康管理を行うことで、プログラマーを続けていく上での不健康な症状を解消できるよ、やりかたはこうだよ、と指し示してくれる本です。 これ通りにやっていれば確かに、普段プログラミングに没頭している人の健康は改善されるでありましょう。

そしてこの本を手に取る方も、自分なりのノウハウを1つや2つは蓄積しているのではないかと思います。 ということで、個人的に試したこと、効果があったなぁと思ったことを列挙してみます。

エアロバイクを漕ぎながらゲームをする

朝15分ちょっとのエアロバイク漕ぎをするだけで、血液の循環が改善され、頭の働きも良くなり、更に夜の寝付きもぐっとよくなりました。

一時期どうしても寝つきが悪く、グリシンサプリメントやラベンダーなどのハーブなど、いろいろ試したのですが、結果としてこれが一番自分には合っていました。

ただエアロバイクを漕ぐだけだと飽きるので、iPhonePlayStationでゲームをしながら漕ぎました。両手はコントローラを持っているので、エアロバイクの椅子の上にバランスクッションを置き、まっすぐ姿勢を保持しながら実施することで、腹筋周りの鍛錬にもなります。

f:id:ginkouno:20150812203536j:plain

レベル上げが必要なゲームなど、正直「こんなことやってていいのか」的な罪悪感があるのですが、運動していると思うと軽減されて良いです。

またどこかの本で読んだのですが、1日を趣味で始めて趣味で終えると精神状態が良好に保てるとのこと。ゲーム好きの人であれば、例えば朝起きて30分エアロバイクとゲーム -> 仕事 -> 夜30分エアロバイクとゲーム などと組み立てると、心身ともに大変健康な状態を生み出すことができます。

余談ですが、真・戦国無双をやりながらエアロバイクを漕いでいたところ、「逃げる敵を追いかけているシチュエーションの時など、ペダルを漕ぐスピードが速くなって面白い」と嫁に指摘されました...

エアロバイクを漕ぎながらプログラミングをする

前述の方法で、両手フリーな状態でのエアロバイク漕ぎを習得したため、アイリスオーヤマのスチールラックを買ってきて、エアロバイクの前方に配置してテーブルにし、そのままプログラミングをしてみました。

進みはするのですが、汗かきな自分はすぐに手先まで汗まみれになり、PCのキーが湿ってきて壊れることに危険を感じ、あまり集中できませんでした。

ショートヨガ

aloha yoga detox [DVD]

aloha yoga detox [DVD]

何故私がこのDVDを手に取ったのかははっきりとは思い出せないのですが、多分ヨガの達人のスジっぽい体型と不敵な笑みが苦手で、それを避けた結果だったのではないかと推測します。

結果としては大変効果的なDVDで、掲載されている15分位のショートヨガ・プログラムを継続的に実施することで、頭が冴え、右腰から右足の膝裏あたりまでの鋭い痛みも解消されました。

午後のけだるい時間に行うと効果てきめんなのですが、火の呼吸なる鼻からハナクソを飛ばすような勢いの激しい呼吸法を行う必要があるので、職場でやると目立ちます。

リクライニングベッド駆動開発

根詰めて作業をすると、右肩から首、頭にかけて、こりと痛みが発生します。 以前腰を痛めた時に、こんなのを作って対処をしたのですが、

f:id:ginkouno:20150812203852j:plain

数百円で作った割には結構良かったんですね。

で、もっと本格的にと思いまして...

収納式電動リクライニングベッド AX-B551E

収納式電動リクライニングベッド AX-B551E

鍼灸師の先生と「パソコン使う時にリクライニングベッドでも使おうかと思ってるんですが(笑)」「それは、とても良いですね(真顔)」という会話をしたのもあり、またアーロンチェアなど高い椅子と比較すれば安いもんよー!!などと勢いをつけて買ったのでした。

参考にしたのはこちら

あなたも今日から布団人!!3万円で始める介護ベッドでプログラミング生活 | 株式会社インフィニットループ技術ブログ

ベッドもテーブルもほぼ同様です。

メリット
  • 肩こり/腰痛が激減
  • 体調が多少悪くても、なんとか進捗がある
  • 体調を回復させながら仕事ができる
デメリット
  • 玄関に行くのが遅れて、配達が来たのを逃す
  • 部屋が一気に狭くなる
  • 気合はあまり入らない

一旦スタンバイしてしまうと立ち上がる気が失せてしまうので、実施する際にはあらかじめタスクを洗い出してから、それを淡々とこなす心がけでコックピットに乗り込むといいのではないかと思います。

インタビューの教科書

読みました。

インタビューの教科書

インタビューの教科書

純粋にインタビューのノウハウが詰め込まれた本です。 マーケティングのためのインタビュー専門の本ではなく、あらゆるインタビューに関する汎用的な内容でした。

コミュニケーションの基本的な事から話の掘り下げ方、メモの取り方やタイプ別の話の持って行き方など、著者の方の豊富なインタビュー経験に基づいたリアルなノウハウが詰まっています。

ページ数は多くなく、図が多くてさらっと読める本でした。

今まで読んだ本なども参考にして、今回やりたいインタビューの質問項目はまとまってきているので、この本をざっくり頭に入れた上で、インタビューに挑みたいと思います。

アンケート調査入門

なぜこんなに同じカテゴリの本の話ばかりかというと、以前高専時代の教官に「同じカテゴリの本を7冊読め、そうすれば職場でその分野の第一人者になれる」みたいな事を言われたのを思い出し、去年あたりからそれに近いことを実践しているからです。

何冊も同じカテゴリの本を読んでいると、難解なところでも違う角度から語られているので理解が進んだり、異口同音で述べているところは「常識だったり重要なところなんだろうなぁ」などと判断できたりする気がしています。

ということで読みました。

アンケート調査入門

アンケート調査入門

  • 作者: 朝野熙彦,丸山 泰,五條 雅史,石原 聖子,小代 禎彦,高見 健治,星野 朝子
  • 出版社/メーカー: 東京図書
  • 発売日: 2011/10/08
  • メディア: 単行本(ソフトカバー)
  • 購入: 2人 クリック: 46回
  • この商品を含むブログ (2件) を見る

だいぶ濃いぃ本で、アンケートというものの歴史的経緯の説明から、プロジェクトにおける位置付け、そして実務に関する詳細な説明まで一通り解説してあります。

今回アンケート手法について情報を集めている理由は、プロダクト開発初期(半ば企画段階)の仮説の検証をしたいからなのですが、この本によるとサービス・プロダクトを企画/開発/運営していく上でのアンケートの利用するタイミングというのが何箇所かあり、自分が今やりたいことはその第一段階あたりに位置するようです。

そういった俯瞰的な話から、実際にどのようにアンケートを設計するか、そして外注する場合は...など、実際に調査を専門としている実務についてとても詳しく書かれています。 完全に消化するのはだいぶ大変な気がしますが、それでもこの本のタイトルは「アンケート調査入門」なんですよねぇ(^^;

今回の目的のためだけではなく、プロジェクトを進める上で長く付き合っていける本であると思いました。

腰を痛めた

テニススクールでのレッスン中に、腰を痛めました。

  1. レッスンにJoin、遅刻気味で準備運動やストレッチが不足していたかも
  2. フォアストロークを打つ時に、なんとなく力が入らず
  3. 半分くらい消化したところで、あれあれ、腰に違和感があるぞ
  4. そこから悪化が明確に。最後のゲームをする時にはもはや、サーブを打つために腰を曲げることすらできず

「ぎっくりドカンと来た」 というよりは、「じっくりズーンと来た」感じです。

その日の夜にかかりつけの鍼灸師の先生に見てもらい、だいぶ良くはなりましたが、しばらくテニスはお休みです。風邪が治ってようやく感覚が戻ってきたと思ったところで、だいぶ悲しい...

さて、完治した後の対策を今のうちに考えておこうと思います。

  • テニス前の準備運動をちゃんとやる
    • 特に遅刻した時に飛ばしがち。実施を確実にするしかない
  • 腹筋/背筋運動で鍛えておく
    • うーん、これはどうなんだろう。風邪で休んでいたとはいえ、それ以外の時はずーっと筋トレしていたのだけれども...
    • どちらにしろ、今週から筋トレを再開する予定だったので、腰完治後には筋トレする
  • 柔軟性を高める
    • これが一番問題な気がする。スポーツストレッチ系の店に行った時に、どこでもハムストリングスと中臀筋周りの硬さを指摘される。どっちも腰に近い場所
    • ストレッチメニューを考えて毎日実施するか、あるいは週一でストレッチに通う

マーケティング・インタビュー

ざっと読みました。

マーケティング・インタビュー 問題解決のヒントを「聞き出す」技術

マーケティング・インタビュー 問題解決のヒントを「聞き出す」技術

リーン顧客開発に続き、アンケート/インタビューの設計のために買いました。

質問項目をどう設計するかについて知りたかったものの、 どちらかというと「いかに聞き出すか」について重点的に書かれてまして、 役には立つものの、重要なのは目の前よりも一歩先かなぁと感じました。

といっても、サブタイトルに「聞き出す技術」とあるので、看板通りの内容です。

質問項目を作った後に、仲間と模擬インタビューを行う予定なのですが、 最初はきっとしっくりこないと思われるので、その時にはこの本にすがりたくなることでしょう。

ということで、もう少ししたら再読予定。