月別アーカイブ: 2006年8月

DominoをASP.NETに移植する(2)

DominoアプリケーションをASP.NET 2.0に移植する。今回はデータベースサーバの導入だが、ほとんど説明すべきことはない。
MicrosoftのWebサイトから、SQL Server 2005 Express Edition をダウンロードする。このときサーバ上でGUIツールを使ってSQL Serverを管理したいなら、SQL Server Management Studio Express 付きのインストールファイルをダウンロードしよう。
ダウンロードしたらダブルクリックして実行するだけだが、社内でデータバックアップシステムが稼動していて、データファイルを配置する場所に気をつかう必要がある場合は、インストール中に、データファイルの配置場所を初期値から変更することを忘れないでおこう。
また、SQL Serverへの接続アカウントだが、社内の各パソコンから直接SQL Serverに接続することがないのであれば、それほど神経質になる必要はないだろう。極端な話、ユーザ名「sa」、パスワードなしでも構わない。
インストールが終わったら、インストールしたサーバ上で「スタート」→「プログラム」→「Microsoft SQL Server」→「構成ツール」→「SQL Server Configuration Manager」でサーバ上のSQL Serverのネットワーク構成を設定する。
ツリー上のメニュー「SQL Server 2005 ネットワーク構成」の配下にある「SQLEXPRESSのプロトコル」を、社内の環境に合わせて有効・無効にする。SQL ServerをインストールしたサーバにTCP/IP接続しているなら、TCP/IPだけを有効にしておけばよい。
「SQL Native Clientの構成」は、Clientモジュール側の設定なので、サーバ上ではとくに変更する必要はない。開発パソコンの方ではTCP/IPを有効にしておく必要がある。
SQL Server 2005 Express Edition で少し惑わされるのは、接続文字列だ。OracleならサーバのIPアドレスとインスタンス名で接続できるが、SQL Server 2005 Expressの場合は「192.168.1.101sqlexpress」などという表現になる。
Express Editionを使うことは、大企業の方にはお勧めしないが、中堅・中小企業で比較的こじんまりとNotes/Dominoを使っているなら、ASP.NET 2.0への移植用のデータベースソフトとしては十分だろう。
バックアップも Express Editionなら、夜中にSQL Server のサービスを停止し、データファイルのバックアップ(コールドバックアップ)を取っておけばよい。
以上で、IIS 6.0+.NET Framework 2.0+SQL Server 2005 Express Editionという、Dominoの移植に必要なサーバ側の環境が整った。
次回は開発に使うパソコン側の環境整備について書きたい。

DominoをASP.NETに移植する(1)

いまLotus DominoのWebアプリケーションをASP.NET 2.0へ移植するという、Dominoに対する裏切り行為に、かなり見通しが出てきた。何回かにわけてDominoからASP.NETへの移行について書きたい。
初回はサーバ側の設定について。ASP.NET 2.0なのでWindows 2003 Server上のIIS 6.0に.NET Framework 2.0を導入することから始める。このあたりの設定手順については、Windows Serverの大抵の参考書にあるので、そちらをお読みいただきたい。お勧めの一冊を下記にあげておく。

IIS 6.0ではWebサーバだけでなく、FTPサーバの設定をしておいた方がよい。後述の統合開発ツール Visual Web Developer 2005 Express Edition でサーバ上にファイルを転送するとき、FTPを利用することができるからだ。
手軽に始めるなら、WebサイトもFTPサイトも「既定のWebサイト」「既定のFTPサイト」で十分だろう。また、社内の安全なネットワーク内で、限られた人数で開発をするなら、FTPサイトは「匿名接続を許可する」でも大きな問題はないだろう。
ただし、ASP.NET 2.0を動かすために、IISマネージャの「Webサービス拡張」で、Active Server Pages、ASP.NET v1.1、ASP.NET v2.0を「許可」にしておく必要がある。それ以外の項目は「禁止」でよい。
また、「既定のWebサイト」のホームディレクトリの配下に、いくつかサブディレクトリを作って、それぞれのディレクトリを1個のアプリケーション(Dominoで言えば1個のデータベース)とすることになるが、このとき注意すべき点が一つある。
エクスプローラーなどから「既定のWebサイト」のホームディレクトリ(たとえばC:Inetpubwwwroot)配下にディレクトリを作成すると、IISマネージャで自動的にサブディレクトリとして認識されるが、そのサブディレクトリを1個のアプリケーションと認識させるには、アプリケーションの設定が必要になる。
「既定のWebサイト」配下に表示されているサブディレクトリ(フォルダの絵のアイコン)のプロパティを表示させ、「ディレクトリ」タブの「アプリケーションの設定」という部分で「作成(E)」ボタンをクリックする。
そうすると、そのサブディレクトリが1個のWebアプリケーションと見なされ、そのアプリケーション単位に、認証の方式などのさまざまな設定ができるようになる。
ご承知のように、IIS 6.0はWindows 2003 Serverに付属するので、Windows 2003 Serverさえ稼動していれば無償で使い始められる。
次回はデータベースサーバの導入について書きたい。こちらも無償の SQL Server 2005 Express Edition を利用することとする。

ASP.NETのDetailViewに初期値を設定する

ASP.NET 2.0のDetailViewの新規作成モードで初期値を動的にわたす方法がやっと見つかった。検索エンジンに引っかかるように記しておく。引用元は下記のページだ。
How do I get an evaluated default into a Formview Insert?
FormViewのDataBoundイベントハンドラ内で、FormViewのCurrentModeがFormViewMode.Insertになっている場合に、FormViewのFindControlメソッドで初期値を設定したいコントロールを探し、値を設定ればよい。
また、初期値を変更させたくなければ、そのコントロールのEnabledプロパティをFalseにしてしまえば、グレイアウトされて変更できなくなる。
Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
 If FormView1.CurrentMode = FormViewMode.Insert Then
  Dim tb As TextBox
  tb = CType(FormView1.FindControl(“InsertDateTextBox”), TextBox)
  tb.Text = Now()
tb.Enabled = False
 End If
End Sub
間違っても、SqlDataSourceオブジェクトのInsertParameters内のパラメータのプロパティとしてDefaultValueを設定しないこと。これをやるとデータの新規作成がことごとくエラーになってしまう。
以上、この解答を見つけるのに半日かかった。

僕の考える安楽死制度とは

安楽死の制度について、僕が想定しているのは例えば以下のようなものだ。
●本人の意思表示があること。第三者の同意が必要だと、かえって誰かの脅迫で安楽死を選ばされる場合が出てくるため。
●安楽死の前に、専用の施設での数週間の生活を義務付けること。その施設は都心や田舎など、異なる環境に複数あり、高級旅館のように快適で、本人が自由に選択できる。
●費用は国家が負担する。国家が、安楽死を選ぶ人を減らす努力をするインセンティブがはたらくため。
●施設にはカウンセラーが常駐し、本人の希望があればいつでも話ができる。
●施設は本人の意思で自由に退所できる。つまり、自由に安楽死をやめることができる。
●安楽死の日をあらかじめ知りたいか、知りたくないかを、本人が選択できる。
●安楽死の方法も、場所、時間帯、一人か集団か、意識のあるままか睡眠中かなど、本人がきめこまかく指定できる。
●あらかじめ知りたくない場合は、本人に予告せずに希望の方法で安楽死させる。あらかじめ知りたい場合は、本人に予告した上で安楽死させる。
●集団での安楽死を希望する場合は、希望が一致する人がいれば、同一の方法で同じ場所で同時に安楽死させる。
むしろこういう制度を作れば、施設に入ってから死を思いとどまる人が増え、自殺者は確実に減るのではないかと僕は考える。
自殺者に「生きろ」と言うほど残酷なことはない。むしろ「死んでもいいんだよ」と安楽死のための環境を用意してあげた上で、ゆっくり考える時間を与えるべきなのだ。

「生きなきゃ」という意見こそが自殺者を追いつめる

安楽死の制度化について予想どおり反論があった。「人は生きなきゃいけない」なんてことはわかっている。わかった上で書いているのだ。
今回いじめで自殺した少年は無念だったろう。しかし、現実に死を選ぶほど苦しんでいる少年に「生きなきゃ」と言ったら、彼は間違いなくこう答えただろう。「あんたには分からないよ」と。
少年はそう答えることさえ虚しいから、死を選んだのだ。今回のような事件について、「人は生きなきゃいけない」などと、お気楽なことを言ってられる人々には、決して自殺者の苦しみや無念さを理解できない。
本当に死を考えるまで追いつめられた人なら、人間は無条件に生きなきゃいけないなどと、簡単に言い切れないはずだ。それこそ自殺者に対する典型的な無理解である。自殺者の苦しみに対する認識が、まったく甘すぎる。
「人は生きなきゃいけない」という正論をふりかざす人々は、まさにそのことによって、今回自殺した少年のような人々を追い詰めているとも言える。
彼が死ななくてもいい環境とは、いったいどんなものだというのか。「人は生きなきゃ」と言い続けることで、彼が死ななくてもいい環境を作れたとでも言うのだろうか。
そういう楽観的な人々は生き残り、そうでない人々が自殺を選んでいるのだ。そんな単純な事実さえ理解できない人々に、安楽死の制度化という提案に、きちんと反論する資格はない。
僕は今回の少年のような自殺者の無念さを真剣に考えるからこそ、彼らの苦しみに対する、最悪かつ最善の策として「制度化された安楽死」を提案しているのだ。