C# 11 の新機能をいくつか試してみました C# 11 で導入された新機能をいくつか試してみました。 詳細は以下のMicrosoftによる解説をご確認ください。 生文字列リテラル C# 11 の中でも個人的な目玉機能です。 3つ以上の二重引用符(""") で囲むことで、改行等を含む文字列をより自然に記述することが出来ます。 逐語的識別子(@) を付与した文字列リテラルと似ていますが、インデントを崩さずにより自然に記述できるようになりました。
![C# 11 の新機能をいくつか試してみました - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/1168a627a6ba7d3fade7a691cb387dfc75683e87/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9QyUyMyUyMDExJTIwJUUzJTgxJUFFJUU2JTk2JUIwJUU2JUE5JTlGJUU4JTgzJUJEJUUzJTgyJTkyJUUzJTgxJTg0JUUzJTgxJThGJUUzJTgxJUE0JUUzJTgxJThCJUU4JUE5JUE2JUUzJTgxJTk3JUUzJTgxJUE2JUUzJTgxJUJGJUUzJTgxJUJFJUUzJTgxJTk3JUUzJTgxJTlGJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yZWU3NjVmZDNiNTFiY2ZiZWMyMDVlZjI5ZGQwNzE3NA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwaGFydWthX2tvdGFuaSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTMyJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MmUyNjgxYmEzODM3ZDAzNDUwOGM1OWM2ZDQ4YmYwNDc%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D1a70d435b84a2d08029e23653799d3c0)
C# 11 の新機能をいくつか試してみました C# 11 で導入された新機能をいくつか試してみました。 詳細は以下のMicrosoftによる解説をご確認ください。 生文字列リテラル C# 11 の中でも個人的な目玉機能です。 3つ以上の二重引用符(""") で囲むことで、改行等を含む文字列をより自然に記述することが出来ます。 逐語的識別子(@) を付与した文字列リテラルと似ていますが、インデントを崩さずにより自然に記述できるようになりました。
明日使えない小ネタ記事です。 C# 10 から文字列補間の $"" 構文が独自拡張可能になっています。 これはパターンベースになっており、特定の条件を満たす型を書くことで動作します。 本記事ではまともな使い方やメリットについては解説しません。 まともな使い方や実装方法は公式ドキュメントを見てください。 これをハックして、文字列補間前の文字列を取得してみます。 以下のような型を作ります。 using System.Runtime.CompilerServices; [InterpolatedStringHandler] public readonly struct NotInterpolation { public string Value { get; } public NotInterpolation( int literalLength, int formattedCount, [Ca
12月5日(月)に、テスト駆動開発の第一人者であるt-wadaさんをお呼びして、社内講演イベント「組織に自動テストを書く文化を根付かせる戦略と戦術(2022冬バージョン)」を開催しました。 今回、私はこのイベントを企画し、実現にこぎつけることができました。本記事は、その経緯や感想をまとめたものです。 企画のきっかけ t-wadaさんには、昨年と一昨年にも社内講演をしてもらっています。2年前には「エンジニアとしてこの先生きのこるために」、1年前には「質とスピード ~ソフトウェア開発の 典型的な誤解 を解く~」を題材としていました。 前回の流れは、下記の記事にて紹介されています。 これらの講演の成果もあり、社内ではエンジニア教育や内部品質に対する意識が向上していました。しかし、具体的な戦略や戦術に関しては、まだまだ課題が残っていると感じており、その解決の一環として企画しました。 ・・・というの
技術者はよく、実装可否の問い合わせに対して本当はやりたくない・すべきでないと思っているのにやればできることだからと「技術的には可能です」と答えてしまいハマる⋯って本当ですか? 私は最低でもここ10年は「技術的には可能です」と発言した記憶がありません。なぜそう言うことがないかというと、可否の問い合わせを受けた時点で次のようなことを考えてしまうからです。 運用は回る? 人力操作が絡むフローがあるけど利用数が増えたときにちゃんとスケールする? 休日深夜対応が必要になりそうだけど要員と人件費コストは確保できてる? カスタマーサポート対応激増しそうだけど(以下同文 誤操作があったりしてデータの修正依頼が来たときに訂正しようがない要件っぽいけど大丈夫? エンジニアがDB直操作対応するサービスメニューが存在するけど事故リスク、工数コスト、今後の開発停滞リスクは織り込み済み? 事故の際の責任はエンジニアに
C#(.NET Core 3.1, .NET 6)のランタイム上のシステムタイムゾーンを置き換えたい(TimeZoneInfo.LocalがUTCを返すようにしたい)C# 要約 Linuxの場合は、環境変数TZ=Etc/UTCとして実行するとUTC時間として実行できます。 Windowsの場合、環境変数では変更できません。システム日時をGMTなどUTC相当のタイムゾーンにするのが正攻法です。邪道な方法としてTimeZoneInfo.Localで使う値をリフレクションを使って無理矢理UTC時間に置き換える方法があります。ただし、TimeZoneInfo.Utcをそのまま代入せず、TimeZoneInfo.CreateCustomTimeZoneを使ってUTCタイムゾーンの複製を作ってから置き換えましょう。そうしないと、TimeZoneInfo.ConvertTimeで任意のタイムゾーン値に変
わたしは未だに自分が「仕事ができない」感がある。いや、たぶん思い込みじゃなくて、本当にそうだと思う。周りと比べても意味はないのだが、明らかにプログラミングのスピードが遅いし、ソリューションや思考の精緻さに欠ける。アメリカのテックカンパニーの人員削減が盛んだしいつ首になってもおかしくないと思う。 「向いていない」エンジニアへのあこがれアメリカで自分がしたかったことは、今度こそ胸を張って「エンジニアです」といえるようになること。何かを作れる人間になること。これは今までの人生で一度もかなっていないことだ。だから、正直なところ「向いていない」と自覚している。 だから、自分と一緒に働いているVincentに聞いてみた。彼は私よりずっと若いけど仕事をしっかりできる。私よりずっとプログラミングも素早いしロジックをよく覚えているし、複雑なリファクタリングもこなせる。 同僚の要領を得ない回答 彼にどうしたら
日本語版を公開 – 法律専門家のためのWebAssembly : ライセンス コンプライアンスにおける現在のパラメータを探る 本日、オープンソース ライセンスコンプライアンスの第一人者Armijn Hemel氏 (MSc, Tjaldur Software Governance Solutions) によるレポート「WebAssembly (Wasm) for Legal Professionals : Exploring Current Parameters in License Compliance」の日本語版「法律専門家のためのWebAssembly : ライセンス コンプライアンスにおける現在のパラメータを探る」が公開されました。 WebAssemblyは、現在注目を集めている技術です。インターネット上のWebAssemblyドキュメントは、主に開発者を対象としており、その使用方法
「Web3」は巨大企業の独占支配を変えられるのか 大手IT企業による「支配と隷従」に対抗しようという動きが、二〇二〇年代になって活発になってきた。それが「Web3(ウェブ3)」と呼ばれるムーブメントである。ウェブ3はインターネットがふたたび「支配と隷従」へと回帰してきていることに対して、「自由」へと揺り戻そうという思想を持っている。 ウェブ3について、できるだけわかりやすく説明していこう。ウェブ3は、ビットコインで有名な技術、ブロックチェーンを中心に考えられている新たなインターネットである。 ブロックチェーンというのは、ごく単純化して説明すると、「あらゆる取引が記録されている台帳」である。そしてこの台帳は、GAFAMのようなビッグテックが独占所有しているのではない。ビッグテックのサーバーに保存されているのではない。そうではなく、インターネットで相互につながった無数のコンピューターに、同時に
この記事はEngineering Management Advent Calendar 2022の7日目です. 今はエンジニアリングマネージャ(EM)としてエンジニアリングマネジメントの4領域(プロダクト・プロジェクト・テクノロジ・ピープル)すべてを見ていますが, それ以前は長い間テックリードをやっていました. その経験を活かして, 最近は後進を育ててテックリードあるいは「弱いEM」*1をできる人材を増やそうとしています(これ自体がピープルマネジメントの一環ですね). テックリードを育てるためにやっていることの全容を詳細に書くと本が1冊書けるくらいになってしまうと思うので, その中でも再利用可能そうな(と言うより再利用可能にしたいと目論んでいる)「テックリード養成講座」について紹介したいと思います. Memeplex.appで生成した, テックなリードが養成されるイメージ 経緯 僕自身は,
タイムラインに流れていた『もう発注側企業に要件定義能力はないので、要件定義を専門でやる技術者(Requirement Engineer)が世界でも日本でも出てきている』という話に関する極めて個人的な雑感。あるいは記憶のダンプ。 b.hatena.ne.jp 要件定義を専門でやる技術者(Requirement Engineer)の話はいつか来た道 要件定義を専門でやる技術者という話は新しい話ではなく、ゼロ年代後半から議論がされていたものである。 ゼロ年代後半というと、SIerを中心にわりと適切なプロジェクトマネジメント方法論が普及しはじめて、「要求された通りのシステムは開発できるようになってきた」という時代だ。 一方で「システムは開発できるが、要件定義がゴミだと、完成するシステムもゴミ」という問題が残っていて、要件定義の高度化や専門家育成の議論があったのだ。 要求開発~価値ある要求を導き出す
画像生成AI「Stable Diffusion」では、複数の被写体を含む画像を作るのが困難です。この問題を解決するべく「背景画像と被写体の画像を別々に生成して、AIの力で合成する」という離れ技を実行できるスクリプト「multi-subject-render」が公開されていたので、実際に使ってみました。 GitHub - Extraltodeus/multi-subject-render: Generate entire harems of waifus using stable diffusion easily https://github.com/Extraltodeus/multi-subject-render multi-subject-renderは、Stable Diffusionを簡単に使えるようにするGUI「Stable Diffusion web UI(AUTOMATIC1
この記事はNuco Advent Calendar 2022の7日目の記事です はじめに 株式会社Nucoでエンジニアをしている@noshishiです。 今回は、ついついその場限りのコマンド実行で乗り越えがちなGitを、コマンドを使わず理解するための記事を書こうと思います。 Gitとは バージョンを管理し、作業を分散する Gitは、分散型バージョン管理システムと呼ばれるソースコードの管理システムの1種です。 Gitは、ファイルの変更履歴(バージョン)を記録・追跡することで、過去と現在のファイルを比較し、変更点を明らかにすることで、円滑に開発作業を進めるためのツールです。 また、一度に複数の開発者がファイルを編集できるシステムなので、作業を分散して行うことができます。 Gitを使うということ まず、みんなで共有できる保存場所(以下、リモートリポジトリ)にあるファイルなどを、手元のパソコン(以
本記事は、CyberAgent Advent Calendar 2022 7日目の記事です。 0.はじめに こんにちは。ゲーム・エンターテイメント事業部の清原(@nezumimusume)です。 ご存じの方もいらっしゃるかもですが、私は今年の8月末までゲーム系の専門学校で教鞭をとっており、教員時代に「HLSLシェーダーの魔導書」という書籍を出版いたしました。 現在はサイバーエージェントのゲーム・エンターテイメント事業部のコア技術本部(コアテク)でUnityのグラフィックエンジニアとして働いています。 この書籍を執筆している時に、RenderDocの内容も書きたいなぁ、と考えていたのですが力尽きてしまい、書籍に載せることはかないませんでした。 そこで、今回はこの場を借りて、RenderDocの使い方をステップバイステップで解説していきたいと思います。 なお、この記事は以下の環境での解説となり
SWETグループの長谷川(@nowsprinting)です。 開発者自身の手によるUnityプロジェクトの品質向上にはさまざまなアプローチがあります。 当ブログでもこれまでに、 ユニットテスト や 静的解析 といった、コーディング段階でC#コードの品質(特に内部品質)を高めるアプローチを紹介してきました。 本記事では少し目線を変えて、ゲームがほぼ組み上がった状態でのゲームプレイを自動化する、オートパイロットによる検証アプローチを紹介します。 オートパイロットによる検証の位置付けと目的 ゲームが組み上がった状態とは、ゲームを構成するC#コードや3Dモデルなどのアセットファイルを組み合わせた、結合度の高い状態を指します。 結合度を突き詰めると、IL2CPPビルドしてスタンドアロンプレイヤー(モバイル端末やコンソール機)で実施するテストになりますが、今回は結合度を上げすぎず、実行環境はUnity
このように見事にバラバラなため、それぞれの OS でビルドまたは発行するジョブを書いていく必要があります。面倒ですね。 ビルドだけであれば Windows で全てビルド可能ですが、private リポジトリで実行することも考慮すると可能な限り Linux で済ませたいところです。 今回は発行まではせず、net7.0-android は Linux、他は Windows でビルドだけしてみます。 Linux 上で Android 向けビルドができるように修正 VS 2022 の .NET MAUI アプリテンプレートからプロジェクトを作成した場合、Linux 上でビルドを実行すると下記のようなエラーが発生します。 $ dotnet build MauiSandbox/MauiSandbox.Net7.csproj -c Debug -f net7.0-android MSBuild vers
Dependency Injectionとは Dependency InjectionとはDIとも呼ばれていて日本語で依存性の注入とも訳されています。 私たちは普段AのクラスにBクラス内のメソッドを使うとき、AクラスはBクラスをnewしてBクラスを引き出し、そのメソッドを呼び出している。 このクラス通しの関係を依存関係にあるといい、普段newしている場合はAクラスが別のクラスを引き出しているので注入とは言えません。 注入するということは外部からこのクラスを使いなさいとAクラスに与えることで、そのメソッドを呼び出す形にしています。 これによりクラスの疎結合が担保されます。 メリット 主な利点はクラス同士の依存関係の結合を減らすことです。 各クラスがどのように実装されているかを知り、維持する必要がないため、再利用性、テスト性、保守性が向上します。 これにより機能を利用する側(A)と機能を与える
この記事はUnityアドベントカレンダー2022https://qiita.com/advent-calendar/2022/unity の8日目の記事です 初めに みなさんはCinemachine VirtualCameraをご存知でしょうか Unity公式のパッケージであり、Unity2017の時点ですでに本リリースされている、熟しているライブラリです ゲーム内のカメラのコントロールや演出のカットシーンを作る際にとても便利で、しかも公式ライブラリなので無料です! それではまずはこちらをご覧ください この動きを簡単に作れる、とても便利なライブラリなのです ただ、私の観測範囲のイメージでしかないのですが、 このライブラリ、使っている人は使っているが、使ってない人は存在も知らない。といった印象を受けています そこで、本記事ではCinemachine VVirtualCameraの基礎中の基礎
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く