Rail関連の本が増えたことと、英語に対する抵抗感が減ったこともあり、全ての開発をRailsで行なっています。
この辺りは、社内システムだから実験的に作っても許される面があるからだと思いますが。

Windowsベースでの開発は
RadRails+Apache(FastCGI)+MySQL
になってしまいました。
なるべく本番環境に近い形にしたいという考えからです。

ですが、やはりWindowsベースでのサーバ運営となるとサーバの力を出し切れないという面が大変寂しいので、Linuxベースに移行しようと思いました。

とりあえず、VMwareもPlayerが出て無料で使えますので実験、実験。

<以下、大枠での手順です>

1、最近流行りのUbuntuのVMWare用イメージをダウンロード。
  日本のUbuntuユーザー会(?)のページからダウンロード出来ます。
  Bittorrentというツールを使ってダウンロード出来るバージョンがあります。
  こちらの方が速度が速いので、良いです。(ただし、会社内などでProxy経由でしか外部のネットワークに  接続できないという人は使えないと思います。)

2、起動自体は問題ないので、使ってみる。
  私の場合、LinuxでのエディターはEmacsしか使えないので(Viを覚える気がないだけ)、パッケージの  追加インストールを行ないました。
<印象>
かなり余計な物が入っていないので、自分の好みのものを入れやすいです。
最初は18000パッケージも無いじゃん!とか思いましたが、aptの設定ファイルにあるコメントを幾つか外すと合計が18000オーバーになりました。
この18000オーバーのパッケージがツールからインストールできるように設定ファイルのコメントを外してあげると、これからインストールする物は殆ど見付かります。

3、Rubyを入れる。
  RubyとRuby1.8というパッケージを入れました。
  実行がrubyともruby1.8とも出来るので、ちゃんと1.8.4なのかと心配していましたが、
  結果的には問題なかったです。ちゃんと1.8.4でRailsが立ち上がってました。

4、Railsを入れる。
  パッケージにRailsがありますが、ちょっと古いです。
  一旦、パッケージを入れました。

5、Gemsをインストール。
  これはパッケージが無いので、ソースを引っ張ってきてやります。

6、update
  Gemが入ったら、Railsをアップデートしました。
  これで1.1.6になります。

7、Emacsの変更
  UTF-8に対応させるための追加インストールを行ないました。

8、EmacsにRailsのソースを書きやすくするものを追加でインストール。
  別のLinuxですと、Emacsがシンプルな状態で入っていないことが多いですが、Ubuntuは最初に入っていないだけに、一から入れていくのに等しいです。
  おかげで、rails.elについては綺麗に動く環境が出来ました。
  rails.elが必要とするパッケージの殆どは、標準のパッケージインストールルーツで入れることが出来ます。2つのelだけは、WGETなどでネットから取って来る必要があります。

9、.emacsなどを修正
  ubuntuの場合emacsの設定ファイルは、パッケージ毎に提供される設定ファイルを
  個別に保存し、Emacs起動時にまとめて読み込む方式になってます。
  そのため、自分のルートの.emacsはすっからかんです。
  それぞれのファイルを見つけて、差分を見ながら.emacsに設定していく感じでした。

10、使ってびっくり!
  ubuntuのパッケージのおかげで、非常にトラブルが少なく構築できました。
  ちなみに、この過程の中でUTF-8に文字コードを切り替えています。

<感想>
1、Debianよりもさらに楽に組める。
  Debianのパッケージ管理も大変便利でしたが、UbuntuはちゃんとDebian越えです。
  開発環境を直ぐに構築したいなら、かなり便利だと思います。
  当然、一通りのソフトがデフォルトで入るので、家族用に環境を1台のPCで作ることも可能になるかと思います。
  (Windowsのユーザーを複数作ると、ソフトをインストールするたび別のアカウントへの影響を考えないといけないので結構面倒だと感じます。)
2、無料なのが最高。
  これだけ出来て、無料なのがやはり素敵です。
  多くの人の努力の賜物だと感じます。感謝しつつ、良いソフトウェアを開発したいと思います。

ダイジェストで書きましたが、それぞれのステップを詳細に記録していこうと思います。

読者の方がついたのもあり、すごーく久しぶりに更新します。
以前、書いた時は「PHP」によるWeb開発をメインにしてました。
1年経ってだいぶ変わってます。

1、Rails
 Rubyという言語により書かれているフレームワークです。フレームワークといっても、幾つかの機能により構成されています。特に他と決定的に違う部分は、モデル層。.NETなどもそうですが、DB関連のモジュールにて綺麗に隠蔽することで出来る限りSQLを使わないで定型のアクセスが出来るかが、ある意味では勝負の分かれ目になっている感じがしてしまいます。
 そういう意味では、Railsにて使用されるActionRecordというのは秀逸です。特に便利なのは、XMLでテーブル定義を書かなくても自動でDBの変化を吸収してくれる点。つまり、列が追加されたり、型が変わっても、列名をメソッド名としてアクセス出来るのでテーブル名のインスタンス作成後、メソッド名(列名)で値取出しが出来ます。
 また、(一般的に言うところの)イテレーターが使えるため、プログラマーは検索結果全件表示などにおいて、終了チェックなどを気にしなくて良いです。(例えば、件数数えてForでまわしたり、Endの識別子までWhileでまわしたりしなくていい。)
 ということで、もともとRubyが好きだったのもあり、あっさりとPHPを捨てました。また、海外性のEclipceベースのIDEが出て、大変開発が楽になりました。特に自動生成周りがお気に入り。あとファイルがエクスプローラー風に画面左に表示されるあたりとDBにアクセスがツール上で出来るのでデモデータを確認しながらプログラムをするのが1つのツールで出来るのは非常にうれしい。

2、MySQL
 MySQLの5が出て、4.0系、4.1系、5系と分かれていたのに、やっとケリが着いた感じです。Navicatという有償のツールが気に入っているので、MySQLが5で落ち着いてくれて大助かり。
 また、4系で悩まされていた文字コードも設定ファイルに1行書くと落ち着いたのもうれしいです。まだ、新機能のテストまで行ってないので、これから使い込むという感じですが、今後はこれで落ち着けます。Windowsメインなので、インストーラーが良くなったのはうれしいです。

3、Ajax
 ユーザビリティーの向上に使えそうだなぁと感じて調べてみたら、Railsは簡単に使える。これもうれしいです。でも、なんとなくパターンを見切れていないので、実開発では使ってません。もうちょっと勉強してから。

4、Linux
 やっぱり、サーバ運用はWindowsよりLinuxのほうが良いと思います。
 サーバも安くていいのが多くなりましたし、デスクトップ機用のCPUも一気によくなったのと大量のメモリをつんだPCも一般的になりつつあるので、 デスクトップ機レベルの1UサーバでLinuxを入れて、2~3台で、サイト分散させて、MySQLもカスケードして・・・・
 なんていうのも、安く出来そうです。
 やってみたなぁ。

ということで、今の心境を書いているのか、状況を書いているのかわかんなくなりましたがぼちぼちとまとめていこうと思ってます。本日はここまで。
追記:レイアウトが酷かったので修正。

「Software Design 2004年12月号」は買いかもしれません。
特集でPostGreSQLのバージョン8が取り上げられています。
このバージョン8は、Windowsにネイティブ対応するそうです。
オープンソースで、Windowsで使用できるDBと言えばMySQLがメインだったので
今後はOracle好きにも対抗出来るDBが使えるようになります。

まだベータ版ですが、年内には正式版が出るそうです。
調べてみたところ、.NETからも接続できますし、大体の言語のライブラリーは
すでに提供されています。
ということで、非常に個人的にはうれしいニュースだったので即買でした。

同じ本ではHTML_QuickFormとSmartyを使用したサンプルが書かれていました。
手軽にお試しをしたい人にはよいかもしれません。
(ただし、誌面が少ないので一度ご覧になってから買うかは決めた方がよいと思います。)

色々と調べてみた結果、現在の所のMojavi日本語情報は下記のページが素敵です。
1、連載記事
  現在はまだ概念的な部分の説明で終わってますが、今後に期待です。
  Stack*の連載1回目
  Stack*の連載2回目

2、Wiki
  たぶん、日本語でのチュートリアルなどでは下記のページが最高ではないでしょうか。
  Smartyとの連携についても書かれており、非常に勉強になります。
  Try-Angle HP

チュートリアルをやってみて(といっても、まだ1だけですが)、率直な感想としては
1、フレームワークは、遷移を掴むまでが大変。
  ただ、ある程度解って来ると規則によりソースが分かれるので便利と思えてくる。
2、フレームワークを使っても、リクエストの処理などを出来るメソッドが限定される
  わけではない。そのため、やはり別途規則は作らないといけない。
  (私の勘違いなのかもしれませんが。)
  ※つまり、完璧な規則は結局フレキシブルな開発を天秤にかけることになるので
   人間系での規則によって守らないといけないことは無くならないと思う。
3、Validate(入力チェック)などは、APIを見れば大体使いこなせそう。
  つまり、入力チェックがチェック出来ていない!という自爆を防げる。
  また、エラーメッセージがスタックされるのでユーザーに通知がしやすい。
  ※エラーメッセージを出すときは、大方入力画面上に出したりすると思うんです。
   今やったばかりのチュートリアルは別のページを設けて、「戻る」を使うパターン
   でした。

色々なフレームワークを試して感じるのですが、MVCだ!といってもフォームから
値を受け取るためには必ず名前の策定が必要ですし、テーブルなどの表示方法などの
ルーチンを固めないとテンプレートの作成に着手出来なかったりすると思うんです。
つまり、デザイナーとプログラマーの分業はある時期を境にしないとやはり無理なのか
と思います。
(アーキテクトが決まるまでは、プログラマーが兼業した方が良いように思います。)

ということで、Smartyとの連携やDB関連の処理の軽量化、Form_Objectを使用しての
フォーム関連処理と遷移の結合度などを加味して使っていけばさらに効果的に使う
ことが出来そうだと思いました。
前に、JavaのStrutsを勉強した時よりもずっと使いやすいように思います。
(もちろん、この考えにはPHPよりJavaが「堅い」言語である点や、Web関連
 の技術の実装方法などの違いもあると思います。)
・・・でも不思議なのは、MojaviってStrutsを意識したと読んだ気がするのですが
抵抗感はだいぶ違うように感じました。何故??

近くに大きな本屋が無い街に住む技術者の方々は、どうやって情報を得ているんでしょうか?(私もその一人なんですが。)
ということで、Amazonの1500円以上送料無料に感謝しながら手に入れた「まるごとPHP vol.1」について。
http://www.amazon.co.jp/exec/obidos/ASIN/4844320254//249-0758733-5987525

今までPHPがらみで、これは!と思った本は個人的には少ないです。
何故かというと
1、PHPの文法はそんなに難しくないから。
2、凝った使い方をしようとすると、記事などで説明される範囲をこえる。
  (紙面の都合上、HPを見て下さい・・・と言われる。)
英語のページを最初から読むのは就業時間中だと厳しいし(能力的問題)、
もっとサクっと知りたいと思って本を見に行ってもこれだ!という本には
割とPHPは巡り合えないんです。

PHPでの有力な情報源の一つは、このブログでも紹介しているCodeChargeStudioの販売店であるアリアルが翻訳+追記しているPHPマガジンというオンラインの書籍
(PDF)です。
立ち読みという機能があり、一部を読めるのですが心躍る記事があります。
もうそろそろ契約しようかと思ってます。

PHPにおける私の情報源(書籍)は上記だけなので、使用する他言語に比べると
心細い限りです。もっと濃い内容で、定期的に出してくれる書籍が欲しいなと
思っていたところ、Amazonで発見しました。

特筆すべき1点目は付録のCD-ROMです。
このCD-ROMですが、今までついてきた付録の中では一番好みが分かれそうです。
なんと、KnoppixというCDブートできるLinuxと紙面で書かれたサンプルの動作環境が入っています。つまり、買ってきてCDを入れれば大体のPCでいきなり環境を作らなくても動きます。
但し、Knoppixで動くように調整されているとか。

私のようなWindowsベースで開発している人間にどのような影響があるのかは、まだ解りませんが、実際に環境を作らなくてもいいのは便利です。
(私はPHPを最初Linuxベースで使用していたため、あまり困らない。)

内容は「ビギナーズセッション」「スペシャルセッション」「エキスパート
セッション」という別れ方をしており、お決まりのインストール方法から始まりDBへのアクセス関連のお話、PEARに関する話、HTML_QuickForm、Smarty、FPDF
(フリーのPDFライブラリ)、Mojaviとなっております。
特筆すべき2点目になりますが、見てのとおり内容が濃いです。
日本語での情報が少ないPEARに関する情報が多い点、MVCに関する旬な記事
テンプレートなどに関する知識の説明などと、とりあえずPHPを使えるようになりもっと開発を楽にしたい、Javaなどから聞こえる技術がPHPでも出来ないの?
などの欲求に答えてくれる内容だと思います。

とりあえず、日本語で情報を仕入れたいなという方には値段も1900円と
専門書の価格帯では安いほうでもあるのでお勧めです。
HTMLとPHPのソースを分離させる仕組み。
メンテナンス性や作業性などを考えて有効だからではなくて、「生理的に」HTMLとPHPのソースを一緒に書くのが嫌なんで使ってます。(笑)

私のパターンは下記の3つ。

1、HTMLテンプレート
  from PHPカイハツ日誌http://hoover.ktplan.ne.jp/kaihatsu/php/

  現在は、小規模な開発時に使ってます。
  習得が簡単です。導入も激しく簡単です。
  とりあえずテンプレートというのに慣れたい方に、一番お勧め。
  「小規模」と書きましたが、他のテンプレートの習熟が甘かった
  時期には中規模にも使ってました。全然問題無しです。

2、Smarty
  Smarty(暫定) http://sunset.freespace.jp/smarty/

  ちょっと前に知ってから、使うようになりました。
  上記のサイトにて、日本語ドキュメントが公開されています。
  (ちなみに、印刷するとびっくり情報量です。)
  機能が豊富なのと、キャッシュが出来る点、以外に導入が
  簡単な点が気に入ってます。
  1に比べると、習得はちょっと時間がかかると思います。

3、CodeChargeStudio

  考えてみると、DBのアクセスからテンプレートまで自前で持っている
  ためフレームワーク」というほうが正解かもしれないですね。
  試してみると驚きますが、コードの自動生成機能が豊富です。
  ただ、機能がありすぎるので習得には時間がかかりそう。
  
今後は、2+他のライブラリーという流れと、3の流れを使っていこうと
思ってます。
ちなみに1は、大急ぎでの開発時に秘密兵器として取っておこうかと。
今までの開発では
 ・Meadow か xyzzy
 ・phpエディタ
 ・CodeChargeStudio
のどれかを使用。

(ちなみにCodeChargeStudioは、会社で買ってもらったものなんで
 家でのテストは出来ない。
 おかげで仕事の合間に勉強中。使いこなせていない。)

VisualStudioの開発環境に慣れてしまった人間なんで、下記の機能がないとどーも開発しづらくて仕方ない。
1、コードの補完機能
  関数が多いんで、覚えられない人には必須。
  イチイチ調べるのは面倒だし。
2、コードの概要(インスペクタとでも言うんでしょうか?)
  自分で作ったFunctionなどの一覧画面と、コード場所へのジャンプ機能。
3、関数の引数表示
  ZendStudioではあるとかないとか。入力中に教えてくれると
  ひじょーに助かる。
4、デバッグ機能
  ベストはやはり、ブレイクポイントの設定。でもそうなると
  ZendStudioしか出来ない。
5、ヘルプ機能
  Webで公開されているヘルプを簡単に検索出来るのがいい。
  ・・・我儘だが、バージョンアップしたドキュメントのダウンロードとかも
  出来ると素敵だと思ったりもする。

ということで、CodeChargeStudioをメインにしたいんだけど出来ていないので、PHPエディタかxyzzyを日々使ってます。


PHPエディタ http://fol.axisz.jp/php/
CodeChargeStudio http://www.asial.co.jp/products/ccs/