読者です 読者をやめる 読者になる 読者になる

Xojo日本語ブログ

マルチプラットフォーム対応アプリが開発できるXojoのブログです。

言語別に紹介。macOS向け開発環境まとめ

IDE macOS 開発環境

最近はmacOSで開発を行う人たちが増えてきました。iOS向けの開発者が多いですが、他の言語向けの開発を行う場合も多いでしょう。そうした時にエディタレベルではなかなか効率的に開発できないかも知れません。

そこで他の言語でも同じようにIDEを使って開発を行ってみましょう。今回はそんなIDEを言語別に紹介します。

Xojo

Xojoを書くためにはXojo IDEを使う選択肢のみとなっています。

Xojo(ゾージョー)仕事に。研究に。”使える”アプリを瞬速×クロス開発|グレープシティ株式会社

f:id:moongift:20170117083715p:plain

言語も含めて有償のIDEです。対応言語はXojo一つですが、開発できるプラットフォームはWeb/macOS/Windows/Linux/Raspberry Pi/iOSと幅広くなっています。

Java

Eclipse - The Eclipse Foundation open source community website.

f:id:moongift:20170117083554p:plain

Java開発の老舗的なエディタです。プラグインも数多くリリースされており、そうした資産を使って効率的な開発ができるようになっています。昔はAndroid開発に使われていました。

IntelliJ IDEA the Java IDE

JavaおよびJava VM上で動作するプログラミング向けのIDEです。Scala、Groovy、Kotlinなどが動作します。Android向けに利用することもできます。

Android Studio と SDK ツールをダウンロードする | Android Studio

f:id:moongift:20170117083736p:plain

Javaの中でも特にAndroidに特化した開発ツールです。公式IDEである点も重要です。ベースはIntelliJ IDEAとなっています。

Objective-C/Swift

Xcode - Apple Developer

f:id:moongift:20170117083753p:plain

XcodeAppleが公式提供するIDEです。UIの設計を行ったり、Appleの提供する各種iOS向け機能と連携している点が便利です。

JetBrains AppCode: Swift Execution of Your Bright Ideas

f:id:moongift:20170117083745p:plain

JetBrains社製のmacOS/iOS開発用のIDEです。コーディングするという目的であればXcodeよりも使い勝手が良いとよく聞かれます。

C

New Release Preview: Visual Studio for Mac | Visual Studio

f:id:moongift:20170117083727p:plain

macOS上でC#によるiOS開発ができるのがVisual Studio for Macです。とは言えWindows用のVisual Studioとは別物で、元々はXamarinの作っていたIDEがベースです。

MonoDevelop | MonoDevelop

f:id:moongift:20170117083811p:plain

C#、F#などの開発ができるIDEです。Webサーバも組み込まれており、ASP.NETの開発もサポートされています。

Ruby

Ruby向けのIDEとしては「Ruby」というよりもRails向けのIDEとなっているようです。

Ruby on Rails IDE :: JetBrains RubyMine

f:id:moongift:20170117083541p:plain

有償のIDEです。JetBrains社製なので、他のIDEと同様に品質は確かと思われます。

Node.js

Deco - React Native IDE

f:id:moongift:20170117083703p:plain

オープンソースです。React Native用のIDEになります。プレビュー画面でリアルタイムにデザインを変化させながら表示を確認できます。

Nuclide - Nuclide is built as a single package on top of Atom to provide hackability and the support of an active community. It provides a first-class development environment for React Native, Hack and Flow projects.

f:id:moongift:20170117083656p:plain

オープンソースです。Facebookが開発しており、AtomをベースにReact Nativeに特化したIDEとなっています。

WebStorm: The Smartest JavaScript IDE

f:id:moongift:20170117083636p:plain

有償のIDEです。Webはもちろん、Node.jsもサポートしています。Grunt/Gulp/npmといったタスクマネージャも実行でき、Expressなどのテンプレート生成も行えます。

Python

PyCharm

f:id:moongift:20170117083647p:plain

有償のIDEです。JetBrains社製です。DjangoGoogle App Engine、web2pyなど数多くのフレームワークと連携します。HTML/CSS/JavaScriptなどもサポートしています。

spyder-ide/spyder: Official repository for Spyder - The Scientific PYthon Development EnviRonment

オープンソースです。特に学術系のデータビジュアル化に特化したIDEとなっています。

フロントエンド

Brackets - A modern, open source code editor that understands web design.

f:id:moongift:20170117083606p:plain

オープンソースです。HTML5/CSS/JavaScript、いわゆるフロントエンドの開発に特化しています。

その他

Komodo IDE: The Best IDE for Web and Mobile App Development | ActiveState

f:id:moongift:20170117083624p:plain

有償のIDEです。PythonPHP、Go、Perl、Tcl、Ruby、NodeJS、HTML、CSSJavaScriptなど100を越える言語に対応しています。Gulp/Grunt/npmと連携していたり、Chromeデバッガーを使うこともできます。


IDEによっては複数の言語に対応しているものも多いですが、やはりプラットフォームやプログラミング言語特化型IDEの方が便利に使えるはずです。特にJetBrains社は言語やプラットフォームごとに別なIDEを出し、それぞれ使い勝手を特化させています。

Xojoは言語は一つですが、同じコーディングで複数のプラットフォームに対応します。無料で使い始められますのでぜひダウンロードしてみてください

デスクトップ用Xojoアプリの中でHTTPサーバを立てる

Xojo Web API 開発

デスクトップアプリケーションの中には他のアプリケーションから操作したいと思うものがあります。よくあるケースとしてはExcelAccessなどのオフィスツールです。そうしたソフトウェアではAPIアプリケーションプログラミングインタフェース)を提供しています。しかしこの手のAPIはアプリケーションの実行環境が大きく影響します。例えばWindows上で動いているソフトウェアをmacOSLinuxからは操作できません。

そこで紹介したいのがデスクトップアプリの中にWeb APIサーバを立てるという方法です。Web APIは先ほどのAPIと似ていますが、HTTP/HTTPSを使っているのが特徴です。つまりWebブラウザやCUI、他のプログラミング言語とも連携がとても簡単にできるようになります。

今回はそんなXojoアプリの中でHTTPサーバを立てる方法を紹介します。

関連ライブラリをインポート

実際の作業としてはXojo向けHTTP機能を提供するbeardedio/XojoHTTPServer: A http server class for Xojo / RealBasicを自分のXojoプロジェクトにインポートするところからはじまります。

プロパティを用意

2つプロパティを用意します。これはAppでもウィンドウでも良さそうです。

  • Socket as MyHTTPServerSocket
  • RequesterIndex as MyRequesterIndex

コーディング

今回はウィンドウのOpenイベントに対して実装します。

RequesterIndex = New MyRequesterIndex
Socket = New MyHTTPServerSocket
Socket.AddURL("/data.json", RequesterIndex)
Socket.Port = 8080
Socket.Listen

これで分かる点として 8080番ポートで入力を待ち受けています。 http://localhost:8080/data.json にアクセスすると RequesterIndex が呼び出されます。

実際にコールされるのは MyRequesterIndex.HandleRequest になります。例えば次のように実装します。

dim Person as new JSONItem
Dim items As New JSONItem
dim i as integer
For i = 0 to 50
  items.Append(i)
Next

Person.Value("values") = items

Context.headers.Value("Content-Type") = "application/json"
Context.Print(Person.toString())
Context.Print(EndOfLine)

Context.StatusCode = MyHTTPServerModule.kstatusok

Exception err
  Raise err

アクセスする

では実際にアクセスしてみます。

$ curl http://localhost:8080/data.json
{"values":[0,1,2,...,49,50]}

このようにJSONデータが返ってきました。このデータはアプリケーション内のデータを返せますので、保存したデータなどを他のアプリケーションに渡すのにも使えるでしょう。XojoであればHTTPSocketを使ってデータを取得し、JSONをパースすればアプリケーション内部で利用できます。


かつてのAPIというと用意する側も利用する側も手間暇かかるものでしたが、Web APIであればとても簡単に実現できます。アプリケーション同士の連携に役立ててください。

シチズンデベロッパーに必要な最低限の知識

開発 シチズンデベロッパー

プログラミング専門職ではない開発者、いわゆるシチズンデベロッパーの方がツールを作ろうと思った時には少なからず技術的な知識が必要になります。多かれ少なかれ技術に興味がある方がシチズンデベロッパーになっているはずで、毛嫌いするようなことはないと思いますがそれでもあまり難しいのは避けたいでしょう。

プログラミング知識

まず最低限、プログラミングの知識は必要です。これはプログラミング言語によって内容が異なりますが、以下の知識は必須でしょう。

変数

あらゆるプログラミング言語では変数と呼ばれるデータの入れる場所を用意します。その変数を使って計算したり、文字を分解したりして処理の中で活かします。

Xojoの例

// 文字列の場合
Dim strString as String = "こんにちは"

// 数値の場合
Dim intNumber1 as Integer = 100
Dim intNumber2 as Integer = 300
Dim intNumber3 as Integer

intNumber3 = intNumber1 + intNumber2
// intNumber3 -> 300

処理分岐、繰り返し

ある変数が指定した値と同じか否かといった条件を指定して処理分けを行います。また、指定した条件にマッチするまで同じ処理を繰り返す指定もよく使われます。

Xojoの例

If intNumber1 = 100 Then
  // 100だった場合こちらに
Else
  // 100じゃなかった場合こちらに
End If

繰り返し処理の例。

Dim i as Integer
For i = 0 To 100
  // iが0から100まで繰り返し
Next

関数

同じ処理を何度も書くと、修正が面倒になってきます。そこで関数と呼ばれる仕組みを使って、処理を共通化します。そうすれば何か修正する際にも関数を修正すれば、その関数を使っているすべての処理が修正済みになります。

Xojoの例

// 関数を定義します
Function Plus(a as Integer, b as Integer)
  Return a + b
End Function

// 関数を使います
Plus(5, 10)
// -> 15

// もう一度関数を使います
Plus(20, 30)
// -> 50

データの入出力

担当者が画面で入力した値を取る方法であったり、逆にプログラムで処理した結果は画面やファイルなどに出力する必要があります。これはプログラミング言語や環境(デスクトップ、Webなど)によって方法が異なります。

Xojoの例

// txtNameに入力された内容を取得します
Dim strName as String = txtName.text

// txtNameに文字を入力します
txtName.text = "Xojo 太郎"

エラー処理

プログラミングコードの多くは理想的な、正常系と呼ばれる動作に基づいて作られます。しかし、担当者の入力した値であったり、処理の中で起こったミスによってエラーが発生します。これは必ず起こるもので回避できません。

そこでエラー処理と呼ばれる仕組みを知っておく必要があります。エラーが起きた時に安全に処理が終われるようにしておくと、入力したデータが消えてしまったり、途中で処理が終わってしまってデータの不整合が起こるような事態を防げるようになります。

Xojoの例

Try
  // 何か処理を書きます
  
  
Catch e as Exception
  // エラーが起きるとここに移動します
End Try

データベース

処理する前後のデータはどこかに保存されます。その多くはデータベースになるでしょう。MS OfficeであればAccessを使ったり、そこまで大きな規模でなければExcelを代わりに使うでしょう。

誤解を恐れずに言えば、データベースはExcelのような表(テーブルと呼びます)が幾つも保存されたものになります。さらにそのテーブル同士を条件に合わせてつなぎ合わせたり、フィルタリングしたりして処理に必要なデータだけを素早く取り出し、更新したりできます。

簡易的なものであればSQLiteと呼ばれるデータベース、より本格的なものであればMySQLPostgreSQL、商用ではSQL ServerOracleなどが存在します。

Xojoの例

Dim db As New SQLiteDatabase
db.DatabaseFile = GetFolderItem("db.sqlite")
If db.Connect Then
  // DBへデータを追加します
  db.SQLExecute ("INSERT INTO Employees (Name,Job,YearJoined) VALUES "_
    +"('Dr.Strangelove','Advisor',1962)")
  // エラー判定を行います
  If db.Error then
    MsgBox("Error: " + db.ErrorMessage)
  End If
Else
  // DBへ接続できなかった場合です
  MsgBox("The database couldn't be opened. Error: " + db.ErrorMessage)
End If

インターネットアクセス

昨今の業務システムでは多くのデータをインターネット上からダウンロードします。それらはPDFであったり、CSVファイルかも知れません。そういったデータをダウンロードするためにログインしたり、同じ操作を行うのはとても面倒です。

コンピュータが人のようにインターネットアクセスを行うというのは意外と大変ですが、多くの場合そういった要望が出てくるでしょう。

Web API

さらに一歩進むと、Web APIと呼ばれる仕組みを使うようになります。APIとはアプリケーションプログラミングインタフェースの略で、Webサービスをシステムから使えるようにする仕組みになります。上記のコンピュータが人のようにWebブラウザを操作する方法では、Webサービスのデザインが変わったりすると動かなくなってしまいますが、Web APIでは元々コンピュータからの操作を対象として考えられています。

殆どWebブラウザを使っているときと変わりませんが、認証する際にID/パスワードを利用することは殆どありません。別途システム用にトークンと呼ばれるキーを用意することで認証の代わりにしています。また、データの送受信を行うフォーマットがJSONまたはXMLと呼ばれるシステムにとって使いやすいものを使うなど、Web APIならではの知識も必要になります。

Xojoの例

Dim socket1 As New HTTPSocket
Dim data As String = socket1.Get("http://www.example.com/example.json", 30)

メール

システムで処理した結果を指定したアドレスに対してメールして欲しいという要望も度々あがります。メールの受信/送信についてはIMAP(またはPOP3/SMTP)という仕組みを使いますが、これらは多くのプログラミング言語でライブラリ(その機能を簡単に使えるようにする関数群)が提供されているので、実現はそれほど難しくはないでしょう。

ただし、メールは送り先を間違えたり、内容をミス(よくあるのは文字化け、名前抜けなど)して送信すると取り返しが付かない問題に発展することが多々あります。繰り返しテストしてミスのないようにしましょう。

// サーバを指定します
SendMailSocket.Address = "smtp.example.com"
SendMailSocket.Port = 25

// メールを作ります
Dim mail As New EmailMessage
mail.FromAddress = "example@example.com"
mail.Subject = "Test email subject"
mail.BodyPlainText = "Hello, World!"
mail.AddRecipient("taro@example.com")

// メール送信
SendMailSocket.Messages.Append(mail)
SendMailSocket.SendMail

他にも作るべきツールに合わせて多彩なニーズが出てきますが、まず基本としては上記になるかと思います。これらの知識をベースとして、業務フローを効率化できるツールをどんどん作っていきましょう。Xojoではこれらの技術を簡単に使える仕組みを用意していますので、ぜひツール作成にチャレンジしてみてください。

シチズンデベロッパーとXojoの相性が良い理由

シチズンデベロッパー 開発

前回、シチズンデベロッパーとは何なのかを紹介しました。そして、私たちのXojoはシチズンデベロッパーに注目しています。実際、本家のUSにおいてXojoユーザの4割近くがシチズンデベロッパーなのです。なぜシチズンデベロッパーがXojoを採用するのか、なぜXojoが向いているのかを紹介します。

手軽に使えるプログラミング言語は?

前回の記事で、シチズンデベロッパー向けのプログラミング言語として次の特徴を紹介しました。

  • 習得が容易であること
  • GUIを持ったツールが作れること
  • すぐに使えること

この特徴を考えた時に、多くのスクリプト言語PHP/Perl/Ruby/Pythonなど)は対象から外れるでしょう。コマンドプロンプトで動くソフトウェアは作れますが、UIがないのは利用者にとっては使い勝手が悪くなってしまいます。

Javaや.NET系のプログラミング言語を使えばGUIを持ったソフトウェアは作れますが、画面の設計が複雑であることや習得の容易性という点においては疑問符がつきます。どちらかと言えばプログラミング専門職向けのプログラミング言語と言えます。

そういった事情も踏まえてVBAを使うケースが多いかと思います。日本のオフィスにあるWindowsであればMS Officeは大抵入っていますのですぐに使えますし、MS Accessでフォームを作ればGUIをもったツールも作れます。VBA自体は習得の容易なプログラミング言語でしょう。

VBAが正解なのか?

MS Officeで使えるVBAを使ってツールを作るのが一番手軽なのでしょうか。場合によってはそうでしょう。例えばツールがターゲットにしている環境がWindowsであり、MS Officeと連携するものであるならばです。しかし、例えばMS Officeと全く関係のない「Webブラウザでとあるシステムにログインしてレポートをダウンロードして保存する」ツールを作る場合にはどうでしょうか。これをわざわざExcelファイルを開いてボタンを押すというのはイメージが沸きづらいでしょう。目的に合わせて最適な環境を考えるべきで、無理矢理やるのは理想的とは言えません。

また、動作する対象がWindowsだけでないことがあります。最近では企業内においてもmacOSを使う人が増えてきています。そうした人たちにツールを提供したいと思ってもVBAmacOS版のMS Officeでは動作しません。片手落ち感が否めないでしょう。

さらに最近ではスマートフォンに対応して欲しいと言われることもあります。スマートフォンアプリというと敷居が一気に高くなってしまった気もしますが、単にアプリにボタンが一つあって押すだけで出社と退社が切り替えられるようにしたり、社内の顧客データベースから情報を取り出すだけのアプリなら開発を依頼するほどでもなさそうです。しかし、これらもVBAではできません。

Xojoはシチズンデベロッパーをサポートします

そこで私たちの提供するXojoがあります。言語体系はVBAに似ており習得が容易なこと、GUIを持ったアプリケーションが簡単に作れること、デスクトップからスマートフォン、Webまで幅広く、かつWindows/macOS/Linux/iOSマルチプラットフォームに対応できるのがポイントです。まさにシチズンデベロッパー向けのプログラミング環境といえます。

XojoはXojo IDEという統合開発環境を使って開発します。画面の設計はあらかじめ用意されているコントロールからドラッグ&ドロップするだけで簡単にできあがります。複雑な操作やプログラミングコードで画面を細かく指定したりする必要もありません。画面ができてしまえば、後はボタンを押したり値を選択したタイミングでイベント処理を作っていくだけです。とても簡単です。

もちろん、Xojoはシチズンデベロッパーだけでなく本格的にシステム・サービス開発を行っていく方々も数多く使ってもらっています。しかしプログラミング専門職でない方にも容易に習得し、すぐに業務担当者が必要としているものを提供できるようになります。

シチズンデベロッパーの中にはそのままプログラミングの幅が広がり、大きなシステムを構築するようになるケースもあります。その際に言語を改めて覚え直すのは面倒なことこの上ありません。Xojoであればそうした心配は無用で、Xojoだけでそのまま大きなシステムまで構築できるようになります。新しい言語を覚えるのに使うであろう時間、労力、コストをすべて「すぐに使ってもらえるシステム」を作るために使えるようになるのです。

Xojoは実行ファイルをビルドする際にはライセンスが必要になりますが、Xojoをインストールしたマシンでデバッグ実行するだけであれば無料でできます。Xojoをダウンロードし、自分たちの問題がどれだけ簡単に解決できるか、ぜひ試してみてください。

Xojo(ゾージョー)仕事に。研究に。”使える”アプリを瞬速×クロス開発|グレープシティ株式会社

Xojoが注目するシチズンデベロッパーとは?

シチズンデベロッパー 開発

シチズンデベロッパーという単語は日本ではあまり聞きません。欧米では2012年くらいからある言葉のようですが、日本では広まっていないようです。シチズンデベロッパーを直訳すると市民開発者といった意味になるかと思いますが、これでは意味がよく分からないでしょう。

そこで今回はシチズンデベロッパーとは何か、について紹介します。

プログラマーではない開発者

俗に言うプログラマーは企業内で自社、または顧客のシステムを開発する専門職になります(ホビープログラマーは今回は省きます)。多くの場合、彼らはプログラマーとして雇用され、専門の知識を持っています。Webシステム、基幹システム、サーバサイド、スマートフォンアプリなど開発分野が分かれており、それに合わせてプログラミング言語も得手不得手が存在します。

しかし、企業内には開発専門職ではないにも関わらずプログラミングを行う人たちが少なからず存在します。そうした方々がシチズンデベロッパーと呼ばれる存在です。よくある例としては、VBAを使ってExcelのマクロを拡張してツールを作ったり、MS Accessの簡易データベースシステムを作ったりします。

そういったシチズンデベロッパーの方が開発するツールの多くはシステム開発会社や自社内の開発部門に依頼するほどでもない規模のシステムであることが多いでしょう。また、規模が大きくなると仕様書であったり、システムの複雑性が増します。その結果、導入までに多くの時間を要するようになってしまいます。しかし、社内の業務や営業部門の人たちにとって現状の問題を早く解決してくれることが最重要であり、小さなツールで済むならばそれが一番なのです。

例えば住宅を作るならば専門の業者に任せなければならないでしょうが、壁につける棚であれば自分で作ってしまおうと考えるのではないでしょうか。そうやって作るもののサイズに合わせて作る対象は変わってくるのです。シチズンデベロッパーの方が支えるのは「今すぐ使える便利なツール」になります。

シチズンデベロッパーにおける大事な要素は?

ではシチズンデベロッパーとして大事になる要素はなんでしょうか。まず挙げられるのが「すぐに使えるツール」であることです。VBAが利用されるのはまさにその点で、日本のオフィスではWindows PCにMS Officeがほぼ100%導入されており、担当者のマシンに特別な環境をインストールする必要がありません。

次に「習得が簡単な言語である」のもポイントです。VBAは恐らく習得が簡単な言語の一つに挙げられるでしょう。他にあるとしたらJavaScriptも習得が容易かも知れませんが、開発環境がテキストエディタくらいしかなかったり、Webブラウザ上で動くプログラミング言語とあって、ローカルにあるファイルを自由に操作したり外部のネットワーク接続を行ったりするのには不向きです。

さらに「GUIがあるアプリケーションが簡単に作れる」というのもポイントです。PHPPerlPythonRubyJavaなど多機能で高度なプログラミング言語を使ってツールを作ることもできますが、多くはGUIを持たないソフトウェアができあがります。そのため、使う際にはコマンドプロンプトを立ち上げて実行しなければなりません。これは運用担当者にとっては敷居が高く、とても面倒な仕組みになります。分かりやすい画面(ユーザインタフェース)があるかどうかは運用で使ってもらえるかどうかに大きな役割を果たします。

分かりやすい画面を作るためにはHTMLを使うこともできます。HTMLを手打ちして画面を作っていくのはとても大変ですが、最近ではBootstrapのように見栄えの良い画面を簡単に作成できる仕組みも存在します。しかし、Webブラウザ向けのシステムを動かすにはWebサーバ(HTTPサーバ)が必要になったり、その設定を行うなどとても面倒なものになるでしょう。いわゆる普通の実行ファイルとしてのプログラムを開発し、それをユーザに配布して終わり、くらいの手軽さが大事なのです。

シチズンデベロッパーは誰なのか?

シチズンデベロッパーとはプログラミング専門職ではない、企業内開発者と言えます。本職は様々で、業務担当者の場合もあればサポート部門、営業、はたまた開発部門長といったこともあるでしょう。プログラミングにおける専門の勉強は行っていないことが多く、コーディングスキルについて言えば専門のプログラマーに比べると劣るかも知れません。しかし多くの開発会社が作るのが複数人による大きなシステムであるのに比べて、シチズンデベロッパーは小さなツールを素早く作り上げるのです。

昨今、ビジネストレンドの変化は高速化しており、ゆっくりとシステム開発を行っていてはあっという間に他社に出し抜かれてしまう可能性があります。そうならないためには現状のワークフロー、新しく生まれるニーズを素早く自動化し、省力化していく必要があります。そのためシチズンデベロッパーの存在は今後、さらに求められるようになるでしょう。名前としてシチズンデベロッパーとラベリングされていますが、ここで書いているようなことを元々行っているという方はとても多いはずです。


プログラミングは特別なことではありません。工作と同じで、規模によって作る人が変わるだけで、本来は全員ができる方がいいものなのです。それによって自分の業務を効率化、自動化できるようになります。ブラウザを開いてログインしてダウンロードして…などを逐次やっていたような作業を一気に自動化してしまうこともできるのです。その方がヒューマンエラーも減りますし、空いた時間をもっとビジネスの本質にあてられるようになるでしょう。

Swift/Java/Objective-C以外のスマートフォン開発言語について

Xojo プログラミング言語 まとめ

iOS/Androidアプリを開発する際には専用の言語を使うのが一般的です。つまりiOSであればSwiftやObjective-CAndroidであればJavaを使ってアプリを開発します。

しかし世の中には多くの代替言語、代替手法が存在します。Xojoもその一つです。今回はそんな技術をまとめて紹介します。

Xojo

f:id:moongift:20161108010043p:plain

XojoはXojo IDEを使ってiOSアプリが開発できます。Xojo IDE上でiOSアプリのビルドまで行うのが特徴で、ブレークポイントを使ったデバッグもXojo IDE上でできます。

あらかじめ用意されているコントロールドラッグ&ドロップで配置してアプリ開発を行うスタイルはデスクトップ、Webアプリケーション開発と同じです。Xojoを習得している人であれば、すぐにiOSアプリ開発をはじめられるでしょう。

Xojo(ゾージョー)仕事に。研究に。”使える”アプリを瞬速×クロス開発|グレープシティ株式会社

Titanium

f:id:moongift:20161108010101p:plain

TitaniumはJavaScriptを使ってiOS/Androidアプリを開発します。スマートフォンJavaScript実行エンジンを使って、JavaScriptのコードをそのまま実行します。専用のタグやAPIを使ってネイティブのUIコンポーネントを呼び出せます。

基本はiOS/Androidともに共通のコードで動くのですが、UI周りはそれぞれ分離したり処理分けする必要があります。iOSのバージョンが古かった時にはJavaScript実行エンジンの速度が遅く、Titaniumアプリ全般的に実行速度が遅かったという問題がありました。

Mobile App Development & MBaaS Products | Appcelerator

React Native

f:id:moongift:20161108010117p:plain

React NativeもTitanium同様にJavaScriptを使ってiOS/Androidアプリ開発が行えます。ReactというJavaScriptとJSXと呼ぶ独自のタグ機構を組み合わせて開発します。

iOS/Androidの殆どのコードは共通化できますが、元々Learn Once, Run anywhereというコンセプトがあり、全く同じコードを動かすという前提ではありません。

React Native | A framework for building native apps using React

RubyMotion

f:id:moongift:20161108010140p:plain

Rubyを使ってiOS/Androidアプリを開発できます。年間購読制の有料フレームワークです。Objective-CJavaの薄いラッパーであることが特徴で、Rubyを使ってObjective-Cの書きづらい点を解決したところがスタートであったように思います。

Swiftがスクリプト言語のように動くこともあり、目指しているところが若干被っているかもしれません。とは言えRuby好きであれば見逃せないフレームワークでしょう。

iOS、Android、OS X アプリを Ruby で。 | RubyMotion

Xamarin

f:id:moongift:20161108010233p:plain

元々有料でしたが、Microsoft社に買収されたタイミングで無料化されました。.NETを使ってiOS/Androidアプリが開発できます。Visual Studioに統合されていますので、これまで.NETを使って開発を行ってきた方には使い慣れた仕組みで開発が進められるでしょう。

Windows上でiOSアプリを開発することはできますが、実機ビルドなどを行う際にはmacOS/Xcodeが別途必要なのでご注意ください。

Mobile Application Development to Build Apps in C# - Xamarin

Cordova

f:id:moongift:20161108010258p:plain

HTML5/JavaScript/CSSといったWeb標準の技術を使ってiOS/Androidアプリを開発できます。アプリの中にWebブラウザがあるようなもので、JavaScriptを使ってスマートフォンネイティブの機能にタッチできるようにアプリがAPIを提供しています。

HTML5なのでiOS/Androidの動作違いがあまり大きくなく(提供されているAPIの違いはありますが)、レスポンシブに作ることでほぼ同じUI/UXで開発できます。ただしWebブラウザで動いているのと同じ状態なため、実行速度はネイティブに比べると劣ります。

プラグインによって機能を拡張できますが、プラグインObjective-CやSwift、Javaといったネイティブの言語で開発する必要があります。そのためCordovaを使うだけの開発者にとっては若干敷居が高いと言えます。

Apache Cordova

Unity

f:id:moongift:20161108010320p:plain

3Dゲームの開発エンジンとして知られるUnityですが、数年前から2Dにも対応したり、ゲーム以外の分野でもUnityを使うケースが見られるようになっています。Android/iOS向けにバイナリが出力できます。ネイティブのコードであり、性能は非常に高いです。

プログラムはC#またはBooScriptで記述します。BooScriptよりもC#を採用するケースのが多いように感じます。

Unity - Game Engine

代替言語を使うメリットは?

代替言語はObjective-C/Swift/Javaといった言語を習得せずにスマートフォンアプリ開発に参入できるというメリットがあります。すでに使い慣れた言語がある場合、新たに言語を習得するのは敷居が高いと感じるかもしれません。

また、多くの代替言語はiOS/Androidの両プラットフォームをサポートしています。一企業ですべてのプラットフォームに対応できる体制を整えるのは大変ですが、代替言語を使った方法であれば敷居は下がります。別な開発(サーバサイドやフロントエンドなど)を行っているメンバーを充てられるようになるでしょう。

代替言語を使うデメリットは?

デメリットとしては実行速度がネイティブで開発した場合に比べて若干遅い傾向があります。Unityのようにネイティブコードに変換して実行する場合は別ですが、多くの代替言語はJavaScriptWebKitのようなエンジン上で動作します。そのため100%のパフォーマンスが発揮できない可能性があります。

代替言語では最新OSの機能を100%活かしきれないことが多いです。どうしても後から追従する形になってしまったり、両OSに対応するために最大公約数的な実装になりがちです。iOS/Androidだけにしかない機能は実装されない傾向が強いです。

他の言語と比較した場合のXojoのメリット・デメリットは?

こうした代替言語ではJavaScript、またはC#を採用するケースが多いようです。その中にあってXojoはXojoを使って実装します。つまりXojoさえ習得していれば、デスクトップアプリケーションやWebアプリケーションを開発してきた人でもすぐにスマートフォンアプリ開発に参入できるということです。

もう一つの特徴は開発手法です。ウィンドウではなくビューという言い方に変わっていますが、基本的にビューを追加してUIコントロールを配置、各コントロールやビューにアクションを追加していくという方法はデスクトップでもWebでもすでに慣れた方法です。スマートフォンアプリ開発は画面を重ね合わせるスタックと言う考え方で実装するために、Webやサーバサイドの開発とは異なる考え方が求められるのですが、Xojoの場合はこれまでと変わらない考え方でアプリを作れます。

難点としては執筆時点(2016年11月)ではAndroidに対応していないということでしょう。予定では2017年中にAndroid対応すると発表されており、リリースが待ち望まれます。共通のUIコントロールで作れるかは不明ですが、iOSAndroidではUIの考え方が異なるため、別なUIとして開発し、ロジックだけ共有化するという方法になるかもしれません。


代替言語を採用することでこれまで別なレイヤーで開発を行っていたエンジニアでもアプリ開発に参入できるようになります。代替言語の種類によってアプリジャンルの向き不向きはありますが、多くの場合業務アプリのように速度よりも適切な動作が求められる系統のジャンルには対応できます。顧客ニーズもWebからアプリへと移り変わってきています。しかも多くの場合iOSAndroidへの両対応が求められるでしょう。そうした時こそ代替言語の出番と言えそうです。

Visual Studio for MacによってXojoはどうなるか?

Xojo 翻訳

先日、Microsoft社がVisual Studio for Macをプレビューリリースしました。統合開発環境として強いブランド力を持つVisual Studio初のmacOS版です。

それによってXojoがどんな影響を受けるか、今後の市場がどうなっていくのかをXojo CEOのGeoff自らIs Microsoft bringing Visual Studio to the Mac? – Xojo Blogとして記事にしています。今回はそれを意訳して紹介します。

It is likely that later this week, Microsoft will be announcing Visual Studio for Mac. Is this really true? Why would they do this? What does it mean for Xojo users?

今週末、マイクロソフト社がVisual Studio for Macのリリースをアナウンスしました。本当でしょうか?彼らの目的、そしてXojoユーザにとって何を意味するでしょうか?

Earlier this year, Microsoft acquired the mobile development tools company Xamarin who had their own IDE which runs on Mac and Windows. Microsoft is going to be shipping that IDE branded as Visual Studio for Mac. So while there will be a product from Microsoft called Visual Studio for Mac, it’s not really Visual Studio.

今年のはじめ、マイクロソフト社はモバイル開発ツールを提供するXamarinを買収しました。彼らのIDEWindows/macOS両方で動作するものです。マイクロソフト社はこれをVisual Studio for Mac とリブランディングして提供しています。つまり元々のVisual StudiomacOS向けに展開したものではありません。

Visual Studio for Mac (formerly Xamarin) is focused mostly on mobile development. For example, there’s no cross-platform drag and drop support for desktop user interface nor do I expect there will be as Microsoft has no shortage of software available for Windows. It uses C# and F# and is aimed at the professional developer, not the citizen developer for whom Xojo is primarily designed. Xojo, on the other hand, is for much more than mobile development. Xojo gives users an easy to use drag and drop interface designer with a simple, modernized BASIC syntax that builds applications for macOS, Windows, Linux, the web, iOS, Raspberry Pi and many other ARMv7-based devices. The web is one platform Xojo supports that is worth calling out since unlike ASP from Microsoft, building web applications with Xojo requires no knowledge of HTML, CSS, Javascript, AJAX, and PHP. With Xojo, building web apps is nearly identical to building desktop or mobile apps.

Visual Studio for Mac(元Xamarin)はモバイル開発にフォーカスしています。例えばデスクトップアプリを作る際のドラッグ&ドロップでのUI作成ができません。また、C#またはF#のみを提供しており、Xojoが対象としているシチズンデベロッパー(訳注:プログラマーでなく、ちょっとしたツールの開発も行う業務担当者など)より高度な開発者をターゲットにしています。一方、Xojoはモバイル開発のみではありません。Xojoはシンプルかつ今風のBasic構文を使い、使いやすいドラッグ&ドロップによる画面設計を提供します。ターゲットもmacOSWindowsLinux、Web、iOSRaspberry Pi(さらに他のARMv7ベースのデバイス)、CLIと幅広くアプリケーションが構築できます。XojoによるWeb開発においてもマイクロソフト社のASPとは異なり、HTMLやCSSJavaScriptAjaxさらにPHPといった知識は必要としません。Webシステムもデスクトップやモバイルアプリと同じやり方で開発できます。

Why would Microsoft want to convert Xamarin into Visual Basic for Mac? While Microsoft is the 800-pound gorilla in terms of desktop market share, they are in a very distant third place on mobile. Their goal in buying Xamarin and marketing the Xamarin IDE as Visual Studio for Mac is to get developers building their mobile apps for iOS and Android in C# to make it as easy as possible to then port those apps to Windows 10 Mobile. Their ultimate goal is to make more apps available for the relatively anemic Microsoft mobile platform.

なぜマイクロソフト社がXamarinをVisual Studio for Macにしたかったのでしょうか(訳注:Visual BasicとなっていますがVisual Studioのタイポと思われます)。なぜならマイクロソフト社は巨大なデスクトップマーケットシェアを握っていますが、モバイルでは第3位になっているからです。彼らのXamarinを買収とVisual Studio for Mac提供の目的は開発者がiOSAndroidアプリをC#を使って開発し、さらにそれをWindows 10バイルにポーティングして欲しいということです。彼らの最終目標は現状は弱いMicrosoftバイルプラットフォームに対してアプリの数を増やすことでしょう。

For Xojo users, this doesn’t really mean much. While 25% of our users are full-time professional developers, most started as citizen developers and they are our primary focus as they make up 50% of our users. Having said that, our goal has always been to make Xojo easy for those learning programming for the first time, hobbyists, citizen developer and professionals. We will continue in our quest to make Xojo a tool that someone can use at any stage of their interest in software development.

Xojoユーザにとって、これは大した意味がありません。Xojoユーザの25%はフルタイムのプログラマーですが、半分は個人やシチズンデベロッパーです。Xojoはプログラミング初学者、趣味のプログラマー、一般開発者にとって使いやすい言語であることです。開発のあらゆるステージにおいて常にXojoを使い続けてもらえるようになるのが目標です。

Lastly, reporters enjoy hearing from those that use a particular product or service they write about. If you read stories about Visual Studio for Mac, please write to the reporter and let them know about Xojo. The more people who talk about Xojo, the more likely we are to grow the Xojo community.

最後に、記者は実際に製品であったり、サービスを使っている人の話を好みます。もしあなたがVisual Studio for Macに関する記事を読んだならば、Xojoについても教えてあげてください。Xojoについて語られる機会が増えれば、それだけコミュニティの成長が加速するでしょう。


現状のVisual Studio for Macについて言えば、WindowsVisual Studioとは別物となっています。C#を使ってきた方であれば、Visual Studio for Macを使ってiOSアプリを構築するのは良いと思いますが、macOS用開発であったり、Web開発には向かないでしょう。あくまでもiOS/Androidなどモバイル開発向きと考えるのが良さそうです。

Xojoは言語体系がそもそも異なります。画面を作成するのも手軽です。この手軽さ、習得の容易さこそがXojoの魅力であり、Visual Studio for Macと異なる部分になるのではないでしょうか。