アジョブジ星通信

進捗が出た頃に更新されるブログ。

DNXでC#以外の言語をコンパイルしてみよう

f:id:azyobuzin:20151118224028p:plain

目次

  • 目次
  • DNXの可能性
  • よろしいならば実装(インプリメント)だ
  • 完成品
  • IProjectCompiler を実装する
  • IMetadataProjectReference を実装する
  • 使ってみよう
  • 終わり

DNXの可能性

DNX で C# 以外の言語を使えるのかと思って調べていたところ、 F# を動作させるためのライブラリが存在していることを発見しました。

(試してみましたが、 F# コンパイラが内部で NullReferenceException 起こしてうまくいかなかったです。)

この作者のブログには、 DNX で F# を動かしてみての感想などいろいろ書いてあるので参考にどうぞ。

で、これの何がイケてるかというと、コンパイラ部分も NuGet から取得できるということです。つまり DNX さえあればコンパイラをインストールすることなく、その場でコンパイルできてしまうんですね。夢が広がる。

続きを読む

NuGetにおける「dotnet」とか「.NETPlatform」とかいうやつ

CoreTweet からフォークして、通信部分の疎結合化をした LibAzyotter を DNX でビルドできるようにするなどしていました。

その中で出会った新たな NuGet のフレームワーク設定「dotnet」についてまとめておきます。

dotnet, .NETPlatform とは

dotnet は CoreCLR 向けアセンブリのターゲットです。詳しい経緯はよくわかりませんでしたが、 NuGet のコミットログを見る限り、もともと「core」だったものが、現在の「dotnet」になり、多くのフレームワークに対応する包括的な存在になりました。

「netcore」というのもありますが、たぶん WinRT とか UWP 用です。でもやってることは同じなのかな?

互換性のあるプラットフォーム

9/16 現在、以下のプラットフォームで「dotnet」のライブラリをインストールできます。たぶん。また、現在のところ「dotnet」は「dotnet50」を指します。
ソース: https://github.com/NuGet/NuGet3/blob/dee69ffe7153c5230d6d9ddb936d6ec55ec4f00a/src/NuGet.Frameworks/DefaultFrameworkMappings.cs

  • netcore50
  • net46
  • net45
  • dnx451
  • sl5
  • wp8
  • dnxcore
  • netcore
  • uap
  • win
  • wpa
  • Xamarin 系

このようにほとんどのプラットフォームをカバーできる PCL のような存在ですが、基本的に dotnet をターゲットとするライブラリをつくろうとすると、 System.Runtime に依存することになります。このパッケージは dnxcore50, net46, netcore50 と Xamarin 系にしか対応していないため、ターゲットにできるのは DNX, UWP, .NET 4.6 ということになります。

まとめ

これから登場するプラットフォームには dotnet ですべてまかなえる時代になると思いますが、 .NET 4.5 以下, Windows8 などへの対応は今まで通り続けなければいけなさそうです。

文化祭のためにつくったタイピングゲーム

文化祭お疲れ様でした。3年生なのでクラスの出し物もないので、初めて高校の文化祭をちゃんと回ってみました。今年は去年よりどこもクオリティが高かった印象です。我がコンピュータ部を除いて。

今年はタイピングゲームを作りました。本当はタイピングしながら陣取り合戦でもしようと思ってたのですが、夏休みを棒に振った挙句 AO 入試の準備をしたりしていたので、結局「相手が入力中の文字が見える」というハンデ付きネットワーク対戦タイピングゲームになりました。

ソースコードGitHub に置いておきました。バイナリは SignalR 系ライブラリのライセンスをどう扱ったらいいのかわからない(調べるのがだるかった)ので配布していません。 VS2015 があればビルドできますので。

ローマ字自動生成がとても大変でした。小並感。

ついでに去年のもよろしくお願いします。

一昨年のは git で管理していなかったので zip で置いておきます。
http://junk.azyobuzi.net/ShinkeiYatsu.zip

最新のMonoを使いたい人ための mono-snapshot

f:id:azyobuzin:20150827030127p:plain

こんばんは。課題やってない、文化祭のゲームもつくってない azyobuzin です。やはりブログは結論を先に書いておくほうが良いと学んだので無駄な経緯的前説はおいておいて本題をばばっと書いておきます。

ググればわかる基本的な使い方

http://www.mono-project.com/docs/getting-started/install/linux/ci-packages/ に各ディストリビューションでの mono-snapshot パッケージのインストール方法が書いてあります。 Debian リポジトリを試した結果、 2015/6 からの成功したビルドと昔のがぽつぽつ入っている感じです。

どれかひとつでもインストールすると

$ mono-snapshot
This script will help you to set up your environment to use a
snapshot package of Mono. To use it, run:

	. mono-snapshot APP/VER

You have the following possible combinations of APP/VER:

	mono/2015.08.22+02.26.20
	mono/20150501052837

Calling APP without specifying VER will load the latest version

といった具合にバージョンが選択できるようになります。表示にしたがって . mono-snapshot mono/VER を実行すると

$ . mono-snapshot mono/2015.08.22+02.26.20
[mono-2015.08.22+02.26.20]$ mono --version
Mono JIT compiler version 4.3.0 (tarball Sat Aug 22 02:46:14 UTC 2015)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug 
	LLVM:          supported, not enabled.
	GC:            sgen

このように指定したバージョンの mono が実行できるよう Path が設定されます。. をつけなければいけないのはこの先で説明するように、実行中のシェルの環境変数をいじりたいからです。

以下細かい話。 Debian 版でしか試していません。

続きを読む

気持ちを言葉にする練習

昨日「勉強するぞと意気込んで始まった高校最後の夏休みも残り半分を切ったにもかかわらず、総勉強時間がいまだ 1 時間いってるのかどうか疑問な今日このごろ」なんて書きましたが、そもそもなんで勉強する気が起きないんだという話。頭で考えて書いているかもしれないので本心が自分でもわからないですが、書いてみる練習。練習。

続きを読む