CodeOne

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

CodeOne

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

マガジン

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

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

  • 何の話ですか?

    わかりません

  • プログラムと美しさ

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

  • 本の紹介

    刺激をくれた本の紹介

最近の記事

  • 固定された記事

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

 コンピュータは優れた計算能力を持っているが、言われなければ何もしない。コンピュータを動かすための命令を記述したものをプログラムという。それを組む作業がプログラミング、組む人がプログラマである。Windows や Excel、iPhone アプリといったソフトウェアは、どれもプログラムでできている。  プログラマは、人間とコンピュータの橋渡しとなるプログラミング言語を使って命令を記述する。世の中にはいくつものプログラミング言語があるが、簡単な英単語で構成されるのが一般的であ

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

      ※『「単体テストが面倒くさい」に立ち向かう ―5つの弾丸』のおまけとして追記しようと思ったのですが、少し長くなったので単独記事としました。 現場から実装できた。 さあ、ビルド! 待たされる。 単体テストまたNG。 直して再試行。 ビルド待たされる。 テストチームから不具合の指摘。 修正した。 ビルド(+単体テスト実行)が終わるまでお待ちください。 改善したいビルド時間が長いと開発のペースが乱されます。 集中力、意欲が削がれます。 戻すのに時間がかかります。 できればテ

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

        いつも使っているテクニックというわけでなく、開発チームの平和に貢献できればと、(もちろん自戒も込めて)今思いついたことです。 やさしさあふれるコメントでのご提案を歓迎します。 ■間違っているのは私かもしれない系勘違いだったらすみません 実際勘違いのことも(私は)多い。 私もあまり自信はないのですが 信頼性の高いサイトの記載を引いてこうありました、とか続く。 細かく追ってはいないので問題なかったらすみません コードレビューにかけられる時間は限られている。 全レビューアが

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

          やらなきゃいけない。 でもやる気が起きない。 そんなときがありますね。 特に単体テストは、プロダクションコードの進捗に直接は寄与しませんし、技術的にもチャレンジングなところはありませんから、モチベーションを上げるのに苦労するのも無理はありません。 そこで対処方法を挙げてみました。 リファクタリングする AAA (Arrange, Act, Assert) の Arrange が面倒で、立ち尽くすことがあります。 チャンスです。 面倒なのはメソッドが複雑な証、リファクタ

        • 固定された記事

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

        マガジン

        • ちょっとレアなプログラミング Tips
          29本
        • 何の話ですか?
          1本
        • プログラムと美しさ
          10本
        • 本の紹介
          1本

        記事

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

          たいしたことではないですし、テスト結果に影響はありません。 趣味の問題かもしれませんし、私の感性がずれているのかもしれません。 なのでさしてどうということもないのですが、ふと皆さんどう思っているのか気になり、記事にしてみました。 ※モックライブラリは Moq を例に記述します。 モックの Setup/Verify ラムダ引数名を m に統一している ネット上のサンプルでも見かけます。 mock の m だと思うんですが、入力引数の型は Mock<T> でなく、中身の T

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

          [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 パッケージで拡張されていました。 System.Data.Objects.EntityFu

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

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

          祝! Chromium 版 Microsoft Edge 正式リリース(ベータ版向けから書き換えました) 自動UIテストの世界へようこそ 単体テストの自動化はかなり浸透しましたが、UIテストの自動化は、特にクライアント Windows アプリケーションにおいて、まだあまり活用されていないようです。 プログラム変更のたび、リリースのたびに繰り返されるリグレッションテストで工数削減の威力を発揮しますので、今まで触れる機会のなかった方も、楽しみながら導入を検討してみてはいかがでし

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

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

          VB6 でも(簡易的・擬似的ではありますが)ユニットテストを実装することができます。 モックオブジェクトを利用することも可能です。 依存コンポーネント (Depend-On Component)として、Part 1 にコードを掲載した VB6 版 StringBuilder クラスを使用しますので、初めにそちらをご覧ください。 ほかに特別なサードパーティコンポーネントは使いません。 手法と技術的背景ユニットテスト 以下の手順でユニットテストを実装・実行できます。 テスト

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

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

          ADODB.Stream クラスの WriteText メソッドを使用することにより、文字列の連結を高速に行うことができます。 手法と技術的背景文字列連携のパフォーマンス String はイミュータブル(不変)であり、生成後に値を変更できないため、文字列を連結する際は新たにインスタンスを生成することになります。 String の連結を繰り返すとメモリを消費し、処理速度が大きく低下するため、.NET では変更可能な文字列クラス StringBuilder の使用が推奨されてい

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

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

          明示的な変換(キャスト)キャスト演算子 C# のキャスト演算子 () に相当するものは VB.NET にはない。 DirectCast 演算子 ・Object 型とほかの型との変換において、VBランタイムヘルパーを使用しない分、CType 関数より高速に動作する。 ・値型と Object 型の間の変換にはボックス化、ボックス化解除が使われる。異なる型へはボックス化解除できず、暗黙の型互換があっても InvalidCastException が発生する。 ・実行時の型が変更後

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

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

          Entity Framework のコンテキストにおいて、トランザクションは、既定では SaveChanges() を実行したときに暗黙的に使用されます。 要件によっては、トランザクションのスコープを明示的に制御したいケースも出てくるでしょう。 ここではトランザクションの明示的なスコープ制御を EF6 の Code First で行う方法をご紹介します。 ※Entity Framework Core でのトランザクション制御については Microsoft Docs で詳し

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

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

          税込価格から本体価格を算出する方法は、消費税の端数処理方式によって異なります。 たとえば税率8%で税込価格が110円の場合、切り上げ方式で端数処理した消費税なら本体価格は101円ですが、切り捨て方式で端数処理した消費税なら本体価格は102円です。 以下、端数処理方式別の算出式です。 ※rate には、0.05m, 0.08m, 0.10m などの消費税率(正の値)が入ります。 四捨五入方式で端数処理した税込価格 → 本体価格C# Math.Ceiling((priceW

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

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

          ※2019年5月15日(日本時間)に自動配信が開始された修正版パッチで、フォント起因の横伸び、見切れ問題は解消されました。 --- 4月26日、「令和」対応パッチが Windows Update で配信開始されました。 日本の元号の変更について - KB4469068 現状は手動更新(「更新プログラムのチェック」)または Microsoft Update カタログからのインストールのみで、自動更新への反映は来月半ば頃と見られています。 また、Windows 10 / S

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

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

          モックライブラリ Moq とIoCコンテナ Autofac を使用してモック化する例です。 単体テストの基底クラスにモックの生成、検証を抽出することで、Verify 漏れを防ぎ、素早く、すっきりテストコードを書くことができます。 ■プロダクションコードAutofac モジュール ここでは、既定で protected プロパティに注入するように構成します。 internal class ProtectedPropertyInjectionModule : Autofac.

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

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

          「元年」表記の既定動作が突然変わった!新元号「令和」が発表されて間もない4月5日、一緒に仕事するエンジニアの方に教えていただき、愕然としました。 2019 年 4 月 3 日 — KB4489192 Windows 10 Version 1809 および Windows Server 2019 用の .NET Framework 3.5 および 4.7.2 の累積的な更新プログラム 書式パターンに "年" の文字を囲む半角の引用符が含まれているかいないかに関係なく、1 年

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

          [.NET] コンストラクタより先にメソッドが実行されてしまうからくり――を解き明かすために派生クラスのインスタンス生成過程を追跡する

          .NET では、コンストラクタから仮想メソッドを呼び出すと、派生型コンストラクタが処理されていない状態でオーバーライドメソッドが実行されてしまいます。 例として、基底クラス Base と 派生クラス Derived があるとします。 (括弧付き数字は実行される順番です) // 基底クラスclass Base{ private static bool baseStaticFieldInitialized = ConsoleOut("(1) 基底型静的フィールドの初期化"

          [.NET] コンストラクタより先にメソッドが実行されてしまうからくり――を解き明かすために派生クラスのインスタンス生成過程を追跡する