| @技術/プログラミング

Railsで画面を作っていて、DBを参照せずにselect -> option なHTML(ドロップダウンリスト)を出力したいと思った。DBに入ってない値をドロップダウンリストとして表示する方法。ググったらこういうやり方がヒットした。

このやりが方がかっちょいいのかバッドノウハウなのか判別つかないけど、モデルに定数を書いてそこにいろいろ入れてしまうらしい。以下のような感じ。

class Event < ActiveRecord::Base
  DAYS = ['Monday', 'Tuesday', 'Wednesday', ...]
end

でこれをモデルから参照するときは以下のようにする。

<%= select(:event, :day, Event::DAYS) %>

これでうまいことドロップダウンリストを表示できる。

ところが一点問題があって、このドロップダウンリストで表示したい値が "(ダブルクオーテーション)を含んでいたとする。ダブルクオーテーションはRailsによって自動的にエスケープ処理されてしまうので、 " と表示させたいのに &quot; とか表示されてしまう。Form系のヘルパーメソッドで text_area_tag なら :escape => false とか出来るんだけど、select でそれをやるのは不可能だった。

Railsで文字列のエスケープをせずに出力する方法は一般的に

<%= raw("文字列") %>

とか

<%= "文字列".html_safe %>

だけど、「まさかそれをモデルの中でやっちゃってもエラー出るよね?」と思いながらやってみたらちゃんとエスケープせずにHTMLを出力できた。

モデルクラスのなかにヘルパーメソッドを書くのは気持ち悪いと思うけど、それ以外ではビューの中でイテレータを書いて一個一個エスケープしない処理を書くか、独自のヘルパーメソッドを書くしかない。なんかまどろっこしい気がするのでとりあえずこのやり方で行ってみることにします。

| @労働

荒れた砂浜

いまの会社は労働環境よいんだけど、前働いていた会社がとてもつらかった。どのくらいつらかったかというと、もう辞めてしばらく経つのに、いまだに前の会社にいたころの夢を見てうなされて夜中に目が覚めるくらいつらかった。ある意味トラウマになってしまっている。

つらかった頃のことをここに書いても意味がないことは分かっているし、ネガティブな感情をインターネット上に発露するのは個人的な信条に反するんだけど、セルフヒーリングのために前勤めていた会社のことを書いてみる。

無限サービス残業

  • 22時に帰るときも日報に「本日私用のためお先に失礼します」と書かなきゃいけない雰囲気だった。
  • 「23時に佐川が来るので申し訳ありませんがお先に失礼します」と日報に書いてる女の子とかいた。
  • 社長が「震災のおかげで仕事が減って早く帰れてうれしい、とか言ってるやつは許さない」とか言ってた。
  • みんなサービス残業してるので会社の飲み会に開始時間通りに現れる人はほとんどいなかった。
  • 週末だからと会社のメンバーで飲みに行くなんてことはなく、金曜の夜は2時くらいまで仕事するのが普通だった。

前の会社でまずつらかったのが労働時間の長さだった。もちろん残業代は出ない。完全に違法なんだけど、雇用主と労働者が対立する時代は終わったとか、不満があるなら辞めろとかいうような内容のメールを総務担当者が月に一回くらい送ってよこしていた。自分は弱いから会社に待遇を改善するよう申し出ることなんてできず、短期間働いて辞めることであの環境から脱した。

軍隊っぽさ

  • 上長にメールを送るときには宛名に「様」とつけなければならなかった。
  • 毎晩2時まで働いてたせいで心身を病んだ人が二人いたけど、二人とも「体調管理は自己責任」といって休職中に辞めさせられてた。ちなみに休職中に辞めさせるのは労働基準法違反らしい。
  • 細かく職位が分かれていて社内に軍隊のような階級制度があった。職位によって届くメールやグループウェア上で閲覧することのできるファイルが細かく分かれていた。たとえば上長の書いた日報は部下は読むことができなかった。

全体的に戦時中の日本みたいな会社だった(「欲しがりません 勝つまでは」的な感じ)。ライバルに勝つため・家族を守るために自分を犠牲にしろとか、そんな感じのことを経営陣が言ってた。

職位ごとに権限が異なっていて閲覧可能なファイルに違いがあるのはよその会社でも普通にやってると思うけど、それが露骨かつ過剰に行われている感じだった。Active Directory が Windows Server の外にもやってきて従業員をコントロールしている感じだった。

離職率の高さ

  • 入社してから二ヶ月以内に辞める人が多かった。いわゆるバックレも多かった。
  • 入社一年も経ってないのに入社時期で降順ソートしたとき真ん中くらいになってた。

自分の歓迎会開いてもらったときにすでに入社してから半年経ってた。すぐ辞める人が多いので新人の歓迎会とかはなかなか開いてもらえない。なんか先月入った人最近見かけないなー、と思ったらいつの間にか辞めてたということが日常茶飯事だった。

待遇の悪さ

  • 試用期間の二ヶ月間は各種保険に加入させてもらえなかった。
  • 内定の時に伝えられた年俸と全然違う給料だった。

全体的に、社長に気に入られないと昇級も出世も望めなかった。まぁどこの会社でも多かれ少なかれそうなのかもしれないけど、給与の等級表とかなかったし、どうすればどのくらいの給料をもらえるというような明確な指標がなかった。

労働基準監督署に届けてある就業規則はあるにはあったけど、偉い人の机の前にあって簡単に読める雰囲気じゃなかったし、そんなことしてる暇あったら仕事しろと注意される感じだった。ボーナスが支払われるのはいつか、基準額はいくらなのか、など労働契約に関する諸々のことを知らされない状態で働いていた。

技術力よりも人間力

  • 技術について熱っぽく語るとめんどくさいやつみたいな扱いを受けた。
  • 出世するにはエンジニアをやめてプロジェクトマネージャーにならないといけなかった。
  • テストコードとかなかった。テストは全部手動だった。
  • 勤務時間のうちコード書いてたのは25%くらい。あとは全部ドキュメント作成だった。

これらの開発カルチャーに加えて、会社が依拠する技術が Microsoft や Adobe などプロプライエタリなものが中心であり、UNIX/Linux 系の開発が好きな自分には大変つらかった。Capistrano とか使えば20秒くらいで終わりそうなことを手動・目視確認で行っていて、技術面のアナクロニズムに耐えられなかった。

インターネットのことを好きな人がいなかったのも辛かった。はてなとか誰も見てなかったし、 Twitter アカウントはみんな隠してた。そもそも Twitter よりも Facebook な感じだった。ソーシャルネットワークはプロモーションのツールとしてしか認知されていなかった。Twitter なんて技術的には大したことない、が社長の口癖だった。エンジニアも誰も GitHub とか使ってなかった。

不用意に転職したのが間違いだった

一番の間違いは、Web制作の会社に入ってしまったことだと思う。Twitter で見かける楽しそうに仕事してる人たちはだいたいみんなWeb系のベンチャー企業とかで働いてた。制作会社とWeb系ベンチャーでは全然雰囲気が違うと思う。制作会社にはクライアントがあり、その人たちの言うことは絶対だから、アホみたいなリクエストにも全力で答えなければならない。

Aという企業があってその会社のユーザーのためのサイトをWeb制作会社が作っているとする。すると要求の流れが以下のようになる。

A社製品のユーザー -> A社(顧客) -> 営業担当 -> プロジェクトマネージャー -> エンジニア・デザイナー

エンジニア・デザイナーはこのサイトの制作に携わるプレーヤーの中で最下層にある。顧客の要望を営業担当が聞いてきて、それをプロジェクトマネージャーが伝え聞き、エンジニアとデザイナーに指示を出す。このメカニズムのなかで軍隊的な階級構造ができる上がるのではないかと感じる。良くない仕組みだと思う。

近況

前の会社には一年近くいたけど、何か身についたかと問われると何も身についてない。自分の人生の中で最低最悪の暗黒時代だった。がんで入院していた頃の方がまだ良かったような感じさえする。

この記事のような愚痴というか後悔の塊みたいな文章をネットにのっけても何の得にもならないんだけど、職探しは本当に真剣にやった方がいいと身をもって思った。確かに結局のところ会社に入るまでその会社が自分に合っているのかどうかはわからない。しかしだからといって適当に就職活動して就職するとものすごく後悔することになる。時間がかかってもいいから就職・転職先はじっくり見極めてから決めた方がいいと思う。

実は前の会社に入って二ヶ月経たないくらいのときに、入った会社を間違ったと思って転職活動を行った。在福岡の良さそうなベンチャー企業を見つけたので面接を受けに行った。技術的には面白そうなことやってそうだったが、外に向かって社内のことを明らかにしていない会社で、中のことが全然わからなかった。なので結局内定を辞退した。面白そうだけど社員のブログやTwitterが読めないとなるとものすごく不安になる。

ペパボに入ったのは、アラタナ研究所所長の rytich さんのかつての職場で、rytich さんに声かけてもらってペパボの人と一回酒飲んだことあったし、かぶりものの社長とか創業者の家入さんとか何となく知ってて安心感があったから。とはいえどんなことやってるかよくわかんなくて不安がないわけじゃなかった。そういうよくわかんなさを吹き飛ばしてくれたのは刺身☆ブーメランさんのブログだった。

これ読んで「あ、なんか大丈夫そう」と思ったから面接受けに行った。

刺身さんにはペパボに入ってからもRailsのこととか教えてもらって世話になってるけど、あの記事読まなかったらペパボ受けようと思わなかったかもしれないと思うと何とも言いようのない感謝の念がわいてくる。ありがとうございます。もちろん rytich さんも、もうペパボ退職されたけど taketin さんもありがとうございます。

雑然とした感じの日記になったけど、自分はいま楽しく働いてます。

追記 2019/05/13

| @技術/プログラミング
本当は tech.portalshit.net に書くべきネタなのかもしんないけど jekyll 動かすのだるいのでここに書きます。

Node.jsをMacにインストールしてたんだけど(何にも使ってなくてただインストールしてただけ)、NodeがVersion 0.5くらいになってからインストールに失敗するようになった。gcc関連のエラーが出てるっぽい。なんかXcode 4.2が悪いとかネットを検索すると出てくるので、削除してosx-gcc-installer入れたりしたけど結局変わらずだった。Xcodeのバージョンを落として4.1にしてみたりもしたけど効果がなかった。

OS入れ直すしかないかなー、めんどくさいなーと思っていたところ、 `brew doctor` したときの画面を見てたら、「homebrewで入れたopensslとreadlineにシンボリックリンクがはってあってPATHが通ってるから消しとけや」みたいな警告が出た。readlineやopensslはRubyを自分でインストールするときに必要なので入れてた。まさか関係あるとは思っていなかったので `brew doctor` したときに出るこの辺の警告は無視してたんだけど、警告に従って `brew unlink readline; brew unlike openssl` してみたらすんなりNode.jsがインストールできた。

というわけでして、homebrewで入れたreadlineとかopensslを /usr/local 以下にシンボリックリンクするとインストールに失敗するソフトもあるようですので、皆様におかれましてはご注意下さい。

| @技術/プログラミング

Railsで建物名みたいなカラムに building ってのを当ててたら

ActionView::Template::Error (no block given (yield)):

みたいなエラーが出るんですけど、Railsで building って予約語なんですかね。

なんか Rails Wiki のReserved Words You Can’t Use は真っ白だし、古い方のWikiの予約語一覧 にも building は入ってないし。

とりあえず複数形にして対応したけど気持ち悪い。

追記

どうやらMongoidに起因するエラーのようです。

| @技術/プログラミング

MacVimでコピペできなくて(MacVim内のヤンクじゃなくて、他のアプリケーションでコピーしたもののペースト)困ってたんだけど(MacVimでコピペできないんですけど… | tech.portalshit.net)、できるようになりました。原因は mvim っていう、コマンドラインからMacVimを起動するためのシェルスクリプトだった。MacVim kaoriyaのWikiで紹介されてるやつ。

こいつ経由でMacVimを起動したときはどうも他のアプリケーションからのコピペがうまくいかないみたい。

同じくMacVim Kaoriya Wikiで紹介されている、MacVimを起動するコマンドをaliasで化したものを .zshrc に書いたところうまくコピペが機能した。

alias gvim='env LANG=ja_JP.UTF-8 open -a /Applications/MacVim.app "$@"'

同じ問題でお困りの方はお試しあれ。

追記

なんか違うっぽい。alias経由で呼び出してもダメなときはダメだもん。いったい何なんすかね。

| @労働

申し遅れましたが先月末からペパボで働いてます。Ruby on Railsで開発してます。社内IRCがあってVimやEmacs使ってる人がごろごろいて居心地いいです。前の会社よりも早く帰れるようになったのでNEETの頃みたいに毎日ブログ更新したいですね。以上、よろしくお願いいたします。

| @技術/プログラミング

LokkaをCMSに採用している ポータルシット はHerokuで動かしてたんだけど、Lokkaをカスタマイズして使っているためか、デプロイしてもApplication Errorばかり出るようになってしまった。ローカルのMacではうまくいくのに。一週間くらい直そうと努力してみたけど直りそうにないのでHerokuでの運用を諦めてさくらVPS上のUbuntuで運用することにした。すこぶる快適。

Herokuは確かに便利なんだけど、Herokuの中でどういう風にアプリケーションが動いているのかを把握しづらい。ファイルシステムに直接アクセスできないので、ログを見るにも heroku logs とかやんないといけない。

その点、自分で環境をいじれるサーバーだったらウェブアプリケーションのログはおろかシステムログまで見られるし、無理にHerokuで運用してHerokuで運用するために時間を割くのは馬鹿らしいような気がする。