はじめにWindows環境では、Visual Studioなど特別な開発環境を用意しなくても、標準搭載されている PowerShell 5.x と .NET Framework 4.x を使って簡単にGUIアプリケーションを作ることができる。 例えば、業務ツールにちょっとした入力フォームやボタンを追加したい場合、PowerShellでWinFormsやWPFを利用すれば数行のコードで実現可能。 さらに、同梱されている csc.exe(C#コンパイラ) を使えば、C#のコードを書く必要はあるがEXE化 することも可能。本記事では、 PowerShell + WinForms PowerShell + WPF C#をcsc.exeでコンパイル(WinForms版) C#をPowerShellでインプロセス実行(Add-Type) の順で、「Windows標準だけ」で完結するGUI作成方法

世の中には多くの C# に関する誤解が蔓延っています。 偏見にも満ちています。 そして技術的に正しい批判ではなく、根本的に技術的に誤った批判ばかりで正直悲しい。技術的に正しい形の批判なら「お、そうだな。そしてそれの解決策はですねぇ...(ニヤニヤ)」となるのですが...。 そして C# 界隈から一歩出ると、「え、C# で作ってるの!?なんで??」とか言われる事が非常に多い始末。 C# 大好きマンとしては非常に嘆かわしい。 嘆かわしい限りなので、ここでなぜ C# を私が好むか、そして何故ソフトウェアの開発に向いているかを語りたいと思います。そして誤解が解けたら嬉しい。ついでに C# を書きたいと思ってくれたら嬉しい。 想定読者 前書きという名の予防線 事前知識: C# と .NET C# はパフォーマンスの高い言語 C# はビルドも高速 C# はオープンソースかつクロスプラットフォーム 言

この記事は「初心者だった時に知りたかったな…」っていう普通のC#入門だと教えてくれないことが書いてあります。 なので入門記事というより、C#初心者にはちょっと難しい内容もあります! C#の特徴的なところ C#は変化が早い💨 最近は毎年メジャーアップデート 2019: C# 8.0 2020: C# 9.0 2021: C# 10.02022: C# 11.02023: C# 12.0 2024: C# 13.0 新記法、新しい書き方がモリモリ入る しかも新しい書き方の方が便利で性能が良い(ことが多い) 少し前のC#を知ってる人からするともう別物 解説 C#は6.0までゆっくりな変化だったんですが… 7.0から様子が変わって8.0以降は毎年変わるようになりました。 ↓こちらのスライドの7ページから数枚が参考になります! あんまり変わらないバージョンもありますが、特に大きなところだと,

私は日付時刻の処理が大好きです。 タイムゾーンの問題でデータ抽出が9時間分漏れていたとか、朝9時の始業前のログが昨日付けになってしまっていたなんていう問題が起こると喜んじゃうタイプ。 そんな私にとって、各プログラミング言語が標準で持っている日付時刻型クラスにはそれぞれ思うところがあり、今日はちょっとその品評会をしてみたいと思います。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar2023の2日目です。 至高の日付時刻型を持つ言語、BigQuerySQL 不足はないが蛇足、Java 8 日付時刻で画竜点睛を欠いたC# C#よりややまし、Python 型は良い構成、なのに命名と処理関数で損しているPostgreSQL まとめ We ar

はじめに 登壇版 Taskの本質 C# のイテレータ async/await Compiler Transform ExecutionContextbuilder.Start() の重要性 IAsyncStateMachine.MoveNext おわりに はじめに C#er は呼吸するように使っている async/await。 そんな async/await について、先日 Stephen Toub 氏 (.NET の中の人。中心人物の一人。) が How Async/Await Really Works in C# という非常に面白い記事を投稿していました。 この記事では Stephen 氏の記事をベースに、C# において async/await は実際どうやって動いてるの?というお話をしていきます。 以前に C#での非同期メソッドの分析。 という翻訳記事を書いたのですが、元になった記

asyncとawaitの由来を調べたところ, asyncとawaitのaは関係なかったことがわかりました,英語はクソ 背景 「awaitってなんだよ」 という気持ちがある日寝てる私に降ってきました. asyncの由来 asyncはsynchronize(同期する), synchronization(同期すること)を省略したsyncに, ギリシャ語由来の接頭辞a-をくっつけて, async(同期しない)となります. また、英語の〈a-〉という接頭辞はいろいろな意味がありますが、その中の一つに、ギリシャ語の〈a-〉(母音またはhの前ではan-)に由来して、「無」「ない」という否定を表すものがあります。 第29回 食べることと話すこと (2) - 語源でゴキゲン prefix meaning "not, without," fromGreek Online Etymology Diction
http://lise-sophia.net/kktm/Essay/xx-shi.htm このエッセイが面白かった。動詞に-erや-orをつけるような名詞は「◯◯子」「◯◯機」「◯◯器」などといった接尾辞がつけられる。特に抽象的な概念などの場合には「子」がつけられがち。例えばoperatorを「演算子」と呼んだりidentifierを「識別子」と呼んだりするように、と。 プログラミングの世界ではまさにそういう「抽象的な概念」であるが-erや-orがついた名詞というのはたくさんあるような気がする。どうなっているだろう? constructorについては、「構成子」という訳語があるかな、と思ったが、「構築子」という用語もあるようだ。どちらも現存するらしい(前者は例えばJIS規格のFortran、後者はJIS規格のC#で使われている)。さてFortranのことは全く詳しくないが、C#くらいモダン

async/awaitの鬼門の一つとして、適切なキャンセル処理が挙げられます。別に基本的にはそんな難しいことではなく、CancellationTokenSourceを作る、CanellationTokenを渡す、OperationCanceledExceptionをハンドリングする。というだけの話です。けれど、Tokenに手動でコールバックをRegisterしたときとか、渡す口が空いてないものに無理やりなんとかするときとか、タイムアウトに使った場合の始末とか、ちょっと気の利いた処理をしたいような場面もあり、そうした時にどうすれば良いのか悩むこともあります。 こういうのはパターンと対応さえ覚えてしまえばいい話でもあるので、今回はAlterNatsの実装時に直面したパターンから、「外部キャンセル・タイムアウト・大元のDispose」が複合された状況での処理の記述方法と、適切な例外処理、そして最
Cygamesから4/1にリリースされたプリコネ!グランドマスターズのサーバーサイドとインフラ開発をCysharpが開発協力しました。リアルタイム通信を含むオートバトラー系のゲームです。 Cysharpはサーバー側のアーキテクチャ設計と基盤実装、クラウドインフラ構築、一部サーバーロジック実装を担いました。リアルタイム通信部分だけではなくてAPIサーバーからマッチメイキング、インフラまで、構成されるあらゆる要素がC#で作られています! クライアント (Unity)API サーバー(MagicOnion) バトルエンジンサーバー (リアルタイム通信; MagicOnion,LogicLooper) マッチメイキングサーバー (リアルタイム通信; MagicOnion) バッチ(ConsoleAppFramework) デバッグ機能サーバー (Web;Blazor) 管理画面サーバー (W
C# Advent Calendar 2021の参加記事となっています。去年は2個エントリーしたあげく、1個すっぽかした(!)という有様だったので、今年は反省してちゃんと書きます。スクレイピングに関しては10年前にC#でスクレイピング:HTMLパース(Linq toHtml)のためのSGMLReader利用法という記事でSGMLReaderを使ったやり方を紹介していたのですが、10年前ですよ、10年前!さすがにもう古臭くて、現在ではもっとずっと効率的に簡単にできるようになってます。 今回メインで使うのはAngleSharpというライブラリです。AngleSharp自体は2015年ぐらいからもう既に定番ライブラリとして、日本でも紹介記事が幾つかあります。が、いまいち踏み込んで書かれているものがない気がするので、今回はもう少しがっつりと紹介していきたいと思っています。それと直近Visual
この記事は Qiita C# Advent Calendar 2021 の5日目の記事です。 はじめに C# で async/await が登場してからずいぶんと時間がたち、モダンな C# においてはほぼ必須となりました。Unity でも UniTask などのライブラリもあり、簡単に非同期処理が書けます。この記事では C# での非同期処理の歴史にも触れつつ async/await の動作原理について書きます。Unity C# の話を書いた方が需要が高そうなのでUnity および UniTask を前提にした説明とコードが多く出てきますが、async/await は C# の言語機能であるため、動作原理自体は .NET でも同じです。非Unity の文脈では適宜読み替えてください。 また、詳細を完璧に説明するよりもわかりやすさを重視したため、一部正確さを欠いた説明をしています。ご了承

DIはインタフェース定義しなくても十分実用的だし、むしろそっちの方が本質だよ、という話をします。C#や.NETを使っていますが、それに限らず普遍的な内容です。 インタフェースと実装に分けるとか無理。DIなど不要! 中堅社員のA氏は、**「DIっていちいち実装とインタフェース分けないとダメなんでしょ?。さすがにやってられんわ」**と言って頑なにDIを導入しようとしません。 DIはテスタビリティと併せて語られることが多かった為か、A氏は「注入するクラスは基本的にインタフェース定義しましょう」という記事ばかりを読んでいたのです。 インタフェースと実装を分けるとは、例えば次のような事です。 services.AddScoped<IMessageStore, MessageStore>(); public interface IMessageStore { string GetMessage(str

あまりシェルスクリプトを書かない私なのですが(小物でもなんでも書き捨てC#で書くスタイル)、CI だの .NET Core だのなんなので、全く書かないというわけにもいかない昨今です。まぁしかしcmdは嫌だし今更(?)PowerShellもなぁという感じもあり、bashねぇ、とかブツブツ言いながらしょっぱいスクリプトを書く羽目になるわけです。 そこに颯爽と現れたのがgoogle/zx。素敵そうだなーと思いつつJavaScriptを日常的に書くわけでもないのでスルーしてたのですが、こないだもちょっと複雑なシェルスクリプトをJavaScriptで書くで紹介されていて、なるほど色物じゃなくて便利なのか、そうだよね便利だよね!と思い、私は日常的にC#を書くので、C#だったら便利だな、同じ感じで書けるなら、と、思い至ったのでした。 というかまぁzx見て思ったのが、これぐらいの内部DSL、C#でもい
マイクロソフト「.NET 6」初めてのプレビュー版リリース。Xamarin統合、マルチプラットフォームUI、Blazorでデスクトップアプリ、Apple M1ネイティブなど マイクロソフトはオープンソースで開発されているフレームワーク「.NET」の次バージョン「.NET 6」の最初のプレビュー版「.NET 6 Preview1」をリリースしたと発表しました。 Announcing .NET 6 Preview 1 https://t.co/z0mkcA6c0m — .NET (@dotnet) February 17, 2021 「.NET」は、Windowsアプリケーションのためのフレームワークとして登場した「.NET Framework」と、その後に登場したMacやLinuxに対応するオープンソースの「.NET Core」を統合し、その後継となったフレームワークです。 .NETの最初の

UniTask v2も2.0.30まで到達し、いい加減そろそろ安定したと言える頃合いです(ほんと!)。GitHub Star数も1000を超えて、準スタンダードとして安心して使ってもらえるレベルまで到達したと思うので、基盤部分から入れ込んで設計するとこんなことができますよ、という一例を出してみます。UnityWebRequestはかなりプリミティブな代物で、そのまま使うよりかはある程度はアプリケーションに沿ったラッパーを被せることがほとんどなのではないかと思います。しかし、ライブラリ単体でアプリケーションの要求を全て満たそうとするとヘヴィになりすぎたり、というかそもそもアプリケーション固有の要求には絶対に答えられない。というわけで、理想的なラッパーというのは、それ自身が極力軽量で、拡張性を持たせたプラガブルな仕組みが用意されているものということになります。プラガブルな拡張性がないと、例え
Windowsで一時的にプロキシ自動設定ファイル(プロキシ自動構成スクリプト、pacファイル)を利用したいとき、 プロキシ自動設定ファイルを配信するHTTPサーバーを立てなければいけない。(以前はローカルファイルが使えたが、Windows 10Creators Updateから使えなくなった。)Windowsの「プロキシ」設定画面で「スクリプトのアドレス」を指定しなければいけない。 という手間があります。 そこで、プロキシ自動設定ファイルを配信するHTTPサーバーを立ち上げ、そのURLをWindowsのプロキシ設定に指定するPowerShellスクリプトを書きました。 上記リンク先のスクリプトをローカルに保存し、Explorerでスクリプトファイルのコンテキストメニューから「PowerShell で実行」を選択すると、コンソールウィンドウが開き、スクリプト中に記述されたプロキシ自動設定
Build Modern .NET Web Apps in C# and XAML, effortlesslyWindows,Android,Mac,GoogleChrome, Firefox, Safari… –Build Once, Run Everywhere Discover the future of .NET web apps with OpenSilver. Our latest 3.2 release offers MAUI Hybrid integration, anAI-enhanced drag-and-dropUI designer, unmatched compatibility withMicrosoft Silverlight, and extensive WPF support. Code in C#, VB, or F#, and le

DockerとRazer Synapse 3、全く関係のない2つのアプリケーションの一方しか起動できないバグの秘密Docker forWindows を動かしていると Razer Synapse 3 が起動しなくなり、Razer Synapse 3 を動かしているとDocker forWindows を起動できない、という現象が発生していたそうです。Docker forWindows はDocker社公式のWindows Pro 用Docker環境、Razer Synapse 3 はRazer 社のゲーミングマウスの設定ツールです。接点の無さそうなこの二つのアプリがなぜ? この不思議な現象の原因を見つけた@Foone さんのツイートがこちら。 https://twitter.com/Foone/status/1229641258370355200Docker for W
マイクロソフトは2月24日、オンラインイベント「Visual Studio forMac: Refresh();」を開催し、Mac版のVisual Studioである「Visual Studio forMac」のロードマップなどを解説しました。 「Visual Studio forMac」はもともとWindows用のVisual Studioの移植ではなく、MacでiOSやAndroidなどのアプリケーションを開発するツール「Xamarin Studio」をベースにした製品です。 そのためIntelliSenseを備えたコードエディタやGit対応、ビルドツールにMSBuildを搭載するなど、Visual Studioの基本的な機能を踏襲してはいましたが、Windows版Visual Studioの機能とは開きがありました。 しかし現在ではVisual Studioと同等のコードエディ

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く