Ruby技術
高品質、高生産性で短期開発を提供
Rubyを利用したシステム開発
特徴
- RJB(Ruby Java Bridge)やJRubyを利用し、Java資産の活用
- RESTfulによる疎結合なWebアプリケーション連携
- Ajaxによる高操作性を提供
概要
- Ruby on Railsを利用したWebシステムを開発。
既存システムを最大限に活用したスピーディーなシステム構築。
分散開発環境プラットフォームの構築
使用情報
Ruby on Railsで記述されたオープンソースのプロジェクト管理ソフトウエアであるRedmineをカスタマイズ、Redmineの機能やノウハウをそのまま活用、さらに、自社専用の機能を他のオープンソースや独自実装を使って追加してシステムを構築
ソフトウェア開発者のためのプラットフォーム開発
ソフトウエア開発の現場では、作成プログラムコードやドキュメント履歴構成を管理したり、複数人でコラボレーションする環境が必要になります。
しかし、その環境をプロジェクトごとに準備するのは手間がかかる上に、非常に小さなプロジェクトだとそれぞれに専用のサーバを準備することが困難です。
そこで当社では、ソフトウエア開発に必要な環境を、プロジェクト単位で利用できるプラットフォームを開発し、運用しています。
開発には、Ruby on Rails 記述のプロジェクト管理ソフトウエアである Redmine や、その他のオープンソースを組み合わせることで、低コストとカスタマイズの容易性を両立しました。
目的
- プロジェクトに必要な構成管理やコラボレーション環境などが、申請すればすぐに利用できるサイトを構築 プロジェクトごとに環境構築の手間を省き、コストを削減 同じ環境の利用で、別プロジェクトに参加した時の初期学習が不要
- プロジェクトのデータを一元管理し、管理工数の削減 バックアップなどの保守をプロジェクト任せにせず、一括処理プロジェクト終了後も管理
- プロジェクト単位でのきめ細かい運用 細かい設定・運営は、各プロジェクトのリーダーに委任
機能
コラボレーションツール、Wiki、Blog、プロジェクト管理、IRC、構成管理ツール、Subversion、静的解析ツール
開発のノウハウ
- オープンソースのRedmineをカスタマイズ
Ruby on Railsで記述されたオープンソースのプロジェクト管理ソフトウエアであるRedmineをカスタマイズ
Redmineの機能やノウハウをそのまま活用 さらに、自社専用の機能を他のオープンソースや独自実装を使って追加 - 別アプリとURLベースで連携
同じ認証情報を参照して、シングル・サイン・オンを実現 別WebアプリにURLでパラメータを渡すことで、柔軟に連携 別システムの呼び出しも、HTTPを使って実行 - サーバの冗長化
全サーバを二重化し、障害時にも業務継続が可能
SVNやDBへ書き込まれた内容は、常時リプリケーション - Javaライブラリの活用
RJB(Ruby Java Bridge)で、Javaのライブラリを呼び出し、Excelシートを生成
Ruby on Rails アプリケーションの高速化
Ruby on Rails でのWebアプリケーション開発では、便利なプラグインを沢山使って、短期間で開発ができます。
しかし、高機能のプラグインほど複雑な処理を行うので、実行時の性能が低下してしまう傾向にあります。
そのため、実際に使用される時のアクセス頻度や登録されるデータの傾向を考えておかなければ、イザという時に十分な性能が出ず、アプリケーションが使い物にならなくなる危険があります。
当社では、自然災害が発生した時に使用するWebアプリケーションの高速化をおこない、高機能と性能の両立を実現しました。
目的
- 高負荷が予想されるサイトの高速化
イベント時にアクセスが集中して高負荷になるサイトは、予想される最大負荷以上の性能が必要。利用状況を想定し、最も参照されるページを優先的に高速化 - 常に最新の情報を参照可能に
キャッシュを使用しても、確実に最新の情報が参照できること
高速化の方法
場合によってはプラグインを不使用
データの傾向によっては、プラグインを使用しない方が速度的に有利 特にSQLの実行回数を減らすと効果が大
プラグインと同じインターフェイスを実装することで、修正が最小限
Ruby on Rails のキャッシュ機能を活用
固定の部分だけでなく、変更が発生する部分もキャッシュに格納 データ更新時に該当するキャッシュを破棄し、次に表示する時に再読み込みを実行 他システムから直接DBを更新する場合にも、更新を通知して該当するキャッシュを破棄
キーワード
Java, Jruby, Redmine, RESTful, アプリケーションの高速化