| @映画/ドラマ/テレビ

誰がため

評価 : ★★☆☆☆

あらすじ

第二次大戦中、ナチスドイツに占領されてた頃のデンマークの話。レジスタンス活動に身を置く二人の男が主人公。祖国の自由のためと信じて行ってきた活動が実は…。

レジスタンス活動っていうと崇高なものととらえられがちだけど、実はレジスタンスの中にも悪いやつがいて、実行部隊が悪いやつにいいように利用されていたこともある、みたいなストーリー。実行部隊のうちの二人に焦点を当てているんだけど、二人とも祖国の自由のためと信じて家族を犠牲にしたり、信条に反する行い(女性を殺す)なんかをやるんだけど、後の方になってナチスの協力者を殺しているつもりが、反ナチス活動を支援していた人物を殺害していたことが判明して衝撃を受ける。

知っておかなければならない歴史の真実だとは思うけど(この映画は実話ベース)、全体的に暗くてあまり好きにはなれなかった。カメラワークも不自然。ドキュメンタリーっぽさを出したいのか、不自然な寄りや引きがある。ただ、二人の人物が会話しているシーンで、話している人物の目にフォーカスを合わせ、その人が話し終えたら次に話をする人物の目にフォーカスを合わせるテクニックは、スリリングな会話の雰囲気を伝える演出効果があったと思う。でもやっぱ慣れなかったけど。

蛇足だけど、デンマーク語は全然分からないのに見ていて「???」みたいな感じにならないのはゲルマン語だからかなと思う。ドイツ語よりも英語に言葉の響きが近くて、不思議な心地よさがあった。

ポータルシットの方にも感想を書いたことはないんだけど、デンマーク映画では『恋に落ちる確率』という映画がとても好きです。なんかこっちの方を見返したくなる映画でした。

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

『Railsによるアジャイル〜』とかのコードはViewの部分がスゲーシンプルで、ロジックがほとんど書いてない。これに慣れると、CakePHPに戻って自分が作ってるウェブアプリを見たときに、Viewに結構ロジックが書いてあって愕然とする。例えばフラグをたてて条件にマッチすれば日付を表示し、マッチしなければ表示しないとかしたいとするじゃないですか。Controllerでそういう設定できなくないけど長くなる。Viewの中に書いてしまったら数行で済むし。

だから僕の作ってるCakePHPアプリはMVCとか名ばかりでViewのコード超きたない。入れ子になったif文がたくさんあるし、正規表現で日付の書式変更とかまでやってる。さすがに関数とかは定義してないですけどね。

そもそもCake FoundationのCakeBookも結構Viewにロジックが書いてあったりする。というかかなりハードに書いてある。CakePHPってViewとロジックを分離させるのが難しいのかな。

加えて、Controllerも結構ひどいことになってる。本当はModelに書くべきことを結構Controllerに書いている気がしないではない。サイト検索のためのメソッドとか200行近くあるし、joinとかしまくり。

MVCでロジックとヴューを分離することでデザイナーがViewを触れるようになって分業が進むかもとか思ってたけど、到底そんな状況にないですね。

| @散財

iPhoneはSkypeが使えて便利なのは皆さんご存じの通りだと思います。いままでSkypeつったらパソコンの前に座っていなきゃいけなかったけど、iPhoneでSkypeできたら普通に携帯で電話するみたいにふとんに寝っ転がって話とかできて便利です。また自室はSoftBank携帯の電波の入りが悪いのでWi-Fi経由で話ができるSkype(Skypeout)はその点でも便利です。

そういうわけで昨夜Skypeoutで話してたんですけど、通話料金は1分3円くらいなはずなのに1000円近く残ってたクレジットが一瞬でなくなってしまった! どういうことかなと思ってびっくりしたんですけど、こういうことでした。

Skypeout

NTTの固定電話とIP電話だったらIP電話の方が安いだろうと050の番号にかけてたんだけど、よくよく見てみるとSkypeoutのIP電話向け通話料は携帯向けと同じ! ぎゃふん。

そういうわけなので、よい子の皆さんはSkypeで遠くに住んでるお友達や家族と話すときは固定電話にかけましょう。間違っても050のIP電話にかけてはダメです。

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

Gitでbranchの効率的な使い方みたいのがよくわからない。

  • 実験的な機能をつけたい

  • ブランチを分ける(例えば開発用に alternate というブランチを作る)

  • 開発する

  • 開発完了後、 master にマージ

みたいな感じかなと思ってた。

しかし実際に運用してみると、実験的な機能の実装の他に、日常的にmasterでコードの改良みたいな作業があり、alternateで開発が完了した後にmasterにマージしたら多分コンフリクト起こりまくりになるような気がしてきた。

それで日常メンテみたいな作業はmasterブランチで行い、それをalternateにマージするという手順をとってる。正しい開発方法かどうかはわからないけど、一応alternateブランチもmasterの最新の変更を追跡できる。んでalternateではしこしこ開発を続けて、開発完了時にmasterにマージしても多分派手なコンフリクトは起こらないんじゃないかと思ってますがどうなんでしょう。

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

こういうコード書いてます。

function getAttrName(attrObj) {
    var attrName = attrObj.firstChild.data;
//  items = document.getElementsByClassName('item');
    var items = $('li.item');
    $(items).fadeOut('slow');
    for (var i = 0; i < items.length; i++) {
    //  var keywordList = items[i].getElementsByClassName('keyword-list');
        var keywordList = $('.keyword-list', items[i]);
        for (var j = 0; j < keywordList.length; j++) {
            //var keywords = keywordList[j].getElementsByTagName('li');
            var keywords = $('li', keywordList[j]);
            for (var k = 0; k < keywords.length; k++) {
                if (attrName == keywords[k].textContent) {
                    $(items[i]).fadeIn('slow');
                }
            }
        }
    }
    getCurAttr(attrName);
}
function getCurAttr(attrName) {
    var curAttr = $("#keySelector li a");
    for (var l = 0; l < curAttr.length; l++) {
        if ($(curAttr[l]).text() == attrName) {
            $(curAttr[l].parentNode).addClass('current-keyword');
        } else {
            $(curAttr[l].parentNode).removeClass('current-keyword');
        }
    }
}

やりたいことは以下のような感じ。

  1. onclickで attrObjgetAttrName に渡される
  2. クリックされた文字列を attrName に格納
  3. すべての item をjQueryを使って非表示
  4. item の中の ul.keyword-list li 内のテキストに一致したらjQueryで表示

Firefox/Safari/Operaでは問題なく動く。しかしIEが全滅。最初は getElementByClassName とか使ってるからかと思ってたけど、その辺のやつをコメントアウトしてjQueryセレクタを使ってオブジェクトを取得するようにしてもダメ。なんかループの処理とかが怪しいんじゃないかと思ってる。ループ処理もjQueryに書き換えようかな。

ブラウザ間の挙動の違いを吸収してくれるライブラリはまじですごいしありがたいのですが、結局IEちゃんでは動かせない。歯がゆいな。

サーバーサイドで実装する方法もないではないけど、

  1. いじる部分が広範囲になりめんどい(新たなバグが発生するかも)
  2. 大した機能じゃないのに大手術したくない
  3. ずっとPHPばっかり触ってるのはつまらん

などという理由により期限ぎりぎりまでJavaScriptで粘ってみたいです。

追記

"Twitterでcxxさんに教えてもらった":http://twitter.com/cxx/status/13545498622 んだけど、IEにはtextContetはないそうです。恥ずかしい。

そういうわけで

var keywords = $('li', keywordList[j]);

var keywords = $('li a', keywordList[j]);

とし、

if (attrName == keywords[k].textContent)

if (attrName == keywords[k].firstChild.data)

にしてみたところ、ばっちりIEで動くようになった。

cxxさんありがとうございます。今度焼き肉デートしましょう。

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

ポータルシットがクソ重くて、なんか対策ないかなーとか仕事をさぼりながらときどき調べてた。

おおよその原因は掴んでいた。それはアクセス解析プラグイン。MySQLのデータ容量がでかくなるとページの表示が遅くなる。アクセス解析プラグインを無効にした状態でページの表示速度はだいたい0.05秒くらいなんだけど、アクセス解析プラグインを有効にすると表示速度は1秒台とかまで悪化する。アクセス解析に使うテーブル( p_page_analyze )をDROPするとまた速さが回復するので時々空にしていた。

しかしよくよくアクセス解析プラグインのコードを覗いてみると、ヴュー部分で使っていないSQLクエリが発行されており、このせいでクエリの回数が必要な回数の何倍にもなっていた。ポータルシットのアクセスなんて大したことないんだから、DBのサイズがちょっとでかくなっただけでこんなに遅くなるはずがないのだ。

そういうわけで不必要なクエリのトリガーになるコードをコメントアウトしてみた。すると1秒台だった表示速度は0.2秒から0.5秒程度に収まるようになった。しかしそれでもなんか遅く感じる。

それでキャッシュを効かせることにしてみた。使ったのはPecl APC。DreamHostはなんでもやらせてくれるのでほんと助かる。

Pecl APC - DreamHost を見ながらシェルスクリプトをコピペして走らせ、php.iniにAPCの設定を書き加えて終了。僕はPHPのバージョンを5.3.1に上げているのでコピペしたシェルスクリプトのまんまではきちんと入らなかった。最新版のAPC(APC-3.1.3p1)にバージョン情報を書き換えてインストールしたところうまくいった。またDreamHost Wikiではキャッシュファイルのパスが /home/username/tmp/apc.*XXXXXX* だったり /home/username/tmp/apc.*XXXXX* だったりばらついてるけど、Xの数は6個じゃないと500エラーが出るのでご注意を。

キャッシュを効かせて見た結果、フッターのPage Generationはあまり変化がないが、体感速度は十分に速くなった。

| @映画/ドラマ/テレビ

ユキとニナ

評価 : ★★☆☆☆

日本人とフランス人の監督の合作らしい。率直に申し上げるとそんなに面白くなかったです。

あらすじ

フランス人と日本人のハーフのユキはフランスで暮らしていたが、両親が離婚するため母親と日本に帰ることになった。しかしユキは日本に行きたがらない。住み慣れたパリと親友のニナとも離れたくない。ある日二人は親の目を盗んでニナの父親の別荘に逃げるが…

感想

見る前からなんか「『ポネット』臭のする映画だなー」と思っていたらまさにそんな感じでした。フランスの少女の話。あるいは『大人はわかってくれない』にも近いかも。大人の身勝手で子どもが振り回されるというストーリーは似ているような気がします。

しかし、内容が徹頭徹尾抽象的で、あまり感情移入できなかった。

途中、ユキがニナとはぐれて、フランスの田舎村の森の中をさまよっていて日本の田舎にテレポーテーションするというシーンがある。まぁ寓話的なんだけど、そんなに悪くない演出だった。なにより梅雨の日本の田舎の田園地帯はフランスの田園風景にはない美しさがあって、この対比は良いなと思った。

そんでネタバレ気味になるから気になる人は読まないで欲しいんだけど、エンドロールの音楽がやばかったです。沖縄民謡の『てぃんさぐぬ花』。僕は初めて沖縄に行った小学生の頃にこの曲を聞いて以来、この曲が好きなんだけど、歌詞の内容も映画にマッチしてるのかなーと思った。というか最後にこの曲が流されなければ、映画のテーマがよく伝わってこなかったかも。

日本人であるユキの母も、フランス人のユキの父も、離婚することにはなったけど、ユキのことをとても大切に思っている。特にユキの父が、ユキと二人きりの夜にユキに語りかけるシーン。この男は妻とくだらない内容で喧嘩するシーンが多いのでくだらない男なんだ、という先入観を持っていたけど、父親が愛娘に接する様はいじらしいと思った。それで最後に『てぃんさぐぬ花』が流れるとじーんと来る。

見ると親孝行したくなる映画でした。