Akshell はRAD(Rapid Application Develpmenet)が可能なクラウドサービスであり、オンライン IDEとサーバーサイドJavaScript実行環境を提供する。またクラウドホスティングサービス機能も備えており、アプリケーション配備を非常に簡単に行うことができる。Akshellのクリエータは、Akshellは “ウェブアプリケーションネットワーク”であると説明する。
Akshell コアは Google V8 JavaScript エンジンでアプリケーションを実行する。Google V8 JavaScriptエンジンは JavaScriptのコードをネイティブコードにコンパイルすることにより、パフォーマンスを実現している。Akshellは次のような仕組みでリクエストをハンドリングする。Akshell コアが アプリケーションのmain.jsファイルを評価し、リクエストオブジェクトをエクスポートされたapp() 関数に渡し、実行するのである。このアーキテクチャはJSGI 規格に準拠する。
Akshell環境の基本ユニットは「アプリケーション」である。アプリケーションはそれぞれ一意の名前を持ち、appName.akshell.com ドメインより提供される。Akshell ユーザなら誰でもがアプリケーションを作成することができるが、 現状はフリーの非商業アプリケーションに制限されており、コードはBSD ライセンスで公開しなければならない。
InfoQ は AkshellのクリエータであるAnton Korenyushkinに短いインタビューを実施した。
InfoQ: Akshellを作ろうとした動機を教えてください。またAkshellは開発者をどのように助けるでしょうか。
Anton: 開発者が他のウェブアプリケーション開発に共通のいろいろな雑事にとらわれることなく、タスクに集中できるようにしたい、ということが一番の動機です。システムプログラミングからきた私にとって、ウェブの開発は"原始的" に見えました。 少し凝ったサイトを作ろうとした場合、サイトの目的と全く関係ない技術を山ほど学ばなければいけません。 車輪はなんどもなんども再発明されます。そしてこの地獄の後、さらにこのサーバを運用管理しなければならないのです。
Akshell は、このような状況を変えたい、という私の努力の結晶です。Akshellの哲学はUNIXのそれに由来します: それぞれのプログラムはただひとつのことを、十分実行しなければならない、というものです。
InfoQ: Akshellで開発したアプリケーションの構造の概要を教えてください。メインコンポーネントは何になるのでしょうか。
Anton: Akshell のアプリケーションはそのメインタスクのみ実行すべきです。 付随するタスクは他のアプリケーションで扱うべきで、 これらのタスクはAkshellにより相互に作用できます。それぞれのアプリケーションはライブラリ、つまり他のアプリケーションとコードを共有することができます。Akshell の基本ライブラリは、 名前はakといいますが、Model-View-Controller フレームワークを提供します。このフレームワークを用いて構築されたアプリケーションは3つの主要コンポーネントを持ちます: データベース、モデル、HTML テンプレート (テンプレートはDjangoからポートしました)。そして、JavaScriptのコードがリクエストをハンドリングします。
基本ライブラリの利用は必須ではありません。誰でも代わりのフレームワークを作成することができます。Akshell はJSGI規格に準拠しています。そのため、 すでにあるフレームワークをAkshellにポートすることも可能です。
InfoQ: 永続化はどのように実現しているでしょうか。
Anton: それぞれのアプリケーションはファイルストレージとデータベースへアクセスすることができます。ファイルストレージは一般的なものと変わりありません。データベースへはオブジェクト指向 APIを使用してアクセスすることができます。 またクエリー言語も利用できます。これはJavaScriptに埋め込めるように特別に設計されたもので、SQLと同じくらい強力で、しかもはるかに簡単に使用できます。バックエンドでデータベースはPostgresを使用しています。そのため堅牢です。
InfoQ: Akshellを使用するチームにとって、適切な開発プロセスとツールは何でしょうか。SVNやGit などのソース管理・プロジェクト管理ソフトウェアやサービスは実装されていますか。
Anton: アプリケーション管理者は、開発者を協力者として招待することができます。 Akshell はアクセス権限をハンドリングします。 現状ではSCM機能はサポートしていませんが、gitとGitHubを実装しようと思っています。 ローカルのファイルとAkshellを同期するために、好みのSCM システムを利用してください。 Akshell ツール も利用可能です。
InfoQ: サーバサイドJavaScriptはこの数年でメインストリームになると思いますか。CommonJSについてどのように考えますか。
Anton: 私はJavaScriptはサーバサイドで広く利用されるようになると信じています。なぜなら:
- 全てのウェブ開発者がJavaScriptを習得しています。
- JavaScriptのインタープリタは今でも高速で、どんどん速くなってきています。
- 他の複雑な基本ライブラリを持つ言語より、サンドボックス環境での運用に適しています。私は未来はPaaSになると思っています。
- それにとってもいい言語です。JavaScript、大好き:)
CommonJS は非常に有用な試みです。成功するものと願っています。しかし設計するには、BDFLのような人の力が必要ですが、JavaScriptコミュニティにこのような独裁者が出現するのは好まれないでしょう。
InfoQ: オンラインIDEの時代が来ると思いますか。 Bespinを利用しようとは思いませんでしたか。
Anton: 私は運用管理の作業がとにかく嫌いです。だから、IDEを含むプログラミング作業のほとんどオンラインになってほしいと思っていますし、そう信じています。 Bespinは候補に上げましたが、EditAreaを選択しました。
InfoQ: 今後の予定を教えてください。
Anton: まず、UIを改良し、エディタのタブ、入力評価機能やコンソール機能を追加しようと思います。これらを全てひとつのページで実現できたら、より簡単に開発できるようになるでしょう。 その後、GitHubをAkshellに実装したいです。
詳細はオンラインドキュメントやサンプルアプリケーションで確認できる。