SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

WCF RIAサービスを使ったWeb連携アプリを作ろう

SilverlightでAzureに飛び出そう!

WCF RIAサービスを使ったWeb連携アプリを作ろう 第1回


作成するアプリケーション

 サンプルでは、旅費精算書を例にした帳票アプリケーションを作成します。帳票作成の業務アプリケーションでは、帳票の様式がWordやExcelで定義してある会社や学校などが多いので、サンプルプログラムでは、テンプレートとなるExcelファイルにプレースホルダを設定し、データベースの値をプレースホルダに埋め込んでからクライアントにダウンロードするといったシナリオを例にしています。このシナリオは、ユーザ自身がテンプレートを編集できるため、保守工数も軽減します。全3回で以下のようなアプリケーションを作成します。

  • 旅費申請データフロー:
    ユーザー→Silverlightアプリケーション配信サイト→Azureのデータストア
  • 旅費承認データフロー:
    ユーザー→AzureのASP.NETアプリケーション→Azureのデータストア
  • 承認旅費参照データフロー:
    Azureのデータストア→Silverlightアプリケーション配信サイト→ユーザー
  • 帳票ダウンロードデータフロー:
    Silverlightアプリケーション配信サイト→ユーザー
  1. Silverlightアプリケーションから旅費申請をし、Azure上のデータストアに申請情報を格納します。
  2. Azure上のASP.NETアプリケーションで携帯電話から承認します。
  3. 承認された申請は、Azureからデータサービスとして提供され、SilverlightアプリケーションがAzureのクライアントとして、承認済みの旅費精算書を作成します。
  4. Silverlightアプリケーションは、サーバーに作成された承認済み旅費精算書の一覧を表示し、ユーザーは一覧から申請書をダウンロード/印刷します。
図1 今回作成する帳票アプリケーションのシナリオ
図1 今回作成する帳票アプリケーションのシナリオ

 第1回の今回は、Azure部分の解説は行わず、アプリケーションの全体像を作ってしまいます。後続の解説で、今回作成したVisual Studioソリューションを改造し、Azureに対応していきます。

今回のSilverlightの役割

 データベース連携を行うことの多い業務アプリケーションでは、データアクセスレイヤーから正規化されたリレーショナルデータベースなどに接続して、取得したデータを業務ロジックで扱いやすいようクラスとして準備します。これをインピーダンスミスマッチの解消と言います。さらにビジネスレイヤーで加工して、概念モデルというアプリケーションの画面に近い形のデータにします。また、ワークフローなどを構築する場合もあります。

図2 一般的なビジネス層で行われるデータの変換
図2 一般的なビジネス層で行われるデータの変換

 この際に、本来プログラマーが注力したいのは、ビジネスレイヤーの構築であって、業務を理解して業務ロジックを実装することです。しかしながら、実際にはデータベースアクセスやクエリ、トランザクション制御といった部分も実装しますし、UI側の例外処理に伴う視覚制御やユーザー操作にインタラクティブに反応する視覚効果などデータベースアドミニストレーターやデザイナーに任せるべき部分についても工数を割く必要があります。

 Azureアプリケーションを作成する場合も同じです。Azureアプリケーション作成の際のUIとAzureの連携部分やAzure特有のロール、ストレージの管理、またWCF通信、エンドポイントの制御など、業務ロジックとは関係のない部分の構築に多くの工数を割くことになります。

 とかくUIの派手なプレゼンテーションに注目されがちなSilverlightですが、このようなデータ通信を含む通信周りの構築工数を軽減することにも長けていますので、SilverlightとAzureを併用することは、そうでない場合に比べ、業務ロジック以外の機能の作成作業を軽減することができます。また、Silverlight部分をアウトソーシングするとか、複数の会社やメンバーで協業してアプリケーションを作成することも可能です。

レイヤー分割は本当に必要かを検討する

 ただし、アプリケーションのレイヤー分割というのは、複数メンバーでのシステム構築における作業分割を想定した場合の観点です。レイヤー分割する必要のないアプリケーションもありますし、コミュニケーション不足や技術力の乖離により、クライアントとサービスの担当者間で設計の方向性を共有できないようなプロジェクトもあります。レイヤー分割により、著しく開発効率を低下させることもあるので、皆さんのプロジェクトにマッチした分割を計画してください。

 総合的な観点からアプリケーションのレイヤー設計の指針を明確にすることが本連載の目的です。

次のページ
Silverlight Business Applicationの作成

修正履歴

この記事は参考になりましたか?

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高尾 哲朗(タカオ テツロウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5921 2011/06/07 14:20

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー