Lithium0.7がリリースされました(和訳)
3月 10, 2010 by yandod · Leave a Comment
PHP5.3専用のもっとも革新的なフレームワークLithiumの最新版である0.7が2010年3月8日にリリースされました。今回はMySQLサポートの正式対応が追加され従来型のアプリケーションの開発が飛躍的に向上しました。またコードの再利用を進める為の内部の最適化も引き続き行われています。詳細はいつものようにリリースノートの和訳を作りましたのでそちらをご覧ください。
またGwooがOrange Countyで行ったプレゼンテーションの資料と音声も公開されているので要チェックです。
原文
http://rad-dev.org/lithium/wiki/blog/Lithium-0-7-luck-of-the-irish
Lithium0.7 Luck-of-the-irish
私たちは近づいてきたセントパトリックデーのお祝いに夢中になる前に、最新版のLithiumのリリースを準備できました。Lithium0.7は170のコミットを6人の開発者から受け取り、私たちはまた一歩の安定版のリリースに近づきました。
当初よりLithiumはドキュメント指向のデータベースをサポートし、高い比重を置いていました。私たちは依然として高速にパフォーマンスに配慮し、かつ柔軟なアプリケーションの構築と柔軟なアプリケーションの開発にはデータストレージに新しいアプローチを使用する事が大きな利益になると考えています。しかし、我々はまだ従来のリレーショナルデータベースが多くのアプリケーションに有益な事もわかっています。この目的のために、これらの機能を統合しリレーショナルデータベースを使用するために必要な大規模なサブセットをLithium0.7に実装しました。現時点ではMySQLがテストに合格した唯一のデータベース(`SourceTest`)ですが、基盤部分はSQLite3、PostgreSQLなどのその他のデータベースにも適用できます。すでにMSSQLの作業は進行中で、[li3_mssqlプラグインとして進行中](http://rad-dev.org/li3_mssql/wiki)、もちろんこのデータベースや他のデータベース実装へのコントリビューションは大歓迎です。
また、SQLをサポートする為に`Adaptable`クラスに計画的な実装をLithium0.7で追加しました。計画はどのようにデータが転送され、アダプタに適用される変更を抽象化して提供します。たとえば、あなたが`Cache::write()`を使用してデータを保存し、`Cache::read()`てデータを取り出したいとします。この機能は、コアに含まれている`Serializer`という計画を通じて簡単に実現できます。`Cache`アダプタに対するインターフェイスは`Base64`、`Json`、`Serializer`が実装済みです。また`Adaptable`のそのほかのサブクラスに対するストラテジーは実装中です。
ChangeLogを見てもらえれば(http://rad-dev.org/lithium/wiki/releases/0_7)、g11nのいくつかの大きな改善とテストのカバレッジの向上がした事がわかるでしょう。
いくつかの名前空間とブートストラップのプロセスは、アプリケーションのコア機能を委任しやすいように改良されました。いくつかの変更は、以前のリリースとの互換性がありません:
- Dispatcher::run() `Request`オブジェクトが最初のパラメータとして必要になりました。`webroot/index.php`を見てください。
- プラグインをすぐに他のライブラリと同じようにできます。app/libraries内の”plugins”ディレクトリが削除されています。現在はプラグインの追加はライブラリの追加と同じように行います。例 `Libraries::add(’li3=docs’);`
- 新しいBootstrapファイルと`bootstrap/action.php`の代替の`switchboard.php`の除去。
- bootstrap/libraries.php内の `Libraries::Add(’app’, array(’default’ => true));` はあなたのアプリケーションを ‘default’ ライブラリとして提供します。
- `Connections` はconnections.phpを読み込まなくなりました。有効にするには`config/bootstrap.php`で設定してください。
- `Connections::add()の`は現在2つのパラメータを受け取ります。`config/bootstrap/connections.php`を参照してください。
PHP 5.3およびLithiumに関する2時間のプレゼンテーションをここで読めます。(音声あり):http://lithify.me/presents
我々は、高速開発のスケジュールをイテレーションフライデーと共に進めてきました。私たちは減速するつもりはありません。予定どおり安定版は2010の初夏にリリースできるでしょう。
うまくいけば、このプロジェクトの成功はプロジェクトに関わる全ての人にとってエキサイティングなニュースになるでしょう。いつものように、われわれはどんな形のコントリビューションも大歓迎で待っています。
〜gwoo
–翻訳ここまで
MySQLなどの従来型のデータベースがサポートされましたが、ドキュメント指向データベースこそが高速で柔軟なアプリケーション開発をもたらすという強い意志が伝わってきます。かつてCakePHPなどが流行り始めた際はDRYなフレームワークこそが高速開発を実現する事を世の中に示したと言えますが、時代は次のステップに向かっていますね。Lithiumは単なる新しいフレームワークではなく、こういったパラダイムシフトを提唱しようとしている事が特に大事な点だと個人的には考えています。
またCakeやsymfonyなどの近代的なフレームワークではプラグインなどを利用した拡張が提供されていますが、なかなか共通部分をプラグインに切り出せないという問題にはまりがちです。その点を考慮してか次世代のフレームワークでは実装そのものとプラグインの境界線が薄くなる方向へと進んでいます。アプリケーション自体をプラグインとして実装するとイメージすると近いかもしれません。
なんにせよこのパラダイムを体感するには実際に試してみるのが一番でしょう!
HipHopのビルドとインストール方法(和訳)
2月 21, 2010 by yandod · 2 Comments
ソースコードがついに公開されたHipHop for PHPのビルドとインストール方法のドキュメントの和訳を作成しました。CentOSかFedoraの環境をお持ちの方は早速ビルドに挑戦してみてはいかがでしょうか。利用法のドキュメントの和訳は引き続きアップします。
- PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開
- HipHopのビルドとインストール方法(和訳)
- HipHopを実行するには(和訳)
原文
http://wiki.github.com/facebook/hiphop-php/building-and-installing
ビルドとインストール
HipHopはCentOSとFedora向けに開発されており、他のオペレーティングシステム上でのビルドは現在のところ機能しません。他のオペレーティングシステム向けのサポートは準備ができ次第追加されます。
前提条件
HipHopの前提条件はすべてをを静的にビルドする事です。ほとんどのパッケージは直接あなたのディストリビューションのパッケージ管理システムからインストールすることができます。
必要なパッケージ
- cmakeの2.6以上のバージョン
- g++ / gccの4.1以上のバージョン
- Boost 1.37以上のバージョン
- flex
- bison
- {re2cの{0}0.13.0以上のバージョン
- libmysql
- libxml2
- libmcrypt
- libicu 4.2以上のバージョン
- openssl
- binutils 及び binutils-dev
- libcap
- gd
- zlib
- tbb インテルのスレッドビルディングブロック
- libmbfl: git clone git:/ /github.com/scottmac/libmbfl.git
- Oniguruma
- libpcre3
- libexpat
カスタムパッケージ
以下のパッケージは若干の変更が加えられており、最新のソースのコピーに対して提供されているパッチを当てる必要があります。
- libcurl src/ third_party/libcurl.fb-changes.diff
- libevent 1.4 src/third_party/libevent.fb-changes.diff
パッチを適用するにはあなたのビルド環境は:
curl-7.20.0 hiphop-php libevent-1.4.13-stable
次のコマンドを入力します:
cd libevent-1.4.13-stable
cp ../hiphop-php/src/third_party/libevent.fb-changes.diff .
patch < libevent.fb-changes.diff
cd ..
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
patch -p0 < libcurl.fb-changes.diff
パッチ処理中にエラーが表示される場合は -p0 を入力しないでください。
バンドルパッケージ
- src/third_party
- libafdt
- libmbfl
- sqlite3
- timelib
ビルド
ソースからIntel TBBを使用する
ソースからTBBの構築した場合や、、手動でバイナリをインストールした場合はいくつかの変数をバージョンと場所のヒントを与えるためにエクスポートする必要があります。
export TBB_INSTALL_DIR="/home/user/tbb22_012oss"
export TBB_ARCH_PLATFORM="intel64/cc4.1.2_libc2.5_kernel2.6.20"
目的はls $TBB_INSTALL_DIR/$TBB_ARCH_PLATFORM に対してリンクするファイルが表示される事です。
ビルド
CMakeは、現在の選択されているビルドツールです。
あなたのカスタムのlibcurl、libeventや、必要に応じてインストールした他のライブラリの場所をCMakeに指し示す必要があります。CMAKE_PREFIX_PATH変数は場所のヒントを与えるために使用されます。
export CMAKE_PREFIX_PATH=/home/user
HipHopのビルドは下記のように行います。
cd /home/user/hiphop
git clone git://github.com/facebook/hiphop-php.git
cd hiphop-php
git submodule init
git submodule update
export HPHP_HOME=`pwd`
export HPHP_LIB=`pwd`/bin
cmake .
これが終わるとビルドに必要なファイルが生成されシェルに処理が戻ります。最後にmakeを実行します。エラーが発生した場合は、チェックアウトしたディレクトリ内のCMakeCache.txtの削除が必要です。
make
–訳ここまで
Lithium0.6リリースノート 和訳
2月 17, 2010 by yandod · Leave a Comment
PHP5.3以降専用の先進的フレームワーク、Lithiumの0.6がリリースされました。(Lithiumの基本情報はこちらの記事をどうぞ)
良好な開発体制に支えられて安定版のリリースに向けて着実にプロジェクトが進行しているようです。
いつものようにリリースノートを和訳しました。
今回は2009年10月に来日したJoelがリリースノートを記述していますね。
原文
http://rad-dev.org/lithium/wiki/blog/Lithium_0_6_Big_Improvements_A_Brewin
Lithium0.6:大きな改良の醸造
過去3週間のタイムラインをご覧になっていたのであれば、安定版にむけたLithiumの活動が押し寄せている事にお気付きでしょう。
Lithium-0.6 では後方互換性のないいくつかの変更があります。:
- 新しい最上位レベルの名前空間、`\lithium\net` が作成され、`\lithium\util\Socket`、`\lithium\util\Socket\*`、`\lithium\http` がこの新しい名前空間の下に移動しました。
- アプリケーションレベルのブートストラップ設定ディレクトリを `\app\ config\bootstrap` に作成。これはあなたにあなたのブートストラップシーケンスをより小さく、論理的な塊に分割することができます。そしてこれらはすべて、自動的にロードされます。
- すべてのプラットフォーム用のコンソール出力にカラー表示をサポート。POSIX互換性のあるエスケープ文字をサポートします。
- ほとんどの`li3`コマンド(`test` コマンドも含まれ、、テスト結果を緑赤で表現)で重要な情報をハイライトされカラーで出力されます。
- テンプレート層の完全な見直しを行いました。カスタムストリームクラスは今後はレンダリングに使用されません。APCとうまく動作するテンプレート層の為です。ビューテンプレートはコンパイルされて `app/resources/tmp/cache/templates/`に格納されるようになりました。古いバージョンからアップデートを行う場合は、このフォルダパスが存在している事を確認してください。
- マイナーなキャッシュの愛をLibrariesを `app/config/bootstrap\cache.php`。(ロスのないフィルタとして)
- 適切なロケールをアクション、コンソールへのリクエストから検出する機能の追加
- G11nの環境設定を一元的および世界的に有効なロケールの切り替えの導入。
- g11nのいくつかの名前とメソッドのシグネチャを、より合理的なAPIに変更しました。
- `Cache`アダプタのほとんどのAPIの変更:
- MemcaceとAPCキャッシュアダプタでのマルチキーのサポート(どのメソッドがこの機能をサポートするかはドキュメントを見てください)。
- `Cache::write()`からのキー生成時の不要な’\_expires’キーの削除。今後はキャッシュキーを汚染しません。
- 改善されたドキュメントとテストなど。
Lithiumのハッキングから離れて、我々はいくつかの非常に有用なフィルタシステムのユースケースを管理しました:
上記のような基本的な変更がありましたが、Lithiumのコア部分は確かな状態です。さらに新たな機能は毎日のように追加されています。われわれはフィニッシュライン中間地点より先を通過し、勢いはさらに増しています。
*[変更履歴](http://rad-dev.org/lithium/wiki/releases/0_6)
*[ダウンロード 0.6](http://rad-dev.org/lithium/versions)
最新の開発状況は[Rad-Dev](http://rad-dev.org/lithium)をご覧ください。[APIドキュメント](http://lithify.me/docs)、IRCチャンネルは`irc.freenode.net`上の`#li3`と`#li3-core`です。
〜jperras
—訳ここまで
国際化対応やビュー、コンソールのカラー表示など出力系の変更が多く入っているようですね。ビュー層の変更がどのようにAPCを考慮しているかなどは実際に動かしてみながらみるのがよいでしょうか。次回のリリース(3/8)ではMySQLやキュー、初期画面などが追加・改良されるようです。ますます楽しみですね。
PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開
2月 3, 2010 by yandod · 6 Comments
アメリカ時間の昼ごろに僕のTwitter上が一つのニュースで埋め尽くされました。
PHPをC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。
2/21追記:
マニュアルなどの和訳も行いました。
- PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開
- HipHopのビルドとインストール方法(和訳)
- HipHopを実行するには(和訳)
原文
http://developers.facebook.com/news.php?blog=1&story=358
Facebookにおいて重要なことのひとつが開発スピードが早いことです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。
今日、私は2年に渡って作業してきた素晴らし小さなチームのプロジェクトを共有することに興奮しています。
HipHop for PHP。HipHopにより私たちはページによっては、Webサーバー上で約50パーセントのCPU使用量を削減できました。CPUの使用量の少なさは、サーバー台数の削減につながり、それはより少ないオーバーヘッドを意味します。このプロジェクトは、Facebook上で多大な影響を及ぼしました。私たちはHipHopがウェブに大きな利益をもたらすと感じ、今晩オープンソースとしてリリースしPHPによる大規模WEBサイトのスケーリングに新たな方向性が提示されると期待します。いまだ完全ではないHipHopでも信じれれないような結果を残しており、ベータ版であっても心地よいものであるでしょう。
HipHop for PHPは技術的にはコンパイラではありません。むしろ、ソースコードの変換機です。HipHopはあなたのPHPのソースコードをC++に最適化された形に機械的に変換します。そしてg++でコンパイルされます。HipHopは意味的に同等の方法でソースコードを実行しますが、いくつかのまれに使われる機能(eval など)を犠牲としてパフォーマンスを向上させます。HipHopコード変換機は、PHPランタイムの再実装であり、また多くのパフォーマンス向上の為のPHPエクステンションを書き直したものです。
スクリプト言語としてのスケーリングPHP
PHPのルーツは、PerlやPython、Rubyのようなスクリプト言語で、すべてのプログラマの生産性の面で大きな利点があり、迅速かつ継続的な開発を可能にします。これはC++やような伝統的なコンパイル言語やJavaのような中間言語と比較した場合です 。一方、スクリプト言語は一般的にCPUおよびメモリの使用に関して効率的でないことが知られています。このため、月間4000億以上のページビューでPHPをベースにしたFacebookをスケールするという事は挑戦的な事でした。
これらの非効率性に対処する1つの一般的な解決法はPHPアプリケーションの複雑な部分をPHPエクステンションとしてC++で書き直す事です。これによりPHPはフロントエンドのHTMLとC++のロジックをつなぎ合わせる糊のような言語に大きく変化します。技術的な観点はうまくいきますが、アプリケーションに携わる事ができるエンジニアの数を劇的に減らしてしまう事になります。C++を学ぶ事はPHPエクステンションを書くための最初の一歩にすぎません。次にZend APIを理解しなければいけません。我々のエンジニアリングチームは100万ユーザ当たり1人と比較的小さいものですが、私たちのコードベースの一部を他のものよりアクセシブルにするわけにはいかないと考えました。
ほとんどのページがログインしたユーザによってカスタマイズされるFacebookのスケーリングはとりわけ挑戦的です。あなたのホームページを表示する際はすべてのあなたの友人のルックアップする必要があり、関連する更新を検索し、(マルチフィードと呼ばれているカスタムサービス)、お客様のプライバシー設定に基づいてフィルタリングし、コメントや写真などの豊富なデータを補います。そのような豊富なデータが、人々がFacebookの愛している部分です。これらすべてが1秒以下で行われます。HipHopによって最終的にPHPとして組み立てられるロジックを、迅速かつ継続的に書く事ができます。またこのロジックはC++やErlangやJava、Pythonで書かれたバックエンドサービス、ニュースフィード、検索、チャットサービスおよび他のコア部分などと連携しています。
2007年には、これらの問題を解決するための、いくつかの異なる方法を考案しそのうちいくつかの実装を試みました。共通の改善案はFacebookを別の言語で書き換える事でした。ですが、サイト開発の複雑さと速度を達成するためにいくらかの時間がかかると思われました。我々はPHP内部のZendエンジンも書き換えそれらのパッチを寄付しましたが、最終的に必要としてパフォーマンス向上には至りませんでした。HipHopの利益は我々の開発スピードがほとんど変わらない事です
HipHopの誕生
数年前のhackathonでの一夜に(プライムタイムのハック)、PHPをC++に変換するコードを書き始めました。かなりの構文の似ているC++は、CPUとメモリ使用量に関してはPHPを大きく凌いでいます。PHP自体もCで書かれています。我々はこれほどの量のコードを書き直すのが不可能な事はわかっていましたが、もしプログラム的にこれを行うシステムを構築したらどうなるだろうと思いました。
PHPのパフォーマンスを改善するための新しい方法を見つける事は新しいコンセプトではありません。実行時には、Zend EngineはあなたのPHPソースをオペコードに変換し、その後、Zendの仮想マシンを介して実行されます。APCとeAcceleratorのは、この出力をキャッシュしPHPで提供される大多数のウェブサイトで使用されます。またZend Serverは、オペコードの最適化とキャッシュを介してPHPを高速化する商用製品です。その代わりに、我々はPHPのソースコードを直接C++に変換した後にネイティブのマシンコードに変換することを考えました。PHPをコンパイルする事も新しいアイデアではありません。RoadsendとphcはPHPをCにコンパイルし、 QuercusはPHPをJavaにコンパイルし、 Phalanger はPHPを.Netにコンパイルします。
言うまでもなく、一度のhackathonだけでは終わりませんでした。8ヵ月後、私は速くコンパイルされたコードを実行することが可能であることを示すのに十分なコードを得ました。我々はプロジェクトのスピードアップにイアン・プロクターとミンハイ・ヤンをプロジェクトのスピードアップの為にメンバーに加えました。我々は、続く10カ月をすべてのコーディングに、次の6ヶ月を本番サーバー上でのテストに費やしました。我々はリリースから6か月の時点で、Webトラフィックの90%以上のHipHopを使用して提供していると事を誇りに思っています。
HipHopの動作
プロジェクトの主な課題は、PHPとC++の間のギャップを埋めることでした。PHPは動的な弱い型付けを持つスクリプト言語です。C++は静的型付けのコンパイルされた言語です。一方、PHPは魔法のように動的な機能を記述することができ、ほとんどのPHPは比較的簡単です。if(…){…} else {..}はfunction foo($x) { include $x; } よりも好ましいです。これは、我々がパフォーマンスを稼いでいるところです。私たちの生成したコードは変数や関数の静的バインディングをいつでも使用可能です。また、変数のほとんどに型推定を用いてメモリを節約します。
変換プロセスは3つの主な手順が含まれます:
- 収集した情報から何が宣言され、何に依存しているかの静的分析
- C++の特定のタイプを、スカラー、文字列、配列、クラス、オブジェクト、およびバリアント型から選ぶ型推定
- ほとんどの部分のPHPのステートメントと式をC++のステートメントと式に直接対応されたコード生成
また我々はHPHPi も実験的なインタプリタとして設計し開発しました。HPHPiを使用すれば、PHPのソースコードを実行前にコンパイルする必要はありません。これは私達がヒップホップ自体のバグをキャッチする事と、技術者がコードを書く方法を変更せずにPHPコードを書けるようにします。
全体的にはHipHopはC++のパフォーマンス上のメリットを活用しつつ、PHPの良い面を維持することができます。合計では我々30万行のコードとと5000以上のユニットテストを書きました。今夜GitHub上で、全てがPHPライセンスの下でリリースされます。
今夜のお楽しみ
今夜、我々はHipHopの深部へ飛び込む開発者の小さな集まりをストリーミングします。ご覧になりたい場合は太平洋時間19:30に再度こちらのページをご覧ください。
今夜、多くの質問があると思いますが、HipHop wikiを見てください。(リンクを後ほど公開するつもりです)あるいは、 HipHopの開発者メーリングリストに参加してください。また今後数ヶ月、FOSDEM 、 SCALE 、PHP UK、 ConFoo、TEX X、OSCONなどのイベントで、でHipHop for PHPについて講演をします。我々は非常に盛んなオープンソースプロジェクトに皆さんと一緒にHip Hopが進化することに興奮しています。
海平趙、シニアエンジニア、Facebookがプログラマの楽園と悟っています。
—訳ここまで
長文という事と、タッチが慣れないという事があって誤訳があるかもしれません。自分なりに咀嚼して書いてみたつもりですがご意見などあればTwitterなどで頂ければと思います。次はだれが最初に試すか、本番に投入するかという勝負ですね。とはいえFacebookでは90%のトラフィックで利用しているとの事ですからコードの書き方に気をつければ安定しているのでしょう。ということでみなさん、お試しあれ!
Lithium0.5がリリースされました!(和訳)
2月 1, 2010 by yandod · Leave a Comment
最も軽量で拡張性に優れたフレームワーク、Lithiumのバージョン0.5がリリースされました。1.0リリースに向けて折り返し地点と言った所ですね。リリースの速度が速すぎて翻訳する方もちょっと大変ですが、喜ばしいニュースですのでお伝えしたいと思います。
原文
http://rad-dev.org/lithium/wiki/blog/Lithium_0_5_half_way_there
Lithium 0.5, half way there.
Lithiumチームはバージョン0.5のリリースを喜んでお知らせします
バージョン番号から見ると、我々はLithiumの最初の安定版に向けた折り返し地点にいます。Lithiumチームは着実な3週間毎のリリースを続けます。またイテレーション・フライデーが助けになるでしょう。
このリリースにはいくつかの新機能が含まれます:
- apps/plugins/extensions を管理するライブラリコマンド
- モデル、コントローラー、テストをコード生成する為のコマンド
- 一般的な利用の為の国際化されたバリデータ
- 柔軟性とメンテナンス性向上の為のブートストラップの整理
- アダプタ化可能な認証API
- ビューエレメントのレンダリング
- 更なるドキュメント
- 更なるテスト
Lithiumは実際のところかなり安定していていくつかのエキサイティングな機能を含んでいます。MongoDBかCouchDBを使ってアプリケーションを開発する準備は出来ています。しかしあなたがORマッパを必要としているなら、Doctrine用のプラグインがあります。あるいはLithium上で実装されるリリースまで待たなければいけません。エクステンションやヘルパーの作成は本当にシンプルで他のフレームワークからの移植すらも簡単にできます。createコマンドを使ってコード生成をすれば開発を素早く立ち上げられるでしょう。
Lithiumチームは0.5と合わせてその他の更新をお知らせします
- 私たちは新居を見つけました: http://lithify.me
- lab.lithify.meのプレリリース。LaboratoryとLibraryコマンドはLithiumをプラグインを通じて拡張するという目的の一部です。 li3_lab プラグインによってサーバーから提供されるプラグイン・エクステンションを統合し、アプリケーション間でのコードの再利用と共有を容易にします。Libraryコマンドはアプリケーションやプラグインを圧縮・展開出来ます。またプロジェクトを始める為の基本となるアーカイブも添付しました。詳細は li3 help Library でご覧ください。
Lithiumワールドの動きは速く、さらに力強くなっていきます。お見逃しなく!
~gwoo
—訳ここまで
Lithiumのリリースが3週間毎であることが明言されました。これは前回紹介したイテレーション・フライデーで開発が着実に進んでいるとみてよいでしょう。RDBを利用するのであればDoctrineを利用するのが良いですが、MongoDBやCouchDBを使ってアプリケーションを開発するのであれば問題はないようです。実際に開発チームが運用しているアプリケーションはMongoDBやCouchDBばかりなので安定度が高まるのも当然と言えます。コードの圧縮展開などを実現するコマンドラインの進歩も目覚ましいですね。
次回のリリースは2/15ということで、試すのであればお早目に!
イテレーション・フライデーのススメ(和訳)
1月 25, 2010 by yandod · 2 Comments
開発が進んでいる、「PHP5.3以降の最も軽量で柔軟なフレームワーク Lithium」ですが、マネージャのGwooから面白い試みが提唱されています。その名も「イテレーション・フライデー」。オープンソースでソフトウェアを開発している人にとっては興味深い運動だと思います。
詳細は下記の和訳をどうぞ。
原文
http://rad-dev.org/lithium/wiki/blog/iteration-friday
Iteration Friday
ここLithiumプロジェクトではJames Martinによって提唱されたRAD(Rapid Application Development)という手法を用いています。Rapid Developmentから発生し、進化した実践としてアジャイル、スクラム、XPがあります。
Union of RADが用いている手法も進化しています。我々は強力なコラボレーション、コミュニケーションの動機、活発なユニットテストと短いイテレーションを重視しています。最後に上げた「短いイテレーション」がこの記事の目的です。
明日、(2010/1/8)は最初のイテレーション・フライデーになります。しかし、これまでやってこなかったということではなく、初めてこの名前で呼ばれる明日という事です。ジーンズを履きハワイアンシャツやファンキーな帽子でも身に着けて、このイテレーションでマージし、利用可能になった変更をアナウンスしてください。
イテレーション・フライデーの目的継続的なリリースの為の自然なスケジュールを推進です。我々は短いイテレーションこそがコードの品質と開発速度を押し上げると信じています。イテレーションの内容は重要ではありません。たった1つの機能であれ、1000の機能であろうがそれは重要ではありません。規則的なスケジュールで変更がマージされる事がチームとコミュニティの為になり、またRapid Developmentの成功の鍵なのです。
我々はイテレーション・フライデーへの皆さんの参加を待っています。あなたのプロジェクトを同じスケジュールで進め、一緒に楽しんでしまいましょう! iteration-friday.net のウェブサイトを見て、あなたのプロジェクトのイテレーションの準備が出来たらツイートしてください。
~ gwoo ~
–訳ここまで
オープンソースのソフトウェアを開発する際に開発の速度が安定しないというのは誰もが悩んだ事のある問題でしょう。それを解決する一つの実践がこのイテレーション・フライデーです。この記事ではよく知られているアジャイルやスクラムといったものを包括する概念としてRAD開発に言及しています。アジャイルの定義とはイテレーションであると最近、僕は考えています。頻繁なリリースを実行し、イテレーションを自然に実践する事が出来るイテレーション・フライデーに参加してみませんか?
どんな開発速度であってもかまいません、毎週金曜日に変更をマージし、リリースし #iFrydayのハッシュタグをつけてアナウンスをすればOKです!
大事なのは頻繁に規則的にサイクルが回る事です。
Lithium0.3がリリースされました(和訳)
12月 12, 2009 by yandod · Leave a Comment
最も先鋭的なフレームワーク、Lithiumのバージョン0.3が2009年12月9日にリリースされました。プロジェクトマネージャのgwooからリリースノートがアップされていますので今回はこちらの記事の和訳を紹介したいと思います。
Lithiumの開発状況はどのようになっているんでしょうか?
原文
http://rad-dev.org/lithium/wiki/blog/Lithium_0_3_Now_Available
Lithium0.3 Now Available
前回のリリースから260以上のコミットを経て、Lithium 0.3が世界にお目見えしました。
ただ世界の準備は出来ていますか?何度か言及したように我々は頻繁にLithiumの安定性について質問を受けています。 実際のアプリケーションで使えるのかどうか?と。Lithium Binは0.3にアップデートされました。Lithiumの構造を見ることでこの質問にお答えします。
構造(Structure)
Lithiumフレームワークは10のパッケージに分類されます。それぞれは個別の機能を中心とした形になっており、フレームワーク内のいくつかのパッケージに対して依存関係があります。この依存関係の基本はcoreパッケージとutilパッケージの部分です。(つまりここが)フレームワークの中核部分です。
これらのパッケージは基本的なブートストラップとその他のほぼ全てのパッケージの為の便利な機能を提供しています。とても小さなアプリケーションや、自作のマイクロフレームワークの為であればこの2つのパッケージを使う事ができます。多くの高度な機能が出来たばかりのころから、これらの基礎的なパッケージは約1年半ほど開発され、テストが進み安定しています。
storageやconsole、dataといった多くのパッケージはとてもしっかりとしています。これには機能を検証する為の広範囲のテストスイートも含まれています。ですが我々が安定版であると太鼓判を押す前にいくつかやることが残っています。
幸いにも、Lithiumは疎結合で高い拡張性を持つように設計されていて簡単に自作のクラスと入れ替える事が出来ます。フレームワークの大部分が依存しているコア機能を入れ替えたり、またコア機能を革新的なフィルター機能を使って拡張したり置き換える事が出来ます。
フレームワークのコアの動きをみて、我々と同じように興奮を持ってあなたのアプリケーションに使ってもらえる事を期待しています。それがここからさらに良い状態に進むための唯一の方法です。
更新情報
この3週間の間に多くの更新がありました。特に顕著なものは下記の通り。
- データベースとの接続クラスの安定性の改善:
dataレイヤーは大きな進歩がありました。MongoDBとCouchDB向けのバグフィクスと機能追加やMySQLとSQLiteのアダプタに進歩がありました。 - Windowsサポート:
David Persson, Joël Perras, Neil Archerに感謝します。ディスパッチャとコンソールがWindowsに完全対応しました。また更なる支援がMicrosoftから直接ありました。詳細は後で触れます。 - セッションとクッキーのサポートと統合されたインターフェース:
セッションとクッキーのサポートが完全に実装されました。また一つの一貫性のあるインターフェースでアクセスできます。詳細はドキュメントを見てください。 - 改良された国際化対応のサポート:
メッセージ翻訳システムが更新されさまざまな使い方が出来るようになりました。この機能がこのシステムそのものを補っています。- Message::translate() はフィルターする事が出来るようになりました。たとえば翻訳出来なかったメッセージを未翻訳とマークして記録できます。
- extractコマンドのさらなる改良。ソースコード内のメッセージを展開する為のさらに直感的なインターフェースを持ち、さらにカスタムアダプタをサポートしました。(docs translation extensionを見てください)
- テンプレート内での翻訳方法が変わりました。 $tn() がすでにある $t() に追加されました。双方のメソッドの書式が更新されています。
- メッセージを展開する為のパーサを $tn() をパースできるように更新しました。
- 次のリリースでは日付と数値の標準化と現在のロケール情報を透過的に取得する方法をサポートする事を予定しています。
ニュース
現在、多くのLithiumプラグインが開発中です。OAuthプラグインは大きく前進し、あなたのアプリケーションをOAuthクライアントとしてOAuthプロバイダと接続できます。(あなたがTwitterクライアントを作る時など)プロバイダとのインターフェースはさらに改善中です。
我々の前任のフレームワークではプラグインの配布と更新は常に頭の痛い点でした。Lithiumではそのあたりを改良しています。いくつかの驚きの計画もあります。ご期待ください。
最後に全てのLithium開発者に対するハイレベルなサポートの申し出がありました。Uniod of RADチームはフル機能のWindows Server 2008 VPSとIIS、FastCGI PHP5.3をセットアップしました。このサーバーは先週、2009年11月に開催され、コアメンバーの一人がLithiumを発表したMS Web Debeloper Summitで私たちに気前よく寄付されたものです。これによりwindowsはLithiumの第一級のデプロイプラットフォームの選択肢になり、開発者の選択肢を最大化します。
–翻訳ここまで
Lithiumの大まかな構造や、コア部分がかなり安定しているであろう事が見て取れたのではないでしょうか。またCakePHPはWindows上での動作が顕著に遅いといった問題がありましたが、これも解消されそうです。MongoDBやCouchDBをMySQLと同格の扱いで扱っている点も見逃せません。
CakeFestの際にNateに聞いたのですが、cake3(Lithium)はこれまでのCakePHPの歴史や機能、反省点を念頭において開発をされていますので、驚異的なスピードで機能が備わっていきます。おそらく安定版がリリースされた際にはCakePHP1.2ないし1.3と同等以上の機能を備えていると思ってよいのではないでしょうか。ただコミュニティやドキュメントについてはまだ表には出てきていません。(いくつか聞いている事はありますけど、まだ秘密)
ということでお手元にPHP5.3環境を用意してLithiumを試してみるとこのライブ感を感じられて楽しいかと。
CakePHPの変化と新しいプラグイン(和訳)
12月 11, 2009 by yandod · Leave a Comment
CakePHPの開発体制の変更がbakeryでアナウンスされました。Tracで開発されていた頃が懐かしく思えてきます。これまではツール自体をフレームワークで開発する事で完成度を高めていくアプローチでしたが、今後は外部のサービスなどを積極的に採用していくのでしょうか。
という事で詳細は現リードデベロッパのMark Storyさんのポストをどうぞ。
原文
Changes in CakePHP and new plugins
http://bakery.cakephp.org/articles/view/changes-in-cakephp-and-new-plugins
CakePHPの変化と新しいプラグイン by Mark Story
1.3と2.0の開発が本格化する中でCakePHPチームはチームとコミュニティが使うツールについて再評価と検討を行っていました。近年、CakePHPはSubversionからGitへ移行や、問題の管理をTracからcode.cakephp.orgへの移行などの変化がありました。それらの変化はコミュニティとプロジェクトの成長に良い影響をもたらしてきました。
現在、我々は thechaw.comのソフトウェアを使ったcode.cakephp.orgへの移行は全てにおいて有益な変更ではなかったと感じています。code.cakephp.orgのコードベースはいくつかの問題を抱えており、現在のコアチームはこのコードを改良して我々のニーズにあう、幾多のソリューションのようにする事に興味を欠いています。さまざまな選択肢と道について何時間もの議論と検討を重ね、多くのオープンソースプロジェクトを管理するWEBアプリケーションのうちの一つを活用することが最良の手段であると決断しました。私たちはソースコードの管理にgithub[1]を使います。加えて、問題の管理と一時的なドキュメントをWiki上で管理する為にlighthouse[2][3]も使っていきます。
これまでもCakePHP1.xとCakePHP2.xが別のリポジトリに分かれていました。同様にlighthouse上のプロジェクトも分かれます。この変化によりコミュニティにから求められていた必要なツールとリソースを提供する事が出来ると我々は感じています。さらにこれによってコアチームの負担は少なくなり、我々がベストなフレームワークと関連するツールを創る事に全力を尽くす事に集中できるようになります。あなた -コミュニティ- が私たちの移行への思いとご不便をおかけすることを誠に申し訳なく思っている事を理解してもらえる事を望みます。
移行が終わった際は、tracとcode.cakephp.orgは停止し、CakePHPに関する全ての活動はgithubとlighthouse上に移ります。この移行には数日かかる予定です。github上のリポジトリのいくつかの履歴は過去に起きたエラーや不規則さを書き直しています。もしあなたがローカルにクローンを作って変更を加えているならrebaseによってこれらの変更を移行するようにしてください。
また今回、2つの新しいプロジェクトをアナウンスしたいと思います。その名は localized と datasources です。Localizedは全ての国々固有の1.3用のバリデータを包括するように設計されています。この記事の執筆時点で13の国が部分的、または完全に実装されています。もしあなたの国がリポジトリに無ければプロジェクトをフォークして、あなたの国を追加した後にプルリクエストを送ってください。
Datasourcesはコミュニティによるデータソースクラスを包括するように設計されています。当初はこのリポジトリは1.3で非推奨または取り除かれたデータソースが含まれています。時間とともにこのデータソースのリポジトリが成長し洗練されていく事を期待しています。またこれらの2つのプロジェクトはCakePHPからは分離した状態のままにします。これによりCakePHP自身に左右されない自由なリリーススケジュールを提供できます。
datasourcesとlocalizedの双方は問題の管理の為にlighthouseのプロジェクトを持っています。[8][9]これらのプラグインに何か問題があればlighthouseに登録してください。またこれらのプロジェクトに関わることに興味があればgithub上でプロジェクトをフォークして、プルリクエストを送ってください。
–翻訳ここまで
これまでCakePHPの本体に貢献する為にはチケットを書いたり、コアチームに入るなどの障壁がありましたがgithubに移行した事でforkしてプルリクエストを送るという簡便な方法で貢献できるようになります。また日本にとってはlocalizedは全力を尽くすべきところでしょうし、まだgithubのアカウントをお持ちでない方は登録して強力に日本からのコードで貢献していけるとハッピーなのではないでしょうか。
Twitterを見ると大量のプルリクエストにさっそくmarkが驚いているようですよ!
Lithiumによる高速アプリケーション開発のケーススタディ(和訳)
12月 4, 2009 by yandod · 3 Comments
PHP5.3以降専用の軽量フレームワークLithiumの誕生の経緯について以前、紹介しました。Lithiumは軽量さ、拡張性を追及するという事でCakePHPとはまた違った理想の元に開発されているフレームワークです。実際にLithiumを使った開発の流れをベルリンであった事のあるジョン(写真左)がエントリを書いていたので今回はこの記事を紹介しようと思います。ケーススタディはOSSのチャットサービスAnalogueとして実装されていてバックエンドはCouchDBを採用しています。
ジョンはベルリンで会った中でも最高に親切で英語のおぼつかない僕やcakephperさんに「荷物を置きにホテルに戻るけど来る?」とか「パーティの場所はわかる?」とかいろいろと気にかけてくれました。そんなジョンが書いた記事という事でちょっと気合が入るところです。気さくなジョンがフレンドリーに語りかけてくるイメージでお読みください。
なお本文の各セクションは実際のコードを見ながら読むと分かりやすいのでセクションごとにリンクが設けてあります。
原文 “Rapidly developing an application with Lithium: a case study”
http://rad-dev.org/lithium/wiki/blog/rad-dev-a-case-study
Lithiumによる高速アプリケーション開発のケーススタディ
この記事はPHPフレームワークの中でもっとも先鋭的なLithiumを使って開発を行った際の流れを振り返ってまとめよう。この記事を書いている時点でLithiumはまだ初期の開発段階で、本番利用は推奨されない。だが、そのシンプルさの働きでアプリケーションとフレームワークを効率的かつ簡単に繋げる事ができた。この実験の中で僕はオープンソースアプリケーション「Anologue」をすばやく開発し、サービスを立ち上げ、仲間の開発者と協力する事ができた。
書く前の考え
何かを書き始める前にそのアプリケーションの目的について考えるのは大事なことだ。達成の為に絶対に必要な事にフォーカスした明確なゴールを定義する必要があった。すばやく動くためには全ての側面でシンプルである事が重要だ。そこで僕はリファクタリングと実験にフォーカスする事にした。
僕の初期のゴール: どんな人数の人にもチャットルームのようなWEBページを見せられるようにする。リンクを生成し誰にでも参加した会話をシェアする。名前とテキストを入力して会話に追加する。
データベース
この段階で僕のアプリケーションのデータをどうやって集めて取り出すか、どのデータベースを使うのかを考えた。PastiumはうれしいことにCouchDBで動いているが僕の経験は限定的だ。ここはひとつ最初からやってみるいい機会に思えた。
なぜなら僕はユーザーやカテゴリなどのリレーショナルな要素を実装する予定は無かったし、ドキュメント志向のCouchDBは正に僕が求めていたものだった。さらにコレクション(またはテーブル)の中のドキュメントはスキーマを共有する必要が無いので、モデルを通じてデータの保存や呼び出しをすれば、簡単にドキュメントを追加したり、削除したり修正できる。基本的にCouchDBに対して僕がやったのはコレクションを作っただけで、それからは何も見直していない。残りは全てPHPだ。歓喜の涙でモニタが見えず、プログラミングを続けられないくらいだった。
モデル
実際のコード
僕はモデルのデータをベーシックな配列で統一する事にした。(訳注:Lithiumはモデルのデータ構造を配列とオブジェクトで任意に選択可能)それぞれ自身の内容を含み、さらに便利な幾つかの他の情報も含む。(これは僕がやっておいた)機能的には新しいドキュメントの作成、IDで指定されたドキュメントの読み取り、配列に含まれるメッセージでのドキュメントの更新が必要だった。またCouchDBはHTTPプロトコル上で動作するのでメッセージを保存する前にURLエンコードする必要があった。またメッセージを読み取る際にはURLでコードも必要になる。以上が基本の内容です。(編者注:これらのほとんどの処理は公式のCouchDBアダプタが自動で行うよう現在ではなっている)
コントローラー
実際のコード
モデルのようにコントローラーにも3つのシンプルなアクションが必要になる。新しいモデルの作成、モデルの読み取り、存在するモデルへのメッセージの追加だ。どれも非常に素直に進める事ができる。
僕のLithiumの好きな面の一つにコントローラーから直接JSONのデータをダンプできる事がある。これはとてもシンプルなアイデアでコードもシンプルになる。
$this->render(array(’json’ => $data));
またスタティックなオブジェクトを使ってコントローラー内でモデルを動かすのも論理的だ。そうなのかどうかは実際に見ておいてほしい。
コードを見ると$statusという変数があちこちにばら撒かれているのに気がつくと思う。これはAJAXを使ってJSONのデータを受け取る時にJSend仕様を確認する為に入れている。仕様はかなりシンプルで色々な方法があるのかはわからないけれど、無難なレスポンスのフォーマットを統一する方法としては理にかなっているだろう。もしこの仕様を見つけられないのであれば、この方法を見てほしい。
ビュー
実際のコード
次にビューについて述べよう。このアプリケーションではビューは一つしか必要ではない。(このアプリケーション内の他のビューはただのページで、これは1つのコントローラに貼りつけてしまおう)
このViewビューはメッセージを送信する為の入力フォームを表示する。また存在するメッセージをループしてHTMLのフォーマットにする。またそのあとにanologueのidを共有する為のURLををショートカットする処理を追加した。
javascript
実際のコード
残りの部分はLithiumには関係がない。ただ他の部分とどのように合わせるかやあなたのアプリケーションの開発の為にインスピレーションを与える事はできるだろう。まとめていく中でrad-devのサイトに載せる時にひっかかった所がある。cli-naviの部分だ。僕らは基本的にページが読み込まれた時にオブジェジェクトを作り、いくつかの要素にイベントがアタッチされた時にアプリケーション固有のメソッドを提供していた。この場合だと新しいメッセージの送信、新着メッセージのポーリング、新しいメッセージの生成とHTMLの追加だ。
ボーナスラウンド
Showdownを使ってMarkdownをサポートしたらいいのではないか?思うにテクニカルなユーザがコードの共有をしたり、マニアなブロガーがテキストをスタイリングするのに有用だ。またちょっとした自己主張をしたい時にgravatarを使えるようにEメールのフィールドを追加した。最後にHTML5のaudio elementとブラウザの互換に対応する為の少しのJSもどうだろう?あなたの名前を含むメッセージが登録された時はサウンドエフェクトが鳴る。うん、何?
あきれたことにこんな小さいアプリケーションなのに僕はテストをまだ書いていない。またサードパーティによるさまざまな画像やメディアのサポートのアイデアもある。(imgur, drop.io)MongoDBへの移行や「閲覧中のユーザ」のような実験もだ。もし君がLithiumでアプリケーションを作るのにどこからスタートすればいいかわからないなら、Anologueへのコントリビュートを待ってるよ。
じゃあ、またラボでね!
~ Jon ~
- 翻訳ここまで
コードの雰囲気はCakePHPに似ていますが過激なくらい先鋭的なLithiumの雰囲気がわかる記事ではないでしょうか。また彼らは自分たちを科学者めいて呼ぶのが気に入っているようです。イベントをやる際は白衣か放射線防御服でも着るんですかねー。
変化の時(Nate AbeleがCakePHPプロジェクトから離脱してLithiumを立ち上げた理由)

photo by gregchiasson
cakephp.jpのフォーラムや一部のユーザの間でも話題になっていますが、4年間にわたってCakeの発展に貢献してきたプロジェクトマネージャのGarrett Woodworth氏とリードデベロッパのNate Abele氏が10/23頃にCakePHPのプロジェクトを去りました。
そして新たに立ち上げられたのがLithiumというそれまでCake3と呼ばれていたフレームワークのプロジェクトです。
色々と憶測を呼んでいましたが、Nate本人がこのあたりの経緯をLithiumのプロジェクトブログで語っています。
またNateの開発に対する姿勢は一般の開発者にとっても刺さる内容と言えると思いますのでCakeに関心がない方にもおすすめできます。
本人の了解の元に日本語訳を作ったのでここに掲載します。
原文
http://rad-dev.org/lithium/wiki/blog/on-transition
On Transition
変化の時
Lithiumの立ち上げから色々と進めたり整えたりしてほぼ2週間が過ぎた。まず最も大事なのは我々はこの大きな成功を助けてくれたみんなに感謝している。我々はわずか10日の間にすさまじい進歩をいくつかのサブプロジェクトとフレームワークを拡張する為のプラグインと素晴らしい小さなアプリケーションの為に成し遂げることが出来た。
二番目にこの混乱に対する説明を述べたい。主要なメンバーはCakePHPのコミュニティから来ているので何か争いが起きたように見えただろう。がっかりさせてすまないが、そんな事は起きていない。年齢に相応しく振る舞い、意見の相違について合意し、別々の道を進む事にした。残念な事に皆はあれこれと言うのが好きなようだ。大きな問題についての事もあれば、小さなこと、たとえば僕らのプロジェクトのサイトの下には”Powered by CakePHP”のバッジがあるじゃないかと。このサイトはCakePHPで作られた”The Chaw”をベースに出来ていて、しっかりと動いている。どうしてこの事を隠さないのかって?Lithiumの起源はCakePHPにあるし、僕らはそれを誇りに思っているからだ。
さらに少数派の声としては、僕らがCakePHPを憎んでいるという的外れの意見を自分自身の為に言うものがいる。しかしGarrettと僕はこの4年間のCakeに対する大きな仕事をとても誇りに思っているし、その経験があるから僕らは今このすばらしい処にいる。僕らのCakePHPへの貢献は明らかで疑いようがない。それならなぜこうなったのかって?すこし尊大な言い方になるが、僕らがCakePHPから去るのは彼らを見限ったという事なのか。
「レボリューショナリー・ロード」という1950年代のコネチカット州の郊外を舞台にした映画が今の状況をうまく説明している。この映画はアメリカからパリに移り住む事を決めた夫婦の物語だ。彼らはコネチカットの郊外にいる今の状況に満足しておらず、なにか別の何かを更に求めようとした。その結果、彼らの隣人たちも同じ疑問にさいなまれる。しかし隣人たちは何かを探したくはなく、夫婦とは違いネガティブな反応を取る。何故彼らは違う何かを求めないのか?
人は変化を嫌う事が多い。そう、先に進む事よりも恐れる事を選ぶ。なぜなら恐れるのは簡単だからだ。特に意志も努力も必要はない。目新しい事ではないが、我々は簡単にそれを忘れてしまう。僕はこんな話を聞いた事がある。もし君が2年前に書いたコードや1年前に書いたコード、あるいは数カ月前に書いたコードを見て少しでもそれを放り出したいと思わなければ君は全く進歩していない。ソフトウェア開発が職人芸だと思う僕らにとってはこれはとても意味深い。
これが僕らがLithiumへ進んだ理由だ。Lithiumは好奇心から出来た小さなスクリプトのつぎはぎとして生まれた。面白い事にこれはPHP5.3だからこそ出来た事だ。これらのスクリプトは小さなスクリプトの集まりとして設計され、実用的な問題を想定している。これはCakePHPの最も良いところでうまくいった点でもある。しかしいくつかまずいところもあり、これを教訓に解決策を探していた。
いくつかの実験の中で我々はいくつかの前提条件に疑問を持った。その時我々はPHP5への移行は簡単だと思っていた。各部分をPHP5のStrictモードに合うようにしていけばうまい具合にいくと。残念だが人生はそう単純ではないのだ。この4年間、我々はPHP4向けにフレームワークを開発しており5.3は対象になっていなかった。これはかなり時代遅れの技術だ。控えめに言っても、PHP4とPHP5.3の変更点はかなり多い。PHP5.3はPHPの開発に新しいパラダイムを呼ぼうとしている。この大きな溝を渡っていくというのは、控えめに言っても挑戦であり、うまくいったとしてもその過程で何かを失う事になる。
時代遅れの技術に対するコーディングの結果としてこの4年間技術的な負債が大きくなってしまった。これを乗り越えるのはかなり大変だ。幸運な事に僕らはコードをとても熟練してエネルギッシュなカナダ人と友人たちに託す事が出来た。一番大事な点は僕らはCakeDCのチームがうまくいくことを願っているし、CakePHPは無くなったりはしない。
僕らにとっては良いけれど、現時点ではLithiumを使ってメジャーなアプリケーションを書くことはお勧めしない。だが僕らはLithiumを皆さんにお見せ出来る事に興奮しているし、あなたにも楽しんでもらいたい。
~ Nate ~
-訳ここまで-
強調は訳者。
Nateの持っているストイックな意志の強さとCakePHPのコミュニティが死んだわけでも感情対立でもない事がわかる文章ではないいでしょうか。
実際にircチャンネルでもそれぞれのデベロッパが相互にログインしている様子を見ますし、LithiumがPHP5.3専用として0から最適化する事に意義を見出している事がよくわかります。
ちなみにLithiumの意味は色々あるそうですが、「最も軽い金属」「cake3 -> 元素番号3 -> li3 -> lithium」などの意味があるそうです。(まだまだある)



