Xojo

**Xojo**は、Xojo社によって開発されたソフトウェアの開発ツールであり、オブジェクト指向を採用した独自のBASIC言語を使用し、統合開発環境を備える。2013年までは「REALbasic」（1997年の買収以前製品名は「CrossBASIC」）と呼ばれた。

あらかじめ備えられている機能が豊富なことやGUIのデザインが簡単であること、非常に理解しやすい言語仕様などから、とくに初心者に愛用される。日本では株式会社アスキーソリューションズが代理店となり販売およびサポートを提供していたが、2007年4月に開発元であるReal Software社に移管されることが発表された。

主にMacintosh版が知られ、しばしば「Macintosh版のVisual Basic」と喩えられるが、Windows版ならびにLinux/x86版も存在する。また、利用している環境に関わらず、全てのプラットフォーム用の実行バイナリを出力することができるため、双方向のクロスプラットフォーム開発が可能である。

なお、Xojoは、Universal Binaryアプリケーションを作成することのできる、サードパーティー開発ツールのひとつである。

## 主な機能
Xojoの主な機能は以下のとおり。

### 機能と特徴
* イベント駆動型の構造化された完全なオブジェクト指向言語
* REALbasicやランタイムが不要な単独のアプリケーションにビルドできるコンパイラ言語
* 参照カウント方式のガベージコレクションを採用
* マルチリンガルに対応した豊富な文字列操作メソッド
* Perlと同等の正規表現による強力な文字列検索メソッド
* 文字列はUnicode (UTF-8) で処理するため、言語に依存しないアプリケーションが開発できる
* 各プラットフォーム間で、ソースコードは完全に互換（OS依存の機能を使用している場合を除く）
* Macintosh Toolbox (Toolbox) を学ぶ必要がない
* ビジュアルインターフェースビルダによるGUIのグラフィカルなデザインが可能
* マルチメディア機能に長けている
* GUIを持たないコンソールアプリケーション、サービスアプリケーションも作成可能
* アプリケーションサイズが大きい（後述）
* 処理速度は他の開発環境で作成したアプリケーションに比べて遅い
* ダブルクリックで起動できるアプリケーション以外のプログラム（プラグインや機能拡張など）は作成できない

#### 習得のしやすさ
Macでのプログラミングを複雑にしているToolboxやその他のAPIを学ばずに済む点は初心者にとって非常にありがたい点であるが、同時に、複雑な機能を実現することが難しくなっている。それをカバーするためにプラグインシステムなどが採用されており、サードパーティーから優れたプラグインが多数開発されている。

言語仕様については、BASIC言語をベースにしているため、基本的な命令その他習得の容易さは他の追随を許さない。また、オブジェクト指向的実装についても、クラスやインタフェースなど、Java相当の機能を実現している。

#### マルチメディア機能
マルチメディア機能についてはQuickTimeの機能をかなり引き出すことが可能であり、ビルトインの命令としてQuickTimeムービーを編集する機能も備える。グラフィック周りは、処理の遅さに目をつぶれば、ラスターイメージからベクターイメージ、3DCGまでを扱え、256階調グレースケールマスクによるアルファブレンドも簡単に実現でき、ソフトウェアレベルでスプライト機能さえも有する。スプライトに関しては一切コーディングすることなくスプライト同士が接触したかを判定することまで可能。画像の透過に関しては、アルファブレンドを有しながら特定の色を透過したりアルファチャンネルが使えないなど、中途半端な感もある。

比較的充実したグラフィックス機能を備える反面、サウンド機能は貧弱である。あらかじめ用意したサウンドファイルを読み込み、再生することしかできず、リアルタイムでの音声処理はプラグインに依存する必要が有る。

#### 巨大なアプリケーション
アプリケーションサイズが大きいというのはREALbasic製のアプリケーションのあまり望ましくない特徴といえるだろう。たとえば、何もコーディングを行っていない場合であってもmacOSに最適化されたコードであるMach-O Carbon Universal Binaryでコンパイルすると8.8MBのファイルサイズを消費する。これは、REALbasicのフレームワーク自体をアプリケーションに内蔵してしまうことと、PowerPCとx86の2つのアーキテクチャの実行ファイルが生成されるためである。また、アプリケーション内で特定のコントロールや機能（例えばXMLパーサなど）を使用している場合、さらにファイルサイズは増加する。

とはいえ、今日のPCにおいてはハードディスクの容量も十分に大容量化されており、ファイルサイズの大きさが問題となる場面はあまりないと言える。

#### 処理速度
処理速度の遅さもREALbasic製のアプリケーションの特徴。とくにグラフィックや多言語関係の機能は比較的遅い。このため、処理速度を補う目的で、内蔵関数と同等の機能を備える高速なプラグインを作成することもしばしば行われる。

#### フロントエンドの開発
サーバやデータベースのフロントエンドや、UNIXシェルやDOSコマンドラインのGUIフロントエンドの開発するための各種命令も豊富。

#### Mac OSの機能への対応
* AppleScriptやAppleEventのサポートにより、他のアプリケーションと連携することも可能
* UNIXコマンドを実行可能
* 「Quartz」を利用した平面画像の描画、「Quesa（オープンソースのQuickDraw 3D互換3Dグラフィックライブラリ）」による3D描画のサポート
* リソースフォーク、バイナリデータのリトルエンディアンとビッグエンディアンの使い分け、255文字までのロングファイルネームなどもサポート
* キーチェーン・Spotlight・アドレスブックへのアクセスをサポート
* Toolbox、PowerPC共有ライブラリ（InterfaceLibなど、他のアプリケーションが共有できるPower Mac用サブルーチン群）へのアクセスの対応
* GUI部品のAquaでの描画に対応

#### Windowsの機能への対応
* OLE (COM)、タスクトレイの使用をサポート
* MDIのサポート
* Windows XPのサポート、GUI部品のLuna（Windows XP標準の外観）での描画に対応
* Win32 APIへのアクセス、レジストリへのアクセスのサポート
* DOSコマンドを実行可能

#### 自動メモリ管理
メモリは自動的に管理しているため、プログラマはメモリに関して特に意識しせずに開発が可能である。参照カウントを用いたガベージコレクションも備える。

#### 優れた拡張性
プラグインを組み込むことによりIDE自体の拡張が行えるほか、Mac OS版ではXCMDやXFCN、AppleScript、AppleEvent、UNIXシェル、PowerPC共有ライブラリなどを利用することで、言語が備えていない機能を実現することも可能である。

## REALbasicの現状
2010r1バージョンよりIDEの名称がREAL Studioとなった。2010年12月14日現在、英語版、日本語版共にバージョン2010 Release 5がリリースされている。なお、Mac版についてはバージョン2010 Release 4 からIntelプロセッサを搭載したMac専用となったため、PowerPCプロセッサを搭載したMacでは使用できなくなった。2010年9月にリリースされたバージョン2010 Release 3.2 がPowerPC搭載Mac上で動作する最後のバージョンである。なお、Intel Mac上でPowerPC搭載Mac用のアプリケーションやUniversal Binaryを作成することは可能である。

2013年6月4日リリース予定の2013r1より、製品名および言語名が「Xojo」、会社名が「Xojo Inc.」に変更されることが発表された。

## サンプルコード
 //コメントは“//”“'”あるいは“REM”を用い、改行までがコメントとみなされる
 Dim result As Integer //変数宣言と型定義。変数名“result”を“Integer”（整数値）型として定義
 result = Pow(10, 10) //10の10乗を計算し、resultに代入
 MsgBox Str(result)     //メッセージボックスにresultの内容を文字列として表示

## 脚注

## 外部リンク
* Real Software社（英語）
* Real Software 社（日本語）
*Xojo社