いい天気だったので久しぶりにチャリで出社。

rono23に適当に、

Chumby night行かないの?」

って言ったら本当にchumby持ってることが判明。

TVも電子レンジも無いのにMacbookとiPhoneとiPod touchとChumbyを買う心意気や良し。

使ってないので(ないのかよ)明日会社に持ってきてくれるそうです。

「ひゃっほー!Chumbyだー!」

・・・。

内なる俺:「komagata(俺)よ、姉に2人目の子供が生まれたそうじゃないか。」

「俺たちもいい歳だ。そろそろ、ちゃんびぃでもなかろう・・・。」

うるせー!うるせー!

仕事でOpenPNEのソースを読む必要があったんですが、想像してたのとは違って全然読み易い。

「なんだー、読み易いじゃんー」

などと言いながらホクホク読みました。

オープンソースプロジェクトはソースの読み易さを気にするためか、読み易いものが多いようです。しかし、社内ツールやレガシーシステムなど、世の中にはまるで夏の目黒川の如く近づくことさえためらわれるようなPHPアプリケーションが多数存在します。

そんなPHPアプリケーションの異臭を嗅ぎ分けるための7つのポイント。

  1. テンプレートシステム(PHP自身を含む)が無い。
    これさえあればコードを理解するのはかなり容易になるでしょう。さもないと・・・。
  2. register_globalsがOn。
    そのアプリは臨終前の患者です。大きな手術は諦めて延命治療に勤めましょう。
  3. magic_quotes_gpcがOn。
    フォームから保存するたびにバックスラッシュが増えるアプリを見るのはとても悲しいことです。
  4. IIS
    至急PHPとWindows Serverのベテランを探しましょう。
  5. 設定ファイルがXML 。
    最大で深さが2しかないデータ構造にまでXMLが使われている場合、プログラマは設計者の強い信念と独創性に苛まれるでしょう。(特にPHP4では茨の道。)
  6. eval, extract, create_function
    grep殺し。
  7. mbstring.encoding_translationがOn。
    素人にはオススメできない。

これらの特徴はデスマーチの周囲でしばしば目撃されることが知られています。

ある研究者(俺)によれば、php.iniやソースコード管理システムを上記のキーワードで検索するだけでPHPプログラマーのデスマーチ回避率は32%向上すると言われています。

もちろん上記を上手く使っているアプリケーションも多くあり、使っていること自体を非難することはできません。

・・・。

と無難にまとめようと思いましたが、あきらかに使うべきでないものも世の中にはあるんです!

参照: PHPで知っておきたいcreate_function5つのトリビア

HTMLのマークアップをしてて、本当にこのタグでいいのか?とかセマンティックが気になって変に複雑になりすぎたりコーディングが遅くなったりすることがある。

そういう時、いつもロジバンのことを考えるようにしている。

自然言語解析の難しさ、同音異義語、完全な単語のセットについて徹底するならマークアップにはロジバンを使うべきだ。パーサ・コンパイラ作ってプログラミングもロジバン(クライアントスクリプトも)。というかできれば喋る言葉もロジバン。全ての表現の中間言語としてロジバンを使えばいいじゃないか。それぞれの言語(自然言語も含めて)のロジバンへのコンパイラが作れれば人類皆兄弟。

ロジバンを使ってRDF/OWLのシソーラスを作ろう、それを基にマークアップしていくのだ。その上にDreamweaverみたいなWYSIWYGエディタを作る。それを使ってコンテンツを記述していけばいいんだ。そうだ、そうだ!

・・・。

クールダウンした後、適度にクリーンで、ある程度適当な書きやすいHTMLを書いていくことができます。

我々プログラマの二元論的思考は問題解決の強力な武器になるが、時として現実的でない答えを出す。(現実には無限の長さのテープが無いので)

「何事もバランス」という言葉で片付けるのは腹が立つので、一旦極北を考え、(あくまでそれを胸に閉まって)そして手を動かそう。

二度寝してしまう前に家を脱出。会社前のドトールで本読んでたら暴睡。

引き継いだ前システム担当の方から未解決のバグ管理表(Excel)がメールで届いた。 奇声を発していたらrono23がRedmineに入れといてくれた。

rono23はMac上のVirtualBox and VMWare Fusion上のCentOS + Xenに苦戦中。

だからMacは(略 と嫌味を言っておいた。(VirtualBox上のホストOSがフリーズ)

アプリの方はまだリビジョン7。若いなー。何度も出てくるhabtmのcheckboxをhabtm_check_boxってヘルパーにまとめた。こりゃ楽だ。

未来の誰かのためにJUDEで書いたActiveRecodeのモデルの絵をリポジトリに入れた。これ見りゃ概要わかるだろう。

9時頃起きて外に飛び出す。このままいると寝てしまう!

前日、設計クイズで書いた旧システム全部を引き継ぎ会議。NonDocumentationパターンなので概要やハマリそうなところを口頭で聞かせていただいた。本番サーバーのパスワードさえ分かれば後はなんとかなるだろう。

いままで1台で4つのサービス・アプリ、4つのサービスの開発環境、SVNリポジトリをまかなっていたHP ProLiant ML110 G5。

今回新しくプロジェクトを引き継いだので開発サーバー+1IPゲット。rono23にそれをまっさらにしてプロジェクト分だけxenで立ててと無茶振り。出来たらおれにもやり方教えて!

アプリの方はまあ順調。というか単純作業が続く。Rails2.1.1からNamespace関連の問題が無くなったので気持ちいいがscaffoldがnamespaceに完全対応してないので手で各部分が多い。次こそgenerater書きたい。

fixture書くのが少しだるい。csvにしてOpenOfficeで作成。CUIのスプレッドシートアプリないのかな?

明日は家に篭ってコーディング予定。設計クイズの結果はもうちょっと様子見て書きます。(まだどうなるかわからんので)

Youtubeでガリガリガリクソンで笑った後、ニコニコ動画でこんなの発見。

国道20号線をカメラ積んで走ってひたすら写してるだけ。 見覚えある場所だと何か面白いんだよね。

こんなんがアップされてなぜかコンテンツとして成り立っちゃってるのがおもろいなあ。

M-1グランプリの動画だと思ったらM1エイブラムス戦車の動画だった。

現状、「OpenPNE(1)」と「OpenPNEの会員データと連動したWebデータベースアプリ(2)」が動いているコンシューマ向けサイトがあります。

ここに、私が別の「Webデータベースアプリ(3)」を、yoshukiさんが別の「携帯対応フォーラムアプリ(4)」を追加で作る予定があります。

  • (1)、(2)は前担当会社のシステム(PHP)でありこれからサーバー毎引き継ぐ。
  • 1年前から周辺システムはRailsで統一されつつある。
  • サイト全体を今後、継続的に開発していく予定にある。
  • お客さんの優先順位の第一位は(3)を期間内に立ち上げる事
  • (1)はクローズしてもかまわない事。
  • とは言え出来ることなら既存会員データは残したい。(俺の思惑)
  • 工期に余裕はない。(まっさらから3を作る分しかない)

みなさんなら会員データ周りをどのように設計しますか?

俺が考えた選択肢:

  1. (1)、(2)の会員テーブルを見るようにして(3)、(4)を作る。
  2. (3)、(4)ともに新規に作る(データ連携無し)
  3. (3)と(4)は同一会員データで作る(1、2との連携は無し)
  4. (3)、(4)を作った後で(1)、(2)をそれにあわせるように改修する。
  5. (3)、(4)を作った後で(1)はクローズ、(2)は改修する。
  6. 認証サーバ的なものを作る。

俺の中のSIer人格:

「お客さんから必要十分条件は提示されている。当然2だ。どんなシステムも段階的改修が可能である。ストアドプロシージャ、変換スクリプト、バッチ等で次フェーズ以降でのシステム統合を目指せばよい。」

俺の中の楽観主義者:

「5でしょ!きょうびほとんど使われて無いOpenPNE維持してもコストかさむだけでしょ!(2)をRailsで作り直して新機能を作ろう!」

俺の中の潔癖主義者:

「6が正しい。OpenIDサーバーを作り、全てのサービスを対応させる。authorizeとauthenticateは別である。」

俺の中の事無かれ主義者:

「前の会社がOpenPNEに合わせたんだから僕らも1だよ。PHPで作れば環境も合わせられるし」

まあ、おまいら(俺ら)の言い分もわかるが・・・。

以前、やったアルバイト募集のお知らせは無事rono23さんに決まって、一緒にやり出して1週間以上経ちました!

約束通り、カロリーメイト(ポテト味)とアシュラ(ジョージ秋山)上巻が贈られました。 ビシビシとRedmineのチケットを潰してくれて大変助かってます。

さっそくrono23とジェネレーションギャップを感じて面白かったことを。

マカー

  • 新製品発表時はUst張り付き
  • UNIXはMacで勉強
  • iPhone lover

iPhoneアプリは基本Mac持ってないと作れないというのを知った(俺が)。ひどいー! MacはMTA(Postfix)が入ってることを知った(俺が)。これは便利だなー。

フリーソフトウェア

  • GNUとかGPLとかはわりとどうでもいいらしい(RMS?)
  • bash(zshはおっさん)

わこうど全体的に俺らおっさんほどライセンスに関する嫌悪感が少ない感じがします。(BSD, MIT, Public domainが当たり前。当たり前なので興味が無い) bashは最近のディストリビューションのデフォルト設定が素晴らしいからかもしれませんな。

Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術

最初の題名は「Scripting for testers」だったそうで、プログラマにはちょっと物足りないかも。