Haxe最新事情2021年1月版terurou2021-01-23
View Slide
terurou• デンキヤギ代表取締役• Haxe Foundationの方から来ました• hxnodejsのコミッターだけど、去年は全然動けなかった…• NGKの実行委員を12年ぐらいやってます1
Haxeとは• 対応ターゲットがやたらと豊富• JavaScript, Java, JVM, C++, C#, Flash, PHP,Python, Lua, Neko, HashLink• 比較的モダンな構文(Haxe4~)• 高度な型システムとマクロ• コンパイルが高速2
3今日は言語自体の紹介よりも、Haxeの利用状況をメインで話します
Haxeの主な採用事例• ワールドフリッパー [Cygames/Citail]• ポケットモンスター ソード・シールド [任天堂]• Haxe/Luaなので、スクリプトで使われていると推測• Dead Cells [Motion-Twin]• DAZN ←たぶん今は使っていない…4ゲームが多い!
デンキヤギとHaxe/JSterurou管理プロジェクトは、だいたいHaxe/JS• yagisan-reports(自社開発の帳票APIサービス)• React• Cloudflare Workers• Azure Functions + Cosmos DB• Kintoneアプリ開発(業務システムコンサルティング)5
[PR] yagisan-reports汎用帳票エンジン(要はPDF生成)+永続化+郵送をWebAPIサービス化したもの• 既存の帳票製品は価格が高すぎるor 安い製品はテンプレート機能が貧弱すぎる• 高速/無制限プレビュー(ブラウザ上でPDFを生成して解決)• PDFを生成できるだけでは実務では足りないよね• 例) 請求書を発行したから、同一データを保管しておきたい6クローズドユーザー募集中
[求人] めんどくさいWeb開発をやってくれる人• ブラウザ上で動くアプリケーション• IDEと帳票エンジン• 2D/3Dグラフィックをゴリゴリ操作• WebRTC, WebAssembly• Azure Functions, Cosmos DB• Haxeだけでなくて、ScalaとかF#とかもある• UI設計とか業務分析とかもある7短時間正社員、フリーランス、アルバイト応相談
8スポンサー枠宣伝はここまで
Haxeの最新情報をどう追えばいいか9Haxe Roundupを見ましょう!
Haxe Roundup• 毎週、Haxeの開発状況や周辺情報をまとめてくれる• Haxe公式コミュニティが運営• https://haxe.io/10
Awesome Haxe Game Development• Haxe製のゲームエンジンと周辺ライブラリについてまとめられたページ(GitHubリポジトリ)• https://github.com/Dvergar/awesome-haxe-gamedev11
12必要情報は伝えたので、あとは時間を気にせずに話していきます
13Q. Haxeってゲーム以外では使われてないの?
Haxeってゲーム以外では使われてないの?• ゲームサーバーや周辺ツールは結構あるはず…• ゲームクライアントをHaxeで書いたら、当然、他の部分もHaxeで書きたくなるよね(連携部分のみの使用も含む)• Webフロントエンドでの採用は減少傾向• Massive Interactive社が買収された影響が…(2018年)• haxe-reactやhaxe-modulerなどの開発母体だった• DAZNやBBCにHaxeを突っ込んだのもこの会社• Haxeだったところも刷新時にTypeScriptになる傾向14
Haxeサポートターゲットの現況(私見)• JavaScript, C++, PHP, JVM, Lua, HashLinkあたりはユーザー側からのIssueやPRも多く活発• Flash, Java, Nekoも良い意味で枯れて安定• C#, Pythonは正直微妙な状況• 実際の利用者がかなり少なそう…15
16Q. Haxe/JSでWebフロントエンドってどうなの?
Haxe/JSでWebフロントエンドってどうなの?• TypeScriptと比べると正直楽ではないがメリットあり• 多数派 vs まともな型システム• 高度な型システム、マクロ、コンパイル速度は捨てがたい• 人口が少ないので、ライブラリの型定義が無いことは多い• デンキヤギで使うものは、どんどん外部公開/PR出してます• Scala.jsを採用するのと同じような感じ17
dts2hx• TypeScriptの型定義(.d.ts)をHaxe用に変換• Haxe準公式ツール(コミッターの人が開発中)• まだbeta未満だが、完成すれば大幅に状況が改善• 開発はもう1年ぐらいかかりそう?• https://github.com/haxiomic/dts2hx18
ES Modulesへの対応• 現時点では未対応だが、一部は既に開発中• https://github.com/HaxeFoundation/haxe/issues/8033• webpackとの連携にはhaxe-modulerを使う• loaderもある : webpack-haxe-loader• ES Modulesになる訳ではないが、HMRは可能になる19
20Q. Haxe/C#でUnityってアリ?
Haxe/C#でUnityってアリ?• たぶんないので、素直にC#で書いた方が良さそう• 過去に挑戦者を見かけているが、みんな長続きはしてない…• OpenFLとかHeaps.ioとか、Haxeネイティブのゲームエンジンを使った方が幸せになりそう21
22Q. 最近のHaxeってどうなってるの?(言語機能)
Haxe 4以降で入った主な機能• 比較的いまどきの構文• アロー関数、immutable変数(final)など• 代数的データ型(GADT)とパターンマッチ• JVMターゲット(まだ枯れてない)• null-safety(まだ実験的機能)• nullの混入をコンパイル時チェック。KotlinやSwiftにもある。• 最適化 : ループ展開、末尾最適化、DCE23
今後入る見込みのある主な機能• Module-level fields(Haxe 4.2)• classを書かずに、いきなり関数や変数が書ける• static filedのシンタックスシュガーとして実装• null-safety、JVMターゲットの強化(随時更新)• 新しい async I/O API (Haxe 4.3?)• ES Modules対応(未定、一部は開発中)• Coroutines(未定)24Haxe 4.2はそろそろ出そう
まとめ• Haxe最新情報はHaxe Roundup• Haxeはゲームでの採用が多い• Webフロントエンドは若干弱いが、改善の見込みあり• デンキヤギも積極的に投資していく予定• Haxe4.2が近いうちに出るよ• Module-level fieldsの導入が特にセールスポイント25