ささいなことですが。

Windowsアプリテスト自動化ライブラリFriendly開発者の日記です。

LambdicSql - 続 String interpolation 対応しました。

neueさんからご意見いただいたので、改善しました。 Expressionで受ける必要ないのでは? 確かに。 シンプルなものは受ける必要がないですね・・・。 書き味悪いし、Expressionは軽い処理ではないので必要ないなら使わない方がいい。 なので、FormattableStr…

LambdicSql - String interpolation 対応しました。

String interpolation を使えるようにしました! github.com きっかけは TLにあったneueさんのツイートString interpolation/FormattableStringを使ったSQL整形、最高に良いアイディア。うちでも展開していきたい。 / “Announcing EF Core 2.0 Preview 2 | .…

2017 MVP アワードを受賞いたしました!

今年も、Microsoft MVP を受賞することができました! カテゴリは Visual Studio and Development Technologies です。 これも支えていただいている皆さんのおかげです。 ありがとうございます! 今期の目標は LambdicSqlの正式版リリース(まだやったんかい…

Windowsアプリテスト自動化でのキーエミュレートはありなのか?

最近お客様から「Friendlyではキー操作は使えないの?」って聞かれることが何回かありました。キーエミュレートねー。Friendly作る前はやってたけど不安定だったんですよねー。MSDNにもタイミング問題あるって書いてるし。でもFriendlyと組み合わせたらなん…

LambdicSql - DBごとにパッケージを分けました

今までのLambdicSqlは、使いそうな句や関数を LambdicSql.Symbol ってことろに区別なく定義していました。なのでDBの種類によってはインテリセンスに出てくるけど使えない句とか結構あったんですよね・・・。まあSQLってそんなもんだし良いかなーって思って…

最近のLambdicSql - 空なら消える

Sqlを動的に作成する場合には、「空なら消えてくれればいいのに」があります。 LambdicSqlでは以下の場合には空を渡すと要素や句が消えます。 Select句のメンバ Join Where Having Order By Select句のメンバ //Typeを表示するときのみCase式を挿入する var …

最近のLambdicSql - 自由度Up

github.com組み合わせの自由度がアップしました。 Sqlビルダーという位置づけになった今、Sql構築の自由度は重要です。 +演算子のサポート ちょっと前から生成したsql同士のサポートはありました。 var select = Db<DB>.Sql(db => Select(new SelectData1 { Name</db>…

最近のLambdicSql - PCL(Xamarin)でも使えます

github.comこの世の全てのSQLをC#で表現してやる! ってことでマルチプラットフォーム対応もしました。 .NETCoreやPCLでも使えます。 SQLiteと連携 Xamarinって言ったらSQLiteです。 LambdicSqlはSQLiteとの連携機能も入れています。 まずは、LambdicSqlとsq…

最近のLambdicSql - この世の全てのSQLをC#で表現する

github.com まだβ版です。とはいえ、今度こそ着実にリリースに近づいています。 この辺で最近入れた機能をご紹介させていただきます。 それは句や関数を簡単に追加できる機能です。 この世の全てのSQLをC#で表現するポテンシャルを持たせました。 若干言い過…

Expression中の値を取り込む

C# Advent Calendar 2016の記事になります。26日ですが、今朝見たら空きがあったので書かせてもらうことにしました。 私は趣味でOSSのライブラリを作ってます。テスト自動化用のライブラリのFriendlyとか、最近はLambdicSqlというC#のラムダでSQLを作成する…

VisualStudio for mac で Xamarinデビュー

初Xamarinやってみました! しかも僕はAndroid、iPhoneのプログラムも初です!でも実はモバイルプログラム歴は3年くらいあるんですよ。 ガラケーですけどねw ソフトバンク?なんですかそれ?僕がやってた頃はJ-PhoneとかVodafoneでしたよ。 あの頃は徹夜も散…

MFCのプロジェクト設定を変えてみる

なぜか今日はMFCですw とある人から「MFC共Cのプロジェクトを<標準Windowsライブラリを使用する>に変更してもビルド通るんだけど」って話を聞きました。んー、まあもともと共有DLLをリンクしてるからありえなくもないよなーっと思って実験してみました。①M…

Visual Studio for Mac ⇔ Windows (WinFormsがMacでビルド、実行できたよ)

Visual Studio for Mac を触り始めましたが、Windows版との互換性が気になりました。ちょっと実験してみます。(ていうか、この辺はXamarinStudioと同じなんでしょうけど、XamarinStudioの仕様も知らないので) コンソールアプリ for Mac で作ったコンソール…

Mac買いました!そしてVisual Studio for Macをインストールしましたー。

なんと、人生初のmacを買いました。 このブログもmacで書いてます。 慣れてないから、時間かかるw そしてVisual Studio for Macをインストールしました。 www.visualstudio.com インストール時もキャプチャしておけばよかったですね。 まあ、特に問題なく入…

dotnetConf関西 2016 で登壇してきました。

これですね。 .Netの新しい機能の勉強会です。 connpass.com僕はWPFとUWPのテスト自動化に関して話をしてきました。 まあ、WPFは新技術でもないですけど・・・。 とは言え、いい感じに枯れてきたので、日本でもようやく導入が始まってきたようですね。(過去…

Friendly.UWP_α 0.0.5 をリリースしました。

すごい久しぶりのリリースです。半年以上ほったらかしてましたからねー。 www.nuget.org そもそも、動かなくなってた おいおいって感じですが。UWPの画面描画に関するオブジェクトの生成をメインスレッド以外で実行した場合、例外が発生するようになっていま…

LambdicSqlがβ版になりました!

www.nuget.orgやっとβ版になりました。 1.0に向けて仕様は、ほぼ固まったかなー。これもおださんをはじめ、色々助言いただいた方々のおかげです。ありがとうございます!ちなみに織田さんには少し前からNugetのOwerにも入ってもらってます。 SQLをLambdaから…

SQLWorld★大阪#38 に参加してきました。

SQL力を高めるべく、SqlWorld :: SQLWorld★大阪#38に参加してきました! 簡単なものから高度すぎるものまで、レンジの広い問題が出題されました。 で、その中でこんな問題がありました。 友達の人数を抽出するというものです。 で、私はこんなSQLを書きまし…

LambdicSql -主要DBゆるふわ対応-

LambdicSql_α0.0.63をリリースしました。β版間近です! www.nuget.org マルチDB対応 なんと主要6DBで動作確認しています。Surfaceに全部インストールしましたが、意外と入るものですね。(SQLiteはインストール不要) DataBase type 動作確認 SQL Server ○ S…

LambdicSql - EntityFrameworkと仲良くなりました。

EntityFrameworkを使っているときでも、たまにSQLを直に書きたくなる場合がありますよね。そんな時はLambdicSqlを使うと便利です。そして、EntityFrameworkを使っている環境からLambdicSqlを使いやすい工夫を入れました。しかもそれでいてLambdicSql自体はDL…

LambdicSql - TableAttributeとColumnAttributeに対応しました。

LambdicSql_α0.0.53をリリースしました。 www.nuget.org テーブル名とカラム名のルール LambdicSqlのテーブル名とカラム名は、通常は変数名で表します。 public class Staff { //変数名がカラム名になる public int id { get; set; } public string name { g…

LambdicSql - α51 その他

パラメータ名称 @p_0って感じで連番にしていました。折角変数名を使っているのだから、それを変数名に使った方が良いとの意見をいただそのようにしました。 public void ParamName() { var min = 3000; var max = 4000; var query = Db<DB>.Sql(db => Select(new</db>…

LambdicSql - 文字列連携、そして2WaySQL -

LambdicSqlはLambdaでSQLを表現することを目的にしています。でも、やっぱり文字列も使えた方が安心感がありますよね。てわけで文字列を埋め込める機能を追加しました。 文字列を式に変換 こんな感じで文字列を途中に埋めれます。ただ文字列を入れるだけでは…

LambdicSql - 断捨離 O/Rマッパー機能 捨てました。-

LambdicSqlもSQLを実行して、その結果をオブジェクトにマッピングする機能がありました。Dapperよりも便利なところもあって、匿名クラスにマッピングすることもできてました。ではなぜやめたか。 ※Dapperでも匿名クラスにマッピングでる場合もあります。でも…

LambdicSql - 生まれ変わりました -

※注) 以前のブログもβ版に合わせてコードを修正しているので、前のブログ記事と比べても変化は感じられません。LambdicSql_α0.0.51 をリリースしました。コードのほとんどを書き直すほどの破壊的大変更を入れました。まさにRebornなのです! www.nuget.org …

lambdicSql - Queryの自由な組み立て - ③サブクエリ -

サブクエリは前からある機能ですが、おさらいで。 これも、クエリを先に作っておいて、Castで文中に入れ込みます。入れたところで展開されます。 Select句 public void SelectSubQuery() { //moneyの全合計 var sub = Db<DB>.Sql(db=> Select(new { total = Sum(</db>…

lambdicSql - Queryの自由な組み立て - ②Expression単位 -

LambdicSqlではExpression単位で分解、構築できるようにしました。 Castっていうキーワードがポイントです。Sql.Query().ExpressionはISqlExpressionという型を返します。これを文中に埋め込むとその文字列になります。でもISqlExpressionではコンパイル通ら…

lambdicSql - Queryの自由な組み立て - ①句単位 -

Queryの組み立てシリーズです。まずは、クエリ単位で分割、構築する方法です。Concatでクエリを連結できるようにしました。Concatは型に関してわざと緩くしました。使っているDBの型が違っても結合できます。最終的にSQL文字列になったときに意味が通ってい…

lambdicSql - Queryの自由な組み立て -

LambdicSqlα_0.0.40 をリリースしました。 Queryの組み立てに関して仕様追加と、既存の仕様を変更しました。α版なんで、破壊的な変更もバンバンいれます。 www.nuget.org Queryは組み合わせることが重要 以前、おださんからこのような資料を紹介してもらいま…

lambdicSql - CASE式に対応しました -

LabdicSql_α0.0.39をリリースしました。CASEに対応しています。 www.nuget.org 迷いましたがWHENとTHENはC#上ではWhenThenで書くようにしました。それからENDは書かなくても良いようにしました。 SELECT句への合成はサブクエリと同じ書き方で書くようにしま…

LambdicSql -DistinctとAll

α0.0.36をリリースしました。 www.nuget.org DistinctとAll enumで指定できるように変更しました。 Select文 [TestMethod] public void Distinct() { var query = Db<DB>.Sql(db => Select(AggregatePredicate.Distinct, new { id = db.tbl_remuneration.staff_i</db>…

lambdicSql - パフォーマンス改善せねば④ SQLite -

プロファイラで見てわかりやすかったところを対応しました。 www.nuget.orgこっから先は難しいですね。 で、もう少しノイズを減らすためにDBをSQLサーバーからSQLiteに変えました。ファイルアクセスなんで余計なブレはすくないでしょう。ちなみに計測はSurfa…

lambdicSql - パフォーマンス改善せねば ③計測 -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。もう少し詳しく計測してみることにします。 VisualStudioのパフォーマンスプロファイラが便利ですね。 VSTestではイマイチやりにくいのでコンソールアプリでや…

lambdicSql - パフォーマンス改善せねば② -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。 やっぱ、昨日の仕様なし 前回コンパイルを減らすためにパラメータを渡すという仕様にしたのですが、やめます。 www.nuget.org 変数から値を取得するラムダを…

lambdicSql - パフォーマンス改善せねば -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。前回ので、Dapperに完敗を喫したわけですが、ここで勝負を投げるわけにはいかないですね。改善策を考えてみました。 遅いのは、コンパイル 他にも要因はあるか…

LambdicSql - 速度はまだまだでした・・・ -

※この書き方は最新のLambdicSqlとは異なります。速度計測の記録なので以前のままにしております。※@yone64さんと@neueccさんにご指摘いただき、タイトルを含め修正しました。 結果から書くと、負け負けのようですね。 これはパフォーマンス改善を先にやるか…

LambdicSql - α 0.0.14リリース - Nullable 対応

Nullableに対応しました。www.nuget.org public class RemunerationNullable { public int id { get; set; } public int? staff_id { get; set; } public DateTime? payment_date { get; set; } public decimal? money { get; set; } } public class DBNulla…

LambdicSql - α 0.0.13リリース - IS NULL 対応

IS NULL 対応しました。 www.nuget.org最初は IS NULL は何かキーワードを用意して特殊対応にしようと思ってました。int値の時とか面倒ですしね。でも、@yone64さんが、「昔にこの問題に対応したことがある」的なことを言っていたので、やっぱりnullの時に I…

LambdicSql - α 0.0.12リリース - プリペアド対応

GitHub - Codeer-Software/LambdicSql前回のTODOのうちのプリペアドに対応しました。 変数や直値で渡した値は自動でプリペアドに変換されます。 Where句だけでなく他の句でも同様に置き換え処理が実施されます。 ふう、一安心。 今までブログで書いたサンプ…

LambdicSql - TODO 今後の改善ポイント

GitHub - Codeer-Software/LambdicSql私のSQL力の低さを補うべく、SQLServerのMVPのおださんに、色々教えてもらいました。(えらい初心者向けのことから)いや、このシリーズの初回にも書きましたが、本当にSQLはほとんど書いたことがなかったのです。組み込み…

LambdicSql - 機能紹介 - サブクエリ

GitHub - Codeer-Software/LambdicSql前回も少し書きましたが、LambdicSqlはサブクエリを書けます。今回の例もこんなDBが対象です。 //テーブルが二つあるDB public class DB { public Staff tbl_staff { get; set; } public Remuneration tbl_remuneration …

LambdicSql - 機能紹介 - Where

GitHub - Codeer-Software/LambdicSqlWhereです。 私の少ないSQL経験ではプログラムで動的にSQLを組み立てる場合、これが一番面倒でした。なので色々できるように工夫しました。 サブクエリ使えるようにできたときは、めっちゃテンション上がりましたw操作対…

2016 MVP アワードを受賞いたしました!

今年も受賞することができました! これも開発者コミュニティーの皆さまのおかげです。 ジャンルはVisual Studio and Development Technologiesです。 より一層OSSに取り組みます。 もちろん、テスト自動化もより一層やりやすいものにするべく新機能を追加し…

LambdaでSQLを書きたい - ①LambdicSql始めました

文字列でSQL書くのが苦手なのです。 SQL弱者としてはインテリセンスなしでSQL書くの辛いんです。(Friendyでdynamic使わせてるのにって怒られそうですが)コード中に文字列演算がバンバン入るのがイマイチですしね。何とかしたいよなー。 LambdicSql始めまし…

ViewModelをシンプルに書きたい! - ⑦MVVMを考える編 - 本編 -

ViewModelとはViewをモデル化したものである ある人に教えてもらったのですが、その瞬間に色々なことがスッキリしました。ViewModelの役割って様々な主張があるけど、骨子はこれですね。 モデル化とは・・・ 検索したら++C++がかかりました。さすが岩永さん…

ViewModelをシンプルに書きたい! - ⑥MVVMを考える編 - MVナントカ -

基本に帰ってMVVMの話です。そんなMVVM得意ってわけではないですが、自分の中の整理の意味も込めてアウトプットしてみます。このシリーズの⑤までの話もこの考えに基づいています。それからMVナントカに関しては、あくまでWinFormsやWPFなどのリッチクライア…

ViewModelをシンプルに書きたい! - ⑤Delegate→Method接続仕組み実装編 -

前回はこんな感じでViewModelのDelegateとViewのメソッドを接続できるようにしたという内容でした。

ViewModelをシンプルに書きたい! - ④Delegate→Method接続編 -

ViewModelからViewの操作を呼び出したいときあります。メッセージボックスとかメッセージボックスとか。 Messengerは良いものだとは思いますが、個人的にはあんまり好きくない。 以下のように書けるようにしてみました。こんなアプリで ViewModelはこんな感…

ViewModelをシンプルに書きたい! - ③コマンド接続編 -

コマンドはReactiveCommand使えばこんな感じに書けます。シンプルですね。 ishikawa-tatsuya.hatenablog.com でも、Commandも直接メソッドにつなぎたいんですよ。 前回はそれをイベントでつなぎました。今回はコマンドでつなげてみます。 常にCanExecuteがEn…

ViewModelをシンプルに書きたい! - ②イベント接続編 -

はい。この辺からはオレオレな感じになっていきますよー。 イベントですよね。直でViewModelと接続したい。 そういう時は、EventTriggerつかって・・・。それもいいですけど、こんな感じで書きたいなー。 using Reactive.Bindings; using System.Reactive.Li…