Ruby技術


高品質、高生産性で短期開発を提供

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技術

Ruby on Rails アプリケーションの高速化

Ruby on Rails でのWebアプリケーション開発では、便利なプラグインを沢山使って、短期間で開発ができます。
しかし、高機能のプラグインほど複雑な処理を行うので、実行時の性能が低下してしまう傾向にあります。そのため、実際に使用される時のアクセス頻度や登録されるデータの傾向を考えておかなければ、イザという時に十分な性能が出ず、アプリケーションが使い物にならなくなる危険があります。
当社では、自然災害が発生した時に使用するWebアプリケーションの高速化をおこない、高機能と性能の両立を実現しました。

目的
  • 高負荷が予想されるサイトの高速化
    イベント時にアクセスが集中して高負荷になるサイトは、予想される最大負荷以上の性能が必要。利用状況を想定し、最も参照されるページを優先的に高速化
  • 常に最新の情報を参照可能に
    キャッシュを使用しても、確実に最新の情報が参照できること
高速化の方法

場合によってはプラグインを不使用
データの傾向によっては、プラグインを使用しない方が速度的に有利
特にSQLの実行回数を減らすと効果が大
プラグインと同じインターフェイスを実装することで、修正が最小限

Ruby on Rails のキャッシュ機能を活用
固定の部分だけでなく、変更が発生する部分もキャッシュに格納
データ更新時に該当するキャッシュを破棄し、次に表示する時に再読み込みを実行
他システムから直接DBを更新する場合にも、更新を通知して該当するキャッシュを破棄

キーワード
, , , ,