apeescape2.com
  • メイン
  • ブランドデザイン
  • 仕事の未来
  • プロジェクト管理
  • モバイル
バックエンド

Haxe:クロスプラットフォーム開発の最高の秘密

現代のプログラミング言語Haxeは一部のサークルでよく知られていますが、これを読んでいる多くの人はそれを聞いたことがありません。ただし、そのニッチなステータスにだまされてはいけません。 2005年に最初に登場して以来、忠実な(かなり静かな)フォローによって戦いのテストが行​​われてきました。それは、ビジネス、ゲーム、さらには学術的な文脈での開発のための機能の実用的で成熟した組み合わせを誇っています。

Disney、Hasbro、BBCはHaxeを使用しています 、では、なぜもっと多くの開発者がそれを聞いていないのですか?おそらく、その汎用性は、Haxeプログラミング言語用の単一の「キラーアプリ」がないことを意味します。

あるいは、最も初期のキラーアプリの1つである、瀕死のFlashプラットフォームからの移行パスが、いくつかの点で少しニッチであるためかもしれません。由緒あるカジュアルゲーム市場は、アドビの不確実性の陰で過去数年間スクランブルをかけてきました。そして今や、Flashベースのものがすべて明らかになりました。 2020年までに正式に移動する必要があります 。



ビジネスソフトウェアエンジニアと Web開発者 実際、多くのゲーム開発者も「Flash」を聞いてすぐに気を失うかもしれません。したがって、HaxeFoundationはFlashDevelopIDEを採用し、HaxeIDEとしてブランド名を変更しました。 HaxeDevelop 。

しかし、特にそれが非常に関連性が高い場合は、関連付けを振り払うのは難しい場合があります。たとえば、ソーシャルゲームに 7500万人のユーザー 、Flashから140万行のコードを最近2年間移行したことで、UnityとHTML5よりもHaxeを選びました。 (詳細については、 ケーススタディ 。)

ゲーム以外のソフトウェアの開発者にアピールしながら、HaxeFoundationがこのようなユースケースを強調できるようにするのは難しいかもしれません。しかし、それで少しの探索を思いとどまらせないでください。

Haxeとの大きな取引は何ですか?

Debianプロジェクト Haxeについて説明します 「ユニバーサルプログラミング言語」として。それにはいくつかの側面があります。

一般に、 Haxe言語は(良い)コードを再利用することを意味します 。つまり、多くのプラットフォームでHaxeコードを再利用でき、既存のHaxeおよび非Haxeコードと統合できます。 良い 、Haxe言語は、型安全性など、多くの実証済みのパラダイムを利用できるようにします。

汎用性のテーマに沿って続けると、これはユースケースのいくつかの主要なカテゴリに変換されます。もちろん、フラッシュの移行は別として。

クロスプラットフォームのアプリやゲームをゼロから開発する。 Haxeは、デスクトップ、モバイル、およびWebプラットフォームをすべて単一言語のソースベースからターゲットにできます。クロスプラットフォームプログラミング言語は新しいものではなく、クロスプラットフォーム向けの特別なソリューションがあります デスクトップ そして モバイルアプリ とゲーム。しかし、Haxeは、複数のプラットフォームだけでなく、複数のパラダイムをターゲットにできるという意味で、もう少し特別なことをします。 HTML5とネイティブバイナリ。

「それらすべてを支配する」1つの言語。 Tolkienの参照を許してください。ただし、Node.jsがWebサイトのフロントエンドとバックエンドで同じ言語を使用する時代を歓迎したように、クライアントサーバーアーキテクチャに似たものを持つプロジェクトは、両方の半分にHaxeを使用できます。

たとえば、Webアプリ FontStruct フロントエンドのHTML5キャンバスへの描画とバックエンドのJava2D経由の両方にHaxeを使用します。 (ただし、前述のように、このアプローチはオプションです。Haxeは、既存の非Haxeコードでもうまく機能します。 それはあなたを縛らないように設計されています 。)アプリ、ゲーム、ビジネス、さらにはレンダリングロジックをすべてのコンテキスト、プラットフォーム、出力言語で一貫性を保つことは、この方法ではるかに簡単です。

s corp vs ccorp税の例

JavaScriptから型安全性への脱出。 待ってください、これがTypeScriptの目的ではありませんか?はい、制限されたままにしたい場合 JavaScript 出力。対照的に、Haxe言語は、Java、C ++、C#、Python、Luaにトランスパイルすることもできます。 とりわけ 。

一方、Haxeプログラミング言語はJavaScriptから学ぶのに十分簡単です。その構文は、たとえばRebolのような大きなパラダイムシフトを意味するものではありませんが、そのようなシフトの利点はあります。 Haxeコア開発者のDr.Andy Li TypeScriptとHaxeのより詳細な比較を書いた どちらの言語も進化を続けていますが、それは今日でも当てはまります。

コンパイラの非常に高速なワークフロー。 これは最近追加された部分です(以前はNekoがオプションでしたが):HashLinkはクロスプラットフォームの仮想マシン(VM)であり、コンパイルが非常に高速であると同時に、実行時に十分なパフォーマンスを発揮するというバランスを取っているようです。 3Dゲームのように。しかし、ウェブ側でも、 Haxeは、コンパイル時と実行時の両方でTypeScriptよりも優れたパフォーマンスを発揮します 。

エキサイティングなフロンティア。 Haxe自体はオープンソースであり、活発なコミュニティがあり、常に新しい言語機能が追加されています。独自の最高のサブシークレットは、コンパイル時のマクロシステムである可能性があります。 多くの興味深いユースケース 、心ゆくまでメタプログラミングできます。 (以下にいくつかの例を示します。)

事業を始めることによって富を創造しようとするプロセス

他に誰がHaxeを使用していますか?

初心者、ゲーム開発者はもちろん、Madden NFL Mobile、Evoland II、Double Kick Heroes…これらと他の何百もの公開されたゲームは、Haxeを使用して開発されました。しかし、Haxeはゲーム領域の外でも波を立てています:

  • 2014年に、 TiVo Haxeを使用して増加 TiVo Premiereボックスのパフォーマンスが30%以上向上 。
  • Massive Interactive、そのクライアントには DAZNとテレシネ Haxeベースの「スマートTV」システム用(両方とも大規模なユーザーベース) Haxeを何年も使用しています 。彼らのUIアーキテクトであるPhilippeElsassは、大規模なWebプロジェクトでの作業経験において、HaxeはTypeScriptよりも使いやすく、コンパイルが約1桁速い傾向があると私に指摘しました。
  • Synoliaは、オンラインカスタマイズツールにHaxe言語を使用しています ハイジ 、によって使用されます フランスの主要ブランドであるカルフールとラフナック、そしてニコロデオン。 Synoliaによると、Haxeツールキットを使用すると、FlashからHTML5への移行を効率的に管理できると同時に、モバイル分野で新しいビジネス開発の機会を利用することができます。 HeidiはSaaSアプリケーションであるため、Haxeツールキットを使用すると、アプリのさまざまなレイヤーやサービス間で共通のソースコードを共有できます。
  • 多国籍企業 ドクレアホールディング 2017年にHaxeFoundationの戦略的パートナーになりました 。

Haxeエコシステムはどのようなものですか?

ゲームとHaxeに関して言えば、オープンソースフレームワークとライブラリの点で広く広い世界です。独立したインディーチームから国際的なクライアントとの成功したスタジオまで、Haxeユーザーは至る所でコードを共有しています:

  • 火炎 ディズニー、コカコーラ、トヨタなどのブランドがHTML5ゲームを開発するために使用しています。
  • ヒープ 最近ヒットしたノースガードの3D戦略の背後にある高性能ゲームフレームワークです。
  • 何百万ものモバイルゲームプレイ、迅速な開発ライブラリを強化 awe6 おそらく隠された宝石の中の隠された宝石です。
  • デスクトップとモバイルに加えて、XBox One、Nintendo Switch、PlayStation4をターゲットにできるKhaは その上に構築された20以上のゲームエンジン 。これには、Blenderが完全に統合され、最近それ自体がオープンソースになったArmoryが含まれます。
  • 元々はFlash用の古いFlixelライブラリをモデルにしていましたが、 HaxeFlixel スリーパーヒットのようなゲームの背後にある人気のある選択肢です ディフェンダーの探求 。
  • 数年前にFacebookのAngryBirdsポートに使用されたフレームワークであるGamua’s Starlingは、現在、 オープンソースのHaxeポート 。
  • OpenFL は、Flash APIに基づいており、追加のライセンス料なしで、複数のコンソール(PlayStation 4、PlayStation Vita、XBox One、Nintendo Switch)をターゲットにする方法にもなります。 HaxeFlixelとStarlingはどちらもOpenFLの上に構築されていますが、受賞歴のあるゲームのように、OpenFLで直接開発されているゲームもあります。 論文、お願いします 。
  • ネイティブメディアエンジン、 NME 、OpenFLが何年も前に分岐したものから、まだメジャーバージョンもリリースされています。
  • たぶんあなたはHaxePunk(FlashPunkから降りた)が GitHubのリリースレーダーブログで紹介されました 。
  • 高度に最適化 うなじ物理エンジン より高度な物理学を必要とする2Dゲームエンジンまたはシミュレーターに最適です。

確かに、ゲーム開発シーンは、Haxe言語エコシステムのより目に見える部分です。 (おそらくこれは、Ludum Dareのようなゲームジャムの性質のおかげですか?)しかし、ビジネス側、さらには企業側も透けて見えています。例えば:

  • モジュラーアプリフレームワーク hexMachina 他の多くの機能の中でも、ドメイン固有言語(DSL)の使用法とモデルビューコントローラー(MVC)アーキテクチャーをサポートします。
  • UIレイアウトエンジン HaxeUI 積極的に進化し、企業のサポートがあります。のような製品 3DVista そして Kaizen for Pharma プロダクションアプリが同梱されています。
  • それだけではありませんが thx.core ライブラリとその親戚は、LodashがJavaScriptに対して行うのと同じように、Haxeに汎用の拡張機能を提供します。
  • JavaScriptと言えば、JavaScriptをターゲットとするHaxeプロジェクトは、JavaScriptを活用することでメリットが得られる可能性があります Haxeモジュラー 、TelecineとFlowPlayの両方が、クライアント側での高速読み込みを維持しながら、巨大なプロジェクトを拡張するのに役立ちました。
  • Haxeのエコシステムも進化を続けており、現在のテクノロジーと連携しています。例えば今あります GraphQLライブラリ 。
  • 最後に、模範的な ティンカーベル Haxeのマクロシステムをあらゆる種類の便利なタスクに活用します。 Webルーティング、単体テスト、SQLの埋め込みのためのフレームワークに加えて、テンプレート作成やCSSセレクターの解析から、非同期/待機や低学習曲線のリアクティブ状態処理まで、あらゆるもののライブラリがあります。

これらは、Haxe言語のユーザーがこれまでに取ったいくつかの方向性のハイライトにすぎません。 Haxe.orgは 人気順にソートされたライブラリの完全なリスト タグで閲覧することもできます。ただし、HaxeFoundation自体が維持しているいくつかのプロジェクトを強調することも価値があります。

  • DevOpsアングルについては、公式があります HaxeDockerリポジトリ 。
  • 安定性に関しては、メジャーバージョンのアップデートがあっても、Haxe4にはいくつかあります Haxe3に依存するプロジェクトを持つ人のための互換性ヘルプ 。

それはすべて素晴らしいように聞こえますが、システムで開発環境を稼働させるのはどのようなものですか?

Haxeクイックスタート

Win、Mac、Linuxのいずれの場合でも、最初のステップは Haxeをダウンロード 。そこでのインストーラーは、いくつかの異なるものを提供します。

  1. Haxeコンパイラ自体 、これで実行できるはずですhaxeターミナルまたはコマンドプロンプトから。
  2. Haxe標準ライブラリ 、低レベルの基本だけでなく、高レベルの汎用サポートも可能にします。たとえば、XML、ZIP処理、およびMySQLアクセスはすべてここで容易になります。
  3. Haxelibパッケージマネージャー 、haxelibを介して新しいパッケージをインストールできますコマンド。 (注:チェックする価値もあります lix Haxelibが提供するよりも高度なパッケージ管理のために、特に専門的なコンテキストでHaxeを使用することを検討している場合。)
  4. 誰か 、迅速かつ効率的な再コンパイルとデバッグを可能にする仮想マシンターゲット。

(とはいえ、セットアップする方法は複数あります。たとえば、すでにnpmをインストールしている場合、OpenFLのインストール手順にはYeomanコマンドを介してHaxeをインストールするオプションがあります。HomebrewとChocolateyも同様のパスを提供します。 )

とにかく、Haxeを入手したら、コマンドラインから単独で使用できますが、開発者はIDEの使用を選択することがよくあります。 FlashDevelop / HaxeDevelopは、引き続き主にWindowsでのみサポートされます。他のほとんどのオプションはクロスプラットフォーム(Win / Mac / Linux)です。

  • VSCodeのHaxeプラグインは十分にサポートされています。
  • IntelliJ IDEA Haxeプラグインもあります 。
  • ゲームフレームワークKhaには独自のIDEがあります スタジオコード (Win / Mac / Linux)。
  • Sublime TextとAtomの両方に、Haxeプラグインがあります。 他の多くの編集者 、そのうちのいくつかはプラットフォーム固有です。

このクイックスタートガイドでは、VSCodeを使用します。取得するのが最も簡単かもしれません Haxeエクステンションパック Ctrl + Pとext install haxe-extension-packを使用しますが、ミニマリストの場合はext install vshaxeを使用することをお勧めします。基本的なHaxeプラグイン自体については、パックの他の部分を選択してください。

Haxeプロジェクトの作成

Haxe言語は多くのターゲットにトランスパイルできるため、ビルドファイルを使用すると、各ターゲットに対してこれがどのように行われるかを管理しやすくなります。ただし、開始するには、.hxを含む単一のHaxeクラスファイルだけが必要です。拡張。

挿入するコードについては、配列内包表記の例を見てみましょう。 try.haxe.org そしてそれをTest.hxというファイルに入れます:

class Test { static function main() { var a = [for (i in 0...10) i]; trace(a); // [0,1,2,3,4,5,6,7,8,9] var i = 0; var b = [while(i <10) i++]; trace(b); // [0,1,2,3,4,5,6,7,8,9] } }

これで、Test.hxの場所から、Haxeを解釈モードで実行できます。つまり、トランスパイルをまったく行わずに、これら2つのtrace()の出力を確認できます。呼び出し:

$ haxe -main Test --interp Test.hx:4: [0,1,2,3,4,5,6,7,8,9] Test.hx:8: [0,1,2,3,4,5,6,7,8,9]

素晴らしい、それは動作します!

HaxeコードをJavaScriptにトランスパイルする

あなたのウェブページ上のJavaScriptを介してこれを世界と共有したいとします。これはHaxeに組み込まれており、次のように簡単です。

$ haxe -main Test -js haxe-test.js

Node.jsがインストールされている場合は、次のようにコマンドラインからの出力を確認できます。

各ユニットは、のフォーマットを作成します
$ node my-cool-test.js [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

それ以外の場合、haxe-test.jsのコード準備が整いました。ウェブページに含める場合は、読み込み時にウェブブラウザの開発者コンソールに出力が表示されます。

ネイティブバイナリへのトランスパイルとコンパイル

開発中のデスクトップ用のネイティブバイナリも必要だとします。これを行うには、C ++ターゲットにトランスパイルするので、C ++を使用して(インストールされていると仮定して).cppをコンパイルできます。ネイティブバイナリに出力します。そのためには、hxcppが必要なので、インストールする必要があります。

$ haxelib install hxcpp

その後、次のコマンドを使用して、トランスパイルとコンパイルの両方を同時に実行できます。

$ haxe -main Test -cpp bin

これで、バイナリを実行する準備が整いました。

$ bin/Test Test.hx:4: [0,1,2,3,4,5,6,7,8,9] Test.hx:8: [0,1,2,3,4,5,6,7,8,9]

(Windowsでは、これは代わりにbinTest.exeになります。)

Haxeビルドファイル(.hxml)の作成

示唆に富む拡張にもかかわらず、.hxml .hxprojとは異なり、ファイルはXMLではありません。 HaxeDevelopとFlashDevelopで使用されるファイルですが、この記事では取り上げません。これがbuild-all.hxmlです上記で行ったトランスパイルを実行するように見えます。

-main Test # tells Haxe our main class is Test (case-sensitive) --each # all of the above commands will be applied to each target -js haxe-test.js # our first transpilation target --next # no other options, time to move to the next target -cpp bin # our second transpilation (and compilation) target

プレフィックスの違いに注意してください:-main、-js、および-cpp haxeに渡す各パラメータは直接、--eachおよび--next (2つのハイフン)はメタレベルであり、コンパイラーに他のパラメーターをどう処理するかを指示します。

haxe build-all.hxmlを実行するだけで、JavaScriptとネイティブターゲットの両方をヒットできるようになりました。

JavaScriptにトランスパイルし、すぐにNodeを使用して結果を実行したい場合は、haxe run-js.hxmlを実行できます。ここで、run-js.hxmlこのように見えます:

-main Test -js haxe-test.js -cmd node haxe-test.js

同様に、ネイティブバイナリの「ビルドと実行」は次のようになります(Linuxでは、つまり、Windowsではバリエーションが必要になります)。

-main Test -cpp bin -cmd bin/Test

VSCodeはどうですか?その部分は単純です。インストールした拡張機能は、これらを自動的に取得します.hxmlファイル。ドロップダウンに自動生成されたビルドタスク(tasks.jsonなし)が表示され、使用するビルドファイルを選択できます。

注:お持ちの場合は注意してください 複数のVSCodeウィンドウが開きます ただし、この記事の執筆時点では、Ctrl + Bを使用したビルドで問題が発生する可能性があります。 (コマンドラインは引き続き使用できますが、問題ありません。)

Haxe 4

上記の設定に従った場合、ダウンロードページにHaxeインストーラーの3.xブランチと4.xブランチの両方へのリンクが含まれていることに気付いたかもしれません。

Haxeコンパイラの最先端バージョン4には、多くの新機能が搭載されています。あるケースでは、これはそのマクロシステムの力の証でもあります。Haxeコンパイラは短いラムダ関数のサポートを欠いていたため、 slambdaライブラリはマクロを介してそれらのサポートを実装しました 。バージョン4の時点で、サポートはコンパイラーに組み込まれており、ライブラリーは非推奨になっています。

では、Haxe 4は他に何をもたらしているのでしょうか?

必ずしも多くの注目を集める人ではありません。代わりに、Haxe4には多くの小さな改善があります。結局のところ、Haxe自体 です かなり成熟したテクノロジーであり、おそらく同様のプロジェクトよりも小規模で焦点を絞ったチームによって開発されています。いずれか1つのプロジェクトを呼び出すのは少し難しいかもしれません。 同様 Haxeへ。

その最も興味深い機能の多くは、すでにしばらくの間存在しています。たとえば、HaxeはNekoまたはHashLinkを介して高速ワークフローを提供することを前述しました。ただし、2016年以降、コンパイルサーバーも搭載されています。つまり、非VMターゲットの場合、大規模なライブラリに依存するプロジェクトの再コンパイルは、メモリ内キャッシュによりはるかに高速になります。これは、HaxeIDEでコード補完に利用することもできます。

物理エンジンはどのように機能しますか

しかし、Haxe 4は、特に次のようになります。

  • マクロの実行が4倍高速になります。
  • PHP5のサポートは終了しました。
  • 2つの言語間でわずかに異なっていても、TypeScriptユーザーが歓迎する構文の更新がいくつか行われました。つまり、 矢印関数 と新しい 関数型の構文 。

Haxeチュートリアル

あなたはいつでもすぐに飛び込むことができますが Haxeの標準API または 構文ドキュメント 、もう少しあります 初心者に優しいHaxe素材 利用可能 同じように 。

ビデオを重視する場合は、シアトルで開催されるHaxe US Summit 2018 ワークショップを開催しています 他の年のものと一緒に、より多くのインサイダーの見解を得るために。

しかし、より簡単に始めることができるのは、より具体的なチュートリアルである場合があります。のような HaxeFlixelでダンジョンクローラーゲームを構築する方法に関する最初から最後までのチュートリアル 。もあります HaxeFlixelチュートリアルのシリーズ 舞台裏で何が起こっているのかを詳しく説明しています。 3D側には、 Armoryの使用を開始するためのHaxeチュートリアル 。

または多分あなたはただ欲しい XMLの高速処理に関するHaxeチュートリアル —これは、現在数年前の多くのチュートリアルの1つですが、それでもかなり関連性があります。先に述べたように、フロンティアはたくさんありますが、Haxeでの開発の基本の多くはこの時点で安定しているため、チュートリアルがすぐに古くなるとは限りません。 (それらが行われる場合、それは通常、Haxeコア自体ではなく、特定のライブラリへの依存から生じます。)


ご覧のとおり、Haxe言語は、さまざまな方向に進むことができます。 Haxeの多様で魅力的な世界へのこの紹介を楽しんでいただけたと思います。また、Haxeのテクノロジーで最終的に何をするのかを聞くのを楽しみにしています。

関連: Haxeレビュー:Haxe4の機能と長所

基本を理解する

HaxeはTypeScriptよりも新しいですか?

Haxeは実際にはTypeScriptよりも少し古く、その背後にある同じ企業の重みはありませんが、その言語とトランスパイラーはどちらもかなり成熟しています。

Haxeはどのターゲットにコンパイルしてトランスパイルできますか?

Haxeコンパイラは、JavaScript、Java、C ++、C#、PHP、Python、ActionScript 3、Flash、Luaに加えて、HashLinkおよびNeko仮想マシンをターゲットにできます。次に、Haxeの出力は、Windows、Linux、macOS、iOS、Android、PlayStation 4、PlayStation Vita、Nintendo Switch、XBoxOneで実行できます。

Haxeはゲーム開発専用ですか?

いいえ。Haxeの活気に満ちたgamedevエコシステムには、OpenFL、HaxeFlixel、Heaps、Kha、Flambe、Armory、Kha、awe6、NME、HaxePunkなどのフレームワークが含まれていますが、ビジネスアプリケーションやWebサイトの制作にも役立ちます。

Seleniumの自動化:ページオブジェクトモデルとページファクトリ

技術

Seleniumの自動化:ページオブジェクトモデルとページファクトリ
百万ドルの市場は十億ドルの市場よりも優れていますか?

百万ドルの市場は十億ドルの市場よりも優れていますか?

投資家と資金調達

人気の投稿
UXとWebアクセシビリティの重要性
UXとWebアクセシビリティの重要性
成功の予測—現金管理のガイド
成功の予測—現金管理のガイド
アプリを収益性の高いものにする、パート2 –モバイルファネルの活用
アプリを収益性の高いものにする、パート2 –モバイルファネルの活用
優れたUXデザインが必要ですか?あなたの自我を落としてください。
優れたUXデザインが必要ですか?あなたの自我を落としてください。
ユーザーフローの強化–UX分析のガイド
ユーザーフローの強化–UX分析のガイド
 
データの視覚化–ベストプラクティスと基盤
データの視覚化–ベストプラクティスと基盤
IoTバリューチェーンを登る
IoTバリューチェーンを登る
良いか悪いかを変える? UXイノベーションのガイド
良いか悪いかを変える? UXイノベーションのガイド
生体認証セキュリティ–パスワードなしの認証または流行の鍵?
生体認証セキュリティ–パスワードなしの認証または流行の鍵?
どこでもソフトウェア開発:私の分散型リモートワークプレイス
どこでもソフトウェア開発:私の分散型リモートワークプレイス
人気の投稿
  • これらのうち、ワークフローのより広い範囲を理解するのに役立つ方法ではないものはどれですか?
  • $ error [] php
  • ギリシャ危機とは
  • 転換社債はどのように機能しますか
  • ギリシャの金融危機の原因は何ですか
  • Webサーバーとしてラズベリーパイを使用する
  • 不和ボットを取得する方法
カテゴリー
投資家と資金調達 Webフロントエンド エンジニアリング管理 分散チーム プロセスとツール Uxデザイン Uiデザイン トレンド その他 計画と予測

© 2021 | 全著作権所有

apeescape2.com