Browse by Tags

単体入力エラーチェックの実装パターン
29 September 09 01:11 PM
さて Part 1. のエントリ では、業務処理の終了パターンの分類と、各アプリケーションタイプにおける基本的な実装パターンを整理しました。要点をまとめると、以下のようになります。 業務処理の終了パターンは、以下のように分類される。 突き合わせエラーについては、バックエンドのモジュール(BC や DAC)との連携によるチェック作業が必要になる。UI 部単体でチェックが可能なのは、単体入力エラーに限られる。 .NET Framework では、UI 開発技術として、ASP.NET, Silverlight, Read More...
Postedby nakama | 4 Comments    
エラーチェックの体系的な分類方法
29 September 09 01:05 PM
まず最初のエントリでは、「エラーチェック」とひとくくりにされている「エラー」を、体系的に分類することを試みてみます。このエントリでは、 Web / Windows、あるいは Java / .NET などといった技術論とは無関係な部分 についての解説を進めていきたいと思います。 エラーチェック(ユーザ入力検証)の意味 正常終了/業務エラー/システムエラーの分類 業務エラーの細分化 アーキテクチャから見たエラーチェックの実装場所 ※ なお、本エントリで解説されている分類方法や命名方法は、あくまで nakama Read More...
Postedby nakama | 0 Comments    
Filed under: , , ,
エラーチェックの体系的な分類と実装パターン
29 September 09 12:58 PM
というわけで久しくエントリをアップしていなかったこの blog ですが、最近、複数方面からお叱りの言葉が……; 忙しかったこともあってエントリをサボっていたこともあったのですが、ちょうどいいネタがなかったのも実際のところ。がしかし、先日 2009/9/26(土) に行った、 わんくま同盟さんでの勉強会 のネタが blog 化するにはちょうどいいだろう、という感じなので、その資料を使いつつ、blog エントリを書いてみることにします。 今回の解説ネタは、更新系業務アプリケーションで求められることになる、エラーチェックの実装パターンを体系的に分類してみる、というものです。ASP.NET Read More...
Postedby nakama | 0 Comments    
Filed under: , , ,
Part 4. Visual Studio によるマルチスレッドアプリの開発
09 April 09 02:57 PM
さて、Part 1~3 の解説で、Windows フォームにおけるマルチスレッドアプリケーションをスクラッチで開発する方法について述べてきました。結論としては、実は Windows フォームにおけるマルチスレッドアプリケーション開発は恐ろしく厄介で面倒である、ということになると思うのですが;、とはいえ 長時間を要する処理があるため、どうしてもマルチスレッドアプリにしなければならない。 ということも当然あると思います。幸い、.NET Framework 2.0/Visual Studio 2005 Read More...
Postedby nakama | 3 Comments    
Filed under: ,
Part 3. タスクスレッドと UI の協調動作
07 April 09 02:47 PM
さて、前回の Part 2. のエントリでは、タスクスレッド(UI の背後で動作させる処理を動作させるスレッド、すなわちマニュアルスレッドやプールスレッドの総称)の様々な起動方法について解説しました。主な方法として、以下の 4 つの方法がありました。 マニュアルスレッドの新規作成 プールスレッドの利用 非同期デリゲートの利用 タイマの利用 さて、いずれの方法を利用する場合であっても守る必要のあるルールとして、 UI スレッド以外から UI コントロールの読み書きをしてはならない 、というものがありました。 Read More...
Postedby nakama | 4 Comments    
Filed under: ,
タスクスレッドの起動方法
02 April 09 10:31 AM
さて、前回のエントリでは、Windows フォーム内部におけるスレッドの構成や、メッセージループの働きなどについて解説しました。中でも重要なこととして、以下のようなキーポイントがありました。 UI スレッド上で、長時間処理を動かしてはならない。 長時間処理は、マニュアルスレッドやプールスレッドなどの、他のスレッドに切り出す。 UI スレッド以外から、UI コントロールを触ってはいけない。 マニュアルスレッドやプールスレッド上から、UI コントロールを読み書き・操作してはいけない。 上記の 2 つの重要ルールについて、Part Read More...
Postedby nakama | 5 Comments    
Filed under: ,
Part 1. Windows フォームのマルチスレッド処理の基礎
31 March 09 12:25 AM
さて、Windows フォームは、Windows OS が持つ様々なウィンドウ制御の仕組みに基づいて開発されている UI 技術です。このため、Windows フォームのマルチスレッド処理を理解するためには、まず Windows OS がどのようにして Windows フォームアプリケーションを動作させているのかについて理解する必要があります。その中でも特に重要なのが、 メッセージキュー と メッセージループ です。これらを理解することで、なぜ UI が固まるのか、また固まることを防ぐにはどうしたらよいのか、といったことが理解できるようになります。これについて解説します。 Read More...
Postedby nakama | 2 Comments    
Filed under: ,
マルチスレッド Windows フォームアプリケーションの開発
30 March 09 11:13 PM
というわけでまたしてもかなり日にちが空いてしまいました;。年度末ということもあって仕事が立て込んでいたのですが、ほぼ一段落したので久しぶりにエントリを。どうしてもまとまった話題を書こうとすると時間がかかっちゃいますね.... 今回の話題は、Windows フォームにおけるマルチスレッド処理の正しい書き方です。以前、マルチスレッドアプリケーションにおけるデータ変数の排他制御(スレッドセーフか否かの判定)について こちら と こちら のエントリに書きましたが、さらにもう少し応用的なトピックとして、Windows Read More...
Postedby nakama | 0 Comments    
Filed under: ,
Part 2. スマートクライアントにおける単体入力データ検証
26 February 09 08:29 PM
さて、前回のエントリでは Windows フォームにおける双方向データバインドの基本的な使い方を解説しました。要点をまとめると、以下の通りとなります。 双方向データバインドを用いると、データソースから UI コントロールへ値を表示するだけでなく、UI コントロールからの入力をデータソースに反映できる。 データバインドには、2 種類のデータバインドがある。 ① 単一値データバインド(単票形式データバインド) ② コレクションデータバインド(グリッド形式データバインド) どちらの場合も、BindingSource Read More...
Postedby nakama | 3 Comments    
Filed under: ,
Part 1. 双方向データバインドの基本的な使い方
26 February 09 08:15 PM
Windows フォームにおけるデータ入力において、スマートに単体入力エラーチェックを行いたい場合には、双方向データバインドと IDataErrorInfo インタフェースを利用する方式が便利です。ただし、この Windows フォームのデータバインドは Web フォームのデータバインドとは大きく異なる点があります。 双方向データバインドが利用できる。(※ Web フォームでも使えますが、極めて限定的です。) 入力データのデータソースへの反映がリアルタイムに行われる。(リアルタイムにデータが同期。) Read More...
Postedby nakama | 1 Comments    
Filed under: ,
双方向データバインドによる単体入力エラーチェック
26 February 09 08:10 PM
ふと気付いてみれば前回のエントリから一か月以上が経過。一回サボるとついエントリをサボり気味になってしまうものですね;。さて今度のエントリは何にしようかと迷っていたのですが、先日、マイミクの Gushwell さん と話していたときに、Windows フォームの双方向データバインドを使った単体入力エラーチェックの実装方法を書いたらどうか、という話に。確かにこの方法は知らない人が多く、私自身も数ヶ月前にわからなくて非常に苦しんだ経緯もあるので、今回はこれをネタにしてエントリを書いてみようと思います。 Read More...
Postedby nakama | 1 Comments    
Filed under: ,
.NET の例外処理 Part. 4
23 January 09 04:14 PM
というわけで、前回まで 3 回(+α)に渡って .NET の例外処理の適切な書き方について解説してきましたが、ここまでの解説にもまして重要なのは、 表示またはロギングされた例外情報を、正確に読み取れるようになること。 です。実は例外に含まれる情報には、デバッグや障害解析に欠かせない情報が多数含まれており、これらを正しく読めるようになるだけで、以下のようなことがわかることが多いのです。 どこで例外が発生したのか アプリケーションの内部構造がどんな形になっているのか 例外がどんなシチュエーションで発生したのか Read More...
Postedby nakama | 0 Comments    
Filed under:
.NETの例外処理 Part. 3
18 January 09 07:29 PM
さて、前回までの解説で、.NETアプリケーションにおける一般的な例外の取り扱い型の基本を学習してきました。キーポイントをまとめると、以下の通りです。 例外は、アプリケーションエラーやシステムエラーの場合に限り、利用する。 例外は、基本的にユーザアプリケーション内ではtry-catchをせず、ランタイムの持つ集約例外ハンドラの機能によって後処理する。 というわけで今回解説をするのは、ASP.NET ランタイムが持っている集約例外ハンドラの機能についてです。(基本的にはこれを学習すれば、Windows Read More...
Postedby nakama | 0 Comments    
Filed under:
.NETとJavaの例外処理の違い
09 January 09 12:09 PM
さて、ここまで .NET における例外処理の基本的な考え方として、次のようなポイントを解説してきました。 .NET では、「業務フローチャートからはみ出た場合」 を表現する方法として、例外を使う。 業務フローチャート上想定されている業務エラーを、例外として表現してはいけない。 業務エラーは、メソッドの戻り値として enum 型や構造体クラスなどを使うことで表現する。 これらの考え方は非常に重要なのですが、実はこのような例外の取り扱い方は、Java における例外の取扱い方とは大きく異なります。これは、 Read More...
Postedby nakama | 6 Comments    
Filed under:
.NETの例外処理 Part.2
02 January 09 09:40 PM
さて今度は ASP.NET ランタイムの例外処理について解説……しようかと思ったのですが、ここで例外処理について、もうちょっとツッコミを入れておきたいポイントがあります。それは、以下の 2 つです。 リソース解放のための try-finally 処理 Java の例外と .NET の例外の違い この 2 つは実は例外処理コードを正しく書く上では欠かせない概念なのですが、世の中に出回っているサンプルコードでもこれらの点が正しく理解できていないために、誤ったコードが多数見られます。特に、データアクセス処理を記述する場合には正しい Read More...
Postedby nakama | 2 Comments    
Filed under:
More Posts Next page »

This Blog

Syndication

Page view tracker