5月 14
sugimotoTrac, 日本語化

sugimotoです。
昨日のエントリでインストールしたTracですが、設定を日本語にしても日本語化されませんでした。。
0.12 からデフォルトでLocalizationに対応してるって聞いたのに。。
わざわざBabelをインストールしたし。
と思いながら、インストールマニュアルを読み直すと、書いていました。。
$ python ./setup.py compile_catalog -f
これですね。。
ちなみに easy_install ではだめみたいですね。
レポジトリからチェックアウトして、setup.py でインストールしなおしです。
> svn co http://svn.edgewall.org/repos/trac/trunk
> cd trunk
> python setup.py compile_catalog -f
> python setup.py install
> /etc/init.d/httpd reload
うまく日本語化されました。

様々な設定が煩わしくなってきた方、クラウド型バージョン管理のサイクロンなら登録1分ですぐお使い頂けますよ。
ちなみにサイクロンならこんな感じに見ることが出来ます。
■サイクロンプロジェクト概要ページ

いつまでも無料でお使い頂けるフリープランがあります。是非お試しください。

5月 13
sugimotoTrac Trac
sugimotoです。
TracをLinuxにインストールする手順です。
今回は以下の構成でセットアップしています。
- CentOS5.4
- Aapache
- WSGI
- Trac0.12
- SQLite
途中、エラーなど出て半日くらいかかりました。
今すぐ使いたい人は、Cikloneにサインアップして、今すぐ使いましょう。

必要なパッケージのインストール
インストールドキュメントには以下のパッケージが必要だと書いています。
- Python
- setuptools
- Genshi
- SQLite
- Babel
それでは早速インストール
> yum install python
TracはPython 2.4以上で動作可能です。
CentOSでの最新バージョンは2.4.3でした。ちょっと古いがぎりぎりセーフですね。
> yum install sqlite
SQLite 3.3.6がインストールされました。
Python 2.4 の場合、SQLiteでTracを使うにはPySqliteが必要になります。
こちらのサイトからダウンロードします。
そして、PySqliteのページの要領でインストールします。
> wget http://pysqlite.googlecode.com/files/pysqlite-2.6.0.tar.gz
> tar xzvf pysqlite-2.6.0.tar.gz
> cd pysqlite-2.6.0
> python setup.py build_static install
setuptools のインストール
以下のサイトから egg ファイルをダウンロードします。
> wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2b
shellのように起動せよ。ということなので、起動すると、インストールできたようです。
> sh setuptools-0.6c11-py2.4.egg
Processing setuptools-0.6c11-py2.4.egg
creating /usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
Extracting setuptools-0.6c11-py2.4.egg to /usr/lib/python2.4/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.4 script to /usr/bin
Installed /usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11
コマンドが使えることを確認
> easy_install -h
GenshiとBabelをインストール
GenshiとBabelはともに eash_install コマンドでインストールできます。
> easy_install Genshi
Searching for Genshi
Reading http://pypi.python.org/simple/Genshi/
Reading http://genshi.edgewall.org/
Reading http://genshi.edgewall.org/wiki/Download
Best match: Genshi 0.6
Downloading http://ftp.edgewall.com/pub/genshi/Genshi-0.6-py2.4.egg
Processing Genshi-0.6-py2.4.egg
Moving Genshi-0.6-py2.4.egg to /usr/lib/python2.4/site-packages
Adding Genshi 0.6 to easy-install.pth file
Genshi 0.6 がインストールできました。簡単です。
Babelも同じようにインストールします。
> easy_install Babel
Searching for Babel
Reading http://pypi.python.org/simple/Babel/
Reading http://babel.edgewall.org/
Reading http://babel.edgewall.org/wiki/Download
Best match: Babel 0.9.5
Downloading http://ftp.edgewall.com/pub/babel/Babel-0.9.5-py2.4.egg
Processing Babel-0.9.5-py2.4.egg
creating /usr/lib/python2.4/site-packages/Babel-0.9.5-py2.4.egg
Extracting Babel-0.9.5-py2.4.egg to /usr/lib/python2.4/site-packages
Adding Babel 0.9.5 to easy-install.pth file
Installing pybabel script to /usr/bin
Installed /usr/lib/python2.4/site-packages/Babel-0.9.5-py2.4.egg
Processing dependencies for Babel
Finished processing dependencies for Babel
Babel 0.9.5 プロジェクトページからダウンロード出来るのと同じ、最新版です。
Tracには最近はやりのMercurialやGit用のプラグインもありますが、デフォルトのソース管理となるSubverionはインストールしておきましょう。
> yum install subversion
Subversion 1.4.2 がインストールされました。Tracの正式サポートは 1.5, 1.6 みたいですね。。
「1.4 でも動くはずだけどね。」みたいに書いてます。。がんばれ。
Tracのインストールとプロジェクトの作成
さて、いよいよ Trac のインストールです。
今回は最新が使いたいので、0.12 ベータをインストールします。
> easy_install Trac==0.12b1
バージョンは == で指定するんですね。なんとも独特な。
2010/05/14追記: Tracを多言語対応するにはインストール前に言語ファイルのコンパイルが必要です。Tracを日本語化する場合は翌日の日記=>「日本語化したTracをインストールする」の方法でインストールしてください。
TracEnvの作成
Tracがインストールできたので、さっそくプロジェクトを作りましょう。
initenv コマンドを実行するとプロジェクト名など聞かれますので適宜入力します。
> mkdir -p /var/share/trac/projects/sandbox
> trac-admin /var/share/trac/projects/sandbox initenv
うまくいったようです。
> ll /var/share/trac/projects/sandbox/
total 36
drwxr-xr-x 2 root root 4096 May 13 18:19 attachments
drwxr-xr-x 2 root root 4096 May 13 18:19 conf
drwxr-xr-x 2 root root 4096 May 13 18:19 db
drwxr-xr-x 2 root root 4096 May 13 18:19 htdocs
drwxr-xr-x 2 root root 4096 May 13 18:19 log
drwxr-xr-x 2 root root 4096 May 13 18:19 plugins
-rw-r--r-- 1 root root 98 May 13 18:19 README
drwxr-xr-x 2 root root 4096 May 13 18:19 templates
-rw-r--r-- 1 root root 27 May 13 18:19 VERSION
ちゃんとプロジェクトが出来てますね。
デプロイ用のコマンドでCGIなどのファイルを作成しておきます。
> trac-admin /usr/share/trac/projects/sandbox deploy /tmp/deploy
> mv /tmp/deploy/* /usr/share/trac/.
> rm -fR /tmp/deploy
Apache で使うつもりなので、permissionも変えておきましょう。
> chown -R apache:apache sandbox
Apacheとmod_wsgiの設定
インストールマニュアルにはfcgiかmod_wsgiを推奨すると書いてあるので、今回は mod_wsgi でTracを使うことにします。
mod_wsgi はyumではインストール出来ません。
もう少しなんですが、ちょっとめんどくさくなってきましたね。。
> wget http://modwsgi.googlecode.com/files/mod_wsgi-3.2.tar.gz
> tar xzvf mod_wsgi-3.2.tar.gz
> cd mod_wsgi-3.2
> ./configure
checking for apxs2... no
checking for apxs... no
checking Apache version... ./configure: line 1704: apxs: command not found
./configure: line 1704: apxs: command not found
./configure: line 1705: apxs: command not found
./configure: line 1708: /: is a directory
checking for python... /usr/bin/python
./configure: line 1877: apxs: command not found
configure: creating ./config.status
config.status: error: cannot find input file: Makefile.in
エラーです。httpd-devel のコマンドが必要みたいです。
しょうがないので、インストールしましょう。
> yum install httpd-devel
> ./configure
> make
/usr/sbin/apxs -c -I/usr/include/python2.4 -DNDEBUG -D_GNU_SOURCE mod_wsgi.c -L/usr/lib -L/usr/lib/python2.4/config -lpython2.4 -lpthread -ldl -lutil -lm
/usr/lib/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fno-strict-aliasing -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -pthread -I/usr/include/httpd -I/usr/include/apr-1 -I/usr/include/apr-1 -I/usr/include/python2.4 -DNDEBUG -D_GNU_SOURCE -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo
mod_wsgi.c:135:20: error: Python.h: No such file or directory
mod_wsgi.c:138:2: error: #error Sorry, Python developer package does not appear to be installed.
mod_wsgi.c:142:2: error: #error Sorry, mod_wsgi requires at least Python 2.3.0 for Python 2.X.
mod_wsgi.c:150:2: error: #error Sorry, mod_wsgi requires that Python supporting thread.
またまたエラーです。
プロジェクトホームページに解説がありました。
通常のLinuxパッケージでインストールしたPythonにはヘッダーファイルが無いので
dev パッケージを入れなさいと言っています。
> yum install python-devel
> ./configure
> make
> make install
今度はうまくいきました。
では Apacheに mod_wsgi をロードして、trac環境を作りましょう。
/etc/httpd/conf.d/trac.conf を以下のように作成します。
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / /usr/share/trac/cgi-bin/trac.wsgi
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
やっとセットアップが終了、かなり大変でした。。
Apacheを起動して、確認します。
> /etc/init.d/httpd start
一応、Tracの画面が表示されました。

でも使う前に、まだやることがあるようです。。。
- サイトの日本語化
- チケット作ろうと思ったら、認証情報がないといわれた。。
- Subversionとの連携
- プラグインとか入れたい
だんだん面倒になってきたあなたにはクラウド型バージョン管理のサイクロンがあります!サイクロンの画面イメージはこんな感じ。
■ サイクロンダッシュボード画面
サイクロンにはいつまでも無料 でお使い頂けるフリープランもあります。是非1度お試しください。 
5月 10
adminソフトウェア開発 bts, ソフトウェア開発
ゴキブリを1匹見つけたらその10倍は家に潜んでいると、誰かから聞いたことがありますが、それは本当なのでしょうか?
ソフトウェアのバグもそんなにあったら嫌だなあと最近つくづくと感じています。
バグ数の推定
そもそも、システム開発工程でバグを作りこまないようにすればいいのですが、必ずと言っていいほど作りこまれてしまいます。設計書の誤り、誤解や思い込み、錯覚あるいは検討もれなど、原因はたくさんありますが、どうやら人間の行動にはミスがつきまとうものだと理解した方がよさそうです。
設計者ならば、どれくらいバグが潜んでいるのか興味があると思いますが、信頼性予測のモデルによってソフトウェアの信頼性を数理的なモデルで計量化して予測する方法もあります。プログラム開発者が意図的にプログラム中にバグを埋め込んでおき、デバッグにより発見したバグのうち意図的に埋め込んだバグの発見率から全体のバグの数を推定するのです。
次のような式になります。(詳細はこちらを参照のこと)
(発見済み埋め込みバグ数)/(埋め込みバグ数)
=(発見済み潜在バグ数)/(潜在バグ数)
ソフトウェア開発者の能力によりバグの作りこみ数も変わってくるような気もしますが、バグの収束を願う設計者の気持ちはひしひしと伝わってきます。
テストの達人とは
バグを見つけるためには効果的なテストが必要ですが、どんなテストをすれば重大なバグが素早く見つかるのでしょうか。一般的なテスト作業では、コンポーネントとして実装したプログラムが要求仕様とおりに動作することを単体テストで確認し、結合テストによりさらに大きなモジュール単位での動作を確認します。当然のことながら、どんなテストツールを使うか、どんな体制でテストチームがテストを進めるかが重要になってきます。テスト工程を管理するテストツールも沢山出ているので、うまく利用すれば自動テストや結果分析も効率化できると思います。
デバッグとは関係ありませんが、2つの似た絵があって右の絵と左の絵でどこが違うのか探すような、間違い探しのクイズを考えてみてください。答えを見れば、何だそんな所か、とわかるのですが、意外なところ、想定外のところに違いがあると案外と見つかりにくいものです。もちろん、得手、不得手はありますが、ちょっと見方を変えることでバグが見つかるということがあります。他の人の見方や意見を参考にするのも、新鮮な視点を持つという点で、効果的です。開発者は、失敗を繰り返しながら、テストの達人に成長していくものなのでしょう。
ある先輩が言っていた言葉を思い出します。
「バグを全部見つけるのは無理だが、事故再発防止により品質向上できる」
類似不良を出さないことが最低限必要なのだと理解しましたが、これはいつの時代も通用することだと思います。

cikloneによるバグ管理
バグ管理システムcikloneでは、チーム開発の進捗、wikiによる情報共有基盤を備えています。そのため、プロジェクトのチームメンバと情報交換をしながら、テストも進められます。バグ管理データベースで過去の類似バグも管理しているので、同じ失敗を繰り返さないようにできます。
無料版での利用が可能なので、皆さまも是非、御検討下さい。