C#

Zenn にて本を書きました

Zenn というエンジニア情報共有サイトがあるのですが、そこで本を書きました。タイトルは「Azure × LINE Messaging API による Minecraft 農業の自動化」 です。 zenn.dev 元ネタは以前ブログで紹介したこれです。 blog.takunology.jp いつか、何らかの形で…

【Unity メモ】ユーザからの入力

Unity ではデフォルトの設定として、スペースキーがジャンプボタンとして登録されています。Unity の 編集 > プロジェクトの編集 を開き、入力マネージャ を選択すると、このようになっています。(日本語化していますが、英語のほうがよかったかもしれませ…

【Unity メモ】Mathf クラスと Vector3 構造体

Unity で作成したオブジェクトはコンポーネント(そのオブジェクトを構成する状態やふるまいなど)を何かしら持っています。これを使って処理する方法についてのメモです。 GetComponent メソッド そのオブジェクトが持つコンポーネントを取得する。 例えば…

【Unity メモ】様々なメソッドとログ出力

久しぶりに Unity に触ったので、学んだことをメモしておきます。 初期化 Unity でスクリプトを作成すると、プログラム開始時に呼ばれる Start メソッドと毎フレーム呼ばれる Update というメソッドがテンプレートでついてきます。これらは予約メソッドなの…

C# で Azure Cosmos DB のデータを取得して LINE に通知してみた

Azure Cosmos DB のコンテナに記録されている NoSQL なデータを抽出するためのメモです。 今回の内容は Minecraft の農業自動化の続きみたいな感じです。 blog.takunology.jp 上の記事では Azure Functions を使用して Azure 上で完結していますが、今回は F…

MinecraftConnectionCore (prerelease) ライブラリを公開しました

C# から Minecraft にコマンドを投げるためには CoreRCON パッケージの導入が必要でした。また、コマンドを送信するためには非同期なメソッドにする必要があり、プログラミングを始めたばかりの方にはかなりハードルが高いように感じました。そこで、非同期…

LINE Messaging API を使って C# で LINE にメッセージを送る

LINE の Messaging API アカウントを使って、C# からメッセージを送る方法のメモです。これは前回の記事の内容にも関連しています。 Messaging API を作る まずはこれがないと何もできません。LINE Developers にアクセスして作成します。 developers.line.b…

【C#】属性を使って列挙型に文字列を割り当てる

列挙型で定義した列挙子は整数 (ID) が割り当てられており、使い方によっては便利なのですが、文字列を割り当てたいなという場面が出てくると思います。 例えば、マイクラでポーション効果を付与したいときにポーション効果一覧をこのように定義します。 pub…

【C#】拡張メソッド .ToString() 的なやつをつくってみた

C# で大変お世話になっている .ToString() みたいなメソッドってどうやって作っているのか疑問に思って、色々調べたら 拡張メソッド という機能らしいです。名前は初めて知りました。 ライブラリを作っているとメソッドが増えて「わざわざ1行使って呼び出す…

【MinecraftConnection】ライブラリメモ #5

自作ライブラリのメモその5。ChestItems クラスを追加。 チェストアイテムに対して操作ができるクラスで、現在はアイテムの取得、更新、ソートが行える。 名前空間:MinecraftConnection.Data コンストラクタ:RCON GetChestItems(int x, int y, int z) : チ…

【C# + Minecraft】ドット絵をプログラムに描かせる

目的 ドット絵に変換した画像をMinecraft上に描画する 1. 画像を用意する 今回はホロライブの雪花ラミィさんの画像をお借りしました。本人のTwitterにグリーンバックの画像がアップされています。 @yukihanalamy このままでは解像度が高すぎて描画しきれない…

【MinecraftConnection】ライブラリメモ #4

自作ライブラリのメモその4です。PlayerData クラスの機能を追加。 GetHealth (string PlayerName) : プレイヤーの体力を取得 GetFoodLevel (string PlayerName) : プレイヤーの満腹度を取得 GetScore (string PlayerName) : プレイヤーのスコアを取得 使用…

【MinecraftConnection】ライブラリメモ #3

自作ライブラリのメモその3です。PlayerData クラスにて、プレイヤーのアイテム情報を取得する機能を追加。 GetHandItems (string PlayerName) : プレイヤーの手持ちアイテムを取得 GetInventoryItems (string PlayerName) : プレイヤーのインベントリアイテ…

【MinecraftConnection】ライブラリメモ #2

自作ライブラリのメモです。(まだ未公開) プレイヤーの位置を得る Minecraft でプレイヤーの位置を得るには /data get entity <Player> Pos コマンドを使用すればいいのですが、その返り値がかなり長い文字列です。しかも、データ自体は数値だけではないので文字列</player>…

【MinecraftConnection】ライブラリメモ #1

2020年12月末から製作中のライブラリのメモです。まだ公開はしていませんが、公開するときにはリファレンスが必要になると思うので、そのための記録として残しておきます。(おそらくシリーズ化っぽくなる?) Minecraft で花火を作る場合 前回の記事でも書…

【C#, Minecraft】書き初め

あけましておめでとうございます。2021年もよろしくお願いします。 さて、お正月と言えば 書き初め ですね。ということで、新年初めての書き初め(と書いてプログラミングと読む)をしていきます。 実行環境 Minecraft 1.16.3 (バニラ版, RCON設定済みサーバ…

【C#】同期メソッドから非同期メソッドを呼び出す

今までに、CoreRCON ライブラリ を用いてマイクラ自動化、もといマイクラプログラミングを色々やってきました。ただ、このライブラリを使うにあたって非同期処理のコーディングが必要になるので、「プログラミングを始めたばかり」の方には難しいかもしれま…

【C#, Minecraft】Blazorアプリ で チェストの中身(アイテム)を取得する

Minecraft 1.13 以降に追加された data コマンドを用いると、チェストの中身を取得することができます。今回は /data get block <チェストの座標> Items というコマンドを用いて、チェスト内のアイテムを取得してみます。 目標 Blazor アプリで任意の座標に…

【C#, Minecraft】Blazor アプリでマイクラにコマンドを投げる

Blazor を一言で言うなら、C#とHTMLを組み合わせてWebアプリを作れるフレームワーク です。正確には ASP.NET Core 上で動作する機能の1つですが、詳しい説明は省きます。気になる人は調べてみてください。 docs.microsoft.com 目的 Visual Studio で Blazor …

Microsoft Learn で C# 入門

C#

Microsoft Learn では C# や Azure などの開発者向けコンテンツからデータサイエンスなどの研究者向けのコンテンツまで数多く揃っています。 無料で始められるので、これから「プログラミング(C#)を勉強したい」という人にもおすすめです。アカウントを登…

【C#】JSON ファイルを書きだす

去年、C# でJSONの読み込み(デシリアライズ)をやりました。 blog.takunology.jp 今回は書き出し(シリアライズ)をやります。と言っても、シンプルなJSONファイル(例えばオブジェクトや配列が1つの階層のもの)はいろんなサイトに載っているので、このブ…

Xamarin アプリから Minecraft にコマンドを投げよう

以前、マイクラ自動化でC#からRCON経由でマイクラのコマンドを投げられることを確認しました。同じC#ならばプラットフォームが異なってもできるのでは?というノリでXamarinアプリを作ってみたら意外といけました。 www.youtube.com youtube では Androidエ…

Xamarin でマイクラ自動化できそう

CoreRCON を使えば C#言語でマイクラにコマンドを送信できます。ということは、プラットフォームに関係なく C# さえ扱えればスマホからもコマンド送信ができるのでは?と思いました。 結果として、Xamarinで作ったアプリでもRCON経由でマイクラにコマンドを…

【C#】Uno Platformを使ってみた

1. Uno Platform Uno Platform は Windows, iOS, Android, Web 上で動くアプリケーションを開発できるクロスプラットフォームです。 platform.uno Xamarinと似ていますが、いくつか違う点があります。一番はUWP/WPFと同じような形式でXAMLが書けることです。…

【C#】Minecraft自動化 #8 プレイヤー自動操作

久しぶりの自動化です。今回はコマンドを投げるわけではなく、プレイヤー自身を動かすためのプログラムを書きます。 実行環境 .NET Framework 4.6 コンソールアプリケーション Minecraft 1.12.2 Forge 1. ウィンドウのアクティブ化 まずは起動しているウィン…

【C#】マイクラのプロセス名がMinecraftではなかった話

マイクラ自動化をするにあたり、プロセスに干渉して自動操作みたいなことができないかを試したくて、プロセス名を取得してみたら意外な結果を得られました。 実行環境 .NET Core 3.1 コンソールアプリケーション Minecraft 1.12.2 1. プロセスの取得 プロセ…

【C#】画素ごとの輝度を得て、テキスト形式で保存する

機械学習や画像処理にて解析を行う際には、画像を数値化しなければなりません。今回は手書き数字の画像の輝度情報を読み取り、テキストファイルにして保存する方法をメモります。 実行環境 この環境でやってみました。特別なライブラリは使用していません。 …

【C#】深層学習入門 #8 損失関数とミニバッチ学習法

ニューラルネットワークの性能を示すのに損失関数を使用します。最近では交差エントロピー誤差(クロスエントロピー)がよく用いられているようです。また、学習するための手法にミニバッチ学習法があります。大量の訓練データの中で無作為に選んで学習を行…

【C#】深層学習入門 #7 学習データを用意する

手書き数字認識をやるためにMNISTのデータセットを用いますが、画像ファイルではなく特殊なファイル形式であるため、TensorFlowなどのライブラリが必要です。また、Python用として提供されているためC#でやるには自作する必要があります。今回はMNISTを使用…

【C#】深層学習入門 #6 出力層の設計

ニューラルネットワークでは解を得る際に確率として得たいときがあります。これはソフトマックス関数を用いることによって解決できます。ソフトマックス関数は中間層よりも出力層に対して有効であり、指数関数を用いることで数値自体をいじらずに表現をシフ…