header image

携帯対応

QRコード

RING

人気ブログランキング

新着記事

2009/06/30 15:37:20 wordpress none Comments

TwitThisは、ブログ等にTwitterに投稿用ボタンをつけるプラグイン。ポップアップでTwitterへの投稿用の画面が表示される。

で、このプラグインだがバグがあって、このままだと、オプション設定でpermalinkを選択すると、トップページ等の一覧ページでコンテンツが表示されなくなる。
ということで、145行目からの関数を以下に差し替えるとちゃんと動作するよ。

function display ($content) {
   
    $display = ((get_option("display_on")) ? get_option("display_on") : "both");
    $is_single = is_single();
    $print = $content.$this->write_script();
   
    switch ($display) {
        case "both":
            return $print;
        break;
        case "permalink":
            if($is_single) {
                return $print;
            } else {
                return $content;
            }
        break;
        case "listings":
            if($is_single == false) {
                return $print;
            } else {
                return $content;
            }
        break;
    }
   
}

4月から開発してきた案件が終わるのでちょっくら振り返りするぞ。

アーキテクチャ

  • CentOS5 (開発はXAMPP)
  • PHP5.1.6
  • CakePHP1.2
  • MySQL5

案件規模

  • コントローラー13本(AppController含む)
  • モデル14本
  • ビュー80本
  • コンポーネント4本
  • PHPのソースで約1万行。テストコードで4000行。開発者は僕だけ。

ツール系

  • XAMPP 開発環境
  • Subversion ソースコード管理、ドキュメント管理に最初から利用。接続にはTortoiseSVNを利用。
  • Trac 課題管理、バグ管理、要件管理に利用
  • A5:SQL Mk-2 データベース関連の作業に利用。
  • Eclipse PHP開発用のIDE。Pleiadesを利用
  • Poedit i18nの言語ファイルの編集用
  • Lingoes 無償の辞書ツール。モジュール名や関数の命名に利用。
  • SimpleTest テスト自動化
  • Xdebug カバレージ測定
  • Cygwin 便利コマンドとして利用。tailとか出来るし。
  • Radish ローカルのSMTPサーバ。Windows環境で開発する時に実際のメールは送らなくてもメールを確認できる。

開発方式とか

  • 完全アジャイルプロジェクト
  • 提案時点でイテレーションの回数を先に決めた。
  • 定額契約モデルで、イテレーションに入らない場合は別途交渉を明示。バーター有りもあわせて明示。
  • 成果物は最初に規定。単体テストケース表とか詳細設計書は作らないことを明示
  • プロジェクト立ち上げ後、定石通り重要機能から構築開始
  • テスト自動化をすすめた結果、仕様変更、仕様追加の対応も容易だった
  • プロジェクト期間中の残業は0時間。週40時間稼動を達成。
  • 余計な事務作業とか割り込みが無いので、Velocityが高かった。
  • bakeコマンドで骨格を自動生成
  • 画面デザインは最終イテレーションで取り込み。
  • 各種メッセージ系はなるべくi18nを利用

課題とか

  • リファクタリングをどこまでやるか、について指針が無いと、時間がある限りリファクタリングしたくなってしまう。
  • 入力→確認→完了という画面遷移はもっと汎用化できそうな気がするが、現状似たようなコードが一杯ある。
  • Ajaxとか使いだすとViewの見通しが悪くなりやすい気がする。やっぱりViewに凝るのは最後の最後がよさそう。そしてViewもリファクタリング対象。
  • i18nをどこまでやるか指針を決める必要がある。
  • CodeSnifferはかけなかったので今後はやる。
  • 継続的統合ツール(phpUnderControl)は未使用。次回は使うつもり。

開発は楽しいねぇ。

2009/06/30 06:39:31 日記 none Comments Tags:

200906
休日も入れて、平均4:59。この三ヶ月は非常に安定している。
早起き記録をつけ始めたのが2008年6月20日だったので今月でちょうど1年が過ぎた。

2009/06/27 06:48:56 PHP none Comments Tags: , ,

前回の話はこちらを参照

前回以降もテストしているんだけど、「メモっとかないと忘れちゃうねー」的な話を以下列挙。
それにしても今回は真面目にテストしているぞ(笑

  • カバレージを測定したかったらテストモジュールの分割方法は、テスト対象モジュール1つにつきテストモジュール1つにするべきだ。
     僕が作っているシステムは一般向け画面と管理者向け画面に分かれていて、管理者画面へのアクセスはadmin routingを使っているのだけれど、こういう場合のテストでもコントローラー単位、モデル単位で分割すべきで、利用シーンで分離すべきではない。但し受け入れテスト等、カバレージではなく業務要件への充足確認が中心になる場合は別だけど。

  • setUp、startTest、startCase等の初期化処理の違いを押さえておくこと。bakeでControllerのテストケースを作るとsetUp()が自動で作成されるが、このメソッドは全テストの直前に毎回呼び出されるので、ここでDBの初期化をしたりすると、やたらと時間がかかるテストが出来上がる。

  • 例えば常にredirectするようなメソッドではViewを用意しないことがあるが、テストの際にredirectを再定義してしまうと、Missing Viewというシステム的なエラーが発生する。これを避けるために空白でもよいのでViewを用意しておくと良い。

  • 続きを読む »

2009/06/26 06:44:06 書評 none Comments

創造はシステムである 「失敗学」から「創造学」へ (角川oneテーマ21)

著者/訳者:中尾 政之

出版社:角川グループパブリッシング( 2009-05-09 )

定価:¥ 740

Amazon価格:¥ 740

新書 ( 222 ページ )

ISBN-10 : 4047101885

ISBN-13 : 9784047101883


これは面白い!

第一章 創造は要求から
第二章 思考方法はワンパターン
第三章 システムは可視化できる
第四章 真似ができない創造化

まず創造の定義。別に、前人未到の製品や仕掛けを作ることだけが創造では無いのだ、という宣言に凡人である僕は救われる。自分にとって目新しいものを自分の力で成し遂げれば、それが創造だ、と言われれば自分でも「創造」できそうな気になる。
そして「創造」は「何をやりたいのか」という具体的な目的を決めることから始まり、かつ、言葉にするのが重要だ、と述べている点は、以前読んだ「非常識な成功法則」のパターンと一緒である。確かに自分でもやりたいことを言葉にするするようになってから行動の意識付けが変革した気がするので、このやり方は有効なんだろうと思う。目的は定量的にとか、簡単すぎる目標を立てない、とかは前の職場の時から相当意識していたが、ゴールや目的との相関は何か?という点を考えておかないと、「目的を設定することが目的」になってしまったりする。これは注意しないといけないな。

第二章で書かれている「思考方法はワンパターン」はその通りだろう。TRIZというロジックは使えそうなのでこれは別の本をあたってみようかと思った。
そして思考の上下運動。これは会社なんかでも良く味わうのだけど、部下が何を相談しに来ているのか分からないことがある。それは自分の目線からだけ見た課題を昇華せずに話しているからで、本質的な問題が見えてこないから、こっちも質問を繰り返して無駄に時間を使うことになる。

第三章では要求機能の作り方と機能間、組織間の干渉、そこから生まれるコミュニケーションエラーについて書かれているが、これ、アジャイルプロセスでのシステム開発をやっている人にはすごくわかりやすい章になっており、フィーチャーの抽出、選択の仕方、プロジェクトの進め方、ついでにモデルの設計方法までも網羅されている。本書は別にシステム開発の本でないけれど、結局のところモノを作る根本的な考え方は変わらないはずだ、と思い知らされる。

創造ってことばは、人を前向きにするよね!
自分は世の中に何も残せない、って思うのではなくて、どんな小さいことでも「創造」しているのだ、と思えれば毎日幸せかもしれない。

2009/06/25 06:01:21 日記 none Comments

今持ち運んで使っているlenovoのS10eだが、メモリ1Gしか積んでなくて、EclipseとかVMWareとかを使うのは心もとないので増設してみたよ。

買ったメモリはTranscendのJM667QSU-2G
。DDR2-667の2G。送料込みで約3000円。
memory1

作業は簡単で、

  • バッテリーとACアダプタを外す
  • 裏蓋の2箇所のネジを外して、蓋を外す
  • メモリが刺さっているので、保護ピンを上に上げてからメモリを抜く
  • 抜いた場所に新しいのを刺す
  • 蓋を閉めてネジ止めして終了

若干裏蓋のツメの掛りがきつくて取り外ししにくいけどそれ以外は難しいことは何もない。

増設後のメモリ状況を表示させたところ。残念ながらマザーボードのスペックの関係で2Gまでしか認識されないけど、これで十分でしょう。
increase_memory_of_s10e

メモリの値段がこれだけ安いといいよね。次はSSDだが、もうチョイ待つことにする。

2009/06/22 07:10:56 書評 none Comments

非常識な成功法則―お金と自由をもたらす8つの習慣

著者/訳者:神田 昌典

出版社:フォレスト出版( 2002-06 )

定価:¥ 1,365

Amazon価格:¥ 1,365

単行本 ( 251 ページ )

ISBN-10 : 4894511304

ISBN-13 : 9784894511309


以前に絶賛した「成功者の告白-5年間の起業ノウハウを3時間で学べる物語」の作者が以前に書いていた本。偶然ブックオフで格安だったので買ってみた。2002年6月が初版だが、20回以上の重版がされている。これも良いよ。
ただ、当たり前だが、どんなノウハウも読むだけで出来るようになるわけじゃない。続けられるかどうか、そこが分かれ目だよね。

役に立ったところを抜粋。

  • 成功するか、しないかというのは、自分の夢・願望・目標を紙に書くか書かないか、それだけの違いでしかない。(ワタミの渡邊美樹社長が書いた本と同じパターン。そして多くの成功者はやっている)
  • 目標には良い目標と悪い目標があり、良い目標は自分を目標まで自動操縦してくれる。
  • 目標をたてるためには、まず「やりたくないこと」を紙に書き出して明確にする。なぜなら、やりたいことの中にやりたくないことが含まれてしまうから。
  • 自分自身のミッションを考える(死までの残り時間が半年だとしたら何をするか)
  • 紙に書くと実現する理由は脳のメカニズムにある。
  • 私たちには2つの選択肢しかない。「他人に自分の現実をコントロールされるか」「自分で自分の現実をコントロールするか」
  • 潜在意識を強固にするために繰り返し紙に書かれた目標をながめてニタニタすると良い。また目標はいつでも見られるように持ち歩く。
  • 目標設定するときには「私は~~する」と現在形を使う。
  • 目標の形式はSMARTでなければならない。S:Specific(具体的)、M:Mesurable(計測可能)、A:Agreed upon(同意している)、R:Realistic(現実的である)、T:Timely(期日が明確)
  • 自分は凡人だ、というイメージを持っていたら、成功者にはなれない
  • 「乗らないと損と思える提案」をする。
  • お金をコントロールするための3つの原則
    お金に対する罪悪感を持たないこと。
    自分の年収は自分で決めること。
    お金が入ってくる流れをつくること。出て行く流れを作ってはならない。
2009/06/19 17:31:05 日記 none Comments

デスマーチを回避するのに大事な“3つのこと - @IT情報マネジメント
より

篠氏は「そのようなケースを想定して、バッファを積んでおくことが重要だ。ケースによってそれが10%なのか、20%なのかは変わってくるが、適切なバッファがあれば仕様変更があっても慌てずに対応できる。
(略)

 まず、要件定義の段階から、頻繁に仕様変更会議を実施。仕様凍結時に、ユーザーの合意をしっかりと得ることが非常に重要だという。そして、そのコミュニケーションをきちんと行っておくことで、その後の仕様変更については、開発者側の設計が問題で発生したのか、それとも業務要件の変更なのかをはっきりさせることができるというのだ。
 
(略)
そして、最後に篠氏が説明するのがPMBOKの重要性だ。

以前に棟梁も嘆いていたけど、どうしてこんなやり方でデスマーチ回避できるのかね?突っ込みどころ満載過ぎてたまらんのだが、

  • バッファはあっているのか?間違っているのか?
  • そのバッファは余ったら客に返金するの?んなわけ無いか・・・。
  • そもそも仕様凍結宣言したところで、業務要件に合わなきゃ、仕様は変えるしかない。
  • 仕様変更会議って誰が出るのよ?しかも頻繁に?
  • どうせ出席者が大量にいて、長くて決まらない会議なんだよね。
  • それより動作するソフトウェアを見せようよ!!
  • SIerが追加費用とかスケジュール延期を勝ち得て、最終的にデスマーチにならなかったとしても、それはプロジェクトの成功じゃない。
  • プロジェクトの成功は顧客がシステムを作ることでビジネス上の利益を生み出したこと。それに加えてSIerの利益云々。
  • 客からしたらシステム投資を決定した時点で費用対効果の見極めとか市場への投入時期とか色々考えているはず。それを守るのは協調関係を組むものとしては当然。
  • そして利益の多くはシステムの重要な一部分から作られるって考えたら、重要なところから先に作るべし。
  • ところが仕様決めに時間をかけたあげくに作り出すと矛盾が出てきたりして、開発工程にリスク山積みになるんだよね。
  • こういうプロジェクトはいつも序盤~中盤:快晴!、中盤~後半:曇り模様、終盤:突然大雨・・・ってなる。

ということで、アジャイルやろうよ!

2009/06/19 14:04:02 PHP none Comments Tags: ,

タイトルに深い意味は無いんだけど、CakePHPのSimpleTestでコードカバレージを真面目に取得してみたので、そのメモとか。

使っている環境

XAMPP1.7.0
PHP5.2.8
MySQL 5.1.30
Apache 2.2.10
 

Xdebugの入手

このバージョンのXAMPPに含まれているXdebug2.0.3ではカバレージが取得できず、Apacheごと死んでしまう問題があるので、Xdebug2.0.0を利用する。
http://www.xdebug.org/download.phpにアクセスして、環境にあったモジュールを取得する。
xdebug2
僕の環境の場合は、XAMPPのPHP5.2.8だから、図の赤枠で囲んだリンクをクリックしてファイルを保存する。
php_xdebug-2.0.0-5.2.2.dllをphp_xdebug.dllにリネームしてphp\ext\の中に上書き保存する。
 

Xdebugの設定

続きを読む »

2009/06/18 06:56:10 日記 none Comments

今日の午前2時過ぎからOS3.0へのアップデートが開始されたようで、早速アップデートしてみた。

アップデートは簡単だったけど、AppleへのActivationの問い合わせで1回失敗。人によっては何回も失敗しているようだったけど、早朝のせいか1回のみ。

アップデート後の画面。特に見た目に変わりはない。またうちは電波が弱くて方角によってはアンテナ立たないんだけど、それも特に変わらず。ただコピー&ペーストが使えるようになったり、Safariでパスワード保存できるようになった、ってのはすばらしい。

んでもって、脱獄アプリが全部消えた・・・。当然といえば当然だけど、うげげげげ。
また来週くらいにOS3.0用の脱獄ツールが提供される見込みとのこと。

 

日記 PHP オープンソース インストールマニアックス IIS Trac MySQL Perl Linux Agile・生産性向上 wordpress フリーソフト 自宅サーバ 書評 ブックマーク phpMyFaq TraM Plugin 早起き Delphi apache CakePHP Firefox Ruby eclipse セキュリティ プラグイン アジャイル mojavi Subversion Ajax/Web2.0 SQLServer Zope サーバ フレームワーク phpBB 仮想化 PostgreSQL OpenVZ scuttle CMS 文字化け 自宅 翻訳・日本語化 ApacheDS LDAP Excel 生産性向上 CodeIgniter XAMPP hacks taskfreak 修正 言語ファイル Ajax SBM ダウンロード HTML::FillInForm mod_security 情報共有


ads

読まなきゃモグリ