CodeOne

【品質と生産性にこだわるシステム開発】 .NET(C#/VB.NET)専門・リモート開…

CodeOne

【品質と生産性にこだわるシステム開発】 .NET(C#/VB.NET)専門・リモート開発歴10年。即日・15分から頼める常駐しないエンジニア。確かな技術で開発チームを手堅くサポートします。 https://codeone.jp/

マガジン

  • ちょっとレアなプログラミング Tips

    .NET(C#/VB.NET)を中心に、珍しめの Tips をご紹介していきます。

  • 何の話ですか?

    わかりません

  • プログラムと美しさ

    プログラミング経験のない方を対象にプログラムについて語る

  • 本の紹介

    刺激をくれた本の紹介

記事一覧

固定された記事

プログラムと美しさ:序章 ―動けばいいのか?―

 コンピュータは優れた計算能力を持っているが、言われなければ何もしない。コンピュータを動かすための命令を記述したものをプログラムという。それを組む作業がプログラ…

CodeOne
5年前
6

なんで「デービー」って言うの?(キリンの首が長い本当の理由)

ソフトウェア業界ではDB(データベース)のことを「デービー」と言いますね。 たまに「ディービー」と正しく発音するのを聞くと、「あ、染まってない人だ」と認識します。 …

CodeOne
1日前

ビルド時間が10倍の工数を奪う

※『「単体テストが面倒くさい」に立ち向かう ―5つの弾丸』のおまけとして追記しようと思ったのですが、少し長くなったので単独記事としました。 現場から実装できた。 …

CodeOne
3年前

コードレビューの指摘から棘をとる言葉(募集中)

いつも使っているテクニックというわけでなく、開発チームの平和に貢献できればと、(もちろん自戒も込めて)今思いついたことです。 やさしさあふれるコメントでのご提案…

CodeOne
3年前

「単体テストが面倒くさい」に立ち向かう ―5つの弾丸

やらなきゃいけない。 でもやる気が起きない。 そんなときがありますね。 特に単体テストは、プロダクションコードの進捗に直接は寄与しませんし、技術的にもチャレンジン…

CodeOne
4年前
4

どうでもいいのかもしれないけど気になっちゃう【単体テスト編】

たいしたことではないですし、テスト結果に影響はありません。 趣味の問題かもしれませんし、私の感性がずれているのかもしれません。 なのでさしてどうということもないの…

CodeOne
4年前

[Entity Framework] LINQ to Entities からデータベース関数を呼び出す(~EF5/EF6/EF Core)

Entity Framework では LINQ to Entities でデータ抽出ができて便利ですが、データベース関数を使いたいケースもあります。 どのような方法が用意されているか、EFバージョ…

CodeOne
4年前
1

[C#] 自動UIテストで遊ぼう:生まれ変わったエッヂのはるかさんがクリスマスイブの予定を読み上げる(WinAppDriver でできること…

祝! Chromium 版 Microsoft Edge 正式リリース(ベータ版向けから書き換えました) 自動UIテストの世界へようこそ 単体テストの自動化はかなり浸透しましたが、UIテスト…

CodeOne
4年前
6

【今さら極める VB6 -Part 2】VB6 でもユニットテスト/モック利用

VB6 でも(簡易的・擬似的ではありますが)ユニットテストを実装することができます。 モックオブジェクトを利用することも可能です。 依存コンポーネント (Depend-On Com…

CodeOne
4年前

【今さら極める VB6 -Part 1】文字列連結の100倍高速化(VB6 版 StringBuilder)

ADODB.Stream クラスの WriteText メソッドを使用することにより、文字列の連結を高速に行うことができます。 手法と技術的背景文字列連携のパフォーマンス String はイミ…

CodeOne
4年前

[VB.NET] 型変換/キャストのまとめ ―どう使い分ければいいのか?

明示的な変換(キャスト)キャスト演算子 C# のキャスト演算子 () に相当するものは VB.NET にはない。 DirectCast 演算子 ・Object 型とほかの型との変換において、VBラ…

CodeOne
4年前
2

[Entity Framework] トランザクションのスコープ制御(EF6:Code First)

Entity Framework のコンテキストにおいて、トランザクションは、既定では SaveChanges() を実行したときに暗黙的に使用されます。 要件によっては、トランザクションのス…

CodeOne
4年前
2

[.NET][消費税] 税込価格から本体価格を逆算する式(四捨五入/切り捨て/切り上げ)

税込価格から本体価格を算出する方法は、消費税の端数処理方式によって異なります。 たとえば税率8%で税込価格が110円の場合、切り上げ方式で端数処理した消費税なら本体価…

CodeOne
4年前

【警鐘】[改元][Windows][.NET] 「令和」対応パッチで画面が横に伸びる、文字が見切れる ― Windows Update 手動更新はちょっと…

※2019年5月15日(日本時間)に自動配信が開始された修正版パッチで、フォント起因の横伸び、見切れ問題は解消されました。 --- 4月26日、「令和」対応パッチが Windows …

CodeOne
5年前
1

[.NET] 単体テストがさくっと書ける!モック化の枠組み(Moq + Autofac)

モックライブラリ Moq とIoCコンテナ Autofac を使用してモック化する例です。 単体テストの基底クラスにモックの生成、検証を抽出することで、Verify 漏れを防ぎ、素早く…

CodeOne
5年前
1

[.NET][改元] 「元年」表記に変わる日付書式が今になって拡大!(フレームワーク別の対策が必要)――マイクロソフト様、重大な…

「元年」表記の既定動作が突然変わった!新元号「令和」が発表されて間もない4月5日、一緒に仕事するエンジニアの方に教えていただき、愕然としました。 2019 年 4 月 3 …

CodeOne
5年前
1
プログラムと美しさ:序章 ―動けばいいのか?―

プログラムと美しさ:序章 ―動けばいいのか?―

 コンピュータは優れた計算能力を持っているが、言われなければ何もしない。コンピュータを動かすための命令を記述したものをプログラムという。それを組む作業がプログラミング、組む人がプログラマである。Windows や Excel、iPhone アプリといったソフトウェアは、どれもプログラムでできている。

 プログラマは、人間とコンピュータの橋渡しとなるプログラミング言語を使って命令を記述する。世の中

もっとみる

なんで「デービー」って言うの?(キリンの首が長い本当の理由)

ソフトウェア業界ではDB(データベース)のことを「デービー」と言いますね。
たまに「ディービー」と正しく発音するのを聞くと、「あ、染まってない人だ」と認識します。

なぜかと若人に聞かれて答えられませんでした。
眠れなくなりそうなので、少しだけ考えてみました。

英文内や製品名にも出てきますので、まずは「DB」自体が和製英語ということはなさそうです。

「データベース」の略だからだろうか。
これは

もっとみる

ビルド時間が10倍の工数を奪う

※『「単体テストが面倒くさい」に立ち向かう ―5つの弾丸』のおまけとして追記しようと思ったのですが、少し長くなったので単独記事としました。

現場から実装できた。
さあ、ビルド!
待たされる。

単体テストまたNG。
直して再試行。
ビルド待たされる。

テストチームから不具合の指摘。
修正した。
ビルド(+単体テスト実行)が終わるまでお待ちください。

改善したいビルド時間が長いと開発のペースが

もっとみる

コードレビューの指摘から棘をとる言葉(募集中)

いつも使っているテクニックというわけでなく、開発チームの平和に貢献できればと、(もちろん自戒も込めて)今思いついたことです。

やさしさあふれるコメントでのご提案を歓迎します。

■間違っているのは私かもしれない系勘違いだったらすみません
実際勘違いのことも(私は)多い。

私もあまり自信はないのですが
信頼性の高いサイトの記載を引いてこうありました、とか続く。

細かく追ってはいないので問題なか

もっとみる

「単体テストが面倒くさい」に立ち向かう ―5つの弾丸

やらなきゃいけない。
でもやる気が起きない。
そんなときがありますね。

特に単体テストは、プロダクションコードの進捗に直接は寄与しませんし、技術的にもチャレンジングなところはありませんから、モチベーションを上げるのに苦労するのも無理はありません。

そこで対処方法を挙げてみました。

リファクタリングする
AAA (Arrange, Act, Assert) の Arrange が面倒で、立ち尽

もっとみる

どうでもいいのかもしれないけど気になっちゃう【単体テスト編】

たいしたことではないですし、テスト結果に影響はありません。
趣味の問題かもしれませんし、私の感性がずれているのかもしれません。
なのでさしてどうということもないのですが、ふと皆さんどう思っているのか気になり、記事にしてみました。

※モックライブラリは Moq を例に記述します。

モックの Setup/Verify ラムダ引数名を m に統一している
ネット上のサンプルでも見かけます。
mock

もっとみる
[Entity Framework] LINQ to Entities からデータベース関数を呼び出す(~EF5/EF6/EF Core)

[Entity Framework] LINQ to Entities からデータベース関数を呼び出す(~EF5/EF6/EF Core)

Entity Framework では LINQ to Entities でデータ抽出ができて便利ですが、データベース関数を使いたいケースもあります。
どのような方法が用意されているか、EFバージョンごとに見ていきましょう。

Entity Framework 4/5
EF5 までの Entity Framework は .NET Framework の一部として提供され、NuGet パッケージで

もっとみる

[C#] 自動UIテストで遊ぼう:生まれ変わったエッヂのはるかさんがクリスマスイブの予定を読み上げる(WinAppDriver でできること/できないこと)

祝! Chromium 版 Microsoft Edge 正式リリース(ベータ版向けから書き換えました)

自動UIテストの世界へようこそ
単体テストの自動化はかなり浸透しましたが、UIテストの自動化は、特にクライアント Windows アプリケーションにおいて、まだあまり活用されていないようです。
プログラム変更のたび、リリースのたびに繰り返されるリグレッションテストで工数削減の威力を発揮します

もっとみる
【今さら極める VB6 -Part 2】VB6 でもユニットテスト/モック利用

【今さら極める VB6 -Part 2】VB6 でもユニットテスト/モック利用

VB6 でも(簡易的・擬似的ではありますが)ユニットテストを実装することができます。
モックオブジェクトを利用することも可能です。

依存コンポーネント (Depend-On Component)として、Part 1 にコードを掲載した VB6 版 StringBuilder クラスを使用しますので、初めにそちらをご覧ください。
ほかに特別なサードパーティコンポーネントは使いません。

手法と技術

もっとみる
【今さら極める VB6 -Part 1】文字列連結の100倍高速化(VB6 版 StringBuilder)

【今さら極める VB6 -Part 1】文字列連結の100倍高速化(VB6 版 StringBuilder)

ADODB.Stream クラスの WriteText メソッドを使用することにより、文字列の連結を高速に行うことができます。

手法と技術的背景文字列連携のパフォーマンス
String はイミュータブル(不変)であり、生成後に値を変更できないため、文字列を連結する際は新たにインスタンスを生成することになります。
String の連結を繰り返すとメモリを消費し、処理速度が大きく低下するため、.NE

もっとみる
[VB.NET] 型変換/キャストのまとめ ―どう使い分ければいいのか?

[VB.NET] 型変換/キャストのまとめ ―どう使い分ければいいのか?

明示的な変換(キャスト)キャスト演算子
C# のキャスト演算子 () に相当するものは VB.NET にはない。

DirectCast 演算子
・Object 型とほかの型との変換において、VBランタイムヘルパーを使用しない分、CType 関数より高速に動作する。
・値型と Object 型の間の変換にはボックス化、ボックス化解除が使われる。異なる型へはボックス化解除できず、暗黙の型互換があって

もっとみる
[Entity Framework] トランザクションのスコープ制御(EF6:Code First)

[Entity Framework] トランザクションのスコープ制御(EF6:Code First)

Entity Framework のコンテキストにおいて、トランザクションは、既定では SaveChanges() を実行したときに暗黙的に使用されます。

要件によっては、トランザクションのスコープを明示的に制御したいケースも出てくるでしょう。
ここではトランザクションの明示的なスコープ制御を EF6 の Code First で行う方法をご紹介します。

※Entity Framework C

もっとみる
[.NET][消費税] 税込価格から本体価格を逆算する式(四捨五入/切り捨て/切り上げ)

[.NET][消費税] 税込価格から本体価格を逆算する式(四捨五入/切り捨て/切り上げ)

税込価格から本体価格を算出する方法は、消費税の端数処理方式によって異なります。
たとえば税率8%で税込価格が110円の場合、切り上げ方式で端数処理した消費税なら本体価格は101円ですが、切り捨て方式で端数処理した消費税なら本体価格は102円です。

以下、端数処理方式別の算出式です。
※rate には、0.05m, 0.08m, 0.10m などの消費税率(正の値)が入ります。

四捨五入方式で端

もっとみる

【警鐘】[改元][Windows][.NET] 「令和」対応パッチで画面が横に伸びる、文字が見切れる ― Windows Update 手動更新はちょっと待った方がいい

※2019年5月15日(日本時間)に自動配信が開始された修正版パッチで、フォント起因の横伸び、見切れ問題は解消されました。

---

4月26日、「令和」対応パッチが Windows Update で配信開始されました。
日本の元号の変更について - KB4469068

現状は手動更新(「更新プログラムのチェック」)または Microsoft Update カタログからのインストールのみで、自

もっとみる
[.NET] 単体テストがさくっと書ける!モック化の枠組み(Moq + Autofac)

[.NET] 単体テストがさくっと書ける!モック化の枠組み(Moq + Autofac)

モックライブラリ Moq とIoCコンテナ Autofac を使用してモック化する例です。
単体テストの基底クラスにモックの生成、検証を抽出することで、Verify 漏れを防ぎ、素早く、すっきりテストコードを書くことができます。

■プロダクションコードAutofac モジュール

ここでは、既定で protected プロパティに注入するように構成します。

internal class Pro

もっとみる

[.NET][改元] 「元年」表記に変わる日付書式が今になって拡大!(フレームワーク別の対策が必要)――マイクロソフト様、重大な変更をしれっとリリースしないで

「元年」表記の既定動作が突然変わった!新元号「令和」が発表されて間もない4月5日、一緒に仕事するエンジニアの方に教えていただき、愕然としました。

2019 年 4 月 3 日 — KB4489192 Windows 10 Version 1809 および Windows Server 2019 用の .NET Framework 3.5 および 4.7.2 の累積的な更新プログラム

書式パター

もっとみる