digitally inducedで作成されたIntegrated Haskell PlatformはHaskellの型安全性をサーバ側のレンダリングにもたらし、迅速な開発を実現する、独創的なフレームワークを目指している。
IHPはWarp Webサーバに基づいており、永続層にORMを使用する。IHPは、nixを使用してインストールプロセスを簡素化する。これには、統合データベース、コンパイラ、開発環境を含んでいる。digitally inducedの主張では、IHPを使用すると最初のWebアプリケーションを20分で構築できる。Haskellコードをすぐに使い始めることを目的としたIHP Code Generatorの支援もあり、またDatabase Schema Designerもある。IHPは独自のHTMLマークアップDSLを使用する。これはReact JSXと同様にHSXと呼ばれるが、HTML生成前のステップで型チェックされたHaskellコードに変換される。
InfoQは、degitally inducedのCEO Marc Scholten氏と話をして、IHPについて詳しく学んだ。
InfoQ: IHPを作った背後にある主な動機が何であるか説明していただけますか?
Marc Scholten氏: deigitally indecudeでは、クライアントやパートナと一緒に多くの複雑なソフトウェアソリューションを開発しています。ソフトウェアのライフサイクルを進めていると、ある問題が何度も発生することがわかりました。特に、本当に動的な言語を使用する場合の品質の問題と、パッケージ管理に関連する問題です。そこで、私たちはこれらの問題の解決に着手しました。
多くの人がプログラミング言語の選択は重要ではないと考えていますが、テクノロジーの選択は力が異なり、プロダクトに強い影響を与えると私たちは信じています。私たちは多くの異なるテクノロジーを検討し、Haskellが最高品質のソフトウェアエンジニアリングと開発者の幸福という私たちの目的に最適であることがわかりました。
Haskellは素晴らしい言語ですが、使用するのに本当に良いフレームワークを見つけることができませんでした。私たちは、独創的で、十分に文書化されており、簡単に始められるものを探していました。いくつかのソリューションを評価した後、私たち自身で構築することにしました。
同じプロセスにより、主要なパッケージ管理ソリューションとしてnixを選択することになります: 開発者がプロジェクトを非常に迅速に切り替えることができるようにする必要があります。完全に標準化された開発環境を作ることを目的としていました。プロジェクトのクローンを作成し、1つのコマンドでプロジェクトを開始できるなければなりません。手動で行う必要のあるすべてのものを取り除くことを目指しました。nixパッケージマネージャは、これを可能にするのに最適なツールでした。
InfoQ: IHPは、ブラウザ内でUIを生成するという最近の一般的なアプローチから離れ、かわりにサーバ側のレンダリングに依存するように努めています。あなたの見解では、2つのアプローチはどのように重なり合いますか? それらのメリットとデメリットは何ですか?
Scholten氏: もちろん、シングルページアプリケーションの場合があります。たとえば、Webベースの3Dツールなどの非常にインタラクティブなことを行う場合や、インタラクティブなグラフを操作する場合です。
現在私たちが目にしているのは、多くの開発者がコストやトレードオフを考慮せずにシングルページアプリケーションを構築することを選択しているということです。シングルページアプリケーションは、バックエンドでアプリケーションの状態を処理するだけでなく、クライアントですべての状態処理を実行する必要があるため、開発にさらに多くの労力を要します。明らかに、これはより多くのコードにつながります。したがって、維持するコードが増えます。これにより、バグが大幅に増え、アプリケーション開発が遅くなります。
私たちの経験では、SPAとして現在構築されている多くのアプリケーションは、サーバ側でレンダリングされたアプリケーションとしてより速く、より安定して構築できます。 最近立ち上げられたhey.comはその良い例です: アプリケーションは非常にインタラクティブですが、シングルページアプリではありません。
本当に動的なサーバレンダリングアプリケーションとして実装できないアプリケーションの部分がある場合でも、その特定のページ専用に小さなカプセル化されたSPAを構築できます。このハイブリッドアプローチは私たちにとって非常にうまく機能しており、これが優れたWebアプリケーションを構築する上での前進であると信じています。
InfoQ: あなたの経験では、HaskellはWeb開発にどのような利点をもたらしますか?
Scholten氏: 実際には、Haskellの最大の利点は型安全性です。たとえばNodeJSと比較すると、これにより、LOCあたりのバグが大幅に少なくなります。実行時エラーはほとんどありません。そして、大きな変更を加えるときは、何も壊すことなく、Haskellアプリケーションを簡単にリファクタリングできます。これは、新しい機能を速いペースで構築しているときに大いに役立ちます。私たちは、速く動いて壊すことから、ただ速く動くことへと進化しました。
多くのプログラミング言語エコシステムは、より型安全性の方向に向かっています。たとえばTypeScriptまたはPHPの世界での最近の開発です。私たちは多くの異なるテクノロジーを使用してきましたが、この点でHaskellに匹敵するものはありません。
InfoQ: IHPの成熟度とプロダクションレディのレベルはどれくらいですか?
Scholten氏: IHPは、digitally inducedおよび当社のパートナによってすでにプロダクションに使用されています。IHPの全体的なアプリケーションアーキテクチャは、フレームワークをオープンソース化する前に、多くのイテレーションで改良されてきました。さらに、IHPは、Warp Webサーバなどの戦闘テストされたHaskellライブラリの上に構築されています。したがって、これはすでに大規模なプロジェクトに対してかなり安定していてスケーラブルであることが期待できます。
IHPは、TwitterでHaskellのエンジニアであるMatt Parsons氏によってHaskell on Railsとして説明されている。IHPのいくつかの設計上の決定を批判する一方で、Parsons氏はそれを有用な取り組みと見なしている:
これは、開発者の経験に重点を置いたエコシステムの新鮮なエネルギーです。これはRailsの移植ですが、これはなかったもので、間違いなく使用できます。それは他の場所でHaskellへの扉を開きます。
IHPは、macOS、様々なLinux、WindowsのLinuxサブシステムを含むほとんどのオペレーティングシステムで利用できる。GitHubで入手できる。