2002-05-17 (Fri)

_ やっと分かった

ちょっと大袈裟ですが、3層アーキテクチャの意味がやっと腑に落ちました。Delphiが初めて触った言語だっただけに、RADの経験・2層クラサバの経験がちょっと邪魔しました。

アプリケーション層は、それ自体独立に機能するアプリケーションをオブジェクト指向で作成するということです。極端な話、Databaseがなくてもアプリケーション(層)は動作するわけです。この場合、サーバーが落ちればデータも失われるわけで実用性はありませんが、論理的にはそういうことです。また、GUIがなくてもアプリケーション(層)は動作するわけです。この場合、人間が触れないので実用性はないですが、論理的にはそういうことです。

今まで工数を見積もるときに、画面数から演繹して計算していましたが、これは2層クラサバの発想かなと。オブジェクト指向でアプリケーション層が出来ていれば、GUIやストレージはその機能を付け加えるだけですからね。そう考えると、今までずいぶん無駄なコードを書いていた気がします。アプリケーション層にオブジェクト指向を駆使していれば、もっと早く・よく・安く開発できたでしょう。

これに関連して、JUnit(単体テスト)を使うと工数が倍になるという意見もちょっと違いますね。アプリケーション層が出来上がってGUIを作るときは、そのイベントハンドラに単体テストで書いたコードを書く(写す)だけだから、コードが倍になるということはないわけです。

SQLと密接に結びついた2層クラサバの破壊力は素晴らしいものなので、これはこれで通用すると思います。ただ、今の私は、そういう意味での3層の経験が少ないので、なるべく実戦経験を積んで経験したいわけです。世界中がこちらに動いている(というか、既に世界はそっちに行ってしまっ「た」と私は感じますけどね)のですから遅れないためにも。でも、なかなか社内の賛同が得られないんだなぁ。

_ SSHの鍵の作成

まず、手元のマシンで、鍵を作成します。

$ ssh-keygen -t dsa

.ssh/id_dsaが秘密鍵、.ssh/id_dsa.pubが公開鍵です。

公開鍵を、接続先にコピーします(scpや直接)。

接続先にて、id_dsa.pubをauthorized_keys2に入れます。

$ cd ~/.ssh

$ cat ../id_dsa.pub >> authorized_keys2

以上で暗号鍵の設定は終わりです。

_ ssh-agent

フレーズをメモリ上に保持し、接続ごとにフレーズを入力する必要がなくなります。

$ exec ssh-agent $SHELL

execはしなくてもOK。

$ ssh-add

で、フレーズを蓄えます。

$ ssh-agent -k

で、終了です。

本日のツッコミ(全3件) [ツッコミを入れる]
_ Cyphies (2002-05-18 (Sat) 11:23)

ssh-copy-idを使ってはいかが?

_ はんばあぐ (2002-05-19 (Sun) 00:27)

そんな便利なコマンドがあったのですか。目から鱗です。こういうコマンドを用意しくれるLinuxが好きです。<br>でも、手元のX on Widowsにssh-copy-idがないのです。最新にはあるかなぁ。

_ かとちん (2002-10-05 (Sat) 12:37)

どう腑に落ちたのかもっと詳しく教えてください。<br><br>賛同が得られないのは「3層アーキテクチャ」ではなく,<br>「EJBが唯一体現している」と言わんばかりの,<br>はんばあぐさんの考え方だと,ハタから見ている私は<br>とらえましたが。そうでないのであれば,もう少しうまく<br>伝えてくれるとありがたいです。<br>2層と3層の違いは単純に中間層がクライアントサイドか<br>サーバーサイドにあるかの違いだけで,Webブラウザを使う<br>現在主流のシステムは意識しなくても最初から3層ですよ?<br>それと言語とアーキテクチャは別物ですので,何も邪魔にも<br>ならないと思いますが?JAVAで2層しか作ったことがない人が<br>いたら理解に苦しむし,Delphiで3層作っている人には<br>何の影響もありませんし。3層の実現の最大の貢献者は,<br>EJBではなく,Webブラウザであることは明白です。<br>それとも,ここで指している「3層アーキテクチャ」以外に<br>全然意味の違う別物のアーキテクチャでもあるのでしょうか?

[]