はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

2020-01-01から1年間の記事一覧

【C#】スレッドセーフなシングルトンを実装してみる

C#

はじめに 今回はスレッドセーフなシングルトンを実装してみる記事になります。Unityなんかでは頻繁に使われているシングルトンパターンですが、マルチスレッドで処理をする場合には落とし穴があったりします。どういった落とし穴があるのかということから、…

【C#】ConcurrentQueue<T>を使ってみる

はじめに 今回はスレッドセーフなコレクションとして知られているConcurrentQueueについて書きたいと思います。 docs.microsoft.com普通のQueueとConcurrentQueueで同じような処理をした際、どのような違いがあるのか見比べていきます。 はじめに Queue ConC…

【C#】#ifディレクティブとConditional属性について

C#

はじめに もしUnityを扱ったことのある方は以下のようなコードをみたことはないでしょうか。 #if UNITY_EDITOR Debug.Log("Unity Editor"); #endif #if ~ #endifの中にあるDebug.LogはUnityのエディタのときのみコンパイル,実行されます。これらは別にUnity…

【C#】素因数分解をするプログラムを作成してみる

はじめに 今回は素因数分解するプログラムを作成してみようと思います。素因数図分解というのはのように分解することですね。早速みていきましょう。 はじめに 方針 コード 使い方 さいごに 方針 以下の手順を踏むと素因数分解することができます。 整数nを…

【C#】ナップザック問題を解いてみる

はじめに 今回はナップザック問題を解いてみようという記事になります。 ja.wikipedia.orgナップザック問題は動的計画法の典型例なので、アルゴリズムの勉強にも良い問題だと思います。早速みていきましょう。 はじめに ナップザック問題とは 問題 方針 実装…

【Mac】VisualStudio内で実行されるターミナルを外部のターミナルで実行するようにする

C#

はじめに 以前までVisual Studioでコードを実行すると外部のターミナルが立ち上がっていたのですが、アップデートでVisual Studio内部で動作するようになっていました。最初は喜ばしいことかなとも思ったのですが、以下の点が気に入らなかったので元に戻そう…

【C#】ボゾソートを実装してみる

はじめに 前回適当に並べてソートをするボゴソートを実装しました。 www.hanachiru-blog.comこのボゴソートに並ぶ効率の悪いアルゴリズムとして知られているボゾソートを実装してみたいと思います。 はじめに 仕組み コード 使い方 さいごに 仕組み ボゾソー…

【C#】猿でもできるボゴソートを実装してみる

はじめに 今回は「猿でもできるソート(monkey sort)」という異名を持つボゴソートを実装してみたいと思います。ja.wikipedia.org はじめに 仕組み コード 使い方 さいごに 仕組み 仕組みはめちゃくちゃにシンプルです。 要素をバラバラに並べる ソート済みか…

多項式時間アルゴリズムの種類についてのメモ

はじめに 昨日の記事で多項式時間アルゴリズムについて少し触れたのですが、その種類について書いていきたいと思います。 強多項式時間アルゴリズム 弱多項式時間アルゴリズム 擬多項式時間アルゴリズム 多項式時間アルゴリズムは強多項式時間アルゴリズムと…

オーダー記法(O記法,Ω記法,Θ記法)の定義についてのメモ

はじめに 今回はオーダー記法の定義について書いていきたいと思います。オーダー記法とは関数の値の発散の速さを漸近的に評価するものです。実用の仕方というよりはどのように定義をされているかという視点からみていきます。 はじめに O記法 Ω記法 Θ記法 多…

【Python】機械学習の基本「単回帰分析」を実装してみる

はじめに 単回帰分析は機械学習でおそらく一番シンプルなアルゴリズムです。実は以前C#で実装をしていたのですが、Pythonの勉強も兼ねてPythonでもやっていきたいと思います。 www.hanachiru-blog.comまた理論的なところは爆速でいくので、もし細かい証明な…

【GoogleColab】GoogleDriveのcsvを読み込む方法

はじめに 今回はGoogleDriveに置いてあるcsvファイルを読み込む方法についての記事になります!ざっくりと手順をまとめるとこんな感じ。 driveのモジュールをインポート,マウント pandasを用いてcsv読み込み それぞれを詳しくみていきましょう。 はじめに d…

【Python】約数を列挙するプログラムを実装してみる

はじめに 実は約数を列挙するプログラムを以前C#で作成したことがあるのですが、Pythonの勉強の一貫としてPythonでもやってみたいと思います。www.hanachiru-blog.com はじめに シンプルな実装 改良した実装 さいごに シンプルな実装 def get_divisors(n): i…

【Python】FizzBuzz問題を解いてみる

はじめに 普段はC#を使っているのですが、最近どうしてもPythonを使わなければいけなくなったので勉強をしています。以前このような記事を書いたのですが、Pythonを慣れるためにこれをPythonでやってみようと思った訳です。 www.hanachiru-blog.com早速みて…

【Unity】Taskでメインスレッドを止める・止めない実例集

はじめに 非同期処理やマルチスレッド処理をするときにTaskを使ったりすると思います。ただUnityは基本全てメインスレッドで動くので、誤ってメインスレッドを止めてしまった場合他の処理が止まってしまう危険もあります。←正しくTaskを使えた場合 メインス…

【Unity】頂点移動を題材にShaderGraphからコーディングを考える

はじめに SRP(Scriptable Render Pipeline)にて利用可能なShaderGraphですが、標準レンダリングパイプラインでは利用することができません。私はShaderGraphからShaderを触り始めた身なのですが、どうしてもSRPが使えない環境(プロジェクト)もありボチボチコ…

【C#】例外処理を今更ながらまとめてみる

C#

はじめに C#のプログラミングを初めて3年ぐらい経ちますが、いまだに上手に例外処理を使えていない有様だったのでこれを機にまとめてみようと思いました。基本的な文法からExceptionの自作派生クラスを作るまでを一通りやっていきます。 はじめに 基本文法 …

【C#】木の直径を求める

はじめに 今回は木の直径を求めてみようという記事になります!あまり用いる機会はないと思いますが、簡単な頭の体操のように捉えてくれれば嬉しいです。早速みていきましょう。 はじめに 木の直径とは? 実装方針 コード さいごに 木の直径とは? 木の直径…

【C#】幅優先探索(BFS)を実装してみる

はじめに 前回深さ優先探索の実装をしてみました。 www.hanachiru-blog.comこの深さ優先探索と兄弟のようなアルゴリズムである幅優先探索を実装していきたいと思います。 はじめに 実装方針 コード 使い方 さいごに 実装方針 実は深さ優先探索ではスタックを…

【C#】深さ優先探索(DFS)を実装してみる

はじめに 今回は深さ優先探索を実装してみようという記事になります!深さ優先探索とはこちら。 木やグラフを探索するためのアルゴリズムである。アルゴリズムは根から(グラフの場合はどのノードを根にするか決定する)始まり、バックトラックするまで可能な…

【Unity】ProBuilderをURPでも使うために必要なマテリアル(Shader)をインストールする

はじめに ProBuilderでVertex Colors Editorという機能を用いて頂点に色をつけようとするにはマテリアルにProBuilder用のシェーダーを設定する必要があるはずです。(別のマテリアルを適応して色を変える場合は除く)www.hanachiru-blog.comただURPだとそれが…

【Unity】Cinemachineを初めて触ってみる

はじめに 今回はCinemachineというアセットを触ってみるという記事になります!Cinemachineとはカメラワークを作成することができるアセットになります。とりあえず簡単なカメラワークを作成を目指していきたいと思います。 はじめに 下準備 概要 Chinemachi…

【Unity】マルチシーンエディティングを初めて触ってみる

はじめに 今回はマルチシーンエディティングを使ってみようという記事になります。 複数シーン編集によって、複数のシーンを同時にエディター上で開くことが可能になり、実行時でも簡単に複数シーンを管理できるようになりました。エディターで複数のシーン…

【Unity】Kinectを使って身体座標を取得してみる

はじめに アルバイトにてKinectを使う必要があったので、その基本的な操作であるKinectを使った身体座標の取得を紹介したいと思います。 はじめに 下準備 身体座標を取得する 座標の取り出し方 手の状態を取得する さいごに 下準備 こちらの記事が分かりやす…

【Unity】Unity Test Runnerを初めて触ってみる(EditModeのみ)

はじめに 今までUnityを使ってきてテストをしたことがなかったのですが、UniRxについて調べた時にTest Runnerがすごい便利だと気づいたので初めて触ってみました。そこで備忘録の意味合いもかねてやり方を書き残しておきたいと思います。 はじめに 環境 下準…

約3ヶ月間毎日技術ブログを更新したら一体PVはどうなったのか(あとお金の話も)

はじめに 毎日更新しようという固い意志があったわけでは全くないのですが、段々とブログを書くのが習慣化してきて気付いたら約三ヶ月半毎日更新していました。果たしてこれだけ更新するとPVはどうなるのか、またみんな大好きなお金はどうなるのか結果を報告…

【Unity】UniRxをクイズ形式で学んである程度使えることを目指す

はじめに 先日UniRxに関する非常に分かりやすい記事を見つけました。qiita.comいままでUniRxの中身をブラックボックスと捉えて表面上の使い方だけを学んでいたのですが、しっかりと使うためにはやはり内部構造を知るのは欠かせません。そこでこちらの記事で…

Google Colaboratoryを初めて触ってみる

はじめに 最近機械学習に少し興味があるのですが、Google Colaboratoryという無料でPythonのプログラムを実行できる環境があることを知りました。このGoogle Colabには以下のようなメリットがあります。 開発環境を整えなくてOK GPUを使える 簡単に共有でき…

GoogleスプレッドシートだけでWebアプリが作れる「Glide」を実際に使ってみた

はじめに 先日このような記事を見かけました。GoogleスプレッドシートだけでWebアプリが作れる「Glide」がめちゃめちゃ面白そう!お試しで簡単なサイトでも作ってみようかなhttps://t.co/DMjUvlyLbx— はなちる@ゲーム制作 (@hanaaaaaachiru) April 16, 2020 …

【Unity】重力をスクリプトから変更する方法

はじめに 今回はスクリプトから重力を変更してみようという記事になります!ちなみにエディタ上で重力を変えたいならEdit -> ProjectSettings -> Physics -> Gravityにより変更できます。では早速みてきましょう。 はじめに やり方 さいごに やり方 重力を操…