Smile Engineering blog ( スマイルエンジニアリング・ブログ )

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

Lasyst ラシスト 技術特集【第一回】

2011-08-17 08:26:16 | Lasyst

 本記事では、現在当社で推し進めている全画面FlashのWEB型業務アプリケーションをWEB上で開発し,後の保守・運用もフォローするサーバソフト「Lasyst」ラシストで採用している技術について説明していきます。 まず、Lasystの概要・特徴について、当社のWEBサイトにて掲載しておりますので、ご一読いただければ幸いです。 第一回では、Lasystで利用している技術を説明致します。


1.Lasystのシステム構成


 当社WEBサイトでもご紹介しているとおり、LasystはWEBサーバ、アプリケーションサーバ、データベースサーバの3層構造で構成されており、業務アプリケーションを開発・運用するための「Lasystコンソール」環境、そして開発した業務アプリケーションを利用する環境、ともに同じ環境で動作します。


<図:Lasystシステム構成図>


 


 図にあるとおり、業務アプリケーションの開発者・運用者はブラウザを利用し、アプリケーションサーバで常駐しているLasystコンソールを経由して、Lasystのフレームワークや専用のデータベースへアクセスしながら、業務アプリケーションを開発・運用します。 業務アプリケーションは、アプリケーションサーバ内で常駐します。 業務アプリケーション用のデータベースも、コンソールから指示して構築します。 一方、エンドユーザが業務アプリケーションを利用する際も同様にブラウザを利用し、アプリケーションサーバ内で常駐している業務アプリケーションへアクセスし、必要に応じてデータベースへアクセスします。 図では、アプリケーションサーバ内に1つの業務アプリケーション、データベースサーバ内に1つの業務アプリケーション用データベースが生成されていますが、実際にはリソースが許す限り、いくつでもアプリケーションを配置することができます。 勿論、WEBサーバ、アプリケーションサーバ、データベースサーバは、ハードウェア自体分散させることもできますし、1つの筐体の中で運用させることも可能です。 利用シーンに応じた構成を検討するとよいでしょう。2.基本的なミドルウェア(サーバサイド)


 前述した3層で利用しているベンダーのミドルウェアを紹介致します。---------------------◆WEBサーバ Apache 2.2◆アプリケーションサーバ Oracle GlassFish 3.1.1 (Java Runtime Environment 1.6 update 26)◆データベースサーバ Postgres 9.0.4--------------------- サーバ側の言語はJavaで統一しております。 各ミドルウェアがバージョンアップされる都度、Lasystでも動作確認を繰り返しており、各々執筆時点での最新版で動作することを確認しております。 昨今、ミドルウェアのバージョンアップを怠ったためにセキュリティホールが放置されている状況が問題視されておりますが、私どもでは原則、常に安定した最新版のミドルウェアを採用して開発することを遵守しております。 さて、Lasystサーバでは上記ミドルウェアの他、いくつかの外部APIも組み込んで利用しておりますので、こちらも紹介させていただきます。---------------------◆AMF通信の実現 BlazeDS 4.0.1.21287◆帳票生成 JasperReports 4.0.2◆CSV操作 OrangeSignal CSV 1.3.1--------------------- AMF(Action Message Format)とは、サーバとFlashベースのクライアントとが通信する際、バイナリ形式でデータをやり取りすることにより、XMLやHTTPなどのテキスト形式の通信よりもパケット量が小さく、データを解析するための不要なボトルネックを軽減する仕組みのことです。 また、開発時において、送受信するデータをFlexやJava上でテキストに変換する必要がなく、数値型や配列型など、文字型以外の型でプログラミングが可能であり、開発の生産性も高いのが特徴です。  Adobeよりオープンソースで無償で提供されています。 サーバ側の技術は、LasystのようなJavaの他、PHP、.NET、Rubyなどを使用することも可能です。 LasystではAMF通信を標準としており、開発した業務アプリケーションはもちろん、コンソールもAMFで通信しています。 さて、LasystではPDFなどの帳票を生成する機能も標準で組み込んでいます。 業務アプリケーションを開発する際、一般的には有料の帳票生成ツールを利用しますが、この商用無償のJasperReportを標準で組み込むことで、帳票生成機能を利用する敷居を下げています。 帳票の生成は、まず帳票のイメージを専用のツールで作成し、そのイメージをサーバ側において、Javaや.NETなどのクラスから呼び出し、データをイメージに当てはめて出力するようするのが一般的な手法です。 このJasperReportも同様で、帳票イメージをiReportという、こちらも無償のツールで作成します。 iReportで作られる帳票イメージはXML形式のテキストファイルであり、それをJasperReportがコンパイルしてデータを当てはめて出力する仕組みです。 Lasystでは、iReportで作った帳票イメージXMLをコンソール経由で登録し、データの適用方法などを定義することで、帳票の出力を実現しています。 また、JasperReportの特徴として、PDF以外にもExcelやWord、HTMLやPowerPointなどといった形式でも帳票を生成することができますが、Lasystでもその機能をフル活用し、全く同様の形式で帳票を生成することができるようになっています。 (ちなみに、様々な形式に対応するため、JasperReport内でも他のJava APIを利用しているようです) 最後にCSV操作ですが、こちらはOrangeSignal CSVという商用無償のAPIを採用しています。 LasystではCSVファイルの取り込みや出力が標準的に可能ですが、その機能を安定的に実現するために利用しています。


3.基本的なミドルウェア(クライアントサイド)


 Lasystのクライアント側で利用する技術は、Adobe の Flash のみです。---------------------◆Flash コンパイラ:FlexSDK 4 Flash Player:Flash 10.2--------------------- Flashの画面はAdobe独自のフォーマット「mxml」(HTMLのような言語)や「ActionScript」(JavaScriptのような言語)を駆使して開発しますが、Lasystではコンソール上からそれらを入力し、開発することができます。 なお、FlashはHTMLやJavaScriptのようなスクリプト言語とは異なり、コンパイルが必要ですが、Lasystで開発する際にはコンパイルやデプロイのための環境を検討する必要はなく、Lasystがサーバで自動的に環境を整え、コンパイルし、適切にデプロイします。 また、Lasystのコンソールや開発した業務アプリケーションにアクセスするには、上記のFlashのプラグインがブラウザに組み込まれている必要があります。 なお、FlexSDKの最新バージョンは、今年2011年6月20日に発表された 4.5.1.21328 ですが、こちらはテキストボックスなどに全角文字を入力してEnterキーを押した際、ActionScript側で入力文字を正しく取得できない問題があり、今のところ最新版のLasystでの採用はまだ見合わせています。※細かい話ですが、昨年よりAdobe社で開発されてきた4.5バージョンについて、2010年10月頃に公開されたNightly Build版「4.5.0.17077」まではその問題は発生しませんでしたが、その次のバージョン以降、ずっと上記の全角文字問題が続いています。 もうしばらくバージョンアップの様子を見て、それでも対応されないようなら、Lasyst独自で対応するしかないと考えています。4.総括


 採用したミドルウェアについては以上です。 すべて商用無償で利用可能であるため、Lasystの導入コストも最小限に抑えることができます。 それにも拘わらず、いずれも非常に高度な機能を安定して提供しており、Lasystではその機能を十分に引き出し、活用しています。 Lasystで利用している技術はこれですべてですので、逆にこれ以外の他の技術は全く利用していません。 意外とシンプルと感じられるのではないでしょうか。 例えば、JavaでしたらStrutsやSeaserなど、様々なフレームワークがありますが、Lasystでは全く利用しておらず、Java1.6の標準機能のみで開発しております。 なぜなら、Lasystサーバ自体がフレームワークである必要があり、他のフレームワーク等を利用することで余計なオーバーヘッドを生まないようにするためです。 開発生産性もさることながら、まずはレスポンスに重きをおいています。 これらのミドルウェアやAPIを利用することは、Lasystに限らず、安価にWEBアプリケーションを開発したい方々にとって、よい選択肢になるかもしれません。 Lasyst開発の中で、今後もよりよいAPIを見つければどんどん取り込み、Lasystを通じて容易に利用できるようにしたいと考えています。株式会社ジェイエスピーシステム部酒井良介


 



monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業