必要な環境
本記事のサンプルコードは、以下の環境で動作を確認しています。
- 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における仮想サーバのことをいいます。
「名前とタグ」の[名前]にインスタンスを名前を入力します。ここでは、「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)。
「インスタンスタイプ」は既定の「t2.micro」のままで構いません。「キーペア(ログイン)」で、インスタンスへの接続に必要なキーペアをここで作成しておきます。作成済みであれば、それを選択しても構いません。[新しいキーペアの作成]をクリックすると[キーペアを作成]ウインドウがポップアップするので、「キーペア名」に任意の名前を(ここでは「MyKeyPair」としました)入力し、他の項目は既定値のままで[キーペアを作成]をクリックしてください(図3)。
「ネットワーク設定」では、[からのRDPトラフィックを許可]のチェックを外し、「インターネットからのHTTPSトラフィックを許可」と「インターネットからのHTTPトラフィックを許可」にチェックを入れておきます。[からのSSHトラフィックを許可する]にはチェックを入れたままで、右のプルダウンで「自分のIP」を選択しておくと、SSH接続が安全になります(図4)。
「概要」の内容を確認して[インスタンスを起動]をクリックします。「インスタンス作成中」の表示の後、「インスタンスの起動を正常に開始しました (i-0c2f8…)」などと緑色の背景で表示されれば、インスタンスの作成と起動は成功です(図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への書き出しも試してみてください。
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)。
しばらく待つと、「VMインスタンス」のページが表示されます。右側にチュートリアルが表示されたら閉じておきましょう。2箇所ある[インスタンスを作成]をクリックすると「インスタンスの作成」ページとなるので、ここでインスタンスを作成します。
「名前やリージョンの設定」ではインスタンスの名前やスペックを設定します。[名前]にはインスタンスの名称を設定します。ここでは、「activereports-app-server」としました。英子文字、数字、ハイフンの組み合わせである必要があります。[リージョン]は無料枠の対象のうち日本に近い「us-west1(オレゴン)」とし、[ゾーン]は既定値のままにしておきます。「マシンの構成」は「汎用」の「E2」のままにしておきます(図8)。
「マシンタイプ」は無料枠適用の構成である「e2-micro」に変更します。「可用性ポリシー」と「表示デバイス」の各項目は全て既定値のままとしておきます(図9)。
「ブートディスク」では、以下のように設定を変更します。[OS]は「Ubuntu」に、[バージョン]は「Ubuntu 22.04 LTS」に、[ブートディスクの種類]は「標準永続ディスク」に、[サイズ]は「30GB」にそれぞれ変更します。無料枠が適用されるのは無償のOS、標準永続ディスク、容量30GBとなるので、それに沿った設定です(図10)。
「ファイアウォール」では[HTTPトラフィックを許可する][HTTPSトラフィックを許可する]にチェックを入れます(図11)。
なお、料金の見積りが「$7.31」などと表示されると思いますが、無料枠の範囲で機能を選択すると実際には課金されません。ここで[作成]をクリックすると、インスタンスが作成されます。「作成中」と表示されてしばらくすると、インスタンスの一覧が表示されれば成功です(図12)。「ステータス」欄が緑色のチェックマークになっていれば実行中なので、不要な場合には右端の縦三点アイコン(その他の操作)から[停止]をクリックしてください。
インスタンスへ接続してデプロイする
続いて、インスタンスに接続して帳票アプリをデプロイしましょう。ブラウザSSHでログインします。図12においてインスタンス欄の[SSH]をクリックして、ドロップダウンから[ブラウザでのSSH]をクリックします。承認を求めるダイアログがポップアップするので、[Authorize]をクリックします。接続されると、ブラウザのウィンドウが新しく開き、ターミナル画面が表示されます(図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)。
転送が終了すると「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への書き出しも試してみてください。
Microsoft Azure仮想マシン環境での公開
最後に、Microsoft Azure仮想マシン環境に帳票アプリをデプロイし、公開する手順を紹介します。
公開環境を構築する
Azureの利用には、MicrosoftアカウントかGitHubアカウントが必要です。いずれのアカウントも持っていない場合は、あらかじめ作成しておきます。筆者は、Microsoftアカウントを使用しました。「Azure の無料アカウントを今すぐ作成する」にアクセスし、[無料で始める]からサインアップを済ませます。
Azureポータル「ホーム」にアクセスします。サインアップ直後に誘導されると「クイックスタートセンター」にアクセスしますが、ここではAzureポータルに直接アクセスしたとして説明を進めます。
「Azureサービス」にある[Virtual Machines]にマウスポインタを乗せると、「Virtual Machines」がポップアップするので、[+作成]をクリックします。表示されるドロップダウンから、[Azure仮想マシン]をクリックすると「仮想マシンの作成」ページになるので、ここで仮想マシンの仕様を決定していきます。基本的には、文字通り「基本」タブの設定だけで済むので、他のタブの項目は既定値のままでかまいません(図16)。
「プロジェクトの詳細」セクションで、サブスクリプションとリソースグループを設定します。サブスクリプションは既定の「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)。
「管理者アカウント」セクションで、ログインの方法やユーザ名などを設定します。これらの項目は自動生成される既定値で構いません。[認証の種類]は「SSH公開キー」となっていること、[ユーザー名][キーの組名]の内容を確認してください。
「受信ポートの規則」セクションで、外部からアクセス可能なサービス(ポート)を設定します。[パブリック受信ポート]が「選択したポートを許可する」となっていることを確認し、[受信ポートを選択]をプルダウンして「HTTP(80)」と「HTTPS(443)」にチェックを入れます。ここまで設定したら、[確認および作成]をクリックします(図18)。
「検証に成功しました」と表示されて、「Price」セクションに課金の見積り、「基本」セクションなどに設定内容が表示されます。設定内容を確認して[作成]をクリックすると、「新しいキーの組の作成」ダイアログがポップアップするので、[秘密キーのダウンロードとリソースの作成]をクリックして、キーのファイルをダウンロードしてください。ファイルは、「管理者アカウント」セクションで指定したファイル名.pemでダウンロードされます。
画面が切り替わり、「...デプロイが進行中です」としばらく表示されたあと、「デプロイが完了しました」と表示されれば仮想マシンの作成は成功です。[リソースに移動]をクリックすると、仮想マシンの詳細を確認したり、停止や再起動を行える画面となります(図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への書き出しも試してみてください。
まとめ
今回は、ガバメントクラウド認定ベンダー3社のクラウド上にActiveReports for .NETを使用した帳票アプリケーションをデプロイする方法を紹介しました。ActiveReports for .NETではこのほか、Oracle Cloud Infrastructureにおいても同様にデプロイが可能です。デジタル庁が推進する「地方公共団体の基幹業務システムの統一・標準化」の取り組みにおいて、基幹業務などのアプリケーションをガバメントクラウド上に構築することが求められているので、本記事で紹介した方法を活用し、帳票アプリを作成してみてはいかがでしょうか。