Ruby(ActiveRecord)とJava(Hibernate)のベンチマーク。Rubyはチューニングにより性能が大幅に改善している(IPA「自治体・企業等の情報システムへのRuby適用可能性に関する調査」より引用)
Ruby(ActiveRecord)とJava(Hibernate)のベンチマーク。Rubyはチューニングにより性能が大幅に改善している(IPA「自治体・企業等の情報システムへのRuby適用可能性に関する調査」より引用)
[画像のクリックで拡大表示]
Rubyのスケールアウト検証(IPA「自治体・企業等の情報システムへのRuby適用可能性に関する調査」より引用)
Rubyのスケールアウト検証(IPA「自治体・企業等の情報システムへのRuby適用可能性に関する調査」より引用)
[画像のクリックで拡大表示]
Rubyの性能検証を行ったシステムの構成(IPA「自治体・企業等の情報システムへのRuby適用可能性に関する調査」より引用)
Rubyの性能検証を行ったシステムの構成(IPA「自治体・企業等の情報システムへのRuby適用可能性に関する調査」より引用)
[画像のクリックで拡大表示]

 独立行政法人 情報処理推進機構(IPA)は2009年9月7日,「自治体・企業等の情報システムへのRuby適用可能性に関する調査」を公開した。Rubyの機能要件,非機能要件についての評価とガイドライン,性能検証やチューニング手法とその効果を紹介し「十分な実用性を備えている」と結論付けている。

 調査報告書では,業務システムに求められる機能要件10項目,非機能要件45項目についてRubyの評価を行った。機能要件はネットワーク,文字コード,データベース,画面制御やGUIなど。非機能用件は,要件定義,保守,運用に関するものなど。結論として「Rubyは性能や開発技術の面においては十分に実力を持っており,業務システムへの適用についても,おおむね問題はない,あるいは回避・代替の方法は十分にあるものと言える」と述べている。これらの評価を踏まえて,開発,運用に際して留意すべきガイドラインを記述している。

 技術検証報告書では,Ruby on Railsで作成したデータベース・アプリケーション,JavaでHibernateなどを利用して作成したアプリケーションの性能を比較している。その結果,Ruby on Railsで特にチューニングを行わないそのままのアプリケーションは,JavaとHibernateによるアプリケーションに比べ性能面では劣るが,適切なチューニングを行うことにより大幅に性能を改善でき,さらにmemcachedなどのツールを利用することにより,JavaとHibernateをそのまま使う場合より高速になったという。行ったチューニングの手法は報告書で公開している。

 技術検証報告書ではさらにメモリーの使用量,プロセスやアプリケーション・サーバーの数を増やした場合のスケーラビリティについて検証している。「サーバー数を増やすスケールアウトの手段がRubyでの開発においても有効で、リニアに性能が出ることが確認できた」(報告書)という。

 また調査報告書では,Rubyの普及に向けた施策を提言している。セキュリティに関するガイドラインの整備,テストのノウハウ公開,他言語からの移行ガイドライン策定,開発部品・ツールの整備,技術者育成環境の整備など。また普及にともないRuby本体の開発者(コミッタ)へのリクエストが増加しているにもかかわらずコミッタの体制が不十分であるとして「コミッタを直接支援する仕組みや,コミッタを支える開発スタッフを増やすための仕組みを作ることが望ましい」と指摘している。

◎関連リンク
自治体・企業等の情報システムへのRuby適用可能性に関する調査(「調査報告書」)
自治体・企業等の情報システムへのRuby適用可能性に関する調査(「技術検証報告書」)