Haxe

NGK2021SでHaxe最新事情の話をした

speakerdeck.com 要点は、 もしHaxeの最新情報が欲しかったら Haxe Roundup を見ような Haxeはゲームクライアントでの採用事例が多いけど、Webフロントエンドでの採用は減り気味 という話です。あと、少し説明を端折った内容としては、JVMターゲットに関して…

Haxe 4.2で導入される Module-level fields を試した

Haxe 4.2は順調にいけば、2020年10月14日にリリースされるはずです。とはいえ、Haxeのマイナーバージョンアップのリリースは、バグフィックスも含めると2か月前後ぐらい後ろ倒しになる印象なので、2021年初に使えるようになってるかなーぐらいでしょう。 Hax…

ポケットモンスター ソード/シールドにHaxeが採用されていた

顛末 昨日、こういう感じのツイートを見かけかました。 ポケモンほどの大規模なゲームでHaxe採用されるの初めてなのではhttps://t.co/i8lCJx0NWh— neguse (@neguse) November 14, 2019 結果、このような形となりました。 これは、Haxeという高度な型システム…

Haxe 4.0 JavaScriptターゲットでの変更点

はてなで書くのがしんどかったので、gistで書きました。 Haxe 4.0 JavaScriptターゲットでの変更点 · GitHub

HaxeのマクロでPromise専用構文を作った

専用構文というか、マクロでF#のコンピュテーション式のサブセットライブラリ(Bind, Return, Zeroのみ)を実装して、その上にPromiseを載せたという表現の方が正確な説明です。 github.com Promiseを使った非同期処理がこんな感じで書けます。hxgndでは、hx…

HaxeのUnitTestライブラリ(2018年版)

2018年におけるHaxeのUnitTestライブラリについて書く。この記事を書いている時点ではutestを使っている。 この記事で挙げているものはすべて試したが、多少機能は少ないが枯れていて面倒が少ないのはutest、高機能なものがよければbuddyという感じかなとい…

Node.jsのcallbackスタイルAPIをPromiseに変換するHaxe macroが書けた

執筆時のバージョン情報: Haxe 3.4.6 Node.jsのcallbackスタイルAPIを毎回手でPromiseに変換するのがダルすぎる。 最初はNode.jsの util.promisify() を使おうかなと思ってたんだけど、Promiseを返す関数に変換するだけで、そのままcallしてくれるわけではな…

Haxeで型パラメータに構造的部分型を指定した時の挙動

執筆時のバージョン情報: Haxe 3.4.6 Haxe/JSでCosmos DBクライアント(npm documentdb)のexternを書いているのだが、Haxeでexternを書くたびにたまにハマることがある(ハマるたびにググってる)ので、メモを残しとく。 DocumentClient#createDocument() …

Haxe/JSでMainなし(EntryPointなし)のプロジェクトを作る

2回ぐらいやり方を忘れてググるみたいな感じになっているので、いい加減メモっておく。 code.haxe.org 要は、通常のHaxeプロジェクトでは、.hxml を -cp src -main Main -js bin/main.js みたいに設定するところを、 -cp src Main -js bin/main.js のように…

Haxeのマクロで外部プロセスに処理を移譲する場合の知見

HaxeでVue.jsの開発をするために、.vueファイル(Single File Component)コンパイラをNode.jsで実装して、マクロから呼び出してコード生成するということをやっていた。このエントリーを書いている時点では、コンパイラ自体はまだ「とりあえずコードが生成…

思い付きでHaxe/JavaScript extern用のabstract型を作ったら幸福度が上がった

HaxeでJavaScript用のexternを書く際、EtherType(Union Typeを表現する型)とRest(可変長引数を表現する型)が存在する。 haxe.extern.EitherType - Haxe API haxe.extern.Rest - Haxe API ただ、「EtherTypeは型を2つしか指定できないからなー」という感…

Haxe/JavaScriptでSource Mapを出力するための設定

ざっくりこんな感じです。 -cp src -main Main -js bin/main.js -debug -D source-map-content"-debug" オプションを付けると、Source Mapが生成されるのは皆さんご存知だとは思いますが、これだけだと、HTTPサーバに配置した場合にSource Mapが読み込めませ…

abstractを使ってDOMとjQueryを透過的に扱う

abstractを使うと、「C言語のunion」みたいなのを型安全かつ便利に書ける。引数をabstractで受けると非常に便利。例として、js.html.Elementとjs.JQueryを透過的に扱ってみる。 abstract Html(Element) { inline function new(x: Element) { this = x; } @:f…

Haxeのmacroでanonymous structureを動的に生成する

公式Wikiで解説が発見できなくて、ググりながら色々試しててたら、JSON-schema type builder prototype. · GitHubにたどり着いた。理解できてしまえば簡単なのだが、ポイントとしては、 Expr.ComplexType.TAnonymousを生成して、 ComplexTypeTools.toType()…

Haxeとはどんな言語か

厳密にいえば正しくないのだけど、ざっくりこんな感じ。 型システムがまともになってマクロも使えるECMAScript4(ActionScript3) 型システムがまともになってマクロも使えるけど、try-with-resourcesがないJava8 型システムがまともになってマクロも使えるけ…

Haxeのexternとinlineを同時に書くとinlineが優先されるっぽい

HaxeのjQuery externで new JQuery("selector"); って書くのがダサいなぁと思って、いろいろ試していたときにコンパイルできたコードをメモ。externとinlineを同時に書くとinlineの方が優先されるらしい。Haxe 3.1.3で確認。 @:native("jQuery") extern clas…

HaxeのJavaScriptターゲット用のビルトイン

Haxe 3.0から __js__() 以外にもいくつか追加されてたらしい。知らんかった。The Haxe Magic - Haxe untyped __js__(js : String) : Dynamic インラインJavaScript。 var console = untyped __js__("console"); untyped __js__("console.trace()"); untyped …

Haxeの構造的部分型(typedef)ってstaticでも使える

Haxeを使い始めて2年ぐらい経つけど、今更こういうコードが書けることに気が付いた。 typedef Foo = { function print(): Void; } class Hoge { public static function print() { trace("Hoge"); } } var foo: Foo = Hoge; foo.print();

Haxeで仕方なくnullと付き合う

Haxeは現時点で選択しうるaltJSの中では型システムが一番出来が良く、代数的データ型(Haxeではenum)が扱える点が素晴らしい。しかし、元々はFlashを前提とし、今はマルチターゲット(JavaScript、PHP、C++、C#等)にコンパイルする言語として設計されてい…

大なごやJSでHaxe/JavaScriptの発表してきました

FIRST STEP to Haxe/JavaScript from terurou

Re: HaxeとTypeScriptを両方使ってみた感想

HaxeとTypeScriptを両方使ってみた感想 - ジンジャー研究室 に対してのコメント。コメント欄ではレスを書くには余白が狭すぎです。 if式について HaxeのifはBool型しか受け付けないため、存在判定はnullとの比較が必須になる。JavaScriptからHaxeに移行する…

Haxe使いから見たTypeScript雑感

TypeScript良いですね。世間の流れは完全に動的型付け言語から静的型付け言語+型推論に移ってきていますが、JavaScriptの上にうまくそれを導入してきた感じです。ヘルスバーグはやっぱすごいよね、と。今後実装される予定のジェネリクスが載ってきたら、bet…

FlashDevelopで { を改行させないようにする

FlashDevelopのデフォルト設定だと、以下のようにC#っぽく { で改行してしまう。元々FlashDevelopがMonoDevelopからフォークしたものなので、仕方ないかなぁとも思いつつも、あまりHaxeっぽくない気がするので設定変更する。 class Foo { public static func…

haXe + FlashDevelop on Windows 8でJavaScript開発メモ

Haxe/JavaScriptチュートリアル — Haxe/JavaScript tutorial 0.1 documentationに書き直したコンテンツを公開しました。Windows 8 RPでhaXe開発環境を構築したメモ。ここではWindows 8を使ってるけど、Vista以降のWindowsなら多分同じだと思う。 この記事の…

WindowsでhaXe開発環境をいくつか試してみた

世間というか他の名古屋勢と比べると何周遅れなのかわからんですが、haXeを実プロジェクトに投入しようという気が起きてきたので、ちょくちょくhaXeを触り始めてます。ということで、いくつかIDEを触ってみました。 仕事で使うことを想定してるので、Windows…