エモーションソフトの強みとなる他社ではなかなか容易に提供できない技術の一部を簡単に紹介します。もし皆様の開発や運用の現場で以下に紹介する技術でお悩みの場合には是非私共にご相談ください。
統合認証システムの作成技術
エモーションソフトが作成した数ある開発実績の中でもっともと多くのユーザーに使用されたシステムは、毎日数万人が利用する巨大なB-to-Cサイトの認証システムです。複数の異なるプラットフォーム上で稼働するWebアプリケーション間を統合認証システムの構築はエモーションソフトの最も得意とするところです。

- 任意のDB上の会員マスターを使用して、Webサイトを構成する内外のシステムの認証を統合する仕組みを提供します。
- OpenIDConnnectを実装した多様な開発プラットフォーム上に配置された異なるアプリケーション間での認証の統合を実現します。
- スマホを利用した多要素認証やGoogle/Microsoft/Facebook/LINE等のSNSアカウントによる外部認証機能、確認メールを使用したPWリセット機能の作成。

CI/CDを実現する統合テスト技術
継続的なインテグレーションとデリバリー(CI/CD)の実現が必須となりつつあるアプリケーションの開発と保守・運用の現場で、テストを正しく計画し効率的に実施していくことは非常に重要です。多くの開発の現場ではテスト工程において1画面や1機能ごとのテスト件数が決められ、テスト実施結果を全員で評価するような規約が設けられています。ただしそれらを効率的にこなしていくための具体的な手法が示されていない現場が圧倒的に多いです。
このような状況での開発作業はルールに縛られた窮屈でストレスのたまる作業に陥りがちです。テストそのものにも工夫を凝らし、アイデアを活かし、効率的に作業を進められる状況を作り出してくことが必要です。
エモーションソフトでは単体機能開発時における単体テストから結合テスト→システムテスト→総合テスト→本番リリースに至るすべてのフェーズで効率的にテストをこなしていくための方法と手段を用意しています。

綿密なテスト計画書やテスト仕様書を作成して、それにそって粛々とテストをこなしていくだけの地味な作業では決して開発者やテスト担当者のモチベーションは上がりません。効率的かつ探求心をくすぐる使い易いツールを使用して作業を進めることで、テストの効率が上がりシステムの品質が大きく向上します。結果としてユーザー様により品質の高い製品をスピーディーに提供することが可能になります。エモーションソフトではそういう実績を沢山築いてきました。
エモーションソフトのテスト手法はルールベースのものではなく、ルールベース基盤の上に自社製+他社製のツールをミックスして効率的に進めていく積極的な攻めるテストであることを特徴としています。
- なおこの手法で使用するテスト画面UIの自動生成ツールやテスト自動化用のツールについては、今後公開予定のソフトウェア製品のページで改めて紹介させていただきます。
現場で直ぐに使える運用支援ツールの開発
システムは規模が大きくなるにつれて複雑化し、どうしてもシステム内部では解決しきれない問題を生じます。(例えばパフォーマンスを考慮してトランザクション処理から外したDB更新処理内で発生する例外等)
これらの問題を解決して極力システムを安定て稼働させるのがDevOpsにおける運用チームの役割なのですが、対応の仕方は手運用が殆ど。理由は開発チーム側に課せられた機能追加や機能改善のた継続的にシステムは変化していくため、次から次へと別の問題が発生して、それらへの対応を自動化するツールの開発に手が回らないためです。
エモーションソフトはこのようなDevOpsの現場で運用チームの作業をサポートする様々なツールの開発を手掛けてきました。豊富な開発用ライブラリの組み合わせで複雑な処理を要するアプリケーションを素早く作成し提供することが可能です。以下に今まで作成してきた運用支援ツールを幾つか紹介します。
SQLサーバー監視ツール
DBにマイクロソフトのSQLサーバーを使用しているWebアプリケーションにおいて、SQLサーバーの稼働状況を監視するツールです。サーバー上で実行されているプロセスを監視し、デッドロックや排他ロックの発生状況をチェックします。あるプロセスが他のプロセスを指定された時間を越えてブロックしている場合ワーニングを発し、オプションで自動的にプロセスを終了させることが出来ます。またSQLプロファイラーと連動してパフォーマンスに問題のあるSQLやそれを実行しているアプリケーションを特定することが出来ます。

オンプレミス向けファイル転送ツール(アップローダー)
Webサイトをオンプレミス環境で運用している場合、複数の冗長化されたサーバーにプログラムやコンテンツ用の各種ファイルをアップロードしなければなりません。サイトの規模が大きくなると構成するWebアプリケーションの種類も増大し、配置先のネットワーク共有フォルダもその分増えます。更にその共有フォルダの操作が可能なユーザーのアカウント管理も複雑になります。
アップローダーはこの問題を解決するためのツールです。認証したユーザーに許可されたアプリケーションのプログラムやファイルをそのアプリケーションが配置されている共有フォルダにアップロードするツールです。アップロードした結果上書きされるファイルは全て自動的にバックアップが取られ、万一アップしたプログラムに障害が発生した場合にはボタン一つでロールバックすることが可能です。また、個々のファイルの転送に関しては更新時刻のチェックを行いデグレードのリスクがあるファイルはスキップさせたり転送そのものを取り消すことが可能です。

アドホックなDB保守ツール
エモーションソフトが提供するテストツールを使用して単純な操作で複雑なDB処理を実行するWebアプリケーションを簡単に作成することが出来ます。例えばアプリケーションのエラーログを参照して不正なデータを抽出し、それらのデータエラーとなっている項目の値を一括修正するような処理は処理の複雑さの度合いにもよりますが半日、早い時には1時間もかからずに作成することが出来ます。
- この技術につきましては是非「公開予定の製品(1) FreeTestPanel」をご覧になってください。

このほかにも様々な運用サポートツールの開発実績があります。また運用チームだけに限らず開発チームのサポートを行うツールも数多く開発してきました。これらのうち汎用化可能なものは、今後自社製品として公開していく予定です。是非「楽しく作ろう、楽して組もう!!- 公開予定の製品 –」のページをご覧ください。
ツリーやカスタマイズしたグリッドを駆使した画面 UIの作成技術
最後に画面UIの作成技術についても触れておきます。エモーションソフトではVisual Studioで提供されているWindowsやWebアプリケーション用の標準画面コントロールの拡張は得意としており、数々の開発実績があります。以下にその中で特に多くの局面での利用される機会の多いツリーやグリッドの拡張について紹介します。
階層化されたデータを操作するために、ツリーを使用した画面は非常に有効です。しかしこのツリーをWebやWidowsアプリケーションで自在にプログラムには相応のスキルが必要です。エモーションソフトでは以下の画面のように選択ボックスを表示してユーザーにノードの選択をさせたり、実行ステータスを分かり易いマークで表すような拡張を行ったツリーを提供しております。

更にグリッド(一覧表示画面)でも、複数のセルを繋げたりグループ化したり、画像を表示したり、或いはセルの入力をドロップダウンリストから選択できるようにしたり・・・といったユーザーインターフェイスを作成するのにも高度なスキルが必要になります。以下はこれらを実現している拡張されたグリッドの例です。

エモーションソフトではこれらの技術を使用して、複雑なデータを分かりやすく表示し同時に操作性も優れた画面を低コストで提供できるようにしています。
今後注力する予定の技術
RESTfulなWebAPIを使用した非同期Webアプリケーションの作成技術
Webアプリケーションの最近のトレンドは、RESTfulなWebAPIを使用した非同期処理とフロント側の各種JavaScriptフレームワークを使用して、操作性の高い画面UIや処理そのものの高速化を実現するというものです。
エモーションソフトはフロント側の開発・バックエンドのサービス側の開発ともに経験しておりますが、どちらかというとRESTfulなバックエンドサービス開発が得意でした。しかしReact, Vue, Angular といったJavaScriptのフレームワークの近年の充実ぶりをチェックしているとフロント側の開発にも力を入れざるを得ません。

エモーションソフトではフロント側の開発技術の中では、Microsoft社製のBlazorに特に注目しています。BlazorはWebAssemblyというWebブラウザの技術基盤上で動作するプログラムを開発するフレームワークで、コンパイルされたバイナリ形式のプログラムを作成します。このためプログラムサイズが小さく、更に直接WebAssembly内の命令セットをコールするため動作は非常に高速です。しかも開発言語はC#を始めとする様々な言語で記述することが出来るため、フロントとサービス側の開発言語を統一することが出来ます。(Blazor以外のライブラリではフロント側の開発言語はJavaScriptのみでした。)
エモーションソフトではBlazorが今後のフロント側開発技術の主軸の1つになるものと考え、これを使用したフロント側プログラム開発技術の習得に取り組んでいます。

