はじめに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# はオープンソースかつクロスプラットフォーム 言

Herokuが.NETを正式サポート。C#やVisual Basicなどで開発された.NETアプリケーションを簡単にデプロイ PaaS(Platform as a Service)を提供するHerokuは、マイクロソフトのアプリケーションフレームワークである.NETを正式にサポートしたと発表しました。 これによりC#、F#、Visual Basicなどで開発された.NETアプリケーション、ASP.NET CoreやBlazorなどの.NET上のフレームワークで開発されたアプリケーションなどが、Herokuへ簡単にデプロイし、テスト環境や本番環境として利用できるようになります。 Today we’re thrilled to announce that #dotNET support on #Heroku is now GA! We’re thankful to all of our bet

PowerShellに関しては、2021年に1回まとめたのだが、あれから3年も経過したので最新情報も含めて、簡単に解説したい。なお、それぞれのこれまでの経緯などは、過去記事に記載しているので参考にしてほしい。 ●あらためて「PowerShell」の現状と登場後の経緯を整理する https://ascii.jp/elem/000/004/052/4052789/ 結論から言えば、PowerShellには、Windowsに同梱されている「Windows PowerShell」と、ユーザーがインストールする必要がある「PowerShell」がある。コマンドラインを使う頻度が高いようならば、最新のPowerShellをインストール、そうでなければWindows PowerShellで十分である。 PowerShellのインストーラーなどに表示される奇妙な人物イラストを見たことがある人もいるだろう。

この記事は「初心者だった時に知りたかったな…」っていう普通の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ページから数枚が参考になります! あんまり変わらないバージョンもありますが、特に大きなところだと,

はじめに 登壇版 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
マイクロソフト、「.NET 7」にDockerコンテナイメージ生成機能を搭載、Dockerファイル不要に これまで.NETアプリケーションをDockerコンテナ化するには、Dockerコンテナイメージの生成に必要なファイルを記述したDockerファイルを作成し、ビルドツールを用いて生成する必要がありました。 新たに.NET 7で搭載されるDockerコンテナイメージの生成機能ではDockerファイルの作成などは不要で、標準のdotnetコマンドを実行することで簡単にDockerコンテナイメージが生成されるようになります。Linux版のDockerイメージ生成に対応、今後Windows版の開発も進める 下記はマイクロソフトが紹介した、.NET 7を用いてDockerコンテナイメージを生成し、実行するまでのコマンドのサンプルです(一部横幅が足りなくて改行されているコマンドがあります)。これだ

Xamarinのサポートは2024年5月1日で終了。マイクロソフトが.NET MAUI関連のロードマップを示す マイクロソフトは8月9日にオンラインイベント「.NET Conf Focus on MAUI」を開催し、.NET MAUIが今後.NETのメジャーバージョンアップと同時にバージョンアップしていくこと、そしてXamarinのサポートが2024年5月1日で終了することなど、今後のロードマップを示しました。 今後の.NET MAUIは.NETとともにリリース .NET MAUIはシングルコードベースでWindows、macOS、iOS、Androidのユーザーインターフェイスを構築できるフレームワークです。今年の5月にバージョン1.0となり正式リリースされました。 参考:.NET MAUIがバージョン1.0に到達。C#/.NETのシングルコードベースでWin/Mac/iOS/Andro

Ubuntuが.NET 6/ASP.NETをネイティブサポートすると発表。最適化されたコンテナイメージをCanonicalが配布開始 マイクロソフトとCanonicalは、Linuxの代表的なディストリビューションの1つであるUbuntuが.NET 6をネイティブにサポートすると発表しました(マイクロソフトの発表、Canonicalの発表)。 Canonicalはパッケージマネージャやシェルなどを省いて徹底的にスリム化し、.NET 6とASP.NETランタイムに最適化したUbuntu 22.04 LTSのコンテナイメージの配布を開始します。またUbuntu 22.04 LTSのホストOSでは「apt install dotnet6」コマンド一発で.NET 6のインストールが可能になります。 @Microsoft and Canonical announce native .NET avai

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」の話をしたので(「あらためて「.NET」について整理する」)、ついでと言ってはなんだが、今回はPowerShellについても経緯と現状をまとめてみることにする。 2005年9月に米国で開催されたMicrosoftの開発者向けイベントProfessional Developers Conferenceで発表されたMonad。これが後にPowerShellと呼ばれるようになる。当時は、スクリプト言語として開発が進んでいた 例によって、また用語の話からで恐縮だが、「PowerShell」には「Windows PowerShell」と「PowerShell Core」があり、「PowerShell Core」は、Ver.7.0から「PowerShell 7」という名称が正式になった。 基本的に「Windows PowerShell」はWindowsに付属している「PowerSh

そのときの文脈から何を指すか判断する必要がある 「.NET」という言葉 前回Project Reunionの話をしたので(「UWPとデスクトップアプリの統合を試みる「Project Reunion」のプレビュー版が登場する」)、ここであらためて「.NET」についてまとめておきたい。 .NET Coreのマスコット「dotnet bot」。ちょっと「かわいさ」が足りない感じだが、githubの登録ユーザーでコードをコミットしている(https://github.com/dotnet-bot より引用)Windows関係で「.NETなんとか」という言葉を聞いたことがあるだろう。「.NET」とは、Microsoftが開発・提唱した「アプリケーションの実行環境」である。実行環境とは少し抽象的だが、API(ApplicationProgramming Interface)やライブラリなどと呼ばれ

マイクロソフト「.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の最初の

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