BCB(やDelphi)にはIntrawebというWEBアプリケーションを作成するフレームワーク(?)が標準で付いています。存在は知っていましたが今まで手をつけたことが無かったので今回チャレンジしてみました。
目次
プロジェクトの作成
新規作成→その他→Intraweb→IntraWebApplication、を選択します。オプション設定はとりあえずデフォルトでやってみます。
- Unit1.cpp
- ServerController.cpp
- UserSessionUnit.cpp
が作成されます。
フォームの作成
下図のようにUnit1のデザインを作成します。フォームを設計する要領でOKです。但しTIW〜で始まる専用のコンポーネントを使用します。
コンポーネント | プロパティ | 値 |
---|---|---|
IWLabel1 | Caption | 身長(cm) |
IWLabel2 | Caption | 体重(kg) |
IWLabel3 | Caption | あなたのBMI値 |
IWEdit1 | Text | 175 |
IWEdit2 | Text | 60 |
IWEdit3 | Text | |
ReadOnly | true | |
IWButton1 | Caption | 計算 |
コードの記述
デザインから分かるとおり、身長・体重を入力させ、計算ボタン押下でBMI値*1を計算し出力するコードを記述します。
計算ボタンをダブルクリック(orイベント→OnClick)すると、計算ボタン押下時のメソッドが生成されます。その中身を記述します。
void __fastcall TIWForm1::IWButton1Click(TObject *Sender) { double cm = IWEdit1->Text.ToDouble(); double kg = IWEdit2->Text.ToDouble(); double result = kg / ((cm/100) *(cm/100)); IWEdit3->Text = result; }
「え、これだけ?」と思われるかもしれませんが、これだけです。何も特殊なことはありません。
コンパイル&実行
普通にコンパイル&実行すると下図のような画面のプログラムが起動します。
このプログラムがWebサーバとして稼動しています。この丸いマークを押下するとブラウザが起動します。さっそく動作を確認してみます。
先ほど設計したとおりの画面が表示されたと思います。身長・体重を入れて計算させてみてください。ちゃんと動作しますね!
感想とか
ウィンドウズのアプリケーションを作成する感覚でWebアプリケーションが作れるのでビックリしました。内部ではスタイルシートやJavaスクリプトを駆使したコードが自動生成されているのでしょうけど、それらを全く意識することなくWebアプリケーションが作れるのはすごいです。WIN32ネイティブで実行されるので、JavaやPHPなどと比べ速度や省メモリ化も期待できます。非力なマシンに自宅サーバでサービス提供を考えてる場合は選択肢としてありかも知れません。
ただhtml生成が完全にIntraweb任せなので、ちょっとした変更でも再コンパイルしなければならないのが不便ですね。