Slide 1

Slide 1 text

Haxe最新事情 2021年1月版 terurou 2021-01-23

Slide 2

Slide 2 text

terurou • デンキヤギ代表取締役 • Haxe Foundationの方から来ました • hxnodejsのコミッターだけど、去年は全然動けなかった… • NGKの実行委員を12年ぐらいやってます 1

Slide 3

Slide 3 text

Haxeとは • 対応ターゲットがやたらと豊富 • JavaScript, Java, JVM, C++, C#, Flash, PHP, Python, Lua, Neko, HashLink • 比較的モダンな構文(Haxe4~) • 高度な型システムとマクロ • コンパイルが高速 2

Slide 4

Slide 4 text

3 今日は言語自体の紹介よりも、 Haxeの利用状況をメインで話します

Slide 5

Slide 5 text

Haxeの主な採用事例 • ワールドフリッパー [Cygames/Citail] • ポケットモンスター ソード・シールド [任天堂] • Haxe/Luaなので、スクリプトで使われていると推測 • Dead Cells [Motion-Twin] • DAZN ←たぶん今は使っていない… 4 ゲームが多い!

Slide 6

Slide 6 text

デンキヤギとHaxe/JS terurou管理プロジェクトは、だいたいHaxe/JS • yagisan-reports(自社開発の帳票APIサービス) • React • Cloudflare Workers • Azure Functions + Cosmos DB • Kintoneアプリ開発(業務システムコンサルティング) 5

Slide 7

Slide 7 text

[PR] yagisan-reports 汎用帳票エンジン(要はPDF生成)+永続化+郵送を WebAPIサービス化したもの • 既存の帳票製品は価格が高すぎる or 安い製品はテンプレート機能が貧弱すぎる • 高速/無制限プレビュー(ブラウザ上でPDFを生成して解決) • PDFを生成できるだけでは実務では足りないよね • 例) 請求書を発行したから、同一データを保管しておきたい 6 クローズドユーザー募集中

Slide 8

Slide 8 text

[求人] めんどくさいWeb開発をやってくれる人 • ブラウザ上で動くアプリケーション • IDEと帳票エンジン • 2D/3Dグラフィックをゴリゴリ操作 • WebRTC, WebAssembly • Azure Functions, Cosmos DB • Haxeだけでなくて、ScalaとかF#とかもある • UI設計とか業務分析とかもある 7 短時間正社員、 フリーランス、アルバイト 応相談

Slide 9

Slide 9 text

8 スポンサー枠宣伝はここまで

Slide 10

Slide 10 text

Haxeの最新情報をどう追えばいいか 9 Haxe Roundupを見ましょう!

Slide 11

Slide 11 text

Haxe Roundup • 毎週、Haxeの開発状況や周辺情報をまとめてくれる • Haxe公式コミュニティが運営 • https://haxe.io/ 10

Slide 12

Slide 12 text

Awesome Haxe Game Development • Haxe製のゲームエンジンと周辺ライブラリについて まとめられたページ(GitHubリポジトリ) • https://github.com/Dvergar/awesome-haxe- gamedev 11

Slide 13

Slide 13 text

12 必要情報は伝えたので、 あとは時間を気にせずに話していきます

Slide 14

Slide 14 text

13 Q. Haxeってゲーム以外では使われてないの?

Slide 15

Slide 15 text

Haxeってゲーム以外では使われてないの? • ゲームサーバーや周辺ツールは結構あるはず… • ゲームクライアントをHaxeで書いたら、当然、他の部分も Haxeで書きたくなるよね(連携部分のみの使用も含む) • Webフロントエンドでの採用は減少傾向 • Massive Interactive社が買収された影響が…(2018年) • haxe-reactやhaxe-modulerなどの開発母体だった • DAZNやBBCにHaxeを突っ込んだのもこの会社 • Haxeだったところも刷新時にTypeScriptになる傾向 14

Slide 16

Slide 16 text

Haxeサポートターゲットの現況(私見) • JavaScript, C++, PHP, JVM, Lua, HashLink あたりはユーザー側からのIssueやPRも多く活発 • Flash, Java, Nekoも良い意味で枯れて安定 • C#, Pythonは正直微妙な状況 • 実際の利用者がかなり少なそう… 15

Slide 17

Slide 17 text

16 Q. Haxe/JSでWebフロントエンドってどうなの?

Slide 18

Slide 18 text

Haxe/JSでWebフロントエンドってどうなの? • TypeScriptと比べると正直楽ではないがメリットあり • 多数派 vs まともな型システム • 高度な型システム、マクロ、コンパイル速度は捨てがたい • 人口が少ないので、ライブラリの型定義が無いことは多い • デンキヤギで使うものは、どんどん外部公開/PR出してます • Scala.jsを採用するのと同じような感じ 17

Slide 19

Slide 19 text

dts2hx • TypeScriptの型定義(.d.ts)をHaxe用に変換 • Haxe準公式ツール(コミッターの人が開発中) • まだbeta未満だが、完成すれば大幅に状況が改善 • 開発はもう1年ぐらいかかりそう? • https://github.com/haxiomic/dts2hx 18

Slide 20

Slide 20 text

ES Modulesへの対応 • 現時点では未対応だが、一部は既に開発中 • https://github.com/HaxeFoundation/haxe/issues/8033 • webpackとの連携にはhaxe-modulerを使う • loaderもある : webpack-haxe-loader • ES Modulesになる訳ではないが、HMRは可能になる 19

Slide 21

Slide 21 text

20 Q. Haxe/C#でUnityってアリ?

Slide 22

Slide 22 text

Haxe/C#でUnityってアリ? • たぶんないので、素直にC#で書いた方が良さそう • 過去に挑戦者を見かけているが、みんな長続きはしてない… • OpenFLとかHeaps.ioとか、Haxeネイティブの ゲームエンジンを使った方が幸せになりそう 21

Slide 23

Slide 23 text

22 Q. 最近のHaxeってどうなってるの?(言語機能)

Slide 24

Slide 24 text

Haxe 4以降で入った主な機能 • 比較的いまどきの構文 • アロー関数、immutable変数(final)など • 代数的データ型(GADT)とパターンマッチ • JVMターゲット(まだ枯れてない) • null-safety(まだ実験的機能) • nullの混入をコンパイル時チェック。KotlinやSwiftにもある。 • 最適化 : ループ展開、末尾最適化、DCE 23

Slide 25

Slide 25 text

今後入る見込みのある主な機能 • Module-level fields(Haxe 4.2) • classを書かずに、いきなり関数や変数が書ける • static filedのシンタックスシュガーとして実装 • null-safety、JVMターゲットの強化(随時更新) • 新しい async I/O API (Haxe 4.3?) • ES Modules対応(未定、一部は開発中) • Coroutines(未定) 24 Haxe 4.2は そろそろ出そう

Slide 26

Slide 26 text

まとめ • Haxe最新情報はHaxe Roundup • Haxeはゲームでの採用が多い • Webフロントエンドは若干弱いが、改善の見込みあり • デンキヤギも積極的に投資していく予定 • Haxe4.2が近いうちに出るよ • Module-level fieldsの導入が特にセールスポイント 25