OCaml で Web サービス全体書けるマン
動的型付言語を使った開発では防御的プログラミングとテストに時間を費してきたので、強い型システムと代数的データ型を持った関数型言語に省力化・効率化の観点で注目していた。特に昨今の Web 開発は関数型言語がアドバンテージを持ちうる状況にあると思われる。以下でそれを説明する。 Web 開発を最小限のスキルセットと工数で済ませようとすると、フロントエンドとバックエンドで実装の一部を共有する、いわゆる Isomorphic JavaScript が候補になる。 現在流行している Redux のようなフロントエンドのアーキテクチャでは、あらゆる操作やイベントは action として抽象化される。分散記述された action に対し reducer の処理は過不足なく記述されなければならない。しかしこの網羅性の検証は JavaScript ではプログラマの責任であり、アプリケーションが大規模化するに従って負担も大きくなるだろう。対して、代数的データ型を持つ関数型言語であれば静的型検査としてコンパイラが網羅性を保証できる。 実際、先例として Elm などがあるが、Elm は JavaScript にコンパイルされる AltJS の一種であり、サーバサイドのバックエンドを書くことは不可能ではないにしろライブラリなどの状況を考えると現実的ではない。 これに対して OCaml には高性能なネイティブコンパイラと JavaScript コンパイラ (js_of_ocaml、BuckleScript) の両方が存在するため、理屈としてはフロントエンドもバックエンドも同じ実装を共有する Isomorphic OCaml が可能であるという利点がある。 この見解を実証するために、先ず Redux / Elm 風の FRP ベースのフロントエンドフレームワークとして https://github.com/sekia/caelm/ を開発している。自作の有用性でもって見解を実証して Web 開発にも OCaml を普及させたい。
要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。
なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。