![]() | |
| パラダイム | マルチパラダイム:機能的、命令的 |
|---|---|
| 開発者 | MLステート |
| 初登場 | 2011年 |
| 安定リリース | 1.1.1 (安定版) / 2014年3月8日[1] [2] |
| タイピングの規律 | 静的、強い、推測された |
| 範囲 | 語彙の |
| 実装言語 | OCaml、Opa、JavaScript、シェル、C、標準ML |
| OS | Linux、macOS、Windows |
| ライセンス | AGPLv3、MIT |
| Webサイト | opalang.org |
| 影響を受けた | |
| OCaml、Erlang、JavaScript | |
Opa は、スケーラブルなWeb アプリケーションを開発するためのプログラミング言語です。GNU Affero General Public License (AGPLv3) およびMIT Licenseに基づいてリリースされた無料のオープンソース ソフトウェアです。
Opaはクライアントサイドとサーバーサイドの両方のスクリプトに使用でき、完全なプログラムはOpaで書かれ、その後サーバー上でNode.jsに、クライアント上でJavaScriptにコンパイルされ、コンパイラが両者間のすべての通信を自動化します。[3] [4] Opaは強力な静的型付けを実装しており、 SQLインジェクションやクロスサイトスクリプティング攻撃などのセキュリティ問題からの保護に役立ちます。[5]
この言語は、2010年のOpen Worldwide Application Security Project ( OWASP )カンファレンスで初めて公式に発表され、 [6]ソースコードは 2011年6月にGNU Affero General Public License (AGPL)の下でGitHub [7]でリリースされました。その後、ライセンスはソフトウェアフレームワーク部分(ライブラリ)についてはMITライセンスに、コンパイラについてはAGPLに変更されたため、Opaで書かれたアプリケーションは、プロプライエタリライセンスでもオープンソースライセンスでも、あらゆるソフトウェアライセンスの下でリリースできるようになりました。
デザインと機能
Opaはウェブサーバー、データベース、分散実行エンジンで構成されています。[8 ] Opaで書かれたコードは、サーバー側ではNode.jsを使用してJavaScriptにコンパイルされ、クライアント側ではクロスブラウザ互換性のためにjQueryを使用してJavaScriptにコンパイルされます。[9] 一部のリッチインターネットアプリケーション(RIA)プラットフォームと比較したこのアプローチの利点は、ユーザーがブラウザにプラグインをインストールする必要がないことです。 [10] Opaはウェブフレームワークと同じ動機を持っていますが、異なるアプローチを採用しています。[11]設計者は、これによりSQLインジェクションやクロスサイトスクリプティング(XSS)攻撃 などの多くのセキュリティ問題を回避できると主張しています。 [12]
コア言語は関数型で、型推論を備えた静的型システムを備えています。Opaは、Erlangプロセスと同様に、命令型状態をカプセル化し、メッセージパッシングを使用して通信するセッションも提供します。Opaは、 HTML [13]や構文解析式文法に基づくパーサーなど、 Web開発で一般的な多くの構造や機能を第一級オブジェクトとして提供します。[14]言語とWeb関連の概念がこのように密着しているため、OpaはWeb以外のアプリケーション(デスクトップアプリケーションなど)には適していません。[15]
2012年2月の0.9.0リリースでは、オブジェクトリレーショナルマッピングに似た、非リレーショナルのドキュメント指向データベースMongoDBのデータベースマッピング技術が導入されました。[16] [17] [18] 2013年2月の1.1.0リリースでは、PostgreSQLのサポートも追加され、いくつかのSQLデータベースのサポートへの道が開かれました。
例
こんにちは世界
従来の「Hello, World!」プログラムは、「Hello, web!」というコンテンツを含む静的ページを提供するWebサーバーを生成するもので、Opaでは次のように記述できます。[19]
Server.start ( Server.http , { title : "Hello" , page : function ( ) { <h1> Hello , web!</h1> } } )
次のコマンドを使用して、スタンドアロンの実行可能な JavaScript ファイルにコンパイルできます。
$ opa hello_web.opa
生成された実行可能な JavaScript ファイルを実行すると、Web アプリケーションが起動します。
hello_web.js
をビルドします。参照
- Ur – ウェブ開発のための関数型言語
- Dart – ウェブアプリ向けの JavaScript 代替
- Haxe – ウェブアプリ向けの類似言語
- CoffeeScript –ウェブアプリ用に JavaScript にトランスコンパイルされた言語
- Dark –サーバーレスサービスの開発と展開を統合する言語
参考文献
- ^ 「リリース 1.1.1: MLstate/opalang」。GitHub 。 2021年1月29日閲覧。
- ^ 「Opaに関する素晴らしいニュース」。2021年1月29日閲覧。
- ^ Koprowski, Adam (2012 年 2 月 24 日)。「Node.js vs. Opa: Web フレームワーク対決」。developer.com。
- ^ Opa はさまざまなサーバー側バックエンドをサポートしていますが、最も人気のあるのは Nodejs です。
- ^ Robertson, William; Giovanni, Vigna (2009)。「強力な型指定による Web アプリケーションの整合性の静的な強制」。SSYM'09、第 18 回 USENIX セキュリティ シンポジウム会議議事録。[永久リンク切れ ]
- ^ 「OPA: 健全で安全かつセキュアな Web のための言語サポート、OWASP 2010」。OWASP。2010 年 6 月。
- ^ 「GitHub リポジトリ」。GitHub。
- ^ 「Opa – スケーラブルなオープンソースクラウド言語」。WebAppers。2011 年 7 月 22 日。
- ^ 「インタビュー: François-Régis Sinot 氏、Web 開発プラットフォーム Opa について語る」 InfoQ、2011 年 9 月 7 日。
- ^ Neil McAllister (2011 年 9 月 8 日)。「すべてを支配する Web 開発言語 Opa の紹介」InfoWorld。
- ^ 「InfoWorld レビュー: 迅速な Web 開発のためのツール」。InfoWorld。2010年 5 月 12 日。
- ^ “Auch Opa ist für Cloud-Anwendungen”.ハイセオンライン。 2011 年 7 月 29 日。
- ^ 「Opa – Webプログラミングへの統一されたアプローチ」。i-Programmer。2011年8月28日。
- ^ Koprowski, Binsztok (2011). 「TRX: 形式検証済みパーサーインタープリター」。Logical Methods in Computer Science。
- ^ 「Opa, un nouveau langage pour le développement d'applications Web」 (フランス語)。 LinuxFr. 2011 年 6 月 22 日。
- ^ 「Hello, database」。Opa ドキュメント。2014 年 1 月 12 日時点のオリジナルよりアーカイブ。2012 年 2 月 22 日閲覧。
- ^ 「低レベル MongoDB サポート」。Opa ドキュメント。2014 年 1 月 12 日時点のオリジナルよりアーカイブ。2012年 2 月 22 日閲覧。
- ^ 「プログラミング Opa: Web 開発の再考」。Computerworld。2012年 2 月 1 日。
- ^ Aitken, Alastair (2011 年 7 月 26 日). 「Opa、クラウド言語 - テストドライブ」. Morgan Hill. 2011 年 9 月 25 日時点のオリジナルよりアーカイブ。2011年9 月 6 日閲覧。
文献
- Opa: Up and Running、2013年、O'Reilly Media ISBN 978-1449328856
外部リンク
- 公式サイト
- GitHubの Opa

