SHOEISHA iD

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

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

ComponentZine(ActiveReports)(AD)

帳票アプリを主要クラウド上にデプロイして公開しよう──ActiveReports for .NETの活用例

帳票開発コンポーネント「ActiveReports for .NET」の活用術 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 基幹業務のデジタル化推進のために、国の行政機関や地方自治体が共通して利用できることを目指したIT基盤がガバメントクラウドです。本連載では、グレープシティの帳票開発コンポーネントであるActiveReports for .NETで業務対象帳票の表示や入力を行うアプリケーションを開発し、Amazon Web Services、Google Cloud、Microsoft Azureの3つの選定クラウドベンダーでIaaS環境を構築してアプリケーションを公開する事例を紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

必要な環境

 本記事のサンプルコードは、以下の環境で動作を確認しています。

  • Windows 11 Pro(22H2)
  • ActiveReports for .NET 16.0J(16.2.0)
  • .NET SDK(6.0.413)
  • Node.js(18.17.1)
  • Visual Studio 2022(17.6.5)
  • Windows Subsystem for Linux 2(Ubuntu 22.04.2)

対象読者

  • Webページに帳票出力機能を実装したい方
  • バックエンド開発が得意な方
  • クラウドサービスで帳票アプリケーションを公開したい方

Amazon EC2環境での公開

 まずは、Amazon Elastic Compute Cloud(Amazon EC2)環境に帳票アプリをデプロイし、公開する手順を紹介します。

公開環境を構築する

 Amazon EC2の利用に先立ち、AWSアカウントが必要です。未作成の方は「AWS クラウド無料利用枠」から作成しておいてください。Amazon EC2には、利用開始後1年間の無料利用枠があります。1カ月あたり750時間までは、特定の条件を満たした仮想マシンが無料で利用できます。AWSアカウントを取得したら、「Amazon EC2(安全でスケーラブルなクラウド上の仮想サーバー)」の[コンソールにサインイン]からコンソールにアクセスします。コンソールの「最近使ったサービス」に「EC2」が表示されていれば選択し、そうでなければ「すべてのサービス」から「EC2」を選択します。

 「EC2ダッシュボード」の画面になるので(図1)、ここで[インスタンスを起動]をクリックして、「インスタンスを起動」画面でインスタンスを作成します。インスタンスとは、AWSにおける仮想サーバのことをいいます。

図1:EC2ダッシュボード
図1:EC2ダッシュボード

 「名前とタグ」の[名前]にインスタンスを名前を入力します。ここでは、「ActiveReports App Server」としました。「アプリケーションおよび OS イメージ (Amazon マシンイメージ)」では「クイックスタート」から「Amazon Linux」が選択されている状態で「Amazonマシンイメージ(AMI)」をプルダウンし、「Amazon Linux 2 with .NET 6, PowerShell, Mono, and MATE Desktop Environment」を選択します。これは、.NETなどがプレインストールされたAmazon Linuxで、あとから.NET 6をインストールする手間を省くことができます(図2)。

図2:インスタンスを起動(名前やOSイメージ)
図2:インスタンスを起動(名前やOSイメージ)

 「インスタンスタイプ」は既定の「t2.micro」のままで構いません。「キーペア(ログイン)」で、インスタンスへの接続に必要なキーペアをここで作成しておきます。作成済みであれば、それを選択しても構いません。[新しいキーペアの作成]をクリックすると[キーペアを作成]ウインドウがポップアップするので、「キーペア名」に任意の名前を(ここでは「MyKeyPair」としました)入力し、他の項目は既定値のままで[キーペアを作成]をクリックしてください(図3)。

図3:インスタンスを起動(キーペアの作成)
図3:インスタンスを起動(キーペアの作成)

 「ネットワーク設定」では、[からのRDPトラフィックを許可]のチェックを外し、「インターネットからのHTTPSトラフィックを許可」と「インターネットからのHTTPトラフィックを許可」にチェックを入れておきます。[からのSSHトラフィックを許可する]にはチェックを入れたままで、右のプルダウンで「自分のIP」を選択しておくと、SSH接続が安全になります(図4)。

図4:インスタンスを起動(ネットワーク)
図4:インスタンスを起動(ネットワーク)

 「概要」の内容を確認して[インスタンスを起動]をクリックします。「インスタンス作成中」の表示の後、「インスタンスの起動を正常に開始しました (i-0c2f8…)」などと緑色の背景で表示されれば、インスタンスの作成と起動は成功です(図5)。

図5:インスタンス起動成功
図5:インスタンス起動成功

 キーペアは、作成と同時にファイルとしてダウンロードされています。この拡張子が.pemであるファイル(今回はMyKeyPair.pem)はSSHなどの接続で必要になります。

インスタンスへ接続してデプロイする

 続いて、インスタンスに接続して帳票アプリをデプロイしましょう。図5の中央にある[インスタンスに接続]をクリックします。「インスタンスに接続」画面が開くので、[SSHクライアント]タブをクリックして切り替えます。SSHクライアントからの接続手順が記載されているので、Windowsの「ターミナル」を開いて記載のコマンドを入力し、SSH接続を開始します(以降の例はホスト名中のIPアドレスはaaa-bbb-ccc-dddなどとしているので、各自のものを適宜指定してください)。

 このとき先ほど保存されたキーペアのファイルの場所を適切に指定してください。「Are you sure you want to continue connecting」には「yes」と答えます。プロンプト($)が表示されれば接続成功です。

> ssh -l ec2-user -i "MyKeyPair.pem" root@ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com

 帳票アプリをデプロイします。デプロイは、ターミナルに新しいタブを開いて、以下のscpコマンドで行います。キーペアファイルの場所、公開フォルダの場所、ホスト名は各自のものを指定してください。

> scp -r -i "MyKeyPair.pem" C:\Users\nao\source\nepos\JSViewerSample\JSViewerSample\bin\Release\net6.0\publish\* ec2-user@ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com:/home/ec2-user/app

 フォントをインストールします。パッケージで提供されるのはIPAフォントのみでIPAexフォントは提供されないため、フォントファイルをシステムに直接配置します。第1回の記事でダウンロードしたIPAexフォントのアーカイブファイルIPAexfont00401.zipを、scpコマンドでインスタンスに転送します。

> scp -i "MyKeyPair.pem" IPAexfont00401.zip ec2-user@ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com:/home/ec2-user

 SSH接続上で、以下のようにファイルを解凍、フォント共有ディレクトリにコピーして、キャッシュを更新します。

$ unzip IPAexfont00401.zip
$ sudo cp -r IPAexfont00401 /usr/share/fonts/
$ fc-cache -fv

動作確認する

 帳票アプリを起動して、動作を確認しましょう。SSH接続したターミナルで、以下のコマンドを実行します。sudoコマンドを使っているのは、特権ポート(80)でアプリを公開するためです。また、公開するURLをASPNETCORE_URLS環境変数で指定しています。

$ sudo ASPNETCORE_URLS=http://*:80 dotnet JSViewerSample.dll

 Webブラウザから、URL「http://ec2-aaa-bbb-ccc-ddd.ap-northeast-1.compute.amazonaws.com:80」にアクセスします。ホスト名は、SSH接続と同様に各自のものを指定してください。図6のようにブラウザに帳票が表示されれば成功です。PDFへの書き出しも試してみてください。

図6:Amazon EC2で帳票アプリを実行
図6:Amazon EC2で帳票アプリを実行

Google Compute Engine環境での公開

 次に、Google Compute Engine環境に帳票アプリをデプロイし、公開する手順を紹介します。

公開環境を構築する

 Compute Engineの利用に先立ち、Googleアカウントを作成し、プロジェクトの作成と請求書アカウントの登録が必要です。未作成の方は「無料トライアルと無料枠」から作成しておいてください。

 Google Cloudには、使用量の上限までの範囲で無料で利用できるプロダクトがあり、Compute Engineでは1つのe2-microインスタンスがそれに相当します。Compute Engineでは、仮想マシンをインスタンスと呼びます。無料枠については、「Compute Engineの無料枠」に詳細があるので、これに沿ってインスタンスを作成します。

 Google Cloudアカウントを取得したら、上記ページの[コンソール]からコンソールにアクセスしてGoogle Cloudコンソールを開きます。ここで[Compute Engine]をクリックして[有効にする]をクリックします(図7)。

図7:製品の詳細(Compute Engine API)
図7:製品の詳細(Compute Engine API)

 しばらく待つと、「VMインスタンス」のページが表示されます。右側にチュートリアルが表示されたら閉じておきましょう。2箇所ある[インスタンスを作成]をクリックすると「インスタンスの作成」ページとなるので、ここでインスタンスを作成します。

 「名前やリージョンの設定」ではインスタンスの名前やスペックを設定します。[名前]にはインスタンスの名称を設定します。ここでは、「activereports-app-server」としました。英子文字、数字、ハイフンの組み合わせである必要があります。[リージョン]は無料枠の対象のうち日本に近い「us-west1(オレゴン)」とし、[ゾーン]は既定値のままにしておきます。「マシンの構成」は「汎用」の「E2」のままにしておきます(図8)。

図8:インスタンスの作成(名前やリージョンの設定)
図8:インスタンスの作成(名前やリージョンの設定)

 「マシンタイプ」は無料枠適用の構成である「e2-micro」に変更します。「可用性ポリシー」と「表示デバイス」の各項目は全て既定値のままとしておきます(図9)。

図9:インスタンスの作成(マシンタイプの設定)
図9:インスタンスの作成(マシンタイプの設定)

 「ブートディスク」では、以下のように設定を変更します。[OS]は「Ubuntu」に、[バージョン]は「Ubuntu 22.04 LTS」に、[ブートディスクの種類]は「標準永続ディスク」に、[サイズ]は「30GB」にそれぞれ変更します。無料枠が適用されるのは無償のOS、標準永続ディスク、容量30GBとなるので、それに沿った設定です(図10)。

図10:インスタンスの作成(ブートディスクの設定)
図10:インスタンスの作成(ブートディスクの設定)

 「ファイアウォール」では[HTTPトラフィックを許可する][HTTPSトラフィックを許可する]にチェックを入れます(図11)。

図11:インスタンスの作成(ファイアウォールの設定)
図11:インスタンスの作成(ファイアウォールの設定)

 なお、料金の見積りが「$7.31」などと表示されると思いますが、無料枠の範囲で機能を選択すると実際には課金されません。ここで[作成]をクリックすると、インスタンスが作成されます。「作成中」と表示されてしばらくすると、インスタンスの一覧が表示されれば成功です(図12)。「ステータス」欄が緑色のチェックマークになっていれば実行中なので、不要な場合には右端の縦三点アイコン(その他の操作)から[停止]をクリックしてください。

図12:作成されたインスタンス
図12:作成されたインスタンス

インスタンスへ接続してデプロイする

 続いて、インスタンスに接続して帳票アプリをデプロイしましょう。ブラウザSSHでログインします。図12においてインスタンス欄の[SSH]をクリックして、ドロップダウンから[ブラウザでのSSH]をクリックします。承認を求めるダイアログがポップアップするので、[Authorize]をクリックします。接続されると、ブラウザのウィンドウが新しく開き、ターミナル画面が表示されます(図13)。ここで、スタンドアロンでSSH接続したときと同様に操作できます。

図13:インスタンスへのSSH接続成功
図13:インスタンスへのSSH接続成功

 .NET 6のランタイムをインストールしておきます。以下のコマンドを実行します。

$ sudo apt-get update
$ sudo apt-get install -y aspnetcore-runtime-6.0

 帳票アプリのデプロイは、Windows側からのファイルアップロードで行いますが、scpコマンドは使用せず、SSH接続のアップロード機能で行ってみます。それに先立ち、Windows側で公開フォルダであるpublishフォルダ以下を圧縮しておきます(仮にファイル名はpublish.zipとします)。このファイルを、ブラウザSSHの[ファイルをアップロード]をクリックしてファイルを選択し、インスタンスに転送します(図14)。

図14:インスタンスへのファイルアップロード
図14:インスタンスへのファイルアップロード

 転送が終了すると「1個の項目を転送しました」と右下に表示され、ホームディレクトリにファイルが置かれるので、これを解凍します。.zipファイルを解凍するためにzipパッケージをインストールし、unzipコマンドで解凍します。これで、ホームディレクトリにpublishディレクトリが作成されます。

$ sudo apt-get install -y zip
$ unzip publish.zip

 フォントをインストールします。IPAexフォントのみ使っている場合には、fonts-ipafontのインストールは不要です。

$ sudo apt install -y fonts-ipafont
$ sudo apt install -y fonts-ipaexfont

動作確認する

 帳票アプリを起動して、動作を確認しましょう。ブラウザSSHで、以下のコマンドを実行します。sudoコマンドを使っているのは、特権ポート(80)でアプリを公開するためです。また、公開するURLをASPNETCORE_URLS環境変数で指定しています。

$ sudo ASPNETCORE_URLS=http://*:80 dotnet JSViewerSample.dll

 Webブラウザから、URL「http://外部IPアドレス:80」にアクセスします。外部IPアドレスは、VMインスタンスの情報欄に表示されていますから、それを指定してください。図15のようにブラウザに帳票が表示されれば成功です。PDFへの書き出しも試してみてください。

図15:Google Compute Engineで帳票アプリを実行
図15:Google Compute Engineで帳票アプリを実行

Microsoft Azure仮想マシン環境での公開

 最後に、Microsoft Azure仮想マシン環境に帳票アプリをデプロイし、公開する手順を紹介します。

公開環境を構築する

 Azureの利用には、MicrosoftアカウントかGitHubアカウントが必要です。いずれのアカウントも持っていない場合は、あらかじめ作成しておきます。筆者は、Microsoftアカウントを使用しました。「Azure の無料アカウントを今すぐ作成する」にアクセスし、[無料で始める]からサインアップを済ませます。

 Azureポータル「ホーム」にアクセスします。サインアップ直後に誘導されると「クイックスタートセンター」にアクセスしますが、ここではAzureポータルに直接アクセスしたとして説明を進めます。

 「Azureサービス」にある[Virtual Machines]にマウスポインタを乗せると、「Virtual Machines」がポップアップするので、[+作成]をクリックします。表示されるドロップダウンから、[Azure仮想マシン]をクリックすると「仮想マシンの作成」ページになるので、ここで仮想マシンの仕様を決定していきます。基本的には、文字通り「基本」タブの設定だけで済むので、他のタブの項目は既定値のままでかまいません(図16)。

図16:Azure仮想マシンを作成
図16:Azure仮想マシンを作成

 「プロジェクトの詳細」セクションで、サブスクリプションとリソースグループを設定します。サブスクリプションは既定の「Azure subscription 1」のままで、リソースグループは新規に作成します。[新規作成]リンクをクリックして、リソースグループ名を指定します。ここでは、「ResourceGroup」としました。

 「インスタンスの詳細」セクションで、仮想マシンの名前などを設定します。[仮想マシン名]に、仮想マシンの名前を設定します。ここでは、「ActiveReportsServer」としました。[地域]は既定から「(Asia Pacific) Japan East」に変更します。[イメージ]は「Ubuntu Server 22.04 LTS - 64 Gen2(利用可能な無料サービス)」に変更します。その他の項目は既定値で構いません。[サイズ]は「Standard_D2s_v3 - 2 vcpu 数、8 GiBのメモリ($94.17/月)」のままとしておきますが、上の表示にもあるように無料試用期間中であれば課金されません(図17)。

図17:「プロジェクトの詳細」と「インスタンスの詳細」
図17:「プロジェクトの詳細」と「インスタンスの詳細」

 「管理者アカウント」セクションで、ログインの方法やユーザ名などを設定します。これらの項目は自動生成される既定値で構いません。[認証の種類]は「SSH公開キー」となっていること、[ユーザー名][キーの組名]の内容を確認してください。

 「受信ポートの規則」セクションで、外部からアクセス可能なサービス(ポート)を設定します。[パブリック受信ポート]が「選択したポートを許可する」となっていることを確認し、[受信ポートを選択]をプルダウンして「HTTP(80)」と「HTTPS(443)」にチェックを入れます。ここまで設定したら、[確認および作成]をクリックします(図18)。

図18:「管理者アカウント」と「受信ポートの規則」
図18:「管理者アカウント」と「受信ポートの規則」

 「検証に成功しました」と表示されて、「Price」セクションに課金の見積り、「基本」セクションなどに設定内容が表示されます。設定内容を確認して[作成]をクリックすると、「新しいキーの組の作成」ダイアログがポップアップするので、[秘密キーのダウンロードとリソースの作成]をクリックして、キーのファイルをダウンロードしてください。ファイルは、「管理者アカウント」セクションで指定したファイル名.pemでダウンロードされます。

 画面が切り替わり、「...デプロイが進行中です」としばらく表示されたあと、「デプロイが完了しました」と表示されれば仮想マシンの作成は成功です。[リソースに移動]をクリックすると、仮想マシンの詳細を確認したり、停止や再起動を行える画面となります(図19)。仮想マシンはすでに実行中です。

図19:仮想マシンの詳細
図19:仮想マシンの詳細

インスタンスへ接続してデプロイする

 続いて、インスタンスに接続して帳票アプリをデプロイしましょう。SSHにログインします。図19において[接続]をクリックすると、SSHで仮想マシンに接続できます。「Azure CLI を使用した SSH」ではAzureストレージの新規作成が必要になるなど多少面倒なので、ここではオーソドックスな「ネイティブSSH」を選択します。[選択]をクリックすると、「ネイティブ SSH」パネルが右サイドから現れるので、一通り内容を確認したあと、コマンドをコピーしてからWindowsの「ターミナル」を起動し、コマンドをペーストして実行します。

> ssh -i ActiveReportsServer_key.pem azureuser@aaa.bbb.ccc.ddd

 .NET 6のランタイムをインストールします。以下のコマンドを実行します。AzureのUbuntuではリポジトリが2種類あるので、このうちMicrosoftリポジトリを無効にしてから、Ubuntuリポジトリからパッケージをインストールする必要があります。

$ sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
$ sudo rm /etc/apt/sources.list.d/microsoft-prod.list
$ sudo apt-get update
$ sudo apt-get install -y aspnetcore-runtime-6.0

 デプロイは、ターミナルに新しいタブを開いて、以下のscpコマンドで行います。キーペアファイルの場所、公開フォルダの場所、ホスト名は各自のものを指定してください。

> scp -r -i "ActiveReportsServer_key.pem" C:\Users\nao\source\nepos\JSViewerSample\JSViewerSample\bin\Release\net6.0\publish\* azureuser@aaa.bbb.ccc.ddd:/home/azureuser/app

 フォントをインストールします。IPAexフォントのみ使っている場合には、fonts-ipafontのインストールは不要です。

$ sudo apt install -y fonts-ipafont
$ sudo apt install -y fonts-ipaexfont

動作確認する

 帳票アプリを起動して、動作を確認しましょう。サーバの起動とWebブラウザからの接続はCompute Engineと全く同じなので、そちらを参照してください。図20のようにブラウザに帳票が表示されれば成功です。PDFへの書き出しも試してみてください。

図20:Azure仮想マシンで帳票アプリを実行
図20:Azure仮想マシンで帳票アプリを実行

まとめ

 今回は、ガバメントクラウド認定ベンダー3社のクラウド上にActiveReports for .NETを使用した帳票アプリケーションをデプロイする方法を紹介しました。ActiveReports for .NETではこのほか、Oracle Cloud Infrastructureにおいても同様にデプロイが可能です。デジタル庁が推進する「地方公共団体の基幹業務システムの統一・標準化」の取り組みにおいて、基幹業務などのアプリケーションをガバメントクラウド上に構築することが求められているので、本記事で紹介した方法を活用し、帳票アプリを作成してみてはいかがでしょうか。

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

提供:グレープシティ株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/18445 2023/10/20 12:00

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング