モノノフ日記

普通の日記です

はてなブログに移行しました

はてなダイアリーで書いてた記事をインポートして、こちらにまとめました。 はてブやリダイレクトもちゃんとやってくれるみたいなので特に不具合ないと思います。

色々環境変わったりしているのでぼちぼちブログも再開していきますのでよろしくお願いします。

Try WiMAXお試し中

新しいiPadを購入しましたがWi-Fi版なのでモバイルルーター欲しいなーと思い
Try WiMAXに申し込んで試してます。

機器が到着してから今日がちょうど6日目です。
ネットでは繋がらないとか書かれてますが今のところ自分の行動範囲で繋がらなかったのは
地下鉄の南北線ぐらいでそれ以外は3Gより明らかに快適でした。

建物や地下に弱い、というのはよく見る意見ですがオフィス内で自宅でも問題ないレベルです。
下りが2M~4M程度は常に出ています。iPhoneのSpeedTestというアプリで計測してます。

レンタルした機器もURoad8000で持ち運びやすいし、バッテリー持ちもなかなか良いです。
公称の9時間はもたない気がしますが6~7時間は持ちそうです。

来週からオフィスの場所が変わって飯田橋から恵比寿になるのでつながり具合がどんなもんなのか試してみたいと思います。

Symfony2でprofilerの動作が重くなってきたときの対応方法

Twig上で {% render ... %} を使ってコントローラの再利用していくとrenderで生成されるResponseオブジェクトに対してもすべてプロファイルが走るみたいでやたらページ描画が遅くなったりします。

config_dev.ymlにonly_master_requestsオプション書けばページをレンダリングするメインのコントローラ処理しかプロファイルしかしなくなるのでサクっと動くようになります。

framework:
    router:   { resource: "%kernel.root_dir%/config/routing_dev.yml" }
    profiler:
        only_exceptions: false
        only_master_requests: true

このあたりの設定をうまく使い分けて行けば効率良く開発できそうですね。

全文検索エンジンgroongaをさわってます

全文検索に使おうと思ってgroongaを最近さわっています。
大体のことは本家のドキュメントを見ながらやれば出来ました。日本語ドキュメント最高です。

ちょっと挙動がわからないところがあったので1点メモ。
COLUMN_SCALARで定義してるカラムに全文検索のインデックスを作ってる別テーブル(名前をarticleとします)を型として宣言して検索するとき、

"--query article.name:@東京"

だと検索できるけど、下のコマンドだとノーヒット。

"--match_columns article.name --query 東京"

んー、記法が違うだけで同じことやってると思ったんだけど違うのかな。

追記

実際にスキーマ使って説明しないとよくわからないので再現スキーマを書きます。
groongaのバージョンは1.3.0を使っています。

まずスキーマ定義
> table_create momoclo TABLE_HASH_KEY ShortText
> table_create from_pref TABLE_HASH_KEY ShortText
> table_create bigram TABLE_PAT_KEY|KEY_NORMALIZE ShortText --default_tokenizer TokenBigram

> column_create from_pref name COLUMN_SCALAR ShortText

> column_create momoclo name COLUMN_SCALAR ShortText
> column_create momoclo from_pref COLUMN_SCALAR from_pref

> column_create bigram pref_index COLUMN_INDEX|WITH_POSITION from_pref name
挿入するデータ
load --table momoclo
[
{"_key": "pink", "name": "佐々木彩夏", "from_pref": "2"},
{"_key": "red", "name": "百田夏菜子", "from_pref": "4"},
{"_key": "purple", "name": "高城れに", "from_pref": "2"},
{"_key": "yellow", "name": "玉井詩織", "from_pref": "2"},
{"_key": "green", "name": "有安杏果", "from_pref": "3"},
]

load --table from_pref
[
{"_key": "1", "name": "東京都"},
{"_key": "2", "name": "神奈川県"},
{"_key": "3", "name": "埼玉県"},
{"_key": "4", "name": "静岡県"},
]
queryで全文検索

momocloテーブルのfrom_pref.nameに--queryを利用した全文検索すると結果が返ってきます。

> select momoclo --query from_pref.name:@埼
[[0,1329493671.13354,0.000860929489135742],[[[1],[["_id","UInt32"],["_key","ShortText"],["from_pref","from_pref"],["name","ShortText"]],[5,"green","3","有安杏果"]]]]

match_columnsで全文検索

match_columnsで書くとノーヒット。

> select momoclo --match_columns from_pref.name --query 埼
[[0,1329493738.70121,4.79221343994141e-05],[[[0],[["_id","UInt32"],["_key","ShortText"],["from_pref","from_pref"],["name","ShortText"]]]]]

マニュアル読んだ限りだと両方とも結果返ってこない、だと思って試しにやってみたら片方は結果返ってきたので「何で?」状態なのです、、、。

「ドラゴン・タトゥーの女」ジャパンプレミアに行ってきました

1/30(月)の話ですが行ってきました。
WOWOWのプレゼント応募で当選しました。ありがとうございます。

監督のデビット・フィンチャーとヒロインのルーニー・マーラの舞台挨拶もあったんですが、1Fの後ろの方だったので大分遠かったです。
フィンチャー監督はユーモラスな人でジョークばっかり言ってました。
ルーニー・マーラはシャイな女の子って感じ。舞台に登壇して司会者から一言あいさつお願いしますと言われて「Hi~」しか言ってなかったw

映画はスウェーデンの美しい舞台で起こるミステリーの話です。原作は未見なので前知識無しで臨みましたが2時間38分という長い上映時間があっという間でした。
一番の見所はルーニー・マーラがとにかく魅力的。
最初は「ん?なんだこのファンキーなやつは」と思ってたんですが最後は「めっちゃかわええ・・・」に変わってました。特に映画のラスト5分のシーンが良かったです。(本編関係ないけどね)

主役のダニエル・グレイグも007とは全然雰囲気が違ってました。007シリーズが最近凍結されてるのも良かったのかも。
あんまり完璧人間なイメージだと今回の役は微妙な気がしたので。
最初はダニエル・グレイグが1人で捜査してるんですが、2人で事件の謎を捜査していくようになってからはラストシーンまで駆け抜けるように話に釘付けになってました。

あんまり書くとネタバレしそうなのでもう自粛します。
セブンみたいなグロい殺人シーンや怖いシーンは無いです。
ジャパンプレミアは無修正のR-18で、日本公開時はR-15になるらしいのでどのあたりが削られるのか気になるのでもう1回見に行くと思います。

音楽はNINのレズナーとバッチリ雰囲気が合ってて今回も最高です。YouTubeで見つけたので貼っておきます。

githubを会社で導入してみて感じたこと

会社で利用するソースコードバージョン管理システムをgithubに移行しつつあります。

gitは以前から個人で利用していたのでブランチ管理のメリットや気の利いたマージなどはもう知っていたのですが
githubで同時に複数人で開発をする、という状況は初めてだったので感じたことを残しておきます。

導入

まず当然なのですが開発スピードは上がってます。
これはgithubというよりgitの分散リポジトリの仕組みが大きいです。svnsvk使うと効率が良いのと同じことです。

そこで問題になるのが各開発者のリポジトリ間をどうやってマージさせていくのか、って所なんですが
masterからリリース用のブランチを切ってそこにpull requestを投げて他の開発者に確認してもらってからマージする、という流れで今は運用しています。
投げられた側が確認してマージをコミットするので責任は一蓮托生としてます。
人数増えるとこの運用だと回らないと思いますが、席から全員顔が見える範囲くらいの人数規模だったら大丈夫だと思ってます。

発見

この運用フローを導入することで今まで見えてなかったものが色々見えてきました。
pull requestで運用する、ということは強制的に他の人の開発コードを読む機会が増える訳です。
そうしているうちに気づいたのが実装コードの意識の低さ。とりあえず動いてるレベルでコミットされてるのが多数。

愕然としました。
今までちゃんと見てなかった自分もアレなんですがこのレベルでプロダクトって言われると正直辛い。
コピペで意味を理解せずに済ませているところが多かったり、メンテナンス性を考えてなかったり、コードの重複を余裕でやってたり、とかです。

鍛錬

おそらく「ソースコードを読む」という習慣がないんだと思ってます。
RailsjQuery、Symfony2、Djangoなどの凄腕の技術者たち、いわゆる天才達が作った
フレームワークソースコードがネットを介してすぐ読める時代に住んでるのに正直もったいないです。
今挙げたフレームワークのコードを1つでもちゃんと追ってたら恥ずかしくてあんなコード書けなくなると思います。

あと今までの経験上「あとからやる」は基本やらないです。
とりあえず動くもの、で適当に書いたコードは大抵の場合適当なままで終わります。
だから、とりあえず動くものでも全力で取り組むべきだと考えてます。

それと本読もう。いろんな言語のベストプラクティス本とかね。
Google先生に興味ある単語を入れると、もっともらしい答えをリストアップしてくれるせいで、
知識のインスタント化が進んでしまって、身につけるところまで至ってないことが多い気がします。
あとGoogle先生を盲目的に信用しすぎるのはアレです、いわゆるステマです。(言いたいだけ)
様々な媒体から知識を高めていって利用できる情報なのかそうでないのかを分別できる大人になりましょう。

これらを持続できれば、35歳プログラマ限界説とか関係ないんじゃないかと思います。

最後に昔のマンガになりますが「シュート!」で奇跡の11人抜きをやってみせた久保嘉晴の言葉を借りて駄文を締めさせていただきたいと思います。

ソースをコミットしたら観客すべてが自分を見ていると思え。

「ものすごくうるさくてありえないほど近い」という映画の試写会に当選しました

f:id:Kiske:20120203002008j:plain

当たっちゃいました。日時・場所は2/9(木)movix川口です。
1/30に「ドラゴン・タトゥーの女」のジャパンプレミアに当選したばっかりなので立て続け。

今年の運をもう使い果たしたような気がします。
映画の内容は予告編観たくらいであんまり把握してないので前知識無しで臨みたいと思います。原作小説があるみたいです。