HDInisght

HDInsigntはAzureで動作するHadoopで維持コストが安い Hadoopは大量データ処理の基盤としてはデファクトスタンダードになっていますので、Windows環境でもBigDataを処理する場合Hadoopを利用することになります。HDInsightはAzure上で利用できるHadoopサービ…

HDInsight Studio

HDInsightのHDFSの操作、MapReduceの実行を実施するためのツールを作成しました。 かなり適当に作ったので取りあえず動くレベルです。 プレビューであったスクリプトの機能がなくなったので、テスト的に使ってみたいなどのお気楽に作業用にご利用ください。D…

2013年のまとめ

去年の年末に記事を書いて今年は一度もブログを書いていませんでした。 今年は今までと違う方向でテクノロジを模索をした一年でもあり、あまりブログを書くネタもモチベーションもありませんでした。 ただ今年もいくつか新しいチャレンジをしたのと来年に向…

ASP.NET MVCを利用した業務アプリについて

今年はASP.NET MVCを利用したアプリケーション開発に携わったのでその感想をまとめます。 軽量・小回りが利く ASP.NET WebFormに比べて出力するHTMLを全てコントロール可能でシンプルなHTMLを出力することができます。このためCSSやJavaScript(jQuery)の利…

ストリームベースのDB変換ツール(3)

Oracle対応と自動的にテーブルを作成する機能拡張をした版*1を作成しました。あと、SQL Azureに対しても使ってみましたが、とりあえず問題なく動作しました。このツールは使い道ですが、もともとは開発時にデータベース変更があるとテストデータの変更が大変…

ストリームベースのDB変換ツール(2)

DbStreamConverterを使ったデータ変換ですが、簡単に手順を紹介します。 準備 まずはデータベースの用意が必要です。ここではNorthwindを利用します。手順は単純なので別に他のDBでも構いません。データベースが用意できたら、転送用のテーブルを作ります。…

ストリームベースのDB変換ツール(1)

DBデータをストリーム処理するをツール(ソース)にしてみました。(UIはMVVM View Makerで作成しています。)変換元テーブルまたはSELECT文と、変換先テーブルを指定するとDBデータをストリーム処理するで紹介したIDataReader とSqlBulkCopyを利用してデー…

iPadでDatePcikerを利用する

最近、ASP.NET MVC、jQueryを使ってPCとiPadをターゲットにしたシステムを作成しています。業務アプリもPCだけをターゲットにするだけではなく、タブレットも合わせて考える時代なんですね。また、HTML5をはじめとするWeb技術の発達もあって、一昔前では考え…

バッチ処理を50倍高速化する

DBデータをストリーム処理するを応用するとバッチ処理を高速化できます。SQL Serverに1億件のテストデータを高速に作成するの結果からすると、ストアドプロシージャで作成する場合に比べて50倍高速に処理できることになります。メインフレーム上の基幹系のバ…

ASP.NET MVC3+Entity Framework Code Firstでオフショア開発

今回規模が大きくないオフショアの開発案件があって少しチャレンジをしています。 オフショア開発を行うとなかなか仕様が伝わりにくかったり期待しているコードがあがってきません。 以前もDBやアーキテクチャは日本側で作成して渡すようなことはあったので…

DBデータをストリーム処理する

CEP(複合イベント処理)の記事を見ていてふと業務アプリのバッチ処理に利用できないかなと思いました。ストリーム処理する構造にアナロジを感じました。 .NETのADO.NETにはストリームの読み込みにはDataReaderがあり、書き込みにはSqlBulkCopyがあります。…

お手軽ビジネスルール管理(BRMS)

最近BRMSという言葉とよく聞くようになりました。言葉だけは以前から知っていいて昔のエキスパートシステムの派生版のように思っていました。しかし、現在はより広範囲に、(少し違和感を感じますが)プログラムの自動生成的なものにもBRMSという言葉を使う…

ASP.NETもMVVMに向かうのか

ASP.NET MVCにSingle Page Applicationというプロジェクトテンプレートが追加されるようです。 以前ここでも紹介したknockoutjsを利用してMVVMアプリケーションを実装するようで、さらにデータアクセス用の部品に「upshot.js」、ナビゲーション(履歴)管理…

単機能・小さい部品の方が共有化し易い

業務ロジックの共通化を行いたいという話を聞いて見てみると業務機能単位で考えてことが多くあります。しかしあまり上手く共通機能を抽出できないことが多いようです。大きな機能は仕様が複雑で安定しないためだと思いますが、ではどうすればよいのでしょう…

継続的インテグレーション(CI)とは毎日ビルドすることではない

ソース管理を利用する場合どのようにブランチを作成していくか決めなくてはいけません。ブランチの切り方として大きくリリース都合単位に切る方法と開発機能都合単位に切る方法があるようで、それぞれのブランチをリリースブランチと機能ブランチなどと呼ば…

WPFのDataGridヘッダーを2段組にする方法

簡単にできるかなと思って手をつけたのですが案外大変です。 最初のDataGrid まずは出発点となるDataGridですが以下のような3つの列を持つものです。 ヘッダーを2段にする ヘッダーを2段にする方法をまず検索したところいくつかアイデアが見つかりました。…

詳細設計は必要です

業務アプリで詳細設計書と呼ばれるものをプログラムを作成したあとにリバースして作成しているようなことも良くみます。これは詳細設計をせずにプログラムを書いていることになります。詳細設計は意味のないことなのでしょうか?無駄な作業なのでしょうか? …

Entity FrameworkでUPDLOCKを指定する方法

WITH (UPDLOCK)付きのViewを作成して、マッピングしたエンティティを検索すれば自動的にUpdateロックがかかります。具体的には まずはWITH (UPDLOCK)付きのViewを作る CREATE VIEW [dbo].[EmployeesWithLock] AS SELECT EmployeeID, LastName, FirstName, Ti…

いま.NETで業務アプリを作成するんだったらRIA Serviceフレームワークを利用する

今.NETで業務アプリを作成するのであればRIAService+Silverlightを使うことを勧めするだろうな。理由は高い生産性。 サーバー側の仕組みはEntity FrameworkとRIA Serviceで本当に簡単に作成できるし、クライアント側についてもRIA Serviceの呼び出しやエン…

C#のvolatileって結局なんの効果があるの?

volatile 修飾子 C#にはvolatileという修飾子がある。MSDNのC# リファレンスでは以下のように説明している。 volatile キーワードは、同時に実行中の複数のスレッドによってフィールドが変更される可能性があることを示します。 volatile と宣言されているフ…

SQL Serverに1億件のテストデータを高速に作成する

SQL Serverに1億件を超える大量のテストデータを作成する必要がありできるだけ高速な方法を調べてみた。 ストプロを試してみる まずはストプロを作成してどの程度になる確認してみる。単純にループを回してINSERTを1件づつ行う方法でまずは100万件で試してみ…

導入するアーキテクチャの均衡点を探す

優れたアーキテクチャや手法があっても開発チームが使いこなせなければ絵に描いたもちである。 目指すべきアーキテクチャ(TOBE)と開発チームが実際に回せる(ASIS)レベルとのギャップが大きいとなかなか大変だ。この均衡点(CANBE)を探すことがアーキテクチャ…

knockoutjsメモ

チュートリアルレベルをさらっと触ってみた感想 案外簡単に利用できるように感じで動的な画面が必要なケースには本当に強力な仕組み。ただ、ASP.NETとの統合利用するためには、ページのGET、POSTではなくAJAX的な実装にする必要があって、HTML中心のWebアプ…

HTML5時代のMVVM knockout

MVVMの良さは動的に変化する画面の制御をViewModelで吸収することで複雑さをコントロールできる点です。WPFやSilverlightなどリッチUIを前提にしている場合はもちろんですが、HTML5によって業務Webアプリも当たり前のようにリッチUI化することは予想できます…

WCF RIA サービス

RIA

以前から興味があったWCF RIA サービスのヘルプを読んだのでポイントを整理しました。アプリケーション基盤として、名前付き更新やコンポジット階層、プレゼンテーションモデルなど興味深い仕組みが幾つかあります。好みが分かれるのでしょうが個人的には好…

意思決定コスト

業務システムを構築する際に多くの意思決定を行う。業務仕様、利用技術、アーキテクチャパターン、本当に沢山の意思決定を行う。この意思決定を迅速にできないと作業が待ちになりムダが発生してしまう。 この意思決定のコストは、プロジェクト組織のサイズ(…

DB設計にアグリゲートの考えを導入する

RDBMSはテーブルがフラットに配置されています。テーブル間にリレーションを設定できますが、親子のような関係を定義することはできません。アグリゲートは、複数のオブジェクトを集約して意味的に1つの概念として扱うことで、複雑さを低減するテクニックで…

タイプセーフなDB開発

HibernateやEntityFrameworkなどのORMライブラリはどの程度使われているのであろうか?EntityFrameworkなどいくつかのライブラリはDBからクラスを生成できる仕組みがあるので、この仕組みを使うとプログラムからDBアクセスをタイプセーフなコードで記述でき…

LightSwitchでのIME制御

現バージョンのLightSwitchではTextBoxに対してIMEの設定を行うことができません。しかし日本ではIME制御したいケースは普通に考えられます。Silverlight自体はIME制御できるのでヘルパーを作成してカスタムコードで対処することを考えました。 public stati…

アジャイル開発の価値をマネージメントに訴求する

マネージメントは開発コストが大きな関心事である。 開発コストは単純化すると以下のような式になる。 開発コスト=開発規模/生産性*単価 そうすると、開発規模を小さくするか、生産性を上げるか、単価を下げるしかない。開発規模はパッケージの導入、単価…