<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.4" -->
<rss version="0.92">
<channel>
	<title>Groove Labo</title>
	<link>http://labo.opengroove.com/blog</link>
	<description>株式会社オープングルーヴの開発者のブログ</description>
	<lastBuildDate>Wed, 30 Jun 2010 03:59:55 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>CakePHP で連結テーブルのモデルは先に宣言すること</title>
		<description>
sugimoto です。最近、CakePHPを使ってます。



しばらくRails を使っていたこともあり、わかりやすい所もある反面、衝撃的に違うところがあったりして試行錯誤な毎日です。



先日、連結テーブルに「並び順」カラムを持たせて、hasManyAndBelongsToなリレーションの順番をつけようとしたところ、うまく動きませんでした。



プロジェクトとユーザーを以下のようなテーブルで関連つけていました



projects
users
projects_users



このとき、「各プロジェクトの参加者ごとに並び順を設定したい」という要望があり、 projects_users に position カラムを持たせて並び順を設定することにしました。



positionカラムの更新をするために ProjectsUser という中途半端なmodel クラスを作ったところ、問題発生。



projects_controller のuses 句で ProjectsUser を設定しているにもかかわらず、ProjectsUser の関数が呼べず、controller内での $this->ProjectsUser の実体がなぜか AppModel となっていました。



AppController など、ソースを確認したところ、controller のイニシャライズ時、以下のようなロジックでした。



  Projectモデルのインスタンス を作成
  Projectモデルで設定されているリレーションに該当するモデルのインスタンスを作成(Userなど)
  リレーションテーブルを扱うのインスタンス ProjectsUserを作成
  その際、デフォルト実装である AppModel のインスタンスとして作成
  上記作成したインスタンスはすべてキャッシュ
  ProjectsUserを作成するが、すでにキャッシュされているためそれを使用



つまり、上記処理がcontroller の uses句内で宣言された順に処理されているため、ProjectsUserをロードするとき、先に処理したProjectモデルのリレーションとして作成されたProjectsUserが優先されていたわけです。


今日の格言


リレーショナルテーブルのモデルを作ったら、uses 句内では必ず先に宣言すること。


ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone



ソフトウェアエンジニアのためのバグトラッキングシステム
 </description>
		<link>http://labo.opengroove.com/blog/2010/06/30/cakephp-%e3%81%a7%e9%80%a3%e7%b5%90%e3%83%86%e3%83%bc%e3%83%96%e3%83%ab%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%81%af%e5%85%88%e3%81%ab%e5%ae%a3%e8%a8%80%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8/</link>
			</item>
	<item>
		<title>ActiveRecord の conditions を作成するためのクラスを作ってみた</title>
		<description>どうもお久しぶりです。

morimotoです。

今日は複雑なActiveRecordの条件句を作成する際に（もしかしたら）楽になるのではないかと思いconditionを生成するクラスを作ってみました。


  class ARCond
    module OPERATION
      EQUAL            = '='
      NOT_EQUAL        = ''
      IN  ...</description>
		<link>http://labo.opengroove.com/blog/2010/06/28/activerecord-%e3%81%ae-conditions-%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e3%81%9f%e3%82%81%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f/</link>
			</item>
	<item>
		<title>オープンソースソフトウェアの育て方</title>
		<description>

プロジェクトが失敗に終わる可能性は非常に高く、 おそらく90–95%くらい

「オープンソースソフトウェアの育て方」という書籍があります。副題にフリーソフトウェアプロジェクトを成功させるコツとあるように、著者がオープンソースプロジェクトでの経験を元に実例を交えて説明されています。バージョン管理システムで有名なSubversionプロジェクトでの実際の経験から書かれています。
実践的な内容なので、ぜひソフトウェアエンジニアの方には読んで欲しい内容です。
（技術的な側面よりもオープンソースプロジェクトをうまく運営するための考え方やプロジェクト運営方法についての説明が多くなっています。）

さらに、うれしいことにウェブで全文を公開しているためだれでも読むことが出来ます（当然、日本語で）300ページにもなる専門的でためになる文書を公開された作者の方と翻訳者の方に感謝しなければいけません。

本の内容で特にビジネスアプリケーション開発の困難な点と共通する部分が多く（同じソフト開発なので当たり前ですが）さらに多くの課題に対処するための方法も参考になります。
「3. 技術的な問題」で紹介されているツールとその運用方法は、ビジネスアプリケーションの現場でも十分有効に使えるので、新入社員などに読ませるのも良いと思います。紹介されているツール群は若干古いですが、どのようなツールを、どのような場面で、どのように使っているのかを知る上でとても分かりやすいです。

また、「6.コミュニケーション」などは自分たちの開発でも学ぶべきコトが多いと思った部分で、読んでおくべき章だと思います。


     書いたことがすべて
    陥りがちな罠
    付録C.なんで自転車置場の色まで気にしなきゃならないの？


ソフトウェアエンジニアに求められる能力として、はじめに思いついたことは、「文章を作成する力」です。コミュニケーション能力や提案力、プログラミング能力などよく言われる能力も必要であると思いますが、自分の考えを正確に正しく伝えるための書く力はインターネットが仕事に欠かせないツールになったことで重要であると考えています。

そのためには書く（まとめる）内容以前に考える力が重要になってきますが。。。

http://subversion.tigris.org/
 </description>
		<link>http://labo.opengroove.com/blog/2010/05/24/%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e3%81%ae%e8%82%b2%e3%81%a6%e6%96%b9/</link>
			</item>
	<item>
		<title>どこでもサーバー管理ができる iPhoneアプリ 「TouchTerm」</title>
		<description>

sugimotoです。


Webサービスの運用ではサーバーやサービスの監視が欠かせないと思います。
オープングルーヴでも突然のサーバー停止や、サービス停止、定期処理の失敗などに備え、監視システムを使って障害発生時にはメール通知するようにしています。



GW中に出かける途中で、監視システムとして運用しているZABBIXから警告メールが飛んできました。



パソコンを持たずに出かけていて、長距離バスに乗っていたんですが、iPhoneにインストールしていたTouchTermを使いました。



TouchTermはiPhoneアプリとして動作するSSHターミナルです。
アプリケーション内で作成したSSHキーのパブリックキーをあらかじめサーバーにおいておくことで、サーバーにSSH経由でログインすることができます。



iPhoneの画面とキーでも十分にサーバー上のログや状況の確認が可能で、問題の箇所をすぐに特定、対応することができました。



iPhoneの画面とキーを使っての操作のため、長時間操作や大きな設定変更は難しいですが、緊急時の一時的な対応には十分使えるツールです。


ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone



ソフトウェアエンジニアのためのバグトラッキングシステム
 </description>
		<link>http://labo.opengroove.com/blog/2010/05/06/%e3%81%a9%e3%81%93%e3%81%a7%e3%82%82%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e7%ae%a1%e7%90%86%e3%81%8c%e3%81%a7%e3%81%8d%e3%82%8b-iphone%e3%82%a2%e3%83%97%e3%83%aa-%e3%80%8ctouchterm%e3%80%8d/</link>
			</item>
	<item>
		<title>ツールを使った情報共有#1（仕事で Wiki を使いたい）</title>
		<description>社内での仕事術 #1

社内での仕事術について紹介したいと思います。
ソフトウェア開発は一つ一つの案件をプロジェクトとしてすすめるため、はじめにプロジェクトチームを作ります。

プロジェクトチームは提案内容や得意分野により主担当がかわります。
プロジェクトでは複数のメンバーが集まって仕事をすることになるため、情報共有はとても重要。

オープングルーヴではどのようにしているのか、ツールを使った情報共有#1として「Wikiを仕事で使う」について書きたいと思います。

Wikiとは「ウィキ」と言いますが、ウェブブラウザを使ってページの作成・編集ができるコンテンツサービスです。一人でメモ書きとして利用している方もいると思いますが、けっこう書込のためにページを開く。という動作が面倒になりがちということはあると思います。

弊社で利用する場合は、複数のメンバーでプロジェクトを進める上でガリガリ書き込みます。これはあるルールを決めているためですが、そのルールのおかげでWikiがなくてはならいツールになっています。

ルール : プロジェクトの成果物(中間成果物)はWikiで一元管理

Wikiのメリット


     会議をしながら議事録(画面を見ながらみんなで確認)
     顧客向けの議事録
     顧客との打合せで出来る議事録はWikiをPDF化やメールで共有
     設計書(技術メモ、検討メモ)、技術方式に対する他チームのコメント
     開発環境構築メモなど、開発に関わる情報源
     世代管理機能、ページ単位で履歴を確認し、追加された・削除されたがカラー表示される(下図)


[caption id="attachment_549" align="aligncenter" width="560" caption="Wikiによる備忘録・ルール"][/caption]

[caption id="attachment_550" align="aligncenter" width="560" caption="Wikiの世代管理(履歴)"][/caption]



などなど、メールでも同様のことはできますが、プロジェクトのポータルとして利用でき、大切な文書が埋もれない･･･(メールは探すのが大変)
プロジェクトメンバーで使うことで、ガリガリ更新され、すぐにWikiが必須の情報共有ツールになりました。

デメリットは...

しかし、良い面ばかりではないです。新しく加わったメンバーなどにとっては使ったことがないツールのため、慣れるまで大変かも知れません。
「Wikiを知らない人や初めて使う人にとって慣れ親しんだインターフェースではない。」ということです。ファイル名がない、特殊なフォーマット･･･

Wikiを仕事で使いたい人へ
セキュアで、1プロジェクト無料のcikloneを評価してください。
 </description>
		<link>http://labo.opengroove.com/blog/2010/03/16/%e3%83%84%e3%83%bc%e3%83%ab%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e6%83%85%e5%a0%b1%e5%85%b1%e6%9c%891%ef%bc%88%e4%bb%95%e4%ba%8b%e3%81%a7-wiki-%e3%82%92%e4%bd%bf%e3%81%84%e3%81%9f%e3%81%84%ef%bc%89/</link>
			</item>
	<item>
		<title>IIS マネージャから FastCGI の設定を行う</title>
		<description>こんにちわ。omae です。

さて、前回では IIS7 + FastCGI で PHP 5.3 を実行できるようにしました。

少し試しているうちに php のプロセス自体は 4 つまで増えるようになっている…ということに気づきました。
また当然ながらこの設定を変更する方法が用意されており、一つは %WINDIR%\system32\inetsrv\appcmd コマンドを用いるもので、もう一つは IIS マネージャから行うものです。

ここでは IIS マネージャから行う方法をやってみます。

手順

1. IIS 7.0 Administration Pack をインストール

Administration Pack : The Official Microsoft IIS Site からインストーラをダウンロードします。右のほうに Or, download x86 / x64 のような表記があるので実行環境に合ったものをダウンロードします。

ダウンロードしたらその MSI を実行してインストールします。

2. IIS マネージャを起動


IIS マネージャを起動すると FastCGI Settings アイコンが増えているのが確認出来ると思います。



3. FastCGI Settings を開く

FastCGI Settings ...</description>
		<link>http://labo.opengroove.com/blog/2010/02/22/fastcgi-settings-with-iis-manager/</link>
			</item>
	<item>
		<title>IIS 7 + FastCGI で PHP 5.3 を実行する</title>
		<description>こんにちわ。omae です。

今回は IIS 7 で PHP 5.3 を実行する環境が必要になったのでその手順を残しておきたいと思います。

作業しようとしてから気づいたのですが PHP 5.3 から isapi モジュールが廃止されていました。PHP 5.2 以前までは isapi モジュールで環境を作成していたのですが、廃止されてしまったものはしょうがありません。IIS 7 からは FastCGI が正式に対応しているので、こちらで設定することにします。

手順

1. PHP 5.3.1 をインストール

PHP For Windows: Binaries and sources Releases より今回は VC6 x86 Thread Safe (ZIP) を使うことにしました。この zip ファイルを C:\php に展開します。

ここでコマンドプロンプトを起動して C:\php\php-cgi.exe -h が実行できることを確認しておきます。実行すると以下のようなエラーが上がる場合は php.ini から extension=php_mssql.dll をコメントアウトします。SQL Server に接続する予定があるなら ...</description>
		<link>http://labo.opengroove.com/blog/2010/02/22/php-5-3-on-iis7-via-fastcgi/</link>
			</item>
	<item>
		<title>バグ管理の必要性について</title>
		<description>あなたの開発チームはバグ管理をどのようにやっていますか?

組込みシステムエンジニアやWebアプリケーションエンジニア、多くのソフトウェア開発に携わる開発者達。 製品開発やシステム開発の現場で「バグ管理」はどのようにおこなっているでしょうか。


     「ワープロソフトやスプレッドシート?」
     「オリジナルのツール」
     「高いライセンス料を払ったシステム?」
     「オープンソースで構築」


様々な方法でプロジェクトのバグを管理していると思います。

この記事を見てくださった方達はバグ管理の重要性を知っていて、今のやり方になにかしらの課題があって改善したいとお考えだと思います。

プログラムを開発するとき、複雑で大量にある課題・タスク・バグをきちんと漏れなく管理し、 データベース化しておくことは重要なことです。プロジェクトの成果物やリソース、活動状況をすべて追跡できる仕組みを導入することで、 問題を発見しやすく、製品の品質向上に繋がります。

複雑で大規模化しているソフトウェア開発にとって、バグ管理システムは必須のツールです。

ここで、バグ管理の必要性（メリット）について書き出してみたいと思います。


    バグデータベースが用意されることで障害についてチーム内の意思疎通がスムーズになる

     標準化されたレポートは、自由形式の電子メールや机越しの話よりも正確に内容を伝えることが出来ます


    データベース化することで、バグの通番管理(追跡と参照)が自動化され、レポートのための分析や報告が提供できる
    開発チームは、プロジェクトチーム、マネージャ、顧客、ユーザのそれぞれにとって重要な観点から考え修正を進めることができる。

     バグ管理システムを使わない場合、開発者やテスターの声が大きい担当者の報告したバグほど早く修正されがちになる


    バグの発見→レポート→担当者割当→解決について、全てのライフサイクルを通じたバグ管理が出来る。

 ...</description>
		<link>http://labo.opengroove.com/blog/2010/01/25/%e3%83%90%e3%82%b0%e7%ae%a1%e7%90%86%e3%81%ae%e5%bf%85%e8%a6%81%e6%80%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/</link>
			</item>
	<item>
		<title>ZABBIXでイベントログのエラー数を監視する</title>
		<description>sugimotoです。


ZABBIX agent をWindowsにいれて、Windowsサーバーの監視をしているんですが、イベントログのエラー監視をしたくなりました。



ログ監視によるフィルタリングはうまくできそうになかったので次のような UserParameter を
zabbix_agentd.conf で設定するとエラー数がカウントできました。



UserParameter=eventlog.count[*],c:\windows\system32\cscript 
    c:\windows\system32\eventquery.vbs /FI "type eq $1" 
    /L application /FO csv /NH &#124; find /c ","



eventquery の各パラメーターは以下の通りです。



    /FI : イベントログをフィルタします - type er xxx でログタイプを指定
    /L : イベントログの種類を指定します - 今回はアプリケーションログでした(system&#124;security)など指定
   ...</description>
		<link>http://labo.opengroove.com/blog/2010/01/14/zabbix%e3%81%a7%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e3%83%ad%e3%82%b0%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e6%95%b0%e3%82%92%e7%9b%a3%e8%a6%96%e3%81%99%e3%82%8b/</link>
			</item>
	<item>
		<title>ZABBIX1.8のインストールでmbstring supportが認識されない。。</title>
		<description>sugimotoです。


昨日、ZABBIX 1.8 をインストールしていたところ、Web UIのインストールではまりました。
環境は CentOS でPHPなど、必要なライブラリは yum でインストールしていました。



サーバーの設定確認をするステップ、次の画面で、MB string supportがfalseになっていました。





php-mbstring をインストールしていなかったことに気がつき、mbstring をインストールしたけど、OKにならず。。



しばらく悩んだあと、Googleで調べるとこんなエントリがありました。



mbstring ライブラリのチェックでPHP 5.2 から導入された関数をチェックしているため、PHP5.1以前のバージョンをインストールした環境の場合、mbstringが設定されててもチェックが通らないらしい。


includes/locales.inc.php


     39 function mbstrings_available(){
     40         $mbstrings_fnc_exist =
     41         ...</description>
		<link>http://labo.opengroove.com/blog/2009/12/09/zabbix1-8%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%a7mbstring-support%e3%81%8c%e8%aa%8d%e8%ad%98%e3%81%95%e3%82%8c%e3%81%aa%e3%81%84%e3%80%82%e3%80%82/</link>
			</item>
</channel>
</rss>
