CodioはブラウザベースのIDEである。数多くの言語をサポートし,コードテスト用に自身のUbuntuインスタンスを備える。
Codioは先日ベータ版が公開されたばかりの,比較的新しいオンラインIDEである。他のオンライン統合開発ツールがそうであるように,Codioはブラウザ上で動作する。メジャーなブラウザはすべてサポートされている。しかしCodioにはBox - サーバ上でリモート動作するUbuntuインスタンスが付属していて,Node.js, Ruby, Python, C, Java, さらにはGit/Mercurial/SVNがプリインストールされているのだ。Boxには他にもAntやApache, Erlang, F#, Go, Grails, Groovy, Haskell, MariaDB, memcached, MongoDB, Monoなど,数多くのコンポーネントをインストール可能だ。完全なリストはWebサイトで公開されている他,GitHub上でも参照することができる。Boxはターミナル経由でアクセスされ,開発中のコードや関連するサービスを実行するためのサポートとして機能する。エディタにアクセスすると,Boxが自動的に起動される仕組みだ。
IDEには次のような機能がある。
- 多数の言語に対応するシンタックスハイライティング。一般的なC, C++, Java, F#, HTML, JavaScript, CSS以外に,あまり一般的ではないGoやRust, D, R, さらにOcaml, Scheme, Pascalなどにも対応する。
- HTML, CSS, JavaScriptファイルの自動補完サポート。
- コードフォーマッティング。
- アノテーション – コード内にコメントや説明を導入するための手段である。
- HTMLとCSSのEmmet省略形。例えば3つのエントリを持つ符合なしリストならば,
ul>li*3
と記述することで,エディタが対応するHTMLを生成してくれる。 - コード上でのリアルタイムコラボレーション。
- 複数カーソル。
- プロジェクトの共有。
- Git, Mercurial, SVNのプリインストールサポート。
- 個人のBox上へ,あるいはGit, FTP, SFTP, RSYNC, Nodejitsu, Parse.com経由でのデプロイメント。
- Bowerの統合。
InfoQはツールの詳細を確認するため,Application Craft Ltd.のCEOであるFreddy May氏にインタビューした。
InfoQ: Codioはどのような言語を使って開発されているのですか?
FM: フロントエンドにはHTML5+CSS+JSのみを使用しています。プラットフォーム自体はJavaとNode.jsを同じ程度,それからメインのデータストアにMongoDBを使用しています。
InfoQ; 他のオンラインIDEとの違いは何でしょう?
FM: 最高にフレンドリなIDEだという点ですね。私たちは機能を犠牲にすることなく,エクスペリエンス全体をシームレスで簡単で,可能な限り”作業の邪魔をしない”ようにするために,多くの努力を払ってきました。その結果として,教育目的からプロの開発者にまで幅広く利用されているのです。
また私たちは,世界中のほとんどの学校を対象とした新たなテーマとして,コード教育を行う上で直面する苦労を緩和するような,コーディング教育者に特化したエキサイティングな新機能を近々発表する予定です。優れたコーディングプラットフォームと統合された指導者支援のコンビネーションは,非常にユニークなものになるでしょう。
オンラインIDEの多くは,実は単なるオンラインコードエディタに過ぎません。Codioでは,すべてのプロジェクトに対して,個々にUbuntu Servcer (Codio Box) を提供します。これによってコードの記述だけではなく,自分自身のマシン上のようにコードを実行することが可能になります。コードをデプロイしたり,別の場所にコピーしたりする必要はありません。Codio Boxにはそれぞれ,開発者が一般的に使用する言語やツールがプリインストールされています。他の言語やツールのインストールも,Codio Box Partsを使用すれば非常に簡単です。コマンドひとつで,完全なスタックをインストールすることができるのです。
最先端の仮想化技術を使用することによって,CodioプロジェクトとBoxのロードはほとんど瞬時に完了します。
InfoQ: どのような開発者が対象なのでしょう?
FM: Microsoftに強くフォーカスしているような開発者を除けば,どのようなフルスタック開発者の使用にも適しています。フロントエンド開発者に対しては,すべての面で最適です。バックエンドにはCodio BoxにNode.js, Ruby, Python, C, Javaがプリインストールされています。コマンドひとつでスタック要素をインストール可能な“Code Box Parts”を使用すれば,その他ほとんどのバックエンド言語も簡単にインストールできます。
開発者を目指す人たちやコーディングの教師も対象ですね。フロントとバックエンド開発用のマシンをセットアップするだけでも,多くの時間を要する場合がありますし,教師がひとつのクラスを教えていて,生徒のマシンをセットアップする責任を負っている(多くの場合はそうです)ような場合,教師の時間を何週間も無駄にするかも知れません。Codioで事前に設定しておいたBoxを教育準備用のテンプレートとして使用すれば,生徒用のスタックセットアップの苦労は完全に解決されます。
InfoQ: GitHubのCodioプロジェクトでは,多数のコードが公開されています。どの程度までがオープンソースになっているのでしょう?
FM: いくつかの要素がありますが,Codioはオープンソースプロジェクトではありません。それでも私たちは,年末に向けてIDE全体をオープンにして,開発者自身でプラグインを構築できるようにしたいと思っています。現時点でも,既存のIDEコンポーネントはすべてオープンソースにする予定ですので,既存の要素のカスタマイズや新たな追加は自由にできるようになります。
InfoQ: Codioはオンラインでのみ動作するようですが,オフラインモードの計画はありますか?
FM: 検討はしていますが,2015年までには実現しないでしょうね。
InfoQ: Boxとは何なのでしょう?
FM: BoxはUbuntuサーバです。 Codioユーザが作成するプロジェクトには,それぞれ独自のUbuntuサーバが用意されます。Boxはいくつでも作成可能で,ユーザがプロジェクトで作業する時には瞬時に起動されます。プロジェクトの編集をやめると,次回同じプロジェクトで作業するまで,Boxはアクティブでなくなります。第3四半期の終わりまでには,Codio登録者を対象として,,コードの編集をしていなくてもBoxが動作を続ける“Always on Boxes”を追加する予定です。作業をしていない時にも常に実行している必要のあるサイトやバックエンドの開発には特に便利です。Codio Boxの容量制限はほとんどのユーザには十分なものですが,Codioの契約者には,個々のプロジェクトにもっと大容量のRAMと多くのCPUを提供するBigger Boxも導入する予定です。
Codio Boxの非常に強力な機能のひとつとして,Codio Boxを完全なテンプレートBoxとして設定することができます。このBoxは‘Clonable’としてマークすることが可能です。他のユーザはそのBoxを単にクローンすることで,完全に設定されたスタックとテンプレートソースコードを入手できます。スタックのセットアップ時間を節約したければ,誰でも利用可能です。企業関係だけでなく,教育に関しても多数のアプリケーションがあります。
InfoQ: Codioはデプロイメントの選択肢のひとつですが,ホスティングも提供されるのでしょうか?
FM: Codioはそれ自体,ホスティングプラットフォームなのです。すべてのプロジェクトにUbuntuサーバが提供されるので,必要なものはそこに(Node.jsやRuby, Javaなどで動作するWebサーバやフレームワークを使って)ホストすることができます。Always On Boxes (先ほど述べた)上のアプリケーションは,ユーザが作業していない場合でも,永続的に使用できるようになります。
もうひとつ指摘したいのは,Codioはプロダクションプラットフォームとしてよりも,開発プラットフォームとして見るべきである,という点です。プロダクションの目的で使用することに何も問題はないのですが,SLAは提供されませんし,ユーザがプロダクションスケールのロードを発生させるようなことは想定されていません。スケールの大きなデプロイメントに対しては,優秀な処理を行うプラットフォーム(例えばHerokuのような)がたくさんあります。Codioの特徴は,任意のプロダクションプラットフォームやサービスに,極めて簡単にデプロイメント可能な点にあるのです。
InfoQ: 今後の計画について教えてください。
FM: 近いうちに(7月下旬),コード教育に関する大きな計画をいくつか発表します。教育に目的を絞った完全な機能セットについても,間もなく発表できるでしょう。統合型IDEを必要としているISVと開発者が,自分たちのプラットフォームにCodioを統合するための包括的なISVプログラムについても発表する予定です。
Codioはプライベートプロジェクトならば1つ,公開プロジェクトならば無制限に無償で使用可能だ。有償プランならば,プライベートプロジェクトが無制限にサポートされる。現在のBoxには,すべてのプロジェクトに対して512MBのRAMと16GBのストレージが用意されている。